initial commit
This commit is contained in:
@@ -0,0 +1,225 @@
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
using System.Xml.XPath;
|
||||
|
||||
namespace Quasar.Server.Models
|
||||
{
|
||||
public static class Settings
|
||||
{
|
||||
private static readonly string SettingsPath = Path.Combine(Application.StartupPath, "settings.xml");
|
||||
|
||||
public static readonly string CertificatePath = Path.Combine(Application.StartupPath, "trollware.p12");
|
||||
|
||||
public static ushort ListenPort
|
||||
{
|
||||
get
|
||||
{
|
||||
return ushort.Parse(ReadValueSafe("ListenPort", "4782"));
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteValue("ListenPort", value.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IPv6Support
|
||||
{
|
||||
get
|
||||
{
|
||||
return bool.Parse(ReadValueSafe("IPv6Support", "False"));
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteValue("IPv6Support", value.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public static bool AutoListen
|
||||
{
|
||||
get
|
||||
{
|
||||
return bool.Parse(ReadValueSafe("AutoListen", "False"));
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteValue("AutoListen", value.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public static bool ShowPopup
|
||||
{
|
||||
get
|
||||
{
|
||||
return bool.Parse(ReadValueSafe("ShowPopup", "False"));
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteValue("ShowPopup", value.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public static bool UseUPnP
|
||||
{
|
||||
get
|
||||
{
|
||||
return bool.Parse(ReadValueSafe("UseUPnP", "False"));
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteValue("UseUPnP", value.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public static bool ShowToolTip
|
||||
{
|
||||
get
|
||||
{
|
||||
return bool.Parse(ReadValueSafe("ShowToolTip", "False"));
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteValue("ShowToolTip", value.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public static bool EnableNoIPUpdater
|
||||
{
|
||||
get
|
||||
{
|
||||
return bool.Parse(ReadValueSafe("EnableNoIPUpdater", "False"));
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteValue("EnableNoIPUpdater", value.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public static string NoIPHost
|
||||
{
|
||||
get
|
||||
{
|
||||
return ReadValueSafe("NoIPHost");
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteValue("NoIPHost", value);
|
||||
}
|
||||
}
|
||||
|
||||
public static string NoIPUsername
|
||||
{
|
||||
get
|
||||
{
|
||||
return ReadValueSafe("NoIPUsername");
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteValue("NoIPUsername", value);
|
||||
}
|
||||
}
|
||||
|
||||
public static string NoIPPassword
|
||||
{
|
||||
get
|
||||
{
|
||||
return ReadValueSafe("NoIPPassword");
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteValue("NoIPPassword", value);
|
||||
}
|
||||
}
|
||||
|
||||
public static string SaveFormat
|
||||
{
|
||||
get
|
||||
{
|
||||
return ReadValueSafe("SaveFormat", "APP - URL - USER:PASS");
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteValue("SaveFormat", value);
|
||||
}
|
||||
}
|
||||
|
||||
public static ushort ReverseProxyPort
|
||||
{
|
||||
get
|
||||
{
|
||||
return ushort.Parse(ReadValueSafe("ReverseProxyPort", "3128"));
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteValue("ReverseProxyPort", value.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private static string ReadValue(string pstrValueToRead)
|
||||
{
|
||||
try
|
||||
{
|
||||
XPathDocument doc = new XPathDocument(SettingsPath);
|
||||
XPathNavigator nav = doc.CreateNavigator();
|
||||
XPathExpression expr = nav.Compile(@"/settings/" + pstrValueToRead);
|
||||
XPathNodeIterator iterator = nav.Select(expr);
|
||||
while (iterator.MoveNext())
|
||||
{
|
||||
return iterator.Current.Value;
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
private static string ReadValueSafe(string pstrValueToRead, string defaultValue = "")
|
||||
{
|
||||
string value = ReadValue(pstrValueToRead);
|
||||
return (!string.IsNullOrEmpty(value)) ? value: defaultValue;
|
||||
}
|
||||
|
||||
private static void WriteValue(string pstrValueToRead, string pstrValueToWrite)
|
||||
{
|
||||
try
|
||||
{
|
||||
XmlDocument doc = new XmlDocument();
|
||||
|
||||
if (File.Exists(SettingsPath))
|
||||
{
|
||||
using (var reader = new XmlTextReader(SettingsPath))
|
||||
{
|
||||
doc.Load(reader);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var dir = Path.GetDirectoryName(SettingsPath);
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
}
|
||||
doc.AppendChild(doc.CreateElement("settings"));
|
||||
}
|
||||
|
||||
XmlElement root = doc.DocumentElement;
|
||||
XmlNode oldNode = root.SelectSingleNode(@"/settings/" + pstrValueToRead);
|
||||
if (oldNode == null) // create if not exist
|
||||
{
|
||||
oldNode = doc.SelectSingleNode("settings");
|
||||
oldNode.AppendChild(doc.CreateElement(pstrValueToRead)).InnerText = pstrValueToWrite;
|
||||
doc.Save(SettingsPath);
|
||||
return;
|
||||
}
|
||||
oldNode.InnerText = pstrValueToWrite;
|
||||
doc.Save(SettingsPath);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user