steinkrauz - День отладчика

> Recent Entries
> Archive
> Friends
> User Info

November 21st, 2024


Previous Entry Add to Memories Tell A Friend Next Entry
11:05 pm - День отладчика
Ничего не предвещало грядущих трудностей. Милая девушка со звучной должностью контент-менеджер пожаловалась, что не может разместить файлик: система ругается страшными словами "Network error". Ничего, подумал я, у них на этаже сеть собрана по дендро-фекальной технологии, может действительно на жирном файле рвётся и не даёт загрузить. Проэскалировал проблему сисадминам, и думать о ней забыл.

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

Хотелось бы думать, что имея за собой больше десятка лет развития и львиную долю рынка, люди хоть как-то научились информировать пользователей о проблемах в софте. Увы, "Network error" выдаётся вообще в любом случае, если ответ от сервера оказался не в том формате, в каком надо. Сделаю небольшое отступление и скажу громадное спасибо тем разрабам, которые сделали developer tools обязательным инструментом в браузере, без них геморроя было бы на порядки больше. Итак, посмотрев сетевые запросы этим прекрасным инструментом, я увидел, что после выбора файла жабоскрипт тут же загружает его на сервер, не доевреиваясь пока пользователь сохранит всю форму. Только вот вместо JSON с атрибутами сохранённого файла внезапно в ответ прилетает страница логина.

Ага, я тоже, скажем так, удивился. Не сообщение об ошибке, не 403-й статус, реальная страница входа, которую, понятно, не видно пользователю, а видно только на вкладке «Ответ» свойств сетевого запроса. Много лет разрабатываемая CMS-ка, оказывается, не способна различить обращение пользователя в закрытый раздел и вызов API. Ну да и фиг с ней, раз есть примерное понятие, куда копать, пришла пора спросить у Яндекса, где моя любимая что же более другие люди с такой проблемой делали. Несмотря на распространённость системы, Яндекс, если отбросить шелуху и SEO, выдал всего три варианта: дать нужные права, убрать ненужные файлы правил доступа, убрать лишние настройки хостера. Ну, последнее сразу не подходит, у нас свой сервер, настроек доступа не оказалось, а права выданы, и даже в большем, чем требуется, объёме.

Покрутив руль и попинав колёса, то бишь подёргав за настройки в официальном интерфейсе, я понял, что пришла пора перейти к эфиру сырцам, чтобы понять, что всё-таки там у ней внутре происходить. К счастью, написано всё на скриптах, подавляющая часть которых лежит в открытом виде. Спасибо хоть за такой подарочек. Впрочем, стиль написания у них такой, что и обфускации не надо. Начнём с того, что вызываемый скрипт содержал ровно одну строку кода: переход к другому файлу с тем же именем, но лежащему в другом месте. Естественно, в этом файле были ссылки на другие файлы, дальше вместо включения файлов стали попадаться вызовы классов — да, там причудливо мешается ООП и процедурная лапша — так что стало понятно, надо смотреть значения вживую.

Что характерно, так как это CMS, то простой вывод она к пользователю пропускает только в нужные моменты, и естественно, пока идёт инициализация и авторизация, весь вывод падает куда-то в район /dev/null. Открывать файл, писать в него, и закрывать снова геморройно, но я уже был готов от отчаяния на это пойти. К счастью, тут меня озарила, не побоюсь этого слова, генитальная идея. Можно посылать HTTP-шный заголовок! Он прекрасно пролетает к клиенту, если в файле их несколько с одним именем, останется только последний, и сразу будет ясно, у какого обрыва оборвалась тропинка.

Долго ли, коротко ли, но в конце пятого файла таки нашлась строчка, проверяющая право чтения у файла, которая возвращала мне отказ. Там внутри было написано такое, что это неслыхано, поэтому я сначала решил посмотреть за аргументы. Их, собственно, три: юзверь, идентификатор сайта, для которого проверяется, и путь. С юзверем всё было в порядке, но остальные два меня удивили. Во-первых, идентификатором сайта оказалось значение "ru". Я сначала погрешил на ошибку в настройках, всё ещё раз проверил, везде буквенно-цифровые обозначения стоят. Проверил на тестовом сайте, где всё работает, там тоже "ru". Что делать, опять лезем с сырцы, и действительно. Если принудительно в аргументах не задан идентификатор сайта, то его значением по умолчанию является код языка. Блин, они возможность держать несколько сайтов на одном движке как минимум десять лет назад запустили.

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

Агащаз. В файловом менеджере системы есть наш старый сайт, есть наш новый портал, а дефолтного сайта нет. Пользователь, под которым это всё смотрится, имеет полные админские права, и от его орлиного взора скрыться ничего не может. Ладно, гора не идёт к Магомету, пойдёт Магомет. В URL для просмотра структуры в аргументах явно пишется идентификатор — сейчас мы пропишем туда идентификатор базового сайта, и решим нашу проблему. Залезаю в адресную строку, чтобы отредактировать, и тут то самое чувство: идентификатор там базового сайта, а показывает совсем другой. К счастью, эта загадка решилась достаточно быстро: когда разделяли сайты на разные доменные имена, путь на диске и путь к сайту указали не те, в результате чего один вообще не показывался, а другой спутался с первым. Но пути распутались, базовый сайт появился в интерфейсе, доступ контент-менеджерам открыли — и всё заработало.

Какая же мораль всей этой длинной унылой истории? Если придётся внедрять российский софт, требуйте доплаты за ухудшение условий труда. Или хотя бы молока за вредность.

(6 comments | Leave a comment)

Comments:


[User Picture]
From:[info]necax
Date:November 21st, 2024 - 09:54 pm
(Link)
> JSON
> программисты
Нет.
Выбери что-то одно.
From:(Anonymous)
Date:November 22nd, 2024 - 04:27 am
(Link)
что у тебя с влагалищем?
[User Picture]
From:[info]steinkrauz
Date:November 22nd, 2024 - 05:31 am
(Link)
Какой-то тупой пуризм. Там жабоскрипт, а не что-то приличное.
From:(Anonymous)
Date:November 22nd, 2024 - 02:30 am
(Link)
что нового написали на моей адски больной прыщавой жопе охуенно описывающего себя старого облёванного стукача работавшего на петухелла, трущего комменты кашляющего чахоточного пидара из конуры, киевского обоссаного обмудка трясущего своим разорванным ректалищем, терпилы из жидовской дурки, дырявого петушка компенсирующего отсутствие нормальной жизни брызганием слюней в интернете, писклявой гундосой гыгыкаюшей вонючки, повышаюшего креативность слабоумного вафела, морально-интеллектуального выродка, мудака года, тупого пизданутого рафинированного хамла, реально слабоумного дауна мнящего себя пупом земли, мерзкого бомжа и гея из кондожопы регулярно лижущего буржуазную жопу, переводящего стрелы обоссаного дебила, тупоносого дятла предлагающего свой рот и сраку на панели за небольшой прайс, слабоумного придурка, киевского петуха, облезлой вонючки с разорванной сракой, жалкого червяка совсем потерявшего голову от унижений, ачкастого мудака, кропалика с невлезающей хуйлашкой за щекой, полоумного хуйла, фекального юродивого вонючего задроченного оправдывающегося виновного без пизды поварёнка-каломеса, самого смешного в этой истории скотопидора следящего за движениями, облеванного дауна, обвафленного выблядка которому нравится ощущать эрекцию в своем анусе, спаммера, ебанька живущего свою никчемную жизнь в выдуманном мире, уебка которого нихуя плющит, рыгающего какашками истеричного говноплюя, хронического неудачника, копошащегося в гомне малафейного глиста, обиженки, как всегда распятого на хуях очень ебнутого на самом деле придурка, русни, жида, так ничего и не понявшей что происходит типичной гомосексуальной проститутки часто меняющей половых партнеров, ничтожного червяка и глиста, хуеплета и распидорашенного дегенерата c выпученными глазками и фекально-анальной лексикой, трахающего себя в рот ранимого некропидораса и доведенного до дурки, сосущего хуи, интересуещегося чужими жопами и не забывающего причмокивать говноеда который жрёт гавно 17029 дней, 8 часов и 35 минут, программиста на питоне, всеизвестного сопидора вениамина Додика Хуйлашки из Гродно мойши Шварца?

Додик Хуйлашка Шварц из Гродно.
From:(Anonymous)
Date:November 22nd, 2024 - 02:52 am
(Link)
Как сообщают информированные источнеке — в Кондожопе в луже собственной мочи найден известный обвафленной хуйлашка и многолетний герой одной из нашых самых постоянных рубрик. Но есле кратко, то помершый не был высоко-моральной личностью, это был гомосек, педофил, алкоголик и вонючай весёлый поварёнок-каломес.
[User Picture]
From:[info]rex_weblen
Date:November 22nd, 2024 - 08:08 pm
(Link)
Прочитал на одном дыхании

> Go to Top
LJ.Rossia.org