예제 #1
0
파일: Room.py 프로젝트: ArildF/rogie
    def join( self, sock ):
        """Join a room using the given socket"""
        login = Protocol.getProtocol().getInitJoinPacket( self.nick )
        login.send( sock )
        
        time.sleep( 2 )

        login = Protocol.getProtocol().getJoinPacket( self.nick, self.roomName )
        login.send( sock )
예제 #2
0
    def doExecute( self, sock, words ):
        if self.room.getAcl().hasPermission( self.nick, Acl.SHUTDOWN ):
            number = random.randrange( 0, len(LAST_WORDS) )
            self.sendMessage( sock, LAST_WORDS[ number ] )
            time.sleep( 2 )

            #send the leave message
            leavePacket = Protocol.getProtocol().getLeavePacket( self.room.getNick() )
            leavePacket.send( sock )
            self.room.shutdown()
예제 #3
0
파일: Command.py 프로젝트: ArildF/rogie
    def sendMessage( self, sock, msg ):
        #break up msg in appropriate chunks
        idxStart = 0
        idxEnd = MAX_PACKET_SIZE
        msgList = []
        while idxEnd < len( msg ):
            #make sure we break on a space
            while not msg[ idxEnd - 1 ] == " " and idxEnd > ( idxStart + MAX_PACKET_SIZE - 40 ):
                idxEnd = idxEnd - 1
            msgList.append( msg[ idxStart : idxEnd ] )
            idxStart = idxEnd
            idxEnd = idxStart + MAX_PACKET_SIZE

        msgList.append( msg[ idxStart : idxEnd ] )

        for message in msgList:
            if self.isPm:
                packet = Protocol.getProtocol().getPmPacket( self.room.getNick(), self.nick, message )
            else:
                packet = Protocol.getProtocol().getSpeechPacket( self.room.getNick() \
                    ,self.room.getRoomName(), message )
            packet.send( sock )
            time.sleep( 3 )
예제 #4
0
파일: QuoteThread.py 프로젝트: ArildF/rogie
 def run( self ):
     sleepMax = Config.getConfig().getInt( "quotes", "sleep_max" )
     sleepMin = Config.getConfig().getInt( "quotes", "sleep_min" )
     quoteDb = Config.getConfig().getString( "quotes", "quotefile" )
     store = SqliteQuoteStore.SqliteQuoteStore( quoteDb )
     
     while not self.finished:
         interval = random.randrange( sleepMin, sleepMax ) 
         time.sleep( interval * 60 )
         
         msg =  QuoteCommand.formatQuote( store.getRandomQuote() )
         packet = Protocol.getProtocol().getSpeechPacket( self.room.getNick(), self.room.getRoomName(),
                                   msg.strip() )
         packet.send( self.sock )
예제 #5
0
파일: Inbound.py 프로젝트: ArildF/rogie
    def run( self ):
        """main loop receiving and dispatching packets from yahoo"""
        protocol = Protocol.getProtocol()
        header = protocol.getHeader( self.sock, self.display, self.room )
        
        timeThen = time.clock()
        while not self.room.isFinished():
            packet = header.receive()
            #print "Received header"
            packet.receive()
            #print "Received packet"
            packet.dispatch()

            #time to ping?
            timeNow = time.clock()
            if timeNow - timeThen > PING_INTERVAL:
                ping = protocol.getPingPacket( self.room.getNick() )
                ping.send( self.sock )
                timeThen = timeNow
                print "PING!"

        print self.room.getNick() + " has left the building"
예제 #6
0
파일: main.py 프로젝트: ArildF/rogie
import Uptime
    
if __name__ == "__main__":

    #start the uptime counter
    Uptime.startUptime()
    
    Config.loadConfig( "rogie.cfg" )
    config = Config.getConfig()
    
    protocol = config.getString("login", "protocol")
    
    #init the protocol we are going to use
    Protocol.initProtocol( protocol )
    
    protocol = Protocol.getProtocol()   
    
    
    #first get the cookie and id's     
    nick = config.getString( "login", "username" )
    passwd = config.getString( "login", "password" )

    events = Events.getEvents()
    events.addListener( Display.getDisplay() )
    events.addListener( SpamFilter.getInstance() )

    #create the socket
    sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
    sock.settimeout( 120.0 )
    chatserver = config.getString( "login", "chatserver" )
    chatport = config.getInt( "login", "chatport" )