기존의 웹 포스비를 말하는 것은 아니고, PosB 2000 에 함께 사용할 웹 인터페이스를
만들어야 한다. 예전에 PosLUG 서버에서 몇명이 만들어 놓은 아주 기초적인
routine들이 있었지만, 현재 PosLUG 서버가 맛이 가 있는 관계로 그 소스를 언제
꺼낼 수 있을지 보장이 없다. 사실, 그 routine들이 마음에 안 들기도 했고.. ^^
지금 포스비에서는 web daemon이 posb라는 user의 권한으로 돈다. 그래서
글을 읽고 쓰고 글 정보를 수정하고 하는데 지장이 없다. 현재 포스비 서버에서
웹을 사용하는 것이 포스비 밖에 없으니까.
그런데, 이녀석을 내 컴으로 옮기고 시험을 하면서 개발을 하려고 했더니
당장 웹 데몬의 UID가 문제다. 이미 내 홈페이지를 돌리고 있으니 웹 서버의
UID는 www-data의 것을 써야 하는데, terminal용 client는 posb라는 user로
동작한다.
그래서.. 결국, 별로 바람직하지는 않지만, 이렇게 했다.
posb:posb로 기존의 terminal용 client를 돌리고, 기존의 모든 포스비용 file들은
posb:posb의 소유주를 갖는다. 그리고, posb라는 그룹에 www-data를 추가한다.
그리고, 모든 포스비용 file에 SGID를 설정한다. 그러면, 웹 데몬이 포스비의
file들을 건드릴 수 있다. 새로운 file을 만들더라도 www-data:posb 의 소유주를
갖게 될 것이기 때문에 terminal용 client가 접근하는데 문제가 없다.
하지만.... 역시나 그다지 바람직한 방법은 아니다. -.-;;;
제일 좋은 방법은 www daemon을 별도로 띄워서 하나는 기존의 www-data로
동작하고, 하는 posb로 동작하게 하는 것이지만, 아직 방법을 알아보지 못했다.
포스비의 Postechian 보드가 맛이 갔었다. 글목록의 정보가 담긴 .DIR이란 file이
사라져 버렸는데, 예전에 rebecca라는 해커가 글목록이 맛이 갔을 경우에 복구하는
툴을 만들었었다. 그런데, 이 작은 프로그램을 컴파일하려니 안되는 것이다.
이 프로그램에서 scandir()이라는 function을 사용하는데 이것이 현재 포스비에
설치된 라이브러리에 없었다. 처음에는 scandir()과 함께 사용하는 alphasort()라는
function만 없는 줄 알았더니 scandir()자체가 없으니 당황스러울 수밖에 없었다.
어쩐다. man page를 읽어보니 BSD계열이 아니면 scandir()의 사용을 자제하라는
정도만 있다. 하지만, 대부분의 리눅스에서 사용하는 glibc에는 이 function이
정의돼 있다. 냠.....
결국, glibc source를 가져다가 scandir()의 부분을 긁어서 복구용 툴의 소스에
가져다 붙였다. 그리고, 포스비의 라이브러리 환경에 맞추어 변수를 들을 바꾸어주고
에러 처리에 관계된 몇개의 줄을 삭제하고 컴파일했다. 음.... 동작한다. 캬캬..
좀더 향상시키자면, 시스템 라이브러리에 scandir()이 정의돼 있는 경우와 그렇지
않은 경우에 구분해서 사용하도록 #ifdef 같은 것들을 넣을 수도 있겠지만,
어차피 1년에 한번 사용할까 말까 하는 프로그램이라 귀찮아서 그냥 뒀다.
그리고, 사실 조만간 새로운 머신에 새로운 포스비가 up and running할 것이기 때문에,
저 프로그램 자체가 소용이 없어질 것이다.