Google Desktop Search отображает результаты поиска по дискам компьютера при помощи специального сервера, который обслуживает запросы с интерфейса lo. При этом результаты поиска отображаются в виде веб-страницы, на которой есть ссылки на открытие как найденных файлов, так и папок, в которых они лежат. Ясно, что простой ссылкой вида
<a href="d:\documents\plan.doc">plan.doc</a>
здесь не обойдёшься. Вместо этого ссылка указывает снова на локальный сервер, который и открывает файл или папку.
Я приспособил эту идею вот для чего. У меня дома есть сервер, на котором, во-первых, лежат разные файлы, а, во-вторых, крутится интранет-сайт. Файлы просто находятся в общей папке (\\serv\share), которая подмонтирована к каждому из компьютеров сети как сетевой диск (S:). Таким образом, к файлу plan.doc, лежащему в папке share\docs, можно обратиться с любого компьютера по адресу S:\docs\plan.doc.
Теперь собственно задача. Я хочу иметь возможность поставить с интранет-сайта (доступ к которому есть только изнутри сети) ссылку на этот документ.
Я написал небольшой сценарий на питоне. Этот сценарий запускает сервер (применён BaseHTTPServer) на порту 8080, каковой сервер отвечает на пришедшие запросы, открывая при помощи функции startfile() папку, имя которой было передано в строке запроса:
def browse(path): folder = normpath(unquote(path).decode('utf-8')) startfile(folder)
Этот сценарий был добавлен в автозагрузку на всех компьютерах сети. Теперь для создания ссылки на share\docs\plan.doc можно использовать такой код:
<a href="http://localhost:8080/s:/docs/plan.doc">plan.doc</a>
Некоторые детали, такие как проверку реферера для защиты от посторонних ссылок, я опустил для краткости.
Редакция от 18 мая 2010
Тэги: python, webdev
Комментариев нет
← | Оставлен нежелательным потыркам | Места для инвалидов, лиц пожилого возраста и собак | → |