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 override void Prepare(Record parameter) { var record = Utils.DeepClone(parameter); Host = record.Host; Settings = record.TrojanGoSettings; }
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 })); }
public static string BuildTrojanGo(TrojanGoSettings settings) { StringBuilder strBuilder = new StringBuilder(); strBuilder.Append("trojan-go://"); strBuilder.Append($"{HttpUtility.UrlEncode(settings.Password)}@{settings.Domain}:{settings.Port}/?"); if (settings.EnableWebSocket) { strBuilder.Append($"type=ws&path={HttpUtility.UrlEncode(settings.WebSocketPath)}&"); } else { strBuilder.Append("type=original&"); } strBuilder.Append($"#{HttpUtility.UrlEncode("trojan-go")}"); return(strBuilder.ToString()); }
public override void Prepare(Record parameter) { _host = parameter.Host; _settings = parameter.TrojanGoSettings; }