<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -17,6 +17,7 @@ port = &quot;5347&quot;
 secret = &quot;secret&quot;
 
 allowRegister = False
+requireRegister = False
 
 activityMessages = False # For displaying user acitivity messages
 </diff>
      <filename>config.py</filename>
    </modified>
    <modified>
      <diff>@@ -44,6 +44,9 @@
     &lt;!-- Allow users to register with this transport --&gt;
     &lt;allowRegister/&gt;
 
+    &lt;!-- Require users to be registered before allowing them to join a room --&gt;
+    &lt;!-- &lt;requireRegister/&gt; --&gt;
+
     &lt;!-- Send activity messages to users (for clients that don't support MUC)  --&gt;
     &lt;activityMessages/&gt;
 </diff>
      <filename>config_example.xml</filename>
    </modified>
    <modified>
      <diff>@@ -343,7 +343,9 @@ class Transport:
         if to == config.jid:
             if node == None:
                 if type == 'info':
-                    features = [NS_DISCO_INFO,NS_DISCO_ITEMS,NS_VERSION,NS_MUC,NS_COMMANDS]
+                    features = [NS_DISCO_INFO,NS_DISCO_ITEMS,NS_VERSION,NS_COMMANDS]
+                    if not config.requireRegister or userfile.has_key(fromjid):
+                        features = [NS_MUC] + features
                     if config.allowRegister or userfile.has_key(fromjid):
                         features = [NS_REGISTER] + features
                     return {
@@ -1084,7 +1086,8 @@ class Transport:
 
         serverdetails = {'address':'','nick':'','password':'','realname':'','username':''}
         if userfile.has_key(fromjid):
-            charset = userfile[fromjid]['charset']
+            if userfile[fromjid].has_key('charset'):
+                charset = userfile[fromjid]['charset']
             if not server == '' and userfile[fromjid].has_key('servers'):
                 servers = userfile[fromjid]['servers']
                 if servers.has_key(server):
@@ -1490,7 +1493,8 @@ class Transport:
         motdhash = ''
         ruleshash = ''
         if userfile.has_key(fromstripped):
-            ucharset = userfile[fromstripped]['charset']
+            if userfile[fromstripped].has_key('charset'):
+                ucharset = userfile[fromstripped]['charset']
             if userfile[fromstripped].has_key('servers'):
                 servers = userfile[fromstripped]['servers']
                 if servers.has_key(server):
@@ -1510,6 +1514,10 @@ class Transport:
                         motdhash = serverdetails['motdhash']
                     if serverdetails.has_key('ruleshash'):
                         ruleshash = serverdetails['ruleshash']
+        else:
+            if config.requireRegister:
+                self.jabber.send(Error(Presence(to = fromjid, frm = '%s%%%s@%s/%s' % (channel,server,config.jid,nick)),ERR_REGISTRATION_REQUIRED,reply=0))
+                return None
 
         if not nick:
             return None</diff>
      <filename>irc.py</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>e92df020a98c7f13ed4b399059a6519cf3713f28</id>
    </parent>
  </parents>
  <author>
    <name>Norman Rasmussen</name>
    <email>norman@rasmussen.co.za</email>
  </author>
  <url>http://github.com/normanr/irc-transport/commit/b4baeaf5b1428d1a2eba3802ebdc0e7966d2bd93</url>
  <id>b4baeaf5b1428d1a2eba3802ebdc0e7966d2bd93</id>
  <committed-date>2007-07-21T17:45:07-07:00</committed-date>
  <authored-date>2007-07-21T17:45:07-07:00</authored-date>
  <message>Added option to require users to register before joining a room</message>
  <tree>1363f8e1b430fa3961eb17018f8cbfd0acf8aad7</tree>
  <committer>
    <name>Norman Rasmussen</name>
    <email>norman@rasmussen.co.za</email>
  </committer>
</commit>
