[*] SOAPS (Site Open API PHP Server) 버젼 1.0

문서: 배포 문서
명칭: SOAPS (Site Open API PHP Server)
버젼: 1.0
용도: 사이트(홈페이지)의 Open API 기능을 제공.
작성: 카이 (ky, thruthesky)
연락: thruthesky@yahoo.co.kr http://jangnans.com http://siteapi.kldp.net
요약: Site Open API 는 여러분의 홈페이지에 멋진 Open API 를 제공할 것입니다. 본 배포물은 Site Open API 규격 전체를 구현한 PHP 버젼 XML-RPC 서버 소스 스크립트(이하 본 소프트웨어)를 포함합니다. 따라서 기존 내용에서 추가된 메소드 리스트는 Site Open API(http://siteapi.kldp.net) 규격을 참조 하십시오.
참조: 빌드가이드.txt http://jangnans.com http://siteapi.kldp.net http://xmlrpc.com, Site Open API 활용법
기능: Site Open API 의 기능과 동일

기타: SOAPS 는 특정 홈페이지나 게시판 프로그램을 위한 것이 아니라 중,소형 홈페이지를 위한 Site Open API 규격을 구현한 XML-RPC 서버 프로그램입니다.
테스트 작업을 진행하면서 제로보드4, 제로보드5, 그누보드4, 알지보드, 장난홈툴즈, 미니툴즈 등의 여러 게시판 프로그램과 연동을 하였습니다.
현제는 이보다 많은 설치형 홈페이지 정보 관리 소프트웨어로 포팅이되어 있습니다.
여러가지 작업을 하고 또 시간이 걸리고 하다 보니, 중간 중간에 게시판 프로그램 별로 포팅된 내용을 업로드하여서 하나의 버젼에 여러개의 배포본이 존재하는 경우가 있습니다.
설치를 하실때에는 SOA 버젼과 SOAPS 가 지원하는 게시판 프로그램 두가지를 확인하세요.

참고: 자세한 내용은 http://siteapi.kldp.net 을 참조하십시오.

기타: SOA 의 공식홈페이지는 http://siteapi.kldp.net 입니다. 필요한 경우 이쪽으로 링크를 걸어주십시오.
저작권: GPL (GNU General Public License) http://opensource.org/licenses/gpl-license.php
다운로드: http://siteapi.kldp.net


[*] Site Open API 특징

+ 대형 사이트 뿐만 아니라 중/소 형 홈페이지를 위한 메소드 규격
+ Blogger API 포함
+ MetaWeblog API 포함



[*] 성질급해서 숨넘어가시는 분들을 위한 SOA 간추린 설명

http://www.outsider.ne.kr/bbs/zboard.php?id=digital_story&page=1&sn1=&divpage=1&category=6&no=291
http://jangnans.com/index.html?cate=bbs&mode=read&idx=2469
http://jangnans.com/index.html?cate=bbs&mode=read&idx=2474
http://jangnans.com/index.html?cate=bbs&mode=read&idx=4946
http://jangnans.com/index.html?cate=bbs&mode=read&idx=2640


[*] Site Open API 클라이언트

Site Open API 가 사이트(홈페이지,웹 서버)에 설치되었다면, Site Open API 클라이언트를 통해서 홈페이지 정보 이용이 가능합니다. 자신의 홈페이지에 가입된 회원(비 회원 가능)이 각종 프로그램을 이용해서 홈페이지 정보를 이용할 수 있습니다.
Site Open API 클라이언트는 무궁 무진합니다. 지금도 수 없이 만들어 지고 있습니다.
추천 SOA 클라이언트 : 실시간 홈페이지 정보 모니터링 툴, 사이팅 http://jangnans.com/?2643






[*] Site Open API 서버

서버 프로그램은 홈페이지(웹서버)에 설치되어 실행이됩니다.
홈페이지 정보를 Site Open API 규격에 맞게 조정 작업을 해야합니다.
SOAPS 버젼 0.6 현제 제로보드4, 제로보드5, 그누보드4, 장난 홈툴즈, rgboard 로 작성된 홈페이지에 데이터 규격 조정 작업이 진행되어 있으며 이를 통해 운용하는 홈페이지는 바로 사용이 가능합니다. 손에 잡히는 것 부터 먼저 작업을 했습니다. 얼마든지 다른 홈페이지 프로그램에 추가가 가능합니다.

아래의 설치형 홈페이지 정보 관리 소프트웨어들은 SOA-PS version 0.3 을 설치해야합니다.
(버젼 0.3 에서 0.6 까지 변동이 없으며, 0.6 에서 테스트가 이루어지지 않았습니다.)
	+ 제로보드4 - http://nzeo.com
	+ 제로보드5 - http://zeroboard.com
	+ 그누보드4 - http://sir.co.kr
	+ 미니 - http://thruthesky.webzero.co.kr/etc/mini
아래의 설치형 홈페이지 정보 관리 소프트웨어들은 SOA-PS version 0.6 를 설치해야합니다.
	+ 장난 홈툴즈 - http://thruthesky.webzero.co.kr/etc/jangnan/
	+ 알지보드 3.2.1 - http://rgboard.com
SOAPS 버젼 0.8 부터는 포팅한(사용가능한) 소프트웨어를 목록하지 않습니다. 자신의 홈페이지에서 사용가능한지는 SOAPS 홈페이지를 참고하시고, 필요한 경우 직접 자신의 홈페이지 정보를 SOA 규격에 맞도록 조정을 하는 스크립트를 작성하셔야합니다.

기타: 설치가 가능한 '홈페이지 정보 관리 툴' (CGI 프로그램) 에 본 소프트웨어를 추가하려면 정보를 관리하는 데이터의 규격만 Site Open API 의 것과 맞추면됩니다. 홈페이지 게시판 관련 툴 전체를  본인이 직접 모두 포팅을 하기에 많은 시간이 소모됩니다. 개발자에게 도움을 요청 해 봤지만 비협조적이라는 느낌을 받아 아쉬운 점이 많았습니다. 혼자서 많은 홈페이지 프로그램에 Site Open API 기능을 추가시키기가 쉽지 않습니다. Site Open API 에 관심이 있는 홈페이지 프로그램 개발자와 연락이 닿는다면 꼭 같이 진행을 해 보고 싶습니다.




[*] 구성물

용량을 최소화 하기위해서 꼭 필요한 파일만 구성합니다. 배포문서, 개발문서, 개발환경, 사용설명서, 규격문서 등은 siteapi.kldp.net 에서 찾으십시오.

index.php
libetc.php
mysql.php
README
rsd.xml
siteapi_charset.php
siteapi_client.php
siteapi_web.php
siteapi_datalayer.php
siteapi_datalayer_functions.php
siteapi_datalayer_xxxxxxxxxxx_.php (각 소프트웨어의 데이터 레이어, ex: siteapi_datalayer_jangnan_hometools.php )
siteapi_dataspec.php
siteapi_dataspec_library.php
siteapi_default_library.php
siteapi_procedure.php
siteapi_server.php
siteapi_xmlrpc.php
xmlrpc-2.1/








[*] 설치

설치는 간단합니다. PHP 스크립트를 적당한 위치에 업로드하는 것으로 설치는 끝납니다.

본 소프트웨어는 사이트(홈페이지, 웹서버)에 설치되는 Site Open API 규격을 구현한 결과물로서 PHP 언어로 작성되어있습니다.
본 소프트웨어(현제 압축 파일에 포함되어 배포되는 프로그램)의 현재 버젼에서 지원하는 '설치형 홈페이지 정보 관리 툴'은 본 문서의 다른 항목에 기술되어 있습니다. 정확한 정보는 관련 홈페이지를 참고하십시오.

현제 지원하지 않는 툴로 운영되는 홈페이지는 'Site Open API 규격에 맞는 정보의 조정' 작업이 필요합니다. 이와 관련된 내용은 http://siteapi.kldp.net 을 참고하기 바랍니다.

-1 설치하려는 사이트에 본 소프트웨어가 지원하는지 확인합니다. (그렇지 않다면, 직접 데이터 조정 작업을 거쳐야합니다.)
-2 본 소프트웨어의 압축물을 압축해제 후 홈페이지에 저장(업로드)합니다.
	홈페이지에 저장을 할 때에는 디렉토리 이름이 반드시 'siteapi' 이어야합니다.
	예를 들면, http://jangnans.com 이 홈페이지 주소라면, http://jangnans.com/siteapi/ 위치에 설치를 해야한다. 만약 홈페이지 주소가 http://site.com/tool/ 이라면 http://site.com/tool/siteapi/ 에 설치가 되어야합니다.
	이것은 Site Open API 에서 공통적으로 이행하는 하나의 약속입니다.
	PHP 스크립트를 홈페이지 계정(웹서버 계정)의 적당한 디렉토리에 업로드하는 것으로 설치는 끝납니다.
	혹시나, siteapi 디렉토리에 쓰기 퍼미션을 주지 말기 바랍니다.
-3 설치(업로드)가 올바로 되었는지 확인을 하기 위해서는 업로드된 디렉토리로 웹브라우저를 통해 접속을 해 본다. (예, http://jangnans.com/siteapi/ 실제로 접속을 해서 어떤 결과가 나타는지 확인을 해 보기 바랍니다.)
-4 독립 Open API 활용을 위한 처리
	Blogger API, Meta Weblog API 등의 Open API 는 Site Open API 에 속해있지만, 그것 자체만으로도 완전히 독립된 API 들입니다. 실제 예로 Blogger API 만으로 Zoundry 를 통해서 홈페이지에 글을 게제할 수 있습니다.	이러한 Open API 서비스를 위해서 EndPoint 자동 검출 링크를 스킨에 기록(자세한 정보는 http://siteapi.com 이나 http://jangnans.com 을 참고)










[*] 설치형 홈페이지 정보 관리 소프트웨어별 특징.

참고: SOA 규격 0.4 부터 홈페이지에 글 업로드(원격 퍼블리슁)가 됩니다.
기타: 아래에 열거되지 않은 배포 가능한 설치형 소프트웨어가 있으면 연락을 주십시오.

[-] 제로보드 5
SOA 규격: 0.12

[-] 제로보드 4 ( http://nzeo.com )
SOA 규격: 0.4
zb4 는 하나의 게시물에 2개 까지 첨부 파일을 허용합니다. 이것은 metaWeblog.newMediaObject 와의 규칙이 어긋납니다. 따라서 metaWeblog.newMediaObject 는 SOA 규격에 의한 방법으로 첨부 파일을 보관합니다. 첨부 파일의 보관 장소, 파일 명칭의 형식은 SOA 규격 문서를 참조하십시오.

[-] 알지보드 ( http://rgboard.com )
SOA 규격: 0.12

[-] 그누보드 ( http://sir.co.kr )
SOA 규격: 0.4.4
원격 편집을 할때, 글 관련(첨부 파일 업/다운 등 포함) 포인트 조정은 안됩니다. 글 관련 작업 처리를 포팅하는 과정이 쉽지않아 포인트 정보 관련 업데이트 부분은 생략을 하였습니다. siteapi_datalayer_functions.php::dl_newPost/editPost 에서 관련 코드를 확인할 수 있습니다.
게시판 설정에 파일 업로드 개수 제한 옵션이 있습니다. 원격 편집에서 등록 가능한 이미지의 개수를 제한하는 것은 의미가 없으므로, 설정의 옵션을 무시합니다.

[-] 미니툴 (장난 - 홈툴즈의 구 버젼)
SOA 규격: 0.12
기타: SOAPS 개발자가 더 이상 지원을 하지 않는 소프트웨어입니다.

[-] 장난-홈툴즈 ( http://jangnans.com )
SOA 규격: 0.4

[-] 테크노트 (TECHNOTE 6, http://technote.co.kr )
SOA 규격: 0.4.4
첨부 파일은 SOA 규격대로 처리를했습니다.
글 관련 작업시 포인트 조정은 하지 않습니다.

[-] 조그 ( http://skydeco.co.kr/blog/ )
SOA 규격: 0.4 이상
조그 개발자가 직접 포팅 & 배포









[*] 기타
[-] 클라이언트
아래는 오직 SOA 만을 위한 클라이언트(들)입니다. 다른 API 서버에서는 동작하지 않습니다.
- SOAPS 가 올바로 설치 되었으면 '사이팅'을 통해서 홈페이지 정보를 실시간으로 확인(감시)할 수 있습니다.
	실시간 홈페이지 정보 관리 툴 '사이팅'은 http://jangnans.com 에서 다운로드할 수 있습니다.
	사이팅' 외에 필요한 기능이 있으면 http://siteapi.kldp.net 으로 연락바랍니다.

[-] 홈페이지 API 주소(End Point, 웹 서버 Open API 주소)

API 주소는 기본적으로 siteapi 디렉토리까지 기록을 하면됩니다.
예를 들면 http://jangnas.com/siteapi/ 이다. 디렉토리까지만 기록을 하면, 웹서버의 디렉토리 인덱싱 기능을 해서 자동으로 index.html 이나 index.php, index.asp, index.cgi 등이 실행될 것입니다. http://jangnans.com/siteapi 와 같이 디렉토리 마지막에 / 를 붙이지 않아도 되는 경우가 있다. 이것은 전적으로 웹서버에 의존하며, 되도록 / 를 디렉토리 맨 마지막에 표시하기를 권장합니다.

다음은 몇가지 가능한 siteapi 주소 예입니다.
ex)
	http://jangnans.com/siteapi/
	http://localhost/homepage/jangnan/siteapi/
	http://yourdomain.co.kr/yourhomepagepath/siteapi/index.php



[*] FAQ

Q. 한글이 올바로 사용(표시)이 안됩니다.
A. XML-RPC 통신에서는 기본적으로 UTF-8 문자셋을 사용합니다. 홈페이지의 데이터(데이터베이스 등)가 다른 문자셋을 사용하는 경우, 웹브라우저로 /siteapi/ 디렉토리로 접속을 한 다음, 맨 아래에 나타나는 문자셋을 선택해 주시면됩니다.
A-2. 문자셋은 아무나 막 지정할 수 있습니다. 즉, 홈페이지 관리자가 올바로 지정을 해놨는데, 다름 사람이 바꿔 버릴 수 있습니다. 이를 방지하기 위해서는 각 데이터 저장 디렉토리에 siteapi_charset.conf.php 파일이 존재할 것입니다. 이 파일의 퍼미션을 외부에서 기록을 못하도록 하면됩니다. 데이터 저장 디렉토리는 zb4 에서는 ./data 이며, gnuboard4 에서는 ./data 이고, jangnan 에서는 ./file 등 입니다. 각 소프트웨어마다 저장 공간을 보시면됩니다.

Q. 홈페이지의 글 목록이 원격 편집기에 나타나지 않습니다.
A. 원격 편집기로 글을 작성, 수정, 삭제를 하는 작업은 자신이 등록한 글에 한해서만 됩니다.
따라서 원격 편집기는 홈페이지에 있는 정보를 다운로드하여 사용자에게 보여줄 때에 사용자가 직접 등록한 글에 한해서 보여주는 것입니다.
그러므로, 처음 원격 편집기를 실행해서 계정 정보를 설정하면, 자신의 글만 리스트되는 것입니다. 즉, 자신이 홈페이지에 글을 등록하지 않았으면 게시판 이름만 보일 것입니다.

Q. 다른 편집기에서는 잘 되는데, Zoundry 에서만 처음 설정을 할 때에 에러가 발생합니다.
A. siteapi_server.php 에서 디버깅 정보가 0 으로 되어 있는지 보십시오.

	define("DEBUG", 0);

Q. 맥 OS 용 ecto 에서 글자가 제대로 나타나지 않습니다. 글자가 깨어져서 나타납니다.
A. 이 현상은 SOA PHP Server 뿐만 아니라, 타 원격 블로깅 서비스 업체에서도 동일하게 나타나는 현상으로 ecto 소프트웨어 자체적인 결함일 가능성이 많습니다. 2007년 1월 9일 현제 ecto 소프트웨어 제작 회사에 리포팅을 해 놓았고 처리 중이라는 답변을 받았습니다.






[*] 알려진 문제점

- 매킨토시 운영체제의 원격 편집기인 ecto 에서 이전 글을 목록할 때, 글자가 깨어지는 현상이 있습니다.
윈도우즈용은 잘 보입니다. 매킨토시 운영체제의 ecto 에 대해서는 따로 테스트가 필요한 것 같습니다.


- siteapi_procedure.php 의 60번째 라인을 아래와 같이 수정하십시오.

	if ( is_array($var) ) { return $var; echo "<br>$var<br>"; }
	
	위 내용은 메인 소스 트리에 적용이되었습니다. 1.0 버젼 이후에 적용이됩니다.

- 2007년 3월 12일 MS Word 2007 에서 이미지 업로드시 입력 값 처리가 올바르지 않다고 리포팅되었습니다.
	이것은 MS Word 2007 소프트웨어가 표준을 지키지 않아서 발생하는 문제입니다.
	표준을 지키지 않는 클라이언트 소프트웨어 MS Word 2007 을 위해서 표준을 지키는 서버 소프트웨어 SOAPS 가
	해야할 일은, newMediaObject 바운딩에서 아래의 입력 형식을 추가하는 것입니다.
	
		array( $xmlrpcStruct, $xmlrpcInt,    $xmlrpcString, $xmlrpcString, $xmlrpcStruct )
	

	위 내용은 메인 소스 트리에 적용이되었습니다. 1.0 버젼 이후에 적용이됩니다.
	
	-- reported by tory, http://www.skydeco.com/blog/
	
- 2007년 3월 16일 MS Word 2007 에서 이미지 업로드와 관련하여 또다른 리포팅이 있었습니다.

	metaWeblog_newMediaObject($blogid, $id, $pw, $struct, &$result) 에서
		아래와 같이 두 라인을 주석(카테고리 체크 및 사용자 인증)처리를 하니 이미지가 업로드된다고 합니다.
		
	//if ( ! ($category = dl_category($blogid)) ) return fault(_wrongCategory, "datalayer_jangnan_hometools::metaWeblog_newMediaObject");
	//$fc = dl_authority($user, $category, 'w'); if ( $fc ) return fault($fc, "datalayer_jangnan_hometools::metaWeblog_newMediaObject");

	이것은 명백히 버그를 만드는 행위이므로 다른 대안이 있어야할 것 같습니다.
	
	필요하다면 당분간만이라도 위와 같이 할 수 있습니다.
	
	-- reported by tory, http://www.skydeco.com/blog/


[*] SOAPS 의 달라진 점 기록

[-] 버젼: 1.0 2007/03/01

달라진 점 없습니다. 많은 테스트를 통해서 정식 버젼으로 발표해도 되겠다고 판단하여 1.0 이라는 메이져 버젼을 붙입니다.


[-] 버젼: 0.8.4 2007/01/05
웹브라우저로 /siteapi/ 설치 디렉토리에 접속을해서 문자셋 설정을 할 수 있도록 했습니다.

[-] 2007/01/04
서버는 클라이언트로 데이터를 전송할 때에 XML 문장의 문자셋을 <?xml version="1.0" encoding="utf-8"?> 와 같이 하던지, 아니면 생략해야합니다. 문서는 utf-8 로 표현되어야합니다.

[-] 2007/01/03 클라이언트로 전송하는 XML 데이터의 문자셋을 utf-8 로 고정. 이것은 <?xml version="1.0" encoding="utf-8"?> 와 같이 문자셋의 표현을 고정시키는 것. 자세한 것은 규격 문서를 참고

[-] 버젼: 0.8 날짜: 2006년 12월 27일
내용 없음


