private RolePermissions VanillaApplyMappings(DiscordRole Role) { PermissionMapping mapping = PermissionMapping.Deserialize("complete"); foreach (KeyValuePair <Int64, String[]> v in mapping.Mappings) { if (Role.CheckPermission((DSharpPlus.Permissions)v.Key) == PermissionLevel.Allowed) { GrantRolePermissions(Role.Id, v.Value); } } return(RolePermissions.Deserialize(Role.Id)); }
private static Boolean ShouldUpdateMappings() { if (!File.Exists("./config/permissions/mappings.json")) { File.Create("./config/permissions/mappings.json").Close(); return(true); } if (!File.Exists("./cache/permissions/intermediate/mappings")) { File.Create("./cache/permissions/intermediate/mappings").Close(); return(true); } StreamReader reader = new("./config/permissions/vanilla.mappings.json"); PermissionMapping mappings = JsonConvert.DeserializeObject <PermissionMapping>(reader.ReadToEnd()); reader.Close(); IEnumerable <String> modFiles = from x in Directory.GetFiles("./mod-data/permissions/mappings") where x.EndsWith(".mappings.json") select x; foreach (String v in modFiles) { reader = new(v); mappings += JsonConvert.DeserializeObject <PermissionMapping>(reader.ReadToEnd()); reader.Close(); } reader = new("./config/permissions/mappings.json"); if (mappings != JsonConvert.DeserializeObject <PermissionMapping>(reader.ReadToEnd())) { reader.Close(); return(true); } return(false); }
private static void UpdateMappings() { StreamReader reader = new("./config/permissions/vanilla.mappings.json"); PermissionMapping mappings = JsonConvert.DeserializeObject <PermissionMapping>(reader.ReadToEnd()); reader.Close(); IEnumerable <String> modFiles = from x in Directory.GetFiles("./mod-data/permissions/mappings") where x.EndsWith(".mappings.json") select x; foreach (String v in modFiles) { reader = new(v); mappings += JsonConvert.DeserializeObject <PermissionMapping>(reader.ReadToEnd()); reader.Close(); } StreamWriter writer = new($"./config/permissions/mappings.json"); writer.Write(JsonConvert.SerializeObject(mappings)); writer.Close(); List <String> checksums = new(); checksums.Add("./config/permissions/vanilla.mappings.json".GetSHA512Checksum()); foreach (String v in modFiles) { checksums.Add(v.GetSHA512Checksum()); } writer = new("./cache/permissions/intermediate/mappings"); writer.Write(JsonConvert.SerializeObject(checksums)); writer.Flush(); writer.Close(); }
private static PermissionMapping LoadMappings() { PermissionMapping mapping = PermissionMapping.Deserialize("complete"); return(mapping + PermissionMappingOverrides.Deserialize()); }
private static void Initialize() { if (!Directory.Exists("./config/permissions")) { Console.WriteLine("Missing permission configuration, aborting startup. Please contact the InsanityBot team immediately" + "\nPress any key to continue..."); Console.ReadKey(); Process.GetCurrentProcess().Kill(); } // check for default mappings and declarations if (!File.Exists("./config/permissions/vanilla.mappings.json")) { Console.WriteLine("Missing vanilla permission mappings, aborting startup. Please contact the InsanityBot team immediately" + "\nPress any key to continue..."); Console.ReadKey(); Process.GetCurrentProcess().Kill(); } if (!File.Exists("./config/permissions/vanilla.pdecl.json")) { Console.WriteLine("Missing vanilla permission declaration, aborting startup. Please contact the InsanityBot team immediately" + "\nPress any key to continue..."); Console.ReadKey(); Process.GetCurrentProcess().Kill(); } // create role directory if (!Directory.Exists(DefaultPermissionFileSpecifications.Role.Path)) { Directory.CreateDirectory(DefaultPermissionFileSpecifications.Role.Path); } // create script directory if (!Directory.Exists(DefaultPermissionFileSpecifications.Script.Path)) { Directory.CreateDirectory(DefaultPermissionFileSpecifications.Script.Path); } // create mapping directory if (!Directory.Exists("./mod-data/permissions/mappings")) { Directory.CreateDirectory("./mod-data/permissions/mappings"); } // create declaration directory if (!Directory.Exists("./mod-data/permissions/declarations")) { Directory.CreateDirectory("./mod-data/permissions/declarations"); } // create intermediary directory if (!Directory.Exists("./cache/permissions/intermediate")) { Directory.CreateDirectory("./cache/permissions/intermediate"); } // check whether default permissions are up-to-date if (ShouldUpdateDefaultPermissions()) { UpdateDefaultPermissions(); } // check whether mappings are up-to-date if (ShouldUpdateMappings()) { UpdateMappings(); } // apply overrides to default and mappings DefaultPermissions.Serialize(LoadDefaultPermissions()); PermissionMapping toSerialize = LoadMappings(); StreamWriter writer = new("./config/permissions/mappings.json"); writer.Write(JsonConvert.SerializeObject(toSerialize)); writer.Close(); }