Perl cms: Краткий обзор качества коммерческой CMS на Perl / Хабр

Краткий обзор качества коммерческой CMS на Perl / Хабр

parserpro

Perl *

Из песочницы

В процессе занятия фрилансом мне периодически попадаются на препарирование сайты написанные на Perl. Глядя на код, я понимаю, откуда появилась дурная слава Perl в области Web разработки. Но не будем углубляться в холивар.

Вчера мне в руки попал движок X1-forge. Надо особо отметить что он активно продаётся и весьма нескромно расхваливается на сайте. Итак, что же с ним не так?


Клиент обратился с жалобой на невозможность залогиниться в админку. По словам клиента произошел сбой после удаления с сайта некоего вируса (как оказалось позже это было простым совпадением). После изучения кода, обнаруживаю что кукис после ввода логина/пароля в админку ставится с параметром:
Cookie_Exp_Date = "Sat, 31-Dec-2011 12:00:00 GMT";

Т. е. с первого января 2012 года войти в админку можно, но только на 1 запрос, ничего изменить/сохранить нельзя. Браво!

Иду в файл cgi-bin/admin/cookie.pl чтобы поправить это безобразие и вижу:
#####################

## Site Makers X-forge (10.01) | Программный модуль интернет-системы

## (c) ООО "Сайт Мэйкерс". 2008. Все права защищены.

## Производится с 1998 года.

## Лицензиар: ООО "Сайт Мэйкерс" | +7 (495) 544-88-61 | [email protected] | www.sitemakers.ru

## Сайт продукта: www.xforge.ru

#####################

## Копирование, модификация, перезапись, перемещение, удаление и вывод на печать данного файла запрещены.

## Указанные операции могут быть произведены только сотрудниками службы технической поддержки ООО "Сайт Мэйкерс".

## Читая эти строки знайте, что прямо сейчас неосторожными действиями Вы можете нанести ущерб Вашему интернет-проекту.

## Немедленно выйдите из просмотра файла БЕЗ СОХРАНЕНИЯ и в будущем не открывайте никаких файлов программных модулей.

#####################

Вроде всё как надо, если бы не одно «но» — сам код взят из свободного источника (я и сам им пользовался — потому и узнал) и вряд ли может продаваться с таким копирайтом.

Ну да ладно, правлю дату, смотрю в FireBug как ставятся кукисы — и тут вылавливаю его, бага с большой буквы.

Система после логина в админку ставит два кукиса:

1. codeadm — содержит логин пользователя (универсальный admin вполне годится)

2. loginadm — содержит текст «loginadm», подтверждая факт логина в админку

И всё! Никаких больше проверок! А зачем, ведь кукисы подделке не подлежат и им можно доверять абсолютно!

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

Но и это ещё не всё. За окном 21-й век (уже более десяти лет, да), а эти профессионалы не используют режим strict! Зато, активно используют говнокод:
my $fii=0, @FIL=(), $FIS=0, $pat, $file_text="";

Вообще качество кода наводит на мысли о команде школьников. И это коммерческий продукт. Ну да ладно, ССЗБ.

Зацепил ещё такой момент — в качестве БД используются плоские файлы. Оно бы и ладно, но называть директорию с такими файлами «кластером» и писать что:
ни одна другая система была не способна обрабатывать требуемые объемы с требуемым быстродействием, требуемой надежностью и требуемым удобством обслуживания

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

Мораль же будет такова — доверяй, но проверяй.

PS. Мне в руки попала версия 10. Текущей является версия 11.

Теги:

  • Perl
  • CMS
  • говнокод
  • деньги
  • коммерция

Хабы:

  • Perl

Всего голосов 53: ↑46 и ↓7 +39

Просмотры

4. 8K

Комментарии
60

Алексей
@parserpro

Пользователь

Комментарии
Комментарии 60

Perl CMS : гигантомания или слишком умные?

Решил на досуге посмотреть какие-нибудь интересные open source CMS на perl.. посмотрел и очень удивился почти полным отсутствием таковых, тогда как на PHP они плодятся пачкам и каждый день. Похоже Movable Type — это самое достойное из движков расчитанных на небольшие/средние сайты (он же и под mod_perl работает если нужно), но он и не совсем уж и бесплатный (ограниченная лицензия). Ну а из прочих все какие-то мастодонты встречаются, которые позиционируют себя как «content management system and an application framework 2 in 1»:

— WebGUI http://www.plainblack.com/spreadwebgui
довольно много к нему аддон-ов ,плагинов. Расчитан на работу под mod_perl. Но мне что-то он не очень понравился по архитектуре, хотя лишь слегка покопался в его внутренностях.

— Bricolage http://www.bricolage.cc/ модная тема в последнее время в perl сообществе.. Что-то его активно продвигают, хотя вещь в себе, которую еще делать и делать. «CMS корпоративного уровня».. угу. Этот проект принимает участие в гуглевском Summer of Code..и судя по тому, что к нему еще нужно привинтить, так он «under constraction» ( подробнее тут ) (а ниже я про него еще одну забавную штуку напишу).Использует шаблонизаторы: Mason, Template Toolkit, или HTML::Template.
Статья на Perl.com: Content Management with Bricolage

— Krang http://krang.sourceforge.net/ то, что как говорят авторы «выросло» из неудобоваримости Bricolage. В состав разработчиков входят весьма уважаемые перлисты (среди них Sam Tregar — автор HTML::Template, Class-XPath-1.4, XML::Validator::Schema и т.д.,Jesse Erlbaum автор замечательного модуля CGI::Application). Тоже «немаленький» проектик с минималистичным интерфейсом, но довольно прикольной архитектурой. Тоже заточен под mod_perl, есть rpm пакеты для удобства установки). Меня повеселили данные, сравнивающие Krang и Bricolage (по воз-тям и производительности), «вот самая суть»:

The following table compares a few common operations on Bricolage and Krang system with approximately 7,000 stories, running on identical machines (Redhat Linux 7.3, dual P4-2Ghz, 4GB of ram, with their databases tuned appropriately).

OperationKrangv1.011Bricolagev1.4.6
Single Story Publish0.33 seconds4 seconds
Total Site Publish38 minutes6.5 hours
Story Find by Title0.15 seconds2 seconds

7000 статей + они делают вывод в XML+ много авторов и категорий, но 6,5 часов для всего это дела ИМХО как-то не але (и все это под mod_perl)
Кстати, если интересно, тут можно увидеть произ-ть Kranga при различной нагрузке. Шаблонизатор HTML::Template. . не знаю, мне кажется что для подобного проекта учитывая его ООП было бы интересно использовать что-то «понавороченее», типа Template-Toolkit.

К чему я все это? Возможно я плохо искал, но что-то ничего толкового, «земного» не нашел. Стоит ли пытаться соединить CMS и Framework в одном? Получается кастрированный и ограниченный Framework и «перекаченный» и намудренный, CMS.

О Framework.. Недавно прочитал статью о Catalyst ( http://www.perl.com/pub/a/2005/06/02/catalyst.html ) пример в статье ИМХО несколько бестолковый, но сама эта штука меня заинтересовала, весьма приятно смотрится внутри 🙂
MVC:
Model: Class::DBI, Plucene, Net::LDAP (ну вот не очень мне нравится Class::DBI — c виду и поначалу хорош, но там многое надо довинчивать + тормоза при больших выборках.)
View: Template Toolkit, Mason, HTML::Template
Controller: свои каталистические замутки.

Сайт проекта: http://catalyst.perl.org/ с документацией пока не але (про примеры молчу), но может разродятся, он сейчас весьма активно развивается. Да… Maypole загнулся, OpenInteract в свободном плавании (ранее разработка спонсировалась), печальна жизнь open sourca ,если нет рядом заинтересованного спонсора, на энтузиазме далеко и надолго не уедешь ..

P.S. во я накатал!

Perl — Какая CMS?

Ошибка управления

Язык программирования Perl на Perl.org. Ссылки и другие полезные ресурсы для начинающих и опытных программистов на Perl.



    Technologies Category Websites Compare
    Апач Веб-сервер 11 310 Perl против Apache
    PHP Язык программирования 8 677 Perl и PHP
    ЮНИКС Операционная система 3 452 Сравнение Perl и UNIX
    ЦенОС Операционная система 2 936 Perl против CentOS
    MySQL База данных 2 467 Сравнение Perl и MySQL
    WordPress Блог / CMS 2 331 Perl против WordPress
    Дебиан Операционная система 2 059 Perl против Debian
    Питон Язык программирования 1 696 Perl против Python
    Нгинкс Веб-сервер 1 589 Perl против Nginx
    CDN jQuery CDN 1 254 Perl и jQuery CDN
    Убунту Операционная система 1 122 Perl против Ubuntu