Compare commits
No commits in common. "2595503dc0dabe15dd97cbb78b99e0b94e87f3b0" and "d516e915922e706bb61b200c7494c22233e1d28b" have entirely different histories.
2595503dc0
...
d516e91592
23
account.py
23
account.py
@ -15,9 +15,6 @@ ip = os.getenv("hsd_ip")
|
|||||||
if ip is None:
|
if ip is None:
|
||||||
ip = "localhost"
|
ip = "localhost"
|
||||||
|
|
||||||
show_expired = os.getenv("show_expired")
|
|
||||||
if show_expired is None:
|
|
||||||
show_expired = False
|
|
||||||
|
|
||||||
hsd = api.hsd(APIKEY,ip)
|
hsd = api.hsd(APIKEY,ip)
|
||||||
hsw = api.hsw(APIKEY,ip)
|
hsw = api.hsw(APIKEY,ip)
|
||||||
@ -182,21 +179,7 @@ def getDomains(account,own=True):
|
|||||||
else:
|
else:
|
||||||
response = requests.get(f"http://x:{APIKEY}@{ip}:12039/wallet/{account}/name")
|
response = requests.get(f"http://x:{APIKEY}@{ip}:12039/wallet/{account}/name")
|
||||||
info = response.json()
|
info = response.json()
|
||||||
|
return info
|
||||||
if show_expired:
|
|
||||||
return info
|
|
||||||
|
|
||||||
# Remove any expired domains
|
|
||||||
domains = []
|
|
||||||
for domain in info:
|
|
||||||
if 'stats' in domain:
|
|
||||||
if 'daysUntilExpire' in domain['stats']:
|
|
||||||
if domain['stats']['daysUntilExpire'] < 0:
|
|
||||||
continue
|
|
||||||
domains.append(domain)
|
|
||||||
|
|
||||||
|
|
||||||
return domains
|
|
||||||
|
|
||||||
def getTransactions(account):
|
def getTransactions(account):
|
||||||
# Get the transactions
|
# Get the transactions
|
||||||
@ -256,6 +239,10 @@ def check_hip2(domain: str):
|
|||||||
def send(account,address,amount):
|
def send(account,address,amount):
|
||||||
account_name = check_account(account)
|
account_name = check_account(account)
|
||||||
password = ":".join(account.split(":")[1:])
|
password = ":".join(account.split(":")[1:])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
response = hsw.rpc_selectWallet(account_name)
|
response = hsw.rpc_selectWallet(account_name)
|
||||||
if response['error'] is not None:
|
if response['error'] is not None:
|
||||||
return {
|
return {
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
hsd_api=123480615465636893475aCwyaae6s45
|
hsd_api=123480615465636893475aCwyaae6s45
|
||||||
hsd_ip=localhost
|
hsd_ip=localhost
|
||||||
theme=black
|
theme=black
|
||||||
show_expired=false
|
|
@ -1,97 +0,0 @@
|
|||||||
import json
|
|
||||||
import account
|
|
||||||
import requests
|
|
||||||
import os
|
|
||||||
|
|
||||||
# Plugin Data
|
|
||||||
info = {
|
|
||||||
"name": "Batch Renew Domains",
|
|
||||||
"description": "Renew the next 100 domains",
|
|
||||||
"version": "1.0",
|
|
||||||
"author": "Nathan.Woodburn/"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Functions
|
|
||||||
functions = {
|
|
||||||
"main":{
|
|
||||||
"name": "Renew",
|
|
||||||
"type": "default",
|
|
||||||
"description": "Renew the next 100 domains in one transaction. Please wait for at least 1 block confirmation before renewing the next 100 domains",
|
|
||||||
"params": {},
|
|
||||||
"returns": {
|
|
||||||
"status":
|
|
||||||
{
|
|
||||||
"name": "Status of the function",
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
"transaction":
|
|
||||||
{
|
|
||||||
"name": "Transaction ID",
|
|
||||||
"type": "tx"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def main(params, authentication):
|
|
||||||
password = authentication.split(":")[1]
|
|
||||||
wallet = authentication.split(":")[0]
|
|
||||||
domains = account.getDomains(wallet)
|
|
||||||
domains = sorted(domains, key=lambda k: k['renewal'])
|
|
||||||
|
|
||||||
names = []
|
|
||||||
for domain in domains:
|
|
||||||
name = domain["name"]
|
|
||||||
names.append(name)
|
|
||||||
|
|
||||||
# Split names into batches of 100
|
|
||||||
batches = []
|
|
||||||
for i in range(0, len(names), 100):
|
|
||||||
batches.append(names[i:i+100])
|
|
||||||
|
|
||||||
# Unlock wallet
|
|
||||||
api_key = os.getenv("hsd_api")
|
|
||||||
if api_key is None:
|
|
||||||
print("API key not set")
|
|
||||||
return {"status": "API key not set", "transaction": "None"}
|
|
||||||
response = requests.post(f'http://x:{api_key}@127.0.0.1:12039/wallet/{wallet}/unlock',
|
|
||||||
json={'passphrase': password, 'timeout': 600})
|
|
||||||
if response.status_code != 200:
|
|
||||||
print("Failed to unlock wallet")
|
|
||||||
print(f'Status code: {response.status_code}')
|
|
||||||
print(f'Response: {response.text}')
|
|
||||||
return {"status": "Failed unlocking wallet", "transaction": "None"}
|
|
||||||
|
|
||||||
|
|
||||||
tx = "None"
|
|
||||||
for batch in batches:
|
|
||||||
batch = []
|
|
||||||
|
|
||||||
for domain in names:
|
|
||||||
batch.append(f'["RENEW", "{domain}"]')
|
|
||||||
|
|
||||||
|
|
||||||
batchTX = "[" + ", ".join(batch) + "]"
|
|
||||||
responseContent = f'{{"method": "sendbatch","params":[ {batchTX} ]}}'
|
|
||||||
response = requests.post(f'http://x:{api_key}@127.0.0.1:12039', data=responseContent)
|
|
||||||
if response.status_code != 200:
|
|
||||||
print("Failed to create batch")
|
|
||||||
print(f'Status code: {response.status_code}')
|
|
||||||
print(f'Response: {response.text}')
|
|
||||||
return {"status": "Failed", "transaction": "None"}
|
|
||||||
|
|
||||||
batch = response.json()
|
|
||||||
# Verify the batch
|
|
||||||
print("Verifying tx...")
|
|
||||||
if batch["error"]:
|
|
||||||
if batch["error"] != "":
|
|
||||||
print("Failed to verify batch")
|
|
||||||
print(batch["error"]["message"])
|
|
||||||
return {"status": "Failed", "transaction": "None"}
|
|
||||||
|
|
||||||
if 'result' in batch:
|
|
||||||
if batch['result'] != None:
|
|
||||||
tx = batch['result']['hash']
|
|
||||||
return {"status": "Success", "transaction": tx}
|
|
||||||
# Note only one batch can be sent at a time
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user