mirror of
https://github.com/Dvorinka/beszel.git
synced 2026-06-03 21:02:56 +00:00
feat(site): enhance monitoring, domain, and system tracking
Build Docker images / Hub (push) Failing after 5m57s
Build Docker images / Hub (push) Failing after 5m57s
- Improve domain lookup by adding CNAME and SRV record support
- Enhance domain status logic to include expiry and DNS resolution verification
- Update monitoring API to perform synchronous initial checks for immediate status updates
- Refactor site UI:
- Add tag filtering to domains and monitors tables
- Improve calendar view with better visual indicators for today and events
- Update monitor detail view with improved status badges and pending states
- Simplify home page layout by removing redundant card wrappers
- Update localization files for numerous languages to support new UI elements
- Add `cleanEndpointsConfig` to hub to safely reuse Docker network settings during container updates
This commit is contained in:
@@ -120,20 +120,31 @@ func (s *Scheduler) checkDomain(record *core.Record) error {
|
||||
newData = &domain.Domain{DomainName: domainName}
|
||||
}
|
||||
|
||||
// Independent DNS resolution check: if WHOIS failed, try to resolve the domain directly
|
||||
if err != nil {
|
||||
ips, lookupErr := net.LookupHost(domainName)
|
||||
if lookupErr == nil && len(ips) > 0 {
|
||||
newData.IPv4Addresses = []string{}
|
||||
newData.IPv6Addresses = []string{}
|
||||
for _, ip := range ips {
|
||||
if strings.Contains(ip, ":") {
|
||||
newData.IPv6Addresses = append(newData.IPv6Addresses, ip)
|
||||
} else {
|
||||
newData.IPv4Addresses = append(newData.IPv4Addresses, ip)
|
||||
}
|
||||
// Always perform independent DNS resolution to verify domain is alive.
|
||||
// This is critical when WHOIS succeeds but returns partial data (e.g. no expiry for some TLDs),
|
||||
// or when WHOIS fails completely. DNS resolution proves the domain exists and is active.
|
||||
ips, lookupErr := net.LookupHost(domainName)
|
||||
if lookupErr == nil && len(ips) > 0 {
|
||||
newData.IPv4Addresses = []string{}
|
||||
newData.IPv6Addresses = []string{}
|
||||
for _, ip := range ips {
|
||||
if strings.Contains(ip, ":") {
|
||||
newData.IPv6Addresses = append(newData.IPv6Addresses, ip)
|
||||
} else {
|
||||
newData.IPv4Addresses = append(newData.IPv4Addresses, ip)
|
||||
}
|
||||
log.Printf("[domain-scheduler] DNS resolution succeeded for %s despite WHOIS failure", domainName)
|
||||
}
|
||||
log.Printf("[domain-scheduler] DNS A/AAAA resolution succeeded for %s", domainName)
|
||||
}
|
||||
|
||||
// Also try to get nameservers independently if WHOIS didn't provide them
|
||||
if len(newData.NameServers) == 0 {
|
||||
nsRecords, nsErr := net.LookupNS(domainName)
|
||||
if nsErr == nil && len(nsRecords) > 0 {
|
||||
for _, ns := range nsRecords {
|
||||
newData.NameServers = append(newData.NameServers, ns.Host)
|
||||
}
|
||||
log.Printf("[domain-scheduler] DNS NS lookup succeeded for %s", domainName)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user