feat: Add varo login

This commit is contained in:
Nathan Woodburn 2025-03-07 14:11:03 +11:00
parent 8e71389997
commit e30aceb0a9
Signed by: nathanwoodburn
GPG Key ID: 203B000478AD0EF1
3 changed files with 86 additions and 207 deletions

View File

@ -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}

86
hnslinks.py Normal file
View File

@ -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"}

View File

@ -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"}