
HTTPS를 통한 REST-API 서버가 있습니다. SFTP를 사용하여 파일을 검색할 때 API를 호출하는 방법이 필요합니다. 콘텐츠는 요청마다 동적으로 생성됩니다. 사용자 계정을 추가하고 서버에 보안 허점을 도입하지 않고도 이를 수행할 수 있는 간단한 방법이 있습니까? 키가 있으면 누구나 파일의 내용을 얻을 수 있지만 그 외에는 얻을 수 없습니다.
이것이 내가 가진 것입니다:
GET https://myservice/api/items/get?key=XXXX
이렇게 하면 동일한 결과가 반환됩니다.
sftp XXXX@myservice:/items (or sftp myservice:/items/XXXX)
답변1
나생각하다네가 무슨 말을 하려는지 알 겠어. 현재 사용자(또는 요청한 파일)를 기반으로 파일을 생성하려고 합니다. 현재는 HTTPS를 통해 수행하고 있지만 SFTP를 통해서도 사용할 수 있게 만들고 싶습니다. 그렇죠? 흥미로운 문제입니다.
당신이 요청한 것을 즉시 수행할 수 있는 것이 아무것도 없다고 생각한다는 말을 들으면 충격을 받을 수도 있습니다.... 하지만 무엇이든 가능합니다.
나의 첫 번째 접근 방식은 자신만의 파일 시스템을 작성하는 것입니다!
FUSE부터 시작하겠습니다. 게다가 파이썬 퓨즈. 여기내가 사용한 유일한 튜토리얼퓨즈용. 편집을 시작할 수 있는 지점으로 이동하게 됩니다. 나는:
- 하나의 [가짜] 파일만 나열하도록 하세요.
readdir()
- 파일 시스템에서 사용자 이름을 찾는 방법을 알아보세요.
- Hotwire
open()
및 사용자 이름을 사용하여read()
끌어옵니다requests.get('your URL')
.open()
위조하고 요청read()
을 처리 해야 할 수도 있습니다requests
. - 데이터를 반환하도록 다른 많은 메소드를 패치하고 더미화해야 할 수도 있지만 대부분의 경우 가짜일 것입니다.
- 모두가 읽기 전용으로 볼 수 있도록 SFTP 어딘가에 이 FUSE 파일 시스템을 마운트하세요.
이는 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
서버를 망치지 않는지 확인하기 위해 (를 사용하여) 확인하고 싶을 수도 있습니다 . 디렉터리를 처음 로드할 때 파일이 표시되지 않을 수 있습니다.