Example #1
0
        public override string ToString()
        {
            var options = new MstProperties();

            options.Add("Username", Username);
            options.Add("PeerId", PeerId);

            return(options.ToReadableString());
        }
Example #2
0
        public override string ToString()
        {
            var options = new MstProperties();

            options.Add("MachineIp", MachineIp);
            options.Add("MaxProcesses", MaxProcesses);
            options.Add("Region", string.IsNullOrEmpty(Region) ? "International" : Region);
            options.Append(CustomOptions);

            return(options.ToReadableString());
        }
Example #3
0
        public override string ToString()
        {
            var options = new MstProperties();

            options.Add("Product", Product);
            options.Add("Version", Version);
            options.Add("Comment", Comment);
            options.Add("RawValue", RawValue);

            return(options.ToReadableString());
        }
Example #4
0
        public override string ToString()
        {
            var options = new MstProperties(Options);

            if (options.IsValueEmpty(MstDictKeys.ROOM_REGION))
            {
                options.Set(MstDictKeys.ROOM_REGION, "International");
            }

            return(options.ToReadableString() + " " + CustomOptions.ToReadableString());
        }
Example #5
0
        public override string ToString()
        {
            var options = new MstProperties();

            options.Add("RoomIp", RoomIp);
            options.Add("RoomPort", RoomPort);
            options.Add("RoomId", RoomId);
            options.Add("Token", Token);
            options.Add("SceneName", SceneName);
            options.Append(CustomOptions);

            return($"[Room Access Info: {options.ToReadableString()}]");
        }
Example #6
0
        public override string ToString()
        {
            var options = new MstProperties();

            options.Add("Username", Username);
            options.Add("Email", Email);
            options.Add("Token", Token);
            options.Add("IsAdmin", IsAdmin);
            options.Add("IsGuest", IsGuest);
            options.Add("IsEmailConfirmed", IsEmailConfirmed);
            options.Append(Properties);

            return(options.ToReadableString());
        }
Example #7
0
        public override string ToString()
        {
            var options = new MstProperties();

            options.Add("Id", Id);
            options.Add("Username", Username);
            options.Add("Password", "**********");
            options.Add("Email", Email);
            options.Add("PhoneNumber", PhoneNumber);
            options.Add("Facebook", Facebook);
            options.Append(Properties);

            return(options.ToReadableString(";\n"));
        }
Example #8
0
        public override string ToString()
        {
            var options = new MstProperties();

            options.Add("RoomName", Name);
            options.Add("RoomIp", RoomIp);
            options.Add("RoomPort", RoomPort);
            options.Add("MaxConnections", MaxConnections <= 0 ? "Unlimited" : MaxConnections.ToString());
            options.Add("Use Password", !string.IsNullOrEmpty(Password));
            options.Add("AccessTimeoutPeriod", $"{AccessTimeoutPeriod} sec.");
            options.Add("AllowUsersRequestAccess", AllowUsersRequestAccess);
            options.Add("Region", string.IsNullOrEmpty(Region) ? "International" : Region);
            options.Append(CustomOptions);

            return(options.ToReadableString());
        }
Example #9
0
        public override string ToString()
        {
            var options = new MstProperties();

            options.Add("Id", Id);
            options.Add("Username", Username);
            options.Add("Email", Email);
            options.Add("PhoneNumber", PhoneNumber);
            options.Add("Facebook", Facebook);
            options.Add("Token", Token);
            options.Add("IsAdmin", IsAdmin);
            options.Add("IsGuest", IsGuest);
            options.Add("IsEmailConfirmed", IsEmailConfirmed);
            options.Append(Properties);

            return(options.ToReadableString(";\n"));
        }
Example #10
0
        public override string ToString()
        {
            var options = new MstProperties();

            options.Add("Ip", Ip);
            options.Add("IpDecimal", IpDecimal);
            options.Add("Country", Country);
            options.Add("CountryEu", CountryEu);
            options.Add("CountryIso", CountryIso);
            options.Add("City", City);
            options.Add("Latitude", Latitude);
            options.Add("Longitude", Longitude);
            options.Add("Asn", Asn);
            options.Add("AsnOrg", AsnOrg);
            options.Add("UserAgent", UserAgent?.ToString());

            return(options.ToReadableString());
        }
Example #11
0
        public override string ToString()
        {
            string maxPleyers = MaxPlayers <= 0 ? "Unlimited" : MaxPlayers.ToString();

            var options = new MstProperties();

            options.Add("Id", Id);
            options.Add("Address", Address);
            options.Add("Type", Type.ToString());
            options.Add("Name", Name);
            options.Add("Region", string.IsNullOrEmpty(Region) ? "International" : Region);
            options.Add("IsPasswordProtected", IsPasswordProtected);
            options.Add("MaxPlayers", maxPleyers);
            options.Add("OnlinePlayers", $"{OnlinePlayers}/{maxPleyers}");
            options.Append(Properties);

            return($"[GameInfo: {options.ToReadableString()}]");
        }
Example #12
0
        /// <summary>
        /// Start server with given port and ip
        /// </summary>
        /// <param name="listenToIp">IP который слшаем</param>
        /// <param name="listenToPort"></param>
        public virtual void StartServer(string listenToIp, int listenToPort)
        {
            if (IsRunning)
            {
                return;
            }

            MstProperties startInfo = new MstProperties();

            startInfo.Add("\tFPS is", Application.targetFrameRate);
            startInfo.Add("\tApp key", socket.ApplicationKey);
            startInfo.Add("\tSecure", socket.UseSecure);
            startInfo.Add("\tCertificate Path", !socket.UseSecure ? "Undefined" : socket.CertificatePath);
            startInfo.Add("\tCertificate Pass", string.IsNullOrEmpty(socket.CertificatePath) || !socket.UseSecure ? "Undefined" : "********");

            logger.Info($"Starting Server...\n{startInfo.ToReadableString(";\n", " ")}");

            socket.Listen(listenToIp, listenToPort);
            LookForModules();
            IsRunning = true;
            OnServerStartedEvent?.Invoke();
            OnStartedServer();
        }
Example #13
0
        /// <summary>
        /// Default spawn spawned process request handler that will be used by controller if <see cref="spawnRequestHandler"/> is not overriden
        /// </summary>
        /// <param name="data"></param>
        /// <param name="message"></param>
        public virtual void SpawnRequestHandler(SpawnRequestPacket data, IIncomingMessage message)
        {
            Logger.Debug($"Default spawn handler started handling a request to spawn process for spawn controller [{SpawnerId}]");

            /************************************************************************/
            // Create process args string
            var processArguments = new MstProperties();

            /************************************************************************/
            // Check if we're overriding an IP to master server
            var masterIpArgument = string.IsNullOrEmpty(SpawnSettings.MasterIp) ?
                                   Connection.ConnectionIp : SpawnSettings.MasterIp;

            // Create master IP arg
            processArguments.Set(Mst.Args.Names.MasterIp, masterIpArgument);

            /************************************************************************/
            /// Check if we're overriding a port to master server
            var masterPortArgument = SpawnSettings.MasterPort < 0 ? Connection.ConnectionPort : SpawnSettings.MasterPort;

            // Create master port arg
            processArguments.Set(Mst.Args.Names.MasterPort, masterPortArgument);

            /************************************************************************/
            // Machine Ip
            processArguments.Set(Mst.Args.Names.RoomIp, SpawnSettings.MachineIp);

            /************************************************************************/
            // Create port for room arg
            int machinePortArgument = Mst.Server.Spawners.GetAvailablePort();

            processArguments.Set(Mst.Args.Names.RoomPort, machinePortArgument);

            /************************************************************************/
            // Room Name
            //processArguments.Set(Mst.Args.Names.RoomName, $"\"{data.Options.AsString(MstDictKeys.roomName, "Room_" + Mst.Helper.CreateRandomString(6))}\"");

            /************************************************************************/
            // Room Region
            //processArguments.Set(Mst.Args.Names.RoomRegion, $"\"{SpawnSettings.Region}\"");

            /************************************************************************/
            // Room Max Connections
            //if (data.Options.Has(MstDictKeys.maxPlayers))
            //{
            //    processArguments.Set(Mst.Args.Names.RoomMaxConnections, data.Options.AsString(MstDictKeys.maxPlayers));
            //}

            /************************************************************************/
            // Get the scene name
            //if (data.Options.Has(MstDictKeys.sceneName))
            //{
            //    processArguments.Set(Mst.Args.Names.LoadScene, data.Options.AsString(MstDictKeys.sceneName));
            //}

            /************************************************************************/
            // Create use websockets arg
            //if (SpawnSettings.UseWebSockets)
            //{
            //    processArguments.Set(Mst.Args.Names.UseWebSockets, string.Empty);
            //}

            /************************************************************************/
            // Create spawn id arg
            processArguments.Set(Mst.Args.Names.SpawnTaskId, data.SpawnTaskId);

            /************************************************************************/
            // Create spawn code arg
            processArguments.Set(Mst.Args.Names.SpawnTaskUniqueCode, data.SpawnTaskUniqueCode);

            /************************************************************************/
            // Create custom args
            processArguments.Append(data.CustomOptions);

            /************************************************************************/
            // Path to executable
            var executablePath = SpawnSettings.ExecutablePath;

            if (string.IsNullOrEmpty(executablePath))
            {
                executablePath = File.Exists(Environment.GetCommandLineArgs()[0])
                    ? Environment.GetCommandLineArgs()[0]
                    : Process.GetCurrentProcess().MainModule.FileName;
            }

            // In case a path is provided with the request
            if (data.Options.Has(MstDictKeys.ROOM_EXE_PATH))
            {
                executablePath = data.Options.AsString(MstDictKeys.ROOM_EXE_PATH);
            }

            if (!string.IsNullOrEmpty(data.OverrideExePath))
            {
                executablePath = data.OverrideExePath;
            }

            /// Create info about starting process
            var startProcessInfo = new ProcessStartInfo(executablePath)
            {
                CreateNoWindow  = false,
                UseShellExecute = true,
                Arguments       = processArguments.ToReadableString(" ", " ")
            };

            Logger.Debug("Starting process with args: " + startProcessInfo.Arguments);

            var processStarted = false;

            try
            {
                new Thread(() =>
                {
                    try
                    {
                        using (var process = Process.Start(startProcessInfo))
                        {
                            Logger.Debug("Process started. Spawn Id: " + data.SpawnTaskId + ", pid: " + process.Id);
                            processStarted = true;

                            lock (processLock)
                            {
                                // Save the process
                                processes[data.SpawnTaskId] = process;
                            }

                            var processId = process.Id;

                            // Notify server that we've successfully handled the request
                            MstTimer.RunInMainThread(() =>
                            {
                                message.Respond(ResponseStatus.Success);
                                NotifyProcessStarted(data.SpawnTaskId, processId, startProcessInfo.Arguments);
                            });

                            process.WaitForExit();
                        }
                    }
                    catch (Exception e)
                    {
                        if (!processStarted)
                        {
                            MstTimer.RunInMainThread(() => { message.Respond(ResponseStatus.Failed); });
                        }

                        Logger.Error("An exception was thrown while starting a process. Make sure that you have set a correct build path. " +
                                     $"We've tried to start a process at [{executablePath}]. You can change it at 'SpawnerBehaviour' component");
                        Logger.Error(e);
                    }
                    finally
                    {
                        lock (processLock)
                        {
                            // Remove the process
                            processes.Remove(data.SpawnTaskId);
                        }

                        MstTimer.RunInMainThread(() =>
                        {
                            // Release the port number
                            Mst.Server.Spawners.ReleasePort(machinePortArgument);
                            Logger.Debug($"Notifying about killed process with spawn id [{data.SpawnTaskId}]");
                            NotifyProcessKilled(data.SpawnTaskId);
                        });
                    }
                }).Start();
            }
            catch (Exception e)
            {
                message.Respond(e.Message, ResponseStatus.Error);
                Logs.Error(e);
            }
        }