public void AddOutboundsVnextItem(ref Outbounds item, string sAddress, int iPort, List <UsersItem> users) { item.settings.vnext.Add(new VnextItem() { address = sAddress, port = iPort, users = users, }); }
public Outbounds CreatOutbounds(string sTag, string sProtocol, bool bMuxEnabled, int bMuxConcurrency, string sSettingsResponseType) { Outbounds item = new Outbounds(); item.tag = sTag; item.protocol = sProtocol; item.mux.enabled = bMuxEnabled; item.mux.concurrency = bMuxConcurrency; item.settings.response.type = sSettingsResponseType; return(item); }
public void AddOutboundsServersItem(ref Outbounds item, string email, string address, string method, bool ota, string password, int iPort, int level, List <SocksUsersItem> users) { item.settings.servers.Add(new ServersItem() { email = email, address = address, method = method, ota = ota, password = password, port = iPort, level = level, users = users, }); }
private static void outbound(Server server, Mode mode, ref V2rayConfig v2rayConfig) { try { var outbound = new Outbounds { settings = new Outboundsettings(), mux = new Mux(), streamSettings = new StreamSettings { network = "tcp" } }; switch (server) { case Socks5.Socks5 socks5: { var serversItem = new ServersItem { users = new List <SocksUsersItem>() }; outbound.settings.servers = new List <ServersItem> { serversItem }; serversItem.address = server.AutoResolveHostname(); serversItem.port = server.Port; serversItem.method = null; serversItem.password = null; if (socks5.Auth()) { var socksUsersItem = new SocksUsersItem { user = socks5.Username, pass = socks5.Password, level = 1 }; serversItem.users.Add(socksUsersItem); } outbound.mux.enabled = false; outbound.mux.concurrency = -1; outbound.protocol = "socks"; break; } case VLESS.VLESS vless: { var vnextItem = new VnextItem { users = new List <UsersItem>() }; outbound.settings.vnext = new List <VnextItem> { vnextItem }; vnextItem.address = server.AutoResolveHostname(); vnextItem.port = server.Port; var usersItem = new UsersItem(); vnextItem.users.Add(usersItem); usersItem.id = vless.UserID; usersItem.alterId = 0; usersItem.flow = string.Empty; usersItem.encryption = vless.EncryptMethod; outbound.mux.enabled = vless.UseMux ?? Global.Settings.V2RayConfig.UseMux; outbound.mux.concurrency = vless.UseMux ?? Global.Settings.V2RayConfig.UseMux ? 8 : -1; var streamSettings = outbound.streamSettings; boundStreamSettings(vless, ref streamSettings); if (vless.TransferProtocol == "xtls") { usersItem.flow = string.IsNullOrEmpty(vless.Flow) ? "xtls-rprx-origin" : vless.Flow; outbound.mux.enabled = false; outbound.mux.concurrency = -1; } outbound.protocol = "vless"; outbound.settings.servers = null; break; } case VMess vmess: { var vnextItem = new VnextItem { users = new List <UsersItem>() }; outbound.settings.vnext = new List <VnextItem> { vnextItem }; vnextItem.address = server.AutoResolveHostname(); vnextItem.port = server.Port; var usersItem = new UsersItem(); vnextItem.users.Add(usersItem); usersItem.id = vmess.UserID; usersItem.alterId = vmess.AlterID; usersItem.security = vmess.EncryptMethod; outbound.mux.enabled = vmess.UseMux ?? Global.Settings.V2RayConfig.UseMux; outbound.mux.concurrency = vmess.UseMux ?? Global.Settings.V2RayConfig.UseMux ? 8 : -1; var streamSettings = outbound.streamSettings; boundStreamSettings(vmess, ref streamSettings); outbound.protocol = "vmess"; break; } } v2rayConfig.outbounds = new List <Outbounds> { outbound, new Outbounds { tag = "direct", protocol = "freedom" } }; } catch { // ignored } }