pvl.irker: implement irc username
authorTero Marttila <terom@paivola.fi>
Sat, 12 Jan 2013 23:02:09 +0200
changeset 108 d2c1485af725
parent 107 30b6a020f2be
child 109 8ec3cec95327
pvl.irker: implement irc username
pvl/irker/irc.py
pvl/irker/irker.py
--- a/pvl/irker/irc.py	Sat Jan 12 22:08:02 2013 +0200
+++ b/pvl/irker/irc.py	Sat Jan 12 23:02:09 2013 +0200
@@ -31,6 +31,15 @@
 
     return name.lower()
 
+def myusername ():
+    """
+        Return username current process is running under.
+    """
+
+    import getpass
+
+    return getpass.getuser()
+
 class IRCError (Exception) :
     """
         A handled protocol error.
@@ -302,10 +311,17 @@
 
     NICKNAME = 'irker'
 
-    def __init__ (self, nickname=NICKNAME) :
+    def __init__ (self, nickname=NICKNAME, username=None) :
         # default nickname
         self.nickname = nickname
 
+        if username is True :
+            # system
+            self.username = myusername()
+
+        else :
+            self.username = username
+
         # (scheme, host, port, nick) -> IRCClient
         self.clients = {}
     
@@ -345,7 +361,10 @@
         
         # register
         try :
-            nickname = yield client.register(url.username or self.nickname, url.password)
+            nickname = yield client.register(url.username or self.nickname, 
+                    username    = self.username,
+                    password    = url.password, 
+            )
 
         except Exception as ex :
             log.err("register", ex)
--- a/pvl/irker/irker.py	Sat Jan 12 22:08:02 2013 +0200
+++ b/pvl/irker/irker.py	Sat Jan 12 23:02:09 2013 +0200
@@ -103,7 +103,7 @@
     s = service.MultiService()
     
     # IRC
-    irc = pvl.irker.irc.IRCFactory(options['irc-nickname'])
+    irc = pvl.irker.irc.IRCFactory(options['irc-nickname'], username=True) # use system username
  
     connect(irc, options.connect)
     target(irc, options.target, options.privmsg)
@@ -129,7 +129,7 @@
     log.startLogging(sys.stderr, setStdout=False)
 
     # connect
-    irc = pvl.irker.irc.IRCFactory()
+    irc = pvl.irker.irc.IRCFactory(options['irc-nickname'], username=True) # use system username
     
     connect(irc, options.connect)
     target(irc, options.target, options.privmsg)