public static Boolean Parse(out RegisterDump Register, Byte[] registerZipArchive) { Boolean ret = true; Register = new RegisterDump(); String dumpfile = @"dump.xml"; try { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(dumpfile); Register.UpdateTime = xmlDoc.GetElementsByTagName("reg:register")[0].Attributes.GetNamedItem("updateTime").InnerText; XmlNodeList content = xmlDoc.GetElementsByTagName("content"); for (int i = 0; i < content.Count; i++) { ItemRegisterDump item = new ItemRegisterDump(); item.id = content[i].Attributes.GetNamedItem("id").InnerText; item.includeTime = content[i].Attributes.GetNamedItem("includeTime").InnerText; foreach (XmlNode node in content[i].ChildNodes) { switch (node.Name) { case "decision": item.date = node.Attributes.GetNamedItem("date").InnerText; item.number = node.Attributes.GetNamedItem("number").InnerText; item.org = node.Attributes.GetNamedItem("org").InnerText; break; case "url": item.url.Add(node.InnerText); break; case "domain": item.domain.Add(node.InnerText); break; case "ip": item.ip.Add(node.InnerText); break; } } Register.Items.Add(item); } } catch (Exception) { ret = false; } return(ret); }
public static Boolean AddFilterL7(RegisterDump dump) { Boolean ret = true; try { string MyFileName = @"rules.txt"; string s; File.Delete(MyFileName); FileStream fs = new FileStream(MyFileName, FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(fs); s = @"/system script add name=cleaner source=""/ip firewall layer7-protocol remove [find comment=register]\n/ip firewall filter remove [find comment=register]"""; sw.WriteLine(s); s = @"/system script run number=cleaner"; sw.WriteLine(s); /* Cleaner * /ip firewall layer7-protocol remove [find comment=register] * /ip firewall filter remove [find comment=register] */ foreach (ItemRegisterDump item in dump.Items) { for (Int32 i = 0; i < item.domain.Count; i++) { s = @"/ip firewall layer7-protocol add comment=register name=" + item.id + "_" + i + @" regexp=""^.+(" + item.domain[i] + @").*\$"""; sw.WriteLine(s); s = @"/ip firewall filter add comment=register action=drop chain=forward disabled=no dst-port=80 layer7-protocol=" + item.id + "_" + i + " protocol=tcp src-address= out-interface=ether1-gateway"; sw.WriteLine(s); } } sw.Close(); fs.Close(); } catch (Exception) { ret = false; } return(ret); }