Merge pull request #35 from cjh1/scan-timestamp

Add timestamp to scan results cache
This commit is contained in:
David Allen 2024-07-01 09:20:13 -06:00 committed by GitHub
commit e26bd175f1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 17 additions and 12 deletions

View file

@ -4,6 +4,7 @@ import (
"encoding/json"
"fmt"
"strings"
"time"
"github.com/OpenCHAMI/magellan/internal/db/sqlite"
@ -25,7 +26,7 @@ var listCmd = &cobra.Command{
fmt.Printf("%s\n", string(b))
} else {
for _, r := range probeResults {
fmt.Printf("%s:%d (%s)\n", r.Host, r.Port, r.Protocol)
fmt.Printf("%s:%d (%s) @ %s\n", r.Host, r.Port, r.Protocol, r.Timestamp.Format(time.UnixDate))
}
}
},

View file

@ -7,6 +7,7 @@ import (
"os"
"path"
"strings"
"time"
magellan "github.com/OpenCHAMI/magellan/internal"
"github.com/OpenCHAMI/magellan/internal/db/sqlite"
@ -76,7 +77,7 @@ var scanCmd = &cobra.Command{
fmt.Printf("%s\n", string(b))
} else {
for _, r := range probeStates {
fmt.Printf("%s:%d (%s)\n", r.Host, r.Port, r.Protocol)
fmt.Printf("%s:%d (%s) @ %s\n", r.Host, r.Port, r.Protocol, r.Timestamp.Format(time.UnixDate))
}
}
}

View file

@ -15,6 +15,7 @@ func CreateProbeResultsIfNotExists(path string) (*sqlx.DB, error) {
port INTEGER NOT NULL,
protocol TEXT,
state INTEGER,
timestamp TIMESTAMP,
PRIMARY KEY (host, port)
);
`
@ -41,8 +42,8 @@ func InsertProbeResults(path string, states *[]magellan.ScannedResult) error {
// insert all probe states into db
tx := db.MustBegin()
for _, state := range *states {
sql := `INSERT OR REPLACE INTO magellan_scanned_ports (host, port, protocol, state)
VALUES (:host, :port, :protocol, :state);`
sql := `INSERT OR REPLACE INTO magellan_scanned_ports (host, port, protocol, state, timestamp)
VALUES (:host, :port, :protocol, :state, :timestamp);`
_, err := tx.NamedExec(sql, &state)
if err != nil {
fmt.Printf("failed toexecute transaction: %v\n", err)

View file

@ -16,6 +16,7 @@ type ScannedResult struct {
Port int `json:"port"`
Protocol string `json:"protocol"`
State bool `json:"state"`
Timestamp time.Time `json:"timestamp"`
}
func rawConnect(host string, ports []int, timeout int, keepOpenOnly bool) []ScannedResult {
@ -26,6 +27,7 @@ func rawConnect(host string, ports []int, timeout int, keepOpenOnly bool) []Scan
Port: p,
Protocol: "tcp",
State: false,
Timestamp: time.Now(),
}
t := time.Second * time.Duration(timeout)
port := fmt.Sprint(p)