From 0441c4e6621f0da7a86f839317f3b286136e829c Mon Sep 17 00:00:00 2001 From: roboogg133 Date: Wed, 30 Jul 2025 21:23:32 -0300 Subject: [PATCH] Starting to do config file and change packets dir to /etc/packets --- src/go.mod | 1 + src/go.sum | 2 ++ src/httpsocket/go.mod | 2 ++ src/httpsocket/go.sum | 2 ++ src/httpsocket/main.go | 18 ++++++++++++--- src/main.go | 52 ++++++++++++++++++++++++++++++++++-------- 6 files changed, 64 insertions(+), 13 deletions(-) create mode 100644 src/httpsocket/go.sum diff --git a/src/go.mod b/src/go.mod index 437fc20..1c5e09d 100644 --- a/src/go.mod +++ b/src/go.mod @@ -11,6 +11,7 @@ require ( ) require ( + github.com/BurntSushi/toml v1.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/google/uuid v1.6.0 // indirect github.com/mattn/go-isatty v0.0.20 // indirect diff --git a/src/go.sum b/src/go.sum index 8352f2a..1c571b9 100644 --- a/src/go.sum +++ b/src/go.sum @@ -1,3 +1,5 @@ +github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= +github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/chengxilo/virtualterm v1.0.4 h1:Z6IpERbRVlfB8WkOmtbHiDbBANU7cimRIof7mk9/PwM= github.com/chengxilo/virtualterm v1.0.4/go.mod h1:DyxxBZz/x1iqJjFxTFcr6/x+jSpqN0iwWCOK1q10rlY= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= diff --git a/src/httpsocket/go.mod b/src/httpsocket/go.mod index 27cde4e..be7ed57 100644 --- a/src/httpsocket/go.mod +++ b/src/httpsocket/go.mod @@ -1,3 +1,5 @@ module httpsocket go 1.24.4 + +require github.com/BurntSushi/toml v1.5.0 // indirect diff --git a/src/httpsocket/go.sum b/src/httpsocket/go.sum new file mode 100644 index 0000000..ff7fd09 --- /dev/null +++ b/src/httpsocket/go.sum @@ -0,0 +1,2 @@ +github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= +github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= diff --git a/src/httpsocket/main.go b/src/httpsocket/main.go index d1fe4da..bbae1cc 100644 --- a/src/httpsocket/main.go +++ b/src/httpsocket/main.go @@ -5,16 +5,28 @@ import ( "log" "net/http" "os" + + "github.com/BurntSushi/toml" ) +type ConfigTOML struct { + Config struct { + DefaultHttpPort int `toml:"defaultHttpPort"` + DefaultCacheDir string `toml:"defaultCacheDir"` + } `toml:"Config"` +} + func main() { + var cfg ConfigTOML + toml.Decode("opt/packets/packets/config.toml", &cfg) + pid := os.Getpid() - if err := os.WriteFile("/opt/packets/packets/http.pid", []byte(fmt.Sprint(pid)), 0644); err != nil { + if err := os.WriteFile("./http.pid", []byte(fmt.Sprint(pid)), 0644); err != nil { fmt.Println("error saving subprocess pid", err) } - fs := http.FileServer(http.Dir("/var/cache/packets")) + fs := http.FileServer(http.Dir(cfg.Config.DefaultCacheDir)) http.Handle("/", fs) - log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", 9123), nil)) + log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", cfg.Config.DefaultHttpPort), nil)) } diff --git a/src/main.go b/src/main.go index 239ae02..23cb07b 100644 --- a/src/main.go +++ b/src/main.go @@ -24,6 +24,7 @@ import ( "syscall" "time" + "github.com/BurntSushi/toml" "github.com/schollz/progressbar/v3" "golang.org/x/net/ipv4" _ "modernc.org/sqlite" @@ -31,6 +32,24 @@ import ( "github.com/ulikunitz/xz" ) +type ConfigTOML struct { + Config struct { + DefaultHttpPort int `toml:"defaultHttpPort"` + DefaultCacheDir string `toml:"defaultCacheDir"` + AutoDeleteCacheDir bool `toml:"dutoDeleteCacheDir"` + DaysToDelete int `toml:"daysToDelete"` + DataDir string `toml:"dataDir"` + } `toml:"Config"` +} + +type IndexTOML struct { + Name string `toml:"name"` + Version string `toml:"version"` + Author string `toml:"author"` + Description string `toml:"description"` + CreatedAt time.Time `toml:"createdAt"` +} + type CountingReader struct { R io.Reader Total int64 @@ -71,10 +90,23 @@ type Manifest struct { Serial uint `json:"serial"` } -var Serialpass uint +var serialPass uint +var cfg ConfigTOML +var PacketsDir string func main() { + out, _ := exec.Command("uname", "-s").Output() + if uname := strings.TrimSpace(string(out)); uname == "OpenTTY" { + PacketsDir = "/mnt" + } else { + PacketsDir = "/etc/packets" + } + _, err := toml.DecodeFile(filepath.Join(PacketsDir, "config.toml"), &cfg) + if err != nil { + log.Fatal(err) + } + if len(os.Args) < 2 { fmt.Println("invalid syntax") return @@ -94,7 +126,7 @@ func main() { return } - db, err := sql.Open("sqlite", "/opt/packets/packets/index.db") + db, err := sql.Open("sqlite", filepath.Join(PacketsDir, "index.db")) if err != nil { log.Fatal(err) return @@ -171,8 +203,8 @@ func main() { case "init": var sockets [2]string - sockets[0] = "/opt/packets/packets/udpsocket" - sockets[1] = "/opt/packets/packets/httpsocket" + sockets[0] = filepath.Join(PacketsDir, "udpsocket") + sockets[1] = filepath.Join(PacketsDir, "httpsocket") for _, v := range sockets { abs, _ := filepath.Abs(v) @@ -188,8 +220,8 @@ func main() { case "stop": var pidfiles [2]string - pidfiles[0] = "/opt/packets/packets/http.pid" - pidfiles[1] = "/opt/packets/packets/udp.pid" + pidfiles[0] = filepath.Join(PacketsDir, "http.pid") + pidfiles[1] = filepath.Join(PacketsDir, "udp.pid") for _, v := range pidfiles { data, err := os.ReadFile(v) @@ -300,7 +332,7 @@ func main() { return } - if err := db.QueryRow("SELECT serial FROM packages WHERE family = ? ORDER BY serial DESC LIMIT 1", family).Scan(&Serialpass); err != nil { + if err := db.QueryRow("SELECT serial FROM packages WHERE family = ? ORDER BY serial DESC LIMIT 1", family).Scan(&serialPass); err != nil { log.Fatal("line 255", err) return } @@ -580,7 +612,7 @@ func GetPackageByMirror(mirror string, realname string) error { } if os.Args[1] == "upgrade" { - if err := Upgrade(fmt.Sprintf("/var/cache/packets/%s", filename), os.Args[2], Serialpass); err != nil { + if err := Upgrade(fmt.Sprintf("/var/cache/packets/%s", filename), os.Args[2], serialPass); err != nil { return err } return nil @@ -679,7 +711,7 @@ func QueryInstall(realname string) { return } if os.Args[1] == "upgrade" { - if err := Upgrade(fmt.Sprintf("/var/cache/packets/%s", filename), os.Args[2], Serialpass); err != nil { + if err := Upgrade(fmt.Sprintf("/var/cache/packets/%s", filename), os.Args[2], serialPass); err != nil { log.Fatal(err) return } @@ -723,7 +755,7 @@ func QueryInstall(realname string) { continue } else { if os.Args[1] == "upgrade" { - if err := Upgrade(fmt.Sprintf("/var/cache/packets/%s", filename), os.Args[2], Serialpass); err != nil { + if err := Upgrade(fmt.Sprintf("/var/cache/packets/%s", filename), os.Args[2], serialPass); err != nil { log.Fatal(err) return }