Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }