Blog

GHhost blog😊

2018-05-15 Blog

Нанотехнологии😊

Нано это ноу-хау великих мужей
С нано жить лучше, жить веселей
Нано это круто, поверьте, ребята
Нано это десять в минус девятой!
Нано мечты, воплощенные реальность.
Нано это шанс доказать свою лояльность
Без нано что будет? Коллапс и разруха,
А с нано улыбка от уха до уха,

И с нано, у причастных, сытое брюхо.

Comments on this page

2017-12-23 Web-Blog

Web-Blog

Вобщем после создания сего сайта который вы счас читаете, как это водица - одолели спам-боты, коментарии были открыты всем, и вот начали они мне туда "комментировать"😊

Вывод - привернуть регистрацию, а для этого нужна почта, причем на этой же машине где крутица движок сайта.

А ее то тут и нету, вообще, даже локальной, тоесть MTA отсутствует напрочь, а как то мыло для регистрации слать нада. Вобщем то движок при отсылке дергает sendmail как все остальные милионы движков, все стандартно. Поэтому нада чтото что могло бы выступать заменой sendmail'у. Выходы:

  1. поставить MTA и настроить форвардинг всей почты на почтовый сервер. как правило в составе любого MTA есть затычка аля sendmail.
  2. поискать чтото аля fetchmail наоборот, ну или какойнить совсем легкий MTA чтоп всю локальную почту форвардило через акаунт на почтовом сервере, тоесть по сути 1 хрен вариант 1 но только это будет уже не из пушки по воробьям как в случае полноценного MTA

И такие варианты нашлись, аж несколько. Начал смотреть и пробовать:

  1. esmtp отложил как last resort сразу - на страничке проэкта надпись THIS PROJECT IS NO LONGER BEING MAINTAINED.
  2. ssmtp завел, настроил, и exim на почтовом сервере мне сказал SMTP protocol synchronization error, это значит что ssmtp пытается слать команды до того как почтовый сервер выдаст ему приглашение, что в свою очередь значит что ssmtp херова следует стандартам и по сему я его забраковал после этого как поделие какованить очередного криворукого далбаеба, вдобавок он работает в синхронном режиме - тоесть ктото дернул там mail/sendmail, он тут же начинает слать в том же процессе, если не удачно ну чтож - обидно, досадно, но ладно - тоесть никакой очереди и ретраев у него нет. пока не отослал или не получил отлуп процесс блокируется, что опять таки намекает на криворуких далбаебов.
  3. nullmailer завелся не сразу, почемуто localhost в /etc/nullmailer/me ему не понравилось - выплевывал какуюто непонятную ошибку при попытке отправить что либо даже не доходя до smtp, тоесть выплевывал сам еще до того как поместить письмо в свою локальную очередь, хз почему, но после того как туда вписал домен от которого собираюсь слать все наладилось и заработало. Так же он имеет очередь, тоесть доставка асинхронна в отличии от варианта 2, и если сразу доставить не удалось будет пытаца потом сделать это снова.
  4. masqmail последняя версия от 2015 года, в генте вообще отсутствует - отмел так как вариант 3 задачу решает и присутствует в генте штатно, а именно она стоит на этом сервере.

Итак, выбор пал на nullmailer. Далее собсно более подробно о настройке nullmailer ибо она не тривиальна, а очень тривиальна😊 Всего 4 строчки(ну мне просто делать нех и я тут печатаю хрень всякую😊 Рас уж начал - нада дописать до конца😊

Итак, Nullmailer или fetchmail наоборот😊

Слать почту мы будем через акканут srv@megaprovider.ru на одноименном сервере - megaprovider.ru😊

Конфигурация находица в /etc/nullmailer

  • /etc/nullmailer/adminaddr - email адрес администратора, туда будет идти вся почта для рута итд, у меня тут - bottleman@megaprovider.ru
  • /etc/nullmailer/defaultdomain - домен по умолчанию - megaprovider.ru.
  • /etc/nullmailer/me - ? кто я? тут FQDN машины на которой работает nullmailer, или ip на худой конец если , им он будет представляца в EHLO и MAIL FROM в сессии к почтовому серверу, так что localhost с большой вероятностью не прокатит.
  • /etc/nullmailer/remotes - наверное единственное что в нем хоть какой то настройкой назвать можно😊 вообще не знаю зачем для него аж 4 файла конфигурации, все уместилось бы в 1😊 но есть как есть, итак, в remotes собсно описывается сервер на который отсылать почту.
megaprovider.ru smtp starttls insecure user=логин pass=пароль

и, все😊 Шлет, эмулирует при этом команду sendmail, так что все что заточено слать через нее будет работать и с nullmailer.

Единственное что я сначала напоролся на insecure - без него вякает на сертификат на сервере, но нифига не ясно на что именно, естественно возникла мысль что так как он там самоподписанный то может на него вякать, и методом тыка (добавлением insecure) это было подтверждено.

Comments on this page

2017-12-22 Networking-Blog

Blog

Беда не приходит одна - эпопея продолжается😊 Скоро переплюнем сантабарбару

После вот этого когда кризис вроде бы отступил, появилось время подумать😊

После осознания того, что с 4 прерываниями на карту удается задействовать только 8 ядре из 12 в голову закралась мысль что нада больше прерываний то😊 Три маршрутизатора справлялись, однако резерва то нет и при выходе из строя хотябы одного будет жопа.

Соответственно нада другие сетевые - купить - хуйвам сказала Танюха, фсе бабло ушло на водку и питарды ибо корпоратив завтра😊

И начались поиски подходящих сетевых путем разгребания всякого хлама ибо чтото гдето такое вроде как было, да и за почти 20 лет работы не могло такого быть чтоп чтото гдето не валялось подходящего, тока где... и вот они - 4 двухпортовых BCM5709 как скуста, часа через пол после начала поисков😊

Чувак там ночью проводил работы и заодно и их воткнул😊 Как итог - стало лучше, но, тоже не без косяков:

 
#тут у нас какаято блять брадкомовская магия - combined оно говорит что не умеет и при попытке дать шлет нахуй,
#при rx 6 tx 6 получается 6 прерываний в сумме, первое из которых не работает вообще - тоесть тупо не прерывается
#и не дает никакой нагрузки, при rx 6 tx 1 получется тоже 6 в сумме но при этом вроде бы нормально работающих.
#че ето за херня яхз но пока так.
#
# upd - нихуя не нормально работающих, первое почемуто всегда не догружено причем значительно, возможно это tx,
# хотя иногда оно всетаки дает нагрузку как то всплесками. судя по acct2  rx 6 tx 6 combined 6 дает ту же картину.
# нада блять будет попробовать 7+1, и опять ебаца как их распределить чтоп задействовать ядра полностью, правда че
# будет с теми всплесками зх.

#ethtool -L enp1s0f0 rx 6 tx 6 combined 6
ethtool -L enp1s0f0 rx 6 tx 1
#ethtool -L enp1s0f0 combined 6

#ethtool -L enp3s0f0 rx 6 tx 6 combined 6
ethtool -L enp3s0f0 rx 6 tx 1.
#ethtool -L enp3s0f0 combined 6

#ethtool -L enp1s0f1 rx 6 tx 6 combined 6
ethtool -L enp1s0f1 rx 6 tx 1.
#ethtool -L enp1s0f1 combined 6

#ethtool -L enp3s0f1 rx 6 tx 6 combined 6
ethtool -L enp3s0f1 rx 6 tx 1.
#ethtool -L enp3s0f1 combined 6

Это мой коментарий с куском скрипта разруливающего прерывания. тоесть теперь мы можем задействовать 10 ядер из 12 - прогресс как говорица на лицо😊

При этом по названию прерываний в /proc/interrupt tx от rx не отличить, ибо обзываются они просто eth-0/1/2/3 нуитд, примерно так:

acct1 ~ # cat /proc/interrupts |grep enp1s0f0 
 50:  446973042          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI 524288-edge      enp1s0f0-0
 51:         91  344667423          0          0          0          0          0          0          0          0          0          0   PCI-MSI 524289-edge      enp1s0f0-1
 52:         85          0  352724036          0          0          0          0          0          0          0          0          0   PCI-MSI 524290-edge      enp1s0f0-2
 53:         60          0          0  363097349          0          0          0          0          0          0          0          0   PCI-MSI 524291-edge      enp1s0f0-3
 54:        129          0          0          0  344874594          0          0          0          0          0          0          0   PCI-MSI 524292-edge      enp1s0f0-4
 74:         86          0          0          0          0  358027569          0          0          0          0          0          0   PCI-MSI 524293-edge      enp1s0f0-5
acct1 ~ # 

и кто из них кто хз, так же не понятно почему при tx 6 rx 6 их всего 6 когда по логике должно быть 12. Вобщем прерываюца эти бродкомы как то через жопу😊

При этом, BCM5720 вполне себе нормально все рисует и количество прерываний тоже сходица, как указали rx 4 tx 1 так и есть, 5 штук суммарно:

acct0 ~ # cat /proc/interrupts |grep enp1s0f0 
 50:  206892049          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI 524288-edge      enp1s0f0-tx-0
 51:          3  134202632          0          0          0          0          0          0          0          0          0          0   PCI-MSI 524289-edge      enp1s0f0-rx-1
 52:          2          0  130895851          0          0          0          0          0          0          0          0          0   PCI-MSI 524290-edge      enp1s0f0-rx-2
 53:          2          0          0  126258675          0          0          0          0          0          0          0          0   PCI-MSI 524291-edge      enp1s0f0-rx-3
 54:          2          0          0          0  132045015          0          0          0          0          0          0          0   PCI-MSI 524292-edge      enp1s0f0-rx-4
acct0 ~ # 

только у BCM5720 драйвер tg3 а у BCM5709 bnx2.

Однако это еще не все.

На Танюхино хуйвам, вечером в ЧНН один из маршрутизаторов сказал свое жесткое хуйвам всем нам, зависнув в час пик, после перезагрузки повторил это снова через пару минут, контрольный так сказать😊 В пятницу вечером, перед корпоративом - знает сцуко когда говорить😊

Оставшиеся 2, практически на пределе, но тянут нагрузку, rtt изредко дергается ms на 10-20, но потерь я пока не фиксирую, так что вроде все нормально с этим. А всего то задействовали 4 дополнительные очереди.

Учитывая что их таких 2 полностью идентичных, и до вчерашней замены сетевых проблем небыло приходит логичный вывод что одна из тех бродкомов полудохлая и проблемы из за нее.

Так что, продолжение следует😊

Comments on this page

2017-12-21 Networking-Blog

Blog

Продолжаем мультилогию про беды, которые судя по всему не то что по одной не приходят, а и по 2-3 тоже, валят пачками😊

Вобщем беда четвертая:

Итак, в свете вот этого берем мы "новый сервир" почему в кавычках? да потому что берем мы в срочном порядке что есть, а есть у нас супермикра 1u с двумя Xeon X5670 @ 2.93GHz, образца 2010 года... с двумя планками памяти по 8Гб.

То что памяти 16ГБ нам дофени - нату хватит, а вот то что она одноканальная при таком раскладе, вместо трехканальной нам уже совсем не до фени, ибо это роутер+NAT, этим двум задачам латентность и пропускная способность памяти критична наверное как никаким другим. и это опять полбеды.

Нам Нужно 5 интерфейсов 2 ввех 2 вниз и 1 для слива netflow и out of band управления.

Но это 1u, в котором есть 2 набортных интерфейса, впринципе подходящих под задачу, умеют до 8 очередей, и выставляют 6 без проблем.

В рейзер можно вставить еще 1 сетевую. засунули туда двухпортовый броадком NetXtreme II BCM5709, тоже умеющий до 8 очередей, и тоже походу последний😊

Итого 4 интерфейса...

И, netflow девать некуда😊 Есть рейзер в который можно воткнуть 2 сетевых, но он уже кудато воткнут и выключить это просто так нельзя, тоесть нада ждать темной ночи когда нагрузка минимальна, комуто оставаца, отключать, вытаскивать, включать, а у нас же горит уже😊

Ну хули делать, я его слепила из того что было, зато есть неплохие шансы потом написать как то что я слепила меня полюбило😊

Будем лить инбандом, теряя по дороге кал netflow и управление в случае каких нибудь проблем или перегрузок.

Типовая конфигурация соотвественно тоже попизде пошла, как у нас водица, этоже не интересно, 2 раза одной и той же дорогой ходить, а потом спустя время нам это аукнеца - тоже развлеченье хоть какое, ато не интересно же когда все работает😊

Для восстановления резерва этого оказалось не достаточно, тоесть втроем они эту нагрузку тянут, но при выходе из строя одного из серверов опять будет жопа.

Попутно выяснил еще 1 прикол - наш netflow коллектор по дефолту способен принимать netflow с любой точки сети, не только нашей, а глобальной😊 Тоесть он открыт всему миру😊 ну а что, удобной - я вот начал лить инбандом - даже делать с ним ниче не пришлось😊

Comments on this page

2017-12-20 Networking-Blog

Беда как говорица не приходит одна

Вдобавок в вот этому узрел вдруг всплеск очереди на почтовом сервере, примерно вот такой:

megaprovider ~ # mailq|grep psv@icf.bofh.ru|wc -l
4667
megaprovider ~ #

А там консервный завод в сторону яхи хотмейлов итд.

Все оказалось просто, акаунт дохлый, чувак им не пользуется уже хер знает скока, и ктото решил проявить свою гениальность и влепить на акаунт пароль 12345, ведь никто же не подумает что в интернете могут быть дебилы с таким паролем😊 А наши любимые боты не дремлют, взяли и попробовали, и у них получилось😊

Но блять и это еще не все!!!

Пришла и третья беда, вечером позвонили и сообщили что на NAT'ах чтото все очень-очень плохо, softirq грузит процы в сотку.

Посмотрел - с части интерфейсов прерывания действительно ушатывают некоторые ядра, траффик вырос гдето в 3 раза с тех пор как их поставили. NAT тоже поменялся - привернули лимит трансляций per IP, и стали натить в пул адресов а не в 1, а это же все тоже не бесплатно в плане ресурсов CPU.

Позвонил Главный инженер, как всегда не вовремя подруку, но это ладно, волнуеца же😊 Поинтересовался как дела, заодно сообщил что оно так уже давно делает периодически в часы пиковой нагрузки. Но все сидят ждут чегото, хз чего, может думают что когда они подключают больше клиентов у них траффик нихуя не растет а только падает.

При таком раскладе ушатали и резерв, так как если запаса по производительности нет то и резерва тоже, нагрузка то при отказе ляжет на оставшиеся сервера, не способные ее обработать. Поэтому деградация сервиса будет такая что можно сказать что резерва нет.

Я это раньше мониторил посредством smokeping, он сразу резво так вякает если растет rtt или не дай боже гдето чтото теряется, тоесть еще за долго до того как ситуация превратица в катастрофу. Но блять с этими переездами сервер где он был вывели из эксплуатации и там ад и израиль и вобщем средств мониторинга у меня не осталось. А нового пока нет. Башка забита перестройкой ядра сети, серверной и инфраструктуры вцелом, и я туда и не смотрел сполгода как совсем. Я строю, другие эксплуатируют, то что я понастрою. До победного конца как оказалось.

Начал смотреть что можно сделать прям сейчас, оказалось что softirq по цене нихрена не одинаков в случае NAT'а, он же в softirq обрабатывается. Входящие на NAT из вне пакеты требуют значительно больше ресурсов для обработки нежели приходящие со стороны серых подсетей.

Прерывания были размазаны поровну исходя из количества сетеух, очередей на них и количества процессоров. Тоесть там впринципе 4 нагруженных интерфейса в бондинге, 2 ввех 2 вниз, и 12 процов, соответственно по 3 irq на интерфейс. Такая схема хорошо работает на чисто маршрутизаторах, там прерывания равноценны. Но не при наличии NAT'а. Некоторые из прерываний с интерфейсов смотрящих вверх грузили свои CPU в полку.

Так же понятно то что как бы чем меньше очередей на интерфейсе тем больший траффик в каждую конкретную очередь влетит, тем больше нада ресурсов чтоп отработать прерывание от этой очереди. Ну и размазываца траффик по ним он будет менее равномерно скорее всего.

Так и получалось - 1 очередь перегружена, 2 других сильно не догружены.

Но чтото сделать с этим нада же

Решил увеличить количество irq и очередей соответственно тоже, но оказалось что BCM5720 больше 4 не умеют, до этого выставлено было 3, но тем не менее полегчало, процентов на 20-30.

Но тоже не без факапа - сервер наебнулся при изменении количества очередей на лету, ну точнее не то чтоп наебнулся совсем, драйвер выдал какой то splat экрана на 4 частично в хексе, после чего линки на интерфейсах начали то падать то поднимаца, видимо под нагрузкой чтото у него там не срослось. Рассматривать мне его было некогда поэтому выход 1 - перезагрузка.

Перегрузил, второй NAT сервир как то пережил нагрузку с дикими тормозами пока первый не загрузица, на втором ситуация повторилась, пришлось тоже перегрузить.

Ну и как итог - сегодня будем готовить третий, иначе говоря как всегда - пока не наебнеца хуй кто зашевелица, несмотря на то что инженер потом позвонил сказал что знал что оно не справляется уже давно.

Comments on this page

2017-12-19 Networking-Blog

Хакнули комутатор cisco

Все почемуто относяца ко всяким комутаторам и маршрутизаторам как к железке, которая типа целиком вся в железе и софта там нет, и поэтому она не ломаеца иначе как физически, и вообще не поколебима и нерушима😊 Только вот это нихрена не так, везде есть софт, и даже в железе тоже есть ошибки допущенные при проэктировании.

Ну чтож, вот и нас петя клюнул в одно место, пока правда не сильно больно😊 Так - фигня - на полшишечки😊

Древнючий Cisco catalyst C3550:

srv-core-gw uptime is 17 weeks, 4 days, 8 hours, 43 minutes
System returned to ROM by power-on
System restarted at 04:35:49 GMT Fri Aug 18 2017
System image file is "flash:/c3550-ipservicesk9-mz.122-44.SE6/c3550-ipservicesk9-mz.122-44.SE6.bin"

srv-core-gw#who
    Line       User       Host(s)              Idle       Location
   1 vty 0                idle                    17w2d 201.172.42.43
   2 vty 1                idle                 13:03:24 10.32.75.177
   3 vty 2                idle                 01:16:16 10.32.75.177
   4 vty 3                idle                     4w1d 184.6.246.208
   5 vty 4                idle                 13:02:52 10.32.75.177
*  6 vty 5                idle                 00:00:00 10.32.75.177

  Interface      User        Mode                     Idle     Peer Address

srv-core-gw#

вобщем все что не 10.32.75.177 это не наши😊

при этом:

ip access-list standard TELNET-ACCESS
 permit xxx.xxx.xxx.xxx 0.0.0.31
 permit 10.32.75.176 0.0.0.15
!

line vty 0 4
 password 7 абракадабра
 login
 transport input telnet
line vty 5 15
 access-class TELNET-ACCESS in
 password 7 издесьабракадабра
 login
 transport input telnet
!

Тоесть ктото попросту проебал АКЛ на line vty, и так он работает почти с самого старта, аптайм 17 weeks, 4 days, у 201.172.42.43 idle 17 недель 2 дня😊 Чего быть не может с дефолтным таймаутом, Ну или же ios откудато украли сразу со встроенным трояном😊 Или просто какаято уязвимость, и ACL может быть вообще ни причем, этого мы уже наверное никогда не узнаем.

На работе это никак не сказывается, комутирует, маршрутизирует, поэтому всем похуй на это судя по всему, никто бы вообще не заметил никогда не полезь я туда его перенастраивать.

Ну или можно предположить что пароль ушол, но тут возникает ряд других вопросов:

  1. каму мы нах нужны?
  2. почему ничего не сделали?

В sh log тоже ниче подозрительного, хотя все комманды логгируюца, что опять таки намекает на какой то бэкдор/троян.

В ручную при таком раскладе никто не будет ебаца с каким то отдельно утекшим паролем и единичным комутатором. При единичном целенаправленном взломе всегда есть мотив, заработать/спиздить/насолить итд, иначе он не возможен, потому что как правило это дорого обходица, поэтому еслип ктото из окружения/сотрудников/бывших преследовал бы одну из подобных целей то навероное он бы ее уже давно достиг и это не осталось бы незамеченным.

При автоматизировнных взломах напротив - цели вывести из строя то что взломали нет, есть цель использовать то что взломали в своих целях в том числе - чаще всего для построения ботнета - взломанная единица присоединяеца к остальному милиону ботов и делает что им скажут, при этом взломанная единица в идеале выполняет свои основные функции как ни в чем не бывало, ведь иначе когда чтото перестанет работать это обязательно заметят, даже если троян будет всячески маскировать свое присутствие (отказ коммутатора коммутировать не замаскируеш😊 и примут меры, а так всем хорошо - и хакерам и лохам которых поимели😊

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

Хотя с другой строны хз на что может быть способен бекдор на комутаторе, анализировать траффик на самом комутаторе не выйдет, этож древняя циска, и там процессор чуть мощьнее чем в калькуляторе ситизен, но зато там есть средства типа PBR которые работают тупо в железе и поэтому на wire speed, и вот ими уже возможно, можно к примеру выделить нужный траффик и развернуть его куда нада и там уже анализировать чем нить мощьным, и к примеру таким образом воровать акаунты/пароли/кредитки и прочую дрочь юзеров и админов, чей траффик через него ходит и на него.

Весь прикол еще и в том что и средств то для какой либо диагностики таких факапов по сути нет, учитывая что он пока в работе, а если предположить что троян то все еще груснее - даже если его вывести из эксплуатации единственный способ что либо сделать это включить его и загрузить, и трояна если он там есть и неизвестно на что способен соответственно тоже, без этого никак - флэш встроенная, перепрошивка опять таки то же самое - гарантий что этот троян не встроит себя автоматом в новую прошивку нет. Можно разьве что с роммона грузануть по сети или прям с терминала и надеяца что его это не затронуло. А так ну если только выпаивать и читать чем либо уже с компа но он не стоит такого гемороя да и денег тоже.

Так что, не проебывайте аклы, и сверяйте crc с кошкодомом когда вливаете краденный иос😊 Следите за обновлениями и секюрити фиксами. И даже это на 100% ничего не гарантирует.

Comments on this page

2017-12-13 Web-Blog

Blog

Динамическая генерация robots.txt и sitemap.xml для мультидоменных сайтов

Вобщем в свете предыдущего поста я продолжил причесывать свой новый сайт, а учитывая что это вики то тут вполный рост встает вопрос с поисковиками и robots.txt, и вот почему:

Этож wikiблять!!! тут у каждой страницы хуеватьма ревизий, и ссылки на каждую из них, куча перекресных ссылок итд, тоесть невьебенная такая куча мала как из миксера и все это индексируется поисковиками. Да я ебал как они в этом всем разбираюца😊 но тем не менее стараюца, но, не всегда правильно, поэтому лучше помочь, и вики помогают, говорят nofollow в meta там где индексировать не нада, но лучше помочь еще вдобавок - дав пинка в нужном направлении, тоесть запретив в robots.txt индексацию того что им не нада, дабы они не тратили лишнее время лазя по nofollow линкам, впринципе тут все просто.

Но блять я случайно пока ковырял модули вики набрел на один из них, точнее два, герерирующих sitemap, мне стало интересно что ето такое и я прочитал - оказывается еще один новомодный инструмент воздействия на роботов, ну и я решил - а чеп не заюзать и его до кучи - хуже то не будет... КАК Я БЛЯТЬ ОШИБАЛСЯ!!! 😊

но все по порядку - я радостно докинул модуль в вики - проверил генерит ли она етот sitemap - генерит, и, уже замахнулся вписать его в robots.txt но по не знанию как это сделать - обратился к документации, а там блять написано что относительную сцылку низзя нихуя - тока полную с именем домена, а у меня хуеватьма доменов и поддоменов - вот такой вот неожиданный ебаныйврот. кто эту хуйню придумал и зачем бошку ампутировать нада, нах она ему.

Но, тем не менее взялся так взялся - нада сделать же, ну выход очевиден - генерировать robots.txt динамически при запросе и подставлять там нужный домен - гавновапрос!!!

Сказано - Зделано:

#!/usr/bin/perl.
$| = 1;.

$server_name=$ENV{'SERVER_NAME'} || "megaprovider.ru";
$req_scheme=$ENV{'REQUEST_SCHEME'} || "http";

print "Content-type: text/plain\n\n";
print "Sitemap: $req_scheme://$server_name/sitemap.xml\n\n";
print <<'EOF';
User-agent: *.
Disallow: /?action=admin
Disallow: /?action=edit
Disallow: /?action=new
Disallow: /?action=history
Disallow: /?action=browse;diff=
Disallow: /?action=rc
Disallow: /?action=rss
Disallow: /?search=
Disallow: /?RecentChanges
Disallow: /?Comments_on_
Disallow: /?action=password
Disallow: /?search=
Crawl-delay: 1
EOF

условие по поводу servername на случай если вдруг кто придет сильно кривой и/или по http 1.0 без host хедера и тогда SERVER_NAME может быть не известно, но лучше туда всетаки выплюнуть чтото вменяемое чем http:///sitemap.xml, поэтому если SERVER_NAME пустое то подставляем туда один из доменов.

У меня Nginx, как этот скрипт к нему привернуть здесь почтишто в самом конце, к другим серверами готовых решений у меня нет но думаю у большинства должен быть какой то путь сделать аналогично.

Вобщем влепил я скрипт, проверил - работает - заебись, сижу смотрю че там поисковики творят, запрашивают ли мой sitemap али нет...

А творят они там хуйню 😊

Гугл и яндекс запросили, и скачали, остальные кравлеры и спайдеры воздержались и не запрашивали его, а дальше началась хуйня:

Хуйня с яндексом:

по какой то причине, хуяндекс начал запрашивать урлы каких ваще быть не может но шаблонно совпадающих с теми что есть, тоесть к примеру вот эта страница имеет адрес megaprovider.ru/?2017-12-13_Web-Blog, хуяндекс же запрашивал megaprovider.ru/0/?2017-12-13_Web-Blog, и так через рас иногда через 2, потом тоже самое но правильно, ну и тд.

Ну я поржал - яндек хуяндекс - даже бота нормально своего написать не могут😊 Но тут спустя гдето сутки гугол начал делать так же!!! А я поперхнулся и перестал ржать, что меня несколько огорчило нада сказать.

это меня озадачило - я начал капать глубже и все проверять, натравил несколько валидаторов, в том числе и самого яндекса - все сказали все заебись у тебя с sitemap и robots.txt, я в непонятках ваще, перерыл всю хуню котороую авторы этого sitemap гордо именуют стандартом - нихуя не нашол, даже зацепки никакой, в гугле тоже тишина - ниче подобного ниукого небыло, я блять уже все проверил, и кодировку, и файл, ПОБАЙТНО в хекс редакторе прочитал на соотвествие кодироке, а там блять UTF!!! ну хедер в хмлине немного староват был - поправил, вобщем БЛЯТЬ!!! - ВСЕ НИШТЯК и все по фэншую, тоесть по этому говностандарту. У меня схема frontend->backend из двух серверов - уже на какой то чудесный глюк в них начал думать, но, вовремя попробовал убрать этот sitemap - и все стало заебись через день-два, перестали они лазать по таким ссылкам.

Ну что за ебаныйврот?

Думал думал, положил хуй на это стандарт, зарылся в гугель - и не нашол нигде упоминания чтоп у кого то было нечто подобное зато нашол тьму страшилок типа низзя его класть не вкорень ато все что выше каюк - не проиндексируется или sitemap не заюзается, на другой домен тоже низзя ну итд, но ниче по делу- ваще тупик!!! И тут я начал искать другое - ну не могуж я блять быть первый кто генерит sitemap динамически и не в файл на диске а сразу по запросу выплевывая в клиента - ну да - дохуя всяких плагинов ко всяким вордпрессам и прочей хрени, генерят динамически так же и robots.txt и sitemap и все хуйню, но вот что характерно - нигде я не нашол чтоп ссылка на sitemap была типа динамической, У всег или сразу генерируется по запросу /sitemap.xml или какойнить реврайт чтоп при запросе sitemap.xml по факту запрос шол куда нада. А у меня она вида site/?action=sitemap, ну я ее так и отдавал в robots.txt, и думаю - ну неужели в этом херня - извратился и переделал - чтоп была доступна сразу по site/sitemap.xml.

И блять хуйня прошла кажись

Маловато еще времени прошло но вроде гугл с яндексом угомонились с этими кривыми ссылками, сижу жду дальше чтоп уж наверняка😊 И главное ведь не написано нигде.

Так что люди - не ставьте динамические ссылки на sitemap.xml.

  1. upd: mail.ru начал забирать sitemap чего раньше не делал.

Comments on this page

2017-12-09

Современное сайтостроение или как я блять себе CMS выбирал😊

Предисловие и предыстория

Сайтеков у меня было много, почему было? Потому что с периодическими поломками серверов за 20 лет и соответственно переездами на другие чтото гдето терялось, чтото забывалось переносица, на чтото просто забивалось, в итоге получилась тьма заглушек и нихрена полезного. Поэтому в мозге последние лет 7-10 была мысля - что нада завести какуюнить CMC, которая мне бы нравилась, ато попыток было много, а толку мало, потому что чтото постоянно не нравилось или приходило непотребное состояние как форк движка debian-administration.org который досих пор торчит на tula.bofh.ru но обновить его не рельно, как и чтото оттуда выдернуть и перенести, работает на убой вобщем😊

И вот чтото просидев ночь обновляя софт на почтовом сервире и как следствие проспав на работу (но зато хоть выспался) и обнаружив пятницу в 22 с чем то часа решил опять провентилировать сей вопрос😊

Так что же мне нравица?

  1. - perl
  2. - никаких баз данных.
  3. - чтоп работал на nginx/lighttpd.
  4. - желательно попроще.

и вот почему:

Почему perl?

Perl потому что пхп нахуй😊 ну вот блять скока там дыр? сколько изменений не совместимых взад? и сколько дебилов на нем пишут из за низкого порога вхождения? сколько лет эта дрочь написанная этими дебилами проработает прежде чем ее сломают? сколько лет эта дрочь написанная этими дебилами проработает прежде чем выйдет версия интерпретатора XXX написанная другими дебилами в которой уберут нужную моей CMS фичу X по причине какой нить там концептуальной дырки или заменят на фичу Y потому что она типа круче и моя CMS опять отвалица? Корпоративный сцайт наш с каждым обновлением дебиана на новый стабл наебываеца, нахуй мне такое счастье, у меня все наебываца и без этого.

питоны-хуены туда же куда и пых, сами написали и сами же теперь с двойки никак соскочить не могут хотя уже 3.6 на дворе, да и табуляция, какой дебил придумал я хуйзнает.

че еще остаеца? руби,хуюби да хер ево знает че ето ваще, и че с ними будет через 5-10 лет? Ктому же на одном из моих сцайтов у меня была вика на перле, и заебись работала, пока блять не вышел второй апачь в котором mod_perl не перепахали так что сходу завести ее я там не осилил, но осилил потом, но сцуко было уже поздно - все заглохло.

Плюс у меня еще была какаято совсем простенькая вика на мелкокомпьютере управляющем аквариумом, куда я записывал всякую хрень про рыбок, тоже на перле, и тоже проблем небыло, не смотря на очень ограниченные ресурсы, памяти всего 128 мегабайт там было.

А еще я сам пишу на перле, и тоже все работает десятки лет, без всякий ой интерпретатор обновился фсе сломалось.

поэтому perl, написанное на нем работает дестилетиями на автопилоте вообще и похер на обновления - не помню чтоп ченить сломалось хоть рас.

Дальше базы данных.

Ну какие блять нахуй скуэли для моего сраного сайта? яж блять не ебаныйгугол, амазон там какойнить или алиэкспресс на худой конец. между тем:

megaprovider ~ # equery s dev-db/mariadb
 * dev-db/mariadb-10.1.26-r1
         Total files : 395
         Total size  : 70.17 MiB
megaprovider ~ #

и это блять только ебаный клиент!!! нихуя не сервер, 70 мегабайт!!! карл!!!

db2 ~ # equery s dev-db/mariadb
 * dev-db/mariadb-10.1.26
         Total files : 744
         Total size  : 158.46 MiB
db2 ~ # 

а вот это блять СЕРВИР!!!

я как вспомню в молодости фокспро на комбайновом заводе на трешке с парой мегабайт памяти обслуживающей ВЕСЬ ЕТОТ ЕБАНЫЙ ЗАВОД так ме хуева становица. и нахуй это все? чтоп сгенерить страничку в сотню килобайт? да я ебал!!! поэтому никаких баз данных.

чтоп работал на nginx/lighttpd

Ну, апачь эта сука монстр, большой и не поворотливый, типа как sql, тока апачь😊 зато все может😊 тока накой мне все это? мне нужны простейшие вещи - fastcgi и выплюнуть ответ от него, но сцуко быстро-много, а монстры так не могут поэтому nginx/lighttpd. Ну и плюс вообще - при таких блять размерах кодовых баз типа апача там или mysql/mariadb ошиок там естестевнно тоже дохера, так что чем проще тем надежней.

желательно попроще.

Ну тоесть безовсякого там гавна типа жабаскриптов и прочей дрочи на нем написанной типа jquery/руби на рельсах и прочей хуеты чтоп небыло опять мучительно больно когда здоровенные куски гавна называемые браузерами вдруг обновились и чтото там в js нахуй отвалилось, и хуйваще разбереш че потому что там ваще постоянно чтото в отвале и это нормальная блять работа считается, типа < милиона ворнингов в секунду значит все заебись, или блять в хроме меньше милиона ворнингов в секунду - значит все заебись а в ff как хотищ так и ебись, или наоборот - похер с какой стороны на яйца смореть.

Ну и

Обдумав все это, секунды за 0.03, вбил я в гугол 'CMS perl' и нашол какой то сцайт, с невьебенным списком, CMS, и там было в том числе на чем они написаны, к моему удивлению там даже была сортировка по начем написаны - отсортировал по начем написаны😊 И осталось их сцуко две из всего этого невьебенного списка: webgui и twiki, и начал я их смотреть😊

webgui

Сразу насторожило что готовых примеров конфигов для nginx нет, гугол выдает тока nginx в качестве фронтэнда перед апачем на котором ета webgui пашет, к lighttpd есно тоже нихрена. по ссылке source install на их сайте 404😊 Зато блять куча надписей в стиле Rich User Interface, Powerful API, Personalization, Easy To Install, изи то поверфул ето, в даунлоаде есть блять образ вмвари с етой херней - ваще ахуеть, внатуре ДАУНлоад😊 на этом фоне мое нытье по поводу размера sql клиента ваще ничто😊 В итоге зато нашлась у них онлайн дема, зашол туда, и ахуел от админского интерфейса - милион пунктиков в меню которые хер знает че означают, по етой херне нада курсы открывать как ею пользоваца, многолетние.

вобщем вердикт - нахуй.

twiki

Вроде бы вообще все красиво если почитать - на перле, вместо базы стандартная RCS (Revision Control System), нашолся пример как ее запустить под lighttpd, потыкавшись завел и под nginx, и тут - опять хрен поймеш, настолько запутанный интерфейс что не понятно что куда и для чего ваще нужно и как вообще оно работать должно, показывает херню какуюто дефолтную и что с этим делать не ясно, вдобавок нарвался на глюки с регистрацией юзверей, пропадало поле ввода пароля при смене кодировки в настройках, вобщем пока я экспериментировал нечаянно посмотрел на размер архива - сука 20 мегабайт!!! 20 мегабайт Карл!!! проебался с нею часа 4 наверное зря тока.

вердикт - ну ие нах.

И чтож блять делать?

Вспомнил тот самый аквариумный компьютер - там же какаято вики стояла - ну думал - нада попробовать ее допилить, а как называется забыл, пошол искать, долго рылся во всяком хламе коего у меня самосвал, и на работе еще 4, но нашол, дернул оттуда флешку, подмонтировал, и обнаружил что это некая хрень с названием cwiki.pl😊 1 файл, ВСЕГО 1 Карл, размером 176294 байт, никакой базы, все в текстовых файлах, но конечно малость примитивно по своим возможностям но что поделать, внутри в хедере обнаружилось следующее:

# cwick version cassiopeia (25 September, 2003)
# Copyright (c) 2003 Lee Jenkins
# includes features by Rudi Bruchez
# Based on UseModWiki version 0.92 (April 21, 2001)
# Copyright (C) 2000-2001 Clifford A. Adams
#    <caadams@frontiernet.net> or <usemod@usemod.com>
# Based on the GPLed AtisWiki 0.3  (C) 1998 Markus Denker
#    <marcus@ira.uka.de>
# ...which was based on
#    the LGPLed CVWiki CVS-patches (C) 1997 Peter Merel
#    and The Original WikiWikiWeb  (C) Ward Cunningham
#        <ward@c2.com> (code reused with permission)
# Email and ThinLine options by Jim Mahoney <mahoney@marlboro.edu>

2003 год😊 базируется на какой то UseModWiki, которая судя по всему в свою очередь базируется на движке WikiWikiWeb - прародительнице концепции вики как таковой. Вбил в гугол, и неожиданно нашол ее описание в википедии, что обрадовало - не хухрымухры😊 Там же нашолся линк и на ее сцайт где неожиданно обнаружилось что оно сцуко живое и развивается😊 Радости моей небыло пределу😊 вот оно, счастие то😊

Гит клонирован, nginx есть, lighttpd есть, вбил в гугол конфиг от них, и гдето случайно набрел на толи форк толи ответвление какое хз, зовется oddmuse.org. В отличии от usemod есть куча расширений модулями и поддержка utf-8 которая хромает в usemod. Туь уровень моей счастливости многократно увеличился, хоть utf я ваще не люблю - нахуй он нужен, но рас есть пусть будет, и я переключился на колупание этой oddmuse.

Дальше впринципе дело техники - кое какие корявые примеры конфигов есть как для nginx так и для lighttpd, у меня nginx по дефолту - кое как удалось взлететь со всем этим минут за 15 чтоп хоть посмотреть в живую и потыкать, а там отшлифуеца. Очень понравились модули - просто тупо копируеш в директорию и она сама их цепляет. И их там кстати овер 200 штук. Так же более-менее все сразу понятно как с этим работать и что для чего. и никаких блять сотен мегобайт, баз, перделок, свистелок и прочей хуеты.

Конфигурация nginx на данный момент:

        server {
                listen 10.32.75.177;
                server_name srv;
                root /var/www/localhost;
                index /cgi-bin/index.pl;
#               fastcgi_index /cgi-bin/index.pl;
                access_log /var/log/nginx/srv.access_log main;
                error_log /var/log/nginx/srv.error_log info;

                location = /favicon.ico {
                    return 204;
                    access_log     off;
                    log_not_found  off;
                }
                
                location = /ad_replace/null.gif {
                    empty_gif;
                }
                
                location /static/ {
                    root /var/www/localhost/htdocs;
                }
                
                location /htdocs/data/ {
                    access_log off;
                    deny all;
                }
                
                location ~ ^/cgi-bin/index.pl {
                    #gzip           off;
                    root           /var/www/localhost;
                    fastcgi_pass   unix:/run/fcgiwrap-wiki.sock-1;
                    fastcgi_keep_conn on;
                    include        fastcgi_params;
                    fastcgi_param  QUERY_STRING       $query_string;
                    fastcgi_param  REQUEST_METHOD     $request_method;
                    fastcgi_param  CONTENT_TYPE       $content_type;
                    fastcgi_param  CONTENT_LENGTH     $content_length;

                    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
                    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
                    fastcgi_param  REQUEST_URI        $request_uri;
                    fastcgi_param  DOCUMENT_URI       $document_uri;
                    fastcgi_param  DOCUMENT_ROOT      $document_root;
                    fastcgi_param  SERVER_PROTOCOL    $server_protocol;

                    fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
                    fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

                    fastcgi_param  REMOTE_ADDR        $remote_addr;
                    fastcgi_param  REMOTE_PORT        $remote_port;
                    fastcgi_param  SERVER_ADDR        $server_addr;
                    fastcgi_param  SERVER_PORT        $server_port;
                    # According to RFC3875 (https://tools.ietf.org/html/rfc3875#section-4.1.14) in SERVER_NAME
                    # we should put actual hostname user came to. For nginx it is in $host
                    # This will allow to run multihost instances
                    fastcgi_param  SERVER_NAME        $host;
                }
        }

Частично накопипасшена с просторов интернету и потому кривовато но пока надоело с ним ковыряца - с самой вики интереснее, 200 модулей как никак😊 В конфиге самой вики нада выставить $UsePathInfo = 0; иначе с такой конфигурацией не заработает. Сама вика лежит в /var/www/localhost/cgi-bin/index.pl, запускается через fcgiwrap. Данные пишет в /var/www/localhost/htdocs/data/, конфиг ее там же, в static статика, лого там, css ну итд.

вобщем вердикт - У меня появился очередной сайтег, и Вы на него смотрите😊

Посмотрим сколько проживет😊

Comments on this page