require "digest" require "pp" namespace :lndhub do desc "Generate wallets for all users" task :generate_wallets => :environment do |t, args| User.all.each do |user| CreateLndhubWalletJob.perform_later(user) end end desc "List wallet balances" task :balances => :environment do |t, args| sum = 0 User.all.each do |user| lndhub = Lndhub.new auth_token = lndhub.authenticate(user) data = lndhub.balance(auth_token) balance = data["BTC"]["AvailableBalance"] rescue nil if balance && balance > 0 sum += balance puts "#{user.address}: #{balance} sats" end end puts "--\nSum of user balances: #{sum} sats" end desc "Create test invoice" task :create_test_invoice, [:username, :amount, :description] => :environment do |t, args| user = User.find_by cn: args[:username] desc = args[:description] hash = Digest::SHA256.hexdigest(desc) invoice = LndhubManager::CreateUserInvoice.call(user: user, payload: { "amount": args[:amount].to_i, "description": desc, "description_hash": hash }) pp invoice end desc "Migrate existing accounts to lndhub.go" task :migrate => :environment do |t, args| # user = User.find_by cn: "jimmy" User.all.each do |user| puts "Migrating #{user.cn}" puts "Creating account..." lndhub_v2 = LndhubV2.new res = lndhub_v2.create_account login: user.ln_login, password: user.ln_password puts res.inspect lndhub = Lndhub.new lndhub.authenticate(user) data = lndhub.balance balance = data["BTC"]["AvailableBalance"] rescue 0 if balance > 0 lndhub_v2.authenticate(user) desc = "Balance migration from old Kosmos Lightning back-end" res = lndhub_v2.create_invoice amount: balance, description: desc puts "Payment request for #{user.cn} (#{balance} sats):" puts res["payment_request"] end puts "---" end end end