Tcl / Tk。 コマンドラインユーティリティのGUI開発

さまざまなプラットフォームでクラウドトークンをテストしている間、特定の不正の考えに心を奪われませんでした。MSWindowsプラットフォームのPKCS#11トークン構成ユーティリティにグラフィカルインターフェイスがあるのに、他のプラットフォームにはない理由です。 そして何よりもまず、基本的なユーティリティp11confに関係します。これは無料で使用でき、コマンドラインユーティリティであり、標準の入力/出力を介して実行されます。



tkBuilder-グラフィックデザイナー



出力は、たとえばQtライブラリを使用して、p11confユーティリティ用のC / C ++ GUI言語で記述できます。 しかし、その後、Tkグラフィックライブラリ(ツールキット)と組み合わせて、コンソールプログラムまたはコマンドラインユーティリティのグラフィカルインターフェイスをすばやく作成できる高レベルのスクリプト言語Tcl(ツールコマンド言語)があることに気付きました。 私は1997年にTk / Tclパッケージを初めて知りました。そのとき、その上にアクセス制御システム(ACS)のグラフィカルインターフェイスを記述することが計画されていました。 次に、パッケージのグラフィックス機能は強い印象を与え、特にテトリス:



画像



彼らがTk / Tclの使用を拒否した理由の1つは、今日のQTデザイナーと同様に、当時彼にデザイナー(デザイナー)がいないことでした。 Tk / Tclの機能を更新し、グラフィカルな機能に加えて、コマンドラインユーティリティとの対話を整理し、正しい軌道に乗っていることを確認して、コンストラクターの検索に取り掛かりました。 既存のデザイナーを分析した後、デザイナーtkBuilder_for_tcl8.4を選択しました。



画像



さらなる開発により、正しい選択が示されました。 設計者は、明確なインターフェイスを備えているだけでなく、優れた機能も備えていることがわかりました。 開発中にプロジェクト全体を追跡できるだけではありません。



画像



ただし、個々の部分も制御します。



画像



開発者は常にプロジェクト全体またはその一部のコードを見ることができます:



画像



グラフィカルシェルが開発されているコマンドラインユーティリティとの対話は、プログラムチャネルを介して実行されます。



画像



プロジェクトが完了したら、最終的なtclファイルに保存する必要があります。



画像



タールスプーンについて



すべてがユーティリティを取得して実行しているように見えます。 しかし、スプーン(実際にはスプーン2本)なしではタールは不可能です。 最初のスプーンは、xScrollCommandとyScrollComandの形成に関連しています。ウィジェット(この場合はテキストウィジェット)のコマンド、つまり:



text .fr1.fr2_list -background #ffffff \ -yscrollcommand [list .fr1.ysc set] -xscrollcommand [list .fr1.scx set]
      
      





彼らは最終的なファイルに入ることを望んでいません。 その結果、ペンで処方する必要がありました。 さて、軟膏の2番目のハエは古典的です。 デザイナーtkBuilder_for_tcl8.4はロシア語の文字を使用することを拒否します(多分私は何を見落としていないでしょう)。 これはデザイナーにのみ適用され、家としてのロシア人がネイティブであるTcl / Tkには適用されないことを強調します。 ここでも、ペンで作業する必要がありました。



 #!/bin/sh # the next line restarts using wish \ exec wish8.5 "$0" ${1+"$@"} wm title . "GUI P11CONF" global p11conf global libpkcs11 set res "" set libpkcs11 "" set p11conf "/usr/local/bin64/p11conf" . configure -background #18f1d7 frame .fr1 -background #18f1d7 grid .fr1 -column 0 -row 0 button .fr1.b1 -command {InitTok . .fr1.fr2_list;} -padx 1 -text "" -width 24 grid .fr1.b1 -column 0 -row 0 button .fr1.b2 -command {ChangeUserPin . .fr1.fr2_list; } -padx 1 -text " USER PIN" -width 24 grid .fr1.b2 -column 0 -row 1 button .fr1.b6_3 -command {ChangeSOPin . .fr1.fr2_list "SO"; } -padx 1 -text " SO PIN" -width 24 grid .fr1.b6_3 -column 0 -row 2 button .fr1.b7 -command {InfoObj . .fr1.fr2_list "Obj"; } -padx 1 -text " " -width 24 grid .fr1.b7 -column 0 -row 3 button .fr1.b8 -command {InfoObj . .fr1.fr2_list "Clear";} -padx 1 -text "  " -width 24 grid .fr1.b8 -column 0 -row 4 button .fr1.b9_6 -command {InfoToken . .fr1.fr2_list; } -padx 1 -text "  " -width 24 grid .fr1.b9_6 -column 0 -row 5 button .fr1.b0 -command {InfoMech . .fr1.fr2_list;} -padx 1 -text " " -width 24 grid .fr1.b0 -column 0 -row 6 button .fr1.b3_8 -command {ChangeSOPin . .fr1.fr2_list "Deblock"; } -padx 1 -text " USER PIN" -width 24 grid .fr1.b3_8 -column 0 -row 7 button .fr1.b4_9 -command {InfoDump . .fr1.fr2_list; } -padx 1 -text "DUMP  " -width 24 grid .fr1.b4_9 -column 0 -row 8 button .fr1.b5_10 -command {exit} -text "" -width 10
      
      





その結果、GUITKP11Conf.tclユーティリティを介してp11confコマンドラインユーティリティのGUIサポートを取得しました。



 bash-4.3$ ./GUITKP11Conf.tcl
      
      





画像

LIBLS11CLOUDクラウドトークンを含むPKCS#11トークンを安全に操作できるようになりました。たとえば、どのオブジェクトが格納されているかを確認できます。



画像

GUIP11CONF.tkbプロジェクトファイルとGUIP11CONF.tclユーティリティは、ここからダウンロードできます。 さまざまなプラットフォーム用のp11confユーティリティは、ここからダウンロードできます。 少し発言。 GUIP11CONF.tclユーティリティには、p11confユーティリティのパスが含まれています(上記を参照)。



 global p11conf … set p11conf "/usr/local/bin64/p11conf"
      
      





ほとんどの場合、構成に基づいてp11confユーティリティへのパスを調整する必要があります。



威勢のいいトラブル開始



結論として、食欲は食事に伴うものであり、 opensslやNSS(Network Security Services)ユーティリティなどのコマンドラインユーティリティ用に同様のグラフィカルシェルを作成したいという要望が既にあることに注意してください。 彼らが言うように、威勢のいいトラブルが始まりました。



All Articles