Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2015-02-27

СТО

Авто купил, регистрацию сделал, можно ездить. А техобслуживание потом, как-нибудь. Или по регламенту (раз в 15000 км или раз в год, что раньше наступит).
Давайте я поведаю про техобслуживание нашей Проси (Renault Symbol New aka Symbol II/Thalia 2).

Многие так и ездят, как-нибудь, по принципу «пока не отвалилось». В смысле, зачем тратить деньги на сервисное обслуживание, если все работает?
Ну, каждому свое. Лично мне спокойнее, когда я знаю, чего ожидать от техники. В принципе, машинка пробежала 22000 км. и есть бумажка, что ТО 15000 ей делали. Следующее ТО 30000. А с другой стороны, ТО 15000 было более года назад, а положено либо каждые 15 ткм, либо раз в год делать ТО. Масло из МКПП подтекает, руль повернут вправо, хотя едешь прямо – надо исправлять.

Опять же, летом Просе исполнится 4 года – можно, в принципе совместить ТО 30000 и «большое ТО», которое на 60 ткм или раз в 4 года. Но проехать 10 ткм ожидая, что в любой момент может что-то отвалиться? Ладно, по городу еще, недолгие поезки не сильно удаляясь от базы. А если ехать в регионы? Или за бугор?

Кстати, подтекающее из МКПП масло, это врожденная болячка Reno Symbol. Почти у всех снизу сопливит.

Короче, записался я на СТО Лорант на диагностику, замену жидкостей (4 года таки) и комплект ежегодного ТО (масло, фильтры, свечи).

Приехал, встал во дворе перед боксами. Хотя приехал раньше на полчаса, меня тут же провели в офис, обговорили детали и забрали ключ. Они сами загоняют машину в бокс (и сами выгоняют, оставляя ее снаружи, могут даже не глушить).
Через пять минут мне уже показывали, что с Просей не так.
Обнаружили:
- отломан нижний виток задней правой пружины (обе задние пружины менять);
- разбита резинка 3-ей опоры двигателя (опору менять);
- потеет передний сальник коленвала (сальник и ремень ГРМ на замену);
- зачем-то занимались монтажом радиатора, на что указывает коряво поставленная втулка крепления (подозрение на разбитый передок).

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

Еще рассказали про сопли масла снизу МКПП. Сказали, что отмоют все налипшее говнище, и через километров 200 посмотрят еще раз. А то так не очень понятно, откуда течь.

Нарисовали мне приблизительный ценник и участливо спросили, «что делать будем?». Я подумал недолго и ответил, что чиним все, до чего руки дотянутся. Банкет оплачиваю я.

В итоге, раскладка получилась такая:
работа 11640 рублей (работали в четыре руки и часов 6, не меньше)
- диагностика подвески – бесплатно;
- замена масла и фильтра – 440;
- замена свечей – 440;
- замена возд.фильтра – 200;
- установка салонного фильтра – 200;
- замена антифриза – 1200;
- замена тормозухи – 1200;
- проверка давления в шинах – 40 (я потом своим манометром проверил, все колеса слегка перекачаны и все по разному, на 0.1-0.2 атм. хреново они давление проверяют);
- сход-развал – 1200 (есть ощущение, что сделали не слишком качественно: после ТО чуть-чуть тянет вправо, надо поэксперементировать еще для уверенности);
- проверка уровня масла в МКПП – бесплатно;
- замена ремня ГРМ (и приводного ремня) – 4560;
- замена 3-ей опоры ДВС – бесплатно;
- замена переднего сальника коленвала – 520;
- замена задних пружин – 1200;
- слесарные работы – 440;
Смазку дверных петель и замков не делали, хотя по регламенту ТО положено.

Получилось, фактически, ТО 180 (самое большое) с заменой антифриза (полный комплект). А это само по себе 19000 рублей.
Плюс пружины, опора ДВС, сальник коленвала.

В сумме, за-все-про-все (работы+запчасти) 32000 рублей. Запчасти и расходники 20176, работы 11640 рублей. И это со скидкой 3% за то, что мне поставили фирменные рамки под номера :)

Посмотрим стоимость некоторых деталей и расходников, особо дорогих:
- очиститель универсальный (мыли двигатель снизу) – 523.8;
- масло ELF Evolution 900 NF 5W40 – 1455;
- свечи – 1086.4;
- фильтр воздушный – 659.6;
- фильтр салона – 824.5;
- охлажд.жидкость Total – 1222.2;
- ремень ГРМ, комплект – 5238;
- ремень генератора Логан 10-...с конд. – 776;
- опора ДВС нижняя SASIC – 1600.5;
- сальник коленвала – 1261;
- пружины подвески задние Символ – 4171;

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

В общем, уехал я оттуда на метро. В течение дня мне звонили, уточняли разное. Потом вечером позвонили, сказали — готово, забирайте. Я ответил, что вечером не поеду, завтра днем заберу. Так и вышло. На след.день приехал (на метро :), заплатил по счету и забрал свою Просю. Как новая.

А через двести километров, приехав к ним на завершение диагностики по течи масла из МКПП, узнал, что масло сопливит не из кулисы рычага переключения передач, а по стыку картера. Этот стык сажают на герметик, вот там что-то как-то и сопливит. Как мне объяснили, надо снимать МКПП, половинить, смотреть почему течет. Короче, работы где-то на 15000 руб. и масло, герметик, etc еще около 5000 рублей. Заодно и сцепление проверить можно влегкую.

Я сказал – не, не сегодня. Будем готовиться к летнему сезону, тогда и поправим. Может быть. Если масло заметно уходит.
А пока, посмотрите, что-то у меня капот не отщелкивается, отковыривать его приходится.
Замок капота мне подшаманили за 10 минут и 360 рублей.

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

На сегодня у меня в планах по подготовке к летнему сезону такой комплекс работ на СТО:
- устранить течь масла на стыке МКПП;
- как будто педаль сцепления заедает, нет плавности при отпускании, проявляется после получаса езды по городу (смазать тросик? педаль? скорее что-то с вилкой);
- переобуть в летнюю резину;
- чуть ведет вправо (сход-развал?);
- боковые молдинги лобовухи в нижней части болтаются (накладки по бокам стекла, в районе капота надо приклеить, что-ли);
- фары регулировать;
- мыть радиаторы и ставить сетку перед ними;
- проверка и заправка эйр кондея;

Вот это все надо будет в апреле провернуть.


А пока катаемся. Потом как-нибудь расскажу про видеорегистратор, навигатор и прочую байду.


original post http://vasnake.blogspot.com/2015/02/blog-post_27.html

2015-02-25

The Game

Намедни отсмотрел фильму «Игра», что в оригинале «The Game» 1997 года.
Режиссер – чуть более чем известный David Fincher.
В ролях Michael Douglas, Sean Penn.

Хороший фильм, хотя и длинный, больше двух часов. Да и во второй (или третий?) раз смотреть его местами скушновато.
Качественная иллюстрация того факта, что человек не будет заниматься переоценкой ценностей, пока его по голове как следует не ебнешь.

В фильме изрядно несуразностей, но вот одного я не понял, почему такого крупного туза, как главгерой, не возит наемный возница? Почему Николас сам водит свой би-м-даблю? И даже полез менять колесо, когда оно спустило?
И почему BMW а не что-то покомфортабельнее?





original post http://vasnake.blogspot.com/2015/02/the-game.html

2015-02-24

Naudoc/Zope

Вчера столкнулся с загадкой.
СЭД Наудок, непривилегированный пользователь, скажем, Х видит две папки, которые ему видеть не положено. Проверяю настройки доступа для этих папок и по иерархии – все правильно, доступ для Х закрыт.
Но он их видит. Мало того, он их может редактировать.

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

Очевидно, настройки security для папок в Naudoc/Zope таковы, что Автор, то есть тот, кто создал папку, назовем его Х, имеет привилегии редактирования в этой папке. Это, казалось бы, банально. Но, если админ эту папку скопирует куда либо еще, после чего поменяет этой папке владельца, задаст через контроль доступа привилегии такие, что Х там вообще отсутствует, тогда Х по прежнему имеет привилегии редактирования в этой папке.
В интерфейсе нигде не видно, что Х имеет отношение к этой папке. Но факт упрямый, Х может с этой папкой сделать что угодно.


Что с этим делать – непонятно. Нет, ну можно как-то через скрипты сбросить все роли и прочие атрибуты, наверное. Я просто убил эти папки и сделал их заново от имени админа.


original post http://vasnake.blogspot.com/2015/02/naudoczope.html

2015-02-23

The Star Chamber

Намедни отсмотрел фильму «Звездная палата», что в оригинале «The Star Chamber» 1983 года.
Режиссер Peter Hyams.
В главной роли Michael Douglas.

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

Цитата из первой части фильмы, когда, в зале суда, выясняется, что полицейские должны были подождать, когда личный мусор гражданина смешается в мусорке с общим, превратясь таким образом из частной собственности в просто мусор, ничейный:

Your Honor, we have a man here...
who cold-bloodedly murdered
five elderly women...
after robbing them of their welfare checks.
We have the murder weapon
with his fingerprints on it.
We have thejewelry and the wallets
of the victims in the defendant's apartment.
We have his full confession,
freely given by him.
And now you're telling me
that we don't have a case...
because two cops at 6:00 in the morning...
searched the scoop of a garbage truck...
instead of waiting
for some guy to pull a lever.


Кстати, в процессе просмотра, я обратил внимание на количество книг, к которым постоянно обращаются законники. В связи с этим еще одна цитата:

When five television studios became entangled in a Justice Department antitrust lawsuit against CBS, the cost was immense. As part of the obscure task of “discovery” — providing documents relevant to a lawsuit — the studios examined six million documents at a cost of more than $2.2 million, much of it to pay for a platoon of lawyers and paralegals who worked for months at high hourly rates.
But that was in 1978. Now, thanks to advances in artificial intelligence, “e-discovery” software can analyze documents in a fraction of the time for a fraction of the cost. In January, for example, Blackstone Discovery of Palo Alto, Calif., helped analyze 1.5 million documents for less than $100,000.





original post http://vasnake.blogspot.com/2015/02/the-star-chamber.html

Curiously Recurring Template Pattern

C++, давно не виделись :)

CRTP (Curiously Recurring Template Pattern) — это идиома проектирования, заключающаяся в том, что класс наследует от базового шаблонного класса с самим собой в качестве параметра шаблона базового класса. Звучит запутано, но в коде выглядит довольно просто.

template <class T> class base{};
class derived : public base<derived> {};

Что это может нам дать? Такая конструкция делает возможным обращение к производному классу из базового.
template<typename D>
struct base
{
    void foo() {static_cast<D*>(this)->bar();}
};

struct derived : base<derived>
{
    void bar();
};

Интерфейсы, статический полиморфизм, примеси (mixin), инверсии зависимости, Template Design Pattern – и это все о нем. В смысле, все эти ништяки можно реализовать с помощью CRTP.

О способах использования, достоинствах и недостатках читайте в исходнике





original post http://vasnake.blogspot.com/2015/02/curiously-recurring-template-pattern.html

2015-02-22

The Grapes of Wrath

Намедни отсмотрел фильму «Гроздья гнева», что в оригинале «The Grapes of Wrath» 1940 года.
Фильма снята по сюжету одноименной книги Джона Стейнбека.
В главной роли Henry Fonda.

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

И вообще, Стейнбек – молодец.






original post http://vasnake.blogspot.com/2015/02/the-grapes-of-wrath.html

2015-02-19

Регистрация ТС в ГИБДД

Купил машину, что дальше?

Нынче, по закону, после покупки авто у нас есть десять дней на приведение документов в порядок. А документы водятлу необходимы такие (кроме водительского удостоверения):
- полис ОСАГО;
- свидетельство о регистрации транспортного средства (часто называемое СТС).
Что характерно, СТС не выдают, если у тебя нет полиса ОСАГО.
А полис ОСАГО не выдают, если у тебя нет «диагностической карты», ранее известной как «талон техосмотра».

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

Бывает, что добрый продавец прикладывает к машине комплект летней/зимней резины. Не мой случай. Из приятных дополнений у меня в багажнике были только аварийный комплект (аптечка, огнетушитель, знак аварийной остановки, трос) и запаска с домкратом и баллонником, штатные.
Ехать из автосалона до дому в морозец -15 градусов на летней резине было страшно. Но мы доехали, без приключений.

На следующий день я заехал в ближайший автомагазин, где торгуют шинами и взял у них единственный предлагаемый вариант для моего размера
175/65 R14 82T Interstate Winter IWT-2 EVO
что обошлось мне в 10400 рублей.
Загрузив эту красоту в багажник (все влезло и еще место осталось), я двинул в ближайший шиномонтаж. Что интересно, шиномонтаж, объединенный с мойкой, находится на участке улицы, где нельзя останавливаться, запрещено. Теоретически, если мастер/мойщик заняты и ты не можешь сразу заехать в бокс, надо двигать дальше. Но всем похер. Останавливаются и стоят. Ждут мойку, ждут шиномонтаж. Владелец бизнеса говорит, что никого еще не наказали.

В общем, на этой шиномонтажке мне переобули колеса за 1500 и, чтобы далеко не ходить, оформили ОСАГО, первым делом выправив диагностическую карту.
За карту взяли 2000 рублей, за ОСАГО что-то чуть меньше 7000 рублей.
При таких ценах на фиктивный техосмотр, есть смысл пройти его по честному, за 700, что-ли, рублей. В следующий раз, может быть.

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

В ГИБДД за регистрацией я поехал на следующий день.

Итак, какие доки нужны для регистрации?
Паспорт транспортного средства (ПТС), старое свидетельство о регистрации, ОСАГО, договор купли-продажи (ДКП), свой паспорт, квитанция об уплате пошлины.

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

Забегая вперед, могу сказать, что если быть проще и не выпендриваться, то процедура регистрации вопросов не вызывает. Приходите в отделение и там чуть не за ручку проведут по всем этапам. Одна проблема – придется искать сбербанк.
Но я не могу проще, я же программист, мне надо «оптимально».
Оптимально, в данном случае, это найти отделение ГИБДД поближе, записаться туда через госуслуги и заранее оплатить пошлину в сбербанке у дома.

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

Вот, смотрите сами

Какой из этих вариантов подходит под описание «перерегистрировать авто на нового владельца не меняя госномеров»?

Методом исключения я сумел выделить два варианта:
1. Изменение регистрационных данных, связанных с изменением регистрационных данных собственника транспортного средства (Ф.И.О., наименование юридического лица, адрес регистрации)
2. Изменение регистрационных данных о собственнике (владельце) транспортного средства.

Но каждый раз, при заполнении анкеты, меня сбивали с толку фразы про получение номеров.

Это была первая трудность. Я не смог ее преодолеть :)
В итоге, поехал в ГИБДД без предварительной записи, о чем ничуть не пожалел.

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

На сайте ГИБДД http://www.gibdd.ru/r/77/reg/
можно распечатать платежку для разных случаев

Самый подходящий вариант
Изменение регистрационных данных в связи с изменением собственника с сохранением государственных регистрационных знаков (автомобиль)
С выдачей государственных регистрационных знаков «Транзит»
размер государственной пошлины: 850 руб.
Но, посмотрите, тут выдают транзитные знаки! Нахер они мне всрались?

Я долго искал информацию, в итоге рискнул и напечатал платежку на 850 рублей. И угадал!
За перерегистрацию на нового владельца с сохранением старых знаков пошлина именно 850 рублей. При проверке документов проверяют только сумму и банковские реквизиты, которые у всех Московских отделений одинакие.

Короче, с утра метнулся в сбербанк, оплатил распечатанную с сайта квитанцию, и поехал в ГИБДД: г. Москва, ул. Лобненская, д. 20

Приехал, с трудом нашел место, где припарковаться, пошел внутрь, сдаваться на милость оккупантов. Захожу, а там, внезапно, красота. Просторные залы, скамейки, по периметру окошки нумерованные, причем на удобной для посетителей высоте (не надо нагибаться). Народу хоть и много, но толчеи нет, все ждут своей электронной очереди.
Ну и я тоже, взял у электронного болвана талончик на регистрацию ТС. Неожиданно, талончик оказался на через-пятнадцать-минут.
И правда, через эти 15 минут, плюс минус пять, меня позвали к окошку.
Там я сдал свой пакет документов, сказал, что мне ужасно нравятся старые номера и я не хочу их менять. Дама-в-окошке тут же напечатала мне заявление нужного вида и выдала квитанцию на оплату (хаха, у меня уже есть оплаченная). И сказала, где искать площадку для осмотра машины.

Площадка оказалась за углом. Я туда заехал, инспектор заглянул под капот, сверил номера с ПТС и отметил в заявлении, что все нормально. Пять минут.

И я двинул обратно к окошкам, но уже в другой зал. Там в электронном болване надо отметить свой талон, чтобы очередь знала, что ты готов.
На этот раз я ждал пока позовут еще минут 15-20. Позвали. В окошке забрали заявление, квитанцию о оплате, мой паспорт и старую регистрацию. Сказали ждать.
На этот раз процедура ожидания была традиционной. Все добравшиеся до этого третьего этапа сидели поблизости у окошка выдачи и ждали, когда оно откроется и из него прозвучит фамилия страдальца.
Тут ждать пришлось дольше всего, не меньше получаса. Даже странно, что можно делать столько времени? Печатать кусок бумажки и закатывать его в пластик?

В итоге, приехав в ГИБДД в 12:30, я поехал домой на зарегистрированной как положено Просе уже почти в 14. Причем обед в ГИБДД как раз начинается в 14 часов. Еле успел до обеда.

Полтора часа. По сравнению с предыдущими эпизодами общения с ГИБДД, это было просто молниеносно.


original post http://vasnake.blogspot.com/2015/02/blog-post_19.html

2015-02-11

Установили Naudoc, теперь его надо доточить

Ранее мы установили Python 2.4 на Debian 7 amd64; потом поставили Zope 2.10.7 и сам Naudoc 6. Вместе с сопутствующими библиотеками.
Теперь подключим расширения, типа MySQL и LDAP; поставим фронтэнд Apache httpd.
Лично я выбрал бы Nginx с пробросом через VirtualHostMonster Zope, но в данном случае заказчик захотел сделать «по букварю».

Но, предварительно, разберемся с logrotate для Zope/Naudoc

Из коробки, ни Наудок, ни Zope не настроены на ротацию логов, которые, для нашего конфига, растут в /opt/naudoc/log/
Настройка ротации логов
su -l
nano /etc/logrotate.d/zope
/opt/naudoc/log/*.log {
#    daily
    weekly
    missingok
    rotate 5
    compress
    delaycompress
    notifempty
    sharedscripts
    postrotate
        [ -f /opt/naudoc/var/Z2.pid ] && kill -USR2 `cat /opt/naudoc/var/Z2.pid`
    endscript
}

Поехали.

Для работы интегрированного решения, необходимо установить модуль расширения языка python — mysql-python. Хотя, по словам авторов Наудок, нужды использовать БД MySQL нету. Но модуль мы на всякий случай поставим.
Начнем с установки easy_install для нашего Python 2.4

su -l
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap-py24/ez_setup.py
/opt/python24/bin/python ez_setup.py

aptitude install mysql-client libmysqlclient-dev
/opt/python24/bin/easy_install mysql-python

Настройка взаимодействия NauDoc с LDAP-сервером требует модуль
python-ldap

su -l
aptitude install libldap-dev openldap-utils slapd
aptitude install libsasl2-dev libsasl2-modules
/opt/python24/bin/easy_install pyasn1
/opt/python24/bin/easy_install pyasn1_modules
wget https://pypi.python.org/packages/source/p/python-ldap/python-ldap-2.4.18.tar.gz#md5=9bee878cc3582d7184b0a48083446efb
tar xvzf python-ldap-2.4.18.tar.gz
cd python-ldap-2.4.18

Компилять сразу бесполезно, сначала надо поправить конфиг с учетом того, что библиотеки теперь находятся чуть-чуть не там где раньше

find / -iname "*ldap*.h"
    /usr/include/ldap.h
find / -iname "*ldap*.a"
    /usr/lib/x86_64-linux-gnu/libldap.a

nano setup.cfg

diff -u setup.cfg.orig setup.cfg
--- setup.cfg.orig      2014-11-27 00:32:55.989686001 +0300
+++ setup.cfg   2014-11-27 00:36:11.937686000 +0300
@@ -1,10 +1,10 @@
 [_ldap]
-library_dirs = /opt/openldap/lib64 /usr/lib
+library_dirs = /opt/openldap/lib64 /usr/lib /usr/lib/x86_64-linux-gnu
 include_dirs = /opt/openldap/include /usr/include/sasl /usr/include
 defines = HAVE_SASL HAVE_TLS HAVE_LIBLDAP_R
 extra_compile_args =
 extra_objects =
-libs = ldap_r
+libs = ldap_r lber sasl2 ssl crypto

 [install]
 compile = 1

Вот теперь можно компилять
/opt/python24/bin/python setup.py clean --all
/opt/python24/bin/python setup.py build
/opt/python24/bin/python setup.py install

Перезапуск Zope/NauDoc
service zope2.10 stop; service zope2.10 start

После того как сервер будет запущен, зайдите в NauDoc по стандартной ссылке:
http://localhost:8080/docs и следуйте инструкциям мастера первого запуска, там все несложно.

Для активации модулей NauDoc Pro необходимо зайти в систему под учетной записью администратора, затем перейти на вкладку «Сервис», пункт меню «Модули расширения». Там будет много галочек.

Чтобы активировать модуль расширения "Внешнее хранение файлов", недостаточно только поставить галочку. Надо еще включить опцию в конфигурации в исходном коде
nano /opt/naudoc/Products/CMFNauTools/Config.py
EnableFSStorage         = 1

Перезапустить
service zope2.10 stop; service zope2.10 start

Открыть корневую страницу системы http://localhost:8080/docs
и следовать указаниям мастера. По завершении
проверка наличия файлов во внешней папке
find /opt/naudoc/var/docs/


Настройка работы NauDoc через Apache

Установка веб-сервера Apache httpd и направление трафика сайта через него.
Открыт доступ только через HTTPS и только к системе документооборота. Доступ к Zope возможен только через создание SSH туннеля.
Доступ к сайту будет регулироваться через проверку крипто ключей.

Для Apache нужен модуль mod_fastcgi, согласно ванильной кофигурации.
Для его установки надо пополнить список доступных репозиториев пакетов
su -l
nano /etc/apt/sources.list
deb http://cdn.debian.net/debian/ wheezy main contrib non-free
deb-src http://cdn.debian.net/debian/ wheezy main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
deb http://cdn.debian.net/debian/ wheezy-updates main contrib non-free
deb-src http://cdn.debian.net/debian/ wheezy-updates main contrib non-free

aptitude update
aptitude install apache2-mpm-itk apache2 openssl libapache2-mod-fcgid
aptitude install libapache2-mod-fastcgi

Создание и настройка сайта Apache httpd

a2dissite default
cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/naudoc-ssl.conf
a2ensite naudoc-ssl.conf
a2enmod ssl
a2enmod fastcgi
a2enmod rewrite

Сертификат сайта

mkdir -p /etc/ssl/localcerts
openssl req -newkey rsa:2048 -x509 -days 3650 -nodes -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key -subj "/C=RU/ST=Moscow/L=Moscow/O=Mycompany/OU=Mycompany DMS/CN=mydomain.net"
chmod 600 /etc/ssl/localcerts/apache*

Конфиги

nano /etc/apache2/sites-available/naudoc-ssl.conf
ServerName mydomain.net
<IfModule mod_ssl.c>
NameVirtualHost *:443
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

    SSLEngine on
    SSLCertificateFile    /etc/ssl/localcerts/apache.pem
    SSLCertificateKeyFile /etc/ssl/localcerts/apache.key

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    <Directory "/var/www/naudoc">
        Order allow,deny
        Allow from all
        Options FollowSymLinks Includes ExecCGI
        AllowOverride All
        SetHandler fastcgi-script
    </Directory>
    FastCgiExternalServer /var/www/naudoc -socket /var/run/zope.soc -idle-timeout 600 -pass-header Authorization
    RewriteEngine on
    RewriteRule !^/dms/(.*) /dms/ [R]
    RewriteRule ^/dms/docs/(.*) /var/www/naudoc/docs/$1
    RewriteRule ^/dms/(.*) /var/www/naudoc/docs/$1

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
    </Directory>
    BrowserMatch "MSIE [2-6]" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>

nano /etc/apache2/ports.conf
<IfModule mod_ssl.c>
    Listen 443
</IfModule>
<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

nano /opt/naudoc/etc/zope.conf
#… модифицированные строки, весь файл слишком велик для полного цитирования
<fast-cgi>
    address /var/run/zope.soc
</fast-cgi>
#...

Перезапуск
service zope2.10 stop; service zope2.10 start
service apache2 stop; service apache2 start

Диагностика веб-служб
netstat -ltupn
curl -k https://localhost/
openssl s_client -connect mydomain.net:443 -state -debug
apache2 -v
    Server version: Apache/2.2.22 (Debian)
    Server built:   Jul 24 2014 15:34:03

В общем, теперь оно должно работать. Можно на этом и остановиться.
Но нам надо больше!

А теперь закрутим гайки

Для повышения уровня защищенности системы веб-сервер должен быть настроен так, чтобы пользователи не обладающие правильными сертификатами блокировались. К системе доступ получают только те, у кого в браузер установлен правильный сертификат.
Правильный сертификат, это криптографический ключ, выданный и подписанный системным CA.

Настройка проводится в три шага:
1 Создать собственный доверенный сертификат (Certificate Authority), для того чтобы с помощью него подписывать и проверять клиентские сертификаты.
2 Создать клиентские сертификаты, подписанные доверенным сертификатом, для последующей передачи их клиентам.
3 Сконфигурировать веб-сервер для запроса и проверки клиентских сертификатов.

Команды, создающие
самоподписанный ключ CA

su -l
mkdir -p ~/CA && cd $_
openssl req -new -sha256 -newkey rsa:4096 -nodes -keyout ca.key -x509 -days 3650 \
    -subj "/C=RU/ST=Moscow/L=Moscow/O=Portal/OU=DMS/CN=Portal CA/emailAddress=naudoc@dms.ru" \
    -out ca.crt
# посмотреть данные ключа и сертификата
openssl rsa -noout -text -in ca.key|less
openssl x509 -noout -text -in ca.crt|less

Создайте конфигурационный файл с именем ca.config следующего содержания

nano ca.config
[ ca ]
default_ca             = CA_CLIENT       # При подписи сертификатов
# использовать секцию CA_CLIENT
[ CA_CLIENT ]
dir                    = ./db            # Каталог для служебных файлов
certs                  = $dir/certs      # Каталог для сертификатов
new_certs_dir          = $dir/newcerts   # Каталог для новых сертификатов
database               = $dir/index.txt  # Файл с базой данных
# подписанных сертификатов
serial                 = $dir/serial     # Файл содержащий серийный номер
# сертификата (в шестнадцатиричном формате)
certificate            = ./ca.crt        # Файл сертификата CA
private_key            = ./ca.key        # Файл закрытого ключа CA
default_days           = 365             # Срок действия подписываемого
# сертификата
default_crl_days       = 365             # Срок действия CRL (см. $4)
default_md             = sha256          # Алгоритм подписи
policy                 = policy_anything # Название секции с описанием
# политики в отношении данных сертификата
[ policy_anything ]
countryName            = optional     # Код страны - не обязателен
stateOrProvinceName    = optional     # ......
localityName           = optional     # ......
organizationName       = optional     # ......
organizationalUnitName = optional     # ......
emailAddress           = optional     # ......
commonName             = supplied     # ...... - обязателен

Создайте структуру каталогов и файлов, соответсвующую описанной в конфигурационном файле

mkdir db
mkdir db/certs
mkdir db/newcerts
touch db/index.txt
echo "01" > db/serial

Создание клиентского закрытого ключа и запроса на сертификат (CSR)

Для создания подписанного клиентского сертификата предварительно необходимо создать запрос на сертификат, для его последующей подписи

Ключ и сертификат для веб-сервера (Apache)
openssl req -new -sha256 -newkey rsa:4096 -nodes -keyout apache.key -days 3650\
    -subj "/C=RU/ST=Moscow/L=Moscow/O=Portal/OU=DMS/CN=mydomain.net" \
    -out apache.csr
# посмотреть данные ключа и запроса
openssl rsa -noout -text -in apache.key|less
openssl req -noout -text -in apache.csr|less

Подпись запроса на сертификат (CSR) с помощью доверенного сертификата (CA). При подписи запроса используются параметры заданные в файле ca.config

openssl ca -config ca.config -in apache.csr -out apache.crt -batch -days 3650
cp ./db/newcerts/01.pem ./apache.pem
# посмотреть данные сертификата
openssl x509 -noout -text -in apache.crt|less
# отозвать сертификат
openssl ca -config ca.config -revoke apache.pem
# or
openssl ca -config ca.config -revoke apache.crt

Подготовка данных для передачи клиенту (это уже не про Apache).
Для передачи полученных в результате предыдущих операций файлов клиенту, обычно используется файл в формате
PKCS#12
Пример:
openssl pkcs12 -export -in apache.crt -inkey apache.key \
    -certfile ca.crt -out apache.p12 -passout pass:secret

Еще один пример,
создание сертификата для клиента
vasnake@gmail.com

su -l
pushd ~/CA
openssl req -new -sha256 -newkey rsa:4096 -nodes -keyout valik.key -days 3650\
    -subj "/C=RU/ST=Moscow/L=Moscow/O=Portal/OU=DMS/CN=vasnake@gmail.com/emailAddress=vasnake@gmail.com" \
    -out valik.csr
openssl ca -config ca.config -in valik.csr -out valik.crt -batch -days 3650
openssl pkcs12 -export -in valik.crt -inkey valik.key \
    -certfile ca.crt -out valik.p12 -passout pass:secret
chmod -R 600 ../CA
echo "cert in attachment" | mutt -a "valik.p12" -s "portal keys" -- vasnake@gmail.com

Создание списка отзыва (CRL)
Список отзыва нужен для блокирования вышедших из употребления сертификатов. В конфигурации CA указано, что список отзыва надо обновлять не реже раза в год.

openssl ca -gencrl -config ca.config -out ca.crl
# посмотреть
openssl crl -in ca.crl -text -noout|less
chmod -R 600 ../CA

Настройка веб-сервера

Для реализации процесса авторизации по клиентским сертификатам необходимо сконфигурировать веб-сервер для решения следующих задач:
1. Запрет доступа к защищаемой области по протоколу HTTP
2. Запрос и проверка клиентских сертификатов

Скопировать сертификаты и ключи в папку с конфигами

cp apache.crt /etc/ssl/localcerts/apache.crt
cp apache.key /etc/ssl/localcerts/apache.key
cp ca.crt /etc/ssl/localcerts/ca.crt
cp ca.crl /etc/ssl/localcerts/ca.crl

Отредактировать конфиг сайта

nano /etc/apache2/sites-available/naudoc-ssl.conf
ServerName mydomain.net
<IfModule mod_ssl.c>
NameVirtualHost *:443
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
        SSLRequireSSL
        SSLVerifyClient require
        SSLRequire %{SSL_CLIENT_I_DN_O} eq "Portal" \
            and %{SSL_CLIENT_I_DN_OU} in {"DMS", "IT"}
# Журнал ошибок Апача показал
# ERROR request body exceeds maximum size (131072) for SSL buffer
# при попытке сохранить на сервер объемный шаблон документа, поэтому:
        SSLRenegBufferSize 10485760
    </Directory>
    <Directory "/var/www/naudoc">
        Order allow,deny
        Allow from all
        Options FollowSymLinks Includes ExecCGI
        AllowOverride All
        SetHandler fastcgi-script
    </Directory>
    FastCgiExternalServer /var/www/naudoc -socket /var/run/zope.soc -idle-timeout 600 -pass-header Authorization
    RewriteEngine on
    RewriteRule !^/dms/(.*) /dms/ [R]
    RewriteRule ^/dms/docs/(.*) /var/www/naudoc/docs/$1
    RewriteRule ^/dms/(.*) /var/www/naudoc/docs/$1
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
    SSLEngine on
    SSLCACertificateFile /etc/ssl/localcerts/ca.crt
    SSLCARevocationFile /etc/ssl/localcerts/ca.crl
    SSLCertificateFile    /etc/ssl/localcerts/apache.crt
    SSLCertificateKeyFile /etc/ssl/localcerts/apache.key
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
            SSLOptions +StdEnvVars
    </Directory>
    BrowserMatch "MSIE [2-6]" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>

Настройка веб-сервера на перенаправление пользователей с http на https
чтобы пользователя, зашедшего на http://mydomain.net/
отправляли на https://mydomain.net/

открыть порт в файрволле

nano /etc/iptables.up.rules
# Generated by iptables-save v1.4.14 on Sun Nov 23 03:00:39 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [12:2680]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -m recent --update --seconds 55 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -m recent --set --name DEFAULT --rsource -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Sun Nov 23 03:00:39 2014
# EOF

bash /root/disable_fw.sh
bash /etc/network/if-pre-up.d/iptables

сконфигурить Апач

nano /etc/apache2/ports.conf
Listen 80
<IfModule mod_ssl.c>
    Listen 443
</IfModule>
<IfModule mod_gnutls.c>
    Listen 443
</IfModule>
# EOF

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/naudoc.conf
nano /etc/apache2/sites-available/naudoc.conf
ServerName mydomain.net
NameVirtualHost *:80
<VirtualHost *:80>
   Redirect permanent / https://mydomain.net/
</VirtualHost>
# EOF

a2ensite naudoc.conf
service apache2 stop; service apache2 start


Вот как-то так.

В следующий раз расскажу, как сделать почтовый шлюз используя Яндекс.Почта для домена. Или про интеграцию Naudoc с LDAP. Или про оба сразу, посмотрим.


original post http://vasnake.blogspot.com/2015/02/naudoc.html

2015-02-10

Авторынок

Не было хлопот, купила баба порося.

Действия влекут за собой последствия. Для расширения своих возможностей, захотел я получить драйверскую лицензию ака «права» ака ВУ (водительское удостоверение) категории В. Ну и ездить научиться, конечно.
Ездить научился, ВУ получил. Что дальше?
А дальше, как и следовало ожидать, купил автоматический мобиль. Не пропадать же полугодовому труду, да?

Спасибо Обамке с ВВП, санкции подарили мне 200 килорублей, что позволило выделить 400 килорублей на покупку. И стал я изучать, что же на авторынке можно поиметь за такую сумму в январе 2015 года.
Тут надо уточнить, для оптимистов, покупая машину за 400 килорублей, сразу готовьтесь выложить еще не менее 50, а то и 100 килорублей на всякое разное – зимняя резина, страховки, ТО, запчасти, сигнализация, коврики-шмоврики, регистрация, налог, мойка, бензин и т.д.

Из новых, в такие бабки можно купить Деу Нексия, Автотаз и … всё. Еще в декабре 2014 можно было купить Ладу Ларгус (еще не Автотаз, хотя уже близко), но 15 января завод поднял цену и этот сарайчик на колесах стал стоить 444 килорубля.
Нексию не хочу, Автотаз тем более. Остается рынок авто с пробегом.

С пробегом если брать, то не самое старое. В идеале, что-то еще на гарантии, возраста 1-2 года. Но таких предложений почти нет. Достаточное количество предложений начинается с возраста 3-4-5 лет. ОК, с возрастом определились. В среднем, 15-20 ткм за год, общий пробег у таких машин, соответственно, порядка 30-100 ткм.

Теперь самый сложный вопрос, где покупать?
Если под рукой есть толковый автомеханик, то брать можно где угодно – у частного лица (дешевле), у дилера, да хоть у арасалона.
Если же автомеханика нет, лучше не рисковать. Брать у очень хорошего знакомого, про которого, как и про его машину, все известно наперед. Либо у крупного официального дилера, который не тушуется дать гарантию на продаваемый авто с пробегом.

Кстати, когда я начал искать, где продают Ладу Ларгус, я отыскал дилера, где предлагали ЛЛ с новья за 380 килорублей. Я им позвонил и мне очень убедительно рассказали, что я могу приехать хоть сейчас и мне тут же продадут авто именно по этой фиксированной цене.
Хорошо, что я не поленился и пробил название этого автосалона по Интернету. Оказалось типичное разводилово. Либо «предварительный договор» с мутными условиями и конской комиссией в 300 килорублей, либо «ой, вот только сейчас последнюю продали, вот посмотрите другую, за полтора ляма».

Причем, до сих пор еще есть на рынке предложения Лады Ларгус за 350-380 килорублей. Не верьте. Позвоните любому официальному дилеру – никто вам не предложит ЛЛ дешевле 444 килорублей. Да и то под заказ.

Бизнес, ничего личного.

Поэтому, если вы видите предложение по цене заметно ниже среднерыночной, это повод включить внутреннего параноика. 99.9% – это разводилово.

Короче, вернемся к нашим баранам.
Если бы у меня был автомеханик на побегушках, я бы, скорее всего, взял бы рекомендованный племянником вариант – рамный жып 2008 года рождения.
Например вот такой:

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

Еще была мысль взять Ниссан Альмеру, новую. Но выяснилось, что багажник на крышу ей не поставить. Никак. А мне обязательно нужен багажник, виндсерфингисты мы.
Лучше, конечно, минивен. Но не в мой бюджет (400 килорублей). В другой раз, может быть.
Еще была мысль про Шевроле Кобальт, но предложений подходящих не попалось.

Еще были разные желания, типа Хундай Солярис, Форд Фокус и такое разное. Но, либо в бюджет не укладывается, либо старая колымага.

В итоге, набрел я на официального дилера Рольф-Химки, подразделение Bluefish, которое занимается авто с пробегом.
И обнаружил у них несколько Reno Symbol 2011 года выпуска.
Почитал, все что есть в интернетах, про эту машинку, вдохновился. И поехал смотреть. У них еще и Хундай Солярис был и Шевроле Авео – было что смотреть. Думал, посмотрим, пощупаем, пару часов потратим и домой поедем, дальше думать.

Ага.

В 14 часов мы забрели в Рольф-Химки. В 18 часов мы выезжали с территории салона на Просе, Reno Symbol II, 2011 года выпуска, 22000 км. пробег, отпускная цена 395000 рублей. Бывшая турецкоподданная, белая, с МКПП и двигателем K4M 1.6 литра, 16 клапанов. Полный фарш – центральный замок, ABS, air conditioner, гидроусилитель руля и, самое главное, майфун.

У Рольфа таких было восемь штук, все от одного продавца – какая-то кампания, про которую мне сказали, что она брала машины в лизинг для своего персонала. Гарантия на машины кончилась и их сдали взад.
Мы четыре штуки посмотрели и взяли первую – с наименьшим пробегом. На ней ездила женщина, салон как новый, даже каким-то парфюмом пахнет. Правда царапина есть на крыше бардачка. Вообще, состояние узлов и агрегатов на вид как новое, даже радиаторы без замятин. По какой-то тревожащей причине, машина больше стояла, чем ездила :)
Другие машины из этой серии были с пробегами 40-60 ткм и на вид заметно более изношенные. Но и цены были тыщ на 15-20 ниже.

Нам ее подняли на подъемнике, чтобы снизу можно было осмотреть, потом немного покатали (меня за руль не пустили). Если не считать соплей масла под МКПП, снизу я никакого криминала не увидел.

Забегая вперед, могу сказать, что на сервисе мне поменяли задние пружины (у правой отломился нижний виток) и третью (заднюю) опору двигателя – резинка лопнула. С соплями масла из МКПП вопрос пока не решен, надо будет еще раз заехать на сервис. Но, как говорят, почти у всех таких машин сопливит сальник кулисы рычага МКПП – дефект конструкции by design. Многие так и ездят, только раз в год масло подливают. А все остальное в полном порядке.

За сопли масла мне дали скидку в 10 килорублей.
Еще минус – кто-то где-то когда-то куда-то проеб сервисную книжку. Вообще, это серьезный минус. Может ее потеряли с целью скрыть неприятные факты? Но тут я пошел на риск, хотя другим не советовал бы. Без этой сервисной книжки не вышло приобрести гарантию, ибо гарантерам надо подтверждение, что все обязательные ТО были проведены у официального дилера.

Что еще сказать про тот замечательный день? Продавец, Мазанов Юрий, показал себя с самой лучше стороны. Почти во всех вопросах шел навстречу, выжать копейку или воспользоваться нашей неосведомленностью не пытался. Наоборот, отсоветовал от покупки всякого в их салоне, типа зимней резины или страховки, ибо это было бы дороже чем «за углом».

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

В общем, та еще лотерея. Но, похоже, мне повезло. Сервисмены сказали именно так.




original post http://vasnake.blogspot.com/2015/02/blog-post.html

2015-02-09

Как ставить Zope 2.10.7 и Naudoc 6 на Debian 7 amd64

Продолжим эксгумировать СЭД Наудок.
Ранее мы установили Python 2.4 на Debian 7 amd64, теперь посмотрим, как ставить Zope 2.10.7 и сам Naudoc 6. Вместе с сопутствующими библиотеками.

Кстати, если используете утилиту script для сохранения консольного вывода, не забывайте заканчивать ее работу надавив ^d или набрав exit.

Установка пакета egenix-mx-base
The eGenix.com mx Base Distribution for Python is a collection of professional quality software tools which enhance Python's usability in many important areas such as fast text searching, date/time processing and high speed data types.

su -l
tar xvzf /home/valik/t/NauDoc-6/egenix-mx-base-3.2.7.tar.gz
pushd /home/valik/t/NauDoc-6/egenix-mx-base-3.2.7
script -t 2>~/egenix.time ~/egenix.script
/opt/python24/bin/python setup.py install

Без приключений, что не может не радовать.

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

su -l
adduser zope
mkdir /opt/zope
chown zope /opt/zope
mkdir /opt/naudoc
chown zope /opt/naudoc

Компиляция и установка Zope

su -l zope
tar zxf /home/valik/t/NauDoc-6/Zope-2.10.7-final.tgz
pushd /home/zope/Zope-2.10.7-final
script -t 2>~/zope.time ~/zope.script
./configure --prefix=/opt/zope --with-python=/opt/python24/bin/python
make clean
make
make install
/opt/python24/bin/python /opt/zope/bin/mkzopeinstance.py --dir=/opt/naudoc
В процессе были заданы имя админа инстанса его пароль.

Правка конфига инстанса
Наудок хочет однобайтовую кодировку cp1251

nano /opt/naudoc/etc/zope.conf
...
default-zpublisher-encoding windows-1251
effective-user zope

Распаковка и копирование (установка) NauDoc
Установка NauDoc сводится, в основном, к копированию всякого внутрь инстанса

cd ~
mkdir nd
cd nd
unzip /home/valik/t/NauDoc-6/NauDoc-6.zip
cp -R Products/* /opt/naudoc/Products/
cp -R var/Data.fs /opt/naudoc/var/
cp -R lib/* /opt/naudoc/lib/
cp -R Extensions/* /opt/naudoc/Extensions/
Упомянутый в документации zopeedit в дистрибутиве найден не был :(
Впрочем, он особо и не нужен никому.

Установка индексатора текста TextIndexNG2

pushd /opt/naudoc/Products/TextIndexNG2/
script -t 2>~/zope.time -a ~/zope.script
/opt/python24/bin/python setup.py build
su -l
pushd /opt/naudoc/Products/TextIndexNG2/
/opt/python24/bin/python setup.py install

Пробный запуск Zope/NauDoc

su -l zope
/opt/naudoc/bin/zopectl start

Информация о местоположении ключевых элементов

Из управлятора Zope, после его запуска, можно увидеть, где расположены ключевые элементы системы

SOFTWARE_HOME /opt/zope/lib/python
ZOPE_HOME /opt/zope
INSTANCE_HOME /opt/naudoc
CLIENT_HOME /opt/naudoc/var

product_version 6.4.1

Опциональные библиотеки
Установка библиотек, не влияющих на запуск системы

PIL
su -l
aptitude install libjpeg62-dev libjpeg62 zlib1g-dev zlib1g libfreetype6 libfreetype6-dev liblcms1 liblcms1-dev
wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz
tar xvzf Imaging-1.1.7.tar.gz
cd Imaging-1.1.7/

nano setup.py
...
JPEG_ROOT = '/usr/lib/x86_64-linux-gnu'

script -t 2>~/pil.time ~/pil.script
/opt/python24/bin/python setup.py clean
rm -f *.so PIL/*.so
/opt/python24/bin/python setup.py build_ext -i
/opt/python24/bin/python selftest.py
/opt/python24/bin/python setup.py install

Информация о установленном PIL
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux3 2.4.4 (#10, Nov 25 2014, 19:16:43)
              [GCC 4.7.2]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
--- LITTLECMS support available

Установка конвертеров
Установлены ранее
iconv, libfreetype6, libfreetype6-dev

aptitude install libpng12-0 libpng12-0-dev
aptitude install libwmf-bin libwmf-dev
aptitude install wv libwv-dev
aptitude install xlhtml
aptitude install unrtf
aptitude install xpdf xpdf-utils
aptitude install graphviz graphviz-dev libgraphviz-dev python-pygraphviz

После того, как все установлено и завертелось
имеет смысл сделать резервную копию с «чистой» системы.

Установленные пакеты
dpkg --get-selections > ~/installed-software.log
Для восстановления достаточно набрать
aptitude install $(cat ~/installed-software.log | awk '{print $1}')

Запаковать Naudoc/Zope
tar -zcvf ~/zope-backup.tgz /opt/zope
tar -zcvf ~/naudoc-backup.tgz /opt/naudoc

И финальный штрих, демонизация, или
Автозапуск Zope/NauDoc

Скрипт автозапуска
nano /etc/init.d/zope2.10
#!/bin/sh

### BEGIN INIT INFO
# Provides:          zope2.10
# Required-Start:    $syslog $remote_fs $network
# Required-Stop:     $syslog $remote_fs $network
# Should-Start:      $remote_fs
# Should-Stop:       $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start zope2.10 instances
# Description:       Start the instance /opt/naudoc/bin/zopectl
### END INIT INFO

ZVER=2.10
INSTANCES='naudoc'

[ -d /opt/naudoc -a -d /opt/zope ] || exit 0

. /lib/lsb/init-functions

if [ -f "/etc/default/zope$ZVER" ]; then
        . /etc/default/zope$ZVER
fi

if [ "$INSTANCES" = "NONE" -o "$INSTANCES" = "" ]; then
    INSTANCES=''
    log_warning_msg "Zope$ZVER: instances have been disabled, edit /etc/default/zope$ZVER to enable them."
elif [ "$INSTANCES" = "ALL" ]; then
    INSTANCES='*'
fi

case "$1" in
    start|stop|restart)
        p=''; [ "$1" = "stop" ] && p='p'

        if [ -n "$INSTANCES" ]; then
            cd /opt
            for i in $INSTANCES ; do
                    if [ "$i" = "*" ]; then
                        log_success_msg "Zope$ZVER: no instances found."
                        break
                    elif [ ! -d "$i" ]; then
                        continue
                    fi

                    if [ -x /opt/$i/bin/zopectl ] ; then
                        log_begin_msg "Zope$ZVER: ${1}${p}ing $i instance"
                        /opt/$i/bin/zopectl $1 >/dev/null 2>&1
                        log_end_msg $?
                    else
                        log_warning_msg "Zope$ZVER: skipping $i (old/purged)"
                    fi
            done
        fi
        ;;

    force-reload)
        echo "Zope$ZVER doesn't support force-reload, use restart instead."
        ;;

    *)
        echo "Usage: /etc/init.d/zope$ZVER {start|stop|restart|force-reload}"
        exit 1
        ;;
esac

exit 0

Регистрация демона
chmod +x /etc/init.d/zope2.10
chkconfig --add zope2.10

Теперь Naudoc/Zope будет стартовать при запуске хоста, доступ к СЭД открыт на порту TCP 8080.

Ну и хватит на сегодня.

Чуть позже я покажу как установить к Naudoc/Zope frontend Apache httpd, сделать правильный самоподписанный SSL/TLS сертификат, настроить почтовый шлюз через Яндекс.Почта для домена и прочие ништяки.





original post http://vasnake.blogspot.com/2015/02/zope-2107-naudoc-6-debian-7-amd64.html

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) Klaipeda (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) купи/продай (9) Photo (8) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)