日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年9月
2 3 4 5 6 7 1
9 10 11 12 13 14 8
16 17 18 19 20 21 15
23 24 25 26 27 28 22
30 29

[- 2024 致命的] Nextcloud apps/text : 文字化け テキストファイルが破壊される。

カテゴリー: General
2024-02-02

タイトル


執筆:2024.02.02
編集:2024.02.02
編集:2024.09.04


Nextcloud Text

現象: Nextcloud version [ - 29] ( ~ 2024年版)

  • 開いただけでテキストファイルが破壊される。
  • ファイルを勝手に UTF8N として保存する

破壊対象は、UTF8N(8bitで表現できるAnsiファイル、UTF8N)を除くすべてのファイルになります。

何年も前から問題に上がっているが公式は修正する気が全くない。

この点を踏まえ

日本語圏の人は、これは無効にしていたほうがいいということです。閲覧しただけでファイルが破壊されますからね。

さくっと、Textを 無効に変更しましょう

クラウド管理してファイル壊されては本末転倒ですね!

  1. 壊されたくない場合はすぐに、apps/textを無効にしましょう。
  2. どうしてもリモートで更新したい場合は、Nextcloud 公式以外のリモート接続の対応アプリで閲覧/編集しましょう。
  3. テキストファイルを保存してプレビュー&編集したい場合は OneDriveかGoogleDriveを使いましょう。

あれですね、良心がないっていうか無責任アプリですね。

ここから下はエキスパート専用記事になります。

コードを修正する場合

✓ apps/textフォルダはストア用のフォルダなので、そのまま修正するとコード改ざんチェックで修正が取り消されます。

大事なことなのでもう一度言います。

apps/ フォルダを 修正すると コード改ざんチェックで修正が取り消されます。

✓ extra-appsフォルダを作成します

apps/textをextra-apps/textにコピーします

extra-apps/text/appinfo/signature.json の中身を空にします。

📌 サーバーのシンボリックリンクが有効の場合は外に配置することもできます(その場合アップグレート時のバックアップの対象からはずれます)

✓ config/config.phpに加えます

"apps_paths" => [
    [
            "path"     => OC::$SERVERROOT . "/apps",
            "url"      => "/apps",
            "writable" => false,
    ],
    [
            "path"     => OC::$SERVERROOT . "/extra-apps",
            "url"      => "/extra-apps",
            "writable" => true,
    ],
],

お好きなように修正します。

  • 問題を修正する部分
    PHPコード、js (vue)コード
  • 利用可能なバージョンの宣言部分
  • 改ざんチェックを回避する部分

ソースリポジトリからからmakeすると約600MB、約7万5千ファイル消費するので、お勧めしません。
理由はアップグレート時にバックアップとして取り込まれるからです。

※ バージョン履歴など完全に修正するにはソースからの改変が必要になります。

テスト用のサンプルファイルを生成するコード

<?php

$text = "これはテストファイルです。";
foreach(['utf-8', 'euc-jp', 'sjis-win'] as $charset) {
$fname = __DIR__ . '/' . sprintf('charset-is-%s.txt' , $charset);
$s = mb_convert_encoding($text, $charset);
file_put_contents($fname, $s);
}


【感想】

こことかみても https://help.nextcloud.com/t/shift-jis/86387、フォーク前のownCloud時代からあるバグのようですね。

やっぱり基本機能がそもそも備わっていない、だめだめアプリですね。
利用していない人が開発するとこんないい加減なアプリになるんですよ。
しかも、開発側は不具合を自ら調べようとしない。

次は直ると期待させるのも商法なんでしょうか?

上流での更新は期待できないので、フォークして 縁切りして

別アプリとしてそれを利用することで対応しました。


[Todo 優先度 高]

編集が開始されるまで、勝手に保存しない
表示用エンコードに正しく変換する 2023年パッチ済み
バイナリファイルは開かない 2023年パッチ済み
元のファイルエンコードを保持する 2024年パッチ済み
元の行末記号を保持する 2024年パッチ済み
保存時のエンコード選択を用意する 2024年パッチ済み

[Todo 優先度 中]

  • 自動保存を無効にする。それらの関連オプション設定も用意する
  • 読み込み専用オプションを用意する
  • エンコード不明なものは開かない。読み込み専用で開く、または、ユーザーに尋ねる。それらの関連オプション設定も用意する

スナップショット

🪄 UTF-8ファイルでテスト

🪄 Shift_JISファイルでテスト



PR

[PR]