public YamlDataStore(DataStoreCreationParameters parameters) { parameters.Suffix ??= string.Empty; if (!string.IsNullOrEmpty(parameters.Prefix)) { m_Prefix = $"{parameters.Prefix}."; } m_BasePath = parameters.WorkingDirectory; if (!string.IsNullOrEmpty(m_Suffix)) { m_Suffix = $".{parameters.Suffix}"; } m_Serializer = new SerializerBuilder() .WithNamingConvention(new CamelCaseNamingConvention()) .EmitDefaults() .Build(); m_Deserializer = new DeserializerBuilder() .WithNamingConvention(new CamelCaseNamingConvention()) .Build(); m_ChangeListeners = new List <KeyValuePair <IOpenModComponent, Action> >(); s_Locks = new ConcurrentDictionary <string, object>(); }
public IDataStore CreateDataStore(DataStoreCreationParameters parameters) { var lifetime = parameters.Component?.LifetimeScope ?? m_ServiceProvider.GetRequiredService <IRuntime>().LifetimeScope; return(ActivatorUtilitiesEx.CreateInstance <YamlDataStore>(lifetime, parameters)); }
public IDataStore CreateDataStore(DataStoreCreationParameters parameters) { var logger = _loggerFactory.CreateLogger <WebDataStore>(); var configuration = _pluginAccessor.Instance.Configuration; var baseDataStore = _parentDataStoreFactory.CreateDataStore(parameters); return(new WebDataStore(parameters.ComponentId, configuration, baseDataStore, logger)); }
public YamlDataStore(DataStoreCreationParameters parameters, ILogger <YamlDataStore>?logger, IRuntime?runtime) { m_LogOnChange = parameters.LogOnChange; m_Logger = logger; m_Runtime = runtime; m_WriteCounter = new Dictionary <string, int>(); m_WatchedFiles = new List <string>(); m_KnownKeys = new HashSet <string>(); m_ContentHash = new Dictionary <string, string>(); if (!string.IsNullOrEmpty(parameters.Prefix)) { m_Prefix = $"{parameters.Prefix}."; } m_BasePath = parameters.WorkingDirectory; if (!string.IsNullOrEmpty(parameters.Suffix)) { m_Suffix = $".{parameters.Suffix}"; } m_Serializer = new SerializerBuilder() .WithNamingConvention(CamelCaseNamingConvention.Instance) .WithTypeConverter(new YamlNullableEnumTypeConverter()) .DisableAliases() .Build(); m_Deserializer = new DeserializerBuilder() .WithNamingConvention(CamelCaseNamingConvention.Instance) .IgnoreUnmatchedProperties() .WithTypeConverter(new YamlNullableEnumTypeConverter()) .Build(); m_ChangeListeners = new List <RegisteredChangeListener>(); m_Locks = new ConcurrentDictionary <string, object>(); EnsureFileSystemWatcherCreated(false); }
public void ExecuteMigration(string[] args) { Logger.Log("Importing RocketMod permissions to OpenMod..."); var rocketPermissionsPath = Path.Combine(ReadWrite.PATH, "Servers", Provider.serverID, "Rocket", "Permissions.config.xml"); var deserializer = new XmlSerializer(typeof(RocketPermissions)); using var stream = new FileStream(rocketPermissionsPath, FileMode.Open); var rocketPermissions = (RocketPermissions)deserializer.Deserialize(stream); var openmodRoles = new { Roles = new List <PermissionRoleData>() }; var openmodUsers = new { Users = new List <UserData>() }; // importing cooldowns is not possible as they are per command in OpenMod and per permissions in RocketMod foreach (var group in rocketPermissions.Groups) { openmodRoles.Roles.Add(new PermissionRoleData { Id = group.Id, Data = new Dictionary <string, object> { { "color", group.Color }, { "prefix", group.Prefix }, { "suffix", group.Suffix } }, DisplayName = group.DisplayName, IsAutoAssigned = group.Id.Equals(rocketPermissions.DefaultGroup, StringComparison.OrdinalIgnoreCase), Parents = new HashSet <string> { group.ParentGroup ?? string.Empty }, // in rocket default id parameter ParentGroup is null Permissions = new HashSet <string>(group.Permissions.Select(c => "RocketMod:" + c.Name)), Priority = group.Priority }); foreach (var member in group.Members) { var userData = openmodUsers.Users.Find(d => d.Id == member); if (userData == null) { userData = new UserData { Data = new Dictionary <string, object>(), FirstSeen = DateTime.Now, LastSeen = DateTime.Now, Id = member, LastDisplayName = member, Permissions = new HashSet <string>(), Roles = new HashSet <string>(), Type = "player" }; openmodUsers.Users.Add(userData); } userData.Roles.Add(group.Id); } } var apiAssembly = AssemblyHelper.GetAssembly("OpenMod.API"); var workingDirectory = OpenModInstallerPlugin.Instance.OpenModManager.WorkingDirectory; var dataStoreParams = new DataStoreCreationParameters { ComponentId = "OpenMod.Core", Prefix = "openmod", WorkingDirectory = workingDirectory }; var dataStore = new YamlDataStore(dataStoreParams, null, null); AsyncHelperEx.RunSync(() => dataStore.SaveAsync("roles", openmodRoles)); AsyncHelperEx.RunSync(() => dataStore.SaveAsync("users", openmodUsers)); Logger.Log($"Imported {openmodRoles.Roles.Count} permission group(s) and {openmodUsers.Users.Count} player(s) from RocketMod's Permission.config.xml to OpenMod."); }
public IDataStore CreateDataStore(DataStoreCreationParameters parameters) { return(new YamlDataStore(parameters)); }