まだ重たいCMSをお使いですか?
毎秒1000リクエスト を捌く超高速CMS「adiary

2019/10/23(水)adiary Version3.31 リリース情報

ダウンロードはこちらから

Ver3.31の主な変更点

JavaScriptまわりを1つのファイルにまとめて、adiary.jsとしてminifyしています。同時にCSSまわりも最適化しましたので、ロード時間が更に改善していると思います。

ただ、adiary.jsの根幹に手を加えているため、予期せぬ不具合が発生する可能性があります。安定志向の方はVer3.30をご利用いただければ幸いです。

Ver3.31d : 2019/11/24

  • adiary.jsをリファクタリングしました。
    • jQuery等のjsライブラリとまとめて、adiary.min.js に minify しました。
    • テキストボックスのリサイズ等いくつか機能を削除しました。
    • dailogを自作して、jQuery UIへの依存度を下げました。
  • テーマ、CSS関連
    • ui-iconをJavaScriptで生成するよう変更(pub-dist/ui-icon/ 画像ファイルを削除)
    • 別で読み込んでいた Lightbox.css を削除し、関連画像のロードも減らしました。
    • Ver2以前との互換のための画像アイコンを削除。*1
  • ドロップダウンメニューの内部仕様を更新しました。
    • CSS仕様を整理。
    • JavaScriptを使わず中央等の位置調整するように変更。
    • いくつかのテーマで表示が崩れていた問題を修正。
  • Cookie設定時に「httpOnly」と「SameSite=Lax」を設定するようにしました(セキュリティ対策)。
  • インポートログをボタンの近くに表示するようにしました。
  • 【テーマ】いくつかのテーマで画像を埋め込み等最適化しました。
  • 【記法】Ver3.30で削除していたインラインでtargetを指定する記法を再び使用可能にしました。
  • 【記法】麻雀記法をより使いやすく拡張しました。
  • 【記法】入れ子タグの解釈が間違っていた(後方一致検索をしていた)。
  • 【Plugin】設定リセット機能をつけました。
  • 【Plugin/des_twitter】管理画面で非表示にしました。
  • 【Fix】HTTP.pmのtypoを修正(Thanks to t-hide
  • 【Fix】デザイン編集でタイミングにより二重に初期化してしまうことがある。
  • 【Fix】月別記事リストのドロップボックス表示時のリンクが正しくない。(Ver3.20以降)
  • 【Fix】記事一覧画面でログインしていない時もメニューへのリンクが出る。
  • 【Fix】記事一覧画面から記事の表示/非表示を変更した際、タグ内の記事数が狂う。
  • 【Fix】デフォルトブログでソーシャルアイコン等のリンクが正しくない(Thanks to やす
  • 【Fix】【sumomoテーマ】幅480pxのタブレット等で必要な画像が表示されない。
  • 【Fix】【sumomoテーマ】タブレット等で表示時に、Viewportの設定に失敗する。
  • 【Ver3.31a/Fix】コメント欄があふれることがある。
  • 【Ver3.31b/Fix】記事編集画面で、タグを連続で追加できない。
  • 【Ver3.31c/Fix】スマホ画面のドロップダウンメニュー動作がおかしい。
  • 【Ver3.31d/Fix】【標準記法】(Ver3.30~)エスケープ文字の復元ミスを修正。script環境を修正。(Thanks to 荻拓

*1 : 記法のほうは残してあるので、画像ファイルだけ展開すれば使えます。

2019/06/30(日)adiary Version3.30 リリース情報

ダウンロードはこちらから

Ver3.30の主な変更点

アップデートしたadiaryでreStructuredTextを使用する場合、adiary.conf.cgi に設定を追加する必要があります。RST(reST)に直接対応した初のCMSだといいな。

続きを読む

2019/05/31(金)adiary Version3.24 リリース情報

ダウンロードはこちらから

Ver3.24の変更点

バグ修正が主です。

  • RSSからのリンクhash(#rss-tm)を除去する際、リロードしないようにしました。
  • はてなブックマークの常時SSL化に伴い、はてなブックマークへのリンクを https に変更。
  • RFC7231に準拠し、リダイレクトを相対パスで出力するよう変更。
  • アルバムにアップロード時の拡張子制約を緩和し、半角英数以外を含むものを許可しました。(Thanks to harata
  • 【conf】<$v.album_allow_ver_ext>の設定を削除
  • 【アルバム】ファイル名に使えない文字の制限を緩和しました。
  • 【Fix】トップページの2ページ目で「前のページ」のリンクが正しくない。(Thanks to sabazo
  • 【Fix】mixiの画像サーバ等、一部のサイトにSSL接続できない。*1
  • 【Fix】body が 0byte の結果を応答するとき、「Content-Length: 0」を送れていなかった。
  • 【Fix/httpd】mime.types をロードする際、コメントも処理していた。
  • 【Fix/httpd】"file?query" 形式のとき、ファイルをロードできない。
  • 【Fix/httpd】拡張子判定時、大文字小文字を区別してしまう。
  • 【Fix/アルバム】ゴミ箱関連のファイル名の挙動がおかしい。
  • 【Fix/アルバム】ファイル名に特殊文字を含む場合の挙動がおかしい時がある。
  • 【Fix/Markdown】「|:---|:---|」のようなテーブルを認識できない。
  • 【Fix/Markdown】通常文字列に「|---|---|」などが続いた場合、テーブルと判定してしまう。

*1 : Net::SSLeayモジュールで、SNIが有効になっていないため。

既知の不具合

  • PostgreSQL/MySQL運用時、外部画像の取り込みが動作しない。

2019/03/12(火)adiary Version3.23 リリース情報

ダウンロードはこちらから

  • Ver3.20以降の変更による累積的なバグ修正、httpd/EXEの修正が多めです。

Ver3.23の変更点

  • Pocketのシェア数が取得できなくなっていたので取得機能を削除しました。*1
  • デフォルトアイコンとデフォルトロゴを変更しました。
  • 静的HTML出力が無効のとき、管理者以外にはエラーメッセージを表示しないように変更。
  • 管理メニューの流れを少し改善しました。
  • 記事編集画面でファイルアップロードの進捗を表示するよう変更。
  • アルバムと記事編集画面のファイル選択ボタンのデザインを変更。
  • 【アルバム】アップロード中の進捗を表示するように変更。
  • 【アルバム】ファイルリネーム時に、画像以外はサムネイルを再生成するよう変更。
  • 【アルバム】ファイルリネーム時に del キーが使用できない。
  • 【httpd/EXE】Socket を STDIN に接続するのを止め、若干高速化しました。
  • 【httpd/EXE】index.htmlを有効化しました。
  • 【httpd/EXE】大きいファイルをダウンロードする場合、すべてメモリに展開しないようにしました。
  • 【adiary.conf.cgi.sample】大きいファイルはテンポラリに書き出すよう変更。
  • 【adiary.conf.cgi.sample】<$Form_options.multipart_use_temp>を<$Form_options.use_temp_flag>に変更。*2
  • 【plugin】非公開コメントにヘルプを出せる機能を追加。
  • 【Fix/plugin】Twitter通知プラグイン。2018/06/13以降、新規認証に失敗していた。
  • 【Fix/Ver3.20-】デザイン編集時に、ヘッダが常に標準のまま(非カスタム状態で)出力されてしまう。
  • 【Fix】稀に最初のファイルアップロードに失敗することがある。
  • 【Fix】静的出力時、ヘッダにゴミが出力される。
  • 【Fix】致命的エラーメッセージ(初期ディレクトリ作成失敗)がきちんと表示されない。
  • 【Fix】大きなファイルを送信されたとき、<$Form_options.multipart_use_temp_dir>を設定していても、すべてメモリに展開していた。*3
  • 【Fix】テンポラリとして /tmp などパーティションが異なるディレクトリを指定すると、アップロードに失敗する。
  • 【Fix】コメント欄でTABが入力できないことがある。
  • 【Security/httpd/EXE】HTTP_HOSTヘッダにタグを挿入可能だった。*4
  • 【Security】HTTP_HOSTヘッダに虚偽の設定をした上でコメントを投稿するとRSSのホスト名部分を外部から書き換えられてしまう。*5

*1 : query.yahooapis.com が突然サービス終了したため

*2 : ディレクトリ名を設定するのかフラグを設定するのか非常にわかりにくく、自分でハマってしまったので……。

*3 : multipart_use_temp_dirを設定していない場合、無条件にメモリに展開します。

*4 : RSS以外に展開されることはないので、実害はあまりない。

*5 : Hostヘッダインジェクションと呼ばれる攻撃です。一般的なレンタルサーバでは VirtualHost と呼ばれる設定を使用しているため問題ありません。

Hostヘッダインジェクションについて

今回のバージョンアップで、RSSのホスト部分を第3者が書き換え可能になるセキィリティホールが修正されています。

  • 一般的なレンタルサーバでは問題ありません。
  • 独自サーバ等でも、(最初以外の)VirtualHost部分にadiaryの設定がある場合は問題ありません。
  • adiary.env.cgiで <Server_url> が設定されている場合問題ありません。

いわゆるHostヘッダインジェクションと呼ばれる問題で、Hostヘッダからサーバのホスト名を設定する仕様が原因になっています。幸い、Host名として不正なものはサーバソフトウェアが弾くのでJavaScriptを埋め込まれるといった問題は起こりませんが*6、RSSのURLが書き換えられる問題はおきます。

対策としては、最初のインストール時に HTTP_HOST から信頼できる URL を生成し記録しておくなどの方法が有効です。*7

*6 : adiary.httpd.plのVer1.04以前にはこの問題が存在しますが、HTTP_HOSTをそのまま埋め込むのはRSSのみなのでスクリプトを実行することはできません。RSSのXMLをパースエラーにする程度です。

*7 : adiaryでは管理者ログイン時に HTTP_HOST 情報を記録するようにしました。

2019/02/02(土)adiary Version3.21 / Ver3.22 リリース情報

ダウンロードはこちらから

Ver3.22の変更点

  • 【Fix】sitemapプラグインが動かない。
  • 【Fix】AMPプラグインにCSSが適用されない。
  • 【Fix】mod_perl2環境で動作が不安定。
  • 【Fix】インポート等のセッション画面表示がおかしい。
  • 【httpd/EXE】コードを若干変更。

Ver3.21a/bの変更点

  • 【Ver3.21a】Ver3.21で変更した「figure caption」の仕様を元に戻しました。*1
  • 【Ver3.21b】【Fix】テキストエリアでTABが入力できない。

*1 : 問題しかありませんでした……

Ver3.21の変更点

  • 内部処理を見直し、2%-5%程度処理を高速化しました。
  • 起動時のパス解析を更新しました。
  • 静的出力(エクスポート)機能を更新しました。
  • テーマ選択画面を少し見やすくしました。
  • 【記法】Markdown式の「```~```」等のブロック記法に対応しました。*2
  • 【記法】ブロック記法を若干改良しました。
  • 【記法】同じ内容の注釈でもセクションが異なれば別々に出力するようにしました。
  • 【記法】フィルター記法をはてなブログURLに対応させました。
  • 【Markdown】注釈記法を追加しました。
  • 【Markdown】Qiitaのmathブロック記法を追加しました。
  • 【httpd/EXE】max_request設定を追加し、デーモンの自動再起動を内蔵しました。*3
  • 【httpd/EXE】引数を若干変更しました。
  • 【httpd/EXE】adiary.conf.cgiが存在しない時、自動生成するようにしました。
  • 【plugin】JavaScriptプラグインを更新。
  • 【plugin】フリー入力プラグイン(メイン部)に表示条件を選択する機能が付きました。
  • 【plugin】メール通知プラグイン。sendmailコマンドを止め、SMTPで送信するようになりました。
  • 【Fix】JavaScript強制更新用queryが一部正しくない。
  • 【Fix】Perl5.8で動かない。(Thanks to 漁
  • 【Fix/デザイン編集】単一記事表示の編集リンクが移動できてしまう。
  • 【Fix/記法】gist/githubのソース貼り付けが動作していない。
  • 【Fix/Markdown】コメントのみの行を、行処理してしまう。

*2 : シンタックスハイライトや数式記法は人によってはよく使うにもかかわらず記述方法がややこしいので、覚えやすい記法をMarkdownより輸入しました。

*3 : 長期運用したときメモリリークしないための措置です