# 変更点

このドキュメントでは最も重要な変更点や目につく変更点を簡潔に説明しています。変更点の詳細なリストは、 ChangeLogをご覧ください。`docs/changed-files`には、前回リリース以来変更されたファイルの一覧があります。

## Geeklog 1.5.0

### Google Summer of Codeの成果をフィードバック

今回のリリースには、2007 Google Summer of Codeで実装された次のプロジェクトの成果を取り込んでいます。

- 新たな使いやすいインストールスクリプト（作者：Matt West）
- （config.phpを直接編集した従来の方式に代わる）新たな設定用GUI（作者：Aaron Blankstein）
- Atom Publishing ProtocolをベースとしたWebサービスAPI（作者：Ramnath R. Iyer）

### 上記以外の新機能や改善

- OpenIDサポート: OpenIDを使用したユーザのログインが可能になりました。Geeklogサイトにアカウントを新規作成しなくても、通常のユーザと同様の恩恵を受けられます。
- LDAPリモート認証モジュールの追加
- リンク(links)プラグインで階層化されたサブカテゴリを持てるようになりました。
- FCKeditorをversion 2.6にアップグレード
- 記事処理用コードの書き直し。とりわけ、記事に含まれる特殊文字やHTMLエンティティの扱いに関する主要な問題が全て解消するはずです。また、（ブロックレベルの）`[code]`に対して、行レベルの`[raw]`タグが新たにサポートされるようになりました。このタグを使うと、HTMLなどのコードをそのまま投稿する際、HTMLタグとして解釈されないようになります。
- コメントを閉じることができるようになりました。つまり、既存のコメントは表示されるが、新規コメントを投稿できないようにできます。
- アンケート(polls)プラグインでアンケートごとに複数の質問をできるようになりました。
- 静的ページ(static pages)プラグインでコメントをサポートするようになりました。
- データベースのバックアップ画面で、バックアップしたファイルを削除したり、ダウンロードできるようになりました。
- デフォルトのProfessionalテーマがHTML 4.01 Strict準拠になりました。また、XHTMLもサポートしています(XHTML準拠のテーマが必要です)。

### セキュリティ

- Geeklogは、クロスサイト・リクエスト・フォージェリ(cross-site request forgery)攻撃に対する防御を備えています。
- Lukasz Pilorzが、Geeklogで使用しているHTMLフィルタのksesに関して、ksesのセキュリティ上の問題点(security issues in kses)を報告してくれました。

## Geeklog 1.4.1

### 新機能

- Microsoft SQL Serverをサポート。今回のリリースより、GeeklogをMicrosoft SQL Serverにインストールできるようになりました。MySQLだけではなくなったのです。MS SQLサポートはRandy Kolenkoにより開発されました。Randy、ありがとう!
  サードパーティによるプラグインがMicrosoft SQL Serverで動作するには、MS SQLをサポートする必要があります。同梱されているプラグイン(カレンダ, リンク, アンケート, Spam-X, 静的ページ)は既にMS SQLをサポートするようアップグレード済みです。
- カレンダプラグイン: 以前は本体に組み込まれていたカレンダとイベント機能は今回からプラグインとして分離されました。Geeklog 1.4.0で実施されたアンケートとリンク機能に始まるプラグイン化の流れはこれで終了し、Geeklogのモジュール化が進みました。サイトに不要な機能を無効にしたり差し替えることが容易になっています。
- 多言語サポート(Multi-language support)： Geeklogを用いて真の多言語サイトの構築が可能になりました。ナビゲーションだけでなくサイトのコンテンツもまた、言語を切り替えれば追随します。
- FCKeditor 2.3.1を同梱。画像をアップロードするファイルマネージャを再び同梱するようにしました。
- 古いないし活動していないユーザを一括削除する機能を追加。一度もログインしていないユーザやサイトを短期間しか使用していないユーザ、長期間ログインしていないユーザが自動的に検索され、一覧表示されます。期間の長さは変えることができ、検索されたユーザは個別に削除できます。

### セキュリティ

Geeklog 1.4.0以前のバージョンで発見されたセキュリティの問題を考慮して、Geeklogのソースコードの見直しを行いました。今回のリリースでは、いくつか些細な問題を発見して対応し、セキュリティを高める対策をいくつか導入しています。嬉しい副作用として、いくつかのバグと不整合が見つかり、今回のリリースでは修正しています。

### スパム防御

今回のリリースで、更新されていないMT-Blacklistのサポートを完全に廃止しました。代わりに、Russ Jonesがwww.linksleeve.orgで運営している Spam Link Verification (SLV)という手法を採用しています。SLVとは、いわばコミュニティが運営する、自動的に更新されるブラックリストです。詳細は、Spam-Xプラグインをご覧ください。

## Geeklog 1.4.0sr5-1

今回のリリースでは、Geeklog 1.4.0sr5で導入されたばかりのコメントのプレビューで生じる問題を修正しています。

## Geeklog 1.4.0sr5

JPCERT/CCより、コメントの扱いに関するクロスサイト・スクリプティングの可能性に関して通知がありました。今回のリリースではこの問題に対処しています。

## Geeklog 1.4.0sr4

"rgod"により、セキュアではない方法でインストールされたGeeklogとFCKeditorに含まれている"mcpuk"ファイルマネージャのバグが、以前の1.4.0系のリリースすべてに含まれていることが報告されました。

- public_htmlディレクトリの外にあるファイルの一部が直接実行される可能性がありました。これらのファイルがURL経由でアクセス可能なようにGeeklogがインストールされている場合(これは、インストール方法では全然お勧めしていない方法です)、リモートサーバから悪意のあるコードをアップロードして、実行するために利用される可能性がありました。
  詳細は、いわゆるGeeklogの脆弱性投稿(So-called Geeklog "exploit" posted)をご覧ください。
  今回のリリースでは、public_htmlディレクトリの外にあるファイルが直接実行されるのを防ぐ機能を追加しました。とはいえ、public_htmlディレクトリの外にあるファイルがURL経由でアクセス可能なようにGeeklogをインストールしているなら、修正することをお勧めします(詳細は、FAQをご覧くださいdetails)。
- (Geeklogのconfig.phpでFCKeditorを無効にしていても)、FCKeditorに統合されている"mcpuk"ファイルマネージャを使えば、任意のPHPコードをアップロードすることが可能になっていました。Webサーバの設定しだいでは、アップロードしたコードを実行することも可能でした。
  詳細は、FCKeditorのmcpukファイルマネージャの脆弱性(Exploit for FCKeditor's mcpuk file manager)をご覧ください。
  今回のリリースでは、該当ファイルマネージャは取り除かれています。したがって、FCKeditor経由で画像などのファイルをアップロードすることはできなくなっています。Geeklogの将来のバージョンでは、更新されたFCKeditorとファイルマネージャを同梱することになるでしょう。

注: 今回のリリースには、トラックバックスパムを防ぐために更新されたlib-trackback.phpも含まれています。

## Geeklog 1.4.0sr3

今回のリリースでは、以下のセキュリティ問題に対応しています。

1. `auth.inc.php`でのSQLインジェクションと認証迂回の可能性(the Security Science Researchers Institute Of Iranの報告による)。
2. `getimage.php`でのクロスサイト・スクリプティングの可能性(the Security Science Researchers Institute Of Iranの報告による)。
3. `getimage.php`と、たとえば、Professionalテーマなどの`functions.php`によるパス漏洩(the Security Science Researchers Institute Of Iranの報告による)。
4. 記事投稿の際のSQLインジェクションの可能性。

## Geeklog 1.4.0sr2

今回のリリースでは、以下のセキュリティ問題に対応しました。

- 誰でも任意のユーザとしてログインが可能になるセッションハンドリングのバグ(Konstantin Dyakoffの報告による)。
- ユーザプロフィールの場所(Location)フィールドでHTMLタグが除去されていなかった。

## Geeklog 1.4.0sr1

今回のリリースでは、以下のセキュリティ問題に対応しました。

- Geeklogのクッキーの扱いに起因するいくつかの問題(GulfTech Security ResearchのJames Bercegayによる報告)。SQLインジェクションや任意ファイルへのアクセス、任意のコードの埋め込み及び実行が可能になる脆弱性でした。

訳注：以下の和訳は、IvySOHOが公開していたGeeklog-1.4.0日本語版に付属するchanges.htmlを修正して使用しています。

## Geeklog 1.4.0

(Geeklog 1.4.0 は、元は1.3.12ですので、バージョン1.3.12を参照した場合1.4.0に該当します。)

### 新機能

- Geeklogは現在公式には `register_globals = off` で動いていますが、まだいくつかのプラグインでは、`register_globals = on` にしなくてはいけないことに注意してください。
- トラックバックやピングバックのコメントの送受信向けのサポートが追加されています。それぞれ記事ごとにサポートされていますが、プラグインがこの機能を使えるように新しいプラグインAPIもあります。トラックバックやピングバックはconfig.phpで機能を抑止することが可能です。
- サイトのアップデートを通知するために、ウェブログ・ディレクトリ・サービスblo.gsなど）に更新ピングを送る機能が追加されました。トラックバックやピングバックによって、この機能は記事ごとにサポートされていますが、プラグインもプラグインAIP経由でこの機能を利用することができます。
- Geeklogが読み取りと書き込みができるように、新しいフィード・フレームワークが、RSS1.0だけではなく、複数のフォーマット（現在はRSS、RDF、Atom）でフィードできるようになりました。
- 管理者によるユーザ状態の管理機能追加。アカウントの停止・アクティベーションを含む。
- Blogger.comやLiveJournal.comなどのような別のサービスのアカウントを持っている利用者が、サイトに直接登録しなくても自動的にログインできる新しい遠隔認証システムが追加されました（リモートアカウントは、通常アカウントとして禁止することもできます。）。
- 管理部分が改訂され、より見やすく分類されたリストとなっています。“コマンドとコントロール” (moderation.php) も新たなアイコンででき、管理部分ごとにアイコンがあります。さらに、管理ブロック、コマンド、コントロールはアルファベット順にソートできるようになりました。
- FCKeditor(WYSIWYGエディタ)が付いています。作動させるには、config.phpの `$_CONF['advanced_editor'] = true` に設定してください。
- 検索では、大きなデータベースを検索する際のタイムアウトを防ぐため、ページごとの検索結果を指定した件数だけ表示するようになりました。
  注意:「ページ」検索をサポートするには、プラグインをアップデートする必要があります。アップデートをしないと、Geeklogはプラグイン検索ページの結果を正しく表示しません。プラグインがアップデートされていないと、全データベースを検索することになりますが、Geeklogは現在の検索結果のページしか表示しないことになります。
- 「記事一覧」が導入され、過去の記事が年ごと月ごとにソートされ、見やすく表示できるようになりました。
- 新たなオブジェクト（記事、話題、ブロックなど）のデフォルトパーミッションを、config.phpで設定できるようになりました。

### 互換性

- 変更するには、Geeklog1.4.0で動くようにテーマをアップデートしなくてはいけません。詳細はテーマ変更リストをご参照ください。
- コメント用のプラグインAPIが改変されました。コメントを利用しているプラグインは、Geeklog1.4.0で動くようにアップデートする必要があります。

## Geeklog 1.3.11sr2

このリリースは、Geeklog1.3.12用に独自に開発されたセキュリティ強化と、スパム防御を提供しています。また、バグフィックスが適切な仕事量で、少数のバグを処理しています。（その他のバグフィックスは1.3.12のリリースをお待ちください。）

### セキュリティとスパム防御

- ログインの試行には速度制限があり、初期値は5分間に3回までの試行です。(config.phpのlogin)で設定可能。
- COM_mailではEメールのTo:, From: Subject:のフィールドに含まれる改行コードを除去します。
- 新しいユーザアカウントが作成され、ユーザによる投稿承認がconfig.phpで許可されると、万一アカウントの作成が途中で失敗した場合には、新しいアカウントが適切に承認待ちになることを保証しています。
- メールがスパムと確認されると、速度制限が生じます。 (例えば、新たに投稿を行う前に、送信者は速度制限が終了となるのを待つ必要があります。)
- スパムメールは、403“禁止” HTTP結果コードを取得します。
- スパムチェックは、コメント、記事、リンク、イベントの投稿や「友だちに記事を送信する」オプションで送信されたメッセージや、ユーザプロフィールのコンテンツに対して行われます。
- Spam-Xプラグイン1.0.2が含まれています。

最近、(Spam-Xで使用されている)MT-Blacklistが中止されたことにご注意ください。本リリースに含まれるSpam-Xプラグインは、geeklog.netからブラックリストの最新バージョンを取得するように設定されていますが、アップデートはされません。

### バグフィックス

- 記事ページを閲覧する場合、PHP5.0.5以降で送られるエラーメッセージを修正します。 (bug #483)
- 空白を除き、アルファベットでない文字を含んでいるときは、すぐにEメールアドレスの名前を引き出します。 (bug #368)名前に特別な文字があるユーザにEメールをするときに役立ちます。
- 日本語やタイ語でのトラブルを修正するバージョン0.2.2に、ksesクラスを組み込んでアップグレードされています。(bugs #94 and #119)
- [staticpage:] 自動タグを使用する時のSQLエラーが修正されています。(bug #373)

バグフィックスの全リストは、Changelogを参照ください。

### 改良点

- custom_usercheck関数 (顧客登録コード)のサポートが追加されています。詳細はlib-custom.phpをご参照ください。
- index.phpの自動アーカイブオプションの操作が改良され、ページのロード時間が少し改善されました。
- アップデートされた新しい言語ファイルがいくつか含まれています。
- アップデートされたPEARクラスが含まれています。

## Geeklog 1.3.11sr1

本リリースは、以下のセキュリティ問題に対応しました。

- Stefan Esser が、ユーザのパスワード・ハッシュのようなユーザデータを、ある状況で取り出すように開発できるSQLインジェクションを発見しました。

## Geeklog1.3.11

Geeklog 1.3.11 は、Geeklog1.3.10を上回るバグフィックスとセキュリティリリースであり、1.3.10に替わるものです。1つのバグフィックスが1つのデータベースの変更を伴うので、バージョン番号の変更が必要となりました。

### セキュリティ問題

- ゲストユーザによる投稿がconfig.phpで無効にされていても、ゲストユーザが記事を投稿することが可能でした。 (Barry Wongの報告)
  しかし、config.phpで無効にしていない限り、これらの記事は承認待ちの状態になっていました。
- リンクやイベント投稿のパラメータがフィルタリングされておらず、SQLインジェクションの可能性がありました。。
- 関連ブロック用のリンクが、フィルタリングされていない記事テキストから作成され、クロスサイト・スクリプティング攻撃の可能性がありました。(Vincent Furiaの報告)

### バグフィックス

- gl_commentsテーブルの‘sid’フィールドの長さが修正されました。20字以上の記事IDを使用することで、コメントメールが記事と取り違えられることを防ぎます。
- PHP 4.1.x (アップデートされた PEARパッケージを含む)との互換性を保証します。
- すばやく起動するアーカイブオプションに修正しています。 (bug #345)
- 全話題を削除する場合、コメントや記事画像を的確に削除します。 (bug #339)
- アンケートを削除する場合、コメントを削除します。
- カレンダ内のいくつかのバグを修正し、サイトカレンダとパーソナルカレンダ両方を総合的に処理するように改良します。(bug #268, #336, #338,その他)
- 記事内での "More by author" と "More from topic"のリンクを修正します。
- その他いろいろな修正があります。詳細はdocs/historyをご参照ください。

Geeklog1.3.10のユーザの方には、1.3.11へできるだけ速やかにアップグレードすることをお勧めします。テーマや言語ファイルあるいは1.3.10以上のconfig.phpでの変更がありませんので、アップグレードは比較的簡単です。

## Geeklog 1.3.10

### 新しいデフォルトテーマ

本リリースには、新しいデフォルトテーマが含まれます。Victor B. Gonzalez ( Aeonservで有名です)によって提供された専門的なテーマを選びました。テーマは少し修正され、現在HTML4.01とCSS準拠となっています。

また、古いテーマ（クラシック、クリーン、デジタル・モノクローム、ゲームサーバ、スムース・ブルー、Xシルバー、ヤフー）の配信を取りやめることに決定しました。それらは別のターボールとして利用できます。

### 新機能

- Spam-Xプラグインが含まれています。Tom Willetによりスパム検出プラグインが提供され、それはデフォルトでGeeklogの一部としてインストールされます。
  プラグインが、データベースにブラックリストを保存するために少し修正されました。プラグインの旧バージョンのユーザの方は、プラグインの管理パネルを通して各ブラックリストをインポートする必要があります。
- 記事アーカイブ機能: 記事を「アーカイブ」話題に移動するか、所定の時間に自動的に削除することが可能です。
- カスタマイズ・メニュー・バー: サイトのメニューバーは、config.phpで設定できます。例えば、どんなエントリがどんな順番で表示されるかを選択できます。また、lib-custom.phpに関数を入れてカスタム項目を追加することもできます。
- テキスト・メールのクリック可能なリンク: HTML ではないメール内のURLはGeeklogにより認識され、クリック可能のリンクとして表示されます。
- 編集可能記事ID: 記事のID (静的ページのIDのような)は変更でき、読み取り可能なURLにできます。（検索エンジンによって、特にURLの書き換えをして利用する場合、検出されるチャンスがずっと増えます。）
- 自動リンクは記事やコメント内で利用できる新しいフォームのリンクです。自動リンクは名前がタグネームになっていて、IDがリンク先のオブジェクトのIDで、リンクテキストがリンクのテキストとして使われている[name:id link text]フォームを取っています。
  例: [story:email-bug About the email bug]は<a href="http://example.com/article.php/email-bug">About the email bug</a>となります。
  搭載自動タグに関しては、リンクテキストはオプションで、所定のものがない場合、Geeklogはオブジェクトのタイトル（story, event, static page）を利用します。
  記事にリンクする[story:]とイベントにリンクする[event:]が、あらかじめ定義された自動タグです。プラグインは自分自身の自動タグを定義して、自分のコントロール下でオブジェクトにリンクすることができます。静的ページのプラグインは、すでに[staticpage:]という自動タグを提供しています。
- カスタマイズ可能のEメール: あなたのサイトに登録しているユーザに送信されたEメールは、テキストファイル(/path/to/geeklog/data/welcome_email.txt)のテキストを利用することで、完全にカスタマイズできます。
- タイムゾーンハック: 一般的な "タイムゾーンハック" が含まれています。あなたのサーバが別のタイムゾーンにある場合、サイトのタイムゾーンを設定できます。

### その他の改良点

- すべての動作を改善するため、さまざまな変更が行われました。
- 新しいインストール用に、あなたのMySQLバージョンがInnoDBのテーブル現在のMySQL4.0または3.x”Max”で作られている）をサポートしていれば、InnoDBテーブル（MyISAMの代わり）を利用できるオプション機能があります。既存のデータベースは、スクリプト admin/install/toinnodb.php.を利用してInnoDBに変換できます。
  警告:InnoDB テーブルを使用すると、データベースのバックアップがいくらか複雑になります。小さいサイズや中程度のサイズのサイトは、MyISAMテーブルで十分に作動するので、不安な場合はInnoDBテーブルを使用しないでください。
- カレンダの週は、日曜日か月曜日から始められます。
- 静的ページのプラグインには、静的ページの印刷用ページを表示するためのオプションがあります。

### 注釈

- コメントコードは大きく変更されて動作が改善され、個々のコメントやページコメントなどにリンクできるような改良が加えられました。
- ユーザは、サイトの管理者に対し悪意のあるコメントを報告することができるようになりました。
- サイトの管理者は、新しいコメントが送信された場合、Eメール通知を受け取ることができます。（新しい記事、リンク、イベント、ユーザに対するEメール通知と同じです。）
- コメント送信者のIPアドレスは記録され、Whoisサービスにリンクして直接見ることができます。(または、Whois機能を備えたTom WilletのNetTools をインストールすることができます。)

### セキュリティ関連の修正

注意:以下のバグはすべてGeeklogのパーミッションシステムのトラブルや、「情報漏洩」の類です。たとえば、ある状況下で、サイトのコンテンツが閲覧できなかった人が閲覧できるようになります。これらのバグを使って、特典を得たり、Geeklogやその運営環境にダメージを与えるようには開発されていません。

- 管理者グループは、そのグループのメンバでなくても、すべてのグループのメンバをリストに可能でした。
- 管理者グループは、そのグループのメンバでなくても、システム内のすべてのグループリストがもらえました。(bug #280)
- 記事およびイベント管理者は、アクセスして読み込まなくても、すべての記事やイベントのリストを常にもらえました。(bug #269)
- ユーザがその記事を読む許可を持っていなくても（記事とコメントID両方を知っていれば）、その記事からコメントを要求することが可能でした。
- カレンダの日付と週の画面のイベント許可が適切にチェックされず、イベントが見ることができないはずのユーザにそのイベントが閲覧可能でした。
- サイトカレンダの中で閲覧許可がない場合でも（イベントのIDを知っていれば）、パーソナルカレンダに何らかのイベントを追加することが可能でした。

### その他のバグフィックス

- 投稿された記事をプレビューしたり保存したりしても、投稿された記事は承認待ちのままでしたが、実際には新しい記事として保存されていました。
- パーソナルカレンダからのイベント削除が、作動しませんでした。 (bug #199)
- 古いユーザフォトは、フォトが異なったファイル形式の場合移動されました。たとえば、.gifから.jpg へ変わる場合です。(bug #228)
- 画像の高さは最大値を越えるが、幅は最大値を越えない場合、画像のリサイズは作動しませんでした。(bug #242)
- 画像を再リサイズするためにGDライブラリを使用すると、リサイズしていない画像を保存することはできませんでした。(bug #197)
- GDライブラリを使用すると、 GIF画像はPNGフォーマットに変換されましたが、GeeklogはGIFバージョンを表示しようとしていました。 LZW パテントが終了してから、再びGIF画像を使用することが安全となり、PNG変換はなくなりました。
- ターボールにも、ユーザが抱えているEメールトラブルが報告されている、アップグレードされたPEARパッケージが含まれています。(bug #246)
  注意:これらは、Geeklog1.3.9srに同梱されたのと同じPEARパッケージです。

テーマ変更もあり、その中のいつくかは、新しい機能を動作させるために重要であることにご注意ください。（たとえば、編集可能な記事IDとその記事・アーカイブのオプション）!

本リリースには、Geeklogのコミュニティによって提供された様々な改良点が含まれています。 (確認のためdocsまたはhistoryファイルをご参照ください。)

## Geeklog 1.3.9sr3

本リリースは、以下のセキュリティ問題に対応しました。

- ゲストユーザの投稿がconfig.phpで無効にされていても、投稿することが可能でした(Barry Wongの報告)。
  config.phpで無効にしない限り、これらの記事はまだ承認待ちの状態になっていました。
- リンクやイベント投稿のパラメータがフィルタリングされておらず、SQLインジェクションの可能性がありました。

## Geeklog 1.3.9sr2

本リリースは、以下のセキュリティ問題に対応しました。

- 言語ファイル内の変数$topicを使うことで生じたクロスサイト・スクリプティングの脆弱性が修正されました。(bug #293)
- 記事やアンケートに関するコメントメールの差し止めで、コメント送信が機能停止になりました。

### その他の修正

- PHP5で正確に動作するように、lib-plugins.phpが修正されました。
- 完全なターボールには、報告されたEメールトラブルを修正するアップデートされたPEARパッケージも含まれています。

## Geeklog 1.3.9sr1

本リリースは、以下のセキュリティ問題に対応しました。

- ゲストユーザのコメント投稿がconfig.phpで無効になっていても、投稿することができていました。
  このバグは、明らかに一定のGeeklogのサイトへ数百のスパムメールを送信するために、スパマーによって開発されたものです。
- コメント投稿をチェックする速度制限が付加されました。
- どの話題もゲストユーザには見えなかった場合、記事の閲覧許可によっては、サイトのインデックスページがゲストユーザに対して記事を表示していた可能性があります。
- 話題に関するデイリーダイジェスト・Eメールを、ユーザがまだ移動した話題から取得していました。(bug #178)
- ユーザが一定の話題にアクセスしなくても、話題すべてに関するデイリーダイジェストを購読することが可能でした。
- プロフィールを見ているユーザが、コメントの掲載されている記事にアクセスする許可を持っていなくても、記事に対するコメントが、ユーザのプロフィールに掲載されることがありました。

### その他の修正

- ユーザが自分のレファレンスから話題を除外した場合のCOM_showTopicsのSQLエラーが修正されました。
- ゲストユーザに対する仮セッションIDを処理することで生じたerror.logの "Duplicate entry '...' for key 1."のメッセージが修正されました。
- デイリーダイジェストの間違った作者名が修正されました。 (bug #207).
- plugin_profileblocksedit_plugin-nameプラグインAPI機能が、usersettings.phpのコードの一部を紛失したため作動しませんでした。

COM_extractLinksは、"href" を含まないアンカータグを無視することになります。 (bug #183)

## Geeklog 1.3.9

### 新機能

- Geeklogは、すべてのEメールを送信するため、PEAR::Mailを使用しています。それにより、PHPの搭載メール機能（前述）やsendmail、SMTPを介してEメールを送信することができます。
- RSSフィードを作成したり設定したりするContent Syndicationという新しい管理オプションがあります。新たな記事をすべて含んでいる標準フィードに加え、話題ごとや次のイベント用、リンク用のフィードを作成することができます。
  この機能は、プラグインがフィードを追加できることで拡張可能です。フィードクラスを追加することで、RSS0.91以外のフォーマットでフィードを提供することも可能です。
- 管理者は、ブロックのリストからブロックの順番を簡単に変更することができます。
- グループにユーザを追加する代わりとなるインターフェースがあります（JavaScriptが必要です。）。
- 管理者グループのユーザは、自分自身がメンバになっているグループに他のユーザを割り当てることだけできます。
- 画像のアップロードも、画像をリサイズするためにGDライブラリを使うことができます。
- コメントはテンプレートを使用します。
- ファイルのアップロードを許さない厳しいウェブホストを、標準の画像ディレクトリに適応させるために、新しい設定用変数 `$_CONF['path_images']` を設定して、記事画像とユーザプロフィールが保存されるウェブツリー外部のディレクトリに進むことができます。
- Geeklogは、記事のURL用のURLリライトをサポートしています。たとえば、Googleのクローラが訪問しやすい http://www.geeklog.net/article.php/20031229225326631 のようなURLを持つことができます。
- プラグインは、Geeklogの新しいブロックに独自のセクションを追加できます。
- すべてのURLフィールドは、255文字まで保存ができます（テーマのアップデートが必要です。）。

テーマ変更の完全なリストは、テーマの説明をご参照ください。

静的ページプラグイン1.4も他の改良点に含まれており、PHPのreturn文を使わずに、静的ページにPHPを組み込む追加のオプション機能があります。

### バグフィックス

- 検索クエリからの文字は、コメント内でハイライトされています。また、検索クエリが'*' 文字を含む時は、ハイライトすることで問題を修正しました。
- 検索クラスでのさまざまな修正
- 空のユーザ名でユーザが登録できるバグが修正されました。
- ユーザを一括インポートしている時、そのユーザはみな自動的にデイリーダイジェストを購読していました。(代わりに `$_CONF['emailstoriesperdefault']` の設定を使います。)
- Rootグループ（たとえば管理者）のユーザが以前利用できたコメント削除のオプション機能が修正されました。実際の記事に対して記事編集許可を持っているユーザは、コメントを削除できます。
- グループの削除は、 group_assignments テーブルに孤立した項目が残る場合があります。 (これは現在修正されました。)1.3.9にアップグレードする場合、インストールのスクリプトは、データベースから孤立した項目を移動することになります。

セキュリティ、特にSQLインジェクションに対するセキュリティを改善するために多くの変更がありました。

## Geeklog 1.3.8-1sr6

本リリースは、以下のセキュリティ問題に対応しました。

- 言語ファイル内の変数$topicを使うことで生じたクロスサイト・スクリプティングの脆弱性が修正されました。 (bug #293)
- 記事やアンケートに関するコメントの差し止めで、コメントの送信が機能停止になりました。

## Geeklog 1.3.8-1sr5

本リリースは、以下のセキュリティ問題に対応しました。

- ゲストユーザのコメント投稿がconfig.phpで無効にされていても、コメント投稿が可能でした。
  このバグは、明らかに一定のGeeklogのサイトへ数百のスパムメールを送信するために、スパマーによって開発されたものです。

## Geeklog 1.3.8-1sr4

本リリースは、以下のセキュリティ問題に対応しました。

- 管理者グループのユーザやユーザ管理者グループが、Rootグループのメンバになることが可能でした。 (Samuel M. Stoneの報告、bug #135)
- あるエリアの管理者になると（記事に関する記事管理者など）、ユーザがそこにアクセスを許可されていなくても、オブジェクトのIDを知っていれば、そのエリア内（記事など）のすべてのオブジェクトを削除することが可能でした。
- イベントIDを知っていれば、他の人のパーソナルイベントを削除することが可能でした。
- ユーザが実際の記事にアクセスしなくても、記事のコメントを見ることが可能でした。(Peter Roozemaalの報告)
- クロスサイト・スクリプティング問題のために、誰かのアカウント設定を取得して、特に巧妙に作られたリンクをクリックした場合、その設定（パスワードを含む）を変更することが可能でした。 (Jelmerの報告、Vincent Furiaにより提案された修正)
- SQLのインジェクションの可能性から、コメント表示に障害が起きました。 (Jelmerの報告)
- カレンダにJavascriptコードを入れることが可能でした。 (Jelmerの報告)
- コメントプレビューのJavascriptコードを実行することが可能でした。(Jelmerの報告)

## Geeklog 1.3.8-1sr3

本リリースは、以下のセキュリティ関連の問題に対応しました。

- 指摘されている"dr.wh0"のように、リンク投稿用のカテゴリ・フィールドは、まったくフィルタリングされていませんでした。32文字で多くの障害を生じさせることはおそらくできませんが、現在これは修正されました。
- Vincent Furiaが、ユーザ向けのEメールのフォームに対する制約を回避することができ、その制約をスパムユーザに使用することもできることを発見しました。これらの問題の修正に加え、そのフォームには速度制限もあります。（記事投稿の速度制限に対するデフォルト）
- ゲストユーザのコメント送信が停止された場合でも、送信する方法がありました。
- ほかの誰かのユーザ名でコメントを送信することが可能でした。

## Geeklog 1.3.8-1sr2

Jouko Pynnonen が、1.3.8で導入した新たな「パスワード再発行」の機能を使って、攻撃者がアカウントのパスワードを変えてしまう方法を発見しました。このリリースは、この問題に対応しました。その他の変更はありませんでした。

できるだけ早くアップグレードすることをお勧めします。

## Geeklog 1.3.8-1sr1

本リリースの掲載目的は、2003年の9月と10月初旬に報告されたセキュリティ問題に対応することです。本バージョンにアップグレードすることを強くお勧めします。

### セキュリティ問題

- Ulf Harnhammar's kses HTMLフィルタを組み込むことにより、このリリースは種々の実行可能なJavascriptインジェクションとCSSの改変問題に対応しています。
- SQLエラーの詳細は、ブラウザではこれ以上報告されることはありません。(Geeklogの error.logファイルだけで報告されます。) これは、エラーメッセージ（報告されたSQLインジェクション問題でわかったトラブルに限り）の一部として重要な情報が漏洩することを防ぐものです。

現在はMySQL4.1でGeeklogを使用することを推奨していないことにご注意ください。（これが書かれた時点では、アルファリリース段階で実際に稼働しているサイト上では使用されていません。）Geeklogの次のリリースには、SQLインジェクションをより完全にフィルタリングする機能がつき、MySQL4.1でのトラブルを修正します。

### その他の修正

- URLにポート番号（example.com:8080など）が含まれていた場合、変数 `$_CONF['cookiedomain']` の値の自動検索が修正されました。これで、一部のユーザが報告していたログインのトラブルが修正されます。
- 1.3.8-1sr1の完全なターボールにも、アップデートされたフランス語（カナダ）やトルコ語のファイルが含まれます。

## Geeklog 1.3.8-1

Geeklog 1.3.8-1は、Geeklog1.3.8に対するバグフィックスのリリースです。さまざまな（ほとんどマイナーな）バグフィックスが含まれています。それらの問題は、どれもセキュリティに関連していません。

### バグフィックス

- 以前の1.3.8の動作（検索結果が戻ってこない場合、 `$_CONF['searchloginrequired']` を使ってもう一度検索フォームを表示するなど）を復活させる新しい検索機能に修正します。また日付による検索を修正しました。
- MySQLバージョンの確認を試みた場合の、インストールスクリプトの問題は修正されました。インストールスクリプトは、PHP-4.0.4以前のバージョンでは作動しませんでした。
- 画像を含む記事の関連ブロックのトラブルは修正されました。
- デイリーダイジェストを送信するとき、ゲストユーザを対象から外すようにしました。
- 管理者がユーザのEメールアドレスを変更する際、別のユーザがすでに使用しているアドレスと重複しないようにしました。
- 記事を削除するときは、RSSフィードと古い記事ブロックをアップデートするようにしました。

1.3.8-1の完全なターボールにも、新しくアップデートされた言語ファイルが含まれます。（詳細はChangelogをご参照ください。）

## Geeklog 1.3.8

### 新機能

Geeklog 1.3.8には、静的ページ1.1と1.2のプラグインの両方に替わる静的ページ 1.3 プラグインが含まれています。詳細については静的ページの説明をご覧ください。

- 検索機能が更新されました。ページやすべての言葉、クエリからのどんな言葉も適切に検索できます。検索する言葉は記事の中でハイライトされます。
- 新たなプライバシー・オプション: ユーザは、他のユーザや管理者からのEメールを受け取るかどうか、オンラインブロックに自分の名前を出すかどうかを決めることができます。
- あるグループにいるすべてのユーザのリストを取得することができます（管理者グループのエディタから）。
- リサイズが記事の画像用に設定されている場合、リサイズされていない画像を保管できます（最初にconfig.phpで設定されていなければいけません。）。そのような場合、記事の中のリサイズした画像は小さくなって、オリジナルの画像にリンクされます。
- ある話題をデフォルトの話題にできます。記事の投稿フォームでの話題選択で、その話題が初期値になります。しかし、話題 (index.php?topic=Geeklog など)で閲覧する場合、新しい記事の投稿は、現在の話題が初期値になります。
- ユーザにユーザ名を変更させたり、アカウントを削除させたりすることができます。両方の機能ともにconfig.phpで有効にする必要があります。
- 拡張プラグインAPI: プラグインは、Geeklogのセンターブロックのコンテンツを表示することができ、ユーザのプロフィールにプラグイン自身の情報を追加でき、またサイトのヘッダ(<head>セクション)に情報を追加することもできます。
- カスタム登録フォーム用に新しいAPIがあります (サンプルコードはlib-custom.phpをご参照ください。)。
- ハードコードされたHTMLの大部分をテンプレートファイルに移動し、テーマデザイナーにレイアウトの管理をさせるために、少しテーマの変更がありました。変更リストはテーマの説明をご覧ください。

### バグフィックス

- 「パスワード再設定」機能がリライトされました。古いパスワードをリセットして新しいパスワードを送信する代わりに、特定のリンクを含むEメールを受信します。このリンクに従えば、直接新しいパスワードを登録することができます。登録しない場合は、単にそのEメールを無視することができ、古いパスワードが有効のままとなります。
- 話題のアクセスが必ずしも適切にチェックされてはいませんでした。記事の管理者が、1.3.8にアップグレードした後で定義されたメッセージにアクセスしたことを伝えてきたら、あなたの話題パーミッションを注意してチェックしてください。
- アンケートエディタで、回答を1回余計に入力できていました（たとえば、回答の最大回数が10回に設定されている場合、実際には11回入力可能でした。）。アンケートをチェックしてください。アンケート回答の最大回数を超えていたら、最後の回答が無効になっているかもしれません。 (必要に応じて、 `$_CONF['maxanswers']` としてください。)
- Geeklogは、MySQLの古いバージョン（特に3.22.ｘｘ）でインストールして再び動作するようになりました。これらの古いバージョンは、MySQL ABでサポートできないものもあり、3.23.54より古いものをインストールしているMySQLには、セキュリティ問題があることにご注意ください。

## Geeklog 1.3.7sr5

本リリースは、以下のセキュリティ問題に対応しました。

- 管理者グループのユーザとユーザ管理グループが、Rootグループのメンバになることが可能でした。 (Samuel M. Stoneの報告 bug #135)
- ユーザが記事にアクセスすることが許されていなくても、オブジェクトのIDを知っていれば、あるエリア（たとえば、記事の記事管理者）の管理者になることで、そのエリアのすべてのオブジェクト（たとえば、記事）を削除可能でした。
- イベントIDを知っていれば、他の人のパーソナルイベントを削除することが可能でした。
- ユーザが実際の記事にアクセスしなくても、記事のコメントを閲覧することが可能でした。(Peter Roozemaalの報告)
- クロスサイト・スクリプティング問題のために、誰かのアカウント設定を取得して、特に巧妙に作られたリンクをクリックした場合、その設定（パスワードを含む）を変更することが可能でした。 (Jelmerの報告、Vincent Furiaにより提案された修正)
- SQLインジェクションの可能性から、コメント表示に障害が起きました。 (Jelmerの報告)
- カレンダにJavascriptコードを不正に挿入することが可能でした (Jelmerの報告)。
- コメントプレビューのJavascriptコードを実行可能でした。（保存はできない。）(Jelmerの報告)

## Geeklog 1.3.7sr4

本リリースは、以下のセキュリティ関連の問題に対応しました。

- 指摘されている"dr.wh0"のように、リンク投稿用のカテゴリ・フィールドは、まったくフィルタリングされていませんでした。32文字で多くの障害を生じさせることはおそらくできませんが、現在これは修正されました。
- Vincent Furia が、ユーザ向けのEメールのフォームに対する制約を回避することができ、その制約をスパムユーザに使用することもできることを発見しました。
- ゲストユーザのコメント送信が停止された場合でも、送信できる方法がありました。
- ほかの誰かのユーザ名でコメントを送ることが可能でした。

## Geeklog 1.3.7sr3

本リリースの目的は、2003年の9月と10月初旬に報告されたセキュリティ問題を対応することです。Geeklogの最新バージョン（これが書かれている時点で、1.3.8-1sr1）にアップグレードする予定がない方には、代わりに少なくとも1.3.7sr3にアップグレードすることをお勧めします。

### セキュリティ問題

- Ulf Harnhammar's kses HTMLフィルタを組み込むことにより、このリリースは種々の実行可能なJavascriptのインジェクションとCSSの改変問題に対応しています。
- SQLエラーの詳細はブラウザではこれ以上報告されることはありません(Geeklogの error.log ファイルだけで報告されます。)。これは、エラーメッセージ（報告されたSQLインジェクション問題でわかったトラブルに限り）の一部として重要な情報の漏洩を防ぐものです。

現在はMySQL4.1でGeeklogを使用することを推奨していないことにご注意ください（これが書かれた時点では、アルファリリース段階で実際に運用されているサイト上では使用されていません。）。Geeklogの次のリリースには、SQLインジェクションをより完全にフィルタリングする機能がつき、MySQL4.1でトラブルを修正します。

## Geeklog 1.3.7sr2

### セキュリティ問題

本リリースの目的は、以下のセキュリティ問題を修正することです。すべてのユーザには、本バージョンにできるだけ速やかにアップグレードすることを強くお勧めします。

- 管理者アカウントを含め、Geeklogサイトのアカウントごとに有効なセッションIDを取得することが可能でした。 (SCANアソシエイツの報告)
- Internet Explorerを使うと、埋め込まれたPHPコードで画像をアップロードでき、実行することが可能でした。 (SCAN アソシエイツの報告)
- 記事のパーミッションが話題のパーミッションを無効にしてしまい、アクセスできなかったユーザに記事を表示する結果となりました(Andrew Lawlorの報告)。これは2003年5月15日にリリースされた新しいindex.phpで既に修正されました。
- 以下のタグのいずれかを許可されたHTMLのリストに追加すると、サイトがスクリプトの攻撃を受けやすくなってしまうという警告がconfig.phpに追加されました。
  <img> <span> <marquee> <script> <embed> <object> <iframe>
  ( Joat Dedeの指摘)

このアップデートには、ユーザが管理エリアで見る「アクセスが拒否されました」というよく見られるエラーメッセージに対する修正が含まれています。（たとえば、記事を保存しようとしたり、記事管理者許可のあるユーザ「のみ」とする場合）

1.3.7sr2の完全なターボールにも、アップデートされた種々の新しい言語ファイルが含まれています（詳細はChangelogをご参照ください。）。

## Geeklog 1.3.7sr1

### セキュリティ問題

本リリースの主な目的は、以下のセキュリティ問題を修正することです。ユーザの方には、本バージョンにアップグレードすることを強く推奨いたします。

- Javascriptコードをユーザのプロフィールのホームページ面に埋め込むことが可能でした。 (Jin Yean Tanの報告)
- Javascriptコードを、クロスサイト・スクリプティング攻撃で使用するために、一定のURLに埋め込むことが可能でした。(Jin Yean Tanの報告)
- コメントID（通常は見えません）を知っていれば、コメントを誰かが削除することが可能でした。
- 記事にアクセスしなくても（たとえば、あるグループのメンバでない場合）、記事管理者が記事を操作可能でした。イベント、リンク、アンケート、話題、ブロックの管理者にも同じことが可能でした。（Kobazの報告)

### その他のバグフィックス

- index.phpで、リダイレクトが無限ループになる可能性を修正しました。 `$HTTP_SERVER_VARS['HTTP_HOST']` が設定されていなければ、リダイレクトを起こしません。また、設定と実際のサーバネームを比較すれば、もう不安定な状態にはなりません。
- ImageMagickを使用する時に、リサイズする画像を修正しました。
- 「ユーザ」が、`$_CONF['notification']` に登録されていなくても、新しいユーザ通知Eメール（Geeklog1.3.7で導入されている）が常に送信されました。
- 管理メニューは、管理機能のコアの一部ではなくプラグインのみに対して管理者アクセスしているユーザに表示されています。
- デイリーダイジェスト用のデフォルトは、 `off` に戻ります。たとえば、新しいユーザは自動的にダイジェストを受け取りません。新しいユーザ向けのデイリーダイジェストを再び可能にするには、config.phpに `$_CONF['emailstoriesperdefault'] = 1` を設定してください。

ドキュメント及びハードコードされたリンク（バージョンチェック、サイトのフッタのGeeklogへのリンク）は、http://www.geeklog.net/ へ行くようにアップデートされました。

## Geeklog 1.3.7

### 新機能

- 通知Eメールは、新しい記事、リンク、あるいはイベントが掲載されたか、新しいユーザがそのサイトに登録したときに送信されます(詳細は投稿の設定をご参照ください。)。
  この機能がGeeklogのセキュリティ機能と一緒にはなっていないことにご注意ください。多くの方からこの機能性が望まれたので、本当にハック以上のものでした。
- 新着ブロックの「過去24時間の記事」をクリックすると、新しい記事が表示されます。
- ユーザの写真は、記事の画像と同じくリサイズされています（画像ライブラリの使用が設定されている場合）。ユーザの写真の最大サイズは、config.phpの別々の設定変数で設定できます。
- プラグインメニューは、ファイルシステムに存在するがまだインストールしていないプラグインすべてを表示しています。また、容易にインストールできるように、それらのプラグインのインストールスクリプトへのリンクも提供しています。
- いくつかの新しい設定変数が、config.phpに追加されました。(`notification, showfirstasfeatured, dateonly, timeonly, skip_preview, upcomingeventsrange, emailstoryloginrequired, hideemailicon, hideprintericon, hidenewstories, hidenewcomments, hidenewlinks, max_photo_width, max_photo_height, max_photo_size`). 詳細はconfigの説明をご参照ください。
- テーマ変更: 変更リストはテーマの説明をご参照ください。

### バグフィックス

- 不完全な言語ファイルを使った場合（あるいはURLを利用した場合）に、すべての記事を消去させないように、管理者記事エディタにしっかりしたチェックを加えました。
- UserAdminパーミッションを持つユーザに、Rootユーザのパスワードを変更させ、実際にRootになるlib-security.phpの危険なバグを修正しました。
- "homeonly"と設定されるとブロックが消えるトラブルを修正しました。
- 記事とコメントの複数の [code] ... [/code]部分のトラブルを修正しました。
- [code]部分とPHP4.2.0以上のHTMLフォーマットのコメントでの2行スペーシングを修正しました。
- Geeklogで送信されたEメールのスラッシュ'/'とHTMLエンティティのトラブルを修正しました。
- プラグインAPIへの修正と改良

寄稿者: Blaine Lang, Vincent Furia, 及びKenn Osborneが本リリースに寄稿いたしました。

### Geeklogのスピードアップ (少しだけ)

1.3.6以前の古いバージョンからアップグレードする場合、installディレクトリにあるaddindex.phpと呼ばれるスクリプトを実行する必要が出てくるかもしれません。このスクリプトは、Geeklogのデータベーステーブルのいくつかにインデックスフィールドを付加し、アクセス時間全体を少し改善します。

データベースにどれくらいのユーザや記事などがあるかによって、実行時間がかかるかもしれないので、これは別々のスクリプト（インストールスクリプトのアップグレード処理の一部ではなく）として実行されました。たとえば、ホスティングサービスがPHPスクリプトの実行時間に制限を与えている場合、タイムアウトになる人がいるかもしれません。そういうことになっても、慌てないでください。どのテーブルにもフィールドが追加されませんでしたと通知されるまで、何度もそのスクリプトを実行してください。 (何度も何度も ...)

Geeklog1.3.7を新しくインストールすれば、このスクリプトを実行する必要がないことにご注意ください。新たにインストールしている間に生成されたデータベースには、すでに新しいインデックスフィールドがあります。

## Geeklog 1.3.6

### 新機能

- 記事の画像は、アップロード中に自動的にリサイズできます（ImageMagickかnetpbmのどちらかがインストールされている場合）。詳細については、コンフィギュレーションの説明をご参照ください。
- "Frontpage" というタイトルの静的ページのコンテンツは、Geeklogサイトでフロントページ上の最初の記事の前に表示されます。静的ページがさらに”nonews”ラベルをつけている場合は、完全にフロントページのニュースを入れ替えることになります。
- ユーザによる投稿を承認する: 有効な場合(config.phpで)、新しいユーザは自分のパスワードを受け取る前に、管理者によって承認される必要があります。
- 投稿承認は別々に、完全に（config.phpで）かまたは一定のユーザグループのみで取り消すことができます。(新しい機能 story.submit、links.submit、 event.submitを使って)
- ソースコード（PHP、HTMLなど）を送信すると、[code] ... [/code]という擬似タグを使って、一字一句変えずに再生された送信文を封入できます。
- リンクセクションでは、分類、ページ分けされたディスプレイ（別々にオフできて、以前の1.3.6スタイルのリスティングにも戻れます。）が使われています。
- 必要ならば、ゲストユーザをサイトのほとんどすべての部分（たとえば、リンクセクション、サイト統計）から締め出すことができます。
- Geeklogサイトは、config.phpにフラグを設定して簡単に機能停止することができます。（たとえばメンテナンスの場合など）
- テーマ変更: 変更リストはテーマの説明をご参照ください。

### バグフィックス

- いくつかの修正で、アカウントに対するパーミッションが適切に設定されることが保証されました（たとえば、ユーザがアクセス権を持たない記事のタイトルを表示しない。）。
- Geeklogが適切にローカライズされることを確認できるように、いくつか修正が行われました。（最新の言語ファイルを持っていて、国と言語に適したローカル設定を選択した場合。）
- 変数 `$_CONF['site_admin_url']` を、Geeklogの管理ディレクトリをリネームすることができるように、適切に使用しています。
- 新しい RDFパーサは、（全部ではないにせよ）ほとんどのRDFニュースフィードを適切にインポートします。

### 注意

- config.phpには新しい変数がたくさんあるので、前回のインストールから古いconfig.phpをコピーする代わりに、そのファイルを新たにコピーすることをお勧めします。
- 英語、ドイツ語、イタリア語、ポーランド語、日本語のファイルが、最近アップデートされたことにご注意ください。その他の言語ファイルを使用すると、あなたのGeeklogサイトがきちんと動かない場合があります。

寄稿者: Gene Wood、 Blaine Lang、 Tom Willet、及び Roger Websterが本リリースに寄稿いたしました。