
pfSenseルーター(FreeBSDベース)は、主にWEBインターフェースを介したシステム設定の管理のおかげで、多くのシステム管理者によって使用されています。 初心者の管理者でも多くの設定に簡単に対応できるため、このルーターの範囲を拡大できます。 同時に、経験豊富な同僚は、コンソールへのアクセスを最大限に活用して、システムの動作を調査および制御できます。
ほとんどがWEBインターフェイスを介して実行できるルーターの標準設定に加えて、システム管理者がコンソールで設定を管理する必要があるエンタープライズ固有のタスクが発生する場合があります。 次に、Webインターフェイスからシステム設定を管理できるコードにベストプラクティスを組み込む方法を示します。
したがって、テストpfSenseをインストールして構成しました。 開始するには、SSHを介してコンソールファイルとpfSenseファイルにアクセスするためのツールが必要です。 私はwinuserなので、仕事用のツールにもWinSCP + Puttyを使用します。
WinSCP3を使用して、 pfSenseに接続し、ディレクトリ/ usr / local / pkgを開きます。 このフォルダーには、GUIパッケージに関連するファイルが格納されます。 通常、これらはXMLおよびINCファイルであり、構成の説明とPHPパッケージハンドラーが含まれます。 GUIパッケージ構成の説明はXMLファイルにあり、次のものが含まれています。
- サービス情報;
- WEBインターフェースページのヘッダー。
- WEBインターフェイスページフォーム。
- WEBインターフェースのイベントのPHP関数ハンドラーに関する情報。
2つの空のファイルmypkg.xmlおよびmypkg.incを作成します。 名前mypkgはパッケージの名前であり、XMLファイルの名前はパッケージのWEBインターフェースにアクセスするためのキーです。 incファイルの名前は任意であり、接続方法は以下のとおりです。
XMLファイルを作成します。
サービス情報には、GUIパッケージの名前、タイトル、カテゴリ、バージョン、および接続されているINCファイルのリストが含まれています。 この場合、接続されているINCファイルは1つだけです。接続されているファイルへのフルパスを指定する必要があります。
<?xml version="1.0" encoding="utf-8" ?> <packagegui> <name>mypkg</name> <title>My First Package</title> <category>Test</category> <version>0.1</version> <include_file>/usr/local/pkg/mypkg.inc</include_file>
WEBインターフェイスヘッダーには、タブノードのGUIページの説明が含まれ、ナビゲーション領域に表示されます。 ページは1つだけになります。 テキスト要素には、GUIのナビゲーション項目の名前が含まれています 。 url要素には、パッケージのアクセスページへの相対パスが含まれています。
<tabs> <tab> <text>My Package</text> <url>/pkg_edit.php?xml=mypkg.xml</url> <active/> </tab> </tabs>
WEBインターフェースフォームは、パッケージのパラメーターのどのコントロールをユーザーが利用できるかを説明します。 最初に、 チェックボックス要素を持つ単一の有効化フィールドを作成します 。
<fields> <field> <fielddescr>Enable</fielddescr> <fieldname>enable</fieldname> <description>Check this for enable package.</description> <type>checkbox</type> </field> </fields>
イベントハンドラWEBインターフェイスはXMLファイルの最後のセクションであり、GUIフォームの操作中に一度に呼び出される関数を記述します。 一般的に使用される3つのハンドラーが表示されます。
- custom_php_command_before_form-フォームが表示される前に呼び出されます;
- custom_php_validation_command-データを保存する前に各フォーム要素のデータをチェックするときに呼び出されます;
- custom_php_resync_config_command-フォームデータを保存するときに呼び出されます
<custom_php_command_before_form/> <custom_php_validation_command/> <custom_php_resync_config_command/> </packagegui>
ハンドラーを使用して、このイベントまたはそのイベントで呼び出されるmypkg.incファイルからphp関数の名前を指定できます。 ルーターの構成を変更する特定のアクションは、 custom_php_resync_config_commandハンドラーで実行されます。 このハンドラーは、フォームの[ 保存 ]ボタンをクリックしたときと、pfSenseが読み込まれたときに呼び出されます。
ここで、ファイルの全文を見ることができます:
Mypkg.xmlファイル
<?xml version="1.0" encoding="utf-8" ?> <packagegui> <name>mypkg</name> <title>My First Package</title> <category>Test</category> <version>0.1</version> <include_file>/usr/local/pkg/mypkg.inc</include_file> <tabs> <tab> <text>My Package</text> <url>/pkg_edit.php?xml=mypkg.xml</url> <active/> </tab> </tabs> <fields> <field> <fielddescr>Enable</fielddescr> <fieldname>enable</fieldname> <description>Check this for enable package.</description> <type>checkbox</type> </field> </fields> <custom_php_command_before_form/> <custom_php_validation_command/> <custom_php_resync_config_command/> <custom_php_install_command/> <custom_php_deinstall_command/> </packagegui>
テストパッケージは何もしないため、mypkg.incファイルを空にします。
ファイルmypkg.inc
<?php /* mypkg.inc */ ?>
作成したファイルmypkg.xmlおよびmypkg.incを/ usr / local / pkgディレクトリに保存した後、パッケージの外観を確認できます。 これを行うには、pfSense WEBインターフェースに移動し、アドレスバーにパス/pkg_edit.php?xml=mypkg.xmlを追加します。 すべてが正しく行われ、エラーがなければ、この画像が得られます

その結果、有用な機能を実行せず、データを保存せず、WEBインターフェイスメニューにも登録されていない、非常にシンプルなGUIパッケージを受け取りました。 それにもかかわらず、このパッケージの例では、pfSense GUIの操作メカニズムのアイデアを得ることができます。
PS:以前は、可能性のある欠点をおaびします。 この記事は招待のために書かれています。 このトピックがコミュニティに興味がある場合は、pfSenseの本格的なGUIパッケージを作成する方法について詳しく説明します。