Changeset 50
- Timestamp:
- 02/14/04 12:00:06 (5 years ago)
- Files:
-
- trunk/jjigw.py (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/jjigw.py
r47 r50 70 70 s=n.encode(encoding,"strict") 71 71 s=escape_node_string(s) 72 if not network.valid_nick k(s):72 if not network.valid_nick(s): 73 73 raise ValueError,"Bad nick name: %r" % (s,) 74 74 return s … … 78 78 n=unicode(s,encoding,"strict") 79 79 return n 80 80 81 81 82 irc_translate_table=string.maketrans( … … 648 649 self.lock.release() 649 650 650 def get_user(self,prefix ):651 def get_user(self,prefix,create=1): 651 652 if "!" in prefix: 652 653 nick=prefix.split("!",1)[0] … … 658 659 if self.users.has_key(nnick): 659 660 return self.users[nnick] 661 if not create: 662 return None 660 663 user=IRCUser(self,prefix) 661 664 self.register_user(user) … … 675 678 nick=prefix 676 679 return normalize(nick)==normalize(self.nick) 680 681 def prefix_to_jid(self,prefix): 682 if channel_re.match(prefix): 683 node=channel_to_node(prefix,self.default_encoding) 684 return JID(node,self.network.jid.domain,None) 685 else: 686 if "!" in prefix: 687 nick,user=prefix.split("!",1) 688 else: 689 nick=prefix 690 user="" 691 node=nick_to_node(nick,self.default_encoding) 692 resource=unicode(user,self.default_encoding,"replace") 693 return JID(node,self.network.jid.domain,resource) 677 694 678 695 def thread_run(self): … … 938 955 return 939 956 pass 957 958 def irc_cmd_401(self,prefix,command,params): # ERR_NOSUCHNICK 959 if len(params)>1: 960 nick,msg=params[:2] 961 error_text="%s: %s" % (nick,msg) 962 else: 963 error_text=None 964 self.send_error_message(params[0],"recipient-unavailable",error_text) 940 965 966 def irc_cmd_404(self,prefix,command,params): # ERR_CANNOTSENDTOCHAN 967 if len(params)>1: 968 error_text=params[1] 969 else: 970 error_text=None 971 self.send_error_message(params[0],"forbidden",error_text) 972 941 973 def irc_cmd_QUIT(self,prefix,command,params): 942 974 user=self.get_user(prefix) … … 957 989 channel=user.channels[c] 958 990 self.component.send(channel.get_user_presence(user)) 959 991 992 def send_error_message(self,source,cond,text): 993 self.debug("send_error_message(self,%r,%r,%r)" % (source,cond,text)) 994 user=self.get_user(source) 995 if user: 996 self.unregister_user(user) 997 if user and user.current_thread: 998 self.debug("user.current_thread: %r" % (user.current_thread,)) 999 typ,thread,fr=user.current_thread 1000 if not fr: 1001 fr=self.prefix_to_jid(source) 1002 m=Message(type="error",error_cond=cond,error_text=text, 1003 to=self.jid,fr=fr,thread=thread) 1004 else: 1005 fr=self.prefix_to_jid(source) 1006 self.debug("from: %r" % (fr,)) 1007 m=Message(type="error",error_cond=cond,error_text=text, 1008 to=self.jid,fr=fr) 1009 self.component.send(m) 1010 960 1011 def pass_input_to_user(self,prefix,command,params): 961 1012 if command in self.commands_dont_show: … … 1051 1102 nick=to.node 1052 1103 thread_fr=None 1053 nick=node_to_nick(nick,self.default_encoding )1104 nick=node_to_nick(nick,self.default_encoding,self.network) 1054 1105 if not self.network.valid_nick(nick): 1055 1106 debug("Bad nick: %r" % (nick,))
