package main import ( "log" "net" "os" "github.com/spf13/viper" "git.jmbit.de/jmb/podterminal/pods" "git.jmbit.de/jmb/podterminal/utils" "git.jmbit.de/jmb/podterminal/web" ) func main() { readConfigFile() laddr := &net.TCPAddr{ IP: net.IPv4zero, Port: viper.GetInt("port"), } log.Println("Binding Port ", viper.GetInt("port")) listener, err := net.ListenTCP("tcp", laddr) if err != nil { log.Fatalln("could not bind to port ", viper.GetInt("port"), ": ", err) } pods.ConnectSocket() // Dumm, ich weiß utils.DropPrivileges("podterminal") log.Println("Dropped Privileges") pods.PullImage() // Jank go pods.GarbageCollector() web.Run(listener) } func readConfigFile() { log.Println("Reading Config") viper.SetConfigFile("/etc/podterminal/config.yaml") viper.SetDefault("port", 80) viper.SetDefault("image", "lscr.io/linuxserver/webtop") viper.SetDefault("maxAge", 10800) viper.SetDefault("dri", false) viper.SetDefault("dir_node", "/dev/dri/renderD128") viper.SetDefault("envvars", map[string]string{ "CUSTOM_USER": "user", "PASSWORD": "", "TITLE": "Podterminal", }, ) if _, err := os.Stat("/etc/podterminal/config.yaml"); os.IsNotExist(err) { log.Println("Config file does not exist, creating") os.MkdirAll("/etc/podterminal", 755) err := viper.WriteConfig() if err != nil { log.Fatalln("could not write default config", err) } } err := viper.ReadInConfig() if err != nil { log.Fatalln("could not read config file", err) } log.Println("Finished reading Config") }