47 lines
988 B
Go
47 lines
988 B
Go
package scan
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
|
|
"git.supernets.org/perp/shogo/internal/utils"
|
|
)
|
|
|
|
// Submit an internet scan
|
|
func (s *Scan) Internet() {
|
|
// Get results
|
|
results, err := utils.Client.ScanInternet(context.Background(), s.Port, s.Protocol)
|
|
if err != nil {
|
|
s.Results <- fmt.Sprintf("%s: %s", utils.Red("Error"), err.Error())
|
|
return
|
|
}
|
|
|
|
// Store lines
|
|
var lines string
|
|
|
|
// Print results
|
|
lines += utils.Title.Sprintf("Scanning internet for %d %s\n", s.Port, s.Protocol)
|
|
|
|
lines += fmt.Sprintf("%s: %s\n", utils.Green("ID"), utils.Blue(results))
|
|
|
|
for {
|
|
time.Sleep(time.Second * 3)
|
|
|
|
// Get results
|
|
results, err := utils.Client.GetScanStatus(context.Background(), results)
|
|
if err != nil {
|
|
s.Results <- fmt.Sprintf("%s: %s\n", 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
|
|
}
|
|
}
|
|
}
|