「サイト管理」カテゴリーアーカイブ

WordPress パスワード保護ページの改変

ブログの記事で非公開のページはパスワードで保護するわけだが、デフォルトでは何故保護しているのかわからないので変更してみました。
(1)サーバにログインし、wp-content/themes/テーマ名/functions.php  のパーミッションが
-rw-r–r– 1 sigh staff 17751 Jun 22 13:44 functions.php
つまり 644 になっているから 777 にする。
# chmod 777 functions.php ですね。
-rwxrwxrwx 1 sigh staff 17751 Jun 22 13:44 functions.php
となったことを確認する。
# cp functions.php functions.php20170627 とかにしてバックアップを作っておくこと。
(2)ブログにログインし 外観 テーマの編集 から テーマの関数(functions.php) を開く。
下の方に

のように「ファイルを更新」ボタンが出現することを確認する。
(3)   と保護した記事のタイトルに付く「保護中:」という文字を削除する。

// 保護中の文字を削除する
add_filter('protected_title_format', 'remove_protected');
function remove_protected($title) {
       return '%s';
}

をこのfunctions.php の最後の「endif;」の下に加える。
(4) 表示テキスト「このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。」を変更する。
パスワードで保護している意味を説明したほうが親切でしょ。

// パスワード保護の理由を変更する
function my_password_form() {
  return
    '<p>この記事は管理人のメモなので非公開にしています。<p>
    <form class="post_password" action="' . home_url() . '/wp-login.php?action=postpass" method="post">
    <input name="post_password" type="password" size="24" />
    <input type="submit" name="Submit" value="' . esc_attr__("パスワード送信") . '" />
    </form>';
}
add_filter('the_password_form', 'my_password_form');

「この記事は管理人のメモなので非公開にしています。」としたけど、好きな文字列に置き換える。先程同様にfunctions.php の最後に加える。
(4)Cookieの有効期限を変更
デフォルトではCookieの有効期限は10日間らしいので1日だけにする。

// Cookieの有効期限を1日にする
function custom_postpass_time() {
    require_once ABSPATH . 'wp-includes/class-phpass.php';
    $hasher = new PasswordHash( 8, true );
    setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), time() +DAY_IN_SECONDS, COOKIEPATH );
    wp_safe_redirect( wp_get_referer() );
    exit();
}
add_action( 'login_form_postpass', 'custom_postpass_time' );

これを同様に最後に書き加える。
DAY_IN_SECONDS が1日のこと
HOUR_IN_SECONDS にすれば1時間
600 のような数字にすれば秒単位の時間になる。600は10分ですね。
(5)「ファイルを更新」ボタンをクリックし、問題なければパーミッションを元に戻しておしまい。
# chmod 644 functions.php ですね。
エラーがあると。ページが見えなくなっちゃったりするから、サーバに戻ってバックアップから復元してやり直す。
バックアップを削除してもいいですけど、間違えがあったらまずいのでしばらくは保存しておきましょ。
WordPres Theme TCD というブログの「WordPressのパスワード保護ページをカスタマイズする方法」を参照しましたというか、ほとんどそのままです。

またDNSが変更された

2014年11月に、周知されることなしにDNSが変更された。頭にきて、ボロクソな記事をここに書いたのだが、あとで削除した。不快に思う人がいるからな。
この1ヶ月前位から、なんとなくネットが遅い。スピートを調べるとそこそこあるので、パソコンがもう古いからかなと思っていたのだ。
大学内にWiFiアクセスポイントが増え、これまでスマホで接続できない場所から接続できるようになったわけだ。そこでスマホのWiFi を設定して、なにげにDNS情報を見たのだ。
んが、primary DNSのip address がこれまでと違うじゃん!secondary DNSは変更がない。
DNSの変更を全員に知らせると、なんだかわからない方々から問い合わせが沢山くるので知らせなくたって、DHCPで動いているから問題ないだろということらしい。ルータを固定ip address で運用しているんだよな。
secondary DNS で運用していたので遅かったようだ。

Mac Mini Mid 2010 の RAM 増設

Mac mini (Mid 2010)を手に入れた。

もう7年前の製品だから化石に近いが、Sierra がインストールできた。しかし、如何せんRAMが4GBなので、遅く使えない。増設すればいい。
ネットで見ると、16GBまで増やすことができている。しかし、規格の1066MHz RAM(スロットが2ケだから8GB x 2)はべらぼうに高い。1333MHz のほうが安い。
で、考えた。ダメもとで 1333MHz の8GB を2枚 1066MHzの4GB を2枚 でテストするのだ。1333MHz の8GB 2枚で動動いた/動かない例があるようで。
8GBは
Transcend ノートPC用メモリ PC3-10600 DDR3 1333 8GB 1.5V 204pin SO-DIMM (無期限保証) TS1GSK64V3H DDR3-1333(PC3-10600)
中古で2枚で¥ 11,940
4GB は
Transcend ノートPC用メモリ PC3-8500 DDR3 1066 4GB 1.5V 204pin SO-DIMM (無期限保証) TS512MSK64V1N
DDR3-1066(PC3-8500) 2枚で¥ 8,580

4GB 2GBx2 オリジナル、問題なし
8GB 8GBx1 問題なし
8GB 4GBx2 問題なし
10GB 8GB+2GB 起動時システムエラーが出るがなんとか動く
12GB 8GB+4GB 問題なし
16GB 8GBx2 ビープ音がでて起動しない。

という結果なので4 GB+8  GB=12 GB で動かすのだ。

クロックは 1067 MHzで動いている。2枚とも1333 MHzだと1333 MHz で動こうとしてだめになるのかも。1枚が1067 MHz だとこれに合わせるから1333 MHz RAMが1067 MHzで動いちゃうのかもね。だから1333 MHz RAMが使えるのかも。いや1333 MHz RAMが1枚のときは問題ない。わからないな、この辺は。クロックは揃えないと行けないというのが常識だけど、使えるからいいや。
2万円使ってしまった。4GBと8GBが1枚ずつの1万円分と、2GBが2枚余っちゃった。でも使い道はあるのだ。心配するな(<- 誰が心配するかよ)。
16GB乗っけている別MacでWord, Photoshop, Illustrator, Thunderbird, Chrome, mi, Excel を起動して、あとはバックグラウンドで動いているいくつかのapplication があってActivity Monitor でメモリの使用状況をみたら

というわけで12 GBあれば、問題ないでしょ。
RAM が4 GB だと、Safari, 写真、プレビュー位だけを起動すると

と3 GBも使っちゃうわけで、これでは遅くて仕事にならない。
わからないのは、Sierra インストールSDカードを作ったのだが、これで初めからクリーン・インストールすると、ファイルが壊れていてインストールできないと言ってくる。本来の10.6.8 のDVDでインストールしてから、同じSDカードでSierra を上書きインストールするのは問題がないのだ。
現行のMac Mini の一番安いやつにRAM 16 GB  積むとキーボードとかマウスを加えて10万円位かかるから、この中古で3年持使えればコストパフォーマンスはいいでしょ。
[ 追記 ] 2017.5.22
別のMac Mini Mid2010 で同じことを試行した。
1)新規にフォーマットしたHDDにインストーラのあるSDカードからSierra はインストーラが壊れているからと言われてインストールできない。メモリが2 GBだろうと12 GBだろうと関係ない。
2)OS10.6.4 インストールされているHDDにSDカードからSierraの上書きインストールは、メモリが2 GB だと可能だが、12 GBに増やしておくと、インストーラが壊れているからと言われてできない。したがって、2 GBでSierra にアップグレードしてからメモリを12 GB に増やすのがいい。

Mac Dual Display 一方の電源が入っていないと

デスクトップのMac とWinを3台のディスプレイで使っている。中央のディスプレイはHDMI接続で切り替えスイッチを介して両方のパソコンを、左はWinのみ、右はMacのみというわけで、どちらかのパソコンを使うときには2台のディスプレイを使うということになる。
土日休日や研究日という実質的な休日に自宅から、他の職場からリモートでTeamViewerで操作するのが日常的なのだ。
いつからか、何故かMac にアクセスすると非常に遅くて仕事にならないことになった。同じネット環境にあるWinの方は問題ない。Macが仕事のメインマシンなので困っていた。原因がわからないのだ。少なくともネット環境のせいではなくMac特有なのだ。
昨日、気がついたのだ。上述のようにディスプレイを3台使っているわけで、帰宅するときパソコン本体の電源は落とさず(リモートで入るからね)ディスプレイの電源のみを電源スイッチで落としていたのだ。帰宅しかかって、3台のディスプレイの電源を落とした後、メールの用事があったのでディスプレイ1台のみの電源を入れて操作を試みたのだ。そしたら、マウスの動きが間欠的でカーソルが動いては止まるを繰り返すのだ。んが、なんだこれというわけで、もう1台のディスプレイの電源を入れたら問題なくなったのだ。
TeamViewerが使えない理由がわかったのだ。TeamViewerでアクセスすると、本体の電源は生きているので問題なく接続できる。しかし、2台のディスプレイの電源が落ちていて、そもそも1台だけだったらディスプレイの有無に関係なく動作するのだが、もう1台のディスプレイも落ちているともう1台のディスプレイにアクセスするのだが応答がないので、動作が間欠的になるーマウスが間欠的にしか動かないーからリモートでは遅くてなんともできないのだ。
ディスプレイの電源スイッチを落とすことをせず、スリープでディスプレイの機能を落とすことにすればいいのではないだろうか。というわけで、今週末はディスプレイの電源スイッチを操作して電源を落とすのではなく、スリープ設定でディスプレイを落とすことにする。
同じネットにあるWin からTeamViewer でMac にリモート・ログインできるわけで、この環境で、1台のモニターの電源を切る、スリープでモニターを落とすという条件でのテストで、1台のモニターの電源をスイッチで落とすとまずいがスリープだと大丈夫というわけなので多分いいのだろう。
Sierraに変えたからなのだろうかMacを変えたからなのだろうか…Winではディスプレイの一方の電源が入ってなくても動作そのものに影響はない。カーソルが電源の入ってないディスプレイの方にも動くだけだ。
[ 追記 ] 2017.5.7
リモートで接続し、動作もそこそこなのを確認しましgた。上記の推測は正しかったようです。Macでは2台のディスプレイを使っているとき、1台の電源を落としてはいけないようです。

Gmail のSMTPサーバ

Gmail のSMTPサーバが使えるはずと、試してみた。その理由は、自宅サーバのメール転送につかえるはず、と思ったからでもある。普通のメール送受信はIMAP(Webメール)使えばいいじゃんということなんだけど、POP/SMTPも使いたいのね。ノートパソコンを自宅ネット内外で使うのでSMTPサーバはGmailのSMTPでいいじゃんと、いままでは使っていなかったんだけど使ってみることにした。
いろいろやったけどうまくいかない。去年の4月からGmail のSMTPが使えないとかいう記事があったりする。ほんまかいな。というわけでGmailのサイトにいったらSMTPが使えるみたいだ。

んで、Thuderbird を使っているので SMTPサーバを

として使ったら問題ない。最初うまくいかなかったのは何をミスったんだろ。最初に使うときGmailのパスワードを聞いてくるが、その後はThuderbirdのほうで憶えていてくれる。パスワードを暗号化したら接続できなかった。SSL だからさらに暗号化する必要がないんだろ。自前サーバのリレーに使えると思うけどな。
ふむ。G suite のBasic 1ユーザで500円/月で契約すれば、自前サーバからのメールリレーができそうだ。これを使わなくてもいいけど、2,000通/日に制限されるようだ。

迷惑メール

まだ、迷惑メールなどがありえない時期にメールアドレスを設定して、これを公私混同して使っていた。ほかに無料のメールアドレスなんかなかったからね。次第に使う場面が多くなり、あちこちのサイトに登録することになり、また論文にも掲載されることになり、このメールアドレスには迷惑メールが一杯だ。inviteするから論文かけとかなんかはまだいいほうで、最近はバイアグラが多いな。でもまだ所属部署のメールアドレスとして使っているので止めるわけにいかない。
転職した職場のメールアドレスは、勿論業務でしか使わないし、迷惑メール対策として、あちこちに登録するようなことはしないので、迷惑メールは殆ど無い。
学生の実習レポートは、特定のメールアドレスに電子ファイルとしてメール添付させている。剽窃をチェックするためだ。大抵の大学にはこのような用途のために、ウエブサイトが作られている。サイトにアクセスしてレポートを投函できるようにしているところが多いだろう。しかし、このようなサイトは、他にも様々な用途もあるのが普通だ。教員側からの授業の資料の配布とか、質問の受付とか、講義単位で設けられている。サイトを構築するのは教員ではないので教員の希望を忖度したり、様々な教員の要望を取り入れたりするので多機能になるのだ。だから逆に使いにくい。レポート収集だけだったらメール添付でいいのだ。専用のメールアドレスを設けちゃったのだ。
このメールアドレスに迷惑メールが来るようになってしまった。学生の連絡帳が盗まれたのだろう。ウイルス感染だろうな。

Received: from hefgs.pisem.net (unknown [113.162.184.226])

なんてだからベトナムとかロシアとかからだな。
困ったのはGmailだ。学生への一斉連絡には、メーリング・リストを使っているわけだ。けーリングリストの配信は一斉配信なので迷惑メールと判断しやすい。当然だな。、Gmail ではいつのまにか迷惑メールに分類されるようになってしまった。迷惑メールを配信するSMTPサーバをブラックリストとしてリストしているサイトがある。メーリス以外で大量のメールを配信しているわけではないので、このようなブラックリストに利用しているSMTPサーバはリストされていない。Gmailだけの判断だ。
大学が付与する学生のメールアドレスはxxxx@yy.zzzz.ppp.ac.jp だが、実態はGmailなのだ。以前は学生のスマホのメールアドレスを収集して配信していたのだが、スマホのメールアドレスは利用者が勝手に変更でき、変更したことを届出ないから、迷惑メールになることはないが、一斉連絡がうまくいかなかった。今度はメールアドレスが変更されることはない。しかし、メーリング・リストによる一斉配信は学生の大学が与えたメールアドレスに届くが迷惑メール分類されるようになってしまった。
Gmailでは

メールの分類には、ユーザーからの報告が大きく影響します。Gmail ユーザーは、メールに迷惑メールのマークを付けたり、解除したり、受信トレイのタブ間で迷惑メール以外のメールを移動したりできます。いずれの場合も、Gmail はユーザーの修正から学習し、徐々にユーザーの好みに合わせて分類を自動的に調整していきます。

ということで、メーリング・リストに登録されているGmailは学生のメールアドレスが圧倒的なので、学生に迷惑メールにならないようフィルタを設定させることにした。

ですね。
ほかにもドメインがまともだよとGoogleに登録する方法とかがあるらしいけど、(…….秘密)だからとりあえずでいいでしょ。

復活

23日朝5時頃〜本日、24日14時頃まで、先にアナウンスしましたように、このサーバの ip address が変更になったため、サーバは外からアクセスできませんでした。
24日はプレミアム・フライデーとかで、午後早く帰れということになり、夕方の予定でしたが、早めに帰宅できたので新しい ip addrress に設定し、無事復活しました。
切断時間を短くするには、ip address変更の直前、つまり23日午前4時頃、サブネット内にVPNで入って、設定を変更すすればいいのです。外から攻撃するアホがいるから、設定はサブネット内からしか変更できないようにしてあります。設定変更のリターンキーを押した瞬間に、切断されちゃうので、もし間違って設定したら、二度とVPNで入れなくなります。正しく新しいip addressの設定ができていたら、午前5時頃、上流のプロバイダの設定が変更されて復活するわけで、1時間位の切断で済むことになったでしょう。しかし、午前4時です。起きられない。
サーバのあるサブネット内に物理的にいたら、午前6時頃設定を新しくすればいいわけですが、あいにく23日は不在でした。他に設定できる者がいなかったので、33時間も普通になってしまいました。
ユーザが少ないし、前もって宣言していたので、勘弁してね でおしまいです。

MacOS Sierra Gatekeeperでブロックされた app を実行

macOS SierraでGatekeeperでブロックされた app を実行する方法。
1)とりあえずダウンロードした xxx.app を右クリック(またはcontrolキーを押しながらクリック)し 開く をクリック。
「”xxx”の開発元は未確認です。開いてもよろしいですか?」というダイアログが表示されたら「開く」をクリック。
2)1)でだめななら
システム環境設定からセキュリティとプライバシーを開く。

一般のタグを開くのだが、そのままだと、左下のロックを外しても;

すべてのアプリケーションの許可 という項目が見えないから設定できない。これをできるようにするためにはターミナルを立ち上げ;

Macの名前:~ ユーザ名$ sudo spctl --master-disable
Password:

と入力する。システムのパスワードを入力し、再度セキュリティとプライバシーの一般のページを開き、左下の鍵を外すと;

すべてのアプリケーションの許可 にチェックすることができる。
このままでもいいけど、セキュリティを保つために、元に戻すには、ターミナルで;

Macの名前:~ ユーザ名$ sudo spctl --master-enable
Password:

とすればいい。
SIPというシステムファイルの保護とはまた違う。やれやれですね。

Apple SuperDrive を使えるように

Apple SuperDrive はMacBook Air のとき発売され、このMacBook Air専用で、ほかのMacでは使えないとか、USBハブ経由では使えず、本体に接続しないといけないとかになっていた。
これを解消するためには
/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
を編集することになる。ところがEl Capitan から Apple はシステム関係のファイルの書き換えをできなくなるようにした。System Integrity Protection (SIP)というわけだ(rcmdnk’s blogのOS X 10.11 El CapitanのSystem Integrity Protection(SIP)についてちょっと詳しく参照)。だから単純に、管理者になってもシステム関係のファイルの書き換えができない。Sierra を使っているからな。SuperDriveを使うためには書き換える必要があるのだ。
El Capitanより前のOSだったら、

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Kernel Flags</key>
	<string></string>
</dict>
</plist>

<string></string>

<string>mbasd=1</string>

“にすればいい。

/Library/Preferences/SystemConfiguration/ で

$ sudo vi com.apple.Boot.plist

としてvi で書き換えればいいのだ。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Kernel Flags</key>
	<string>mbasd=1</string>
</dict>
</plist>

ですね。 再起動すれば使えるようになる。
El Capitan や Sierra では、面倒だ。上記のようにたとえsudo あるいは su でスーパーユーザになっても書き換えることができない。
まず command + r を押しながら再起動してリカバリーモードで起動する。(HappyHackingのキーボードではだめだった。Appleキーボードを使わないとできなかった)SIPを無効/有効にするコマンド csrutil がリカバリーモードでしか使えないからだ。
起動して言語を選ぶと macOSユーティリィティ が起動するので、メニューバーのユーティリィティからターミナルを起動する。

-bash-3.2# csrutil disable
Successfully disable System Integrity Protection. Please restart the machine for the changes to take effect.
-bash-3.2# reboot

csrutil disable と入力してSIPを無効にし reboot 再起動 するのだ。
無効になったことは、ターミナルで csrutil status と入力すればいい。

$ csrutil status
System Integrity Protection status: enabled (Custom Configuration).
Configuration:
        Apple Internal: disabled
        Kext Signing: enabled
        Filesystem Protections: disabled
        Debugging Restrictions: disabled
        DTrace Restrictions: disabled
        NVRAM Protections: disabled
This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.
$

幾つかの項目に分かれているが、すべてdisableになっている。
そこで、上の書き換えを行い、またリカバリーモードで起動し、今度はターミナルで csrutil enable と入力しSIPを有効にして再起動するのだ。もとに戻ったことはターミナルで先程と同じコマンド csrutil status を入力するとわかる。

$ csrutil status
System Integrity Protection status: enabled.
$

ちなみに、オリジナルのcom.apple.Boot.plistは
-rw-r–r–@ 1 root admin 239 1 24 15:15 com.apple.Boot.plist
と@ が付いている。EA (Extended Attributes)情報が記載されたファイル(directory)というわけだ。この余計な情報を削除して@無しにするとダウンロードしたプログラムを使うことができる。削除するコマンドは「xattr -c -r」(-r はdirectoryの場合)である。今回の場合このコマンドはSIPで保護されているファイルなので使えない。
上記の手順にしたがって変更したら@はなくなっていた。
持っていたから使えるようにしたけど、持ってなかったら、そしてCD / DVDを使う必要があるのなら、Windows用のが使えるからね。そっちのほうが安いし。デザインだけだからなSuperDriveのいいところは。
QiitaのMac OS X El CapiptanでSIPを無効化するとか
Λ Takuya71 の日記 Λの20150513Apple SuperDrive を USBハブ経由で使用する できた!を参考にしました。