-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconnload.py
109 lines (87 loc) · 3.47 KB
/
connload.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import guspirc.main as pirc
import cson
import sys
import threading
import traceback
import commands
import importlib
def load_from_config(connector, filename):
for c in data["servers"]:
threading.Thread(target=connector.add_connection_socket, args=(
c["server"],
c["port"],
c.get("ident", "GusPIRC2"),
c.get("realname", "Happy for being ran in GusPIRC 2. C:"),
c["nickname"],
c.get("password", ""),
c.get("email", ""),
c.get("account_name", ""),
c.get("has_account", True),
c.get("channels", []),
c.get("motd_end_numeric", 376),
c.get("use_ssl", False),
c.get("master", "None!None@None"),
c.get("masterperm", data.get("global_info", {}).get("master_perm", 250)),
c.get("quit_message", "https://github.com/Gustavo6046/GusPIRC-2 for more info."),
)).start()
return connector
def get_from_config(filename):
data = cson.load(open(filename))
connector = pirc.IRCConnector(data.get("global_info", {}).get("master_name", "__DefaultMaster__"), data.get("global_info", {}).get("command_prefix", "|;"))
for c in data["servers"]:
threading.Thread(target=connector.add_connection_socket, args=(
c["server"],
c["port"],
c.get("ident", "GusPIRC2"),
c.get("realname", "Happy for being ran in GusPIRC 2. C:"),
c["nickname"],
c.get("password", ""),
c.get("email", ""),
c.get("account_name", ""),
c.get("has_account", True),
c.get("channels", []),
c.get("motd_end_numeric", 376),
c.get("use_ssl", False),
c.get("master", "None!None@None"),
c.get("masterperm", data.get("global_info", {}).get("master_perm", 250)),
c.get("quit_message", "https://github.com/Gustavo6046/GusPIRC-2 for more info."),
)).start()
return connector
if __name__ == "__main__":
if len(sys.argv) < 2:
data = cson.load(open("connections.cson"))
else:
data = cson.load(open(" ".join(sys.argv[1:])))
c = pirc.IRCConnector(data.get("global_info", {}).get("master_name", "__DefaultMaster__"), data.get("global_info", {}).get("command_prefix", "|;"))
# Commands
try:
print "Loading commands..."
commands.define_commands(c)
print "Commands finished loading!"
except BaseException as err:
del c
raise
# Connect!
if len(sys.argv) < 2:
load_from_config(c, "connections.cson")
else:
load_from_config(c, " ".join(sys.argv[1:]))
@c.no_perm_handler()
def no_permission(connection, message, needed, func):
if (not hasattr(func, "cmd_name")) or re.match(func.full_regex, message.raw):
host = "{}!{}@{}".format(*message.message_data[:3])
connection.send_command("PRIVMSG {} :{}: No permission to execute that command ('{}'; You need {}, but you have {})!".format(message.message_data[3], message.message_data[0], message.message_data[-1], needed, connection.get_perm(host)))
def reload_commands(c):
try:
global commands
commands = reload(commands)
except BaseException as err:
return err
else:
try:
commands.define_commands(c)
except BaseException as err:
return err
c.clear_all_receivers()
commands.define_commands(c)
return None