Ejemplo n.º 1
0
def HandleHello(self, data):
    toSend = Packet().create()

    self.CONNOBJ.locale = data.get(
        "PacketData",
        'locale')  # Save locale for translated countryList and termsOfUse
    currentTime = strftime('%b-%d-%Y %H:%M:%S UTC')

    toSend.set("PacketData", "TXN", "Hello")
    toSend.set("PacketData", "domainPartition.domain", "eagames")
    toSend.set("PacketData", "domainPartition.subDomain", "bfwest-server")
    toSend.set("PacketData", "curTime", currentTime)
    toSend.set(
        "PacketData", "activityTimeoutSecs",
        "3600")  # We could let idle clients disconnect here automatically?
    toSend.set("PacketData", "messengerIp",
               readFromConfig("connection", "emulator_ip"))
    toSend.set("PacketData", "messengerPort",
               0)  # Unknown data are being send to this port
    toSend.set("PacketData", "theaterIp",
               readFromConfig("connection", "emulator_ip"))
    toSend.set("PacketData", "theaterPort",
               readFromConfig("connection", "theater_server_port"))

    self.CONNOBJ.IsUp = True

    Packet(toSend).send(self, "fsys", 0xC0000000, self.CONNOBJ.plasmaPacketID)
    SendMemCheck(self)
Ejemplo n.º 2
0
    def __init__(self, messageFrom, messageColor):
        init()

        self.messageFrom = messageFrom
        self.messageColor = messageColor

        self.logFile = readFromConfig("debug", "create_log")
        self.logTimestamp = readFromConfig("debug", "put_timestamp_in_log")
        self.fileLogLevel = int(readFromConfig("debug", "file_log_level"))
        self.consoleLogLevel = int(readFromConfig("debug",
                                                  "console_log_level"))

        self.useColors = readFromConfig("console", "use_colors")
Ejemplo n.º 3
0
def HandleGetLockerURL(self):
    toSend = Packet().create()
    toSend.set("PacketData", "TXN", "GetLockerURL")

    url = "http%3a//" + readFromConfig(
        "connection", "emulator_ip") + "/fileupload/locker2.jsp"

    toSend.set("PacketData", "URL", url)

    Packet(toSend).send(self, "acct", 0x80000000, self.CONNOBJ.plasmaPacketID)
Ejemplo n.º 4
0
def HandleHello(self, data):
    toSend = Packet().create()

    self.CONNOBJ.clientVersion = data.get("PacketData", "clientVersion")
    currentTime = strftime('%b-%d-%Y %H:%M:%S UTC')

    toSend.set("PacketData", "domainPartition.domain", "eagames")
    toSend.set("PacketData", "messengerIp", readFromConfig("connection", "emulator_ip"))
    toSend.set("PacketData", "messengerPort", 0)  # Unknown data are being send to this port
    toSend.set("PacketData", "domainPartition.subDomain", "BFBC2")
    toSend.set("PacketData", "TXN", "Hello")
    toSend.set("PacketData", "activityTimeoutSecs", 0)  # We could let idle clients disconnect here automatically?
    toSend.set("PacketData", "curTime", currentTime)
    toSend.set("PacketData", "theaterIp", readFromConfig("connection", "emulator_ip"))
    toSend.set("PacketData", "theaterPort", readFromConfig("connection", "theater_server_port"))

    Packet(toSend).send(self, "fsys", 0x80000000, self.CONNOBJ.plasmaPacketID)

    self.CONNOBJ.IsUp = True

    SendMemCheck(self)
Ejemplo n.º 5
0
def HandleGetPingSites(self):
    toSend = Packet().create()
    toSend.set("PacketData", "TXN", "GetPingSites")

    emuIp = readFromConfig("connection", "emulator_ip")

    toSend.set("PacketData", "pingSite.[]", "2")
    toSend.set("PacketData", "pingSite.0.addr", emuIp)
    toSend.set("PacketData", "pingSite.0.type", "0")
    toSend.set("PacketData", "pingSite.0.name", "gva")
    toSend.set("PacketData", "pingSite.1.addr", emuIp)
    toSend.set("PacketData", "pingSite.1.type", "1")
    toSend.set("PacketData", "pingSite.1.name", "nrt")
    toSend.set("PacketData", "minPingSitesToPing", "0")

    Packet(toSend).send(self, "fsys", 0xC0000000, self.CONNOBJ.plasmaPacketID)
Ejemplo n.º 6
0
    def __init__(self, showWelcomeMsg=False):
        dbFileLocation = readFromConfig("database", "db_file_path")

        if exists(dbFileLocation):
            if showWelcomeMsg:
                logger.new_message('Connected to database!', 1)
            self.connection = sqlite3.connect(dbFileLocation)
            self.cleanup()
        else:
            logger.new_message(
                'Database file not found! Initializing database...', 1)
            self.connection = sqlite3.connect(dbFileLocation)
            try:
                self.initializeDatabase()
                logger.new_message('Database initialized successfully!', 1)
            except Exception as DBError:
                logger_err.new_message(
                    'There is an problem with initializing database!\nAdditional Error Info:\n'
                    + str(DBError), 1)
                sys.exit(6)
Ejemplo n.º 7
0
def HandleGetTelemetryToken(self):
    toSend = Packet().create()
    toSend.set("PacketData", "TXN", "GetTelemetryToken")

    tokenbuffer = readFromConfig("connection", "emulator_ip")  # Messenger IP
    tokenbuffer += ","
    tokenbuffer += str(0)  # Messenger Port
    tokenbuffer += ","
    tokenbuffer += ",enUS,^Ů™¨Üś·Ć¤¤‰“ťĘ˙…Ź˛ŃĂÖ¬Ś±ďıˇ‚†Ś˛°Äݱ–†Ě›áî°ˇ‚†Ś˜°ŕŔƒ†Ě˛ąĘ‰»ƒ¦˜–Ĺ‚ťŠÔ©Ń©Ż„™’´ČŚ–±äŕł†Ś˜°îŔáŇĚŰŞÓ€"

    token = b64encode(tokenbuffer).replace("=", "%3d")

    toSend.set("PacketData", "telemetryToken", token)
    toSend.set(
        "PacketData", "enabled",
        "CA,MX,PR,US,VI,AD,AF,AG,AI,AL,AM,AN,AO,AQ,AR,AS,AW,AX,AZ,BA,BB,BD,BF,BH,BI,BJ,BM,BN,BO,BR,BS,BT,BV,BW,BY,BZ,CC,CD,CF,CG,CI,CK,CL,CM,CN,CO,CR,CU,CV,CX,DJ,DM,DO,DZ,EC,EG,EH,ER,ET,FJ,FK,FM,FO,GA,GD,GE,GF,GG,GH,GI,GL,GM,GN,GP,GQ,GS,GT,GU,GW,GY,HM,HN,HT,ID,IL,IM,IN,IO,IQ,IR,IS,JE,JM,JO,KE,KG,KH,KI,KM,KN,KP,KR,KW,KY,KZ,LA,LB,LC,LI,LK,LR,LS,LY,MA,MC,MD,ME,MG,MH,ML,MM,MN,MO,MP,MQ,MR,MS,MU,MV,MW,MY,MZ,NA,NC,NE,NF,NG,NI,NP,NR,NU,OM,PA,PE,PF,PG,PH,PK,PM,PN,PS,PW,PY,QA,RE,RS,RW,SA,SB,SC,clntSock,SG,SH,SJ,SL,SM,SN,SO,SR,ST,SV,SY,SZ,TC,TD,TF,TG,TH,TJ,TK,TL,TM,TN,TO,TT,TV,TZ,UA,UG,UM,UY,UZ,VA,VC,VE,VG,VN,VU,WF,WS,YE,YT,ZM,ZW,ZZ"
    )
    toSend.set("PacketData", "filters", "")
    toSend.set("PacketData", "disabled", "")

    Packet(toSend).send(self, "acct", 0x80000000, self.CONNOBJ.plasmaPacketID)
Ejemplo n.º 8
0
    def addDefaultEntitlements(self, forUserID):
        currentTime = strftime('%Y-%m-%dT%H:%MZ')

        defaultEntitlements = [
            (
                forUserID,
                'NoVetRank',
                "NFSNAM:PC:NOVETRANK",
                0,
                currentTime,
                "",
                "",
                "ACTIVE",
                "",
            ),
            (
                forUserID,
                '',
                "ONLINE_ACCESS",
                0,
                currentTime,
                "",
                "DR:156691300",
                "ACTIVE",
                "",
            ),
            (
                forUserID,
                'AddsVetRank',
                "NFS:PC:ADDSVETRANK",
                0,
                currentTime,
                "",
                "",
                "ACTIVE",
                "",
            ),  # sometimes clients don't have this in the packet...whatever
            (
                forUserID,
                'NFSPC',
                'BETA_ONLINE_ACCESS',
                0,
                currentTime,
                "",
                "OFB-BFBC:19121",
                "ACTIVE",
                "",
            )
        ]  # beta access is nice too (though it doesnt seem to affect anything)

        if readFromConfig("emulator", "new_players_have_vietnam"):
            defaultEntitlements.append(
                (forUserID, 'NFSPC', "NFS:PC:VIETNAM_ACCESS", 0, currentTime,
                 "", "DR:219316800", "ACTIVE", ""))
            defaultEntitlements.append(
                (forUserID, 'NFSPC', "NFS:PC:VIETNAM_PDLC", 0, currentTime, "",
                 "DR:219316800", "ACTIVE", ""))

        if readFromConfig("emulator", "new_players_have_premium"):
            defaultEntitlements.append(
                (forUserID, 'NFSPC', "NFS:PC:LimitedEdition", 1, currentTime,
                 "", "OFB-BFBC:19120", "ACTIVE", ""))

        if readFromConfig("emulator", "new_players_have_specact"):
            defaultEntitlements.append(
                (forUserID, 'NFSPC', "NFS:PC:ALLKIT", 0, currentTime, "",
                 "DR:192365600", "ACTIVE", ""))

        if readFromConfig("emulator", "new_players_are_veterans"):
            defaultEntitlements.append(
                (forUserID, 'AddsVetRank', "BF3:PC:ADDSVETRANK", 0,
                 currentTime, "", "OFB-EAST:40873", "ACTIVE", ""))

        for entitlement in defaultEntitlements:
            cursor = self.connection.cursor()
            cursor.execute(
                "INSERT INTO Entitlements (userID, groupName, entitlementTag, version, grantDate, terminationDate, productId, status, statusReasonCode) VALUES (?,?,?,?,?,?,?,?,?)",
                entitlement)

            self.connection.commit()
            cursor.close()
Ejemplo n.º 9
0
def MainApp():
    Log("Init", "\033[37m").new_message(
        "Initializing Battlefield Heroes Master Server Emulator...", 0)

    try:
        ssl_key = readFromConfig("SSL", "priv_key_path")
        ssl_cert = readFromConfig("SSL", "cert_file_path")
        fesl_client_port = int(readFromConfig("connection",
                                              "fesl_client_port"))
        fesl_server_port = int(readFromConfig("connection",
                                              "fesl_server_port"))
        theater_client_port = int(
            readFromConfig("connection", "theater_client_port"))
        theater_server_port = int(
            readFromConfig("connection", "theater_server_port"))
        http_server_port = int(readFromConfig("connection",
                                              "http_server_port"))
        https_server_port = int(
            readFromConfig("connection", "https_server_port"))
    except:
        Log("Init", "\033[37;41m").new_message(
            "Fatal Error!\n"
            "Failed to load certain values in the config.ini, be sure that EVERY "
            "option has a valid value and try it again.")
        sys.exit(2)

    try:
        Database(True)
    except Exception as DatabaseError:
        Log("Database", "\033[37;1;41m").new_message(
            "Fatal Error! Cannot initialize database!\n\n"
            "Additional error info:\n" + str(DatabaseError), 0)
        sys.exit(3)

    try:
        SSLContext = ssl.DefaultOpenSSLContextFactory(ssl_key, ssl_cert)
        Log("Init",
            "\033[37m").new_message("Successfully created SSL Context!", 2)
    except Exception as SSLErr:
        Log("Init", "\033[37;41m").new_message(
            "Fatal Error!\n"
            "Failed to create SSL Context!\n"
            "Make sure that you installed all required modules using\n"
            "`pip install -r requirements.txt`\n"
            "Also check if you specified correct SSL Cert and/or key in "
            "`config.ini`\n "
            "Additional error info:\n" + str(SSLErr), 0)
        sys.exit(4)

    try:
        factory = Factory()
        factory.protocol = FeslClient.HANDLER
        reactor.listenSSL(fesl_client_port, factory, SSLContext)
        Log("FeslClient", "\033[33;1m").new_message(
            "Created TCP Socket (now listening on port " +
            str(fesl_client_port) + ")", 1)
    except Exception as BindError:
        Log("Init", "\033[33;1;41m").new_message(
            "Fatal Error! Cannot bind socket to port: " +
            str(fesl_client_port) + "\n"
            "Make sure that this port aren't used by another program!\n\n"
            "Additional error info:\n" + str(BindError), 0)
        sys.exit(5)

    try:
        factory = Factory()
        factory.protocol = FeslServer.HANDLER
        reactor.listenSSL(fesl_server_port, factory, SSLContext)
        Log("FeslServer", "\033[32;1m").new_message(
            "Created TCP Socket (now listening on port " +
            str(fesl_server_port) + ")", 1)
    except Exception as BindError:
        Log("Init", "\033[33;1;41m").new_message(
            "Fatal Error! Cannot bind socket to port: " +
            str(fesl_server_port) + "\n"
            "Make sure that this port aren't used by another program!\n\n"
            "Additional error info:\n" + str(BindError), 0)
        sys.exit(5)

    try:
        factoryTCP = Factory()
        factoryTCP.protocol = TheaterClient.TCPHandler
        reactor.listenTCP(theater_client_port, factoryTCP)
        Log("TheaterClient", "\033[35;1m").new_message(
            "Created TCP Socket (now listening on port " +
            str(theater_client_port) + ")", 1)
        reactor.listenUDP(theater_client_port, TheaterClient.UDPHandler())
        Log("TheaterClient", "\033[35;1m").new_message(
            "Created UDP Socket (now listening on port " +
            str(theater_client_port) + ")", 1)
    except Exception as BindError:
        Log("Init", "\033[35;1;41m").new_message(
            "Fatal Error! Cannot bind socket to port: " +
            str(theater_client_port) + "\n"
            "Make sure that this port aren't used by another program!\n\n"
            "Additional error info:\n" + str(BindError), 0)
        sys.exit(5)

    try:
        factoryTCP = Factory()
        factoryTCP.protocol = TheaterServer.TCPHandler
        reactor.listenTCP(theater_server_port, factoryTCP)
        Log("TheaterServer", "\033[36;1m").new_message(
            "Created TCP Socket (now listening on port " +
            str(theater_server_port) + ")", 1)
        reactor.listenUDP(theater_server_port, TheaterServer.UDPHandler())
        Log("TheaterServer", "\033[36;1m").new_message(
            "Created UDP Socket (now listening on port " +
            str(theater_server_port) + ")", 1)
    except Exception as BindError:
        Log("Init", "\033[35;1;41m").new_message(
            "Fatal Error! Cannot bind socket to port: " +
            str(theater_server_port) + "\n"
            "Make sure that this port aren't used by another program!\n\n"
            "Additional error info:\n" + str(BindError), 0)
        sys.exit(5)

    try:
        site = Site(WebServer.Handler())
        reactor.listenTCP(http_server_port, site)
        Log("WebServer", "\033[36m").new_message(
            "Created TCP Socket (now listening on port " +
            str(http_server_port) + ")", 1)
    except Exception as BindError:
        Log("Init", "\033[35;1;41m").new_message(
            "Fatal Error! Cannot bind socket to port: " +
            str(http_server_port) + "\n"
            "Make sure that this port aren't used by another program!\n\n"
            "Additional error info:\n" + str(BindError), 0)
        sys.exit(5)

    try:
        site = Site(SecureWebServer.Handler())
        reactor.listenSSL(https_server_port, site, SSLContext)
        Log("WebServer", "\033[36m").new_message(
            "Created TCP Socket (now listening on port " +
            str(https_server_port) + ")", 1)
    except Exception as BindError:
        Log("Init", "\033[35;1;41m").new_message(
            "Fatal Error! Cannot bind socket to port: " +
            str(https_server_port) + "\n"
            "Make sure that this port aren't used by another program!\n\n"
            "Additional error info:\n" + str(BindError), 0)
        sys.exit(5)

    Log("Init", "\033[37m").new_message(
        "Finished initialization! Ready for receiving incoming connections...",
        0)

    reactor.run()