public ActionResult Index() { ConnectionSettingsModel connectionSettings = null; InstallationComponentsModel installedComponents = null; InstallationComponentsModel selectedComponents = null; InstallationProgressModel installationProgress = null; if (!string.IsNullOrEmpty(UserId)) { connectionSettings = CacheHelper.GetConnectionSettings(UserId); if (connectionSettings != null) { installedComponents = CacheHelper.GetInstalledComponents(UserId); selectedComponents = CacheHelper.GetSelectedComponents(UserId); installationProgress = CacheHelper.GetInstallationProgress(UserId); } else { CookieHelper.ClearCookie(); CacheHelper.ClearCache(UserId); } } ViewBag.ConnectionSettings = GetJsonString(connectionSettings); ViewBag.InstalledComponents = GetJsonString(installedComponents); ViewBag.SelectedComponents = GetJsonString(selectedComponents); ViewBag.InstallationProgress = GetJsonString(installationProgress); return(View()); }
private void CheckPreviousVersion(FileMap script) { using (var stream = SshClient.CreateShellStream("terminal", 150, 24, 800, 600, 1024)) { stream.WriteLine(string.Format("bash {0}", script.RemotePath)); var output = stream.Expect(Settings.InstallationStopPattern); if (output.Contains(Settings.InstallationSuccessPattern)) { InstallationComponents = new InstallationComponentsModel { MailServer = !string.IsNullOrEmpty(GetTerminalParam(output, "MAIL_SERVER_ID")), DocumentServer = !string.IsNullOrEmpty(GetTerminalParam(output, "DOCUMENT_SERVER_ID")), CommunityServer = !string.IsNullOrEmpty(GetTerminalParam(output, "COMMUNITY_SERVER_ID")) }; InstallationProgress.ProgressText += output; } if (output.Contains(Settings.InstallationErrorPattern)) { throw new Exception(output); } } CacheHelper.SetInstalledComponents(UserId, InstallationComponents.IsEmpty ? null : InstallationComponents); }
public JsonResult StartInstall(ConnectionSettingsModel connectionSettings, InstallationComponentsModel installationComponents) { try { var installedComponents = CacheHelper.GetInstalledComponents(UserId); if (installedComponents != null) { return(Json(new { success = false, message = OneClickHomePageResource.ExistVersionErrorText })); } if (!installationComponents.CommunityServer || !installationComponents.DocumentServer) { return(Json(new { success = false, message = OneClickCommonResource.ErrorRequiredComponents })); } if (installationComponents.MailServer && !ValidateDomainName(installationComponents.MailDomain)) { return(Json(new { success = false, message = OneClickJsResource.ErrorInvalidDomainName })); } CacheHelper.SetSelectedComponents(UserId, installationComponents); CacheHelper.SetInstallationProgress(UserId, new InstallationProgressModel()); SshHelper.StartInstallation(UserId, connectionSettings, installationComponents); return(Json(new { success = true, message = string.Empty, selectedComponents = GetJsonString(CacheHelper.GetSelectedComponents(UserId)), installationProgress = GetJsonString(CacheHelper.GetInstallationProgress(UserId)) })); } catch (Exception ex) { LogManager.GetLogger("ASC").Error(ex.Message, ex); CacheHelper.SetSelectedComponents(UserId, null); CacheHelper.SetInstallationProgress(UserId, null); return(Json(new { success = false, message = ex.Message })); } }
public InstallationManager(string userId, ConnectionSettingsModel connectionSettings, InstallationComponentsModel installationComponents = null) { UserId = userId; ConnectionInfo = GetConnectionInfo(connectionSettings); InstallationProgress = CacheHelper.GetInstallationProgress(userId) ?? new InstallationProgressModel(); InstallationComponents = installationComponents; }
public InstallationManager(string userId, ConnectionSettingsModel connectionSettings, InstallationComponentsModel installationComponents = null) { UserId = userId; LicenseKey = connectionSettings.LicenseKey; Enterprise = connectionSettings.Enterprise; ConnectionInfo = GetConnectionInfo(connectionSettings); InstallationProgress = CacheHelper.GetInstallationProgress(userId) ?? new InstallationProgressModel(); InstallationComponents = installationComponents; InstalledComponents = CacheHelper.GetInstalledComponents(userId) ?? new InstallationComponentsModel(); }
public static void SetSelectedComponents(string userId, InstallationComponentsModel value) { if (string.IsNullOrEmpty(userId)) { return; } var key = "selectedComponents" + userId; CacheSet(key, value, TimeSpan.FromDays(1)); }
public static InstallationComponentsModel InitializeAvailableTags(bool enterprise) { var available = new InstallationComponentsModel { CommunityServerVersion = GetLatestTagName(GetImageTags(enterprise ? Settings.DockerEnterpriseCommunityImageName : Settings.DockerCommunityImageName)), DocumentServerVersion = GetLatestTagName(GetImageTags(enterprise ? Settings.DockerEnterpriseDocumentImageName : Settings.DockerDocumentImageName)), MailServerVersion = GetLatestTagName(GetImageTags(enterprise ? Settings.DockerEnterpriseMailImageName : Settings.DockerMailImageName)), ControlPanelVersion = GetLatestTagName(GetImageTags(enterprise ? Settings.DockerEnterpriseControlPanelImageName : Settings.DockerControlPanelImageName)), }; CacheHelper.SetAvailableComponents(enterprise, available); return(available); }
public JsonResult Connect(ConnectionSettingsModel connectionSettings) { try { InstallationComponentsModel installedComponents = null; InstallationComponentsModel selectedComponents = null; InstallationProgressModel installationProgress = null; if (connectionSettings != null) { installedComponents = SshHelper.Connect(UserId, connectionSettings); installationProgress = CacheHelper.GetInstallationProgress(UserId); selectedComponents = CacheHelper.GetSelectedComponents(UserId); CacheHelper.SetConnectionSettings(UserId, connectionSettings); CacheHelper.SetInstalledComponents(UserId, installedComponents); } else { CookieHelper.ClearCookie(); CacheHelper.ClearCache(UserId); } return(Json(new { success = true, message = string.Empty, connectionSettings = GetJsonString(connectionSettings), installedComponents = GetJsonString(installedComponents), installationProgress = GetJsonString(installationProgress), selectedComponents = GetJsonString(selectedComponents) })); } catch (Exception ex) { LogManager.GetLogger("ASC").Error(ex.Message, ex); return(Json(new { success = false, message = ex.Message, errorCode = GetErrorCode(ex.Message) })); } }
public ActionResult Index(string id) { var enterprise = !string.IsNullOrEmpty(id) && id.ToLowerInvariant() == "enterprise"; ConnectionSettingsModel connectionSettings = null; InstallationComponentsModel availableComponents = CacheHelper.GetAvailableComponents(enterprise); InstallationComponentsModel installedComponents = null; InstallationComponentsModel selectedComponents = null; InstallationProgressModel installationProgress = null; OsInfo osInfo = null; if (!string.IsNullOrEmpty(UserId)) { connectionSettings = CacheHelper.GetConnectionSettings(UserId); if (connectionSettings != null) { installedComponents = CacheHelper.GetInstalledComponents(UserId); selectedComponents = CacheHelper.GetSelectedComponents(UserId); installationProgress = CacheHelper.GetInstallationProgress(UserId); osInfo = CacheHelper.GetOsInfo(UserId); } else { CookieHelper.ClearCookie(); CacheHelper.ClearUserCache(UserId); } } ViewBag.ConnectionSettings = GetJsonString(connectionSettings); ViewBag.AvailableComponents = GetJsonString(availableComponents); ViewBag.InstalledComponents = GetJsonString(installedComponents); ViewBag.SelectedComponents = GetJsonString(selectedComponents); ViewBag.InstallationProgress = GetJsonString(installationProgress); ViewBag.OsInfo = GetJsonString(osInfo); ViewBag.Enterprise = enterprise; if (!string.IsNullOrEmpty(Settings.CacheKey) && Request.Params["cache"] == Settings.CacheKey) { CacheHelper.ClearCache(); } return(View()); }
private void CheckPreviousVersion(FileMap script, bool useSudo) { var output = RunScript(null, script, useSudo, "-cc " + Settings.DockerCommunityContainerName, "-dc " + Settings.DockerDocumentContainerName, "-mc " + Settings.DockerMailContainerName, "-cpc " + Settings.DockerControlPanelContainerName); InstallationComponents = new InstallationComponentsModel { MailServerVersion = GetTerminalParam(output, "MAIL_SERVER_VERSION"), DocumentServerVersion = GetTerminalParam(output, "DOCUMENT_SERVER_VERSION"), CommunityServerVersion = GetTerminalParam(output, "COMMUNITY_SERVER_VERSION"), ControlPanelVersion = GetTerminalParam(output, "CONTROL_PANEL_VERSION"), LicenseFileExist = bool.Parse(GetTerminalParam(output, "LICENSE_FILE_EXIST")) }; CacheHelper.SetInstalledComponents(UserId, InstallationComponents.IsEmpty ? null : InstallationComponents); }
public static void SetAvailableComponents(bool enterprise, InstallationComponentsModel value) { CacheSet(enterprise ? "availableEnterpriseComponents" : "availableComponents", value, TimeSpan.FromDays(1)); }
public JsonResult StartInstall(InstallationComponentsModel installationComponents) { try { var connectionSettings = CacheHelper.GetConnectionSettings(UserId); var installedComponents = CacheHelper.GetInstalledComponents(UserId); if (connectionSettings.Enterprise && connectionSettings.LicenseKey == Settings.TrialFileName && !string.IsNullOrEmpty(Settings.LicenseUrl)) { if (installedComponents != null && installedComponents.LicenseFileExist) { throw new Exception(OneClickCommonResource.ErrorLicenseFileExist); } connectionSettings = RequestLicenseFile(connectionSettings, CacheHelper.GetRequestInfo(UserId)); } var mailServerAlreadyInstalled = installedComponents != null && !string.IsNullOrEmpty(installedComponents.MailServerVersion); if (!mailServerAlreadyInstalled && !string.IsNullOrEmpty(installationComponents.MailServerVersion) && !ValidateDomainName(installationComponents.MailDomain)) { return(Json(new { success = false, message = OneClickJsResource.ErrorInvalidDomainName })); } CacheHelper.SetSelectedComponents(UserId, installationComponents); CacheHelper.SetInstallationProgress(UserId, new InstallationProgressModel()); SshHelper.StartInstallation(UserId, connectionSettings, installationComponents); return(Json(new { success = true, message = string.Empty, selectedComponents = GetJsonString(CacheHelper.GetSelectedComponents(UserId)), installationProgress = GetJsonString(CacheHelper.GetInstallationProgress(UserId)) })); } catch (Exception ex) { LogManager.GetLogger("ASC").Error(ex.Message, ex); CacheHelper.SetSelectedComponents(UserId, null); CacheHelper.SetInstallationProgress(UserId, null); var code = 0; if (ex is ExternalException) { Int32.TryParse(Regex.Match(ex.Message, @"[\d+]").Value, out code); } return(Json(new { success = false, message = ex.Message, errorCode = code > 0 ? "External" + code : "unknown" })); } }
public JsonResult Connect(ConnectionSettingsModel connectionSettings, RequestInfoModel requestInfo) { try { InstallationComponentsModel installedComponents = null; InstallationComponentsModel selectedComponents = null; InstallationProgressModel installationProgress = null; OsInfo osInfo = null; if (connectionSettings != null) { if (connectionSettings.Enterprise) { if (string.IsNullOrEmpty(connectionSettings.LicenseKey)) { throw new ArgumentException("connectionSettings.licenseKey"); } if (connectionSettings.LicenseKey == Settings.TrialFileName && requestInfo == null) { throw new ArgumentNullException("requestInfo"); } } var data = SshHelper.Connect(UserId, connectionSettings); osInfo = data.Item1; installedComponents = data.Item2; installationProgress = CacheHelper.GetInstallationProgress(UserId); selectedComponents = CacheHelper.GetSelectedComponents(UserId); CacheHelper.SetConnectionSettings(UserId, connectionSettings); CacheHelper.SetInstalledComponents(UserId, installedComponents); CacheHelper.SetRequestInfo(UserId, requestInfo); } else { CookieHelper.ClearCookie(); CacheHelper.ClearUserCache(UserId); } return(Json(new { success = true, message = string.Empty, connectionSettings = GetJsonString(connectionSettings), installedComponents = GetJsonString(installedComponents), installationProgress = GetJsonString(installationProgress), selectedComponents = GetJsonString(selectedComponents), osInfo = GetJsonString(osInfo) })); } catch (Exception ex) { LogManager.GetLogger("ASC").Error(ex.Message, ex); return(Json(new { success = false, message = ex.Message, errorCode = GetErrorCode(ex.Message) })); } }
public static void StartInstallation(string userId, ConnectionSettingsModel connectionSettings, InstallationComponentsModel installationComponents) { ThreadPool.QueueUserWorkItem(delegate(object state) { var workerState = state as WorkerState; if (workerState == null) { return; } HttpContext.Current = workerState.Context; using (var installationManager = new InstallationManager(workerState.UserId, workerState.ConnectionSettings, workerState.InstallationComponents)) { installationManager.StartInstallation(); } }, new WorkerState { Context = HttpContext.Current, ConnectionSettings = connectionSettings, InstallationComponents = installationComponents, UserId = userId }); }