У меня есть сервер REST-API по HTTPS. Мне нужен способ вызова API, когда файл извлекается с использованием SFTP. Контент генерируется динамически по запросу. Есть ли простой способ сделать это без необходимости добавлять учетные записи пользователей и вводить дыры в безопасности на сервере? Наличие ключа позволит любому получить содержимое файла, но ничего больше.
Это то, что у меня есть:
GET https://myservice/api/items/get?key=XXXX
, и при этом я получу то же самое:
sftp XXXX@myservice:/items (or sftp myservice:/items/XXXX)
Я думаю , я понимаю то, что Вы имеете в виду. Вы хотите произвести файл на основе нынешнего пользователя (или требуемый файл). Вы в настоящее время делаете это по HTTPS, но Вы хотите также сделать его доступным по SFTP... Правильно? Интересная проблема.
Вы могли бы быть потрясены услышать, что я не думаю, что есть что-либо, что может сделать то, что Вы спрашиваете из коробки.... Что-либо возможно все же.
<час>Мой первый подход включает написание Вашей собственной файловой системы!
я начал бы с ПЛАВКОГО ПРЕДОХРАНИТЕЛЯ. Кроме того, плавкий предохранитель питона. Вот единственная обучающая программа, которую я когда-либо использовал для ПЛАВКОГО ПРЕДОХРАНИТЕЛЯ. Это получит Вас до такой степени, когда, Вы можете начать редактировать вещи. Я был бы:
readdir()
open()
и read()
вынимает из requests.get('your URL')
использование имени пользователя. open()
, возможно, просто должен был бы фальсифицироваться и read()
быть ручкой на эти requests
запрос. , Это работало бы на любого подход sftp (Вы могли посмотреть на весь путь вместо пользователя, например), но Вам будет нужен единственный счет sftp, с которым могут авторизоваться люди.
<час>, С другой стороны, если у каждого пользователя есть счет, Вы могли бы попытаться контролировать доступ к справочнику, принадлежавшему каждому пользователю. inotifywatch
и inotifywait
может позволить Вам наблюдать за доступом к справочнику.
inotifywait -mrq --format '%w' /home/*/magicdir/ | while read DIR; do
user=${DIR:6:-10} # that is based on the length of /home/ and /magicdir/
wget -qO $DIR https://path/to/items/${user}
done
И отпуск то управление где-нибудь на заднем плане. Это обновит файл с веб-сайта каждый раз, они получают доступ к справочнику. Вы могли бы хотеть согласовать его (с echo blaaa $DIR
), чтобы удостовериться, что это не кует сервер. Это может не показать файл в первый раз, когда они загружают справочник.
sudo systemctl restart networking.service
у нас есть те же результаты. – dgonzalez 26 December 2016 в 17:56