From 128888be920d66b63b51a66ac4254d43a3b2ecd6 Mon Sep 17 00:00:00 2001 From: Kristjan Date: Thu, 31 Dec 2020 18:39:16 +0100 Subject: [PATCH] refactoring & bug fixes --- lnbits/extensions/subdomains/crud.py | 20 +++++++------ lnbits/extensions/subdomains/migrations.py | 2 ++ lnbits/extensions/subdomains/models.py | 2 ++ .../templates/subdomains/display.html | 29 ++++++++++++------- .../templates/subdomains/index.html | 11 +++++-- lnbits/extensions/subdomains/views.py | 4 ++- lnbits/extensions/subdomains/views_api.py | 2 ++ 7 files changed, 47 insertions(+), 23 deletions(-) diff --git a/lnbits/extensions/subdomains/crud.py b/lnbits/extensions/subdomains/crud.py index dd81ee00..65d3e6db 100644 --- a/lnbits/extensions/subdomains/crud.py +++ b/lnbits/extensions/subdomains/crud.py @@ -16,14 +16,15 @@ async def create_subdomain( email: str, ip: str, sats: int, - duration: int + duration: int, + record_type: str ) -> Subdomains: await db.execute( """ - INSERT INTO subdomain (id, domain, email, subdomain, ip, wallet, sats, duration, paid) - VALUES (?, ?, ?, ?, ?, ?, ?, ?,?) + INSERT INTO subdomain (id, domain, email, subdomain, ip, wallet, sats, duration, paid, record_type) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """, - (payment_hash, domain, email, subdomain, ip, wallet, sats, duration, False), + (payment_hash, domain, email, subdomain, ip, wallet, sats, duration, False, record_type), ) subdomain = await get_subdomain(payment_hash) @@ -69,7 +70,7 @@ async def set_subdomain_paid(payment_hash: str) -> Subdomains: url, headers=header, json={ - "type": "A", + "type": subdomain.record_type, "name": aRecord, "content": subdomain.ip, "ttl": 0, @@ -90,6 +91,7 @@ async def set_subdomain_paid(payment_hash: str) -> Subdomains: json={ "domain": subdomain.domain_name, "subdomain": subdomain.subdomain, + "record_type": subdomain.record_type, "email": subdomain.email, "ip": subdomain.ip, "cost:": str(subdomain.sats) + " sats", @@ -128,14 +130,14 @@ async def delete_subdomain(subdomain_id: str) -> None: # Domains -async def create_domain(*, wallet: str, domain: str, cf_token: str, cf_zone_id: str, webhook: Optional[str] = None, description: str, cost: int) -> Domains: +async def create_domain(*, wallet: str, domain: str, cf_token: str, cf_zone_id: str, webhook: Optional[str] = None, description: str, cost: int, allowed_record_types: str) -> Domains: domain_id = urlsafe_short_hash() await db.execute( """ - INSERT INTO domain (id, wallet, domain, webhook, cf_token, cf_zone_id, description, cost, amountmade) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) + INSERT INTO domain (id, wallet, domain, webhook, cf_token, cf_zone_id, description, cost, amountmade, allowed_record_types) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """, - (domain_id, wallet, domain, webhook, cf_token, cf_zone_id, description, cost, 0), + (domain_id, wallet, domain, webhook, cf_token, cf_zone_id, description, cost, 0, allowed_record_types), ) domain = await get_domain(domain_id) diff --git a/lnbits/extensions/subdomains/migrations.py b/lnbits/extensions/subdomains/migrations.py index 75080280..4de5692a 100644 --- a/lnbits/extensions/subdomains/migrations.py +++ b/lnbits/extensions/subdomains/migrations.py @@ -12,6 +12,7 @@ async def m001_initial(db): description TEXT NOT NULL, cost INTEGER NOT NULL, amountmade INTEGER NOT NULL, + allowed_record_types TEXT NOT NULL, time TIMESTAMP NOT NULL DEFAULT (strftime('%s', 'now')) ); """ @@ -29,6 +30,7 @@ async def m001_initial(db): sats INTEGER NOT NULL, duration INTEGER NOT NULL, paid BOOLEAN NOT NULL, + record_type TEXT NOT NULL, time TIMESTAMP NOT NULL DEFAULT (strftime('%s', 'now')) ); """ diff --git a/lnbits/extensions/subdomains/models.py b/lnbits/extensions/subdomains/models.py index a1d14070..a519311e 100644 --- a/lnbits/extensions/subdomains/models.py +++ b/lnbits/extensions/subdomains/models.py @@ -12,6 +12,7 @@ class Domains(NamedTuple): cost: int amountmade: int time: int + allowed_record_types: str class Subdomains(NamedTuple): @@ -26,3 +27,4 @@ class Subdomains(NamedTuple): duration: int paid: bool time: int + record_type: str diff --git a/lnbits/extensions/subdomains/templates/subdomains/display.html b/lnbits/extensions/subdomains/templates/subdomains/display.html index 90c91b58..3e3d6f65 100644 --- a/lnbits/extensions/subdomains/templates/subdomains/display.html +++ b/lnbits/extensions/subdomains/templates/subdomains/display.html @@ -10,15 +10,22 @@ - + + - + - + -

{% raw %}{{amountSats}}{% endraw %}

+

+ Cost per day: {{ domain_cost }} sats
+ {% raw %} + Total cost: {{amountSats}} sats + {% endraw %}

- Submit Cancel
@@ -65,6 +72,7 @@ subdomain: '', duration: '', email: '', + record_type: '' } }, receive: { @@ -77,12 +85,8 @@ computed: { amountSats() { var sats = this.formDialog.data.duration * parseInt('{{ domain_cost }}') - if (sats === parseInt('{{ domain_cost }}')) { - return '0 Sats to pay' - } else { - this.formDialog.data.sats = sats - return sats + ' Sats to pay' - } + this.formDialog.data.sats = sats + return sats } }, @@ -93,6 +97,7 @@ this.formDialog.data.email = '' this.formDialog.data.ip = '' this.formDialog.data.duration = '' + this.formDialog.data.record_type = '' }, closeReceiveDialog: function () { @@ -112,6 +117,7 @@ email: self.formDialog.data.email, sats: self.formDialog.data.sats, duration: parseInt(self.formDialog.data.duration), + record_type: self.formDialog.data.record_type }) .then(function (response) { self.paymentReq = response.data.payment_request @@ -147,6 +153,7 @@ self.formDialog.data.email = '' self.formDialog.data.ip = '' self.formDialog.data.duration = '' + self.formDialog.data.record_type = '' self.$q.notify({ type: 'positive', message: 'Sent, thank you!', diff --git a/lnbits/extensions/subdomains/templates/subdomains/index.html b/lnbits/extensions/subdomains/templates/subdomains/index.html index 501f6624..8294f65f 100644 --- a/lnbits/extensions/subdomains/templates/subdomains/index.html +++ b/lnbits/extensions/subdomains/templates/subdomains/index.html @@ -117,7 +117,9 @@ - + + @@ -159,10 +161,12 @@ return { domains: [], subdomains: [], + dnsRecordTypes: ['A', 'AAAA', 'CNAME', 'HTTPS', 'TXT', 'SRV', 'LOC', 'MX', 'NS', 'SPF', 'CERT', 'DNSKEY', 'DS', 'NAPTR', 'SMIMEA', 'SSHFP', 'SVCB', 'TLSA', 'URI'], domainsTable: { columns: [ { name: 'id', align: 'left', label: 'ID', field: 'id' }, { name: 'domain', align: 'left', label: 'Domain name', field: 'domain' }, + { name: 'allowed_record_types', align: 'left', label: 'Allowed record types', field: 'allowed_record_types' }, { name: 'wallet', align: 'left', label: 'Wallet', field: 'wallet' }, { name: 'webhook', align: 'left', label: 'Webhook', field: 'webhook' }, { @@ -186,6 +190,7 @@ columns: [ { name: 'subdomain', align: 'left', label: 'Subdomain name', field: 'subdomain' }, { name: 'domain', align: 'left', label: 'Domain name', field: 'domain_name' }, + { name: 'record_type', align: 'left', label: 'Record type', field: 'record_type' }, { name: 'email', align: 'left', @@ -288,7 +293,8 @@ id: this.domainDialog.data.wallet }) var data = this.domainDialog.data - + data.allowed_record_types = data.allowed_record_types.join(", ") + console.log(this.domainDialog) if (data.id) { this.updateDomain(wallet, data) } else { @@ -322,6 +328,7 @@ this.domainDialog.data.cf_zone_id = link.cf_zone_id this.domainDialog.data.webhook = link.webhook this.domainDialog.data.cost = link.cost + this.domainDialog.data.allowed_record_types = link.allowed_record_types.split(", ") this.domainDialog.show = true }, updateDomain: function (wallet, data) { diff --git a/lnbits/extensions/subdomains/views.py b/lnbits/extensions/subdomains/views.py index 616b2924..0fe049d2 100644 --- a/lnbits/extensions/subdomains/views.py +++ b/lnbits/extensions/subdomains/views.py @@ -17,11 +17,13 @@ async def display(domain_id): domain = await get_domain(domain_id) if not domain: abort(HTTPStatus.NOT_FOUND, "Domain does not exist.") - + allowed_records = domain.allowed_record_types.replace("\"","").replace(" ","").split(",") + print(allowed_records) return await render_template( "subdomains/display.html", domain_id=domain.id, domain_domain=domain.domain, domain_desc=domain.description, domain_cost=domain.cost, + domain_allowed_record_types=allowed_records ) diff --git a/lnbits/extensions/subdomains/views_api.py b/lnbits/extensions/subdomains/views_api.py index 5ce556cd..24a0fd51 100644 --- a/lnbits/extensions/subdomains/views_api.py +++ b/lnbits/extensions/subdomains/views_api.py @@ -47,6 +47,7 @@ async def api_domains(): "webhook": {"type": "string", "empty": False, "required": False}, "description": {"type": "string", "min": 0, "required": True}, "cost": {"type": "integer", "min": 0, "required": True}, + "allowed_record_types": {"type": "string", "required": True}, } ) async def api_domain_create(domain_id=None): @@ -104,6 +105,7 @@ async def api_subdomains(): "ip": {"type": "string", "empty": False, "required": True}, "sats": {"type": "integer", "min": 0, "required": True}, "duration": {"type": "integer", "empty": False, "required": True}, + "record_type": {"type": "string", "empty": False, "required": True}, } ) async def api_subdomain_make_subdomain(domain_id):