rpaste/modules/utility/system.go

52 lines
1.4 KiB
Go

package utility
import (
"bufio"
"os"
"regexp"
"strings"
)
// Not all of these are going to be used, but just in case. This is more of a
// reference just for me. I want to be able to support more than just EL for
// example and send to the "right" paste bins or some generic one.
var (
regexPrettyName = regexp.MustCompile(`^PRETTY_NAME=(.*)$`)
regexID = regexp.MustCompile(`^ID=(.*)$`)
regexVersionID = regexp.MustCompile(`^VERSION_ID=(.*)$`)
regexRockyName = regexp.MustCompile(`^Rocky( Linux)? release`)
regexOtherEL = regexp.MustCompile(`^(CentOS|Fedora|Red Hat Enterprise|AlmaLinux|Scientific)( Linux)? release`)
regexRedHatName = regexp.MustCompile(`^(Rocky|CentOS|Fedora|Red Hat Enterprise|AlmaLinux|Scientific)( Linux)? release`)
VendorName string
SystemVersion string
SystemPrettyName string
pasteBin string
)
func SetPasteOnOS() string {
file, err := os.Open("/etc/os-release")
if err != nil {
return ""
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
if m := regexID.FindStringSubmatch(scanner.Text()); m != nil {
VendorName = strings.Trim(m[1], `"`)
}
}
// The order should be: config -> this
switch VendorName {
case "rocky":
pasteBin = "rpaste"
case "redhat", "fedora", "centos", "almalinux", "scientific":
pasteBin = "fpaste"
default:
pasteBin = "rpaste"
}
return pasteBin
}