init
This commit is contained in:
		
							
								
								
									
										8
									
								
								config.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								config.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | { | ||||||
|  |     "deek_user": "YOUR_USERNAME_HERE", | ||||||
|  |     "deek_passwd": "YOUR_PASSWORD_HERE", | ||||||
|  |     "irc_serb": "irc.rizon.net", | ||||||
|  |     "irc_port": 7000, | ||||||
|  |     "irc_nick": "birdbridge", | ||||||
|  |     "irc_chan": "#birdchat" | ||||||
|  | } | ||||||
							
								
								
									
										1
									
								
								ircked
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								ircked
									
									
									
									
									
										Submodule
									
								
							 Submodule ircked added at 8882553144
									
								
							
							
								
								
									
										77
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | |||||||
|  | import requests, websockets, asyncio, json, re, threading, time | ||||||
|  | from ircked.bot import irc_bot | ||||||
|  | from ircked.message import * | ||||||
|  |  | ||||||
|  | class bird_inst(): | ||||||
|  |     def __init__(self, endpoint, httpendpoint, config): | ||||||
|  |         self.endpoint = endpoint | ||||||
|  |         self.httpendpoint = httpendpoint | ||||||
|  |         self.config = config | ||||||
|  |         self.ws = None | ||||||
|  |         self.headers = None | ||||||
|  |         self.irc = irc_bot(nick=self.config["irc_nick"]) | ||||||
|  |         self.irc.connect_register(self.config["irc_serb"], self.config["irc_port"]) | ||||||
|  |  | ||||||
|  |         def irc_handler(msg, ctx): | ||||||
|  |             #print("<><><><>", str(msg)) | ||||||
|  |             if msg.command == "PING": | ||||||
|  |                 message.manual("", "PONG", msg.parameters).send(ctx.socket) | ||||||
|  |             elif msg.command == "001": | ||||||
|  |                 message.manual("", "JOIN", [self.config["irc_chan"]]).send(ctx.socket) | ||||||
|  |             elif msg.command == "PRIVMSG" and "\x01VERSION\x01" in msg.parameters: | ||||||
|  |                 message.manual(":"+msg.parameters[0], "PRIVMSG", [msg.prefix[1:].split("!")[0], ":\x01dorfl bot\x01"]).send(ctx.socket) | ||||||
|  |             if msg.command == "PRIVMSG" and ("py-ctcp" not in msg.prefix): | ||||||
|  |                 pm = privmsg.parse(msg) | ||||||
|  |                 self.send_post(pm.fr+": "+pm.bod) | ||||||
|  |         threading.Thread(target=self.irc.run, kwargs={"event_handler": irc_handler}, daemon=True).start() | ||||||
|  |     def auth(self, name, passwd): | ||||||
|  |         h = { | ||||||
|  |             "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0", | ||||||
|  |             "Origin": "https://deekchat.ml",  | ||||||
|  |             "DNT": "1", | ||||||
|  |         } | ||||||
|  |         res = requests.post(self.httpendpoint+"/login/submit", headers=h, data={"name": name, "password": passwd, "submit": "log+in"}, allow_redirects=False) | ||||||
|  |         token = re.search("(?:api_token)=[^;]+", res.headers.get("Set-Cookie")).group(0) | ||||||
|  |         sessid = re.search("(?:session_id)=[^;]+", res.headers.get("Set-Cookie")).group(0) | ||||||
|  |         h["Cookie"] = token+"; "+sessid | ||||||
|  |         self.headers = h | ||||||
|  |     async def run(self): | ||||||
|  |         print("running main loop") | ||||||
|  |         async with websockets.connect(self.endpoint, extra_headers=self.headers) as self.ws: | ||||||
|  |             print(self.ws) | ||||||
|  |             while True: | ||||||
|  |                 data = json.loads(await self.ws.recv()) | ||||||
|  |                 print(">>>", data) | ||||||
|  |                 try: getattr(self, "handle_"+data["type"], None)(data) | ||||||
|  |                 except Exception as e: print("hey buddy your shits fucked thought you might want to know", e) | ||||||
|  |     def handle_message(self, ctx): | ||||||
|  |         print("btw i just got this", ctx["data"]["message"]) | ||||||
|  |         self.irc.sendraw(privmsg.build(self.config["irc_nick"], self.config["irc_chan"], ctx["name"]+": "+ctx["data"]["message"]).msg) | ||||||
|  |     def handle_avatar(self, ctx): pass | ||||||
|  |     def handle_files(self, ctx): | ||||||
|  |         self.irc.sendraw(privmsg.build(self.config["irc_nick"], self.config["irc_chan"], ctx["name"]+": "+ctx["data"]["message"]).msg) | ||||||
|  |         for f in ctx["data"]["files"]: | ||||||
|  |             self.irc.sendraw(privmsg.build(self.config["irc_nick"], self.config["irc_chan"], f"({ctx['name']} uploaded file: {self.httpendpoint}/{f['name']}").msg) | ||||||
|  |     def handle_exit(self, ctx): pass | ||||||
|  |     def handle_enter(self, ctx): pass | ||||||
|  |     def handle_userLoaded(self, ctx): pass | ||||||
|  |     def send_post(self, msg): | ||||||
|  |         if self.ws is None: return | ||||||
|  |         print(msg) | ||||||
|  |         #loop = asyncio.new_event_loop() | ||||||
|  |         #asyncio.set_event_loop(loop) | ||||||
|  |         #loop.create_task(self.send_post(pm.bod)) | ||||||
|  |         #loop.run_forever() | ||||||
|  |         #pass#await self.ws.send(json.dumps({"type": "message", "message": msg})) | ||||||
|  |  | ||||||
|  | cfg = json.loads(open("config.json", "r").read()) | ||||||
|  | bi = bird_inst("wss://deekchat.ml/ws", "https://deekchat.ml", cfg) | ||||||
|  | print("yes hello birdchat here") | ||||||
|  | bi.auth(cfg["deek_user"], cfg["deek_passwd"]) | ||||||
|  | while True: | ||||||
|  |     try: asyncio.run(bi.run()) | ||||||
|  |     except KeyboardInterrupt: | ||||||
|  |         break | ||||||
|  |     except Exception as e: | ||||||
|  |         print(e) | ||||||
|  |         continue | ||||||
							
								
								
									
										1
									
								
								readme.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								readme.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | deekchat<->IRC bridge | ||||||
		Reference in New Issue
	
	Block a user
	 cynic
					cynic