Пример #1
0
    def check(self, port):
      while 1:
        try:
          time.sleep(1);
          conn = http.client.HTTPConnection(metahost);
          conn.request("GET", statuspath);
          r1 = conn.getresponse();
          self.check_count += 1;
          self.last_http_status = r1.status;
          if (r1.status == 200):
            self.html_doc = r1.read()
            meta_status = self.html_doc.decode('ascii').split(";");
            if (len(meta_status) == 4):
              self.total = int(meta_status[1]);
              self.single = int(meta_status[2]);
              self.multi = int(meta_status[3]);

              fork_bomb_preventer = (self.total == 0 and self.server_limit < len(self.server_list))
              if fork_bomb_preventer:
                print("Error: Have tried to start more than " + str(self.server_limit)
                      + " servers (the server limit) but according to the"
                      + " metaserver it has found none.");

              while (self.single < self.server_capacity
                     and self.total <= self.server_limit
                     and not fork_bomb_preventer):
                time.sleep(1)
                new_server = Civlauncher(game_types[0], port, metahost + metapath, self.savesdir);
                self.server_list.append(new_server);
                new_server.start();
                port += 1;
                self.total += 1;
                self.single += 1;
 
              while (self.multi < self.server_capacity
                     and self.total <= self.server_limit
                     and not fork_bomb_preventer):
                time.sleep(1)
                new_server = Civlauncher(game_types[1], port, metahost + metapath, self.savesdir)
                self.server_list.append(new_server);
                new_server.start();
                port += 1;
                self.total += 1;
                self.multi += 1;
          else:
            print("Error: Invalid metaserver status");

        except Exception as e:
          self.html_doc = ("Error: Publite2 is unable to connect to Freeciv-web metaserver on http://" + 
                          metahost + metapath + ", error" + str(e));
          print(self.html_doc);
        finally:
          conn.close();
          time.sleep(metachecker_interval);
Пример #2
0
    def check(self, port):
      while 1:
        try:
          time.sleep(1);
          conn = http.client.HTTPConnection(metahost);
          conn.request("GET", statuspath);
          r1 = conn.getresponse();
          self.check_count += 1;
          self.last_http_status = r1.status;
          if (r1.status == 200):
            self.html_doc = r1.read()
            meta_status = self.html_doc.decode('ascii').split(";");
            if (len(meta_status) == 4):
              self.total = int(meta_status[1]);
              self.single = int(meta_status[2]);
              self.multi = int(meta_status[3]);

              fork_bomb_preventer = (self.total == 0 and self.server_limit < len(self.server_list))
              if fork_bomb_preventer:
                print("Error: Have tried to start more than " + str(self.server_limit)
                      + " servers (the server limit) but according to the"
                      + " metaserver it has found none.");

              while (self.single < self.server_capacity
                     and self.total <= self.server_limit
                     and not fork_bomb_preventer):
                time.sleep(1)
                new_server = Civlauncher(game_types[0], port, metahost + metapath, self.savesdir);
                self.server_list.append(new_server);
                new_server.start();
                port += 1;
                self.total += 1;
                self.single += 1;
 
              while (self.multi < self.server_capacity
                     and self.total <= self.server_limit
                     and not fork_bomb_preventer):
                time.sleep(1)
                new_server = Civlauncher(game_types[1], port, metahost + metapath, self.savesdir)
                self.server_list.append(new_server);
                new_server.start();
                port += 1;
                self.total += 1;
                self.multi += 1;
          else:
            print("Error: Invalid metaserver status");

        except Exception as e:
          self.html_doc = ("Error: Publite2 is unable to connect to Freeciv-web metaserver on http://" + 
                          metahost + metapath + ", error" + str(e));
          print(self.html_doc);
        finally:
          conn.close();
          time.sleep(metachecker_interval);
Пример #3
0
  #perform a test-request to the Metaserver
  try:
    conn = http.client.HTTPConnection(metahost, metaport);
    conn.request("GET", statuspath);
    r1 = conn.getresponse();
  except Exception as e:
    print("Error: Publite2 is unable to connect to Freeciv-web metaserver on http://" 
          + metahost + metapath + ", error" + str(e));
    sys.exit(1)
  finally:
    conn.close();
  
  # start the initial Freeciv-web servers
  mc = metachecker()
  for type in game_types:
    new_server = Civlauncher(type, type, port, metahost + ":" + str(metaport) + metapath, mc.savesdir)
    mc.server_list.append(new_server);
    new_server.start();
    port += 1;
  
  if (mc.start_longturn == "true"):
    # start LongTurn games
    for i in mc.longturn_ports_list:  
      new_server = Civlauncher("longturn", "longturn_" + str(i), i, metahost + ":" + str(metaport) + metapath, mc.savesdir)
      mc.server_list.append(new_server);
      new_server.start();
      port += 1;
  else:    
    port += len(mc.longturn_ports_list);

  print("Publite2 started!");
Пример #4
0
                time.sleep(metachecker_interval)


if __name__ == '__main__':
    #perform a test-request to the Metaserver
    try:
        conn = http.client.HTTPConnection(metahost)
        conn.request("GET", statuspath)
        r1 = conn.getresponse()
    except Exception as e:
        print(
            "Error: Publite2 is unable to connect to Freeciv-web metaserver on http://"
            + metahost + metapath + ", error" + str(e))
        sys.exit(1)
    finally:
        conn.close()

    # start the initial Freeciv-web servers
    mc = metachecker()
    for type in game_types:
        for srv_num in range(mc.server_capacity):
            new_server = Civlauncher(type, port, metahost + metapath,
                                     mc.savesdir)
            mc.server_list.append(new_server)
            new_server.start()
            port += 1

    print("Publite2 started!")
    time.sleep(20)
    mc.check(port)
Пример #5
0
        finally:
          conn.close();
          time.sleep(metachecker_interval);


if __name__ == '__main__':
  #perform a test-request to the Metaserver
  try:
    conn = http.client.HTTPConnection(metahost);
    conn.request("GET", statuspath);
    r1 = conn.getresponse();
  except Exception as e:
    print("Error: Publite2 is unable to connect to Freeciv-web metaserver on http://" 
          + metahost + metapath + ", error" + str(e));
    sys.exit(1)
  finally:
    conn.close();
  
  # start the initial Freeciv-web servers
  mc = metachecker()
  for type in game_types:
    for srv_num in range(mc.server_capacity):
      new_server = Civlauncher(type, port, metahost + metapath, mc.savesdir)
      mc.server_list.append(new_server);
      new_server.start();
      port += 1;

  print("Publite2 started!");
  time.sleep(20);
  mc.check(port);
Пример #6
0
    def check(self, port):
      while 1:
        try:
          time.sleep(1);
          conn = http.client.HTTPConnection(metahost, metaport);
          conn.request("GET", statuspath);
          r1 = conn.getresponse();
          self.check_count += 1;
          self.last_http_status = r1.status;
          if (r1.status == 200):
            self.html_doc = r1.read()
            meta_status = self.html_doc.decode('ascii').split(";");
            if (len(meta_status) == 5):
              self.total = int(meta_status[1]);
              self.single = int(meta_status[2]);
              self.multi = int(meta_status[3]);
              self.pbem = int(meta_status[4]);
              
              #Check if every server on our list is still alive. If not, remove it
              #so it can be restarted in the future.
              new_server_list = self.server_list
              for index, server in enumerate(self.server_list):
                  if not server.is_alive():
                     del new_server_list[index]
                     if server.gametype == "longturn":
                         self.longturn.remove(server.scripttype)                         
                     
              self.server_list = new_server_list

              fork_bomb_preventer = (self.total == 0 and self.server_limit < len(self.server_list))
              if fork_bomb_preventer:
                print("Error: Have tried to start more than " + str(self.server_limit)
                      + " servers (the server limit) but according to the"
                      + " metaserver it has found none.");

              # start LongTurn games, one per pass
              lt_scripts = glob.glob('LT*.serv')
              for script in lt_scripts:
                if script not in self.longturn:
                   new_server = Civlauncher("longturn", script, port, metahost + ":" + str(metaport) + metapath, self.savesdir)
                   self.server_list.append(new_server)
                   new_server.start()
                   port += 1
                   self.longturn.add(script)
                   break

              while (self.single < self.server_capacity_single
                     and self.total <= self.server_limit
                     and not fork_bomb_preventer):
                time.sleep(1)
                new_server = Civlauncher(game_types[0], game_types[0], port, metahost + ":" + str(metaport) + metapath, self.savesdir);
                self.server_list.append(new_server);
                new_server.start();
                port += 1;
                self.total += 1;
                self.single += 1;
 
              while (self.multi < self.server_capacity_multi
                     and self.total <= self.server_limit
                     and not fork_bomb_preventer):
                time.sleep(1)
                new_server = Civlauncher(game_types[1], game_types[1], port, metahost + ":" + str(metaport) + metapath, self.savesdir)
                self.server_list.append(new_server);
                new_server.start();
                port += 1;
                self.total += 1;
                self.multi += 1;

              while (self.pbem < self.server_capacity_pbem
                     and self.total <= self.server_limit
                     and not fork_bomb_preventer):
                time.sleep(1)
                new_server = Civlauncher(game_types[2], game_types[2], port, metahost + ":" + str(metaport) + metapath, self.savesdir)
                self.server_list.append(new_server);
                new_server.start();
                port += 1;
                self.total += 1;
                self.pbem += 1;


          else:
            print("Error: Invalid metaserver status");

        except Exception as e:
          self.html_doc = ("Error: Publite2 is unable to connect to Freeciv-web metaserver on http://" + 
                          metahost + metapath + ", error" + str(e));
          print(self.html_doc);
        finally:
          conn.close();
          time.sleep(metachecker_interval);
Пример #7
0
          print(self.html_doc);
        finally:
          conn.close();
          time.sleep(metachecker_interval);


if __name__ == '__main__':
  #perform a test-request to the Metaserver
  try:
    conn = http.client.HTTPConnection(metahost, metaport);
    conn.request("GET", statuspath);
    r1 = conn.getresponse();
  except Exception as e:
    print("Error: Publite2 is unable to connect to Freeciv-web metaserver on http://" 
          + metahost + metapath + ", error" + str(e));
    sys.exit(1)
  finally:
    conn.close();
  
  # start the initial Freeciv-web servers
  mc = metachecker()
  for type in game_types:
    new_server = Civlauncher(type, type, port, metahost + ":" + str(metaport) + metapath, mc.savesdir)
    mc.server_list.append(new_server);
    new_server.start();
    port += 1;
  
  print("Publite2 started!");
  time.sleep(20);
  mc.check(port);
Пример #8
0
    def check(self, port):
        while 1:
            try:
                time.sleep(1)
                conn = http.client.HTTPConnection(metahost, metaport)
                conn.request("GET", statuspath)
                r1 = conn.getresponse()
                self.check_count += 1
                self.last_http_status = r1.status
                if (r1.status == 200):
                    self.html_doc = r1.read()
                    meta_status = self.html_doc.decode('ascii').split(";")
                    if (len(meta_status) == 5):
                        self.total = int(meta_status[1])
                        self.single = int(meta_status[2])
                        self.multi = int(meta_status[3])
                        self.pbem = int(meta_status[4])

                        fork_bomb_preventer = (
                            self.total == 0
                            and self.server_limit < len(self.server_list))
                        if fork_bomb_preventer:
                            print(
                                "Error: Have tried to start more than " +
                                str(self.server_limit) +
                                " servers (the server limit) but according to the"
                                + " metaserver it has found none.")

                        # start LongTurn games, one per pass
                        lt_scripts = glob.glob('pubscript_longturn_*.serv')
                        self.longturn.intersection_update(lt_scripts)
                        for script in lt_scripts:
                            if script not in self.longturn:
                                # script[10:-5] is the magic needed for now because
                                # init-freeciv-web adds its own 'pubscript_' and '.serv'
                                new_server = Civlauncher(
                                    "longturn", script[10:-5], port,
                                    metahost + ":" + str(metaport) + metapath,
                                    self.savesdir)
                                self.server_list.append(new_server)
                                new_server.start()
                                port += 1
                                self.longturn.add(script)
                                break

                        while (self.single < self.server_capacity_single
                               and self.total <= self.server_limit
                               and not fork_bomb_preventer):
                            time.sleep(1)
                            new_server = Civlauncher(
                                game_types[0], game_types[0], port,
                                metahost + ":" + str(metaport) + metapath,
                                self.savesdir)
                            self.server_list.append(new_server)
                            new_server.start()
                            port += 1
                            self.total += 1
                            self.single += 1

                        while (self.multi < self.server_capacity_multi
                               and self.total <= self.server_limit
                               and not fork_bomb_preventer):
                            time.sleep(1)
                            new_server = Civlauncher(
                                game_types[1], game_types[1], port,
                                metahost + ":" + str(metaport) + metapath,
                                self.savesdir)
                            self.server_list.append(new_server)
                            new_server.start()
                            port += 1
                            self.total += 1
                            self.multi += 1

                        while (self.pbem < self.server_capacity_pbem
                               and self.total <= self.server_limit
                               and not fork_bomb_preventer):
                            time.sleep(1)
                            new_server = Civlauncher(
                                game_types[2], game_types[2], port,
                                metahost + ":" + str(metaport) + metapath,
                                self.savesdir)
                            self.server_list.append(new_server)
                            new_server.start()
                            port += 1
                            self.total += 1
                            self.pbem += 1

                else:
                    print("Error: Invalid metaserver status")

            except Exception as e:
                self.html_doc = (
                    "Error: Publite2 is unable to connect to Freeciv-web metaserver on http://"
                    + metahost + metapath + ", error" + str(e))
                print(self.html_doc)
            finally:
                conn.close()
                time.sleep(metachecker_interval)