【ニコニコ】自動ローカル保存プロクシ NicoCache26 (905レス)
1-

823
(1): (スプッッ Sdad-Vogm) 08/18(月)22:43 ID:9NAdGjR5d(1) AAS
アップローダに使われているphpUploaderをフォークし、機能を強化しました。
外部リンク:github.com
主な強化点
- ワンクリックで共有リンク生成、ダウンロード数制限、日数制限
- フォルダマネージャで同種類のファイルを管理、階層移動、ネスト管理
- ファイル差し替えキーで後からコメント編集可
- ファイル差し替えキーで後からファイル差し替え可
- RESTful API追加でスクレイピングに頼ることなくアップローダと対話可能
- レスポンシブデザイン対応
- 動的更新
- ドラッグ・アンド・ドロップアップロード
- 再開可能アップロード
- 悪用を防ぐため差し替えキーと削除キーはアップロード時に必須設定
- 管理者マスターキーで一括削除(マスターキー以外では一括削除不可)
- AES-GCMによるキー暗号化
- v1.xからの自動マイグレーション機能(既存ファイルはダウンロードキーは無効化されダウンロード可能に、削除はマスターキーのみの対応になります)
824
(2): ◆cl7sUAt.CpnA (ワッチョイ 1158-mlbM) 08/23(土)17:39 ID:SkY37CRC0(1/2) AAS
避難所のphpUploaderのバージョンアップを実施します。

>>823氏のフォークはうちの環境だとうまく動かなかったので
(初回のディレクトリとファイル生成がされない・・・申し訳ない)

オリジナルのv2.0.1に更新します。
なお、Ver.2.0 は DB の仕様を刷新されたため、Ver.1.x 系との互換性がありません。

そのため現行の避難所3(v1.2.1)はアップロード不可状態にして、避難所4(v2.0.1)を新規に導入します。

利用方法は今までと変わりません。

土日にかけてサイト表示が崩れたり
ダウンロードが一時的に不可になるかもしれませんが、ご理解のほどよろしくお願いします。
825
(1): (スッップ Sdb3-Vogm) 08/23(土)19:12 ID:Qfl8dtUad(1/2) AAS
>>824
ルートフォルダーにdata, db storage/logフォルダが必要なので、手動で作成してもらえば正常動作するはずです。
826
(1): (スッップ Sdb3-Vogm) 08/23(土)19:24 ID:Qfl8dtUad(2/2) AAS
報告を受けv4.2.5-roflsunrizとしてリリース。
初期化処理を修正。フォルダを自動作成するようにした
外部リンク:github.com
827: ◆cl7sUAt.CpnA (ワッチョイ 1158-mlbM) 08/23(土)23:04 ID:SkY37CRC0(2/2) AAS
>>824

バージョンアップは一旦終了しています。

避難所3は./third/にアドレス変更しました。
トップのヘッダにリンクを追加したので、そちらからアクセスしてください。

>>825
>>826

レスありがとうございます。もうすこし、裏でテストしてみます。
828
(1): (スッップ Sdea-gG8G) 08/24(日)00:02 ID:mae+lnI6d(1) AAS
data, db, storage/logsディレクトリに書き込み権限を与えてconfig.phpに管理者マスターキーと暗号化キーとセッションソルトを16/32文字以上設定でDockerで正常動作してますが、実運用環境だと何か違うんですかね?
うーむ。
829: (ワッチョイW 41c3-FK1Z) 08/24(日)10:45 ID:SaOCugOu0(1) AAS
私のフォーク版を使ってもらいたいので、報告があればすぐに直します。
830: ◆cl7sUAt.CpnA (ワッチョイ 3558-BVU1) 08/24(日)16:43 ID:/acYEBnd0(1) AAS
>>828

そこらへんはv2.0.1と同じなのでミスはしていないと思うのですが・・・

db, data, temp, storage/logs パーミッション 770

.htaccessで外部アクセス遮断
backend/config/, db, storage/logs/, temp

ルートにindex.phpが無いので、
/backend/public/index.phpにアクセスすると

サイト表示はされて、
data, db, storage/logsも生成されましたが、
ファイルアップロードもフォルダ作成も動かないです。

folders.php
refresh-files.php
upload.php

404エラーで失敗します

テスト環境
外部リンク:nicocache-five.jpn.org
831
(1): (スッップ Sdea-gG8G) 08/25(月)02:40 ID:kh3HF4Dqd(1) AAS
phpUploader v4.3.0-roflsunriz リリース
外部リンク:github.com

多分これで動作するはずです。
直接的原因はdockerのapacheの設定でフロントエンドアセット/frontend/とバックエンドアセット/backend/のエイリアスを追加してルーティングしていたためdockerでは正常動作していました。
apacheでルーティングの設定をしなくても動作するようにもろもろ変更修正しました
832
(1): ◆cl7sUAt.CpnA (ワッチョイ 3558-BVU1) 08/25(月)22:12 ID:93sSH97O0(1/2) AAS
>>831
ありがとうございます。フォルダ作成できましたが、ファイルアップロードすると、

/api/index.php?path=/api/files
に対するPOSTが500になります。

/api/index.php?path=/api/files
にアクセスすると

{ "success":false,"error":{"code":"API_KEY_MISSING","message":"API key is required"},"timestamp":"2025-08-25T21:56:17+09:00"}

/api/index.php?path=/api/files&api_key=<config.phpで設定した'api_keys'>
でアクセスすると

{
"status": "success",
"message": "Files list",
"data": {
"files": [],
"pagination": {
"page": 1,
"limit": 20,
"total": 0,
"pages": 0
}
},
"timestamp": "2025-08-25T21:56:43+09:00"
}

テスト環境
外部リンク:nicocache-five.jpn.org
(ルートを/backend/public/に変更)
833
(1): (スッップ Sdea-gG8G) 08/25(月)22:32 ID:3k2fF2/yd(1/2) AAS
>>832
phpのバージョンは8.1以降をご使用ですか?
834
(1): (スッップ Sdea-gG8G) 08/25(月)22:50 ID:3k2fF2/yd(2/2) AAS
storage/logsには何かエラーログは記録されてませんか。
835: ◆cl7sUAt.CpnA (ワッチョイ 3558-BVU1) 08/25(月)23:36 ID:93sSH97O0(2/2) AAS
>>833
8.3.8です。

>>834

こういう感じのですね
[2025-08-25 22:24:27] [info] Access: page_view | Status: success | Context: {"ip":"","user_agent":"","referer":"https:\/\/nicocache-five.jpn.org\/?folder=2","request_uri":"\/?folder=","request_method":"GET"}

ああーconfig.phpでdebugにすればいいのか

GitHubのアカウント作成したのでそちらでissue上げた方がいいですかね
あまりスレ汚すのも・・・
836: (スッップ Sdea-gG8G) 08/26(火)00:31 ID:51YgqbNkd(1) AAS
イシュー立ててもらってもいいですが、原因が分からないですね…
v4.3.1 出してみましたが、これで直らなかったら…
837
(1): (アウアウウー Sa11-gG8G) 08/26(火)12:35 ID:0LlT0anPa(1/3) AAS
対処の道筋(本番差分で500/空ボディになり得る要素)
- PHP拡張 or バージョン差
- コードは`pdo_sqlite/sqlite3/openssl/json/hash/mb_string`必須。Dockerは入っているが、本番で未導入だと初期化時に落ちる(`openssl`のAES-GCM非対応なども要注意)。
- 確認: php -m / php -v(本番)。OpenSSLのバージョンも見る。
- 書き込み権限差
- `db/`, `data/`, `storage/logs/`にWebユーザーの書き込みが必要。DockerはOK、本番で不可だと初期化や保存でエラー。
- Apacheドキュメントルート/Rewrite差
- Dockerは`DocumentRoot backend/public`かつ`/api/* → /api/index.php?path=...`でルーティング。URL直叩き(`/api/index.php?path=/api/files`)でも動く設計だが、本番の`DocumentRoot`や`IncludePath`の違いで`require`失敗→500になることがある。
- PHP設定差
- `post_max_size`, `upload_max_filesize`, `max_file_uploads`, `max_execution_time`が小さい/厳しすぎると、リクエスト読込前にPHPが落ちて空レスになり得る(WAF/ModSecurityも同様)。
- 逆プロキシ/HTTPS検知差
- `X-Forwarded-Proto`が届かずセッション周りが不安定になるとCSRFで403…だが今回は500なので優先度は低。とはいえ本番のプロキシヘッダー設定は要確認。

素早い切り分け用コマンド(Windows PowerShellからでもOK)
- 最小アップロード(ファイル+必須キーのみ。CSRFはAPI直叩き時は未使用想定)
```powershell
curl.exe -v -H "Authrization: Bearer <API_KEY>" -F "file=@C:\Windows\win.ini" -F "replacekey=test_key_2025" -F "delkey=test_key_2025" "外部リンク[php]:nicocache-five.jpn.org
```

この後の進め方
- 本番のエラーログで未捕捉エラーの内容を確認。
- その内容に応じて「拡張導入」「権限修正」「Apache設定修正」「PHP ini調整」「WAF例外追加」を当てるのが最短ルート。
838: (アウアウウー Sa11-gG8G) 08/26(火)12:37 ID:0LlT0anPa(2/3) AAS
Authrization→Authorization
839: (アウアウウー Sa11-gG8G) 08/26(火)14:59 ID:0LlT0anPa(3/3) AAS
mb_string→mbstring

もしご利用の環境でDocker Desktop版phpUploaderが正常に動作するなら本番環境の設定が間違えている可能性が高いと思います。
840: ◆cl7sUAt.CpnA (ワッチョイ 3558-BVU1) 08/27(水)00:01 ID:AV+yMmp+0(1) AAS
>>837

v2.0.1と同じくパスワードハッシュ生成でエラー吐いたので、コード変更してv4.3.2でも動きました!

error: "Internal server error", message: "Undefined constant "PASSWORD_ARGON2ID"",…}

debug: {file: "/home/undomain/www/nicocache/five/backend/core/security.php", line: 878, method: "PATCH"}

error: "Internal server error"
message: "Undefined constant \"PASSWORD_ARGON2ID\""

/**
* パスワードハッシュを生成(Argon2ID→BCRYPT)
*/
public static function hashPassword(string $password): string
{
$algo = defined('PASSWORD_ARGON2ID') ? \PASSWORD_ARGON2ID : \PASSWORD_DEFAULT;
return password_hash($password, $algo, [
'memory_cost' => 65536, // 64 MB
'time_cost' => 4, // 4 iterations
'threads' => 3, // 3 threads
]);
}

今のところちゃんと動作していそうです。
841: (スッップ Sdea-FK1Z) 08/27(水)00:28 ID:XXrefd1cd(1/4) AAS
ほう!それは良かった。
842: (スッップ Sdea-gG8G) 08/27(水)01:01 ID:XXrefd1cd(2/4) AAS
phpUploader v4.3.3-roflsunriz
外部リンク:github.com

外部リンク:github.com

コミット履歴を見てもらえばわかりますがsecurity.phpのArgon2IDをBCRYPTにしただけです
843: (スッップ Sdea-gG8G) 08/27(水)01:17 ID:XXrefd1cd(3/4) AAS
テスト環境ではおおむねの機能は動作しているようです。
あとは共有モーダルのURL、コメント+URLのテキストフィールドの表示がおかしいのと、フォルダアップロードでInvalid CSRF TokenとAPI KEY MISSINGエラーを直せばOKですね
844: (スッップ Sdea-gG8G) 08/27(水)01:35 ID:XXrefd1cd(4/4) AAS
dockerではどちらも正常なんですよねえ。なんでだろ。
845: (アウアウウー Sa11-gG8G) 08/28(木)00:58 ID:ECnJPwmha(1) AAS
v4.3.5で共有リンクの非表示問題とAPI_KEY_MISSINGは直ったはず。多分。
846: (アウアウウー Sa11-gG8G) 08/28(木)22:24 ID:cLsLYUtua(1/2) AAS
v4.3.6で共有リンクは表示されるはずだ。API_KEY_MISSINGは完全に直った。
847: (アウアウウー Sa11-gG8G) 08/28(木)22:26 ID:cLsLYUtua(2/2) AAS
v4.3.5の時点でフォルダマネージャとファイルマネージャの機能を一通り試したが、共有リンクテキストエリア表示以外の機能は100%動いている。
848: (アウアウウー Sa11-gG8G) 08/29(金)05:00 ID:YfaiLdkba(1/2) AAS
キャッシュの問題だったのか、v4.3.5でも共有リンクの表示が直っている。
849: (アウアウウー Sa11-gG8G) 08/29(金)08:39 ID:YfaiLdkba(2/2) AAS
phpUploader→Enhandiyに改名
850: (アウアウウー Sa11-gG8G) 08/30(土)10:21 ID:XyNgX8v0a(1/2) AAS
filter-matome #191リリース

外部リンク:github.com
851: (アウアウウー Sa11-gG8G) 08/30(土)17:30 ID:XyNgX8v0a(2/2) AAS
filter-matome #191.1リリース

外部リンク[1]:github.com
852: (ワッチョイW 8355-YtMd) 08/31(日)00:25 ID:s6aUmb4F0(1/2) AAS
Enhandiy v.4.3.7, 完璧だと思います。全ての機能が正常に動作しています。
1-
あと 53 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.023s