cmdbox 0.5.0.8__py3-none-any.whl → 0.5.1__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.

Files changed (51) hide show
  1. cmdbox/app/edge.py +96 -12
  2. cmdbox/app/features/cli/cmdbox_edge_config.py +9 -3
  3. cmdbox/app/features/cli/cmdbox_gui_start.py +1 -1
  4. cmdbox/app/features/cli/cmdbox_web_start.py +2 -1
  5. cmdbox/app/features/web/cmdbox_web_bbforce_cmd.py +1 -1
  6. cmdbox/app/features/web/cmdbox_web_copyright.py +1 -1
  7. cmdbox/app/features/web/cmdbox_web_del_cmd.py +1 -1
  8. cmdbox/app/features/web/cmdbox_web_del_pipe.py +1 -1
  9. cmdbox/app/features/web/cmdbox_web_do_signin.py +88 -32
  10. cmdbox/app/features/web/cmdbox_web_exec_cmd.py +2 -2
  11. cmdbox/app/features/web/cmdbox_web_exec_pipe.py +2 -2
  12. cmdbox/app/features/web/cmdbox_web_filer download.py +2 -3
  13. cmdbox/app/features/web/cmdbox_web_filer.py +1 -1
  14. cmdbox/app/features/web/cmdbox_web_filer_upload.py +1 -1
  15. cmdbox/app/features/web/cmdbox_web_get_cmd_choices.py +1 -1
  16. cmdbox/app/features/web/cmdbox_web_get_cmds.py +2 -2
  17. cmdbox/app/features/web/cmdbox_web_get_modes.py +2 -2
  18. cmdbox/app/features/web/cmdbox_web_get_server_opt.py +1 -1
  19. cmdbox/app/features/web/cmdbox_web_gui.py +2 -2
  20. cmdbox/app/features/web/cmdbox_web_list_cmd.py +2 -2
  21. cmdbox/app/features/web/cmdbox_web_list_pipe.py +2 -2
  22. cmdbox/app/features/web/cmdbox_web_load_cmd.py +1 -1
  23. cmdbox/app/features/web/cmdbox_web_load_pin.py +3 -5
  24. cmdbox/app/features/web/cmdbox_web_load_pipe.py +1 -1
  25. cmdbox/app/features/web/cmdbox_web_raw_cmd.py +1 -1
  26. cmdbox/app/features/web/cmdbox_web_raw_pipe.py +1 -1
  27. cmdbox/app/features/web/cmdbox_web_result.py +2 -2
  28. cmdbox/app/features/web/cmdbox_web_save_cmd.py +1 -1
  29. cmdbox/app/features/web/cmdbox_web_save_pin.py +2 -2
  30. cmdbox/app/features/web/cmdbox_web_save_pipe.py +1 -1
  31. cmdbox/app/features/web/cmdbox_web_signin.py +26 -8
  32. cmdbox/app/features/web/cmdbox_web_users.py +35 -37
  33. cmdbox/app/features/web/cmdbox_web_versions_cmdbox.py +1 -1
  34. cmdbox/app/features/web/cmdbox_web_versions_used.py +1 -1
  35. cmdbox/app/options.py +8 -8
  36. cmdbox/app/web.py +76 -555
  37. cmdbox/extensions/sample_project/sample/extensions/features.yml +38 -13
  38. cmdbox/extensions/sample_project/sample/extensions/user_list.yml +82 -40
  39. cmdbox/extensions/user_list.yml +10 -0
  40. cmdbox/version.py +2 -2
  41. cmdbox/web/assets/cmdbox/list_cmd.js +50 -2
  42. cmdbox/web/assets/cmdbox/signin.js +7 -0
  43. cmdbox/web/gui.html +1 -0
  44. cmdbox/web/signin.html +7 -0
  45. {cmdbox-0.5.0.8.dist-info → cmdbox-0.5.1.dist-info}/METADATA +1 -1
  46. {cmdbox-0.5.0.8.dist-info → cmdbox-0.5.1.dist-info}/RECORD +50 -51
  47. cmdbox/app/signin.py +0 -56
  48. {cmdbox-0.5.0.8.dist-info → cmdbox-0.5.1.dist-info}/LICENSE +0 -0
  49. {cmdbox-0.5.0.8.dist-info → cmdbox-0.5.1.dist-info}/WHEEL +0 -0
  50. {cmdbox-0.5.0.8.dist-info → cmdbox-0.5.1.dist-info}/entry_points.txt +0 -0
  51. {cmdbox-0.5.0.8.dist-info → cmdbox-0.5.1.dist-info}/top_level.txt +0 -0
@@ -1,17 +1,19 @@
1
1
  features:
2
- cli:
3
- - package: sample.app.features.cli
4
- prefix: sample_
5
- web:
6
- - package: sample.app.features.web
7
- prefix: sample_web_
8
- args:
9
- cli:
10
- - rule:
11
- mode: web
12
- default:
13
- coercion:
14
- assets:
2
+ cli: # Specify a list of package names in which the module implementing the command is located.
3
+ - package: sample.app.features.cli # Package Name. Classes inheriting from cmdbox.app.feature.Feature.
4
+ prefix: sample_ # Module name prefix. Modules that begin with this letter are eligible.
5
+ exclude_modules: [] # Specify the module name to exclude from the list of modules to be loaded.
6
+ web: # Specify a list of package names with modules that implement web screens and RESTAPIs.
7
+ - package: sample.app.features.web # Package Name. Classes inheriting from cmdbox.app.feature.WebFeature .
8
+ prefix: sample_web_ # Module name prefix. Modules that begin with this letter are eligible.
9
+ args: # Specifies default or forced arguments for the specified command.
10
+ cli: # Specify rules to apply default values or force arguments.
11
+ - rule: # Specify the rules for applying default values and forced arguments for each command line option.
12
+ mode: web # e.g. mode: web
13
+ default: # Specify a default value for each item to be set when a rule is matched.
14
+ # e.g. doc_root: f"{Path(self.ver.__file__).parent / 'web'}"
15
+ coercion: # Specify a coercion value for each item to be set when a rule is matched.
16
+ assets: # e.g. doc_root: f"{Path(self.ver.__file__).parent / 'web'}"
15
17
  - f"{Path(self.ver.__file__).parent / 'web' / 'assets'}"
16
18
  doc_root: f"{Path(self.ver.__file__).parent / 'web'}"
17
19
  - rule:
@@ -21,3 +23,26 @@ args:
21
23
  assets:
22
24
  - f"{Path(self.ver.__file__).parent / 'web' / 'assets'}"
23
25
  doc_root: f"{Path(self.ver.__file__).parent / 'web'}"
26
+ aliases: # Specify the alias for the specified command.
27
+ cli: # Specify the alias for the command line.
28
+ - source: # Specifies the command from which the alias originates.
29
+ mode: # Specify the mode of the source command. The exact match "mode" is selected.
30
+ # e.g. client
31
+ cmd: # Specify the source command to be aliased. The regex match "cmd" is selected.
32
+ # e.g. (.+)_(.+)
33
+ target: # Specifies the command to be aliased to.
34
+ mode: # Specify the mode of the target command. Create an alias for this “mode”.
35
+ # e.g. CLIENT
36
+ cmd: # Specify the target command to be aliased. Create an alias for this “cmd”, referring to the regular expression group of source by "{n}".
37
+ # e.g. {2}_{1}
38
+ move: # Specify whether to move the regular expression group of the source to the target.
39
+ # e.g. true
40
+ web: # Specify the alias for the RESTAPI.
41
+ - source: # Specifies the RESTAPI from which the alias originates.
42
+ path: # Specify the path of the source RESTAPI. The regex match "path" is selected.
43
+ # e.g. /exec_(.+)
44
+ target: # Specifies the RESTAPI to be aliased to.
45
+ path: # Specify the path of the target RESTAPI. Create an alias for this “path”, referring to the regular expression group of source by "{n}".
46
+ # e.g. /{1}_exec
47
+ move: # Specify whether to move the regular expression group of the source to the target.
48
+ # e.g. true
@@ -1,10 +1,10 @@
1
- users:
2
- - uid: 1
3
- name: admin
4
- password: admin
5
- hash: plain
6
- groups: [admin]
7
- email: admin@aaa.bbb.jp
1
+ users: # A list of users, each of which is a map that contains the following fields.
2
+ - uid: 1 # An ID that identifies a user. No two users can have the same ID.
3
+ name: admin # A name that identifies the user. No two users can have the same name.
4
+ password: admin # The user's password. The value is hashed with the hash function specified in the next hash field.
5
+ hash: plain # The hash function used to hash the password, which can be plain, md5, sha1, or sha256, or oauth2.
6
+ groups: [admin] # A list of groups to which the user belongs, as specified in the groups field.
7
+ email: admin@aaa.bbb.jp # The email address of the user, used when authenticating using the provider specified in the oauth2 field.
8
8
  - uid: 101
9
9
  name: user01
10
10
  password: b75705d7e35e7014521a46b532236ec3
@@ -23,42 +23,53 @@ users:
23
23
  hash: sha256
24
24
  groups: [editor]
25
25
  email: user03@aaa.bbb.jp
26
- groups:
27
- - gid: 1
28
- name: admin
26
+ groups: # A list of groups, each of which is a map that contains the following fields.
27
+ - gid: 1 # An ID that identifies a group. No two groups can have the same ID.
28
+ name: admin # A name that identifies the group. No two groups can have the same name.
29
+ - gid: 2
30
+ name: guest
29
31
  - gid: 101
30
32
  name: user
31
33
  - gid: 102
32
34
  name: readonly
33
- parent: user
35
+ parent: user # The parent group of the group. If the parent group is not specified, the group is a top-level group.
34
36
  - gid: 103
35
37
  name: editor
36
38
  parent: user
37
- cmdrule:
38
- policy: deny # allow, deny
39
- rules:
39
+
40
+ cmdrule: # A list of command rules, Specify a rule that determines whether or not a command is executable when executed by a user in web mode.
41
+ policy: deny # Specify the default policy for the rule. The value can be allow or deny.
42
+ rules: # Specify rules to allow or deny execution of the command, depending on the group the user belongs to.
40
43
  - groups: [admin]
41
44
  rule: allow
42
- - groups: [user]
43
- mode: client
44
- cmds: [file_download, file_list, server_info]
45
- rule: allow
45
+ - groups: [user] # Specify the groups to which the rule applies.
46
+ mode: client # Specify the "mode" as the condition for applying the rule.
47
+ cmds: [file_download, file_list, server_info] # Specify the "cmd" to which the rule applies. Multiple items can be specified in a list.
48
+ rule: allow # Specifies whether or not the specified command is allowed for the specified group. The value can be allow or deny.
46
49
  - groups: [user]
47
50
  mode: server
48
51
  cmds: [list]
49
52
  rule: allow
53
+ - groups: [user, guest]
54
+ mode: web
55
+ cmds: [genpass]
56
+ rule: allow
50
57
  - groups: [editor]
51
58
  mode: client
52
59
  cmds: [file_copy, file_mkdir, file_move, file_remove, file_rmdir, file_upload]
53
60
  rule: allow
54
- pathrule:
55
- policy: deny # allow, deny
56
- rules:
57
- - groups: [admin]
58
- paths: [/]
61
+ pathrule: # List of RESTAPI rules, rules that determine whether or not a RESTAPI can be executed when a user in web mode accesses it.
62
+ policy: deny # Specify the default policy for the rule. The value can be allow or deny.
63
+ rules: # Specify rules to allow or deny execution of the RESTAPI, depending on the group the user belongs to.
64
+ - groups: [admin] # Specify the groups to which the rule applies.
65
+ paths: [/] # Specify the "path" to which the rule applies. Multiple items can be specified in a list.
66
+ rule: allow # Specifies whether or not the specified RESTAPI is allowed for the specified group. The value can be allow or deny.
67
+ - groups: [guest]
68
+ paths: [/signin, /assets, /copyright, /dosignin, /dosignout, /password/change,
69
+ /gui, /get_server_opt, /usesignout, /versions_cmdbox, /versions_used]
59
70
  rule: allow
60
71
  - groups: [user]
61
- paths: [/signin, /assets, /bbforce_cmd, /copyright, /dosignin, /dosignout,
72
+ paths: [/signin, /assets, /bbforce_cmd, /copyright, /dosignin, /dosignout, /password/change,
62
73
  /exec_cmd, /exec_pipe, /filer, /gui, /get_server_opt, /usesignout, /versions_cmdbox, /versions_used]
63
74
  rule: allow
64
75
  - groups: [readonly]
@@ -67,21 +78,52 @@ pathrule:
67
78
  - groups: [editor]
68
79
  paths: [/gui/del_cmd, /gui/del_pipe, /gui/save_cmd, /gui/save_pipe]
69
80
  rule: allow
70
- oauth2:
71
- providers:
72
- google:
73
- enabled: false
74
- client_id: XXXXXXXXXXX
75
- client_secret: XXXXXXXXXXX
76
- redirect_uri: https://localhost:8443/oauth2/google/callback
77
- scope: ['email']
78
- note:
81
+ password: # Password settings.
82
+ policy: # Password policy settings.
83
+ enabled: true # Specify whether or not to enable password policy.
84
+ not_same_before: true # Specify whether or not to allow the same password as the previous one.
85
+ min_length: 16 # Specify the minimum length of the password.
86
+ max_length: 64 # Specify the maximum length of the password.
87
+ min_lowercase: 1 # Specify the minimum number of lowercase letters in the password.
88
+ min_uppercase: 1 # Specify the minimum number of uppercase letters in the password.
89
+ min_digit: 1 # Specify the minimum number of digits in the password.
90
+ min_symbol: 1 # Specify the minimum number of symbol characters in the password.
91
+ not_contain_username: true # Specify whether or not to include the username in the password.
92
+ expiration: # Password expiration settings.
93
+ enabled: true # Specify whether or not to enable password expiration.
94
+ period: 90 # Specify the number of days after which the password will expire.
95
+ notify: 7 # Specify the number of days before the password expires that a notification will be sent.
96
+ lockout: # Account lockout settings.
97
+ enabled: true # Specify whether or not to enable account lockout.
98
+ threshold: 5 # Specify the number of failed login attempts before the account is locked.
99
+ reset: 30 # Specify the number of minutes after which the failed login count will be reset.
100
+ oauth2: # OAuth2 settings.
101
+ providers: # This is a per-provider setting for OAuth2.
102
+ google: # Google's OAuth2 configuration.
103
+ enabled: false # Specify whether to enable Google's OAuth2.
104
+ client_id: XXXXXXXXXXX # Specify Google's OAuth2 client ID.
105
+ client_secret: XXXXXXXXXXX # Specify Google's OAuth2 client secret.
106
+ redirect_uri: https://localhost:8443/oauth2/google/callback # Specify Google's OAuth2 redirect URI.
107
+ scope: ['email'] # Specify the scope you want to retrieve with Google's OAuth2. Usually, just reading the email is sufficient.
108
+ signin_module: # Specify the module name that implements the sign-in. see, cmdbox.app.signin.SignIn
109
+ note: # Specify a description such as Google's OAuth2 reference site.
79
110
  - https://developers.google.com/identity/protocols/oauth2/web-server?hl=ja#httprest
80
- github:
81
- enabled: false
82
- client_id: XXXXXXXXXXX
83
- client_secret: XXXXXXXXXXX
84
- redirect_uri: https://localhost:8443/oauth2/github/callback
85
- scope: ['user:email']
86
- note:
111
+ github: # OAuth2 settings for GitHub.
112
+ enabled: false # Specify whether to enable OAuth2 for GitHub.
113
+ client_id: XXXXXXXXXXX # Specify the OAuth2 client ID for GitHub.
114
+ client_secret: XXXXXXXXXXX # Specify the GitHub OAuth2 client secret.
115
+ redirect_uri: https://localhost:8443/oauth2/github/callback # Specify the OAuth2 redirect URI for GitHub.
116
+ scope: ['user:email'] # Specify the scope you want to get from GitHub's OAuth2. Usually, just reading the email is sufficient.
117
+ signin_module: # Specify the module name that implements the sign-in. see, cmdbox.app.signin.SignIn
118
+ note: # Specify a description, such as a reference site for OAuth2 on GitHub.
87
119
  - https://docs.github.com/ja/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps#scopes
120
+ azure: # OAuth2 settings for Azure AD.
121
+ enabled: false # Specify whether to enable OAuth2 for Azure AD.
122
+ tenant_id: XXXXXXXXXXX # Specify the tenant ID for Azure AD.
123
+ client_id: XXXXXXXXXXX # Specify the OAuth2 client ID for Azure AD.
124
+ client_secret: XXXXXXXXXXX # Specify the Azure AD OAuth2 client secret.
125
+ redirect_uri: https://localhost:8443/oauth2/azure/callback # Specify the OAuth2 redirect URI for Azure AD.
126
+ scope: ['openid', 'profile', 'email', 'https://graph.microsoft.com/mail.read']
127
+ signin_module: # Specify the module name that implements the sign-in. see, cmdbox.app.signin.SignIn
128
+ note: # Specify a description, such as a reference site for Azure AD's OAuth2.
129
+ - https://learn.microsoft.com/ja-jp/entra/identity-platform/v2-oauth2-auth-code-flow
@@ -116,3 +116,13 @@ oauth2: # OAuth2 settings.
116
116
  signin_module: # Specify the module name that implements the sign-in. see, cmdbox.app.signin.SignIn
117
117
  note: # Specify a description, such as a reference site for OAuth2 on GitHub.
118
118
  - https://docs.github.com/ja/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps#scopes
119
+ azure: # OAuth2 settings for Azure AD.
120
+ enabled: false # Specify whether to enable OAuth2 for Azure AD.
121
+ tenant_id: XXXXXXXXXXX # Specify the tenant ID for Azure AD.
122
+ client_id: XXXXXXXXXXX # Specify the OAuth2 client ID for Azure AD.
123
+ client_secret: XXXXXXXXXXX # Specify the Azure AD OAuth2 client secret.
124
+ redirect_uri: https://localhost:8443/oauth2/azure/callback # Specify the OAuth2 redirect URI for Azure AD.
125
+ scope: ['openid', 'profile', 'email', 'https://graph.microsoft.com/mail.read']
126
+ signin_module: # Specify the module name that implements the sign-in. see, cmdbox.app.signin.SignIn
127
+ note: # Specify a description, such as a reference site for Azure AD's OAuth2.
128
+ - https://learn.microsoft.com/ja-jp/entra/identity-platform/v2-oauth2-auth-code-flow
cmdbox/version.py CHANGED
@@ -1,9 +1,9 @@
1
1
  import datetime
2
2
 
3
- dt_now = datetime.datetime(2025, 3, 16)
3
+ dt_now = datetime.datetime(2025, 3, 26)
4
4
  __appid__ = 'cmdbox'
5
5
  __title__ = 'cmdbox (Command Development Application)'
6
- __version__ = '0.5.0.8'
6
+ __version__ = '0.5.1'
7
7
  __copyright__ = f'Copyright © 2023-{dt_now.strftime("%Y")} hamacom2004jp'
8
8
  __pypiurl__ = 'https://pypi.org/project/cmdbox/'
9
9
  __srcurl__ = 'https://github.com/hamacom2004jp/cmdbox'
@@ -15,11 +15,58 @@ const list_cmd_func = async () => {
15
15
  }
16
16
  elem.find('.cmd_title').text(row.title);
17
17
  elem.find('.cmd_mode').text(row.mode);
18
- elem.find('.cmd_cmd').text(row.cmd);
18
+ elem.find('.cmd_cmd').text(row.cmd)
19
+ if (row.tag && Array.isArray(row.tag)) {
20
+ const tags = new Set([...row.tag]);
21
+ elem.find('.cmd_card').attr('data-tags', Array.from(tags).join(','));
22
+ }
19
23
  $('#cmd_items').append(elem);
20
24
  };
21
25
  py_list_cmd.forEach(row => {card_func(row, true)});
22
26
  py_list_cmd.forEach(row => {card_func(row, false)});
27
+ $('#cmd_item_tags').html('');
28
+ py_list_cmd.forEach(row => {
29
+ if (!row.tag || !Array.isArray(row.tag)) return;
30
+ const cmd_item_tags = $('#cmd_item_tags');
31
+ row.tag.forEach(tag => {
32
+ if (tag=='') return;
33
+ if (cmd_item_tags.find(`[data-tag="${tag}"]`).length > 0) return;
34
+ const elem = $(`<button type="button" class="btn btn-outline-secondary btn-sm btn-tag me-2">${tag}</button>`);
35
+ elem.attr('data-tag', tag);
36
+ elem.text(tag);
37
+ elem.click((e) => {
38
+ const ct = $(e.currentTarget);
39
+ const cmd_items = $('#cmd_items').find('.cmd_card:not(.cmd_add)');
40
+ if (ct.hasClass('btn-secondary')) {
41
+ ct.removeClass('btn-secondary');
42
+ ct.addClass('btn-outline-secondary');
43
+ }
44
+ else if (ct.hasClass('btn-outline-secondary')) {
45
+ ct.removeClass('btn-outline-secondary');
46
+ ct.addClass('btn-secondary');
47
+ }
48
+ const tags = new Set();
49
+ cmd_item_tags.find('.btn-tag').each((i, elem) => {
50
+ if ($(elem).hasClass('btn-secondary')) tags.add($(elem).attr('data-tag'));
51
+ });
52
+ if (tags.size == 0) {
53
+ cmd_items.parent().show();
54
+ return;
55
+ }
56
+ cmd_items.parent().hide();
57
+ tags.forEach(tag => {
58
+ cmd_items.each((i, elem) => {
59
+ const el = $(elem);
60
+ const itags = el.attr('data-tags');
61
+ if (!itags) return;
62
+ else if (itags.split(',').includes(tag)) el.parent().show();
63
+ });
64
+ });
65
+ });
66
+ cmd_item_tags.append(elem);
67
+ });
68
+
69
+ });
23
70
  }
24
71
  // コマンドファイルの取得が出来た時の処理
25
72
  const list_cmd_func_then = () => {
@@ -211,7 +258,8 @@ const list_cmd_func_then = () => {
211
258
  }
212
259
  title.append(`<span>${row.opt}</span>`);
213
260
  if (row.hide) {
214
- elem.addClass('row_content_hide').hide();
261
+ if (row_content.find('.row_content_hide').is(':hidden')) elem.hide();
262
+ elem.addClass('row_content_hide');
215
263
  } else {
216
264
  title.addClass('text-decoration-underline');
217
265
  }
@@ -58,6 +58,7 @@ $(() => {
58
58
  });
59
59
  const btn_google = $('.btn-google');
60
60
  const btn_github = $('.btn-github');
61
+ const btn_azure = $('.btn-azure');
61
62
  btn_google.off('click').on('click', async (event) => {
62
63
  const path = window.location.pathname.replace('/signin', '');
63
64
  window.location.href = `../oauth2/google${path}?n=${cmdbox.randam_string(8)}`;
@@ -66,11 +67,17 @@ $(() => {
66
67
  const path = window.location.pathname.replace('/signin', '');
67
68
  window.location.href = `../oauth2/github${path}?n=${cmdbox.randam_string(8)}`;
68
69
  });
70
+ btn_azure.off('click').on('click', async (event) => {
71
+ const path = window.location.pathname.replace('/signin', '');
72
+ window.location.href = `../oauth2/azure${path}?n=${cmdbox.randam_string(8)}`;
73
+ });
69
74
  oauth2_enabled().then((res) => {
70
75
  if (res.google) btn_google.show();
71
76
  else btn_google.hide();
72
77
  if (res.github) btn_github.show();
73
78
  else btn_github.hide();
79
+ if (res.azure) btn_azure.show();
80
+ else btn_azure.hide();
74
81
  });
75
82
  });
76
83
  const get_client_data = async () => {
cmdbox/web/gui.html CHANGED
@@ -113,6 +113,7 @@
113
113
  Commands :
114
114
  <input id="cmd_kwd" name="cmd_kwd" type="text" class="form-control d-inline-block" style="width:200px;" placeholder="Search title">
115
115
  </h2>
116
+ <div id="cmd_item_tags" class="mb-2"></div>
116
117
  <div id="cmd_items" class="row">
117
118
  </div>
118
119
  <div class="d-none">
cmdbox/web/signin.html CHANGED
@@ -30,6 +30,9 @@
30
30
  <symbol id="github" viewBox="0 0 16 16">
31
31
  <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
32
32
  </symbol>
33
+ <symbol id="azure" viewBox="0 0 16 16">
34
+ <path d="M7.462 0H0v7.19h7.462zM16 0H8.538v7.19H16zM7.462 8.211H0V16h7.462zm8.538 0H8.538V16H16z"/>
35
+ </symbol>
33
36
  <symbol id="svg_eye_btn" viewBox="0 0 16 16">
34
37
  <path d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8M1.173 8a13 13 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5s3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5s-3.879-1.168-5.168-2.457A13 13 0 0 1 1.172 8z"/>
35
38
  <path d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0"/>
@@ -91,6 +94,10 @@
91
94
  </div>
92
95
  <button class="btn btn-primary w-100 py-2" type="submit">Sign in</button>
93
96
  <div class="mt-3">
97
+ <button class="btn btn-outline-primary w-100 py-2 mb-3 btn-azure" type="button" style="display:none;">
98
+ <svg class="bi my-1 theme-icon-active" fill="currentColor" width="16" height="16"><use href="#azure"></use></svg>
99
+ Sign in with Microsoft
100
+ </button>
94
101
  <button class="btn btn-outline-primary w-100 py-2 mb-3 btn-google" type="button" style="display:none;">
95
102
  <svg class="bi my-1 theme-icon-active" fill="currentColor" width="16" height="16"><use href="#google"></use></svg>
96
103
  Sign in with Google
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cmdbox
3
- Version: 0.5.0.8
3
+ Version: 0.5.1
4
4
  Summary: cmdbox: It is a command line application with a plugin mechanism.
5
5
  Home-page: https://github.com/hamacom2004jp/cmdbox
6
6
  Author: hamacom2004jp
@@ -6,18 +6,17 @@ cmdbox/logconf_edge.yml,sha256=RkbUebCJV2z5dLnpgvf4GSFkd-Blzu4vUUDP9CQFwdM,686
6
6
  cmdbox/logconf_gui.yml,sha256=T3yhWoiyp0DW06RjiFG6kS7jScqXYs-KLfC5EYKUImk,686
7
7
  cmdbox/logconf_server.yml,sha256=tpDpKQXgTWzUnHKGU-Vvsha7n1hyIyFdLnSeCgnOgyk,701
8
8
  cmdbox/logconf_web.yml,sha256=lzr3ytjqRbQutbhEOJdHJT0hrrR_h9sPkaEQkzX02lo,686
9
- cmdbox/version.py,sha256=NhSu1Nz84OuNSy4YY1fAowqPGPE0AMF6fGb8MCM1UHw,1963
9
+ cmdbox/version.py,sha256=EckA3XY1hLvl-wMEVk_JMlhiz4BQICd_f8H148-jZDU,1961
10
10
  cmdbox/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  cmdbox/app/app.py,sha256=2rQpTbezCLuy36df89EhKsAfcPjtGepGHSTQZXimcqA,8949
12
12
  cmdbox/app/client.py,sha256=SNM4xxDh5ARxV6I7cDrmbzGc7sXUUwB3tSyIksdT1RY,19562
13
13
  cmdbox/app/common.py,sha256=v31KbYeAD5Cu7nqPn3qKRTSyOfW6pOflHp6EsFhK76Q,21179
14
- cmdbox/app/edge.py,sha256=RlEOz5JZf7nM_SqplmdrcYgqt1P74raM-wOuf2D5x1g,36233
14
+ cmdbox/app/edge.py,sha256=uPFOLP68_WsEC8nx1gvUrb1g1_TNdf0p4IOoH93cEIM,41653
15
15
  cmdbox/app/feature.py,sha256=5pfO8rdqFNjuSaIYv1pK4jaMKScEJMg1UFqzggbNHrY,9651
16
16
  cmdbox/app/filer.py,sha256=L_DSMTvnbN_ffr3JIt0obbOmVoTHEfVm2cAVz3rLH-Q,16059
17
- cmdbox/app/options.py,sha256=A4q4dAFAsTaV_k4z7n7hT2Dl6Ei6DrQ7X0xKoVDK6sM,31092
17
+ cmdbox/app/options.py,sha256=3vwQx5ekrwurSHJLEsd3iXC2f8QevkAiR08ZioTKYPo,30874
18
18
  cmdbox/app/server.py,sha256=rrH_a6zzrx7glp_SqRrc_2gBgRoT9FX0F1bpGxVLX1I,9467
19
- cmdbox/app/signin.py,sha256=Ry4jxUuroOAIAfTYSolMm_izaF27-IS7914I4vhr6yU,2577
20
- cmdbox/app/web.py,sha256=d_lrJi6UWVRbsUGzW_LYdW2VYND1FYSTrh_1bejgrh4,80345
19
+ cmdbox/app/web.py,sha256=9Zu9z7Pkdmz1T6NbJ6cn4rSLOAflrKG8veb5b4pQOqk,45469
21
20
  cmdbox/app/commons/convert.py,sha256=etWeutkPyE8FMz11jw4KJ5uip7qu_CoD1yIqF5iypgg,6754
22
21
  cmdbox/app/commons/loghandler.py,sha256=HFTlsQEshFaIubCH-AjvXOE0swbYtv77kSy2pwRz_8c,3469
23
22
  cmdbox/app/commons/module.py,sha256=RsEyqP9Qty4v0qIEE6VuY4pgMlkhJKNTUhsN5p-sSoM,4880
@@ -31,9 +30,9 @@ cmdbox/app/features/cli/cmdbox_client_file_remove.py,sha256=OY4y2YlGFEgWXg8q7OVv
31
30
  cmdbox/app/features/cli/cmdbox_client_file_rmdir.py,sha256=SlqOLHdV4kWzORbMvk8P9G24WiEZ0VUR3gpvAtxGU_Y,11329
32
31
  cmdbox/app/features/cli/cmdbox_client_file_upload.py,sha256=w8vbNttQ_V-R3UWkj0iKKXT0-G6_gIReq7KSMby2xJo,13184
33
32
  cmdbox/app/features/cli/cmdbox_client_server_info.py,sha256=6cCWFoFF0stCw7Mn57LUFgUDCKFPThzAerTMuYnLc-I,9398
34
- cmdbox/app/features/cli/cmdbox_edge_config.py,sha256=CzuF4YlngUTOBOr6jDAe-jzQ-psb9OVXMxIEtjKddYQ,7240
33
+ cmdbox/app/features/cli/cmdbox_edge_config.py,sha256=CrLeewVflWbPhSfhifxpWmJ_pLP1LkJfYaQrmwVGnek,7846
35
34
  cmdbox/app/features/cli/cmdbox_edge_start.py,sha256=SWI0SEdergvVBuewyypH5cWrCZSm_M365RRkGxSLqB8,3849
36
- cmdbox/app/features/cli/cmdbox_gui_start.py,sha256=A15Iol1nRCd_kTMKTyM-uKYEnEd3I_ZYPQRI8fw6Tks,14403
35
+ cmdbox/app/features/cli/cmdbox_gui_start.py,sha256=sgnWlOvo_8vtYNbsM4f6j0qSwFaoe0r8epGPqSV6bzU,14403
37
36
  cmdbox/app/features/cli/cmdbox_gui_stop.py,sha256=nxaKEM_JSbndcbuHo2CSv7XX4hQwSf3_XC_aasVcs_Y,2730
38
37
  cmdbox/app/features/cli/cmdbox_server_list.py,sha256=xinPmftRK2WkhuZiC6RPh7ldbqEpYErbNaWZSUcT03I,5689
39
38
  cmdbox/app/features/cli/cmdbox_server_start.py,sha256=2u-J5GlkJxX7a6Sh8Gw8OfsbhkzYz4zhDGXEtSd2CwM,7294
@@ -46,48 +45,48 @@ cmdbox/app/features/cli/cmdbox_web_group_add.py,sha256=pxhR1Pg-EngB3vQmPnAUys4EV
46
45
  cmdbox/app/features/cli/cmdbox_web_group_del.py,sha256=nQfS2zgqDGTZaMdiEZvscIqF84k2Kf_9cwt_aqeJmAE,6597
47
46
  cmdbox/app/features/cli/cmdbox_web_group_edit.py,sha256=M-B3txvtLc4sh6URFWVaHaDJCdz3MrLwkmQKSZ2mr-o,7326
48
47
  cmdbox/app/features/cli/cmdbox_web_group_list.py,sha256=sSj237xq5ZrvBSVh2w7ZDHwbzdDR1oJDwmaCfqbp808,6692
49
- cmdbox/app/features/cli/cmdbox_web_start.py,sha256=aa4TncMVK3cbXDOSYhJ_N__WZziXzbYBIW3b6Fn3nr0,15272
48
+ cmdbox/app/features/cli/cmdbox_web_start.py,sha256=5iIIoyfIcJPU0SokEQKlATMVdCrM-sRIr3a6-Xs80fc,15344
50
49
  cmdbox/app/features/cli/cmdbox_web_stop.py,sha256=mGFRgTvm4lbt9D9O-Gnp3p0E44KQ9TyURMYk_ngTWto,3593
51
50
  cmdbox/app/features/cli/cmdbox_web_user_add.py,sha256=agMXexo99lKALEo4nAQA9BDFN1oTmu8_nCjWL6BSGuc,8547
52
51
  cmdbox/app/features/cli/cmdbox_web_user_del.py,sha256=kj1te2Sogdg8huVPbuVa_a6EBR9sJ6kbmw4VgSRHkaY,6560
53
52
  cmdbox/app/features/cli/cmdbox_web_user_edit.py,sha256=pEXM1Cx8t7aiy2iXURmwfpdMwjFbyjnqXWio-Rey52c,8455
54
53
  cmdbox/app/features/cli/cmdbox_web_user_list.py,sha256=oIkICVqL687h7aC5H-s7gYeW0ibF7Xfmy8NPCV45Aro,6680
55
54
  cmdbox/app/features/web/cmdbox_web_assets.py,sha256=D1dYNrvC7xBAVAAHX6PkoB6RFehEofET4hkHeCFYq7s,1931
56
- cmdbox/app/features/web/cmdbox_web_bbforce_cmd.py,sha256=0nvmbqH8Ubnw4SekQEZe6kynueNsJ2lu3vzzWc2JKr4,1457
57
- cmdbox/app/features/web/cmdbox_web_copyright.py,sha256=jgwQbpLvDkZNnU7J-_JvdpRV9BsiZKNSSvkA6wUF7bw,792
58
- cmdbox/app/features/web/cmdbox_web_del_cmd.py,sha256=GSFXglQza8OOnVJvL53Jr6KEAjTXjD_qRFsTxdKj6lY,1128
59
- cmdbox/app/features/web/cmdbox_web_del_pipe.py,sha256=rTG4kRQJ6c9x5uScPp3ZwHAQz9p_gyQ1wv0M8geBqBw,1136
60
- cmdbox/app/features/web/cmdbox_web_do_signin.py,sha256=uVWXDO8OCAMDkJbAKt8b1AMOoH1EKnjV9svEHUSW1II,17147
55
+ cmdbox/app/features/web/cmdbox_web_bbforce_cmd.py,sha256=5YuO-oyL5HdqTqp2z_A0hMl0kOEwWA8xh8dgpoqpkUk,1464
56
+ cmdbox/app/features/web/cmdbox_web_copyright.py,sha256=kyDHGPQNSmnaZrORevNBvv4gUEgwNzxfDBBO5wmhlbU,799
57
+ cmdbox/app/features/web/cmdbox_web_del_cmd.py,sha256=SInKyL7ElqTedV5l6TaO8LXY-XyhChZ_5s7AAbYZEDU,1135
58
+ cmdbox/app/features/web/cmdbox_web_del_pipe.py,sha256=vqewfron7Aozw4O2fp3H0OcVtIYRzod-TPOVwlRHncM,1143
59
+ cmdbox/app/features/web/cmdbox_web_do_signin.py,sha256=LZkvOmJdcdPIV_RhPTq3moihyMIwp957N-hwWRgBmcI,20623
61
60
  cmdbox/app/features/web/cmdbox_web_do_signout.py,sha256=jROCSIDZ2frn3N8EEZkvjS1_IvBXrWVio-Ee1kV0_yw,910
62
- cmdbox/app/features/web/cmdbox_web_exec_cmd.py,sha256=BwRVD9qYOpEBIj6NvtBH_-Kw9oLB7ZE9qTlfVnVlHE4,11089
63
- cmdbox/app/features/web/cmdbox_web_exec_pipe.py,sha256=uKWQodWO2Pr3dAJf8t5AmDH91vQZ_urp2y2da382hqA,10537
64
- cmdbox/app/features/web/cmdbox_web_filer download.py,sha256=7QaOnN9EGPQsyybWmiKH-uVsibbcPOkVGU8ya2Txszs,2283
65
- cmdbox/app/features/web/cmdbox_web_filer.py,sha256=LtEF0-MupyjysZklsvbBgHEAJaVRRRkP0yW-fWa7tFo,1814
66
- cmdbox/app/features/web/cmdbox_web_filer_upload.py,sha256=aiG7CQOtjR6oSFYOR_JRg937kS8SvlzWA7_PC5xGnJo,2859
67
- cmdbox/app/features/web/cmdbox_web_get_cmd_choices.py,sha256=P4qoYK7_jeA8rDmZYtiNBgmVCc1Zh3MJTQ9QvRiYAts,904
68
- cmdbox/app/features/web/cmdbox_web_get_cmds.py,sha256=5eguTQH6HksnpSVBWhL9Kher2t0ozBYj6MR-M0qNciM,1012
69
- cmdbox/app/features/web/cmdbox_web_get_modes.py,sha256=jaX4q-XzQgMZ2qjRPh-nsdac8h9TdDokRbzoenO-2LU,892
70
- cmdbox/app/features/web/cmdbox_web_get_server_opt.py,sha256=T4JEBo_ntlUeNTebmjXlcIxtWm7cU2hRYrJZPZeR4k0,1020
71
- cmdbox/app/features/web/cmdbox_web_gui.py,sha256=-ZkZo1DU3QP_N26oCJoslbrvbCjZzZ4TEye9AUk1O-g,6594
61
+ cmdbox/app/features/web/cmdbox_web_exec_cmd.py,sha256=kb5gNPD2xE7uyfwtC4Q98vDLXpG7sSpEyvBksonhYpA,11103
62
+ cmdbox/app/features/web/cmdbox_web_exec_pipe.py,sha256=Y2aiPkD0F8-YpHbdQDP4mbTQAZkns4GFf9R6YKrkCtw,10551
63
+ cmdbox/app/features/web/cmdbox_web_filer download.py,sha256=5bq0IeE2eKfxSGjUZdGS_23Rzh_-8qiY5q-VM-1KHh0,2247
64
+ cmdbox/app/features/web/cmdbox_web_filer.py,sha256=IDQ8qXRAkhxJoLHctinh_njHP7-gtF_-JS3DE-OiOok,1821
65
+ cmdbox/app/features/web/cmdbox_web_filer_upload.py,sha256=OnLZfSzaysp-4EoJbOjTQ3tObkqczKb5NrxbA6SsluA,2866
66
+ cmdbox/app/features/web/cmdbox_web_get_cmd_choices.py,sha256=emOF5h8Jrra-6hdWBjytpeVkbbYBFlkD_2eF5XV6Oe0,911
67
+ cmdbox/app/features/web/cmdbox_web_get_cmds.py,sha256=EPwLnfSAwpG4Lao0cZS4qrygkXPm-e8Gw0dVjMDijWs,1026
68
+ cmdbox/app/features/web/cmdbox_web_get_modes.py,sha256=2UgQxQ4bAyzDrCDg4TcmJiMqWpsW3z2Jtxbxngbb5XY,906
69
+ cmdbox/app/features/web/cmdbox_web_get_server_opt.py,sha256=kdyPIfn-tmqtZeqZ_DlHTiB4E57Unl-8tbw9uCrBmMg,1027
70
+ cmdbox/app/features/web/cmdbox_web_gui.py,sha256=Ergz6vYG6dPVlovo7ytswYR_mkNf_8OWFAZvt3Ououg,6608
72
71
  cmdbox/app/features/web/cmdbox_web_gui_callback.py,sha256=R-0edD7YbhsfbDVDv-iK2XHNVEvmrUOVEQuvafxpRJs,2181
73
- cmdbox/app/features/web/cmdbox_web_list_cmd.py,sha256=nQrC4wgZT5VXt-vVbfBPqkLwbHJLfuX6mNZG4DnuWmI,1661
74
- cmdbox/app/features/web/cmdbox_web_list_pipe.py,sha256=uiU8uQbI7xuP1NmvBcixBxhuGOB10_-O3kJZh-vRqEo,2452
75
- cmdbox/app/features/web/cmdbox_web_load_cmd.py,sha256=8I1K6PwxqQzpJ9dUXDXoFlxsc0_X-zyfA4mOHlYh5IU,1707
76
- cmdbox/app/features/web/cmdbox_web_load_pin.py,sha256=9ITLBmiAYj0lNnleXv2BaB0S2ZqfGdUgrRSfeS5R1AQ,1870
77
- cmdbox/app/features/web/cmdbox_web_load_pipe.py,sha256=AafzLxi5xEscZKVzjPRGy4dcVa_i_a_EgBwsVVqi-Ys,1367
78
- cmdbox/app/features/web/cmdbox_web_raw_cmd.py,sha256=m1s1gEMfRnyDS1xtZuC3b5_NHGqhc-fGz5QHKs1zxzo,2061
79
- cmdbox/app/features/web/cmdbox_web_raw_pipe.py,sha256=a7Mm00C7NC2wZ0jR9V24H84cQtV-7fhXTSLz4tVYXhA,4500
80
- cmdbox/app/features/web/cmdbox_web_result.py,sha256=fLC_nn9BnQAgeQb5_YYJf73N5JoOT9XbEUZdwSdizKc,2390
81
- cmdbox/app/features/web/cmdbox_web_save_cmd.py,sha256=9b21yj4yZdEMkJILlpf4ZNCCD1OESHZkzDUf4S3ylKc,2077
82
- cmdbox/app/features/web/cmdbox_web_save_pin.py,sha256=_VVADVwVcA5w4aJ1gVS_P_6YGKf86p3XshYJLzCqy3s,1841
83
- cmdbox/app/features/web/cmdbox_web_save_pipe.py,sha256=WM_HcheM_doP6u6Jx8waeMJGQQUfNERM7jbLvjh1ydY,1557
84
- cmdbox/app/features/web/cmdbox_web_signin.py,sha256=OdKDFm30u1THg8agvhuNxqgu71oo1a0O5Q620gEBRiM,3399
85
- cmdbox/app/features/web/cmdbox_web_users.py,sha256=N1oCSunDJdcIaRrGs-Ap3N87LA04Gs0OmW61An-rmBE,9385
72
+ cmdbox/app/features/web/cmdbox_web_list_cmd.py,sha256=wI3YP_dWsqC_6RnXKJcE_OJZZXFNXPhhIF6Fn-B5P-U,1675
73
+ cmdbox/app/features/web/cmdbox_web_list_pipe.py,sha256=E8eNr74aRe15I7LrsUwiwA9irkpeoeD5tdAo4e4qnh0,2466
74
+ cmdbox/app/features/web/cmdbox_web_load_cmd.py,sha256=Bgc1jcs5dc31U_QriI7GMCCt0FOzp_jWCxFxHtmkJ4Y,1714
75
+ cmdbox/app/features/web/cmdbox_web_load_pin.py,sha256=FCaKheyBgfqDoknKCQWIT3u72iPWpqjNK15VimEBERw,1835
76
+ cmdbox/app/features/web/cmdbox_web_load_pipe.py,sha256=sD79E2azH9u7HY4wlb95sJaAgj-bRg0uein_TpcQRms,1374
77
+ cmdbox/app/features/web/cmdbox_web_raw_cmd.py,sha256=EGGidJsVRccnDhrVUUqEAT_TKs_9mTSQzPmUO3at-p4,2068
78
+ cmdbox/app/features/web/cmdbox_web_raw_pipe.py,sha256=kPE52DTWnP1ppt3-7X_-Zn24lVvw9wwTeSmS4-QmNrk,4507
79
+ cmdbox/app/features/web/cmdbox_web_result.py,sha256=hANYh1Qito_Fzs6qeTBetqWlsjsWlI2az-mNSoPkNf8,2404
80
+ cmdbox/app/features/web/cmdbox_web_save_cmd.py,sha256=06lUgGeKnW2771FuKZ303e8EkLSD_VAB6dDfOYQ9FAM,2084
81
+ cmdbox/app/features/web/cmdbox_web_save_pin.py,sha256=ClZ1M4VsJAOPoriqE2paaOnHcaRg29gbhQTnHC7QSog,1855
82
+ cmdbox/app/features/web/cmdbox_web_save_pipe.py,sha256=3ChbsJELRNmuATHWqbS2LOAsg6s75GEhOi06zbsKF0M,1564
83
+ cmdbox/app/features/web/cmdbox_web_signin.py,sha256=s6DAB-IaxPgI8x8Bj8FT58RhLnMZ4M3-Zi-3ueQH2Ws,4602
84
+ cmdbox/app/features/web/cmdbox_web_users.py,sha256=C8khexjN5AK9BxhHhzL-grF3mKAwMt-3PyqjvFkJTXc,9405
86
85
  cmdbox/app/features/web/cmdbox_web_usesignout.py,sha256=lBjBj8M8e69uXhdv7H92wZfRRWD2j6kmC_WekSCw5yo,682
87
- cmdbox/app/features/web/cmdbox_web_versions_cmdbox.py,sha256=cdMkkHUFPNFqtnUHZPiwF1xmV13EljPDF4__i981uho,811
88
- cmdbox/app/features/web/cmdbox_web_versions_used.py,sha256=JWuFWIIohELx1t1UuCWmbC53D3sGbBLN0jn2hR-yKlk,1315
86
+ cmdbox/app/features/web/cmdbox_web_versions_cmdbox.py,sha256=hG4ikQc0Qr6He8AhYu8kK1GD5TNjezr-VpmCSAFL7Nk,818
87
+ cmdbox/app/features/web/cmdbox_web_versions_used.py,sha256=xA368ASudYFIrJjWOC1MGmsaAE3Mdd5i-Y8sZBWL7p4,1322
89
88
  cmdbox/extensions/features.yml,sha256=Cy69Oy-Ync0M7OxfXGQgrCxD5YFfRHnh0jNNRYSjTWg,3813
90
- cmdbox/extensions/user_list.yml,sha256=-Nhcx4AYZr1LEtJA85zGDQ9XEYzNxP_pAyZaFkWHmI4,7979
89
+ cmdbox/extensions/user_list.yml,sha256=EJDqdsjHozejxO3ClW8mQQvepVPX9CqoVnTWQKkF83c,8887
91
90
  cmdbox/extensions/sample_project/requirements.txt,sha256=z_gUanGVrPeYUExYeU5_gHiOTy8RKZkaJSeKxOM4mqY,18
92
91
  cmdbox/extensions/sample_project/.vscode/launch.json,sha256=Bj_FO1P0lPMfuwZxvyLfwQa0f7Gk276dvcVRjj2aem4,1348
93
92
  cmdbox/extensions/sample_project/sample/__init__.py,sha256=UiUuJV0knNR9PazyIf-pyQGVZXAxHP01UjbwU9GXnRw,69
@@ -97,8 +96,8 @@ cmdbox/extensions/sample_project/sample/version.py,sha256=Yj03cWCvXUFjCGDinEkiB5
97
96
  cmdbox/extensions/sample_project/sample/app/app.py,sha256=2snmsdwgYuHfCNMpGtpOzJJUWJoB5Ovem1JsQRWqZrk,231
98
97
  cmdbox/extensions/sample_project/sample/app/features/cli/sample_client_time.py,sha256=cJ71RsgyhNsfnVIMLiw9FzIy7hlZyh0qxGRk9uFzQn8,3049
99
98
  cmdbox/extensions/sample_project/sample/app/features/cli/sample_server_time.py,sha256=BhwBVUdOOM2UU3pLAEoon9sm316d63Z15vMb3s5eVbc,7288
100
- cmdbox/extensions/sample_project/sample/extensions/features.yml,sha256=oPudcQEnQeKrK0SZ8oB0rnmUqkNMFktU3VXnwpmCGQI,575
101
- cmdbox/extensions/sample_project/sample/extensions/user_list.yml,sha256=qsh7hjvnMXscwh5iFiHbzIq8M_HdSpB44TcODnv0LnA,2221
99
+ cmdbox/extensions/sample_project/sample/extensions/features.yml,sha256=3SJOJeZtstrOdpvV74Funac8IcISlaky-dBwr77hiIM,4148
100
+ cmdbox/extensions/sample_project/sample/extensions/user_list.yml,sha256=OpZqClVYh_QvEGPAlpOTT8iHslv-_TTWeERHRNghGKY,8888
102
101
  cmdbox/extensions/sample_project/sample/web/assets/sample/favicon.ico,sha256=z-jwmfktVBIsYjhUfCOj7ZNiq55GH-uXtbbDRzk7DHQ,9662
103
102
  cmdbox/extensions/sample_project/sample/web/assets/sample/icon.png,sha256=8WmOhepVHG46KG8Sjs4OjZht16dTcgpsNIs972PiVWU,327723
104
103
  cmdbox/licenses/LICENSE.Jinja2.3.1.4(BSD License).txt,sha256=ZI-J-fRTl3-a2K8rHwb7MTxJubc6M_SFq1tDaXWgQYY,1503
@@ -186,9 +185,9 @@ cmdbox/licenses/LICENSE.zope.interface.7.1.1(Zope Public License).txt,sha256=bHk
186
185
  cmdbox/licenses/files.txt,sha256=E_C-9JE8iJeOs-ZY_Lg1B3Brcdqr8G-kJeFnWeSHXUk,14179
187
186
  cmdbox/web/assets_license_list.txt,sha256=TcyF-U5C8O-J3Nxfp3pxralGdazTj8BgLwwEBRn59_w,853
188
187
  cmdbox/web/filer.html,sha256=NQzwJc1k4IDpK1F99vumLC3BO7x_frO6HJcEzI9c0kw,15254
189
- cmdbox/web/gui.html,sha256=5RB9iSpiCLEpFIOJZQ52JRpOYEV5OdAjFxT1UcQOEmQ,34635
188
+ cmdbox/web/gui.html,sha256=rwdRVQPwtDrW07f_07z6h090XwnSRDnwKxBUC-DTG4w,34688
190
189
  cmdbox/web/result.html,sha256=dZcQCLSrhTr7gY50WYCfG2wEWngnV7x9xnYOVl73WSQ,14835
191
- cmdbox/web/signin.html,sha256=blFKNzpmJane-sUF2Xev5F1645oLoq_fuDMYd0_iziU,10556
190
+ cmdbox/web/signin.html,sha256=Rhqvhcq_hZ1svRkHIpy_2BVTJkmw2R4Q4lZo93eQvsE,11063
192
191
  cmdbox/web/users.html,sha256=RHslVrj8FJgV1RI6oMTRuZTu3g7YyXMKKYGeoOzgwG4,19194
193
192
  cmdbox/web/assets/bootstrap/bootstrap.bundle.min.5.3.0.js,sha256=qlPVgvl-tZTCpcxYJFdHB_m6mDe84wRr-l81VoYPTgQ,80421
194
193
  cmdbox/web/assets/bootstrap/bootstrap.min.5.3.0.css,sha256=fx038NkLY4U1TCrBDiu5FWPEa9eiZu01EiLryshJbCo,232914
@@ -196,13 +195,13 @@ cmdbox/web/assets/cmdbox/common.js,sha256=rsegebcs7QtBNi-WEy5-sev-EDIEHV9P-0HZoj
196
195
  cmdbox/web/assets/cmdbox/favicon.ico,sha256=2U4MhqzJklRksOQwnK-MZigZCubxCHqKG_AuNJnvYtA,34494
197
196
  cmdbox/web/assets/cmdbox/filer_modal.js,sha256=hCEk0UR_bjJp9X9blWfmrbZVxKkmO3GGQ44ukSDuHbg,8522
198
197
  cmdbox/web/assets/cmdbox/icon.png,sha256=xdEwDdCS8CoPQk7brW-1mV8FIGYtUeSMBRlY9Oh-3nE,296172
199
- cmdbox/web/assets/cmdbox/list_cmd.js,sha256=a_v1ZOzXzAOaVMZKJmAE8s02oo6ccWBvi8uN2cD6EMw,30589
198
+ cmdbox/web/assets/cmdbox/list_cmd.js,sha256=mGsN4_ZZ8Lgdt6WyZAMe-yGG5DRPc_vXy9Hen9ruKU0,32801
200
199
  cmdbox/web/assets/cmdbox/list_pipe.js,sha256=mlzISyZUG90GbE0gxMzWpwZhzhojxqvft2gne6Vajco,11218
201
200
  cmdbox/web/assets/cmdbox/main.js,sha256=K-tBnZlCpy__juT_HHKfvHzhNJykAjva7LUBJX45XzM,4997
202
201
  cmdbox/web/assets/cmdbox/open_capture.js,sha256=W4IQlOYLN4Y8OaS8Xc5yp-BRlm82TVjujChr3hJKS0M,709
203
202
  cmdbox/web/assets/cmdbox/open_output_json.js,sha256=4q7mCdVmSzFudlTlW9MuIJ1-f-kDvpD6rDUU01IbKi8,727
204
203
  cmdbox/web/assets/cmdbox/result.js,sha256=DHCYMXmuN9UQjwCGJfHE6rmHD0rSwRIxDqPQWHcdl24,3210
205
- cmdbox/web/assets/cmdbox/signin.js,sha256=x2QOTRVdTwy9bAbOD86ZYBB0yIRAjJZ32vNVQCCyWAA,3680
204
+ cmdbox/web/assets/cmdbox/signin.js,sha256=IMb1aGm4kv4MjB9MR8xw9-rKY7UyuV7UNWPB_VwVdhA,4020
206
205
  cmdbox/web/assets/cmdbox/users.js,sha256=RsmMzLZohbU0u3GsXv7W64691se4TKUrhZxISAocc1I,29215
207
206
  cmdbox/web/assets/cmdbox/view_raw.js,sha256=pEPGZD10T3vrjnb-uZupPIhUNMJZu8o6DUucjjdDFQk,2657
208
207
  cmdbox/web/assets/cmdbox/view_result.js,sha256=FCT7uIxFp6TKXmGldjdQo2-SNkhyRtAAMBQ2qF54HVQ,6954
@@ -248,9 +247,9 @@ cmdbox/web/assets/tree-menu/image/file.png,sha256=Uw4zYkHyuoZ_kSVkesHAeSeA_g9_LP
248
247
  cmdbox/web/assets/tree-menu/image/folder-close.png,sha256=TcgsKTBBF2ejgzekOEDBFBxsJf-Z5u0x9IZVi4GBR-I,284
249
248
  cmdbox/web/assets/tree-menu/image/folder-open.png,sha256=DT7y1GRK4oXJkFvqTN_oSGM5ZYARzPvjoCGL6wqkoo0,301
250
249
  cmdbox/web/assets/tree-menu/js/tree-menu.js,sha256=-GkZxI7xzHuXXHYQBHAVTcuKX4TtoiMuyIms6Xc3pxk,1029
251
- cmdbox-0.5.0.8.dist-info/LICENSE,sha256=sBzzPc5v-5LBuIFi2V4olsnoVg-3EBI0zRX5r19SOxE,1117
252
- cmdbox-0.5.0.8.dist-info/METADATA,sha256=mNEz-XXmfFzRSjdGTKCEcImtwsBdcd3-Yjln1FdXyzo,24050
253
- cmdbox-0.5.0.8.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
254
- cmdbox-0.5.0.8.dist-info/entry_points.txt,sha256=PIoRz-tr503YwdMmd6nxuSn2dDltf4cUMVs98E9WgaA,48
255
- cmdbox-0.5.0.8.dist-info/top_level.txt,sha256=eMEkD5jn8_0PkCAL8h5xJu4qAzF2O8Wf3vegFkKUXR4,7
256
- cmdbox-0.5.0.8.dist-info/RECORD,,
250
+ cmdbox-0.5.1.dist-info/LICENSE,sha256=sBzzPc5v-5LBuIFi2V4olsnoVg-3EBI0zRX5r19SOxE,1117
251
+ cmdbox-0.5.1.dist-info/METADATA,sha256=Cwr2Q21QZhC6iPg263joNQAKuANLhffiwsA0G25N_x0,24048
252
+ cmdbox-0.5.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
253
+ cmdbox-0.5.1.dist-info/entry_points.txt,sha256=PIoRz-tr503YwdMmd6nxuSn2dDltf4cUMVs98E9WgaA,48
254
+ cmdbox-0.5.1.dist-info/top_level.txt,sha256=eMEkD5jn8_0PkCAL8h5xJu4qAzF2O8Wf3vegFkKUXR4,7
255
+ cmdbox-0.5.1.dist-info/RECORD,,
cmdbox/app/signin.py DELETED
@@ -1,56 +0,0 @@
1
- from typing import Dict, Any, Tuple, List, Union
2
-
3
-
4
- class Signin(object):
5
-
6
- def __init__(self, appcls, ver):
7
- self.ver = ver
8
- self.appcls = appcls
9
-
10
- def jadge(self, access_token:str, email:str, signin_file_data:Dict[str, Any]) -> Tuple[bool, Dict[str, Any]]:
11
- """
12
- サインインを成功させるかどうかを判定します。
13
- 返すユーザーデータには、uid, name, email, groups, hash が必要です。
14
-
15
- Args:
16
- access_token (str): アクセストークン
17
- email (str): メールアドレス
18
- signin_file_data (Dict[str, Any]): サインインファイルデータ(変更不可)
19
-
20
- Returns:
21
- Tuple[bool, Dict[str, Any]]: (成功かどうか, ユーザーデータ)
22
- """
23
- users = [u for u in signin_file_data['users'] if u['email'] == email and u['hash'] == 'oauth2']
24
- return len(users) > 0, users[0] if len(users) > 0 else None
25
-
26
- def get_groups(self, access_token:str, user:Dict[str, Any], signin_file_data:Dict[str, Any]) -> Tuple[List[str], List[int]]:
27
- """
28
- ユーザーのグループを取得します
29
-
30
- Args:
31
- access_token (str): アクセストークン
32
- user (Dict[str, Any]): ユーザーデータ
33
- signin_file_data (Dict[str, Any]): サインインファイルデータ(変更不可)
34
-
35
- Returns:
36
- Tuple[List[str], List[int]]: (グループ名, グループID)
37
- """
38
- group_names = list(set(self.correct_group(user['groups'], None, signin_file_data)))
39
- gids = [g['gid'] for g in signin_file_data['groups'] if g['name'] in group_names]
40
- return group_names, gids
41
-
42
- def correct_group(self, group_names:List[str], master_groups:List[Dict[str, Any]], signin_file_data:Dict[str, Any]):
43
- """
44
- 指定されたグループ名に属する子グループ名を収集します
45
-
46
- Args:
47
- group_names (List[str]): グループ名リスト
48
- master_groups (List[Dict[str, Any]], optional): 親グループ名. Defaults to None.
49
- signin_file_data (Dict[str, Any]): サインインファイルデータ(変更不可)
50
- """
51
- master_groups = signin_file_data['groups'] if master_groups is None else master_groups
52
- gns = []
53
- for gn in group_names.copy():
54
- gns = [gr['name'] for gr in master_groups if 'parent' in gr and gr['parent']==gn]
55
- gns += self.correct_group(gns, master_groups, signin_file_data)
56
- return group_names + gns