Django 1.0 released!
Последние три дня в инете какая-то истерия по поводу выхода браузера Google Chrome. Тысячи статей и отзывов написно, найдены уже баги и проблемы с безопасностью. Но на мой взгляд самая главная новость начала осени -- это релиз замечательного фреймворка Django. Три года разработки, 350 000 строк кода, 4000 коммитов, 2000 багфиксов! Всех поздравляю! Ура!
Coldplay: Viva la Vida
Поклонником Coldplay являюсь уже давно. Их первые три альбома знаю почти наизусть. И вот наконец послушал их последний альбом -- Viva la Vida, который оказался для меня очередным замечательным музыкальным открытием.
Где-то подслушивается влияние U2, а на мой очень субъектвный слух слышится ещё и особое оптимистичное настроение последнего альбома Sigur Ros.
Советую всем послушать и порадоваться.
В какой последовательности апач обрабатывет свои конфигурационные секции.
Начнём без долгих прелюдий. Источник - Configuration Sections из документации апача и его исходники, т.к. в документации не отражены разные тонкости.
Прикаждом запросе конфигурационные секции апача применяются так: сначала сливаются (соединяются, merge)
директивы из конфигурации сервера (httpd.conf) и директивы из конфигурации виртуального хоста (в соответствующеё секции <VirtualHost>), и объединённая конфигурация (merged configuration) исполняется. Затем соединяются директивы из конфигурационных секций типа Directory, Files, файлов .htaccess, и полученная объединённая конфигурация исполняется.
Допустим, что апач обрабатывает запрос http://servername/a/b/index.html, в результате которого будет выдан файл
/www/servername/a/b/index.html. Вот итоговая последовательность применения конфигурационных секций:
Соединяются конфигурации
- httpd.conf
-
<VirtualHost></VirtualHost>
Выполняется соединённая конфигурация
Соединяются конфигурации
<Directory /www/servername/>...</Directory><VirtualHost><Directory /www/servername/>...</Directory></VirtualHost>/www/servername/.htaccess
<Directory /www/servername/a/>...</Directory><VirtualHost><Directory /www/servername/a/>...</Directory></VirtualHost>/www/servername/a/.htaccess
<Directory /www/servername/a/b/>...</Directory><VirtualHost><Directory /www/servername/a/b/>...</Directory></VirtualHost>/www/servername/a/b/.htaccess
<Directory ~ | DirectoryMatch ^/www/servername/>...</DirectoryMatch><VirtualHost><Directory ~ | DirectoryMatch ^/www/servername/>...</DirectoryMatch></VirtualHost><Directory ~ | DirectoryMatch ^/www/servername/a/>...</DirectoryMatch><VirtualHost><Directory ~ | DirectoryMatch ^/www/servername/a/>...</DirectoryMatch></VirtualHost><Directory ~ | DirectoryMatch ^/www/servername/a/b/>...</DirectoryMatch><VirtualHost><Directory ~ | DirectoryMatch ^/www/servername/a/b/>...</DirectoryMatch></VirtualHost><Files | Files ~ index.html>...</Files>в порядке как они записаны в конфиге<VirtualHost><Files | Files ~ index.html>...</Files></VirtualHost>в порядке как они записаны в конфиге<Location | Location ~ >...</Location>в порядке как они записаны в конфиге<VirtualHost><Location | Location ~ >...</Location></VirtualHost>в порядке как они записаны в конфиге
Выполняется соединённая конфигурация
Linus Torvalds, Just for fun
Прочитал сам о рекомендую всем. Книга Линуса Торвальдса "Just for fun". О том, как Торвальдс написал Линукс, и о том, что это для него значит.
Новый альбом Sigur Ros
Sigur Ros выложили свой новый альбом на Last.fm.
Я послушал и рекомендую всем. Очень свежее, интересное, красивое, немного загадочное, будто сказочное, неземное звучание. Слова песен, видимо, на исландском. Уже на второй композиции очевидно, что понять их невозможно. И это плюс. Голос начинает восприниматься как инструмент в ансамбле. Очень всем рекомендую.
IКона. Стив Джобс
Замечательная книга о Стиве Джобсе. Прочитал сам и всем советую. Кстати, первая книга, которую я прочитал с экрана. С экрана своего Motoming.
apache: аутентификация и авторизация #10: авторитарность
Модули процесса аутентификации (mod_auth_basic , mod_auth_digest) и модули авторизации (mod_authz_user, mod_authz_groupfile) имеют директивы, отвечающие за авторитарность этих модулей: AuthBasicAuthoritative On|Off, AuthzUserAuthoritative On|Off, AuthzGroupFileAuthoritative On|Off. Эти директивы позволяют продолжить процесс аутентификации и авторизации следующим модулям. По-умолчанию эти модули авторитарны, т.е. Auth*Authoritative On.
В модуле mod_auth_basic авторитарность работает следующим образом. Обычно, каждый провайдер аутентификации, перечисленный в директиве AuthBasicProvider, пытается аутентифицировать пользователя и, если пользователь не был найден модулем, доступ будет запрещён с ответом 401 Authorization Required. Выключение авторитарности модуля - AuthBasicAuthoritative Off - для таких случаев позволяет не запрещать сразу доступ, а предоставить возможность аутентифицировать пользователя другим модулям. Например, модулям сторонних производителей, которые не могут быть подключены с помощью директивы AuthBasicProvider. Порядок обработки запроса такими модулями не конфигурируется и определяется в их исходном коде.
Для модуля mod_authz_user, например, отключение авторитарности - AuthzUserAuthoritative Off - позволяет продолжить авторизацию следующим модулям (например, mod_authz_groupfile), если не нашлось информации об аутентифицированном пользователе. Пример:
...
AuthzUserAuthoritative Off
Require user john group developers
Модуль mod_authz_user не сможет авторизовать пользователя tom (так как авторизоваться может только пользователь john) и, так как он неавторитарен, позволит продолжить авторизацию следующему модулю - mod_authz_groupfile, которые проверит, принадлежит ли пользователь tom группе developers.
Если все модули в процессе авторизации не смогли авторизовать пользователя и были неавторитарными, последним отработает модуль mod_authz_default, которые запретит доступ 401 Authorization Required.
apache: аутентификация и авторизация #9: mod_authn_default, mod_authz_default
Модуль mod_authn_default является запасным последнем (fallback) модулем в процессе аутентификации.
Если для запроса нет сконфигурированного модуля аутентифиукации (например, mod_auth_basic с AuthType Basic и далее)
модуль mod_authn_default просто отклоняет любые аутентификационные данные
и прекращает обработку запроса со стастусом 401 Authorization Required. Такое может случится, если, например,
mod_auth_basic неавторитарен (AuthBasicAuthoritative Off - об этом следующем посте) и не смог аутентифицировать
пользователя.
Модуль mod_authz_default является запасным последнем (fallback) модулем в процессе авторизации.
Если для запроса не отработал ни один модуль авторизации (например, mod_authz_user с Require user john),
а такое возможно если в Require были неопознанные требования, например, Require unknown requirement,
модуль mod_authz_default просто прекращает обработку запроса со стастусом 401 Authorization Required.
apache: аутентификация и авторизация #8: mod_authn_anon
Модуль mod_authn_anon позволяет аутентифицировать анонимных пользователей. В качестве имени как правило используется anonymous (но можно выбрать любые другие), в качестве пароля -- email. Этот email может быть сохранён в логе. Совместно с другими провайдерами аутентификации (например, mod_authn_file) модуль mod_authn_anon даёт возможность отслеживать доступ зарегистрированных пользователей и держать сайт открытым для незарегистрированных пользователей.
Пример конфигурации с комментариями:
AuthName "Protected area"
# тип аутентификации
AuthType Basic
# список провайдеров аутентификации, работают последовательно
AuthBasicProvider file anon
# путь к файлу с пользователями для mod_authn_file
AuthUserFile /path/to/your/.htpasswd
# Параметры mod_authn_anon
# может ли имя быть пустым или любым (on или off)
Anonymous_NoUserID off
# может ли пароль (т.е. email) быть пустым (on или off)
Anonymous_MustGiveEmail on
# проверять ли, что введеный пароль есть email (on или off)
Anonymous_VerifyEmail on
# логировать ли email(on или off)
Anonymous_LogEmail on
# список имён анонимных пользователей
Anonymous anonymous guest www test welcome
Require valid-user
Модуль mod_authn_anon может работать только с Basic-аутентификацией. Проверка email
(включается директивой Anonymous_MustGiveEmail on) тривиальна - в строке проверяется
наличие символа '@' и '.'.
