51 lines
970 B
Go
51 lines
970 B
Go
|
package scan
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
"time"
|
||
|
|
||
|
"git.tcp.direct/perp/shogo/internal/utils"
|
||
|
)
|
||
|
|
||
|
// Submit a scan
|
||
|
func Submit(ips []string) {
|
||
|
// Get results
|
||
|
results, err := utils.Client.Scan(context.Background(), ips)
|
||
|
if err != nil {
|
||
|
fmt.Printf("%s: %s\n", utils.Red("Error"), err.Error())
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// Print results
|
||
|
utils.Title.Printf("Starting scan for %s\n", ips)
|
||
|
|
||
|
fmt.Printf(
|
||
|
"%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 {
|
||
|
fmt.Printf("%s: %s\n", utils.Red("Error"), err.Error())
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// Get status
|
||
|
switch results.Status {
|
||
|
case "DONE":
|
||
|
fmt.Printf("%s: %s\n", utils.Blue("Status"), utils.Green(results.Status))
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|