public AddRelayMapForm(MeshCentralServer meshcentral)
 {
     this.meshcentral = meshcentral;
     InitializeComponent();
     Translate.TranslateControl(this);
     updateInfo();
 }
        private void nextButton2_Click(object sender, EventArgs e)
        {
            if ((tokenTextBox.Text.Replace(" ", "") == "") && (sendEmailToken == false))
            {
                return;
            }

            // Attempt to login with token
            addButton.Enabled         = false;
            addRelayButton.Enabled    = false;
            openWebSiteButton.Visible = false;
            Uri serverurl = new Uri("wss://" + serverNameComboBox.Text + "/control.ashx");

            meshcentral            = new MeshCentralServer();
            meshcentral.ignoreCert = ignoreCert;
            if (lastBadConnectCert != null)
            {
                meshcentral.okCertHash = lastBadConnectCert.GetCertHashString();
            }
            meshcentral.onStateChanged      += Meshcentral_onStateChanged;
            meshcentral.onNodesChanged      += Meshcentral_onNodesChanged;
            meshcentral.onLoginTokenChanged += Meshcentral_onLoginTokenChanged;
            if (sendEmailToken == true)
            {
                sendEmailToken = false;
                meshcentral.connect(serverurl, userNameTextBox.Text, passwordTextBox.Text, "**email**");
            }
            else
            {
                meshcentral.connect(serverurl, userNameTextBox.Text, passwordTextBox.Text, tokenTextBox.Text.Replace(" ", ""));
            }
        }
示例#3
0
        // Starts the routing server, called when the start button is pressed
        public void start(MeshCentralServer parent, int protocol, int localPort, string url, int remotePort, string remoteIP)
        {
            this.parent     = parent;
            this.protocol   = protocol;
            this.remoteport = remotePort;
            this.remoteip   = remoteIP;
            this.url        = url;
            //wshash = serverHashTextBox.Text;

            Debug(string.Format("MeshMapper-Start: Protcol={0}, LocalPort={1}, Url={2}, RemotePort={3}, RemoteIP={4}", protocol, localPort, url, remotePort, remoteIP));

            if (protocol == 1)
            {
                // Start the TCP listener
                try
                {
                    if (listener != null)
                    {
                        return;
                    }
                    listener = new TcpListener(inaddrany ? IPAddress.Any : IPAddress.Loopback, localPort);
                    try { listener.Start(); } catch (Exception) { listener = null; }
                    if (listener != null)
                    {
                        listener.BeginAcceptTcpClient(new AsyncCallback(AcceptTcpClientSink), null);
                        localport = ((IPEndPoint)listener.LocalEndpoint).Port;
                        state     = 1;
                        UpdateInfo();
                    }
                    else
                    {
                        state = -1;
                        UpdateInfo();
                    }
                }
                catch (Exception ex) {
                    Debug(ex.ToString());
                    stop();
                }
            }
            else if (protocol == 2)
            {
                // Start websocket connection
                try
                {
                    IPEndPoint udpEndPoint = new IPEndPoint(inaddrany ? IPAddress.Any : IPAddress.Loopback, localPort);
                    UdpClient  client      = new UdpClient(udpEndPoint);
                    localport = ((IPEndPoint)client.Client.LocalEndPoint).Port;
                    state     = 1;
                    UpdateInfo();
                    ConnectWS(client, ++connectCounter);
                }
                catch (Exception ex) {
                    Debug(ex.ToString());
                    stop();
                }
            }
        }
            public bool Start(MeshCentralServer parent, Uri url, string user, string pass, string token, string fingerprint)
            {
                if (state != 0)
                {
                    return(false);
                }
                parent.changeState(1);
                state       = 1;
                this.parent = parent;
                this.url    = url;
                this.user   = user;
                this.pass   = pass;
                this.token  = token;
                Uri proxyUri = null;

                // Check if we need to use a HTTP proxy (Auto-proxy way)
                try {
                    RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
                    Object      x           = registryKey.GetValue("AutoConfigURL", null);
                    if ((x != null) && (x.GetType() == typeof(string)))
                    {
                        string proxyStr = GetProxyForUrlUsingPac("http" + ((url.Port == 80) ? "" : "s") + "://" + url.Host + ":" + url.Port, x.ToString());
                        if (proxyStr != null)
                        {
                            proxyUri = new Uri("http://" + proxyStr);
                        }
                    }
                } catch (Exception) { proxyUri = null; }

                // Check if we need to use a HTTP proxy (Normal way)
                if (proxyUri == null)
                {
                    var proxy = System.Net.HttpWebRequest.GetSystemWebProxy();
                    proxyUri = proxy.GetProxy(url);
                    if ((url.Host.ToLower() == proxyUri.Host.ToLower()) && (url.Port == proxyUri.Port))
                    {
                        proxyUri = null;
                    }
                }

                if (proxyUri != null)
                {
                    // Proxy in use
                    proxyInUse = true;
                    wsclient   = new TcpClient();
                    wsclient.BeginConnect(proxyUri.Host, proxyUri.Port, new AsyncCallback(OnConnectSink), this);
                }
                else
                {
                    // No proxy in use
                    proxyInUse = false;
                    wsclient   = new TcpClient();
                    wsclient.BeginConnect(url.Host, url.Port, new AsyncCallback(OnConnectSink), this);
                }
                return(true);
            }
示例#5
0
 public KVMViewer(MeshCentralServer server, NodeClass node)
 {
     InitializeComponent();
     this.Text                     += " - " + node.name;
     this.node                      = node;
     this.server                    = server;
     kvmControl                     = resizeKvmControl.KVM;
     kvmControl.parent              = this;
     kvmControl.DesktopSizeChanged += KvmControl_DesktopSizeChanged;
     resizeKvmControl.ZoomToFit     = true;
     UpdateStatus();
     this.MouseWheel += MainForm_MouseWheel;
 }
示例#6
0
        private void nextButton3_Click(object sender, EventArgs e)
        {
            // Attempt to login, ignore bad cert.
            addButton.Enabled         = false;
            addRelayButton.Enabled    = false;
            openWebSiteButton.Visible = false;
            Uri serverurl = new Uri("wss://" + serverNameComboBox.Text + "/control.ashx");

            meshcentral                      = new MeshCentralServer();
            meshcentral.debug                = debug;
            meshcentral.ignoreCert           = ignoreCert;
            meshcentral.onStateChanged      += Meshcentral_onStateChanged;
            meshcentral.onNodesChanged      += Meshcentral_onNodesChanged;
            meshcentral.onLoginTokenChanged += Meshcentral_onLoginTokenChanged;
            meshcentral.okCertHash           = lastBadConnectCert.GetCertHashString();
            meshcentral.connect(serverurl, userNameTextBox.Text, passwordTextBox.Text, null);
        }
示例#7
0
        public KVMViewer(MeshCentralServer server, NodeClass node)
        {
            InitializeComponent();
            Translate.TranslateControl(this);
            this.Text                     += " - " + node.name;
            this.node                      = node;
            this.server                    = server;
            kvmControl                     = resizeKvmControl.KVM;
            kvmControl.parent              = this;
            kvmControl.DesktopSizeChanged += KvmControl_DesktopSizeChanged;
            resizeKvmControl.ZoomToFit     = true;
            UpdateStatus();
            this.MouseWheel += MainForm_MouseWheel;

            mainToolTip.SetToolTip(connectButton, Translate.T(Properties.Resources.ToggleRemoteDesktopConnection));
            mainToolTip.SetToolTip(cadButton, Translate.T(Properties.Resources.SendCtrlAltDelToRemoteDevice));
            mainToolTip.SetToolTip(settingsButton, Translate.T(Properties.Resources.ChangeRemoteDesktopSettings));
            mainToolTip.SetToolTip(clipOutboundButton, Translate.T(Properties.Resources.PushLocaClipboardToRemoteDevice));
            mainToolTip.SetToolTip(clipInboundButton, Translate.T(Properties.Resources.PullClipboardFromRemoteDevice));
            mainToolTip.SetToolTip(zoomButton, Translate.T(Properties.Resources.ToggleZoomToFitMode));
            mainToolTip.SetToolTip(statsButton, Translate.T(Properties.Resources.DisplayConnectionStatistics));
        }
 public AddPortMapForm(MeshCentralServer meshcentral)
 {
     this.meshcentral = meshcentral;
     InitializeComponent();
 }
示例#9
0
        private void Meshcentral_onStateChanged(int state)
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new MeshCentralServer.onStateChangedHandler(Meshcentral_onStateChanged), state); return;
            }

            if (state == 0)
            {
                if (meshcentral.disconnectMsg == "tokenrequired")
                {
                    tokenTextBox.Text = ""; setPanel(2); tokenTextBox.Focus();
                }
                else
                {
                    setPanel(1);
                }
                if ((meshcentral.disconnectMsg != null) && meshcentral.disconnectMsg.StartsWith("noauth"))
                {
                    stateLabel.Text = "Invalid username or password"; stateLabel.Visible = true; stateClearTimer.Enabled = true; serverNameComboBox.Focus();
                }
                else if (meshcentral.disconnectMsg == "cert")
                {
                    lastBadConnectCert      = meshcentral.disconnectCert;
                    certDetailsTextBox.Text = "---Issuer---\r\n" + lastBadConnectCert.Issuer.Replace(", ", "\r\n") + "\r\n\r\n---Subject---\r\n" + lastBadConnectCert.Subject.Replace(", ", "\r\n");
                    setPanel(3);
                    certDetailsButton.Focus();
                }
                else if (meshcentral.disconnectMsg == null)
                {
                    stateLabel.Text = "Unable to connect"; stateLabel.Visible = true; stateClearTimer.Enabled = true; serverNameComboBox.Focus();
                }

                // Clean up the UI
                nextButton1.Enabled        = true;
                serverNameComboBox.Enabled = true;
                userNameTextBox.Enabled    = true;
                passwordTextBox.Enabled    = true;
                this.Text = title;

                // Clean up all mappings
                foreach (Control c in mapPanel.Controls)
                {
                    if (c.GetType() == typeof(MapUserControl))
                    {
                        ((MapUserControl)c).Dispose();
                        ((MapUserControl)c).Dispose();
                        mapPanel.Controls.Remove(c);
                    }
                }
                noMapLabel.Visible = true;

                // Clean up the server
                cookieRefreshTimer.Enabled  = false;
                meshcentral.onStateChanged -= Meshcentral_onStateChanged;
                meshcentral.onNodesChanged -= Meshcentral_onNodesChanged;
                meshcentral = null;
            }
            else if (state == 1)
            {
                stateLabel.Visible = false;
                //setPanel(1);
                nextButton1.Enabled        = false;
                serverNameComboBox.Enabled = false;
                userNameTextBox.Enabled    = false;
                passwordTextBox.Enabled    = false;
                cookieRefreshTimer.Enabled = false;
            }
            else if (state == 2)
            {
                meshcentral.disconnectMsg = "connected";
                stateLabel.Visible        = false;
                setPanel(4);
                addButton.Focus();
                saveToRegistry("ServerName", serverNameComboBox.Text);
                saveToRegistry("UserName", userNameTextBox.Text);
                this.Text = title + " - " + userNameTextBox.Text;
                cookieRefreshTimer.Enabled = true;
            }
        }
示例#10
0
        private void Meshcentral_onStateChanged(int state)
        {
            if (meshcentral == null)
            {
                return;
            }
            if (this.InvokeRequired)
            {
                this.Invoke(new MeshCentralServer.onStateChangedHandler(Meshcentral_onStateChanged), state); return;
            }

            if (state == 0)
            {
                if (meshcentral.disconnectMsg == "tokenrequired")
                {
                    emailTokenButton.Visible    = (meshcentral.disconnectEmail2FA == true) && (meshcentral.disconnectEmail2FASent == false);
                    tokenEmailSentLabel.Visible = (meshcentral.disconnectEmail2FASent == true) || (meshcentral.disconnectSms2FASent == true);
                    smsTokenButton.Visible      = ((meshcentral.disconnectSms2FA == true) && (meshcentral.disconnectSms2FASent == false));
                    if (meshcentral.disconnectEmail2FASent)
                    {
                        tokenEmailSentLabel.Text = "Email sent";
                    }
                    if (meshcentral.disconnectSms2FASent)
                    {
                        tokenEmailSentLabel.Text = "SMS sent";
                    }
                    if ((meshcentral.disconnectEmail2FA == true) && (meshcentral.disconnectEmail2FASent == false))
                    {
                        smsTokenButton.Left = emailTokenButton.Left + emailTokenButton.Width + 5;
                    }
                    else
                    {
                        smsTokenButton.Left = emailTokenButton.Left;
                    }
                    tokenTextBox.Text = "";
                    setPanel(2);
                    tokenTextBox.Focus();
                }
                else
                {
                    setPanel(1);
                }

                if ((meshcentral.disconnectMsg != null) && meshcentral.disconnectMsg.StartsWith("noauth"))
                {
                    stateLabel.Text         = "Invalid username or password";
                    stateLabel.Visible      = true;
                    stateClearTimer.Enabled = true;
                    serverNameComboBox.Focus();
                }
                else if ((meshcentral.disconnectMsg != null) && meshcentral.disconnectMsg.StartsWith("emailvalidationrequired"))
                {
                    stateLabel.Text         = "Email verification required";
                    stateLabel.Visible      = true;
                    stateClearTimer.Enabled = true;
                    serverNameComboBox.Focus();
                }
                else if (meshcentral.disconnectMsg == "cert")
                {
                    lastBadConnectCert      = meshcentral.disconnectCert;
                    certDetailsTextBox.Text = "---Issuer---\r\n" + lastBadConnectCert.Issuer.Replace(", ", "\r\n") + "\r\n\r\n---Subject---\r\n" + lastBadConnectCert.Subject.Replace(", ", "\r\n");
                    setPanel(3);
                    certDetailsButton.Focus();
                }
                else if (meshcentral.disconnectMsg == null)
                {
                    stateLabel.Text = "Unable to connect"; stateLabel.Visible = true; stateClearTimer.Enabled = true; serverNameComboBox.Focus();
                }

                // Clean up the UI
                nextButton1.Enabled        = true;
                serverNameComboBox.Enabled = true;
                userNameTextBox.Enabled    = true;
                passwordTextBox.Enabled    = true;
                this.Text = title;

                // Clean up all mappings
                foreach (Control c in mapPanel.Controls)
                {
                    if (c.GetType() == typeof(MapUserControl))
                    {
                        ((MapUserControl)c).Dispose();
                    }
                }
                mapPanel.Controls.Clear();
                noMapLabel.Visible = true;

                // Clean up all devices
                foreach (Control c in devicesPanel.Controls)
                {
                    if (c.GetType() == typeof(DeviceUserControl))
                    {
                        ((DeviceUserControl)c).Dispose();
                    }
                }
                remoteAllDeviceControls();
                noSearchResultsLabel.Visible = false;
                noDevicesLabel.Visible       = true;

                // Clean up the server
                cookieRefreshTimer.Enabled  = false;
                meshcentral.onStateChanged -= Meshcentral_onStateChanged;
                meshcentral.onNodesChanged -= Meshcentral_onNodesChanged;
                meshcentral = null;
            }
            else if (state == 1)
            {
                stateLabel.Visible = false;
                //setPanel(1);
                nextButton1.Enabled        = false;
                serverNameComboBox.Enabled = false;
                userNameTextBox.Enabled    = false;
                passwordTextBox.Enabled    = false;
                cookieRefreshTimer.Enabled = false;
            }
            else if (state == 2)
            {
                meshcentral.disconnectMsg = "connected";
                stateLabel.Visible        = false;
                setPanel(4);
                addButton.Focus();
                saveToRegistry("ServerName", serverNameComboBox.Text);
                saveToRegistry("UserName", userNameTextBox.Text);
                this.Text = title + " - " + userNameTextBox.Text;
                cookieRefreshTimer.Enabled = true;
            }
        }
示例#11
0
 public AddPortMapForm(MeshCentralServer meshcentral)
 {
     this.meshcentral = meshcentral;
     InitializeComponent();
     Translate.TranslateControl(this);
 }