61 lines
917 B
Go
61 lines
917 B
Go
package pinggy
|
|
|
|
import (
|
|
"net/url"
|
|
|
|
"github.com/AlexxIT/go2rtc/internal/app"
|
|
"github.com/AlexxIT/go2rtc/pkg/pinggy"
|
|
"github.com/rs/zerolog"
|
|
)
|
|
|
|
func Init() {
|
|
var cfg struct {
|
|
Mod struct {
|
|
Tunnel string `yaml:"tunnel"`
|
|
} `yaml:"pinggy"`
|
|
}
|
|
|
|
app.LoadConfig(&cfg)
|
|
|
|
if cfg.Mod.Tunnel == "" {
|
|
return
|
|
}
|
|
|
|
log = app.GetLogger("pinggy")
|
|
|
|
u, err := url.Parse(cfg.Mod.Tunnel)
|
|
if err != nil {
|
|
log.Error().Err(err).Send()
|
|
return
|
|
}
|
|
|
|
go proxy(u.Scheme, u.Host)
|
|
}
|
|
|
|
var log zerolog.Logger
|
|
|
|
func proxy(proto, address string) {
|
|
client, err := pinggy.NewClient(proto)
|
|
if err != nil {
|
|
log.Error().Err(err).Send()
|
|
return
|
|
}
|
|
defer client.Close()
|
|
|
|
urls, err := client.GetURLs()
|
|
if err != nil {
|
|
log.Error().Err(err).Send()
|
|
return
|
|
}
|
|
|
|
for _, s := range urls {
|
|
log.Info().Str("url", s).Msgf("[pinggy] proxy")
|
|
}
|
|
|
|
err = client.Proxy(address)
|
|
if err != nil {
|
|
log.Error().Err(err).Send()
|
|
return
|
|
}
|
|
}
|