diff --git a/.gitignore b/.gitignore index bb916b2..f88264d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ # Ignore local data data/ -watchyourlan \ No newline at end of file +watchyourlan diff --git a/Dockerfile b/Dockerfile index e04a76e..c6c5bf7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,8 +3,8 @@ FROM ubuntu:20.04 RUN apt update && apt install -y arp-scan && apt clean \ && mkdir /data -COPY templates /app/templates -COPY watchyourlan /app/ +COPY src/templates /app/templates +COPY src/watchyourlan /app/ EXPOSE 8840 diff --git a/Makefile b/Makefile index 8f4bfea..70463f1 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,20 @@ DUSER=aceberg DNAME=watchyourlan -DPORT=8840 + VERSION=0.4 mod: - rm go.mod - go mod init $(DNAME) + cd src && \ + rm go.mod && \ + go mod init $(DNAME) && \ go mod tidy run: + cd src && \ sudo go run . go-build: + cd src && \ go build . docker-build: @@ -26,7 +29,7 @@ docker-run: $(DUSER)/$(DNAME):$(VERSION) clean: - rm $(DNAME) || true + rm src/$(DNAME) || true docker rmi -f $(DUSER)/$(DNAME):latest $(DUSER)/$(DNAME):$(VERSION) dev: go-build docker-build docker-run \ No newline at end of file diff --git a/db-create.go b/db-create.go deleted file mode 100644 index 7ee6a5c..0000000 --- a/db-create.go +++ /dev/null @@ -1,38 +0,0 @@ -package main - -import ( - "os" - "fmt" - "log" - "database/sql" - _ "github.com/mattn/go-sqlite3" -) - -func db_create(dbPath string) { - if _, err := os.Stat(dbPath); err == nil { - fmt.Println("DB exists") - } else { - sqlStatement := `CREATE TABLE "now" ( - "ID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, - "NAME" TEXT, - "IP" TEXT, - "MAC" TEXT, - "HW" TEXT, - "DATE" TEXT, - "KNOWN" INTEGER DEFAULT 0 - );` - db_query(dbPath, sqlStatement) - } -} - -func db_query (dbPath string, sqlStatement string) (*sql.Rows) { - db, _ := sql.Open("sqlite3", dbPath) - defer db.Close() - - res, err := db.Query(sqlStatement) - if err != nil { - log.Fatal(err) - } - - return res -} \ No newline at end of file diff --git a/db-search.go b/db-search.go deleted file mode 100644 index 68802cc..0000000 --- a/db-search.go +++ /dev/null @@ -1,15 +0,0 @@ -package main - -import ( - // "os" - "fmt" - // "log" - // "database/sql" - // _ "github.com/mattn/go-sqlite3" -) - -func db_search(dbPath string) { - sqlStatement := `` - res := db_query(dbPath, sqlStatement) - fmt.Println(res) -} \ No newline at end of file diff --git a/arpscan.go b/src/arpscan.go similarity index 100% rename from arpscan.go rename to src/arpscan.go diff --git a/src/db-connect.go b/src/db-connect.go new file mode 100644 index 0000000..afdbdd6 --- /dev/null +++ b/src/db-connect.go @@ -0,0 +1,56 @@ +package main + +import ( + "fmt" + "log" + "database/sql" + _ "github.com/mattn/go-sqlite3" +) + +// func db_query (dbPath string, sqlStatement string) (*sql.Rows) { +// db, _ := sql.Open("sqlite3", dbPath) +// defer db.Close() + +// res, err := db.Query(sqlStatement) +// if err != nil { +// log.Fatal(err) +// } +// return res +// } + +func db_exec (dbPath string, sqlStatement string) { + db, _ := sql.Open("sqlite3", dbPath) + defer db.Close() + + _, err := db.Exec(sqlStatement) + if err != nil { + log.Fatal(err) + } +} + +func db_select(dbPath string) (dbHosts []Host) { + db, _ := sql.Open("sqlite3", dbPath) + defer db.Close() + + sqlStatement := `SELECT * FROM "now"` + //res := db_query(dbPath, sqlStatement) + + res, err := db.Query(sqlStatement) + if err != nil { + log.Fatal(err) + } + + dbHosts = []Host{} + for res.Next() { + var oneHost Host + err = res.Scan(&oneHost.Id, &oneHost.Name, &oneHost.Ip, &oneHost.Mac, &oneHost.Hw, &oneHost.Date, &oneHost.Known) + if err != nil { + log.Fatal(err) + } + + dbHosts = append(dbHosts, oneHost) + } + + fmt.Println("Select all:", dbHosts) + return dbHosts +} \ No newline at end of file diff --git a/src/db-edit.go b/src/db-edit.go new file mode 100644 index 0000000..7a82fcd --- /dev/null +++ b/src/db-edit.go @@ -0,0 +1,31 @@ +package main + +import ( + "os" + "fmt" +) + +func db_create(dbPath string) { + if _, err := os.Stat(dbPath); err == nil { + fmt.Println("DB exists") + } else { + sqlStatement := `CREATE TABLE "now" ( + "ID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, + "NAME" TEXT NOT NULL, + "IP" TEXT, + "MAC" TEXT, + "HW" TEXT, + "DATE" TEXT, + "KNOWN" INTEGER DEFAULT 0 + );` + db_exec(dbPath, sqlStatement) + fmt.Println("Table created!") + } +} + +func db_insert(dbPath string, oneHost Host) { + sqlStatement := `INSERT INTO "now" (NAME, IP, MAC, HW, DATE, KNOWN) VALUES ('','%s','%s','%s','%s', '%d');` + sqlStatement = fmt.Sprintf(sqlStatement, oneHost.Ip, oneHost.Mac, oneHost.Hw, oneHost.Date, 1) + fmt.Println("Insert statement:", sqlStatement) + db_exec(dbPath, sqlStatement) +} \ No newline at end of file diff --git a/getconfig.go b/src/getconfig.go similarity index 100% rename from getconfig.go rename to src/getconfig.go diff --git a/go.mod b/src/go.mod similarity index 95% rename from go.mod rename to src/go.mod index 3ee015f..06ee5ab 100644 --- a/go.mod +++ b/src/go.mod @@ -3,7 +3,7 @@ module watchyourlan go 1.19 require ( - github.com/mattn/go-sqlite3 v1.14.14 + github.com/mattn/go-sqlite3 v1.14.15 github.com/spf13/viper v1.12.0 ) diff --git a/go.sum b/src/go.sum similarity index 99% rename from go.sum rename to src/go.sum index 52743c9..e8ba20c 100644 --- a/go.sum +++ b/src/go.sum @@ -133,8 +133,8 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mattn/go-sqlite3 v1.14.14 h1:qZgc/Rwetq+MtyE18WhzjokPD93dNqLGNT3QJuLvBGw= -github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= +github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= diff --git a/index.go b/src/index.go similarity index 100% rename from index.go rename to src/index.go diff --git a/main.go b/src/main.go similarity index 82% rename from main.go rename to src/main.go index 1e52868..23c1b39 100644 --- a/main.go +++ b/src/main.go @@ -27,9 +27,11 @@ func main() { foundHosts := parse_output(scan_iface(newConfig.Iface)) - fmt.Println(foundHosts) + fmt.Println("Found hosts:", foundHosts) db_create(newConfig.DbPath) + db_insert(newConfig.DbPath, foundHosts[0]) + db_select(newConfig.DbPath) fmt.Println(fmt.Sprintf("http://%s:%s", newConfig.GuiIP, newConfig.GuiPort)) diff --git a/templates/header.html b/src/templates/header.html similarity index 100% rename from templates/header.html rename to src/templates/header.html diff --git a/templates/index.html b/src/templates/index.html similarity index 100% rename from templates/index.html rename to src/templates/index.html