2023-05-29 13:50:40 +02:00
package peer
import (
"os"
"strconv"
"strings"
"time"
log "github.com/sirupsen/logrus"
)
const (
2024-03-31 19:39:52 +02:00
envICEKeepAliveIntervalSec = "NB_ICE_KEEP_ALIVE_INTERVAL_SEC"
envICEDisconnectedTimeoutSec = "NB_ICE_DISCONNECTED_TIMEOUT_SEC"
envICERelayAcceptanceMinWaitSec = "NB_ICE_RELAY_ACCEPTANCE_MIN_WAIT_SEC"
envICEForceRelayConn = "NB_ICE_FORCE_RELAY_CONN"
2023-05-29 13:50:40 +02:00
)
2024-06-19 17:40:16 +02:00
func ForcedRelayAddress ( ) string {
if envRelay := os . Getenv ( "NB_RELAY_ADDRESS" ) ; envRelay != "" {
return envRelay
}
return ""
}
2023-05-29 13:50:40 +02:00
func iceKeepAlive ( ) time . Duration {
keepAliveEnv := os . Getenv ( envICEKeepAliveIntervalSec )
if keepAliveEnv == "" {
return iceKeepAliveDefault
}
2024-03-31 19:39:52 +02:00
log . Infof ( "setting ICE keep alive interval to %s seconds" , keepAliveEnv )
2023-05-29 13:50:40 +02:00
keepAliveEnvSec , err := strconv . Atoi ( keepAliveEnv )
if err != nil {
log . Warnf ( "invalid value %s set for %s, using default %v" , keepAliveEnv , envICEKeepAliveIntervalSec , iceKeepAliveDefault )
return iceKeepAliveDefault
}
return time . Duration ( keepAliveEnvSec ) * time . Second
}
func iceDisconnectedTimeout ( ) time . Duration {
disconnectedTimeoutEnv := os . Getenv ( envICEDisconnectedTimeoutSec )
if disconnectedTimeoutEnv == "" {
return iceDisconnectedTimeoutDefault
}
2024-03-31 19:39:52 +02:00
log . Infof ( "setting ICE disconnected timeout to %s seconds" , disconnectedTimeoutEnv )
2023-05-29 13:50:40 +02:00
disconnectedTimeoutSec , err := strconv . Atoi ( disconnectedTimeoutEnv )
if err != nil {
log . Warnf ( "invalid value %s set for %s, using default %v" , disconnectedTimeoutEnv , envICEDisconnectedTimeoutSec , iceDisconnectedTimeoutDefault )
return iceDisconnectedTimeoutDefault
}
return time . Duration ( disconnectedTimeoutSec ) * time . Second
}
2024-03-31 19:39:52 +02:00
func iceRelayAcceptanceMinWait ( ) time . Duration {
iceRelayAcceptanceMinWaitEnv := os . Getenv ( envICERelayAcceptanceMinWaitSec )
if iceRelayAcceptanceMinWaitEnv == "" {
return iceRelayAcceptanceMinWaitDefault
}
log . Infof ( "setting ICE relay acceptance min wait to %s seconds" , iceRelayAcceptanceMinWaitEnv )
disconnectedTimeoutSec , err := strconv . Atoi ( iceRelayAcceptanceMinWaitEnv )
if err != nil {
log . Warnf ( "invalid value %s set for %s, using default %v" , iceRelayAcceptanceMinWaitEnv , envICERelayAcceptanceMinWaitSec , iceRelayAcceptanceMinWaitDefault )
return iceRelayAcceptanceMinWaitDefault
}
return time . Duration ( disconnectedTimeoutSec ) * time . Second
}
2023-05-29 13:50:40 +02:00
func hasICEForceRelayConn ( ) bool {
disconnectedTimeoutEnv := os . Getenv ( envICEForceRelayConn )
return strings . ToLower ( disconnectedTimeoutEnv ) == "true"
}