diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/aws.xml b/.idea/aws.xml new file mode 100644 index 0000000..b63b642 --- /dev/null +++ b/.idea/aws.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..4dce450 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,77 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..66d986f --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..afd1f74 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/sanctuary.iml b/.idea/sanctuary.iml new file mode 100644 index 0000000..8dc09e5 --- /dev/null +++ b/.idea/sanctuary.iml @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/chatroom.py b/chatroom.py index 630d30e..9e4f5b1 100644 --- a/chatroom.py +++ b/chatroom.py @@ -1,7 +1,15 @@ #!/usr/bin/env python -import asyncio, json, websockets, sys, click, time +import asyncio +import json +import sys +import time +import click +import colorama +import websockets + +colorama.init() USERS = set() @@ -32,7 +40,8 @@ async def chatroom(websocket, path): try: async for message in websocket: data = json.loads(message) - print(" > [" + str(time.ctime()) + "] [" + str(data["roomiden"]) + "] User '" + str(data["username"]) + "' sends message '" + str(data["textmesg"]) + "'") + print(" > [" + str(time.ctime()) + "] [" + str(data["roomiden"]) + "] User '" + str( + data["username"]) + "' sends message '" + str(data["textmesg"]) + "'") await notify_mesej(data["username"], data["roomiden"], data["textmesg"]) finally: await unregister(websocket) @@ -40,7 +49,9 @@ async def chatroom(websocket, path): def servenow(netpdata="127.0.0.1", chatport="9696"): try: - print(" > [" + str(time.ctime()) + "] [HOLAUSER] Sanctuary was started up on 'ws://" + str(netpdata) + ":" + str(chatport) + "/'") + print( + " > [" + str(time.ctime()) + "] [HOLAUSER] Sanctuary was started up on 'ws://" + str(netpdata) + ":" + str( + chatport) + "/'") start_server = websockets.serve(chatroom, netpdata, int(chatport)) asyncio.get_event_loop().run_until_complete(start_server) asyncio.get_event_loop().run_forever() @@ -50,21 +61,30 @@ def servenow(netpdata="127.0.0.1", chatport="9696"): @click.command() +@click.option("-i", "--server-ip", "servip", help="Extra IP Address configuration", default=None, required=False) @click.option("-c", "--chatport", "chatport", help="Set the port value for WebSockets [0-65536]", required=True) -@click.option("-6", "--ipprotv6", "netprotc", flag_value="ipprotv6", help="Start the server on an IPv6 address", required=True) -@click.option("-4", "--ipprotv4", "netprotc", flag_value="ipprotv4", help="Start the server on an IPv4 address", required=True) +@click.option("-6", "--ipprotv6", "netprotc", flag_value="ipprotv6", help="Start the server on an IPv6 address", + required=True) +@click.option("-4", "--ipprotv4", "netprotc", flag_value="ipprotv4", help="Start the server on an IPv4 address", + required=True) @click.version_option(version="22072020", prog_name="Sanctuary WebSockets by AstroSonic") -def mainfunc(chatport, netprotc): +def mainfunc(chatport, netprotc, servip): print(" > [" + str(time.ctime()) + "] [HOLAUSER] Starting Sanctuary...") netpdata = "" if netprotc == "ipprotv6": print(" > [" + str(time.ctime()) + "] [HOLAUSER] IP version : 6") - netpdata = "::" + if servip is None: + netpdata = "::" + else: + netpdata = servip elif netprotc == "ipprotv4": print(" > [" + str(time.ctime()) + "] [HOLAUSER] IP version : 4") - netpdata = "0.0.0.0" + if servip is None: + netpdata = "0.0.0.0" + else: + netpdata = servip servenow(netpdata, chatport) if __name__ == "__main__": - mainfunc() \ No newline at end of file + mainfunc() diff --git a/dist/chatroom Linux.zip b/dist/chatroom Linux.zip new file mode 100644 index 0000000..c20ff0f Binary files /dev/null and b/dist/chatroom Linux.zip differ diff --git a/dist/chatroom Windows.zip b/dist/chatroom Windows.zip new file mode 100644 index 0000000..eade2da Binary files /dev/null and b/dist/chatroom Windows.zip differ diff --git a/dist/servchat Linux.zip b/dist/servchat Linux.zip new file mode 100644 index 0000000..8ef992d Binary files /dev/null and b/dist/servchat Linux.zip differ diff --git a/dist/servchat Windows.zip b/dist/servchat Windows.zip new file mode 100644 index 0000000..f4703d5 Binary files /dev/null and b/dist/servchat Windows.zip differ diff --git a/requirements.txt b/requirements.txt index 97d19f8..e027747 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,3 +6,4 @@ MarkupSafe==1.1.1 six==1.15.0 websockets==8.1 Werkzeug==1.0.1 +colorama==0.4.3 \ No newline at end of file diff --git a/servchat.py b/servchat.py index d21199a..de74067 100644 --- a/servchat.py +++ b/servchat.py @@ -1,6 +1,8 @@ -from flask import Flask, render_template import click +import colorama +from flask import Flask, render_template +colorama.init() servchat = Flask(__name__) @@ -17,10 +19,13 @@ def chrumnow(netpdata, servport): @click.command() @click.option("-s", "--servport", "servport", help="Set the port value for Chatroom [0-65536]", required=True) @click.option("-c", "--chatport", "chatport", help="Set the port value for WebSockets [0-65536]", required=True) -@click.option("-6", "--ipprotv6", "netprotc", flag_value="ipprotv6", help="Start the server on an IPv6 address", required=True) -@click.option("-4", "--ipprotv4", "netprotc", flag_value="ipprotv4", help="Start the server on an IPv4 address", required=True) +@click.option("-6", "--ipprotv6", "netprotc", flag_value="ipprotv6", help="Start the server on an IPv6 address", + required=True) +@click.option("-4", "--ipprotv4", "netprotc", flag_value="ipprotv4", help="Start the server on an IPv4 address", + required=True) +@click.option("-i", "--server-ip", "servip", help="Extra IP Address configuration", default=None, required=False) @click.version_option(version="22072020", prog_name="Sanctuary Chatroom by AstroSonic") -def mainfunc(servport, chatport, netprotc): +def mainfunc(servport, chatport, netprotc, servip): global chatp0rt chatp0rt = chatport print(" * Starting Sanctuary...") @@ -32,10 +37,16 @@ def mainfunc(servport, chatport, netprotc): netpdata = "" if netprotc == "ipprotv6": print(" * IP version : 6") - netpdata = "::" + if servip is None: + netpdata = "::" + else: + netpdata = servip elif netprotc == "ipprotv4": print(" * IP version : 4") - netpdata = "0.0.0.0" + if servip is None: + netpdata = "0.0.0.0" + else: + netpdata = servip chrumnow(netpdata, servport)