1
0
Fork 0
telegraf/plugins/inputs/ipmi_sensor/connection.go
Daniel Baumann 4978089aab
Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-05-24 07:26:29 +02:00

73 lines
1.3 KiB
Go

package ipmi_sensor
import (
"strconv"
"strings"
)
// connection properties for a Client
type connection struct {
hostname string
username string
password string
port int
intf string
privilege string
hexKey string
}
func newConnection(server, privilege, hexKey string) *connection {
conn := &connection{
privilege: privilege,
hexKey: hexKey,
}
inx1 := strings.LastIndex(server, "@")
inx2 := strings.Index(server, "(")
connstr := server
if inx1 > 0 {
security := server[0:inx1]
connstr = server[inx1+1:]
up := strings.SplitN(security, ":", 2)
if len(up) == 2 {
conn.username = up[0]
conn.password = up[1]
}
}
if inx2 > 0 {
inx2 = strings.Index(connstr, "(")
inx3 := strings.Index(connstr, ")")
conn.intf = connstr[0:inx2]
conn.hostname = connstr[inx2+1 : inx3]
}
return conn
}
func (c *connection) options() []string {
intf := c.intf
if intf == "" {
intf = "lan"
}
options := []string{
"-H", c.hostname,
"-U", c.username,
"-P", c.password,
"-I", intf,
}
if c.hexKey != "" {
options = append(options, "-y", c.hexKey)
}
if c.port != 0 {
options = append(options, "-p", strconv.Itoa(c.port))
}
if c.privilege != "" {
options = append(options, "-L", c.privilege)
}
return options
}