PFSenseのパッケージを作成する

この記事では、 pfSense用の独自のGUIパッケージを作成する方法を簡単な例で示します。 読者はpfSenseの経験があり、PHPの知識があることを前提としています。



画像



pfSenseルーター(FreeBSDベース)は、主にWEBインターフェースを介したシステム設定の管理のおかげで、多くのシステム管理者によって使用されています。 初心者の管理者でも多くの設定に簡単に対応できるため、このルーターの範囲を拡大できます。 同時に、経験豊富な同僚は、コンソールへのアクセスを最大限に活用して、システムの動作を調査および制御できます。



ほとんどがWEBインターフェイスを介して実行できるルーターの標準設定に加えて、システム管理者がコンソールで設定を管理する必要があるエンタープライズ固有のタスクが発生する場合があります。 次に、Webインターフェイスからシステム設定を管理できるコードにベストプラクティスを組み込む方法を示します。



したがって、テストpfSenseをインストールして構成しました。 開始するには、SSHを介してコンソールファイルとpfSenseファイルにアクセスするためのツールが必要です。 私はwinuserなので、仕事用のツールにもWinSCP + Puttyを使用します。



WinSCP3を使用して、 pfSenseに接続し、ディレクトリ/ usr / local / pkgを開きます。 このフォルダーには、GUIパッケージに関連するファイルが格納されます。 通常、これらはXMLおよびINCファイルであり、構成の説明とPHPパッケージハンドラーが含まれます。 GUIパッケージ構成の説明はXMLファイルにあり、次のものが含まれています。



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/> </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パッケージを作成する方法について詳しく説明します。



All Articles