From e30aceb0a98e510bf6bb45cac71f6f2456dafb3c Mon Sep 17 00:00:00 2001 From: Nathan Woodburn <github@nathan.woodburn.au> Date: Fri, 7 Mar 2025 14:11:03 +1100 Subject: [PATCH] feat: Add varo login --- example.py | 175 ---------------------------------------------------- hnslinks.py | 86 ++++++++++++++++++++++++++ template.py | 32 ---------- 3 files changed, 86 insertions(+), 207 deletions(-) delete mode 100644 example.py create mode 100644 hnslinks.py delete mode 100644 template.py diff --git a/example.py b/example.py deleted file mode 100644 index bcf5cfa..0000000 --- a/example.py +++ /dev/null @@ -1,175 +0,0 @@ -import json -import account -import requests - - -# Plugin Data -info = { - "name": "Example Plugin", - "description": "This is a plugin to be used as an example", - "version": "1.0", - "author": "Nathan.Woodburn/" -} - - -# Functions -functions = { - "search":{ - "name": "Search Owned", - "type": "default", - "description": "Search for owned domains containing a string", - "params": { - "search": { - "name":"Search string", - "type":"text" - } - }, - "returns": { - "domains": - { - "name": "List of owned domains", - "type": "list" - } - } - }, - "transfer":{ - "name": "Bulk Transfer Domains", - "type": "default", - "description": "Transfer domains to another wallet", - "params": { - "address": { - "name":"Address to transfer to", - "type":"address" - }, - "domains": { - "name":"List of domains to transfer", - "type":"longText" - } - }, - "returns": { - "hash": { - "name": "Hash of the transaction", - "type": "tx" - }, - "address":{ - "name": "Address of the new owner", - "type": "text" - } - } - }, - "dns":{ - "name": "Set DNS for Domains", - "type": "default", - "description": "Set DNS for domains", - "params": { - "domains": { - "name":"List of domains to set DNS for", - "type":"longText" - }, - "dns": { - "name":"DNS", - "type":"dns" - } - }, - "returns": { - "hash": { - "name": "Hash of the transaction", - "type": "tx" - }, - "dns":{ - "name": "DNS", - "type": "dns" - } - } - }, - "niami": { - "name": "Niami info", - "type": "domain", - "description": "Check the domains niami rating", - "params": {}, - "returns": { - "rating": - { - "name": "Niami Rating", - "type": "text" - } - } - }, - "niamiSearch": { - "name": "Niami info", - "type": "search", - "description": "Check the domains niami rating", - "params": {}, - "returns": { - "rating": - { - "name": "Niami Rating", - "type": "text" - } - } - }, - "connections":{ - "name": "HSD Connections", - "type": "dashboard", - "description": "Show the number of connections the HSD node is connected to", - "params": {}, - "returns": { - "connections": - { - "name": "HSD Connections", - "type": "text" - } - } - } -} - -def check(params, authentication): - domains = params["domains"] - domains = domains.splitlines() - - wallet = authentication.split(":")[0] - owned = account.getDomains(wallet) - # Only keep owned domains ["name"] - ownedNames = [domain["name"] for domain in owned] - - domains = [domain for domain in domains if domain in ownedNames] - - - return {"domains": domains} - -def search(params, authentication): - search = params["search"].lower() - wallet = authentication.split(":")[0] - owned = account.getDomains(wallet) - # Only keep owned domains ["name"] - ownedNames = [domain["name"] for domain in owned] - - domains = [domain for domain in ownedNames if search in domain] - - return {"domains": domains} - - -def transfer(params, authentication): - address = params["address"] - return {"hash":"f921ffe1bb01884bf515a8079073ee9381cb93a56b486694eda2cce0719f27c0","address":address} - -def dns(params,authentication): - dns = params["dns"] - return {"hash":"f921ffe1bb01884bf515a8079073ee9381cb93a56b486694eda2cce0719f27c0","dns":dns} - -def niami(params, authentication): - domain = params["domain"] - response = requests.get(f"https://api.handshake.niami.io/domain/{domain}") - data = response.json()["data"] - if 'rating' not in data: - return {"rating":"No rating found."} - rating = str(data["rating"]["score"]) + " (" + data["rating"]["rarity"] + ")" - return {"rating":rating} - -def niamiSearch(params, authentication): - return niami(params, authentication) - - -def connections(params,authentication): - outbound = account.hsd.getInfo()['pool']['outbound'] - return {"connections": outbound} \ No newline at end of file diff --git a/hnslinks.py b/hnslinks.py new file mode 100644 index 0000000..1898a23 --- /dev/null +++ b/hnslinks.py @@ -0,0 +1,86 @@ +import json +import account +import requests + + +# Plugin Data +info = { + "name": "HNS Links", + "description": "This is a plugin to quickly setup a HNS Links site", + "version": "1.0", + "author": "Nathan.Woodburn/" +} + + +# Functions +functions = { + "login":{ + "name": "Login to Varo Instance", + "type": "default", + "description": "You need to connect to a varo instance to setup the dns for domains", + "params": { + "instance": { + "name":"Varo Instance", + "type":"text" + }, + "key": { + "name":"API Key", + "type":"text" + } + }, + "returns": { + "status": + { + "name": "Status", + "type": "text" + } + } + }, + "dns":{ + "name": "Set Onchain DNS for Domains", + "type": "default", + "description": "Set onchain DNS for domains before HNS Links can work", + "params": { + "domain": { + "name":"Domain", + "type":"text" + } + }, + "returns": { + "hash": { + "name": "Hash of the transaction", + "type": "tx" + } + } + } +} + +def login(params, authentication): + instance = params["instance"] + key = params["key"] + + # Test Connection + if instance == "": + return {"status":"Please enter a valid instance"} + instance = instance.replace("https://","") + instance = instance.replace("http://","") + if instance[-1] == "/": + instance = instance[:-1] + + try: + # Authorization: Bearer <API Key> + response = requests.post("https://" + instance + "/api", json={"action":"getInfo"}, headers={"Authorization": "Bearer " + key}) + if response.status_code != 200: + return {"status":"Error connecting to instance"} + except: + return {"status":"Error connecting to instance"} + + with open("user_data/hnslinks.json", "w") as f: + json.dump({"instance":instance,"key":key},f) + return {"status":"Connected to " + instance} + + + +def dns(params,authentication): + dns = params["dns"] + return {"hash":"f921ffe1bb01884bf515a8079073ee9381cb93a56b486694eda2cce0719f27c0"} \ No newline at end of file diff --git a/template.py b/template.py deleted file mode 100644 index 53ed5e1..0000000 --- a/template.py +++ /dev/null @@ -1,32 +0,0 @@ -import json -import account -import requests - -# Plugin Data -info = { - "name": "Plugin Template", - "description": "Plugin Description", - "version": "1.0", - "author": "Nathan.Woodburn/" -} - -# Functions -functions = { - "main":{ - "name": "Function name", - "type": "default", - "description": "Description", - "params": {}, - "returns": { - "status": - { - "name": "Status of the function", - "type": "text" - } - } - } -} - -def main(params, authentication): - return {"status": "Success"} - \ No newline at end of file