public static Boolean AddFilterL7(String ip, String username, String password, RegisterDump dump, String SRCAddress, String NameEventLog) { Boolean ret = true; try { string MyFileName = @"rules.txt"; File.Delete(MyFileName); FileStream fs = new FileStream(MyFileName, FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(fs); //MK mikrotik = new MK(IPAddress.Parse(ip).ToString()); //if (mikrotik.Login(username, password)) //{ string s; 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(); //mikrotik.Close(); } catch (Exception) { //EventLog.WriteEntry(NameEventLog, "Ошибка добавления правил: " + error.Message, EventLogEntryType.Error, 200, 004); ret = false; } return(ret); }
public static Boolean Parse(out RegisterDump Register, Byte[] registerZipArchive, String NameEventLog) { Boolean ret = true; Register = new RegisterDump(); //String registerZipArchivePath = @"register.zip"; //String UnZIPPath = @""; String dumpfile = @"dump.xml"; //String signdumpfile = @"dump.xml.sig"; try { //File.WriteAllBytes(registerZipArchivePath, registerZipArchive); //ZipFile.ExtractToDirectory(registerZipArchivePath, UnZIPPath); 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); } //Directory.Delete(UnZIPPath, true); //File.Delete(registerZipArchivePath); } catch (Exception) { //EventLog.WriteEntry(NameEventLog, "Ошибка парсера: " + error.Message, EventLogEntryType.Error, 200, 003); ret = false; } return(ret); }