mirror of
https://github.com/barronwaffles/dwc_network_server_emulator.git
synced 2026-03-21 17:34:21 -05:00
Improved configuration file
Added: register_page.py into cfg and pyproj Added: Alternative configuration file Added: Logger into configuration file
This commit is contained in:
parent
35c253dc09
commit
2102a73b05
|
|
@ -34,12 +34,8 @@ import other.utils as utils
|
|||
import gamespy.gs_utility as gs_utils
|
||||
import dwc_config
|
||||
|
||||
logger_output_to_console = True
|
||||
logger_output_to_file = True
|
||||
logger_name = "AdminPage"
|
||||
logger_filename = "admin_page.log"
|
||||
logger = utils.create_logger(logger_name, logger_filename, -1,
|
||||
logger_output_to_console, logger_output_to_file)
|
||||
logger = dwc_config.get_logger('AdminPage')
|
||||
_, port = dwc_config.get_ip_port('AdminPage')
|
||||
|
||||
|
||||
# Example of adminpageconf.json
|
||||
|
|
@ -480,8 +476,6 @@ class AdminPage(resource.Resource):
|
|||
else:
|
||||
return self.get_header() + self.get_footer()
|
||||
|
||||
_, port = dwc_config.get_ip_port('AdminPage')
|
||||
|
||||
|
||||
class AdminPageServer(object):
|
||||
def start(self):
|
||||
|
|
@ -496,5 +490,6 @@ class AdminPageServer(object):
|
|||
except ReactorAlreadyRunning:
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
AdminPageServer().start()
|
||||
|
|
|
|||
74
altwfc.cfg
74
altwfc.cfg
|
|
@ -1,51 +1,123 @@
|
|||
# ALTWFC - Configuration File
|
||||
|
||||
[Config]
|
||||
AlternativeConfig = OFF
|
||||
AlternativeConfigFile = altwfc_nas.cfg
|
||||
|
||||
[StorageServer]
|
||||
IP = 127.0.0.1
|
||||
Port = 8000
|
||||
LoggerName = StorageServer
|
||||
LoggerFilename = storage_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[NasServer]
|
||||
IP = 127.0.0.1
|
||||
Port = 9000
|
||||
# Port = 80
|
||||
LoggerName = NasServer
|
||||
LoggerFilename = nas_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[InternalStatsServer]
|
||||
IP = 127.0.0.1
|
||||
Port = 9001
|
||||
LoggerName = InternalStatsServer
|
||||
LoggerFilename = internal_stats_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameStatsServerHttp]
|
||||
IP = 127.0.0.1
|
||||
Port = 9002
|
||||
LoggerName = GameStatsServerHttp
|
||||
LoggerFilename = gamestats_server_http.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[AdminPage]
|
||||
IP = 127.0.0.1
|
||||
Port = 9009
|
||||
LoggerName = AdminPage
|
||||
LoggerFilename = admin_page.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[RegisterPage]
|
||||
IP = 127.0.0.1
|
||||
Port = 9998
|
||||
LoggerName = RegisterPage
|
||||
LoggerFilename = register_page.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyManager]
|
||||
# GamespyBackendServer
|
||||
IP = 127.0.0.1
|
||||
Port = 27500
|
||||
LoggerName = GamespyBackendServer
|
||||
LoggerFilename = gamespy_backend_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyQRServer]
|
||||
IP = 0.0.0.0
|
||||
Port = 27900
|
||||
LoggerName = GameSpyQRServer
|
||||
LoggerFilename = gamespy_qr_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyNatNegServer]
|
||||
IP = 0.0.0.0
|
||||
Port = 27901
|
||||
LoggerName = GameSpyNatNegServer
|
||||
LoggerFilename = gamespy_natneg_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyServerBrowserServer]
|
||||
IP = 0.0.0.0
|
||||
Port = 28910
|
||||
LoggerName = GameSpyServerBrowserServer
|
||||
LoggerFilename = gamespy_server_browser_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyProfileServer]
|
||||
IP = 0.0.0.0
|
||||
Port = 29900
|
||||
LoggerName = GameSpyProfileServer
|
||||
LoggerFilename = gamespy_profile_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyPlayerSearchServer]
|
||||
IP = 0.0.0.0
|
||||
Port = 29901
|
||||
LoggerName = GameSpyPlayerSearchServer
|
||||
LoggerFilename = gamespy_player_search_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyGamestatsServer]
|
||||
IP = 0.0.0.0
|
||||
Port = 29920
|
||||
LoggerName = GameSpyGamestatsServer
|
||||
LoggerFilename = gamespy_gamestats_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
|
|
|||
119
altwfc_nas.cfg
Normal file
119
altwfc_nas.cfg
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
# ALTWFC - Alternative Configuration File
|
||||
|
||||
[StorageServer]
|
||||
IP = 127.0.0.1
|
||||
Port = 8000
|
||||
LoggerName = StorageServer
|
||||
LoggerFilename = storage_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[NasServer]
|
||||
IP = 127.0.0.1
|
||||
Port = 80
|
||||
LoggerName = NasServer
|
||||
LoggerFilename = nas_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[InternalStatsServer]
|
||||
IP = 127.0.0.1
|
||||
Port = 9001
|
||||
LoggerName = InternalStatsServer
|
||||
LoggerFilename = internal_stats_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameStatsServerHttp]
|
||||
IP = 127.0.0.1
|
||||
Port = 9002
|
||||
LoggerName = GameStatsServerHttp
|
||||
LoggerFilename = gamestats_server_http.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[AdminPage]
|
||||
IP = 127.0.0.1
|
||||
Port = 9009
|
||||
LoggerName = AdminPage
|
||||
LoggerFilename = admin_page.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[RegisterPage]
|
||||
IP = 127.0.0.1
|
||||
Port = 9998
|
||||
LoggerName = RegisterPage
|
||||
LoggerFilename = register_page.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyManager]
|
||||
# GamespyBackendServer
|
||||
IP = 127.0.0.1
|
||||
Port = 27500
|
||||
LoggerName = GamespyBackendServer
|
||||
LoggerFilename = gamespy_backend_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyQRServer]
|
||||
IP = 0.0.0.0
|
||||
Port = 27900
|
||||
LoggerName = GameSpyQRServer
|
||||
LoggerFilename = gamespy_qr_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyNatNegServer]
|
||||
IP = 0.0.0.0
|
||||
Port = 27901
|
||||
LoggerName = GameSpyNatNegServer
|
||||
LoggerFilename = gamespy_natneg_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyServerBrowserServer]
|
||||
IP = 0.0.0.0
|
||||
Port = 28910
|
||||
LoggerName = GameSpyServerBrowserServer
|
||||
LoggerFilename = gamespy_server_browser_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyProfileServer]
|
||||
IP = 0.0.0.0
|
||||
Port = 29900
|
||||
LoggerName = GameSpyProfileServer
|
||||
LoggerFilename = gamespy_profile_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyPlayerSearchServer]
|
||||
IP = 0.0.0.0
|
||||
Port = 29901
|
||||
LoggerName = GameSpyPlayerSearchServer
|
||||
LoggerFilename = gamespy_player_search_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
||||
[GameSpyGamestatsServer]
|
||||
IP = 0.0.0.0
|
||||
Port = 29920
|
||||
LoggerName = GameSpyGamestatsServer
|
||||
LoggerFilename = gamespy_gamestats_server.log
|
||||
LoggerLevel = -1
|
||||
LoggerOutputConsole = ON
|
||||
LoggerOutputFile = ON
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
"""DWC Network Server Emulator
|
||||
"""DWC Network Server Emulator
|
||||
|
||||
Copyright (C) 2014 SMTDDR
|
||||
Copyright (C) 2014 kyle95wm
|
||||
|
|
@ -28,23 +28,50 @@ except ImportError:
|
|||
# Python 3
|
||||
import configparser as ConfigParser
|
||||
|
||||
import other.utils as utils
|
||||
|
||||
|
||||
def get_config_filename(filename='altwfc.cfg'):
|
||||
"""Return the config filename that will be used."""
|
||||
try:
|
||||
config = ConfigParser.RawConfigParser(allow_no_value=True)
|
||||
config.read(filename)
|
||||
if config.getboolean('Config', 'AlternativeConfig'):
|
||||
return config.get('Config', 'AlternativeConfigFile')
|
||||
except Exception as e:
|
||||
pass
|
||||
return filename
|
||||
|
||||
|
||||
def get_ip_port(section, filename='altwfc.cfg'):
|
||||
"""Return a tuple (IP, Port) of the corresponding section."""
|
||||
config = ConfigParser.RawConfigParser(allow_no_value=True)
|
||||
config.read(filename)
|
||||
config.read(get_config_filename(filename))
|
||||
return (config.get(section, 'IP'), config.getint(section, 'Port'))
|
||||
|
||||
|
||||
def get_ip(section, filename='altwfc.cfg'):
|
||||
"""Return the IP of the corresponding section."""
|
||||
config = ConfigParser.RawConfigParser(allow_no_value=True)
|
||||
config.read(filename)
|
||||
config.read(get_config_filename(filename))
|
||||
return config.get(section, 'IP')
|
||||
|
||||
|
||||
def get_port(section, filename='altwfc.cfg'):
|
||||
"""Return the port of the corresponding section."""
|
||||
config = ConfigParser.RawConfigParser(allow_no_value=True)
|
||||
config.read(filename)
|
||||
config.read(get_config_filename(filename))
|
||||
return config.getint(section, 'Port')
|
||||
|
||||
|
||||
def get_logger(section, filename='altwfc.cfg'):
|
||||
"""Return the logger of the corresponding section."""
|
||||
config = ConfigParser.RawConfigParser(allow_no_value=True)
|
||||
config.read(get_config_filename(filename))
|
||||
return utils.create_logger(
|
||||
config.get(section, 'LoggerName'),
|
||||
config.get(section, 'LoggerFilename'),
|
||||
config.getint(section, 'LoggerLevel'),
|
||||
config.getboolean(section, 'LoggerOutputConsole'),
|
||||
config.getboolean(section, 'LoggerOutputFile')
|
||||
)
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
<Compile Include="internal_stats_server.py" />
|
||||
<Compile Include="master_server.py" />
|
||||
<Compile Include="nas_server.py" />
|
||||
<Compile Include="register_page.py" />
|
||||
<Compile Include="storage_server.py" />
|
||||
<Compile Include="gamespy\gs_database.py" />
|
||||
<Compile Include="gamespy\gs_query.py" />
|
||||
|
|
|
|||
|
|
@ -56,6 +56,8 @@ from multiprocessing import freeze_support
|
|||
import other.utils as utils
|
||||
import dwc_config
|
||||
|
||||
logger = dwc_config.get_logger('GameSpyManager')
|
||||
|
||||
|
||||
class TokenType:
|
||||
UNKNOWN = 0
|
||||
|
|
@ -64,14 +66,6 @@ class TokenType:
|
|||
NUMBER = 3
|
||||
TOKEN = 4
|
||||
|
||||
# Logger settings
|
||||
logger_output_to_console = True
|
||||
logger_output_to_file = True
|
||||
logger_name = "GamespyBackendServer"
|
||||
logger_filename = "gamespy_backend_server.log"
|
||||
logger = utils.create_logger(logger_name, logger_filename, -1,
|
||||
logger_output_to_console, logger_output_to_file)
|
||||
|
||||
|
||||
class GameSpyServerDatabase(BaseManager):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -37,14 +37,7 @@ import gamespy.gs_utility as gs_utils
|
|||
import other.utils as utils
|
||||
import dwc_config
|
||||
|
||||
# Logger settings
|
||||
logger_output_to_console = True
|
||||
logger_output_to_file = True
|
||||
logger_name = "GameSpyGamestatsServer"
|
||||
logger_filename = "gamespy_gamestats_server.log"
|
||||
logger = utils.create_logger(logger_name, logger_filename, -1,
|
||||
logger_output_to_console, logger_output_to_file)
|
||||
|
||||
logger = dwc_config.get_logger('GameSpyGamestatsServer')
|
||||
address = dwc_config.get_ip_port('GameSpyGamestatsServer')
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -36,13 +36,7 @@ import traceback
|
|||
from multiprocessing.managers import BaseManager
|
||||
import dwc_config
|
||||
|
||||
# Logger settings
|
||||
logger_output_to_console = True
|
||||
logger_output_to_file = True
|
||||
logger_name = "GameSpyNatNegServer"
|
||||
logger_filename = "gamespy_natneg_server.log"
|
||||
logger = utils.create_logger(logger_name, logger_filename, -1,
|
||||
logger_output_to_console, logger_output_to_file)
|
||||
logger = dwc_config.get_logger('GameSpyNatNegServer')
|
||||
|
||||
|
||||
class GameSpyServerDatabase(BaseManager):
|
||||
|
|
|
|||
|
|
@ -32,14 +32,7 @@ import gamespy.gs_query as gs_query
|
|||
import other.utils as utils
|
||||
import dwc_config
|
||||
|
||||
# Logger settings
|
||||
logger_output_to_console = True
|
||||
logger_output_to_file = True
|
||||
logger_name = "GameSpyPlayerSearchServer"
|
||||
logger_filename = "gamespy_player_search_server.log"
|
||||
logger = utils.create_logger(logger_name, logger_filename, -1,
|
||||
logger_output_to_console, logger_output_to_file)
|
||||
|
||||
logger = dwc_config.get_logger('GameSpyPlayerSearchServer')
|
||||
address = dwc_config.get_ip_port('GameSpyPlayerSearchServer')
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -36,14 +36,7 @@ import gamespy.gs_utility as gs_utils
|
|||
import other.utils as utils
|
||||
import dwc_config
|
||||
|
||||
# Logger settings
|
||||
logger_output_to_console = True
|
||||
logger_output_to_file = True
|
||||
logger_name = "GameSpyProfileServer"
|
||||
logger_filename = "gamespy_profile_server.log"
|
||||
logger = utils.create_logger(logger_name, logger_filename, -1,
|
||||
logger_output_to_console, logger_output_to_file)
|
||||
|
||||
logger = dwc_config.get_logger('GameSpyProfileServer')
|
||||
address = dwc_config.get_ip_port('GameSpyProfileServer')
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -41,13 +41,7 @@ import other.utils as utils
|
|||
import dwc_config
|
||||
from gamespy_server_browser_server import GameSpyServerBrowserServer
|
||||
|
||||
# Logger settings
|
||||
logger_output_to_console = True
|
||||
logger_output_to_file = True
|
||||
logger_name = "GameSpyQRServer"
|
||||
logger_filename = "gamespy_qr_server.log"
|
||||
logger = utils.create_logger(logger_name, logger_filename, -1,
|
||||
logger_output_to_console, logger_output_to_file)
|
||||
logger = dwc_config.get_logger('GameSpyQRServer')
|
||||
|
||||
|
||||
class GameSpyServerDatabase(BaseManager):
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@ import dwc_config
|
|||
|
||||
from multiprocessing.managers import BaseManager
|
||||
|
||||
logger = dwc_config.get_logger('GameSpyServerBrowserServer')
|
||||
|
||||
|
||||
class ServerListFlags:
|
||||
UNSOLICITED_UDP_FLAG = 1
|
||||
|
|
@ -49,14 +51,6 @@ class ServerListFlags:
|
|||
HAS_KEYS_FLAG = 64
|
||||
HAS_FULL_RULES_FLAG = 128
|
||||
|
||||
# Logger settings
|
||||
logger_output_to_console = True
|
||||
logger_output_to_file = True
|
||||
logger_name = "GameSpyServerBrowserServer"
|
||||
logger_filename = "gamespy_server_browser_server.log"
|
||||
logger = utils.create_logger(logger_name, logger_filename, -1,
|
||||
logger_output_to_console, logger_output_to_file)
|
||||
|
||||
|
||||
class GameSpyServerDatabase(BaseManager):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -34,13 +34,7 @@ import gamespy.gs_utility as gs_utils
|
|||
import other.utils as utils
|
||||
import dwc_config
|
||||
|
||||
logger_output_to_console = True
|
||||
logger_output_to_file = True
|
||||
logger_name = "GameStatsServerHttp"
|
||||
logger_filename = "gamestats_server_http.log"
|
||||
logger = utils.create_logger(logger_name, logger_filename, -1,
|
||||
logger_output_to_console, logger_output_to_file)
|
||||
|
||||
logger = dwc_config.get_logger('GameStatsServerHttp')
|
||||
address = dwc_config.get_ip_port('GameStatsServerHttp')
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -30,12 +30,7 @@ import logging
|
|||
import other.utils as utils
|
||||
import dwc_config
|
||||
|
||||
logger_output_to_console = True
|
||||
logger_output_to_file = True
|
||||
logger_name = "InternalStatsServer"
|
||||
logger_filename = "internal_stats_server.log"
|
||||
logger = utils.create_logger(logger_name, logger_filename, -1,
|
||||
logger_output_to_console, logger_output_to_file)
|
||||
logger = dwc_config.get_logger('InternalStatsServer')
|
||||
|
||||
|
||||
class GameSpyServerDatabase(BaseManager):
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ from internal_stats_server import InternalStatsServer
|
|||
from admin_page_server import AdminPageServer
|
||||
from storage_server import StorageServer
|
||||
from gamestats_server_http import GameStatsServer
|
||||
from register_page import RegPageServer
|
||||
|
||||
import gamespy.gs_database as gs_database
|
||||
|
||||
|
|
@ -60,6 +61,7 @@ if __name__ == "__main__":
|
|||
NasServer,
|
||||
InternalStatsServer,
|
||||
AdminPageServer,
|
||||
RegPageServer,
|
||||
StorageServer,
|
||||
GameStatsServer,
|
||||
]
|
||||
|
|
|
|||
|
|
@ -35,12 +35,7 @@ import gamespy.gs_database as gs_database
|
|||
import other.utils as utils
|
||||
import dwc_config
|
||||
|
||||
logger_output_to_console = True
|
||||
logger_output_to_file = True
|
||||
logger_name = "NasServer"
|
||||
logger_filename = "nas_server.log"
|
||||
logger = utils.create_logger(logger_name, logger_filename, -1,
|
||||
logger_output_to_console, logger_output_to_file)
|
||||
logger = dwc_config.get_logger('NasServer')
|
||||
|
||||
# If a game from this list requests a file listing, the server will return
|
||||
# that only one exists and return a random one.
|
||||
|
|
@ -178,23 +173,28 @@ class NasHTTPServerHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
|||
"retry": "1",
|
||||
"reason": "User banned."
|
||||
}
|
||||
#Un-comment these lines to enable console registration feature
|
||||
#elif not self.server.db.pending(post):
|
||||
#logger.log(logging.DEBUG, "Login denied - Unknown console"+str(post))
|
||||
#ret = {
|
||||
#"datetime": time.strftime("%Y%m%d%H%M%S"),
|
||||
#"returncd": "3921",
|
||||
#"locator": "gamespy.com",
|
||||
#"retry": "1",
|
||||
#}
|
||||
#elif not self.server.db.registered(post):
|
||||
#logger.log(logging.DEBUG, "Login denied - console pending"+str(post))
|
||||
#ret = {
|
||||
#"datetime": time.strftime("%Y%m%d%H%M%S"),
|
||||
#"returncd": "3888",
|
||||
#"locator": "gamespy.com",
|
||||
#"retry": "1",
|
||||
#}
|
||||
# Un-comment these lines to enable console registration
|
||||
# feature
|
||||
# elif not self.server.db.pending(post):
|
||||
# logger.log(logging.DEBUG,
|
||||
# "Login denied - Unknown console %s",
|
||||
# post)
|
||||
# ret = {
|
||||
# "datetime": time.strftime("%Y%m%d%H%M%S"),
|
||||
# "returncd": "3921",
|
||||
# "locator": "gamespy.com",
|
||||
# "retry": "1",
|
||||
# }
|
||||
# elif not self.server.db.registered(post):
|
||||
# logger.log(logging.DEBUG,
|
||||
# "Login denied - console pending %s",
|
||||
# post)
|
||||
# ret = {
|
||||
# "datetime": time.strftime("%Y%m%d%H%M%S"),
|
||||
# "returncd": "3888",
|
||||
# "locator": "gamespy.com",
|
||||
# "retry": "1",
|
||||
# }
|
||||
else:
|
||||
challenge = utils.generate_random_str(8)
|
||||
post["challenge"] = challenge
|
||||
|
|
|
|||
122
register_page.py
122
register_page.py
|
|
@ -1,62 +1,69 @@
|
|||
# DWC Network Server Emulator
|
||||
# Copyright (C) 2014 SMTDDR
|
||||
# Copyright (C) 2014 kyle95wm
|
||||
# Copyright (C) 2014 AdmiralCurtiss
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
"""DWC Network Server Emulator
|
||||
|
||||
Copyright (C) 2014 SMTDDR
|
||||
Copyright (C) 2014 kyle95wm
|
||||
Copyright (C) 2014 AdmiralCurtiss
|
||||
Copyright (C) 2015 Sepalani
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
"""
|
||||
|
||||
from twisted.web import server, resource
|
||||
from twisted.internet import reactor
|
||||
from twisted.internet.error import ReactorAlreadyRunning
|
||||
import re
|
||||
import base64
|
||||
import codecs
|
||||
import codecs
|
||||
import sqlite3
|
||||
import collections
|
||||
import json
|
||||
import time
|
||||
import datetime
|
||||
import logging
|
||||
|
||||
import other.utils as utils
|
||||
import gamespy
|
||||
import gamespy.gs_utility as gs_utils
|
||||
import dwc_config
|
||||
|
||||
logger = dwc_config.get_logger('RegisterPage')
|
||||
_, port = dwc_config.get_ip_port('RegisterPage')
|
||||
|
||||
|
||||
class RegPage(resource.Resource):
|
||||
isLeaf = True
|
||||
|
||||
def __init__(self,regpage):
|
||||
def __init__(self, regpage):
|
||||
self.regpage = regpage
|
||||
|
||||
def get_header(self, title = None):
|
||||
def get_header(self, title=None):
|
||||
if not title:
|
||||
title = 'Register a Console'
|
||||
s = (
|
||||
'<html>'
|
||||
'<head>'
|
||||
'<title>' + title + '</title>'
|
||||
'</head>'
|
||||
'<body>'
|
||||
'<p>'
|
||||
'<b>Register a console</b>'
|
||||
'</p>'
|
||||
)
|
||||
s = """
|
||||
<html>
|
||||
<head>
|
||||
<title>%s</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<b>Register a console</b>
|
||||
</p>""" % title
|
||||
return s
|
||||
|
||||
|
||||
def get_footer(self):
|
||||
s = (
|
||||
'</body>'
|
||||
'</html>'
|
||||
)
|
||||
s = """
|
||||
</body>
|
||||
</html>"""
|
||||
return s
|
||||
|
||||
def update_maclist(self, request):
|
||||
|
|
@ -65,13 +72,21 @@ class RegPage(resource.Resource):
|
|||
macadr = request.args['macadr'][0].strip()
|
||||
actiontype = request.args['action'][0]
|
||||
macadr = macadr.lower()
|
||||
if not re.match("[0-9a-f]{2}([-:])[0-9a-f]{2}(\\1[0-9a-f]{2}){4}$", macadr):
|
||||
if not re.match("[0-9a-f]{2}([-:])[0-9a-f]{2}(\\1[0-9a-f]{2}){4}$",
|
||||
macadr):
|
||||
request.setResponseCode(500)
|
||||
return "The MAC you entered was invalid. Please click the back button and try again!"
|
||||
macadr = macadr.replace(":","").replace("-","")
|
||||
return "The MAC you entered was invalid." \
|
||||
"Please click the back button and try again!"
|
||||
macadr = macadr.replace(":", "").replace("-", "")
|
||||
if actiontype == 'add':
|
||||
dbconn.cursor().execute('insert into pending values(?)',(macadr,))
|
||||
responsedata = "Added %s to pending list. Please close this window now. It's also not a bad idea to check back on the status of your activation by attempting to connect your console to the server." % (macadr)
|
||||
dbconn.cursor().execute(
|
||||
'INSERT INTO pending VALUES(?)',
|
||||
(macadr,)
|
||||
)
|
||||
responsedata = "Added %s to pending list." % (macadr)
|
||||
responsedata += "Please close this window now."
|
||||
" It's also not a bad idea to check back on the status of your"
|
||||
" activation by attempting to connect your console to the server."
|
||||
dbconn.commit()
|
||||
dbconn.close()
|
||||
request.setHeader("Content-Type", "text/html; charset=utf-8")
|
||||
|
|
@ -87,13 +102,14 @@ class RegPage(resource.Resource):
|
|||
def render_maclist(self, request):
|
||||
address = request.getClientIP()
|
||||
dbconn = sqlite3.connect('gpcm.db')
|
||||
responsedata = (""
|
||||
"<form action='updatemaclist' method='POST'>"
|
||||
"macadr (must be in the format of aa:bb:cc:dd:ee:ff or aa-bb-cc-dd-ee-ff):<input type='text' name='macadr'>\r\n"
|
||||
"<input type='hidden' name='action' value='add'>\r\n"
|
||||
"<input type='submit' value='Register console'></form>\r\n"
|
||||
"<table border='1'>"
|
||||
"")
|
||||
responsedata = """
|
||||
<form action='updatemaclist' method='POST'>
|
||||
macadr (must be in the format of %s or %s):
|
||||
<input type='text' name='macadr'>
|
||||
<input type='hidden' name='action' value='add'>
|
||||
<input type='submit' value='Register console'>
|
||||
</form>
|
||||
<table border='1'>""" % ('aa:bb:cc:dd:ee:ff', 'aa-bb-cc-dd-ee-ff')
|
||||
dbconn.close()
|
||||
request.setHeader("Content-Type", "text/html; charset=utf-8")
|
||||
return responsedata
|
||||
|
|
@ -104,7 +120,7 @@ class RegPage(resource.Resource):
|
|||
if request.path == "/register":
|
||||
title = 'Register a Console'
|
||||
response = self.render_maclist(request)
|
||||
|
||||
|
||||
return self.get_header(title) + response + self.get_footer()
|
||||
|
||||
def render_POST(self, request):
|
||||
|
|
@ -113,16 +129,20 @@ class RegPage(resource.Resource):
|
|||
else:
|
||||
return self.get_header() + self.get_footer()
|
||||
|
||||
port = 9998
|
||||
|
||||
class RegPageServer(object):
|
||||
def start(self):
|
||||
site = server.Site(RegPage(self))
|
||||
reactor.listenTCP(port, site)
|
||||
logger.log(logging.INFO,
|
||||
"Now listening for connections on port %d...",
|
||||
port)
|
||||
try:
|
||||
if reactor.running == False:
|
||||
if not reactor.running:
|
||||
reactor.run(installSignalHandlers=0)
|
||||
except ReactorAlreadyRunning:
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
RegPageServer().start()
|
||||
|
|
|
|||
|
|
@ -31,15 +31,11 @@ import other.utils as utils
|
|||
import gamespy.gs_database as gs_database
|
||||
import dwc_config
|
||||
|
||||
logger_output_to_console = True
|
||||
logger_output_to_file = True
|
||||
logger_name = "StorageServer"
|
||||
logger_filename = "storage_server.log"
|
||||
logger = utils.create_logger(logger_name, logger_filename, -1, logger_output_to_console, logger_output_to_file)
|
||||
|
||||
# Paths to ProxyPass: /SakeStorageServer, /SakeFileServer
|
||||
logger = dwc_config.get_logger('StorageServer')
|
||||
address = dwc_config.get_ip_port('StorageServer')
|
||||
|
||||
|
||||
def escape_xml(s):
|
||||
s = s.replace( "&", "&" )
|
||||
s = s.replace( '"', """ )
|
||||
|
|
@ -48,12 +44,14 @@ def escape_xml(s):
|
|||
s = s.replace( ">", ">" )
|
||||
return s
|
||||
|
||||
|
||||
class StorageServer(object):
|
||||
def start(self):
|
||||
httpd = StorageHTTPServer((address[0], address[1]), StorageHTTPServerHandler)
|
||||
logger.log(logging.INFO, "Now listening for connections on %s:%d...", address[0], address[1])
|
||||
httpd.serve_forever()
|
||||
|
||||
|
||||
class StorageHTTPServer(BaseHTTPServer.HTTPServer):
|
||||
def __init__(self, server_address, RequestHandlerClass):
|
||||
BaseHTTPServer.HTTPServer.__init__(self, server_address, RequestHandlerClass)
|
||||
|
|
@ -210,10 +208,14 @@ class StorageHTTPServer(BaseHTTPServer.HTTPServer):
|
|||
except TypeError:
|
||||
return 'UNKNOWN'
|
||||
|
||||
|
||||
class IllegalColumnAccessException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class FilterSyntaxException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class StorageHTTPServerHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
||||
def confirm_columns(self, columndata, table):
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user