import time import traceback from twisted.internet.protocol import Factory from twisted.internet.endpoints import serverFromString from twisted.protocols.basic import LineReceiver from twisted.internet import reactor from twisted.internet.error import ReactorAlreadyRunning import gamespy.gs_database as gs_database import gamespy.gs_query as gs_query import gamespy.gs_utility as gs_utils import other.utils as utils import dwc_config logger = dwc_config.get_logger('GameSpyProfileServer') address = dwc_config.get_ip_port('GameSpyProfileServer') class GameSpyProfileServer(object): def __init__(self): pass def start(self): endpoint = serverFromString( reactor, "tcp:%d:interface=%s" % (address[1], address[0])) conn = endpoint.listen(PlayerFactory()) try: if not reactor.running: reactor.run(installSignalHandlers=0)
""" import logging import urlparse import BaseHTTPServer import traceback import os import hashlib import base64 import gamespy.gs_database as gs_database import gamespy.gs_utility as gs_utils import other.utils as utils import dwc_config logger = dwc_config.get_logger('GameStatsServerHttp') address = dwc_config.get_ip_port('GameStatsServerHttp') class GameStatsBase(object): def do_GET(self, conn, key, append_hash, append_text=""): try: conn.send_response(200) conn.send_header("Content-type", "text/html") conn.send_header("Server", "Microsoft-IIS/6.0") conn.send_header("Server", "GSTPRDSTATSWEB2") conn.send_header("X-Powered-By", "ASP.NET") conn.end_headers() params = conn.str_to_dict(conn.path) ret = ""
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 from multiprocessing.managers import BaseManager import time import datetime import json import logging import other.utils as utils import dwc_config logger = dwc_config.get_logger('InternalStatsServer') class GameSpyServerDatabase(BaseManager): pass GameSpyServerDatabase.register("get_server_list") class StatsPage(resource.Resource): """Servers statistics webpage. Format attributes: - header - row - footer
http://wiki.tockdom.com/wiki/Server_NATNEG """ import logging import SocketServer import threading import time import Queue import gamespy.gs_utility as gs_utils import other.utils as utils import traceback from multiprocessing.managers import BaseManager import dwc_config logger = dwc_config.get_logger('GameSpyNatNegServer') class GameSpyServerDatabase(BaseManager): pass GameSpyServerDatabase.register("get_server_list") GameSpyServerDatabase.register("modify_server_list") GameSpyServerDatabase.register("find_servers") GameSpyServerDatabase.register("find_server_by_address") GameSpyServerDatabase.register("find_server_by_local_address") GameSpyServerDatabase.register("add_natneg_server") GameSpyServerDatabase.register("get_natneg_server") GameSpyServerDatabase.register("delete_natneg_server")
import random import logging import BaseHTTPServer import cgi import urlparse import sqlite3 import xml.dom.minidom as minidom import other.utils as utils import gamespy.gs_database as gs_database import dwc_config from io import BytesIO # 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('"', """) s = s.replace("'", "'") s = s.replace("<", "<") s = s.replace(">", ">") return s class StorageServer(object): def start(self): httpd = StorageHTTPServer((address[0], address[1]),
import base64 import logging import time import urlparse import BaseHTTPServer import SocketServer import os import random import traceback import gamespy.gs_database as gs_database import other.utils as utils import dwc_config 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. # This is used for Mystery Gift distribution on Generation 4 Pokemon games gamecodes_return_random_file = [ 'ADAD', 'ADAE', 'ADAF', 'ADAI', 'ADAJ', 'ADAK', 'ADAS', 'CPUD', 'CPUE', 'CPUF',
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/>. """ import logging import BaseHTTPServer import SocketServer import os import traceback from other import dlc, utils import dwc_config logger = dwc_config.get_logger('Dls1Server') def handle_post(handler, addr, post): """Handle unknown path.""" logger.log(logging.WARNING, "Unknown path request %s from %s:%d!", handler.path, *addr) handler.send_response(404) return None def handle_download_action(handler, dlc_path, post): """Handle unknown download action request.""" logger.log(logging.WARNING, "Unknown download action: %s", handler.path) handler.send_response(200) return None
import socket import struct import threading import time import Queue import traceback from multiprocessing.managers import BaseManager import gamespy.gs_utility as gs_utils import gamespy.gs_database as gs_database import other.utils as utils import dwc_config from gamespy_server_browser_server import GameSpyServerBrowserServer logger = dwc_config.get_logger('GameSpyQRServer') class GameSpyServerDatabase(BaseManager): pass class GameSpyQRServer(object): class Session(object): def __init__(self, address): self.session = "" self.challenge = "" self.secretkey = "" # Parse gslist.cfg later self.sent_challenge = False self.heartbeat_data = None self.address = address
server list. - server_browser will send a request with the game name followed by optional search parameters to get a list of servers. """ import logging import time import ast from multiprocessing.managers import BaseManager from multiprocessing import freeze_support from other.sql import sql_commands, LIKE import other.utils as utils import dwc_config logger = dwc_config.get_logger('GameSpyManager') class TokenType: UNKNOWN = 0 FIELD = 1 STRING = 2 NUMBER = 3 TOKEN = 4 class GameSpyServerDatabase(BaseManager): pass class GameSpyBackendServer(object):
import os import random import logging import BaseHTTPServer import cgi import urlparse import sqlite3 import xml.dom.minidom as minidom import other.utils as utils import gamespy.gs_database as gs_database import dwc_config # 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( '"', """ ) s = s.replace( "'", "'" ) s = s.replace( "<", "<" ) s = s.replace( ">", ">" ) return s class StorageServer(object): def start(self): httpd = StorageHTTPServer((address[0], address[1]), StorageHTTPServerHandler)
from twisted.internet.error import ReactorAlreadyRunning import re import base64 import codecs import sqlite3 import collections import json import time import datetime import logging import other.utils as utils 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): self.regpage = regpage def get_header(self, title=None): if not title: title = 'Register a Console' s = """ <html> <head>
import traceback import re from twisted.internet.protocol import Factory from twisted.internet.endpoints import serverFromString from twisted.protocols.basic import LineReceiver from twisted.internet import reactor from twisted.internet.error import ReactorAlreadyRunning import gamespy.gs_database as gs_database import gamespy.gs_query as gs_query import gamespy.gs_utility as gs_utils import other.utils as utils import dwc_config logger = dwc_config.get_logger('GameSpyGamestatsServer') address = dwc_config.get_ip_port('GameSpyGamestatsServer') class GameSpyGamestatsServer(object): def __init__(self): pass def start(self): endpoint_search = serverFromString( reactor, "tcp:%d:interface=%s" % (address[1], address[0])) conn_search = endpoint_search.listen(GamestatsFactory()) try: if not reactor.running: reactor.run(installSignalHandlers=0)
import logging import traceback from twisted.internet.protocol import Factory from twisted.internet.endpoints import serverFromString from twisted.protocols.basic import LineReceiver from twisted.internet import reactor from twisted.internet.error import ReactorAlreadyRunning import gamespy.gs_database as gs_database import gamespy.gs_query as gs_query import other.utils as utils import dwc_config logger = dwc_config.get_logger('GameSpyPlayerSearchServer') address = dwc_config.get_ip_port('GameSpyPlayerSearchServer') class GameSpyPlayerSearchServer(object): def __init__(self): pass def start(self): endpoint_search = serverFromString( reactor, "tcp:%d:interface=%s" % (address[1], address[0])) conn_search = endpoint_search.listen(PlayerSearchFactory()) try: if not reactor.running: reactor.run(installSignalHandlers=0)
- qr_server will send an add and/or delete to add or remove servers from the server list. - server_browser will send a request with the game name followed by optional search parameters to get a list of servers. """ import logging import time import ast from multiprocessing.managers import BaseManager from multiprocessing import freeze_support import other.utils as utils import dwc_config logger = dwc_config.get_logger('GameSpyManager') class TokenType: UNKNOWN = 0 FIELD = 1 STRING = 2 NUMBER = 3 TOKEN = 4 class GameSpyServerDatabase(BaseManager): pass class GameSpyBackendServer(object):
import time import traceback from twisted.internet.protocol import Factory from twisted.internet.endpoints import serverFromString from twisted.protocols.basic import LineReceiver from twisted.internet import reactor from twisted.internet.error import ReactorAlreadyRunning import gamespy.gs_database as gs_database import gamespy.gs_query as gs_query import gamespy.gs_utility as gs_utils import other.utils as utils import dwc_config logger = dwc_config.get_logger('GameSpyProfileServer') address = dwc_config.get_ip_port('GameSpyProfileServer') class GameSpyProfileServer(object): def __init__(self): pass def start(self): endpoint = serverFromString( reactor, "tcp:%d:interface=%s" % (address[1], address[0]) ) conn = endpoint.listen(PlayerFactory()) try:
import logging import traceback from twisted.internet.protocol import Factory from twisted.internet.endpoints import serverFromString from twisted.protocols.basic import LineReceiver from twisted.internet import reactor from twisted.internet.error import ReactorAlreadyRunning import gamespy.gs_database as gs_database import gamespy.gs_query as gs_query import other.utils as utils import dwc_config logger = dwc_config.get_logger('GameSpyPlayerSearchServer') address = dwc_config.get_ip_port('GameSpyPlayerSearchServer') class GameSpyPlayerSearchServer(object): def __init__(self): pass def start(self): endpoint_search = serverFromString( reactor, "tcp:%d:interface=%s" % (address[1], address[0]) ) conn_search = endpoint_search.listen(PlayerSearchFactory()) try:
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/>. """ import logging import time import BaseHTTPServer import SocketServer import traceback from gamespy import gs_database from other import utils import dwc_config logger = dwc_config.get_logger('NasServer') def handle_post(handler, addr, post): """Handle unknown path.""" logger.log(logging.WARNING, "Unknown path request %s from %s:%d!", handler.path, *addr) handler.send_response(404) return None def handle_ac_action(handler, db, addr, post): """Handle unknown ac action request.""" logger.log(logging.WARNING, "Unknown ac action: %s", handler.path) return {}
from twisted.web import server, resource from twisted.internet import reactor from twisted.internet.error import ReactorAlreadyRunning import base64 import codecs import sqlite3 import collections import json import os.path import logging import other.utils as utils import gamespy.gs_utility as gs_utils import dwc_config logger = dwc_config.get_logger('AdminPage') _, port = dwc_config.get_ip_port('AdminPage') # Example of adminpageconf.json # # {"username":"******","password":"******"} # # NOTE: Must use double-quotes or json module will fail # NOTE2: Do not check the .json file into public git! adminpageconf = None admin_username = None admin_password = None if os.path.exists('adminpageconf.json'): try:
""" import logging import socket import struct import threading import time import Queue import gamespy.gs_utility as gs_utils import other.utils as utils import traceback from multiprocessing.managers import BaseManager import dwc_config logger = dwc_config.get_logger('GameSpyNatNegServer') class GameSpyServerDatabase(BaseManager): pass GameSpyServerDatabase.register("get_server_list") GameSpyServerDatabase.register("modify_server_list") GameSpyServerDatabase.register("find_servers") GameSpyServerDatabase.register("find_server_by_address") GameSpyServerDatabase.register("find_server_by_local_address") GameSpyServerDatabase.register("add_natneg_server") GameSpyServerDatabase.register("get_natneg_server") GameSpyServerDatabase.register("delete_natneg_server")
import socket import traceback from twisted.internet.protocol import Factory from twisted.internet.endpoints import serverFromString from twisted.protocols.basic import LineReceiver from twisted.internet import reactor from twisted.internet.error import ReactorAlreadyRunning import gamespy.gs_utility as gs_utils import other.utils as utils import dwc_config from multiprocessing.managers import BaseManager logger = dwc_config.get_logger('GameSpyServerBrowserServer') class ServerListFlags: UNSOLICITED_UDP_FLAG = 1 PRIVATE_IP_FLAG = 2 CONNECT_NEGOTIATE_FLAG = 4 ICMP_IP_FLAG = 8 NONSTANDARD_PORT_FLAG = 16 NONSTANDARD_PRIVATE_PORT_FLAG = 32 HAS_KEYS_FLAG = 64 HAS_FULL_RULES_FLAG = 128 class GameSpyServerDatabase(BaseManager): pass
import time import traceback from twisted.internet.protocol import Factory from twisted.internet.endpoints import serverFromString from twisted.protocols.basic import LineReceiver from twisted.internet import reactor from twisted.internet.error import ReactorAlreadyRunning import gamespy.gs_database as gs_database import gamespy.gs_query as gs_query import gamespy.gs_utility as gs_utils import other.utils as utils import dwc_config logger = dwc_config.get_logger('GameSpyGamestatsServer') address = dwc_config.get_ip_port('GameSpyGamestatsServer') class GameSpyGamestatsServer(object): def __init__(self): pass def start(self): endpoint_search = serverFromString( reactor, "tcp:%d:interface=%s" % (address[1], address[0]) ) conn_search = endpoint_search.listen(GamestatsFactory()) try:
from twisted.web import server, resource from twisted.internet import reactor from twisted.internet.error import ReactorAlreadyRunning import base64 import codecs import sqlite3 import collections import json import os.path import logging import other.utils as utils import gamespy.gs_utility as gs_utils import dwc_config logger = dwc_config.get_logger('AdminPage') _, port = dwc_config.get_ip_port('AdminPage') # Example of adminpageconf.json # # {"username":"******","password":"******"} # # NOTE: Must use double-quotes or json module will fail # NOTE2: Do not check the .json file into public git! adminpageconf = None admin_username = None admin_password = None if os.path.exists('adminpageconf.json'):