[ カテゴリー » アップデート ]

今年最後の差分です。

category-icon

 こんにちは。日本では、そろそろ年越しソバの準備でしょうか。こちらは、先ほど、お昼を済ませたところです(ラボに来ている面子で近くのビストロに行きました)。前回の書き庫(1.7.7リリース)で今年を締めくくるつもりでしたが、ちょっと修正があるので。仕様変更に伴うものです(--) 2ファイルですが、ひとつは、JSスクリプト。前エントリーのコメントを読むと分かりますが、「続きを読む」が機能しなくなってました。これは、js/lib.jsの26行目を以下のように修正しています。

var s, ob; self = o(self); ob = self.sib(1);

後、バグではないですが、最新版には、ページ内リンク用のスクリプト処理も入れてます。

if(tar.klass('intralink')){ // A要素のクラス名がintralinkなら
  tar.cancelEvent(); // デフォルトのイベントをキャンセル
  o(tar.$.href.split('/').pop()).view(1); // そのID名を持つ要素にフォーカス
}

 これの使い道については、来年に。

これと、もう一つは、utils.php。コメント投稿先をindex.phpに変更したんですが、その影響で、コメント内容にタグが含まれていると、Bad Requestを食らって、投稿不能になります。これは、utils.phpの14行目を以下のように修正してます。

 if($mode != 'search' && $mode != 'comment'){

後、アマゾンアソシエイトプログラムで、商品画像がないときの画像へのパスに余計にスラッシュが入っていたので省いてます。1770行目。

$noImg = ROOT_PATH.'Images/notfound-amazon.png';

 以上の2点を添付しておきます。では、ちょっと早いですが、瑞祥新春(ずいしょうしんしゅん)。

添付ファイル: utils.phpattachedIcon  lib.jsattachedIcon 

— posted by martin at 10:59 pm   commentComment [0]  pingTrackBack [0]

ppBlog1.7.7をリリースしました

category-icon

 こんにちは。クリスマスの昨日、ppBlog1.7.7をリリースしました。一度クリスマス・リリースLink というのをしてみたかったんです。

 前のバージョン1.7.6の最終リリースが、11月10日でそれから結構色んなところをちょこちょこ弄(いじ)りました。ppBlogも少しずつバージョンを重ねてきて、そんなに弄るところもないだろうと思ったりもしてたんですが、決してそんなことはないですね。まぁ、やり尽くした感が来ても、それはそれで悲しいことなので、どこか弄る部分があるのは良いことでしょう。今回、新たな機能としては、以前のエントリーにも挙げてるものがありますが、以下のような感じです。

  1. 不正ログイン試行を監視する機能を追加
  2. コメントの通知メールに、ダイレクトに返信画面にアクセス出来るリンクを追加

 ありゃ、2つだけか。1番目のやつは、基本的にこのエントリーLink にあるものですが、特定のIPは不正チェックから除外する、いわゆるホワイトリストも考慮したものにしています。単に、admin.phpの最初の方に、$white_list = array(); という変数を設けただけです。ここには、チェックをして欲しくないIPアドレス(例えば、127.0.0.1とか)を配列形式で入れていけば良いのですが、注意しないといけないのは、IPアドレスなんて外から簡単に分かってしまうということです。なので、原則、このホワイトリストの活用はオススメしません。開発のデバグ用だと思って下さい。

 2番目のやつは、従来は「コメントが付きましたよ!」という通知メールを受け取って、その記事リンク先にアクセスしても、ログインしていない状態であれば、ログインという手順を踏んで、さらに返信のアイコンをクリックして・・・、というふうにスムーズに返信という訳にはいきませんでしたが、ダイレクト認証をつけたので、気軽に返信が可能です。ただし、セキュリティーを考慮して、メール送信時刻から24時間以内だけ有効なリンクとしています。

 後は、挙動が気になるところやらバグやら、見栄えの修正など、多岐に渡って弄ってます。主なものは以下の通り。

  1. コメント投稿のaction送信先をadmin.phpからindex.phpに移した。
  2. 更新pingサーバーリストを一新。かつ、管理画面にて、更新サーバーの重複をチェックするように。
  3. アクセス解析の「リンク元」で、グーグルのイメージ検索のリンクがうまく動いていなかったのを修正。
  4. JavaScriptソースの殆どは、圧縮した状態でリリースしていたのを、圧縮前の状態に戻した。
  5. エディタ画面で、テーブルタグ挿入の際、行と列の指定が逆だったのを修正。
  6. ブログ名(TITLE属性のやつ)にアポストロフィー(')が含まれていると、お知らせメールのときなどに表示される送信者エンコードがうまく行ってないのを修正。

ってところです。具体的に、1番目から。

 従来は、コメント投稿の送信先がadmin.phpを介したものになっていました。でも考えてみれば、こうする必要性は全然ないし、admin.phpは管理者用に特化したものであるのが理に適っていると思いますので、送信先をindex.phpにしました。この影響で index.phpに修正が入っています。index.phpの253行目は、従来だと、

 case 'comment' : include_once('modules/comment.inc.php'); comment_form($UID); break;

のようになっていますが、最新版ではこの部分が、

 case 'comment' : include_once('modules/comment.inc.php'); catch_comment($mode); break;

となっています。

 2番目の更新ping関連は、以前のエントリーLink を参照。

 3番目は、グーグルの画像検索からp2b.jpにアクセスしてくることがあるのですが、そのリンクURLが正しくなかったので、Bad Requestが返ってました。それを修正して、以下のショットのようにきちんとリンクが有効なようにしました。

Google-Image-Search
ジャックバウワーは元気だろうか。

 4番目ですが、これまでは、複数のJavaScript(以下JS)圧縮プログラムを一度に走らせてくれる便利なサイトThe JavaScript CompressorRaterLink を利用して、JSソースを圧縮していました。なぜ、圧縮していたかですが、少しでもサーバーからの転送量を減らそうと思ってです。でも、ppBlogで使っているJS群はもともとそんなに重量級ではないですし、このブロードバンドが当たり前のご時世、20KB前後のファイルが16-17KBになったところで、そう大した差はないだろうし、確かにgzip圧縮までかませば3分の1ぐらいになりますが、これは汎用性に問題があります。何より、圧縮するとメンテナンスが大変ですし、JSソースに興味があって読みたいと思う人がいても、圧縮されて1行になってしまったJSソースなんぞ読む気にもなりません(この手の1行圧縮されたJSファイルを展開してくれる Js DecoderLink みたいなサービスもありますが)。というわけで、基本的にJSソースは圧縮前に戻しました。圧縮してみたいという方は、上記に挙げたサイトを利用すると良いかと思います。ただし、JSソース中にIE用の条件コンパイル(@cc_onとか)を含んでいるoParts.jsなどは注意しないと、この記述を単なるコメントとして削除してしまうものもあるので、動作検証は慎重に。

 例によって、前回バージョン(11月10日版)からの差分を添付しておきます。ちょっと数が多い気もしますが、基本的に、すべてそのまま既存のものの上書きで良いです。view.phpは、statディレクトリにあるview.phpとの入れ替えになります。notfound-amazon.pngは、トップディレクトリのImagesディレクトリにある既存のやつと入れ替えです。気分転換にアイコンを変えました。

 最後になりましたが、ppBlogをお使いの皆さん、いつも貴重なフィードバックありがとうございます。良いお年をお迎え下さい
もっと読む»
「続きを読む」のテストです。
添付ファイル: DIFF081225.zipattachedIcon 

— posted by martin at 11:58 pm   commentComment [12]  pingTrackBack [0]

ログイン試行過多をチェック

category-icon

 こんばんは。昨日に引き続き。

 ppBlogでは、現状、ログイン試行をチェックする機構は特に採り入れていません。特に、これまで不正ログインを食らったという報告もないようですし。しかしながら、やはり、不正ログインを試みようとする情報は、把握してても良いかなとは思いますので、そういう機能を付けてみました。目指したのは、

  • 3回続けてログインに失敗すると、管理者にメールで知らせる。
  • 6回、同じIPアドレスからログイン試行があって、いずれも失敗すると、そのIPアドレスがアクセス拒否リストに追加される。管理者にもその旨、通知する。

です。基本的には、admin.phpをいじるだけなのですが、IPアドレス毎にアクセス拒否を行う動作を検証中に、現行バージョンではこの機能が動いていないことを見つけました。この影響で、admin.phpに加えて、utils.phpも若干の修正があります。

admin.phpに関しては、331行目からの部分に以下の追記をしました。

  $loginf = OD."login.txt"; // このファイル(ownerディレクトリの中)にログイン失敗情報を記録する
  $ltime = time(); $ldate = date('Y-m-d@H:i:s', $ltime);
  if(is_file($loginf)){
   $loginfo = file($loginf); $lsize = count($loginfo);
   $ips = preg_grep("{.+$ip}", $loginfo); $ips = count($ips);
   if($ips > 5){
    $ban_ini_file = OD.'ban.ini.php';
    include($ban_ini_file); $hit = FALSE;
    foreach ($BAN_LIST as $i => $item){
     if(strpos($item, "$ip|0") || strpos($item, "$ip|1")){
      $BAN_LIST[$i] = "$ltime|$ip|1"; // アクセス拒否対象とする
      $hit = TRUE; break;
     }
    }
    if(!$hit) array_push($BAN_LIST, "$ltime|$ip|1"); // アクセス拒否IPリストに追加
    rewrite_ini($ban_ini_file, $BAN_LIST);
    if(trim(MAILTO) != ''){
     include_once('modules/mail.inc.php');
     $msg  = 'ログイン試行が頻発しているようで、とりあえずブロックしました。IPアドレスは '.$ip.NL;
     $msg .= 'アクセス自体を拒否してます。解除するには、管理画面→「IPコントロール」→「コメント・TB拒否」から。';
     @send_jp_mail('ppBlog::連続ログイン試行', $msg, '', MAILTO);
    }
    exit("ログイン試行過多でブロックされました。");
   }
   if($lsize > 1){
    list($time1,,$ip1) = explode("¥t", trim($loginfo[$lsize - 1]));
    list($time2,,$ip2) = explode("¥t", trim($loginfo[$lsize - 2]));
    if(($ip1 == $ip2 && $ip1 == $ip) && $ltime - $time1 < 30){
     if(trim(MAILTO) != ''){
      include_once('modules/mail.inc.php');
      @send_jp_mail('ppBlog::連続ログイン試行',
       '3回ログインに失敗したかログイン試行が頻発しているようです。IPアドレスは '.$ip.NL, '', MAILTO);
     }
     $loginfo[] = $ltime."¥t$ldate¥t$ip".NL;
     rewrite($loginf, array_unique($loginfo));
     exit("ログイン試行が頻発しているので管理者に知らせました。");
    }
   }
   $loginfo = array_slice($loginfo, 0, 29); // とりあえず30件ほどに
   $loginfo[] = $ltime."¥t$ldate¥t$ip".NL;
   rewrite($loginf, array_unique($loginfo));
  } else rewrite($loginf, $ltime."¥t$ldate¥t$ip".NL);

 ソースにあるように、ログインに失敗した時点で、ownerディレクトリにlogin.txtファイルが自動的に作成されます。最大30件を記録するようにしていますが、分かる方は適宜変えてもよいでしょう。

 ログインに失敗したIPアドレスは記録するようにしています。統べて6回ログインに失敗すると、とりあえずそのIPアドレスをアクセス拒否リストに追加します(404 Not Foundを返す)。これは、管理画面の「IPコントロール」から、その解除が可能です。もし、勘違いか何かで、管理者自身がアクセス拒否を食らう可能性もありますが、この際は、ブラウザから管理画面には入れないので、FTPソフトを使って、ownerディレクトリにあるban.ini.phpをダウンロード、自身のIPアドレスが含まれる行を削除して、再度アップすればOKです。

 普段、不正ログインを試みる対象なんて気にもしませんが、こういう機能が付いていても良いかなと思いました。この機能を実装するには、添付のutils.phpとadmin.phpを既存のやつと入れ替えるだけで良いです。

添付ファイル: utils.phpattachedIcon  admin.phpattachedIcon 

— posted by martin at 07:48 am   commentComment [7]  pingTrackBack [0]

差分です

category-icon

 こんばんは。もう年の瀬もすぐそこですね。相変わらず時が経つのは早いものです。

 さて、前回のアップデートで、1900年代の古い記事に画像が含まれる場合、その時系列処理がうまく行ってなかったのを修正したつもりでしたが、不十分でしたので、その差分を添付しておきます(upload.php, utils_admin.php, modules/mrss.inc.phpが該当)。ついでに、画像ポップアップの表示位置の微調整も(js/lib.js)。それぞれ既存のファイルを上書きすればOKです。

 コメントやフォーラムの方で、携帯向けのmoby.phpについて不具合の報告がありますが、今のところこちらでは確認できないので、これに関しては追って報告したいと思います。

 後、basicテーマのtemplate.phpのヘッダー部分にある

<span>Powerful Personal-publishing Tool</span>

<span>Powerful Perspnal-publishing Tool</span>

となっています。綴りのミスですf(--;

添付ファイル: DIFF081110.zipattachedIcon 

— posted by martin at 04:10 am   commentComment [4]  pingTrackBack [0]

差分アップデート

category-icon

 こんばんは。ちょっと間が空いてしまいましたが、いくつか不具合がありましたので差分アップデートです。10/16配布版からの差分を添付しておきます。修正点は、以下の通り。

  • 2000年以前の記事に画像を付けると、画像ギャラリーにて、その古いはずの画像が先頭に表示されることへの対応。古い記事だとUIDとして使用しているUNIXのタイムスタンプが10桁ではなくて9桁になりますが、その影響で画像データベースの日付ソートがうまく動いていないのを修正しました。後、ついでにですが、feedsディレクトリにMedia RSSの出力ファイルがあれば、画像データベースを更新したタイミングで自動的にそのRSSファイルも更新するようにしました。これまでは、管理画面から手動で更新する必要があったので。
  • コメントの画像認証に失敗すると、コメントのない記事でもコメント数が1と表示されていたのを修正。ついでに、これまでは画像認証に失敗すると、折角書き込んだコメントも消えてしまい再現不可でしたが(Ajax経由でコメントフォームを表示した場合とか)、失敗した際は、その画面にテキストエリアを表示して、そこに投稿したコメントを表示、コピペして再利用できるようにしました。
  • オンタイム投稿に関するeditor.jsのバグ修正。editor.jsは、圧縮前のソースに戻したのですが、その際に以前修正していた箇所も戻っていました。。それへの対応です。
  • ポップアップ画像の挙動の修正。拡大画像があるときは、ポップアップ表示になりますが、まずはブラウザ画面にフィットするように表示されます。更に画像サイズが大きい場合は、拡大アイコンがついて、更に拡大できます。これは従来の実装どおりですが、2段階拡大の際に、元の画像サイズを考慮して、画像左上をブラウザの左上端にするか、画像表示位置での拡大にするかの挙動を修正。

ってところです。結構冷え込んできましたが、手洗いうがいを忘れず元気に過ごしましょう。

添付ファイル: DIFF081030.zipattachedIcon 

— posted by martin at 11:12 am   commentComment [7]  pingTrackBack [0]

T: Y: ALL: Online:
Created in 0.0191 sec.
prev
2017.4
next
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30