Adding gandi client and bbox modem client
This commit is contained in:
33
services/fast5330br1.py
Normal file
33
services/fast5330br1.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import requests
|
||||
|
||||
from requests.adapters import HTTPAdapter
|
||||
from requests.packages.urllib3.util.ssl_ import create_urllib3_context
|
||||
|
||||
|
||||
class SecLevel1Adapter(HTTPAdapter):
|
||||
def init_poolmanager(self, *args, **kwargs):
|
||||
context = create_urllib3_context(ciphers='DEFAULT@SECLEVEL=1')
|
||||
kwargs['ssl_context'] = context
|
||||
return super(SecLevel1Adapter, self).init_poolmanager(*args, **kwargs)
|
||||
|
||||
def proxy_manager_for(self, *args, **kwargs):
|
||||
context = create_urllib3_context(ciphers='DEFAULT@SECLEVEL=1')
|
||||
kwargs['ssl_context'] = context
|
||||
return super(SecLevel1Adapter, self).proxy_manager_for(*args, **kwargs)
|
||||
|
||||
|
||||
class Fast5330bR1:
|
||||
def __init__(self, address):
|
||||
self.address = address
|
||||
|
||||
def check_internet_status(self):
|
||||
with requests.Session() as session:
|
||||
session.mount(f"https://{self.address}", SecLevel1Adapter())
|
||||
r = session.get(
|
||||
f"https://{self.address}/api/v1/summary",
|
||||
proxies={"https": "socks5h://localhost:1337"}
|
||||
)
|
||||
|
||||
result = r.json()
|
||||
|
||||
return result[0]['internet']['state'] == 2
|
||||
34
services/gandi.py
Normal file
34
services/gandi.py
Normal file
@@ -0,0 +1,34 @@
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class GandiClient:
|
||||
base_url = "https://api.gandi.net/v5/livedns/domains"
|
||||
|
||||
def __init__(self, domain, api_key, record_name, record_type):
|
||||
self.domain = domain
|
||||
self.api_key = api_key
|
||||
self.record_name = record_name
|
||||
self.record_type = record_type
|
||||
|
||||
def _get_headers(self):
|
||||
return {
|
||||
'Authorization': f'Bearer {self.api_key}',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
|
||||
def _get_url(self):
|
||||
return f"{self.base_url}/{self.domain}/records/{self.record_name}/{self.record_type}"
|
||||
|
||||
def get_host(self):
|
||||
response = requests.request("PUT", self._get_url(), headers=self._get_headers())
|
||||
|
||||
return response.json()['rrset_values'][0]
|
||||
|
||||
def set_host(self, host, tls=3600):
|
||||
payload = json.dumps({
|
||||
"rrset_ttl": tls,
|
||||
"rrset_values": [host]
|
||||
})
|
||||
|
||||
requests.request("PUT", self._get_url(), headers=self._get_headers(), data=payload)
|
||||
Reference in New Issue
Block a user