オリジナルインストーラーの作り方

site や beginner のテーマからサイトを作り始めるのではなく、自社でベースのテーマ準備しているという方もいらっしゃると聞いています。 そんな方のために、オリジナルのインストーラーの作り方をご紹介します。
標準のインストーラーを確認
setup/bin ディレクトリをチェックしてみると以下の画像のようになります。
site テーマの場合には、site ディレクトリの中に site.yaml と media ディレクトリが存在ます。 その media ディレクトリの中にはインストール後の media ディレクトリと同様に 001 とブログID毎のディレクトリがあり、そこに画像ファイルが格納されています。
site.yaml の準備の仕方は?
管理画面のブログのエクスポート機能を使って(エクスポート)ボタンをクリックしてみてください。
ブログのエクスポート機能を使うことで、上記の bin の中に必要なファイルが入手できる事になります。 実際には、site.yaml ではなく data.yaml というファイル名になっていますが、今後作るオリジナルのテーマインストーラーの名前に後で変更してください。
オリジナルテーマのインストールデータを作成
今回は square というテーマを作る際の準備するファイルをまとめてみます。
bin/square | ブログ管理画面からのエクスポートデータ |
---|---|
img/square.jpg | テーマのイメージファイル 260x290 px |
plugins/ | 拡張アプリを同梱したい場合に |
themes/square | オリジナルのテーマ一式 |
tpl/install.html | インストーラーのHTMLを変更 |
これらを テーマ名_バージョンや日付.zip のような命名規則で square_202202.zip のように圧縮ファイルを用意します。
簡単セットアップを利用してオリジナルテーマを自動設置
インストール環境を準備するために使われている「簡単セットアップ」ですが、2.11.x までは ionCube Loader や php.ini の設定、PHP のバージョンによって違うパッケージを選択など役割が多くありましたが、3.0 がリリースされインストールパッケージも1つになり、ionCube や php.ini の設定も必要がなくなりました。
そんな「簡単セットアップ」に新しい役目として、オリジナルテーマの自動セットアップする機能を組み込みました。
上記の画面は、リリースされていない準備中の画面になります。
その setup.php のファイルの中に、以下のように設定することで、自動で標準のインストーラーを上書きして特製のインストーラーとして動作するようにできるようになります。
$theme_zip_file = "square_202202.zip"; // (例)
これまでよりもエラーメッセージの表示などを分かりやすいものにして、はじめてインストールする人が困らないようなものに改良を進めていこうと思っております。
実際のオリジナルテーマで用意するデータ
例としては square という近日リリース予定の ECテーマを例にします。 用意するテーマ名のフォルダ square の中には、bin / img / plugin / themes / tpl のフォルダがあります。
bin フォルダ
標準の setup/bin と同じ構成で
img フォルダ
テーマ選択のところで使われる画像 ( 260 x 290 px )を用意します。
tpl フォルダ
インストーラー用の HTML ファイルを置き換えるためのファイルを用意します。
themes フォルダ
sqaure テーマファイル一式を用意します。
plugin フォルダ
そのテーマで利用する拡張アプリも一緒にインストールできます。
詳しくは、square のテーマがリリースされた際の zip ファイルを参考にしてください。
マルチブログインストーラー
最後に、マルチブログのインストールについて紹介しておきます。
現在は、bid:1 のブログのみインストールできますが、自社である程度初期段階の部分を構築済みのテーマを用意しようと思うと、マルチブログ環境になっているものが最初からインストールできたらと考えることでしょう。将来的には、そこもしっかり対応できたらと考えています。
<input name="select_theme" type="radio" value="site[news|lp]"/>
上記の tpl/install.html の中の記述で、select_theme をする際の value に [] で子ブログを設定します。
site[news]とすると、bid:1 = site / bid:2 = news のように子ブログをインストールでき、site[news|lp] とすると、bid:1 = site / bid:2 = news / bid:3 = lp となります。
メディア機能が用意される前から実装されていた機能のようで、現状は、子ブログ自体は作れるが、メディア部分の対応ができておりません。全て media/001 に保存されてしまうようです。 インストーラーの改修をして、より便利に使えるようにしたいと考えています。
JVNに報告された脆弱性への対応について

a-blog cms で複数の脆弱性が見つかりました。 すでに問題に対応したバージョンはリリースしておりますので、該当のバージョンに当てはまる場合は大変お手数ですが以下のご対応をお願いいたします。
今回は見つかった脆弱性は以下の3つです。
- クロスサイトスクリプティング
- テンプレートインジェクション
- IPアドレスによるログイン制限の突破
JVN識別番号
- JVN#14706307
クロスサイトスクリプティング・テンプレートインジェクション
問題の対象となる状態
プロフィールページのユーザー名または、デフォルトテーマのテンプレートのエントリータイトルがサニタイズせず出力しているため、クロスサイトスクリプティングまたはテンプレートインジェクションの脆弱性が存在します。
信頼されない投稿者以上のユーザーがログインするサイト、または会員機能がありユーザーが名前を入力できるようにしているサイトの場合は、ご対応をお願いいたします。
影響を受けるバージョン
- a-blog cms Ver. 3.0.1 より前のバージョン (Ver.3.0.x系)
- a-blog cms Ver. 2.11.42 より前のバージョン (Ver.2.11.x系)
- a-blog cms Ver. 2.10.44 より前のバージョン (Ver.2.10.x系)
- a-blog cms Ver. 2.9.40 より前のバージョン (Ver.2.9.x系)
- a-blog cms Ver. 2.8.75 より前のバージョン (Ver.2.8.x系)
- a-blog cms Ver. 2.8.0 未満のバージョン(フィックスバージョンはありません)
IPアドレスによるログイン制限の突破
問題の対象となる機能
管理ページ > コンフィグ > アクセス制限にある 「ログイン制限」「権限制限」「ベーシック認証(認証スキップ)」 機能をご利用の場合
詳細
IPアドレスによるログイン制限を突破されてしまう可能性が存在します。 管理ページ > コンフィグ > アクセス制限にある 「ログイン制限」 機能をご利用の場合は、アップデートをお願いいたします。
(※この脆弱性によりIPアドレスによる制限は突破される可能性がありますが、ログイン機能自体に脆弱はなく、ユーザー名とパスワードによる認証は正常に機能します。)
影響を受けるバージョン
- a-blog cms Ver.2.11.41 より前のバージョン (Ver.2.11.x系)
- a-blog cms Ver.2.10.43 より前のバージョン (Ver.2.10.x系)
- a-blog cms Ver.2.9.39 より前のバージョン (Ver.2.9.x系)
- a-blog cms Ver.2.8.74 より前のバージョン (Ver.2.8.x系)
- a-blog cms Ver. 2.8.0 未満のバージョン(フィックスバージョンはありません)
問題への対応方法
各マイナーバージョン毎にフィックスバージョンがリリースしております。 「影響を受けるバージョン」 よりも新しいフィックスバージョンにアップデートを行なってください。
バージョンアップ 以外の対応方法
- IPアドレスによるログイン制限機能の代わりに、.htaccessなどのWebサーバー側の機能を利用する
- エントリータイトルを出力しているテンプレートを確認しエスケープ漏れしていないか確認する([raw]校正オプションがついていたら削除し、escape校正オプションを追加)
- 会員サイトの場合、名前を出力している箇所を確認し、エスケープ漏れしていないか確認する([raw]校正オプションがついていたら削除し、escape校正オプションを追加)またグローバル変数「%{USER_NAME}」「 %{SESSION_USER_NAME}」 を利用している場合は、使用しないようにテンプレートを修正する。
この度はご迷惑をおかけしてしまい申し訳ございません。
該当する問題がありましたら、お早めにバージョンアップのご検討をお願いいたします。 また、迅速にご報告いただいたユーザーの皆さま、誠にありがとうございました。
今後もご報告いただいた内容に対して真摯に受け止め修正と改善を行ってまいります。 よろしくお願いいたします。
本件に関するお問い合わせ先
本件についてご不明点などありましたら以下のお問い合わせよりご連絡ください。
有限会社アップルップル
メールアドレス:info@a-blogcms.jp
お問い合わせフォーム:https://www.a-blogcms.jp/contact/
Google Translate APIを使って翻訳ボタンを作る

Google Translate API を利用した翻訳機能は Ver. 3.1.12 で廃止されました。
a-blog cms Ver.2.8.0に組み込みJSに翻訳機能がつきました。この機能を使うことで日本語を例えば英語に変換して別のテキストエリアに翻訳結果を自動入力するカスタマイズが可能になります。
まずは Google Translate API を使用するために以下の2つのステップが必要になります。
- API key の取得
- API key を CMS のプロパティ設定で登録する。
1. API key の取得

まずは、Google API Console にアクセスしてログインしてください。ログイン後、任意の名前でプロジェクトを作成します。 上の画像のように 1, 2 の手順でプロジェクトを新規作成できます。

左上のセレクトメニューをクリックし、先ほど作成したプロジェクトを選択します。

次は、サブカラムより「ライブラリ」という項目をクリックし、API ライブラリのページに移動します。そのページにて、Google Cloud Translation APIという項目を検索して有効化してください。


最後に「認証情報」をクリックして認証情報の設定画面に移動します。そこで新たに API key を作成します。今回はキーの制限は「なし」でも大丈夫です。ただしセキュリティ上、「IP アドレス」を指定し、アクセスできるIPアドレスを制限しておくことをオススメします。

この時発行される API key を覚えておきましょう。
2. API key を CMS のプロパティ設定で登録する。

プロパティ設定