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