shogo/internal/shodan/scan/submit.go

55 lines
1.1 KiB
Go
Raw Normal View History

package scan
import (
"context"
"fmt"
"time"
2024-05-29 00:42:40 +00:00
"git.supernets.org/perp/shogo/internal/utils"
)
// Submit a scan
func (s *Scan) Submit() {
// Get results
results, err := utils.Client.Scan(context.Background(), s.IPs)
if err != nil {
s.Results <- fmt.Sprintf("%s: %s", utils.Red("Error"), err.Error())
return
}
// Store lines
var lines string
// Add lines
lines += utils.Title.Sprintf("Starting scan for %s\n", s.IPs)
lines += fmt.Sprintf(
"%s: %s\n%s: %s\n%s: %s\n",
utils.Green("ID"),
utils.Blue(results.ID),
utils.Blue("Count"),
utils.Green(results.Count),
utils.Green("Credits left"),
utils.Blue(results.CreditsLeft),
)
for {
time.Sleep(time.Second * 3)
// Get results
results, err := utils.Client.GetScanStatus(context.Background(), results.ID)
if err != nil {
s.Results <- fmt.Sprintf("%s: %s", utils.Red("Error"), err.Error())
return
}
// Get status
switch results.Status {
case "DONE":
lines += fmt.Sprintf("%s: %s", utils.Blue("Status"), utils.Green(results.Status))
s.Results <- lines
return
}
}
}