Вот возник такой вопрос - есть хостинг на Linux, есть возможность загрузки файлов по ftp, НО у меня на работе возможности загружать файлы на хостинг по ftp нет (обрублено).Соответственно, вопрос возник - а как можно загружать файлы на хостинг (причем делать это регулярно и автоматически), но не по ftp, а, скажем, по... SMTP?
Объясняю свою мысль: на специально созданный почтовый ящик типа upload_by_smtp@domain.ru (ящик будет использоваться только для получения специально подготовленных писем) буду отправлять письма с вложением. Во вложении будет архив данных. У письма будет специальным образом подготовленная тема, тело сообщения и определенное имя архива с вложением. На хостинге есть возможность периодического запуска (автоматом) какого-либо скрипта, например, на php. Можно ли этим скриптом на php так обрабатывать почтовый файл на хостинге, чтобы извлечь оттудова архив из вложения, распаковать его и положить в отдельную директорию?
>[оверквотинг удален]
>по... SMTP?
>
>Объясняю свою мысль: на специально созданный почтовый ящик типа upload_by_smtp@domain.ru (ящик будет
>использоваться только для получения специально подготовленных писем) буду отправлять письма с
>вложением. Во вложении будет архив данных. У письма будет специальным образом
>подготовленная тема, тело сообщения и определенное имя архива с вложением. На
>хостинге есть возможность периодического запуска (автоматом) какого-либо скрипта, например, на php.
>Можно ли этим скриптом на php так обрабатывать почтовый файл на
>хостинге, чтобы извлечь оттудова архив из вложения, распаковать его и положить
>в отдельную директорию?Можно.
>Можно.Например, просто читая файл почты построчно, и начиная со строки, где идет архив, просто копировать в новый файл? Или есть хитрости?
>>Можно.
>
>Например, просто читая файл почты построчно, и начиная со строки, где идет
>архив, просто копировать в новый файл? Или есть хитрости?есть хитрости. Посмотрите внутро письма, почитайте стандарты на емыл, будет всё хорошо.
Оки, почитаю. И напоследок - так вообще кто-либо делает или я уж совсем перемудрил?
Не перемудрил. У меня несколько скриптов по такому принципу работают, разбирают почту.
Тебе проще всего будет первой строкой в сообщении записать имя файла, дальше содержимое, закодированное uuencode. Принятое письмо передается в скрипт (как - смотри описание почтаря конкретного, скорее всего в таблице alias), он его сохраняет где-нить в /tmp, потом распаковывает в нужное место.С другой стороны, если отказались от фтп, то мог остаться ssh, по нему проще файлы кидать.
Откуда же нам знать что еще у вас доступно кроме почты. Может у вас еще http есть, тогда проще делать через него upload.
>Откуда же нам знать что еще у вас доступно кроме почты. Может
>у вас еще http есть, тогда проще делать через него upload.http есть (точнее говоря, это хостинг), но как автоматом туда заливать файлы по http, я не думал, честно говоря. Мысль про почту пришла, вот и стал гуглить на тему, а потом и спросил здесь. Про upload на сайт автоматом (с помощью программы на компе, по расписанию) я посчитал, что будет труднее сделать.
Вообще-то мне надо периодически заливать автоматом с локалки одну папку на сайт, чтобы к ней могли обратиться другие.
SSH, к сожалению, нет, иначе я бы именно по ssh и заливал бы. Увы, не имею возможности.
В общем, спасибо, вы меня уже направили, больше нахлебничать не буду :) - мне уже достаточно информации, чтобы разрабатывать готовое приложение. Большое спасибо!
Скорее всего на хостинге есть и php. В доке по пыху есть готовый пример скрипта обрабатывающего upload файлов. На клиенте проще всего запаковать в архив нужный каталог и сделать запрос на upload(если делать скриптами, то стоит глянуть в сторону perl+LWP), а на сервере после приема архива его распаковать. Также стоит в эту схему добавить хотя бы минимальный механизм авторизации иначе легко могут поиметь.
>Скорее всего на хостинге есть и php. В доке по пыху есть
>готовый пример скрипта обрабатывающего upload файлов. На клиенте проще всего запаковать
>в архив нужный каталог и сделать запрос на upload(если делать скриптами,
>то стоит глянуть в сторону perl+LWP), а на сервере после приема
>архива его распаковать.php есть, как эту схему я рассмотрел сразу после своего последнего ответа. Меня частично остановила мысль о том, что "легко могут поиметь", а во-вторых, с ходу не нашел скриптов для разархивирования с помощью php. Точнее говоря, нашел целый класс на эту тему, но это потребует чуть больше времени, чем я думал. Не думаю, что это станет для меня проблемой. В общем схема с загрузкой по http+php мне очень понравилась, пробные загрузки делал, вопрос только в распаковке остался. И с надежной авторизацией. Думаю, надо 1) средствами apache у хостера поставить пароль на папку плюс 2) сделать авторизацию через сесии. Правда, при этом могут возникнуть проблемы, как программа с компьютера сможет автоматом проходить эти две проверки для автоматической загрузки архива на сервер.
А еще я недавно купил себе WiFi Asus WL-500gP с USB ;) И т.к. его я вводить в корпоративную сеть не буду, то можно смело разрешать на нем ftp! И все. Правда, вопрос о загрузке и распаковке все-равно актуальнее в силу универсальности.
А зачем делать разархивацию средствами php? Вызовите внешний архиватор через system или ``. Если отключено, то можно по крону вызывать скрипт проверяющий время обновления архива и делающий его распаковку.
По поводу безопасности есть много вариантов. Если между клиентом и сервером нет сниферов, то можно просто отдельным параметром передавать пароль используя http. Если возможность снифа не исключена, то стоит использовать https. Также может помочь ограничение доступа к папке с определенных ip через .htaccess.
Если делать более продвинутый вариант и минимизировать трафик, то можно предварительно получить список файлов с их md5 суммами, сравнить с имеющимся и передать в архиве только новые/измененные.
>А зачем делать разархивацию средствами php? Вызовите внешний архиватор через system или
>``. Если отключено, то можно по крону вызывать скрипт проверяющий время
>обновления архива и делающий его распаковку.По поводу внешнего архиватора надо запросить провайдера, но заранее уверен, что запрещено.
>По поводу безопасности есть много вариантов. Если между клиентом и сервером нет
>сниферов, то можно просто отдельным параметром передавать пароль используя http. Если
>возможность снифа не исключена, то стоит использовать https.https нет, тариф не позволяет :( Сниферов не должно быть, но программа (типа Cobian Backup и ей подобные) все равно в теле запроса http ничего не передадут, даже не сомневаюсь.
>Также может помочь
>ограничение доступа к папке с определенных ip через .htaccess.По ip не могу, т.к. клиенты отовсюду.
>Если делать более продвинутый вариант и минимизировать трафик, то можно предварительно >получить список файлов с их md5 суммами, сравнить с имеющимся и передать
>в архиве только новые/измененные.Тут можно делать все, что угодно :)
Большое спасибо за внимание к вопросу. Варианты защиты от подмены, аутентификации и прочего я решу, это просто надо чуть поискать, не хочу никого напрягать. Тем более что, как всегда, меня загрузили по самые уши всякими "срочными" вопросами, и я вынужден отложить решение этого вопроса. Еще раз спасибо!