From f896a9775c34c0e095273c193806ca245dfae940 Mon Sep 17 00:00:00 2001 From: Mel Date: Thu, 20 Aug 2026 22:05:41 +0200 Subject: Add IPv4/IPv6 source from 'icanhazip.com' Signed-off-by: Mel --- source/icanhazip.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 source/icanhazip.go (limited to 'source/icanhazip.go') diff --git a/source/icanhazip.go b/source/icanhazip.go new file mode 100644 index 0000000..62f2d9f --- /dev/null +++ b/source/icanhazip.go @@ -0,0 +1,29 @@ +package source + +import ( + "log/slog" + "net/netip" +) + +type icanhazip struct { + log *slog.Logger +} + +var _ Source = (*icanhazip)(nil) + +func newICanHazIp(log *slog.Logger) (*icanhazip, error) { + return &icanhazip{log: log}, nil +} + +func (icanhazip) Supports(Family) bool { return true } + +func (s icanhazip) Lookup(family Family) (netip.Addr, error) { + s.log.Info("will look up address from the icanhazip.com service", + slog.String("family", string(family)), + ) + + if family == IPv6 { + return fetch("https://ipv6.icanhazip.com", IPv6) + } + return fetch("https://ipv4.icanhazip.com", IPv4) +} -- cgit v1.3.1