cmdbox 0.6.3__py3-none-any.whl → 0.6.3.2__py3-none-any.whl
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/app/app.py +9 -7
- cmdbox/app/common.py +13 -9
- cmdbox/app/commons/loghandler.py +4 -1
- cmdbox/app/features/cli/cmdbox_web_apikey_add.py +4 -19
- cmdbox/app/features/cli/cmdbox_web_apikey_del.py +4 -19
- cmdbox/app/features/cli/cmdbox_web_group_add.py +2 -17
- cmdbox/app/features/cli/cmdbox_web_group_del.py +2 -17
- cmdbox/app/features/cli/cmdbox_web_group_edit.py +2 -17
- cmdbox/app/features/cli/cmdbox_web_group_list.py +2 -17
- cmdbox/app/features/cli/cmdbox_web_user_add.py +2 -17
- cmdbox/app/features/cli/cmdbox_web_user_del.py +2 -17
- cmdbox/app/features/cli/cmdbox_web_user_edit.py +2 -17
- cmdbox/app/features/cli/cmdbox_web_user_list.py +2 -17
- cmdbox/app/features/web/cmdbox_web_exec_cmd.py +3 -3
- cmdbox/app/web.py +1 -1
- cmdbox/version.py +2 -2
- {cmdbox-0.6.3.dist-info → cmdbox-0.6.3.2.dist-info}/METADATA +1 -1
- {cmdbox-0.6.3.dist-info → cmdbox-0.6.3.2.dist-info}/RECORD +22 -22
- {cmdbox-0.6.3.dist-info → cmdbox-0.6.3.2.dist-info}/LICENSE +0 -0
- {cmdbox-0.6.3.dist-info → cmdbox-0.6.3.2.dist-info}/WHEEL +0 -0
- {cmdbox-0.6.3.dist-info → cmdbox-0.6.3.2.dist-info}/entry_points.txt +0 -0
- {cmdbox-0.6.3.dist-info → cmdbox-0.6.3.2.dist-info}/top_level.txt +0 -0
cmdbox/app/app.py
CHANGED
|
@@ -18,7 +18,9 @@ class CmdBoxApp:
|
|
|
18
18
|
@staticmethod
|
|
19
19
|
def getInstance(appcls=None, ver=version, cli_features_packages:List[str]=None, cli_features_prefix:List[str]=None):
|
|
20
20
|
if CmdBoxApp._instance is None:
|
|
21
|
-
|
|
21
|
+
_self = appcls.__new__(appcls)
|
|
22
|
+
_self.__init__(appcls=appcls, ver=ver, cli_features_packages=cli_features_packages, cli_features_prefix=cli_features_prefix)
|
|
23
|
+
CmdBoxApp._instance = _self
|
|
22
24
|
return CmdBoxApp._instance
|
|
23
25
|
|
|
24
26
|
def __init__(self, appcls=None, ver=version, cli_features_packages:List[str]=None, cli_features_prefix:List[str]=None):
|
|
@@ -145,12 +147,12 @@ class CmdBoxApp:
|
|
|
145
147
|
if logger.level == logging.DEBUG:
|
|
146
148
|
logger.debug(f"args.mode={args.mode}, args.cmd={args.cmd}")
|
|
147
149
|
# 警告出力時にスタックを出力する
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
150
|
+
import warnings
|
|
151
|
+
def custom_warning_handler(message, category, filename, lineno, file=None, line=None):
|
|
152
|
+
import traceback
|
|
153
|
+
logger.warning(f"Warning: {message}, Category: {category}, File: {filename}, Line: {lineno}", exc_info=True)
|
|
154
|
+
traceback.print_stack()
|
|
155
|
+
warnings.showwarning = custom_warning_handler
|
|
154
156
|
|
|
155
157
|
#scmdexectime = time.perf_counter()
|
|
156
158
|
feat = self.options.get_cmd_attr(args.mode, args.cmd, 'feature')
|
cmdbox/app/common.py
CHANGED
|
@@ -3,9 +3,8 @@ from cmdbox.app import feature, options
|
|
|
3
3
|
from cmdbox.app.commons import convert, module, loghandler
|
|
4
4
|
from cryptography.fernet import Fernet
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from pkg_resources import resource_string
|
|
7
|
-
from rich.logging import RichHandler
|
|
8
6
|
from rich.console import Console
|
|
7
|
+
from rich.logging import RichHandler
|
|
9
8
|
from tabulate import tabulate
|
|
10
9
|
from typing import List, Tuple, Dict, Any
|
|
11
10
|
import argparse
|
|
@@ -133,10 +132,11 @@ def reset_logger(name:str, stderr:bool=False, fmt:str='[%(asctime)s] %(levelname
|
|
|
133
132
|
level (int, optional): ログレベル. Defaults to logging.INFO.
|
|
134
133
|
"""
|
|
135
134
|
logger = logging.getLogger(name)
|
|
135
|
+
#colorful = [h for h in logger.handlers if isinstance(h, loghandler.ColorfulStreamHandler) or isinstance(h, RichHandler)]
|
|
136
136
|
logger.handlers.clear()
|
|
137
137
|
logger.propagate = False
|
|
138
138
|
logger.setLevel(level)
|
|
139
|
-
logger.addHandler(create_log_handler(stderr, fmt, datefmt, level))
|
|
139
|
+
logger.addHandler(create_log_handler(stderr, fmt, datefmt, level, colorful=True))
|
|
140
140
|
if get_common_value('webcall', False):
|
|
141
141
|
# webcallの場合はStreamHandlerを削除
|
|
142
142
|
for handler in logger.handlers:
|
|
@@ -144,7 +144,7 @@ def reset_logger(name:str, stderr:bool=False, fmt:str='[%(asctime)s] %(levelname
|
|
|
144
144
|
if issubclass(hc, logging.StreamHandler) and not issubclass(hc, logging.FileHandler):
|
|
145
145
|
logger.removeHandler(handler)
|
|
146
146
|
|
|
147
|
-
def create_log_handler(stderr:bool=False, fmt:str='[%(asctime)s] %(levelname)s - %(message)s', datefmt:str='%Y-%m-%d %H:%M:%S', level:int=logging.INFO) -> logging.Handler:
|
|
147
|
+
def create_log_handler(stderr:bool=False, fmt:str='[%(asctime)s] %(levelname)s - %(message)s', datefmt:str='%Y-%m-%d %H:%M:%S', level:int=logging.INFO, colorful:bool=True) -> logging.Handler:
|
|
148
148
|
"""
|
|
149
149
|
ログハンドラを生成します。
|
|
150
150
|
|
|
@@ -152,13 +152,18 @@ def create_log_handler(stderr:bool=False, fmt:str='[%(asctime)s] %(levelname)s -
|
|
|
152
152
|
stderr (bool, optional): 標準エラー出力を使用するかどうか. Defaults to False.
|
|
153
153
|
fmt (str, optional): ログフォーマット. Defaults to '[%(asctime)s] %(levelname)s - %(message)s'.
|
|
154
154
|
datefmt (str, optional): 日時フォーマット. Defaults to '%Y-%m-%d %H:%M:%S'.
|
|
155
|
+
level (int, optional): ログレベル. Defaults to logging.INFO.
|
|
156
|
+
colorful (bool, optional): カラフルなログを使用するかどうか. Defaults to True.
|
|
155
157
|
Returns:
|
|
156
158
|
logging.Handler: ログハンドラ
|
|
157
159
|
"""
|
|
158
160
|
formatter = logging.Formatter(fmt, datefmt)
|
|
159
161
|
#handler = RichHandler(console=Console(stderr=stderr), show_path=False, omit_repeated_times=False,
|
|
160
162
|
# tracebacks_word_wrap=False, log_time_format='[%Y-%m-%d %H:%M]')
|
|
161
|
-
|
|
163
|
+
if colorful:
|
|
164
|
+
handler = loghandler.ColorfulStreamHandler(sys.stdout if not stderr else sys.stderr)
|
|
165
|
+
else:
|
|
166
|
+
handler = logging.StreamHandler(sys.stdout if not stderr else sys.stderr)
|
|
162
167
|
handler.setFormatter(formatter)
|
|
163
168
|
handler.setLevel(level)
|
|
164
169
|
return handler
|
|
@@ -180,7 +185,7 @@ def create_console(stderr:bool=False, file=None) -> Console:
|
|
|
180
185
|
#console = Console(soft_wrap=True, stderr=stderr, file=file, log_time=True, log_path=False, log_time_format='[%Y-%m-%d %H:%M:%S]')
|
|
181
186
|
return console
|
|
182
187
|
|
|
183
|
-
def console_log(console:Console, message:Any, **kwargs) -> None:
|
|
188
|
+
def console_log(console:Console, message:Any, highlight:bool=True, **kwargs) -> None:
|
|
184
189
|
"""
|
|
185
190
|
コンソールにログを出力します。
|
|
186
191
|
|
|
@@ -190,7 +195,7 @@ def console_log(console:Console, message:Any, **kwargs) -> None:
|
|
|
190
195
|
**kwargs: その他のキーワード引数
|
|
191
196
|
"""
|
|
192
197
|
dtstr = datetime.datetime.now().strftime('[%Y-%m-%d %H:%M:%S]')
|
|
193
|
-
console.print(f"{dtstr} {message}", highlight=
|
|
198
|
+
console.print(f"{dtstr} {message}", highlight=highlight, **kwargs)
|
|
194
199
|
|
|
195
200
|
def default_logger(debug:bool=False, ver=version, webcall:bool=False) -> logging.Logger:
|
|
196
201
|
"""
|
|
@@ -269,8 +274,7 @@ def load_config(mode:str, debug:bool=False, data=HOME_DIR, webcall:bool=False, v
|
|
|
269
274
|
logging.config.dictConfig(log_config)
|
|
270
275
|
logger = logging.getLogger(log_name)
|
|
271
276
|
set_debug(logger, debug)
|
|
272
|
-
|
|
273
|
-
return logger, config
|
|
277
|
+
return logger, {}
|
|
274
278
|
|
|
275
279
|
def set_debug(logger:logging.Logger, debug:bool=False) -> None:
|
|
276
280
|
"""
|
cmdbox/app/commons/loghandler.py
CHANGED
|
@@ -144,7 +144,10 @@ class ColorfulStreamHandler(logging.StreamHandler):
|
|
|
144
144
|
#super().emit(record)
|
|
145
145
|
record.levelname = level_mapping_nc[record.levelno]
|
|
146
146
|
record.msg = self.format(record)
|
|
147
|
-
|
|
147
|
+
try:
|
|
148
|
+
self.console.print(record.msg)
|
|
149
|
+
except Exception as e:
|
|
150
|
+
self.console.print(record.msg, highlight=False)
|
|
148
151
|
|
|
149
152
|
class TimedRotatingFileHandler(logging.handlers.TimedRotatingFileHandler):
|
|
150
153
|
def emit(self, record: logging.LogRecord) -> None:
|
|
@@ -37,24 +37,9 @@ class WebApikeyAdd(feature.UnsupportEdgeFeature):
|
|
|
37
37
|
description_ja="WebモードのユーザーのApiKeyを追加します。",
|
|
38
38
|
description_en="Add an ApiKey for a user in Web mode.",
|
|
39
39
|
choice=[
|
|
40
|
-
dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
41
|
-
description_ja="Redisサーバーのサービスホストを指定します。",
|
|
42
|
-
description_en="Specify the service host of the Redis server."),
|
|
43
|
-
dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
44
|
-
description_ja="Redisサーバーのサービスポートを指定します。",
|
|
45
|
-
description_en="Specify the service port of the Redis server."),
|
|
46
|
-
dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
47
|
-
description_ja="Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `password` を使用します。",
|
|
48
|
-
description_en="Specify the access password of the Redis server (optional). If omitted, `password` is used."),
|
|
49
|
-
dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
|
|
50
|
-
description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
|
|
51
|
-
description_en="Specify the service name of the inference server. If omitted, `server` is used."),
|
|
52
|
-
dict(opt="data", type=Options.T_DIR, default=self.default_data, required=False, multi=False, hide=False, choice=None,
|
|
53
|
-
description_ja=f"省略した時は `$HONE/.{self.ver.__appid__}` を使用します。",
|
|
54
|
-
description_en=f"When omitted, `$HONE/.{self.ver.__appid__}` is used."),
|
|
55
40
|
dict(opt="user_name", type=Options.T_STR, default=None, required=True, multi=False, hide=False, choice=None,
|
|
56
|
-
description_ja="
|
|
57
|
-
description_en="Specify
|
|
41
|
+
description_ja="対象のユーザー名を指定します。",
|
|
42
|
+
description_en="Specify the target user name."),
|
|
58
43
|
dict(opt="apikey_name", type=Options.T_STR, default=None, required=True, multi=False, hide=False, choice=None,
|
|
59
44
|
description_ja="このユーザーのApiKey名を指定します。",
|
|
60
45
|
description_en="Specify the ApiKey name for this user."),
|
|
@@ -92,8 +77,8 @@ class WebApikeyAdd(feature.UnsupportEdgeFeature):
|
|
|
92
77
|
return 1, msg, None
|
|
93
78
|
w = None
|
|
94
79
|
try:
|
|
95
|
-
w = web.Web(logger,
|
|
96
|
-
redis_host=
|
|
80
|
+
w = web.Web(logger, self.default_data, appcls=self.appcls, ver=self.ver,
|
|
81
|
+
redis_host=self.default_host, redis_port=self.default_port, redis_password=self.default_pass, svname=self.default_svname,
|
|
97
82
|
signin_file=args.signin_file)
|
|
98
83
|
user = dict(name=args.user_name, apikey_name=args.apikey_name)
|
|
99
84
|
apikey = w.apikey_add(user)
|
|
@@ -37,24 +37,9 @@ class WebApikeyDel(feature.UnsupportEdgeFeature):
|
|
|
37
37
|
description_ja="WebモードのユーザーのApiKeyを削除します。",
|
|
38
38
|
description_en="Del an ApiKey for a user in Web mode.",
|
|
39
39
|
choice=[
|
|
40
|
-
dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
41
|
-
description_ja="Redisサーバーのサービスホストを指定します。",
|
|
42
|
-
description_en="Specify the service host of the Redis server."),
|
|
43
|
-
dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
44
|
-
description_ja="Redisサーバーのサービスポートを指定します。",
|
|
45
|
-
description_en="Specify the service port of the Redis server."),
|
|
46
|
-
dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
47
|
-
description_ja="Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `password` を使用します。",
|
|
48
|
-
description_en="Specify the access password of the Redis server (optional). If omitted, `password` is used."),
|
|
49
|
-
dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
|
|
50
|
-
description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
|
|
51
|
-
description_en="Specify the service name of the inference server. If omitted, `server` is used."),
|
|
52
|
-
dict(opt="data", type=Options.T_DIR, default=self.default_data, required=False, multi=False, hide=False, choice=None,
|
|
53
|
-
description_ja=f"省略した時は `$HONE/.{self.ver.__appid__}` を使用します。",
|
|
54
|
-
description_en=f"When omitted, `$HONE/.{self.ver.__appid__}` is used."),
|
|
55
40
|
dict(opt="user_name", type=Options.T_STR, default=None, required=True, multi=False, hide=False, choice=None,
|
|
56
|
-
description_ja="
|
|
57
|
-
description_en="Specify
|
|
41
|
+
description_ja="対象のユーザー名を指定します。",
|
|
42
|
+
description_en="Specify the target user name."),
|
|
58
43
|
dict(opt="apikey_name", type=Options.T_STR, default=None, required=True, multi=False, hide=False, choice=None,
|
|
59
44
|
description_ja="このユーザーのApiKey名を指定します。",
|
|
60
45
|
description_en="Specify the ApiKey name for this user."),
|
|
@@ -92,8 +77,8 @@ class WebApikeyDel(feature.UnsupportEdgeFeature):
|
|
|
92
77
|
return 1, msg, None
|
|
93
78
|
w = None
|
|
94
79
|
try:
|
|
95
|
-
w = web.Web(logger,
|
|
96
|
-
redis_host=
|
|
80
|
+
w = web.Web(logger, self.default_data, appcls=self.appcls, ver=self.ver,
|
|
81
|
+
redis_host=self.default_host, redis_port=self.default_port, redis_password=self.default_pass, svname=self.default_svname,
|
|
97
82
|
signin_file=args.signin_file)
|
|
98
83
|
user = dict(name=args.user_name, apikey_name=args.apikey_name)
|
|
99
84
|
w.apikey_del(user)
|
|
@@ -37,21 +37,6 @@ class WebGroupAdd(feature.UnsupportEdgeFeature):
|
|
|
37
37
|
description_ja="Webモードのグループを追加します。",
|
|
38
38
|
description_en="Add a group in Web mode.",
|
|
39
39
|
choice=[
|
|
40
|
-
dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
41
|
-
description_ja="Redisサーバーのサービスホストを指定します。",
|
|
42
|
-
description_en="Specify the service host of the Redis server."),
|
|
43
|
-
dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
44
|
-
description_ja="Redisサーバーのサービスポートを指定します。",
|
|
45
|
-
description_en="Specify the service port of the Redis server."),
|
|
46
|
-
dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
47
|
-
description_ja="Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `password` を使用します。",
|
|
48
|
-
description_en="Specify the access password of the Redis server (optional). If omitted, `password` is used."),
|
|
49
|
-
dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
|
|
50
|
-
description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
|
|
51
|
-
description_en="Specify the service name of the inference server. If omitted, `server` is used."),
|
|
52
|
-
dict(opt="data", type=Options.T_DIR, default=self.default_data, required=False, multi=False, hide=False, choice=None,
|
|
53
|
-
description_ja=f"省略した時は `$HONE/.{self.ver.__appid__}` を使用します。",
|
|
54
|
-
description_en=f"When omitted, `$HONE/.{self.ver.__appid__}` is used."),
|
|
55
40
|
dict(opt="group_id", type=Options.T_INT, default=None, required=True, multi=False, hide=False, choice=None,
|
|
56
41
|
description_ja="グループIDを指定します。他のグループと重複しないようにしてください。",
|
|
57
42
|
description_en="Specify the group ID. Do not duplicate other groups."),
|
|
@@ -95,8 +80,8 @@ class WebGroupAdd(feature.UnsupportEdgeFeature):
|
|
|
95
80
|
return 1, msg, None
|
|
96
81
|
w = None
|
|
97
82
|
try:
|
|
98
|
-
w = web.Web(logger,
|
|
99
|
-
redis_host=
|
|
83
|
+
w = web.Web(logger, self.default_data, appcls=self.appcls, ver=self.ver,
|
|
84
|
+
redis_host=self.default_host, redis_port=self.default_port, redis_password=self.default_pass, svname=self.default_svname,
|
|
100
85
|
signin_file=args.signin_file)
|
|
101
86
|
group = dict(gid=args.group_id, name=args.group_name, parent=args.group_parent)
|
|
102
87
|
w.group_add(group)
|
|
@@ -37,21 +37,6 @@ class WebGroupDel(feature.UnsupportEdgeFeature):
|
|
|
37
37
|
description_ja="Webモードのグループを削除します。",
|
|
38
38
|
description_en="Del a group in Web mode.",
|
|
39
39
|
choice=[
|
|
40
|
-
dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
41
|
-
description_ja="Redisサーバーのサービスホストを指定します。",
|
|
42
|
-
description_en="Specify the service host of the Redis server."),
|
|
43
|
-
dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
44
|
-
description_ja="Redisサーバーのサービスポートを指定します。",
|
|
45
|
-
description_en="Specify the service port of the Redis server."),
|
|
46
|
-
dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
47
|
-
description_ja="Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `password` を使用します。",
|
|
48
|
-
description_en="Specify the access password of the Redis server (optional). If omitted, `password` is used."),
|
|
49
|
-
dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
|
|
50
|
-
description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
|
|
51
|
-
description_en="Specify the service name of the inference server. If omitted, `server` is used."),
|
|
52
|
-
dict(opt="data", type=Options.T_DIR, default=self.default_data, required=False, multi=False, hide=False, choice=None,
|
|
53
|
-
description_ja=f"省略した時は `$HONE/.{self.ver.__appid__}` を使用します。",
|
|
54
|
-
description_en=f"When omitted, `$HONE/.{self.ver.__appid__}` is used."),
|
|
55
40
|
dict(opt="group_id", type=Options.T_INT, default=None, required=True, multi=False, hide=False, choice=None,
|
|
56
41
|
description_ja="グループIDを指定します。",
|
|
57
42
|
description_en="Specify the group ID. Do not duplicate other groups."),
|
|
@@ -89,8 +74,8 @@ class WebGroupDel(feature.UnsupportEdgeFeature):
|
|
|
89
74
|
return 1, msg, None
|
|
90
75
|
w = None
|
|
91
76
|
try:
|
|
92
|
-
w = web.Web(logger,
|
|
93
|
-
redis_host=
|
|
77
|
+
w = web.Web(logger, self.default_data, appcls=self.appcls, ver=self.ver,
|
|
78
|
+
redis_host=self.default_host, redis_port=self.default_port, redis_password=self.default_pass, svname=self.default_svname,
|
|
94
79
|
signin_file=args.signin_file)
|
|
95
80
|
w.group_del(args.group_id)
|
|
96
81
|
msg = dict(success=f"group ID {args.group_id} has been deleted.")
|
|
@@ -37,21 +37,6 @@ class WebGroupEdit(feature.UnsupportEdgeFeature):
|
|
|
37
37
|
description_ja="Webモードのグループを編集します。",
|
|
38
38
|
description_en="Edit a group in Web mode.",
|
|
39
39
|
choice=[
|
|
40
|
-
dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
41
|
-
description_ja="Redisサーバーのサービスホストを指定します。",
|
|
42
|
-
description_en="Specify the service host of the Redis server."),
|
|
43
|
-
dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
44
|
-
description_ja="Redisサーバーのサービスポートを指定します。",
|
|
45
|
-
description_en="Specify the service port of the Redis server."),
|
|
46
|
-
dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
47
|
-
description_ja="Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `password` を使用します。",
|
|
48
|
-
description_en="Specify the access password of the Redis server (optional). If omitted, `password` is used."),
|
|
49
|
-
dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
|
|
50
|
-
description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
|
|
51
|
-
description_en="Specify the service name of the inference server. If omitted, `server` is used."),
|
|
52
|
-
dict(opt="data", type=Options.T_DIR, default=self.default_data, required=False, multi=False, hide=False, choice=None,
|
|
53
|
-
description_ja=f"省略した時は `$HONE/.{self.ver.__appid__}` を使用します。",
|
|
54
|
-
description_en=f"When omitted, `$HONE/.{self.ver.__appid__}` is used."),
|
|
55
40
|
dict(opt="group_id", type=Options.T_INT, default=None, required=True, multi=False, hide=False, choice=None,
|
|
56
41
|
description_ja="グループIDを指定します。",
|
|
57
42
|
description_en="Specify the group ID. Do not duplicate other groups."),
|
|
@@ -95,8 +80,8 @@ class WebGroupEdit(feature.UnsupportEdgeFeature):
|
|
|
95
80
|
return 1, msg, None
|
|
96
81
|
w = None
|
|
97
82
|
try:
|
|
98
|
-
w = web.Web(logger,
|
|
99
|
-
redis_host=
|
|
83
|
+
w = web.Web(logger, self.default_data, appcls=self.appcls, ver=self.ver,
|
|
84
|
+
redis_host=self.default_host, redis_port=self.default_port, redis_password=self.default_pass, svname=self.default_svname,
|
|
100
85
|
signin_file=args.signin_file)
|
|
101
86
|
group = dict(gid=args.group_id, name=args.group_name, parent=args.group_parent)
|
|
102
87
|
w.group_edit(group)
|
|
@@ -37,21 +37,6 @@ class WebGroupList(feature.OneshotResultEdgeFeature):
|
|
|
37
37
|
description_ja="Webモードのグループー一覧を取得します。",
|
|
38
38
|
description_en="Get a list of users in Web mode.",
|
|
39
39
|
choice=[
|
|
40
|
-
dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
41
|
-
description_ja="Redisサーバーのサービスホストを指定します。",
|
|
42
|
-
description_en="Specify the service host of the Redis server."),
|
|
43
|
-
dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
44
|
-
description_ja="Redisサーバーのサービスポートを指定します。",
|
|
45
|
-
description_en="Specify the service port of the Redis server."),
|
|
46
|
-
dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
47
|
-
description_ja="Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `password` を使用します。",
|
|
48
|
-
description_en="Specify the access password of the Redis server (optional). If omitted, `password` is used."),
|
|
49
|
-
dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
|
|
50
|
-
description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
|
|
51
|
-
description_en="Specify the service name of the inference server. If omitted, `server` is used."),
|
|
52
|
-
dict(opt="data", type=Options.T_DIR, default=self.default_data, required=False, multi=False, hide=False, choice=None,
|
|
53
|
-
description_ja=f"省略した時は `$HONE/.{self.ver.__appid__}` を使用します。",
|
|
54
|
-
description_en=f"When omitted, `$HONE/.{self.ver.__appid__}` is used."),
|
|
55
40
|
dict(opt="group_name", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
|
|
56
41
|
description_ja="グループ名を指定して取得します。省略した時は全てのグループを取得します。",
|
|
57
42
|
description_en="Retrieved by specifying a group name. If omitted, all groups are retrieved."),
|
|
@@ -89,8 +74,8 @@ class WebGroupList(feature.OneshotResultEdgeFeature):
|
|
|
89
74
|
return 1, msg, None
|
|
90
75
|
w = None
|
|
91
76
|
try:
|
|
92
|
-
w = web.Web(logger,
|
|
93
|
-
redis_host=
|
|
77
|
+
w = web.Web(logger, self.default_data, appcls=self.appcls, ver=self.ver,
|
|
78
|
+
redis_host=self.default_host, redis_port=self.default_port, redis_password=self.default_pass, svname=self.default_svname,
|
|
94
79
|
signin_file=args.signin_file)
|
|
95
80
|
groups = w.group_list(args.group_name)
|
|
96
81
|
msg = dict(success=groups)
|
|
@@ -37,21 +37,6 @@ class WebUserAdd(feature.UnsupportEdgeFeature):
|
|
|
37
37
|
description_ja="Webモードのユーザーを追加します。",
|
|
38
38
|
description_en="Add a user in Web mode.",
|
|
39
39
|
choice=[
|
|
40
|
-
dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
41
|
-
description_ja="Redisサーバーのサービスホストを指定します。",
|
|
42
|
-
description_en="Specify the service host of the Redis server."),
|
|
43
|
-
dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
44
|
-
description_ja="Redisサーバーのサービスポートを指定します。",
|
|
45
|
-
description_en="Specify the service port of the Redis server."),
|
|
46
|
-
dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
47
|
-
description_ja="Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `password` を使用します。",
|
|
48
|
-
description_en="Specify the access password of the Redis server (optional). If omitted, `password` is used."),
|
|
49
|
-
dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
|
|
50
|
-
description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
|
|
51
|
-
description_en="Specify the service name of the inference server. If omitted, `server` is used."),
|
|
52
|
-
dict(opt="data", type=Options.T_DIR, default=self.default_data, required=False, multi=False, hide=False, choice=None,
|
|
53
|
-
description_ja=f"省略した時は `$HONE/.{self.ver.__appid__}` を使用します。",
|
|
54
|
-
description_en=f"When omitted, `$HONE/.{self.ver.__appid__}` is used."),
|
|
55
40
|
dict(opt="user_id", type=Options.T_INT, default=None, required=True, multi=False, hide=False, choice=None,
|
|
56
41
|
description_ja="ユーザーIDを指定します。他のユーザーと重複しないようにしてください。",
|
|
57
42
|
description_en="Specify the user ID. Do not duplicate other users."),
|
|
@@ -104,8 +89,8 @@ class WebUserAdd(feature.UnsupportEdgeFeature):
|
|
|
104
89
|
return 1, msg, None
|
|
105
90
|
w = None
|
|
106
91
|
try:
|
|
107
|
-
w = web.Web(logger,
|
|
108
|
-
redis_host=
|
|
92
|
+
w = web.Web(logger, self.default_data, appcls=self.appcls, ver=self.ver,
|
|
93
|
+
redis_host=self.default_host, redis_port=self.default_port, redis_password=self.default_pass, svname=self.default_svname,
|
|
109
94
|
signin_file=args.signin_file)
|
|
110
95
|
user = dict(uid=args.user_id, name=args.user_name, password=args.user_pass, hash=args.user_pass_hash,
|
|
111
96
|
email=args.user_email, groups=args.user_group)
|
|
@@ -37,21 +37,6 @@ class WebUserDel(feature.UnsupportEdgeFeature):
|
|
|
37
37
|
description_ja="Webモードのユーザーを削除します。",
|
|
38
38
|
description_en="Delete a user in Web mode.",
|
|
39
39
|
choice=[
|
|
40
|
-
dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
41
|
-
description_ja="Redisサーバーのサービスホストを指定します。",
|
|
42
|
-
description_en="Specify the service host of the Redis server."),
|
|
43
|
-
dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
44
|
-
description_ja="Redisサーバーのサービスポートを指定します。",
|
|
45
|
-
description_en="Specify the service port of the Redis server."),
|
|
46
|
-
dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
47
|
-
description_ja="Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `password` を使用します。",
|
|
48
|
-
description_en="Specify the access password of the Redis server (optional). If omitted, `password` is used."),
|
|
49
|
-
dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
|
|
50
|
-
description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
|
|
51
|
-
description_en="Specify the service name of the inference server. If omitted, `server` is used."),
|
|
52
|
-
dict(opt="data", type=Options.T_DIR, default=self.default_data, required=False, multi=False, hide=False, choice=None,
|
|
53
|
-
description_ja=f"省略した時は `$HONE/.{self.ver.__appid__}` を使用します。",
|
|
54
|
-
description_en=f"When omitted, `$HONE/.{self.ver.__appid__}` is used."),
|
|
55
40
|
dict(opt="user_id", type=Options.T_INT, default=None, required=True, multi=False, hide=False, choice=None,
|
|
56
41
|
description_ja="ユーザーIDを指定します。",
|
|
57
42
|
description_en="Specify the user ID."),
|
|
@@ -89,8 +74,8 @@ class WebUserDel(feature.UnsupportEdgeFeature):
|
|
|
89
74
|
return 1, msg, None
|
|
90
75
|
w = None
|
|
91
76
|
try:
|
|
92
|
-
w = web.Web(logger,
|
|
93
|
-
redis_host=
|
|
77
|
+
w = web.Web(logger, self.default_data, appcls=self.appcls, ver=self.ver,
|
|
78
|
+
redis_host=self.default_host, redis_port=self.default_port, redis_password=self.default_pass, svname=self.default_svname,
|
|
94
79
|
signin_file=args.signin_file)
|
|
95
80
|
w.user_del(args.user_id)
|
|
96
81
|
msg = dict(success=f"User ID {args.user_id} has been deleted.")
|
|
@@ -37,21 +37,6 @@ class WebUserEdit(feature.UnsupportEdgeFeature):
|
|
|
37
37
|
description_ja="Webモードのユーザーを編集します。",
|
|
38
38
|
description_en="Edit users in Web mode.",
|
|
39
39
|
choice=[
|
|
40
|
-
dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
41
|
-
description_ja="Redisサーバーのサービスホストを指定します。",
|
|
42
|
-
description_en="Specify the service host of the Redis server."),
|
|
43
|
-
dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
44
|
-
description_ja="Redisサーバーのサービスポートを指定します。",
|
|
45
|
-
description_en="Specify the service port of the Redis server."),
|
|
46
|
-
dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
47
|
-
description_ja="Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `password` を使用します。",
|
|
48
|
-
description_en="Specify the access password of the Redis server (optional). If omitted, `password` is used."),
|
|
49
|
-
dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
|
|
50
|
-
description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
|
|
51
|
-
description_en="Specify the service name of the inference server. If omitted, `server` is used."),
|
|
52
|
-
dict(opt="data", type=Options.T_DIR, default=self.default_data, required=False, multi=False, hide=False, choice=None,
|
|
53
|
-
description_ja=f"省略した時は `$HONE/.{self.ver.__appid__}` を使用します。",
|
|
54
|
-
description_en=f"When omitted, `$HONE/.{self.ver.__appid__}` is used."),
|
|
55
40
|
dict(opt="user_id", type=Options.T_INT, default=None, required=True, multi=False, hide=False, choice=None,
|
|
56
41
|
description_ja="ユーザーIDを指定します。",
|
|
57
42
|
description_en="Specify the user ID."),
|
|
@@ -104,8 +89,8 @@ class WebUserEdit(feature.UnsupportEdgeFeature):
|
|
|
104
89
|
return 1, msg, None
|
|
105
90
|
w = None
|
|
106
91
|
try:
|
|
107
|
-
w = web.Web(logger,
|
|
108
|
-
redis_host=
|
|
92
|
+
w = web.Web(logger, self.default_data, appcls=self.appcls, ver=self.ver,
|
|
93
|
+
redis_host=self.default_host, redis_port=self.default_port, redis_password=self.default_pass, svname=self.default_svname,
|
|
109
94
|
signin_file=args.signin_file)
|
|
110
95
|
user = dict(uid=args.user_id, name=args.user_name, password=args.user_pass, hash=args.user_pass_hash,
|
|
111
96
|
email=args.user_email, groups=args.user_group)
|
|
@@ -37,21 +37,6 @@ class WebUserList(feature.OneshotResultEdgeFeature):
|
|
|
37
37
|
description_ja="Webモードのユーザー一覧を取得します。",
|
|
38
38
|
description_en="Get a list of users in Web mode.",
|
|
39
39
|
choice=[
|
|
40
|
-
dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
41
|
-
description_ja="Redisサーバーのサービスホストを指定します。",
|
|
42
|
-
description_en="Specify the service host of the Redis server."),
|
|
43
|
-
dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
44
|
-
description_ja="Redisサーバーのサービスポートを指定します。",
|
|
45
|
-
description_en="Specify the service port of the Redis server."),
|
|
46
|
-
dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
|
|
47
|
-
description_ja="Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `password` を使用します。",
|
|
48
|
-
description_en="Specify the access password of the Redis server (optional). If omitted, `password` is used."),
|
|
49
|
-
dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
|
|
50
|
-
description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
|
|
51
|
-
description_en="Specify the service name of the inference server. If omitted, `server` is used."),
|
|
52
|
-
dict(opt="data", type=Options.T_DIR, default=self.default_data, required=False, multi=False, hide=False, choice=None,
|
|
53
|
-
description_ja=f"省略した時は `$HONE/.{self.ver.__appid__}` を使用します。",
|
|
54
|
-
description_en=f"When omitted, `$HONE/.{self.ver.__appid__}` is used."),
|
|
55
40
|
dict(opt="user_name", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
|
|
56
41
|
description_ja="ユーザー名を指定して取得します。省略した時は全てのユーザーを取得します。",
|
|
57
42
|
description_en="Retrieved by specifying a user name. If omitted, all users are retrieved."),
|
|
@@ -89,8 +74,8 @@ class WebUserList(feature.OneshotResultEdgeFeature):
|
|
|
89
74
|
return 1, msg, None
|
|
90
75
|
w = None
|
|
91
76
|
try:
|
|
92
|
-
w = web.Web(logger,
|
|
93
|
-
redis_host=
|
|
77
|
+
w = web.Web(logger, self.default_data, appcls=self.appcls, ver=self.ver,
|
|
78
|
+
redis_host=self.default_host, redis_port=self.default_port, redis_password=self.default_pass, svname=self.default_svname,
|
|
94
79
|
signin_file=args.signin_file)
|
|
95
80
|
users = w.user_list(args.user_name)
|
|
96
81
|
msg = dict(success=users)
|
|
@@ -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
|
-
common.console_log(console, f'EXEC - {opt_list}\n'[:logsize])
|
|
185
|
+
common.console_log(console, message=f'EXEC - {opt_list}\n'[:logsize], highlight=(len(opt_list)<logsize-10))
|
|
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
|
-
old_stdout.write(f'EXEC OUTPUT => {output}'[:logsize]) # コマンド実行時のアウトプットはカラーリングしない
|
|
212
|
+
old_stdout.write(f'EXEC OUTPUT => {output}'[:logsize]+'\n') # コマンド実行時のアウトプットはカラーリングしない
|
|
213
213
|
except Exception as e:
|
|
214
214
|
web.logger.disabled = False # ログ出力を有効にする
|
|
215
215
|
msg = f'exec_cmd error. {traceback.format_exc()}'
|
|
216
|
-
common.console_log(console, f'EXEC - {msg}'[:logsize])
|
|
216
|
+
common.console_log(console, message=f'EXEC - {msg}'[:logsize], highlight=(len(msg)<logsize-10))
|
|
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
|
cmdbox/app/web.py
CHANGED
|
@@ -475,7 +475,7 @@ class Web:
|
|
|
475
475
|
for u in signin_data['users']:
|
|
476
476
|
if u['uid'] == user['uid']:
|
|
477
477
|
u['name'] = user['name']
|
|
478
|
-
if 'password' in user and user['password'] != '':
|
|
478
|
+
if 'password' in user and user['password'] is not None and user['password'] != '':
|
|
479
479
|
jadge, msg = self.signin.check_password_policy(user['name'], u['password'], user['password'])
|
|
480
480
|
if not jadge:
|
|
481
481
|
raise ValueError(msg)
|
cmdbox/version.py
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
|
|
3
|
-
dt_now = datetime.datetime(2025, 7,
|
|
3
|
+
dt_now = datetime.datetime(2025, 7, 30)
|
|
4
4
|
days_ago = (datetime.datetime.now() - dt_now).days
|
|
5
5
|
__appid__ = 'cmdbox'
|
|
6
6
|
__title__ = 'cmdbox (Command Development Application)'
|
|
7
|
-
__version__ = '0.6.3'
|
|
7
|
+
__version__ = '0.6.3.2'
|
|
8
8
|
__copyright__ = f'Copyright © 2023-{dt_now.strftime("%Y")} hamacom2004jp'
|
|
9
9
|
__pypiurl__ = 'https://pypi.org/project/cmdbox/'
|
|
10
10
|
__srcurl__ = 'https://github.com/hamacom2004jp/cmdbox'
|
|
@@ -10,11 +10,11 @@ cmdbox/logconf_gui.yml,sha256=-95vyd0q-aB1gsabdk8rg9dJ2zRKAZc8hRxyhNOQboU,1076
|
|
|
10
10
|
cmdbox/logconf_mcp.yml,sha256=pED0i1iKP8UoyXE0amFMA5kjV7Qc6_eJCUDVen3L4AU,1069
|
|
11
11
|
cmdbox/logconf_server.yml,sha256=n3c5-KVzjUzcUX5BQ6uE-PN9rp81yXaJql3whyCcSDQ,1091
|
|
12
12
|
cmdbox/logconf_web.yml,sha256=pPbdAwckbK0cgduxcVkx2mbk-Ymz5hVzR4guIsfApMQ,1076
|
|
13
|
-
cmdbox/version.py,sha256=
|
|
13
|
+
cmdbox/version.py,sha256=c5x2tcHm2AcB3MgTKcRZATwSV4RFvcauR3hXTECbeTg,2110
|
|
14
14
|
cmdbox/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
-
cmdbox/app/app.py,sha256=
|
|
15
|
+
cmdbox/app/app.py,sha256=fJU7h4uiI2y7_ohAep8PeRHy8o4f-SqqiGtZbdbWenE,9723
|
|
16
16
|
cmdbox/app/client.py,sha256=n986lXeV7hhaki4iyyvsfhNptmCXDFphxlNoNe2XhKg,19542
|
|
17
|
-
cmdbox/app/common.py,sha256=
|
|
17
|
+
cmdbox/app/common.py,sha256=ltB7wIuUY-kybE5Cbfj5lCJpYGQ0BTN1_ErFo965EbU,28487
|
|
18
18
|
cmdbox/app/edge.py,sha256=2Aav7n4skhP0FUvG6_3JKijHHozA-WcwALgEwNB0DUI,41439
|
|
19
19
|
cmdbox/app/edge_tool.py,sha256=HXxr4Or8QaZ5ueYIN3huv8GnXSnV28RZCmZBUEfiIk0,8062
|
|
20
20
|
cmdbox/app/feature.py,sha256=fK7JP1fc8b9k1zhSNOkWq02ad8i-_wuAX5kyyK2TZdE,10391
|
|
@@ -22,7 +22,7 @@ cmdbox/app/filer.py,sha256=L_DSMTvnbN_ffr3JIt0obbOmVoTHEfVm2cAVz3rLH-Q,16059
|
|
|
22
22
|
cmdbox/app/mcp.py,sha256=ZzpfaZHgNSrTY5Jj5KZzm28LLtW7cAMrS8-NSf6eGMc,32635
|
|
23
23
|
cmdbox/app/options.py,sha256=GVGq9ID46czZsWNlCHkVf33DrM-1oY5ea90ej1-UnFQ,46268
|
|
24
24
|
cmdbox/app/server.py,sha256=woOmIk901ONn5a_2yz_b3I1JpLYIF8g42uQRd0_MRuQ,10417
|
|
25
|
-
cmdbox/app/web.py,sha256=
|
|
25
|
+
cmdbox/app/web.py,sha256=7NkbbkpRgRH41qCANvQKyJIqQmTtLv-foiewjS9A9no,54068
|
|
26
26
|
cmdbox/app/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
27
|
cmdbox/app/auth/azure_signin.py,sha256=jJlIZJIGLZCngnJgoxBajaD2s8nM7QoszuN6-FT-5h8,1953
|
|
28
28
|
cmdbox/app/auth/azure_signin_saml.py,sha256=oM2buGTK4t6-OsUuiUXTlZk0YXZL01khuPYVB84dMDU,472
|
|
@@ -31,7 +31,7 @@ cmdbox/app/auth/google_signin.py,sha256=LErFkKniumKgfE5jlY9_lAneKlqD6BfLHxg2lZgv
|
|
|
31
31
|
cmdbox/app/auth/signin.py,sha256=wBnZMmi7i4BehlfJtXg4owr5HDLOzQCS6Lc2UO-2dPQ,60022
|
|
32
32
|
cmdbox/app/auth/signin_saml.py,sha256=MUM_hqCEjT-8xXNMHa-iH2j24SdBls4SU3k4BopRd48,2457
|
|
33
33
|
cmdbox/app/commons/convert.py,sha256=mkXPNQtX_pEH4L5DzonOY6Dh38SzJ5JQma_EY7UDBqU,7078
|
|
34
|
-
cmdbox/app/commons/loghandler.py,sha256=
|
|
34
|
+
cmdbox/app/commons/loghandler.py,sha256=F86USTtVwJHa2-uHWi2Sypq0sNGy0lVfuwwQdl-6QHE,6431
|
|
35
35
|
cmdbox/app/commons/module.py,sha256=w63zqz5c6gLy-BZJ9dh4Q4C5PZyqM2Iqat5Zr9swJCI,4993
|
|
36
36
|
cmdbox/app/commons/redis_client.py,sha256=cOHshqAGI3CRWLcc2IMhk6MtXsVKlQq6HwcdqYsoA-0,14821
|
|
37
37
|
cmdbox/app/features/cli/agent_base.py,sha256=FShwbXWCfU-pXNTRaWfV_9z5FKeczxWsxidDmXeaQI0,7682
|
|
@@ -61,20 +61,20 @@ cmdbox/app/features/cli/cmdbox_mcp_proxy.py,sha256=xQ3832CdeUZ1WVRQcpoE2Yw4TQ5uR
|
|
|
61
61
|
cmdbox/app/features/cli/cmdbox_server_list.py,sha256=J9FLVq3B5hlEBK88rT867Ey32-bHAHpZy_X9VqjZLvI,5777
|
|
62
62
|
cmdbox/app/features/cli/cmdbox_server_start.py,sha256=ci9vo1G9LtazQo9XYI4-_OdfHHhU_r8gFp-meWeE2vM,7279
|
|
63
63
|
cmdbox/app/features/cli/cmdbox_server_stop.py,sha256=eSdo0vW0PYAU1VIC0-wWsGKNlmZ1J8SOfN18fL_AVrI,8644
|
|
64
|
-
cmdbox/app/features/cli/cmdbox_web_apikey_add.py,sha256=
|
|
65
|
-
cmdbox/app/features/cli/cmdbox_web_apikey_del.py,sha256=
|
|
64
|
+
cmdbox/app/features/cli/cmdbox_web_apikey_add.py,sha256=fpqtVUt-48Ssn4yb4m-vWYs7-CjOROXS2v9QWItsBck,5253
|
|
65
|
+
cmdbox/app/features/cli/cmdbox_web_apikey_del.py,sha256=k9voMzQBA9lvtH3U37OF8Uj97pTH0lTt9aSLk2UP6ik,5231
|
|
66
66
|
cmdbox/app/features/cli/cmdbox_web_gencert.py,sha256=tFqP4dBXeBYCFfNKcdKN49-waJrUCxa_zDcOV9yrIsA,11396
|
|
67
67
|
cmdbox/app/features/cli/cmdbox_web_genpass.py,sha256=f450z1PxofpbrPsJccnHEjkXF975ZsLbBii8RkCgVCM,9541
|
|
68
|
-
cmdbox/app/features/cli/cmdbox_web_group_add.py,sha256=
|
|
69
|
-
cmdbox/app/features/cli/cmdbox_web_group_del.py,sha256=
|
|
70
|
-
cmdbox/app/features/cli/cmdbox_web_group_edit.py,sha256
|
|
71
|
-
cmdbox/app/features/cli/cmdbox_web_group_list.py,sha256=
|
|
68
|
+
cmdbox/app/features/cli/cmdbox_web_group_add.py,sha256=scvYc9OCyaPn87m8X3ONi1bcXzmLS5e5FisjR9KYmp0,5599
|
|
69
|
+
cmdbox/app/features/cli/cmdbox_web_group_del.py,sha256=tmxpz_cK7PSZdiA0R94Ospf10EimNMHre5jBnpJsyKw,4809
|
|
70
|
+
cmdbox/app/features/cli/cmdbox_web_group_edit.py,sha256=-V3czGmUFJVcJOS7EiaT6cVPPqa7tRgtrJq7DaI6XWw,5538
|
|
71
|
+
cmdbox/app/features/cli/cmdbox_web_group_list.py,sha256=LfnXCNwgOFg_W-eQzDW8nXjdOKAmju5o1v5_8D9v1_A,4904
|
|
72
72
|
cmdbox/app/features/cli/cmdbox_web_start.py,sha256=uNFXWpmrhMY6AEzYgf5RXlkc7yzHJIIJZs5dJ_7TZNU,17848
|
|
73
73
|
cmdbox/app/features/cli/cmdbox_web_stop.py,sha256=5ja4IiWRSpfRrWfoRncMRmofEYj8MDfIFUcWfDtIOQ4,3567
|
|
74
|
-
cmdbox/app/features/cli/cmdbox_web_user_add.py,sha256=
|
|
75
|
-
cmdbox/app/features/cli/cmdbox_web_user_del.py,sha256=
|
|
76
|
-
cmdbox/app/features/cli/cmdbox_web_user_edit.py,sha256=
|
|
77
|
-
cmdbox/app/features/cli/cmdbox_web_user_list.py,sha256=
|
|
74
|
+
cmdbox/app/features/cli/cmdbox_web_user_add.py,sha256=rl5QDDw6hzKNN797II7zn7hFkejsCjabHera6TWxvNg,6791
|
|
75
|
+
cmdbox/app/features/cli/cmdbox_web_user_del.py,sha256=xGJs1XFuLVRlA0bpiyM5yO9tDMdfxm8VSYf4zZBHB6Y,4772
|
|
76
|
+
cmdbox/app/features/cli/cmdbox_web_user_edit.py,sha256=7Lb5uWlmxOx7Jq39pZm8D1NY3PLpqYJKEe7RoB7abR4,6699
|
|
77
|
+
cmdbox/app/features/cli/cmdbox_web_user_list.py,sha256=ODxHxjOVCnj6VfR3hLDaClVz6ETUyuCMHu4jhiRqGBY,4892
|
|
78
78
|
cmdbox/app/features/web/cmdbox_web_agent.py,sha256=yBbPszQAkw3yfukJJ-xnQNoOsTsi32lm3WxR4iAMhJ4,14542
|
|
79
79
|
cmdbox/app/features/web/cmdbox_web_assets.py,sha256=D1dYNrvC7xBAVAAHX6PkoB6RFehEofET4hkHeCFYq7s,1931
|
|
80
80
|
cmdbox/app/features/web/cmdbox_web_audit.py,sha256=-flyijdnh3hN-BKnw0GI3gSiduLP0vQFg_AiYCLXRBY,3359
|
|
@@ -85,7 +85,7 @@ cmdbox/app/features/web/cmdbox_web_del_cmd.py,sha256=3Bx2tuXJXc63yip9gWH2bXBydD4
|
|
|
85
85
|
cmdbox/app/features/web/cmdbox_web_del_pipe.py,sha256=tPLvuLqk-MQjkh5WZfw9gL3ujR_W18raEwX_EKddNZw,1193
|
|
86
86
|
cmdbox/app/features/web/cmdbox_web_do_signin.py,sha256=Je9pYIdihmagP2eaIfyz6zIBbLc7_wHKxewjAQrt3IA,20787
|
|
87
87
|
cmdbox/app/features/web/cmdbox_web_do_signout.py,sha256=b64XcmioyuyEL6VFymcs5kFIt4zviqhqJbFUWRCdMo0,1109
|
|
88
|
-
cmdbox/app/features/web/cmdbox_web_exec_cmd.py,sha256=
|
|
88
|
+
cmdbox/app/features/web/cmdbox_web_exec_cmd.py,sha256=cwiG8f2sn0rJwKZaff2zRtBjj6FqFIeGWcUqwsynC7c,13298
|
|
89
89
|
cmdbox/app/features/web/cmdbox_web_exec_pipe.py,sha256=W9jd_9MTzC9GzgEd8X5C9Jwsn8pt6-_TFxyrHfO4iWk,10581
|
|
90
90
|
cmdbox/app/features/web/cmdbox_web_filer download.py,sha256=CVRDv0TZAEd87nzlquIO2O3rSm_tpc3i88H27FgNW4Y,2344
|
|
91
91
|
cmdbox/app/features/web/cmdbox_web_filer.py,sha256=2BdkOQFvaMMxtSoRz07RjercnfG51yChZiVrQGRDRTQ,1871
|
|
@@ -379,9 +379,9 @@ cmdbox/web/assets/tree-menu/image/file.png,sha256=Uw4zYkHyuoZ_kSVkesHAeSeA_g9_LP
|
|
|
379
379
|
cmdbox/web/assets/tree-menu/image/folder-close.png,sha256=TcgsKTBBF2ejgzekOEDBFBxsJf-Z5u0x9IZVi4GBR-I,284
|
|
380
380
|
cmdbox/web/assets/tree-menu/image/folder-open.png,sha256=DT7y1GRK4oXJkFvqTN_oSGM5ZYARzPvjoCGL6wqkoo0,301
|
|
381
381
|
cmdbox/web/assets/tree-menu/js/tree-menu.js,sha256=-GkZxI7xzHuXXHYQBHAVTcuKX4TtoiMuyIms6Xc3pxk,1029
|
|
382
|
-
cmdbox-0.6.3.dist-info/LICENSE,sha256=sBzzPc5v-5LBuIFi2V4olsnoVg-3EBI0zRX5r19SOxE,1117
|
|
383
|
-
cmdbox-0.6.3.dist-info/METADATA,sha256=
|
|
384
|
-
cmdbox-0.6.3.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
385
|
-
cmdbox-0.6.3.dist-info/entry_points.txt,sha256=1LdoMUjTD_YdxlsAiAiJ1cREcXFG8-Xg2xQTNYoNpT4,47
|
|
386
|
-
cmdbox-0.6.3.dist-info/top_level.txt,sha256=eMEkD5jn8_0PkCAL8h5xJu4qAzF2O8Wf3vegFkKUXR4,7
|
|
387
|
-
cmdbox-0.6.3.dist-info/RECORD,,
|
|
382
|
+
cmdbox-0.6.3.2.dist-info/LICENSE,sha256=sBzzPc5v-5LBuIFi2V4olsnoVg-3EBI0zRX5r19SOxE,1117
|
|
383
|
+
cmdbox-0.6.3.2.dist-info/METADATA,sha256=JEA6co8dTSOYH28LWFD30P6Sqzo078sF1C2eun2835I,33524
|
|
384
|
+
cmdbox-0.6.3.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
385
|
+
cmdbox-0.6.3.2.dist-info/entry_points.txt,sha256=1LdoMUjTD_YdxlsAiAiJ1cREcXFG8-Xg2xQTNYoNpT4,47
|
|
386
|
+
cmdbox-0.6.3.2.dist-info/top_level.txt,sha256=eMEkD5jn8_0PkCAL8h5xJu4qAzF2O8Wf3vegFkKUXR4,7
|
|
387
|
+
cmdbox-0.6.3.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|