-- Leo's gemini proxy
-- Connecting to git.thebackupbox.net:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini
repo: urcd action: commit revision: path_from: revision_from: 1d2a021af59947123eea6cf351205b4731710160: path_to: revision_to:
commit 1d2a021af59947123eea6cf351205b4731710160 Author: root <root@d3v11.ano> Date: Fri Mar 22 05:40:23 2013 +0000 [urcd, urc2sd] effeciency update diff --git a/src/urc2sd.pyx b/src/urc2sd.pyx
--- a/src/urc2sd.pyx +++ b/src/urc2sd.pyx @@ -13,6 +13,7 @@ import re import os RE = 'a-zA-Z0-9^(\)\-_{\}[\]|' +re_SPLIT = re.compile(' +',re.IGNORECASE).split re_CLIENT_PRIVMSG_NOTICE_TOPIC = re.compile('^:['+RE+']+![~'+RE+'.]+@['+RE+'.]+ ((PRIVMSG)|(NOTICE)|(TOPIC)) #['+RE+']+ :.*$',re.IGNORECASE).search re_CLIENT_PART = re.compile('^:['+RE+']+![~'+RE+'.]+@['+RE+'.]+ PART #['+RE+']+( :)?',re.IGNORECASE).search re_CLIENT_QUIT = re.compile('^:['+RE+']+![~'+RE+'.]+@['+RE+'.]+ QUIT( :)?',re.IGNORECASE).search @@ -114,7 +115,7 @@ def INIT(): try_write(wr,cmd+'\n') for dst in channels: - time.sleep(len(channels)*2) + time.sleep(len(channels)) try_write(wr,'JOIN '+dst+'\n') try_write(wr, @@ -138,8 +139,7 @@ while 1: if byte != '\r' and len(buffer)<768: buffer+=byte if re_CLIENT_PRIVMSG_NOTICE_TOPIC(buffer): - src = buffer[1:].split('!',1)[0] - if src == nick: continue + if buffer[1:].split('!',1)[0] == nick: continue sock_write(buffer+'\n') elif re_CLIENT_PART(buffer): @@ -151,8 +151,7 @@ while 1: sock_write(buffer+'\n') elif re_CLIENT_PING(buffer): - dst = buffer.split(' ',1)[1] - try_write(wr,'PONG '+dst+'\n') + try_write(wr,'PONG '+re_SPLIT(buffer,1)[1]+'\n') elif re_CLIENT_JOIN(buffer): sock_write(buffer+'\n') @@ -160,7 +159,7 @@ while 1: if not dst in channels: channels.append(dst) elif re.search('^:'+re.escape(nick).upper()+'!.+ NICK ',buffer.upper()): - nick = buffer.split(' ')[2] + nick = re_SPLIT(buffer)[2] elif re.search('^:.+ 433 .+ '+re.escape(nick),buffer): nick+='_' @@ -172,13 +171,12 @@ while 1: sock_write(buffer+'\n') - if buffer.split(' ')[3].lower() == nick.lower(): - dst = buffer.split(' ')[2].lower() - try_write(wr,'JOIN '+dst+'\n') + if re_SPLIT(buffer,4)[3].lower() == nick.lower(): + try_write(wr,'JOIN '+re_SPLIT(buffer,4)[2]+'\n') channels.remove(dst) elif re.search('^:['+RE+']+![~'+RE+'.]+@['+RE+'.]+ INVITE '+re.escape(nick).upper()+' :#['+RE+']+$',buffer.upper()): - dst = buffer.split(':',2)[2].lower() + dst = buffer[1:].split(':',1)[1].lower() if not dst in channels: try_write(wr,'JOIN '+dst+'\n') @@ -199,9 +197,9 @@ while 1: buffer += '\n' if re_SERVER_PRIVMSG_NOTICE_TOPIC(buffer): - dst = buffer.split(' ',3)[2].lower() + dst = re_SPLIT(buffer,3)[2].lower() if dst in channels: - cmd = buffer.split(' ',3)[1].upper() + cmd = re_SPLIT(buffer,3)[1].upper() src = buffer[1:].split('!',1)[0] + '> ' if cmd != 'TOPIC' else str() msg = buffer.split(':',2)[2] buffer = cmd + ' ' + dst + ' :' + src + msg + '\n' diff --git a/src/urcd.pyx b/src/urcd.pyx
--- a/src/urcd.pyx +++ b/src/urcd.pyx @@ -140,7 +140,7 @@ while 1: if re_CLIENT_NICK(buffer): if not nick: - Nick = buffer.split(' ')[1] + Nick = buffer.split(' ',1)[1] nick = Nick.lower() if len(nick)>NICKLEN: @@ -163,7 +163,7 @@ while 1: continue src = nick - Nick = buffer.split(' ')[1] + Nick = buffer.split(' ',1)[1] nick = Nick.lower() if len(nick)>NICKLEN: @@ -183,9 +183,9 @@ while 1: elif re_CLIENT_PRIVMSG_NOTICE_TOPIC_PART(buffer): - cmd = buffer.split(' ',1)[0].upper() - dst = buffer.split(' ',2)[1] - msg = re_SPLIT(buffer,2)[2] + cmd, dst, msg = re_SPLIT(buffer,2) + cmd = cmd.upper() + dst = dst.lower() if dst[0] == '#': if len(dst)>CHANNELLEN: @@ -220,20 +220,17 @@ while 1: sock_write(':'+Nick+'!'+Nick+'@'+serv+' '+cmd+' '+dst+' :'+msg+'\n') elif re_CLIENT_PING(buffer): - dst = re_SPLIT(buffer)[1] - try_write(wr,':'+serv+' PONG '+serv+' :'+dst+'\n') + try_write(wr,':'+serv+' PONG '+serv+' :'+re_SPLIT(buffer,2)[1]+'\n') elif re_CLIENT_MODE_CHANNEL_ARG(buffer): - dst = buffer.split(' ')[1] + dst = re_SPLIT(buffer,2)[1] try_write(wr,':'+serv+' 324 '+Nick+' '+dst+' +n\n') try_write(wr,':'+serv+' 329 '+Nick+' '+dst+' '+str(int(time.time()))+'\n') elif re_CLIENT_MODE_NICK(buffer): - dst = buffer.split(' ')[1] - try_write(wr,':'+serv+' 221 '+dst+' :+i\n') + try_write(wr,':'+serv+' 221 '+re_SPLIT(buffer,2)[1]+' :+i\n') elif re_CLIENT_MODE_NICK_ARG(buffer): - dst = buffer.split(' ')[1] try_write(wr,':'+Nick+'!'+user+'@'+serv+' MODE '+Nick+' +i\n') elif re_CLIENT_AWAY_OFF(buffer): @@ -243,9 +240,7 @@ while 1: try_write(wr,':'+serv+' 306 '+Nick+' :HB, :-)\n') elif re_CLIENT_WHO(buffer): - - dst = buffer.split(' ',2)[1].lower() - + dst = re_SPLIT(buffer,2)[1].lower() if dst in channel_struct.keys(): for src in channel_struct[dst]['names']: try_write(wr,':'+serv+' 352 '+Nick+' '+dst+' '+src+' '+serv+' '+src+' '+src+' H :0 '+src+'\n') @@ -253,8 +248,7 @@ while 1: elif re_CLIENT_INVITE(buffer): - dst = buffer.split(' ')[1] - msg = buffer.split(' ')[2] + dst, msg = re_SPLIT(buffer,2)[1:3] if len(dst)>NICKLEN: try_write(wr,'ERROR : EMSGSIZE:NICKLEN='+str(NICKLEN)+'\n') @@ -269,9 +263,7 @@ while 1: elif re_CLIENT_JOIN(buffer): - dst = re_SPLIT(buffer,2)[1].lower() - - for dst in dst.split(','): + for dst in re_SPLIT(buffer,2)[1].lower().split(','): if len(channels)>CHANLIMIT: try_write(wr,'ERROR : EMSGSIZE:CHANLIMIT='+str(CHANLIMIT)+'\n') @@ -306,10 +298,7 @@ while 1: channel_struct[dst]['names'].append(nick) elif re_CLIENT_PART(buffer): - - dst = buffer.split(' ')[1].lower() - - for dst in dst.split(','): + for dst in re_SPLIT(buffer,2)[1].lower().split(','): if dst in channels: try_write(wr,':'+Nick+'!'+user+'@'+serv+' PART '+dst+' :\n') channels.remove(dst) @@ -332,9 +321,7 @@ while 1: elif re_CLIENT_USER(buffer): pass else: - buffer = str({str():buffer})[6:-2] - buffer = buffer.replace("\\'","'") - buffer = buffer.replace('\\\\','\\') + buffer = str({str():buffer})[6:-2].replace("\\'","'").replace('\\\\','\\') try_write(wr,':'+serv+' NOTICE '+Nick+' :ERROR: '+buffer+'\n') while server_revents(): @@ -354,8 +341,7 @@ while 1: src = buffer.split(':',2)[1].split('!',1)[0].lower() if len(src)>NICKLEN: continue - cmd = buffer.split(' ',3)[1].upper() - dst = buffer.split(' ',3)[2].lower() + cmd, dst = re_SPLIT(buffer.lower(),3)[1:3] if dst[0] == '#': @@ -370,19 +356,19 @@ while 1: del channel_struct[dst] break - dst = buffer.split(' ',3)[2].lower() + dst = re_SPLIT(buffer,3)[2].lower() channel_struct[dst] = dict( names = collections.deque([],CHANLIMIT), topic = None, ) - if cmd == 'TOPIC': + if cmd == 'topic': msg = buffer.split(':',2)[2].split('\n',1)[0] if len(msg)>TOPICLEN: continue channel_struct[dst]['topic'] = msg - if cmd == 'PART': + if cmd == 'part': if src != nick and src in channel_struct[dst]['names']: channel_struct[dst]['names'].remove(src) try_write(wr,buffer) @@ -392,7 +378,7 @@ while 1: if dst in channels: - try_write(wr,buffer.split(' ',1)[0]+' JOIN :'+dst+'\n') + try_write(wr,re_SPLIT(buffer,1)[0]+' JOIN :'+dst+'\n') if len(channel_struct[dst]['names'])==CHANLIMIT: @@ -404,7 +390,7 @@ while 1: channel_struct[dst]['names'].append(src) - elif cmd == 'PART': continue + elif cmd == 'part': continue if dst == nick or dst in channels: try_write(wr,buffer) @@ -425,9 +411,7 @@ while 1: del channel_struct[dst] break - dst = buffer.split(':')[2].split('\n',1)[0].lower() - - channel_struct[dst] = dict( + channel_struct[ buffer.split(':')[2].split('\n',1)[0].lower() ] = dict( names = collections.deque([],CHANLIMIT), topic = None, ) @@ -455,7 +439,6 @@ while 1: if len(src)>NICKLEN: continue cmd = '\x01' - for dst in channel_struct.keys(): if src in channel_struct[dst]['names']: @@ -468,10 +451,9 @@ while 1: elif re_SERVER_KICK(buffer): - src = buffer.split(' ',4)[3].lower() - if len(src)>NICKLEN: continue + dst, src = re_SPLIT(buffer.lower(),4)[2:4] - dst = buffer.split(' ',3)[2].lower() + if len(src)>NICKLEN: continue if len(dst)>CHANNELLEN: continue if not dst in channel_struct.keys(): @@ -483,7 +465,7 @@ while 1: del channel_struct[dst] break - dst = buffer.split(' ',3)[2].lower() + dst = re_SPLIT(buffer,3)[2].lower() channel_struct[dst] = dict( names = collections.deque([],CHANLIMIT), @@ -496,5 +478,4 @@ while 1: if src in channel_struct[dst]['names']: channel_struct[dst]['names'].remove(src) - dst = buffer.split(' ',3)[2].lower() - if dst in channels: try_write(wr,buffer) + if re_SPLIT(buffer,3)[2].lower() in channels: try_write(wr,buffer)
-----END OF PAGE-----
-- Response ended
-- Page fetched on Sun Jun 2 14:59:02 2024