Re: вопрос о mime-type

2017-03-07 Пенетрантность itcod
r...@nginx.com Wrote:

> > Мне НЕ нужно глобально менять Сontent-Type в location для всех
> ответов
> > Только для файлов с определёнными названиями.
> 
> Задайте "файлы с определёнными названиями" при помощи location'а,
> внутри которого задайте нужный mime-тип.

Да! Такая конструкция работает. Большое Спасибо!

location / {
  .
  location ~* \.(js|ijs)$ {
default_type application/javascript;
  }
  .
}

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,272787,272802#msg-272802

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: вопрос о mime-type

2017-03-07 Пенетрантность itcod
Добрый день! r...@nginx.com

> > Вопрос как файлу назначить Content-Type всё ещё висит
> Для того чтобы для определённого location’а для всех ответов

Мне НЕ нужно глобально менять Сontent-Type в location для всех ответов
Только для файлов с определёнными названиями.

Спасибо!

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,272787,272795#msg-272795

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: вопрос о mime-type

2017-03-07 Пенетрантность itcod
Илья! Добрый день.

> > Но nginx мне в заголовках выдает:
> > 1.js - Content-type: application/javascript
> > .js - Content-type:  application/octet-stream
> >
> мы сталкивались с тем, что сторонние модули влияют на эту логику.
> попробуйте nginx без модулей ?

Проверил без модулей lua - результат не изменился
Нарыл и проверил на стареньком сервочке с nginx 0.8 и базовым комплектом
модулей по default - результат тот-же.

Файлы вот с такими названиями ".js" ".html" и подобными, идентифицируются
как тип указанный в default_type 
У меня это application/octet-stream

Получается и старые версии и посвежее nginx'ы, и с модулями, и без -
одинаковая логика...
И для nginx - видимо файлы с такими именами это файлы без расширения, и
потому он ставит значение из переменной default_type.

Как же мне всё-таки изменить Content-Type для нужных файлов?

Спасибо!

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,272787,272794#msg-272794

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: вопрос о mime-type

2017-03-07 Пенетрантность itcod
Добрый день Роман!
> Ну нету в никсах расширений, нету!
В никсах нету, а в nginx есть - в файле mime-types :)

Вопрос как файлу назначить Content-Type всё ещё висит
Надеюсь есть решение:)

Спасибо!

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,272787,272791#msg-272791

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: вопрос о mime-type

2017-03-07 Пенетрантность itcod
Константин  добрый день!
> > Имеем два файла: 1.js и .js
> > По моей логике у этих файлов расширение "js", а имена разные, у
> одного есть, а у другого пустое.

> Вообще "1.js" - это файл с именем "1" и расширением "js", а ".js" -
> скрытый файл с именем "js" и без расширения
> 
Да конечно лидирующая точка - это общепринятый идентификатор скрытости. 
Только imho утверждение "пустое имя является идентификатором скрытости" так
же является логичным :)
И в таком контексте - файл не имеет имени, но имеет расширение/я. (например
файл: ".tar.bz2" = это скрытый архив с двойной упаковкой и не имеющий
имени:) )

Cобственно вопросы логики не особенно важны - так как мой второй вопрос
снимает их:
Как в конфигах location, файлу с определённым полным именем(включая
расширения) назначить нужный мне хидер Content-Type.

чтобы стало
.js = Content-Type: application/javascript

Спасибо!

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,272787,272789#msg-272789

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

вопрос о mime-type

2017-03-07 Пенетрантность itcod
Добрый день уважаемые!

Имеем два файла: 1.js и .js
По моей логике у этих файлов расширение "js", а имена разные, у одного есть,
а у другого пустое.
Но nginx мне в заголовках выдает:
1.js - Content-type: application/javascript
.js - Content-type:  application/octet-stream

Подскажите пожалуйста! 
Это только у меня так, или это логика nginx файлам без имени ставить
default_type, несмотря на наличие у файла расширения.

И подскажите пожалуйста, как возможно отдельному файлу (по полному имени с
расширением) установить принудительно персональный mime-type.

Спасибо!!!

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,272787,272787#msg-272787

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: HACK NGINX+DAV

2016-12-04 Пенетрантность itcod
Вадим добрый день!

> SELinux, AppArmor, ...

Реально покраснел от стыда за свой косяк от Вашего мессаджа про selinux 
 
Спасибо огромное про напоминание, что доверять VPS-шаблонам вредно для
кровоснабжения.
Но эта тема уже не этого форума:)

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,271302,271340#msg-271340

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: HACK NGINX+DAV

2016-12-04 Пенетрантность itcod
Геннадий Спасибо!

> внутри этого каталога nginx имеет право удалять
> и переименовывать любые файлы и каталоги

Век живи век учись! Даже не предполагал, что это стандартное поведение оси.
Почему-то всегда думалось, что правила безопасности оси, к правам на файлы и
каталоги,
гораздо жёстче.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,271302,271334#msg-271334

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: HACK NGINX+DAV

2016-12-04 Пенетрантность itcod
> При всех сторонних модулях вы даже не показали конфиг
Туплю может Не видел необходимости при данной ошибке показывать конфиг.

По моей логике считал - что бы я там не написал, это не должно было
позволить воркерам и модулям 
выполнять команды webdav от рута. Возможно я не прав. Сорри! Вот конфиги.

---
nginx.conf

###
#
# This is the main Nginx configuration file.  
#
# More information about the configuration options is available on 
#   * the English wiki - http://wiki.nginx.org/Main
#   * the Russian documentation - http://sysoev.ru/nginx/
#
###

#--
# Main Module - directives that cover basic functionality
#
#   http://wiki.nginx.org/NginxHttpMainModule
#
#--

user  nginx;
worker_processes  2;
worker_rlimit_nofile 16384;

error_log  /var/log/nginx/error.log  notice;
pid/var/run/nginx.pid;

#--
# Events Module 
#
#   http://wiki.nginx.org/NginxHttpEventsModule
#
#--

events {
use epoll;
worker_connections  1024;
multi_accept on;
}



#--
# HTTP Core Module
#
#   http://wiki.nginx.org/NginxHttpCoreModule 
#
#--

http {

client_body_temp_path /tmp/nginx-client-body;
fastcgi_temp_path /tmp/nginx-fastcgi;
uwsgi_temp_path /tmp/nginx-uwsgi;
scgi_temp_path /tmp/nginx-scgi;

proxy_cache_path /opt/nginx/cache levels=1:2 keys_zone=cache:30m
max_size=10G;
proxy_temp_path /opt/nginx/proxy 1 2;
proxy_ignore_headers Expires Cache-Control;
proxy_cache_use_stale error timeout invalid_header http_502;
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;


lua_package_cpath
'/usr/lib64/?.so;/usr/lib64/lua/5.1/?.so;/usr/local/lib/lua/5.1/?.so';
lua_package_path
'/usr/share/lua/5.1/?.lua;/usr/local/lib/lua/?.lua;/usr/share/lua/resty/?.lua;/usr/local/lib/lua/resty/?.lua;/usr/local/lib/lua/resty/core/?.lua;';
lua_shared_dict sha1 10M;

lua_shared_dict a 10M;

include   /etc/nginx/mime.types;
default_type  application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$host"
"$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';

log_format  inweb
'$msec|$remote_addr|$remote_user|$time_local|$request|'
  '$status|$body_bytes_sent|$http_referer|'
  '$http_user_agent|$http_x_forwarded_for';

access_log  /var/log/nginx/access.log  main;

sendfile   on;
tcp_nopush on;
tcp_nodelayon;
keepalive_timeout  65;
keepalive_requests 1000;

gzip  on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.0;
gzip_types text/plain text/css application/json application/x-javascript
text/xml application/xml application/xml+rss text/javascript;

gzip_static on;
gzip_disable FireFox/([0-2]\.|3\.0);
gzip_disable Chrome/2;
gzip_disable Safari;
gzip_disable MSIE[1-6].(?!.*SV1);

limit_req_zone $binary_remote_addr  zone=2client:10mrate=5r/s;
limit_req_zone $binary_remote_addr  zone=system:10m rate=10r/s;
limit_req_zone $binary_remote_addr  zone=update:10m rate=10r/s;
limit_req_zone $binary_remote_addr  zone=social:10m rate=5r/s;
limit_req_zone $binary_remote_addr  zone=com:10mrate=50r/s;
limit_req_zone $binary_remote_addr  zone=itcodcom:1mrate=10r/s;
limit_req_zone $binary_remote_addr  zone=itcod:100m rate=100r/s;

map_hash_bucket_size 128;
map $sent_http_content_type $expires {
default off;
application/pdf 42d;
~image/ max;
}
expires $expires;

#
# The default server
#
server {
listen   80;
server_name  _;
server_name_in_redirect off;
location ~* \.(css|js|ico|atrib|vas|ini) {
gzip_static on;
gzip_disable FireFox/([0-2]\.|3\.0);
gzip_disable Chrome/2;
gzip_disable Safari;
}

error_page 415   = /empty; 
location = /empty {
empty_gif;  # Respond with empty image
}
location / {
root   /usr/share/nginx/html;
in

Re: HACK NGINX+DAV

2016-12-03 Пенетрантность itcod
Максим добрый день.
Что найдено то и показано. Без затей. Для тех кого это может коснуться.
> Этим вы показали только то, что устаревшая версия nginx с кучей сторонних
> модулей имеет возможность переименовывать/удалять директории, на которые
у
> nginx нет прав.
Инет не идеален:) Версия не самая последняя, и модули есть сторонние, и
вероятно тоже не самые последние. 
Предполагаю, что так - не у меня одного:) Сферические кони в идеальном
вакууме это утопия:)))

> Поставьте чистый nginx последней версии из официального репозитория nginx
> или соберите из исходников и тогда продемонстрируйте баг. 
Так и сделаю конечно. 

PS: Да я согласен с вами, что дырка может быть в любом используемом модуле и
в lua. 
"Будем искать"(c)кф Бриллиантовая рука.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,271302,271330#msg-271330

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: HACK NGINX+DAV

2016-12-03 Пенетрантность itcod
Константин спасибо!
Так и сделаю. вообще все излишества уберу при тесте.
Уважаемые если у кого нибудь уже стоит такой минималистический nginx, буду
благодарен 
услышать Ваш результат.
Проверить можно за 2 минуты. Вот тут ролик как это сделать.
https://forum.nginx.org/read.php?21,271302,271327#msg-271327

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,271302,271329#msg-271329

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: HACK NGINX+DAV

2016-12-03 Пенетрантность itcod
Добрый день уважаемые.
Меня попросили подтвердить слова о баге который я описал в первом посте.
Заснял процесс переименования и удаления папки владельца root, гипотетически
не имея на это прав.
Использовались WEBDAV команды MOVE и DELETE которые формировал BitKinex. 

https://www.youtube.com/watch?v=R1pwuqo0gVY

ps: не вошли в ролик тесты с командой COPY хотя там тоже таже проблема.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,271302,271327#msg-271327

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: HACK NGINX+DAV

2016-12-03 Пенетрантность itcod
Эх Виталий! Перед новым годом, временем на танцы с бубном
катастрофически не хватает:))) Проще арендовать готовую VPS'ку на месяц за
250рублей и протестить найденый баг:)

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,271302,271321#msg-271321

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: HACK NGINX+DAV

2016-12-03 Пенетрантность itcod
И так и эдак. Без разницы каким девайсом терминально по ssh на серв в инете
входить 
Если и не прозвучат демо-VPS'ки, для быстрого старта тестов, то через пару
недель как поосвобожусь, разверну у кого нить из своих друзей vps'ку
тестовую под libvirt и сделаю тесты найденой дыры на чистой федорке с
нжиниксом без лишних модулей. Знать бы только какие по мнению авторов nginx
- "ЛИШНИЕ" при подобном тесте:)

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,271302,271319#msg-271319

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: HACK NGINX+DAV

2016-12-03 Пенетрантность itcod
У меня своих только боевой и девел-серв на которых по феншую "ничего
лишнего". Так что варианты с vagrant/ libvirt/etc отпадают. Идеально imho
VPS'ку гдето в инете с привычным федоркой:)

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,271302,271313#msg-271313

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: HACK NGINX+DAV

2016-12-03 Пенетрантность itcod
Дмитрий добрый день!
> Предлагаю повторить это все на с нуля установленной системе и nginx
> без сторонних модулей

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

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,271302,271311#msg-271311

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: HACK NGINX+DAV

2016-12-02 Пенетрантность itcod
>вы ошибаетесь.
Максим! конечно я ошибся в том кто виноват, раз мастер не исполняет а только
инициализирует. Я просто смотрю именно на него косо, так как в связке
nginx-процессов он один имеет права рута. И если это не сам мастер, значит
вероятно права рута из него как-то отдаются функциям в модуле DAV. Если
требуется могу что-то сделать чтобы вы убедились, что дырка существует.

PS: WEBDAV команда COPY так же выполняется над файлами и папками рута и
иного владельца. И ко всему прочему destination на выходе уже c владелцем и
правам nginx.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,271302,271306#msg-271306

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: HACK NGINX+DAV

2016-12-02 Пенетрантность itcod
DAV команда MOVE так же исполняется над папками и файлами любого системного
пользователя

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,271302,271303#msg-271303

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

HACK NGINX+DAV

2016-12-02 Пенетрантность itcod
Обнаружил уязвимость. Надеюсь не я первый и уже есть таблетка.
Команда DELETE (модуля WEBDAV) исполняется мастер-процессом nginx от
пользователя root. Так как по умолчанию мастер-процесс стартует от рута для
доступа к портам 80 & 443 (0-1024).
root  9100  0.0  0.4 331232  7960 ?Ss   14:06   0:00 nginx:
master process /usr/sbin/nginx
nginx 9101  0.1  0.9 388432 18548 ?S14:06   0:11 nginx:
worker process
nginx 9102  0.0  0.8 388164 16620 ?S14:06   0:07 nginx:
worker process
nginx 9103  0.0  0.4 331236  8676 ?S14:06   0:00 nginx:
cache manager process

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

Дырка обнаружена на конфигурации:
nginx version: nginx/1.7.11
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) 
TLS SNI support enabled
configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx
--conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--http-client-body-temp-path=/var/lib/nginx/tmp/client_body
--http-proxy-temp-path=/var/lib/nginx/tmp/proxy
--http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi
--http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi
--http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid
--lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx
--with-pcre-jit --with-debug --with-file-aio --with-ipv6
--with-http_ssl_module --with-http_realip_module --with-http_addition_module
--with-http_xslt_module --with-http_image_filter_module
--with-http_geoip_module --with-http_sub_module --with-http_dav_module
--add-module=/usr/src/1/nginx-dav-ext-module-master --with-http_flv_module
--add-module=/usr/src/1/f4f-hds-master --with-http_mp4_module
--with-http_gzip_static_module --with-http_random_index_module
--with-http_secure_link_module --with-http_degradation_module
--with-http_stub_status_module --with-http_perl_module --with-mail
--with-mail_ssl_module --with-http_auth_request_module
--add-module=/usr/src/1/echo-nginx-module-master
--add-module=/usr/src/1/nginx_md5_filter-master
--add-module=/usr/src/1/ngx_devel_kit-master
--add-module=/usr/src/1/lua-nginx-module-master
--add-module=/usr/src/1/set-misc-nginx-module-master --with-cc-opt='-O2 -g
-pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m64 -mtune=generic' --with-ld-opt='
-Wl,-E,-rpath,/usr/local/openresty/luajit/lib' 

ngx_http_dav_ext_module.c 30.05.2013

Первая мысль которая приходит в голову - это стартовать мастер-процесс
nginx, как и воркеры, от пользователя nginx. Но тогда по логике демон
потеряет доступ к портам 80 и 443. или не потеряет?  
Уважаемые подскажите пли! как дырку правильно запаять!

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,271302,271302#msg-271302

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: разный expires для расширений и без location

2016-01-26 Пенетрантность itcod
Максим спасибо.
Подскажите пожалуйста области действия команды map в конфигах
А то ставил и в location и в server секции, и кругом получаю
[emerg] map directive is not allowed here
Неужели "это счастье" можно применять только в глобальном масштабе (в секции
http)? 

Спасибо.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,264076,264130#msg-264130

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

разный expires для расширений и без location

2016-01-24 Пенетрантность itcod
Добрый день уважаемые!
Подскажите существует ли метод назначать разные expires для разных
расширений файлов без использования разных location для этого. Знаю что в if
не обернуть. Есть ли альтернатива?

Ситуация побробнее:
Существует location в котором установлены различные lua обработчики и
переменные. И очень не хотелось бы плодить одно и тоже в разных location
только из за пары ключей expires и кэшконтроля.

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

location / {
limit_req   zone=itcod  burst=200 nodelay;
limit_rate  2048k;
set $auth_dav private; #none/private
access_by_lua_file /etc/nginx/lua/auth-dav.lua;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
dav_access user:rw group:rw;
client_body_temp_path /opt/itcod-dav.tmp/;
client_max_body_size 0;
autoindex on;
root $dir;
header_filter_by_lua_file /etc/nginx/lua/itcod-exchange.lua;
set $md5index on; #on/off nil=off # вкл/выкл обработчик
set $md5index_hash md5; #none/md5/md4/sha1/sha/ripemd160 nil=none # тип
выводых хэшей
set $md5index_size 5; #kb nil=unlimit # не считать для файлов более 
N
kb
set $md5index_path on; #on/off nil=off  # заменять относительный путь
ссылок на полный URI
set $md5index_nonblank on; #on/off nil=off # заменить множественные 
пробелы
одним
set $md5index_type on; #on/off nil=off # добавит в строки описание типа
file/directory/etc...
set $md5index_ico http://ihome.itcod.com/max/projects/libs/icons16ext/; 
#
путь к библиотека иконок
set $md5index_icopref icon-; # префикс имени файла иконки
#set $md5index_icosuf -icon; # суфикс имени файла иконки
set $md5index_icoext .gif; # расширение файла иконки
set $md5index_win _blank; # target window for !winext! files
set $md5index_winext htm.html.txt; # file extension for target windows
body_filter_by_lua_file /etc/nginx/lua/md5index.lua; # addon
обработчик

}

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,264076,264076#msg-264076

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Captcha на lua

2015-07-15 Пенетрантность itcod
ещё есть вот такой проект 
https://github.com/mrDoctorWho/lua-captcha
я его не пробовал, потому что демки не видел.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,260228,260312#msg-260312

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Captcha на lua

2015-07-15 Пенетрантность itcod
я сейчас как раз рисую 
в луашку встраиваю обращение к гуглёвому сервису recaptcha. 
если подойдёт подскажу/покажу чего знаю.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,260228,260310#msg-260310

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: забыл слэш в конце url получил сусанин-autoindex

2015-07-14 Пенетрантность itcod
Илья добрый день!
сорри за долгое молчание. прозевал ваш коментарий. отпуск:)

да я и решил задачу как написал, подменяя относительные пути полными. 

>> "во-первых, не совсем понятно, зачем нужны абсолютные пути."
Ситуация которую я решил таким методом описана в первом письме этой ветки
http://forum.nginx.org/read.php?21,258337,258337#msg-258337
А вкратце при отсутствии закрывающего слэша в uri, модуль автоиндекс
откусывает последнее значение после слэша, не считая его папкой и далее
относительные пути строит относительно папки верхнего уровня. Соответственно
все ссылки получаются битыми так как ведут в никуда. Поведение и у nginx и у
браузеров соответствует стандартам. А в результате получаем ошибку. И
единственный вариант соблюсти текущие стандарты и решить возникшую задачу, я
увидел в применении абсолютных путей в автоиндексе.

>>"autoindex это ведь для браузеров ?"
Не только для браузеров Илья.
Мне данное поведение автоиндекс, на запрос с отсутствующим слешем, очень
мешало в глюкавых-webdav-клиентах которые при get-запросах (это и чтение и
создание папок) не добавляют сами  закрывающий слэш если обращается к папке.
А таких imho сейчас пока 90% и в win и в android. 

И да! вы совершенно правы давая варианты когда вам потребовались полные
пути. мне подобный индексный файл нужен не только для визуально правильного
ручного функционирования и для толстых webdav-клиентов, а так же для
обращения JS-клиентов(сайтов) к индексному файлу для получения точных
указателей на размещаемый файл и его контрольная сумма(хэш) (делаю для
планируемого JS WEBDAV UI c пакетным контролем хэшей).

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

"(если есть proxy_pass куда-то и есть терминация https на nginx)"
Илья у меня рабочий nginx как раз сидит за proxy_pass nginx... полёт
нормальный
А терминация на https это что? у меня подставляет тот протокол по которому
прилетел запрос. 
Прилетел http будет http в абсолютных путях. прилетит https - будет https. 
И имя сервера подставляется к которому обратились. может я Вас не правильно
понял?

В общем протачивал эту програмку как составляющую проекта лёгкого
многопользовательского webdav-диска на основе nginx. 


>> autoindex это ведь для браузеров ? так в чем проблема, отдайте им
относительные ссылки.
Эх пусть я буду единственным всемирным чайником который забывает URL
подпирать сзади палкой:)

PS: Спасибо на добром слове.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258337,260300#msg-260300

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Nginx+Luа= Немножко облачно с WEBDAV

2015-06-27 Пенетрантность itcod
Добрый день уважаемые! 
Выставляю на Ваш суд свою поделку. Просьба сильно не пинать:) Конечно ещё
сыровата... но я уже кушаю:)))
Просто не нашёл аналогичного... может плохо искал вот и пришлось
покодить немножко. Надеюсь полезная будет:)


Сервис "ITCOD-DISK" Облачное хранилище.

-- Copyright (c) 2015 by Yura Vdovytchenko (m...@itcod.com)
-- Copyright (c)itcod 2010-2015
-- version: 15.06.27
-- license: MIT


Назначение: Сетевой диск(хранилище) файлов по технологии  WEBDAV. 
С публикацией по http/https и индексный файл с контрольными суммами
md5/etc.
Предназначен для хранения и публикации NoSQL информационных массивов.

Принцип: Сервис-ориентированная архитектура построения. Nginx обеспечивает 
стандартный протокол WEBDAV over HTTP/HTTPS. Lua-модули itcod обеспечивают 
расширение функций и сетевые сервисы управления ITCOD-DISK'ом.
ITCOD UI WWII обеспечивает WEB-интерфейс между пользователем и сервисами.

ОТЛИЧИЕ ОТ АНАЛОГОВ
NoLAMP NoLEMP NoSQL SOA
На сервере только Nginx + Lua и никаких PHP SQL и т.д.

БАЗОВЫЕ КОМПОНЕНТЫ ITCOD-DISK

LINUX - операционная система
NGINX - http daemod (with WebDAV and Lua)
LUA - язык программирования
Resty - библиотека Lua
add - дополнительные библиотеки (см. require в *.lua)
ITCOD Lua Modules & Services - модули SOA ITCOD для операций с хранилищем
ITCOD WWII - web-интерфейс для ITCOD-DISK (в разработке)

БАЗОВЫЕ КОМПОНЕНТЫ ITCOD Lua Modules & Services

auth-dav.lua - авторизатор для HTTP/HTTPS/WEBDAV
md5index.lua - расширитель функций autoindex NGINX
itcod-user.lua - создание пользовательских юзербоксов на диске WEBDAV
itcod-exchange.lua - сервис транспорта файлов между пользователями и
дисками
itcod-search.lua - REST-сервис авторизованного поиска информации в закрытых
пользовательских массивах
libs/ - библиотека иконок типов файлов для md5index

Подробнее о компанентах см. https://ihome.itcod.com/max/project/


КОНФИГУРАЦИЯ NGINX

nginx version: nginx/1.7.11
built by gcc 4.4.4 20100630 (Red Hat 4.4.4-10) (GCC) 
TLS SNI support enabled
configure arguments: 
--prefix=/usr/share/nginx 
--sbin-path=/usr/sbin/nginx 
--conf-path=/etc/nginx/nginx.conf 
--error-log-path=/var/log/nginx/error.log 
--http-log-path=/var/log/nginx/access.log 
--http-client-body-temp-path=/var/lib/nginx/tmp/client_body 
--http-proxy-temp-path=/var/lib/nginx/tmp/proxy 
--http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi 
--http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi 
--http-scgi-temp-path=/var/lib/nginx/tmp/scgi 
--pid-path=/run/nginx.pid 
--lock-path=/run/lock/subsys/nginx 
--user=nginx 
--group=nginx 
--with-pcre-jit 
--with-debug 
--with-file-aio 
--with-ipv6 
--with-http_ssl_module 
--with-http_realip_module 
--with-http_addition_module 
--with-http_xslt_module 
--with-http_image_filter_module 
--with-http_geoip_module 
--with-http_sub_module 
--with-http_dav_module 
--add-module=/usr/src/nginx-dav-ext-module-master 
--with-http_flv_module 
--add-module=/usr/src/f4f-hds-master 
--with-http_mp4_module 
--with-http_gzip_static_module 
--with-http_random_index_module 
--with-http_secure_link_module 
--with-http_degradation_module 
--with-http_stub_status_module 
--with-http_perl_module --with-mail 
--with-mail_ssl_module 
--with-http_auth_request_module 
--add-module=/usr/src/echo-nginx-module-master 
--add-module=/usr/src/nginx_md5_filter-master 
--add-module=/usr/src/ngx_devel_kit-master 
--add-module=/usr/src/lua-nginx-module-master 
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
-fstack-protector 
--param=ssp-buffer-size=4 -m64 -mtune=generic' 
--with-ld-opt=' -Wl,-E,-rpath,/usr/local/lib'


КОНФИГУРАЦИЯ ВИРТУАЛЬНОГО WEB-СЕРВЕРА (WEBDAV)

Приведена конфигурация nginx работающего на виртуальной машине 
за проксирующим первичным nginx. Для работы на первичном вам необходимо
изменить listen на 80 и 443. А так же не забудьте поправить основные 
настройки на ваши собственные (имена сервера и т.д.)

Файл ihome.conf

server {
listen   7070;
server_name "~^ihome\d+\.itcod\.com$"
ihome.virtual.ko
ihome.itcod.com
;
server_name_in_redirect off;
expires epoch;
ssl  off;
#default_type application/octet-stream;
set_real_ip_from 10.255.255.7;
real_ip_header  X-Forwarded-For;
real_ip_recursive on;
access_log /var/log/nginx/ihome.itcod.com-access.log main;
resolver 10.255.255.1 [::1]:5353;
charset utf-8;

set $dir /opt/home;
set $testdir $dir$uri;
set $uri_type none;
if (-d $testdir) { # такая папка есть
set $uri_type dir;
rewrite ^(.*)$ $1/;
rewrite ^(.*)/+$ $1/;
}
if (-f $testdir) { # такой файл есть
set $uri_type file;
}
if ($request_method = "MKCOL") {
rewrite ^(.*)$ $1/;
rewrite ^(.*)/+$ $1/;
set $uri_type dir; #клиент webdav создает папку
}
if ($request_method = "PUT") {
set $ur

Re: nginx + dav + dav_ext

2015-05-19 Пенетрантность itcod
Добрый день уважаемые!

>On 06.05.2012, at 22:17, Alexey V. Karagodov wrote:
> и планируется-ли внедрение методов LOCK / UNLOCK ?

>автор ответил:
>arut commented on 54cebc1 4 minutes ago
> 2) да, планируется, как только у меня будет время, сделаю

Уважаемые кто нибудь вкурсе!?
есть ли подвижки с 12го года с LOCK/UNLOCK?

PS: Если воз и ныне там, то может кто нить знает как правильно заглушку для
встроенного Microsoft-WebDrive-MiniRedir в конфиге написать что то
типа:

if ($request_method = LOCK) { # Unsupported, allways return 204 (No
Content).
return  204;
}

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

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,225769,258995#msg-258995

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: забыл слэш в конце url получил сусанин-autoindex

2015-05-10 Пенетрантность itcod
РЕШЕНО.
Решил проблемку с относительными путями в body autoindex заменяя их полными
URI.
Тем самым привожу ссылки к однозначному толкованию в браузерах.
Написал обработчик body на lua. 
https://github.com/itcod/md5index
Может кому пригодится кроме меня:)

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

Nginx addon for function autoindex. 
Add in body html:
   1. HASH code files. Support secure hash: md5 md4 sha1 sha ripemd160;
   2. Rewrite relative path body html to full URI path for files;
   3. Add extension icons for folders and files. Require icons lib. 
   Example icons lib 16x16:
http://ihome.itcod.com/max/projects/libs/icons16/
   Test computation in Lua (5.1)

---
set $md5index on; #on/off nil=off # вкл/выкл обработчик
set $md5index_hash md5; #none/md5/md4/sha1/sha/ripemd160 nil=none # тип
выводых хэшей
set $md5index_size 5; #kb nil=unlimit # не считать для файлов более 
N
kb
set $md5index_path on; #on/off nil=off  # заменять относительный путь
ссылок на полный URI
set $md5index_nonblank on; #on/off nil=off # заменить множественные 
пробелы
одним
set $md5index_type on; #on/off nil=off # добавит в строки описание типа
file/directory/etc...
set $md5index_ico http://ihome.itcod.com/max/projects/libs/icons16/; # 
путь
к библиотека иконок
set $md5index_icopref icon-; # префикс имени файла иконки
#set $md5index_icosuf -icon; # суфикс имени файла иконки
set $md5index_icoext .gif; # расширение файла иконки
body_filter_by_lua_file /etc/nginx/lua/md5index.lua; # addon
обработчик

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258337,258782#msg-258782

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: постобработка ответа скриптом lua

2015-04-26 Пенетрантность itcod
mva добрый день!
спасибо. 
на чердак... и учит его учить и учить:)

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258380,258385#msg-258385

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: постобработка ответа скриптом lua

2015-04-26 Пенетрантность itcod
нашёл на просторах вот такое
body_filter_by_lua_file
не знаю подойдёт или нет...

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

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258380,258381#msg-258381

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

постобработка ответа скриптом lua

2015-04-26 Пенетрантность itcod
Добрый день уважаемые!
Просветите плиззз! Как реализовать сабж.
Необходимо чтобы локейшн отработал всё что положено (модулями и скриптами)
сгенерил какойто ответ,
и этот ответ в результате поступил на обработку скрипту lua.

Возможно ли такое? если да то как?

ЗЫ: Реально задача заключается в том что в локейшене модуль webdav
отрабатывает команду PUT и принимает от пользователя файл. В конце этого
процесса - когда пользователю отдается ответ (успех или неудача) мне
необходимо выполнить действия над этим полученным файлом.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258380,258380#msg-258380

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: забыл слэш в конце url получил сусанин-autoindex

2015-04-24 Пенетрантность itcod
Сам вижу только - тестами проверить дав клиентов на поддержку HTTP/1.1 и
кода

307 Temporary Redirect — запрашиваемый ресурс на короткое время доступен по
другому URI, указанный в поле Location заголовка. Этот код был введён вместе
с 303 вместо 302-го для избежания неоднозначности. Введено в RFC 2616
(обновление HTTP/1.1).

Хотя сильно сомневаюсь что сработает.
Буду благодарен если кто то подскажет рабочее решение или ещё варианты
решения.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258337,258347#msg-258347

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: забыл слэш в конце url получил сусанин-autoindex

2015-04-24 Пенетрантность itcod
Валентин добрый день!
Спасибо за науку. Хорошая вещь стандарты:)

Перефразирую вопрос. 
Существуют ли какие либо методы передать браузеру правильный url (с слэшем)
и заставить баузер исправить url не инициируя это действо кодом 301? По
аналогии как из JS можно поменять не перечитывая страницу. Дело в том, что
клиенты WEBDAV водимо не любят 301 и рвут соединение (видел у BitKinex)

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258337,258346#msg-258346

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

забыл слэш в конце url получил сусанин-autoindex

2015-04-23 Пенетрантность itcod
Добрый день уважаемые!
Столкнулся с странным поведением толи браузеров... толи autoindex в
location... толи своими кривыми ручками Странность проявляется в
различном отображении путей ссылок (нижняя строка браузера) при наведении на
ссылку в листинге autoindex. Проявляется при отсутствии закрывающего слэша в
url
Можете взлянуть вживую
пример правильного поведения: http://ihome.itcod.com/max/projects/ 
пример неправильного поведения: http://ihome.itcod.com/max/projects 
(СЛЭШ ЗАКРЫВАЮЩИЙ ЗАБЫЛ:))

В обоих случаях страница формируется вроде одинаковая... не увидел
разницы...

Index of /max/projects//

Index of /max/projects//../
auth-dav/ 
23-Apr-2015 18:31   -
itcod/
21-Apr-2015 10:32   -



Но если навести на ссылку auth-dav (если слеш забыли в конце) и посмотреть
внизу куда ведёт путь... то увидим что "project" отрезан и нам предлагается
перейти на http://ihome.itcod.com/max/auth-dav/  Собственно в никуда она и
ведёт... ведь правильно это http://ihome.itcod.com/max/projects/auth-dav/

Кто слопал project при потеряном слэше? как его вернуть при потеряном
слэше?

Проверял в браузерах Opera и SeaMonkey

server {
listen   80;
server_name  dav.example.com;
server_name_in_redirect off;
access_log /var/log/nginx/dav.example.com-access.log main;
#resolver 10.255.255.1 [::1]:5353;
charset utf-8;

set $dir /opt/home;
set $testdir $dir$uri;
set $uri_type none;
if (-d $testdir) {
set $uri_type dir;
rewrite ^(.*)$ $1/;
rewrite ^(.*)/+$ $1/;
}
if (-f $testdir) {
set $uri_type file;
}
if ($request_method = "MKCOL") {
rewrite ^(.*)$ $1/;
rewrite ^(.*)/+$ $1/;
set $uri_type dir;
}
set $sadm_passwd .uhtpsw;
set $user_passwd .htpasswd; #user:password[crypt(3)/md5/sha1]
set $user_permit .htpermit; #user:GET,PUT,OPTIONS
set $user_permit_default GET,PROPFIND,OPTIONS; # Allow

merge_slashes on;

location / {
access_by_lua_file /etc/nginx/lua/auth-dav.lua;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
dav_access user:rw group:rw;
client_body_temp_path /opt/itcod-dav.tmp/;
client_max_body_size 0;
autoindex on;
root $dir;

}
location ~/\.uht {
deny all;
}

}

авторизатор auth-dav.lua если потребуется тут
http://ihome.itcod.com/max/projects/auth-dav/

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258337,258337#msg-258337

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: как вывести русские буквы в окне авторизации

2015-04-23 Пенетрантность itcod
о точно я прочел что 2000... и чвото у мня калькулятор сбойнул:)
15 лет imho неверно задача поставлена похоже
вот и не решается:)

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258313,258329#msg-258329

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: как вывести русские буквы в окне авторизации

2015-04-23 Пенетрантность itcod
Максим добрый день!
позитивное чтиво:))) сенькс
5лет без результата знач ещё не менее 10ти будут кота за хвост
таскать:)))

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258313,258327#msg-258327

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: как вывести русские буквы в окне авторизации

2015-04-23 Пенетрантность itcod
:) 
конечно солидарен!!! 
сферический конь в идеальном вакууме идеален по определению:)

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258313,258326#msg-258326

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: как вывести русские буквы в окне авторизации

2015-04-23 Пенетрантность itcod
Илья добрый день!
Та чво тут удивляться:) сколько идей столько и велосипедов:)

я так понимаю, что раз эти вопросы с кодировками базовой авторизации за 20
лет так и не утрясли на уровне стандартов... то тоже придётся свой вилисАпед
выпиливать или колеса отпилить:))
"пилите Шура"(с)Osя :

Спасибо Илья!

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258313,258322#msg-258322

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: как вывести русские буквы в окне авторизации

2015-04-23 Пенетрантность itcod
> у меня что то не сработало из lua
ошибся сработало только похоже браузеры не поняли этой конструкции 
походу этот вариант неживой ещё...
а как тогда?

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258313,258318#msg-258318

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: как вывести русские буквы в окне авторизации

2015-04-23 Пенетрантность itcod
нарыл вот этот документ
The 'Basic' HTTP Authentication Scheme
draft-ietf-httpauth-basicauth-update-07
https://tools.ietf.org/html/draft-ietf-httpauth-basicauth-update-07#section-2.1

где описывается вот такая схема:
WWW-Authenticate: Basic realm="foo", charset="UTF-8"

а работает ли такое в nginx?
у меня что то не сработало из lua 
да и как в стандартный auth_basic такую конструкцию вписать..
???

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258313,258316#msg-258316

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

как вывести русские буквы в окне авторизации

2015-04-23 Пенетрантность itcod
Здравствуйте уважаемые!

в секции server имею запись
charset utf-8;

в location имею
auth_basic "Авторизация"
auth_basic_user_file /path/.htaccess

Открываю браузерами и вижу в окне запроса юзера+пароля
«ÐÐ²Ñ‚оризация»

curl показывает заголовок content-type "text/html; charset=utf-8"
видимо браузеры не понимают что в WWW-Authenticate кодировка utf-8

Подскажите плиззз как это вылечить. Как браузерам сообщить в какой кодировке
передан им хидер WWW-Authenticate

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258313,258313#msg-258313

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Пенетрантность itcod
>> поставьте CEPH
Илья спасибо:) хороший совет:)
Наверное интересный софт. я его обязательно погрызу на досуге 
На всё время нужно... Для WEBDAV, я знаю на следующие этапы JS и Perl
либы 
а S3, это всё с нуля. В умке по S3 шаром покати... ток амазон и
всплывает:)

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258179#msg-258179

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Пенетрантность itcod
Добрый день Александр!
Да там получается пара друг за дугом. Фронт старичёк
Ура!!! Вы совершенно правы!!! Обратился BitKinex к внутреннему
Он обрывает PUT сразу!!!

<<< PUT /IMG_20150414_184225.jpg HTTP/1.1
<<< Host: home.virtual.ko:7070
<<< User-Agent: BitKinex/3.2.3
<<< Accept: */*
<<< Pragma: no-cache
<<< Cache-Control: no-cache
<<< Content-Length: 696983
<<< Content-Type: application/octet-stream
<<< Translate: f
<<< Authorization: Basic блаблабла==
>>> HTTP/1.1 405 Not Allowed
>>> Server: nginx/1.7.11
>>> Date: Sat, 18 Apr 2015 05:25:34 GMT
>>> Content-Type: text/html
>>> Content-Length: 173
>>> Connection: keep-alive
Connection closed

Спасибо огромное
Надо покурить эту инфу...

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258178#msg-258178

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Пенетрантность itcod
добавил в location конструкцию
if ($request_method = PUT) {
return 403;
}

по прежнему PUT прокачивает холостые гигобайты трафика! :(

Буду рад мыслям сообщества!
какими ещё существующими средствами nginx, можно всё таки прекратить такое
"сверхлояльное" поведение nginx с настырными PUT'анами:)))

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258163#msg-258163

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Пенетрантность itcod
Упростил схему. 
1. из dav_methods изъял PUT
2. отключил луа авторизатор
тестил BitKinex'ом

Результат: метод PUT не блокирует nginx, хотя он запрещён в модуле DAV.
то есть всё как было. сначало принимаем большой файл, а потом говорим, что
нам этого нельзя.

server {
listen 80;
server_name dav.example.com;
server_name_in_redirect off;
access_log /var/log/nginx/dav-access.log main;
location / {
access_by_lua_file /etc/nginx/lua/auth-dav1.lua;
dav_methods DELETE COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
dav_access user:rw group:rw;
client_body_temp_path /opt/itcod-dav.tmp/;
client_max_body_size 0;
autoindex on;
root /opt/home/;
}
location ~/\.ht {
deny all;
}
}

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258162#msg-258162

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Пенетрантность itcod
проверил Access-Control-Allow-Methods
- проблема сохранилась nginx разрешает заливать в себя сколько влезет

BitKinex - послал PROPFIND
nginx - ответил Access-Control-Allow-Methods: GET
BitKinex - игнорировал хидер и инициировал PUT
nginx - разрешил PUT и получил файл
[lua] блокировал его размещение HTTP/1.1 405 Not Allowed
:(

Resolving host name "dav.example.com" ...
Connecting ( home.itcod.com => ip: 10.1.1.1, port: 80 )
Connected (10.1.1.1:80)
<<< PROPFIND / HTTP/1.1
<<< Host: home.itcod.com
<<< User-Agent: BitKinex/3.2.3
<<< Accept: */*
<<< Pragma: no-cache
<<< Cache-Control: no-cache
<<< Depth: 1
<<< Content-Length: 220
<<< Content-Type: text/xml
<<< Authorization: Basic блаблабла==
>>> HTTP/1.1 207 Multi-Status
>>> Server: nginx/0.8.54
>>> Date: Fri, 17 Apr 2015 15:01:13 GMT
>>> Content-Type: application/octet-stream
>>> Transfer-Encoding: chunked
>>> Connection: keep-alive
>>> Access-Control-Allow-Methods: GET
<<< PUT /IMG_20150414_184225.jpg HTTP/1.1
<<< Host: home.itcod.com
<<< User-Agent: BitKinex/3.2.3
<<< Accept: */*
<<< Pragma: no-cache
<<< Cache-Control: no-cache
<<< Content-Length: 696983
<<< Content-Type: application/octet-stream
<<< Translate: f
<<< Authorization: Basic блаблабла==
>>> HTTP/1.1 405 Not Allowed
>>> Server: nginx/0.8.54
>>> Date: Fri, 17 Apr 2015 15:01:19 GMT
>>> Content-Type: text/html
>>> Connection: keep-alive
>>> Content-Length: 173
Connection closed

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258158#msg-258158

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Пенетрантность itcod
ЗЫ
>>Т.е. ситуация такая:
>> DAV-модуль говорит серверу, что он готов получать и обрабатывать PUT.
>> Сервер, следовательно, считает PUT валидным запросом.

а ваш коментарий про OPTIONS и PUT 
а если я из lua попытаюсь изменить OPTIONS то PUT для DAV-модуля будет
инвалидным.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258152#msg-258152

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Пенетрантность itcod
mva добрый день ещё раз:)

>>Ну, у меня на сервере с отключенным PUT, например, 405+400 
>>выбрасывается сразу, не получая содержимое файла.
А у вас это в динамике или статично прописана блокировка? если динамично
поделитесь идеей плиззз...

>> Другое же дело, когда метод фигурирует в разрешённых у сервера на более
низком
>> уровне (module_http_dav) 
Я пытался решить задачку на этом уровне... мня предложили порешать её в этой
точке :)))
http://forum.nginx.org/read.php?21,258024,258045#msg-258045

>> и рулится уже в access-модуле (да ещё и в ngx_lua, что ещё дальше) ;)
А куда деваться я пробовал решить её на иных уровнях... а там переменные
конфг не поддерживает и потому динамику не организовать

>>Т.е. ситуация такая:
>> DAV-модуль говорит серверу, что он готов получать и обрабатывать PUT.
>> Сервер, следовательно, считает PUT валидным запросом.

mva можно подробнее!!! 
Вы хотите сказать, что если я в хидерах укажу что PUT запрещён - то nginx
откажется принимать тело если поймает на входе PUT? И это
произойдёт вне зависимости, будет клиент послушным мальчиком, или будет
пихать пальцы во все дырки... не обращая вниание на анонсы nginx???
ВЫ В ЭТОМ УВЕРЕНЫ?

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

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258151#msg-258151

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Пенетрантность itcod
Илья добрый день.
>> если клиент говорит "Expect: 100-Continue", то в этом случае вы можете
ему сказать 405 сразу (или ответить 100-м кодом).
Спасибо Илья. Понял принцип.

>>без этого хедера - да, ответить можно, только получив запрос полностью
Нескромный вопрос так и оставим существовать эту PUT дырку? 
пока кого нибудь не заклюеет жареный петух

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258148#msg-258148

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Пенетрантность itcod
mva добрый день
>>А вы, всё-таки, ответьте, пожалуйста, на вопрос, почему вы не хотите
убрать
PUT из OPTIONS? ;)

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

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258147#msg-258147

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Пенетрантность itcod
PS: У меня дежавю. прецедент вспомнился подобная тема обсуждалась в
годах 1995 в fido-конференции по ifcico. Актуальность подобных холостых
передач там была очень высокая, из за ограниченного кол-ва каналов передачи,
их низких скоростей и высокой стоимости.. как результат реализовали обрыв
подобных сессий для предотвращения излишних затрат и освобождения линий.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258137#msg-258137

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-16 Пенетрантность itcod
mva добрый день!
>>На PUT он отвечает "нельзя" сразу по получении (т.е. по окончании)
*запроса*.
Да. вы описываете ситуацию верно... как я её вижу.

1. получение nginx'ом заголовка сообщения
2. получение тела сообщения
[... lua ...] -> 405

>> А отвечать "нельзя" по получении одного лишь заголовка, не дожидаясь тела
—
неправильно.

Если не затруднит обоснуйте плиззз свою точку зрения.

Моя такова:
Если метод запрещён внутри (и не важно знает об этом клиент или нет), то
можно и даже нужно обрывать соединение и вернуть код 405!. Зачем нам
получать огромное тело сообщения, если мы не обрабатываем этот метод и не
будем обрабатывать тело.

Пример:
Инициирую 1000-1 сессий, игнорирую рекомендации nginx в OPTION и Origin,
и каждая сессия инициирует PUT video.mp4 размером скажем 4G. С большой долей
вероятности положу атакуемый сервер. А даже если не положу, то заспамлю и
загружу холостой работой.

Следовательно при обработке PUT если сервер оборвал получение и вернул код
ошибки 405 то передавать тело клиенту уже не предоставляется возможности.
imho это логично и устраняет описанную в первом сообщении проблему. 

И отсуда вытекает вопрос к разработчикам о внутренностях nginx.
существует ли возможность реализовать запуск выполнения авторизатора на lua
между двумя этапами обработки.

1. получение nginx'ом заголовка сообщения
[... lua ...] ->405
2. УЖЕ НЕ! получаем тела сообщения

Или существуют ещё какие либо более простые методы решения.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258136#msg-258136

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-16 Пенетрантность itcod
Илья добрый день!
>>вы сами клиенту сказали, что поддерживаете PUT, он делает PUT, вы его
фейлите.
прикиньте, как клиент расстраивается от такого расклада ))

Это спорный вопрос расстраивается или просто некоректна логика обработки
ответов от сервера в данной точке программы клиента:) Если бы nginx сразу на
PUT ответил 405 (Method Not Allowed), то все некорректности по обработке
кода ответа можно было бы свалить на клиента, и оповестить их разработчика.

В данном случае я вижу выше этой ошибки BitKinex по обработке кодов,
некорректную с моей точки зрения обработку команды PUT у nginx. И именно по
ней я пытаюсь выяснить жук это или фича такая.
Если жук - то понятно, что проясняем сознание и в очередь на лечение.
Если фича - то хотелось бы понять, в чём прелесть перевешивающая
недостатки.

Запросы методом OPTIONS при PUT:
BitKinex - не использует
FAR-NetDrive - использует

Даже тут чехарда. Да я буду пытаться сказать клиентам, что использовать
можно, а что нельзя...
Только это imho косметический костыль. Так как тот кто специально решит
проигнорировать рекомендации сервера (я имею в виду если кому захочется
положить сервер), он всегда сможет выполнить, то что я обнаружил. А это imho
с точки зрения надёжности nginx большой минус. Да и я сам делая самописный
WebDAV клиент ориентировался бы больше на обаботку ответов и уже во втором
эшелоне на рекомендации сервера.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258134#msg-258134

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Динамичное время timeout

2015-04-16 Пенетрантность itcod
а интересно proxy_* в if завернуть можно? проверь
конечно это не динамическое будет, а одна ступенька... 
но если сработает... то костыль на время необходимости сгодится...

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,257773,258127#msg-258127

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-16 Пенетрантность itcod
Илья добрый вечер!
>> чтобы ответить до начала передачи файла, надо реализовать "Expect:
100-Continue"

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

и получаем что вариант Expect: 100-Continue возможен только в сети идеальных
законопослушников:

зы: заранее сорри - может я чегото не правильно понимаю про Expect-Continue
- ни разу ещё не реализовывал эту схему взаимодействия. обходился просто
разрешениями методов в орижине... но тот вариант тоже не фонтан так как
имеет ту же проблему - обработает клиент или проигнорит.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258119#msg-258119

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-16 Пенетрантность itcod
Илья добрый день!
>>еще можно попробовать реализовать запрет PUT таким образом, что в
ответе на OPTIONS не показывать PUT

А тут мы упираемся в корректность реализации клиента WEBDAV о которой нам
ничего не известно... не особо хочется "наслово" полагаться на соответствие
всех возможных webdav клиентов букве стандарта

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258118#msg-258118

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-16 Пенетрантность itcod
и на эту ситуацию ещё накладывается дефолтное поведение BitKinex
автоматически повторять посылку файла при неудаче... а любой код возврата от
PUT кроме успеха он считает неудачей, и многократно повторяет передачу
ну и передача в 600к при таком поведении превращается в 18мегов, 30 лишних
сессий и в 30 раз больше времени...

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258070#msg-258070

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

PUT & access_by_lua_file

2015-04-16 Пенетрантность itcod
Здравствуйте уважаемые!
Наблюдаю странное поведение nginx. 
В тестовом авторизационном файле луа сказано, что метод PUT запрещён (см
листинг ниже).
И при этом когда захожу вижу, что сначало nginx разрешает PUT и идет
передача файла на WEBDAV и только после завершения передачи файла nginx
стартует access_by_lua_file /etc/nginx/lua/auth-dav1.lua и возвращает запрет
PUT(передачи файла)... см лог ниже.
По факту получается, что я не могу запретить из луа-авторизатора передачу
файла? конечно его размещение запрещается... но при этом он качается на
сервер и излишне грузит nginx и канал!!!
Почему так?  Это баг, фича, я глючу или ещё чвото?


лог файл BitKinex (кстати FAR-NetDrive ведёт себя анналогично)
Resolving host name "dav.example.com" ...
Connecting ( dav.example.com => ip: 10.0.0.1, port: 80 )
Connected (10.0.0.1:80)
<<< PUT /IMG_20150414_184225.jpg HTTP/1.1
<<< Host: dav.example.com
<<< User-Agent: BitKinex/3.2.3
<<< Accept: */*
<<< Pragma: no-cache
<<< Cache-Control: no-cache
<<< Content-Length: 696983
<<< Content-Type: application/octet-stream
<<< Translate: f
>>> HTTP/1.1 405 Not Allowed
>>> Server: nginx/0.8.54
>>> Date: Thu, 16 Apr 2015 08:08:52 GMT
>>> Content-Type: text/html
>>> Connection: keep-alive
>>> Content-Length: 173
Connection closed

-
Конфиг virt

dav.conf
server {
listen   80;
server_name  dav.example.com;
server_name_in_redirect off;
access_log /var/log/nginx/dav-access.log main;
resolver 10.255.255.1 [::1]:5353;
set $dir /opt/home;
set $dir_path $dir;
if ($uri ~* ^(.*)([$/].*)$) {
set $dir_path $dir$1;
}
set $home $dir_path;
set $sadm_passwd .htpsw;
set $user_passwd .uhtpasswd;
location / {
access_by_lua_file /etc/nginx/lua/auth-dav1.lua;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
dav_access user:rw group:rw;
client_body_temp_path /opt/itcod-dav.tmp/;
client_max_body_size 0;
autoindex on;
root /opt/home/;
}
location ~/\.ht {
deny all;
}
}
---
тестовый листинг луа 
auth-dav1.lua

if ngx.var.request_method == 'PUT' then
   ngx.exit(405)
end

PS: так же пробовал ngx.exit(403) ngx.exit(423) - результат не меняется.
сначало грузит потом запрещает.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258069#msg-258069

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: динамический dav methods $DAV;

2015-04-14 Пенетрантность itcod
"то проще всего вашу задачу решить с помощью скриптового языка же, вернув
ошибку непосредственно из него."
Максим спасибо! вы гений!!! блин. ну чво я то так туплю:)))

И этот вариант вполне хорош, но первый лучше
if ($request_method = POST) {
return 403;
}

СПАСИБО! пойду попишу:)

PS Надеюсь запомню :)))
"BTW, если в какой-либо директиве можно использовать переменные - это явно
указано в документации."

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258024,258049#msg-258049

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: динамический dav methods $DAV;

2015-04-14 Пенетрантность itcod
Конструкция:
set $limit_get all;
if ($limit_get) {
   limit_except GET {
  deny all;
   }
}

Ошибка
nginx: [emerg] "limit_except" directive is not allowed here in .

И снова возвращаемся к вопросам о вечном :/
Что делать... кто виноват кудакуда идти:))

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258024,258044#msg-258044

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: динамический dav methods $DAV;

2015-04-14 Пенетрантность itcod
в предыдущем посте ошибку допустил когда писал сюда
конечно не работает
limit_except GET {
deny $limit_get;
}

перечитал топик ещё раз.
возникла мысль через if подключать блоки
limit_except GET {
deny all;
}

завтра попобую Максим спасибо за идеи.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258024,258043#msg-258043

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: динамический dav methods $DAV;

2015-04-14 Пенетрантность itcod
"Реальнее - использовать средства контроля доступа, см. выше."

Максим спасибо. 
Из всех перечисленных вами средств похоже только limit_except по описанию
может раздельно влиять 
на методы применяемые в WEBDAV (DELETE, MKCOL, COPY, MOVE, OPTIONS,
PROPFIND)

Задача тривиальна при изменении переменной (она изменяется из программы lua)
разрешить или блокировать метод GET. Создал для проверки конструкцию

set $limit_get all;
limit_except GET {
deny  $limit_get all;
}
Получил ошибку:
nginx: [emerg] invalid parameter "limit_get" 

Вывод1. Средство контроля не знает переменных и не может в зависимости от
внешних условий (прав пользователя) заблокировать/разблокировать метод.

Вывод2. Перечисленные вами средства контроля не решают задачи динамической
установки доступных пользователю(имя:пароль) методов (прав доступа).
 
Я пока не вижу способа запретить ему создавать каталоги или стирать файлы
если он зашёл в папку и это приводит нас к однопользовательской системе
алядос... может я чего то не вижу ? может где то есть эта возможность
динамически управлять методами(правами). Всё таки хочется сделать
простенькую полноценную систему управления доступом к файлам в webdav... 

и снова я возвращаюсь к вопросу
> а какие варианты существуют
> 1. патчить ngx_http_dav_module.c - я не настолько знаток си...
> 2. обратится с предложением к Игорю Сысоеву
3 патчить модуль где описан limit_except
4.
>

Как вы считаете какой вариант реальнее?

PS: Может есть ещё какой нибудь модуль управления этими методами который
умеет получать переменные?

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258024,258042#msg-258042

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: динамический dav methods $DAV;

2015-04-14 Пенетрантность itcod
"Если
нужно ограничить доступ к отдельным методам - следует использовать
средства контроля доступа."

Максим подскажите пожалуйста, какие модули вы подразумевали под "средства
контроля доступа" ?

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258024,258031#msg-258031

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: динамический dav methods $DAV;

2015-04-14 Пенетрантность itcod
Максим спасибо...
хм. imho оч странный по моему подход зачем это ограничение я
хотел сделать чтобы у каждого юзера свои права были на локейшн... одному
можно писать другому нельзя... одному можно создавать папки другому "сиди -
чай пей" и так далее :)

а какие варианты существуют 
1. патчить ngx_http_dav_module.c - я не настолько знаток си...
2. обратится с предложением к Игорю Сысоеву
3. 

Как вы считаете какой вариант реальнее?

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258024,258030#msg-258030

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: webdav+ext base.auth+var=error

2015-04-14 Пенетрантность itcod
Максим добрый день.
Нет в location не было limit_except. версия nginx 1.7.11
В принципе поиск в тех вариациях конфиг ошибок, уже не критичен. 
Разве, что это кому нибудь ещё понадобится.

Постучавшись головой в ошибки... решил задачу написанием авторизатора на
lua
заодно и добавил не только crypt(3), а и md5 и sha1
http://forum.nginx.org/read.php?21,257511,258000#msg-258000

а счас пытаюсь разобраться с динамическим изменением dav_methods и
dav_ext_methods в location
Там тоже как то всё кривовато с передачей переменных не принимают
"аднака" :) или я торможу или модули или nginx :
http://forum.nginx.org/read.php?21,258018

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,257519,258020#msg-258020

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

динамический dav methods $DAV;

2015-04-14 Пенетрантность itcod
Добрый день уважаемые
Кто нибудь уже решал эти задачки по динамическому изменению dav_methods для
location

1.
set $DAV  PUT DELETE MKCOL COPY MOVE;
Выскакивает ошибка конфигурции. возникло предположение, 
что нужно экранировать пробел. попробовал так:
set $DAV\  PUT\ DELETE\ MKCOL\ COPY\ MOVE;
сработало Правильно ли я сделал?

2.
dav_methods $DAV;
Получаю ошибку:
nginx: [warn] invalid value "$DAV" in .
Что тут не так?

3.
set $DAVEXT PROPFIND;
dav_ext_methods $DAVEXT;
Получаю ошибку:
nginx: [warn] invalid value "$DAVEXT" in .
(указывает на строку dav_ext_methods $DAVEXT;)
похоже ошибка анналогична п2

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258018,258018#msg-258018

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: webdav+ext base.auth+var=error

2015-04-13 Пенетрантность itcod
Максим добрый день. Вы были абсолютно правы. В процессе написания
аутентификатора на lua выяснил, что если переменные (например
$file_password) создается в location / то при работе из WEBDAV клиентов они
не обрабатываются и остаются пустыми. Видимо это жучёк в nginx.
Вот так не работает:
server {
...

location / {
set $file_password $dir/$1;
...
}}

А если их глобально вынести выше описания location в секцию server то они
заполняются (не пусты).
Вот так работает:
server {
...
set $file_password $dir/$1;

location / {
...
}}

И кстати при работе с WEBDAV, аутентификация через дополнительный реквест
/auth у меня ни разу не сработала... много проверил вариаций гдето в
инете вычитал, что это ошибка в nginx и патч видел для nginx но мне
такой вариант не понравился.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,257519,258004#msg-258004

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: webdav+ext base.auth+var=error

2015-04-13 Пенетрантность itcod
Планы на будущее.
1. Добавить блокирование доступа пользователей WEBDAV к файлам паролей в
папках
2. Обеспечить доступ к файлам паролей админам папок
3. Внедрить расширеное управление доступными коммандами WEBDAV 
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
посредством расширения формата .htpasswd
test:password
до формата
test:password:accessKeys

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,257511,258003#msg-258003

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: webdav+ext base.auth+var=error

2015-04-13 Пенетрантность itcod
РЕШЕНО
http://forum.nginx.org/read.php?21,257511,258000#msg-258000

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,257495,258001#msg-258001

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: webdav+ext base.auth+var=error

2015-04-13 Пенетрантность itcod
Вот результат. Пользуйтесь на здоровье. 
Ногами не пинать. эт моя первая программка на lui
https://ihome.itcod.com/max/projects/auth-dav/

Замечания предложения итд пишите мылом ссылку на обсуждение:)

# auth-dav
Nginx Base Authenticate url/.htpasswd for WebDAV and HTTP secure
directory(links). Support CRYPT(3) MD5 SHA-1 secure hash. Test computation
in Lua (5.1)

-- Copyright (c) 2015 by Yura Vdovytchenko (m...@itcod.com)
"https://ihome.itcod.com/max/projects/auth-dav/";,

Nginx Base Authenticate url/.htpasswd for WebDAV and HTTP secure
directory(links)
Support CRYPT(3) MD5 SHA-1 secure hash.
Test computation in Lua (5.1)
Author by Yura Vdovytchenko 
License MIT

ОПИСАНИЕ

Модуль аутентификации для nginx. Nginx с поддержкой lua 5.1. 
Основная задача модуля обеспечить независимую парольную защиту для каждой
папки на сайте (WEBDAV-хранилище/облака).
Реализовано методом автоматической Base-авторизации при обнаружении в
папке/url файла авторизации (например: .htpasswd).
Поддерживает три базовых метода кодирования CRYPT(3) MD5 SHA1

ЗАМЕЧАНИЯ

На текущий момент WEBDAV-клиенты (BitKenix/FAR-NetDrive) обеспечивают только
авторизацию при первичном входе, и не умеют выдавать запрос авторизации при
переходе в подпапку с иным авторизуемым пользователем. Браузеры умеют.

REQUIRE

require "base64" -- base64.lua https://github.com/toastdriven/lua-base64
local utf8 = require "utf8" -- utf8.lua Kyle Smith
https://gist.github.com/markandgo/5776124
local csv = require("csv") -- lua-csv
https://github.com/geoffleyland/lua-csv
local resty_sha1 = require "resty.sha1" --
https://github.com/openresty/lua-resty-core
local apr = require "apr.core" -- lua-apr
-- Loading the library. crypt -- https://github.com/PlugwiseBV/luacrypt
descrypt = assert(package.loadlib("/usr/local/lib/lua/5.1/crypt.so",
"luaopen_crypt"))

STARTUP

--path lua file: /etc/nginx/lua/auth-dav.lua
--Example Nginx virtual example.conf

server {
...
set $dir /opt/home;
set $dir_path $dir;
set $home $dir_path;
set $sadm_passwd .htpsw;
set $user_passwd .uhtpasswd;

location / {
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
dav_access user:rw group:rw;
client_body_temp_path /opt/itcod-dav.tmp/;
access_by_lua_file /etc/nginx/lua/auth-dav.lua;
client_max_body_size 0;
autoindex on;
root /opt/home/;

limit_except GET {
allow all;
#deny all;
}
}
location ~/\.ht {
deny all;
}
}

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,257511,258000#msg-258000

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: webdav+ext base.auth+var=error

2015-03-23 Пенетрантность itcod
да! хорошая иллюстрация! Илья спасибо. :)

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,257511,257625#msg-257625

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: webdav+ext base.auth+var=error

2015-03-21 Пенетрантность itcod
Илья спасибо! за наводку!
если не затруднит киньте микро-пример... 
я полный чайник в луа.. 
если на перл или js синтаксис похоже то разберусь:)

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,257511,257518#msg-257518

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: webdav+ext base.auth+var=error

2015-03-21 Пенетрантность itcod
пс2 
Проверил модуль auth_request  вылезают разные ошибки 301 404 и
тож не работает с дав.

редиректы так же облом... дав на них не реагирует

Может эт у меня руки кривые ? или звёзды так повернулись.затмение
блин:)
У кого нибудь дав работает с авторизацией от .htpasswd без описания файла а
с именем в переменной?

Или кто нить знает имя модуля который без вопросов сам ищет в uri файл
.htpasswd и включает авторизацию для раздела? вдруг он с дав дружит.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,257495,257516#msg-257516

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как вызвать phantomjs прямо из nginx?

2015-03-20 Пенетрантность itcod
js прям из. 
может через ngx_http_js_module поэкпериментировать. 
хотя слабо верится, что это как то сработает для вашей задачи...

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,257159,257504#msg-257504

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

webdav+ext base.auth+var=error

2015-03-20 Пенетрантность itcod
Добрый день уважаемые!
Кто нибудь сталкивался?

auth_basic_user_file $file_password;

Конструкция работает при обычном обращении из браузера к location.
И не работает запрос пароля, при обращении из dav-клиентов (far-netdrive,
bitkinex...).
В результате доступ к закрытым папкам, открыт по дав эт бред...

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

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

В тупике сижу... Буду благодарен даже за идеи сенькс.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,257495,257495#msg-257495

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru