public HostEditPage(HostsViewModel viewModel, HostModel editHost) { InitializeComponent(); hostsModel = viewModel; addedOrEdit = editHost == null; Item = editHost ?? new HostModel() { SSLVerify = true }; ShowDeleteBtn = !addedOrEdit; EnableEditHostName = addedOrEdit; foreach (var h in Item.LoadBalance) { LoadBalance.Add(h); } BindingContext = this; }
public HostsPage() { InitializeComponent(); BindingContext = viewModel = new HostsViewModel(); }
public string PrepareConfig(HostsViewModel hosts, bool isLoadBalancePrepare = false) { string config = ConfigTemplate; string appVersion = VersionTracking.CurrentVersion; string version_path = Path.Combine( App.Instance.DataPathParent, "version_" + appVersion); string gfwlist_path = Path.Combine(App.Instance.DataPathParent, "gfw_list"); string cn_ips_path = Path.Combine(App.Instance.DataPathParent, "cn_ips_list"); string cert_path = Path.Combine(App.Instance.DataPathParent, "cacert"); if (!File.Exists(version_path)) { File.WriteAllText(version_path, "TrojanPlus App Version: " + appVersion); File.WriteAllText(gfwlist_path, Resx.TextResource.gfwlist); File.WriteAllText(cn_ips_path, Resx.TextResource.cn_mainland_ips); File.WriteAllText(cert_path, Resx.TextResource.cacert); } config = config.Replace("${run_type}", "client_tun"); config = config.Replace("${remote_addr}", HostAddress); config = config.Replace("${remote_port}", HostPort.ToString()); config = config.Replace("${password}", Password); config = config.Replace("${udp_timeout}", "10"); config = config.Replace("${udp_socket_buf}", "16384"); config = config.Replace("${udp_recv_buf}", "4096"); config = config.Replace("${log_level}", EnableDebugLog ? "0" : "5"); config = config.Replace("${ssl.verify}", SSLVerify.ToLowerString()); config = config.Replace("${ssl.verify_hostname}", SSLVerify.ToLowerString()); config = config.Replace("${ssl.ssl_shutdown_wait_time}", "3"); config = config.Replace("${ssl.sni}", HostAddress); config = config.Replace("${ssl.cert}", cert_path); config = config.Replace("${tcp.fast_open}", EnableTCPFastOpen ? "true" : "false"); config = config.Replace("${tcp.connect_time_out}", "5"); config = config.Replace("${experimental.pipeline_num}", EnablePipeline ? "5" : "0"); config = config.Replace("${experimental.pipeline_ack_window}", "100"); if (!isLoadBalancePrepare && LoadBalance.Count > 0) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < LoadBalance.Count; i++) { var h = hosts.FindHostByName(LoadBalance[i]); if (h != null && h.EnablePipeline) { string loadConfig = h.PrepareConfig(hosts, true); string path = Path.Combine(App.Instance.DataPathParent, "balance_config" + i); File.WriteAllText(path, loadConfig); if (sb.Length > 0) { sb.Append(","); } sb.Append($"\"{path}\""); } } config = config.Replace("${experimental.pipeline_loadbalance_configs}", sb.ToString()); } else { config = config.Replace("${experimental.pipeline_loadbalance_configs}", string.Empty); if (isLoadBalancePrepare) { config = config.Replace("${tun.tun_fd}", "-1"); } } config = config.Replace("${tun.net_ip}", TunNetIP); config = config.Replace("${tun.mtu}", TunMtu.ToString()); config = config.Replace("${dns.udp_socket_buf}", "8192"); config = config.Replace("${dns.udp_recv_buf}", "1024"); config = config.Replace("${dns.up_dns_server}", UpStreamNS); config = config.Replace("${dns.up_gfw_dns_server}", GFWUpStreamNS); config = config.Replace("${dns.gfwlist}", gfwlist_path); config = config.Replace("${route.cn_mainland_ips_file}", cn_ips_path); config = config.Replace("${route.proxy_type}", ((int)Route).ToString()); string proxy_ips_path = Path.Combine(App.Instance.DataPathParent, "proxy_ips"); string white_ips_path = Path.Combine(App.Instance.DataPathParent, "white_ips"); File.WriteAllText(proxy_ips_path, string.Empty); File.WriteAllText(white_ips_path, string.Empty); config = config.Replace("${route.proxy_ips}", proxy_ips_path); config = config.Replace("${route.white_ips}", white_ips_path); return(config); }
public ShellViewModel() { Hosts = new HostsViewModel(); }