public ActiveMission(List<MisisonGoal> _goals, string next, MailServer.EMailData _email) { goals = _goals; nextMission = next; email = _email; endFunctionValue = -1; endFunctionName = ""; postingTitle = postingBody = ""; reloadGoalsSourceFile = "Missions/BitMissionIntro.xml"; }
public ActiveMission(List <MisisonGoal> _goals, string next, MailServer.EMailData _email) { this.goals = _goals; this.nextMission = next; this.email = _email; this.endFunctionValue = -1; this.endFunctionName = ""; this.postingTitle = this.postingBody = ""; this.reloadGoalsSourceFile = "Missions/BitMissionIntro.xml"; }
public static object load(XmlReader reader) { while (reader.Name != "mission") reader.Read(); reader.MoveToAttribute("next"); var next = reader.ReadContentAsString(); reader.MoveToAttribute("goals"); var filename = reader.ReadContentAsString(); if (reader.MoveToAttribute("genTarget")) { var str1 = reader.ReadContentAsString(); reader.MoveToAttribute("genFile"); var str2 = reader.ReadContentAsString(); reader.MoveToAttribute("genPath"); var str3 = reader.ReadContentAsString(); reader.MoveToAttribute("genTargetName"); var str4 = reader.ReadContentAsString(); reader.MoveToAttribute("genOther"); var str5 = reader.ReadContentAsString(); MissionGenerationParser.Comp = str1; MissionGenerationParser.File = str2; MissionGenerationParser.Path = str3; MissionGenerationParser.Target = str4; MissionGenerationParser.Other = str5; } reader.MoveToAttribute("activeChack"); reader.ReadContentAsString().ToLower().Equals("true"); if (next == "NULL_MISSION") return null; if (!filename.StartsWith("Content")) filename = "Content/" + filename; var _goals = new List<MisisonGoal>(); var activeMission1 = new ActiveMission(new List<MisisonGoal>(), "NONE", new MailServer.EMailData("Unknown", "Unknown", "Unknown", new List<string>())); try { activeMission1 = (ActiveMission) ComputerLoader.readMission(filename); _goals = activeMission1.goals; } catch (Exception ex) { Utils.SendRealWorldEmail("Mission Load Error", "*****@*****.**", "Hacknet " + MainMenu.OSVersion + "\r\n" + Utils.GenerateReportFromException(ex)); } var sendr = "ERRORBOT"; var subj = "ERROR"; var bod = "ERROR :: MAIL LOAD FAILED"; while (reader.Name != "email" && reader.Name != "endFunc") reader.Read(); if (reader.Name.Equals("email")) { if (reader.MoveToAttribute("sender")) sendr = reader.ReadContentAsString(); if (reader.MoveToAttribute("subject")) subj = reader.ReadContentAsString(); var num = (int) reader.MoveToContent(); bod = reader.ReadElementContentAsString(); } var _email = new MailServer.EMailData(sendr, bod, subj, activeMission1.email.attachments); var activeMission2 = new ActiveMission(_goals, next, _email); activeMission2.activeCheck = activeMission1.activeCheck; activeMission2.reloadGoalsSourceFile = filename; while (reader.Name != "endFunc") reader.Read(); reader.MoveToAttribute("val"); var num1 = reader.ReadContentAsInt(); reader.MoveToAttribute("name"); var str6 = reader.ReadContentAsString(); activeMission2.endFunctionName = str6; activeMission2.endFunctionValue = num1; while (reader.Name != "posting") reader.Read(); reader.MoveToAttribute("title"); var str7 = reader.ReadContentAsString(); var num2 = (int) reader.MoveToContent(); var str8 = Folder.deFilter(reader.ReadElementContentAsString()); activeMission2.postingTitle = str7; activeMission2.postingBody = str8; return activeMission2; }
public static object load(XmlReader reader) { while (reader.Name != "mission") { reader.Read(); } reader.MoveToAttribute("next"); string next = reader.ReadContentAsString(); reader.MoveToAttribute("goals"); string filename = reader.ReadContentAsString(); if (reader.MoveToAttribute("genTarget")) { string str1 = reader.ReadContentAsString(); reader.MoveToAttribute("genFile"); string str2 = reader.ReadContentAsString(); reader.MoveToAttribute("genPath"); string str3 = reader.ReadContentAsString(); reader.MoveToAttribute("genTargetName"); string str4 = reader.ReadContentAsString(); reader.MoveToAttribute("genOther"); string str5 = reader.ReadContentAsString(); MissionGenerationParser.Comp = str1; MissionGenerationParser.File = str2; MissionGenerationParser.Path = str3; MissionGenerationParser.Target = str4; MissionGenerationParser.Other = str5; } reader.MoveToAttribute("activeChack"); int num1 = 0; if (reader.MoveToAttribute("reqRank")) { num1 = reader.ReadContentAsInt(); } bool flag = reader.ReadContentAsString().ToLower().Equals("true"); if (next == "NULL_MISSION") { return((object)null); } if (!Settings.IsInExtensionMode && !filename.StartsWith("Content")) { filename = "Content/" + filename; } List <MisisonGoal> _goals = new List <MisisonGoal>(); ActiveMission activeMission1 = new ActiveMission(new List <MisisonGoal>(), "NONE", new MailServer.EMailData("Unknown", "Unknown", "Unknown", new List <string>())); try { activeMission1 = (ActiveMission)ComputerLoader.readMission(filename); _goals = activeMission1.goals; flag = flag || activeMission1.activeCheck; } catch (Exception ex) { Utils.SendRealWorldEmail("Mission Load Error", "*****@*****.**", "Hacknet " + MainMenu.OSVersion + "\r\n" + Utils.GenerateReportFromException(ex)); } string sendr = "ERRORBOT"; string subj = "ERROR"; string bod = "ERROR :: MAIL LOAD FAILED"; while (reader.Name != "email" && reader.Name != "endFunc") { reader.Read(); } if (reader.Name.Equals("email")) { if (reader.MoveToAttribute("sender")) { sendr = Folder.deFilter(reader.ReadContentAsString()); } if (reader.MoveToAttribute("subject")) { subj = Folder.deFilter(reader.ReadContentAsString()); } int content = (int)reader.MoveToContent(); bod = Folder.deFilter(reader.ReadElementContentAsString()); } MailServer.EMailData _email = new MailServer.EMailData(sendr, bod, subj, activeMission1.email.attachments); ActiveMission activeMission2 = new ActiveMission(_goals, next, _email); activeMission2.activeCheck = flag; activeMission2.reloadGoalsSourceFile = filename; activeMission2.requiredRank = num1; while (reader.Name != "endFunc") { reader.Read(); } reader.MoveToAttribute("val"); int num2 = reader.ReadContentAsInt(); reader.MoveToAttribute("name"); string str6 = reader.ReadContentAsString(); activeMission2.endFunctionName = str6; activeMission2.endFunctionValue = num2; while (reader.Name != "posting") { reader.Read(); } reader.MoveToAttribute("title"); string str7 = Folder.deFilter(reader.ReadContentAsString()); int content1 = (int)reader.MoveToContent(); string str8 = Folder.deFilter(reader.ReadElementContentAsString()); activeMission2.postingTitle = str7; activeMission2.postingBody = str8; return((object)activeMission2); }
public static object readMission(string filename) { var xmlReader = XmlReader.Create(TitleContainer.OpenStream(filename)); var _goals = new List<MisisonGoal>(); var val1 = 0; var name1 = ""; var name2 = ""; var val2 = 0; var flag1 = false; var flag2 = false; while (xmlReader.Name != "mission") xmlReader.Read(); if (xmlReader.MoveToAttribute("activeCheck")) flag1 = xmlReader.ReadContentAsBoolean(); if (xmlReader.MoveToAttribute("shouldIgnoreSenderVerification")) flag2 = xmlReader.ReadContentAsBoolean(); while (xmlReader.Name != "goals" && xmlReader.Name != "generationKeys") xmlReader.Read(); if (xmlReader.Name == "generationKeys") { var keys = new Dictionary<string, string>(); while (xmlReader.MoveToNextAttribute()) { var name3 = xmlReader.Name; var str = xmlReader.Value; keys.Add(name3, str); } var num = (int) xmlReader.MoveToContent(); var str1 = xmlReader.ReadElementContentAsString(); if (str1 != null & str1.Length >= 1) keys.Add("Data", str1); MissionGenerator.setMissionGenerationKeys(keys); while (xmlReader.Name != "goals") xmlReader.Read(); } xmlReader.Read(); if (MissionPreLoadComplete != null) MissionPreLoadComplete(); while (xmlReader.Name != "goals") { if (xmlReader.Name.Equals("goal")) { var str1 = "UNKNOWN"; if (xmlReader.MoveToAttribute("type")) str1 = xmlReader.ReadContentAsString(); if (str1.ToLower().Equals("filedeletion")) { string str2; var path = str2 = ""; var filename1 = str2; var target = str2; if (xmlReader.MoveToAttribute("target")) target = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("file")) filename1 = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("path")) path = filter(xmlReader.ReadContentAsString()); var fileDeletionMission = new FileDeletionMission(path, filename1, findComp(target).ip, os); _goals.Add(fileDeletionMission); } else if (str1.ToLower().Equals("filedownload")) { string str2; var path = str2 = ""; var filename1 = str2; var target = str2; if (xmlReader.MoveToAttribute("target")) target = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("file")) filename1 = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("path")) path = filter(xmlReader.ReadContentAsString()); var fileDownloadMission = new FileDownloadMission(path, filename1, findComp(target).ip, os); _goals.Add(fileDownloadMission); } else if (str1.ToLower().Equals("filechange")) { string str2; var targetKeyword = str2 = ""; var path = str2; var filename1 = str2; var target = str2; if (xmlReader.MoveToAttribute("target")) target = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("file")) filename1 = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("path")) path = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("keyword")) targetKeyword = filter(xmlReader.ReadContentAsString()); var isRemoval = false; if (xmlReader.MoveToAttribute("removal")) isRemoval = xmlReader.ReadContentAsBoolean(); var fileChangeMission = new FileChangeMission(path, filename1, findComp(target).ip, targetKeyword, os, isRemoval); _goals.Add(fileChangeMission); } else if (str1.ToLower().Equals("getadmin")) { var target = ""; if (xmlReader.MoveToAttribute("target")) target = filter(xmlReader.ReadContentAsString()); var getAdminMission = new GetAdminMission(findComp(target).ip, os); _goals.Add(getAdminMission); } else if (str1.ToLower().Equals("getstring")) { var targetData = ""; if (xmlReader.MoveToAttribute("target")) targetData = filter(xmlReader.ReadContentAsString()); var getStringMission = new GetStringMission(targetData); _goals.Add(getStringMission); } else if (str1.ToLower().Equals("delay")) { var time = 1f; if (xmlReader.MoveToAttribute("time")) time = xmlReader.ReadContentAsFloat(); var delayMission = new DelayMission(time); _goals.Add(delayMission); } else if (str1.ToLower().Equals("hasflag")) { var targetFlagName = ""; if (xmlReader.MoveToAttribute("target")) targetFlagName = filter(xmlReader.ReadContentAsString()); var checkFlagSetMission = new CheckFlagSetMission(targetFlagName, os); _goals.Add(checkFlagSetMission); } if (str1.ToLower().Equals("fileupload")) { var needsDecrypt = false; string str2; var decryptPass = str2 = ""; var destToUploadToPath = str2; var computerToUploadToIP = str2; var path = str2; var filename1 = str2; var computerWithFileIP = str2; if (xmlReader.MoveToAttribute("target")) computerWithFileIP = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("file")) filename1 = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("path")) path = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("destTarget")) computerToUploadToIP = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("destPath")) destToUploadToPath = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("decryptPass")) decryptPass = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("decrypt")) needsDecrypt = xmlReader.ReadContentAsBoolean(); var fileUploadMission = new FileUploadMission(path, filename1, computerWithFileIP, computerToUploadToIP, destToUploadToPath, os, needsDecrypt, decryptPass); _goals.Add(fileUploadMission); } if (str1.ToLower().Equals("adddegree")) { string str2; var degreeName = str2 = ""; var uniName = str2; var targetName = str2; var desiredGPA = -1f; if (xmlReader.MoveToAttribute("owner")) targetName = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("degree")) degreeName = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("uni")) uniName = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("gpa")) desiredGPA = xmlReader.ReadContentAsFloat(); var addDegreeMission = new AddDegreeMission(targetName, degreeName, uniName, desiredGPA, os); _goals.Add(addDegreeMission); } if (str1.ToLower().Equals("wipedegrees")) { var targetName = ""; if (xmlReader.MoveToAttribute("owner")) targetName = filter(xmlReader.ReadContentAsString()); var wipeDegreesMission = new WipeDegreesMission(targetName, os); _goals.Add(wipeDegreesMission); } if (str1.ToLower().Equals("removeDeathRowRecord".ToLower())) { var firstName = "UNKNOWN"; var lastName = "UNKNOWN"; if (xmlReader.MoveToAttribute("name")) { var strArray = filter(xmlReader.ReadContentAsString()).Split(' '); firstName = strArray[0]; lastName = strArray[1]; } if (xmlReader.MoveToAttribute("fname")) firstName = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("lname")) lastName = filter(xmlReader.ReadContentAsString()); var recordRemovalMission = new DeathRowRecordRemovalMission(firstName, lastName, os); _goals.Add(recordRemovalMission); } if (str1.ToLower().Equals("modifyDeathRowRecord".ToLower())) { var firstName = "UNKNOWN"; var lastName = "UNKNOWN"; if (xmlReader.MoveToAttribute("name")) { var strArray = filter(xmlReader.ReadContentAsString()).Split(' '); firstName = strArray[0]; lastName = strArray[1]; } if (xmlReader.MoveToAttribute("fname")) firstName = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("lname")) lastName = filter(xmlReader.ReadContentAsString()); var num = (int) xmlReader.MoveToContent(); var lastWords = xmlReader.ReadElementContentAsString(); var recordModifyMission = new DeathRowRecordModifyMission(firstName, lastName, lastWords, os); _goals.Add(recordModifyMission); } else if (str1.ToLower().Equals("sendemail")) { string proposedEmailSubject; var mailRecipient = proposedEmailSubject = ""; var mailServerID = "jmail"; if (xmlReader.MoveToAttribute("mailServer")) mailServerID = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("recipient")) mailRecipient = filter(xmlReader.ReadContentAsString()); if (xmlReader.MoveToAttribute("subject")) proposedEmailSubject = filter(xmlReader.ReadContentAsString()); var sendEmailMission = new SendEmailMission(mailServerID, mailRecipient, proposedEmailSubject, os); _goals.Add(sendEmailMission); } } xmlReader.Read(); } while (xmlReader.Name != "nextMission" && xmlReader.Name != "missionEnd" && xmlReader.Name != "missionStart") xmlReader.Read(); if (xmlReader.Name.Equals("missionStart")) { var num1 = 1; var flag3 = false; if (xmlReader.MoveToAttribute("val")) num1 = xmlReader.ReadContentAsInt(); if (xmlReader.MoveToAttribute("suppress")) flag3 = xmlReader.ReadContentAsBoolean(); var num2 = (int) xmlReader.MoveToContent(); var name3 = xmlReader.ReadElementContentAsString(); if (flag3) { name2 = name3; val2 = num1; } else MissionFunctions.runCommand(num1, name3); xmlReader.Read(); } if (xmlReader.Name.Equals("missionEnd")) { var num1 = 1; if (xmlReader.MoveToAttribute("val")) num1 = xmlReader.ReadContentAsInt(); var num2 = (int) xmlReader.MoveToContent(); name1 = xmlReader.ReadElementContentAsString(); val1 = num1; } var flag4 = true; while (!xmlReader.Name.Equals("nextMission")) xmlReader.Read(); if (xmlReader.MoveToAttribute("IsSilent")) flag4 = xmlReader.ReadContentAsString().ToLower().Equals("false"); var num3 = (int) xmlReader.MoveToContent(); var next = xmlReader.ReadElementContentAsString(); if (os.branchMissions != null) os.branchMissions.Clear(); while (xmlReader.Name != "posting" && xmlReader.Name != "email") { if (xmlReader.Name.Equals("branchMissions")) { xmlReader.Read(); var list = new List<ActiveMission>(); while (!xmlReader.Name.Equals("branchMissions") || xmlReader.IsStartElement()) { if (xmlReader.Name == "branch") { var num1 = (int) xmlReader.MoveToContent(); var str = xmlReader.ReadElementContentAsString(); list.Add((ActiveMission) readMission("Content/Missions/" + str)); } xmlReader.Read(); } os.branchMissions = list; } xmlReader.Read(); } int num4; var num5 = num4 = 0; string str3; var str4 = str3 = "UNKNOWN"; var str5 = str3; var s1 = str3; var str6 = str3; string str7 = null; while (xmlReader.Name != "posting" && xmlReader.Name != "email") xmlReader.Read(); if (xmlReader.Name.Equals("posting")) { if (xmlReader.MoveToAttribute("title")) s1 = xmlReader.ReadContentAsString(); if (xmlReader.MoveToAttribute("reqs")) str7 = xmlReader.ReadContentAsString(); if (xmlReader.MoveToAttribute("requiredRank")) num5 = xmlReader.ReadContentAsInt(); if (xmlReader.MoveToAttribute("difficulty")) num4 = xmlReader.ReadContentAsInt(); if (xmlReader.MoveToAttribute("client")) str5 = xmlReader.ReadContentAsString(); if (xmlReader.MoveToAttribute("target")) str4 = xmlReader.ReadContentAsString(); var num1 = (int) xmlReader.MoveToContent(); var s2 = xmlReader.ReadElementContentAsString(); s1 = filter(s1); str6 = filter(s2); } while (xmlReader.Name != "email") xmlReader.Read(); while (xmlReader.Name != "sender") xmlReader.Read(); var s3 = xmlReader.ReadElementContentAsString(); while (xmlReader.Name != "subject") xmlReader.Read(); var s4 = xmlReader.ReadElementContentAsString(); while (xmlReader.Name != "body") xmlReader.Read(); var s5 = xmlReader.ReadElementContentAsString(); s5.Trim(); var bod = filter(s5); var subj = filter(s4); var sendr = filter(s3); while (xmlReader.Name != "attachments") xmlReader.Read(); xmlReader.Read(); var _attachments = new List<string>(); while (xmlReader.Name != "attachments") { if (xmlReader.Name.Equals("link")) { var str1 = ""; if (xmlReader.MoveToAttribute("comp")) str1 = filter(xmlReader.ReadContentAsString()); Computer computer = null; for (var index = 0; index < os.netMap.nodes.Count; ++index) { if (os.netMap.nodes[index].idName.Equals(str1)) computer = os.netMap.nodes[index]; } if (computer != null) _attachments.Add("link#%#" + computer.name + "#%#" + computer.ip); } if (xmlReader.Name.Equals("account")) { var str1 = ""; if (xmlReader.MoveToAttribute("comp")) str1 = filter(xmlReader.ReadContentAsString()); Computer computer = null; for (var index = 0; index < os.netMap.nodes.Count; ++index) { if (os.netMap.nodes[index].idName.Equals(str1)) computer = os.netMap.nodes[index]; } string s2; var s6 = s2 = "UNKNOWN"; if (xmlReader.MoveToAttribute("user")) s6 = xmlReader.ReadContentAsString(); if (xmlReader.MoveToAttribute("pass")) s2 = xmlReader.ReadContentAsString(); var str2 = filter(s6); var str8 = filter(s2); if (computer != null) _attachments.Add("account#%#" + computer.name + "#%#" + computer.ip + "#%#" + str2 + "#%#" + str8); } if (xmlReader.Name.Equals("note")) { var str1 = "Data"; if (xmlReader.MoveToAttribute("title")) str1 = filter(xmlReader.ReadContentAsString()); var num1 = (int) xmlReader.MoveToContent(); var str2 = xmlReader.ReadElementContentAsString(); _attachments.Add("note#%#" + str1 + "#%#" + str2); } xmlReader.Read(); } var _email = new MailServer.EMailData(sendr, bod, subj, _attachments); var activeMission = new ActiveMission(_goals, next, _email); activeMission.activeCheck = flag1; activeMission.ShouldIgnoreSenderVerification = flag2; activeMission.postingBody = str6; activeMission.postingTitle = s1; activeMission.requiredRank = num5; activeMission.difficulty = num4; activeMission.client = str5; activeMission.target = str4; activeMission.reloadGoalsSourceFile = filename; if (str7 != null) activeMission.postingAcceptFlagRequirements = str7.Split(Utils.commaDelim, StringSplitOptions.RemoveEmptyEntries); activeMission.willSendEmail = flag4; if (!name1.Equals("")) activeMission.addEndFunction(val1, name1); if (!name2.Equals("")) activeMission.addStartFunction(val2, name2); return activeMission; }