Twisted 를 사용하면서 웹의 static한 파일들을 사용하려면 Resource를 만들어서 serve해야 한다
위와 같이 serve할 path를 지정해주고 사용을 하면 되는 것인데, 이렇게 사용한다면 단점이 있다..
단점이라 함은 static.File Class가 자체적으로 해당 위치에 접속을 하게 되면 해당 파일 내용들이 나오게 되어 난감한 상황을 발생시키게 된다.
이것은 기본적으로 Twisted에서 directory listing을 off 하게 해주면 좋을듯 한데. 그것까진 지원이 되는것 같지 않아 아쉽다.
[기본적은 file serve하고 해당 폴더를 입력시 위와 같이 Directory Listing이 나온다]
해당 문제라기 보다는 Twisted의 기본적인 API문서를 보면 알게 되는데 해당 API는 아래와 같이 기술되어있다.
위와같이 위치를 설정하면 해당 내용들이 자동적으로 HTML형식으로 리스팅 되어서 내온다는 말이다. 자 대충의 내용은 알았으니 실질적인 File Listing을 Disable을 해보자.
처리 방식은 다음과 같다.
해당 API문서를 보면 directoryListing이란 method 가 있는데 이 메소드의 반환값을보면 다음과 같다.
여기에서 DirecotryListeter라는 클래스가 반환이 되어 지는데 이는 위에 기본적으로 file serve direcotryListing 모습의 클래스를 반환한다 안에는 CSS/HTML 태그등 다양한 템플릿 형태로 저장 되어있다.
그렇다면 DirecotryLister는 무엇일까 이것도 또한 Resource의 일부임으로 DirecotryLister 대신에 다른 리소스를 리턴해 준다면 해당 파일 리스트는 생성되지 않을 것이다. 가장 해결하기 편한 방법은 간단히 해당 file Class를 상속받아서 direcotryListing을 오버라이딩해서 Resource만 return 해주면 된다.
그래서 나는 다음과 같이 해당 클래스를 생성해서 사용하기로 했다.
이렇게 정의 하고 이것을 Resource로 사용한다면 해당 디렉터리 목록은 나오지 않게 될 것이다.
[설정 적용된 모습]
이렇게 한다면 해당 디렉터리 목록은 나오지 않지만 해당 static 파일들은 내오게 된다. 이런식으로 사용한다면 조금이나마 보안 설정을 할 수 있게 되지 않을까? 선택은 개인의 몫이며 해당 관련된 내용중 틀린 내용이 있거나 좋은 내용이 있다면 답글 달아주면 감사 하겠습니다.
'개발 > Python' 카테고리의 다른 글
Twisted/Using Process 번역 (0) | 2019.03.07 |
---|