7 Commits
16 changed files with 24 additions and 10 deletions
+2 -2
View File
@@ -1,4 +1,4 @@
# ekekDNSHelper
# ekDNSHelper
A cross-platform CLI tool that resolves hostnames against DNS servers and writes the resulting IP-to-hostname mappings into the local hosts file. It manages a clearly delimited block within the hosts file so it can cleanly add and remove only its own entries.
@@ -6,7 +6,7 @@ By default, ekdns performs **smart resolution**: it discovers the authoritative
Built as a single static binary with no runtime dependencies.
**Copyright (c) 2024 Emberkom LLC**
**Copyright (c) 2026 Emberkom LLC**
## Features
+5 -3
View File
@@ -78,12 +78,14 @@ if (-not (Test-Path $OutputDir)) {
Write-Host "Created output directory: $OutputDir" -ForegroundColor Green
}
# Build flags
$ldflags = ""
# Build flags — always inject version and copyright year; release builds also strip debug symbols.
$buildYear = (Get-Date).Year
$injectedFlags = "-X main.version=$gitTag -X main.copyrightYear=$buildYear"
if ($Release) {
$ldflags = "-s -w"
$ldflags = "-s -w $injectedFlags"
Write-Host "Building RELEASE version (optimized, no debug symbols)..." -ForegroundColor Green
} else {
$ldflags = $injectedFlags
Write-Host "Building DEBUG version (with debug symbols)..." -ForegroundColor Yellow
}
+6 -2
View File
@@ -14,10 +14,14 @@ import (
"ekdns/resolver"
)
// version and copyrightYear are set at build time via -ldflags.
var version = "dev"
var copyrightYear = "2024"
func main() {
// Banner (always printed to stdout).
fmt.Println("ekDNSHelper v1.0")
fmt.Println("Copyright (c) 2024 Emberkom LLC")
fmt.Printf("ekDNSHelper %s\n", version)
fmt.Printf("Copyright (c) %s Emberkom LLC\n", copyrightYear)
fmt.Println("")
if len(os.Args) < 2 {
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+11 -3
View File
@@ -85,11 +85,19 @@ func resolveDefault(hostname string, pool []string, localResolvers []string, con
if authority != nil {
fmt.Fprintf(w, "[dns] Selected authority: %s → %s\n",
authority.Zone, strings.Join(authority.Nameservers, ", "))
return resolveAuthoritative(ctx, authority, hostname, pool, localResolvers, config, depth, w)
ips, err := resolveAuthoritative(ctx, authority, hostname, pool, localResolvers, config, depth, w)
if err == nil {
return ips, nil
}
// Stage 2 failed (e.g. sub-zone delegation referral not followed) —
// fall through to Stage 3 parallel A fallback.
fmt.Fprintf(w, "[dns] Stage 2 failed: %v\n", err)
fmt.Fprintf(w, "[dns] Falling back to Stage 3 parallel A queries\n")
} else {
fmt.Fprintf(w, "[dns] Stage 1: No NS records found at any level\n")
}
// Stage 3: No NS records found — fall back to parallel A queries.
fmt.Fprintf(w, "[dns] Stage 1: No NS records found at any level\n")
// Stage 3: Fall back to parallel recursive A queries.
ips, err := ParallelAFallback(ctx, w, pool, hostname, timeout)
if err != nil {
return nil, addPrivateTLDHint(hostname, err)