Си диез / Говнокод #19907 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
public static long NormalizeIp(this long ip)
        {
            var ipAddress = new IPAddress(Math.Abs(ip)).ToString();
            return ipAddress.IpToLong();
        }


        static long IpToLong(this string ip)
        {
            double num = 0;
            if (!string.IsNullOrEmpty(ip))
            {
                var ipBytes = ip.Split('.');
                for (var i = ipBytes.Length - 1; i >= 0; i--)
                {
                    num += ((int.Parse(ipBytes[i]) % 256) * Math.Pow(256, (3 - i)));
                }
            }

            return (long)num;

        }

Получаем IP вот таким вот методом - BitConverter.ToInt32(IPAddress.Parse(ip) .GetAddressBytes(), 0)
Приводим к типу long (неявным методом, т.е. long a = ip_address) и в таком виде сохраняем в базу как bigint (int64)
Затем берем его из базы и пытаемся провернуть с ним вот такой NormalizeIp
Печаль (

Запостил: bopoh bopoh, (Updated )

Комментарии (41) RSS

  • А потом удивляемся, почему IPv6 никак не взлетит...
    Ответить
      • В которой от провайдерских натов еще в середине двухтысячных стонали.
        Ответить
        • всем похуй на наты давно
          от них страдают тока торенты, да и там есть всякие UPnP NAT, NAT-PMP, socks в конце концов

          у хороших то провов
          Ответить
          • > UPnP
            Провайдерский нат через UPnP не уломаешь.

            Торрентам по другой причине похуй - исходящих коннектов вполне хватает. Траблы разве что на очень редких релизах, где среди раздающих сплошные инвалиды с NAT'ом...
            Ответить
            • смотря что за пров) довомые вполне можно, серьезных доксисовцев или поновцев хуй конечно

              чтобы сконнектились два одиночества, надо чтобы хотябы одно из них имело реальный IP

              если ты за натом и без upnp, то количество пиров твоих сильно падает

              у меня кстати реальный IP дома, но по другим причинам
              стоит 300 руб мес)
              Ответить
              • я вам по секрету скажу, тока тсс, но хетцнер (такой немецкий тсс хостер) твой впс тоже за нат пихает, с пробросом всех портов с белого айпишника

                тока пидору не говорите, а то произойдет деление на ноль
                Ответить
                • у меня облако на ростелекоме, и там тоже самое

                  мой IP там 192.168.0.2, а снаружи все нормально)
                  так часто делают

                  но проблема в том, что через такой нат (destination nat, DNAT) проходят только UDP и TCP, а например натить GRE он не умеет, и потому PPTP VPN мне там не поднять)
                  Ответить
                  • > GRE
                    Нинужно, ибо говно с хуёвой пробиваемостью. У меня, к примеру, мтс грешные пакеты не пропустил. Пришлось переключать инет на мегафоновскую симку.
                    Ответить
                    • однако PPTP без него не поднять:)

                      На самом деле PPTP конечно тоже не нужен
                      Нужен L2TP/IPSec, но настройка оного куда более сложна, ибо надо настраивать как IKE для IPSec, так и L2TP потом.

                      Зато все скурнее и ходит через обычные TCP порты (правда нужно 2 порта: для IKE и L2TP).

                      Еще хорош OpenVPN, но его клиент не встроен в популярные ОС (а pptp и l2tp встроены)
                      Ответить
                      • > L2TP потом
                        Х.з., если честно. Я L2TP не юзал, только голый IPSec для андроида поднимал.
                        Ответить
                        • IPSec хорош, и L2TP/IPSec это примерно 5% того, что умеет IPSec.

                          но IPSec не обеспечивает маршрутизацию.

                          L2TP создает тебе виртуальный интерфейс, и через него удобно ходить в локалку. А IPSec может просто либо подписывать башку пакета (AH) либо шифровать контент (ESP) либо и то и другое.

                          В теории можно выебнуца и настроить маршрутизатор так, чтобы он пакеты с IPSec пускал внутрь, но как-то сложно.

                          Наверняка дорогие цыски так могут.

                          Кроме того L2TP имеет очень простую авторизацию, и можно RADIUS прикрутить и считать сколько времени человек провел приконнеченым итд.
                          Ответить
                          • > как-то сложно
                            Ну х.з., я тогда на линухе довольно быстро настроил. Дырка для IPSec портов в фаерволе, харон для IKE да маскарад под айпишник VPS'ки. Вроде и всё. Цель была - сделать свой уютный VPN для андроида, чтобы юзать инет из всяких небезопасных мест и заодно ложить хуй на роскомпозоры.

                            Насколько такой конфиг безопасен для боевых применений - х.з.
                            Ответить
                            • >>харон
                              racoon же, не?

                              Я на зюхельной железке как-то настраивал, а клиент у меня был на винде
                              Там очень круто настраивается политика IpSec. Например: "включать IPSec только для пакетов на такой-то IP". Хотя она и в линуксе такая же точно
                              Ответить
                      • когда приспичит, то скачают и клиент

                        у нас на работе админ поднял цисковский эниконнект
                        говорит, не в каждой гостинице за рубежом открыты другие порты и протоколы, кроме 80 и 443, приходится скачивать и настраивать (и два разных подключения одновременно не сделать при этом), и вообще бесит этот кусок говна, но все терпят

                        в цоды заказчики частенько дают именно опенвпн, ну и да, циску тоже иногда

                        так что не так страшен этот опенвпн, ебли чуток побольше, это да
                        Ответить
                        • > не так страшен этот опенвпн
                          Ой, да там конфиг закинуть, да ярлычок на рабочий стол вынести... Вот и вся настройка. Тем более сервер вполне может пушить айпишники и т.п. на клиента, так что в конфиге считай одна аутентификация... По-моему все эти штатные PPTP даже геморройней настраивать - больше кликов мышкой.
                          Ответить
                          • «Штатные» PPTP и L2TP встроены в некоторые дешёвые маршрутизаторы, поэтому они востребованы.
                            Ответить
                      • PPTP - это бырявый мелкомягкий впн, который еще в 97-98 обоссали?
                        Ответить
                        • что такое "бырявый"?
                          и что значит "обоссали"?

                          Используй пожалуйста технические термины, а не термины из твоих с Шамилем ролевых игр
                          Ответить
                    • > У меня, к примеру, мтс грешные пакеты не пропустил.

                      Грешные магистры! Дырку над ними в небе!
                      Ответить
                • И нахуя они это делают? АЛсо
                  >с пробросом всех портов
                  Пробрось их из-за провайдерского ната, пидараха.
                  Ответить
                  • снова пердишь в лужу, евроукр?
                    что такое по твоему проброс портов?
                    перенаправление на другой адрес
                    серверу 172.31.1.100 доступен любой другой белый адрес, исходящие порты не режутся
                    в чем проблема?
                    Ответить
                    • >И нахуя они это делают?

                      Русня, ты что не знаешь что такое провайдерский нат? Или в маааскву такого не завезли? И про домовые сети не слышал?
                      Ответить
          • Попизди мне тут, чертила. Слышал я ваши вопли в середине нулевых.
            Ответить
  • А у того же блядского mysql есть INET_NTOA и INET_ATON. Кстати, IPv6 вореция вариация тоже есть.
    Ответить
    • А в няшном постгресе есть специальные типы для сетевых адресов.
      Ответить
        • Там можно всякие 192.168.0.1/16 хранить, ну и IPv6 конечно же.
          Ответить
          • а потом делать выборки всех сетей, в коие входит ип?
            Ответить
            • Ну как вариант (чтобы какие-то правила к нему применить, например забанить). Или наоборот - искать айпишники, попадающие в подсеть.
              Ответить
  • Фишка в том что int32 преобразовали в int64 знак при этом сохранился, а затем у int64 отобрали знак и на его основе создали ipaddress, потом вообще какое-то мракобесие устроили и получили некий int64 который должен равняться исходному int32
    Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8