package file import ( "encoding/json" "fmt" "os" "strings" ) // Supported extensions var extensions = [2]string{"txt", "json"} // Write to file func Write(path, domain, subdomain string, ips []string) error { // Store extension var extension string // Split by extension split := strings.Split(path, ".") // No extension found if len(split) != 2 { extension = "txt" } else { extension = split[1] } // Open the file file, err := os.OpenFile(path, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600) if err != nil { return err } defer file.Close() // Check extension switch extension { case "txt": // Store IPs ip := strings.Join(ips, ",") // Format line line := fmt.Sprintf("%s:%s:%s\n", domain, subdomain, ip) // Write line _, err := file.Write([]byte(line)) if err != nil { return err } case "json": // Format struct output := struct { Domain string `json:"domain"` Subdomain string `json:"subdomain"` Hosts []string `json:"hosts"` }{ Domain: domain, Subdomain: subdomain, Hosts: ips, } // Marshal JSON jason, err := json.Marshal(&output) if err != nil { return err } // Format line line := string(jason) + "\n" // Write line _, err = file.Write([]byte(line)) if err != nil { return err } } return nil }