[WordPress] プラグインを日本語化する方法

前回のエントリに書いたプラグインTheme My LoginのUIが英語オンリーだったので日本語化を試みる。

ネットで調べたら、Poeditというローカライゼーションツールがあるらしい。早速ダウンロードしてインストール。

ローカライズの元になるのは拡張子POTのファイル。プラグインのサブディレクトリからダウンロードする。

POTファイルをPoeditで開き、オリジナルテキストを日本語に翻訳していく。保存するとPOファイルとMOファイルが作成される。

作成されたPOファイルとMOファイルをwp-content直下のlanguageディレクトリにアップロード。ファイル名は日本語を示すように元ファイルのタイトルに-jaを付加する。

プラグインがアップデートされたときに削除されないように、ローカライズファイルなどのカスタムファイルは独立したディレクトリに保存するルールなんだろうね。

ブラウザに戻ってページを再ロードすると日本語化されているはず。変化が無いなら何かがおかしいので見直す。

参考サイト

Poeditの使い方 [Wordpressのテーマやプラグインを日本語化(多言語)する方法]tontotakumi.com
http://tontotakumi.com/web-seisaku/wordpress/poedit/

[WordPress] Theme My Login – サイトを丸ごと会員制にするプラグイン

許可した人にしか見せないブログを作りたいとの相談あり。

今回の要件は以下の通り。

  • 一言で言えば「ログインしないと閲覧できないサイト」。
  • 記事単位の閲覧制限は不要。全記事の閲覧を制限する。
  • すなわち、会員は全記事閲覧可、非会員は全記事閲覧不可。
  • 会員登録は管理者が行うので入会フォームは不要。
  • 会員登録したユーザには通知メールを投げる、メール文面は管理者がカスタマイズできる。
  • 会員ごとのダッシュボードやプロファイルは不要。
  • 会員がパスワード忘れのリセット・パスワード変更はできるようにする。

サーバー上でBASIC認証をかけるのが手っ取り早い。だけど、閲覧者に個別にユーザ名/パスワードを発行して管理したいし、パスワード忘れの対処もシステムとして用意したい。まあ今の時代にBASIC認証でもないだろうという気もするので、BASIC認証をかけるのは却下。

サイトはWPベースなのでプラグインを探したところ、会員サイト構築用のプラグインはホント山ほど見つかる。記事単位でアクセス制限するものとか、記事要約でチラ見させるけど全部読むには会員登録が必要とか、プラグインによって機能は様々。

で、いろいろ試したところ、要件にマッチしたプラグインが以下。

WordPress › Theme My Login « WordPress Plugins
https://ja.wordpress.org/plugins/theme-my-login/

[WordPress] 更新時にFTP情報入力を促される場合の対処

VPSにWordPressをインストールし、管理者画面からWP本体やテーマ・プラグインなどを最新版にアップデートしようとしたら、接続先サーバーのFTP情報を入力する画面が表示された。WPをレンサバで使っていたときには見たことが無い画面。ネットで調べてみると、WebサーバーがWPの構成ファイルへのアクセス権を持っていない場合に表示されるらしい。確かめてみたらまさしくその通りだった。

WPのディレクトリblog以下の全ファイルのオーナーを変更。

これでFTP情報は聞かれなくなった。一件落着。

参考サイト

WordPress更新時にFTP情報入力画面が表示される場合の対処方法3つ | sand a lot Web & Music Create [札幌]
http://www.sandalot.com/wordpress%E6%9B%B4%E6%96%B0%E3%81%A7ftp%E5%85%A5%E5%8A%9B%E7%94%BB%E9%9D%A2%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95/

[Webサービス] draw.io – 無料で使えるオンラインドローソフト

ちょっとした図表を描くのに手頃なソフトを探していたら以下がヒット。

Flow Chart Maker & Online Diagram Software
https://www.draw.io/

drawio

シンプルな画面レイアウト。機能が絞り込まれていて解りやすい。シェイプ(描画オブジェクト)が数多く用意されていて、UMLやフローチャートなどエンジニア向けの機能も充実している。作成したデータはローカルデバイス以外にも、Google Drive、OneDrive、Dropboxなどのクラウドストレージにも保存できる。結構機能は充実している割にお手軽な感じなのが僕好み。

開発しているのはこちらの会社らしい。

JavaScript Diagramming
https://www.jgraph.com/index.html

[Unix] シェルスクリプトのロギングに役立つ関数

検索したら素敵なコードが見つかったので覚え書き。ちょうど必要だったのでありがたい。

snippet – シェルスクリプトのロギングを楽にするtips – Qiita
http://qiita.com/Ets/items/cd3baa5cecbf553f822d

[ホスティング] SSHサーバーのホスト認証の仕組みを理解する

初めて接続するホストへssh接続を試みると、以下のようなメッセージが表示される。

OpenSSHではRSA鍵フィンガープリントを使ってホスト認証

OpenSSHでは、なりすまし(中間者攻撃)を防ぐホスト認証においてRSA鍵フィンガープリントが使われる。

入門OpenSSH / 第3章 OpenSSH のしくみ
http://www.unixuser.org/~euske/doc/openssh/book/chap3.html

RSA鍵フィンガープリントはホストのRSA公開鍵がベース

RSA鍵フィンガープリントは、ホストのRSA公開鍵からssh-keygenを使って表示される。

ホストのRSA公開鍵

公開鍵からフィンガプリントを表示

SSHサーバのRSA fingerprintの確認方法 | server-memo.net
http://www.server-memo.net/server-setting/ssh/rsa-fingerprint.html

クライアントはホストのRSA鍵フィンガープリントを記憶

冒頭のメッセージが表示されるのは、これまで接続したことが無いホストへ初めて接続したときである。このメッセージにyesと答えてホスト認証を通過すると、クライアントはホスト名とRSA鍵フィンガープリントのペアを~/.ssh/known_hostsに記録する。以降のアクセスでは、known_hostsに記録されているRSA鍵フィンガープリントと実際のホストが返すRSA鍵フィンガープリントが一致した場合には、そのホストは認証済みであると判断され確認メッセージは表示されない。

SSHの動作 — Fabric ドキュメント
http://fabric-ja.readthedocs.org/ja/latest/usage/ssh.html

RSA鍵フィンガープリントを無視することもできるが・・・

例えばバッチでscpを実行する場合など、確認メッセージに応えなければ先へ進めないのでは困る。sshやscpには、RSA鍵フィンガープリントの変更チェックをしないオプションも用意されている。しかし、無視することでホスト認証が行われないことになり、結果としてなりすまし(中間者攻撃)をチェックできなくなる。これはいただけない。

OpenSSHの警告メッセージを黙らせる | Siguniang’s Blog
https://siguniang.wordpress.com/2014/02/28/get-rid-of-openssh-warning-message/

SCP support for -o StrictHostKeyChecking=no broken | OpenSSH | Dev
http://www.gossamer-threads.com/lists/openssh/dev/54561

known_hostsを適切に維持更新するべき

脆弱性を生まないためには、確認メッセージが邪魔といった程度の理由でホスト認証をスキップしたりしないこと。確認メッセージが表示されること自体がイレギュラーなので、その理由をしっかり究明して適切な設定をするべき。

例えばバッチでscpを実行したい場合には、事前にコマンドを使ってknown_hostsを作っておけばよい。正しいknown_hostsが存在すれば、scp経由で初めてホストにアクセスしたときでも確認メッセージは表示されない。以後もし確認メッセージが表示されることがあれば、本来のホストになりすました別ホストへ本当に誘導されているのかもしれない。ホストの管理者にホストのRSA鍵フィンガープリントが本当に変わったのかを確認するべきだろう。

SSHのknown_hostsをスマートに更新する – Qiita
http://qiita.com/kawaz/items/20983ec286088a1ae5c7

ネットワーク管理の基本Tips:SSHサーバーの公開鍵管理を効率化するには? ssh-keyscanコマンド – @IT
http://www.atmarkit.co.jp/ait/articles/1507/28/news020.html

コマンド実行例

ホストのRSA鍵フィンガープリントを取得してknown_hostsに追加

記録されているRSA鍵フィンガープリントを削除

[Docker] ホストのディレクトリを操作するときには権限に気をつけよう

ちょっとハマッたので覚え書き。

Dockerでホストのディレクトリをマウントし、サブディレクトリやファイルを作成したところ、それらの所有者がホストに存在しないユーザになっていた。僕はこのホストのルート権限をもらっていないので、これらのファイルを削除するためには管理者に依頼する必要がある。管理はアウトソースしているので、それは面倒な話だ。

一時的な作業だったので、イメージもDockerfileも既に削除してしまっている。どうしたものかと思案した挙句、コンテナでシェルを実行したらルートユーザで接続されたので、そこでファイルの削除を試みたら成功。

Dockerでホストのディレクトリを操作するときには権限に気をつけよう。

[Docker] 不要なコンテナを一括削除する

不要なコンテナが溜まってきた。個別にコマンドを叩いて削除するのは面倒なので一括で削除したい。

方法1

ネットを検索したら以下の方法を発見。なるほど。

Dockerでいらなくなったコンテナを一括削除する – cpw’s diary
http://cpw.hatenadiary.jp/entry/2013/08/18/212630

方法2

さらに検索したら以下の方法を発見。短いほうがベター。

この方法はコンテナのステータスをチェックしていないけど大丈夫かいな。モノは試しでやってみたら、実行中のコンテナは以下のメッセージが表示されて弾かれた(Docker v.1.4.1)ので問題は無かった。

【Docker】不要になったイメージ、コンテナを削除する – 子持ちプログラマーの日記
http://kouji1981.hatenablog.com/entry/%E3%80%90Docker%E3%80%91%E4%B8%8D%E8%A6%81%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%80%81%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B