This commit is contained in:
parent
092e328db0
commit
2bd4989fd2
1 changed files with 38 additions and 9 deletions
|
@ -1,15 +1,44 @@
|
||||||
import requests, os
|
import os
|
||||||
|
from cloudflare import Cloudflare
|
||||||
__ircat_type__ = "sql.provider" # The type of module
|
__ircat_type__ = "sql.provider" # The type of module
|
||||||
__ircat_requires__ = ["cf_accountid", "cf_apitoken", "cf_d1database"] # The required config.yml entries.
|
__ircat_requires__ = ["cf_accountid", "cf_apitoken", "cf_d1database"] # The required config.yml entries.
|
||||||
class broker:
|
class broker:
|
||||||
def __init__(self, cf_accountid:str, cf_apitoken:str, cf_d1database:str):
|
def __init__(self, cf_accountid:str, cf_apitoken:str, cf_d1database:str):
|
||||||
self.account_id = cf_accountid
|
self.account_id = cf_accountid
|
||||||
self.api_token = cf_apitoken
|
self.api_token = cf_apitoken
|
||||||
self.base_url = f"https://api.cloudflare.com/client/v4/accounts/{self.account_id}/d1/database"
|
self.database = cf_d1database
|
||||||
self.headers = {
|
self.client = Cloudflare(api_token=cf_apitoken)
|
||||||
"Content-Type": "application/json",
|
self.client.d1.database.query(
|
||||||
"Authorization": f"Bearer {self.api_token}"
|
database_id=self.database,
|
||||||
}
|
account_id=self.account_id,
|
||||||
requests.post(self.base_url, headers=self.headers, json={"sql": "CREATE table IF NOT EXISTS bans (ip varchar(255), reason varchar(255)); CREATE table IF NOT EXISTS nickserv (user varchar(255), modes varchar(255), hash varchar(255), email varchar(255)); CREATE table IF NOT EXISTS groups (name varchar(255), owner varchar(255)); CREATE table IF NOT EXISTS chanserv (name varchar(255), modes varchar(255), params varchar(255), owner varchar(255), usermodes varchar(255), optimodes varchar(255))"})
|
sql="CREATE table IF NOT EXISTS bans (ip varchar(255), reason varchar(255)); CREATE table IF NOT EXISTS nickserv (user varchar(255), modes varchar(255), hash varchar(255), email varchar(255)); CREATE table IF NOT EXISTS groups (name varchar(255), owner varchar(255)); CREATE table IF NOT EXISTS chanserv (name varchar(255), modes varchar(255), params varchar(255), owner varchar(255), usermodes varchar(255), optimodes varchar(255))",
|
||||||
def cf_insert(self, command:str, params:list):
|
)
|
||||||
rq = requests.post(self.base_url, headers=self.headers, json={"sql": command, "params": params})
|
def cfexec(self, command:str, params:list):
|
||||||
|
query = self.client.d1.database.query(
|
||||||
|
database_id=self.database,
|
||||||
|
account_id=self.account_id,
|
||||||
|
sql=command,
|
||||||
|
params=params
|
||||||
|
)
|
||||||
|
return query[0].results
|
||||||
|
def parse2sqlite(self, results):
|
||||||
|
temp = []
|
||||||
|
for k, v in results:
|
||||||
|
temp.append(v)
|
||||||
|
return temp
|
||||||
|
def nickserv_identify(self, nick, password:str):
|
||||||
|
e = self.cfexec("SELECT * FROM nickserv WHERE user=?;", [nick])
|
||||||
|
if len(e) == 0:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
return self.parse2sqlite(e[0]) if self.fnet.decrypt(bytes(e[0]["hash"], "UTF-8")).decode() == password else False
|
||||||
|
except:
|
||||||
|
print(traceback.format_exc())
|
||||||
|
return False
|
||||||
|
def nickserv_register(self, nick, password, email):
|
||||||
|
hashed = self.fnet.encrypt(bytes(password, "UTF-8")).decode()
|
||||||
|
e = self.cfexec("INSERT INTO nickserv values(?, 'iw', ?, ?);", [nick, hashed, email])
|
||||||
|
def nickserv_isexist(self, nick):
|
||||||
|
e = self.cfexec("SELECT * FROM nickserv WHERE user=?;", [nick])
|
||||||
|
return len(e) != 0
|
Loading…
Add table
Reference in a new issue