Ϫf$rdZddlmZddlmZmZmZddlmZddl m Z m Z m Z ddl mZddlmZGdd e j"Zee j&Gd d e j(ZGd d e j,ej.Zee j2Gdde j4Zy)z% IRC support for Instance Messenger. ) implementer)deferprotocolreactor)succeed) basesupport interfaceslocalsONLINE)ircc,eZdZdZdZdZdZddZy) IRCPersonc|jjtj|jjj d|j zy)NzWHOIS %saccountclientr OfflineErrorsendLinenameselfs =/usr/lib/python3/dist-packages/twisted/words/im/ircsupport.pyimperson_whoiszIRCPerson.imperson_whoiss? <<   &%% % $$Z$))%;<ctSNr rs risOnlinezIRCPerson.isOnline rctSrr rs r getStatuszIRCPerson.getStatusrrcd||_|jjj|yr)statuschatgetContactsListsetContactStatus)rr#s r setStatuszIRCPerson.setStatuss$  !!#44T:rNc|jjtj|j dD]}}|rI|j dddk(r4|jjj |jd|fgN|jjj|j|t|S)N styleemoteACTION) rrr rsplitget ctcpMakeQueryrmsgrrtextmetalines r sendMessagezIRCPerson.sendMessage"s <<   &%% %JJt$ 9D$/7: ##11$))x>N=OP ##'' 48  9 t}rr)__name__ __module__ __qualname__rrr!r'r5rrrrs= ;rrc.eZdZdZdZdZifdZdZy)IRCGroupcyrr9rs rimgroup_testActionzIRCGroup.imgroup_testAction/ rc|jjtjd}|jjj d|j d|j d|y)Nzfor great justice!zKICK # z :r)rtargetreasons r imtarget_kickzIRCGroup.imtarget_kick2sV <<   &%% %% $$vdii[&++b%QRrc|jjtj|jjj |j |yr)rrr rtopicr)rrEs rsetTopiczIRCGroup.setTopic9s< <<   &%% % !!$))U3rc|jjtj|rS|j dddk(r>|jjj |j d|fgt|S|jdD]2}|jjj|j |4t|S)Nr*r+r,r)) rrr rr.r/rrr-sayr1s rsendGroupMessagezIRCGroup.sendGroupMessage>s <<   &%% % DHHWd+w6 LL   - -dii8T:J9K L4= JJt$ 5D LL   # #DIIt 4 5t}rc|jjtj|jjj |j |jjj |j dyN)rrr rleavergetGroupConversationrs rrMzIRCGroup.leaveIsX <<   &%% % !!$)), 00A>rN)r6r7r8r=rCrFrIrMr9rrr;r;-s! S4 +- ?rr;ceZdZddZddZdZdZdZdZdZ d Z dd Z d Z d Z d ZdZdZdZdZdZdZdZdZdZy)IRCProtoNctjj||||i|_i|_i|_i|_yr)rAbstractClientMixin__init__ _namreplies _ingroups_groups_topics)rrchatui logonDeferreds rrSzIRCProto.__init__Qs9''00w V  rc|j}|jj|jj|||S)N) stayHidden)lowerr$rNgetGroup)rrhides rrNzIRCProto.getGroupConversationXs?zz|yy-- II  tT *t.  rc:|jj||Sr)r$ getPersonrrs rr`zIRCProto.getPerson^syy""4..rc d|_|jj|_|jj|_d|_t jj||jjD]}|j|d|j_ |j|jj||jjy#t $rddl}|j%YywxYw)NTzTwisted-IM userrLr) performLoginrusernamenicknamepasswordrealnamer IRCClientconnectionMadechannels joinGroup _isOnline_logonDeferredcallbackr$r% BaseException traceback print_exc)rchannelrps rrizIRCProto.connectionMadeas " $D  LL11DM LL11DM-DM MM ( ( .<<00 (w' (%&DLL """.##,,T2 II % % ' "     ! "sC!C$$DDcf||_d|z|_tjj ||y)Nz%s (IRC))r accountNamer rhsetNick)rnicks rruzIRCProto.setNickvs* %, dD)rct|jj|jj|dd|dS)z9 Called when I am kicked from a channel. rLN)r$rNr])rrrkickermessages r kickedFromzIRCProto.kickedFrom{s3yy--dii.@.@d.SUVWWrcyrr9)rkickeerrrxrys r userKickedzIRCProto.userKickedr>rc0|j|||ddiy)NdontAutoRespondrL)privmsg)rrdrrrys rnoticedzIRCProto.noticeds Xw2CQ1GHrc*|i}|jddd}||jk(ry|ddk(r(|dd}|j|j|||y|jj |j |j||y)N!rLr#r-rrNshowGroupMessager$getConversationr` showMessage)rrdrrrymetadatagroups rrzIRCProto.privmsgs  H>>#q)!, tyy  1: ABKE  % %e , = ='8   !!$..":;GG X rc*|jddd}||jk(ryddi}|ddk(r(|dd}|j|j|||y|jj |j |j||y)NrrLrr*r+rr)rrdrrr+r3rs ractionzIRCProto.actions>>#q)!, tyy ! 1: ABKE  % %e , = =ht T  !!$..":;GGtTrc|dddj}|dj}tt|D]#}||ddvs||dd||<||ddvr%||jvrg|j|<|j|j ||D]!} |j |j|#y#t$r|g|j |<Y@wxYw)z RPL_NAMREPLY >> NAMES #bnl << :Arlington.VA.US.Undernet.Org 353 z3p = #bnl :pSwede Dan-- SkOyg AG rLNr)@+) r\r-rangelenrTextendrUappendro)rprefixparamsrusersuires rirc_RPL_NAMREPLYzIRCProto.irc_RPL_NAMREPLYs q !" ##%q !E # *B)A,*,!"IabMb )A,*, * (( (&(D  U # &&u- 3H 3x(//6 3! 3,17x( 3s%CC"!C"c|ddd}|j|j|j|j|j|j=yrK)rNsetGroupMembersrTr\rrrrs rirc_RPL_ENDOFNAMESzIRCProto.irc_RPL_ENDOFNAMESsTq !"  !!%(88   U[[] +    U[[] +rc4|d|j|ddd<y)NrrL)rW)rrrs r irc_RPL_TOPICzIRCProto.irc_RPL_TOPICs&,Qi VAYqr]#rc|ddd}|j|j|j||d|j|=y)NrLr)rNrFrWrs rirc_333zIRCProto.irc_333sEq !"  !!%(11$,,u2EvayQ LL rc|jdd}|ddd}|d}|j|j||yNrrrL)r-rNrF)rrrrerrEs r irc_TOPICzIRCProto.irc_TOPICsH<<$Q'q !" q  !!%(11%Brc4|jdd}|dddj}||jk7r@ |j|j ||j |j|yy#t $r|g|j|<Y=wxYwr)r-r\rerUrrorN memberJoinedrrrrers rirc_JOINzIRCProto.irc_JOINs<<$Q'q !" ##% t}} $ 3x(//6  % %e , 9 9( C %! 3,17x( 3sA;;BBc|jdd}|dddj}||jk7rQ||j|vr?|j|j ||j |j |yyyr)r-r\rerUremoverN memberLeftrs rirc_PARTzIRCProto.irc_PARTs<<$Q'q !" ##% t}} $x00x(//6))%0;;HE1 %rc|jdd}||jvrD|j|D]"}|j|j|$g|j|<yyNrr)r-rUrNrrs rirc_QUITzIRCProto.irc_QUITsg<<$Q' t~~ %1 F))%0;;HE F')DNN8 $ &rc|jdd}|d}||jvry|j|D]#}|j|j||%|j||j|<|j|=yr)r-rUrNmemberChangedNick)rrrfromNicktoNickrs rirc_NICKzIRCProto.irc_NICKs<<$Q' 4>> ) ^^H- QE  % %e , > >x P Q!%!9v NN8 $rcyrr9)rrcommandrs r irc_unknownzIRCProto.irc_unknownr>rcH|j||j|yr)joinrNras rrkzIRCProto.joinGroups $ !!$'rr)r)r6r7r8rSrNr`rirurzr}rrrrrrrrrrrrrrkr9rrrPrPPsq /"** X  I U3(,0 C DF*% (rrPc.eZdZdZeZeZ ddZdZ dZ y) IRCAccountIRCc tjj||||||||jdDcgc]}|j c}|_|j dgk(rg|_yycc}w)N,)rAbstractAccountrSr-striprj) rrt autoLoginrdrfhostportrjrrs rrSzIRCAccount.__init__sk ##,, +y(HdD 9As8KLWL ==RD DM !MsA1ctj}tjtt |||}|j |j|j}|j|j|Sr) rDeferredr ClientCreatorrrP connectTCPrr addErrbackerrback)rrXrYccds r _startLogOnzIRCAccount._startLogOnsV(  # #GXtV] S MM$))TYY / ]**+rcyrr9rs rlogOffzIRCAccount.logOffs rN)r) r6r7r8 gatewayTyper; _groupFactoryr_personFactoryrSrrr9rrrrs'KMNPR rrN)__doc__zope.interfacertwisted.internetrrrtwisted.internet.deferrtwisted.words.imrr r twisted.words.im.localsr twisted.words.protocolsr AbstractPersonrIGroup AbstractGroupr;rRrhrPIAccountrrr9rrrs'55*<<*' **8 Z  ?{((? ?Dd({.. d(N Z ! ,, " r