public virtual void Response(CDKeyServer server)
 {
     if (_sendingBuffer != null)
     {
         server.SendAsync(server.Socket.RemoteEndPoint, _sendingBuffer);
     }
 }
Example #2
0
        static void Main(string[] args)
        {
            Action <string, string> log = (category, message) => {
                lock (_lock) {
                    Log(String.Format("[{0}] {1}", category, message));
                }
            };

            Action <string, string> logError = (category, message) => {
                lock (_lock) {
                    LogError(String.Format("[{0}] {1}", category, message));
                }
            };

            IPAddress bind = IPAddress.Any;

            if (args.Length >= 1)
            {
                for (int i = 0; i < args.Length; i++)
                {
                    if (args[i].Equals("+bind"))
                    {
                        if ((i >= args.Length - 1) || !IPAddress.TryParse(args[i + 1], out bind))
                        {
                            LogError("+bind value must be a valid IP Address to bind to!");
                        }
                    }
                    else if (args[i].Equals("+db"))
                    {
                        if ((i >= args.Length - 1))
                        {
                            LogError("+db value must be a path to the database");
                        }
                        else
                        {
                            LoginDatabase.Initialize(args[i + 1], log, logError);
                        }
                    }
                }
            }

            if (!LoginDatabase.IsInitialized())
            {
                LogError("Error initializing database, please confirm parameter +db is valid");
                LogError("Press any key to continue");
                Console.ReadKey();
                return;
            }

            CDKeyServer        cdKeyServer        = new CDKeyServer(bind, 29910, log, logError);
            ServerListReport   serverListReport   = new ServerListReport(bind, 27900, log, logError);
            ServerListRetrieve serverListRetrieve = new ServerListRetrieve(bind, 28910, serverListReport, log, logError);
            LoginServer        loginServer        = new LoginServer(bind, 29900, 29901, log, logError);

            while (true)
            {
                Thread.Sleep(1000);
            }
        }
Example #3
0
 /// <summary>
 /// Starts a specific server
 /// </summary>
 /// <param name="cfg">The configuration of the specific server to run</param>
 protected override void StartServer(ServerConfig cfg)
 {
     if (cfg.Name == ServerName)
     {
         Server = new CDKeyServer(IPAddress.Parse(cfg.ListeningAddress), cfg.ListeningPort).Start();
         Console.WriteLine(
             StringExtensions.FormatServerTableContext(cfg.Name, cfg.ListeningAddress, cfg.ListeningPort.ToString()));
     }
 }
Example #4
0
        static void Main(string[] args)
        {
            args = new string[] { "+db", @"test.db" };

            IPAddress bind = IPAddress.Any;

            if (args.Length >= 1)
            {
                for (int i = 0; i < args.Length; i++)
                {
                    if (args[i].Equals("+bind"))
                    {
                        if ((i >= args.Length - 1) || !IPAddress.TryParse(args[i + 1], out bind))
                        {
                            logger.Error("+bind value must be a valid IP Address to bind to!");
                        }
                    }
                    else if (args[i].Equals("+db"))
                    {
                        if ((i >= args.Length - 1))
                        {
                            logger.Error("+db value must be a path to the database");
                        }
                        else
                        {
                            Database.Initialize(args[i + 1]);
                        }
                    }
                }
            }

            if (!Database.IsInitialized())
            {
                logger.Error("Error initializing database, please confirm parameter +db is valid");
                logger.Error("Press any key to continue");
                Console.ReadKey();
                return;
            }
            logger.Info("Database successful initialized");

            CDKeyServer cdKeyServer = new CDKeyServer(bind, 29910);
            //ServerListReport serverListReport = new ServerListReport(bind, 27900);
            //ServerNatNeg serverNatNeg = new ServerNatNeg(bind, 27901);
            ServerSteamIdsRetrieve serverSteamIdsRetrieve = new ServerSteamIdsRetrieve(bind, 27902);
            //ServerListRetrieve serverListRetrieve = new ServerListRetrieve(bind, 28910, serverListReport);
            //LoginServer loginServer = new LoginServer(bind, 29900, 29901);
            LoginServer loginServer = new LoginServer(bind, 29902, 29903);
            ChatServer  chatServer  = new ChatServer(bind, 6668);
            HttpServer  httpServer  = new HttpServer(bind, 80);
            StatsServer statsServer = new StatsServer(bind, 29920);

            while (true)
            {
                Thread.Sleep(1000);
            }
        }
Example #5
0
 /// <summary>
 /// Starts a specific server
 /// </summary>
 /// <param name="cfg">The configuration of the specific server to run</param>
 protected override void StartServer(ServerConfiguration cfg)
 {
     //if (cfg.Disabled)
     //    return;
     //LogWriter.Log.Write("Starting {2} server at  {0}:{1}.", LogLevel.Info, cfg.Hostname, cfg.Port, cfg.Name);
     //LogWriter.Log.Write("Maximum connections for {0} are {1}.", LogLevel.Info, cfg.Name, cfg.MaxConnections);
     if (cfg.Name == ServerName)
     {
         // case "GPCM":
         Server = new CDKeyServer(cfg.Name, databaseDriver, new IPEndPoint(IPAddress.Parse(cfg.Hostname), cfg.Port), cfg.MaxConnections);
         LogWriter.Log.Write(LogLevel.Info, "|{0,-11}|{1,-14}|{2,-6}|{3,14}|", cfg.Name, cfg.Hostname, cfg.Port, cfg.MaxConnections);
     }
 }
Example #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="str">MD5cdkey string</param>
        /// <returns></returns>
        public static void IsCDKeyValid(CDKeyServer server, EndPoint endPoint, Dictionary <string, string> recv)
        {
            //if (DBQuery.IsCDKeyValidate(recv["skey"]))
            //{
            //    string reply = string.Format(@"\uok\\cd\{0}\skey\{1}", recv["resp"].Substring(0, 32), recv["skey"]);

            //    server.SendAsync(endPoint, Enctypex.XorEncoding(reply,0));
            //}
            //else
            //{
            //    LogWriter.Log.Write( LogLevel.Debug, "Incomplete or Invalid CDKey Packet Received: {0}", recv);
            //    //TODO cdkey invalid response
            //}
        }
Example #7
0
        public static void Switch(CDKeyServer server, EndPoint endPoint, Dictionary <string, string> recv)
        {
            try
            {
                switch (recv.Keys.First())
                {
                //keep client alive request, we skip this
                case "ka":
                    Console.WriteLine("Received keep alive command");
                    break;

                case "auth":
                    break;

                case "resp":
                    break;

                case "skey":
                    SKeyHandler.IsCDKeyValid(server, endPoint, recv);
                    break;

                case "disc":    //disconnect from server
                    break;

                case "uon":
                    break;

                default:
                    server.UnknownDataRecived(recv);
                    break;
                }
            }
            catch (Exception e)
            {
                LogWriter.Log.WriteException(e);
            }
        }
 public virtual void CheckDatabaseResult(CDKeyServer server)
 {
 }
 public virtual void DataBaseOperation(CDKeyServer server)
 {
 }
Example #10
0
 public virtual void CheckRequest(CDKeyServer server)
 {
 }
Example #11
0
 public override void Handle(CDKeyServer server)
 {
 }
Example #12
0
        static void Main(string[] args)
        {
            Action <string, string> log = (category, message) => {
                lock (_lock) {
                    Log(String.Format("[{0}] {1}", category, message));
                }
            };

            Action <string, string> logError = (category, message) => {
                lock (_lock) {
                    LogError(String.Format("[{0}] {1}", category, message));
                }
            };

            bool   runLoginServer  = true;
            bool   runNatNegServer = true;
            bool   runCdKeyServer  = false;
            bool   runMasterServer = true;
            bool   runListServer   = true;
            string gameName        = null;

            IPAddress bind = IPAddress.Any;

            if (args.Length >= 1)
            {
                for (int i = 0; i < args.Length; i++)
                {
                    if (args[i].Equals("+bind"))
                    {
                        if ((i >= args.Length - 1) || !IPAddress.TryParse(args[i + 1], out bind))
                        {
                            LogError("+bind value must be a valid IP Address to bind to!");
                        }
                    }
                    else if (args[i].Equals("+db"))
                    {
                        if ((i >= args.Length - 1))
                        {
                            LogError("+db value must be a path to the database");
                        }
                        else
                        {
                            LoginDatabase.Initialize(args[i + 1], log, logError);
                        }
                    }
                    else if (args[i].Equals("+game"))
                    {
                        if ((i >= args.Length - 1))
                        {
                            //gameName = "civ4bts";
                            Log("supported games: civ4, civ4bts, civ4btsjp");
                        }
                        else
                        {
                            gameName = args[i + 1];
                        }
                    }
                    else if (args[i].Equals("+servers"))
                    {
                        if ((i >= args.Length - 1))
                        {
                            LogError("+servers value must be a comma-separated list of server types (master,login,cdkey,list,natneg)");
                        }
                        else
                        {
                            List <string> serverTypes = args[i + 1].Split(char.Parse(",")).Select(s => { return(s.Trim().ToLower()); }).ToList();
                            runLoginServer  = serverTypes.IndexOf("login") >= 0;
                            runNatNegServer = serverTypes.IndexOf("natneg") >= 0;
                            runListServer   = serverTypes.IndexOf("list") >= 0;
                            runMasterServer = serverTypes.IndexOf("master") >= 0;
                            runCdKeyServer  = serverTypes.IndexOf("cdkey") >= 0;
                        }
                    }
                }
            }

            if (runLoginServer && !LoginDatabase.IsInitialized())
            {
                LogError("Error initializing login database, please confirm parameter +db is valid");
                LogError("Press any key to continue");
                Console.ReadKey();
                return;
            }

            if (runCdKeyServer)
            {
                CDKeyServer serverCdKey = new CDKeyServer(bind, 29910, log, logError);
            }
            ServerListRetrieve serverListRetrieve = null;

            if (runMasterServer)
            {
                ServerListReport serverListReport = new ServerListReport(bind, 27900, log, logError, gameName);
                if (runListServer)
                {
                    serverListRetrieve = new ServerListRetrieve(bind, 28910, serverListReport, log, logError);
                }
            }
            ServerNatNeg serverNatNeg = null;

            if (runNatNegServer)
            {
                serverNatNeg = new ServerNatNeg(bind, 27901, log, logError);
            }
            if (runLoginServer)
            {
                LoginServer serverLogin = new LoginServer(bind, 29900, 29901, log, logError);
            }

            while (true)
            {
//*
                string command = Console.ReadLine();

                Log("Executing command: " + command);
                if (command == "/nndclear" && serverNatNeg != null)
                {
                    serverNatNeg.clientsClear(true);
                }
                else if (command == "/nndshow" && serverNatNeg != null)
                {
                    serverNatNeg.clientsClear(false);
                }
                else if (command == "/list" && serverListRetrieve != null)
                {
                    serverListRetrieve.printSLinfo();
                }
                else if (command == "/quit")
                {
                    Log("Good bye");
                    serverListRetrieve.Dispose();

                    Environment.Exit(0);
                }
                else
                {
                    Log("Unknown command");
                }
                //*/

                /*
                 * ConsoleKeyInfo cki = Console.ReadKey(false);
                 * Console.Write("You pressed ");
                 * if ((cki.Modifiers & ConsoleModifiers.Alt) != 0) Console.Write("ALT+");
                 * if ((cki.Modifiers & ConsoleModifiers.Shift) != 0) Console.Write("SHIFT+");
                 * if ((cki.Modifiers & ConsoleModifiers.Control) != 0) Console.Write("CTL+");
                 * Console.WriteLine("{0} (character '{1}')", cki.Key, cki.KeyChar);
                 */
                Thread.Sleep(1000);
            }
        }
Example #13
0
        static void Main(string[] args)
        {
            Action <string, string> log = (category, message) => {
                lock (_lock) {
                    Log(String.Format("[{0}] {1}", category, message));
                }
            };

            Action <string, string> logError = (category, message) => {
                lock (_lock) {
                    LogError(String.Format("[{0}] {1}", category, message));
                }
            };

            Action <string, string> logGreen = (category, message) =>
            {
                lock (_lock)
                {
                    LogGreen(String.Format("[{0}] {1}", category, message));
                }
            };
            Action <string, string> logBlue = (category, message) =>
            {
                lock (_lock)
                {
                    LogBlue(String.Format("[{0}] {1}", category, message));
                }
            };

            bool runLoginServer  = true;
            bool runNatNegServer = true;
            bool runCdKeyServer  = false;
            bool runMasterServer = true;
            bool runListServer   = true;

            LogGreen("Use /help command to get server's attention");

            IPAddress bind = IPAddress.Any;

            if (args.Length >= 1)
            {
                for (int i = 0; i < args.Length; i++)
                {
                    if (args[i].Equals("+bind"))
                    {
                        if ((i >= args.Length - 1) || !IPAddress.TryParse(args[i + 1], out bind))
                        {
                            LogError("+bind value must be a valid IP Address to bind to!");
                        }
                    }
                    else if (args[i].Equals("+db"))
                    {
                        if ((i >= args.Length - 1))
                        {
                            LogError("+db value must be a path to the database");
                        }
                        else
                        {
                            LoginDatabase.Initialize(args[i + 1], log, logError);
                        }
                    }
                    else if (args[i].Equals("+game"))
                    {
                        if ((i >= args.Length - 1))
                        {
                            //gameName = "civ4bts";
                            //Log("supported games: civ4, civ4bts, civ4btsjp");
                        }
                        else
                        {
                            gameName = args[i + 1];
                            //Program.gameNam1 = gameName;
                        }
                    }
                    else if (args[i].Equals("+servers"))
                    {
                        if ((i >= args.Length - 1))
                        {
                            LogError("+servers value must be a comma-separated list of server types (master,login,cdkey,list,natneg)");
                        }
                        else
                        {
                            List <string> serverTypes = args[i + 1].Split(char.Parse(",")).Select(s => { return(s.Trim().ToLower()); }).ToList();
                            runLoginServer  = serverTypes.IndexOf("login") >= 0;
                            runNatNegServer = serverTypes.IndexOf("natneg") >= 0;
                            runListServer   = serverTypes.IndexOf("list") >= 0;
                            runMasterServer = serverTypes.IndexOf("master") >= 0;
                            runCdKeyServer  = serverTypes.IndexOf("cdkey") >= 0;
                        }
                    }
                }
            }

            if (runLoginServer && !LoginDatabase.IsInitialized())
            {
                LogError("Error initializing login database, please confirm parameter +db is valid");
                LogError("Press any key to continue");
                Console.ReadKey();
                return;
            }

            if (runCdKeyServer)
            {
                CDKeyServer serverCdKey = new CDKeyServer(bind, 29910, log, logError);
            }
            if (runMasterServer)
            {
                ServerListReport serverListReport = new ServerListReport(bind, 27900, log, logError, gameName);
                if (runListServer)
                {
                    ServerListRetrieve serverListRetrieve = new ServerListRetrieve(bind, 28910 /*CHANGED FROM 28910*/, serverListReport, log, logError);
                }
            }
            if (runNatNegServer)
            {
                ServerNatNeg serverNatNeg = new ServerNatNeg(bind, 27901, log, logError);
            }
            if (runLoginServer)
            {
                LoginServer serverLogin = new LoginServer(bind, 29900, 29901, log, logError);
            }

            while (true)
            {
                string s = Console.ReadLine();
                if (s == "/help")
                {
                    LogBlue("type /list - to see current serverlist;");
                }
                else
                if (s == "/list")
                {
                    PRMasterServer.Servers.ServerListRetrieve.printSLinfo();
                }
                else
                if (s == "/decsht")
                {
                    PRMasterServer.Servers.ServerListRetrieve.DecodeShit();
                }                                                                                   //testing some stuff


                Thread.Sleep(500);
            }
        }