Guest User

Untitled

a guest
Dec 11th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.04 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3.  
  4. namespace MegaCraft
  5. {
  6. public static class Properties
  7. {
  8. public static void Load(string givenPath, bool skipsalt = false)
  9. {
  10. if (!skipsalt)
  11. {
  12. Server.salt = "";
  13. string rndchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-/?.><,\";
  14. Random rnd = new Random();
  15. for (int i = 0; i < 16; ++i) { Server.salt += rndchars[rnd.Next(rndchars.Length)]; }
  16. }
  17.  
  18. if (File.Exists(givenPath))
  19. {
  20. string[] lines = File.ReadAllLines(givenPath);
  21.  
  22. foreach (string line in lines)
  23. {
  24. if (line != "" && line[0] != '#')
  25. {
  26. //int index = line.IndexOf('=') + 1; // not needed if we use Split('=')
  27. string key = line.Split('=')[0].Trim();
  28. string value = line.Split('=')[1].Trim();
  29. string color = "";
  30.  
  31. switch (key.ToLower())
  32. {
  33. case "server-name":
  34. if (ValidString(value, "![]:.,{}~-+()?_/\\ "))
  35. {
  36. Server.name = value;
  37. }
  38. else { Server.s.Log("server-name invalid! setting to default."); }
  39. break;
  40. case "motd":
  41. if (ValidString(value, "![]&:.,{}~-+()?_/\\ "))
  42. {
  43. Server.motd = value;
  44. }
  45. else { Server.s.Log("motd invalid! setting to default."); }
  46. break;
  47. case "port":
  48. try { Server.port = Convert.ToInt32(value); }
  49. catch { Server.s.Log("port invalid! setting to default."); }
  50. break;
  51.  
  52. case "public":
  53. Server.pub = (value.ToLower() == "true") ? true : false;
  54. break;
  55. case "world-chat":
  56. Server.worldChat = (value.ToLower() == "true") ? true : false;
  57. break;
  58. case "guest-goto":
  59. Server.guestGoto = (value.ToLower() == "true") ? true : false;
  60. break;
  61. case "max-players":
  62. try
  63. {
  64. if (Convert.ToByte(value) > 128)
  65. {
  66. value = "128"; Server.s.Log("Max players has been lowered to 128.");
  67. }
  68. else if (Convert.ToByte(value) < 1)
  69. {
  70. value = "1"; Server.s.Log("Max players has been increased to 1.");
  71. }
  72. Server.players = Convert.ToByte(value);
  73. }
  74. catch { Server.s.Log("max-players invalid! setting to default."); }
  75. break;
  76. case "max-maps":
  77. try
  78. {
  79. if (Convert.ToByte(value) > 100)
  80. {
  81. value = "100";
  82. Server.s.Log("Max maps has been lowered to 100.");
  83. }
  84. else if (Convert.ToByte(value) < 1)
  85. {
  86. value = "1";
  87. Server.s.Log("Max maps has been increased to 1.");
  88. }
  89. Server.maps = Convert.ToByte(value);
  90. }
  91. catch
  92. {
  93. Server.s.Log("max-maps invalid! setting to default.");
  94. }
  95. break;
  96. case "irc":
  97. Server.irc = (value.ToLower() == "true") ? true : false;
  98. break;
  99. case "irc-server":
  100. Server.ircServer = value;
  101. break;
  102. case "irc-nick":
  103. Server.ircNick = value;
  104. break;
  105. case "irc-channel":
  106. Server.ircChannel = value;
  107. break;
  108. case "irc-opchannel":
  109. Server.ircOpChannel = value;
  110. break;
  111. case "irc-port":
  112. try
  113. {
  114. Server.ircPort = Convert.ToInt32(value);
  115. }
  116. catch
  117. {
  118. Server.s.Log("irc-port invalid! setting to default.");
  119. }
  120. break;
  121. case "irc-identify":
  122. try
  123. {
  124. Server.ircIdentify = Convert.ToBoolean(value);
  125. }
  126. catch
  127. {
  128. Server.s.Log("irc-identify boolean value invalid! Setting to the default of: " + Server.ircIdentify + ".");
  129. }
  130. break;
  131. case "irc-password":
  132. Server.ircPassword = value;
  133. break;
  134. case "anti-tunnels":
  135. Server.antiTunnel = (value.ToLower() == "true") ? true : false;
  136. break;
  137. case "max-depth":
  138. try
  139. {
  140. Server.maxDepth = Convert.ToByte(value);
  141. }
  142. catch
  143. {
  144. Server.s.Log("maxDepth invalid! setting to default.");
  145. }
  146. break;
  147.  
  148. case "rplimit":
  149. try { Server.rpLimit = Convert.ToInt16(value); }
  150. catch { Server.s.Log("rpLimit invalid! setting to default."); }
  151. break;
  152. case "rplimit-norm":
  153. try { Server.rpNormLimit = Convert.ToInt16(value); }
  154. catch { Server.s.Log("rpLimit-norm invalid! setting to default."); }
  155. break;
  156.  
  157.  
  158. case "report-back":
  159. Server.reportBack = (value.ToLower() == "true") ? true : false;
  160. break;
  161. case "backup-time":
  162. if (Convert.ToInt32(value) > 1) { Server.backupInterval = Convert.ToInt32(value); }
  163. break;
  164. case "backup-location":
  165. if (!value.Contains("System.Windows.Forms.TextBox, Text:"))
  166. Server.backupLocation = value;
  167. break;
  168.  
  169. case "console-only":
  170. Server.console = (value.ToLower() == "true") ? true : false;
  171. break;
  172.  
  173. case "physicsrestart":
  174. Server.physicsRestart = (value.ToLower() == "true") ? true : false;
  175. break;
  176. case "deathcount":
  177. Server.deathcount = (value.ToLower() == "true") ? true : false;
  178. break;
  179.  
  180. case "usemysql":
  181. Server.useMySQL = (value.ToLower() == "true") ? true : false;
  182. break;
  183. case "host":
  184. Server.MySQLHost = value;
  185. break;
  186. case "sqlport":
  187. Server.MySQLPort = value;
  188. break;
  189. case "username":
  190. Server.MySQLUsername = value;
  191. break;
  192. case "password":
  193. Server.MySQLPassword = value;
  194. break;
  195. case "databasename":
  196. Server.MySQLDatabaseName = value;
  197. break;
  198. case "pooling":
  199. try { Server.MySQLPooling = bool.Parse(value); }
  200. catch { Server.s.Log("Invalid " + key + ". Using default."); break; }
  201. break;
  202. case "defaultcolor":
  203. color = c.Parse(value);
  204. if (color == "")
  205. {
  206. color = c.Name(value); if (color != "") color = value; else { Server.s.Log("Could not find " + value); return; }
  207. }
  208. Server.DefaultColor = color;
  209. break;
  210. case "irc-color":
  211. color = c.Parse(value);
  212. if (color == "")
  213. {
  214. color = c.Name(value); if (color != "") color = value; else { Server.s.Log("Could not find " + value); return; }
  215. }
  216. Server.IRCColour = color;
  217. break;
  218.  
  219. case "opchat-perm":
  220. try
  221. {
  222. sbyte parsed = sbyte.Parse(value);
  223. if (parsed < -50 || parsed > 120)
  224. {
  225. throw new FormatException();
  226. }
  227. Server.opchatperm = (LevelPermission)parsed;
  228. }
  229. catch { Server.s.Log("Invalid " + key + ". Using default."); break; }
  230. break;
  231. case "log-heartbeat":
  232. try { Server.logbeat = bool.Parse(value); }
  233. catch { Server.s.Log("Invalid " + key + ". Using default."); break; }
  234. break;
  235. case "force-cuboid":
  236. try { Server.forceCuboid = bool.Parse(value); }
  237. catch { Server.s.Log("Invalid " + key + ". Using default."); break; }
  238. break;
  239. case "cheapmessage":
  240. try { Server.cheapMessage = bool.Parse(value); }
  241. catch { Server.s.Log("Invalid " + key + ". Using default."); break; }
  242. break;
  243. case "cheap-message-given":
  244. if (value != "") Server.cheapMessageGiven = value;
  245. break;
  246. case "custom-ban":
  247. try { Server.customBan = bool.Parse(value); }
  248. catch { Server.s.Log("Invalid " + key + ". Using default."); break; }
  249. break;
  250. case "custom-ban-message":
  251. if (value != "") Server.customBanMessage = value;
  252. break;
  253. case "custom-shutdown":
  254. try { Server.customShutdown = bool.Parse(value); }
  255. catch { Server.s.Log("Invalid " + key + ". Using default."); break; }
  256. break;
  257. case "custom-shutdown-message":
  258. if (value != "") Server.customShutdownMessage = value;
  259. break;
  260. case "rank-super":
  261. try { Server.rankSuper = bool.Parse(value); }
  262. catch { Server.s.Log("Invalid " + key + ". Using default."); break; }
  263. break;
  264. case "default-rank":
  265. try { Server.defaultRank = value.ToLower(); }
  266. catch { }
  267. break;
  268. case "afk-minutes":
  269. try
  270. {
  271. Server.afkminutes = Convert.ToInt32(value);
  272. }
  273. catch
  274. {
  275. Server.s.Log("irc-port invalid! setting to default.");
  276. }
  277. break;
  278. case "afk-kick":
  279. try { Server.afkkick = Convert.ToInt32(value); }
  280. catch { Server.s.Log("irc-port invalid! setting to default."); }
  281. break;
  282. case "check-updates":
  283. try { Server.checkUpdates = bool.Parse(value); }
  284. catch { Server.s.Log("Invalid " + key + ". Using default."); break; }
  285. break;
  286. case "autoload":
  287. try { Server.AutoLoad = bool.Parse(value); }
  288. catch { Server.s.Log("Invalid " + key + ". Using default."); break; }
  289. break;
  290. case "auto-restart":
  291. try { Server.autorestart = bool.Parse(value); }
  292. catch { Server.s.Log("Invalid " + key + ". Using default."); break; }
  293. break;
  294. case "restarttime":
  295. try { Server.restarttime = DateTime.Parse(value); }
  296. catch { Server.s.Log("Invalid " + key + ". Using defualt."); break; }
  297. break;
  298. case "parse-emotes":
  299. try { Server.parseSmiley = bool.Parse(value); }
  300. catch { Server.s.Log("Invalid " + key + ". Using default."); break; }
  301. break;
  302. case "main-name":
  303. if (Player.ValidName(value)) Server.level = value;
  304. else Server.s.Log("Invalid main name");
  305. break;
  306. case "dollar-before-dollar":
  307. try { Server.dollardollardollar = bool.Parse(value); }
  308. catch { Server.s.Log("Invalid " + key + ". Using default."); }
  309. break;
  310. case "money-name":
  311. if (value != "") Server.moneys = value;
  312. break;
  313. case "mono":
  314. try { Server.mono = bool.Parse(value); }
  315. catch { Server.s.Log("Invalid " + key + ". Using default."); }
  316. break;
  317. case "restart-on-error":
  318. try { Server.restartOnError = bool.Parse(value); }
  319. catch { Server.s.Log("Invalid " + key + ". Using default."); }
  320. break;
  321.  
  322. case "host-state":
  323. if (value != "")
  324. Server.ZallState = value;
  325. break;
  326. }
  327. }
  328. }
  329. Server.s.SettingsUpdate();
  330. Save(givenPath);
  331. }
  332. else Save(givenPath);
  333. }
  334. public static bool ValidString(string str, string allowed)
  335. {
  336. string allowedchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890" + allowed;
  337. foreach (char ch in str)
  338. {
  339. if (allowedchars.IndexOf(ch) == -1)
  340. {
  341. return false;
  342. }
  343. } return true;
  344. }
Add Comment
Please, Sign In to add comment