private MongoDBClientConnection PrepareMongoClient(Models.MongoDBConnectionDetails connectionParameters)
        {
            MongoDBClientConnection connection = new MongoDBClientConnection();

            connection.MongoDBClient = new MongoClient(GetMongoSettings(connectionParameters));
            return(connection);
        }
        private MongoClientSettings GetMongoSettings(Models.MongoDBConnectionDetails connectionParameters)
        {
            MongoClientSettings settings = new MongoClientSettings
            {
                Server      = new MongoServerAddress(connectionParameters.HostName, (int)connectionParameters.forwardedPortLocal.BoundPort),
                RetryWrites = true
            };

            return(settings);
        }
Example #3
0
        private MongoClientSettings GetMongoSettings(Models.MongoDBConnectionDetails connectionParameters, out string logs)
        {
            logs = string.Empty;
            MongoClientSettings settings = new MongoClientSettings
            {
                Server      = new MongoServerAddress(connectionParameters.HostName, connectionParameters.Port),
                UseSsl      = connectionParameters.IsSslEnabled,
                RetryWrites = true
            };

            logs += "--- Basic MongoDB Settings has done. \n";
            if (connectionParameters.IsSslEnabled &&
                !connectionParameters.AuthenticationMechanism.Equals(Models.MongoAuthentication.X509))
            {
                settings.VerifySslCertificate           = !connectionParameters.IsSelfSignedEnabled;
                connectionParameters.SslCertificateData = FilePathHelper.ReadFile(Server, connectionParameters.SslClientCertificate);
                logs += "--- SSL Certificate data has been retrieved. \n";
                if (connectionParameters.SslCertificateData != null)
                {
                    logs += "--- SSL Certificate data not null. \n";
                    logs += "----CertificateData. \n" + System.Text.Encoding.UTF8.GetString(connectionParameters.SslCertificateData);
                    var certificate = string.IsNullOrEmpty(connectionParameters.SslCertificatePassword) ? new X509Certificate2(connectionParameters.SslCertificateData) : new X509Certificate2(connectionParameters.SslCertificateData, connectionParameters.SslCertificatePassword);
                    logs += "----CertificateAdded. \n";
                    settings.SslSettings = new SslSettings()
                    {
                        ClientCertificates = new[] { certificate }
                    };
                    logs += certificate.Subject;
                    logs += "--- Certificate has been added. \n";
                }
            }
            switch (connectionParameters.AuthenticationMechanism)
            {
            case Models.MongoAuthentication.SCRAM:
                break;

            case Models.MongoAuthentication.X509:
                settings.VerifySslCertificate = !connectionParameters.IsSelfSignedEnabled;
                settings.UseSsl = true;
                connectionParameters.SslCertificateData = FilePathHelper.ReadFile(Server, connectionParameters.SslClientCertificate);
                var certificate = string.IsNullOrEmpty(connectionParameters.SslCertificatePassword) ? new X509Certificate2(connectionParameters.SslCertificateData) : new X509Certificate2(connectionParameters.SslCertificateData, connectionParameters.SslCertificatePassword);
                settings.SslSettings = new SslSettings()
                {
                    ClientCertificates = new[] { certificate }
                };
                settings.Credential = MongoCredential.CreateMongoX509Credential(certificate.Subject.ToString().Replace("S=", "ST=").Replace(", ", ","));
                logs += "--- switch called for x509 \n";
                break;

            default:
                break;
            }
            logs += "--- settings has been returned. \n";
            return(settings);
        }
Example #4
0
 public JsonResult FormOne(Models.MongoDBConnectionDetails mongodbConnection)
 {
     try
     {
         MongoConnection mongoServer = GetMongoServer(mongodbConnection);
         return(Json(string.Concat(string.Join(",", mongoServer.MongoDBServer.GetDatabaseNames().ToList()), "_________________", mongoServer.MongoLogs), JsonRequestBehavior.AllowGet));
     }
     catch (Exception e)
     {
         return(Json(string.Concat(string.IsNullOrEmpty(e.Message) ? "":e.Message, "**********", e.InnerException == null?"":e.InnerException.Message, JsonRequestBehavior.AllowGet)));
     }
 }
Example #5
0
        private MongoDBClientConnection PrepareMongoClient(Models.MongoDBConnectionDetails connectionParameters)
        {
            MongoDBClientConnection connection = new MongoDBClientConnection();
            string logs = string.Empty;

            try
            {
                connection.MongoDBClient = new MongoClient(GetMongoSettings(connectionParameters, out logs));
                connection.MongoLogs     = logs;
                return(connection);
            }
            catch (Exception ex)
            {
                throw new Exception(logs, ex);
            }
        }
Example #6
0
        private MongoConnection GetMongoServer(Models.MongoDBConnectionDetails connectionParameters)
        {
            MongoConnection         connection = new MongoConnection();
            MongoDBClientConnection mongoDBClientConnection = PrepareMongoClient(connectionParameters);

            try
            {
                connection.MongoDBServer = mongoDBClientConnection.MongoDBClient.GetServer();
                connection.MongoLogs     = mongoDBClientConnection.MongoLogs;
                connection.MongoDBServer.Connect();
                return(connection);
            }
            catch (Exception e)
            {
                throw new Exception(mongoDBClientConnection.MongoLogs, e);
            }
        }
 public JsonResult FormOne(Models.MongoDBConnectionDetails mongodbConnection)
 {
     try
     {
         CreateSSHTunnel(mongodbConnection, out string sSHLogs);
         MongoConnection mongoServer = GetMongoServer(mongodbConnection, out string mongoLogs);
         GetDatabases(mongoServer, out string databaseLogs);
         mongodbConnection.forwardedPortLocal.Stop();
         mongodbConnection.SshClient.Disconnect();
         return(Json(string.Concat(sSHLogs, mongoLogs, databaseLogs), JsonRequestBehavior.AllowGet));
         //return Json(string.Concat(string.Join(",",mongoServer.MongoDBServer.GetDatabaseNames().ToList()),"_________________", mongoServer.MongoLogs), JsonRequestBehavior.AllowGet);
     }
     catch (Exception e)
     {
         return(Json(string.Concat(string.IsNullOrEmpty(e.Message) ? "":e.Message, "**********", e.InnerException == null?"":e.InnerException.Message, JsonRequestBehavior.AllowGet)));
     }
 }
        private MongoConnection GetMongoServer(Models.MongoDBConnectionDetails connectionParameters, out string logs)
        {
            logs = string.Empty;
            MongoConnection         connection = new MongoConnection();
            MongoDBClientConnection mongoDBClientConnection = PrepareMongoClient(connectionParameters);

            try
            {
                connection.MongoDBServer = mongoDBClientConnection.MongoDBClient.GetServer();
                connection.MongoDBServer.Connect();
                logs += string.Format("Connected with MongoDB Server \n");
            }
            catch (Exception e)
            {
                logs += string.Format(e.Message);
            }
            return(connection);
        }
 private void CreateSSHTunnel(Models.MongoDBConnectionDetails connectionParameters, out string logs)
 {
     logs = string.Empty;
     try
     {
         string         fullPath = Path.Combine(Server.MapPath("~/Files/certificates/"), connectionParameters.SshPrivateKey);
         ConnectionInfo conn     = new ConnectionInfo(connectionParameters.SshHostName, int.Parse(connectionParameters.SshPort), connectionParameters.SshUserName, new PrivateKeyAuthenticationMethod(connectionParameters.SshUserName, new PrivateKeyFile(fullPath, connectionParameters.SshPassword)));
         connectionParameters.SshClient = new SshClient(conn);
         connectionParameters.SshClient.Connect();
         logs += string.Format("Connected with SSH Server \n");
         connectionParameters.forwardedPortLocal = new ForwardedPortLocal("127.0.0.1", connectionParameters.HostName, (uint)connectionParameters.Port);
         connectionParameters.SshClient.AddForwardedPort(connectionParameters.forwardedPortLocal);
         connectionParameters.forwardedPortLocal.Start();
         logs += string.Format("SSH Tunnel created \n");
     }
     catch (Exception e)
     {
         logs += string.Format(e.Message);
     }
 }