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 )
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()
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 )
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 )
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"
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" )