const sequelize = require("sequelize");
const { Op } = sequelize;
app.get("/info", ah(async (req, res, next) => {
const { clientVersion } = config;
const info = {
fx: app.get("fx"),
nodes: networks,
clientVersion,
};
res.send(info);
}));
app.get("/balances", ah(async (req, res, next) => {
const accounts = await db.Account.findAll({
attributes: [
"asset",
"pubkey",
[sequelize.fn("sum", sequelize.col("balance")), "total"]
],
group: ["asset", "pubkey"],
});
let lnchannel;
let lnwallet;
let lninfo;
if (config.lna) {
if (config.lna.clightning) {
const funds = await lna.listfunds();
lninfo = await lna.getinfo();
lnchannel = parseInt(funds.channels.reduce((a, b) => a + b.channel_sat, 0));
lnwallet = parseInt(funds.outputs.reduce((a, b) => a + b.value, 0));
} else {
lninfo = await lna.getInfo({});
lnchannel = parseInt((await lna.channelBalance({})).balance);
lnwallet = parseInt((await lna.walletBalance({})).total_balance);
}
}
let bitcoin, bitcoind;
if (config.bitcoin) {
bitcoin = parseInt((await bc.getBalance()) * SATS);
bitcoind = await bc.getNetworkInfo();
}
let assets, liquid, elementsd;
if (config.liquid) {
assets = await lq.getBalance();
liquid = parseInt(assets.bitcoin * SATS);
elementsd = await lq.getNetworkInfo();
}
const info = {
bitcoind,
elementsd,
accounts,
assets,
bitcoin,
liquid,
lnchannel,
lnwallet,
};
info.total =
parseInt(bitcoin) +
parseInt(liquid) +
parseInt(lnchannel) +
parseInt(lnwallet);
res.send(info);
}));
ns
| coinos server — legacy coinos.io backend (Lightning, on-chain, Liquid) | coinos |
blob: fb6b9e3010b954755a17dad61e2462ad6a919803 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1" />
<title>CoinOS</title>
<link href="/img/favicon.ico" rel="shortcut icon" />
<link rel="stylesheet" href="/jquery-ui/themes/ui-lightness/jquery-ui.min.css" />
<link rel="stylesheet" href="/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="/bootstrap/dist/css/bootstrap-theme.min.css" />
<link rel="stylesheet" href="/font-awesome/css/font-awesome.min.css" />
<link rel="stylesheet" href="/css/coinos.css" />
<script src="/jquery/dist/jquery.min.js"></script>
<script src="/jquery-ui/jquery-ui.min.js"></script>
<script src="/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="/js/buffer.min.js"></script>
<script src="/js/bitcoinjs.min.js"></script>
<script src="/js/qrcode.js"></script>
{{{yield-styles}}}
{{{yield-scripts}}}
</head>
<body>
<div class="container-fluid">
{{#navigation}}
<nav class="navbar" role="navigation">
<button type="button" class="btn btn-primary navbar-toggle" data-toggle="collapse" data-target="#nav">
<span class="pull-right glyphicon glyphicon-list"></span>
<span id="connection" class="pull-right glyphicon glyphicon-exclamation-sign"></span>
</button>
<div id="nav" class="collapse navbar-collapse">
<div class="navbar">
<ul class="nav navbar-nav">
<li><a href="/{{user}}"><span class="glyphicon glyphicon-home"></span> Home</a></li>
<li><a href="/{{user}}/report"><span class="glyphicon glyphicon-list-alt"></span> Sales</a></li>
<li><a href="/{{user}}/wallet"><span class="fa fa-bank"></span> Wallet</a></li>
<li><a href="/{{user}}/profile"><span class="glyphicon glyphicon-user"></span> Account</a></li>
<li><a href="/{{user}}/edit"><span class="glyphicon glyphicon-cog"></span> Settings</a></li>
<li><a href="/logout"><span class="glyphicon glyphicon-off"></span> Logout</a></li>
</ul>
</div>
</div>
</nav>
{{/navigation}}
{{{yield}}}
</div>
</body>
</html>
|