public ActionResult CopyConfig(int id, int fromGameId = 0) { try { var game = new TCAdmin.GameHosting.SDK.Objects.Game(id); var fromGame = new TCAdmin.GameHosting.SDK.Objects.Game(fromGameId); if (fromGame.CustomFields["BannerModule:Settings"] != null) { var fromGameSettings = JsonConvert.DeserializeObject <SettingsModel>(fromGame.CustomFields["BannerModule:Settings"] .ToString()); SaveBannerSettingsToGame(game, fromGameSettings); return(JavaScript("window.location.reload(false);")); } return(Json(new { Message = "Could not parse config from " + fromGame.Name })); } catch (Exception e) { return(Json(new { Message = "Could not copy configuration - " + e.Message })); } }
public override async Task DoAction() { await base.DoAction(); await CommandContext.TriggerTypingAsync(); var game = new TCAdmin.GameHosting.SDK.Objects.Game(Authentication.Service.GameId); if (!game.WebConsole.EnableWebConsole || string.IsNullOrEmpty(game.WebConsole.LogFile)) { await CommandContext.RespondAsync("**This game does not support Log Viewing.**"); return; } try { var logFileDirectory = Path.GetDirectoryName(game.WebConsole.LogFile); var tcaFileManager = new TcaFileManager(CommandContext, Authentication, Authentication.Service.RootDirectory + "\\" + logFileDirectory, true); await tcaFileManager.InitializeFileManagerAsync(); } catch (ArgumentException) { await CommandContext.RespondAsync("**The path for the logs contains too many files to show."); } catch (Exception ex) { var id = SentrySdk.CaptureException(ex); await CommandContext.RespondAsync( $"**An error occurred when using the File Manager\nSentry ID: {id}.**"); } }
public ActionResult DeleteConfig(int id) { var game = new TCAdmin.GameHosting.SDK.Objects.Game(id); game.CustomFields["BannerModule:Settings"] = null; game.Save(); return(JavaScript("window.location.reload(false);")); }
public ActionResult DeleteOverlay(int id, int bannerObjectId) { var game = new TCAdmin.GameHosting.SDK.Objects.Game(id); var settings = GetSettingsForGame(game); settings.Overlays.RemoveAll(x => x.BannerObjectId == bannerObjectId); SaveBannerSettingsToGame(game, settings); return(new HttpStatusCodeResult(HttpStatusCode.OK)); }
public ActionResult GeneralSettings(int id) { var game = new TCAdmin.GameHosting.SDK.Objects.Game(id); ViewData.Add("gameId", id); var settings = GetSettingsForGame(game); return(PartialView("_GeneralSettings", settings.GeneralSettingsModel)); }
public ActionResult WatermarkSettings(int id, int watermarkId) { var game = new TCAdmin.GameHosting.SDK.Objects.Game(id); ViewData.Add("gameId", id); var settings = GetSettingsForGame(game); var watermark = settings.Watermarks.FirstOrDefault(x => x.BannerObjectId == watermarkId); return(PartialView("_UpdateWatermark", watermark)); }
public ActionResult Settings(int id) { var game = new TCAdmin.GameHosting.SDK.Objects.Game(id); ViewData.Add("gameId", id); var model = new SettingsModel { GameId = game.GameId, Watermarks = GetSettingsForGame(game).Watermarks }; return(View(model)); }
public ActionResult AddOverlay(int id, string url) { var game = new TCAdmin.GameHosting.SDK.Objects.Game(id); var settings = GetSettingsForGame(game); settings.Overlays.Add(new OverlayModel { BannerObjectId = settings.Overlays.OrderByDescending(x => x.BannerObjectId).ToList()[0].BannerObjectId + 1, Url = url }); SaveBannerSettingsToGame(game, settings); return(new HttpStatusCodeResult(HttpStatusCode.OK)); }
public ActionResult AddWatermark(int id, string text) { var game = new TCAdmin.GameHosting.SDK.Objects.Game(id); var settings = GetSettingsForGame(game); settings.Watermarks.Add(new WatermarkModel { BannerObjectId = settings.Watermarks.OrderByDescending(x => x.BannerObjectId).ToList()[0].BannerObjectId + 1, Text = text }); SaveBannerSettingsToGame(game, settings); return(new HttpStatusCodeResult(HttpStatusCode.OK)); }
public ActionResult GeneralSettings(int id, GeneralSettingsModel model) { var game = new TCAdmin.GameHosting.SDK.Objects.Game(id); var settings = GetSettingsForGame(game); settings.GeneralSettingsModel = model; SaveBannerSettingsToGame(game, settings); return(new JsonHttpStatusResult(new { Message = "Saved Successfully" }, HttpStatusCode.OK)); }
public VirtualDirectorySecurity(TCAdmin.SDK.Web.References.FileSystem.FileSystem fileSystem, string currentDirectory, UserType type, int gameId) { UserType = type; if (!fileSystem.DirectoryExists(currentDirectory)) { throw new CustomMessageException(EmbedTemplates.CreateErrorEmbed("Could not find directory.")); } var game = new TCAdmin.GameHosting.SDK.Objects.Game(gameId); var ds = new TCAdmin.SDK.VirtualFileSystem.VirtualDirectorySecurity { PermissionMode = PermissionMode.Basic, Permissions = Permission.Read | Permission.Write | Permission.Delete, PermissionType = PermissionType.Root, RootPhysicalPath = currentDirectory + "\\", RealPhysicalPath = TCAdmin.SDK.Misc.FileSystem.FixAbsoluteFilePath(currentDirectory, OperatingSystem.Windows), DisableOwnerCheck = true, DisableSymlinkCheck = true, VirtualDirectoryName = currentDirectory }; if (type == UserType.SubAdmin) { var f = game.FileSystemPermissions.FirstOrDefault(x => x.RootPhysicalPath == "$[SubAdminFiles]"); ds.AdditionalPermissions = f.AdditionalPermissions; ds.Filters = f.Filters; } if (type == UserType.User) { var f = game.FileSystemPermissions.FirstOrDefault(x => x.RootPhysicalPath == "$[UserFiles]"); ds.AdditionalPermissions = f.AdditionalPermissions; ds.Filters = f.Filters; } VirtualDirectorySecurityObject = ds; VirtualDirectorySecurityString = ObjectXml.ObjectToXml(ds); }
public static SettingsModel GetSettingsForGame(TCAdmin.GameHosting.SDK.Objects.Game game) { var bannerSettings = game.CustomFields["BannerModule:Settings"]; if (bannerSettings == null) { return(new SettingsModel { GeneralSettingsModel = new GeneralSettingsModel(), Watermarks = GenerateDefaultWatermarks(), Overlays = new List <OverlayModel>(), GameId = game.GameId }); } return(JsonConvert.DeserializeObject <SettingsModel>(bannerSettings.ToString(), new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling = DefaultValueHandling.Populate, })); }
public ActionResult OverlaySettings(int id, OverlayModel model) { var game = new TCAdmin.GameHosting.SDK.Objects.Game(id); if (!ModelState.IsValid) { return(new JsonHttpStatusResult(new { Message = "Cannot save - Model state invalid." }, HttpStatusCode.BadRequest)); } var settings = GetSettingsForGame(game); settings.Overlays.Add(model); SaveBannerSettingsToGame(game, settings); return(new JsonHttpStatusResult(new { Message = "Saved Successfully" }, HttpStatusCode.OK)); }
public ActionResult OverlaySettings(int id, int overlayId) { var game = new TCAdmin.GameHosting.SDK.Objects.Game(id); ViewData.Add("gameId", id); var settings = GetSettingsForGame(game); if (settings.Overlays == null || settings.Overlays.Count <= 0) { return(PartialView("_UpdateOverlay", new OverlayModel() { BannerObjectId = 1, Url = "", PositionX = 5, PositionY = 5, })); } var overlay = settings.Overlays.FirstOrDefault(x => x.BannerObjectId == overlayId); return(PartialView("_UpdateOverlay", overlay)); }
private void DeleteModpackCmdLines(TCAdmin.GameHosting.SDK.Objects.Service service) { var deleted = false; var cmdlines = TCAdmin.GameHosting.SDK.Objects.CustomCmdLine.GetCustomCommandLines(service.ServiceId); foreach (TCAdmin.GameHosting.SDK.Objects.CustomCmdLine cmdline in cmdlines) { if (cmdline.Variables.HasValue("CM:ModpackCmd") && (bool)cmdline.Variables["CM:ModpackCmd"]) { deleted = true; cmdline.Delete(); } } if (deleted && service.OverrideCommandLine) { var game = new TCAdmin.GameHosting.SDK.Objects.Game(service.GameId); service.CustomFields["d3b2aa93-7e2b-4e0d-8080-67d14b2fa8a9:CmdLineManager:CmdLineName"] = string.Empty; service.UnparsedCommandLine = service.Private && !string.IsNullOrEmpty(game.CommandLines.PrivateCmdLine) ? game.CommandLines.PrivateCmdLine : game.CommandLines.DefaultCmdLine; service.Save(); service.Configure(); } }
// [AllowAnonymous] public ActionResult Index(int id) { try { ObjectBase.GlobalSkipSecurityCheck = true; var skipCache = bool.Parse(Request.QueryString["SkipCache"]); var service = new Service(id); var game = new TCAdmin.GameHosting.SDK.Objects.Game(service.GameId); var settings = GetSettingsForGame(game); var cachedFile = new FileInfo(Path.Combine(TCAdmin.SDK.Utility.GetTempPath(), $"__BannerModule.Service.{service.ServiceId}.jpg")); var cachedTime = game.QueryMonitoring.QueryInterval; if (skipCache && cachedFile.Exists) { cachedFile.Delete(); } else { if (cachedFile.Exists) { if (DateTime.Now - cachedFile.CreationTime < TimeSpan.FromSeconds(cachedTime)) { return(File(cachedFile.FullName, "image/jpeg")); } else { cachedFile.Delete(); } } } using (var imageFactory = new ImageFactory(true)) { var image = GenerateImageSize(settings.GeneralSettingsModel.SizeX, settings.GeneralSettingsModel.SizeY); imageFactory.Load(image); var dimensions = imageFactory.Image.PhysicalDimension; foreach (var overlay in settings.Overlays.OrderBy(x => x.ViewOrder)) { var overlayImage = ImageFromUrl(overlay.Url); overlayImage = ResizeImage(overlayImage, (int)dimensions.Width, (int)dimensions.Height, ResizeMode.Stretch); overlay.PositionX = 0; overlay.PositionY = 0; imageFactory.Overlay(new ImageLayer { Image = overlayImage, Opacity = 100, Position = new Point(overlay.PositionX, overlay.PositionY), }); } foreach (var parsedWatermark in settings.Watermarks.OrderBy(x => x.ViewOrder).Select(watermark => watermark.ReplaceWithContext(service))) { imageFactory.Watermark(new TextLayer { Position = new Point(parsedWatermark.PositionX, parsedWatermark.PositionY), Text = parsedWatermark.Text, FontSize = parsedWatermark.FontSize, Style = FontStyle.Bold, FontColor = ColorTranslator.FromHtml(parsedWatermark.Color), }); } var tempFileName = Path.GetTempFileName(); imageFactory.Save(tempFileName); System.IO.File.Copy(tempFileName, cachedFile.FullName); return(File(tempFileName, "image/jpeg")); } } finally { ObjectBase.GlobalSkipSecurityCheck = false; } }
public bool SetConfigurationForGame(TCAdmin.GameHosting.SDK.Objects.Game game, GeneralConfiguration obj) { game.AppData[$"__CustomModsModule::General_Config"] = JsonConvert.SerializeObject(obj); return(game.Save()); }
public static GeneralConfiguration GetConfigurationForGame(TCAdmin.GameHosting.SDK.Objects.Game game) { var value = game.AppData.GetValue($"__CustomModsModule::General_Config", "{}").ToString(); return(JsonConvert.DeserializeObject <GeneralConfiguration>(value)); }
private static void SaveBannerSettingsToGame(TCAdmin.GameHosting.SDK.Objects.Game game, SettingsModel settingsModel) { var bannerSettings = game.CustomFields["BannerModule:Settings"]; if (bannerSettings == null) { game.CustomFields["BannerModule:Settings"] = JsonConvert.SerializeObject(settingsModel); game.Save(); } bannerSettings = game.CustomFields["BannerModule:Settings"]; var settings = JsonConvert.DeserializeObject <SettingsModel>(bannerSettings.ToString(), new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include, }); if (settings == null) { throw new NullReferenceException("Cannot parse Settings variable for Game."); } if (settingsModel.GeneralSettingsModel != null) { settings.GeneralSettingsModel = settingsModel.GeneralSettingsModel; } if (settingsModel.Watermarks != null) { foreach (var settingsWatermark in settingsModel.Watermarks) { if (settings.Watermarks.Any(x => x.BannerObjectId == settingsWatermark.BannerObjectId)) { settings.Watermarks[ settings.Watermarks.FindIndex(ind => ind.BannerObjectId.Equals(settingsWatermark.BannerObjectId))] = settingsWatermark; } else { settings.Watermarks.Add(settingsWatermark); } } var watermarksToDelete = settings.Watermarks.Except(settingsModel.Watermarks).ToList(); foreach (var watermarkModel in watermarksToDelete) { settings.Watermarks.Remove(watermarkModel); } } if (settingsModel.Overlays != null) { foreach (var settingsOverlay in settingsModel.Overlays) { if (settings.Overlays.Any(x => x.BannerObjectId == settingsOverlay.BannerObjectId)) { settings.Overlays[ settings.Overlays.FindIndex(ind => ind.BannerObjectId.Equals(settingsOverlay.BannerObjectId))] = settingsOverlay; } else { settings.Overlays.Add(settingsOverlay); } } var overlaysToDelete = settings.Overlays.Except(settingsModel.Overlays).ToList(); foreach (var watermarkModel in overlaysToDelete) { settings.Overlays.Remove(watermarkModel); } } game.CustomFields["BannerModule:Settings"] = JsonConvert.SerializeObject(settings); game.Save(); }
public bool SetConfigurationForGame(TCAdmin.GameHosting.SDK.Objects.Game game, object obj) { game.AppData[$"__CustomModsModule::{this.Name.ReplaceWhitespace()}_Config"] = JsonConvert.SerializeObject(obj); return(game.Save()); }
public JObject GetConfigurationForGame(TCAdmin.GameHosting.SDK.Objects.Game game) { var value = game.AppData.GetValue($"__CustomModsModule::{this.Name.ReplaceWhitespace()}_Config", "{}").ToString(); return(JsonConvert.DeserializeObject <JObject>(value)); }