LINUX.ORG.RU

С относительными путями чего? Что значит «ищет»?

со всеми стрипам, сплитами и проверками

?

anonymous
()
Ответ на: комментарий от bj

ну есть serv_root есть upload_root, они джойнятся
затем поступает req_path, начинается с www_root и он должен быть относительно join(serv_root, upload_root)
разумеется без всяких ../
оказалось в python вроде как нет встроенных функций для работы с относительными путями, а велосипедить своё совсем не хочется

всё что нужно, это req_path из отбросить www_root и отобразить на join(serv_root, upload_root)

fMad ★★
() автор топика
Последнее исправление: fMad (всего исправлений: 1)
Ответ на: комментарий от bj

os.path.relpath('/etc/passwd',)
'../../../../etc'
os.path.relpath('/etc/passwd','/home/httpd/')
'../../etc'

просто офигеть, не то это. говорю же os.path нет нужного

fMad ★★
() автор топика
Ответ на: комментарий от fMad

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

bj
()
Ответ на: комментарий от bj

есть класс Filemanager который выдаёт должен обрабатывать file_root (/home/httpd/site.name/www/upload), который в свою очередь состоит из serv_root(/home/httpd/site.name/www) и upload_root(upload)

upload_root в свою очередь может?! иметь алиасы типа для отображения в html урлах (типа /media/ /upload/ и т.д.)

объект класса получает ?path=/?[upload_root]/путь до [файла|директории]
и должен обработать только то, что внутри file_root

если использовать os.path.relpath то используя ?path=/?[upload_root]/../../etc/passwd можно читать файлы где попало

fMad ★★
() автор топика
Ответ на: комментарий от fMad

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

bj
()
Ответ на: комментарий от bj

я понимаю что можно накрутить и с этим фаршем, но не хочу крутить сам, может есть готовые либы

чтобы не было вот такого

p.normpath(p.join('/home/httpd/site.name/www/upload/','/upload/../..//etc/passwd/'))
'/etc/passwd'

или такого

p.relpath('/upload/../..//etc/passwd/', '/home/httpd/site.name/www/upload/')

'../../../../../etc/passwd'

fMad ★★
() автор топика
Последнее исправление: fMad (всего исправлений: 2)
Ответ на: комментарий от fMad

Может есть готовые либы

Лицоладонь. Это же три сраных строки.

1. Определить относительный путь.
2. Прибавить его к корню на фс.
3. Проверить что полученный путь в корне.

Блжад! Какая нахрен библиотека?

bj
()
Ответ на: комментарий от bj

Лицоладонь. Это же НЕ три сраных строки.
нужно отнять алиас от path
сложить с file_root
проверить на корректность пути в границах file_root
проверить существование
обработать
и вернуть результаты с учётом алиас (например список файлов)

fMad ★★
() автор топика
Ответ на: комментарий от fMad

С тобой разговаривать не о чем. Разработчики просто пишут код, мазафака. А импотенты от it ищут волшебные рецепты на лоре.

bj
()
Ответ на: комментарий от bj

ага, мазафака-велосипедисты

fMad ★★
() автор топика

А почему upload_root GET параметрами передается?

Если хочется красивого кода и сделать правильно, то сперва надо над этим задуматься, т.к. bj неплохой вариант предложил.

bitfroster ★★
()
Ответ на: комментарий от bitfroster

да не, upload_root в конфигах и он отдельный от serv_root

fMad ★★
() автор топика

Пиши на 1С, нашист.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.