Skip to content

Latest commit

 

History

History
158 lines (122 loc) · 9.99 KB

cat_tmplview.md

File metadata and controls

158 lines (122 loc) · 9.99 KB

cat_tmplviewプログラム

ユーザの権限に合わせて、テキストコンテンツを出し分けるためのWebアプリです。
指定されたディレクトリに置かれたテンプレートファイル群をURLのパス部分に合わせて選択して、動的なコンテンツに変換します。さらに、MIME typeが、text/markdownのファイルの場合は、MarkdownからHTMLの変換処理を行います。

プロキシからアカウント名をHTTPヘッダーで渡されることを前提としていますので、認証処理はフロントのプロキシで実装してください。

エラー処理

エラー時は、プロセスが異常ステータスで終了します。

処理

コマンドラインは、以下の通りです。

cats_tmpview [-d <url_path>] 設定ファイル名

自前ではdaemon化等のバックグラウンド実行の機能は提供しません。
systemd等のプロセス管理のシステムから起動してください。

-dオプションでURL pathを渡すと、HTTP通信は行なわなくなり、本来HTTPでアクセスしたときに作成するHTMLを標準出力に出力します。 ただし、この処理ではユーザー名を``(空文字)に設定して動作します。 ユーザの権限に合わせて、コンテンツを出し分ける機能は動作しなくなりますので、注意が必要です。

設定ファイル書式

設定ファイルは、TOMLフォーマットで、以下がサンプルです。

socket_type = "tcp"
socket_path = "127.0.0.1:9001"
cache_control = "max-age=30, must-revalidate, private"

[authz]
user_map_config = "/xxx/etc/usermap_config.conf"
user_map = "/xxx/etc/usermap.conf"

[tmpl]
document_root = "/xxx/var/www_tmpl"
tmpl_paths = [
        "/xxx/lib/tmpl/*.tmpl",
        "/xxx/lib/app_tmpl/mdview.tmpl",
        "/xxx/lib/app_tmpl/cat_ui.tmpl",
]
icon_path = "/xxx/lib/icon"
md_tmpl_name = "mdview.tmpl"

index_name = "README.md"

mime_ext_table = "xxx/etc/mime_extension_table.conf"
markdown_ext = ["md", "markdown"]
markdown_config  = "/xxx/etc/markdown.conf"
theme_style = "radio"
location_navi = "dirs"

directory_view_mode = "auto"
directory_view_roots = [
        "/xxx/var/www",
        "/xxx/var/www_md",
        "/xxx/var/www_tmpl",
]
directory_view_hidden = [
        '^\.',
]
directory_view_path_hidden = [
        '^/(css|font|js|lib)/',
]

cat_ui_config_path = "/xxx/var/api"
cat_ui_config_ext = "ui"
cat_ui_tmpl_name = "cat_ui.tmpl"

設定ファイルの各パラメータの意味は以下のとおりです。

ルート要素

パラメータ名 意味
socket_type tcp(TCPソケット)とunix(Unixドメインソケット)が指定できます。
socket_path tcpの場合はIPアドレスとポート番号、unixの場合はソケットファイルのファイルパスを指定します。
cache_control HTTPのCache-Controlヘッダーに設定する値です。空文字(``)の場合はCache-Controlヘッダーを設定しません。ユーザでの出し分けを行なっている場合は、`Cache-Control`ヘッダーの適切な設定が必要になります。ご注意ください。
url_top_path プロキシ元のURLパスを指定します。省略時は/パスにプロキシしているとして処理します。
url_lib_path JavaScript、CSS、フォントファイルなどの外部ファイルディレクトリ(/css/font/js/lib)が置かれているパスを指定します。省略時は/パスに置かれているとして処理します。

[authz]の要素

パラメータ名 意味
user_map_config user_mapで使用する、ユーザ名とグループ名の扱いを指定するファイルです。ファイルの書式はuser_mapの説明を参照してください。
user_map ユーザ名とグループ名のマッピングファイルです。ファイルの書式はuser_mapの説明を参照してください。
authn_user_header 利用者のユーザ名が渡されるHTTPヘッダーを指定します。省略可能で、省略時の値はX-Forwarded-Userです。

[tmpl]の要素

パラメータ名 意味
document_root 表示するソースデータが置かれているトップディレクトリです。
index_name ディレクトリの場合に、代わりに使用するMarkdownファイル名です。省略可能で、省略時の値はREADME.mdです。
tmpl_paths 起動時に読み込みテンプレートファイルのリストです。
icon_path svg_iconテンプレート関数で生成するSVGアイコンのデータ置き場です。
md_tmpl_name Markdown MarkdownファイルをHTMLに変換した後で利用するテンプレート名です。このテンプレート名でtmpl_pathsでロードされたテンプレート中からテンプレートを選択するために利用されます。Markdownファイル以外(HTMLファイルなど)では、利用されません。未指定時はMarkdownファイルをテキストファイルとして処理するようになります。
mime_ext_table 拡張子とMIMEタイプ対応表のファイル名です。指定された内容を設定に追加します。主にシステム設定の情報が不足してる場合や、間違っている場合に利用します、詳細はMIMEタイプ対応表の説明を参照してください。
markdown_ext Markdownファイルの拡張子リストです。システムの指定より優先されます。省略可能で、省略時の値は["md", "markdown"]です。
markdown_config Markdownファイルの書式の指定です。詳細は Markdown書式設定ファイルの説明を参照してください。
theme_style テーマの切り替え方法の指定です。radioを指定するとラジオボタンで選択します。osを指定するとOSの設定に従います。デフォルトはradioです。
location_navi ページ位置のナビ表示の指定です。dirsを指定するとURLパス階層のナビゲーションを表示します。noneを指定するとナビ表示を無効にします。
cat_ui_config_path cat_uiテンプレート関数から利用される、UI設定ファイル群を置くトップディレクトリです。UI設定ファイルについては、別途説明します。
cat_ui_config_ext UI設定ファイルの拡張子です。UI設定ファイルについては、別途説明します。
cat_ui_tmpl_name cat_uiテンプレート関数に利用されます。このテンプレート名のテンプレートを使ってCat UIの検索フォームが生成されます。ソースコードのcat_ui.tmplファイルをコピーして設置し、share_tmpl_pathsでファイルの置き場所を指定してください。
text_view_mode テキストファイルを表示方法をしていします。そのまま表示するrawと、Markdown同様にHTMLに加工するhtmlが選べます。省略時の値はhtmlです。

directory_view_modedirectory_view_rootsdirectory_view_hiddendirectory_view_path_hiddenについては、ディレクトリ・ビューの詳細を参照してください。

UI設定ファイル(cat_uiテンプレート関数で利用)

cat_uiテンプレート関数の引数がUI名として扱われます。
以下の結合をした文字列のパスにあるファイルが、UI設定ファイルとして使われます。

cat_ui_config_path + UI名 + "." +cat_ui_config_ext

以下は、UI設定ファイルのサンプルです。

url = "/m_api/csv?i={i}&n={n}"

[[var]]
id = "n"
label = "出力数"
comment = "出力数(最大)"

[[var]]
id = "i"
label = "除外"
comment = "除外(カンマ区切り)"

UI設定ファイルの各パラメータの意味は以下のとおりです。

パラメータ名 意味
url UIの実行で呼び出されるAPIのURLを指定します。{パラメータ名}という書式で、入力内容を埋め込んでからAPIを呼び出します。
var 生成する入力項目のリストを指定します。
var.id 入力項目のパラメータ名を指定します。
var.label var.idで指定したパラメータ名に対応するUI上のラベルを指定します。
var.comment 入力パラメータ名の補足コメントを指定します。省略可能です。

テンプレートファイルフォーマット

go言語のtext/tmplateのフォーマットです。 読み取ったテキストファイルを変換する際には、以下のテンプレート関数が追加されています。

テンプレート関数 意味
svg_icon アイコン名 指定されたアイコン名で、SVGアイコンのデータを生成します。HTMLファイル以外では使えません。
in_group グループ名 user_mapパラメータの情報に、利用者のアカウントが指定されたグループに属している場合にtrueを返します。それ以外はfalseを返します。
in_user user_mapパラメータの情報に、利用者のアカウントが存在するときはtrueを返します。それ以外はfalseを返します。user_mapパラメータで指定された
cat_ui UI名 UI名に対応したUI設定ファイルを使って、WebUIを生成します。
cat_ui.jsのJavaScriptファイルが読み込まれることで、UIが実行可能な状態になります。
cat_ui_tmpl_name および share_tmpl_pathsで指定したテンプレートが、検索フォームの生成に使われます。ソースコードのcat_ui.tmplファイルをコピーして適切に設置してください。