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); }
/// ----------------------------------------------------------------------------- /// <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(); }
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); }
/// ----------------------------------------------------------------------------- /// <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); }