From 4e6a29bf3da21651b492fa43e1a31db671ff2107 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 5 Nov 2025 21:07:54 +0000 Subject: [PATCH 1/2] Initial plan From cde97d0b1f4975f8d3e76e3bff10ba3216a3e007 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 5 Nov 2025 21:13:58 +0000 Subject: [PATCH 2/2] Replace github.com/mattn/go-sqlite3 with modernc.org/sqlite (pure-Go) Co-authored-by: karam-ajaj <37446151+karam-ajaj@users.noreply.github.com> --- Dockerfile | 2 +- config/atlas_go/go.mod | 15 +++++- config/atlas_go/go.sum | 51 +++++++++++++++++++- config/atlas_go/internal/db/setup.go | 4 +- config/atlas_go/internal/scan/deep_scan.go | 4 +- config/atlas_go/internal/scan/docker_scan.go | 4 +- config/atlas_go/internal/scan/fastscan.go | 6 +-- 7 files changed, 73 insertions(+), 13 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2d6845ae..0fe39d5c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,7 @@ FROM python:3.11-slim RUN apt-get update && \ apt-get install -y \ - nginx iputils-ping traceroute nmap sqlite3 net-tools curl jq ca-certificates nbtscan docker.io && \ + nginx iputils-ping traceroute nmap net-tools curl jq ca-certificates nbtscan docker.io && \ apt-get upgrade -y && \ pip install --no-cache-dir fastapi==0.121.0 uvicorn==0.38.0 protobuf==4.25.8 && \ apt-get clean && rm -rf /var/lib/apt/lists/* diff --git a/config/atlas_go/go.mod b/config/atlas_go/go.mod index e369b1e6..03b6d713 100644 --- a/config/atlas_go/go.mod +++ b/config/atlas_go/go.mod @@ -2,4 +2,17 @@ module atlas go 1.25 -require github.com/mattn/go-sqlite3 v1.14.17 +require modernc.org/sqlite v1.40.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-20250620022241-b7579e27df2b // indirect + golang.org/x/sys v0.36.0 // indirect + modernc.org/libc v1.66.10 // indirect + modernc.org/mathutil v1.7.1 // indirect + modernc.org/memory v1.11.0 // indirect +) diff --git a/config/atlas_go/go.sum b/config/atlas_go/go.sum index 04784a2e..0c49188d 100644 --- a/config/atlas_go/go.sum +++ b/config/atlas_go/go.sum @@ -1,2 +1,49 @@ -github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM= -github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +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/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= +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/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +modernc.org/cc/v4 v4.26.5 h1:xM3bX7Mve6G8K8b+T11ReenJOT+BmVqQj0FY5T4+5Y4= +modernc.org/cc/v4 v4.26.5/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= +modernc.org/ccgo/v4 v4.28.1 h1:wPKYn5EC/mYTqBO373jKjvX2n+3+aK7+sICCv4Fjy1A= +modernc.org/ccgo/v4 v4.28.1/go.mod h1:uD+4RnfrVgE6ec9NGguUNdhqzNIeeomeXf6CL0GTE5Q= +modernc.org/fileutil v1.3.40 h1:ZGMswMNc9JOCrcrakF1HrvmergNLAmxOPjizirpfqBA= +modernc.org/fileutil v1.3.40/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/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks= +modernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI= +modernc.org/libc v1.66.10 h1:yZkb3YeLx4oynyR+iUsXsybsX4Ubx7MQlSYEw4yj59A= +modernc.org/libc v1.66.10/go.mod h1:8vGSEwvoUoltr4dlywvHqjtAqHBaw0j1jI7iFBTAr2I= +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.40.0 h1:bNWEDlYhNPAUdUdBzjAvn8icAs/2gaKlj4vM+tQ6KdQ= +modernc.org/sqlite v1.40.0/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE= +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/config/atlas_go/internal/db/setup.go b/config/atlas_go/internal/db/setup.go index e3c0bef0..bdb96905 100644 --- a/config/atlas_go/internal/db/setup.go +++ b/config/atlas_go/internal/db/setup.go @@ -5,7 +5,7 @@ import ( "fmt" "os" - _ "github.com/mattn/go-sqlite3" + _ "modernc.org/sqlite" ) const dbPath = "/config/db/atlas.db" @@ -18,7 +18,7 @@ func InitDB() error { } // Step 2: Open the SQLite database (it will be created if not exists) - db, err := sql.Open("sqlite3", dbPath) + db, err := sql.Open("sqlite", dbPath) if err != nil { return fmt.Errorf("failed to open DB: %v", err) } diff --git a/config/atlas_go/internal/scan/deep_scan.go b/config/atlas_go/internal/scan/deep_scan.go index b76a75b4..5f64aa72 100644 --- a/config/atlas_go/internal/scan/deep_scan.go +++ b/config/atlas_go/internal/scan/deep_scan.go @@ -12,7 +12,7 @@ import ( "sync" "time" - _ "github.com/mattn/go-sqlite3" + _ "modernc.org/sqlite" "atlas/internal/utils" ) @@ -239,7 +239,7 @@ func DeepScan() error { fmt.Fprintf(lf, "Total discovered: %d hosts in %s\n", total, time.Since(startTime)) dbPath := "/config/db/atlas.db" - db, err := sql.Open("sqlite3", dbPath) + db, err := sql.Open("sqlite", dbPath) if err != nil { fmt.Fprintf(lf, "Failed to open DB: %v\n", err) return err diff --git a/config/atlas_go/internal/scan/docker_scan.go b/config/atlas_go/internal/scan/docker_scan.go index 305ca14d..6b7ec5b2 100644 --- a/config/atlas_go/internal/scan/docker_scan.go +++ b/config/atlas_go/internal/scan/docker_scan.go @@ -10,7 +10,7 @@ import ( "time" "strconv" - _ "github.com/mattn/go-sqlite3" + _ "modernc.org/sqlite" ) type DockerContainer struct { @@ -216,7 +216,7 @@ func isDockerInternalGateway(gateway string) bool { } func updateDockerDB(containers []DockerContainer) error { - db, err := sql.Open("sqlite3", "/config/db/atlas.db") + db, err := sql.Open("sqlite", "/config/db/atlas.db") if err != nil { return err } diff --git a/config/atlas_go/internal/scan/fastscan.go b/config/atlas_go/internal/scan/fastscan.go index 28fdca5d..caf9118b 100644 --- a/config/atlas_go/internal/scan/fastscan.go +++ b/config/atlas_go/internal/scan/fastscan.go @@ -8,7 +8,7 @@ import ( "strings" "time" - _ "github.com/mattn/go-sqlite3" + _ "modernc.org/sqlite" "atlas/internal/utils" ) @@ -58,7 +58,7 @@ func runNmap(subnet string) (map[string]string, error) { // POINT 2: Assign next_hop for LAN hosts to the gateway IP func updateSQLiteDB(hosts map[string]string, gatewayIP string, interfaceName string) error { dbPath := "/config/db/atlas.db" - db, err := sql.Open("sqlite3", dbPath) + db, err := sql.Open("sqlite", dbPath) if err != nil { return err } @@ -108,7 +108,7 @@ func updateExternalIPInDB(dbPath string) { return } - db, err := sql.Open("sqlite3", dbPath) + db, err := sql.Open("sqlite", dbPath) if err != nil { fmt.Println("❌ Failed to open DB:", err) return