| author | Tero Marttila <terom@paivola.fi> |
| Tue, 19 Feb 2013 19:27:51 +0200 | |
| changeset 220 | e533260bcefd |
| parent 110 | af87b706e4a3 |
| permissions | -rw-r--r-- |
|
92
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
1 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
2 |
Twisted application |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
3 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
4 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
5 |
import sys |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
6 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
7 |
from twisted.application import internet, service |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
8 |
from twisted.internet import reactor, endpoints, defer |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
9 |
from twisted.python import usage, log |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
10 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
11 |
import urlparse |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
12 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
13 |
import pvl.irker.irk |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
14 |
import pvl.irker.irc |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
15 |
|
|
110
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
16 |
def myusername (): |
|
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
17 |
""" |
|
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
18 |
Return username current process is running under. |
|
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
19 |
""" |
|
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
20 |
|
|
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
21 |
import os, pwd |
|
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
22 |
|
|
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
23 |
return pwd.getpwuid(os.getuid()).pw_name |
|
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
24 |
|
|
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
25 |
|
|
92
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
26 |
class Options (usage.Options) : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
27 |
optParameters = [ |
|
110
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
28 |
[ 'irc-nickname', 'n', pvl.irker.irc.IRCFactory.NICKNAME, "Default IRC nickname" ], |
|
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
29 |
[ 'irc-username', 'u', myusername(), "IRC username (default: system user)" ], |
|
92
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
30 |
] |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
31 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
32 |
def __init__ (self) : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
33 |
usage.Options.__init__(self) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
34 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
35 |
self.listen_tcp = [] |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
36 |
self.connect = [] |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
37 |
self.target = [] |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
38 |
self.privmsg = [] |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
39 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
40 |
def opt_listen_tcp (self, listen) : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
41 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
42 |
Twisted endpoint. |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
43 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
44 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
45 |
if ':' in listen : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
46 |
host, port = listen.split(':')
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
47 |
else : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
48 |
host, port = '', listen |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
49 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
50 |
port = int(port) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
51 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
52 |
self.listen_tcp.append((host, port)) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
53 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
54 |
def opt_connect (self, connect) : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
55 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
56 |
Connect to given target. |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
57 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
58 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
59 |
self.connect.append(urlparse.urlparse(connect)) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
60 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
61 |
def opt_target (self, target) : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
62 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
63 |
Join given target. |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
64 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
65 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
66 |
self.target.append(urlparse.urlparse(target)) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
67 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
68 |
def opt_privmsg (self, privmsg) : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
69 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
70 |
Send message to targets |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
71 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
72 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
73 |
self.privmsg.append(privmsg) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
74 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
75 |
@defer.inlineCallbacks |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
76 |
def connect (irc, connect) : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
77 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
78 |
Connect to given urls. |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
79 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
80 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
81 |
try : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
82 |
clients = yield defer.gatherResults([irc.client(url) for url in connect]) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
83 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
84 |
except Exception as ex : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
85 |
log.err(ex) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
86 |
return |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
87 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
88 |
for client in clients : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
89 |
log.msg('--connect', client)
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
90 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
91 |
@defer.inlineCallbacks |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
92 |
def target (irc, target, privmsg) : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
93 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
94 |
Connect to given urls. |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
95 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
96 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
97 |
try : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
98 |
targets = yield defer.gatherResults([irc.target(url) for url in target]) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
99 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
100 |
except Exception as ex : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
101 |
log.err(ex) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
102 |
return |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
103 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
104 |
for target in targets : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
105 |
log.msg('--target', target)
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
106 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
107 |
target.privmsg(*privmsg) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
108 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
109 |
def makeService (options) : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
110 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
111 |
Return a Service for running irk -> irc. |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
112 |
""" |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
113 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
114 |
s = service.MultiService() |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
115 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
116 |
# IRC |
|
110
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
117 |
irc = pvl.irker.irc.IRCFactory(options['irc-nickname'], options['irc-username']) |
|
92
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
118 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
119 |
connect(irc, options.connect) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
120 |
target(irc, options.target, options.privmsg) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
121 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
122 |
# IRK |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
123 |
irk = pvl.irker.irk.IrkFactory(irc) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
124 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
125 |
for host, port in options.listen_tcp : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
126 |
ss = internet.TCPServer(port, irk, interface=host) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
127 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
128 |
log.msg("--listen", port)
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
129 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
130 |
ss.setServiceParent(s) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
131 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
132 |
# return the service collection |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
133 |
return s |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
134 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
135 |
def main (args) : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
136 |
options = Options() |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
137 |
options.parseOptions(args) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
138 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
139 |
# logging |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
140 |
log.startLogging(sys.stderr, setStdout=False) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
141 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
142 |
# connect |
|
110
af87b706e4a3
pvl.irker: implement --irc-username option; improve handling of register errors
Tero Marttila <terom@paivola.fi>
parents:
108
diff
changeset
|
143 |
irc = pvl.irker.irc.IRCFactory(options['irc-nickname'], options['irc-username']) |
|
92
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
144 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
145 |
connect(irc, options.connect) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
146 |
target(irc, options.target, options.privmsg) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
147 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
148 |
# listen |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
149 |
irk = pvl.irker.irk.IrkFactory(irc) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
150 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
151 |
for host, port in options.listen_tcp : |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
152 |
endpoint = endpoints.TCP4ServerEndpoint(reactor, port, interface=host) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
153 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
154 |
log.msg("listen:", endpoint)
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
155 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
156 |
endpoint.listen(irk) |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
157 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
158 |
# go |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
159 |
reactor.run() |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
160 |
|
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
161 |
return 0 |
|
715ca17d1260
pvl.irker.irker: implement bin and twisted plugin semantics
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
162 |