Esempio n. 1
0
        void WatchIP_CountryAlarm(object sender, CountyAlarmEventArgs e)
        {
            prevNetError = string.Empty;

            switch (settings.ComAlarmLevel)
            {
            //уровень паники
            case IPAlarmLevel.None:     //вообще не реагировать
            {
                return;
            }

            case IPAlarmLevel.OnlyWarning:     //только предупреждение
            {
                CountryWarning(e.IP, e.Country, e.ISOCode);
            }; break;

            case IPAlarmLevel.HTTP_HEADERS:        //в заголовках HTTP
            {
                if (e.InHTTP_HEADERS || e.InOTHER) // если IP в заголовках HTTP (или скрипте, который не поддерживает разделение) - паника и предупреждение
                {
                    CountryWarning(e.IP, e.Country, e.ISOCode);
                    CountryPanic(e.IP, e.Country, e.ISOCode);
                }
                else         //иначе предупреждение
                {
                    CountryWarning(e.IP, e.Country, e.ISOCode);
                }
            }; break;

            case IPAlarmLevel.REMOTE_ADDR:     //в REMOTE_ADDR
            {
                if (e.InREMOTE_ADDR || e.InOTHER)
                {
                    CountryWarning(e.IP, e.Country, e.ISOCode);
                    CountryPanic(e.IP, e.Country, e.ISOCode);
                }
                else
                {
                    CountryWarning(e.IP, e.Country, e.ISOCode);
                }
            }; break;

            case IPAlarmLevel.All:     //везде - и паника и предупреждение
            {
                CountryWarning(e.IP, e.Country, e.ISOCode);
                CountryPanic(e.IP, e.Country, e.ISOCode);
            }; break;
            }
        }
Esempio n. 2
0
        //получение основной информации
        //проверка на попадание в стоп-лист
        //предупреждения скрипта
        private void CheckIP(DataSet ds)
        {
            //List для сбора всех обнаруженных IP для определения смены IP
            List <string>        NewIPInfo      = new List <string>();
            bool                 stoplist       = false;
            bool                 InREMOTE_ADDR  = false;
            bool                 InHTTP_HEADERS = false;
            bool                 InOTHER        = false;
            CountyAlarmEventArgs e = new CountyAlarmEventArgs();

            foreach (DataRow dr in ds.Tables["IP"].Rows)
            {
                string buf = "";
                //проверка на предупреждения скрипта
                if (dr["status"].ToString().Trim() != "OK")
                {
                    ScriptWarningsEventArgs swea = new ScriptWarningsEventArgs();
                    swea.IP            = dr["ip"].ToString().Trim();
                    swea.ScriptMessage = dr["status"].ToString().Trim();
                    if (swea.ScriptMessage == string.Empty)
                    {
                        swea.ScriptMessage = "Unknow Warning, check script!";
                    }
                    if (ScriptWarnings != null)
                    {
                        ScriptWarnings(this, swea);
                    }
                }

                //проверка на попадание в стоп-лист если предупреждения не отключены.
                if (InStopList(dr["country_iso"].ToString()) &&
                    (appsettings.ComAlarmLevel != IPAlarmLevel.None))
                {
                    switch (dr["field"].ToString().Trim())
                    {
                    case "REMOTE_ADDR":
                    {
                        InREMOTE_ADDR = true;
                    }; break;

                    case "OTHER":
                    {
                        InOTHER = true;
                    }; break;

                    default:
                    {
                        InHTTP_HEADERS = true;
                    }; break;
                    }

                    e.InREMOTE_ADDR  = InREMOTE_ADDR;
                    e.InHTTP_HEADERS = InHTTP_HEADERS;
                    e.InOTHER        = InOTHER;
                    e.Country        = dr["country_name_en"].ToString().Trim();
                    e.IP             = dr["ip"].ToString().Trim();
                    e.ISOCode        = dr["country_iso"].ToString().Trim();
                    stoplist         = true;
                }

                //инфо для краткой подсказки и обнаружения новых IP
                buf = buf + dr["ip"].ToString() + " " + dr["country_name_en"].ToString() + " (" +
                      dr["country_iso"].ToString() + ")";

                NewIPInfo.Add(buf);
            }



            IPShortInfo = string.Join("\n", NewIPInfo.ToArray());
            if (NewIPDetect(NewIPInfo))
            {
                if (NewIP != null)
                {
                    NewIP(this);
                }
            }

            if (stoplist)
            {
                if (CountryAlarm != null)
                {
                    CountryAlarm(this, e);
                }
            }
            else
            {
                if (IPOK != null)
                {
                    IPOK(this);
                }
            }
        }