monafs
SYNOPSIS
monafs [-dv] [-m mtpt] [-s srv]
	OPTIONS
- d
 - デバッグ文を有効にします。
 - m mtpt
 - mtptをマウントポイントとして使用します。
 - 指定がなければ/n/2chを使います。
 - s srv
 - /srv以下にサービスファイルを作成します。
 - v
 - 進行状況をstderrに書き出します。
 - デバッグ文とはまた違う出力になります。
 
INSTALL
libkanjiが必要です。 あらかじめインストールしておいてください。 または、monafsに付属する以下の関数をいじれば、libtcsでも大丈夫です。
- util.c:sjistostring
 - util.c:Ufmt
 
libtcs (半角カナ対応版) http://c.p9c.info/plan9/
また、書き込み機能が必要な場合には、 webfs(4)をreferer送信に対応させることが必須です。 同封のwebfs.diffを当てたものを作成しておいてください。
これは古いです。おそらくパッチも当たらないでしょうし、 当てたとしても2chの仕様も変わってしまったため、 書き込みはできないと思われます。
準備ができたら、
% mk
% mk install
		これで、$home/bin/$objtype以下にインストールされます。 マウントポイントに/n/2chを使うので、 なければそれも作っておいてください。
# 実際に作成する場合
% mkdir /n/2ch
% chgrp -u sys /n/2ch
# 動的に生成する場合(こちらがおすすめ)
% mntgen
	FILES
マウント後のファイル構造は以下のようになっています。
category/ (1からn)
	subject
	board/ (例えばunix)
		ctl
		post
		subject
		thread/ (1029374722)
			ctl
			post
			subject
			article/ (1から1000)
				from
				mail
				date (YYYY/MM/DD HH:MM:SS)
				id
				be
				message
		これらは必ず作成されます。 内容が無い場合は、空ファイルになっています。
全てのsubjectと、from、articleの内容は、 実体参照(例えば<>)や文字符号(Ӓ)が、 通常の文字(例えば<>)へと変換されています。 またmailの内容は、%HH形式の16進コードを それが対応する文字へと変換します。
dateはタイムゾーンの設定によって変わってきますが、 その値はどれも同じ時間を表します。 例えばタイムゾーンをJSTに設定すれば、 2ちゃんねるに表示される時間と同じ値になります。 また、あぼーんや[ここ壊れています]の場合には、 1970/01/01 09:00(time=0の時刻)となります。
皇暦など、通常ではない時間の場合には不具合が出るかもしれません。
ctlへrefreshと書くと、板またはスレッドを読みなおします。 また、ctlを読むと、スレッドや板の詳細が入っています。 共通して、文字の区切りはスペース(0x20)1つです。
board/ctl
host server.domain.dom
			その板のあるホスト名が入ります。
thread/ctl
rank XXXX
article XXXX
			rankはスレッド一覧の表示順位を持ちます。 1が最新(上)で、順に下がっていきます。 articleは、そのスレッドに書き込みされたレス数です。
thread/post
ここへ書くと、それを書き込みとして処理します。
from:no name
mail:mail address
raw text...
			fromは書き込みした人の名前で、mailはメールアドレスです。 from:またはmail:が先頭の行のみ、属性と認識されます。 それ以外が現れた行以降は、ただのテキストと判断します。 from,mailを省略すると、空文字列が補われます。
thread/post
書き込みできる属性が見れます。 acmeなどで開いて、そのまま使えます。
from:
mail:
		board/post
ほとんどthread/postと同じですが、 属性にsubject:thread subjectが追加されています。
日本語文字はUTF-8で書いてください。monafsが変換します。 書き込みされた掲示板は、自動的にecho refresh >ctlされます。
EXTRA
rc/以下に、おまけのプログラムを用意してみました。 詳しくはrc/READMEを読んでください。
BUGS
まちBBSには対応してません。
monafsのリリース以降、2chに仕様変更が起こったため 現在おそらく書き込みできません。時間のあるときに修正します。
バグなどはこちらまで <[email protected]>
TODO
思いついたものを列挙してみました。
サーバに優しく
- gzip圧縮に対応
 - If-Modified-Sinceで更新を調べる
 - 差分だけ読み込む
 
仕様へ追いつく。
- ID:xxxx BE:xxxx
 - subbbs.cgiの廃止
 
埋め込み設定を別ファイルにする。
- 実体参照テーブル
 - 書き込み判定文字
 
外部板に対応
- まちBBS
 - したらば、JBBS
 
ほか
- ●(有料)IDに対応
 - BEに対応。