Changeset 37

Show
Ignore:
Timestamp:
02/08/04 16:14:31 (5 years ago)
Author:
jajcus
Message:

- allow 8 bit nicknames in some networks

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/jjigw.py

    r26 r37  
    3131channel_re=re.compile(r"^[&#+!][^\000 \007 ,:\r\n]{1,49}$") 
    3232nick_re=re.compile(r"^[a-zA-Z\x5b-\x60\x7b-\x7d\[\]\\`_^{|}][a-zA-Z\x5b-\x60\x7b-\x7d\[\]\\`_^{|}0-9-]{0,8}$") 
     33nick8_re=re.compile(r"^[a-zA-Z\x5b-\x60\x7b-\x7d\[\]\\`_^{|}\x80-\xff][a-zA-Z\x5b-\x60\x7b-\x7d\[\]\\`_^{|}0-9\x80-\xff-]{0,8}$") 
    3334 
    3435def escape_node_string(s): 
     
    6465    return n 
    6566 
    66 def node_to_nick(n,encoding): 
     67def node_to_nick(n,encoding,network): 
    6768    s=n.encode(encoding,"strict") 
    6869    s=escape_node_string(s) 
    69     if not nick_re.match(s): 
     70    if not network.valid_nickk(s): 
    7071        raise ValueError,"Bad nick name: %r" % (s,) 
    7172    return s 
     
    123124                self.channels[normalize(ch.name)]=ch 
    124125        self.default_encoding=node.prop("encoding") 
     126        self.nicks_8bit=node.prop("nicks_8bit") 
    125127    def get_servers(self): 
    126128        r=self.servers 
     
    129131    def get_channel_config(self,channel): 
    130132        return self.channels.get(normalize(channel)) 
     133    def valid_nick(self,s): 
     134        if self.nicks_8bit: 
     135            m=nick8_re.match(s) 
     136        else: 
     137            m=nick_re.match(s) 
     138        if m: 
     139            return 1 
     140        else: 
     141            return 0 
    131142 
    132143class Config: 
     
    531542        self.default_encoding=self.network.default_encoding 
    532543        nick=nick.encode(self.default_encoding,"strict") 
    533         if not nick_re.match(nick): 
     544        if not self.network.valid_nick(nick): 
    534545            raise ValueError,"Bad nickname" 
    535546        self.jid=jid 
     
    589600        else: 
    590601            nick=prefix 
    591         if not nick_re.match(nick): 
     602        if not self.network.valid_nick(nick): 
    592603            return None 
    593604        nnick=normalize(nick) 
     
    955966            thread_fr=None 
    956967        nick=node_to_nick(nick,self.default_encoding) 
    957         if not nick_re.match(nick): 
     968        if not self.network.valid_nick(nick): 
    958969            debug("Bad nick: %r" % (nick,)) 
    959970            return