public static string BuildCaddyConfig(TrojanGoSettings parameters, bool useCustomWeb = false)
        {
            var caddyStr = File.ReadAllText(CaddyFilePath);

            caddyStr.Replace("##domain##", parameters.Domain);
            caddyStr.Replace("##port##", WebPort.ToString());

            if (!useCustomWeb && !string.IsNullOrEmpty(parameters.MaskDomain))
            {
                var prefix = "http://";
                if (parameters.MaskDomain.StartsWith("https://"))
                {
                    prefix = "https://";
                }
                var domain = parameters.MaskDomain
                             .TrimStart("http://".ToCharArray())
                             .TrimStart("https://".ToCharArray());

                caddyStr = caddyStr.Replace("##reverse_proxy##", $"reverse_proxy {prefix}{domain} {{ \n        header_up Host {domain} \n    }}");
            }
            else
            {
                caddyStr = caddyStr.Replace("##reverse_proxy##", "");
            }

            return(caddyStr);
        }
        public static string BuildTrojanGoConfig(TrojanGoSettings parameters)
        {
            var jsonStr  = File.ReadAllText(TrojanGoSettingPath);
            var settings = JToken.FromObject(JsonConvert.DeserializeObject(jsonStr));

            settings["remote_port"] = WebPort;
            settings["password"][0] = parameters.Password;
            settings["ssl"]["sni"]  = parameters.Domain;

            return(JsonConvert.SerializeObject(settings, Formatting.Indented, new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore
            }));
        }