private static string BuildArguments(Server server, string localaddr, string remoteaddr)
        {
            if (string.IsNullOrEmpty(localaddr))
            {
                localaddr = server.localaddr;
            }
            if (string.IsNullOrEmpty(remoteaddr))
            {
                remoteaddr = server.remoteaddr;
            }
            StringBuilder arguments = new StringBuilder();

            if (server.mode == kcptun_mode.manual_all)
            {
                arguments.Append($" -l \"{localaddr}\"");
                arguments.Append($" -r \"{remoteaddr}\"");
                arguments.Append($" {server.extend_arguments}");
            }
            else
            {
                MyEnumConverter cryptConverter = new MyEnumConverter(typeof(kcptun_crypt));
                MyEnumConverter modeConverter  = new MyEnumConverter(typeof(kcptun_mode));
                arguments.Append($" -l \"{localaddr}\"");
                arguments.Append($" -r \"{remoteaddr}\"");
                arguments.Append($" --crypt {cryptConverter.ConvertToString(server.crypt)}");
                if (server.crypt != kcptun_crypt.none)
                {
                    arguments.Append($" --key \"{server.key}\"");
                }
                arguments.Append($" --mode {modeConverter.ConvertToString(server.mode)}");
                arguments.Append($" --conn {server.conn}");
                arguments.Append($" --mtu {server.mtu}");
                arguments.Append($" --sndwnd {server.sndwnd}");
                arguments.Append($" --rcvwnd {server.rcvwnd}");
                if (server.nocomp)
                {
                    arguments.Append($" --nocomp");
                }
                arguments.Append($" --datashard {server.datashard}");
                arguments.Append($" --parityshard {server.parityshard}");
                arguments.Append($" --dscp {server.dscp}");
                if (server.mode == kcptun_mode.manual)
                {
                    arguments.Append($" --nodelay {server.nodelay}");
                    arguments.Append($" --resend {server.resend}");
                    arguments.Append($" --nc {server.nc}");
                    arguments.Append($" --interval {server.interval}");
                }
                else
                {
                    /*do nothing*/
                }
                if (!string.IsNullOrEmpty(server.extend_arguments))
                {
                    arguments.Append($" {server.extend_arguments}");
                }
            }

            return(arguments.ToString().Trim());
        }
示例#2
0
        private static string BuildArguments(SNMPConfiguration snmp, Server server, string localaddr, string remoteaddr)
        {
            if (string.IsNullOrEmpty(localaddr))
            {
                localaddr = server.localaddr;
            }
            if (string.IsNullOrEmpty(remoteaddr))
            {
                remoteaddr = server.remoteaddr;
            }
            StringBuilder arguments = new StringBuilder();

            if (server.mode == kcptun_mode.manual_all)
            {
                arguments.Append($" --localaddr \"{localaddr}\"");
                arguments.Append($" --remoteaddr \"{remoteaddr}\"");
                arguments.Append($" {server.extend_arguments}");
            }
            else
            {
                MyEnumConverter cryptConverter = new MyEnumConverter(typeof(kcptun_crypt));
                MyEnumConverter modeConverter  = new MyEnumConverter(typeof(kcptun_mode));
                arguments.Append($" --localaddr \"{localaddr}\"");
                arguments.Append($" --remoteaddr \"{remoteaddr}\"");
                if (server.conn >= 0)
                {
                    arguments.Append($" --conn {server.conn}");
                }
                arguments.Append($" --crypt {cryptConverter.ConvertToString(server.crypt)}");
                if (server.crypt != kcptun_crypt.none)
                {
                    arguments.Append($" --key \"{server.key}\"");
                }
                if (server.nocomp)
                {
                    arguments.Append($" --nocomp");
                }
                arguments.Append($" --mode {modeConverter.ConvertToString(server.mode)}");
                if (server.mode == kcptun_mode.manual)
                {
                    if (server.nodelay >= 0)
                    {
                        arguments.Append($" --nodelay {server.nodelay}");
                    }
                    if (server.resend >= 0)
                    {
                        arguments.Append($" --resend {server.resend}");
                    }
                    if (server.nc >= 0)
                    {
                        arguments.Append($" --nc {server.nc}");
                    }
                    if (server.interval >= 0)
                    {
                        arguments.Append($" --interval {server.interval}");
                    }
                }
                if (server.datashard >= 0)
                {
                    arguments.Append($" --datashard {server.datashard}");
                }
                if (server.parityshard >= 0)
                {
                    arguments.Append($" --parityshard {server.parityshard}");
                }
                if (server.sndwnd >= 0)
                {
                    arguments.Append($" --sndwnd {server.sndwnd}");
                }
                if (server.rcvwnd >= 0)
                {
                    arguments.Append($" --rcvwnd {server.rcvwnd}");
                }
                if (server.mtu >= 0)
                {
                    arguments.Append($" --mtu {server.mtu}");
                }
                if (server.dscp >= 0)
                {
                    arguments.Append($" --dscp {server.dscp}");
                }
                if (server.autoexpire >= 0)
                {
                    arguments.Append($" --autoexpire {server.autoexpire}");
                }
                if (server.sockbuf >= 0)
                {
                    arguments.Append($" --sockbuf {server.sockbuf}");
                }
                arguments.Append($" --acknodelay={server.acknodelay.ToString().ToLower()}");
                if (server.keepalive >= 0)
                {
                    arguments.Append($" --keepalive {server.keepalive}");
                }
                if (!string.IsNullOrEmpty(server.extend_arguments))
                {
                    arguments.Append($" {server.extend_arguments}");
                }
            }
            if (snmp != null && snmp.enabled)
            {
                arguments.Append($" --snmplog=\"{snmp.snmplog}\"");
                arguments.Append($" --snmpperiod {snmp.snmpperiod}");
            }
            return(arguments.ToString().Trim());
        }