HWPORT FTP Server
- 개발자
- 기록사항
2010년 7월 9일 : 개인적으로 만들어서 사용하기 위한 용도로 개발시작
2010년 7월 15일 : 기본적인 FTP기능 구현완료
2010년 8월 17일 : 소스를 정리하여 공개
2011년 10월 11일 : sourceforge.net으로 project이름 "hwport-ftpd"으로 등록
1.1. 개요
개인적인 필요에 의해서 FTP Server를 구현하여 사용하다가 필요한 사람이 있을것 같아서 공개합니다. 크기가 작고 임의로 자신의 입맞에 맞게 수정이 가능한 FTP Server를 찾으시는 분들께 이 소스를 바칩니다.
1.2. 프로젝트 정보
- 프로젝트 홈페이지 : https://github.com/minzkn/hwport-ftpd(current), http://sf.net/p/hwport-ftpd/home/Home/(deprecated)
- 소스를 다운로드 받으시려면 다음과 같이 실행합니다.
git clone https://github.com/minzkn/hwport-ftpd.git hwport-ftpd 또는 (deprecated) svn checkout svn://svn.code.sf.net/p/hwport-ftpd/code/trunk hwport-ftpd-code 또는 (deprecated) svn checkout http://svn.code.sf.net/p/hwport-ftpd/code/trunk hwport-ftpd-code
- 또는 Softpedia에서도 받으실 수 있습니다. (http://www.softpedia.com/get/Programming/Components-Libraries/hwport-ftpd.shtml)(deprecated)
1.3. 사용권한
hwport-ftpd library source 는 수정없이 사용하신다면 누구나 그대로 사용하셔도 좋습니다.
단, source를 수정하셔서 사용하시려고 한다면 해당 수정사항에 대한 부분을 저에게 알려주시길 바랍니다.
1.4. 다운로드
- hwport-ftpd-1.0.0-20111011 source (514.96 KB)
1.5. 완료된 기능
- Linux지원
- 기본적인 FTP Server기능
- 다양한 계정등록지원
- daemon 방식 지원
- 구현된 FTP Command 목록
CWD, XCWD, CDUP, XCUP, QUIT, PORT, PASV, RNFR, RNTO, DELE, MDTM, RMF, XRMD, MKD, XMKD, PWD, XPWD, SIZE, SYST, HELP, NOOP, OPTS, TYPE, RETR, STOR, APPE, REST, ABOR, USER, PASS, LIST, NLST
1.7. 언젠가는 추가하고자 하는 기능
- sftp 지원
1.8. 구현된사항은 있으나 공개계획이 없는 기능
- 가상파일시스템 서비스
- Embedded board상에서의 Firmware upgrade 및 Firmware download 기능
1.9. 참고기술자료
- rfc640: Revised FTP Reply Codes
- rfc959: FILE TRANSFER PROTOCOL (FTP)
- rfc2428: FTP Extensions for IPv6 and NATs
- rfc854: TELNET PROTOCOL SPECIFICATION
- 기본 FTP command 요약 (비표준 확장 포함)
USER <SP> <username> <CRLF> PASS <SP> <password> <CRLF> SYST <CRLF> TYPE <SP> <type-code> <CRLF> MODE <SP> <mode-code> <CRLF> ABOR <CRLF> QUIT <CRLF> NOOP <CRLF> PORT <SP> <host-port> <CRLF> EPRT <SP> <d> <net-prt> <d> <net-addr> <d> <tcp-port> <d> <CRLF> PWD <CRLF> XPWD <CRLF> CWD <SP> <pathname> <CRLF> XCWD <SP> <pathname> <CRLF> CDUP <CRLF> XCUP <CRLF> RMD <SP> <pathname> <CRLF> XRMD <SP> <pathname> <CRLF> MKD <SP> <pathname> <CRLF> XMKD <SP> <pathname> <CRLF> DELE <SP> <pathname> <CRLF> PASV <CRLF> EPSV <SP> <net-prt> <CRLF> OR EPSV <SP> ALL <CRLF> LPSV ??? LIST [<SP> <pathname>] <CRLF> NLST [<SP> <pathname>] <CRLF> ACCT <SP> <account-information> <CRLF> SIZE <SP> <pathname> <CRLF> STRU <SP> <structure-code> <CRLF> RNFR <SP> <pathname> <CRLF> RNTO <SP> <pathname> <CRLF> RETR <SP> <pathname> <CRLF> STOR <SP> <pathname> <CRLF> APPE <SP> <pathname> <CRLF> REST <SP> <marker> <CRLF> MDTM <SP> <pathname> <CRLF> OPTS <SP> <option> <value> <CRLF> SITE <SP> <string> <CRLF> HELP [<SP> <string>] <CRLF> SMNT <SP> <pathname> <CRLF> REIN <CRLF> STOU <CRLF> STAT [<SP> <pathname>] <CRLF> ALLO <SP> <decimal-integer> [<SP> R <SP> <decimal-integer>] <CRLF>