public void Update()
        {
            var parseErrorNotifications = (int?)System.Runtime.Caching.MemoryCache.Default["ParseErrorNotifications"] ?? 0;

            try
            {
                var serverAdminJsonCreator = new ServerAdminJsonCreator();
                var serverAdminJson        = serverAdminJsonCreator.Create();
                var contents         = Encoding.UTF8.GetBytes(serverAdminJson);
                var host             = ConfigurationManager.AppSettings["FtpHost"];
                var port             = Convert.ToInt32(ConfigurationManager.AppSettings["FtpPort"]);
                var username         = ConfigurationManager.AppSettings["TgUsername"];
                var password         = ConfigurationManager.AppSettings["TgPassword"];
                var path             = ConfigurationManager.AppSettings["ConfigDirFtpPath"];
                var sftpFileUploader = new SftpFileUploader();
                sftpFileUploader.Upload(contents, host, port, username, password, $"{path}/ServerAdmin.json");
                System.Runtime.Caching.MemoryCache.Default["ParseErrorNotifications"] = 0;
            }
            catch (Exception e)
            {
                if (parseErrorNotifications > 0 && parseErrorNotifications <= 3)
                {
                    _messagePusher.Push("tgns-admin", "Update Error", $"Message: {e.Message}");
                }
                System.Runtime.Caching.MemoryCache.Default["ParseErrorNotifications"] = parseErrorNotifications + 1;
            }
        }
Example #2
0
        public JsonResult EditConfig(PluginsViewModel viewModel)
        {
            var message    = string.Empty;
            var isError    = false;
            var stacktrace = string.Empty;

            try
            {
                JsonConvert.DeserializeObject(viewModel.PluginConfigJson);
            }
            catch (Exception ex)
            {
                isError    = true;
                message    = "Config is not valid JSON. Correct JSON or Undo. Save operation aborted.";
                stacktrace = ex.StackTrace;
            }
            if (!isError)
            {
                _pluginConfigurationSetter.Set("ns2", "ns2", viewModel.SelectedPluginName, viewModel.PluginConfigJson);
                if (viewModel.SelectedPluginName.EndsWith(".json"))
                {
                    var contents         = Encoding.UTF8.GetBytes(viewModel.PluginConfigJson);
                    var host             = ConfigurationManager.AppSettings["FtpHost"];
                    var port             = Convert.ToInt32(ConfigurationManager.AppSettings["FtpPort"]);
                    var username         = ConfigurationManager.AppSettings["TgUsername"];
                    var password         = ConfigurationManager.AppSettings["TgPassword"];
                    var path             = ConfigurationManager.AppSettings["ConfigDirFtpPath"];
                    var sftpFileUploader = new SftpFileUploader();
                    sftpFileUploader.Upload(contents, host, port, username, password, $"{path}/{viewModel.SelectedPluginName}");
                    //ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
                    //FtpUrlTemplates.ForEach(x=>
                    //{
                    //    var contents = Encoding.UTF8.GetBytes(viewModel.PluginConfigJson);
                    //    var request = (FtpWebRequest)WebRequest.Create(string.Format(x, viewModel.SelectedPluginName));
                    //    request.Method = WebRequestMethods.Ftp.UploadFile;
                    //    request.EnableSsl = true;
                    //    request.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["WebAdminUsername"], ConfigurationManager.AppSettings["WebAdminPassword"]);
                    //    request.ContentLength = contents.Length;
                    //    using (var requestStream = request.GetRequestStream())
                    //    {
                    //        requestStream.Write(contents, 0, contents.Length);
                    //    }
                    //    using (var response = (FtpWebResponse) request.GetResponse())
                    //    {
                    //        //Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
                    //    }
                    //});
                }
                message = string.Format("{0} plugin config saved.", viewModel.SelectedPluginName);
            }
            return(Json(new { isError = isError, message = message, stacktrace = stacktrace }));
        }