summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/modules/snmp/init.go
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-08-26 08:15:20 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-08-26 08:15:20 +0000
commit87d772a7d708fec12f48cd8adc0dedff6e1025da (patch)
tree1fee344c64cc3f43074a01981e21126c8482a522 /src/go/collectors/go.d.plugin/modules/snmp/init.go
parentAdding upstream version 1.46.3. (diff)
downloadnetdata-upstream.tar.xz
netdata-upstream.zip
Adding upstream version 1.47.0.upstream/1.47.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--src/go/collectors/go.d.plugin/modules/snmp/init.go189
1 files changed, 0 insertions, 189 deletions
diff --git a/src/go/collectors/go.d.plugin/modules/snmp/init.go b/src/go/collectors/go.d.plugin/modules/snmp/init.go
deleted file mode 100644
index 5802d6682..000000000
--- a/src/go/collectors/go.d.plugin/modules/snmp/init.go
+++ /dev/null
@@ -1,189 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-package snmp
-
-import (
- "errors"
- "fmt"
- "time"
-
- "github.com/gosnmp/gosnmp"
-)
-
-var newSNMPClient = gosnmp.NewHandler
-
-func (s *SNMP) validateConfig() error {
- if len(s.ChartsInput) == 0 {
- return errors.New("'charts' are required but not set")
- }
-
- if s.Options.Version == gosnmp.Version3.String() {
- if s.User.Name == "" {
- return errors.New("'user.name' is required when using SNMPv3 but not set")
- }
- if _, err := parseSNMPv3SecurityLevel(s.User.SecurityLevel); err != nil {
- return err
- }
- if _, err := parseSNMPv3AuthProtocol(s.User.AuthProto); err != nil {
- return err
- }
- if _, err := parseSNMPv3PrivProtocol(s.User.PrivProto); err != nil {
- return err
- }
- }
-
- return nil
-}
-
-func (s *SNMP) initSNMPClient() (gosnmp.Handler, error) {
- client := newSNMPClient()
-
- if client.SetTarget(s.Hostname); client.Target() == "" {
- s.Warningf("'hostname' not set, using the default value: '%s'", defaultHostname)
- client.SetTarget(defaultHostname)
- }
- if client.SetPort(uint16(s.Options.Port)); client.Port() <= 0 || client.Port() > 65535 {
- s.Warningf("'options.port' is invalid, changing to the default value: '%d' => '%d'", s.Options.Port, defaultPort)
- client.SetPort(defaultPort)
- }
- if client.SetRetries(s.Options.Retries); client.Retries() < 1 || client.Retries() > 10 {
- s.Warningf("'options.retries' is invalid, changing to the default value: '%d' => '%d'", s.Options.Retries, defaultRetries)
- client.SetRetries(defaultRetries)
- }
- if client.SetTimeout(time.Duration(s.Options.Timeout) * time.Second); client.Timeout().Seconds() < 1 {
- s.Warningf("'options.timeout' is invalid, changing to the default value: '%d' => '%d'", s.Options.Timeout, defaultTimeout)
- client.SetTimeout(defaultTimeout * time.Second)
- }
- if client.SetMaxOids(s.Options.MaxOIDs); client.MaxOids() < 1 {
- s.Warningf("'options.max_request_size' is invalid, changing to the default value: '%d' => '%d'", s.Options.MaxOIDs, defaultMaxOIDs)
- client.SetMaxOids(defaultMaxOIDs)
- }
-
- ver, err := parseSNMPVersion(s.Options.Version)
- if err != nil {
- s.Warningf("'options.version' is invalid, changing to the default value: '%s' => '%s'",
- s.Options.Version, defaultVersion)
- ver = defaultVersion
- }
- comm := s.Community
- if comm == "" && (ver <= gosnmp.Version2c) {
- s.Warningf("'community' not set, using the default value: '%s'", defaultCommunity)
- comm = defaultCommunity
- }
-
- switch ver {
- case gosnmp.Version1:
- client.SetCommunity(comm)
- client.SetVersion(gosnmp.Version1)
- case gosnmp.Version2c:
- client.SetCommunity(comm)
- client.SetVersion(gosnmp.Version2c)
- case gosnmp.Version3:
- client.SetVersion(gosnmp.Version3)
- client.SetSecurityModel(gosnmp.UserSecurityModel)
- client.SetMsgFlags(safeParseSNMPv3SecurityLevel(s.User.SecurityLevel))
- client.SetSecurityParameters(&gosnmp.UsmSecurityParameters{
- UserName: s.User.Name,
- AuthenticationProtocol: safeParseSNMPv3AuthProtocol(s.User.AuthProto),
- AuthenticationPassphrase: s.User.AuthKey,
- PrivacyProtocol: safeParseSNMPv3PrivProtocol(s.User.PrivProto),
- PrivacyPassphrase: s.User.PrivKey,
- })
- default:
- return nil, fmt.Errorf("invalid SNMP version: %s", s.Options.Version)
- }
-
- return client, nil
-}
-
-func (s *SNMP) initOIDs() (oids []string) {
- for _, c := range *s.charts {
- for _, d := range c.Dims {
- oids = append(oids, d.ID)
- }
- }
- return oids
-}
-
-func parseSNMPVersion(version string) (gosnmp.SnmpVersion, error) {
- switch version {
- case "0", "1":
- return gosnmp.Version1, nil
- case "2", "2c", "":
- return gosnmp.Version2c, nil
- case "3":
- return gosnmp.Version3, nil
- default:
- return gosnmp.Version2c, fmt.Errorf("invalid snmp version value (%s)", version)
- }
-}
-
-func safeParseSNMPv3SecurityLevel(level string) gosnmp.SnmpV3MsgFlags {
- v, _ := parseSNMPv3SecurityLevel(level)
- return v
-}
-
-func parseSNMPv3SecurityLevel(level string) (gosnmp.SnmpV3MsgFlags, error) {
- switch level {
- case "1", "none", "noAuthNoPriv", "":
- return gosnmp.NoAuthNoPriv, nil
- case "2", "authNoPriv":
- return gosnmp.AuthNoPriv, nil
- case "3", "authPriv":
- return gosnmp.AuthPriv, nil
- default:
- return gosnmp.NoAuthNoPriv, fmt.Errorf("invalid snmpv3 user security level value (%s)", level)
- }
-}
-
-func safeParseSNMPv3AuthProtocol(protocol string) gosnmp.SnmpV3AuthProtocol {
- v, _ := parseSNMPv3AuthProtocol(protocol)
- return v
-}
-
-func parseSNMPv3AuthProtocol(protocol string) (gosnmp.SnmpV3AuthProtocol, error) {
- switch protocol {
- case "1", "none", "noAuth", "":
- return gosnmp.NoAuth, nil
- case "2", "md5":
- return gosnmp.MD5, nil
- case "3", "sha":
- return gosnmp.SHA, nil
- case "4", "sha224":
- return gosnmp.SHA224, nil
- case "5", "sha256":
- return gosnmp.SHA256, nil
- case "6", "sha384":
- return gosnmp.SHA384, nil
- case "7", "sha512":
- return gosnmp.SHA512, nil
- default:
- return gosnmp.NoAuth, fmt.Errorf("invalid snmpv3 user auth protocol value (%s)", protocol)
- }
-}
-
-func safeParseSNMPv3PrivProtocol(protocol string) gosnmp.SnmpV3PrivProtocol {
- v, _ := parseSNMPv3PrivProtocol(protocol)
- return v
-}
-
-func parseSNMPv3PrivProtocol(protocol string) (gosnmp.SnmpV3PrivProtocol, error) {
- switch protocol {
- case "1", "none", "noPriv", "":
- return gosnmp.NoPriv, nil
- case "2", "des":
- return gosnmp.DES, nil
- case "3", "aes":
- return gosnmp.AES, nil
- case "4", "aes192":
- return gosnmp.AES192, nil
- case "5", "aes256":
- return gosnmp.AES256, nil
- case "6", "aes192c":
- return gosnmp.AES192C, nil
- case "7", "aes256c":
- return gosnmp.AES256C, nil
- default:
- return gosnmp.NoPriv, fmt.Errorf("invalid snmpv3 user priv protocol value (%s)", protocol)
- }
-}