from pathlib import Path CONTENT = r"""package recon import "time" var FleetPorts = []int{22, 80, 443, 445, 3389, 5985, 5986, 6262, 8080, 8443} const ( DefaultPortDialTimeout = 2 * time.Second DefaultCrawlDepth = 2 DefaultCrawlMaxPages = 50 ) type ScanRequest struct { Host string `json:"host"` Port int `json:"port,omitempty"` Scheme string `json:"scheme,omitempty"` Paths []string `json:"paths,omitempty"` Profile string `json:"profile,omitempty"` } type PortResult struct { Port int `json:"port"` Open bool `json:"open"` } type FormFinding struct { PageURL string `json:"page_url"` Action string `json:"action,omitempty"` Method string `json:"method,omitempty"` Enctype string `json:"enctype,omitempty"` Fields []string `json:"fields,omitempty"` HasFile bool `json:"has_file_input,omitempty"` Multipart bool `json:"multipart,omitempty"` } type URLFieldFinding struct { PageURL string `json:"page_url"` Name string `json:"name"` Type string `json:"type,omitempty"` Hint string `json:"hint"` } type PageFinding struct { URL string `json:"url"` StatusCode int `json:"status_code"` Title string `json:"title,omitempty"` } type CrawlReport struct { PagesFetched int `json:"pages_fetched"` Pages []PageFinding `json:"pages,omitempty"` FileInputs []FormFinding `json:"file_inputs,omitempty"` MultipartForms []FormFinding `json:"multipart_forms,omitempty"` URLFields []URLFieldFinding `json:"url_fields,omitempty"` SSRFScore int `json:"ssrf_score"` CMSFingerprints []string `json:"cms_fingerprints,omitempty"` } type DeployRecommendation struct { Lane string `json:"lane,omitempty"` Template string `json:"template,omitempty"` Reason string `json:"reason"` Priority int `json:"priority"` } type ScanReport struct { ScanID string `json:"scan_id,omitempty"` Host string `json:"host"` Profile string `json:"profile,omitempty"` Status string `json:"status,omitempty"` ScannedAt time.Time `json:"scanned_at"` Ports []PortResult `json:"ports"` Crawl *CrawlReport `json:"crawl,omitempty"` RelayVia string `json:"relay_via,omitempty"` UDPHints []UDPHint `json:"udp_hints,omitempty"` PathTracerHints []string `json:"path_tracer_hints,omitempty"` Message string `json:"message,omitempty"` Recommendations []DeployRecommendation `json:"recommendations,omitempty"` } type ReconScanDiff struct { NewPorts []int `json:"new_ports,omitempty"` NewForms []FormFinding `json:"new_forms,omitempty"` } type ReconHistoryEntry struct { ScanID string `json:"scan_id"` Host string `json:"host"` Profile string `json:"profile,omitempty"` Status string `json:"status"` ScannedAt time.Time `json:"scanned_at"` Report *ScanReport `json:"report,omitempty"` Diff *ReconScanDiff `json:"diff,omitempty"` } """ Path(__file__).resolve().parents[1] / "server/internal/recon/types.go" Path(r"g:/crypto miner/server/internal/recon/types.go").write_text(CONTENT, encoding="utf-8", newline="\n") print("wrote types.go")