package steam
import (
"math/rand"
"time"
"github.com/Philipp15b/go-steam/netutil"
)
// CMServers contains a list of worlwide servers
var CMServers = [][]string{
{ // North American Servers
// Chicago
"162.254.193.44:27018",
"162.254.193.44:27019",
"162.254.193.44:27020",
"162.254.193.44:27021",
"162.254.193.45:27017",
"162.254.193.45:27018",
"162.254.193.45:27019",
"162.254.193.45:27021",
"162.254.193.46:27017",
"162.254.193.46:27018",
"162.254.193.46:27019",
"162.254.193.46:27020",
"162.254.193.46:27021",
"162.254.193.47:27019",
"162.254.193.47:27020",
// Ashburn
"208.78.164.9:27017",
"208.78.164.9:27018",
"208.78.164.9:27019",
"208.78.164.10:27017",
"208.78.164.10:27018",
"208.78.164.10:27019",
"208.78.164.11:27017",
"208.78.164.11:27018",
"208.78.164.11:27019",
"208.78.164.12:27017",
"208.78.164.12:27018",
"208.78.164.12:27019",
"208.78.164.13:27017",
"208.78.164.13:27018",
"208.78.164.13:27019",
"208.78.164.14:27017",
"208.78.164.14:27018",
"208.78.164.14:27019",
},
{ // Europe Servers
// Luxembourg
"146.66.152.10:27017",
"146.66.152.10:27018",
"146.66.152.10:27019",
"146.66.152.10:27020",
"146.66.152.11:27017",
"146.66.152.11:27018",
"146.66.152.11:27019",
"146.66.152.11:27020",
// Poland
"155.133.242.8:27017",
"155.133.242.8:27018",
"155.133.242.8:27019",
"155.133.242.8:27020",
"155.133.242.9:27017",
"155.133.242.9:27018",
"155.133.242.9:27019",
"155.133.242.9:27020",
// Vienna
"146.66.155.8:27017",
"146.66.155.8:27018",
"146.66.155.8:27019",
"146.66.155.8:27020",
"185.25.182.10:27017",
"185.25.182.10:27018",
"185.25.182.10:27019",
"185.25.182.10:27020",
// London
"162.254.196.40:27017",
"162.254.196.40:27018",
"162.254.196.40:27019",
"162.254.196.40:27020",
"162.254.196.40:27021",
"162.254.196.41:27017",
"162.254.196.41:27018",
"162.254.196.41:27019",
"162.254.196.41:27020",
"162.254.196.41:27021",
"162.254.196.42:27017",
"162.254.196.42:27018",
"162.254.196.42:27019",
"162.254.196.42:27020",
"162.254.196.42:27021",
"162.254.196.43:27017",
"162.254.196.43:27018",
"162.254.196.43:27019",
"162.254.196.43:27020",
"162.254.196.43:27021",
// Stockholm
"185.25.180.14:27017",
"185.25.180.14:27018",
"185.25.180.14:27019",
"185.25.180.14:27020",
"185.25.180.15:27017",
"185.25.180.15:27018",
"185.25.180.15:27019",
"185.25.180.15:27020",
},
}
// GetRandomCM returns back a random server anywhere
func GetRandomCM() *netutil.PortAddr {
rng := rand.New(rand.NewSource(time.Now().UnixNano()))
servers := append(CMServers[0], CMServers[1]...)
addr := netutil.ParsePortAddr(servers[rng.Int31n(int32(len(servers)))])
if addr == nil {
panic("invalid address in CMServers slice")
}
return addr
}
// GetRandomNorthAmericaCM returns back a random server in north america
func GetRandomNorthAmericaCM() *netutil.PortAddr {
rng := rand.New(rand.NewSource(time.Now().UnixNano()))
addr := netutil.ParsePortAddr(CMServers[0][rng.Int31n(int32(len(CMServers[0])))])
if addr == nil {
panic("invalid address in CMServers slice")
}
return addr
}
// GetRandomEuropeCM returns back a random server in europe
func GetRandomEuropeCM() *netutil.PortAddr {
rng := rand.New(rand.NewSource(time.Now().UnixNano()))
addr := netutil.ParsePortAddr(CMServers[1][rng.Int31n(int32(len(CMServers[1])))])
if addr == nil {
panic("invalid address in CMServers slice")
}
return addr
}