diff --git a/src/go.mod b/src/go.mod deleted file mode 100644 index 1c5e09d..0000000 --- a/src/go.mod +++ /dev/null @@ -1,28 +0,0 @@ -module packets - -go 1.24.4 - -require ( - github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 - github.com/schollz/progressbar/v3 v3.18.0 - github.com/ulikunitz/xz v0.5.12 - golang.org/x/net v0.41.0 - modernc.org/sqlite v1.38.0 -) - -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 - github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect - github.com/ncruces/go-strftime v0.1.9 // indirect - github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - github.com/rivo/uniseg v0.4.7 // indirect - golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/term v0.32.0 // indirect - modernc.org/libc v1.65.10 // indirect - modernc.org/mathutil v1.7.1 // indirect - modernc.org/memory v1.11.0 // indirect -) diff --git a/src/go.sum b/src/go.sum deleted file mode 100644 index 1c571b9..0000000 --- a/src/go.sum +++ /dev/null @@ -1,75 +0,0 @@ -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= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= -github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs= -github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 h1:qGQQKEcAR99REcMpsXCp3lJ03zYT1PkRd3kQGPn9GVg= -github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= -github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= -github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= -github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= -github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= -github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/schollz/progressbar/v3 v3.18.0 h1:uXdoHABRFmNIjUfte/Ex7WtuyVslrw2wVPQmCN62HpA= -github.com/schollz/progressbar/v3 v3.18.0/go.mod h1:IsO3lpbaGuzh8zIMzgY3+J8l4C8GjO0Y9S69eFvNsec= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= -github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM= -golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8= -golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -modernc.org/cc/v4 v4.26.1 h1:+X5NtzVBn0KgsBCBe+xkDC7twLb/jNVj9FPgiwSQO3s= -modernc.org/cc/v4 v4.26.1/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= -modernc.org/ccgo/v4 v4.28.0 h1:rjznn6WWehKq7dG4JtLRKxb52Ecv8OUGah8+Z/SfpNU= -modernc.org/ccgo/v4 v4.28.0/go.mod h1:JygV3+9AV6SmPhDasu4JgquwU81XAKLd3OKTUDNOiKE= -modernc.org/fileutil v1.3.3 h1:3qaU+7f7xxTUmvU1pJTZiDLAIoJVdUSSauJNHg9yXoA= -modernc.org/fileutil v1.3.3/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= -modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI= -modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= -modernc.org/libc v1.65.10 h1:ZwEk8+jhW7qBjHIT+wd0d9VjitRyQef9BnzlzGwMODc= -modernc.org/libc v1.65.10/go.mod h1:StFvYpx7i/mXtBAfVOjaU0PWZOvIRoZSgXhrwXzr8Po= -modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= -modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= -modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI= -modernc.org/memory v1.11.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw= -modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8= -modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= -modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= -modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= -modernc.org/sqlite v1.38.0 h1:+4OrfPQ8pxHKuWG4md1JpR/EYAh3Md7TdejuuzE7EUI= -modernc.org/sqlite v1.38.0/go.mod h1:1Bj+yES4SVvBZ4cBOpVZ6QgesMCKpJZDq0nxYzOpmNE= -modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= -modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= -modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= -modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= diff --git a/src/httpsocket/go.mod b/src/httpsocket/go.mod deleted file mode 100644 index be7ed57..0000000 --- a/src/httpsocket/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -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 deleted file mode 100644 index ff7fd09..0000000 --- a/src/httpsocket/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -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 deleted file mode 100644 index 1fbff15..0000000 --- a/src/httpsocket/main.go +++ /dev/null @@ -1,32 +0,0 @@ -package main - -import ( - "fmt" - "log" - "net/http" - "os" - - "github.com/BurntSushi/toml" -) - -type ConfigTOML struct { - Config struct { - DefaultHttpPort int `toml:"httpPort"` - DefaultCacheDir string `toml:"cacheDir"` - } `toml:"Config"` -} - -func main() { - var cfg ConfigTOML - toml.Decode("opt/packets/packets/config.toml", &cfg) - - pid := os.Getpid() - 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(cfg.Config.DefaultCacheDir)) - http.Handle("/", fs) - - log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", cfg.Config.DefaultHttpPort), nil)) -} diff --git a/src/main.go b/src/main.go deleted file mode 100644 index e208c1a..0000000 --- a/src/main.go +++ /dev/null @@ -1,1267 +0,0 @@ -//go:build linux - -package main - -import ( - "archive/tar" - "bufio" - "crypto/sha256" - "database/sql" - "encoding/hex" - "encoding/json" - "fmt" - "io" - "log" - "net" - "net/http" - "net/url" - "os" - "os/exec" - "path" - "path/filepath" - "strconv" - "strings" - "syscall" - "time" - - "github.com/BurntSushi/toml" - "github.com/schollz/progressbar/v3" - "golang.org/x/net/ipv4" - _ "modernc.org/sqlite" - - "github.com/ulikunitz/xz" -) - -type ConfigTOML struct { - Config struct { - HttpPort int `toml:"httpPort"` - CacheDir string `toml:"cacheDir"` - AutoDeleteCacheDir bool `toml:"dayToDeleteCacheDir"` - 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 -} - -func (c *CountingReader) Read(p []byte) (int, error) { - n, err := c.R.Read(p) - c.Total += int64(n) - return n, err -} - -type Installed struct { - Realname string - Version string - Dependencies []string - Family string - Serial uint -} - -type Peer struct { - IP net.IP - Port int -} - -type Quer1 struct { - Realname string - Version string - Description string -} - -type Manifest struct { - Name string `json:"name"` - Version string `json:"version"` - Description string `json:"description"` - Dependencies []string `json:"dependencies"` - Author string `json:"author"` - Family string `json:"family"` - Serial uint `json:"serial"` -} - -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/packets" - } else { - PacketsDir = "/etc/packets" - } - _, err := os.Stat(filepath.Join(PacketsDir, "config.toml")) - if os.IsNotExist(err) { - fmt.Println("can't find config.toml, generating a default one") - - cfg.Config.HttpPort = 9123 - cfg.Config.AutoDeleteCacheDir = false - cfg.Config.CacheDir = "/var/cache/packets" - cfg.Config.DataDir = "/opt/packets" - cfg.Config.DaysToDelete = -1 - - os.MkdirAll(PacketsDir, 0644) - file, err := os.Create(filepath.Join(PacketsDir, "config.toml")) - if err != nil { - - log.Fatal(err) - } - defer file.Close() - - encoder := toml.NewEncoder(file) - - if err := encoder.Encode(cfg); err != nil { - - log.Fatal(err) - } - fmt.Println("Operation Sucess!") - } - - _, 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 - } - - cmd := os.Args[1] - - switch cmd { - case "install": - if os.Getuid() != 0 { - fmt.Println("please, run as root") - return - } - - if len(os.Args) < 3 { - fmt.Println("usage: packets install ") - return - } - - db, err := sql.Open("sqlite", filepath.Join(PacketsDir, "index.db")) - if err != nil { - log.Fatal(err) - return - } - defer db.Close() - - nameToQuery := os.Args[2] - var exist bool - db.QueryRow("SELECT EXISTS(SELECT 1 FROM packages WHERE realname = ? LIMIT 1)", nameToQuery).Scan(&exist) - if exist { - QueryInstall(nameToQuery) - return - } - - rows, err := db.Query("SELECT realname, version, description FROM packages WHERE name = ?", nameToQuery) - if err != nil { - if strings.Contains(err.Error(), "file is not a database (26)") { - fmt.Println("index.db corrupted") - return - } - log.Panic(err) - return - } - - defer rows.Close() - - var pkgs []Quer1 - for rows.Next() { - var q Quer1 - if err := rows.Scan(&q.Realname, &q.Version, &q.Description); err != nil { - log.Fatal(err) - } - pkgs = append(pkgs, q) - } - switch len(pkgs) { - case 0: - fmt.Printf("can't find any results for %s\n", nameToQuery) - return - case 1: - fmt.Printf("Founded 1 package for %s \n", nameToQuery) - - fmt.Printf("Downloading %s \n", pkgs[0].Realname) - QueryInstall(pkgs[0].Realname) - return - - default: - fmt.Printf("Found %d versions of %s\n Select 1\n", len(pkgs), nameToQuery) - for i, q := range pkgs { - fmt.Printf("[%d] %s : %s\n %s\n", i, q.Realname, q.Version, q.Description) - } - var choice int - - fmt.Fscan(bufio.NewReader(os.Stdin), &choice) - if choice > len(pkgs) || choice < 0 { - fmt.Println("invalid option") - return - } - - QueryInstall(pkgs[choice].Realname) - return - } - - case "serve": - if os.Getuid() != 0 { - fmt.Println("please, run as root") - return - } - - if len(os.Args) < 3 { - fmt.Println("usage: packets serve