Changeset 64

Show
Ignore:
Timestamp:
02/19/04 19:02:27 (5 years ago)
Author:
jajcus
Message:

- channel error handling fixed (updated to new request handling code)
- /voice, /devoice (granting, revoking participant pivilege)

Files:

Legend:

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

    r62 r64  
    111111            print >>sys.stderr,"Bad port value: %r, using default: 6667" % (self.port,) 
    112112            self.port=6667 
     113    def __repr__(self): 
     114        return "<ServerConfig %s:%s/>" % (self.host,self.port) 
    113115 
    114116class ChannelConfig: 
     
    488490 
    489491    def irc_error_response(self,prefix,command,params,requests,condition): 
    490         command,stanza=self.requests.get(requests) 
    491         if command
    492             m=stanza.make_error_response(condition) 
     492        r=self.requests.get(requests) 
     493        if r
     494            m=r.stanza.make_error_response(condition) 
    493495        else: 
    494496            m=Message(fr=self.room_jid.bare(),to=self.session.jid, 
     
    532534                0) 
    533535        if self.session.check_prefix(prefix) and len(params)>=3: 
    534             r=self.requests.get("MODE",(params[1],normalize(params[2]))) 
     536            r=self.requests.get("MODE",string.join(params[1:]," ")) 
    535537            if r: 
    536538                reply=r.stanza.make_result_response() 
     
    697699           self.session.component.send(r) 
    698700           return 
    699         self.session.send("MODE %s +o %s" % (self.name,nick)) 
    700         self.requests.add("MODE",stanza,("+o",normalize(nick))) 
     701        if user in self.modes.get("v",[]): 
     702            change="-v+o %s %s" % (nick,nick) 
     703        else: 
     704            change="+o "+nick 
     705        self.session.send("MODE %s %s" % (self.name,change)) 
     706        self.requests.add("MODE",stanza,change) 
     707 
     708    def voice_user(self,nick,stanza): 
     709        nick=nick.encode(self.encoding,"strict") 
     710        user=self.session.users.get(normalize(nick)) 
     711        if not user in self.users: 
     712           r=stanza.make_error_response("item-not-found") 
     713           self.session.component.send(r) 
     714           return 
     715        if user in self.modes.get("v",[]): 
     716           r=stanza.make_result_response() 
     717           self.session.component.send(r) 
     718           return 
     719        if user in self.modes.get("o",[]): 
     720            change="-o+v %s %s" % (nick,nick) 
     721        else: 
     722            change="+v "+nick 
     723        self.session.send("MODE %s %s" % (self.name,change)) 
     724        self.requests.add("MODE",stanza,change) 
     725 
     726    def devoice_user(self,nick,stanza): 
     727        nick=nick.encode(self.encoding,"strict") 
     728        user=self.session.users.get(normalize(nick)) 
     729        if not user in self.users: 
     730           r=stanza.make_error_response("item-not-found") 
     731           self.session.component.send(r) 
     732           return 
     733        if user in self.modes.get("v",[]) and user in self.modes.get("o",[]): 
     734           change="-o-v %s %s" % (nick,nick) 
     735        elif user in self.modes.get("o",[]): 
     736            change="-o "+nick 
     737        elif user in self.modes.get("v",[]): 
     738            change="-v "+nick 
     739        else: 
     740           r=stanza.make_result_response() 
     741           self.session.component.send(r) 
     742           return 
     743        self.session.send("MODE %s %s" % (self.name,change)) 
     744        self.requests.add("MODE",stanza,change) 
    701745 
    702746    def __repr__(self): 
     
    14211465        if item.role=="none": 
    14221466            channel.kick_user(item.nick,item.reason,iq) 
     1467        elif item.role=="visitor": 
     1468            channel.devoice_user(item.nick,iq) 
     1469        elif item.role=="participant": 
     1470            channel.voice_user(item.nick,iq) 
    14231471        elif item.role=="moderator": 
    14241472            channel.op_user(item.nick,iq)