# @(#) $Header: README, 97/11/11 # *. 목 차 가. 소프트웨어 정보 및 제작자 접촉 방법 나. 사용 규약 (License) 다. 버젼(Version) 정보 라. 기능 설명 마. 설치 방법 가. 소프트웨어 정보 및 제작자 접촉 방법 1. 소프트웨어 정보 - 영문명칭 : CrazyWWWBoard - 국문명칭 : 미친게시판 - 종 류 : CGI - 용 도 : 웹상에서 동작되는 게시판 - Platform : Unix - 문의주소 : Administrative contact - webmaster@cgiserver.net Technical contact - nobreak@cgiserver.net - 배 포 처 : http://www.cgiserver.net ftp://ftp.cgiserver.net 2. 사용 라이브러리 - qDecoder CGI Library - gdbm DB Library 3. 제작자 접촉 방법 - 만 든 이 : 김승영 (Seung-young, Kim) - 편지주소 : nobreak@cgiserver.net - 소 속 : Nobreak Technologies 4. 도움주신분 - 이병걸 선생님 (bglee@shinan.hongik.ac.kr) - 박상현 선배님 (shpark@shinan.hongik.ac.kr) - 최지환 씨 (u9000549@chollian.net) - 김영필 씨 (jkim@rainbowsys.com) - 조규상 씨 (cho@ibi-japan.com) 나. 사용 규약 (License) 1. 본 CrazyWWWBoard(이하 CWB)는 공개소프트웨어(Freeware)이다. 2. 제작자는 CWB의 모든 저작권및 권한을 사용자에게 반환하며 이는 다음을 뜻한다. 1) CWB의 사용방법, 사용목적, 사용형태에 관한 제약이 없다. 2) CWB의 모든부분을 사용자는 임의로 수정할수 있다. 3) CWB를 상용소프트웨어에 삽입하여 판매할수 있다. 3. CWB의 전부 혹은 일부 소스가 삽입된 어플리케이션에관해 제작자는 권한을 행사하지 않는다. 4. 사용자는 CWB를 사용하며 겪는 문제점에관해 제작자에게 조언해줄 의무를 갖으며, 이는 좀더 완벽하고 자유로운 소프트웨어 제작에 목적이 있다. 5. CWB의 사용으로 겪을수 있는 불이익에 제작자는 물리적 배상 의무가 없다. 6. Freedom 다. 버젼 정보 * 버젼은 a.b.c 의 현태를 취하며 a는 큰 기능의 변화 또는 호환성이 결여될때 1 증가하고, b는 호환성이 유지되면서 작은 기능의 변화가 있을때 변화의 정도만큼 n 증가하며, c는 기능변화없이 버그를 수정하였을때 버그 수정양만큼 n 증가한다. - Version 3.0.1 1. qDecoder 4.0.1 라이브러리 적용 - Version 3.0 1. 파일 업로드, 문서 첨부 기능 2. DB별 색상 변경 기능 3. DB별 머릿말과 꼬릿말 HTML 관리기능에서 관리 4. 편지 송신시 DB별 머릿말과 꼬릿말 관리기능에서 관리 5. 게시물 보기화면에서 이전 게시물, 다음 게시물, 쓰기 링크 추가 6. 실시간 설정파일 지원 7. 게시물 작성화면에 임의의 글을 기본으로 표기 8. 게시물 번호 감추기 기능 9. 가상 번호 기능 (물리적인 고유 번호가 아닌, 계산에의한 상대 번호) 10. 게시물 폴더 아이콘 감추기 기능 11. 글자크기 조절기능 12. 라인 wrap기능 13. 목록보기에서 서치기능 감추기 기능 14. Access Log 기능 15. 쿠키 모듈 수정 - Version 2.1 1. Error Log 기능 2. 쿠키 제거, 관리 아이콘 숨김, 도움말 아이콘 숨김기능, cwb_define.h 3. 쿠키 설정보안. - Version 2.0.3 1. Cookie Enable/Disable 옵션 추가 : cwb_define.h 2. ICON 변경 3. Netscape에서 간혹 나타나는 Internal Server Error 오류 수정 - Version 2.0.2 1. 구버젼의 gcc, make 사용시 발생하는 인스톨 에러 수정 - Version 2.0.1 1. Netscape와 Explore에서 동일한 인터페이스 지원 2. 몇몇 OS에서 한글 검색 문제점 수정 *) Version 2.0 1. gdbm DB Manager 도입 (1.x와 호환안됨, DB Converter 제공) 2. qDecoder CGI Library 도입 3. 인터페이스 변경 4. 관리메뉴 통합 5. 게시판 편지보내기 기능 도입 6. 실시간 인덱싱 리스트로 변환 7. 관련글쓰기 지원 라. 기능 설명 1. 대표 기능 1. 하나의 통합된 CGI로 구현 2. 다수의 게시판 지원 3. 온라인 관리메뉴 제공 4. 관련글 쓰기 기능 5. Threaded listing 지원 6. 페이지당 출력량 조절 기능 7. 화면 구성 수정기능 8. 실시간 설정파일 지원 9. URL와 Email 자동링크 기능 10. 추가 게시물 Email 전달 기능 11. 파일 업로드 12. 파일에 따른 아이콘 표시기능 13. 글자 크기 조절 기능 14. 다국어 지원 15. CPU Time 기록 16. 로그 기능 17. 관리자 게시물 작성기능 2. 문제점 1. 동기종간의 게시판 자료는 호환이 되나, 이기종간에는 호환이 되지 않는다. 시스템간의 Byte order가 다름으로서 야기되는 문제이고, 만약 이기종간의 자료 전송이 요구될시에는 DB -> ASCII , ASCII -> DB 의 변환을 거쳐야한다. 예로써 Linux -> Linux로의 자료 옮김은 가능하나, Linux -> Solaris로의 옮김은 불가능하다. 2. Explore 3.x 이전 버젼에서 'javascript:history.go(-n)'에 대한 기능이 'javascript:history.back()'과 동일한 기능을 가짐에 따라, 게시물을 본후 목록보기 화면을 선택하면, 바로 전 화면이 표시된다. 게시물을 선택한후, 다시 다음 게시물을 보고나면, 실제로 리스트 링크는 'javascript:history.go(-2)'의 값을 가지게 되나, Explore 3.x 에서는 이것을 원하는 형태대로 수행하지 못한다. 이는 리스트 링크를 CGI 자체에 걸어 사용자가 피드백을 받기까지의 기다림을 줄이고자, 캐쉬에 남아있던 리스트 화면을 보여주고자 구현된 기능이다. 3. Explore 2.x 이하 버젼에서 'onMouseOver' 자바 스크립트를 인식하지 못하여 목록보기화면이 깨어진다. 마. 설치 방법 1. 배포판의 화일명 Type-1) Installation Package (Compile) FILENAME : CrazyWWWBoard-VersionNumber.tar.Z ex) Version 2.0 - CrazyWWWBoard-2.0.tar.Z Type-2) Binary (CGI실행화일과 DB생성화일만이 배포된다) FILENAME : CrazyWWWBoard-VersionNumber-export-Platform.tar.Z ex) Version 2.0을 'Sparc SUN Solaris 2.4' Binary 형태로 배포 - CrazyWWWBoard-2.0-export-sparc_sun_solaris_2.4.tar.Z 2. 설치 1. 압축 풀기 Type-1) Installation Package (Compile) 설치할 Server의 해당 Directory로 배포본을 이동(move) 한다. - move /SOURCE_DIRECTORY/FILENAME /TARGET_DIRECTORY/ ('/cgi-bin' 아래에 설치하려는 사용자는 아래의 'HTTPd Configuration'을 참고바란다.) 압축을 푼다. - uncompress FILENAME.tar.Z (.Z 확장자는 자동 삭제 됨) - tar xvfp FILENAME.tar ('wwwboard-VersionNumber'와 같은 형식의 디렉토리가 생성되며 압축이 풀린다.) (이하 'wwwboard'란 디렉토리가 생성되었다고 가정한다.) Type-2) Binary (Executable) 먼저 Installation Package가 설치되어 있어야 한다. 설치된 디렉토리(wwwboard)로 Binary를 이동(mv)한다. - move /SOURCE_DIRECTORY/FILENAME /TARGET_DIRECTORY/ 압축을 푼다. - uncompress FILENAME.tar.Z (.Z 확장자는 자동 삭제 됨) - tar xvfp FILENAME.tar (실행되는 디렉토리 'CrazyWWWBoard.cgi'와 'createDB'가 생성된다.) Note) Binary 배포는 사용자의 서버가 아래의 사항에 만족함을 가정한다. - 파일의 확장자가 'cgi'이면 CGI로 인식하고 실행한다. - CWB가 설치된 디렉토리는 ScriptAlias로 지정되지 않아야 한다. Note) 'HTTPd Configuration'에 기술되는 '권고 설치'를 참고하기 바란다. 2. Compile ** Binary 설치시는 본 항목을 건너 뛴다. install-sh을 실행한다. (C Compiler, ar, ranlib가 설치되어 있어야 하며, Compiler는 'gcc'로 기본 설정 되어 있다. 자신의 PATH가 위의 소프트웨어에 접근할수 있는지 먼저 확인해 보기 바란다. gcc 이외의 Compiler가 설치되어 있을경우 'wwwboard/src/Makefile'을 수정한다.) - cd /wwwboard - ./install-sh Compile이 성공적으로 완료되면 아래의 실행화일이 'wwwboard' 아래 생성된다. - CrazyWWWBoard.cgi - createDB 3. DB 생성 만약 웹서버의 UID, GID와 설치된 CWB의 디렉토리및 실행파일의 그것이 다르다면, DB의 생성에 앞서 'CrazyWWWBoard.conf' 실시간 설정파일을 열고 주석을 참고하여 해당 항목을 수정한다. (본 파일은 실시간으로 참조되므로, CWB를 다시 컴파일 할 필요가 없다) DB가 저장되는 곳은 'wwwboard/data' Directory 이다. DB의 물리적 파일명은 'DB_NAME.gdbm' 이다. ex) 'test' db의 물리적 파일명은 'test.gdbm' 이다. - cd wwwboard - ./createDB DB_NAME - chmod 777 data/DB_NAME.gdbm 작성된 게시물의 모든 내용은 본파일에 저장이되며, 업로딩된 파일은 'wwwboard/data/DN_NAME' 디렉토리에 저장된고 디렉토리는 자동으로 생성된다. 주의) 기존의 2.x 버젼 사용자는 존재한는 DB 파일을 'wwwboard/data' 디렉토리에 복사하여 사용할수 있다. 2.x버전과 많은 부분에 있어 수정이 되었기에, 새로이 설치된 CGI쪽으로 기존의 DB를 복사해오는것이 좋다. 4. 실험 먼저 'test' DB를 생성한후 CrazyWWWBoard을 Link하고자 하는 HTML문서나 Browser의 Location 창에 아래의 경로를 입력한다. http://SERVER DOMAIN/설치경로/CrazyWWWBoard.cgi?db=test ex) CrazyWWWBoard Note) ICON이 깨어져 나오거나, 실행이 거부될때는 Server Configuration을 조정해주어야 한다. (아래 HTTPd Configuration 참조) 5. DB 삭제 - cd wwwboard - ./removeDB DB_NAME 다음과 유사한 화면이 나오며 삭제가 완료된다. --------------------------------- Database name : test Database filename : data/test.gdbm Database directory : data/test --------------------------------- .. Deleted data/test.gdbm .. Deleted data/test 6. CGI Configuration 'wwwboard/CrazyWWWBoard.conf'를 에디터로 열어 기술된 주석을 보며 자신의 환경에 맞게 수정한다. 본 파일은 CGI가 실행시 자동으로 참조하므로, 수정사항이 바로 적용된다. 즉, 컴파일을 다시 할 필요가 없다. 7. DB Configuration 게시판 목록보기 화면에서 'Administration' Icon을 클릭 함으로써 수정할수 있다. Web Board Information - New Password : 새로운 비밀번호를 설정한다. - Title Message : 목록보기 상단에 나타날 Text 이다. - HomePage URL : 자신의 홈페이지가 링크될 주소이다 (생략시 ICON이 출력되지 않는다) - Back URL : 홈페이지 URL와 이전페이지 URL이 다를겨우 설정한다. (생략시 ICON이 출력되지 않는다) Administrator Contact Information - Administrator Name : 관리자의 이름 - Administrator E-mail : 관리자 E-mail - Mail to Administrator : 게시물이 추가되면 그 내용을 E-mail로 관리자에게 통보할지 결정한다. - Mail to Poster : 관련글이 작성되면, 관련 대상 게시물의 작성자에게 통보할지 E-mail 통보할지 결정한다. Article Configuration - List Order : 목록보기 방식을 선택한다. (날짜순, 관련글순) - Name First : 목록보기에서 이름이 표시될 위치를 선택한다. - Article Number : 목록보기시 게시물의 번호표시여부를 선택한다. - Virtual Number : 게시물의 번호를 물리적인 번호로 표시할지, 게시물 갯수에 따라 계산되는 일련번호로 표시할지 선택한다. - Folder Icon : 관련글쓰기에서 유용한, 폴더 아이콘이 표시될지 선택한다. - File Upload : 파일 업로딩을 허용여부를 선택한다. - File type Icon : 업로드된 파일에 관한 아이콘 표시여부를 선택한다. - Link Target : 자동 링크된 글이 Current Frame으로 출력될지 Full Screen으로 출력될지를 결정한다. (Frame을 사용한 홈페이지에서만 효과가 있다) - Post Permission : 게시물 작성 권한을 선택한다. - View Mode : 표시될 언어를 선택한다. - HTML Mode : 게시물 본문중 HTML TAG를 인식할지 화면에 그대로 출력 할지 결정. 무시를 선택하면, TAG자체가 화면에 표시되고, URL, E-mail등은 자동으로 링크가 걸려 표기된다. - Articles per Page : 한 화면당 보여줄 글의 갯수를 지정한다. User Interface / Common - HTML Header, Tailer : 모든 화면출력의 머리부분(로 시작하는)과 꼬리부분(로 끝나는)을 시스템에 기본적재된 파일로 행할것인지, 사용자가 직접 작성할것인지 선택한다. - HTML Header : 위의 설정이 no 일때 본 HTML이 머릿말로 나타난다. - HTML Tailer : 마친가지로 꼬릿말에 나타난다. - Default Text : 여기에 글을 미리 작성해두면, 사용자가 글을 쓰려할때 Text Window에 자동으로 표기된다. 사용자에게 몇몇 항목의 질의를 하고자할때 유용하게 사용될수 있다. User Interface / List Module - Border Size : 목폭보기화면의 테이블 두께를 선택한다. - Font Size : 목록보기화면의 글자 크기를 선택한다. - Title Font Color : 목록보기화면에서 타이틀항목(이름,날짜)의 글자 색상 - Title Bg Color : 목록보기화면에서 타이틀항목의 배경색 - Article Font Color: 목록보기화면에서 게시물의 글자 색상 - Article Bg Color : 목록보기화면에서 게시물의 배경 색상 User Interface / Read Module - Title Border Size : 글 보기화면의 제목 테이블 두께를 선택한다. - Text Border Size : 글 보기화면의 내용 테이블 두께를 선택한다. - Font Size : 글 보기화면의 글자 크기를 선택한다. - Title Font Color : 글 보기화면에서 제목의 글자 색상 - Title Bg Color : 글 보기화면에서 제목의 배경 색상 - Text Font Color : 글 보기화면에서 내용의 글자 생상 - Text Bg Color : 글 보기화면에서 내용의 배경 색상 - Text Font Type : 글 보기화면에서 내용의 폰트 형태 도표등의 깨짐을 방지하기 위해, fixed width 형태의 폰트를 지정하여 사용할수 있다. User Interface / Write Module - Title Font Color : 글 쓰기화면에서 타이틀항목(이름,제목)의 글자 색상 - Title Bg Color : 글 쓰기화면에서 타이틀항목의 배경 색상 User Interface / Mail Module - Mail Header, Tailer : 편지로 전달될 새로운 게시물의 내용중 머릿말과 꼬릿말을 시스템에 기본적재된 파일로 행할것인지, 사용자가 직접 작성할것인지 선택한다. - Mail Header : 위의 설정이 no 일때 본 내용이 머릿말로 나타난다. - Mail Tailer : 마친가지로 꼬릿말에 나타난다. 3. HTTPd Configuration 프로그램의 설치 위치와 Server Configuration에 따라 다음과 같은 오류가 발생할수 있다. 만약 프로그램의 실행에 오류가 발생하였다면, '권고 설치' 방법을 고려해보기 바란다. *. 권고 설치 웹서버가 존재하는 디렉토리를 'httpd'라 가정하면, Document root는 일반적으로 'httpd/htdocs'며, CGI root는 'httpd/cgi-bin'이다. 1) 여기에 새로운 디렉토리(cgi-pub)를 생성한다. - cd httpd - mkdir cgi-pub ('httpd/cgi-pub' 생성) 'httpd/cgi-pub/wwwboard' 디렉토리에 CWB을 설치한다. 2) 서버 설정에 아래의 사항을 추가한다. [NCSA HTTPd] conf/srm.conf AddType application/x-httpd-cgi .cgi Alias /cgi-pub/ /FULL_PATH/cgi-pub/ [NCSA HTTPd] conf/access.conf ([선택] 디렉토리 목록 보기를 Disable 시킨다) Options ExecCGI FollowSymLinks 3) 서버를 재시작 한다. 4) 사용자는 아래의 경로에서 CWB을 실행할수 있다. http://HOST_NAME/cgi-pub/wwwboard/CrazyWWWBoard.cgi Note) cgi-bin과 cgi-pub 이외의 디렉토리에서 CGI가 거부되길 원한다면, '1. 실행이 거부되는 경우, 해결방법 1' 참조 1. 실행이 거부되는 경우 HTTP Daemon(Web Server)은 보안을 위해 기본적으로 'cgi-bin' 이외의 디렉토리에 설치된 CGI화일의 실행을 거부한다. ** 해결방법 1 : Server Configuration 변경 사용자는 아래와 같은 사항을 추가해 줌으로써 파일의 확장자가 'cgi'이면 이를 CGI로 인식하여, 어느 Directory에서나 실행토록 설정할수 있다. [NCSA HTTPd] conf/srm.conf AddType application/x-httpd-cgi .cgi 이는 모든 디렉토리에 관해 확장자가 'cgi'이기만 하면 실행이 되므로, 계정 서비스를 하는 곳에서는 이를 피하려 할수 있다. 그때는 '방법 2'를 취하거나 다음과 같이 일반 계정에서는 CGI 실행을 거부할수 있다. [NCSA HTTPd] conf/access.conf ## /admhome/ACCOUNT 계정 사용자 CGI 실행 허가 Options ExecCGI Indexes FollowSymLinks ## /home/ACCOUNT 계정 사용자 CGI 실행 불가 Options Indexes FollowSymLinks Note) 기타 Web Server의 경우도 위와 비슷한 설정을 해주어야 한다. ** 해경방법 2: 실시간 설정 파일 변경 '해결방법 1'이 여의치 않다면, '/cgi-bin'밑에 설치를 하여야 한다. 'cgi-bin' 밑에 CWB을 설치한후 'wwwboard' 밑의 모든 디렉토리를 Document root(htdocs) 디렉토리 이하로 이동 한다. ex) httpd/cgi-bin/wwwboard/* -> httpd/htdocs/wwwboard/* 'wwwboard/CrazyWWWBoard.conf'의 설정중 디렉토리 설정을 변경한다. Note) 디렉토리 경로 설정중 '/PATH'는 Document root를 기준으로한 상대경로이며, 'PATH'는 CrazyWWWBoard.cgi가 위치하는 디렉토리를 기준으로한 상대경로로 인식된다. 2. 깨어진 글짜만이 화면에 출력될 경우 사용자의 홈페이지 계정등과 같이 '/cgi-bin' 이외의 디렉토리에 설치 하였을 경우, CGI의 실행파일의 확장자가 'cgi'이더라도 서버가 이를 일반 문서로 해석하고 그 내용을 출력하기 때문이다. ** 해결방법 : Server Configuration 변경 [NCSA HTTPd] conf/srm.conf AddType application/x-httpd-cgi .cgi 3. ICON이 깨어져 나올경우 '/cgi-bin' 디렉토리 아래에 설치를 하였을경우 이다. 이는 서버가 '/cgi-bin' 이하에 설치된 모든 화일은 CGI라 가정하기 때문에 일반 ICON, HTML 화일도 실행하려 시도하기 때문이다. ** 해결방법 1 : Server Configuration 변경 다음과 같이 'cgi-bin' 디렉토리를 'ScriptAlias'가 아닌 'Alias'로 설정하여 해결할수 있다. 이때는 반드시 'AddType'으로 확자자 'cgi'를 CGI로 인식시켜야 한다. [NCSA HTTPd] conf/srm.conf AddType application/x-httpd-cgi .cgi #ScriptAlias /cgi-bin/ /PATH/cgi-bin/ ('#' 로 주석처리한다) Alias /cgi-bin/ /PATH/cgi-bin/ (cgi-bin을 Alias로 설정한다) 이때, 확장자가 없는 '/cgi-bin'밑의 기존의 CGI는 실행이 거부되므로, 기존의 CGI 파일명을 변경하여야 한다. 기존의 CGI 변경이 용이치 못한경우 '해결방법 2'를 행한다. ** 해경방법 2 : ICON 위치 바꿈 '1. 실행이 거부되는 경우, 해결방법 2'을 참조한다. 4. DataBase Access Error : File open error wwwboard/data/DB_NAME.gdbm 의 Permission이 잘못되었거나 DataBase가 존재하지 않을 경우이다. DataBase가 존재한다면 다음과 같은 명령으로 Permission을 수정한다. - cd wwwboard/data - chmod 777 DB_NAME.gdbm 5. Your browser sent a non-HTTP compliant message 위와 같은 메시지가 게시물 쓰기, 비밀번호 확인 화면등에서 나타나면 다음의 문제를 해결토록 지시한다. 1) 사용자의 브라우저를 완전히 종료시킨다. 2) 브라우저가 설치된 디렉토리에서 쿠키관련 파일을 삭제한다. (Netscape의 경우 'cookies.txt') 3) 다시 시도한다. 위의 문제는 Netscape에서 발생한다. 6. Access logging(logs/access.log) fail. wwwboard/logs 디렉토리에 로그파일을 생성할수 없을경우 나타난다. 다음과 같이 디렉토리 퍼미션을 수정한다. - chmod 777 wwwboard/logs 7. DataBase Access Error : File open error 먼저 createDB 명령으로 DB가 wwwboard/data 디렉토리에 생성되어 있는지 확인한다. ('test' DB의 생성 파일명은 'test.gdbm' 이다) 존재한다면, 파일의 퍼퉛션이 닫혀있거나, 소유주가 다를경우이다. 다음과 같이 DB 파일의 퍼미션을 수정한다. - chmod 666 wwwboard/data/DB_NAME.gdbm 이와 같은 오류는 CrazyWWWBoard.conf 파일에서 관련부분 설정이 잘못되어 있기 때문이다. 파일을 열고 파일과 디렉토리 생성 초기 퍼미션을 적절히 설정하면, DB 생성및 기타 파일 생성시 자동으로 퍼미션이 맞추어 진다. 8. Upload directory(data/test) creation fail. wwwboard/data 디렉토리의 퍼미션이 닫혀있기 때문이다. 다음과 같이 디렉토리 퍼미션을 수정한다. - chmod 777 wwwboard/data 4. Directory 설명 압축을 푼 Directory 밑에 아래와 같은 구조의 Directory가 생성된다. wwwboard-VersionNumber --+-- message | +-- icon -- type | +-- data | +-- logs | +-- qDecoder-VersionNumber | +-- gdbm-VersionNumber | +-- src Directory 'wwwboard-VersionNumber' - install-sh (Install Script) - README (This document) - CrazyWWWBoard.cgi (CGI Binary) - createDB (DB creater) Directory 'message' -> CGI내에서 참조하는 화일들 - head.html (시스템 기본 HTML 머릿말과 꼬릿말) - tail.html - mailhead.txt (시스템 기본 메일 머릿말과 꼬릿말) - mailtail.txt - help.txt (도움말 화일) Directory 'icon' -> CGI에서 사용되는 ICON Directory 'type' -> 업로딩 파일에 따른 ICON Directory 'data' -> DB(Data Base)가 관리되는 Directory - DB_NAME.gdbm (사용자가 사용할 DB명) - DB_NAME (업로딩된 자료가 저장될 디렉토리) Directory 'logs' -> 로그가 저장된다. - access.log (사용 기록이 남는다) - error.log (에러 기록이 남는다) -------- [ END ] --------