home · contact · privacy
Control login limit from optional file to be changed during server run.
authorChristian Heller <c.heller@plomlompom.de>
Mon, 28 Dec 2020 16:13:01 +0000 (17:13 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Mon, 28 Dec 2020 16:13:01 +0000 (17:13 +0100)
plomrogue/game.py

index 8fcb4309d344b45b0d12128636f11f7368d43d08..b76860aa5ff7954c802c63334d22367a9acb7ffa 100755 (executable)
@@ -349,11 +349,17 @@ class Game(GameBase):
         self.changed = True
 
     def login(self, nick, connection_id):
         self.changed = True
 
     def login(self, nick, connection_id):
-        if len(self.sessions) > 200:
-            print('DEBUG LOGIN TOO MANY FOR', connection_id)
-            self.io.send('CHAT "sorry, too many users currenty '
-                         'logged in, try again later"', connection_id)
-            return
+        login_limit_filename = 'login_limit'
+        if os.path.exists(login_limit_filename):
+            with open(login_limit_filename, 'r') as f:
+                lines = f.readlines()
+                login_limit = int(lines[0])
+                if len(self.sessions) > login_limit - 1:
+                    print('DEBUG LOGIN TOO MANY FOR', nick, connection_id)
+                    self.io.send('CHAT "sorry, too many users currently '
+                                 'logged in, try again later '
+                                 'by re-entering your name"', connection_id)
+                    return
         for t in [t for t in self.things
                   if t.type_ == 'Player' and t.name == nick]:
             self.io.send('GAME_ERROR ' + quote('name already in use'),
         for t in [t for t in self.things
                   if t.type_ == 'Player' and t.name == nick]:
             self.io.send('GAME_ERROR ' + quote('name already in use'),