tkCGIApplication プログラム仕様

tkCGIApplicationモジュール

このモジュールは、PythonでCGIアプリケーションを構築するためのフレームワークを提供します。 ルーティング、テンプレートレンダリング、エラーハンドリング、セキュリティ設定、メール送信、 外部APIリクエストなどの機能を含んでいます。

詳細説明: CGI環境でのウェブアプリケーション開発を簡素化し、リクエストの解析からレスポンスの生成までを 一貫してサポートします。GET/POSTパラメータの処理、ファイルアップロード、セキュリティ対策、 ロギング、アカウント認証機能などを備え、堅牢なアプリケーション開発を支援します。

tkCGIApplication.py Technical Documentation

tklib.tkcgi.tkCGIApplication.handle_exception(exc_type, exc_value, exc_tb)[ソース]

捕捉された例外をHTML形式でクライアントに出力します。

詳細説明: 標準エラー出力にトレースバック情報をHTMLの`<pre>`タグで囲んで出力し、 Webブラウザで読みやすい形式でエラーを表示します。

パラメータ:
  • exc_type -- 例外の型。

  • exc_value -- 例外インスタンス。

  • exc_tb -- トレースバックオブジェクト。

戻り値:

なし

class tklib.tkcgi.tkCGIApplication.tkCGIApplication(import_name, static_folder='static', static_url_path='/static', template_folder='templates', error_handler=True)[ソース]

ベースクラス: object

CGIアプリケーションを構築するためのフレームワーククラスです。

詳細説明: このクラスは、CGI環境でのWebアプリケーション開発を簡素化するために設計されています。 リクエストの解析(GET/POSTパラメータ、PATH_INFO)、HTML/JSON出力の管理、 ルーティング、テンプレートレンダリング、エラーハンドリング、ロギング、 アカウント認証、外部HTTPリクエストの送信、メール通知などの機能を提供します。

call_route_function(action, query, *args, **kwargs)[ソース]

指定されたアクション名に対応するルーティング関数を呼び出します。

詳細説明: `self.routes`辞書から`action`キーに対応する関数を探し、存在すればそれを実行します。 アクションが登録されていない場合は、警告をログに記録し、未対応アクションを示す辞書を返します。

パラメータ:
  • action -- str, 呼び出す関数のキーとなるアクション名。

  • query -- dict, リクエストからパースされたクエリパラメータの辞書。

  • args -- tuple, 関数に渡す位置引数。

  • kwargs -- dict, 関数に渡すキーワード引数。

戻り値:

any, ルーティング関数の戻り値、または未対応アクションを示す辞書。

configure(config_path=None, log_path=None, key_info_path=None, data_folder=None, account_path=None, config={}, security_level=5)[ソース]

アプリケーションの設定をロードし、初期化します。

詳細説明: 設定ファイル、ログパス、APIキー情報、データフォルダ、アカウント情報などのパスを設定し、 これらの情報を読み込みます。また、指定されたセキュリティレベルに基づいて コンテンツセキュリティポリシーやX-Frame-Optionsを設定します。

パラメータ:
  • config_path -- str, アプリケーション設定ファイルへのパス。デフォルトはNone。

  • log_path -- str, ロギングを行うファイルのパス。デフォルトはNone。

  • key_info_path -- str, APIキーなどの機密情報ファイルへのパス。デフォルトはNone。

  • data_folder -- str, アプリケーションがデータを保存するためのフォルダパス。存在しない場合は作成されます。デフォルトはNone。

  • account_path -- str, アカウント情報が記述されたファイルへのパス(YAML形式を想定)。デフォルトはNone。

  • config -- dict, アプリケーションに追加する設定項目を含む辞書。デフォルトは空の辞書。

  • security_level -- int, セキュリティレベル(1から5)。コンテンツセキュリティポリシーなどの設定に影響します。デフォルトは5。

戻り値:

なし

delete(url, params=None, headers=None)[ソース]

指定されたURLに対してHTTP DELETEリクエストを送信します。

パラメータ:
  • url -- str, リクエスト先のURL。

  • params -- dict or None, クエリパラメータとして追加する辞書。デフォルトはNone。

  • headers -- dict or None, リクエストヘッダーとして追加する辞書。デフォルトはNone。

戻り値:

requests.Response, HTTPレスポンスオブジェクト。

desanitize(sanitized_input)[ソース]

サニタイズされた入力を元の形式に戻す関数。HTMLエスケープを解除します。

パラメータ:

sanitized_input -- str, サニタイズされた文字列。

戻り値:

str, 元の形式の文字列。

download(file_path)[ソース]

指定されたファイルをクライアントにダウンロードさせます。

詳細説明: ファイルが存在しない場合は404 Not Foundエラーを返します。 存在する場合は、Content-Type: application/octet-stream ヘッダーと Content-Disposition: attachment ヘッダーを設定してファイルをバイナリで出力します。

パラメータ:

file_path -- str, ダウンロードさせるファイルのフルパス。

戻り値:

なし (HTTPレスポンスを直接出力し、プロセスを終了)

email(inf, server_info)[ソース]

デコレートされた関数が呼び出された後にメールを送信するデコレータです。

詳細説明: デコレートされた関数が実行された後、`self.mail_params`と`server_info`を使用して `send_mail`メソッドを呼び出します。これにより、関数の実行結果や特定のイベントに応じて 自動的に通知メールを送信できます。

パラメータ:
  • inf -- dict, メール送信パラメータに追加する情報。

  • server_info -- dict, SMTPサーバー接続情報。

戻り値:

function, メール送信ロジックをラップした関数。

end_html()[ソース]

HTMLの終了タグ(</body>`と`</html>)を出力します。

詳細説明: `init_html`でHTML出力が初期化されている場合にのみ、これらのタグを出力します。 出力形式が"json"の場合は何もしません。

戻り値:

なし

error(*args)[ソース]

指定されたメッセージを赤い太字のHTMLで出力します。

パラメータ:

args -- str, 出力するエラーメッセージ。複数の引数を指定できます。

戻り値:

なし

get(url, params=None, headers=None)[ソース]

指定されたURLに対してHTTP GETリクエストを送信します。

パラメータ:
  • url -- str, リクエスト先のURL。

  • params -- dict or None, クエリパラメータとして追加する辞書。デフォルトはNone。

  • headers -- dict or None, リクエストヘッダーとして追加する辞書。デフォルトはNone。

戻り値:

requests.Response, HTTPレスポンスオブジェクト。

get_account(user, account_list)[ソース]

アカウントリストから指定されたユーザー名に一致するアカウント情報を検索します。

詳細説明: `account_list`内の辞書オブジェクトを繰り返し処理し、'user'キーの値が`user`に一致する 最初のアカウント情報を返します。見つからない場合はNoneを返します。

パラメータ:
  • user -- str, 検索するユーザー名。

  • account_list -- list of dict, アカウント情報を含む辞書のリスト。

戻り値:

dict or None, マッチしたアカウント情報を含む辞書、または見つからない場合はNone。

get_account_list()[ソース]

アカウント情報が記述されたYAMLファイルを読み込み、アカウントリストを取得します。

詳細説明: `self.account_path`に設定されたファイルからYAML形式のアカウント情報を読み込みます。 ファイルが存在しない、または解析エラーが発生した場合は、ロギングを行いNoneを返します。

戻り値:

list of dict or None, 各辞書が単一のアカウント情報を含むリスト、またはエラー発生時はNone。

get_client_inf()[ソース]

クライアントとリクエストに関する情報をCGI環境変数から取得します。

詳細説明: クライアントのIPアドレス、ポート、ユーザーエージェント、ホスト名、 PATH_INFOREQUEST_METHODQUERY_STRINGCONTENT_LENGTH、 および`HTTP_`で始まるすべてのヘッダー情報を辞書として返します。

戻り値:

dict, クライアントとリクエストの詳細情報。

get_method()[ソース]

HTTPリクエストメソッドを取得します。

詳細説明: CGI環境変数`REQUEST_METHOD`からリクエストメソッド(例: 'GET', 'POST')を取得します。 環境変数が設定されていない場合は空文字列を返します。

戻り値:

str, HTTPリクエストメソッド。

get_params()[ソース]

GET、POST、またはコマンドライン引数からパラメータを取得します。

詳細説明: 既にパラメータが取得されている場合はキャッシュされた`self.query`を返します。 そうでない場合、`REQUEST_METHOD`に応じて以下の順でパラメータを解析します。 - POSTリクエスト: `CONTENT_TYPE`が`multipart/form-data`の場合は`tkFormData`を使用。

それ以外の場合は`sys.stdin`からボディを読み込みます。

  • GETリクエスト: `QUERY_STRING`環境変数を使用。

  • CLI実行: `sys.argv`の引数を使用。

取得したパラメータは`parse_query_string`で解析され、`PATH_INFO`からも`action`パラメータが抽出されます。 すべてのパラメータは`self.query`に格納され、返されます。

戻り値:

dict, 取得したパラメータの辞書。

get_path_args()[ソース]

`PATH_INFO`からパス引数のリストを取得します。

詳細説明: `PATH_INFO`の文字列をスラッシュで分割し、空の要素を除外してリストを生成します。 最初の要素には先頭にスラッシュが追加されます。

戻り値:

list of str, パス引数のリスト。

get_path_info()[ソース]

CGI環境変数`PATH_INFO`の値を取得します。

詳細説明: `PATH_INFO`は、CGIスクリプト名に続く追加のパス情報を提供します。

戻り値:

str, `PATH_INFO`の値。

handle_error(code)[ソース]

登録されているエラーハンドラーに従ってエラーを処理します。

詳細説明: 指定された`code`に対応するハンドラーが登録されていればそれを呼び出します。 ハンドラーが見つからない場合は、デフォルトのJSON形式エラーメッセージを出力します。

パラメータ:

code -- int, 発生したエラーのHTTPステータスコード。

戻り値:

any or None, エラーハンドラーの戻り値、またはデフォルトのエラー処理の場合はNone。

init_html(target='html', charset='utf-8', title='title', html_ver='HTML5', force_init=False)[ソース]

HTML/JSONレスポンスの初期ヘッダーとHTML構造の開始を出力します。

詳細説明: target`が"json"の場合はJSON形式のヘッダーを出力し、 それ以外の場合はHTMLのDOCTYPE宣言、`<html>, <head>, `<body>`タグの開始を出力します。 セキュリティポリシーや文字セット、タイトルも設定されます。 既に初期化されている場合は、`force_init`がTrueでない限り再初期化は行われません。

パラメータ:
  • target -- str, 出力形式。"html"または"json"を指定します。デフォルトは"html"。

  • charset -- str, HTMLページの文字エンコーディング。デフォルトは"utf-8"。

  • title -- str, HTMLページの`<title>`タグの内容。デフォルトは"title"。

  • html_ver -- str, HTMLのバージョン。現在"HTML5"のみが対応しています。デフォルトは"HTML5"。

  • force_init -- bool, Trueの場合、既に初期化されていても強制的に再初期化を行います。デフォルトはFalse。

戻り値:

なし

is_allowed_path(path, allowed_dirs, file_masks=[], rejected_file_masks=[])[ソース]

指定されたパスが許可されたディレクトリとファイルマスクの条件を満たしているか検証します。

詳細説明: 1. パスが`allowed_dirs`リストに含まれるディレクトリ内に存在するかを確認します。 2. パス内のファイル名が`file_masks`リストのいずれかの正規表現にマッチするかを確認します。 3. パス内のファイル名が`rejected_file_masks`リストのいずれの正規表現にもマッチしないことを確認します。 これらの条件すべてを満たした場合のみ`tkResponse(True)`を返します。

パラメータ:
  • path -- str, 検証するファイルパス。

  • allowed_dirs -- list of str, 許可されたディレクトリパスのリスト。

  • file_masks -- list of str, ファイル名を許可するための正規表現文字列のリスト。デフォルトは空のリスト。

  • rejected_file_masks -- list of str, ファイル名を拒否するための正規表現文字列のリスト。デフォルトは空のリスト。

戻り値:

tkResponse, 許可された場合は`tkResponse(True, ...)`、拒否された場合は`tkResponse(False, message)`。

is_valid_filemask(filemask)[ソース]

ファイルマスクが有効であるかを確認します。

詳細説明: 現時点では常にTrueを返しますが、将来的にファイルマスクの正規表現の妥当性などを検証するロジックを 追加するためのプレースホルダーです。

パラメータ:

filemask -- str, 検証するファイルマスク。

戻り値:

bool, 常にTrue。

is_valid_ip(account, ip)[ソース]

クライアントのIPアドレスが指定されたアカウントで許可されているか検証します。

詳細説明: アカウント情報に含まれる'IPaddress'リスト内の各正規表現パターンに対して、 提供された`ip`がマッチするかを確認します。

パラメータ:
  • account -- dict, アカウント情報を含む辞書。'IPaddress'キーに許可されたIPパターンリストを持つことが期待されます。

  • ip -- str, 検証するクライアントのIPアドレス。

戻り値:

bool, IPアドレスが許可されている場合はTrue、それ以外はFalse。

is_valid_password(account, password)[ソース]

提供されたパスワードが指定されたアカウントのパスワードと一致するか検証します。

パラメータ:
  • account -- dict, アカウント情報を含む辞書。'password'キーに正しいパスワードを持つことが期待されます。

  • password -- str, 検証するパスワード。

戻り値:

bool, パスワードが一致する場合はTrue、それ以外はFalse。

is_valid_root_dir(rootDir)[ソース]

指定されたルートディレクトリが、親ディレクトリへの不正なアクセスを含まないか検証します。

詳細説明: セキュリティ対策として、パスに`.././`が含まれていないかを確認します。

パラメータ:

rootDir -- str, 検証するルートディレクトリパス。

戻り値:

bool, 不正なパス要素が含まれていない場合はTrue、それ以外はFalse。

load_config(config_path)[ソース]

指定されたパスから設定ファイルを読み込みます。

詳細説明: 設定ファイルはINI形式であることを想定し、`read_ini`関数を使用して解析されます。 ファイルが見つからない、またはフォーマットが無効な場合はエラーメッセージを出力します。

パラメータ:

config_path -- str, 設定ファイルへのパス。

戻り値:

dict or None, 設定情報を格納した辞書、またはエラーが発生した場合はNone。

load_key_info(key_info_path)[ソース]

指定されたパスからキー情報ファイルを読み込みます。

詳細説明: キー情報ファイルはINI形式であることを想定し、`read_ini`関数を使用して解析されます。 ファイルが見つからない場合はエラーメッセージを出力します。

パラメータ:

key_info_path -- str, キー情報ファイルへのパス。

戻り値:

dict or None, キー情報を格納した辞書、またはエラーが発生した場合はNone。

logging(func)[ソース]

関数のエントリーとエグジットをログに記録するデコレータです。

詳細説明: デコレートされた関数が呼び出される直前と、その実行が完了した直後に、 関数の名前とともに情報メッセージをログに出力します。

パラメータ:

func -- function, ロギングを適用する関数。

戻り値:

function, ロギング機能を追加したラッパー関数。

parse_query_string(query_string)[ソース]

クエリ文字列を解析し、パラメータの辞書を返します。

詳細説明: `query_string`を`&`で分割し、各パラメータを`=`でキーと値に分けます。 キーと値は`sanitize`メソッドでサニタイズされ、値はURLデコードされます。 キーが空のパラメータは無視されます。

パラメータ:

query_string -- str, 解析するクエリ文字列。

戻り値:

dict, パースされたパラメータを格納した辞書。

post(url, params=None, headers=None, body=None)[ソース]

指定されたURLに対してHTTP POSTリクエストを送信します。

詳細説明: `body`が辞書型の場合、JSON文字列に変換され、`Content-Type: application/json`ヘッダーが設定されます。

パラメータ:
  • url -- str, リクエスト先のURL。

  • params -- dict or None, クエリパラメータとして追加する辞書。デフォルトはNone。

  • headers -- dict or None, リクエストヘッダーとして追加する辞書。デフォルトはNone。

  • body -- dict or str or None, リクエストボディとして送信するデータ。辞書の場合はJSONに変換されます。デフォルトはNone。

戻り値:

requests.Response, HTTPレスポンスオブジェクト。

print_custom(*args, **kwargs)[ソース]

CGIアプリケーションのカスタムprint関数として機能し、標準出力をラップします。

詳細説明: HTML出力が初期化されていない場合、自動的に`init_html`を呼び出して初期化します。 その後、与えられた引数をオリジナルの`builtins.print`関数で出力します。 これは、CGI出力の制御を可能にするために`builtins.print`をリダイレクトする際に使用されます。

パラメータ:
  • args -- 任意の型の可変長引数。`print`関数に渡されます。

  • kwargs -- 任意のキーワード引数。`print`関数に渡されます。

戻り値:

なし

print_original(*args, **kwargs)

概要: 標準の`print`関数をオーバーライドし、指定された出力先にメッセージをリダイレクトする。

詳細説明:

builtins.print`をこのメソッドに置き換えることで、すべての`print`出力を複数のファイルやストリームに送信できるようになります。 `console_out=True`がキーワード引数に含まれる場合、元の`print`関数も使用してコンソールにメッセージを出力します。 出力がファイルの場合、カラーエスケープシーケンス(`[...])を自動的に除去する機能もサポートします。

param args:

tuple. `print`関数に渡される位置引数。

param kwargs:

dict. print`関数に渡されるキーワード引数。 `console_out: bool. True`の場合、メッセージは元の`print`関数を使ってコンソールにも出力されます。 `end: str. 出力の最後に付加する文字列。デフォルトは改行(`

`)です。
returns:

None.

put(url, params=None, headers=None, body=None)[ソース]

指定されたURLに対してHTTP PUTリクエストを送信します。

詳細説明: `body`が辞書型の場合、JSON文字列に変換され、`Content-Type: application/json`ヘッダーが設定されます。

パラメータ:
  • url -- str, リクエスト先のURL。

  • params -- dict or None, クエリパラメータとして追加する辞書。デフォルトはNone。

  • headers -- dict or None, リクエストヘッダーとして追加する辞書。デフォルトはNone。

  • body -- dict or str or None, リクエストボディとして送信するデータ。辞書の場合はJSONに変換されます。デフォルトはNone。

戻り値:

requests.Response, HTTPレスポンスオブジェクト。

read_config(path)[ソース]

設定ファイルを読み込みます。

詳細説明: `path`がNoneの場合、スクリプトのフルパスと`{dirname}/{filebody}.cfg`のテンプレートを使用して 設定ファイルのパスを生成します。その後、INI形式のファイルを読み込みます。

パラメータ:

path -- str or None, 設定ファイルへのパス。Noneの場合、デフォルトのパスが生成されます。

戻り値:

dict, 読み込まれた設定情報を含む辞書。

例外:

RuntimeError -- 設定ファイルの読み込みに失敗した場合。

redirect(new_url)[ソース]

クライアントを新しいURLにリダイレクトするJavaScriptコードを出力します。

パラメータ:

new_url -- str, リダイレクト先のURL。

戻り値:

なし

redirect_print(print_func=None)[ソース]

`builtins.print`関数をカスタムの出力関数にリダイレクトします。

詳細説明: `print_func`が指定された場合、その関数にリダイレクトします。 `print_func`がNoneの場合、このインスタンスの`print_custom`メソッドにリダイレクトします。 これにより、アプリケーションの出力制御をCGI環境に合わせてカスタマイズできます。

パラメータ:

print_func -- function or None, `builtins.print`の代わりに呼び出す関数。 Noneの場合、`self.print_custom`が使用されます。

戻り値:

なし

register_error_handler(code, handler)[ソース]

特定のHTTPステータスコードに対するエラーハンドラー関数を登録します。

パラメータ:
  • code -- int, 処理するHTTPステータスコード(例: 404)。

  • handler -- function, 指定されたエラーコードが発生したときに呼び出される関数。

戻り値:

なし

reload()[ソース]

クライアントのWebページを再ロードするJavaScriptコードを出力します。

戻り値:

なし

render_template(template_file, params, extract_body=True)[ソース]

Jinja2テンプレートをレンダリングします。

詳細説明: `template_file`がファイルパスの場合、その内容を読み込みます。 `extract_body`がTrueの場合、HTML文字列から`<body>`タグ内のコンテンツのみを抽出します。 指定された`params`辞書を使用してテンプレートをレンダリングし、結果の文字列を返します。

パラメータ:
  • template_file -- str, テンプレートファイル名(`self.templates_dir`からの相対パス)またはテンプレート文字列そのもの。

  • params -- dict, テンプレートに渡す変数を格納した辞書。

  • extract_body -- bool, Trueの場合、HTMLテンプレートから`<body>`タグの内容のみを抽出してレンダリングします。デフォルトはTrue。

戻り値:

str, レンダリングされたテンプレートの結果文字列。

render_template_from_file(template_name, context)[ソース]

指定されたファイル名のJinja2テンプレートをレンダリングします。

詳細説明: `self.templates_dir`をテンプレートのルートとし、`template_name`で指定された テンプレートファイルを読み込み、`context`辞書を適用してレンダリングします。

パラメータ:
  • template_name -- str, テンプレートディレクトリからの相対パスで指定されたテンプレートファイル名。

  • context -- dict, テンプレートに渡す変数を格納した辞書。

戻り値:

str, レンダリングされたテンプレートの結果文字列。

replace_path(path=None, template=None, ext_dict={})[ソース]

指定されたパスとテンプレートを使用して新しいパス文字列を生成します。

詳細説明: テンプレート文字列内の`{dirname}`、{filebody}`{ext}`などのプレースホルダを、 元のパスの情報や`ext_dict`の内容で置き換えます。テンプレートは文字列または文字列のリストで指定可能です。

パラメータ:
  • path -- str or None, 元となるパス。Noneの場合、`self.script_fullpath`が使用されます。

  • template -- str or list of str or None, 新しいパスを生成するためのテンプレート文字列または文字列のリスト。 Noneの場合、デフォルトで`"{dirname}/{filebody}-out.txt"`が使用されます。

  • ext_dict -- dict, テンプレート内のカスタムプレースホルダを置き換えるための辞書。

戻り値:

str, 生成された新しいパス文字列。

request(method, url, params=None, headers=None, body=None)[ソース]

HTTPリクエストを実行してレスポンスを返します。

詳細説明: 指定されたHTTPメソッド(GET, POST, PUT, DELETE)に応じて、`requests`ライブラリを使用して HTTPリクエストを送信します。GETおよびDELETEリクエストでは`body`は使用できません。 リクエスト中にエラーが発生した場合は、エラーメッセージを含む辞書を返します。

パラメータ:
  • method -- str, HTTPメソッド (GET, POST, PUT, DELETE)。

  • url -- str, リクエスト先URL。

  • params -- dict or None, クエリパラメータとして追加する辞書。

  • headers -- dict or None, ヘッダー情報を含む辞書。

  • body -- str or bytes or dict or None, ボディデータ(POSTやPUTの際に必要に応じて直接指定)。

戻り値:

requests.Response or dict, HTTPレスポンスオブジェクト、またはエラー発生時はエラー情報を含む辞書。

route(action)[ソース]

URLアクションをハンドラー関数にマップするデコレータです。

詳細説明: このデコレータは、指定された`action`文字列と、デコレートされた関数を アプリケーションのルーティングテーブル(self.routes)に登録します。 これにより、特定のアクション名に対応する関数を呼び出すことができます。

パラメータ:

action -- str, この関数が処理するURLアクションのキー。

戻り値:

function, デコレートされた関数をラップするラッパー関数。

run(redirect=True, error_handler=None)[ソース]

CGIアプリケーションのエントリーポイントです。リクエストを処理し、レスポンスを生成します。

詳細説明: `redirect`がTrueの場合、`builtins.print`をカスタムの出力関数にリダイレクトします。 `get_params`を呼び出してリクエストパラメータを解析し、`action`パラメータに基づいて 登録されたルーティング関数を呼び出します。 ルーティング関数が見つからない場合は、エラーメッセージをJSON形式で出力します。 ルーティング関数の戻り値に応じて、HTMLまたはJSON形式で最終的な出力を処理します。

パラメータ:
  • redirect -- bool, Trueの場合、`builtins.print`を`self.print_custom`にリダイレクトします。デフォルトはTrue。

  • error_handler -- function or None, カスタムエラーハンドラー。現在実装は使用されていません。デフォルトはNone。

戻り値:

any or None, ルーティング関数の戻り値、またはエラー発生時はNone。

sanitize(value, allowed_characters=None)[ソース]

ユーザー入力をサニタイズする関数。HTMLタグを無効化し、特定の文字をエスケープします。

詳細説明: 入力が文字列でない場合は空文字列を返します。 `html.escape`を使用してHTML特殊文字をエスケープします。 `allowed_characters`が指定されている場合、それらの文字以外の文字をアンダースコアに置換します。

パラメータ:
  • value -- str, ユーザー入力の文字列。

  • allowed_characters -- str or None, 許可する文字の集合を含む文字列。Noneの場合、文字置換は行われません。

戻り値:

str, サニタイズされた文字列。

send_mail(server_info, params=None, message='no message')[ソース]

メールを送信します。

詳細説明: `server_info`に指定されたSMTPサーバー情報と、`params`に含まれる送信元/送信先、件名、テンプレート情報を使用してメールを送信します。 テンプレートファイルが存在しない場合や、SMTPサーバーへの接続/ログイン、メール送信中にエラーが発生した場合は、 エラーメッセージをログに出力し、Falseを返します。

パラメータ:
  • server_info -- dict, SMTPサーバー接続情報(smtp_server, port, username, password)。

  • params -- dict or None, メール送信パラメータ(template_path, from, to, `subject`など)。Noneの場合、処理を中断します。

  • message -- str, ログメッセージとして使用される追加メッセージ。デフォルトは'no message'。

戻り値:

bool, メール送信が成功した場合はTrue、失敗した場合はFalse。

set_error_handler()[ソース]

システムレベルの例外ハンドラーを`handle_exception`関数に設定します。

詳細説明: これにより、未処理の例外が発生した場合に、指定された`handle_exception`関数が呼び出され、 HTML形式でエラー情報がWebブラウザに表示されるようになります。

戻り値:

なし

set_mail_params(info={})[ソース]

メール送信に使用するパラメータを設定します。

詳細説明: スクリプト名、テンプレートパス、送信元/送信先メールアドレス、件名、名前などの 基本的なメールパラメータを初期化し、`info`辞書で提供される追加情報で更新します。

パラメータ:

info -- dict, メール送信に関する追加情報を含む辞書。デフォルトは空の辞書。

戻り値:

なし

setup_config(security_level=5)[ソース]

指定されたセキュリティレベルに基づいて、アプリケーションのセキュリティ設定を構成します。

詳細説明: `security_level`の値に応じて、iFrameの埋め込み許可(X-Frame-Options)や コンテンツセキュリティポリシー(Content-Security-Policy)ヘッダーを設定します。 レベルが高いほど厳格なポリシーが適用されます。

パラメータ:

security_level -- int, 設定するセキュリティレベル。1から5の範囲。 5: iFrame拒否, CSPを厳格に自己サイトに限定。 3: iFrame拒否, CSPを自己サイトに限定 (スクリプト/スタイル)。 2: iFrame拒否, CSPでインラインスクリプト/スタイルを許可。 1: iFrame許可, CSPでインラインスクリプト/スタイルを許可。 0以下: iFrame許可, CSPなし。

戻り値:

なし

setup_logging()[ソース]

Pythonのloggingモジュールを設定します。

詳細説明: ログファイルが保存されるディレクトリが存在しない場合は作成します。 指定されたログパスに書き込み権限があるかを確認し、`logging.basicConfig`を呼び出して ログレベル(DEBUG)とログフォーマットを設定します。 書き込み権限がない場合は、エラーメッセージを出力し、システムを終了します。

戻り値:

なし

start_logging(log_path)[ソース]

ロギングシステムを開始し、ログファイルをセットアップします。

詳細説明: 指定された`log_path`が存在しない場合、ディレクトリを作成します。 その後、`setup_logging`を呼び出してロギングの設定を行います。 ログファイルのオープンに失敗した場合は、エラーメッセージをHTMLで出力し、アプリケーションを終了します。

パラメータ:

log_path -- str, ログファイルのフルパス。

戻り値:

なし

textarea_copy(text, textarea_id='textarea_id', rows=5, cols=100, copy_button_text='copy')[ソース]

指定されたテキストを含むtextareaと、その内容をクリップボードにコピーするボタンを出力します。

詳細説明: JavaScriptを使用して、ユーザーがボタンをクリックした際にtextareaの内容をコピーする機能を提供します。

パラメータ:
  • text -- str, textareaに表示するテキスト。

  • textarea_id -- str, textarea要素のID。JavaScriptで参照されます。デフォルトは"textarea_id"。

  • rows -- int, textareaの行数。デフォルトは5。

  • cols -- int, textareaの列数。デフォルトは100。

  • copy_button_text -- str, コピーボタンに表示するテキスト。デフォルトは'copy'。

戻り値:

なし

validate_account(func)[ソース]

アカウント認証を行うデコレータです。デコレートされた関数を実行する前に、 ユーザー名、パスワード、IPアドレスの検証を行います。

詳細説明: CGIリクエストのクエリ文字列から`user`と`password`を取得し、 `get_account_list`と`get_account`を使用してアカウント情報をロードします。 `is_valid_password`と`is_valid_ip`を使用してそれぞれパスワードとIPアドレスを検証します。 認証に失敗した場合は、JSON形式のエラーメッセージを出力し、メール通知を送信して関数の実行を中止します。 認証に成功した場合のみ、デコレートされた関数を実行します。

パラメータ:

func -- function, 認証が必要な関数。

戻り値:

function, 認証ロジックをラップした関数。

write(*args)[ソース]

引数が文字列ならそのまま出力し、tkHTMLElementオブジェクトなら`.outerHTML`を出力します。

詳細説明: HTML出力が初期化されていない場合、自動的に`init_html`を呼び出して初期化します。 引数が文字列の場合はそのまま`print_original`で出力し、 `outerHTML`属性を持つオブジェクト(例: `tkHTMLElement`のインスタンス)の場合は、その属性値を出力します。 それ以外の型の場合、エラーメッセージを出力します。

パラメータ:

args -- str or tkHTMLElement, 出力する内容。複数の引数を指定できます。

戻り値:

なし

class tklib.tkcgi.tkCGIApplication.tkResponse(res=False, message='')[ソース]

ベースクラス: object

CGIアプリケーションからのレスポンスを表現するシンプルなクラスです。

詳細説明: 操作の成功/失敗を示すブール値と、付随するメッセージを保持します。 インスタンスはブール値として評価可能です。