Exemplo n.º 1
0
        Status HandleKnock(Request request)
        {
            Console.WriteLine("HandleKnock");

            Console.WriteLine(request.code);
            Console.WriteLine(request.message);

            Status status = new Status();

            status.version = Assembly.GetExecutingAssembly().GetName().Version.ToString();

            var notificationManager = NotificationManager.GetInstance();

            if (!notificationManager.CheckCode(request.code))
            {
                Console.WriteLine("Wrong Code!");
                status.status = 1;
                status.msg    = "Wrong code";

                return(status);
            }

            Console.WriteLine("Correct Code!");

            status.host = Environment.MachineName;


            try
            {
                notificationManager.ShowNotification(request.message);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                status.status = 2;
                status.msg    = "Unexpected Error";

                return(status);
            }

            status.status = 0;
            status.msg    = "Notification sent!";

            Console.WriteLine("Notification sent!");

            if (Properties.Settings.Default.ShowActivity)
            {
                status.game = notificationManager.GetCurrentGame();
            }


            return(status);
        }
Exemplo n.º 2
0
        Status HandleStatus(Request request)
        {
            Console.WriteLine("HandleStatus");


            Status status = new Status();

            status.version = Assembly.GetExecutingAssembly().GetName().Version.ToString();

            var notificationManager = NotificationManager.GetInstance();

            if (!notificationManager.CheckCode(request.code))
            {
                Console.WriteLine("Wrong Code!");
                status.status = 1;
                status.msg    = "Wrong code";

                return(status);
            }

            status.host = Environment.MachineName;

            bool running = true;

            if (running)
            {
                status.status = 0;
                status.msg    = "Server and VR Controller Running!";
            }
            else
            {
                status.status = 1;
                status.msg    = "VR Controller not running";
            }

            if (!notificationManager.IsHmdPresent())
            {
                status.status = 1;
                status.msg    = "VR Headset is not connected";
                return(status);
            }

            if (Properties.Settings.Default.ShowActivity)
            {
                status.game = notificationManager.GetCurrentGame();
            }


            return(status);
        }
Exemplo n.º 3
0
        public InfoForm()
        {
            InitializeComponent();

            var manager = NotificationManager.GetInstance();
            var qrcode  = manager.GetQRCode();

            qrPictureBox.Image = qrcode.GetGraphic(3);

            hostTextBox.Text = NotificationManager.GetLocalIPAddress();
            codeTextBox.Text = manager.connectionCode;

            autostartCheckbox.Checked              = Properties.Settings.Default.AutoStart;
            gameActivityCheckbox.Checked           = Properties.Settings.Default.ShowActivity;
            connectionMethodComboBox.SelectedIndex = connectionMethodComboBox.FindStringExact(Properties.Settings.Default.ConnectionMethod);

            versionLabel.Text     = Assembly.GetExecutingAssembly().GetName().Version.ToString();
            clientCountLabel.Text = CustomApplicationContext.GetClientCount().ToString() + " Client(s)";
        }
Exemplo n.º 4
0
        public CustomApplicationContext()
        {
            trayIcon = new NotifyIcon()
            {
                Text        = "VRKnockServer",
                Icon        = Properties.Resources.AppIcon,
                ContextMenu = new ContextMenu(new MenuItem[]
                {
                    new MenuItem("Info", Info),
                    new MenuItem("Exit", Exit)
                }),
                Visible = true
            };
            trayIcon.Click += Info;


            if (string.IsNullOrEmpty(Properties.Settings.Default.ServerId))
            {
                Properties.Settings.Default.ServerId = Guid.NewGuid().ToString();
                Properties.Settings.Default.Save();
            }

            Console.WriteLine("ServerId: " + Properties.Settings.Default.ServerId);

            Console.WriteLine("Adding Firewall Rule...");
            Program.AddFirewallRule();


            Console.WriteLine("ConnectionMethod: " + Properties.Settings.Default.ConnectionMethod);
            if (Properties.Settings.Default.ConnectionMethod == "DIRECT")
            {
                try
                {
                    Console.WriteLine("Starting WebSocket Server...");

                    var port = 16945;
                    socketServer = new WebSocketServer(port);
                    socketServer.AddWebSocketService <SocketServer>("/", () =>
                    {
                        return(innerSocketServer = new SocketServer());
                    });
                    socketServer.Start();

                    Console.WriteLine("Web Service Running!");
                    Console.WriteLine(socketServer.Address + ":" + port);

                    // Console.WriteLine(localIp);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    trayIcon.ShowBalloonTip(2000, "VRKnock", "Failed to start Server!", ToolTipIcon.Error);
                    return;
                }
            }
            else if (Properties.Settings.Default.ConnectionMethod == "BRIDGE")
            {
                try
                {
                    Console.WriteLine("Starting WebSocket Client...");


                    socketClient = new WebSocket("wss://bridge.vrknock.app")
                    {
                        Origin = "ws://" + Properties.Settings.Default.ServerId + ".servers.vrknock.app:16945"
                    };

                    _messageHandler = new SocketMessageHandler()
                    {
                        Send = (s, t) =>
                        {
                            socketClient.Send("{\"_type\":\"forward\",\"source\":\"" + Properties.Settings.Default.ServerId + "\",\"target\":\"" + t + "\",\"payload\":" + s + '}');
                            return(null);
                        }
                    };

                    socketClient.OnOpen += (sender, args) =>
                    {
                        Console.WriteLine("Connected to bridge!");

                        socketClient.Send("{\"_type\":\"register\",\"payload\":{\"type\":\"server\",\"serverId\":\"" + Properties.Settings.Default.ServerId + "\"}}");
                    };
                    socketClient.OnMessage += (sender, args) =>
                    {
                        Console.WriteLine(args.Data);
                        _messageHandler.OnMessage(args);
                    };

                    socketClient.ConnectAsync();



                    // Console.WriteLine(localIp);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    trayIcon.ShowBalloonTip(2000, "VRKnock", "Failed to connect to bridge!", ToolTipIcon.Error);
                    return;
                }
            }

            try
            {
                Console.WriteLine("Initializing VR...");
                NotificationManager.GetInstance().Init();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                trayIcon.ShowBalloonTip(2000, "VRKnock", "Failed to init VR! Please make sure SteamVR is running!",
                                        ToolTipIcon.Error);
                return;
            }

            Program.RegisterAutoLaunchApp();


            trayIcon.ShowBalloonTip(2000, "VRKnock", "Server Running!", ToolTipIcon.Info);
        }