예제 #1
0
        public async Task <string> Handle(SNMPConfiguration configuration)
        {
            var settings = await settingsRepository.GetSettings();

            settings.SNMPConfiguration = configuration;


            bash.Install("snmpd");
            bash.Install("snmp");
            bash.Install("libsnmp-dev");

            var snmpd = await File.ReadAllTextAsync(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "snmpd.conf"));

            snmpd = snmpd.FormatWith(configuration);

            var snmpdPath = "/etc/snmp/snmpd.conf";

            bash.Execute("/etc/init.d/snmpd stop");

            if (File.Exists(snmpdPath))
            {
                File.Copy(snmpdPath, $"/etc/snmp/snmpd_{DateTime.Now.Ticks}.bak");
            }

            using StreamWriter stream = File.CreateText(snmpdPath);
            await stream.WriteAsync(snmpd);

            bash.Execute("/etc/init.d/snmpd start");

            await settingsRepository.SaveSettings(settings);

            return(null);
        }
        private void OnShowSNMPItemClick(object sender, EventArgs e)
        {
            SNMPConfiguration snmp = controller.ConfigController.GetCurrentConfiguration().snmp;

            if (!string.IsNullOrEmpty(snmp.snmplog))
            {
                FileInfo fi       = new FileInfo(Path.Combine(Utils.GetTempPath(), snmp.snmplog));
                string   argument = "/select, \"" + fi.FullName + "\"";
                Process.Start("explorer.exe", argument);
            }
        }
예제 #3
0
 public void ChangeSNMPConfig(SNMPConfiguration config)
 {
     if (!_config.snmp.Equals(config))
     {
         _config.snmp = config;
         SaveConfig(_config);
         if (SNMPConfigChanged != null)
         {
             SNMPConfigChanged.Invoke(this, new EventArgs());
         }
     }
 }
예제 #4
0
        public async Task <IActionResult> SetupSNMP(SNMPConfiguration configuration)
        {
            try
            {
                await _services.Handle(configuration);
            }
            catch (ProcessException ex)
            {
                ViewData["Error"] = ex.Message;
            }

            return(View(configuration));
        }
예제 #5
0
 private void OkButton_Click(object sender, EventArgs e)
 {
     try
     {
         SNMPConfiguration snmp = new SNMPConfiguration
         {
             enabled    = EnableCheckBox.Checked,
             snmplog    = SNMPLogFileTextBox.Text.Trim(),
             snmpperiod = (int)SNMPPeriodNumericUpDown.Value
         };
         controller.ConfigController.ChangeSNMPConfig(snmp);
         this.Close();
     }
     catch (Exception ex)
     {
         Logging.LogUsefulException(ex);
         MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
예제 #6
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());
        }
예제 #7
0
 public static string BuildArguments(SNMPConfiguration snmp, Server server)
 {
     return(BuildArguments(snmp, server, null, null));
 }