Comments 15
Самый большой недостаток в формате списка, который передается на обработку — разделители пробелы, хотя можно было использовать табуляции, нельзя например передать
1034ab38 428 /foo bar.txt My Document1.txt
Приходится париться через подзапрос к бакенду
1034ab38 428 /file.php=123 My Document1.txt
который через X-Accel-Redirect отдаст уже /foo bar.txt
PS: для корректной обработки внутренних подзапросов нужно передавать в FCGI следующее:
fastcgi_param REQUEST_URI $uri$is_args$query_string
1034ab38 428 /foo bar.txt My Document1.txt
Приходится париться через подзапрос к бакенду
1034ab38 428 /file.php=123 My Document1.txt
который через X-Accel-Redirect отдаст уже /foo bar.txt
PS: для корректной обработки внутренних подзапросов нужно передавать в FCGI следующее:
fastcgi_param REQUEST_URI $uri$is_args$query_string
PPS: в пхп нужное значение crc32 можно вычислить через hash_file('crc32b', $PathToFile); — достаточно долгая вещь, на 10-15 файлов, размером 60-100Мб (типичный альбом в mp3) уходит несколько секунд.
И если не считать эти суммы, а передавать вместо них символ -, архив сгенерируется, но WinRar будет ругаться что архив поврежден, но легко лечится встроенной функцией Repair (CTRL+R)
И если не считать эти суммы, а передавать вместо них символ -, архив сгенерируется, но WinRar будет ругаться что архив поврежден, но легко лечится встроенной функцией Repair (CTRL+R)
У меня лично crc таким способом считалось неправильно.
Ну, значение crc32 можно посчитать единожды — и потом хранить его, уже посчитанное — в БД или, скажем, рядом с файлом складывать файл <filename>.crc32.txt. Таким образом — главное, чтобы crc32 считался ровно так же, как это делает nginx.
Третье поле — не имя файла, а URL (вообще говоря, может быть и не локальным), в нем не может быть пробелов в явном виде (см. RFC1738), если нужны — смело меняйте на %20.
Да и нас не пальцем делали, пробовал в первую очередь URLEncoded значения подставлять, но в подзапрос они уходят нераскодироваными (в логах записи типа этой: file /foo%20bar.txt not found). Я уже и Евану Миллеру про эту проблему где-то с год назад написал, он согласился, что это возможно баг, но с апдейтами не торопится.
Так что на текущий момент, третий параметр это всё-таки имя файла, относительно documet_root конечно.
Так что на текущий момент, третий параметр это всё-таки имя файла, относительно documet_root конечно.
Можно поинтересоваться что у вас за файлшаринг?
А что Zip Bomb до сих пор используют? Помнится во времена фидо часто прилетали такие вот «трояны».
Zip Bomb тут, вроде бы не при чём — речь ведь идёт не о приёме, а об отдаче архива.
Патч для поддержки ZIP64 внесен в svn r11 и войдет в следующий релиз.
Sign up to leave a comment.
Редкие фичи nginx: mod_zip