Example #1
0
 def buildProtocol(self, addr):
     con_remain = self.config.base.max_connections_per_ip
     for connection in self.connections:
         if connection.address.host == addr.host:
             con_remain -= 1
             if con_remain <= 0:
                 if con_remain == 0:
                     print '[WARNING] Too many connections from %s, closing...' % addr.host
                 connection.disconnect()
     if con_remain <= 0:
         return
     self.db_con = database.get_connection()
     if database.is_banned_ip(self.db_con, addr.host):
         print '[INFO] Banned client %s tried to join.' % addr.host
         return 'You are banned from this server.'
     if self.scripts.call('on_connection_attempt', address=addr).result is False:
         print '[WARNING] Connection attempt for %s blocked by script!' % addr.host
         return False
     return CubeWorldConnection(self, addr)
Example #2
0
    def __init__(self, config):
        self.config = config
        base = config.base

        # GAME RELATED
        self.update_packet = ServerUpdate()
        self.update_packet.reset()

        self.connections = set()
        self.players = MultikeyDict()

        self.entities = {}
        self.entity_ids = IDPool(1)

        # DATABASE
        self.db_con = database.get_connection()
        database.create_structure(self.db_con)

        # Initialize default world
        self.world = World(self)

        self.update_loop = LoopingCall(self.update)
        self.update_loop.start(1.0 / constants.UPDATE_FPS, False)

        # SERVER RELATED
        self.git_rev = base.get('git_rev', None)

        self.ranks = {}
        for k, v in base.ranks.iteritems():
            self.ranks[k.lower()] = v

        self.scripts = ScriptManager()
        for script in base.scripts:
            self.load_script(script)

        # INGAME TIME
        self.extra_elapsed_time = 0.0
        self.start_time = reactor.seconds()
        self.set_clock('12:00')

        # START LISTENING
        self.listen_tcp(base.port, self)
Example #3
0
    def __init__(self, config):
        self.config = config
        base = config.base

        # game-related
        self.update_packet = ServerUpdate()
        self.update_packet.reset()

        self.connections = set()
        self.players = MultikeyDict()

        self.entities = {}

        # DATABASE
        self.db_con = database.get_connection()
        database.create_structure(self.db_con)

        self.update_loop = LoopingCall(self.update)
        self.update_loop.start(1.0 / base.update_fps, False)

        # server-related
        self.git_rev = base.get('git_rev', None)

        self.ranks = {}
        for k, v in base.ranks.iteritems():
            self.ranks[k.lower()] = v

        self.scripts = ScriptManager()
        for script in base.scripts:
            self.load_script(script)

        # time
        self.start_time = reactor.seconds()
        self.next_secondly_check = self.start_time+1

        # start listening
        self.listen_tcp(base.port, self)