private void ReplaceDstHostWithThisHost()
        {
            string hostRequestHeaderValue = protocolMachine.RequestMessage.HeaderList.Host;

            if (hostRequestHeaderValue != null)
            {
                var thisListener = new ConnectionTarget();
                thisListener.Parse(hostRequestHeaderValue, sourceConnectionType);
                var x  = Destination.ToString();
                var y  = thisListener.ToString();
                var bx = protocolMachine.ResponseMessage.Encoding.GetBytes(x);
                var by = protocolMachine.ResponseMessage.Encoding.GetBytes(y);
                if (protocolMachine.ResponseMessage.MessageBody.Contains(bx))
                {
                    View.PutLine("{0}: Rewrite: {1} ===> {2}", Name, x, y);
                    protocolMachine.ResponseMessage.MessageBody.Replace(bx, by);
                }
                bx = protocolMachine.ResponseMessage.Encoding.GetBytes(Destination.Hostname);
                by = protocolMachine.ResponseMessage.Encoding.GetBytes(thisListener.Hostname);
                if (protocolMachine.ResponseMessage.MessageBody.Contains(bx))
                {
                    View.PutLine("{0}: Rewrite: {1} ===> {2}", Name, Destination.Hostname, thisListener.Hostname);
                    protocolMachine.ResponseMessage.MessageBody.Replace(bx, by);
                }
            }
        }
Esempio n. 2
0
        public static void Connect(ConnectionTarget endpoint, string password, Action onConnect, Action onAbort)
        {
            Game.JoinServer(endpoint, password);
            Action <string> onRetry = newPassword => Connect(endpoint, newPassword, onConnect, onAbort);

            Ui.OpenWindow("CONNECTING_PANEL", new WidgetArgs()
            {
                { "endpoint", endpoint },
                { "onConnect", onConnect },
                { "onAbort", onAbort },
                { "onRetry", onRetry }
            });
        }
Esempio n. 3
0
        public static OrderManager JoinServer(ConnectionTarget endpoint, string password, bool recordReplay = true)
        {
            var connection = new NetworkConnection(endpoint);

            if (recordReplay)
            {
                connection.StartRecording(() => { return(TimestampedFilename()); });
            }

            var om = new OrderManager(endpoint, password, connection);

            JoinInner(om);
            return(om);
        }
Esempio n. 4
0
        public ConnectionLogic(Widget widget, ConnectionTarget endpoint, Action onConnect, Action onAbort, Action <string> onRetry)
        {
            this.onConnect = onConnect;
            this.onAbort   = onAbort;
            this.onRetry   = onRetry;

            Game.ConnectionStateChanged += ConnectionStateChanged;

            var panel = widget;

            panel.Get <ButtonWidget>("ABORT_BUTTON").OnClick = () => { CloseWindow(); onAbort(); };

            widget.Get <LabelWidget>("CONNECTING_DESC").GetText = () => $"Connecting to {endpoint}...";
        }
Esempio n. 5
0
    void Update()
    {
        // Sends virtual keyboards strokes to the TextMeshes for the IP address and the port.
        AbsorbInput();

        if (Input.GetKeyDown(KeyCode.Tab))
        {
            if (ConnectionTarget == ConnectionTarget.Controller)
            {
                ConnectionTarget = ConnectionTarget.Kinect;
            }
            else
            {
                ConnectionTarget = ConnectionTarget.Controller;
            }
        }
    }
Esempio n. 6
0
        public DirectConnectLogic(Widget widget, Action onExit, Action openLobby, ConnectionTarget directConnectEndPoint)
        {
            var panel     = widget;
            var ipField   = panel.Get <TextFieldWidget>("IP");
            var portField = panel.Get <TextFieldWidget>("PORT");

            var text = Game.Settings.Player.LastServer;
            var last = text.LastIndexOf(':');

            if (last < 0)
            {
                ipField.Text   = "localhost";
                portField.Text = "1234";
            }
            else
            {
                ipField.Text   = text.Substring(0, last);
                portField.Text = text.Substring(last + 1);
            }

            panel.Get <ButtonWidget>("JOIN_BUTTON").OnClick = () =>
            {
                var port = Exts.WithDefault(1234, () => Exts.ParseIntegerInvariant(portField.Text));

                Game.Settings.Player.LastServer = "{0}:{1}".F(ipField.Text, port);
                Game.Settings.Save();

                ConnectionLogic.Connect(new ConnectionTarget(ipField.Text, port), "", () => { Ui.CloseWindow(); openLobby(); }, DoNothing);
            };

            panel.Get <ButtonWidget>("BACK_BUTTON").OnClick = () => { Ui.CloseWindow(); onExit(); };

            if (directConnectEndPoint != null)
            {
                // The connection window must be opened at the end of the tick for the widget hierarchy to
                // work out, but we also want to prevent the server browser from flashing visible for one tick.
                widget.Visible = false;
                Game.RunAfterTick(() =>
                {
                    ConnectionLogic.Connect(directConnectEndPoint, "", () => { Ui.CloseWindow(); openLobby(); }, DoNothing);
                    widget.Visible = true;
                });
            }
        }
Esempio n. 7
0
        public static OrderManager JoinServer(ConnectionTarget endpoint, string password, bool recordReplay = true)
        {
            var newConnection = new NetworkConnection(endpoint);

            if (recordReplay)
            {
                newConnection.StartRecording(() => { return(TimestampedFilename()); });
            }

            var om = new OrderManager(newConnection);

            JoinInner(om);
            CurrentServerSettings.Password = password;
            CurrentServerSettings.Target   = endpoint;

            lastConnectionState = ConnectionState.PreConnecting;
            ConnectionStateChanged(OrderManager, password, newConnection);

            return(om);
        }
Esempio n. 8
0
        public static string ConnectionString(ConnectionTarget target)
        {
            string connectionString;

            switch (target)
            {
            case ConnectionTarget.Services:
                connectionString = WebConfigurationManager.ConnectionStrings["csServices"].ConnectionString;
                break;

            case ConnectionTarget.App:
                connectionString = WebConfigurationManager.ConnectionStrings["csApp"].ConnectionString;
                break;

            default:
                connectionString = null;
                break;
            }
            return(connectionString);
        }
Esempio n. 9
0
        public static DataTable ExecuteSelectQuery(string query, Dictionary <string, object> parameters, ConnectionTarget target)
        {
            DataTable result = new DataTable();

            QueryValidation(query);
            var parametersList = CreateParametersList(parameters);

            ParametersValidation(parametersList);
            try
            {
                using (SqlConnection connection = new SqlConnection(ConnectionString(target)))
                    using (SqlCommand command = new SqlCommand(query, connection))
                        using (SqlDataAdapter adapter = new SqlDataAdapter(command))
                        {
                            if (parametersList != null)
                            {
                                command.Parameters.AddRange(parametersList.ToArray());
                            }
                            connection.Open();
                            adapter.Fill(result);
                            command.Parameters.Clear();
                            connection.Close();
                        }
            }
            catch (Exception ex)
            {
                throw;
            }
            return(result);
        }
Esempio n. 10
0
        public MultiplayerLogic(Widget widget, ModData modData, Action onStart, Action onExit, ConnectionTarget directConnectEndPoint)
        {
            // MultiplayerLogic is a superset of the ServerListLogic
            // but cannot be a direct subclass because it needs to pass object-level state to the constructor
            serverListLogic = new ServerListLogic(widget, modData, Join);

            this.onStart = onStart;
            this.onExit  = onExit;

            var directConnectButton = widget.Get <ButtonWidget>("DIRECTCONNECT_BUTTON");

            directConnectButton.OnClick = () =>
            {
                Ui.OpenWindow("DIRECTCONNECT_PANEL", new WidgetArgs
                {
                    { "openLobby", OpenLobby },
                    { "onExit", DoNothing },
                    { "directConnectEndPoint", null },
                });
            };

            var createServerButton = widget.Get <ButtonWidget>("CREATE_BUTTON");

            createServerButton.OnClick = () =>
            {
                Ui.OpenWindow("MULTIPLAYER_CREATESERVER_PANEL", new WidgetArgs
                {
                    { "openLobby", OpenLobby },
                    { "onExit", DoNothing }
                });
            };

            var hasMaps = modData.MapCache.Any(p => !p.Visibility.HasFlag(MapVisibility.Shellmap));

            createServerButton.Disabled = !hasMaps;

            widget.Get <ButtonWidget>("BACK_BUTTON").OnClick = () => { Ui.CloseWindow(); onExit(); };

            if (directConnectEndPoint != null)
            {
                // The connection window must be opened at the end of the tick for the widget hierarchy to
                // work out, but we also want to prevent the server browser from flashing visible for one tick.
                widget.Visible = false;
                Game.RunAfterTick(() =>
                {
                    Ui.OpenWindow("DIRECTCONNECT_PANEL", new WidgetArgs
                    {
                        { "openLobby", OpenLobby },
                        { "onExit", DoNothing },
                        { "directConnectEndPoint", directConnectEndPoint },
                    });

                    widget.Visible = true;
                });
            }
        }
Esempio n. 11
0
 void Awake()
 {
     ConnectionTarget = ConnectionTarget.Controller;
 }
Esempio n. 12
0
 public OuterClientBase(string name, ConnectionTarget target)
 {
     Name   = name;
     Target = target;
 }
Esempio n. 13
0
        public void Run(string[] args)
        {
            if (args.Length == 0)
            {
                Help();
                return;
            }

            var e = args.GetEnumerator();

            while (e.MoveNext())
            {
                var a = ((string)e.Current).ToLowerInvariant();
                if (a == "-help" || a == "-h" || a == "-?")
                {
                    Help();
                    return;
                }
                else if (a == "-output" || a == "-out")
                {
                    if (e.MoveNext())
                    {
                        ViewFactory.Builder.SetPath((string)e.Current);
                        View = ViewFactory.CreateView();
                    }
                    else
                    {
                        throw new Exception(BAD_COMMAND_LINE_SYNTAX);
                    }
                }
                else if (a == "-target")
                {
                    if (e.MoveNext())
                    {
                        target = new ConnectionTarget();
                        if (!target.Parse((string)e.Current))
                        {
                            throw new Exception(BAD_TARGET);
                        }
                    }
                    else
                    {
                        throw new Exception(BAD_COMMAND_LINE_SYNTAX);
                    }
                }
                else if (a == "-address" || a == "-addr")
                {
                    if (e.MoveNext())
                    {
                        if (target == null)
                        {
                            throw new Exception(NO_TARGET);
                        }
                        target.Address = (string)e.Current;
                    }
                    else
                    {
                        throw new Exception(BAD_COMMAND_LINE_SYNTAX);
                    }
                }
                else if (a == "-port")
                {
                    if (e.MoveNext())
                    {
                        nonSecurePort = int.Parse((string)e.Current);
                    }
                    else
                    {
                        throw new Exception(BAD_COMMAND_LINE_SYNTAX);
                    }
                    if (nonSecurePort <= 0 || 65536 <= nonSecurePort)
                    {
                        throw new Exception(BAD_NPORT);
                    }
                }
                else if (a == "-secureport" || a == "-secport")
                {
                    if (e.MoveNext())
                    {
                        securePort = int.Parse((string)e.Current);
                    }
                    else
                    {
                        throw new Exception(BAD_COMMAND_LINE_SYNTAX);
                    }
                    if (securePort <= 0 || 65536 <= securePort)
                    {
                        throw new Exception(BAD_SPORT);
                    }
                }
                else if (a == "-certpath")
                {
                    if (e.MoveNext())
                    {
                        certificatePath = (string)e.Current;
                    }
                    else
                    {
                        throw new Exception(BAD_COMMAND_LINE_SYNTAX);
                    }
                }
                else if (a == "-certpassword" || a == "-certpasswd" || a == "-certpass")
                {
                    if (e.MoveNext())
                    {
                        certificatePassword = (string)e.Current;
                    }
                    else
                    {
                        throw new Exception(BAD_COMMAND_LINE_SYNTAX);
                    }
                }
                else if (a == "-shutdown")
                {
                    commandRequest = "shutdown";
                }
                else if (a == "-commandtarget" || a == "-cmdtarget")
                {
                    if (e.MoveNext())
                    {
                        commandTarget = (string)e.Current;
                    }
                    else
                    {
                        throw new Exception(BAD_COMMAND_LINE_SYNTAX);
                    }
                    var ss = commandTarget.Split(new char[] { ':' });
                    if (ss.Length == 2)
                    {
                        commandTarget = ss[0];
                        commandPort   = int.Parse(ss[1]);
                    }
                    else if (ss.Length != 1)
                    {
                        throw new Exception(BAD_COMMAND_LINE_SYNTAX);
                    }
                }
                else if (a == "-commandport" || a == "-cmdport")
                {
                    if (e.MoveNext())
                    {
                        commandPort = int.Parse((string)e.Current);
                    }
                    else
                    {
                        throw new Exception(BAD_COMMAND_LINE_SYNTAX);
                    }
                }
#if DEBUG
                else if (a == "-debug")
                {
                    System.Diagnostics.Debugger.Launch();
                }
#endif
                else
                {
                    throw new Exception(BAD_COMMAND_LINE_SYNTAX);
                }
            }

            if (target != null)
            {
                if (nonSecurePort == 0 && target.Type == ConnectionType.Raw)
                {
                    nonSecurePort = HttpConstants.HTTP_PORT;
                }
                if (nonSecurePort > 0)
                {
                    var nonSecureListener = new NonSecureListener()
                    {
                        Destination = target,
                        Port        = nonSecurePort
                    };
                    ListenerList.Add(nonSecureListener);
                }

                if ((certificatePath != null && certificatePassword == null) || (certificatePath == null && certificatePassword != null))
                {
                    throw new Exception(CERTIFICATE_PATH_AND_PASSWORD);
                }
                if (securePort == 0 && (target.Type == ConnectionType.Encrypted || certificatePath != null))
                {
                    securePort = HttpConstants.HTTPS_PORT;
                }
                if (securePort > 0)
                {
                    if (certificatePath == null || certificatePassword == null)
                    {
                        throw new Exception(CERTIFICATE_PATH_AND_PASSWORD);
                    }
                    var secureListener = new SecureListener()
                    {
                        Destination               = target,
                        Port                      = securePort,
                        ServerCertificatePath     = certificatePath,
                        ServerCertificatePassword = certificatePassword
                    };
                    ListenerList.Add(secureListener);
                }
            }

            if (ListenerList.Count > 0)
            {
                if (commandRequest != null)
                {
                    throw new Exception(EXCLUSIVE_REQUESTS);
                }

                var commandListener = new CommandListener()
                {
                    Port       = commandPort,
                    OnShutdown = ShutDown
                };
                ListenerList.Add(commandListener);

                foreach (var listener in ListenerList)
                {
                    listener.Start();
                }

                TerminateEvent.WaitOne();

                foreach (var listener in ListenerList)
                {
                    listener.Stop();
                }

                foreach (var listener in ListenerList)
                {
                    listener.Wait();
                }
            }
            else if (commandRequest != null)
            {
                var commandClient = new CommandClient()
                {
                    Hostname = commandTarget,
                    Port     = commandPort
                };
                commandClient.Send(commandRequest);
            }
            else
            {
                throw new Exception(BAD_COMMAND_LINE_SYNTAX);
            }
        }
Esempio n. 14
0
        public static int ExecuteNonQuery(string query, Dictionary <string, object> parameters, ConnectionTarget target)
        {
            int rowsAffected;

            QueryValidation(query);
            var parametersList = CreateParametersList(parameters);

            ParametersValidation(parametersList);
            try
            {
                using (SqlConnection connection = new SqlConnection(ConnectionString(target)))
                    using (SqlCommand command = new SqlCommand(query, connection))
                    {
                        if (parametersList != null)
                        {
                            command.Parameters.AddRange(parametersList.ToArray());
                        }
                        connection.Open();
                        rowsAffected = command.ExecuteNonQuery();
                        command.Parameters.Clear();
                        connection.Close();
                    }
            }
            catch (Exception ex)
            {
                throw;
            }
            return(rowsAffected);
        }
Esempio n. 15
0
 public static int ExecuteNonQuery(string query, ConnectionTarget target) => ExecuteNonQuery(query, null, target);
Esempio n. 16
0
        public static int?ExecuteIdentityQuery(string query, Dictionary <string, object> parameters, ConnectionTarget target)
        {
            int?scopeIdentity = null;

            QueryValidation(query);
            var parametersList = CreateParametersList(parameters);

            ParametersValidation(parametersList);
            query = query + Environment.NewLine + "SELECT SCOPE_IDENTITY();";
            try
            {
                using (SqlConnection connection = new SqlConnection(ConnectionString(target)))
                    using (SqlCommand command = new SqlCommand(query, connection))
                    {
                        if (parametersList != null)
                        {
                            command.Parameters.AddRange(parametersList.ToArray());
                        }
                        connection.Open();
                        scopeIdentity = Utils.ConvertToNullableInt(command.ExecuteScalar());
                        command.Parameters.Clear();
                        connection.Close();
                    }
            }
            catch (Exception ex)
            {
                throw;
            }
            return(scopeIdentity);
        }
Esempio n. 17
0
 public static int?ExecuteIdentityQuery(string query, ConnectionTarget target) => ExecuteIdentityQuery(query, null, target);
Esempio n. 18
0
 public static void RemoteDirectConnect(ConnectionTarget endpoint)
 {
     OnRemoteDirectConnect(endpoint);
 }
Esempio n. 19
0
 public static DataTable ExecuteSelectQuery(string query, ConnectionTarget target) => ExecuteSelectQuery(query, null, target);
Esempio n. 20
0
 public static object ExecuteScalarSelectQuery(string query, ConnectionTarget target) => ExecuteScalarSelectQuery(query, null, target);
 void Awake()
 {
     ConnectionTarget = ConnectionTarget.Kinect;
 }
Esempio n. 22
0
 public NonSecureOuterClient(int serialNumber, ConnectionTarget target)
     : base(string.Format("{0}/NonSecureOuterClient", serialNumber), target)
 {
 }