1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- namespace DhcpServer
- {
- internal static class AppConfigs
- {
- private static readonly string ConfigFileDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs");
- private static readonly HashSet<char> InvalidFileNameChars = new HashSet<char>(Path.GetInvalidFileNameChars());
- private static string FilterUserClass(string input)
- {
- if (input == null) return null;
- var sb = new StringBuilder(input);
- for (int i = 0; i < sb.Length; i++)
- {
- if (InvalidFileNameChars.Contains(sb[i])) sb[i] = '_';
- }
- sb.Insert(0, '-');
- return sb.ToString();
- }
- private static string GetClientEntryPath(string mac, string userClass = null)
- {
- return Path.Combine(ConfigFileDir, mac + FilterUserClass(userClass) + ".json");
- }
- private static string GetDefaultEntryPath(string userClass = null)
- {
- return Path.Combine(ConfigFileDir, "Default" + FilterUserClass(userClass) + ".json");
- }
- public static bool CreateDefaultClientEntryIfNoExist()
- {
- var path = GetDefaultEntryPath();
- if (File.Exists(path)) return false;
- if (false == Directory.Exists(ConfigFileDir)) Directory.CreateDirectory(ConfigFileDir);
- File.WriteAllText(path, JsonConvert.SerializeObject(new ClientEntry(), Formatting.Indented));
- return true;
- }
- public static ClientEntry GetDefaultClientEntry(string userClass = null)
- {
- var path = GetDefaultEntryPath(userClass);
- if (File.Exists(path)) return JsonConvert.DeserializeObject<ClientEntry>(File.ReadAllText(path));
-
- var createNew = new ClientEntry();
- File.WriteAllText(path, JsonConvert.SerializeObject(new ClientEntry(), Formatting.Indented));
- return createNew;
- }
- public static ClientEntry GetClientEntry(string mac, string userClass = null)
- {
- var path = GetClientEntryPath(mac, userClass);
- if (File.Exists(path)) return JsonConvert.DeserializeObject<ClientEntry>(File.ReadAllText(path));
- var createNew = new ClientEntry();
- File.WriteAllText(path, JsonConvert.SerializeObject(new ClientEntry(), Formatting.Indented));
- return createNew;
- }
- }
- }
|