コード例 #1
0
        public MinimalResponse Logout(SessionContextRequest request)
        {
            var response = new MinimalResponse();
            var session  = CheckSession(ref request, ref response);

            if (session != null)
            {
                try
                {
                    session.DisconnectAndRemoveAllConnections();
                    Sessions.Remove(request.Sid);

                    response.Success = true;
                    response.Message = Strings.SERVER_SIDE + string.Format(Strings.SESSION_LOGOUT, session.Username);
                }
                catch (Exception ex)
                {
                    response.Success = false;
                    response.Message = Strings.SERVER_SIDE + ex.Message;
                }
            }

            Log(response.Message, ESeverity.INFO);
            return(response);
        }
コード例 #2
0
ファイル: BdtClient.cs プロジェクト: qdwjfufu/Bdtunnel
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Arrêt du client
        /// </summary>
        /// -----------------------------------------------------------------------------
        public void StopClient()
        {
            // Nettoyage des serveurs de forwards et socks
            DisposeServers();

            if (Tunnel != null && _sid.HasValue)
            {
                // Tentative de logout
                try
                {
                    MinimalResponse response = Tunnel.Logout(new SessionContextRequest(_sid.Value));
                    Log(response.Message, ESeverity.INFO);
                }
// ReSharper disable EmptyGeneralCatchClause
                catch
// ReSharper restore EmptyGeneralCatchClause
                {
                    // Pas de gestion de l'erreur
                }
            }

            Tunnel = null;
            _sid   = null;

            // Nettoyage du tunnel
            Protocol.UnConfigureClient();
        }
コード例 #3
0
        public MinimalResponse KillSession(KillSessionRequest request)
        {
            var response      = new MinimalResponse();
            var targetsession = CheckSession(ref request, ref response);

            if (targetsession != null)
            {
                var fake         = new SessionContextRequest(request.AdminSid);
                var adminsession = CheckSession(ref fake, ref response);
                if (adminsession != null)
                {
                    if (adminsession.Admin)
                    {
                        try
                        {
                            targetsession.DisconnectAndRemoveAllConnections();
                            Sessions.Remove(request.Sid);

                            response.Success = true;
                            response.Message = Strings.SERVER_SIDE + String.Format(Strings.SESSION_KILLED, targetsession.Username, adminsession.Username);
                        }
                        catch (Exception ex)
                        {
                            response.Success = false;
                            response.Message = Strings.SERVER_SIDE + ex.Message;
                        }
                    }
                    else
                    {
                        response.Success = false;
                        response.Message = Strings.SERVER_SIDE + Strings.ADMIN_REQUIRED;
                    }
                }
            }

            Log(response.Message, ESeverity.INFO);
            return(response);
        }
コード例 #4
0
ファイル: ProtocolsTest.cs プロジェクト: qdwjfufu/Bdtunnel
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Test de valeurs incorrectes
        /// </summary>
        /// <param name="client">Le client du tunnel</param>
        /// <param name="port">Le port de base</param>
        /// -----------------------------------------------------------------------------
        private static void TestBadValues(BdtClient client, int port)
        {
            // Test Login method with bad values - access denied
            var bloginr = client.Tunnel.Login(new LoginRequest("foo", "foo"));

            Assert.IsFalse(bloginr.Success);
            Assert.IsTrue(bloginr.Message.Contains(String.Format(Server.Resources.Strings.ACCESS_DENIED, "foo")), "Deny access to non-user");

            // Test Login method with bad values - access denied (disabled)
            bloginr = client.Tunnel.Login(new LoginRequest(TestConfigPackage.UserDisabledLogin, TestConfigPackage.UserDisabledPassword));
            Assert.IsFalse(bloginr.Success);
            Assert.IsTrue(bloginr.Message.Contains(String.Format(Server.Resources.Strings.ACCESS_DENIED, TestConfigPackage.UserDisabledLogin)), "Deny access to disabled-user");

            // Test Login method with bad values - access denied (bad password)
            bloginr = client.Tunnel.Login(new LoginRequest(TestConfigPackage.UserLambdaLogin, "foo"));
            Assert.IsFalse(bloginr.Success);
            Assert.IsTrue(bloginr.Message.Contains(String.Format(Server.Resources.Strings.ACCESS_DENIED_BAD_PASSWORD, TestConfigPackage.UserLambdaLogin)), "Deny access - bad password");

            // Test logout method with bad values (bad sid)
            var blogoutr = client.Tunnel.Logout(new SessionContextRequest(-1));

            Assert.IsFalse(bloginr.Success);
            Assert.IsTrue(blogoutr.Message.Contains(Server.Resources.Strings.SID_NOT_FOUND), "Sid Logout");

            // Test monitor method with bad values (bad sid)
            var bmonr = client.Tunnel.Monitor(new SessionContextRequest(-1));

            Assert.IsFalse(bmonr.Success);
            Assert.IsTrue(bmonr.Message.Contains(Server.Resources.Strings.SID_NOT_FOUND), "Sid Monitor");
            Assert.IsNull(bmonr.Sessions);

            // Create valid session
            var lambdaloginr = client.Tunnel.Login(new LoginRequest(TestConfigPackage.UserLambdaLogin, TestConfigPackage.UserLambdaPassword));

            Assert.IsTrue(lambdaloginr.Success);

            // Test monitor method with bad values (admin privileges required)
            bmonr = client.Tunnel.Monitor(new SessionContextRequest(lambdaloginr.Sid));
            Assert.IsFalse(bmonr.Success);
            Assert.IsTrue(bmonr.Message.Contains(Server.Resources.Strings.ADMIN_REQUIRED), "Deny Monitor to non-admin user");
            Assert.IsNull(bmonr.Sessions);

            // Test killsession method with bad values (admin privileges required)
            var killsr = client.Tunnel.KillSession(new KillSessionRequest(lambdaloginr.Sid, lambdaloginr.Sid));

            Assert.IsFalse(killsr.Success);
            Assert.IsTrue(killsr.Message.Contains(Server.Resources.Strings.ADMIN_REQUIRED), "Deny KillSession to non-admin user");

            // Test killsession method with bad values (bad sid)
            killsr = client.Tunnel.KillSession(new KillSessionRequest(-1, -1));
            Assert.IsFalse(killsr.Success);
            Assert.IsTrue(killsr.Message.Contains(Server.Resources.Strings.SID_NOT_FOUND), "Sid KillSession");

            // Test killconnection method with bad values (bad cid)
            var killcr = client.Tunnel.KillConnection(new KillConnectionRequest(lambdaloginr.Sid, lambdaloginr.Sid, -1));

            Assert.IsFalse(killcr.Success);
            Assert.IsTrue(killcr.Message.Contains(Server.Resources.Strings.CID_NOT_FOUND), "Cid KillConnection");

            // Test killconnection method with bad values (bad sid)
            killcr = client.Tunnel.KillConnection(new KillConnectionRequest(-1, -1, -1));
            Assert.IsFalse(killcr.Success);
            Assert.IsTrue(killcr.Message.Contains(Server.Resources.Strings.SID_NOT_FOUND), "Sid KillConnection");

            // Test connect method with bad values (unknown host)
            var conr = client.Tunnel.Connect(new ConnectRequest(lambdaloginr.Sid, "host.unknown", port + GatewayOffset));

            Assert.IsFalse(conr.Success);
            Assert.IsFalse(conr.Connected);

            // Test connect method with bad values (port not listening)
            conr = client.Tunnel.Connect(new ConnectRequest(lambdaloginr.Sid, "localhost", 1));
            Assert.IsFalse(conr.Success);
            Assert.IsFalse(conr.Connected);

            // Create valid connection
            conr = client.Tunnel.Connect(new ConnectRequest(lambdaloginr.Sid, "localhost", port + GatewayOffset));
            Assert.IsTrue(conr.Success);
            Assert.IsTrue(conr.Connected);

            // Test killconnection method with bad values (admin privileges required)
            killcr = client.Tunnel.KillConnection(new KillConnectionRequest(lambdaloginr.Sid, lambdaloginr.Sid, conr.Cid));
            Assert.IsFalse(killcr.Success);
            Assert.IsTrue(killcr.Message.Contains(Server.Resources.Strings.ADMIN_REQUIRED), "Deny KillConnection to non-admin user");

            // Dispose valid connection
            var disr = client.Tunnel.Disconnect(new ConnectionContextRequest(lambdaloginr.Sid, conr.Cid));

            Assert.IsTrue(disr.Success);
            Assert.IsFalse(disr.Connected);

            // Dispose valid session
            MinimalResponse lambdalogoutr = client.Tunnel.Logout(new SessionContextRequest(lambdaloginr.Sid));

            Assert.IsTrue(lambdalogoutr.Success);
        }