2013년 2월 20일 수요일

jquery ui 에서 dialog 의 버튼 없애기 시 주의점

jquery ui 에서 제공하는 dialog 을 사용하다가 가변적으로 버튼을 나타났다 사라졌다 하게 해달라는 요청이 들어와서 작업하던 중...잘 안되서 검색을 해보니 다음과 같은 내용이 있었습니다.

http://titaniumspider.tistory.com/135

흔히, .dialog("option", "buttons", "{버튼정보}").dialog("open"); 와 같이 처리했는데 그렇게 하지 말고 .dialog({buttons: {버튼정보}}).dialog("open"); 으로 처리하라는 이야기네요.

영어가 약하다 보니 jquery ui 문서에 나오는 내용을 놓쳤나 봅니다. 어쨌든 저렇게 하니 잘 되네요.

2013년 2월 16일 토요일

고수의 숨결을 느껴보자.

프로젝트에 치이다 보니 화면을 만드는데만 치중하고 있었는데, 이런 분들의 글을 보고 나면...부끄럽기도 하고 호승심도 일어나고...그렇다.

http://zgundam.tistory.com/

ubuntu + proftpd 에 tls 적용기

1. 많은 한국어로 된 페이지에서 컴파일 기준으로 설명하고 있다. mod_tls 가 기본으로 들어있지 않다는 내용으로...하지만 ubuntu 12.04 LTS 을 사용하고 있는 현재 mod_tls 는 기본으로 포함되어 apt-get 으로 설치됩니다.

2. /etc/proftpd/proftpd.conf 파일이 기본적인 설정 파일인데, 에디터로 열어보면 상단에 다음과 같은 내용이 있습니다.

Include /etc/proftpd/modules.conf

당연히 mod_tls 에 대한 설정도 있을 것입니다. 당연히 modules.conf 파일을 열어보면 mod_tls 에 대한 설정이 보입니다.

#LoadModule mod_tls.c

기본적으로 주석 처리 되어 있습니다. 가볍게 풀어줍시다. 그리고 다시 proftpd.conf 파일을 보면 아래와 같은 내용을 아래쪽에서 찾을 수 있습니다. 가볍게 tls 로 검색하면 더 쉽게 찾을 수 있겠습니다.

#Include /etc/proftpd/tls.conf

당연히 tls 에 대한 설정파일을 모아놓은 파일이니 주석을 해제한 뒤 해당 파일을 에디터로 열어봅시다.

현재 제가 사용하고 있는 옵션을 추려보면 다음과 같습니다.


<IfModule mod_tls.c>
TLSEngine                               on
TLSLog                                  /var/log/proftpd/tls.log
TLSProtocol                             SSLv23
TLSRSACertificateFile                   /etc/ssl/certs/ssl.crt
TLSRSACertificateKeyFile                /etc/ssl/private/ssl.key
TLSOptions                                                      AllowClientRenegotiations
TLSVerifyClient                         off
TLSRequired                             ctrl
TLSRenegotiate                          required off
</IfModule>



간단하게 추려보면...TLSEngine 이야 당연히 TLS 을 사용하겠냐...하는 놈이고 TLSLog 는 로그파일 생성위치입니다. TLSProtocol 은 v1 와 v3 을 다 쓴다는 의미라는데...v2 는 버그가 있어서 안쓴다고 하니 저렇게 써줍시다(참고링크 http://www.proftpd.org/docs/directives/linked/config_ref_TLSProtocol.html).

TLSRSA... 로 시작하는 두 파일은 SSL 개인키와 공개키 파일 위치입니다. 리눅스에서 개인키와 공개키를 생성하는 설명은 차고 넘칩니다. 제가 걸고 넘어진 한글로 된 문서에도 차고 넘치게 나옵니다. 근데...전 startssl.com 에서 내 개인 도메인용으로 무료로 발급받았습니다. 이유는...그냥...-_-;;; 이 내용도 포스팅 하기는 해야하는데...귀찮아서...필요한 사람들은  역시나 차고 넘치는 한글 포스팅 자료들을 뒤져보시면...조금 헤멜 수는 있지만(왜냐하면 최근에 조금 개편을 했는지 내용이 살짝 다르더군요) 해내실 수 있으리라 봅니다. 어쨌든 파일 위치는 꼭 저기가 아니어도 됩니다만...chmod 400 으로 권한 잘 조정하시고 넣어두세요. 물론 파일 소유자는 root 로...

TLSOptions 나 TLSVerifyClient, TLSRenegotiate 는 설명 넘어갑니다. 해당 파일의 상단에 영어로 된 주석이 있는데 해석하시면 뜻을 아실 수 있을 겁니다. 혹은 proftpd.org 사이트에서 공식 문서를 읽으면 더욱 도움이 됩니다.

문제는 TLSRequired 입니다. 공식 문서의 경로는 http://www.proftpd.org/docs/directives/linked/config_ref_TLSRequired.html 입니다. 이 놈이 왜 문제냐면...그냥 Filezilla 등에서 쓸 때에는 어짜피 다 TLS 가 적용되서 명령어나 데이터가 왔다갔다 하기 때문에 on 으로 해두면 되지만, CCC(Clear Command Channel) 기능을 지원하는 FTP Client 로 접속할 경우 에러가 튀어나옵니다. 왜 그럴까요?

FTP 는 크게 2 개의 포트를 이용합니다. Command 와 Data 인데, 명령어가 왔다리갔다리 하는 포트와 실제 파일이 전송되는 포트를 별개도 씁니다. 대부분의 사용자가 FTP 는 21번 포트를 쓴다고 철썩같이 믿고 있으신데, 서버를 운영하면서 방화벽 좀 다뤄보셨다면 이게 잘못된 지식이라는걸 아실 겁니다. 21 번 포트는 바로 Active 모드에서(일반적인 설정에서) 명령어가 왔다리갔다리 하는 Command 채널(포트)이기 때문입니다. 실제 명령어가 왔다갔다 하다가, 데이터 관련 명령이 왔다갔다 하는 순간에 20 번(Data 채널이겠죠)이 막혀있어 제대로 동작을 안하는 경험들을 해보셨을 겁니다. 웃기는게, proftpd 을 포함하여 많은 FTP Daemon 들은 이 Data 포트를 변경할 수 없습니다. 클라이언트의 방화벽 문제를 해결해주기 위해서 Active Mode 대신 Passive Mode 을 지원하고, 21 번 대신 다른 포트로 변경도 가능하게 해주지만, 이 Data 는 변경이 안됩니다.

그럼 왜 이 Command 와 Data 포트에 대해서 장황하게 설명했을까요? 바로 TLSRequired 옵션에서 on 은 Command 와 Data 포트 모두 TLS 로 암호화해서 데이터가 왔다리갔다리 하는 것인데, CCC 는 위 영어에서 나오듯이 Command 만 암호화하는 옵션이기 때문에 클라이언트에서는 Data 을 주고 받을 때 서버 쪽에서 TLS 을 요구할 때 어버버...하다가 오류가 발생하기 때문입니다. 그래서 CCC 기능을 쓸 수 없습니다. 제가 지금까지 본 한글로 된 포스팅 중에는 이 옵션을 on 이나 off 말고는 적어둔 곳도, 저게 정확하게 뭔지 설명해주는 포스팅도 없더군요(http://free4u.wo.tc/weblog/blog/11148 의 포스팅에선 auth+data 을 써야한다는 내용이 있는데...아래 FileZilla 패치버젼을 만들어주신 분이신데, 제공하시는 FileZilla 로 데이터 업로드 등을 하면 오류 납니다). 공식문서 링크를 보시면 제가 잘못 이해한 것인지는 몰라도, CCC 을 이용하기 위해서는 TLSRequired 옵션을 auth 혹은 ctrl 로 둬야 합니다. 반드시 유의하시고...밑줄도 쫙 쳐드릴테니 잊지 마세요!!!

마지막으로...FileZilla 는 CCC 을 지원하지 않습니다. 상당수의 상용/무료 클라이언트에서 지원하는 이 기능을 지원하지 않는 이유가 궁금한데...아래 링크에 이를 지원하도록 수정해서 배포하는 분이 계십니다. 자랑스런 대한민국인이시죠. 이 분의 포스팅을 보면...FileZilla 개발자가(어린 나이에 FileZilla 을 개발해서 이 바닥에선 스타죠) CCC 기능이 보안상 문제가 있기 때문에 CCC 기능을 지원하지 않으려고 한다는 내용을 남기셨죠. 일단 전 그렇게 받아들였는데...장단점이 있겠습니다. 하지만 저 기능을 사용자의 선택으로 두어야 하고, FTP Daemon 관리자 역시 선택할 수 있도록 두어야 하는데 세계에서 가장 많이 쓰이는 FTP Client 에서 의도적으로 기능을 개발 안한다는 것은...안타까운 일입니다. 그래서...3.5 만원 정도 하는 FlashFXP 와 같은 성능좋은 FTP Client 을 구입하시거나, 무료 중에서 CCC 을 지원하는 CoreFTP 나 goFTP(이 놈은 UTF-8 지원 안하는 듯)을 쓰시거나, 아래 링크의 컴파일 된 FileZilla 을 쓰시던가 해야합니다. 아래 링크의 FileZilla 는 압축해놓은 것이기 때문에 설치할 필요 없이 아무대나 압축풀어 놓고, 필요할 때만 실행하시면 됩니다. 그럼 기존에 설치된 FileZilla 의 설정을 공유하기 때문에 쓰는데 큰 문제는 없을 것입니다.

http://free4u.wo.tc/weblog/blog/10285

위 포스팅을 잘 읽어보시면 각 댓글의 첫 라인의 작성시간 옆에 첨부가 붙어 있는 것이 있습니다. 그게 패치된 FileZilla 을 다운로드 받을 수 있는 링크이며, 이 패치된 FileZilla 로 실행했을 때 업데이트 창이 뜨면 업데이트를 하시면 안됩니다.



빨리 CCC 을 지원하는 FileZilla 가 되었으면 좋겠네요.




분명 처음엔 proftpd 에 대한 내용이었는데, FileZilla 에 대한 글로 변질되네요. 어쨌든 저렇게 설정을 해주고 proftpd 을 재실행 해주면 잘 동작할 것입니다. 단, 제가 이 글을 올리는 시점에서는 start 시 경고가 발생하는데 OpenSSL 버젼이 맞지 않는다는 내용입니다. 무시하셔도 크게 문제는 없을 것으로 보입니다. 이 경우 조금만 시간이 흐르면 proftpd 의 mod_tls 을 컴파일 할 때 사용하는 OpenSSL 버젼이 올라가든지 해서 버젼이 맞게되는 순간이 올테니까요.

이상 글을 마칩니다.