Browse Source

Pulls env into /admin, then updates admin/funding DB

adminvar
benarc 4 years ago
parent
commit
6fc74e06fd
  1. 38
      lnbits/core/crud.py
  2. 199
      lnbits/core/migrations.py
  3. 195
      lnbits/core/templates/core/admin.html
  4. 21
      lnbits/core/views/api.py
  5. 1074
      lnbits/extensions/admin/templates/admin/index.html

38
lnbits/core/crud.py

@ -345,11 +345,11 @@ def get_admin(
funding_source_primary, funding_source_primary,
), ),
) )
row = g.db.fetchone("SELECT * FROM admin WHERE 1") row = g.db.fetchone("SELECT * FROM admin WHERE 1")
return Admin(**row) if row else None return Admin(**row) if row else None
def get_funding( def get_funding(
edited: Optional[str] = "",
CLightningWallet: Optional[str] = '', CLightningWallet: Optional[str] = '',
LndRestWallet: Optional[str] = '', LndRestWallet: Optional[str] = '',
LndWallet: Optional[str] = '', LndWallet: Optional[str] = '',
@ -358,16 +358,32 @@ def get_funding(
LnbitsWallet: Optional[str] = '', LnbitsWallet: Optional[str] = '',
OpenNodeWallet: Optional[str] = '', OpenNodeWallet: Optional[str] = '',
) -> List[Funding]: ) -> List[Funding]:
if edited: sources = [CLightningWallet, LndRestWallet, LndWallet, LntxbotWallet, LNPayWallet, LnbitsWallet, OpenNodeWallet]
edited.split(",") for source in sources:
CLightningWallet.split(",") fsource = ['1','1','1','1','1','1','1','1','1','1']
LndRestWallet.split(",") tsource = source.split(',')
LndWallet.split(",") num = 0
LntxbotWallet.split(",") for ttsource in tsource:
LNPayWallet.split(",") fsource[num] = ttsource
LnbitsWallet.split(",") num = num + 1
OpenNodeWallet.split(",") print(fsource)
print(OpenNodeWallet) if int(fsource[7]) == 1:
g.db.execute(
"""
UPDATE funding
SET endpoint = ?, port = ?, read_key = ?, invoice_key = ?, admin_key = ?, cert = ?
WHERE backend_wallet = ?
""",
(
fsource[0],
fsource[1],
fsource[2],
fsource[3],
fsource[4],
fsource[5],
fsource[8],
),
)
rows = g.db.fetchall("SELECT * FROM funding") rows = g.db.fetchall("SELECT * FROM funding")
return [Funding(**row) for row in rows] return [Funding(**row) for row in rows]

199
lnbits/core/migrations.py

@ -237,108 +237,105 @@ def m003_create_funding_table(db):
LntxbotWallet = db.fetchall("SELECT * FROM funding WHERE backend_wallet = ?", ("LntxbotWallet",)) LntxbotWallet = db.fetchall("SELECT * FROM funding WHERE backend_wallet = ?", ("LntxbotWallet",))
OpenNodeWallet = db.fetchall("SELECT * FROM funding WHERE backend_wallet = ?", ("OpenNodeWallet",)) OpenNodeWallet = db.fetchall("SELECT * FROM funding WHERE backend_wallet = ?", ("OpenNodeWallet",))
# If the funding source rows do not exist and there is data in env for them, return the data and put it in a row
if getenv("CLIGHTNING_RPC") and CLightningWallet != None:
db.execute(
"""
INSERT INTO funding (id, backend_wallet, endpoint)
VALUES (?, ?, ?)
""",
(urlsafe_short_hash(), "CLightningWallet", getenv("CLIGHTNING_RPC")),
)
if getenv("LNBITS_INVOICE_MACAROON") and LnbitsWallet != None:
db.execute(
"""
INSERT INTO funding (id, backend_wallet, endpoint, invoice_key, admin_key)
VALUES (?, ?, ?, ?, ?)
""",
(
urlsafe_short_hash(),
"LnbitsWallet",
getenv("LNBITS_ENDPOINT"),
getenv("LNBITS_INVOICE_MACAROON"),
getenv("LNBITS_ADMIN_MACAROON"),
),
)
if getenv("LND_GRPC_ENDPOINT") and LndWallet != None:
db.execute(
"""
INSERT INTO funding (id, backend_wallet, endpoint, port, read_key, invoice_key, admin_key, cert)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
""",
(
urlsafe_short_hash(),
"LndWallet",
getenv("LND_GRPC_ENDPOINT"),
getenv("LND_GRPC_PORT"),
getenv("LND_READ_MACAROON"),
getenv("LND_INVOICE_MACAROON"),
getenv("LND_ADMIN_MACAROON"),
getenv("LND_CERT"),
),
)
if getenv("LND_REST_ENDPOINT") and LndRestWallet != None: db.execute(
db.execute( """
""" INSERT INTO funding (id, backend_wallet, endpoint)
INSERT INTO funding (id, backend_wallet, endpoint, read_key, invoice_key, admin_key, cert) VALUES (?, ?, ?)
VALUES (?, ?, ?, ?, ?, ?, ?) """,
""", (urlsafe_short_hash(), "CLightningWallet", getenv("CLIGHTNING_RPC")),
( )
urlsafe_short_hash(),
"LndRestWallet",
getenv("LND_REST_ENDPOINT"),
getenv("LND_REST_READ_MACAROON"),
getenv("LND_REST_INVOICE_MACAROON"),
getenv("LND_REST_ADMIN_MACAROON"),
getenv("LND_REST_CERT"),
),
)
if getenv("LNPAY_INVOICE_KEY") and LNPayWallet != None: db.execute(
db.execute( """
""" INSERT INTO funding (id, backend_wallet, endpoint, invoice_key, admin_key)
INSERT INTO funding (id, backend_wallet, endpoint, read_key, invoice_key, admin_key, cert) VALUES (?, ?, ?, ?, ?)
VALUES (?, ?, ?, ?, ?, ?, ?) """,
""", (
( urlsafe_short_hash(),
urlsafe_short_hash(), "LnbitsWallet",
"LNPayWallet", getenv("LNBITS_ENDPOINT"),
getenv("LNPAY_API_ENDPOINT"), getenv("LNBITS_INVOICE_MACAROON"),
getenv("LNPAY_READ_KEY"), getenv("LNBITS_ADMIN_MACAROON"),
getenv("LNPAY_INVOICE_KEY"), ),
getenv("LNPAY_ADMIN_KEY"), )
getenv("LNPAY_API_KEY"),
),
)
if getenv("LNTXBOT_INVOICE_KEY") and LntxbotWallet != None: db.execute(
db.execute( """
""" INSERT INTO funding (id, backend_wallet, endpoint, port, read_key, invoice_key, admin_key, cert)
INSERT INTO funding (id, backend_wallet, endpoint, invoice_key, admin_key) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
VALUES (?, ?, ?, ?, ?) """,
""", (
( urlsafe_short_hash(),
urlsafe_short_hash(), "LndWallet",
"LntxbotWallet", getenv("LND_GRPC_ENDPOINT"),
getenv("LNTXBOT_API_ENDPOINT"), getenv("LND_GRPC_PORT"),
getenv("LNTXBOT_INVOICE_KEY"), getenv("LND_READ_MACAROON"),
getenv("LNTXBOT_ADMIN_KEY"), getenv("LND_INVOICE_MACAROON"),
), getenv("LND_ADMIN_MACAROON"),
) getenv("LND_CERT"),
),
)
if getenv("OPENNODE_INVOICE_KEY") and OpenNodeWallet != None:
db.execute( db.execute(
""" """
INSERT INTO funding (id, backend_wallet, endpoint, invoice_key, admin_key) INSERT INTO funding (id, backend_wallet, endpoint, read_key, invoice_key, admin_key, cert)
VALUES (?, ?, ?, ?, ?) VALUES (?, ?, ?, ?, ?, ?, ?)
""", """,
( (
urlsafe_short_hash(), urlsafe_short_hash(),
"OpenNodeWallet", "LndRestWallet",
getenv("OPENNODE_API_ENDPOINT"), getenv("LND_REST_ENDPOINT"),
getenv("OPENNODE_INVOICE_KEY"), getenv("LND_REST_READ_MACAROON"),
getenv("OPENNODE_ADMIN_KEY"), getenv("LND_REST_INVOICE_MACAROON"),
), getenv("LND_REST_ADMIN_MACAROON"),
) getenv("LND_REST_CERT"),
),
)
db.execute(
"""
INSERT INTO funding (id, backend_wallet, endpoint, read_key, invoice_key, admin_key, cert)
VALUES (?, ?, ?, ?, ?, ?, ?)
""",
(
urlsafe_short_hash(),
"LNPayWallet",
getenv("LNPAY_API_ENDPOINT"),
getenv("LNPAY_READ_KEY"),
getenv("LNPAY_INVOICE_KEY"),
getenv("LNPAY_ADMIN_KEY"),
getenv("LNPAY_API_KEY"),
),
)
db.execute(
"""
INSERT INTO funding (id, backend_wallet, endpoint, invoice_key, admin_key)
VALUES (?, ?, ?, ?, ?)
""",
(
urlsafe_short_hash(),
"LntxbotWallet",
getenv("LNTXBOT_API_ENDPOINT"),
getenv("LNTXBOT_INVOICE_KEY"),
getenv("LNTXBOT_ADMIN_KEY"),
),
)
db.execute(
"""
INSERT INTO funding (id, backend_wallet, endpoint, invoice_key, admin_key)
VALUES (?, ?, ?, ?, ?)
""",
(
urlsafe_short_hash(),
"OpenNodeWallet",
getenv("OPENNODE_API_ENDPOINT"),
getenv("OPENNODE_INVOICE_KEY"),
getenv("OPENNODE_ADMIN_KEY"),
),
)

195
lnbits/core/templates/core/admin.html

@ -139,14 +139,14 @@ context %} {% block page %}
<q-expansion-item <q-expansion-item
expand-separator expand-separator
icon="payments" icon="payments"
:label="data.admin.CLightningWallet.label" :label="data.admin.CLightningWallet[6]"
@click="addSource('CLightningWallet')" @click="data.admin.CLightningWallet[7] = 1"
> >
<q-card> <q-card>
<q-card-section> <q-card-section>
<q-input <q-input
filled filled
v-model="data.admin.CLightningWallet.endpoint" v-model="data.admin.CLightningWallet[0]"
label="GRPC Endpoint" label="GRPC Endpoint"
class="q-pr-md" class="q-pr-md"
hint="ie /home/bob/.lightning/bitcoin/lightning-rpc" hint="ie /home/bob/.lightning/bitcoin/lightning-rpc"
@ -158,8 +158,8 @@ context %} {% block page %}
<q-expansion-item <q-expansion-item
expand-separator expand-separator
icon="payments" icon="payments"
:label="data.admin.LndRestWallet.label" :label="data.admin.LndRestWallet[6]"
@click="addSource('LndRestWallet')" @click="data.admin.LndRestWallet[7] = 1"
> >
<q-card> <q-card>
<q-card-section> <q-card-section>
@ -167,7 +167,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LndRestWallet.endpoint" v-model="data.admin.LndRestWallet[0]"
label="LND REST Endpoint" label="LND REST Endpoint"
class="q-pr-md" class="q-pr-md"
hint="default 127.0.0.1" hint="default 127.0.0.1"
@ -181,7 +181,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LndRestWallet.cert" v-model="data.admin.LndRestWallet[5]"
label="LND self-signed cert" label="LND self-signed cert"
class="q-pr-md" class="q-pr-md"
hint="Location of your ssl cert" hint="Location of your ssl cert"
@ -190,7 +190,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LndRestWallet.admin" v-model="data.admin.LndRestWallet[4]"
label="LND admin macaroon" label="LND admin macaroon"
class="q-pr-md" class="q-pr-md"
hint="Your admin macaroon as hex or location" hint="Your admin macaroon as hex or location"
@ -201,7 +201,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LndRestWallet.invoice" v-model="data.admin.LndRestWallet[3]"
label="LND invoice macaroon" label="LND invoice macaroon"
class="q-pr-md" class="q-pr-md"
hint="Your invoice macaroon as hex or location" hint="Your invoice macaroon as hex or location"
@ -210,7 +210,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LndRestWallet.read" v-model="data.admin.LndRestWallet[2]"
label="LND read macaroon" label="LND read macaroon"
class="q-pr-md" class="q-pr-md"
hint="Your read macaroon as hex or location" hint="Your read macaroon as hex or location"
@ -224,8 +224,8 @@ context %} {% block page %}
<q-expansion-item <q-expansion-item
expand-separator expand-separator
icon="payments" icon="payments"
:label="data.admin.LndWallet.label" :label="data.admin.LndWallet[6]"
@click="addSource('LndWallet')" @click="data.admin.LndWallet[7] = 1"
> >
<q-card> <q-card>
<q-card-section> <q-card-section>
@ -233,7 +233,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LndWallet.endpoint" v-model="data.admin.LndWallet[0]"
label="LND GRPC Endpoint" label="LND GRPC Endpoint"
class="q-pr-md" class="q-pr-md"
hint="default 127.0.0.1" hint="default 127.0.0.1"
@ -242,7 +242,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LndWallet.port" v-model="data.admin.LndWallet[1]"
label="LND GRPC port" label="LND GRPC port"
class="q-pr-md" class="q-pr-md"
hint="Deafault 11009" hint="Deafault 11009"
@ -254,7 +254,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LndWallet.cert" v-model="data.admin.LndWallet[5]"
label="LND self-signed cert" label="LND self-signed cert"
class="q-pr-md" class="q-pr-md"
hint="Location of your ssl cert" hint="Location of your ssl cert"
@ -263,7 +263,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LndWallet.admin" v-model="data.admin.LndWallet[4]"
label="LND admin macaroon" label="LND admin macaroon"
class="q-pr-md" class="q-pr-md"
hint="Your admin macaroon as hex or location" hint="Your admin macaroon as hex or location"
@ -274,7 +274,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LndWallet.invoice" v-model="data.admin.LndWallet[3]"
label="LND invoice macaroon" label="LND invoice macaroon"
class="q-pr-md" class="q-pr-md"
hint="Your invoice macaroon as hex or location" hint="Your invoice macaroon as hex or location"
@ -283,7 +283,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LndWallet.read" v-model="data.admin.LndWallet[2]"
label="LND read macaroon" label="LND read macaroon"
class="q-pr-md" class="q-pr-md"
hint="Your read macaroon as hex or location" hint="Your read macaroon as hex or location"
@ -297,8 +297,8 @@ context %} {% block page %}
<q-expansion-item <q-expansion-item
expand-separator expand-separator
icon="payments" icon="payments"
:label="data.admin.LntxbotWallet.label" :label="data.admin.LntxbotWallet[6]"
@click="addSource('LntxbotWallet')" @click="data.admin.LntxbotWallet[7] = 1"
> >
<q-card> <q-card>
<q-card-section> <q-card-section>
@ -306,7 +306,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LntxbotWallet.admin" v-model="data.admin.LntxbotWallet[4]"
label="Admin key" label="Admin key"
class="q-pr-md" class="q-pr-md"
hint="use /api in LNTXBOT" hint="use /api in LNTXBOT"
@ -315,7 +315,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LntxbotWallet.invoice" v-model="data.admin.LntxbotWallet[3]"
label="Invoice key" label="Invoice key"
class="q-pr-md" class="q-pr-md"
></q-input> ></q-input>
@ -328,8 +328,8 @@ context %} {% block page %}
<q-expansion-item <q-expansion-item
expand-separator expand-separator
icon="payments" icon="payments"
:label="data.admin.LNPayWallet.label" :label="data.admin.LNPayWallet[6]"
@click="addSource('LNPayWallet')" @click="data.admin.LNPayWallet[7] = 1"
> >
<q-card> <q-card>
<q-card-section> <q-card-section>
@ -337,7 +337,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LNPayWallet.cert" v-model="data.admin.LNPayWallet[5]"
label="API key" label="API key"
class="q-pr-md" class="q-pr-md"
></q-input> ></q-input>
@ -345,7 +345,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LNPayWallet.admin" v-model="data.admin.LNPayWallet[4]"
label="Admin key" label="Admin key"
class="q-pr-md q-pb-md" class="q-pr-md q-pb-md"
></q-input> ></q-input>
@ -355,7 +355,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LNPayWallet.invoice" v-model="data.admin.LNPayWallet[3]"
label="Invoice key" label="Invoice key"
class="q-pr-md" class="q-pr-md"
></q-input> ></q-input>
@ -363,7 +363,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LNPayWallet.read" v-model="data.admin.LNPayWallet[2]"
label="Read key" label="Read key"
class="q-pr-md" class="q-pr-md"
></q-input> ></q-input>
@ -376,8 +376,8 @@ context %} {% block page %}
<q-expansion-item <q-expansion-item
expand-separator expand-separator
icon="payments" icon="payments"
:label="data.admin.LnbitsWallet.label" :label="data.admin.LnbitsWallet[6]"
@click="addSource('LnbitsWallet')" @click="data.admin.LnbitsWallet[7] = 1"
> >
<q-card> <q-card>
<q-card-section> <q-card-section>
@ -385,7 +385,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LnbitsWallet.endpoint" v-model="data.admin.LnbitsWallet[0]"
label="LNbits endpoint" label="LNbits endpoint"
class="q-pr-md" class="q-pr-md"
hint="ie https://lnbits.com, default 127.0.0.1" hint="ie https://lnbits.com, default 127.0.0.1"
@ -397,7 +397,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LnbitsWallet.admin" v-model="data.admin.LnbitsWallet[4]"
label="Admin key" label="Admin key"
class="q-pr-md q-pb-md" class="q-pr-md q-pb-md"
></q-input> ></q-input>
@ -405,7 +405,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.LnbitsWallet.invoice" v-model="data.admin.LnbitsWallet[3]"
label="Invoice key" label="Invoice key"
class="q-pr-md" class="q-pr-md"
></q-input> ></q-input>
@ -418,8 +418,8 @@ context %} {% block page %}
<q-expansion-item <q-expansion-item
expand-separator expand-separator
icon="payments" icon="payments"
:label="data.admin.OpenNodeWallet.label" :label="data.admin.OpenNodeWallet[6]"
@click="addSource('OpenNodeWallet')" @click="data.admin.OpenNodeWallet[7] = 1"
> >
<q-card> <q-card>
<q-card-section> <q-card-section>
@ -427,7 +427,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.OpenNodeWallet.admin" v-model="data.admin.OpenNodeWallet[4]"
label="Admin key" label="Admin key"
class="q-pr-md" class="q-pr-md"
></q-input> ></q-input>
@ -435,7 +435,7 @@ context %} {% block page %}
<div class="col"> <div class="col">
<q-input <q-input
filled filled
v-model="data.admin.OpenNodeWallet.invoice" v-model="data.admin.OpenNodeWallet[3]"
label="Invoice key" label="Invoice key"
class="q-pr-md" class="q-pr-md"
></q-input> ></q-input>
@ -512,13 +512,14 @@ context %} {% block page %}
service_fee: 0, service_fee: 0,
disabled_ext: '', disabled_ext: '',
edited: [], edited: [],
CLightningWallet: {endpoint: '', port: '', invoice: '', read: '', admin: '', cert: ''}, CLightningWallet: ['', '', '', '', '', '', '', 0, 'CLightningWallet'],
LndRestWallet:{endpoint: '', port: '', invoice: '', read: '', admin: '', cert: ''}, LndRestWallet: ['', '', '', '', '', '', '', 0, 'LndRestWallet'],
LndWallet: {endpoint: '', port: '', invoice: '', read: '', admin: '', cert: ''}, LndWallet: ['', '', '', '', '', '', '', 0, 'LndWallet'],
LntxbotWallet:{endpoint: '', port: '', invoice: '', read: '', admin: '', cert: ''}, LntxbotWallet: ['', '', '', '', '', '', '', 0, 'LntxbotWallet'],
LNPayWallet:{endpoint: '', port: '', invoice: '', read: '', admin: '', cert: ''}, LNPayWallet: ['', '', '', '', '', '', '', 0, 'LNPayWallet'],
LnbitsWallet:{endpoint: '', port: '', invoice: '', read: '', admin: '', cert: ''}, LnbitsWallet: ['', '', '', '', '', '', '', 0, 'LnbitsWallet'],
OpenNodeWallet:{endpoint: '', port: '', invoice: '', read: '', admin: '', cert: ''}, OpenNodeWallet: ['', '', '', '', '', '', '', 0, 'OpenNodeWallet'],
senddata: {},
}, },
}, },
@ -555,77 +556,77 @@ context %} {% block page %}
self.data.admin.funding_source_primary = '{{admin.funding_source}}' self.data.admin.funding_source_primary = '{{admin.funding_source}}'
self.data.admin.disabled_ext = '{{admin.disabled_ext}}'.split(',') self.data.admin.disabled_ext = '{{admin.disabled_ext}}'.split(',')
funding = JSON.parse('{{ funding | tojson }}') funding = JSON.parse('{{ funding | tojson }}')
self.data.admin.LndRestWallet.label = 'LndRestWallet' self.data.admin.LndRestWallet[6] = 'LndRestWallet'
self.data.admin.CLightningWallet.label = 'CLightningWallet' self.data.admin.CLightningWallet[6] = 'CLightningWallet'
self.data.admin.LndWallet.label = 'LndWallet' self.data.admin.LndWallet[6] = 'LndWallet'
self.data.admin.LntxbotWallet.label = 'LntxbotWallet' self.data.admin.LntxbotWallet[6] = 'LntxbotWallet'
self.data.admin.LNPayWallet.label = 'LNPayWallet' self.data.admin.LNPayWallet[6] = 'LNPayWallet'
self.data.admin.LnbitsWallet.label = 'LnbitsWallet' self.data.admin.LnbitsWallet[6] = 'LnbitsWallet'
self.data.admin.OpenNodeWallet.label = 'OpenNodeWallet' self.data.admin.OpenNodeWallet[6] = 'OpenNodeWallet'
var i var i
for (i = 0; i < funding.length; i++) { for (i = 0; i < funding.length; i++) {
if (funding[i][1] == 'CLightningWallet') { if (funding[i][1] == 'CLightningWallet') {
self.data.admin.CLightningWallet.endpoint = funding[i][2] self.data.admin.CLightningWallet[0] = funding[i][2]
if (self.data.admin.funding_source_primary == 'CLightningWallet') { if (self.data.admin.funding_source_primary == 'CLightningWallet') {
self.data.admin.CLightningWallet.label = 'CLightningWallet (main funding source)' self.data.admin.CLightningWallet[6] = 'CLightningWallet (main funding source)'
} }
} }
if (funding[i][1] == 'LndRestWallet') { if (funding[i][1] == 'LndRestWallet') {
self.data.admin.LndRestWallet.endpoint = funding[i][2] self.data.admin.LndRestWallet[0] = funding[i][2]
self.data.admin.LndRestWallet.read = funding[i][4] self.data.admin.LndRestWallet[2] = funding[i][4]
self.data.admin.LndRestWallet.invoice = funding[i][5] self.data.admin.LndRestWallet[3] = funding[i][5]
self.data.admin.LndRestWallet.admin = funding[i][6] self.data.admin.LndRestWallet[4]= funding[i][6]
self.data.admin.LndRestWallet.cert = funding[i][7] self.data.admin.LndRestWallet[5] = funding[i][7]
if (self.data.admin.funding_source_primary == 'LndRestWallet') { if (self.data.admin.funding_source_primary == 'LndRestWallet') {
self.data.admin.LndRestWallet.label = 'LndRestWallet (main funding source)' self.data.admin.LndRestWallet[6] = 'LndRestWallet (main funding source)'
} }
} }
if (funding[i][1] == 'LndWallet') { if (funding[i][1] == 'LndWallet') {
self.data.admin.LndWallet.endpoint = funding[i][2] self.data.admin.LndWallet[0] = funding[i][2] //endpoint
self.data.admin.LndWallet.port = funding[i][3] self.data.admin.LndWallet[1] = funding[i][3] //port
self.data.admin.LndWallet.read = funding[i][4] self.data.admin.LndWallet[2] = funding[i][4] //read
self.data.admin.LndWallet.invoice = funding[i][5] self.data.admin.LndWallet[3] = funding[i][5] //invoice
self.data.admin.LndWallet.admin = funding[i][6] self.data.admin.LndWallet[4] = funding[i][6] //admin
self.data.admin.LndWallet.cert = funding[i][7] self.data.admin.LndWallet[5]= funding[i][7] //cert
if (self.data.admin.funding_source_primary == 'LndWallet') { if (self.data.admin.funding_source_primary == 'LndWallet') {
self.data.admin.LndWallet.label = 'LndWallet (main funding source)' self.data.admin.LndWallet[6] = 'LndWallet (main funding source)' //label
} }
} }
if (funding[i][1] == 'LntxbotWallet') { if (funding[i][1] == 'LntxbotWallet') {
self.data.admin.LntxbotWallet.invoice = funding[i][5] self.data.admin.LntxbotWallet[3] = funding[i][5]
self.data.admin.LntxbotWallet.admin = funding[i][6] self.data.admin.LntxbotWallet[4] = funding[i][6]
if (self.data.admin.funding_source_primary == 'LntxbotWallet') { if (self.data.admin.funding_source_primary == 'LntxbotWallet') {
self.data.admin.LntxbotWallet.label = 'LntxbotWallet (main funding source)' self.data.admin.LntxbotWallet[6] = 'LntxbotWallet (main funding source)'
} }
} }
if (funding[i][1] == 'LNPayWallet') { if (funding[i][1] == 'LNPayWallet') {
self.data.admin.LNPayWallet.read = funding[i][4] self.data.admin.LNPayWallet[2] = funding[i][4]
self.data.admin.LNPayWallet.invoice = funding[i][5] self.data.admin.LNPayWallet[3] = funding[i][5]
self.data.admin.LNPayWallet.admin = funding[i][6] self.data.admin.LNPayWallet[4] = funding[i][6]
self.data.admin.LNPayWallet.cert = funding[i][7] self.data.admin.LNPayWallet[5] = funding[i][7]
if (self.data.admin.funding_source_primary == 'LNPayWallet') { if (self.data.admin.funding_source_primary == 'LNPayWallet') {
self.data.admin.LNPayWallet.label = 'LNPayWallet (main funding source)' self.data.admin.LNPayWallet[6] = 'LNPayWallet (main funding source)'
} }
} }
if (funding[i][1] == 'LnbitsWallet') { if (funding[i][1] == 'LnbitsWallet') {
self.data.admin.LnbitsWallet.endpoint = funding[i][2] self.data.admin.LnbitsWallet[0] = funding[i][2]
self.data.admin.LnbitsWallet.read = funding[i][4] self.data.admin.LnbitsWallet[2] = funding[i][4]
self.data.admin.LnbitsWallet.invoice = funding[i][5] self.data.admin.LnbitsWallet[3] = funding[i][5]
self.data.admin.LnbitsWallet.admin = funding[i][6] self.data.admin.LnbitsWallet[4] = funding[i][6]
if (self.data.admin.funding_source_primary == 'LnbitsWallet') { if (self.data.admin.funding_source_primary == 'LnbitsWallet') {
self.data.admin.LnbitsWallet.label = 'LnbitsWallet (main funding source)' self.data.admin.LnbitsWallet[6] = 'LnbitsWallet (main funding source)'
} }
} }
if (funding[i][1] == 'OpenNodeWallet') { if (funding[i][1] == 'OpenNodeWallet') {
self.data.admin.OpenNodeWallet.read = funding[i][4] self.data.admin.OpenNodeWallet[2] = funding[i][4]
self.data.admin.OpenNodeWallet.invoice = funding[i][5] self.data.admin.OpenNodeWallet[3] = funding[i][5]
self.data.admin.OpenNodeWallet.admin = funding[i][6] self.data.admin.OpenNodeWallet[4] = funding[i][6]
if (self.data.admin.funding_source_primary == 'OpenNodeWallet') { if (self.data.admin.funding_source_primary == 'OpenNodeWallet') {
self.data.admin.OpenNodeWallet.label = 'OpenNodeWallet (main funding source)' self.data.admin.OpenNodeWallet[6] = 'OpenNodeWallet (main funding source)'
} }
} }
} }
@ -642,14 +643,30 @@ context %} {% block page %}
LaunchLNbits: function () { LaunchLNbits: function () {
var self = this var self = this
var data = self.data var data = self.data
data.admin.disabled_ext = data.admin.disabled_ext.toString() data.admin.senddata.site_title = data.admin.site_title
data.admin.service_fee = parseInt(data.admin.service_fee) data.admin.senddata.tagline = data.admin.tagline
data.admin.edited = data.admin.edited.toString() data.admin.senddata.primary_color = data.admin.primary_color
data.admin.senddata.secondary_color = data.admin.secondary_color
data.admin.senddata.funding_source_primary = data.admin.funding_source_primary
data.admin.senddata.funding_source_edited = data.admin.funding_source_edited
data.admin.senddata.allowed_users = data.admin.allowed_users
data.admin.senddata.data_folder = data.admin.data_folder
data.admin.senddata.default_wallet_name = data.admin.default_wallet_name
data.admin.senddata.user = data.admin.user
data.admin.senddata.disabled_ext = data.admin.disabled_ext.toString()
data.admin.senddata.service_fee = parseInt(data.admin.service_fee)
data.admin.senddata.edited = data.admin.edited.toString()
data.admin.senddata.CLightningWallet = data.admin.CLightningWallet.toString()
data.admin.senddata.LndRestWallet = data.admin.LndRestWallet.toString()
data.admin.senddata.LndWallet = data.admin.LndWallet.toString()
data.admin.senddata.LntxbotWallet = data.admin.LntxbotWallet.toString()
data.admin.senddata.LNPayWallet = data.admin.LNPayWallet.toString()
data.admin.senddata.LnbitsWallet = data.admin.LnbitsWallet.toString()
data.admin.senddata.OpenNodeWallet = data.admin.OpenNodeWallet.toString()
LNbits.api LNbits.api
.request('POST', '/api/v1/admin', 'wallet.inkey', data.admin) .request('POST', '/api/v1/admin', 'wallet.inkey', data.admin.senddata)
.then(function (response) { .then(function (response) {
console.log(response.data) window.location.href = '/wallet?usr=' + response.data.admin[0]
window.location.href = '/wallet?usr=' + response.data[0]
}) })
.catch(function (error) { .catch(function (error) {
LNbits.utils.notifyApiError(error) LNbits.utils.notifyApiError(error)

21
lnbits/core/views/api.py

@ -5,7 +5,7 @@ from binascii import unhexlify
from lnbits import bolt11 from lnbits import bolt11
from lnbits.core import core_app from lnbits.core import core_app
from lnbits.core.services import create_invoice, pay_invoice from lnbits.core.services import create_invoice, pay_invoice
from lnbits.core.crud import delete_expired_invoices, get_admin, get_account from lnbits.core.crud import delete_expired_invoices, get_admin, get_account, get_funding
from lnbits.decorators import api_check_wallet_key, api_validate_post_request from lnbits.decorators import api_check_wallet_key, api_validate_post_request
from lnbits.settings import WALLET, LNBITS_ADMIN_USERS from lnbits.settings import WALLET, LNBITS_ADMIN_USERS
@ -139,18 +139,16 @@ def api_payment(payment_hash):
"disabled_ext": {"type": "string", "empty": False, "required": True}, "disabled_ext": {"type": "string", "empty": False, "required": True},
"service_fee": {"type": "integer", "min": 0, "max": 90, "required": True}, "service_fee": {"type": "integer", "min": 0, "max": 90, "required": True},
"funding_source_primary": {"type": "string", "empty": False, "required": True}, "funding_source_primary": {"type": "string", "empty": False, "required": True},
"edited": {"type": "string", "required": True}, "CLightningWallet": {"type": "string", "required": True},
"CLightningWallet": {"type": "list", "required": True}, "LndRestWallet": {"type": "string", "required": True},
"LndRestWallet": {"type": "list", "required": True}, "LndWallet": {"type": "string", "required": True},
"LndWallet": {"type": "list", "required": True}, "LNPayWallet": {"type": "string", "required": True},
"LNPayWallet": {"type": "list", "required": True}, "LntxbotWallet": {"type": "string", "required": True},
"LntxbotWallet": {"type": "list", "required": True}, "LnbitsWallet": {"type": "string", "required": True},
"LnbitsWallet": {"type": "list", "required": True}, "OpenNodeWallet": {"type": "string", "required": True},
"OpenNodeWallet": {"type": "list", "required": True},
} }
) )
def api_admin(): def api_admin():
print(g.data)
admin = get_admin(None) admin = get_admin(None)
if admin.user != None and admin.user != g.data["user"]: if admin.user != None and admin.user != g.data["user"]:
@ -160,4 +158,5 @@ def api_admin():
if not account: if not account:
return jsonify({"message": "Admin doesnt exist and neither do you!"}), HTTPStatus.FORBIDDEN return jsonify({"message": "Admin doesnt exist and neither do you!"}), HTTPStatus.FORBIDDEN
admin = get_admin(**g.data) admin = get_admin(**g.data)
return jsonify(admin) funding = get_funding(g.data['CLightningWallet'],g.data['LndRestWallet'],g.data['LndWallet'],g.data['LNPayWallet'],g.data['LntxbotWallet'],g.data['LnbitsWallet'],g.data['OpenNodeWallet'])
return jsonify({"admin": admin, "funding":funding})

1074
lnbits/extensions/admin/templates/admin/index.html

File diff suppressed because it is too large
Loading…
Cancel
Save