add the dialer

This commit is contained in:
eyedeekay
2025-04-10 19:59:34 -04:00
parent 8cb03f62f6
commit b20f3099f7
3 changed files with 99 additions and 30 deletions

42
net_mirror_dialer.go Normal file
View File

@ -0,0 +1,42 @@
package graceful
import (
"net"
"net/url"
"strings"
"github.com/go-i2p/onramp"
)
var Garlic, GarlicErr = onramp.NewGarlic("git-looseleaf", "127.0.0.1:7656", onramp.OPT_WIDE)
var Onion, OnionErr = onramp.NewOnion("git-looseleaf")
func Dial(network, addr string) (net.Conn, error) {
// convert the addr to a URL
url, err := url.Parse(addr)
if err != nil {
return nil, err
}
// get the domain name
domain := url.Hostname()
// get the top-level domain
fr := strings.Split(domain, ".")
tld := fr[len(fr)-1]
switch tld {
case "i2p":
if GarlicErr != nil {
return nil, GarlicErr
}
// I2P is a special case, we need to use the garlic dialer
return Garlic.Dial("i2p", addr)
case "onion":
if OnionErr != nil {
return nil, OnionErr
}
// Onion is a special case, we need to use the onion dialer
return Onion.Dial("onion", addr)
default:
// For everything else, we can use the default dialer
return net.Dial(network, addr)
}
}