From c25af3b2043d275637fcd3586c1de1815419b4b0 Mon Sep 17 00:00:00 2001 From: Juhani Haverinen Date: Mon, 8 Jul 2013 19:57:42 +0300 Subject: [PATCH] Rewrote auth system, added #kick and arguments to #deop --- botcmd.py | 53 ++++++++++++++++++++++++++++++++++++++++++----------- botcmd.pyc | Bin 4258 -> 5581 bytes 2 files changed, 42 insertions(+), 11 deletions(-) diff --git a/botcmd.py b/botcmd.py index a79b3ed..04c4acb 100644 --- a/botcmd.py +++ b/botcmd.py @@ -1,17 +1,19 @@ import eliza import threading -concmd=['/q'] +concmd=['/q','/debg'] doctor=eliza.eliza() -opnicks=['nortti','nortti_','shikhin','shikhin_','shikhin__','sortiecat','martinFTW','graphitemaster','XgF','sprocklem'] +trusted=['nortti','nortti_','shikhin','shikhin_','shikhin__','sortiecat','martinFTW','graphitemaster','XgF','sprocklem'] opchans=['#osdev-offtopic'] oprights={} -for i in opnicks: +for i in trusted: oprights[i]=opchans autoops={} msgs={} msglock=threading.Lock() +authcmds={} +authcmdlock=threading.Lock() msglock.acquire() f=open('msgs.txt','r') @@ -25,7 +27,14 @@ for line in f: f.close() msglock.release() - +def addauthcmd(nick,cmd): + authcmdlock.acquire() + if nick not in trusted: + return + if nick not in authcmds: + authcmds[nick]=[] + authcmds[nick].append(cmd) + authcmdlock.release() def parse((line,irc)): line=line.split(' ') nick=line[0].split('!')[0][1:] @@ -35,12 +44,26 @@ def parse((line,irc)): irc.send('PRIVMSG %s :%s'%(chan,' '.join(line[4:]))) elif line[3]==':#op': if len(line)==4: + addauthcmd(nick,'MODE %s +o %s'%(chan,nick)) irc.send('PRIVMSG NickServ :ACC '+nick) else: for name in line[4:]: - irc.send('PRIVMSG NickServ :ACC '+name) + addauthcmd(nick,'MODE %s +o %s'%(chan,name)) + irc.send('PRIVMSG NickServ :ACC '+nick) elif line[3]==':#deop': - irc.send('MODE %s -o %s'%(chan,nick)) + if len(line)==4: + addauthcmd(nick,'MODE %s -o %s'%(chan,nick)) + irc.send('PRIVMSG NickServ :ACC '+nick) + else: + for name in line[4:]: + addauthcmd(nick,'MODE %s -o %s'%(chan,name)) + irc.send('PRIVMSG NickServ :ACC '+nick) + elif line[3]==':#kick': + if len(line)>4: + addauthcmd(nick,'KICK %s %s :%s'%(chan,line[4],' '.join(line[5:]))) + irc.send('PRIVMSG NickServ :ACC '+nick) + else: + irc.send('PRIVMSG %s :Usage #kick nick reason'%chan) elif line[3]==':#src': irc.send('PRIVMSG %s :https://github.com/JuEeHa/oonbotti2'%chan) elif line[3]==':#msg': @@ -65,11 +88,17 @@ def parse((line,irc)): elif line[3][1:] in ('oonbotti:', 'oonbotti', 'oonbotti,', 'oonbotti2', 'oonbotti2:', 'oonbotti2,'): irc.send('PRIVMSG %s :%s: %s'%(chan,nick,doctor.respond(' '.join(line[4:])))) elif line[1]=='NOTICE' and line[0].split('!')[0]==':NickServ' and line[4]=='ACC': - if line[3][1:] in oprights and int(line[5])==3: - for opchan in oprights[line[3][1:]]: - irc.send('MODE %s +o %s'%(opchan,line[3][1:])) + authcmdlock.acquire() + if line[3][1:] in trusted and line[3][1:] in authcmds and line[5]=='3': + for i in authcmds.pop(line[3][1:]): + irc.send(i) + else: + authcmds.pop(line[3][1:]) + authcmdlock.release() elif line[1]=='JOIN' and nick in autoops and chan in autoops[nick]: irc.send('PRIVMSG NickServ :ACC '+nick) + elif line[1]=='482': + irc.send('PRIVMSG %s :Not op'%line[3]) msglock.acquire() if (line[1]=='PRIVMSG' or line[1]=='JOIN') and nick in msgs: @@ -88,13 +117,15 @@ def execcmd(cmdline): def help(cmd): if cmd=='': - return '#echo #op #deop #src #msg #readmsg #help' + return '#echo #op #deop #kick #src #msg #readmsg #help' elif cmd=='#echo': return '#echo text echo text back' elif cmd=='#op': return '#op [nick] give nick or yourself op rights in case nick/you is/are trusted by oonbotti2 and identified with NickServ' elif cmd=='#deop': - return '#deop remove your oprights (added due to irrarional demand by shikhin and sortiecat)' + return '#deop [nick] remove your/nick\'s op rights (added due to irrational demand by shikhin and sortiecat, nick support added for same reason)' + elif cmd=='#kick': + return '#kick nick reason kicks nick with specified reason' elif cmd=='#src': return '#src paste a link to oonbotti2\'s git repo' elif cmd=='#msg': diff --git a/botcmd.pyc b/botcmd.pyc index dc1bf876760aaeaf8deb67b4cce40f4afcd22c54..c418e4ecb5abc31269d26304a31176cb43976ed6 100644 GIT binary patch literal 5581 zcmbtY&2JmW6@SYQNu(uNvOZ}$@g}rvx|T%M=|@02L0rjB9M^I}IaRB~NLJhtxfHoe z?JRA%k$?g&0u=3`r=q6-K`#9h3iMnc*Is()t(P8hNPza#Q~P^wc1cQB0@S6%;d`_5 z-n@C=v*~}0<^TTG-`=fJ{K@0@4Se;d7Lkj8i&{imJ=mfxi`*2sX{x7aD@BT^N%RzJ z(&T2y&5}Dr?l8F{{e?D(Qps^P+;Bgb{n1_ zjbJ{8Ka6q%NQ{BnQ#B`&XKe?VfBV5^G>(<^(CIY1NVOdusW3`o>ZkSFhDj$3YP&7f z)~7LB4795rEd@I}QPA;fn)ht$x?Ya8B7|hF{=N=AX@G`i8vk|*Nr!Q5twEJkd?Patqi_n)}&SA zqp$^ewW#dZ@C2yggA^TFbeLidAWGpi&;w?GB8Ce*mF6i%+zeefgz|u8f$_|c1jU17 z&d1X<9g04&x_~I>p!sK-X-0q}0Dyl+2PrldV*dc~j-6$Hb$9Zl}n0=kzzanB{leLF0&|&r{ZMH|d_ix&K zmcB2{Y1#Tu&j|Ce6$>-*e+Xk}2ZZ^=`c`3(rJ#qE)Dg`fZ=FxY!kiIdpzBjme^1j> zM$>6%`Wv(rYhaqmkDFsgHhqwa*UX-@W=__8IUv}SB-FpAqAWFsOrRRE5FDHqKTC0N z4#!3+NPzaRLUTk6ef$I_S2D|-u-yAP9ZNNTl2iqeYBxO~Lz?&89is4FdjBrNC?oJ1 zIL+F_OA;SLbOiHu@n zE*3}JwwK)WrevwU1cxGlaVfxN$E&fK5~Ifa%ptf&m6nj0*QMauQt$+P$>Y53Nx@*K z2=^pN&PL-mnH3CWd@iTit+m!|Fah1_LREj}Ij{&%Mf9)1Oy&7QD zvzSRp)=`Z%RQSlQ++1C?W5%vJMzL&y4%aOpk02udrQ6L^y^?u%?-oFW7M)= z#V+ER*{`iMi=ep-R*Kl&WwNPbWH%P{>#Ui}$L4<)bnS-oNZEd1cYUU|6Na&>8miS1 z=1G;VNH>sRM;zL}@S9??1S+ddr+CF`%>*u%Won zE7EDaegDq7On>jyYtOJ-4=4OEIl-<9j{3=^e;sWO6-mE&x6TFP=TjeIR zI>A#+&ax*bc0%iK9=JuRJs%RZk2nzD#uEd8!35&?ka$aO6)u6Es2&_giXuy zmGJe#T6K~i^1d~6Z36gCTgfggdE5p=C^3xp+#Me)rQ?KJT>_xd#Gw(+S*NXY)1tciQJ!jB9}nZoh!K-qI971K%=?8N-B*~d!3um z{cDUMXBLv$n{<=t(b06`36eRodaw50q|Ln*^lRt~OyjQL9j3eRKk7+g+SGptJ`AZw zM5;gXMUn;0Q2|xx&A0aYD>Aae;CPHqb&gk}9L~8!nfI_1IUL|diQR2oa&~gbdgc!E zSloX>=j1=%zlBMDuW}&tll*Iv*h|c$%1N~E&jGFy)r**txOg1mekD+?6=-FAoZU}7 za#|&}h`27_SlCOse(Xp_3RO*ck5pLYgj-#~@Z7G*Hdp(q#+v}tXE6}mCJ%QUgA2Y4 zh~0=Ca>BR@%fS(}im(1X2IDI1CKKF@@O2G$4#sV6Rs_!qzQS(~1V?$r^EbGO5Zv4= z-r*aC;O2Vp5x-Xud`#AN_}zlwricFpzXuT9w9&sM-10YYb>9%fPD8kLTnQoPG6pHK zHtMKdv$RsJyE=na}1DLwZcQQj9sr|^74;O4(&}|1rlv5K|=qKjaexEDk zL$kCFTbT+Lg!Yr5i@N}d~b zQj~N@)yz5LUW21US`D!$TTVV5eo0|FHsWNLh3}~g2SoD$Av%F{QQS=EcbN$Qvr*gx z7)G4t!6%smD^}BTGNEB8-`tGr*wA*%(@}zJNmtw!>;zpuel@{yTjiqsyvd@<pb-GrfDwNBPIJvD^k72 z=nWqDoPBKx^gq7b83BhI?ZEA})az^j%`%NzqbdBM+UKkxq}OqbLr^2WsL7mo7ib&_ UcOG+NsM>iepUREoZs$(_7yGt-h5!Hn delta 1964 zcmZ8iO>7%Q6n?YozjeI+cbtvuIC0`8ZBnHLijWdSL=6aNQ`ksYvKmq2-8!~||8@}; zvgJxa9Joazap1s#145Kr4wX=)N=RIgazR3%95^6xsJI|;;7?OAyH#cmcRsP02~37WiXC!W&^b#ls#am z$993$jz6CtnKRG`Q3NwpFv4I&;7EdU82Vp;8HVEiXHbqn|0}XoCGrtrUFer^fp-y$j6!O*4Wb; zDKHaYCgGk$ds+7c@LNK7jadgel1K~BNWjO)b`FfBa5OMd!kGty!QR>|3RM3WKf9KM z?k4NpMP_^Y1lqX+T;c?XbdNN@#a%Yaj)#*CQx1qKo{ zaHzsShO|KWSnB`5XyXjziu-98dZ&WCZqV;g>Q2&!MY0vYitZUEwvv zhJ8l$eIWO@0VAkpZoF0;?H6De7|XE)1N0~BSTcvzwoFac+Brv>cT=MHc4SNv#lZ%X zL8A(tlb$p%b;(l=<$<>}!%wNKp9N_W!Abp(OsSn>qwnaq?CLkhl@Us)_zi|cK)2nFDc+pq8PCo|<_M7*SE+U?eR zZQHJI=uut@6hsd2N^*f^`2FPSD2GE)vv!9{VYxol!P1v#kxsAc%V-^5)Hye?6DGv