VPS設定:Subsonic - Download機能の罠 [iPhone]
Subsonicには曲やアルバム、プレイリスト内の曲をZIPにまとめてDownloadする機能がある。
ユーザー毎に利用可否を設定できるけど基本NGにしていたのでなかなか気がつかなかったことがある。
このZIPファイル、ファイル名自体も中のディレクトリ名、ファイル名も日本語は盛大に文字化けします。
確かに何に使うのか分からない機能だし、使えるユーザーもadmin以外は設定していないからどうでも
良いことなのかもしれないけど気になる。
ということで色々と検索してみると、 プログラム修正が必要らしい。
で、早速修正開始。
1.ソースの取得&修正
やっぱりsvn使った方が楽そうなので、最新の安定版4.6を取得。ちなみにsvnは元からインストール済み。
subsonicディレクトリを作って、その中からsvnを利用。
svn co -r2585 https://subsonic.svn.sourceforge.net/svnroot/subsonic/trunk release-4.6
リビジョンは2585がversion 4.6
修正対象はDownloadController.javaなので、それを探して修正。
ちなみに場所はsubsonic-main/src/main/java/net/sourceforge/subsonic/controller/DownloadController.java
修正内容は文字コードをファイル名もZIP内もMS S-JISにしてしまうので、プラットフォームによっては問題かも。
>>>>
199行 out.setEncoding("MS932"); // Set Encode MS S-JIS 追加
232行 out.setEncoding("MS932"); // Set Encode MS S-JIS 追加
262行 out.setEncoding("MS932"); // Set Encode MS S-JIS 追加
171行 file.getName()を「new String(file.getName().getBytes("MS932"), "ISO-8859-1")に変更
190行 dir.getName()をnew String(dir.getName().getBytes("MS932"),"ISO-8859-1")
225行 file.getName()を「new String(file.getName().getBytes("MS932"), "ISO-8859-1")に変更
<<<<
2.javaのコンパイル
JDKじゃなくても大丈夫。とりあえず。但し、mavenはインストールされていないので、そこから開始。
まずは最新のmavenを入手。
wget http://www.apache.org/dyn/closer.cgi/maven/source/apache-maven-3.0.4-src.tar.gz
適当な場所に展開。めったに使いそうもないので、Pathを通すこともなく、無難に/usr/local/mavenに展開してみた。
更に、ソースのルートにあるpom.xmlのBuildnumber展開がどうしてもうまくいかなかったので、直接修正してみた。
build_number.txt設定部分の{$BuildNumber}を今回は2585に直接修正。
やっとここでコンパイル。
/usr/local/maven/bin/mvn install
targetディレクトリ内にsubsonic.warが作成される。
booterも作り直した方がいいかもしれないということなので、subsonic-booterディレクトリに移動して
/usr/local/maven/bin/mvn install
targetディレクトリ内にsubsonic-booter-jar-with-dependencies.jarが作成される。
3.インストール
念のためのバックアップ
/usr/share/subsonicへ移動
cp subsonic.war subsonic.war.org
cp ubsonic-booter-jar-with-dependencies.jar ubsonic-booter-jar-with-dependencies.jar.org
作成した2ファイルをコピー
service subsonic restart
これでDownload機能も文字化けなく使えるようになった。
しかし、WebDAVが使えているというのに、この行為に果たして意味があるのか。。。。
分からない。。。。。。。。
コメント 0