ioFTPD의 설치 방법은 어떻게 보면 무지 어렵고, 어떻게 보면 무지 쉽습니다. 그 만큼 가능한 능력이 넓다는 의미가 됩니다. 다양한 기능과 세부적인 내용으로 들어갈 때 부터 상당히 어렵게 느껴 질 것입니다. 하지만, 간단한 설치 정도라면, 생각보다 쉽게 할 수 있습니다.
그래서 여기서는 Quick Install 수준의 내용으로 서술하죠. 차후 FTP 운영에 자신이 붙어 연구에 연구를 하게 된 후 ioFTP Advanced 과정을 한번 심각하게 고려해보겠습니다. (가능성이.. 좀.. ㅋ)


1. ioFTPD 및 Windows(2000 또는 XP 또는 2003)ResourceKit 에 담긴 Service 관련 파일 받아 놓기.
  -> ioFTPD를 설치하려 준비 했다면 최소한 ioFTP 서버 프로그램 정도는 있을 것입니다. 만일 없다면 ioFTP 공식사이트(http://www.ioftpd.com)에서 다운 받으시면 됩니다.(대개 하나의 zip 파일로 압축되어 있을 겁니다.)
그리고 추가적으로 필요한 것은 Windows Resource Kit 안에 포함된 내용이 필요 합니다. 이 부분은 별도의 Windows Resouce Kit을 설치해서 빼돌리거나, 아니면 다음 강좌에 업로드 했으니, 그거라도 받아서 쓰시기 바랍니다. Resouce Kit에서 필요한 내용은 instsrv.exe, srvany.exe 입니다. 이 파일들은 ioFTPD를 서비스로 등록시키기 위해 필요한 파일들입니다.(이거 없이 하려면, 컴퓨터를 계속 로그인 해서 ioFTPD 프로그램을 실행 시켜줘야 합니다. -_-;;;)

2. ioFTPD 파일 설치
-> ioFTPD 파일의 압축을 풉니다. 압축을 풀면 ioFTPD 라는 폴더 아래에 다양한 폴더와 파일들이 나열 됩니다. 얼핏 보면, 리눅스의 파일 구조 같아 보일 겁니다. 무언가 상당한 포스를 느끼게 하는데, 이에 당황하지 말고 압축을 푼 폴더(ioFTPD 이하 모두) 적당한 위치에 그 내용을 복사(또는 이동)해 주시면 됩니다.
저 같은 경우 C:\ 에 이동시켜서, 지금 C:\ioFTPD 라는 폴더 안에 해당 하는 내용들이 전부 담겨 있답니다.
먼저 ioFTPD의 폴더 구조를 간단하게 살펴보도록 하죠. 설명을 위해서 필요한 내용이니깐 그냥 살펴보는 정도로 아시면 됩니다.(각 폴더의 위치는 제가 설치한 ioFTPD의 위치를 기준으로 삼았으니깐, 혹시나 다른 위치라면 그 위치에 맞게 생각해주세요)

  • c:\ioFTPD/cache : 캐쉬 파일을 담는 곳입니다. 이 폴더는 손댈 필요도 절대 손대서도 안된답니다.
  • c:\ioFTPD/etc :여기에 있는 파일은 다음과 같습니다.
    • UserIdTable : 사용자 내용을 담습니다. 보통 UID(UserID) 정보라고 합니다.
    • GroupIdTable : 그룹에 대한 정보를 담습니다. 보통 GID(GroupID) 정보라고 합니다.
    • default.vfs & admin.vfs : VFS(가상 파일 시스템 : Virtual File System) 설정 파일입니다. 처음에는 간단히 적는 방법을 제시한 예제 내용이 담겨 있습니다.
    • ioftpd.env : ioFTPD에서 사용되는 환경 변수 정의 된 내용입니다.
  • c:\ioFTPD/groups: 그룹 데이터 파일들이 담기는 곳입니다. 파일이름이 GID(Group ID) 입니다.
  • c:\ioFTPD/help : 도움말 파일들입니다.
  • c:\ioFTPD/lib : ioFTPD 동작 기반으로 TCL을 사용하는데, 그 TCL 라이브러리 들이 담겨 있습니다.
  • c:\ioFTPD/logs : Error.log 와 Sysop.log 같은 각종 Log 파일들이 담기는 곳입니다.
  • c:\ioFTPD/site : 처음 설치시에 설정된 사이트 의 초기 root 디렉토리입니다.물론 예제 설정에서 정한 위치일 뿐입니다.
  • c:\ioFTPD/source : 스크립터(기능 확장용 스크립트를 만드는 사람들)에게 유용할 만한 다양한 내용이 담긴 소스들입니다.
  • c:\ioFTPD/system : ioFTPD.exe, ioFTPD.ini, tcl84.dll 같이 실행 및 핵심 파일들이 담긴 곳 입니다.
  • c:\ioFTPD/text : 로그인 할때 보여주는 내용이나 각종 상태 보여줄때 및 명령어 결과 등을 보여줄때 나오는 문서들이 담긴 곳입니다. 여기 있는 내용을 편집해야 ftp 에 접속시보여주는 내용이나 특정 명령어 치면 현재 서버 상황을 보여주는 각종 내용들을 편집할 수 있습니다.
  • c:\ioFTPD/users : User 데이터 파일입니다. 파일이름이 UID(User ID) 입니다.

뭐 대충 위와 같은 구성으로 되어 있는데 일단은 그냥 저렇다는 것만 알아두셔도 대략적인 ioFTPD에 대한 파악을 하는데 나름대로 참고가 될겁니다.

3. VFS (Virtual File System) 파일 손보기
- 왜 이것 부터 해야 되는 지는 잘 모르겠습니다. 단지, 공식 사이트에서 제공하는 Quick Install 에서 이것 부터 먼저 나와 있고, 저 역시 이 부분 부터 먼저 했으니 그냥 하는 겁니다. ioFTPD 설치에 대해 어느 정도 익숙해지면 나름대로 설치에 대한 순서를 결정하셔도 될겁니다. .
먼저, /etc(이후, 경로에 대한 정보는 이렇게 적겠습니다. /etc의 의미는 "설치위치\etc"와 같습니다. 만일 c:\ioFTPD에 설치하셨다면 c:\ioFTPD\etc 와 같겠죠. 이해되시죠?)안에 있는 default.vfs 파일을 텍스트 에디터(메모장이나 에딧플러스 같은)로 안에 있는 default.vfs 를 여세요.
  대략 잡시러운 내용이 몇가지 들어가 있는데, 생초짜 아니시면 직관적으로 무슨 내용을 의미하는지 아실 겁니다. 여러 줄의 내용이 있지만, 한 줄, 한 줄이 각기 독립적인 내용입니다. 그 줄의 형식은 다음과 같을 것입니다.
        "원본_위치"  가상폴더
한줄을 예를 들자면
        "D:\ftp\Data"  /data
이렇게 적혀 있는데, 이 의미는 FTP 상에서 /data라는 폴더가 보이는데 실제 FTP 서버의 "D:\ftp\Data"라는 위치로 연결해 줍니다. 즉 사용자가 FTP 상에서 /data 안에 들어가면 "D:\ftp\Data"위치의 파일들을 볼 수 있게 됩니다.
이 부분을 적절히 편집하면, 여기저기 산재되어 있는 서버내의 폴더들을 FTP안에 묶어 버릴 수 가 있습니다. D 드라이브에 있던 F 드라이브에 있던 아무런 상관이 없어지는거죠.
ioFTPD에서는 로컬 서버내에 있는 하드 디스크만 연결되는 것이 아니고 외부 서버의 공유 폴더도 연결해 줄 수 있습니다. 예를 들자면,
        "\\testpc\share"    /extpcshare
과 같은 형태가 됩니다. 굳이 설명을 하자면, "\\testpc" 의 의미는 LAN 환경에 놓인 컴퓨터(또는 서버) 중 testpc 라는 의미가 되고 나머지 \share는 그 컴퓨터의 공유 폴더 이름을 의미하게 됩니다. \\testpc 와 같은 컴퓨터 이름이 잘 안되면 \\10.10.10.5 처럼 직접 IP 주소를 넣어도 상관 없습니다. 위의 예제 처럼 설정하면, FTP 상에서 /extpcshare 안에 들어가게 되면 \\testpc\share 안의 폴더 내용을 보여주게 됩니다.

4. ioFTPD.ini 설정하기.
-> 이 파일을 열어 보시면 딱 보시면 아시겠지만 일반적인 linux 스타일의 설정파일과 동일 하게 생겼습니다.
   맨 앞에 # 이 붙으면 주석!
   맨 앞에 ; 이 붙으면 해당 세팅을 해제를 하겠다는 의미입니다.
   자 그럼 실제 필요한 세팅 일부분만 해결해서 넘어가도록 하죠.
  4-1. DEVICE 설정
    -> 일반적인 상황이라면 처음 설정된 내용을 그대로 사용할 수 있습니다. 하지만 그것인 그냥 일반적인 상황일때 만 가능한 이야기 입니다. 만일 방화벽이나 공유기를 사용하고 있다면 다르게 설정할 필요가 있습니다.
       먼저 Device default 설정을 보시도록 하죠.
    [ANY]
    host = 0.0.0.0    <-   어떠한 IP간에 연결이 되는 어떤 IP 주소도 연결을 허락하는 의미죠.
    port = 1024-2048 <-  FTP포트를 의미하는 것은 아니고 FTP의 데이터를 송/수신 할때 쓰는 Port 번호죠. FTP 신호를 기다라는 포트와는 다르게 오로지 데이터 송/수신 하거나 Passive Mode 를 할때 사용합니다.
     Random = True <- 위의 포트 설정이 범위로 되어 있다면 그 포트 중 암것이나 하나 잡아서 들어간다는 것입니다.
  
   서버가 외부에 바로 노출되어 있다면 그냥 저렇게 써도 되지만, 만일 방화벽 안에 들어가 있다던가 공유기를 쓰고 있다면 몇가지를 다르게 설정하셔야 됩니다. 먼저 port 부분에서 저렇게 범위로 적지 말고 특정 포트를 하나 잡아 번호를 잡아 넣으셔야 됩니다. 뭐.. 적당히 1111 이라고 해도 좋고.. 9898 이라고 해도 좋고.. 자신이 좋을대로 하세요. 중요한 것은 하나의 포트로 잡아야 된다는 것입니다.
그리고 Random 부분에서도 단일 포트로 쓰기 때문에, 그냥 False 하세요.

   4-2. SERVICES 설정
    - 간단하게 하기 위해서 FTP_Service 만 다릅니다. 나머지 설정은 나중에 계속 다룰께요.
     [FTP_Service]
     Type = FTP
     Device_Name = Any <-- 위에서 사용하려고 적은 DEVICE이름을 적으면 됩니다. 저 위의 [Any]인 경우 옆처럼 Any를 적으면 됩니다.
     Port = 9999 <-- 이 부분이 FTP 접속을 위한 Port 번호 입니다.
     Description = My FTP Service  
     User_Limit = 10 <-- 최대 동시 접속 사용자 수를 정합니다.
     Allowed_Users = *
     Messages = ..\text\ftp
     Require_Encrypted_Auth = !* <-- "!*",  이 단순 무식한 내용을 해석하자면 * 니까 모두의 의미고 앞에 ! 붙었으니 그 반대라는 의미입니다. 즉 아무도 암호화 된 인증은 안한다는 의미입니다.
     Require_Encrypted_Data = !*
     ;Certificate_Name = 192.168.1.11 <--SSL 인증서 CN 이름; 인증서 따위가 없으면 반드시 주석 처리를 합니다.
     Explicit_Encryption = True
     Encryption_Protocol = SSL3
     Min_Cipher_Strength = 128
     Max_Cipher_Strength = 384
     ;Get_External_Ident = False <-- True/False. 바운서 지원여부
     ;Data_Devices = <-- 트래픽 조정용 DEVICE 설정용
     ;Random_Devices = False <-- True/False. Data_Device를 랜덤하게 설정하게 할지 여부

뭐... 중요한 내용은 별로 없어서, 그냥 막넘어가고 공식 홈페이지에서 적힌 내용거의 그대로 넣었습니다. 뭐 거의 디폴트로 나두시면 되구요, 그냥 포트 번호만 바꿔주세요.. 보통 FTP는 21번 쓰니까, 21번 하시면 될겁니다.


더 자세한 설정 내용은 나중에 언급하도록 하죠....
728x90
ioFTPD 는 친구를 통해서 소개 받았다.
처음에는 Windows안에 있는 FTPD를 돌렸는데, 계정문제로 결국 포기. Windows 계정과 FTP계정과의 분리가 전혀 어렵기에 포기하게 되었다.
그 다음에는 RadenFTPD 라는 프로그램이다 .현재도 돌고는 있는데, 관리의 귀차니즘으로 인해 포기 상태다. 환장하겠다. 이따위가 있는지 원... 하여간, 일단 당장 대체할 수 있는 FTP가 없어서 당장은 사용중이다.


그리고 난뒤 이 FTPD를 소개 받은 것이다.
일단 모든 것이 Service 기반으로 작동하고 설정은 Linux 처럼 Text 기반으로된 설정 파일로 작동한다.
물론 Windows에서는 GUI로 작동하는게 최고라 할 수 있겠지만, FTP 같은 서비스에서는 그런 것은 불필요하다.
특히나 원격으로 제어해야 할려면, 무척이나 번거러운 일이 될 수 있는 일이다.
게다가, ioFTPD에 각종 플러그 인이 있다. 기본적인 FTP기능외에 각종 설정이나
계정 정리 등을 손쉽게 처리해 주거나 스크립트등을 지원하는 기능을 의미한다.
단순 FTP에서 다양한 기능의 복합 FTP가 탄생할 수 있는 것이다.



이에 ioFTPD를 도전한 것이고 그 ioFTPD를 설치하는데 있어
무언가 상당히 낯설은 몇가지 설정들이 있었기에 기록한다.
후에 추가적으로 알아낸 부분이 생기면 그에 따라 업데이트를 할 예정이다.

ioFTPD의 공식 홈페이지는 http://www.ioftpd.com 이다.

준비할 사항은 이 곳에서 ioFTPD를 받아야 한다.
그 위치는 http://www.ioftpd.com/download/ 에서 Complete Package를 받으면 된다.
그리고 서비스로 작동하기 위해서는 해당 윈도우의 리소스 킷 안에 있는 instsrv.exe 와 srvany.exe 가 있어야 한다.
먼저 Windows 2K용으로는 업로드 한 system.zip 안에 있고
XP나 Window2K3 용은 rktools.exe 를 설치하고 난뒤 설치된 위치에서 위의 파일을 찾아 내서 적당한 곳에 따로 보관한다.

모든 준비가 완료 되었으면 실제적인 설치작업을 시작할 수 있다.
728x90

아래의 글은 제가 작성한 것이 아닙니다. 데브피아의 Q/A에서 발췌한 것으로써,
아직 제 머릿속이 정리가 안되 임시적으로 올린 것입니다.
이 내용이 정리되면 제가 다시 쓰겠습니다.


DLL에서 리소스를 사용할 때 흔히 발생하면서도 아주 고약한 문제중 하나입니다.
다음과 같은 전용 클래스를 만들어서 사용하시면 사용하기도 편하고 문제도 간단히 해결됩니다.



    
//=======================================================================
// XTDLLState.h 파일
//=======================================================================
#ifndef __EXTDLLSTATE_H__
#define __EXTDLLSTATE_H__
class CEXTDLLState  
{
public:
CEXTDLLState();
    virtual ~CEXTDLLState();
protected:
    HINSTANCE m_hInstOld;
};

//extern static AFX_EXTENSION_MODULE TextEffectDllDLL; #endif // !defined(AFX_EXTDLLSTATE_H__300ABF7E_3541_4AE3_8080_978EA6E1399D__INCLUDED_)

//======================================================================= // XTDLLState.cpp 파일 //======================================================================= #include "stdafx.h" #include "EXTDLLState.h" CEXTDLLState::CEXTDLLState() {    CString strDll;    // FCubic Common DLL 연결 #ifdef _DEBUG    strDll = _T("MyDll_d.dll");        // 디버그용으로 생성한 Dll 이름 #else    strDll = _T("MyDll.dll");            // 릴리즈용으로 생성한 Dll 이름 #endif

  m_hInstOld = AfxGetResourceHandle();   AfxSetResourceHandle( ::GetModuleHandle(strDll) ); }

CEXTDLLState::~CEXTDLLState() {   AfxSetResourceHandle(m_hInstOld); }


위와 같이 간단한 클래스를 만드세요.
단 "MyDll_d.dll" 과 "MyDll.dll" 부분을 자신의 Dll 이름으로 바꾸세요.
보니까 님께서는 대화상자 리소스를 쓰려고 하시는 것 같은데요..
이런 경우엔 대화상자 클래스에서 DoModal()을 오버라이딩해서 함수를 만들고 그안에 다음과 같이 코딩해 보세요.

// 헤더를 추가
#include "EXTDLLState.h"
// DoModa() 함수 오버라이딩
int CMyDlg::DoModal()
{
   // 서로 다른 DLL이 각각의 리소스를 올바로 사용하기 위해
   // DoModal() 이 호출될때 CEXTDLLState 클래스의 인스턴스를 생성하고
   // DoModal() 함수가 종료될때 CEXTDLLState 클래스가 소멸하면서 리소스 연결처리를 자동으로 해준다.
   // 자세한 처리는 CEXTDLLState 클래스의 생성자와 소멸자를 참고한다.
   CEXTDLLState State;
   return CDialog::DoModal();
}

단지 위CEXTDLLState의 인스턴스인  State를 정의함으로써 자동으로 리소스를 연결하고 해제하도록 해줍니다.
이유는 생성자와 소멸자의 호출 메카니즘에 의해서이죠...
그럼 즐프하세요... ^^

728x90
http://www.pointpda.com/ 에서 Taro님의 강좌를 불펌합니다. 걸리면.. 작살이겠죠 -_-;

만드는법 :

1. 아래와 같은 프로그램을 모읍니다.
WinAmp (가급적 풀버젼) - 설치해서 Plug-in에 "Nullsoft Disk Writer plug-in" 있어야 합니다.
ATS-MA5-SMAF - 첨부된 파일입니다. 이 역시 승인 받지 않은 불펌 자료입니다.
wav2smf - 첨부된 파일입니다. 이 역시 승인 받지 않은 불펌 자료이죠.
MP3 편집기 - 링크를 따라 가시면 됩니다.

위의 프로그램이 전부 생겼으면 변환을 할 MP3를 Winamp로 틉니다.
그리고 볼륨이 크다고 판단되면



728x90
Winamp를 준비한다. 가급적 Full Version 을 마련한다.

1. Plug-in 설정에 들어가 output을 설정한다.
2. output에서 보면 "Nullsoft Disk Writer plug-in ...." 라는 플러그 인이 있을 것이다. 이를 선택하고 "설정" 또는 "Configure"를 누른다.
3. Covert to format를 체크하고 바로 아래쪽의 Edit 창 옆의 "..." 버튼을 누른다.
4. Format은 PCM, Attributes 에서는 "11.025kHz 16Bit Mono 21kb/sec" 을 선택한다.
5. 확인을 누른다.
6.아까 Edit 창을 보고 현재 설정이 "PCM 11,025kHz, 16Bit, Mono"로 되어 있는지 확인한다.
6. 모든게 완료 되었으면 확인을 누르고 설정창도 닫는다.
7. 변환을 원하는 곡을 PlayList에 넣는다.
8. 연주 시작 버튼을 눌러 연주를 한다. (소리는 안나온다)
9. C:\에 보면 파일이 생성되었음을 볼 수 있다.
10. Plug-in 설정을 원래대로 변경한다. ( "Nullsoft Disk Writer plug-in ...." 라는 플러그 인 외에 다른 플러그 인을 선택한다.)

....
728x90
네스팟 CM 사용자(네스팟 스윙폰 CP-X301 등)

(네스팟 CM이 설치되어 있으면 기본적인 WM2003 의 무선 연결 방식으로 연결하면 "연결중" 에서 더 이상 진행이 되지 않습니다. 아래 방법 처럼 네스팟CM 통해서 연결하시거나 네스팟 CM에 프로파일을 생성하시는것이 편리합니다.)

1. 네스팟 CM 을 실행합니다.
2. 오른쪽에 생성된 네스팟 CM 아이콘을 클릭하고 "고급 기능" 을 선택합니다.
3. 하단의 메뉴중에 "무선랜 검색" 을 클릭하면 연결 가능한 AP나 Ad-Hoc 으로 설정된 SSID 들이 검색됩니다.(SSID가 보이지 않으면 "재검색" 을 클릭해서 다시 검색합니다.)
4. Ad-Hoc 으로 연결할 SSID를 선택하고 오른쪽의 "적용" 을 클릭하면 연결이 됩니다.
5. 정상연결후에 인터넷 검색을 시도합니다. 만약 인터넷 연결이 되지 않으면 네스팟 CM에서 IP와 DNS를 등록합니다.


IP : 192.168.0.100
Subnet : 255.255.255.0
Gateway : 192.168.0.1
DNS : 168.126.63.1, 61.74.63.1 (KT)
          210.220.163.82 (hanaro)

728x90
윈도우의 자동로그인 처리를 하려면 다양한 방법을 사용할 수 있지만, 아래와 같은 방법으로 registry를 수정함으로
써 해결 할 수 있다.

시작-실행-regedit
다음 경로를 찾아갑니다
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
이 경로에서 새로운 문자열 값을 생성합니다
문자열 값:
AutoAdminLogon ----> 1
DefaultUserName ----> UserName(로그인 계정)
DefaultPassword ----> Password(로그인 계정의 패스워드)
시스템을 재시동합니다

그러면 자동으로 로그인 합니다.
728x90
간혹 Webalizer를 사용할때 발생하는 문제가 있다.

Error: Unable to open DNS cache file /var/lib/webalizer/dns_cache.db

위와 같은 에러 메시지를 뿌려대면...분명 캐쉬에 관련된 파일이 문제가 발생한 것이다.
이를 해결하는 방법은 간단하다.

webazolver
를 한번 실행한다.(실행이 안되면 해당 파일을 찾아 실행해 준다.)

그러면 자동으로 캐쉬에 관련된 내용을 처리해 준다.
728x90

+ Recent posts

728x90