Skip to content

monou-jp/SafeExec-OSS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SafeExec - コマンド実行ツール

SafeExecは、Webブラウザ経由でサーバー上の特定のコマンドを安全に実行するためのシンプルなツールです。

特徴

  • 許可されたコマンドのみを実行可能な制限付きインターフェース
  • 環境情報の閲覧機能
  • シンプルなパスワード認証
  • レスポンシブなWebデザイン(Bootstrap 5 & Icons)
  • 外部設定ファイル(config.json)による管理
  • 安全なロギング機能(エラー発生時も動作継続)
  • コマンド実行結果のコピー機能
  • 実行中のプログレス表示

使い方

インストール

  1. Python 3.7以降が必要です。
  2. 依存関係(Bottle, Jinja2)をインストールします。
    pip install bottle jinja2

設定

config.json を編集することで、以下の設定を変更できます:

  • PASSWORD: ログインパスワード
  • ALLOWED_COMMANDS: 実行を許可するコマンドのリスト
  • CGI_MODE: CGIモードの有効/無効
  • LOG_FILE: ログファイルの保存先

実行方法

アプリケーションを起動します:

python index.py

起動後、ブラウザで http://localhost:8082 にアクセスしてください。 デフォルトのパスワードは adminpass です。

CGIでの実行方法

  1. config.jsonCGI_MODEtrue に設定します。
  2. CGIサーバー(例:Apache)で index.py を実行します。

テスト方法

標準的なテスト構成として、tests/ ディレクトリにテストファイルを配置しています。

テストの実行

全てのテストを実行するには、以下のコマンドを使用します:

python -m unittest tests/test_suite.py

または、全てのテストを自動検出して実行します:

python -m unittest discover tests

個別テストの実行

特定の機能(例:出力表示機能)を確認する場合は、個別のスクリプトを実行できます:

python tests/test_output.py

技術的な詳細

  • バックエンド: Bottle (Python 用マイクロフレームワーク)
  • テンプレート: Jinja2
  • フロントエンド: Bootstrap 5
  • 出力処理: subprocess.run を使用し、OSの標準エンコーディングで出力をキャプチャします。エンコーディングエラーを回避するため errors='replace' を使用しています。出力が空の場合はユーザーにその旨を通知する機能が備わっています。

著作権・ライセンス

このプロジェクトの著作元は 門王 (https://monou.jp) です。

このプロジェクトは GNU Affero General Public License v3.0 (AGPL-3.0) の下で公開されています。

変更履歴

バージョン 1.2.1

  • エンコーディング問題の修正: Windows環境などでコマンド出力にマルチバイト文字が含まれる場合に UnicodeDecodeError が発生する問題を修正しました。encoding='utf-8' の指定を解除し、代わりに errors='replace' を採用することで、環境に合わせた柔軟なデコードが可能になりました。

バージョン 1.2.0

  • 設定の外部化: パスワードや許可コマンドを config.json で管理できるように変更しました。
  • ロギングの再実装: Python標準の logging モジュールを使用し、ファイル書き込み失敗時も動作を継続する堅牢なログ機能を実装しました。
  • UI/UXの刷新: Bootstrap Iconsの導入、コピー機能の追加、実行中のプログレス表示(スピナー)などを実装し、使い勝手を向上させました。

バージョン 1.1.0

  • プロジェクト構成の整理: テストファイルを tests/ ディレクトリに移動しました。
  • ドキュメントの整理: 不要な記録ファイルを削除し、情報を README.md に集約しました。

バージョン 1.0.1

  • ログ機能の削除: エラー多発のため、コマンド実行ログ機能を完全に削除しました。
  • 出力表示の改善: コマンド実行結果が表示されない問題を修正し、UTF-8対応および出力がない場合のメッセージ追加を行いました。

バージョン 1.0.0

  • 初回リリース

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages