探検


rep2 part73

1名無しさん@お腹いっぱい。
垢版 |
2026/07/22(水) 11:34:42.98ID:b9PL/+wk0
※■公式p2はこのスレでは扱っていません■※

ブラウザから 2ちゃんねる、まちBBS、JBBS@したらばBBS 等の
掲示板を快適に閲覧するためのPHPスクリプトです。
Mac OS X、UNIX、Linux、Windows などで動くマルチプラットフォーム設計。
ソースは公開されています。

※このスクリプトを動作させるためには、サーバを動かしてPHPを走らせる必要があります。
※荒れる元なのでレンタル鯖やVPSにp2を設置する話題はしない&スルーしてください。
※不具合は怒らず煽らず落ち着いて報告しましょう。

■公式ページ
rep2 expack 全部入り for PHP 8.x by (´・ω・) ス
https://github.com/mikoim/p2-php/
rep2 expack 全部入り by open774
https://github.com/open774/p2-php
p2 - PHPでつくった2ch Viewer
http://akid.s17.xrea.com/
p2Wiki
http://akid.s17.xrea.com/p2puki/

■前スレ
rep2 part72
https://egg.5ch.io/test/read.cgi/software/1740874866/
2026/08/18(火) 22:00:41.14ID:ShFNWum90
>>67
その構成でなんでrep2に変更がいるんだっけ?
rep2のproxyをlocalhost:11080に向けるだけじゃないの?
proxy ON/OFFのチェックボックスは今でもあるからそれ使えばよいし
71名無しさん@お腹いっぱい。
垢版 |
2026/08/18(火) 22:42:25.22ID:wzympKH00
>>70
そう
rep2側はlocalhost:11080指定+既存のproxy ON/OFFだけで足りる

rep2本体側で追加したのは書き込み画面のUPLIFTくらい
今弄ってるのはADB forwardとEvery Proxyの自動復旧側で
その辺も含めた追加機能は今のところ仮で別画面にまとめてる

https://i.imgur.com/5MplkPz.png
https://i.imgur.com/JojHI5R.png
2026/08/18(火) 22:50:12.66ID:O86TrN9T0
次のphpは8.6か
まだ9系にはならんらしい
2026/08/18(火) 23:21:23.59ID:ShFNWum90
前スレの↓かと思ってた
https://egg.5ch.io/test/read.cgi/software/1740874866/789

全然違う話だった
74名無しさん@お腹いっぱい。
垢版 |
2026/08/20(木) 14:26:14.94ID:uo86Xslg0
5chへの書き込みで

「ERROR: ただ今あなたの投稿を拒否しております。」

が出たので追ってみた。

8/20は

12:09:23 1回目のPOST → 投稿成功
12:50:05 2回目のPOST → 上のエラー

という流れ。

Caddyのログでも

2026-08-20T12:09:23.230425+09:00
POST /post.php
duration=2.519
size=1385
status=200

2026-08-20T12:50:05.504801+09:00
POST /post.php
duration=1.891
size=2021
status=200

の2回を確認してる。

Cookie DBの最終更新時刻も12:50:05と一致してる。
75名無しさん@お腹いっぱい。
垢版 |
2026/08/20(木) 14:26:43.31ID:uo86Xslg0
Cookie DBを8/20 06:15のバックアップと比較したところ、

問題発生前
acorn len=393
MonaTicket len=25
BAN なし

問題発生後
acorn len=393 → 同一
MonaTicket len=25 → 同一
BAN len=12 → 新規追加

実際の比較結果は

acorn backup_len=393 current_len=393 same=YES
MonaTicket backup_len=25 current_len=25 same=YES
BAN backup_len=NONE current_len=12 same=NO

だった。

MonaTicketはバックアップを遡ると、少なくとも8/14 20:56から現在まで全部同一。
その間のバックアップにはBANは一度も入ってなかった。
76名無しさん@お腹いっぱい。
垢版 |
2026/08/20(木) 14:30:49.90ID:uo86Xslg0
ソースで気になったのがCookieの保存処理。

post.phpでは5chから返ってきたCookieを

$cookies = $response->getCookies();

if ($cookies) {
foreach ($cookies as $cookie) {
if (!$p2cookies) {
$p2cookies = array();
}
$p2cookies[$cookie['name']] = $cookie['value'];
}
}

としてる。
77名無しさん@お腹いっぱい。
垢版 |
2026/08/20(木) 14:32:11.86ID:uo86Xslg0
P2CurlRequest側ではSet-Cookieから

name
value
domain
path
expires
secure
httponly

まで解析してるのに、ここでnameとvalueだけにしてるので、
expires/domain/path等が保存時に落ちてるように見える。

一方、読み込み側には

if (array_key_exists('expires', $p2cookies)) {
if (time() > strtotime($p2cookies['expires'])) {
CookieDataStore::delete($cookie_key);
$p2cookies = null;
}
}

という期限チェックがある。

今の保存形式だとMonaTicket個別のexpiresは管理できてないように見える。
78名無しさん@お腹いっぱい。
垢版 |
2026/08/20(木) 14:34:26.47ID:uo86Xslg0
送信時のurlencodeも疑ったけど、今のMonaTicketでは

raw_len=25
urlencode_len=25
changed=NO

だったので今回はそこではなさそう。

現時点では

古いMonaTicketを保持

5chへ送信

何らかの判定でBANが付く

次の投稿で「ただ今あなたの投稿を拒否しております」

みたいな流れを疑ってる。

ただ、BANが付いた直接原因がMonaTicketなのか、IP/回線側なのかまでは断定できてない。

MonaTicketのexpires管理、更新・削除のSet-Cookie処理、
確認ページ処理が今の5ch仕様に合ってるか、
この辺見てほしい。
79名無しさん@お腹いっぱい。
垢版 |
2026/08/20(木) 14:34:40.41ID:uo86Xslg0
追記。

さっきもう一度書き込もうとしたら同じエラーになったけど、
rep2側のCookieとキーを削除してから書き込んだら正常に投稿できた。

なのでIP/回線だけの固定規制というより、
rep2が保持してるCookieかキーの状態が関係してる可能性が高そう。

ただ今回はCookieとキーを同時に消したので、
どっちが原因だったかまでは切り分けできてない。
80名無しさん@お腹いっぱい。
垢版 |
2026/08/20(木) 14:41:17.01ID:uo86Xslg0
あと5ch側の情報も調べた。

5ch公式は2025/3/24に専ブラ開発者向けとして、

・yuki=akariを廃止してMonaTicketを使用
・一部専ブラでCookie処理が適切でないケースがある
・新しいCookie取得時は書き込み確認ページを改変せず、確認処理を厳密に行う

と案内してる。

実際の5ch上の報告では、

X-Chx-Error: 0000 Confirmation[Broken MonaTicket]
Set-Cookie: MonaTicket=; expires=...; path=/; domain=.5ch.io

という応答で、壊れたMonaTicketを削除させる挙動も確認されてる。

運用系では、期限切れMonaTicketで
「ERROR: ただ今あなたの投稿を拒否しております。」
になるという報告や、
BAN Cookieが付いた状態だと投稿拒否になり、BANを消すとBBxed表示になるという報告もある。
81名無しさん@お腹いっぱい。
垢版 |
2026/08/20(木) 14:41:32.68ID:uo86Xslg0
それと、さっきもう一度書き込もうとしたら同じエラーだったけど、
rep2側のCookieとキーを削除してから書き込んだら正常に投稿できた。

なのでIP/回線だけの固定規制というより、
rep2側で保持してるCookieかキーの状態が関係してる可能性は高そう。

今回はCookieとキーを同時に消したので、
どっちが原因だったかまでは切り分けできてない。

MonaTicketのexpires管理、更新・削除のSet-Cookie処理、
確認ページ処理が今の5ch仕様に合ってるか、
この辺見てほしい。
2026/08/20(木) 15:43:54.68ID:8WXZCmmf0
去年の夏ぐらいからMonaTicketはexpires通りに失効させないとBBx送りされる
自分は動けばいいからpost.phpにてきとー修正したけど

自分が使ってるのはopen774がフォークするより前の古のものがベースだから正確じゃないかもだけど
https://github.com/open774/p2-php/commit/e7023ce6d3dae54fa1a8d4944eb4f1669904c640
これでexpiresとかは捨てるようになったっぽいな
これ以前は捨てずにストアするけど同じドメインの複数のcookieにexpiresが設定されることを想定されてない実装だった
2026/08/20(木) 21:05:44.26ID:tFesyUim0
情報助かるわー
なんでexpiredの処理ってこれで大丈夫なん?って不思議に思ってたけど、
やっぱ駄目だって話か
今ってexpiredを覚えてないからまともに対応するならDB変更ですな

外部でも同じようなことは起こってもおかしくないし、
なるべく本物ぽい動きになるように修正しますわ
rep2-allinoneの話を片付けてからになりそうだけど
84名無しさん@お腹いっぱい。
垢版 |
2026/08/20(木) 21:20:35.75ID:uo86Xslg0
ImageCache2について調査したところ、
i.imgur.com取得時に稀にDNSタイムアウト(x02)が発生する場合がある。

原因は5秒のconnect_timeoutで、DNSやCDN側の一時的な遅延でもエラーDB(ic2_errors)に保存され、そのURLは通常再取得されない仕様。

設定を5秒→10秒に変更すると緩和できるが、根本的には一時的なx02と404などの恒久エラーを分けて扱えると良いのかも。
2026/08/21(金) 01:48:47.51ID:2sbsw28H0
>>84
異常系ってめんどくさい。

直感的には指摘通りちょっと変だなとは思うけど、実装を見た感じそこまでおかしいとは思えなかった。
getter_conn_timeoutだけじゃなくてgetter_read_timeoutもx02にしてるようだ。
getter_conn_timeoutで弾くのは相手がDROPしてたらそこを延々と叩くのはどうなのって話でそのためにある設定だと思えばあっているように思える。

x02に落とす条件は他にもあるけど他も含めて網羅的に検証して提案してくれるなら検討の余地は十分あるけど、
これ以上は自主的にやろうとは思えなかった。
2026/08/25(火) 19:09:17.97ID:hqLPkwXX0
スレのURL(例えば>>1の前スレのURL)を普通に開くと問題ないですが、[p]でポップアップで開くと以下のエラーがでます
PHP Warning: Trying to access array offset on null in/lib/ShowThreadPc.php on line 138
PHP Warning: Undefined variable $res1 in /lib/read_footer.inc.php on line 83
PHP Warning: Trying to access array offset on null in /lib/read_footer.inc.php on line 83
87名無しさん@お腹いっぱい。
垢版 |
2026/08/26(水) 12:02:52.23ID:KcPOxBA50
rep2をサーバーにして
chmate繋げられた
読み込みと書き込みはオッケー
完成までにはまだかかりそうだけど
https://i.imgur.com/pUu2I61.png
2026/08/27(木) 01:51:41.25ID:96b1QJhR0
talkスレでfooterの元スレリンクのポップアップで>>1とか1-10とか1-100とかあるんだけど、
スラッシュが抜けてるんでリンク先が404になります
2026/08/27(木) 19:14:33.83ID:OXP5HGFj0
80,82の指摘を修正した
更新後はデータ構造変更により古いクッキーは捨てるのでどんぐり基地へ再ログインすること
警備員○はどうしようもないので作り直し

86と88はまだ未調査
90名無しさん@お腹いっぱい。
垢版 |
2026/08/28(金) 04:55:09.73ID:jk0zA8ah0
>>89
ありがとうございました
2026/08/28(金) 21:10:17.98ID:Wj3QyCn70
>>86
>>88
修正しました

86の方は実害がある警告でした
2026/08/28(金) 21:26:25.75ID:Wj3QyCn70
クッキーの期限対応の後、動きを見た感じ以下のようになってそう。

どんぐり基地からは acorn が無期限が送られてくる。
post.phpすると acorn は4日後のAM9時、MonaTicket は14日後のAM9時、が送られてきて更新。

その後はpost.phpでは期限の更新はされないみたい。
acorn はpost.php側にどんぐり基地からの自動取得が入れてあるのでそれで救う想定。
MonaTicket の方は切れたら確認画面挟んで更新するみたいな動きになりそう。

どんぐり基地側に専ブラのどうのって設定があるから、
もしかするとその設定によっては特殊なヘッダーでなんか来てたりするのだろうか(未調査)
2026/09/03(木) 19:33:53.94ID:a5cI1mIc0
fukumenです
docker-rep2とrep2-allinoneをp2-phpのdeployの下へ移動してp2-phpへ統合する計画をしています
統合が完了次第、docker-rep2とrep2-allinoneはアーカイブ化して以降はp2-php側のみメンテします
また、p2-phpデフォルトブランチをphp8-merge-mbstringからmainに変更します

プランは大体まとまったので来週末あたりまでにまとめて実施してpushする予定ですが、
考慮漏れはありそうなので五月雨式の変更が入るかも

ユースケース別の変化点

https://i.ibb.co/5hgCDjCP/9d973aafdcdb.png
2026/09/16(水) 12:35:54.18ID:GhwanBXv0
Macをアップグレードしたら書き込みウィンドウが最大化で表示されるようになった
Safari 27なんだけど26のときは問題なかったから、Safariの仕様が変わったのかな
レスを投稿する


ニューススポーツなんでも実況