пишет на диск всего 1 способом (двумя) от апи пишется очерель импорта.
от крона происходит импорт. импорт идет по хттп, так что даже стащить пхп страницу с исходником с сайта родителя не выйдет.
там валидация урлов на запрос для импорта, и записи в фс, подделывать (магией если владеешь) очередь импорта тоже бесполезно
ramzes, в общем я вижу три варианта решения этой задачи:
При запросе файла основной сайт сам получает его от донора, прикрепляет заголовки и отдает
При запросе файла основной сайт редиректит с доп.информацией о файле на донора, а донор с помощью "контролируемой загрузки" отдает файл клиенту с нужными заголовками (полученными из редиректа)
При запросе файла основной сайт редиректит на донор, а донор отдает файл с нужными заголовками, получая их откуда то у себя (из базы, файла или еще где то)
Выбирай сам )
AlkatraZ, я не знаю как именно у него отдается файл, но даже если там используются прямые ссылки, то тот факт, что донор не выполняет отдаваемый файл защитит как минимум сам донор от любых атак. Естественно нужно фильтровать загружаемые файлы тоже.
# AlkatraZ (12.11.2016 / 14:48)
Опа, а тут разрыв шаблона.
Ты читани, что пишет Рамзес?
У него по ТЗ донор - самостоятельная вещь.
Если это FTP, то зачем тогда вообще заморачиваться с заголовками? Файл фактически отдает основно
неее
это ты не читаешь. он все верно понимает, а ты нет.
донор принимает только команды от родителя. а выполняет он все сам.
и да он полностью защищен от внешних воздействий (апи аналогично стандарту, защищет динамическим ключем, который даже получить нельзя от донора, они парно генерятся на доноре и родители, с диапазоном совпадения в 1 секунду)
импортом занимается (теперь уже, по советам этой темы) сам донор. занимается он этим без каких либо команд извне, руководствуясь очередью, созданной по команде того же апи. который обосрешься подбирать, не зная даже кол-ва ключей)))
# Delphinum (12.11.2016 / 14:49)
ramzes, в общем я вижу три варианта решения этой задачи:
При запросе файла основной сайт сам получает его от донора, прикрепляет заголовки и отдает
При запросе файла основной сайт редиректит с доп.
тут есть одно "но"
контролируемой загрузки
она не контролируется скриптом. скрипт контролирует доступ к ней. а отдает файл сервер, как и положено отдавать статику (аналогично отдачи этого файла
http://johncms.com/theme/selem ... e.css) php не учавствует в отдаче. пхп определяет валидность запроса к файлу, потом либо открывает доступ, либо нет.
открывается доступ к файлу, не чтением и отдачей, а редиректом, но не обычным, а
header('X-Accel-Redirect: /'.$path);
и это принципиальный момент.
пример можно было видеть выше. мой рабочий линк рабочий только для моего ипа
ramzes, ну если контролируемая загрузка не возможна, значит остается только два варианта )
Можно еще попробывать поискать какие нить "хитрые" заголовки вместо/вместе с редиректом, может получиться в ответе основного сервера передать и адрес целевого файла на доноре и его mimeType одним ответом (без редиректа на донор)
Короче, я могу предложить следующее ТЗ:
1) Для донора пишется свой небольшой РНР софт-файлохранилище, который имеет свою локальную базу (не обязательно MySQL, или другое, вполне можно на каталог иметь свой индекс файл с описанием содержимого), где будут фиксироваться оригинальные имена файлов. статистика скачивания и возможно (если надо) права доступа.
2) В настройках должен быть прописан адрес IP основного сервера, который имеет право посылать токен авторизации на разрешение выгрузки файла.
РЕЗОН: чтоб не выгружали неавторизованную фигню и чтоб не держать локальную базу юзеров, проще запилить токен авторизации (это вполне может быть сгенерированный SSH ключ), при наличии которого файлохранилище примет в себя на хранение новый файл, ну и возможно запомнит некоторые доп. атрибуты.
Ну а далее надеюсь все понятно.
Хранилище знает ЧТО у него хранится и КОМУ это можно отдавать.
Если нет никаких атрибутов по приватности, то отдать можно любому. Но тут опять таки, в защиту от личей, может действовать токен основного сайта, иначе потом везде напилят прямых ссылок и будет тебе счастье.
вот как раз про хитрые я и думаю.
а именно попытаться заменить команду в хитаччесе командой пхп_ини, т.к. пхп_ини можно управлять из скрипта.
определить тип файла это уже отдельная песня, тип я могу отправлять вместе с запросом к файлу просто дописав некий флаг в урл при редиректе или еще как то передать.
в общем передача по моему не столь проблематична как именно отсылка заголовка
AlkatraZ, я бы просто реализовал "контролируемую загрузку" и все задачи сразу бы отпали )
# Delphinum (12.11.2016 / 15:05)
AlkatraZ, я бы просто реализовал "контролируемую загрузку" и все задачи сразу бы отпали )
Ну это разумеется, я про подобное и писал.