Exemple #1
0
 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,
     });
 }
Exemple #2
0
        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);
        }
Exemple #3
0
 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,
     });
 }
Exemple #4
0
        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
            }
        }