freeso/TSOClient/FSO.Server.Core/Program.cs
riperiperi aa2cad067a feat: new update system
- No support for Linux/Macos yet
- Need to remove old update system
- Need standalone server updater
- Some more validation on version info string formatting
2026-06-21 16:41:02 +01:00

77 lines
3 KiB
C#

using FSO.Common;
using FSO.Server.Api.Core.Services;
using FSO.Server.Common;
using FSO.Server.Servers.UserApi;
using System.Collections.Specialized;
using System.Text;
namespace FSO.Server.Core
{
class Program
{
static void Main(string[] args)
{
Content.Model.AbstractTextureRef.ImageFetchFunction = CoreImageLoader.SoftImageFetch;
UserApi.CustomStartup = StartWebApi;
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var enc1252 = Encoding.GetEncoding(1252);
FSO.Server.Program.Main(args);
}
public static IAPILifetime StartWebApi(UserApi api, string url)
{
var config = api.Config;
var userApiConfig = config.Services.UserApi;
var settings = new NameValueCollection();
settings.Add("maintenance", userApiConfig.Maintenance.ToString());
settings.Add("authTicketDuration", userApiConfig.AuthTicketDuration.ToString());
settings.Add("regkey", userApiConfig.Regkey);
settings.Add("secret", config.Secret);
settings.Add("updateUrl", userApiConfig.UpdateUrl);
settings.Add("cdnUrl", userApiConfig.CDNUrl);
settings.Add("connectionString", config.Database.ConnectionString);
settings.Add("databaseEngine", config.Database.Engine ?? "mysql");
settings.Add("NFSdir", config.SimNFS);
settings.Add("smtpHost", userApiConfig.SmtpHost);
settings.Add("smtpUser", userApiConfig.SmtpUser);
settings.Add("smtpPassword", userApiConfig.SmtpPassword);
settings.Add("smtpPort", userApiConfig.SmtpPort.ToString());
settings.Add("useProxy", userApiConfig.UseProxy.ToString());
settings.Add("name", config.Name ?? "");
settings.Add("updateID", config.UpdateID?.ToString() ?? "");
settings.Add("branchName", config.UpdateBranch);
settings.Add("allOpenable", config.AllOpenable.ToString());
settings.Add("versionInfoJson", FSOVersionInfo.Current.ToJson());
var api2 = new FSO.Server.Api.Core.Api();
api2.Init(settings);
if (userApiConfig.AwsConfig != null)
{
api2.AddonUploader = new AWSUpdateUploader(userApiConfig.AwsConfig);
}
else
{
api2.AddonUploader = new FilesystemUpdateUploader(userApiConfig.FilesystemConfig ?? new Common.Config.FilesystemConfig());
}
if (userApiConfig.GithubConfig != null)
{
api2.UpdateUploader = new GithubUpdateUploader(userApiConfig.GithubConfig);
}
else
{
api2.UpdateUploader = api2.AddonUploader;
}
api2.Github = userApiConfig.GithubConfig;
api.SetupInstance(api2);
api2.HostPool = api.GetGluonHostPool();
return FSO.Server.Api.Core.Program.RunAsync(new string[] { url });
}
}
}