スクリプト(コマンド)の実行結果を、APIとして提供するプログラムです。
APIが簡単なスクリプトで実装できることが特徴です。
プロキシからアカウント名をHTTPヘッダーで渡されることを前提としています。認証処理はフロントのプロキシで実装してください。
エラー時は、プロセスが異常ステータスで終了します。
コマンドラインは、以下の通りです。
cats_getexec 設定ファイル名
自前ではdaemon化等のバックグラウンド実行の機能は提供しません。
systemd等のプロセス管理のシステムから起動してください。
設定ファイルは、TOMLフォーマットで、以下がサンプルです。
socket_type = "tcp"
socket_path = "127.0.0.1:9102"
content_type = "text/plain; charset=utf-8"
user_map_config = "/xxx/etc/usermap_config.conf"
user_map = "/xxx/etc/usermap.conf"
exec_right = "*"
command_path = "/xxx/etc/test_script"
command_argv = ["n"]
[default_argv]
n="1"
設定ファイルの各パラメータの意味は以下のとおりです。
パラメータ名 | 意味 |
---|---|
socket_type | tcp(TCPソケット)とunix(Unixドメインソケット)が指定できます。 |
socket_path | tcpの場合はIPアドレスとポート番号、unixの場合はソケットファイルのファイルパスを指定します。 |
context_type | 出力時のContext-Typeヘッダーに設定される値です。実行するコマンドの出力内容に合わせて、設定してください。 |
user_map_config | user_mapで使用する、ユーザ名とグループ名の扱いを指定するファイルです。ファイルの書式はuser_mapの説明を参照してください。 |
user_map | ユーザ名とグループ名のマッピングファイルです。ファイルの書式はuser_mapの説明を参照してください。 |
exec_right | 実行権限の指定です。書式はuser_mapの説明の権限指定の項目を参照してください。 |
command_path | exec_right での判定を通った場合に、指定されたスクリプト(コマンド)を実行します。コマンドに渡される引数については、別途説明します。 |
command_argv | URLのクエリーパラメータ名で、コマンドに渡す値とその順番を指定します。 |
default_argv | URLのクエリーパラメータが指定されない場合のデフォルト値を指定します。 |
authn_user_header | 利用者のユーザ名が渡されるHTTPヘッダーを指定します。省略可能で、省略時は(X-Forwarded-User)になります。 |
第1引数は、HTTPヘッダーで渡されたユーザー名(authn_user_headerで変更可能)が渡われます。
第2引数以降は、command_argvに指定したURL queryのパラメータが渡されます。
command_argvに指定したURL queryが、入力として渡されなかった場合、default_argvに該当の指定があれば、その値を使ってコマンドを実行し、 default_argvに指定がない場合は、HTTPのエラーにします。