#!/usr/bin/python
import codecs, grpc, os, sys
import rpc_pb2 as ln, rpc_pb2_grpc as lnrpc

# display config script info
if len(sys.argv) <= 1 or sys.argv[1] == "-h" or sys.argv[1] == "help":
    print("# creating or recovering the LND wallet")
    print("# lnd.winitwallet.py new [walletpassword] [?seedpassword]")
    print("# lnd.winitwallet.py seed [walletpassword] [seedstring] [?seedpassword]")
    print("# lnd.winitwallet.py scb [walletpassword] [seedstring] [filepathSCB] [?seedpassword]")
    print("err='missing parameters'")
    sys.exit(1)

walletpassword=""
seedwords=""
seedpassword=""
filepathSCB=""

mode=sys.argv[1]

if mode=="new":

    print("# *** CREATING NEW LND WALLET ***")

    if len(sys.argv)>2:
        walletpassword=sys.argv[2]
        if len(walletpassword)<8:
            print("err='wallet password is too short'")
            sys.exit(1)
    else:
        print("err='wallet password is too short'")
        sys.exit(1)

    if len(sys.argv)>3:
        seedpassword=sys.argv[3]

elif mode=="seed":

        print("err='TODO: implement creating from seed'")
        sys.exit(1)

elif mode=="scb":

        print("err='TODO: implement creating from seed/scb'")
        sys.exit(1)

else:

    print("err='unkown mode parameter - run without any parameters to see options'")
    sys.exit(1)

os.environ['GRPC_SSL_CIPHER_SUITES'] = 'HIGH+ECDSA'
cert = open('/mnt/hdd/lnd/tls.cert', 'rb').read()
ssl_creds = grpc.ssl_channel_credentials(cert)
channel = grpc.secure_channel('localhost:10009', ssl_creds)
stub = lnrpc.WalletUnlockerStub(channel)

if mode=="new":

    request=False
    if len(seedpassword)>0:
        request = ln.InitWalletRequest(wallet_password=base64.b64encode(walletpassword.decode(),aezeed_passphrase=base64.b64encode(seedpassword).decode())
    else:
        request = ln.InitWalletRequest(wallet_password=base64.b64encode(walletpassword.decode())

    response = stub.InitWallet(request)
    print(response)

elif mode=="seed":

    print("err='TODO: implement creating from seed'")
    sys.exit(1)

elif mode=="scb":

    print("err='TODO: implement creating from seed/scb'")
    sys.exit(1)