Merge pull request #211 from projectdiscovery/single-file-output-fix

Fixed single file output
master
Ice3man 2020-01-10 02:22:03 -08:00 committed by GitHub
commit 4a6d839154
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 5 deletions

View File

@ -12,7 +12,7 @@ import (
) )
// EnumerateSingleDomain performs subdomain enumeration against a single domain // EnumerateSingleDomain performs subdomain enumeration against a single domain
func (r *Runner) EnumerateSingleDomain(domain, output string) error { func (r *Runner) EnumerateSingleDomain(domain, output string, append bool) error {
log.Infof("Enumerating subdomains for %s\n", domain) log.Infof("Enumerating subdomains for %s\n", domain)
// Get the API keys for sources from the configuration // Get the API keys for sources from the configuration
@ -127,7 +127,13 @@ func (r *Runner) EnumerateSingleDomain(domain, output string) error {
} }
} }
file, err := os.Create(output) var file *os.File
var err error
if append {
file, err = os.OpenFile(output, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
} else {
file, err = os.Create(output)
}
if err != nil { if err != nil {
log.Errorf("Could not create file %s for %s: %s\n", output, domain, err) log.Errorf("Could not create file %s for %s: %s\n", output, domain, err)
return err return err

View File

@ -40,7 +40,7 @@ func NewRunner(options *Options) (*Runner, error) {
func (r *Runner) RunEnumeration() error { func (r *Runner) RunEnumeration() error {
// Check if only a single domain is sent as input. Process the domain now. // Check if only a single domain is sent as input. Process the domain now.
if r.options.Domain != "" { if r.options.Domain != "" {
return r.EnumerateSingleDomain(r.options.Domain, r.options.Output) return r.EnumerateSingleDomain(r.options.Domain, r.options.Output, false)
} }
// If we have multiple domains as input, // If we have multiple domains as input,
@ -71,8 +71,16 @@ func (r *Runner) EnumerateMultipleDomains(reader io.Reader) error {
continue continue
} }
outputFile := path.Join(r.options.OutputDirectory, domain) var err error
err := r.EnumerateSingleDomain(domain, outputFile) // If the user has specifed an output file, use that output file instead
// of creating a new output file for each domain. Else create a new file
// for each domain in the directory.
if r.options.Output != "" {
err = r.EnumerateSingleDomain(domain, r.options.Output, true)
} else {
outputFile := path.Join(r.options.OutputDirectory, domain)
err = r.EnumerateSingleDomain(domain, outputFile, false)
}
if err != nil { if err != nil {
return err return err
} }