Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Полностью ещё смешнее:
>>> Я если что-то делаю, то либо код вообще не работает, то если напишу в чат какую-либо цифру, то срабатывает без проверки на ранее нажатую кнопку и получается вот такой баг.
Ну не знаю, не знаю. В 14 лет вроде бы дети уже должны уметь говорить и больмень внятно выражать свои мысли. А тут вореции какие-то.
Вообще, кстати, я довольно часто натыкаюсь на абсолютно безграмотные тексты вроде бы взрослых и адекватных людей. И ладно бы там какое-нибудь жы-шы было, так ведь нет — они просто пишут слабосвязные вореции! Пресловутая слетевшая шляпа нервно курит в сторонке по сравнению с перлами, которые выдают эти люди во всяческих соцсетях. Не понимаю.
"Я если что-то делаю, то либо код вообще не работает,
либо (если напишу в чат какую-либо цифру) срабатывает без проверки на ранее нажатую кнопку, и получается вот такой баг."
Просто он запутался в таком длинном предложении. Умение строить такие конструкции появляется у тех, кто много читает. Вероятно, ему-то как раз читать не за чем:)
Вообще говоря начинать с написания бота как-то не правильно: слишком много движущихся частей. Начинать надо с игры "угадай число" и змейки.
А про сложность языка у взрослых я согласен: достаточно посетить ответы@mail.ru
Платон Каратаев ничего не знал наизусть, кроме своей молитвы. Когда он говорил свои речи, он, начиная их, казалось, не знал, чем он их кончит.
Когда Пьер, иногда пораженный смыслом его речи, просил повторить сказанное, Платон не мог вспомнить того, что он сказал минуту тому назад, — так же, как он никак не мог словами сказать Пьеру свою любимую песню. Там было: «родимая, березанька и тошненько мне», но на словах не выходило никакого смысла. Он не понимал и не мог понять значения слов, отдельно взятых из речи. Каждое слово его и каждое действие было проявлением неизвестной ему деятельности, которая была его жизнь. Но жизнь его, как он сам смотрел на нее, не имела смысла как отдельная жизнь. Она имела смысл только как частица целого, которое он постоянно чувствовал. Его слова и действия выливались из него так же равномерно, необходимо и непосредственно, как запах отделяется от цветка. Он не мог понять ни цены, ни значения отдельно взятого действия или слова.
Древний человек не знал как устроен мир, и всему придумывал приметы. Если увидишь во сне говно -- то это к деньгам. А если птица влетит в окно, то обязательно кто-то умрет.
ПХП программист не знал как устроены кодировки, и потому придумывал приметы. Если сервер апач2, то кодировки будут работать более-ли-менее правильно, а если nginx -- то что-то где-то может и отвалиться.
ЗАКАЗ ПРИДЁТ В ТЕЧЕНИИ 24 ЧАСОВ
ВАША ЛОКАЦИЯ ЗАПИСАНА
НЕ ПОКИДАЙТЕ ДОМ ДО ПРNБЫТИЯ ПОСЫЛКИ 97 16 32
НЕ ОТКbbВАЙТЕ ДВЕРЬ, ЕСЛИ НЕ УСLЫШАЛИ ПРОВЕРОЧНЫЙ -- ПРОСТУК ПОРТА
В СЛУЧАЕ -- В
СЛУЧАЕ ANXIETY ВЫДЕРНУТЬ ЧЕКУ
> > include all our build dependencies
> как я написал выше - форма шизофрении, возомнили себя java-разработчиками, которым нужен отдельный build, сборки
> бинарных зависимостей на одном jre, а запускать будем на другом;
> 2. Чтобы поставить vendors, нужны права записи php в контейнере в vendors/, и открырый исходящий трафик. А зачем они процессам, которые обрабатывают только входящий трафик?
Справедливости ради, это вполне осуществимый кейс, достаточно сделать что-то вроде «iptables -A OUTPUT -p tcp -m state --state NEW -j REJECT». Хотя, разумеется, очень сомнительно, что обсуждаемая обезьяна такие сложные слова вообще слышала.
Я так понял, что Fike имел в виду ситуацию, когда вместе с блоком всего исходящего трафика блочатся и все ответы на входящий трафик, что приводит к полному отсутствию сети.
При помощи же «--state NEW» действительно можно отрубить только исходящий трафик, инициированный процессами на локальной машине. Для «UDP», кстати, тоже работает, если включён «conntrack».
Там какая-то говноэвристика типа если я открыл порт FOO и послал тебе udp пакет, то ответный с твоего айпи в порт FOO считается частью того же соединения?
Что-то типа того, да.
«Conntrack» — специальный модуль, который, как видно из названия, трекает все сетевые соединения. Для «UDP» параметром соединения считается сочетание айпишников и входящего-исходящего портов. Первый посланный/принятый пакет — новое соединение, ответ на него — соединение установлено. Потом, если за net.netfilter.nf_conntrack_udp_timeout секунд не было новых пакетов в этом соединении — оно удаляется.
Вот кстати живой пруф тот, что айпитейблс -- дерьмо.
Единственное упоминание conntrack в man iptables знаешь какое?
Таблица raw called before ip_conntrack.
Проверил консольный ман, там почему-то вообще списка модулей нет. В веб-версии же всё есть https://linux.die.net/man/8/iptables, раздел «conntrack»:
--ctstate state
Where state is a comma separated list of the connection states to match. Possible states are INVALID
meaning that the packet is associated with no known connection, ESTABLISHED meaning that the
packet is associated with a connection which has seen packets in both directions, NEW meaning that
the packet has started a new connection, or otherwise associated with a connection which has not
seen packets in both directions, and RELATED meaning that the packet is starting a new connection,
but is associated with an existing connection, such as an FTP data transfer, or an ICMP error. SNAT A
virtual state, matching if the original source address differs from the reply destination. DNAT A virtual
state, matching if the original destination differs from the reply source.
Сравним с опенбзд. Мало того, что параметры таймаута задаются прямо в правилах (которые, кстати, читаются из .conf файла прямо утилитой без всяких шеллкостылей), так еще и все опции описаны.
А еще ipset (для таблиц) и tc для шейпинга.
А еще скоро будет https://wiki.debian.org/nftables
И не забудьте про нашлепки вроде firewalld и ufw!
А pf читается сверху до низу в один поток, и там все понятно. А если нужно програмно управлять списками адресов, то есть и API (как там у netfilter с api?), а для пользователя используется та же самая утилита (и для шейпинга тоже):)
Ладно, это сильный оффтоп:) У меня просто подгорает переодически от того, что линукс это хаотично развизвающийся паукан, такой PHP от мира клонов уникса.
> iptables-architecture_Q640.jpg
Для большинства юзкейсов достаточно запомнить «PREROUTING -> INPUT -> [локальная машина] -> OUTPUT -> POSTROUTING» и «raw -> mangle -> nat -> filter», с достаточной точностью это аппроксимирует указанную табличку. В принципе, для большинства-большинства юзкейсов вообще достаточно помнить только «-A INPUT», благо «pf», насколько я знаю, только такой функционал и предоставляет.
С другой стороны, все эти таблицы сделаны не для гыгыканья, а со вполне определёнными целями, и позволяют они крайне тонко рулить любым трафиком.
Raw — предварительная обработка и выкидывание ненужных пакетов с максимально возможным пирфомансом.
Mangle — изменение пакетов. Тут можно менять TTL, заголовки и вообще творить питушню.
Nat — NAT, роутинг.
Filter — собственно, фильтрация трафика на основании охулиарда критериев.
С цепочками всё ещё проще:
PREROUTING — пакеты, ещё не прошедшие маршрутизацию. Очень удобно: можно спокойно рулить транзитным трафиком как родным.
INPUT — собственно, пришедшие на локальный процесс пакеты.
OUTPUT — вышедшие из локального процесса пакеты.
FORWARD — пакеты, которые хост решил отфорвардить кому-нибудь другому.
POSTROUTING — пакеты, которые идут с нашего хоста (и наши, и отфорварженные).
Очень гибкая и не лишённая некоторого изящества система, позволяющая макисмально гибко управлять любым трафиком.
Кстати, а что у «pf» заместно «ipset» используется?
> Ладно, это сильный оффтоп Ой, будто всем на это не пофиг. Почему бы и не пообсуждать интересную тему.
Кроме того, управлять правилами тоже можно програмно. Это используют прокси (например, для ftp) которые снифают траффик, и открывают нужные порты.
Конечно, прокси это юзерлендовские (в отличие от прыщей) но зато, например, написать тулу, которая рулит списками адресов и правил прямо через ioctl можно гуляюче.
>такой функционал не предоставляет
какой -- такой? динамическое добавление правил?
> какой -- такой? динамическое добавление правил?
Нет, возможность явно задать, когда будет применено правило. Например, до принятия решения о роутинге, или до вообще любой обработки ядром.
Кстати, зайцени: https://zapier.com/engineering/iptables-replication/.
Чуваки взяли да запилили равномерно распределённую репликацию трафика на три хоста при помощи четырёх простых правил (причём -m state ещё и лишний).
web_servers = "{ 10.0.0.10, 10.0.0.11, 10.0.0.13 }"
match in on egress proto tcp to port 80 rdr-to $web_servers \
round-robin sticky-address
Кстати, а что делать, если у тебя два роутера, и ты очешь, чтобы второй включался, если первый помер?
Конечно, у сиськи есть прот, но сиська дорогая. А что же есть у пуффи? https://www.openbsd.org/faq/pf/carp.html
На самом деле Тео не только помешался на безопасности, но еще и на сетях: он у себя в канадской глуши поддерживает точку обмена траффиком, так что всё, что связано с сетями, в опенбзд выдрачено до уровня блеска.
В прыщах же сетями активно занимается чувак, который iproute и netlink. Из ра-шки кстати, его зовут Кузнецов. Торвальдсу сети менее интересны
> Угадай, на какие веб-сервера пойдет траффик
Это редирект. А надо «tee» — оригинальный трафик пойдёт куда он там шёл, а его копии пойдут на другие сервера. В статье они так безболезненно заменили «Graylog» кластеры: некоторое время события логгировались на обоих кластерах, а потом старый просто отключили и забыли.
>>> We ruled out option 1 [Let the logging client send every message to both clusters] since that added extra overhead and complexity to the logging client and we wanted to do that only as a last resort.
>>> Curious why we've configured Graylog to use UDP instead of TCP? We send nearly 10K messages every second to Graylog, and UDP scales much better for us. With TCP, we would have to worry about slow connections, timeouts, and back-pressure which could impact application performance.
Боюсь, обеспечить 10к записей на диск в секунду будет несколько… проблематично. HDD не потянет, а SSD придёт пизда.
1) там за грейлогом кластер эластика, все 10к записей не на один инстанс идут
2) надо еще блядь найти тех, ктов 2020 сидит на хдд кроме совсем уж больших и медленных данных
3) то есть через udp записывать норм, а через tcp ровно столько же низя?
Допустим, я получаю пакет с данными, и должен передать его копии десяти разным серверам.
Если это будет udp, я просто скопирую пакет (сменив ему DST) и потеку. Это супер простая операция.
Если же это будет TCP, то мне нужно будет собрать новы паткет (ведь у меня будут другие номера сегментов как минимум) а это более тяжелая операция, требующая от меня понимания транспортного (четвертого) уровня. В случае UDP же я обойдуся третьим (сетевым). Такие штуки могут делать некоторые железки, не удивлюсь даже если вообще через азики, а не софтварно.
Кроме того, TCP стейтфул: мне придется держать о каждом соединении стейт-машину (про синкуки слышал же?)).
И ласт, бат но лист: я могу перейти на мультикаст, и добавлять слухателей вообще не трогая остальное оборудование: достаточно кинуть в мультикаст домен пакет, и все, на этот адрес подписавшиеся, автоматически его получат. Мультикаст можно стримать и в другие домены (гугал IGMP и PIM), так работает телевидение например
«TCP» — кривая, тормозная, оверинжиниренная питушня, которую уже лет сорок, с момента создания, постоянно патчат.
В «Google» давно поняли, что «TCP» проще выкинуть на помойку, чем пытаться пофиксить всю его анскилльность, и запилили «QUIC», работающий поверх «UDP». Именно поэтому я за «Google».
«UDP» прост, интуитивно-понятен и очень хорошо соответствует событийной модели: мы берём сообщение, упаковываем его в датаграмму и пересылаем получателю. Получатель принимает датаграмму, распаковывает сообщение и течёт. А вот «TCP» на таких задачах сосёт, потому что у него нет никаких «датаграмм», TCP-соединение — это просто поток байт.
Зато тисипи позволяет питуху-программисту срать в канал, читать оттудава ответ, и не думать ни о чем*
* в теории. На практике у тисипи есть стопицот ручек-параметров, которые если не покрутить, то почти наверняка соснеш при высокой нагрузке, необычном bdp итд.
NAT вынужден понимать протокол четвертого уровня, иначе куда он направит пришедший пакет?
в udp и tcp можно привязаться к порту, это умеют многие из коробки. А поддержку GRE или еще кого-нито надо было включать отдельно (в моем децтве -- пересобирая прыщеядро, лол)
Были случаи, когда провайдеры детектировали и резали торренты. На жалобы отвечали, что торрентами пользуются только пираты, честным пользователям они ни к чему.
Были случаи, когда опсосы резали протоколы передачи голоса (например, мессенджеры с функцией аудиозвонков), чтобы заставить абонентов делать звонки через сотовую сеть.
Вообще конечно за такое надо пиздить: если у меня внешний адрес, то почему их вообще ебет что у меня на четвертом уровне? Маршрутизируйте мой IP, и идите нахуй.
Хочу -- вообще свой кастомный прот запущу поверх, кого это ебсти должно?
Другой вопрос, что обычно в провайдере есть от нуля до одного человека, с которым можно обсудить такие вещи. Инженеры технической поддержки советуют обновить антивирус
Была, кстати, история про docsis.
У него много мелких канальчиков, а у модема веб морда, где можно для каждого канала увидеть частоту, SNR, и количество ошибок.
И вот ночью просыпался Ктулху, на нескольких каналах падал SNR, росло число ошибок, и скорость падала до нескольких мегабит, эффективно возвращая меня в теплый ламповый 2007-й.
Я долго рассказывал суппортерше про падение SNR по ночам, называл номера каналов и их частоту, просил проверить со стороны их оборудования (они же тоже самое видеть должны), а она мне такая: "а попробуйте подключить компьютер напрямую проводом, а не по wifi".
Юзай принцип айкидо - не спорь с ними, делай или имитируй всё что они просят сделать. Быстрее дойдут до конца алгоритма - быстрее переключат на чуваков которые шарят.
Подтверждаю. У первой линии есть специальные скрипты на все случаи жизни: проверить настройки подключения, перезагрузить роутер, подключиться напрямую к компу и прочая питушня. Без прохождения скрипта они либо вообще не переключают, либо только когда клиент совсем уж упёртый попадётся (но последнее не точно). В принципе, их можно рассматривать как эдакий биологический автомат, аналог того, который в самом начале бубнит про «если хотите чтобы вам отсосали — нажмите один».
Как раз неделю назад, кстати, звонил в ТП саппорта, скрипт прошёл где-то за минуту (в основном из-за того, что заранее кабель в комп воткнул).
А перепрошивать я его перепрошивал за несколько лет до. Было очень интересно искать нужную версию прошивки, которая оказалась спрятана где-то в глубинах файлопомойки асуса
там еще и DNS в HTTPS запихнули, но объяснить, почему просто не завернуть протокол в TLS, а гонять его через протокол для креативов и порно, никто не может
> то есть через udp записывать норм, а через tcp ровно столько же низя?
Да. Потому что TCP — потоковый протокол, он хуёво работает с независимыми сообщениями. В примитивной реализации на каждое из 10к сообщений надо будет открыть соединение, передать данные, закрыть соединение — и в итоге получить эдак 50к PPS и дикий оверхед на обработку этих соединений. Чтобы такой хуиты не было — надо из говна и палок делать буферизацию, чтобы по одному соединению передавалось эдак по сотне сообщений, с соответствующими задержками. В итоге времени, сил и ресурсов на это дерьмо уйдёт столько, что проще взять простой как топор UDP и забить на сотые доли процента потерь (судя по адресам — они в локальной сети сидят).
А если их не закрывать — получаем крайне хуёво скалирующееся говно (не говоря уже о том, что реализовывать это будет тем ещё геморроем). Для UDP нет особой разницы, сколько клиентов шлют сообщения — хоть 100, хоть 100к, всё упирается в количество этих самых сообщений. А для TCP с постоянно открытым соединением разница весьма существенна: поддерживать большое количество открытых соединений — нетривиальная задача.
Фу, скилл-анскилл кокококой-то. Мало того, что пакеты будут летать из кернелмода в юзермод и обратно, так ещё и целого демона надо писать и запускать для элементарной задачи.
Зато в демоне ты можешь фильтровать пакеты как угодно, хоть по цвету глаз. А вот запускать какие-то левые выражения (пусть и не тюринг полные) в кернел-спейсе это немного стрёмно.
Впрочем, опеновцы всегда говрили, что безопасность важнее перформанса. Да и будем честны: есть реальный пример, когда тебе нужен был этот модуль?
зы: нат это правда был отсос, но в ту пору (это была четвертая фря, год 2001-й) за натом сидело три калеки
> Да и будем честны: есть реальный пример, когда тебе нужен был этот модуль?
Разумеется. В своё время я знатно попердолился с написанием фаерволла для игорей на движке «Quake3». Реальный пример:
Ну ладно, признаюсь по секрету, что в том фаерволле у меня таки был эрзац-демон, отвечавший за детект различных типов атак и выполнение нужных действий. В частности, он дёргал пачку скриптов вида «attack_name_start.sh/attack_name_stop.sh», в которых переключались некоторые правила вызовом iptables. Отсутствие API сосёт очень сильно.
а в бзд у тебя был бы демон (или скрипт) который добавлял бы правила в якоря или в таблицы через ioctl (разумеется, есть обертки для перла) и всё было бы хорошо.
Вообще что будет, если зациклить эту машину в иптеблсах? весь стек ляжет же
Пароль - это security by obscurity. Вся система держится только на том, что от питушков я скрываю свой пароль.
А port-knocking - это же дополнительный 1x-битный пароль.
Ну можно и 256 настучать. Но это всё равно хуйня ибо состояние глобальное. Либо ты постучался либо нет. А в том же ssh пароль разблокирует одну конкретную сессию, в которой ты его вбил. Ну и подвержено атаке повтором. Не будешь же ты challenge-response на почёсываниях портов друг другу пилить...
>Пароль - это security by obscurity.
Конечно, и ключ тоже. И даже когда я переношу ssh на другой порт это тоже самое.
Важно сколько времени тебе понадобится чтобы это взломать.
Порт нокинг весьма сомнительная вещь сама по себе, хотя паранои лишней не бывает. Я бы предпочел такой функцинонал видеть уже готовым демоном (или даже частью ядра) а не такими вот правилами и шелл-скриптами.
> Порт нокинг весьма сомнительная вещь сама по себе
Как минимум он полностью закрывает проблему автоматического скана. И если для мелких ресурсов достаточно просто перенести порт SSH куда-нибудь подальше, то более крупные серверы рагулярно испытывают скан 1-65535 (даже на ГК недавно кто-то жаловался, что SSH нашли на 30к+).
Ну, убедил. Я в целом теперь не против нокинга, но против гавна и палочек, из которых он там сделан. Файрвольные правила я бы хотел видеть максимально тупыми и малобуквенными.
А вот это вот
-A TRAFFIC -m state --state NEW -m tcp -p tcp -m recent --name SSH2 --remove -j DROP
-A TRAFFIC -m state --state NEW -m tcp -p tcp --dport 9991 -m recent --rcheck --name SSH1 -j SSH-INPUTTWO
-A TRAFFIC -m state --state NEW -m tcp -p tcp -m recent --name SSH1 --remove -j DROP
-A TRAFFIC -m state --state NEW -m tcp -p tcp --dport 7777 -m recent --rcheck --name SSH0 -j SSH-INPUT
-A TRAFFIC -m state --state NEW -m tcp -p tcp -m recent --name SSH0 --remove -j DROP
смысл в чем: эта хуйня запускает ssh на каком-то порту, и ты туда логинишься. Но вместо шела видишь фигну. В этот момент оно добавляет правила в якорь.
А когда ты вылогиниваешься -- оно их удаляет.
Например, я зашел по SSH, и мне открылася веб-интерфейс или другой ssh (уже настояший) (моему айпишнику). Я закрыл ssh (закрыл окошко путти), и он закрылся обратно.
Хотя я вообще не очень понимаю, чем это лучше тунелинга
> Да, SSH очень высоконагруженный протокол.
При чём тут SSH? Эта штуковина, судя по ману, вообще весь трафик на интерфейсе слушает.
> Но вместо шела видишь фигну.
То есть чтобы зайти на реальный SSH — надо сначала успешно залогиниться на фейковом? Круто придумали.
Ещё это всё сверху посыпать порт-нокингом — и будет вообще заебись, ни одна сволочь не пройдёт![/color]
> вообще весь трафик на интерфейсе слушает.
фи, тоже мне проблема. Делаешь виртуальный интерфейс, вешаешь на него второй айпишник, настраиваешь на него демона, ходишь по второму IP [/color].
>То есть чтобы зайти на реальный SSH — надо сначала успешно залогиниться на фейковом?
Да. А еще советую развернуть керберос, и сначала логиниться в KDC (как на винде, лол). Будет еще секурнее.
This matches if the packet arrival time/date is within a given range. All options are optional, but are ANDed when specified. All times are interpreted as UTC by default.
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
Only match during the given time, which must be in ISO 8601 "T" notation. The possible time range is 1970-01-01T00:00:00 to 2038-01-19T04:17:07.
If --datestart or --datestop are not specified, it will default to 1970-01-01 and 2038-01-19, respectively.
--timestart hh:mm[:ss]
--timestop hh:mm[:ss]
Only match during the given daytime. The possible time range is 00:00:00 to 23:59:59. Leading zeroes are allowed (e.g. "06:03") and correctly interpreted as base-10.
[!] --monthdays day[,day...]
Only match on the given days of the month. Possible values are 1 to 31. Note that specifying 31 will of course not match on months which do not have a 31st day; the same goes for 28- or 29-day February.
[!] --weekdays day[,day...]
Only match on the given weekdays. Possible values are Mon, Tue, Wed, Thu, Fri, Sat, Sun, or values from 1 to 7, respectively. You may also use two-character variants (Mo, Tu, etc.).
--contiguous
When --timestop is smaller than --timestart value, match this as a single time period instead distinct intervals. See EXAMPLES.
--kerneltz
Use the kernel timezone instead of UTC to determine whether a packet meets the time regulations.
>This creates an LED-trigger that can then be attached to system indicator lights, to blink or illuminate them when certain packets pass through the system
лол, что я сейчас прочитал?
Это для коробок с прыщами чтоли?
А нету правила, чтобы запускать вентилятор из линолиума?
Это для гей-мерзких компьютеров с радужной подсветкой.
Если пошёл HTTP-трафик - включать огоньки на жёстком диске, если SSH - на процессоре, если скайповый - на памяти, если криптовалютный - на вентиляторах.
Согласование можно получить с понедельника по четверг с 10 до 16 часов кроме обеденного перерыва с 13 до 14 часов и за исключением санитарных дней и общегосударственных праздников.
Согласен. Что-то насканировать становится сложнее в разы. Правда при наличии fail2ban, ключа с ed25519 и отключения ауса по паролям, можно боль-мень спокойно срать
>>>> Гит придумали и сделали не для удобного деплоя, а для хранения и удобного манипулирования собственных сорцов.
>>> это ты прочел где-то или только что придумал? 🙂
И даёт ссылку на хелп «Гитхаба». Какая обезьяна )))
у него там охуенный мирок. он собирает докер-образы, но почему-то установка зависимостей у него происходит не на этапе сборки докер-образа, а когда контейнер уже запущен. он понимает, что что-то не так, но пока добрался только до гита.
Я с ослами на момент развёртывания был не знаком, поэтому просто запилил три юнита — «ngk» (парсеры), «ngk-front» (API) и «ngk-front-dev» (дев-API). Да, нейминг смешной.
В плюс идёт как возможность запуска нескольких версий API одновременно (при этом парсер только один), так и возможность перезапустить парсеры/API независимо друг от друга.
У меня нет ю-визга, у меня единорог. Он более анскильный и черезжопный, но мне лянотно переделываться. Алзо, по какой-то причине (я не разбирался, честно!) когда я игрался, то ювизги соснули у единорога по перформансу даже с фастцги (хотя это и контринтуитивно), может у меня кривые руки или прыщебляди соснули. Потом еще попробую
Х.з., uwsgi тоже та ещё хуйня. По доке без сторонних туториалов хрен раскуришь что да как... И терминология ёбнутая на голову - какие-то вассалы, мулы и прочие зерги. Так что может быть единорог не такой уж и черезжопный.
> пердолиться с кронами
Я, кстати, тоже их раньше боялся, а потом проникся и полюбил. Простое и эффективное решение, гораздо проще этих ваших «systemd».
https://phpclub.ru/talk/threads/Что-за-ошибка.86137/
>>> syntax error, unexpected '?' vendor/symfony/yaml/Parser.php in line 509.
>>> private function getNextEmbedBlock(int $indentation = null, bool $inSequence = false): ?string
>>> Что это за битая библиотека с кривым кодом?
% perl -v | grep ver
This is perl 5, version 22, subversion 2 (v5.22.2) built for x86_64-linux-thread-multi
% perl -e "use v5.22;"
% perl -e "use v5.23;"
Perl v5.23.0 required--this is only v5.22.2, stopped at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
https://phpclub.ru/talk/threads/fpdf.86105/
>>> Здравствуйте, необходимо подключить библиотеку fpdf, чтобы вывести содержание заказа из бд в pdf -
>>> Проблема в том, что на localhost подключается , на удаленном нет, как будто не видит / не правильный путь к библиотеке - как >>> правильно прописать путь к библиотеке? Или в чем причина почему может не подключаться?
>>> Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in docs/fpdf/fpdf.php on line 14
>>> В чем дело???????
perl 3 никогда не был скомпилирован под штеуд кмк
Под миникс скорее всего не было перла, прыщи взлетели в 1991-м, тогда же появилась четверка. Первые дистры появились где-то год-другой спустя
DOS_PERL.TXT
John Dallman
jgd@cix.compulink.co.uk
December 1994
Some general notes on programming with Perl under MS-DOS. They're
based on my experience with versions ports of Perl 3 and 4:
dds Didi Spenellis' 16-bit Perl 3.041
eva Eelco Van Asparen's 16-bit Perl 4.036
big Daryl Orzra's 32-bit Perl 4.036, aka BigPerl M03
This (or a leter version) is the one to get.
Ладно, может и был. Но я помню досовую кухню 90х, все писали на паскале, cях и ассемблере. Других языков почти не было (ну может еще бейсик), хуй знает, кто писал тогда на перле
>> In 1991, Programming Perl, known to many Perl programmers as the "Camel Book" because of its cover, was published and became the de facto reference for the language. At the same time, the Perl version number was bumped to 4, not to mark a major change in the language but to identify the version that was well documented by the book.
Получается, что четвёрка ничем не отличалась от тройки, только была лучше документирована?
Сейчас всё хуже. Многие сайты перешли на «HTTPS», а значит, на прокси-сервер отправляется не GET/POST, а CONNECT, и прокси-сервер не может воткнуть свой заголовок (например, X-Forwarded-For или Via). Чтобы узнать реальный пример IP-адреса, нужно связаться с владельцем прокси-сервера.
Главный багор в том, что многие пхп-макаки (в частности, авторы приведённого там «phpMyAdmin») безоговорочно доверяют всем эти X-Forwarded-For, X-Coming-From, Via и прочей питушне.
Макаки упускают простой факт: любой пользователь может послать любые несистемные (системные просто перезапишутся на сервере) заголовки с любыми значениями. Доверять тому, что написано в X-Forwarded-For, нельзя в принципе. А использовать значения из этих заголовков можно только для логгирования: мол, в XX:YY к нам подключился пользователь с IP = $REMOTE_ADDR, у него был заголовок X-Forwarded-For = $X_FORWARDED_FOR. Всё.
Подтверждаю. Пользователь может запустить какой-нибудь «squid» на своей машине, и он отправит X-Forwarded-For: 127.0.0.1. Тогда админ сайта вообще не узнает, откуда зашёл пользователь. А можно вообще послать «Робин-брось-таблицу».
1. Экранирование пароля: $password = htmlspecialchars($password);
2. Пароль открытым текстом.
3. Склейка SQL-запроса из опасных данных. htmlspecialchars НЕ заменяет апострофы.
4. Сравнение, основанное на неявном касте булина в строку: if ($result2=='TRUE')
5. unset для пустых параметров, чтобы потом интерпретатор высрал на страницу ЕГГОГ о том, что переменная не установлена.
Пхп-обезьяна пытается пародировать современные парадигмы программирования, но что-то идёт не так: https://phpclub.ru/talk/threads/Расширение-класса-внешними-методами-и-переменными.86499/
>>> У меня есть базовый класс Main. И работать буду с ним. Но есть возможность как-то методы засунуть в него из класса MainEx. Что бы он как бы расширил его. Трейты мне подходят, т.к. классов MainEx может быть 1, 2 или 3. И не предполагается что будет меняться класс Main.
Какой ООП )))
>Я даже иногда начинаю сомневаться нужен ли вообще PHP.
ничоси
>Вурдалак, а что лучше?
> Typescript? Это ж только compile time, от прямых вызовов, аналогично в phpdoc пишется.
> В Golang те же геттеры.
> В Java столько приведений скаляров напишешь, что никакие readonly не помо
скорее гугл, чем чувак
Это мем
>>> Я если что-то делаю, то либо код вообще не работает, то если напишу в чат какую-либо цифру, то срабатывает без проверки на ранее нажатую кнопку и получается вот такой баг.
Вообще, кстати, я довольно часто натыкаюсь на абсолютно безграмотные тексты вроде бы взрослых и адекватных людей. И ладно бы там какое-нибудь жы-шы было, так ведь нет — они просто пишут слабосвязные вореции! Пресловутая слетевшая шляпа нервно курит в сторонке по сравнению с перлами, которые выдают эти люди во всяческих соцсетях. Не понимаю.
"Я если что-то делаю, то либо код вообще не работает,
либо (если напишу в чат какую-либо цифру) срабатывает без проверки на ранее нажатую кнопку, и получается вот такой баг."
Просто он запутался в таком длинном предложении. Умение строить такие конструкции появляется у тех, кто много читает. Вероятно, ему-то как раз читать не за чем:)
Вообще говоря начинать с написания бота как-то не правильно: слишком много движущихся частей. Начинать надо с игры "угадай число" и змейки.
А про сложность языка у взрослых я согласен: достаточно посетить ответы@mail.ru
https://otvet.mail.ru/question/218910605
>Свекла вареного.
Когда Пьер, иногда пораженный смыслом его речи, просил повторить сказанное, Платон не мог вспомнить того, что он сказал минуту тому назад, — так же, как он никак не мог словами сказать Пьеру свою любимую песню. Там было: «родимая, березанька и тошненько мне», но на словах не выходило никакого смысла. Он не понимал и не мог понять значения слов, отдельно взятых из речи. Каждое слово его и каждое действие было проявлением неизвестной ему деятельности, которая была его жизнь. Но жизнь его, как он сам смотрел на нее, не имела смысла как отдельная жизнь. Она имела смысл только как частица целого, которое он постоянно чувствовал. Его слова и действия выливались из него так же равномерно, необходимо и непосредственно, как запах отделяется от цветка. Он не мог понять ни цены, ни значения отдельно взятого действия или слова.
сервак лучше всего апач 2
ПХП программист не знал как устроены кодировки, и потому придумывал приметы. Если сервер апач2, то кодировки будут работать более-ли-менее правильно, а если nginx -- то что-то где-то может и отвалиться.
2020 г: а что такое кодовая страница?
Интересно, это на данный момент рекорд или есть более живучие темы.
ВАША ЛОКАЦИЯ ЗАПИСАНА
НЕ ПОКИДАЙТЕ ДОМ ДО ПРNБЫТИЯ ПОСЫЛКИ 97 16 32
НЕ ОТКbbВАЙТЕ ДВЕРЬ, ЕСЛИ НЕ УСLЫШАЛИ ПРОВЕРОЧНЫЙ -- ПРОСТУК ПОРТА
В СЛУЧАЕ -- В
СЛУЧАЕ ANXIETY ВЫДЕРНУТЬ ЧЕКУ
> > include all our build dependencies
> как я написал выше - форма шизофрении, возомнили себя java-разработчиками, которым нужен отдельный build, сборки
> бинарных зависимостей на одном jre, а запускать будем на другом;
смотрите, макака еще и на джаву прыгает
> это ты прочел где-то или только что придумал?
а он хорош
действительно, зачем обратно tcp-пакеты посылать
При помощи же «--state NEW» действительно можно отрубить только исходящий трафик, инициированный процессами на локальной машине. Для «UDP», кстати, тоже работает, если включён «conntrack».
«Conntrack» — специальный модуль, который, как видно из названия, трекает все сетевые соединения. Для «UDP» параметром соединения считается сочетание айпишников и входящего-исходящего портов. Первый посланный/принятый пакет — новое соединение, ответ на него — соединение установлено. Потом, если за net.netfilter.nf_conntrack_udp_timeout секунд не было новых пакетов в этом соединении — оно удаляется.
https://www.frozentux.net/iptables-tutorial/chunkyhtml/x1555.html
Ожидаемо просто табличка и таймаут.
Вот кстати живой пруф тот, что айпитейблс -- дерьмо.
Единственное упоминание conntrack в man iptables знаешь какое?
Таблица raw called before ip_conntrack.
Проверил консольный ман, там почему-то вообще списка модулей нет. В веб-версии же всё есть https://linux.die.net/man/8/iptables, раздел «conntrack»:
Но может она есть в ядре?
https://www.kernel.org/doc/Documentation/networking/nf_conntrack-sysctl.txt
[quote]
nf_conntrack_udp_timeout - INTEGER (seconds)
default 30
[/quote]
Какая лапидарность :))
Сравним с опенбзд. Мало того, что параметры таймаута задаются прямо в правилах (которые, кстати, читаются из .conf файла прямо утилитой без всяких шеллкостылей), так еще и все опции описаны.
https://man.openbsd.org/pf.conf#STATEFUL_FILTERING
https://man.openbsd.org/pf.conf#udp.first
Но я всё равно против портянок вида «pass out inet proto icmp all icmp-type echoreq». Как их вообще запомнить можно?
или 100500 модулей.
А еще ipset (для таблиц) и tc для шейпинга.
А еще скоро будет
https://wiki.debian.org/nftables
И не забудьте про нашлепки вроде firewalld и ufw!
А pf читается сверху до низу в один поток, и там все понятно. А если нужно програмно управлять списками адресов, то есть и API (как там у netfilter с api?), а для пользователя используется та же самая утилита (и для шейпинга тоже):)
Ладно, это сильный оффтоп:) У меня просто подгорает переодически от того, что линукс это хаотично развизвающийся паукан, такой PHP от мира клонов уникса.
Для большинства юзкейсов достаточно запомнить «PREROUTING -> INPUT -> [локальная машина] -> OUTPUT -> POSTROUTING» и «raw -> mangle -> nat -> filter», с достаточной точностью это аппроксимирует указанную табличку. В принципе, для большинства-большинства юзкейсов вообще достаточно помнить только «-A INPUT», благо «pf», насколько я знаю, только такой функционал и предоставляет.
С другой стороны, все эти таблицы сделаны не для гыгыканья, а со вполне определёнными целями, и позволяют они крайне тонко рулить любым трафиком.
Raw — предварительная обработка и выкидывание ненужных пакетов с максимально возможным пирфомансом.
Mangle — изменение пакетов. Тут можно менять TTL, заголовки и вообще творить питушню.
Nat — NAT, роутинг.
Filter — собственно, фильтрация трафика на основании охулиарда критериев.
С цепочками всё ещё проще:
PREROUTING — пакеты, ещё не прошедшие маршрутизацию. Очень удобно: можно спокойно рулить транзитным трафиком как родным.
INPUT — собственно, пришедшие на локальный процесс пакеты.
OUTPUT — вышедшие из локального процесса пакеты.
FORWARD — пакеты, которые хост решил отфорвардить кому-нибудь другому.
POSTROUTING — пакеты, которые идут с нашего хоста (и наши, и отфорварженные).
Очень гибкая и не лишённая некоторого изящества система, позволяющая макисмально гибко управлять любым трафиком.
Кстати, а что у «pf» заместно «ipset» используется?
> Ладно, это сильный оффтоп
Ой, будто всем на это не пофиг. Почему бы и не пообсуждать интересную тему.
Список адресов питухов в pf хранится в таболицах.
https://www.openbsd.org/faq/pf/tables.html
Добавлять можно програмно
https://man.openbsd.org/pf.4#DIOCRADDADDRS
А можно по админски
https://man.openbsd.org/pfctl#a
Кроме того, управлять правилами тоже можно програмно. Это используют прокси (например, для ftp) которые снифают траффик, и открывают нужные порты.
Конечно, прокси это юзерлендовские (в отличие от прыщей) но зато, например, написать тулу, которая рулит списками адресов и правил прямо через ioctl можно гуляюче.
>такой функционал не предоставляет
какой -- такой? динамическое добавление правил?
Предоставляет. Это называет якоря:
https://man.openbsd.org/pf.conf#ANCHORS
https://man.openbsd.org/pf.4#DIOCADDRULE
Нет, возможность явно задать, когда будет применено правило. Например, до принятия решения о роутинге, или до вообще любой обработки ядром.
Чуваки взяли да запилили равномерно распределённую репликацию трафика на три хоста при помощи четырёх простых правил (причём -m state ещё и лишний).
https://www.openbsd.org/faq/pf/pools.html
Угадай, на какие веб-сервера пойдет траффик
Кстати, а что делать, если у тебя два роутера, и ты очешь, чтобы второй включался, если первый помер?
Конечно, у сиськи есть прот, но сиська дорогая. А что же есть у пуффи?
https://www.openbsd.org/faq/pf/carp.html
На самом деле Тео не только помешался на безопасности, но еще и на сетях: он у себя в канадской глуши поддерживает точку обмена траффиком, так что всё, что связано с сетями, в опенбзд выдрачено до уровня блеска.
В прыщах же сетями активно занимается чувак, который iproute и netlink. Из ра-шки кстати, его зовут Кузнецов. Торвальдсу сети менее интересны
Это редирект. А надо «tee» — оригинальный трафик пойдёт куда он там шёл, а его копии пойдут на другие сервера. В статье они так безболезненно заменили «Graylog» кластеры: некоторое время события логгировались на обоих кластерах, а потом старый просто отключили и забыли.
пиздец, ебанутые что ли
нельзя было просто настроить агентов на посыл сообщений в два места?
Боюсь, обеспечить 10к записей на диск в секунду будет несколько… проблематично. HDD не потянет, а SSD придёт пизда.
Может, не будь он json, не было бы такой биды с 10к?
2) надо еще блядь найти тех, ктов 2020 сидит на хдд кроме совсем уж больших и медленных данных
3) то есть через udp записывать норм, а через tcp ровно столько же низя?
Допустим, я получаю пакет с данными, и должен передать его копии десяти разным серверам.
Если это будет udp, я просто скопирую пакет (сменив ему DST) и потеку. Это супер простая операция.
Если же это будет TCP, то мне нужно будет собрать новы паткет (ведь у меня будут другие номера сегментов как минимум) а это более тяжелая операция, требующая от меня понимания транспортного (четвертого) уровня. В случае UDP же я обойдуся третьим (сетевым). Такие штуки могут делать некоторые железки, не удивлюсь даже если вообще через азики, а не софтварно.
Кроме того, TCP стейтфул: мне придется держать о каждом соединении стейт-машину (про синкуки слышал же?)).
И ласт, бат но лист: я могу перейти на мультикаст, и добавлять слухателей вообще не трогая остальное оборудование: достаточно кинуть в мультикаст домен пакет, и все, на этот адрес подписавшиеся, автоматически его получат. Мультикаст можно стримать и в другие домены (гугал IGMP и PIM), так работает телевидение например
«TCP» — кривая, тормозная, оверинжиниренная питушня, которую уже лет сорок, с момента создания, постоянно патчат.
В «Google» давно поняли, что «TCP» проще выкинуть на помойку, чем пытаться пофиксить всю его анскилльность, и запилили «QUIC», работающий поверх «UDP». Именно поэтому я за «Google».
«UDP» прост, интуитивно-понятен и очень хорошо соответствует событийной модели: мы берём сообщение, упаковываем его в датаграмму и пересылаем получателю. Получатель принимает датаграмму, распаковывает сообщение и течёт. А вот «TCP» на таких задачах сосёт, потому что у него нет никаких «датаграмм», TCP-соединение — это просто поток байт.
* в теории. На практике у тисипи есть стопицот ручек-параметров, которые если не покрутить, то почти наверняка соснеш при высокой нагрузке, необычном bdp итд.
Есть GRE, есть описиваемые в соседней треде AH и ESP, можно вообще IP поверх IP запустить, какой бергент
Погугли, какой баркас бывает из-за того, что интернет-провайдеры с кривым NAT'ом не пропускают «GRE».
NAT вынужден понимать протокол четвертого уровня, иначе куда он направит пришедший пакет?
в udp и tcp можно привязаться к порту, это умеют многие из коробки. А поддержку GRE или еще кого-нито надо было включать отдельно (в моем децтве -- пересобирая прыщеядро, лол)
Кстати, на рассвете роскомпозора МТС мне резал ESP. Пришлось на другого опсоса уходить.
Надо составить табличку, у каких провайдеров что режется.
Были случаи, когда опсосы резали протоколы передачи голоса (например, мессенджеры с функцией аудиозвонков), чтобы заставить абонентов делать звонки через сотовую сеть.
Хочу -- вообще свой кастомный прот запущу поверх, кого это ебсти должно?
Другой вопрос, что обычно в провайдере есть от нуля до одного человека, с которым можно обсудить такие вещи. Инженеры технической поддержки советуют обновить антивирус
Если так, то они может и не виноваты. Как ты представляешь себе натанье ESP?
Нужен или приведенный мною выше RFC про NAT-T (умеют сильный лебедь и винда десятка, хз про мобилки) или я не знаю
У него много мелких канальчиков, а у модема веб морда, где можно для каждого канала увидеть частоту, SNR, и количество ошибок.
И вот ночью просыпался Ктулху, на нескольких каналах падал SNR, росло число ошибок, и скорость падала до нескольких мегабит, эффективно возвращая меня в теплый ламповый 2007-й.
Я долго рассказывал суппортерше про падение SNR по ночам, называл номера каналов и их частоту, просил проверить со стороны их оборудования (они же тоже самое видеть должны), а она мне такая: "а попробуйте подключить компьютер напрямую проводом, а не по wifi".
Сука-сука-сука, я так ничего и не добился.
«Техническая группа» ответила бы больше, но «первая линия» редко на них переключает.
Юзай принцип айкидо - не спорь с ними, делай или имитируй всё что они просят сделать. Быстрее дойдут до конца алгоритма - быстрее переключат на чуваков которые шарят.
Как раз неделю назад, кстати, звонил в ТП саппорта, скрипт прошёл где-то за минуту (в основном из-за того, что заранее кабель в комп воткнул).
Из недавних лулзов - звоню, говорю что роутер адрес получить не может, нихуя не работает. И мне... продиктовали адрес, маску и гейт!
В итоге 30% потерь на кабеле никуда не делись, но хоть как-то работало пока монтажники не приехали.
О_о. Они перепрошить его что ли предложили? Или он просто сам по себе уже дохлый был?
А перепрошивать я его перепрошивал за несколько лет до. Было очень интересно искать нужную версию прошивки, которая оказалась спрятана где-то в глубинах файлопомойки асуса
> возвращая в 2007-й
Привет, Сёма, есть новые темы для XP SP3?
Сёма в 2007 пешком под стол ходил.
И пробиться до них нереально. Разве что делать вид, что выполняешь все советы от первой линии поддержки пока они не сдадутся...
ВПНы часто могут соснуть у провайдера особливо с натом. PPTP может не ходить, например.
IKE пытается это как-то порешать, вообще IKE жутко умный
Проникнись
IKE уделывает NAT
https://tools.ietf.org/html/rfc3947
IKE проходит через маленькие MTU без фрагментации
https://tools.ietf.org/html/rfc7383
Впрочем, самое пробивное решение это OpenVPN: обычный TCP или UDP c TLS под капотом, рабоатет везде. Да еще и пуш маршрутов клиенту.
Но конечно серьзные железки кроме IPSec все равно ничо не умеют
Мне для телефона надо было. А там кроме ipsec без пердолинга ничего и не поднять.
IPSec есть везде (разве что с отсутствием IKEv2 можно остсосать на ОС времен Сёмы)
Да. Потому что TCP — потоковый протокол, он хуёво работает с независимыми сообщениями. В примитивной реализации на каждое из 10к сообщений надо будет открыть соединение, передать данные, закрыть соединение — и в итоге получить эдак 50к PPS и дикий оверхед на обработку этих соединений. Чтобы такой хуиты не было — надо из говна и палок делать буферизацию, чтобы по одному соединению передавалось эдак по сотне сообщений, с соответствующими задержками. В итоге времени, сил и ресурсов на это дерьмо уйдёт столько, что проще взять простой как топор UDP и забить на сотые доли процента потерь (судя по адресам — они в локальной сети сидят).
The dup-to option creates a duplicate of the packet and routes it like route-to. The original packet gets routed as it normally would.
Признайся, ты это хотел?
Последний, кстати, представляет из себя убер-хуёвину ебанутее круче рагулярок: http://www.stearns.org/doc/iptables-u32.current.html.
https://man.openbsd.org/pf.conf#divert-packet_port
Ты пишешь демона petuh, подключешь его к завороту через divert(4) (зацени уровень манула, даже пример есть)
https://man.openbsd.org/divert.4
и затем в pf просто дивертишь это всё питуху в юзерленд.
А питуз твой пусть пакет хоть регулярками парсит.
Да,это сосент по перфу с ядреным решением (u32 же в ядре?), но зато секурнее и гибче.
альзо, в моем детстве в freebsd так реализовывали нат: ядро нат не умело (а прыщи умели уже) и был демон natd. Какой багор
Впрочем, опеновцы всегда говрили, что безопасность важнее перформанса. Да и будем честны: есть реальный пример, когда тебе нужен был этот модуль?
зы: нат это правда был отсос, но в ту пору (это была четвертая фря, год 2001-й) за натом сидело три калеки
Разумеется. В своё время я знатно попердолился с написанием фаерволла для игорей на движке «Quake3». Реальный пример:
А так я за демона
Вообще что будет, если зациклить эту машину в иптеблсах? весь стек ляжет же
О, кстати, вот тут: https://sgros.blogspot.com/2011/09/implementing-turing-machine-using.html пишут, что айпические таблицы полны по Тьюрингу. Какой скилл )))
А вот тут на них реализовывают полноценный port-knocking: https://wiki.archlinux.org/index.php/Port_knocking#Port_knocking_with_iptable s_only.
Security by obscurity.
А port-knocking - это же дополнительный 1x-битный пароль.
В случае с тремя портами — таки 48-битный.
Ну можно и 256 настучать. Но это всё равно хуйня ибо состояние глобальное. Либо ты постучался либо нет. А в том же ssh пароль разблокирует одну конкретную сессию, в которой ты его вбил. Ну и подвержено атаке повтором. Не будешь же ты challenge-response на почёсываниях портов друг другу пилить...
Две циклоняши почёсывают друг дружке порты, смотреть без регистрации и СМС.
А вообще крутая идея: передавать данные постукиванием по портам. Примерно как «DNS-туннель», только хардкорнее.
646, 168, 509, 784, 692, 829, 320, 900, 176, 30, 332, 282, 334, 339, 225, 162, 842, 49, 649, 484
Конечно, и ключ тоже. И даже когда я переношу ssh на другой порт это тоже самое.
Важно сколько времени тебе понадобится чтобы это взломать.
Как минимум он полностью закрывает проблему автоматического скана. И если для мелких ресурсов достаточно просто перенести порт SSH куда-нибудь подальше, то более крупные серверы рагулярно испытывают скан 1-65535 (даже на ГК недавно кто-то жаловался, что SSH нашли на 30к+).
А в чём собственно проблема? Ну попробуют десяток тривиальных паролей да уйдут. Разве что от какого-нибудь zero day в ssh демоне спасёт.
твой сервер сразу скажет, что умеет только по pubkey, они и пойдут сразу нахуй
0day — да, вполне реальный кейс, особенно на фоне эпического «Heartbleed».
А вот это вот
пахнет чем-то вроде написания бизнес-логики на .bat файлах или вот этого вот
http://ant-contrib.sourceforge.net/tasks/tasks/if.html
у меня правила стейтлесс (ну кроме трекинга tcp конечно) и потому я могу проверить свой сервер nmapом от друга, и потечь
а тут я должен его проверять в разных состояниях
https://linux.die.net/man/1/knockd
Фу, тормоза.
Зырь лучше, что бздуны принесли
http://man.openbsd.org/authpf
смысл в чем: эта хуйня запускает ssh на каком-то порту, и ты туда логинишься. Но вместо шела видишь фигну. В этот момент оно добавляет правила в якорь.
А когда ты вылогиниваешься -- оно их удаляет.
Например, я зашел по SSH, и мне открылася веб-интерфейс или другой ssh (уже настояший) (моему айпишнику). Я закрыл ssh (закрыл окошко путти), и он закрылся обратно.
Хотя я вообще не очень понимаю, чем это лучше тунелинга
При чём тут SSH? Эта штуковина, судя по ману, вообще весь трафик на интерфейсе слушает.
> Но вместо шела видишь фигну.
То есть чтобы зайти на реальный SSH — надо сначала успешно залогиниться на фейковом? Круто придумали.
Ещё это всё сверху посыпать порт-нокингом — и будет вообще заебись, ни одна сволочь не пройдёт![/color]
фи, тоже мне проблема. Делаешь виртуальный интерфейс, вешаешь на него второй айпишник, настраиваешь на него демона, ходишь по второму IP [/color].
>То есть чтобы зайти на реальный SSH — надо сначала успешно залогиниться на фейковом?
Да. А еще советую развернуть керберос, и сначала логиниться в KDC (как на винде, лол). Будет еще секурнее.
https://habr.com/ru/news/t/488268/
-m weekday --weekday=wednesday
не?
а, в пизду всё!
-m python --script="..
http://ipset.netfilter.org/iptables-extensions.man.html
pf + anchor + шел скрипт + cron для включения/выключения правил будет в тысячу раз надежнее.
>kernel timezone
Лол, нахуй ядру таймзона-то?
Кроме шуток говорю: прыщам нужен "-m lua".
https://rayanfam.com/topics/packetscript-lua-kernel/
лол, что я сейчас прочитал?
Это для коробок с прыщами чтоли?
А нету правила, чтобы запускать вентилятор из линолиума?
Если пошёл HTTP-трафик - включать огоньки на жёстком диске, если SSH - на процессоре, если скайповый - на памяти, если криптовалютный - на вентиляторах.
Можно ещё на клаве подсвечивать события от разных портов.
Фу блядь, фу нахуй.
>>> это ты прочел где-то или только что придумал? 🙂
И даёт ссылку на хелп «Гитхаба». Какая обезьяна )))
> ставит зависимости в запущенном контейнере
Ну что мы там говорили про культ карго и самолётики из соломы...
чет не могу
кто-то его задел походу
https://phpclub.ru/talk/threads/vendors-%D0%B2-git.86150/post-768611
объявляет свойство и удивляется, что получает либо ошибку, что оно не того типа, либо его значение
замечательный человек
какой утка
логи пишет в сислог, в том же контейнере крутящийся?
>сейчас вместо крона лучше написать долгоживущий процесс со sleep
хм
До боли напоминает незабвенный #1301:
Ну а так это эпический багор, конечно. Прямо «В мире животных».
В плюс идёт как возможность запуска нескольких версий API одновременно (при этом парсер только один), так и возможность перезапустить парсеры/API независимо друг от друга.
Я, кстати, тоже их раньше боялся, а потом проникся и полюбил. Простое и эффективное решение, гораздо проще этих ваших «systemd».
>>> syntax error, unexpected '?' vendor/symfony/yaml/Parser.php in line 509.
>>> private function getNextEmbedBlock(int $indentation = null, bool $inSequence = false): ?string
>>> Что это за битая библиотека с кривым кодом?
Почему авторы другой скриптушни не осилили ничего подобного?
А попытки завести статупизацию в пых, разумеется, оче смешны.
>- откуда это вообще береться?
К нашей беседе о
* Python вышел из чата.
> Почему авторы другой скриптушни не осилили ничего подобного?
Сложна же. И потом — это ж «PHP», когда там что-то нормально делали?!
> А попытки завести статупизацию в пых, разумеется, оче смешны.
Подтверждаю. В «Python», кстати, статупизация тоже не очень-то хорошо себя чувствует.
Одна из многих причин, почему я за перл
>>> Только начала изучение PHP и JS.
>>> Сейчас смотрю API документацию для amoCRM.
>>> Для чего тогда в API документации указывают тип данных?
>>>> Вы вообще в курсе, что такое "тип данных" ?
>>> Обычно когда создают таблицы БД, для столбцов указывают тип данных.
А здесь мы можем наблюдать рождение новой особи пхп-макаки. Это так волнительно!
>>> Здравствуйте, необходимо подключить библиотеку fpdf, чтобы вывести содержание заказа из бд в pdf -
>>> Проблема в том, что на localhost подключается , на удаленном нет, как будто не видит / не правильный путь к библиотеке - как >>> правильно прописать путь к библиотеке? Или в чем причина почему может не подключаться?
>>> Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in docs/fpdf/fpdf.php on line 14
>>> В чем дело???????
>>> Php 4
Под миникс скорее всего не было перла, прыщи взлетели в 1991-м, тогда же появилась четверка. Первые дистры появились где-то год-другой спустя
Ладно, может и был. Но я помню досовую кухню 90х, все писали на паскале, cях и ассемблере. Других языков почти не было (ну может еще бейсик), хуй знает, кто писал тогда на перле
у меня был активный перл, тогда не было еще строуберри, и запустить перл по вин98 можно было только у них
у них еще был менежер пакетов ppm (под прыщи туда называлась cpan).
Получается, что четвёрка ничем не отличалась от тройки, только была лучше документирована?
Какой пхп админ поставил на шаред хостинге -- такой и есть! Они не джависты же, чтобы с докером ебаться, и не прыщеадмины, чтобы все самим настроить
Искромётный топик, особенно искромётны способы вычисления злобных хацкеров за прокси.
Что самое характерное, судя по бампу, за 16 лет пхпшники так и не научились узнавать реальный IP.
Хотя для HTTP-сайтов вопрос остался актуальным.
Макаки упускают простой факт: любой пользователь может послать любые несистемные (системные просто перезапишутся на сервере) заголовки с любыми значениями. Доверять тому, что написано в X-Forwarded-For, нельзя в принципе. А использовать значения из этих заголовков можно только для логгирования: мол, в XX:YY к нам подключился пользователь с IP = $REMOTE_ADDR, у него был заголовок X-Forwarded-For = $X_FORWARDED_FOR. Всё.
rЛAwEНbKA
прогнал тебе tracert, проверь
Идеальный код
2. Пароль открытым текстом.
3. Склейка SQL-запроса из опасных данных. htmlspecialchars НЕ заменяет апострофы.
4. Сравнение, основанное на неявном касте булина в строку: if ($result2=='TRUE')
5. unset для пустых параметров, чтобы потом интерпретатор высрал на страницу ЕГГОГ о том, что переменная не установлена.
https://phpclub.ru/talk/threads/Расширение-класса-внешними-методами-и-переменными.86499/
>>> У меня есть базовый класс Main. И работать буду с ним. Но есть возможность как-то методы засунуть в него из класса MainEx. Что бы он как бы расширил его. Трейты мне подходят, т.к. классов MainEx может быть 1, 2 или 3. И не предполагается что будет меняться класс Main.
Какой ООП )))
Аннотоация репеменной кобенаций 64 вореций этой информации
>>> когда я попробовал писать на java, приведения строк к числу меня задолбали довольно быстро
Какая пхп-макака )))
или
Уже все кавычки на одинарные заменили, пришло время для новых оптимизаций.
лолчто?!
ничоси
>Вурдалак, а что лучше?
> Typescript? Это ж только compile time, от прямых вызовов, аналогично в phpdoc пишется.
> В Golang те же геттеры.
> В Java столько приведений скаляров напишешь, что никакие readonly не помо
какая мартышка ;))