package main import ( "fmt" "log" "os" "time" "git.aetherial.dev/aeth/gluetun-qbitt-sidecar/pkg/gluetun" "git.aetherial.dev/aeth/gluetun-qbitt-sidecar/pkg/qbitt" "github.com/joho/godotenv" ) func main() { godotenv.Load() gluetunAddress := os.Getenv("GLUETUN_ADDRESS") // gluetunApikey := os.Getenv("GLUETUN_API_KEY") qbitAddress := os.Getenv("QBITTORRENT_ADDRESS") qbitUsername := os.Getenv("QBITTORRENT_USERNAME") qbitPassword := os.Getenv("QBITTORRENT_PASSWORD") qbitClient, err := qbitt.NewQbittorrentClient(qbitUsername, qbitPassword, qbitAddress) if err != nil { log.Fatal(err) } for { auth, err := gluetun.GetAuthentication("./config.toml") if err != nil { log.Fatal(err) } port, err := gluetun.GetForwardedPort(gluetunAddress, auth.Apikey) if err != nil { log.Fatal(err) } cfg, err := qbitClient.GetRunningConfiguration() if err != nil { log.Fatal(err) } if cfg.ListenPort != port.Port { // if the port in qbittorrent is not the same as the forwarded port from gluetun, update it in following block err = qbitClient.UpdateIncomingPort(port.Port) if err != nil { log.Fatal(err) } updated, err := qbitClient.VerifyPortChange(port.Port) if err != nil { log.Fatal(err) } fmt.Printf("Updated qbittorrent incoming port: %t\n", updated) } else { fmt.Printf("Qbittorrent incoming port: %v\nGluetun forwarded port: %v\nNo update.\n", cfg.ListenPort, port.Port) } time.Sleep(time.Second * 30) } }