Support for PaaS
This commit is contained in:
parent
0572dc2173
commit
e020735e59
3 changed files with 71 additions and 7 deletions
|
|
@ -10,6 +10,31 @@ RUN dotnet publish \
|
|||
FROM mcr.microsoft.com/dotnet/runtime:5.0-alpine
|
||||
WORKDIR /lrm
|
||||
COPY --from=builder /build/ .
|
||||
ENV LRM_CONFIG_PATH="/config/config.json"
|
||||
|
||||
ENV NO_CONFIG="true"
|
||||
ENV TRANSPORT_CLASS="kcp2k.KcpTransport"
|
||||
ENV AUTH_KEY="Secret Auth Key"
|
||||
ENV TRANSPORT_PORT="7777"
|
||||
ENV UPDATE_LOOP_TIME="10"
|
||||
ENV UPDATE_HEARTBEAT_INTERVAL="100"
|
||||
ENV RANDOMLY_GENERATED_ID_LENGTH="5"
|
||||
ENV USE_ENDPOINT="true"
|
||||
ENV ENDPOINT_PORT="8080"
|
||||
ENV ENDPOINT_SERVERLIST="true"
|
||||
ENV ENABLE_NATPUNCH_SERVER="true"
|
||||
ENV NAT_PUNCH_PORT="7776"
|
||||
ENV USE_LOAD_BALANCER="false"
|
||||
ENV LOAD_BALANCER_AUTH_KEY="AuthKey"
|
||||
ENV LOAD_BALANCER_ADDRESS="127.0.0.1"
|
||||
ENV LOAD_BALANCER_PORT="7070"
|
||||
ENV LOAD_BALANCER_REGION="1"
|
||||
ENV KCP_NODELAY="true"
|
||||
ENV KCP_INTERVAL="10"
|
||||
ENV KCP_FAST_RESEND="2"
|
||||
ENV KCP_CONGESTION_WINDOW="false"
|
||||
ENV KCP_SEND_WINDOW_SIZE="4096"
|
||||
ENV KCP_RECEIVE_WINDOW_SIZE="4096"
|
||||
ENV KCP_CONNECTION_TIMEOUT="10000"
|
||||
|
||||
CMD [ "./LRM" ]
|
||||
ENTRYPOINT [ "./LRM" ]
|
||||
|
|
|
|||
|
|
@ -25,7 +25,9 @@ namespace LightReflectiveMirror
|
|||
|
||||
GetPublicIP();
|
||||
|
||||
if (!File.Exists(CONFIG_PATH))
|
||||
bool noConfig = bool.TryParse(Environment.GetEnvironmentVariable("NO_CONFIG") ?? "false", out noConfig) ? false : noConfig;
|
||||
|
||||
if (!File.Exists(CONFIG_PATH) && !noConfig)
|
||||
{
|
||||
File.WriteAllText(CONFIG_PATH, JsonConvert.SerializeObject(new Config(), Formatting.Indented));
|
||||
WriteLogMessage("A config.json file was generated. Please configure it to the proper settings and re-run!", ConsoleColor.Yellow);
|
||||
|
|
@ -33,10 +35,32 @@ namespace LightReflectiveMirror
|
|||
Environment.Exit(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!noConfig)
|
||||
{
|
||||
conf = JsonConvert.DeserializeObject<Config>(File.ReadAllText(CONFIG_PATH));
|
||||
|
||||
ConfigureDocker();
|
||||
}
|
||||
else
|
||||
{
|
||||
conf = new Config();
|
||||
conf.TransportClass = Environment.GetEnvironmentVariable("TRANSPORT_CLASS") ?? "kcp2k.KcpTransport";
|
||||
conf.AuthenticationKey = Environment.GetEnvironmentVariable("AUTH_KEY") ?? "Secret Auth Key";
|
||||
conf.TransportPort = ushort.Parse(Environment.GetEnvironmentVariable("TRANSPORT_PORT") ?? "7777");
|
||||
conf.UpdateLoopTime = int.Parse(Environment.GetEnvironmentVariable("UPDATE_LOOP_TIME") ?? "10");
|
||||
conf.UpdateHeartbeatInterval = int.Parse(Environment.GetEnvironmentVariable("UPDATE_HEARTBEAT_INTERVAL") ?? "100");
|
||||
conf.RandomlyGeneratedIDLength = int.Parse(Environment.GetEnvironmentVariable("RANDOMLY_GENERATED_ID_LENGTH") ?? "5");
|
||||
conf.UseEndpoint = bool.Parse(Environment.GetEnvironmentVariable("USE_ENDPOINT") ?? "true");
|
||||
conf.EndpointPort = ushort.Parse(Environment.GetEnvironmentVariable("ENDPOINT_PORT") ?? "8080");
|
||||
conf.EndpointServerList = bool.Parse(Environment.GetEnvironmentVariable("ENDPOINT_SERVERLIST") ?? "true");
|
||||
conf.EnableNATPunchtroughServer = bool.Parse(Environment.GetEnvironmentVariable("ENABLE_NATPUNCH_SERVER") ?? "true");
|
||||
conf.NATPunchtroughPort = ushort.Parse(Environment.GetEnvironmentVariable("NAT_PUNCH_PORT") ?? "7776");
|
||||
conf.UseLoadBalancer = bool.Parse(Environment.GetEnvironmentVariable("USE_LOAD_BALANCER") ?? "false");
|
||||
conf.LoadBalancerAuthKey = Environment.GetEnvironmentVariable("LOAD_BALANCER_AUTH_KEY") ?? "AuthKey";
|
||||
conf.LoadBalancerAddress = Environment.GetEnvironmentVariable("LOAD_BALANCER_ADDRESS") ?? "127.0.0.1";
|
||||
conf.LoadBalancerPort = ushort.Parse(Environment.GetEnvironmentVariable("LOAD_BALANCER_PORT") ?? "7070");
|
||||
conf.LoadBalancerRegion = (LRMRegions)int.Parse(Environment.GetEnvironmentVariable("LOAD_BALANCER_REGION") ?? "1");
|
||||
}
|
||||
|
||||
WriteLogMessage("Loading Assembly... ", ConsoleColor.White, true);
|
||||
try
|
||||
|
|
|
|||
|
|
@ -43,12 +43,27 @@ namespace kcp2k
|
|||
{
|
||||
|
||||
KCPConfig conf = new KCPConfig();
|
||||
if (!File.Exists("KCPConfig.json"))
|
||||
|
||||
bool noConfig = bool.TryParse(Environment.GetEnvironmentVariable("NO_CONFIG") ?? "false", out noConfig) ? false : noConfig;
|
||||
|
||||
if (!File.Exists("KCPConfig.json") && !noConfig)
|
||||
{
|
||||
File.WriteAllText("KCPConfig.json", JsonConvert.SerializeObject(conf, Formatting.Indented));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (noConfig)
|
||||
{
|
||||
conf = new KCPConfig();
|
||||
conf.NoDelay = bool.Parse(Environment.GetEnvironmentVariable("KCP_NODELAY") ?? "true");
|
||||
conf.Interval = uint.Parse(Environment.GetEnvironmentVariable("KCP_INTERVAL") ?? "10");
|
||||
conf.FastResend = int.Parse(Environment.GetEnvironmentVariable("KCP_FAST_RESEND") ?? "2");
|
||||
conf.CongestionWindow = bool.Parse(Environment.GetEnvironmentVariable("KCP_CONGESTION_WINDOW") ?? "false");
|
||||
conf.SendWindowSize = uint.Parse(Environment.GetEnvironmentVariable("KCP_SEND_WINDOW_SIZE") ?? "4096");
|
||||
conf.ReceiveWindowSize = uint.Parse(Environment.GetEnvironmentVariable("KCP_RECEIVE_WINDOW_SIZE") ?? "4096");
|
||||
conf.ConnectionTimeout = int.Parse(Environment.GetEnvironmentVariable("KCP_CONNECTION_TIMEOUT") ?? "10000");
|
||||
}
|
||||
else
|
||||
conf = JsonConvert.DeserializeObject<KCPConfig>(File.ReadAllText("KCPConfig.json"));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue