From 74051a9f372c1fee52ff8358a81717e4a6a77cfe Mon Sep 17 00:00:00 2001 From: roboogg133 Date: Mon, 7 Jul 2025 20:58:15 -0300 Subject: [PATCH] pre-pre-pre-build of packets --- index.db | Bin 0 -> 20480 bytes installed.db | Bin 0 -> 12288 bytes src/go.mod | 22 + src/go.sum | 31 ++ src/httpsocket/go.mod | 3 + src/httpsocket/main.go | 20 + src/main.go | 1048 ++++++++++++++++++++++++++++++++++++++++ src/udpsocket/go.mod | 3 + src/udpsocket/main.go | 51 ++ udpsocket | Bin 0 -> 2760472 bytes 10 files changed, 1178 insertions(+) create mode 100644 index.db create mode 100644 installed.db create mode 100644 src/go.mod create mode 100644 src/go.sum create mode 100644 src/httpsocket/go.mod create mode 100644 src/httpsocket/main.go create mode 100644 src/main.go create mode 100644 src/udpsocket/go.mod create mode 100644 src/udpsocket/main.go create mode 100755 udpsocket diff --git a/index.db b/index.db new file mode 100644 index 0000000000000000000000000000000000000000..405d118c3d05f1ea340615432782015b3366741d GIT binary patch literal 20480 zcmeI)&u-H&90%}(vH=}i2bYRNCEwVzE?wHR%{Wn}XsYPCt)vnYhsjCo)>{5_Njf$p z4x2dfE<6Wsz>C0vBW|~BP$BMAUn_ND*LLJja&i4r-yC*C$_S6*fTpCTtSYLiyd*?X z6nG?Y;j?yXSHmL*sWI`i_ElL3u(a0vgi6$ zQGHM>mDEq_bj%TTPw0Rp**W*eC|T`Ve$t=V)?2%rj~VrEi=^LeANDQM-M2}%-|3V| z{*1+mh{9>>yZZc)Cd1h}k0ov_M(JOgdu+r)PtH@YK&2S))8s-?frIF&Unx2+Uu2ji^ZList9@8^BX@pPNQl0 zIHNe$v#ZHE{^8_xn=az-viW)gF&hX#00Izz00bZa0SG_<0uX=z1f~MZGFMl=De^#q z00bZa0SG_<0uX=z1Rwwb2>fRPSI^bQPfE`&moHD0k9}nj4I*8u8k%vP*Q?vjy1r%9 z>Yl@S)!}-TyPWeTt1`o>)wWE%s=JQiHuPqLn~iOcdc5X2jmEa@p?kX#5ecCoiR3;% zNuqJ=GBS#zK}>@{gahK!a4?pk2_zlLsQQ4O$T$Fz5=N5?l19WC3*RG&2u40DlbHEp z5+YHSBYK2!E@a$5n96Z^`kuy28>Zz{}fB*y_ z009U<00Izz00bZ~M*>T^(xdDrgX#W%;kzOaBnUtN0uX=z1Rwwb2tWV=5P$##=0{*j LmFxfPj{trFJ68Ee literal 0 HcmV?d00001 diff --git a/installed.db b/installed.db new file mode 100644 index 0000000000000000000000000000000000000000..1f0d178e1f54657b7998fe53e4220b6e115109b1 GIT binary patch literal 12288 zcmeI%K}*9h6u|L>3Tig zTcLwk1#$4%SIim$2q1s}0tg_000IagfB*v9DA4Tb-Q&SPH%aZ{OcpMAanDk%qjx>A zqsTTV-&ODXeN`qJU4_=H_n!KtxU6uwn8-dwW_;K7$1oiFuToa&y!bmkm4y^jDUwvG z)!NXXxjfC@xN0aXj_i${{G4~T$s>Ln?YR>I2q1s}0tg_000IagfB*srY%Z|; en{Pk;X$T;I00IagfB*srAbA literal 0 HcmV?d00001 diff --git a/src/go.mod b/src/go.mod new file mode 100644 index 0000000..1b431f3 --- /dev/null +++ b/src/go.mod @@ -0,0 +1,22 @@ +module packets + +go 1.24.4 + +require ( + github.com/ulikunitz/xz v0.5.12 + golang.org/x/net v0.41.0 + modernc.org/sqlite v1.38.0 +) + +require ( + 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/ncruces/go-strftime v0.1.9 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect + golang.org/x/sys v0.33.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 new file mode 100644 index 0000000..3a8c306 --- /dev/null +++ b/src/go.sum @@ -0,0 +1,31 @@ +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/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +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/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= +github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= +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/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/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= +golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= +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/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= +modernc.org/libc v1.65.10 h1:ZwEk8+jhW7qBjHIT+wd0d9VjitRyQef9BnzlzGwMODc= +modernc.org/libc v1.65.10/go.mod h1:StFvYpx7i/mXtBAfVOjaU0PWZOvIRoZSgXhrwXzr8Po= +modernc.org/libc v1.66.0 h1:eoFuDb1ozurUY5WSWlgvxHp0FuL+AncMwNjFqGYMJPQ= +modernc.org/libc v1.66.0/go.mod h1:AiZxInURfEJx516LqEaFcrC+X38rt9G7+8ojIXQKHbo= +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/sqlite v1.38.0 h1:+4OrfPQ8pxHKuWG4md1JpR/EYAh3Md7TdejuuzE7EUI= +modernc.org/sqlite v1.38.0/go.mod h1:1Bj+yES4SVvBZ4cBOpVZ6QgesMCKpJZDq0nxYzOpmNE= diff --git a/src/httpsocket/go.mod b/src/httpsocket/go.mod new file mode 100644 index 0000000..27cde4e --- /dev/null +++ b/src/httpsocket/go.mod @@ -0,0 +1,3 @@ +module httpsocket + +go 1.24.4 diff --git a/src/httpsocket/main.go b/src/httpsocket/main.go new file mode 100644 index 0000000..d1fe4da --- /dev/null +++ b/src/httpsocket/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "fmt" + "log" + "net/http" + "os" +) + +func main() { + pid := os.Getpid() + if err := os.WriteFile("/opt/packets/packets/http.pid", []byte(fmt.Sprint(pid)), 0644); err != nil { + fmt.Println("error saving subprocess pid", err) + } + + fs := http.FileServer(http.Dir("/var/cache/packets")) + http.Handle("/", fs) + + log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", 9123), nil)) +} diff --git a/src/main.go b/src/main.go new file mode 100644 index 0000000..f2f9027 --- /dev/null +++ b/src/main.go @@ -0,0 +1,1048 @@ +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" + + "golang.org/x/net/ipv4" + _ "modernc.org/sqlite" + + "github.com/ulikunitz/xz" +) + +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"` +} + +func main() { + + uid := os.Getuid() + if uid != 0 { + fmt.Println("please, run packet as root") + return + } + + if len(os.Args) < 2 { + fmt.Println("invalid syntax") + return + } + + cmd := os.Args[1] + + switch cmd { + case "install": + if len(os.Args) < 3 { + fmt.Println("usage: packets install ") + return + } + + db, err := sql.Open("sqlite", "/opt/packets/packets/index.db") + if err != nil { + log.Fatal(err) + return + } + defer db.Close() + + nameToQuery := os.Args[2] + + 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 len(os.Args) < 3 { + fmt.Println("usage: packets serve