ジャンクなページ
何かのメモ。
自己責任でどうぞ。
2.4.2へアップグレードした際に取得したRSSが文字化けすることがある。
RSS取得周りの各ファイルの文字コードと改行コードが原因ぽい。
lib/include/simplepie.inc lib/include/Snoopy.class.php lib/include/PNE/SimplePie.phpをUTF-8、LF(\n)に統一。
Snoopy.class.phpの722〜728行目は
chr(228),chr(246),chr(252),chr(196),chr(214),chr(220),chr(223),
に書換えて設置でOK。のはず。
上の文字コードを文字化すると ä ö ü Ä Ö Ü ß
なんとも中途半端な…Ëやÿとかは要らんのだろうか?
OpenPNEを設置したサーバーが、携帯メール投稿をする場合に必要な
"|/usr/local/bin/php OPENPNE_DIR/bin/mail.php"
の設定を出来ない場合、POP3で受信して"OPENPNE_DIR/bin/mail.php"へ渡す方法。clara.zip(764B)
OpenPNE2.2.8/2.2.9/2.4.2にて動作を確認。
必要な物
OpenPNEが設置/動作している環境
config.phpで'MAIL_SERVER_DOMAIN'に指定したドメイン宛のメールをCatchAll機能などを使って、1アドレスで受信できる事
下記コードのPOP3サーバーの設定は、そのアドレスの設定にする
コード
<?php
require_once "mail.php";
// 受信メールサーバーの設定
// POP3サーバー
$host = "localhost";
// ユーザーID
$user = "user";
// パスワード
$pass = "pass";
$sock = fsockopen($host,110,$err,$errno,10) or exit("can't connect pop server");
$buf = fgets($sock, 512);
if(substr($buf, 0, 3) != '+OK') exit($buf);
$buf = sendcommand("USER $user");
$buf = sendcommand("PASS $pass");
$data = sendcommand("STAT"); //件数とサイズ取得
sscanf($data, '+OK %d %d', $num, $size);
if ($num == "0") { //新着無し
$buf = sendcommand("QUIT");
fclose($sock);
echo "no messege\n";
exit;
}
for($i=1;$i<=$num;$i++) {
$line = sendcommand("RETR $i"); //メッセージ取得
$raw_mail = '';
while (!ereg("^\.\r\n",$line)) {
$line = fgets($sock,512);
$raw_mail .= $line;
}
$data = sendcommand("DELE $i"); //メッセージ削除
m_process_mail($raw_mail);
echo "done\n";
}
$buf = sendcommand("QUIT"); //受信完了
fclose($sock);
function sendcommand($cmd) {
global $sock;
fputs($sock, $cmd."\r\n");
$buf = fgets($sock, 512);
if(substr($buf, 0, 3) == '+OK') {
return $buf;
} else {
exit($buf);
}
return false;
}
?>
適当なファイル名で保存し、"OPENPNE_DIR/bin"に設置。cronで実行させる。
投稿がOpenPNEに反映されるまでに、最大でcronの実行間隔分の時間がかかるので、ユーザーにはその旨告知した方がいい。
(携帯キャリアやメールサーバーの状況によってはそれ以上掛かる場合もあり得る)
シェルスクリプトの例
#!/bin/sh /usr/local/bin/php /virtual/account/bin/clara.php exit
XREAにて動作確認済。
#BBQここから
sub BBQ{
my $BBQ = 0;
if(gethostbyname(join(".",reverse(split(/\./,$ENV{'REMOTE_ADDR'}))).".niku.2ch.net") eq "\x7f\x00\x00\x02"){
$BBQ = 1;
} #BBQリストに載っていれば 1
if($BBQ){
&error("アクセスを許可されていません");
}
}
#BBQここまで
上記コードをsub axscheckの直前あたりに記述。&BBQ;を&axscheck;直前で呼び出し。
Joyful Note 1.x の場合
&decode;
&BBQ;
&axscheck;
if ($mode eq "howto") { &howto; }
以下略
Joyful Note 2.x の場合
&parse_form;
&BBQ;
&axscheck;
if ($mode eq "howto") { &howto; }
以下略
YY-BOARD 5.x の場合
&decode;
&BBQ;
&axsCheck;
if ($mode eq "dele") { &dele; }
以下略;
YY-BOARD 6.x の場合
&decode;
&BBQ;
&axsCheck;
if ($mode eq "howto") { &howto; }
以下略