From 2bd4989fd2b8566e61e89e37d9cdaaad4e6c02d1 Mon Sep 17 00:00:00 2001 From: swee Date: Sat, 25 Jan 2025 18:39:41 -0800 Subject: [PATCH] Update modules/cfd1.py --- modules/cfd1.py | 47 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/modules/cfd1.py b/modules/cfd1.py index 5d628cd..9117658 100644 --- a/modules/cfd1.py +++ b/modules/cfd1.py @@ -1,15 +1,44 @@ -import requests, os +import os +from cloudflare import Cloudflare __ircat_type__ = "sql.provider" # The type of module __ircat_requires__ = ["cf_accountid", "cf_apitoken", "cf_d1database"] # The required config.yml entries. class broker: def __init__(self, cf_accountid:str, cf_apitoken:str, cf_d1database:str): self.account_id = cf_accountid self.api_token = cf_apitoken - self.base_url = f"https://api.cloudflare.com/client/v4/accounts/{self.account_id}/d1/database" - self.headers = { - "Content-Type": "application/json", - "Authorization": f"Bearer {self.api_token}" - } - 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))"}) - def cf_insert(self, command:str, params:list): - rq = requests.post(self.base_url, headers=self.headers, json={"sql": command, "params": params}) \ No newline at end of file + self.database = cf_d1database + self.client = Cloudflare(api_token=cf_apitoken) + self.client.d1.database.query( + database_id=self.database, + account_id=self.account_id, + 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 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 \ No newline at end of file