stonix-wallet
Version:
A minimalistic wallet GUI for c-lightning
112 lines (93 loc) • 7.44 kB
JavaScript
;
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var args = require('meow')("\n Usage\n $ stonix-wallet [options]\n\n Options\n -l, --ln-path <path> path to c-lightning data directory [default: ~/.lightning]\n -p, --port <port> http(s) server port [default: 9737]\n -i, --host <host> http(s) server listen address [default: localhost]\n -u, --login <userpwd> http basic auth login, \"username:password\" format [default: generate random]\n -C, --cookie-file <path> persist generated login credentials to <path> or load them [default: ~/.stonix-wallet/cookie]\n --no-cookie-file disable cookie file [default: false]\n\n --rate-provider <name> exchange rate provider, one of \"bitstamp\" or \"wasabi\" (requires tor) [default: bitstamp]\n --no-rates disable exchange rate lookup [default: false]\n --proxy <uri> set a proxy for looking up rates, e.g. socks5h://127.0.0.1:9050 [default: none]\n\n --force-tls enable TLS even when binding on localhost [default: enable for non-localhost only]\n --no-tls disable TLS for non-localhost hosts [default: false]\n --tls-path <path> directory to read/store key.pem and cert.pem for TLS [default: ~/.stonix-wallet/tls/]\n --tls-name <name> common name for the TLS cert [default: {host}]\n\n --letsencrypt <email> enable CA-signed certificate via LetsEncrypt [default: false]\n --le-port <port> port to bind LetsEncrypt verification server [default: 80]\n --le-noverify skip starting the LetsEncrypt verification server [default: start when {letsencrypt} is set]\n --le-debug display additional debug information for LetsEncrypt [default: false]\n\n -o, --onion start Tor Hidden Service (v3) [default: false]\n -O, --onion-path <path> directory to read/store hidden service data [default: ~/.stonix-wallet/tor/]\n --onion-nonanonymous setup hidden service in non-anonymous mode [default: false]\n\n -k, --print-key print access key to console (for use with the Cordova/Electron apps) [default: false]\n -q, --print-qr print QR code with the server URL [default: false]\n -Q, --pairing-qr print QR code with embedded access key [default: false]\n -P, --pairing-url print URL with embedded access key [default: false]\n --public-url <url> override public URL used for QR codes [default: http(s)://{host}/]\n\n --allow-cors <origin> allow browser CORS requests from <origin> (USE WITH CARE) [default: off]\n --no-webui run API server without serving client assets [default: false]\n --no-test-conn skip testing access to c-lightning rpc (useful for init scripts) [default: false]\n\n -c, --config <path> path to config file [default: ~/.stonix-wallet/config]\n -V, --verbose display debugging information [default: false]\n -h, --help output usage information\n -v, --version output version number\n\n Example\n $ stonix-wallet -l ~/.lightning\n\n All options may also be specified as environment variables:\n $ LN_PATH=/data/lightning PORT=8070 NO_TLS=1 stonix-wallet\n\n", {
flags: {
lnPath: {
alias: 'l'
},
login: {
alias: 'u'
},
cookieFile: {
alias: 'C'
},
port: {
alias: 'p'
},
host: {
alias: 'i'
},
leNoverify: {
type: 'boolean'
},
leDebug: {
type: 'boolean'
},
printKey: {
type: 'boolean',
alias: 'k'
},
printQr: {
type: 'boolean',
alias: 'q'
},
pairingQr: {
type: 'boolean',
alias: 'Q'
},
pairingUrl: {
type: 'boolean',
alias: 'P'
},
onion: {
type: 'boolean',
alias: 'o'
},
onionPath: {
alias: 'O'
},
onionNonanonymous: {
type: 'boolean'
},
config: {
alias: 'c'
},
verbose: {
alias: 'V',
type: 'boolean'
}
}
}).flags; // Load config file
var os = require('os'),
fs = require('fs'),
path = require('path'),
ini = require('ini'),
confPath = args.config || process.env.CONFIG || path.join(os.homedir(), '.stonix-wallet', 'config'),
fileConf = fs.existsSync(confPath) ? ini.parse(fs.readFileSync(confPath, 'utf-8')) : {};
var conf = Object.assign({}, fileConf, args); // Set config options from argv and file as environment variables
Object.keys(conf).filter(function (k) {
return k.length > 1;
}).map(function (k) {
return [k.replace(/([^A-Z_])([A-Z])/g, '$1_$2').replace(/-/g, '_').toUpperCase(), conf[k]];
}).forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
k = _ref2[0],
v = _ref2[1];
return v !== false ? process.env[k] = v : process.env["NO_".concat(k)] = true;
}); // Enable cookie file by default in the same dir as the config file
if (!process.env.NO_COOKIE_FILE && !process.env.COOKIE_FILE) process.env.COOKIE_FILE = path.join(os.homedir(), '.stonix-wallet', 'cookie');
process.env.NODE_ENV || (process.env.NODE_ENV = 'production');
process.env.VERBOSE && (process.env.DEBUG = "clightning-client,stonix,superagent,".concat(process.env.DEBUG || ''));
process.env.ONION_PATH && (process.env.ONION = true); // --onion-path implies --onion
process.env.ONION_NONANONYMOUS && (process.env.ONION = true); // --onion-nonanonymous implies --onion
process.env.PAIRING_QR && (process.env.PRINT_QR = true); // --pairing-qr implies --print-qr
process.env.PROXY && (process.env.ALL_PROXY = process.env.PROXY); // PROXY is an alias for ALL_PROXY
if (process.env.TLS_PATH || process.env.TLS_NAME || process.env.LETSENCRYPT) process.env.FORCE_TLS = true;
require('@babel/polyfill');
require('./app');