cmdbox 0.6.0__tar.gz → 0.6.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cmdbox might be problematic. Click here for more details.
- {cmdbox-0.6.0/cmdbox.egg-info → cmdbox-0.6.0.2}/PKG-INFO +1 -1
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/common.py +14 -11
- cmdbox-0.6.0.2/cmdbox/app/commons/loghandler.py +153 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/agent_base.py +11 -9
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/audit_base.py +16 -4
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_start.py +3 -2
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_agent.py +12 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_do_signout.py +3 -3
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_exec_cmd.py +3 -3
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_signin.py +2 -1
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/options.py +7 -7
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/web.py +6 -9
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/sample/extensions/features.yml +18 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/sample/logconf_sample.yml +14 -1
- {cmdbox-0.6.0/cmdbox/extensions/sample_project/sample → cmdbox-0.6.0.2/cmdbox}/extensions/user_list.yml +2 -1
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/logconf_audit.yml +9 -4
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/logconf_client.yml +9 -4
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/logconf_cmdbox.yml +9 -4
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/logconf_edge.yml +9 -4
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/logconf_gui.yml +8 -3
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/logconf_server.yml +8 -3
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/logconf_web.yml +8 -3
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/version.py +3 -3
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/agent.js +5 -2
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/common.js +1 -1
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/main.js +17 -3
- {cmdbox-0.6.0 → cmdbox-0.6.0.2/cmdbox.egg-info}/PKG-INFO +1 -1
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox.egg-info/SOURCES.txt +0 -1
- cmdbox-0.6.0/cmdbox/app/commons/loghandler.py +0 -104
- cmdbox-0.6.0/cmdbox/logconf_agent.yml +0 -38
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/LICENSE +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/MANIFEST.in +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/README.md +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/__init__.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/__main__.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/__init__.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/app.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/auth/__init__.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/auth/azure_signin.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/auth/azure_signin_saml.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/auth/github_signin.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/auth/google_signin.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/auth/signin.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/auth/signin_saml.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/client.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/commons/convert.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/commons/module.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/commons/redis_client.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/edge.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/edge_tool.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/feature.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_audit_createdb.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_audit_delete.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_audit_search.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_audit_write.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_client_file_copy.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_client_file_download.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_client_file_list.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_client_file_mkdir.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_client_file_move.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_client_file_remove.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_client_file_rmdir.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_client_file_upload.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_client_server_info.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_cmd_list.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_cmd_load.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_edge_config.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_edge_start.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_gui_start.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_gui_stop.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_server_list.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_server_start.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_server_stop.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_apikey_add.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_apikey_del.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_gencert.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_genpass.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_group_add.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_group_del.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_group_edit.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_group_list.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_stop.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_user_add.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_user_del.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_user_edit.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/cli/cmdbox_web_user_list.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_assets.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_audit.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_audit_metrics.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_bbforce_cmd.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_copyright.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_del_cmd.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_del_pipe.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_do_signin.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_exec_pipe.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_filer download.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_filer.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_filer_upload.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_get_cmd_choices.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_get_cmds.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_get_modes.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_get_server_opt.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_gui.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_gui_callback.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_list_cmd.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_list_pipe.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_load_cmd.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_load_pipe.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_raw_cmd.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_raw_pipe.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_result.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_save_cmd.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_save_pipe.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_user_data.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_users.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_usesignout.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_versions_cmdbox.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/features/web/cmdbox_web_versions_used.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/filer.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/app/server.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/config.yml +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/features.yml +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/.vscode/launch.json +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/requirements.txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/sample/__init__.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/sample/__main__.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/sample/app/app.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/sample/app/features/cli/__init__.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_client_time.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_server_time.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/sample/app/features/web/__init__.py +0 -0
- {cmdbox-0.6.0/cmdbox → cmdbox-0.6.0.2/cmdbox/extensions/sample_project/sample}/extensions/user_list.yml +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/sample/version.py +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/sample/web/assets/sample/favicon.ico +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/sample/web/assets/sample/icon.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.Authlib.1.5.2(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.Deprecated.1.2.18(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.Jinja2.3.1.6(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.MarkupSafe.3.0.2(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.PyYAML.6.0.2(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.Pygments.2.19.1(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.SQLAlchemy.2.0.40(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.Sphinx.8.2.3(UNKNOWN).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.aiohappyeyeballs.2.6.1(Python Software Foundation License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.aiohttp.3.11.18(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.aiosignal.1.3.2(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.alabaster.1.0.0(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.annotated-types.0.7.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.anyio.4.9.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.argcomplete.3.6.2(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.async-timeout.5.0.1(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.attrs.25.3.0(UNKNOWN).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.babel.2.17.0(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.backports.tarfile.1.2.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.cachetools.5.5.2(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.certifi.2025.4.26(Mozilla Public License 2.0 (MPL 2.0)).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.cffi.1.17.1(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.charset-normalizer.3.4.2(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.click.8.2.0(UNKNOWN).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.colorama.0.4.6(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.cryptography.44.0.3(Apache Software License; BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.distro.1.9.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.docstring_parser.0.16(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.docutils.0.21.2(BSD License; GNU General Public License (GPL); Public Domain; Python Software Foundation License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.fastapi.0.115.12(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.filelock.3.18.0(The Unlicense (Unlicense)).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.frozenlist.1.6.0(Apache-2.0).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.fsspec.2025.3.2(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.gevent.25.4.2(MIT).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-adk.0.5.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-api-core.2.24.2(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-api-python-client.2.169.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-auth-httplib2.0.2.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-auth.2.40.1(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-cloud-aiplatform.1.92.0(Apache 2.0).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-cloud-bigquery.3.31.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-cloud-core.2.4.3(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-cloud-resource-manager.1.14.2(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-cloud-secret-manager.2.23.3(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-cloud-speech.2.32.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-cloud-storage.2.19.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-cloud-trace.1.16.1(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-crc32c.1.7.1(Apache 2.0).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-genai.1.14.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.google-resumable-media.2.7.2(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.googleapis-common-protos.1.70.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.graphviz.0.20.3(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.greenlet.3.2.2(MIT AND Python-2.0).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.grpc-google-iam-v1.0.14.2(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.grpcio-status.1.71.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.grpcio.1.71.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.gunicorn.23.0.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.h11.0.16.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.httpcore.1.0.9(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.httplib2.0.22.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.httptools.0.6.4(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.httpx-sse.0.4.0(MIT).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.httpx.0.28.1(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.huggingface-hub.0.31.1(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.id.1.5.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.idna.3.10(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.imagesize.1.4.1(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.importlib_metadata.8.6.1(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.itsdangerous.2.2.0(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.jaraco.classes.3.4.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.jaraco.context.6.0.1(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.jaraco.functools.4.1.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.jiter.0.9.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.jsonschema-specifications.2025.4.1(UNKNOWN).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.jsonschema.4.23.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.keyring.25.6.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.litellm.1.69.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.markdown-it-py.3.0.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.mcp.1.8.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.mdurl.0.1.2(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.more-itertools.10.7.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.multidict.6.4.3(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.nh3.0.2.21(MIT).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.numpy.2.2.5(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.openai.1.75.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.opentelemetry-api.1.33.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.opentelemetry-exporter-gcp-trace.1.9.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.opentelemetry-resourcedetector-gcp.1.9.0a0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.opentelemetry-sdk.1.33.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.opentelemetry-semantic-conventions.0.54b0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.packaging.25.0(Apache Software License; BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.pillow.11.2.1(UNKNOWN).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.pip.24.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.plyer.2.1.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.prettytable.3.16.0(UNKNOWN).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.prompt_toolkit.3.0.51(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.propcache.0.3.1(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.proto-plus.1.26.1(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.protobuf.5.29.4(3-Clause BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.psycopg-binary.3.2.7(GNU Lesser General Public License v3 (LGPLv3)).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.psycopg.3.2.7(GNU Lesser General Public License v3 (LGPLv3)).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.pyasn1.0.6.1(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.pyasn1_modules.0.4.2(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.pycparser.2.22(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.pycryptodome.3.22.0(BSD License; Public Domain).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.pydantic-settings.2.9.1(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.pydantic.2.11.4(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.pydantic_core.2.33.2(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.pyparsing.3.2.3(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.pystray.0.19.5(GNU Lesser General Public License v3 (LGPLv3)).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.python-dateutil.2.9.0.post0(Apache Software License; BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.python-dotenv.1.1.0(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.python-multipart.0.0.20(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.pywin32-ctypes.0.2.3(BSD-3-Clause).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.questionary.2.1.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.readme_renderer.44.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.redis.6.0.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.referencing.0.36.2(UNKNOWN).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.regex.2024.11.6(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.requests-toolbelt.1.0.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.requests.2.32.3(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.rfc3986.2.0.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.rich.14.0.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.roman-numerals-py.3.1.0(CC0 1.0 Universal (CC0 1.0) Public Domain Dedication; Zero-Clause BSD (0BSD)).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.rpds-py.0.24.0(MIT).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.rsa.4.9.1(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.setuptools.65.5.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.shapely.2.1.0(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.six.1.17.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.sniffio.1.3.1(Apache Software License; MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.snowballstemmer.3.0.1(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.sphinx-intl.2.3.1(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.sphinx-rtd-theme.3.0.2(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.sphinx-sitemap.2.6.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.sphinx_fontawesome.0.0.6(GNU General Public License v2 (GPLv2)).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.sphinxcontrib-applehelp.2.0.0(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.sphinxcontrib-devhelp.2.0.0(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.sphinxcontrib-htmlhelp.2.1.0(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.sphinxcontrib-jquery.4.1(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.sphinxcontrib-jsmath.1.0.1(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.sphinxcontrib-qthelp.2.0.0(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.sphinxcontrib-serializinghtml.2.0.0(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.sse-starlette.2.3.4(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.starlette.0.46.2(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.tabulate.0.9.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.tiktoken.0.9.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.tokenizers.0.21.1(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.tomli.2.2.1(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.tqdm.4.67.1(MIT License; Mozilla Public License 2.0 (MPL 2.0)).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.twine.6.1.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.typing-inspection.0.4.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.typing_extensions.4.13.2(UNKNOWN).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.tzdata.2025.2(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.tzlocal.5.3.1(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.uritemplate.4.1.1(Apache Software License; BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.urllib3.2.4.0(UNKNOWN).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.uvicorn.0.34.2(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.watchfiles.1.0.5(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.wcwidth.0.2.13(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.websockets.15.0.1(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.wheel.0.45.1(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.wrapt.1.17.2(BSD License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.yarl.1.20.0(Apache Software License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.zipp.3.21.0(MIT License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.zope.event.5.0(Zope Public License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/LICENSE.zope.interface.7.2(Zope Public License).txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/licenses/files.txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/agent.html +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/apexcharts/apexcharts.css +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/apexcharts/apexcharts.min.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/bootstrap/bootstrap.bundle.min.5.3.0.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/bootstrap/bootstrap.min.5.3.0.css +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/audit.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/color_mode.css +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/favicon.ico +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/filer_modal.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/icon.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/list_cmd.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/list_pipe.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/open_capture.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/open_output_json.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/result.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/signin.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/users.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/view_raw.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/cmdbox/view_result.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/encodingjs/LICENSE.txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/encodingjs/encoding.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/encodingjs/encoding.min.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/filer/filer.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/filer/main.css +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/filer/main.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/highlight/default.css +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/highlight/highlight.min.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/highlight/styles/tokyo-night-dark.min.css +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery/jquery.min.3.2.0.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-linedtextarea/README.md +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea-license.txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.css +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.html +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-resizable/jquery-resizable.min.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-ui/AUTHORS.txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-ui/LICENSE.txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-ui/images/ui-icons_444444_256x240.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-ui/images/ui-icons_555555_256x240.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-ui/images/ui-icons_777620_256x240.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-ui/images/ui-icons_777777_256x240.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-ui/images/ui-icons_cc0000_256x240.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-ui/jquery-ui.min.css +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-ui/jquery-ui.min.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-ui/jquery-ui.structure.min.css +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-ui/jquery-ui.theme.min.css +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/jquery-ui/package.json +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/lightbox2/css/lightbox.min.css +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/lightbox2/images/close.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/lightbox2/images/loading.gif +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/lightbox2/images/next.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/lightbox2/images/prev.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/lightbox2/js/lightbox.min.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/split-pane/split-pane.css +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/split-pane/split-pane.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/tree-menu/css/tree-menu.css +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/tree-menu/image/file.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/tree-menu/image/folder-close.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/tree-menu/image/folder-open.png +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets/tree-menu/js/tree-menu.js +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/assets_license_list.txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/audit.html +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/filer.html +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/gui.html +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/result.html +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/signin.html +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/web/users.html +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox.egg-info/dependency_links.txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox.egg-info/entry_points.txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox.egg-info/requires.txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox.egg-info/top_level.txt +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/setup.cfg +0 -0
- {cmdbox-0.6.0 → cmdbox-0.6.0.2}/setup.py +0 -0
|
@@ -93,32 +93,35 @@ def save_yml(yml_path:Path, data:dict) -> None:
|
|
|
93
93
|
with open(yml_path, 'w') as f:
|
|
94
94
|
yaml.dump(data, f, default_flow_style=False, sort_keys=False)
|
|
95
95
|
|
|
96
|
-
def reset_logger(name:str, stderr:bool=False, fmt:str='%(message)s') -> None:
|
|
96
|
+
def reset_logger(name:str, stderr:bool=False, fmt:str='[%(asctime)s] %(levelname)s - %(message)s', datefmt:str='%Y-%m-%d %H:%M:%S') -> None:
|
|
97
97
|
"""
|
|
98
98
|
指定されたロガーのハンドラをクリアし、新しいハンドラを追加します。
|
|
99
99
|
Args:
|
|
100
100
|
name (str): ロガーの名前
|
|
101
101
|
stderr (bool, optional): 標準エラー出力を使用するかどうか. Defaults to False.
|
|
102
|
-
fmt (str, optional): ログフォーマット. Defaults to '%(message)s'.
|
|
102
|
+
fmt (str, optional): ログフォーマット. Defaults to '[%(asctime)s] %(levelname)s - %(message)s'.
|
|
103
|
+
datefmt (str, optional): 日時フォーマット. Defaults to '%Y-%m-%d %H:%M:%S'.
|
|
103
104
|
"""
|
|
104
105
|
logger = logging.getLogger(name)
|
|
105
106
|
logger.handlers.clear()
|
|
106
107
|
logger.propagate = False
|
|
107
|
-
logger.addHandler(create_log_handler(stderr, fmt))
|
|
108
|
+
logger.addHandler(create_log_handler(stderr, fmt, datefmt))
|
|
108
109
|
|
|
109
|
-
def create_log_handler(stderr:bool=False, fmt:str='%(message)s') -> logging.Handler:
|
|
110
|
+
def create_log_handler(stderr:bool=False, fmt:str='[%(asctime)s] %(levelname)s - %(message)s', datefmt:str='%Y-%m-%d %H:%M:%S') -> logging.Handler:
|
|
110
111
|
"""
|
|
111
112
|
ログハンドラを生成します。
|
|
112
113
|
|
|
113
114
|
Args:
|
|
114
115
|
stderr (bool, optional): 標準エラー出力を使用するかどうか. Defaults to False.
|
|
115
|
-
fmt (str, optional): ログフォーマット. Defaults to '%(message)s'.
|
|
116
|
+
fmt (str, optional): ログフォーマット. Defaults to '[%(asctime)s] %(levelname)s - %(message)s'.
|
|
117
|
+
datefmt (str, optional): 日時フォーマット. Defaults to '%Y-%m-%d %H:%M:%S'.
|
|
116
118
|
Returns:
|
|
117
119
|
logging.Handler: ログハンドラ
|
|
118
120
|
"""
|
|
119
|
-
formatter = logging.Formatter(fmt)
|
|
120
|
-
handler = RichHandler(console=Console(stderr=stderr), show_path=False, omit_repeated_times=False,
|
|
121
|
-
|
|
121
|
+
formatter = logging.Formatter(fmt, datefmt)
|
|
122
|
+
#handler = RichHandler(console=Console(stderr=stderr), show_path=False, omit_repeated_times=False,
|
|
123
|
+
# tracebacks_word_wrap=False, log_time_format='[%Y-%m-%d %H:%M]')
|
|
124
|
+
handler = loghandler.ColorfulStreamHandler(sys.stdout if not stderr else sys.stderr)
|
|
122
125
|
handler.setFormatter(formatter)
|
|
123
126
|
return handler
|
|
124
127
|
|
|
@@ -132,7 +135,9 @@ def create_console(stderr:bool=False, file=None) -> Console:
|
|
|
132
135
|
Returns:
|
|
133
136
|
Console: コンソール
|
|
134
137
|
"""
|
|
135
|
-
console = Console(
|
|
138
|
+
console = Console(height=False,
|
|
139
|
+
soft_wrap=False, stderr=stderr, file=file, log_time=True, log_path=False, log_time_format='[%Y-%m-%d %H:%M:%S]')
|
|
140
|
+
#console = Console(soft_wrap=True, stderr=stderr, file=file, log_time=True, log_path=False, log_time_format='[%Y-%m-%d %H:%M:%S]')
|
|
136
141
|
return console
|
|
137
142
|
|
|
138
143
|
def default_logger(debug:bool=False, ver=version, webcall:bool=False) -> logging.Logger:
|
|
@@ -149,8 +154,6 @@ def default_logger(debug:bool=False, ver=version, webcall:bool=False) -> logging
|
|
|
149
154
|
"""
|
|
150
155
|
logger = logging.getLogger(ver.__appid__)
|
|
151
156
|
if not webcall:
|
|
152
|
-
#formatter = logging.Formatter('%(levelname)s[%(asctime)s] - %(message)s')
|
|
153
|
-
#handler = loghandler.ColorfulStreamHandler(sys.stdout)
|
|
154
157
|
handler = create_log_handler()
|
|
155
158
|
handler.setLevel(logging.DEBUG if debug else logging.INFO)
|
|
156
159
|
logger.addHandler(handler)
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
from rich.console import Console
|
|
2
|
+
from rich import highlighter
|
|
3
|
+
from rich.theme import Theme
|
|
4
|
+
import re
|
|
5
|
+
import logging
|
|
6
|
+
import logging.handlers
|
|
7
|
+
|
|
8
|
+
class Colors:
|
|
9
|
+
S = "\033["
|
|
10
|
+
D = ";"
|
|
11
|
+
E = "m"
|
|
12
|
+
# https://pkg.go.dev/github.com/whitedevops/colors
|
|
13
|
+
ResetAll = 0
|
|
14
|
+
|
|
15
|
+
Bold = 1
|
|
16
|
+
Dim = 2
|
|
17
|
+
Underlined = 4
|
|
18
|
+
Blink = 5
|
|
19
|
+
Reverse = 7
|
|
20
|
+
Hidden = 8
|
|
21
|
+
|
|
22
|
+
ResetBold = 21
|
|
23
|
+
ResetDim = 22
|
|
24
|
+
ResetUnderlined = 24
|
|
25
|
+
ResetBlink = 25
|
|
26
|
+
ResetReverse = 27
|
|
27
|
+
ResetHidden = 28
|
|
28
|
+
|
|
29
|
+
Default = 39
|
|
30
|
+
Black = 30
|
|
31
|
+
Red = 31
|
|
32
|
+
Green = 32
|
|
33
|
+
Yellow = 33
|
|
34
|
+
Blue = 34
|
|
35
|
+
Magenta = 35
|
|
36
|
+
Cyan = 36
|
|
37
|
+
LightGray = 37
|
|
38
|
+
DarkGray = 90
|
|
39
|
+
LightRed = 91
|
|
40
|
+
LightGreen = 92
|
|
41
|
+
LightYellow = 93
|
|
42
|
+
LightBlue = 94
|
|
43
|
+
LightMagenta = 95
|
|
44
|
+
LightCyan = 96
|
|
45
|
+
White = 97
|
|
46
|
+
|
|
47
|
+
BackgroundDefault = 49
|
|
48
|
+
BackgroundBlack = 40
|
|
49
|
+
BackgroundRed = 41
|
|
50
|
+
BackgroundGreen = 42
|
|
51
|
+
BackgroundYellow = 43
|
|
52
|
+
BackgroundBlue = 44
|
|
53
|
+
BackgroundMagenta = 45
|
|
54
|
+
BackgroundCyan = 46
|
|
55
|
+
BackgroundLightGray = 47
|
|
56
|
+
BackgroundDarkGray = 100
|
|
57
|
+
BackgroundLightRed = 101
|
|
58
|
+
BackgroundLightGreen = 102
|
|
59
|
+
BackgroundLightYellow = 103
|
|
60
|
+
BackgroundLightBlue = 104
|
|
61
|
+
BackgroundLightMagenta = 105
|
|
62
|
+
BackgroundLightCyan = 106
|
|
63
|
+
BackgroundWhite = 107
|
|
64
|
+
|
|
65
|
+
_colorize_suffix = S + str(ResetAll) + E
|
|
66
|
+
|
|
67
|
+
product_word = re.compile(r"CMDBOX|IINFER|USOUND|GAIAN|GAIC|WITSHAPE", re.IGNORECASE)
|
|
68
|
+
success_word = re.compile(r"SUCCESS|OK|PASSED|DONE|COMPLETE|START|FINISH|OPEN|CONNECTED|ALLOW|EXEC", re.IGNORECASE)
|
|
69
|
+
warning_word = re.compile(r"WARNING|WARN|CAUTION|NOTICE|STOP|DISCONNECTED|DENY", re.IGNORECASE)
|
|
70
|
+
error_word = re.compile(r"ERROR|ALERT|CRITICAL|FATAL|ABORT|FAILED", re.IGNORECASE)
|
|
71
|
+
|
|
72
|
+
def colorize(s:str, *colors:int) -> str:
|
|
73
|
+
return Colors.S + Colors.D.join(map(str, [Colors.ResetAll]+list(colors))) + Colors.E + s + Colors._colorize_suffix
|
|
74
|
+
|
|
75
|
+
def colorize_msg(msg) -> str:
|
|
76
|
+
msg = Colors.success_word.sub(colorize(r"\g<0>", Colors.Green), msg)
|
|
77
|
+
msg = Colors.warning_word.sub(colorize(r"\g<0>", Colors.Yellow), msg)
|
|
78
|
+
msg = Colors.error_word.sub(colorize(r"\g<0>", Colors.Red), msg)
|
|
79
|
+
msg = Colors.product_word.sub(colorize(r"\g<0>", Colors.LightBlue), msg)
|
|
80
|
+
return msg
|
|
81
|
+
|
|
82
|
+
level_mapping = {
|
|
83
|
+
logging.DEBUG: f"{colorize('DEBUG', Colors.Bold, Colors.Cyan)}",
|
|
84
|
+
logging.INFO: f"{colorize('INFO', Colors.Bold, Colors.Green)} ",
|
|
85
|
+
logging.WARNING: f"{colorize('WARN', Colors.Bold, Colors.Yellow)} ",
|
|
86
|
+
logging.ERROR: f"{colorize('ERROR', Colors.Bold, Colors.Red)}",
|
|
87
|
+
logging.CRITICAL:f"{colorize('FATAL', Colors.Bold, Colors.LightGray, Colors.BackgroundRed)}"}
|
|
88
|
+
|
|
89
|
+
level_mapping_nc = {
|
|
90
|
+
logging.DEBUG: f"DEBUG",
|
|
91
|
+
logging.INFO: f"INFO ",
|
|
92
|
+
logging.WARNING: f"WARN ",
|
|
93
|
+
logging.ERROR: f"ERROR",
|
|
94
|
+
logging.CRITICAL:f"FATAL"}
|
|
95
|
+
|
|
96
|
+
theme=Theme({
|
|
97
|
+
"repr.log_debug": "bold cyan",
|
|
98
|
+
"repr.log_info": "bold green",
|
|
99
|
+
"repr.log_warn": "bold Yellow",
|
|
100
|
+
"repr.log_error": "bold red",
|
|
101
|
+
"repr.log_fatal": "bold red reverse",
|
|
102
|
+
"repr.log_product": "dodger_blue2 reverse",
|
|
103
|
+
"repr.log_success": "green",})
|
|
104
|
+
|
|
105
|
+
class LogLevelHighlighter(highlighter.ReprHighlighter):
|
|
106
|
+
def __init__(self):
|
|
107
|
+
#self.highlights = []
|
|
108
|
+
self.highlights.append(r"(?P<log_debug>DEBUG)")
|
|
109
|
+
self.highlights.append(r"(?P<log_info>INFO)")
|
|
110
|
+
self.highlights.append(r"(?P<log_warn>WARN|WARNING|WARN|CAUTION|NOTICE|STOP|DISCONNECTED|DENY)")
|
|
111
|
+
self.highlights.append(r"(?P<log_error>ERROR|ALERT|ABORT|FAILED)")
|
|
112
|
+
self.highlights.append(r"(?P<log_fatal>FATAL|CRITICAL)")
|
|
113
|
+
self.highlights.append(r"(?P<log_product>CMDBOX|IINFER|USOUND|GAIAN|GAIC|WITSHAPE)")
|
|
114
|
+
self.highlights.append(r"(?P<log_success>SUCCESS|OK|PASSED|DONE|COMPLETE|START|FINISH|OPEN|CONNECTED|ALLOW|EXEC)")
|
|
115
|
+
"""
|
|
116
|
+
self.highlights.append(r"(?P<tag_start><)(?P<tag_name>[-\w.:|]*)(?P<tag_contents>[\w\W]*)(?P<tag_end>>)")
|
|
117
|
+
self.highlights.append(r'(?P<attrib_name>[\w_]{1,50})=(?P<attrib_value>"?[\w_]+"?)?')
|
|
118
|
+
self.highlights.append(r"(?P<brace>[][{}()])")
|
|
119
|
+
self.highlights.append(highlighter._combine_regex(
|
|
120
|
+
r"(?P<ipv4>[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})",
|
|
121
|
+
r"(?P<ipv6>([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4})",
|
|
122
|
+
r"(?P<eui64>(?:[0-9A-Fa-f]{1,2}-){7}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{1,2}:){7}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{4}\.){3}[0-9A-Fa-f]{4})",
|
|
123
|
+
r"(?P<eui48>(?:[0-9A-Fa-f]{1,2}-){5}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{1,2}:){5}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})",
|
|
124
|
+
r"(?P<uuid>[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12})",
|
|
125
|
+
r"(?P<call>[\w.]*?)\(",
|
|
126
|
+
r"\b(?P<bool_true>True)\b|\b(?P<bool_false>False)\b|\b(?P<none>None)\b",
|
|
127
|
+
r"(?P<ellipsis>\.\.\.)",
|
|
128
|
+
r"(?P<number_complex>(?<!\w)(?:\-?[0-9]+\.?[0-9]*(?:e[-+]?\d+?)?)(?:[-+](?:[0-9]+\.?[0-9]*(?:e[-+]?\d+)?))?j)",
|
|
129
|
+
r"(?P<number>(?<!\w)\-?[0-9]+\.?[0-9]*(e[-+]?\d+?)?\b|0x[0-9a-fA-F]*)",
|
|
130
|
+
r"(?P<path>\B(/[-\w._+]+)*\/)(?P<filename>[-\w._+]*)?",
|
|
131
|
+
r"(?<![\\\w])(?P<str>b?'''.*?(?<!\\)'''|b?'.*?(?<!\\)'|b?\"\"\".*?(?<!\\)\"\"\"|b?\".*?(?<!\\)\")",
|
|
132
|
+
r"(?P<url>(file|https|http|ws|wss)://[-0-9a-zA-Z$_+!`(),.?/;:&=%#~@]*)",
|
|
133
|
+
))
|
|
134
|
+
"""
|
|
135
|
+
self.highlights = [re.compile(h, re.IGNORECASE) for h in self.highlights]
|
|
136
|
+
|
|
137
|
+
class ColorfulStreamHandler(logging.StreamHandler):
|
|
138
|
+
console = Console(soft_wrap=True, height=True, highlighter=LogLevelHighlighter(), theme=theme)
|
|
139
|
+
|
|
140
|
+
def emit(self, record: logging.LogRecord) -> None:
|
|
141
|
+
#record.levelname = level_mapping[record.levelno]
|
|
142
|
+
#record.asctime = colorize(record.asctime, Colors.Bold)
|
|
143
|
+
#record.msg = colorize_msg(record.msg)
|
|
144
|
+
#super().emit(record)
|
|
145
|
+
record.levelname = level_mapping_nc[record.levelno]
|
|
146
|
+
record.msg = self.format(record)
|
|
147
|
+
self.console.print(record.msg)
|
|
148
|
+
|
|
149
|
+
class TimedRotatingFileHandler(logging.handlers.TimedRotatingFileHandler):
|
|
150
|
+
def emit(self, record: logging.LogRecord) -> None:
|
|
151
|
+
record.levelname = level_mapping_nc[record.levelno]
|
|
152
|
+
super().emit(record)
|
|
153
|
+
|
|
@@ -30,7 +30,8 @@ class AgentBase(feature.ResultEdgeFeature):
|
|
|
30
30
|
dict(opt="agent", type=Options.T_STR, default="no", required=False, multi=False, hide=False, choice=["no", "use"],
|
|
31
31
|
discription_ja="エージェントを使用するかどうかを指定します。",
|
|
32
32
|
discription_en="Specifies whether the agent is used.",
|
|
33
|
-
choice_show=dict(use=["agent_name", "agent_description", "agent_instruction", "agent_session_store", "llmprov"
|
|
33
|
+
choice_show=dict(use=["agent_name", "agent_description", "agent_instruction", "agent_session_store", "llmprov",
|
|
34
|
+
"mcp_listen_port", "mcp_ssl_listen_port"],)),
|
|
34
35
|
dict(opt="agent_name", type=Options.T_STR, default=self.ver.__appid__, required=False, multi=False, hide=False, choice=None,
|
|
35
36
|
discription_ja="エージェント名を指定します。",
|
|
36
37
|
discription_en="Specifies the agent name."),
|
|
@@ -43,26 +44,26 @@ class AgentBase(feature.ResultEdgeFeature):
|
|
|
43
44
|
dict(opt="agent_session_store", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=['memory', 'sqlite', 'postgresql'],
|
|
44
45
|
discription_ja="エージェントのセッションを保存する方法を指定します。",
|
|
45
46
|
discription_en="Specify how the agent's session is to be saved.",
|
|
46
|
-
choice_show=dict(postgresql=["
|
|
47
|
+
choice_show=dict(postgresql=["agent_pg_host", "agent_pg_port", "agent_pg_user", "agent_pg_password", "agent_pg_dbname"]),),
|
|
47
48
|
dict(opt="mcp_listen_port", type=Options.T_INT, default="9081", required=False, multi=False, hide=False, choice=None,
|
|
48
49
|
discription_ja="省略した時は `9081` を使用します。",
|
|
49
50
|
discription_en="If omitted, `9081` is used."),
|
|
50
51
|
dict(opt="mcp_ssl_listen_port", type=Options.T_INT, default="9443", required=False, multi=False, hide=False, choice=None,
|
|
51
52
|
discription_ja="省略した時は `9443` を使用します。",
|
|
52
53
|
discription_en="If omitted, `9443` is used."),
|
|
53
|
-
dict(opt="
|
|
54
|
+
dict(opt="agent_pg_host", type=Options.T_STR, default='localhost', required=False, multi=False, hide=False, choice=None, web="mask",
|
|
54
55
|
discription_ja="postgresqlホストを指定する。",
|
|
55
56
|
discription_en="Specify the postgresql host."),
|
|
56
|
-
dict(opt="
|
|
57
|
+
dict(opt="agent_pg_port", type=Options.T_INT, default=5432, required=False, multi=False, hide=False, choice=None, web="mask",
|
|
57
58
|
discription_ja="postgresqlのポートを指定する。",
|
|
58
59
|
discription_en="Specify the postgresql port."),
|
|
59
|
-
dict(opt="
|
|
60
|
+
dict(opt="agent_pg_user", type=Options.T_STR, default='postgres', required=False, multi=False, hide=False, choice=None, web="mask",
|
|
60
61
|
discription_ja="postgresqlのユーザー名を指定する。",
|
|
61
62
|
discription_en="Specify the postgresql user name."),
|
|
62
|
-
dict(opt="
|
|
63
|
+
dict(opt="agent_pg_password", type=Options.T_STR, default='postgres', required=False, multi=False, hide=False, choice=None, web="mask",
|
|
63
64
|
discription_ja="postgresqlのパスワードを指定する。",
|
|
64
65
|
discription_en="Specify the postgresql password."),
|
|
65
|
-
dict(opt="
|
|
66
|
+
dict(opt="agent_pg_dbname", type=Options.T_STR, default='agent', required=False, multi=False, hide=False, choice=None,
|
|
66
67
|
discription_ja="postgresqlデータベース名を指定します。",
|
|
67
68
|
discription_en="Specify the postgresql database name."),
|
|
68
69
|
dict(opt="llmprov", type=Options.T_STR, default=None, required=False, multi=False, hide=False,
|
|
@@ -306,9 +307,10 @@ class AgentBase(feature.ResultEdgeFeature):
|
|
|
306
307
|
agent = Agent(
|
|
307
308
|
name=args.agent_name,
|
|
308
309
|
model=LiteLlm(
|
|
309
|
-
model=args.llmmodel,
|
|
310
|
-
|
|
310
|
+
model=f"ollama/{args.llmmodel}",
|
|
311
|
+
api_base=args.llmendpoint,
|
|
311
312
|
temperature=args.llmtemperature,
|
|
313
|
+
stream=True
|
|
312
314
|
),
|
|
313
315
|
description=description,
|
|
314
316
|
instruction=instruction,
|
|
@@ -84,12 +84,18 @@ class AuditBase(feature.ResultEdgeFeature):
|
|
|
84
84
|
Any: データベース接続オブジェクト
|
|
85
85
|
"""
|
|
86
86
|
if pg_enabled:
|
|
87
|
+
if logger.level == logging.DEBUG:
|
|
88
|
+
logger.debug(f"Initializing database with pg_enabled={pg_enabled}, pg_host={pg_host}, pg_port={pg_port}, pg_user={pg_user}, pg_dbname={pg_dbname}")
|
|
87
89
|
constr = f"host={pg_host} port={pg_port} user={pg_user} password={pg_password} dbname={pg_dbname} connect_timeout=60"
|
|
88
90
|
conn = psycopg.connect(constr, autocommit=False)
|
|
89
91
|
cursor = conn.cursor()
|
|
90
92
|
try:
|
|
91
93
|
cursor.execute("SELECT count(*) FROM information_schema.tables WHERE table_name='audit'")
|
|
92
|
-
|
|
94
|
+
row = cursor.fetchone()
|
|
95
|
+
if logger.level == logging.DEBUG:
|
|
96
|
+
logger.debug(f"SQL query: SELECT count(*) FROM information_schema.tables WHERE table_name='audit'")
|
|
97
|
+
logger.debug(f"SQL row : {row}")
|
|
98
|
+
if row[0] == 0:
|
|
93
99
|
# テーブルが存在しない場合は作成
|
|
94
100
|
cursor.execute('''
|
|
95
101
|
CREATE TABLE IF NOT EXISTS audit (
|
|
@@ -107,16 +113,22 @@ class AuditBase(feature.ResultEdgeFeature):
|
|
|
107
113
|
)
|
|
108
114
|
''')
|
|
109
115
|
finally:
|
|
116
|
+
conn.commit()
|
|
110
117
|
cursor.close()
|
|
111
|
-
conn.rollback()
|
|
112
118
|
else:
|
|
113
119
|
db_path = data_dir / '.audit' / 'audit.db'
|
|
120
|
+
if logger.level == logging.DEBUG:
|
|
121
|
+
logger.debug(f"Initializing database with db_path={db_path}")
|
|
114
122
|
db_path.parent.mkdir(parents=True, exist_ok=True)
|
|
115
123
|
conn = sqlite3.connect(db_path)
|
|
116
124
|
cursor = conn.cursor()
|
|
117
125
|
try:
|
|
118
|
-
cursor.execute(
|
|
119
|
-
|
|
126
|
+
cursor.execute("SELECT COUNT(*) FROM sqlite_master WHERE TYPE='table' AND NAME='audit'")
|
|
127
|
+
row = cursor.fetchone()
|
|
128
|
+
if logger.level == logging.DEBUG:
|
|
129
|
+
logger.debug(f"SQL query: SELECT COUNT(*) FROM sqlite_master WHERE TYPE='table' AND NAME='audit'")
|
|
130
|
+
logger.debug(f"SQL row : {row}")
|
|
131
|
+
if row[0] == 0:
|
|
120
132
|
# テーブルが存在しない場合は作成
|
|
121
133
|
cursor.execute('''
|
|
122
134
|
CREATE TABLE IF NOT EXISTS audit (
|
|
@@ -167,11 +167,12 @@ class WebStart(feature.UnsupportEdgeFeature, agent_base.AgentBase):
|
|
|
167
167
|
assets=args.assets, signin_html=args.signin_html, signin_file=args.signin_file, gui_mode=args.gui_mode)
|
|
168
168
|
agent_runner = None
|
|
169
169
|
mcp = None
|
|
170
|
+
logger.info(f"Agent={args.agent}")
|
|
170
171
|
if args.agent=='use':
|
|
171
172
|
if args.agent_session_store == 'sqlite':
|
|
172
|
-
args.agent_session_dburl = "sqlite
|
|
173
|
+
args.agent_session_dburl = "sqlite://" + pathname2url(str(w.agent_path / 'session.db'))
|
|
173
174
|
elif args.agent_session_store == 'postgresql':
|
|
174
|
-
args.agent_session_dburl = f"postgresql+psycopg://{args.
|
|
175
|
+
args.agent_session_dburl = f"postgresql+psycopg://{args.agent_pg_user}:{args.agent_pg_password}@{args.agent_pg_host}:{args.agent_pg_port}/{args.agent_pg_dbname}"
|
|
175
176
|
else:
|
|
176
177
|
args.agent_session_dburl = None
|
|
177
178
|
agent_runner, mcp = self.init_agent_runner(logger, args)
|
|
@@ -13,6 +13,7 @@ from typing import Dict, Any, Tuple, List, Union
|
|
|
13
13
|
import locale
|
|
14
14
|
import logging
|
|
15
15
|
import json
|
|
16
|
+
import re
|
|
16
17
|
import time
|
|
17
18
|
import traceback
|
|
18
19
|
|
|
@@ -160,6 +161,15 @@ class Agent(feature.WebFeature):
|
|
|
160
161
|
agent_session = await web.create_agent_session(web.agent_runner.session_service, user_id, session_id=session_id)
|
|
161
162
|
startmsg = "こんにちは!何かお手伝いできることはありますか?" if is_japan else "Hello! Is there anything I can help you with?"
|
|
162
163
|
yield json.dumps(dict(message=startmsg), default=common.default_json_enc)
|
|
164
|
+
def _replace_match(match_obj):
|
|
165
|
+
json_str = match_obj.group(0)
|
|
166
|
+
try:
|
|
167
|
+
data = json.loads(json_str) # ユニコード文字列をエンコード
|
|
168
|
+
return json.dumps(data, ensure_ascii=False, default=common.default_json_enc)
|
|
169
|
+
except json.JSONDecodeError:
|
|
170
|
+
return json_str
|
|
171
|
+
json_pattern = re.compile(r'\{.*?\}')
|
|
172
|
+
|
|
163
173
|
from google.genai import types
|
|
164
174
|
while True:
|
|
165
175
|
outputs = None
|
|
@@ -205,6 +215,8 @@ class Agent(feature.WebFeature):
|
|
|
205
215
|
elif event.actions and event.actions.escalate:
|
|
206
216
|
msg = f"Agent escalated: {event.error_message or 'No specific message.'}"
|
|
207
217
|
if msg:
|
|
218
|
+
msg = json_pattern.sub(_replace_match, msg)
|
|
219
|
+
|
|
208
220
|
outputs['message'] = msg
|
|
209
221
|
web.options.audit_exec(sock, web, body=dict(agent_session=agent_session.id, result=msg))
|
|
210
222
|
yield json.dumps(outputs, default=common.default_json_enc)
|
|
@@ -13,9 +13,9 @@ class DoSignout(feature.WebFeature):
|
|
|
13
13
|
web (Web): Webオブジェクト
|
|
14
14
|
app (FastAPI): FastAPIオブジェクト
|
|
15
15
|
"""
|
|
16
|
-
@app.
|
|
17
|
-
@app.
|
|
18
|
-
async def do_signout(next, req:Request, res:Response):
|
|
16
|
+
@app.api_route('/dosignout/{next}', methods=['GET', 'POST'], response_class=HTMLResponse)
|
|
17
|
+
@app.api_route('/{full_path:path}/dosignout/{next}/', methods=['GET', 'POST'], response_class=HTMLResponse)
|
|
18
|
+
async def do_signout(next, req:Request, res:Response, full_path:str=None):
|
|
19
19
|
if 'signin' in req.session:
|
|
20
20
|
web.options.audit_exec(req, res, web, body=dict(msg='Signout.'), audit_type='auth')
|
|
21
21
|
for key in list(req.session.keys()).copy():
|
|
@@ -182,7 +182,7 @@ class ExecCmd(cmdbox_web_load_cmd.LoadCmd):
|
|
|
182
182
|
console = common.create_console(file=old_stdout)
|
|
183
183
|
|
|
184
184
|
try:
|
|
185
|
-
console.log(f'EXEC
|
|
185
|
+
console.log(f'EXEC - {opt_list}\n'[:logsize])
|
|
186
186
|
status, ret_main, obj = cmdbox_app.main(args_list=[common.chopdq(o) for o in opt_list], file_dict=file_dict, webcall=True)
|
|
187
187
|
if isinstance(obj, server.Server):
|
|
188
188
|
cmdbox_app.sv = obj
|
|
@@ -209,11 +209,11 @@ class ExecCmd(cmdbox_web_load_cmd.LoadCmd):
|
|
|
209
209
|
output = [dict(warn=f'The captured stdout was discarded because its size was larger than {capture_maxsize} bytes.')]
|
|
210
210
|
else:
|
|
211
211
|
output = [dict(warn='capture_stdout is off.')]
|
|
212
|
-
|
|
212
|
+
old_stdout.write(f'EXEC OUTPUT => {output}'[:logsize]) # コマンド実行時のアウトプットはカラーリングしない
|
|
213
213
|
except Exception as e:
|
|
214
214
|
web.logger.disabled = False # ログ出力を有効にする
|
|
215
215
|
msg = f'exec_cmd error. {traceback.format_exc()}'
|
|
216
|
-
console.log(f'EXEC
|
|
216
|
+
console.log(f'EXEC - {msg}'[:logsize])
|
|
217
217
|
web.logger.warning(msg)
|
|
218
218
|
output = [dict(warn=f'<pre>{html.escape(traceback.format_exc())}</pre>')]
|
|
219
219
|
sys.stdout = old_stdout
|
|
@@ -24,7 +24,8 @@ class Signin(feature.WebFeature):
|
|
|
24
24
|
web.signin_html_data = f.read()
|
|
25
25
|
|
|
26
26
|
@app.api_route('/signin/{next}', methods=['GET', 'POST'], response_class=HTMLResponse)
|
|
27
|
-
|
|
27
|
+
@app.api_route('/{full_path:path}/signin/{next}', methods=['GET', 'POST'], response_class=HTMLResponse)
|
|
28
|
+
async def _signin(next:str, req:Request, res:Response, full_path:str=None):
|
|
28
29
|
signin.Signin._enable_cors(req, res)
|
|
29
30
|
res.headers['Access-Control-Allow-Origin'] = '*'
|
|
30
31
|
return web.signin_html_data
|
|
@@ -632,6 +632,11 @@ class Options:
|
|
|
632
632
|
if 'enabled' not in yml['audit']:
|
|
633
633
|
raise Exception('features.yml is invalid. (The audit element must have "enabled" specified.)')
|
|
634
634
|
if not yml['audit']['enabled']: return
|
|
635
|
+
# フューチャーのoptions
|
|
636
|
+
if 'options' not in yml['audit']:
|
|
637
|
+
raise Exception('features.yml is invalid. (The audit element must have "options" specified.)')
|
|
638
|
+
self.audit_write_args = yml['audit']['options'].copy()
|
|
639
|
+
self.audit_search_args = yml['audit']['options'].copy()
|
|
635
640
|
# writeフューチャー
|
|
636
641
|
if 'write' not in yml['audit']:
|
|
637
642
|
raise Exception('features.yml is invalid. (The audit element must have "write" specified.)')
|
|
@@ -642,6 +647,8 @@ class Options:
|
|
|
642
647
|
raise Exception('features.yml is invalid. (The audit.write element must have "cmd" specified.)')
|
|
643
648
|
cmd = yml['audit']['write']['cmd']
|
|
644
649
|
self.audit_write:feature.Feature = self.get_cmd_attr(mode, cmd, 'feature')
|
|
650
|
+
self.audit_write_args['mode'] = mode
|
|
651
|
+
self.audit_write_args['cmd'] = cmd
|
|
645
652
|
# searchフューチャー
|
|
646
653
|
if 'search' not in yml['audit']:
|
|
647
654
|
raise Exception('features.yml is invalid. (The audit element must have "search" specified.)')
|
|
@@ -652,13 +659,6 @@ class Options:
|
|
|
652
659
|
raise Exception('features.yml is invalid. (The audit.search element must have "cmd" specified.)')
|
|
653
660
|
cmd = yml['audit']['search']['cmd']
|
|
654
661
|
self.audit_search:feature.Feature = self.get_cmd_attr(mode, cmd, 'feature')
|
|
655
|
-
# フューチャーのoptions
|
|
656
|
-
if 'options' not in yml['audit']:
|
|
657
|
-
raise Exception('features.yml is invalid. (The audit element must have "options" specified.)')
|
|
658
|
-
self.audit_write_args = yml['audit']['options'].copy()
|
|
659
|
-
self.audit_write_args['mode'] = mode
|
|
660
|
-
self.audit_write_args['cmd'] = cmd
|
|
661
|
-
self.audit_search_args = yml['audit']['options'].copy()
|
|
662
662
|
self.audit_search_args['mode'] = mode
|
|
663
663
|
self.audit_search_args['cmd'] = cmd
|
|
664
664
|
self.audit_loaded = True
|
|
@@ -900,19 +900,16 @@ class ThreadedUvicorn:
|
|
|
900
900
|
self.logger = logger
|
|
901
901
|
self.guvicorn_config = guvicorn_config
|
|
902
902
|
self.force_uvicorn = True if platform.system() == "Windows" else force_uvicorn
|
|
903
|
-
|
|
904
|
-
|
|
903
|
+
# loggerの設定
|
|
904
|
+
common.reset_logger("uvicorn")
|
|
905
|
+
common.reset_logger("uvicorn.error")
|
|
906
|
+
common.reset_logger("uvicorn.access")
|
|
907
|
+
#common.reset_logger("gunicorn.error")
|
|
908
|
+
#common.reset_logger("gunicorn.access")
|
|
905
909
|
if self.force_uvicorn:
|
|
906
|
-
# loggerの設定
|
|
907
|
-
common.reset_logger("uvicorn")
|
|
908
|
-
common.reset_logger("uvicorn.error")
|
|
909
|
-
common.reset_logger("uvicorn.access")
|
|
910
910
|
self.server = uvicorn.Server(config)
|
|
911
911
|
self.thread = RaiseThread(daemon=True, target=self.server.run)
|
|
912
912
|
else:
|
|
913
|
-
# loggerの設定
|
|
914
|
-
common.reset_logger("gunicorn.error")
|
|
915
|
-
common.reset_logger("gunicorn.access")
|
|
916
913
|
|
|
917
914
|
from gunicorn.app.wsgiapp import WSGIApplication
|
|
918
915
|
class App(WSGIApplication):
|
{cmdbox-0.6.0 → cmdbox-0.6.0.2}/cmdbox/extensions/sample_project/sample/extensions/features.yml
RENAMED
|
@@ -46,6 +46,24 @@ aliases: # Specify the alias for the specified co
|
|
|
46
46
|
# e.g. /{1}_exec
|
|
47
47
|
move: # Specify whether to move the regular expression group of the source to the target.
|
|
48
48
|
# e.g. true
|
|
49
|
+
agentrule: # Specifies a list of rules that determine which commands the agent can execute.
|
|
50
|
+
policy: deny # Specify the default policy for the rule. The value can be allow or deny.
|
|
51
|
+
rules: # Specify the rules for the commands that the agent can execute according to the group to which the user belongs.
|
|
52
|
+
- mode: audit # Specify the "mode" as the condition for applying the rule.
|
|
53
|
+
cmds: [search, write] # Specify the "cmd" to which the rule applies. Multiple items can be specified in a list.
|
|
54
|
+
rule: allow # Specifies whether the specified command is allowed or not. Values are allow or deny.
|
|
55
|
+
- mode: client
|
|
56
|
+
cmds: [file_copy, file_download, file_list, file_mkdir, file_move, file_remove, file_rmdir, file_upload, server_info]
|
|
57
|
+
rule: allow
|
|
58
|
+
- mode: cmd
|
|
59
|
+
cmds: [list, load]
|
|
60
|
+
rule: allow
|
|
61
|
+
- mode: server
|
|
62
|
+
cmds: [list]
|
|
63
|
+
rule: allow
|
|
64
|
+
- mode: web
|
|
65
|
+
cmds: [gencert, genpass, group_list, user_list]
|
|
66
|
+
rule: allow
|
|
49
67
|
audit:
|
|
50
68
|
enabled: true # Specify whether to enable the audit function.
|
|
51
69
|
write:
|
|
@@ -2,7 +2,11 @@ version: 1
|
|
|
2
2
|
|
|
3
3
|
formatters:
|
|
4
4
|
fmt:
|
|
5
|
-
format: '%(
|
|
5
|
+
format: '[%(asctime)s] %(levelname)s - %(message)s'
|
|
6
|
+
datefmt: '%Y-%m-%d %H:%M:%S'
|
|
7
|
+
class: logging.Formatter
|
|
8
|
+
fmt_rich:
|
|
9
|
+
format: '%(message)s'
|
|
6
10
|
class: logging.Formatter
|
|
7
11
|
handlers:
|
|
8
12
|
std:
|
|
@@ -10,6 +14,14 @@ handlers:
|
|
|
10
14
|
level: INFO
|
|
11
15
|
formatter: fmt
|
|
12
16
|
stream: ext://sys.stdout
|
|
17
|
+
rich:
|
|
18
|
+
class: rich.logging.RichHandler
|
|
19
|
+
level: INFO
|
|
20
|
+
formatter: fmt_rich
|
|
21
|
+
show_path: false
|
|
22
|
+
omit_repeated_times: false
|
|
23
|
+
tracebacks_word_wrap: false
|
|
24
|
+
log_time_format: '[%Y-%m-%d %H:%M]'
|
|
13
25
|
sample:
|
|
14
26
|
class: cmdbox.app.commons.loghandler.TimedRotatingFileHandler
|
|
15
27
|
level: INFO
|
|
@@ -24,6 +36,7 @@ loggers:
|
|
|
24
36
|
handlers: [sample, std]
|
|
25
37
|
level: INFO
|
|
26
38
|
qualname: sample
|
|
39
|
+
propagate: false
|
|
27
40
|
|
|
28
41
|
#root:
|
|
29
42
|
# handlers: [sample, std]
|
|
@@ -74,7 +74,8 @@ pathrule: # List of RESTAPI rules, rules that determine whe
|
|
|
74
74
|
- groups: [user]
|
|
75
75
|
paths: [/signin, /assets, /bbforce_cmd, /copyright, /dosignin, /dosignout, /password/change,
|
|
76
76
|
/gui/user_data/load, /gui/user_data/save, /gui/user_data/delete,
|
|
77
|
-
/
|
|
77
|
+
/agent, /mcp,
|
|
78
|
+
/exec_cmd, /exec_pipe, /filer, /result, /gui, /get_server_opt, /usesignout, /versions_cmdbox, /versions_used]
|
|
78
79
|
rule: allow
|
|
79
80
|
- groups: [readonly]
|
|
80
81
|
paths: [/gui/del_cmd, /gui/del_pipe, /gui/save_cmd, /gui/save_pipe]
|
|
@@ -2,13 +2,19 @@ version: 1
|
|
|
2
2
|
|
|
3
3
|
formatters:
|
|
4
4
|
fmt:
|
|
5
|
-
format: '%(
|
|
5
|
+
format: '[%(asctime)s] %(levelname)s - %(message)s'
|
|
6
|
+
datefmt: '%Y-%m-%d %H:%M:%S'
|
|
6
7
|
class: logging.Formatter
|
|
7
8
|
fmt_rich:
|
|
8
9
|
format: '%(message)s'
|
|
9
10
|
class: logging.Formatter
|
|
10
11
|
handlers:
|
|
11
12
|
std:
|
|
13
|
+
class: cmdbox.app.commons.loghandler.ColorfulStreamHandler
|
|
14
|
+
level: INFO
|
|
15
|
+
formatter: fmt
|
|
16
|
+
stream: ext://sys.stdout
|
|
17
|
+
rich:
|
|
12
18
|
class: rich.logging.RichHandler
|
|
13
19
|
level: INFO
|
|
14
20
|
formatter: fmt_rich
|
|
@@ -16,9 +22,8 @@ handlers:
|
|
|
16
22
|
omit_repeated_times: false
|
|
17
23
|
tracebacks_word_wrap: false
|
|
18
24
|
log_time_format: '[%Y-%m-%d %H:%M]'
|
|
19
|
-
#stream: ext://sys.stdout
|
|
20
25
|
audit:
|
|
21
|
-
class:
|
|
26
|
+
class: cmdbox.app.commons.loghandler.TimedRotatingFileHandler
|
|
22
27
|
level: INFO
|
|
23
28
|
formatter: fmt
|
|
24
29
|
backupCount: 5
|
|
@@ -28,7 +33,7 @@ handlers:
|
|
|
28
33
|
|
|
29
34
|
loggers:
|
|
30
35
|
audit:
|
|
31
|
-
handlers: [audit]
|
|
36
|
+
handlers: [audit, std]
|
|
32
37
|
level: INFO
|
|
33
38
|
qualname: audit
|
|
34
39
|
propagate: false
|
|
@@ -2,13 +2,19 @@ version: 1
|
|
|
2
2
|
|
|
3
3
|
formatters:
|
|
4
4
|
fmt:
|
|
5
|
-
format: '%(
|
|
5
|
+
format: '[%(asctime)s] %(levelname)s - %(message)s'
|
|
6
|
+
datefmt: '%Y-%m-%d %H:%M:%S'
|
|
6
7
|
class: logging.Formatter
|
|
7
8
|
fmt_rich:
|
|
8
9
|
format: '%(message)s'
|
|
9
10
|
class: logging.Formatter
|
|
10
11
|
handlers:
|
|
11
12
|
std:
|
|
13
|
+
class: cmdbox.app.commons.loghandler.ColorfulStreamHandler
|
|
14
|
+
level: INFO
|
|
15
|
+
formatter: fmt
|
|
16
|
+
stream: ext://sys.stdout
|
|
17
|
+
rich:
|
|
12
18
|
class: rich.logging.RichHandler
|
|
13
19
|
level: INFO
|
|
14
20
|
formatter: fmt_rich
|
|
@@ -16,9 +22,8 @@ handlers:
|
|
|
16
22
|
omit_repeated_times: false
|
|
17
23
|
tracebacks_word_wrap: false
|
|
18
24
|
log_time_format: '[%Y-%m-%d %H:%M]'
|
|
19
|
-
#stream: ext://sys.stdout
|
|
20
25
|
client:
|
|
21
|
-
class:
|
|
26
|
+
class: cmdbox.app.commons.loghandler.TimedRotatingFileHandler
|
|
22
27
|
level: INFO
|
|
23
28
|
formatter: fmt
|
|
24
29
|
backupCount: 5
|
|
@@ -28,7 +33,7 @@ handlers:
|
|
|
28
33
|
|
|
29
34
|
loggers:
|
|
30
35
|
client:
|
|
31
|
-
handlers: [client]
|
|
36
|
+
handlers: [client, std]
|
|
32
37
|
level: INFO
|
|
33
38
|
qualname: client
|
|
34
39
|
propagate: false
|