python-rac 0.2.0__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.
@@ -0,0 +1,843 @@
1
+ Metadata-Version: 2.4
2
+ Name: python-rac
3
+ Version: 0.2.0
4
+ Summary: Direct 1C RAS protocol client with CLI, web, desktop and MCP interfaces
5
+ Author: Platform42
6
+ License-Expression: MIT
7
+ Project-URL: Repository, https://gitlab.com/platform42/python-rac
8
+ Project-URL: Issues, https://gitlab.com/platform42/python-rac/-/issues
9
+ Project-URL: Documentation, https://gitlab.com/platform42/python-rac/-/blob/beta/README.md
10
+ Keywords: 1c,ras,rac,administration,mcp
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: System :: Systems Administration
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Provides-Extra: desktop
24
+ Requires-Dist: PySide6<7,>=6.8; extra == "desktop"
25
+ Provides-Extra: mcp
26
+ Requires-Dist: mcp<3,>=2; extra == "mcp"
27
+ Requires-Dist: pydantic<3,>=2; extra == "mcp"
28
+ Dynamic: license-file
29
+
30
+ # Python RAC
31
+
32
+ Install the `python-rac` distribution from PyPI (`pip install python-rac`); import it as `pyrac`. The name `pyrac` on PyPI belongs to an unrelated project. The project is licensed under [MIT](LICENSE). Publishing is not automatic; see the [release checklist](docs/pypi-release.md). Until the first release appears on PyPI, install from this repository with `python -m pip install .`.
33
+
34
+ ## 8.5.1 client and read-mostly dashboards
35
+
36
+ A desktop browser and a local stdio MCP server are implemented, sharing `pyrac.read_service` with the read-only web dashboard. MCP reads have a single 30-second deadline per tool call, including sequential cluster overview reads. These three interfaces currently expose cluster/server/process/infobase reads, **not** every `rac` command. See [desktop scope](docs/desktop-app-plan.md), [MCP scope](docs/mcp-interface-plan.md), and [command inventory](docs/rac-command-coverage.md). Full 16.0 command/option coverage remains incomplete; unsupported operations are not inferred from ACKs or empty lists. The library accepts opt-in `RacClient(protocol='auto')`: negotiate 16.0 first and select 10.0 only if RAS explicitly refuses the 16.0 endpoint; the default remains explicit 16.0. The existing 10.0 adapter now uses the client timeout for its complete command, including the operation after auto fallback, closes its TCP socket on completion, failure or cancellation, and rejects noncanonical or oversized (>4 MB) inbound frame lengths before reading their bodies; its 10.0 response decoder also rejects missing or over-1000 record counts before iterating records. The shared 8.3.11/8.5.1 record decoder likewise bounds nested port-range and session-license counts to 1000, rejects truncated or over-4 MB length-prefixed byte fields, and rejects overlong or noncanonical varints. The `pyrac` command-line client also accepts `--protocol=auto` as an opt-in for read-only actions (for example, `pyrac --protocol=auto agent admin list`); CLI mutation commands and password arguments are rejected before negotiation in this mode. Read-only desktop, web (including per-endpoint workspace selection) and MCP also accept opt-in `--protocol=auto`. The desktop Add RAS selector offers `auto` only when no mutation flags are enabled. Any mutation opt-in still requires explicit `16.0` at startup; never use `auto` for writes. Five additional password-authenticated profile ACL list variants (COM, add-in, module, application and internet) were verified read-only against empty lists on dev-area-06 through native and public clients; populated decoding for these variants remains unverified.
37
+
38
+ ### Local RAS workspace preview
39
+
40
+ The workspace search, server listing and read-only scoped object pages use a compact administration layout: RAS navigation tree, dense object table and an inspector. Scoped pages retain that layout without refetching the RAS tree. Opening `/ras/<index>/tree` expands that RAS into clusters and infobases on demand, with local filtering of the already loaded navigation table; the cluster's “Expand security profiles” link fetches only that RAS's profile names on demand and adds scoped profile/ACL links to a searchable, selectable table and the tree without fetching ACL records or infobases; the cluster's “Expand working servers” link fetches only that RAS's cluster list and selected cluster's working servers (without refetching infobases) and adds their info/processes/rules/service-settings/transfer-directories links to the tree and a selectable server table. Each server's “Expand processes” link then reads only that selected server's processes and adds process/connections links and a selectable process table; a process's “Expand connections” link loads its connections on demand, showing detail/locks links in a searchable table without fetching infobases. The expanded server and process tables have local filters by visible text, and the server-scoped process inventory also offers both detail and connection links per row. Neither the initial tree nor the server expansion eagerly fetches processes; process expansion does not fetch infobases. Cluster inventory, agent version, administrator/info and infobase summary/info/sessions/connections/locks/storage links remain available, plus selectable rows in the central inventory table; other RAS are not queried, and rendering section links fetches no additional inventories. Clicking a search-result or scoped inventory row displays only its already visible fields in the inspector without a new RAS request; the object link still opens its existing route. Keyboard Enter/Space selects a focused row. The desktop starts with a RAS/cluster/section tree covering the existing cluster read-only inventories plus administrator/info views; selecting the Profiles section loads every available profile into the tree, each with six verified ACL list destinations. It also has a cluster-overview table of the already fetched servers, processes, infobases, sessions, connections, managers, limits and counters with per-row detail navigation, row filter and public properties; changing RAS or cluster clears the previous table and inspector before loading the new context; advanced operations and raw responses remain available from the menu. A double-click on desktop infobase, server, process, session, connection, manager, limit, counter, rule, service setting, profile or lock inventory rows opens the existing detail; administrator rows select the name only, never remove an administrator. This is an initial console layout, not yet full tree/table/properties parity on every route or for every command.
41
+
42
+ `pyrac-web --workspace --ras-host=127.0.0.1` opens `/ras`. Additional RAS can be preloaded with repeatable `--ras-server=HOST:PORT/PROTOCOL` (for example, `--ras-server=second.local:2545/auto --ras-server=third.local:3545/10.0`); restart with the same options to restore that initial list. Host, port, and protocol must be explicit; at most 64 unique endpoints are accepted. You can also add or remove RAS endpoints in memory (the last endpoint cannot be removed), browse each server at `/ras/<index>/clusters` (indices remain bound to their RAS for the lifetime of the workspace; removed indices return 404 rather than pointing to another server), browse clusters on all RAS without a search term at read-only `/ras/clusters` (no infobase reads; one shared 30-second deadline including queued servers), browse bases on all RAS without a search term at read-only `/ras/infobases` (one shared deadline; failed clusters are isolated; links remain scoped), browse working servers across RAS without a search term at read-only `/ras/servers` (no infobase or process reads; one shared deadline; links remain scoped), browse working processes across RAS without a search term at read-only `/ras/processes` (PID labels are validated; no infobase or server reads; links remain scoped), browse sessions across RAS without a search term at read-only `/ras/sessions` (validated user labels; no infobase or server reads; links remain scoped), browse connections across RAS without a search term at read-only `/ras/connections` (validated host labels; no infobase or server reads; links remain scoped), browse cluster services across RAS without a search term at read-only `/ras/services` (validated names only; links open the selected cluster's services; shared deadline), browse security profiles across RAS without a search term at read-only `/ras/profiles` (validated names and URL-encoded scoped overview links; shared deadline), search clusters and infobases by name or UUID across all configured servers at `/ras/search`, or select `scope=clusters` (without fetching infobases) or `scope=infobases` to search only one inventory, or select `scope=agent-admins|cluster-admins` to search administrator names/OS users with links to their source RAS lists, `scope=services` to search cluster services by name/description, `scope=locks` to search cluster locks by description, object UUID or connection UUID (results open that connection's locks), or select `scope=servers` to search working servers by name/UUID or `scope=processes` to search processes by PID/UUID or `scope=sessions` to search sessions by user/UUID or `scope=profiles` to search security profiles by name, or `scope=profile-directories|profile-com|profile-addin|profile-module|profile-app|profile-inet` to search names/aliases in the six verified profile ACL lists (without searching sensitive paths or hashes), plus `scope=connections|managers|limits|counters` for cluster objects and `scope=rules|service-settings` for working-server objects (bounded parallel connections and one shared 30-second search deadline including queued endpoints); scoped read-only object pages also have a 30-second deadline across all their sequential reads. Working-server, process, and session tables can be searched by visible properties in the browser. This mode is **read-only**, loopback-only, and cannot be combined with mutation flags or administrator names. Endpoints are not persisted; credentials are never stored. The desktop browser also accepts repeatable `--ras-server=HOST:PORT/PROTOCOL` to preload up to 64 unique RAS endpoints; this startup option is limited to read-only, unauthenticated mode. It has searchable cluster-service and cluster-lock selectors (selecting a lock opens its connection's lock list), an in-memory RAS selector with add/remove controls and an **All clusters** button that lists clusters across RAS without reading infobases, an **All infobases** button that lists bases across RAS without a search term and opens each on its source RAS, and an **All working servers** button that lists servers without fetching infobases or processes and opens each on its source RAS, and an **All working processes** button that lists processes without fetching bases or servers and opens each on its source RAS, and an **All sessions** button that lists sessions without fetching bases or servers and opens each on its source RAS, and an **All connections** button that lists connections without fetching bases or servers and opens each on its source RAS, and an **All services** button that lists validated cluster-service names without fetching bases or servers and opens the source cluster's services, and an **All security profiles** button that lists validated profile names without fetching bases and opens the source profile overview (all eight inventories and cross-RAS search use one shared 30-second deadline including queued endpoints), name/UUID filters for clusters, infobases and working servers (selecting an infobase from the cluster inventory opens its summary), PID/UUID filtering for processes, a user/UUID session filter (selecting a server, process or session from cluster inventory opens its info), host/UUID connection and name/UUID manager filters (selecting a connection, manager, limit or counter from cluster inventory opens its info), name filters for limits and counters, name/UUID filters for server rules and service settings (selecting an item opens its detail), searchable security profiles whose selection opens the profile and ACL overview, searchable agent and cluster administrator lists filtered by name or OS user (selection only prefills an opted-in removal field; it does not remove an administrator), scrollable controls and a separate details pane. The web and desktop workspace layouts are an initial usability pass, not a complete replica of the 1C console.
43
+
44
+ `pyrac-mcp` defaults to one RAS. For read-only cross-server discovery, repeat `--ras-server=HOST:PORT/PROTOCOL` (for example, `--ras-server=second.local:2545/auto`); `rac_workspace_search(query, scope="clusters"|"infobases"|"profiles"|"servers"|"processes"|"sessions"|"connections"|"managers"|"counters"|"limits"|"agent-admins"|"cluster-admins"|"services"|"locks"|"rules"|"service-settings"|"transfer-directories"|"profile-directories"|"profile-com"|"profile-addin"|"profile-module"|"profile-app"|"profile-inet")` returns endpoint and object navigation fields across the startup list with bounded concurrency and one shared 30-second deadline including queued RAS; an object's host is reported separately as `object_host` so it cannot overwrite the RAS host. Failed endpoints do not hide healthy results. `rac_workspace_list_clusters()` lists cluster navigation fields across the configured RAS without a search term (bounded concurrency/timeouts; failed endpoints are isolated). `rac_workspace_list_infobases()` lists base navigation fields across the configured RAS without a search term, isolating failed clusters. `rac_workspace_list_servers()` lists working-server navigation fields across the configured RAS without a search term, isolating failed clusters, bounding queued endpoints under one deadline, and keeping the server's `object_host` separate from the RAS host. `rac_workspace_list_processes()` lists working-process navigation fields across the configured RAS without a search term, with validated PID labels, isolated failed clusters and the same shared deadline; no infobase or working-server lists are fetched. `rac_workspace_list_sessions()` lists session navigation fields across the configured RAS without a search term, with validated user labels, isolated failed clusters and a shared deadline; no infobase or working-server lists are fetched. `rac_workspace_list_connections()` lists connection navigation fields across the configured RAS without a search term, keeping a validated `object_host` separate from the RAS host and isolating failed clusters under the same shared deadline; no infobase or working-server lists are fetched. `rac_workspace_list_services()` lists verified cluster-service names across configured RAS without a search term, excluding invalid names and private record fields; failed clusters are isolated and queued endpoints share the same deadline. `rac_workspace_list_profiles()` lists validated security-profile names across configured RAS without a search term, excluding private record fields, isolating failed clusters and enforcing the same deadline including queued endpoints. `rac_workspace_list_cluster_inventory(kind="managers"|"counters"|"limits")` lists safe selectors and display labels across startup RAS without a search term; it validates the kind before connecting and isolates failed clusters under one deadline. `rac_workspace_cluster_overview(ras, cluster_id)` reads servers, processes, infobases and cluster info from the selected startup RAS under one 30-second deadline; `ras` is the index returned by search. `rac_workspace_list_cluster_group(ras, cluster_id, group)` reads a verified cluster inventory (`servers`, `processes`, `infobases`, `sessions`, `connections`, `profiles`, `counters`, `limits`, `managers`, `services`, or `locks`) on that selected RAS, with private fields removed and a 30-second deadline. `rac_workspace_object_detail(ras, cluster_id, kind, object_id)` opens a selected server, process, session, infobase or connection by UUID, keeping the object's host separate from its RAS host. `rac_workspace_list_server_group(ras, cluster_id, server_id, group)` reads `rules`, `service-settings` or `transfer-directories` for a selected working server. `rac_workspace_list_profile_acl(ras, cluster_id, profile_name, acl_type)` reads a chosen `directory`, `com`, `addin`, `module`, `app` or `inet` profile ACL on that RAS. `rac_workspace_list_infobase_group(ras, cluster_id, infobase_id, group)` reads `sessions`, `connections` or `binary-storages` for the selected infobase. `rac_workspace_record_detail(ras, cluster_id, kind, selector, server_id="")` reads manager, rule, service-setting, counter or limit details on the selected RAS; rules and settings require `server_id`, counters and limits use a name instead of UUID. `rac_workspace_related_inventory(ras, cluster_id, scope, record_id)` reads `server-processes`, `process-connections`, `infobase-locks` or `connection-locks` on the selected RAS. `rac_workspace_counter_values(ras, cluster_id, name, object_filter="", accumulated=false)` reads regular or accumulated values of a named counter on the selected RAS; populated values remain unverified on a live 16.0 server. `rac_workspace_named_overview(ras, cluster_id, kind, selector)` reads an `infobase-summary` by UUID or `profile-overview` by profile name (profile plus six ACL lists) on the selected RAS. `rac_workspace_agent_view(ras, scope, cluster_id="")` reads `agent-version`, `agent-admins` or `cluster-admins` (the latter requires a cluster UUID) on the selected RAS. `rac_workspace_infobase_by_name(ras, cluster_id, kind, name)` reads `info` or `summary` for a named infobase on the selected RAS without a UUID (protocol `16.0`; an explicit `10.0` endpoint is rejected before connecting); the name is validated before connecting and private fields are removed. This extra mode rejects mutation flags and administrator names; existing MCP tools still address the primary RAS only. No credentials are stored.
45
+
46
+ The web workspace also offers read-only `/ras/cluster-inventory?kind=managers|counters|limits`: validated, searchable cross-RAS labels linked to the original cluster. Desktop offers matching **All managers**, **All counters** and **All limits** buttons, opening details on the source RAS. Failed endpoints or clusters preserve completed rows under one shared deadline, including queued endpoints. These views use existing read commands; they do not confirm new wire operations.
47
+
48
+ The new MCP `rac_workspace_list_server_inventory(kind="rules"|"service-settings"|"transfer-directories")` returns safe cross-RAS navigation for existing working-server reads, keeping completed rows when a server fails or the shared deadline expires. It does not add new wire-command coverage.
49
+
50
+ Desktop **All locks** displays safe labels across RAS and opens the selected connection's lock list on the source endpoint. It retains completed rows on errors and shared-deadline expiry, including queued endpoints; the wire command is an existing read.
51
+
52
+ The web workspace also offers `/ras/locks`: searchable read-only multi-RAS lock labels linked to the originating connection's lock list, with safe fallbacks for invalid descriptions, partial results and a shared deadline including queued endpoints. It reuses existing reads rather than confirming another wire command.
53
+
54
+ `rac_workspace_list_locks()` provides read-only cross-RAS lock navigation without a search term: canonical connection/object selectors and a safe description or generic label, with no private fields. Cluster failures and a shared deadline (including queued endpoints) preserve completed results. It reuses verified list reads and does not add wire-command coverage.
55
+
56
+ Desktop also has **All agent administrators** and **All cluster administrators** views, opening selected names on their source RAS. They return names only and preserve completed rows on failures and deadline expiry.
57
+
58
+ The web workspace adds `/ras/administrators?kind=agent-admins|cluster-admins`: searchable multi-RAS names with scoped agent/cluster links, no account fields, partial results and one deadline covering queued endpoints. The views use existing verified reads, not newly verified wire commands.
59
+
60
+ The web workspace adds `/ras/server-inventory?kind=rules|service-settings|transfer-directories`: searchable multi-RAS working-server records with safe source-server links, bounded reads and a shared deadline including queued endpoints. Desktop has matching **All rules**, **All service settings** and **All transfer directories** buttons; selection opens the item on its source RAS. These are views over existing read methods, not newly verified wire coverage.
61
+
62
+ `rac_workspace_list_administrators(kind="agent-admins"|"cluster-admins")` provides validated administrator names across startup RAS without search terms or private account fields. Cluster failures preserve completed names, and one deadline includes queued endpoints. This uses existing verified reads rather than adding wire-command coverage.
63
+
64
+ Optional applications (no vendor `rac` runtime dependency):
65
+
66
+ ```bash
67
+ python3 -m pip install '.[desktop,mcp]'
68
+ pyrac-desktop --ras-host=127.0.0.1 --ras-port=1545 --protocol=16.0
69
+ # Optional OS-authenticated administrator names for read-only desktop operations:
70
+ # pyrac-desktop --cluster-user=cluster-reader --agent-user=agent-reader
71
+ pyrac-mcp --ras-host=127.0.0.1 --ras-port=1545 --protocol=16.0
72
+ # Optional OS-authenticated administrator names for read-only MCP operations:
73
+ # pyrac-mcp --cluster-user=cluster-reader --agent-user=agent-reader
74
+ # Destructive opt-in for a controlled, isolated RAS only (protocol 16.0, no cluster-user):
75
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-process-turn-off
76
+ # The enabled rac_turn_off_process tool requires confirm_process_id equal to process_id.
77
+ # Independent guarded cluster insertion on an isolated RAS (protocol 16.0, no agent-user):
78
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-cluster-insert
79
+ # rac_insert_cluster requires host, port, name, strict boolean audit and exact confirm_host_port=host:port.
80
+ # Optional independently verified settings: expiration_timeout, security_level,
81
+ # session_fault_tolerance_level, load_balancing_mode (performance|memory),
82
+ # kill_problem_processes, kill_by_memory_with_dump, restart_schedule (six numeric fields),
83
+ # and paired ping_period/ping_timeout. Invalid options are rejected before connecting;
84
+ # the guarded client requires full list/info read-back and returns the verified created record.
85
+ # Independent destructive cluster removal on an isolated RAS (protocol 16.0, no cluster-user):
86
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-cluster-remove
87
+ # rac_remove_cluster requires confirm_cluster_id equal to the exact cluster UUID and verifies the full list.
88
+ # Independent password-free agent administrator registration on an isolated RAS (protocol 16.0):
89
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-agent-admin-register
90
+ # rac_register_agent_admin requires name, os_user, descr and exact confirm_name_os_user=name:os_user;
91
+ # registration succeeds only after full administrator-list read-back. No password is accepted by this tool.
92
+ # Independent destructive agent administrator removal on an isolated RAS (protocol 16.0):
93
+ # pyrac-mcp --ras-host=127.0.0.1 --agent-user=existing-admin --allow-agent-admin-remove
94
+ # rac_remove_agent_admin requires exact confirm_name=name; only an authenticated agent-user may remove,
95
+ # and the guarded client verifies the complete administrator list after removal.
96
+ # Independent password-free cluster administrator registration on an isolated RAS (protocol 16.0):
97
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-cluster-admin-register
98
+ # rac_register_cluster_admin requires the exact cluster UUID:name:os_user confirmation;
99
+ # its guarded client verifies the complete cluster administrator list. No password is accepted.
100
+ # Independent destructive cluster administrator removal on an isolated RAS (protocol 16.0):
101
+ # pyrac-mcp --ras-host=127.0.0.1 --cluster-user=existing-admin --allow-cluster-admin-remove
102
+ # rac_remove_cluster_admin requires exact confirm_cluster_name=cluster UUID:name and delegates
103
+ # full administrator-list read-back to the guarded client. Disabled by default.
104
+ # Independent destructive infobase registration-only removal on an isolated RAS (16.0, no cluster-user):
105
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-registration-drop
106
+ # rac_drop_infobase_registration requires the exact cluster UUID:infobase UUID
107
+ # confirmation and delegates full list read-back to the guarded client.
108
+ # Database drop/clear are always false; MCP-specific live effect is unconfirmed.
109
+ # Independent opt-in to register an already existing PostgreSQL infobase (16.0, no cluster-user):
110
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-existing-registration
111
+ # rac_register_existing_infobase requires cluster UUID, name, db_name, db_server,
112
+ # db_user, locale and exact confirm_cluster_name_db=cluster UUID:name:db_name.
113
+ # It never creates the database, delegates complete list/info read-back to the
114
+ # guarded client and returns a public projection. No passwords are accepted;
115
+ # the database must already be accessible without a supplied password.
116
+ # MCP-specific live effect is unconfirmed.
117
+ # Separate DESTRUCTIVE opt-in to create a new PostgreSQL database and register it (16.0, no cluster-user):
118
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-database-create
119
+ # rac_create_infobase_database requires exact confirm_cluster_name_db=cluster UUID:name:db_name.
120
+ # The tool always sends create_database=True; the guarded client compares the full
121
+ # registration list and info. Never enable on a shared cluster without approval;
122
+ # no password input is supported, and MCP-specific live effect is unconfirmed.
123
+ # Guarded MCP infobase update results are filtered through the same public
124
+ # projection as infobase info reads: database password and access material
125
+ # stay internal even when a full-record mutation read-back contains them.
126
+ # Infobase summary description has independent MCP opt-in (16.0):
127
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-summary-description-update
128
+ # rac_update_infobase_summary_description accepts a strict string (empty
129
+ # clears; maximum 1024 UTF-8 bytes), exact cluster UUID:infobase UUID
130
+ # confirmation, guarded full infobase-list read-back. Unlike the full info
131
+ # update, this uses the summary update path. MCP-specific live effect is unconfirmed.
132
+ # Infobase description has independent MCP opt-in (16.0):
133
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-description-update
134
+ # rac_update_infobase_description accepts a strict string (empty clears;
135
+ # maximum 1024 UTF-8 bytes), exact cluster UUID:infobase UUID confirmation,
136
+ # guarded full info and infobase-list read-back. MCP-specific live effect is unconfirmed.
137
+ # Infobase scheduled jobs deny has independent MCP opt-in (16.0):
138
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-scheduled-jobs-deny-update
139
+ # rac_update_infobase_scheduled_jobs_deny accepts strict boolean denied
140
+ # (including false), exact cluster UUID:infobase UUID confirmation and guarded
141
+ # full info and registration-list read-back. MCP-specific live effect remains unconfirmed.
142
+ # Infobase sessions deny has independent MCP opt-in (16.0):
143
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-sessions-deny-update
144
+ # rac_update_infobase_sessions_deny accepts strict boolean denied (including
145
+ # false), exact cluster UUID:infobase UUID confirmation and guarded full info
146
+ # and registration-list read-back. MCP-specific live effect remains unconfirmed.
147
+ # Infobase license distribution has independent MCP opt-in (16.0):
148
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-license-distribution-update
149
+ # rac_update_infobase_license_distribution accepts strict 'allow' or 'deny',
150
+ # exact cluster UUID:infobase UUID confirmation and guarded full info and
151
+ # registration-list read-back. MCP-specific live effect remains unconfirmed.
152
+ # Infobase denied message has independent MCP opt-in (16.0):
153
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-denied-message-update
154
+ # rac_update_infobase_denied_message accepts a strict string (empty clears),
155
+ # exact cluster UUID:infobase UUID confirmation and guarded full info and
156
+ # registration-list read-back. MCP-specific live effect remains unconfirmed.
157
+ # Infobase reserve working processes toggle has independent MCP opt-in (16.0):
158
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-reserve-working-processes-update
159
+ # rac_update_infobase_reserve_working_processes accepts strict boolean
160
+ # reserve (including false), exact cluster UUID:infobase UUID confirmation
161
+ # and guarded full info and registration-list read-back.
162
+ # MCP-specific live effect remains unconfirmed.
163
+ # Infobase external session manager requirement has independent MCP opt-in (16.0):
164
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-external-session-manager-update
165
+ # rac_update_infobase_external_session_manager_required accepts strict boolean
166
+ # required (including false), exact cluster UUID:infobase UUID confirmation
167
+ # and guarded full info and registration-list read-back.
168
+ # MCP-specific live effect remains unconfirmed.
169
+ # Infobase local speech-to-text toggle has independent MCP opt-in (16.0):
170
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-local-speech-update
171
+ # rac_update_infobase_disable_local_speech_to_text accepts a strict boolean
172
+ # disabled (false enables speech-to-text), exact cluster UUID:infobase UUID
173
+ # confirmation and guarded full info and registration-list read-back.
174
+ # MCP-specific live effect remains unconfirmed.
175
+ # Infobase configuration unload delay has independent MCP opt-in (16.0):
176
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-configuration-unload-delay-update
177
+ # rac_update_infobase_configuration_unload_delay accepts strict integer
178
+ # 0..4294967295 (including explicit zero), exact cluster UUID:infobase UUID
179
+ # confirmation and guarded full info and registration-list read-back.
180
+ # MCP-specific live effect remains unconfirmed.
181
+ # Infobase minimum scheduled-jobs start period has independent MCP opt-in (16.0):
182
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-minimum-scheduled-jobs-period-update
183
+ # rac_update_infobase_minimum_scheduled_jobs_start_period accepts strict
184
+ # integer 0..4294967295 (including explicit zero), exact cluster UUID:infobase
185
+ # UUID confirmation and guarded full info and registration-list read-back.
186
+ # MCP-specific live effect remains unconfirmed.
187
+ # Infobase maximum scheduled-jobs start shift has independent MCP opt-in (16.0):
188
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-maximum-scheduled-jobs-shift-update
189
+ # rac_update_infobase_maximum_scheduled_jobs_start_shift accepts a strict
190
+ # integer 0..255 (including explicit zero), exact cluster UUID:infobase UUID
191
+ # confirmation, and guarded full info and registration-list read-back.
192
+ # MCP-specific live effect remains unconfirmed.
193
+ # Safe-mode infobase security-profile assignment/clearing has its own MCP opt-in (16.0):
194
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-safe-mode-security-profile-update
195
+ # rac_update_infobase_safe_mode_security_profile accepts an empty name to clear,
196
+ # requires exact cluster UUID:infobase UUID confirmation, and uses the guarded
197
+ # client's full info and registration-list read-back. Live MCP effect is unconfirmed.
198
+ # Infobase security-profile assignment/clearing has a separate MCP opt-in (16.0):
199
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-infobase-security-profile-update
200
+ # rac_update_infobase_security_profile takes the profile name (empty clears),
201
+ # confirms exact cluster UUID:infobase UUID, and delegates full info and
202
+ # registration-list read-back to the guarded client. MCP-specific live effect
203
+ # remains unconfirmed.
204
+ # Internet-resource ACL update/insert has an independent MCP opt-in (16.0):
205
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-inet-update
206
+ # rac_update_profile_inet accepts a nonempty map of url, port (integer 0..65535),
207
+ # protocol and descr; requires exact cluster UUID:profile name:resource name
208
+ # confirmation and guarded full inet ACL list read-back. Underlying update
209
+ # may create an ACL; MCP-specific live effect remains unconfirmed.
210
+ # Internet-resource ACL removal has an independent destructive MCP opt-in (16.0):
211
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-inet-remove
212
+ # rac_remove_profile_inet requires exact cluster UUID:profile name:resource
213
+ # name confirmation and guarded full internet-resource list read-back. Live
214
+ # MCP effect remains unconfirmed.
215
+ # Application ACL update/insert has an independent MCP opt-in (16.0):
216
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-app-update
217
+ # rac_update_profile_app accepts a nonempty map of wild and descr, requires
218
+ # exact cluster UUID:profile name:application name confirmation, and uses
219
+ # guarded full application list read-back. Underlying update may create an
220
+ # ACL; MCP-specific live effect remains unconfirmed.
221
+ # Application ACL removal has an independent destructive MCP opt-in (16.0):
222
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-app-remove
223
+ # rac_remove_profile_app requires exact cluster UUID:profile name:application
224
+ # name confirmation and guarded full application-list read-back. Live MCP
225
+ # effect remains unconfirmed.
226
+ # Module ACL update/insert has an independent MCP opt-in (16.0):
227
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-module-update
228
+ # rac_update_profile_module accepts a nonempty map of hash_value and descr,
229
+ # requires exact cluster UUID:profile name:module name confirmation, and uses
230
+ # guarded full module list read-back. Underlying update may create an ACL;
231
+ # MCP-specific live effect remains unconfirmed.
232
+ # Module ACL removal has an independent destructive MCP opt-in (16.0):
233
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-module-remove
234
+ # rac_remove_profile_module requires exact cluster UUID:profile name:module
235
+ # name confirmation and guarded full module-list read-back. Live MCP effect
236
+ # remains unconfirmed.
237
+ # Add-in ACL update/insert has an independent MCP opt-in (16.0):
238
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-addin-update
239
+ # rac_update_profile_addin accepts a nonempty map of hash_value and descr,
240
+ # requires exact cluster UUID:profile name:add-in name confirmation, and uses
241
+ # guarded full add-in list read-back. Underlying update may create an ACL;
242
+ # MCP-specific live effect remains unconfirmed.
243
+ # Add-in ACL removal has an independent destructive MCP opt-in (16.0):
244
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-addin-remove
245
+ # rac_remove_profile_addin requires exact cluster UUID:profile name:add-in
246
+ # name confirmation and guarded full add-in list read-back. Live MCP effect
247
+ # remains unconfirmed.
248
+ # COM-class ACL update/insert has an independent MCP opt-in (16.0):
249
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-com-update
250
+ # rac_update_profile_com_class accepts a nonempty map of file_name, class_id,
251
+ # host, descr; exact cluster UUID:profile name:class name confirmation and
252
+ # guarded full COM ACL list read-back apply. Underlying update may create a
253
+ # COM-class ACL. MCP-specific live effect remains unconfirmed.
254
+ # COM-class ACL removal has an independent destructive MCP opt-in (16.0):
255
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-com-remove
256
+ # rac_remove_profile_com_class requires exact cluster UUID:profile name:class
257
+ # name confirmation and guarded full COM-class list read-back. Live MCP effect
258
+ # remains unconfirmed.
259
+ # Directory ACL update/insert has an independent MCP opt-in (16.0):
260
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-directory-update
261
+ # rac_update_profile_directory accepts a nonempty fields map with physical_path,
262
+ # descr, allowed_read, allowed_write (strict booleans); exact cluster UUID:
263
+ # profile name:alias confirmation and guarded full directory-list read-back.
264
+ # Underlying update may create a directory ACL. Live MCP effect unconfirmed.
265
+ # Directory ACL removal has an independent destructive MCP opt-in (16.0):
266
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-directory-remove
267
+ # rac_remove_profile_directory requires exact cluster UUID:profile name:alias
268
+ # confirmation and delegates full directory-list read-back to guarded client.
269
+ # MCP-specific live effect remains unconfirmed.
270
+ # Profile role/module strings have an independent MCP opt-in (16.0):
271
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-role-fields-update
272
+ # rac_update_profile_role_fields accepts a nonempty map of
273
+ # right_extension_definition_roles, privileged_mode_roles,
274
+ # modules_available_for_extension, modules_not_available_for_extension.
275
+ # Empty strings clear individual fields; exact cluster UUID:profile name
276
+ # confirmation and guarded full-list read-back apply. Underlying update may
277
+ # create an absent profile. MCP-specific live effect remains unconfirmed.
278
+ # Selected profile access flags have an independent MCP opt-in (16.0):
279
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-access-flags-update
280
+ # rac_update_profile_access_flags takes a nonempty map of strict booleans for
281
+ # priv, crypto, directory_access, com_access, addin_access, module_access,
282
+ # app_access, inet_access, right_extension and all_modules_extension; exact
283
+ # cluster UUID:profile name confirmation and guarded full-list read-back apply.
284
+ # Underlying update can create a profile if absent; live MCP effect unconfirmed.
285
+ # Profile configuration-access update has an independent MCP opt-in (16.0):
286
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-config-update
287
+ # rac_update_profile_config takes a strict boolean (including explicit false),
288
+ # exact cluster UUID:profile name confirmation and guarded full-list read-back.
289
+ # The underlying update can create the profile if absent; use owned names only.
290
+ # MCP-specific live effect has not been confirmed.
291
+ # Profile description update has an independent MCP opt-in (16.0):
292
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-description-update
293
+ # rac_update_profile_description requires exact cluster UUID:profile name
294
+ # confirmation and guarded full profile-list read-back. The underlying RAC
295
+ # update can also create the named profile if absent; use only on owned names.
296
+ # MCP-specific live effect has not been confirmed.
297
+ # Security profile removal has an independent destructive MCP opt-in (16.0):
298
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-profile-remove
299
+ # rac_remove_profile requires exact cluster UUID:profile name confirmation and
300
+ # delegates full profile-list read-back to the guarded client. MCP-specific live
301
+ # effect has not been confirmed.
302
+ # Service setting insertion has an independent MCP opt-in (16.0):
303
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-service-setting-insert
304
+ # rac_insert_service_setting requires exact cluster UUID:working server UUID:
305
+ # service name:infobase name confirmation and delegates full settings-list
306
+ # read-back to the guarded client. MCP-specific live effect is unconfirmed.
307
+ # Service setting directory update has an independent MCP opt-in (16.0):
308
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-service-setting-update
309
+ # rac_update_service_setting requires exact cluster UUID:working server UUID:
310
+ # setting UUID confirmation and delegates full settings-list read-back to the
311
+ # guarded client. MCP-specific live effect has not been confirmed.
312
+ # Service setting removal has an independent destructive MCP opt-in (16.0):
313
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-service-setting-remove
314
+ # rac_remove_service_setting requires exact cluster UUID:working server UUID:
315
+ # setting UUID confirmation and delegates full settings-list read-back to the
316
+ # guarded client. MCP-specific live effect has not been confirmed.
317
+ # Applying pending service settings has an independent MCP opt-in (protocol 16.0):
318
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-service-settings-apply
319
+ # rac_apply_service_settings requires exact cluster UUID:working server UUID
320
+ # confirmation and returns the guarded client's full settings-list read-back.
321
+ # MCP-specific live effect has not yet been confirmed.
322
+ # Assignment rule apply has an independent MCP opt-in (protocol 16.0):
323
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-rule-apply
324
+ # rac_apply_rules takes a strict boolean full (true=full, false=partial) and
325
+ # exact cluster UUID confirmation. Guarded client requires rules to exist and
326
+ # verifies all rule lists unchanged after acknowledgement; active allocation
327
+ # and MCP-specific live effect are not observable/confirmed.
328
+ # Guarded assignment rule insertion (protocol 16.0, isolated RAS only):
329
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-rule-insert
330
+ # rac_insert_rule accepts position, rule_type (never/auto/always), priority and an exact
331
+ # cluster UUID:server UUID:position confirmation; guarded client verifies the full rule list.
332
+ # Destructive assignment rule removal is a separate opt-in (protocol 16.0):
333
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-rule-remove
334
+ # rac_remove_rule requires exact cluster UUID:server UUID:rule UUID confirmation and delegates
335
+ # full rule-list read-back to the guarded client before reporting the removed UUID.
336
+ # Assignment rule reorder has an independent MCP opt-in (protocol 16.0):
337
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-rule-position-update
338
+ # rac_move_rule takes strict integer position and exact cluster UUID:server
339
+ # UUID:rule UUID confirmation. The guarded client preserves rule fields and
340
+ # verifies the full ordered list; MCP-specific live effect remains unconfirmed.
341
+ # Independent assignment rule fields update (protocol 16.0, isolated RAS):
342
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-rule-fields-update
343
+ # rac_update_rule_fields accepts a nonempty map of object_type, infobase_name,
344
+ # rule_type (never/auto/always), application_ext and priority; position is a
345
+ # strict integer. Exact cluster UUID:server UUID:rule UUID confirmation is
346
+ # required. The guarded client verifies the complete rule list after update;
347
+ # MCP-specific live effect remains unconfirmed.
348
+ # Independent priority-only assignment rule update (protocol 16.0, isolated RAS):
349
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-rule-priority-update
350
+ # rac_update_rule_priority accepts exact cluster/server/rule UUIDs, position and priority;
351
+ # confirm_cluster_server_rule must equal cluster UUID:server UUID:rule UUID.
352
+ # The guarded client preserves other fields and verifies the complete rule list.
353
+ # MCP schemas use strict integers for rule position and priority: boolean and numeric-string
354
+ # arguments are rejected before any cluster connection, rather than silently coerced.
355
+ # Cluster insertion likewise requires a strict integer port; numeric-string ports are not
356
+ # accepted by the MCP schema even if the confirmation text matches the coerced value.
357
+ # Cluster kill-problem-processes and kill-by-memory-with-dump MCP updates require strict
358
+ # boolean arguments; strings and integers are rejected before opening a connection.
359
+ # MCP cluster ping period/timeout and expiration timeout likewise require strict integers,
360
+ # rejecting numeric strings and booleans before connecting.
361
+ # Cluster security level and session fault-tolerance level MCP arguments also require
362
+ # strict integers; the tool schema must not coerce numeric strings or booleans.
363
+ # Working-server infobases-per-process and connections-per-process MCP limits also
364
+ # require strict integers, rejecting numeric strings and booleans before connection.
365
+ # MCP working-server safe-call memory limit and critical total memory also reject
366
+ # numeric strings and booleans at schema validation, before opening a connection.
367
+ # MCP working-server temporary allowed total memory and its time limit likewise
368
+ # require strict integers and reject coercible strings/booleans before connection.
369
+ # MCP working-server port-range bounds also use strict integers for every nested
370
+ # endpoint, rejecting numeric strings and booleans before opening a connection.
371
+ # Counter clear requests have a separate destructive MCP opt-in (16.0):
372
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-counter-clear
373
+ # rac_clear_counter requires exact cluster UUID:counter name confirmation and
374
+ # guarded configuration-list read-back. Deletion of populated readings remains
375
+ # unverified: this returns the unchanged counter record, not a deletion proof.
376
+ # Selected counter analysis flags have one independent MCP opt-in (16.0):
377
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-counter-analysis-flags-update
378
+ # rac_update_counter_analysis_flags accepts a nonempty map of the 11 verified
379
+ # analysis flag names to strict booleans; rejects unknown/coerced nested values
380
+ # before connection and requires exact cluster UUID:counter name confirmation.
381
+ # Guarded client verifies the entire counter list. Live MCP effect is unverified.
382
+ # Counter object-filter update has an independent MCP opt-in (16.0, no cluster-user):
383
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-counter-filter-update
384
+ # rac_update_counter_filter accepts an empty filter to clear it; exact cluster
385
+ # UUID:counter name confirmation and guarded full-list read-back are required.
386
+ # MCP-specific live verification remains pending.
387
+ # Counter filter-type update has an independent MCP opt-in (16.0, no cluster-user):
388
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-counter-filter-type-update
389
+ # rac_update_counter_filter_type accepts all, all-selected or all-but-selected;
390
+ # exact cluster UUID:counter name confirmation and guarded full-list read-back
391
+ # are required. MCP-specific live verification remains pending.
392
+ # Counter group update has an independent MCP opt-in (16.0, no cluster-user):
393
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-counter-group-update
394
+ # rac_update_counter_group accepts users or data-separation, exact cluster UUID:
395
+ # counter name confirmation, and guarded full-list read-back. MCP-specific live
396
+ # verification remains pending after isolated counter-creation timeouts.
397
+ # Counter duration-analysis toggle has its own MCP opt-in (16.0, no cluster-user):
398
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-counter-duration-update
399
+ # rac_update_counter_duration requires exact cluster UUID:counter name confirmation
400
+ # and a strict boolean enabled flag (including false); guarded client verifies the
401
+ # entire counter list. MCP-specific live verification remains pending.
402
+ # Guarded counter collection-time update has an independent MCP opt-in (16.0):
403
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-counter-collection-time-update
404
+ # rac_update_counter_collection_time requires exact cluster UUID:counter name
405
+ # confirmation and a strict integer seconds value; guarded client verifies the
406
+ # entire counter-list read-back. MCP-specific live verification is pending.
407
+ # Guarded counter description update has its own MCP opt-in (16.0, no cluster-user):
408
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-counter-description-update
409
+ # rac_update_counter_description requires exact cluster UUID:counter name confirmation;
410
+ # the guarded client preserves other fields and checks the full counter list.
411
+ # MCP-specific live verification remains pending.
412
+ # Destructive counter removal has its own MCP opt-in (protocol 16.0, no cluster-user):
413
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-counter-remove
414
+ # rac_remove_counter requires exact confirm_cluster_name=cluster UUID:counter name;
415
+ # guarded client checks the entire counter list after removal. MCP-specific live
416
+ # verification is still pending; do not infer populated-reading effects.
417
+ # Named-limit create/update is a separate MCP opt-in (protocol 16.0, no cluster-user):
418
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-limit-update
419
+ # rac_update_limit takes a name, action, counter and strict integer duration threshold;
420
+ # confirm_cluster_name must equal cluster UUID:limit name. The guarded client checks
421
+ # the entire limit-list read-back. Live MCP-specific verification is still pending.
422
+ # Destructive named-limit removal is an independent MCP opt-in (protocol 16.0):
423
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-limit-remove
424
+ # rac_remove_limit requires exact confirm_cluster_name=cluster UUID:limit name;
425
+ # guarded client checks full limit-list read-back. MCP's own isolated-RAS smoke test
426
+ # is pending: local limit create/remove timed out on the attempted lab fixture.
427
+ # Optional verified cluster name update tool (protocol 16.0, no agent-user):
428
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-cluster-name-update
429
+ # rac_update_cluster_name requires confirm_cluster_id exactly equal to cluster_id.
430
+ # Independent guarded cluster expiration timeout update (protocol 16.0, no agent-user):
431
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-cluster-expiration-timeout-update
432
+ # rac_update_cluster_expiration_timeout requires integer seconds and exact confirm_cluster_id.
433
+ # Independent guarded cluster security level update (protocol 16.0, no agent-user):
434
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-cluster-security-level-update
435
+ # rac_update_cluster_security_level requires integer level and exact confirm_cluster_id.
436
+ # Independent guarded cluster session fault tolerance update (protocol 16.0, no agent-user):
437
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-cluster-session-fault-tolerance-level-update
438
+ # rac_update_cluster_session_fault_tolerance_level requires integer level and exact confirm_cluster_id.
439
+ # Independent guarded cluster load balancing mode update (protocol 16.0, no agent-user):
440
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-cluster-load-balancing-mode-update
441
+ # rac_update_cluster_load_balancing_mode accepts performance or memory and exact confirm_cluster_id.
442
+ # Independent guarded cluster problem-process policy update (protocol 16.0, no agent-user):
443
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-cluster-kill-problem-processes-update
444
+ # rac_update_cluster_kill_problem_processes requires boolean enabled and exact confirm_cluster_id.
445
+ # Independent guarded cluster kill-by-memory dump update (protocol 16.0, no agent-user):
446
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-cluster-kill-by-memory-with-dump-update
447
+ # rac_update_cluster_kill_by_memory_with_dump requires boolean enabled and exact confirm_cluster_id.
448
+ # Independent guarded cluster access-right audit recording update (protocol 16.0, no agent-user):
449
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-cluster-audit-update
450
+ # rac_update_cluster_audit requires boolean enabled and exact confirm_cluster_id; verifies a full read-back.
451
+ # Independent guarded cluster ping pair update (protocol 16.0, no agent-user):
452
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-cluster-ping-update
453
+ # rac_update_cluster_ping requires (0, 0) or 0 < period < timeout <= 2147483647, and exact confirm_cluster_id.
454
+ # Independent guarded cluster restart schedule update (protocol 16.0, no agent-user):
455
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-cluster-restart-schedule-update
456
+ # rac_update_cluster_restart_schedule accepts the verified schedule syntax or empty to clear;
457
+ # it requires exact confirm_cluster_id and a full read-back (not merely a wire ACK).
458
+ # Independent guarded working-server restart schedule update (protocol 16.0, no cluster-user):
459
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-server-restart-schedule-update
460
+ # rac_update_server_restart_schedule confirms the exact server UUID and verifies full read-back;
461
+ # an empty schedule clears it. Use only on an isolated test RAS until your server is approved.
462
+ # Independent guarded working-server infobases-per-process limit update (protocol 16.0, no cluster-user):
463
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-server-infobases-limit-update
464
+ # rac_update_server_infobases_limit requires integer 0..2147483647, exact server UUID and full read-back.
465
+ # Independent guarded working-server connections-per-process limit update (protocol 16.0, no cluster-user):
466
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-server-connections-limit-update
467
+ # rac_update_server_connections_limit requires integer 0..2147483647, exact server UUID and full read-back.
468
+ # Independent guarded working-server safe-call memory limit update (protocol 16.0, no cluster-user):
469
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-server-safe-call-memory-limit-update
470
+ # rac_update_server_safe_call_memory_limit requires integer 0..9223372036854775807, exact server UUID and full read-back.
471
+ # Independent guarded desktop working-server critical total memory update (protocol 16.0, no cluster-user):
472
+ # python -m pyrac.desktop --ras-host=127.0.0.1 --allow-server-critical-total-memory-update
473
+ # Independent guarded working-server critical total memory update (protocol 16.0, no cluster-user):
474
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-server-critical-total-memory-update
475
+ # rac_update_server_critical_total_memory requires integer 0..9223372036854775807, exact server UUID and full read-back.
476
+ # Independent guarded working-server temporary allowed total memory update (protocol 16.0, no cluster-user):
477
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-server-temporary-total-memory-update
478
+ # rac_update_server_temporary_allowed_total_memory requires integer 0..9223372036854775807, exact server UUID and full read-back.
479
+ # Independent guarded working-server temporary memory time limit update (protocol 16.0, no cluster-user):
480
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-server-temporary-memory-time-limit-update
481
+ # rac_update_server_temporary_allowed_total_memory_time_limit requires integer 0..9223372036854775807, exact server UUID and full read-back.
482
+ # Independent guarded working-server service principal name (SPN) update/clear (protocol 16.0, no cluster-user):
483
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-server-spn-update
484
+ # rac_update_server_service_principal_name requires UTF-8 length <=256 bytes (empty clears), exact server UUID and full read-back.
485
+ # Independent guarded working-server dedicated managers update (protocol 16.0, no cluster-user):
486
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-server-dedicate-managers-update
487
+ # rac_update_server_dedicate_managers accepts all or none, exact server UUID and full read-back.
488
+ # Independent guarded working-server port ranges update (protocol 16.0, no cluster-user):
489
+ # pyrac-mcp --ras-host=127.0.0.1 --allow-server-port-ranges-update
490
+ # rac_update_server_port_ranges accepts 1..64 non-overlapping [start, end] pairs (ports 1..65535), exact server UUID and full read-back.
491
+ # All twenty-three MCP opt-in flags may be combined; each mutation must be enabled independently.
492
+ # Destructive desktop opt-in for a controlled, isolated RAS only (protocol 16.0, no cluster-user):
493
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-process-turn-off
494
+ # Select a cluster and process, click Turn off selected process, and type its exact UUID.
495
+ # Destructive desktop cluster removal on a controlled, isolated RAS (protocol 16.0, no cluster-user):
496
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-cluster-remove
497
+ # Select the owned cluster, click Remove selected cluster and type its exact UUID; full list read-back required.
498
+ # Destructive web cluster removal on a controlled, isolated RAS (loopback, protocol 16.0, no agent-user):
499
+ # pyrac-web --ras-host=127.0.0.1 --allow-cluster-remove
500
+ # Open /clusters/<owned-UUID>/remove; type the exact UUID. Verified result requires full list read-back.
501
+ # Guarded web cluster insertion on a controlled, isolated RAS (loopback, protocol 16.0, no agent-user):
502
+ # pyrac-web --ras-host=127.0.0.1 --allow-cluster-insert
503
+ # Open /clusters/insert; type exact host:port. The form accepts audit and independently verified
504
+ # expiration/security/fault-tolerance, load-balancing, kill policies, restart schedule and paired
505
+ # ping settings; invalid combinations are rejected before connecting. Full list/info read-back is required.
506
+ # Guarded web agent-admin registration on an isolated RAS (loopback, protocol 16.0, no agent-user):
507
+ # pyrac-web --ras-host=127.0.0.1 --allow-agent-admin-register
508
+ # Open /agent/admins/register and confirm exact name:os_user. Registration is password-free;
509
+ # the guarded client requires complete administrator-list read-back before reporting success.
510
+ # Guarded desktop agent-admin registration on an isolated RAS (protocol 16.0, no agent-user):
511
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-agent-admin-register
512
+ # Enter name, OS user and optional description; confirm exact name:os_user.
513
+ # Guarded web agent-admin removal on an isolated RAS (loopback, protocol 16.0):
514
+ # pyrac-web --ras-host=127.0.0.1 --agent-user=<existing-admin> --allow-agent-admin-remove
515
+ # Open /agent/admins, choose an administrator and confirm its exact name.
516
+ # The guarded client requires complete administrator-list read-back before reporting success.
517
+ # Guarded desktop agent-admin removal on an isolated RAS (protocol 16.0):
518
+ # pyrac-desktop --ras-host=127.0.0.1 --agent-user=<existing-admin> --allow-agent-admin-remove
519
+ # Enter the existing administrator name and confirm it exactly; full read-back is required.
520
+ # Guarded web cluster-admin registration on an isolated RAS (loopback, protocol 16.0, no cluster-user):
521
+ # pyrac-web --ras-host=127.0.0.1 --allow-cluster-admin-register
522
+ # Open /clusters/<owned-UUID>/admins/register; confirm exact cluster UUID:name:os_user.
523
+ # Registration is password-free and requires complete administrator-list read-back.
524
+ # Guarded web cluster-admin removal on an isolated RAS (loopback, protocol 16.0):
525
+ # pyrac-web --ras-host=127.0.0.1 --cluster-user=<existing-admin> --allow-cluster-admin-remove
526
+ # Open /clusters/<owned-UUID>/admins; confirm exact cluster UUID:administrator name.
527
+ # The guarded client requires complete administrator-list read-back before reporting success.
528
+ # Guarded web assignment rule apply on an isolated RAS (loopback, protocol 16.0):
529
+ # pyrac-web --ras-host=127.0.0.1 --allow-rule-apply
530
+ # Open /clusters/<owned-UUID>/rules/apply; choose full or partial and confirm exact UUID.
531
+ # An ACK and unchanged full rule lists are checked; effective process placement is not observable.
532
+ # Guarded web service-settings apply on an isolated RAS (protocol 16.0):
533
+ # pyrac-web --ras-host=127.0.0.1 --allow-service-settings-apply
534
+ # Open /clusters/<owned-cluster-UUID>/servers/<owned-server-UUID>/service-settings/apply.
535
+ # Confirm exact cluster UUID:server UUID; pending settings must exist, and full active flags
536
+ # must match after apply. This does not independently verify service runtime behaviour.
537
+ # Guarded desktop service-settings apply on an isolated RAS (protocol 16.0):
538
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-service-settings-apply
539
+ # Select an owned cluster and working server; confirm exact cluster UUID:server UUID.
540
+ # Full active flags are checked; runtime service behaviour is not independently verified.
541
+ # Guarded web removal of one service setting on an isolated RAS (protocol 16.0):
542
+ # pyrac-web --ras-host=127.0.0.1 --allow-service-setting-remove
543
+ # Open /clusters/<owned-cluster-UUID>/servers/<owned-server-UUID>/service-settings/<owned-setting-UUID>/remove.
544
+ # Confirm exact cluster UUID:server UUID:setting UUID; the guarded client checks
545
+ # the complete setting list after removal. Disabled by default.
546
+ # Guarded desktop removal of one service setting on an isolated RAS (protocol 16.0):
547
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-service-setting-remove
548
+ # Select an owned cluster, working server and setting; confirm exact
549
+ # cluster UUID:server UUID:setting UUID. Full list read-back is required.
550
+ # Guarded web update of a service-setting data directory on an isolated RAS (protocol 16.0):
551
+ # pyrac-web --ras-host=127.0.0.1 --allow-service-setting-update
552
+ # Open /clusters/<owned-cluster-UUID>/servers/<owned-server-UUID>/service-settings/<owned-setting-UUID>/update.
553
+ # Enter the new directory and confirm cluster UUID:server UUID:setting UUID exactly.
554
+ # Success requires the guarded client's full settings-list read-back.
555
+ # Guarded desktop update of a service-setting data directory (protocol 16.0):
556
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-service-setting-update
557
+ # Select an owned cluster, working server and setting, enter a new directory,
558
+ # then confirm cluster UUID:server UUID:setting UUID exactly. Full list read-back required.
559
+ # Guarded web insertion of a service setting on an isolated RAS (protocol 16.0):
560
+ # pyrac-web --ras-host=127.0.0.1 --allow-service-setting-insert
561
+ # Open /clusters/<owned-cluster-UUID>/servers/<owned-server-UUID>/service-settings/insert.
562
+ # Enter service name, infobase name and directory; confirm the exact
563
+ # cluster UUID:server UUID:service name:infobase name. Full list read-back required.
564
+ # Guarded desktop insertion of a service setting on an isolated RAS (protocol 16.0):
565
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-service-setting-insert
566
+ # Select an owned cluster and working server, enter service and infobase names and
567
+ # directory, then confirm cluster UUID:server UUID:service name:infobase name exactly.
568
+ # Full settings-list read-back is required.
569
+ # Guarded desktop assignment rule apply on an isolated RAS (protocol 16.0):
570
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-rule-apply
571
+ # Select an owned cluster, choose full or partial, and confirm its exact UUID.
572
+ # An ACK and unchanged full rule lists are checked; effective process placement is not observable.
573
+ # Guarded desktop cluster-admin registration on an isolated RAS (protocol 16.0, no cluster-user):
574
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-cluster-admin-register
575
+ # Select an owned cluster, enter name, OS user and optional description;
576
+ # confirm exact cluster UUID:name:os_user. Requires complete administrator-list read-back.
577
+ # Guarded desktop cluster-admin removal on an isolated RAS (protocol 16.0):
578
+ # pyrac-desktop --ras-host=127.0.0.1 --cluster-user=<existing-admin> --allow-cluster-admin-remove
579
+ # Select an owned cluster, enter the existing administrator name, confirm exact cluster UUID:name.
580
+ # The guarded client requires complete administrator-list read-back before reporting success.
581
+ # Guarded desktop cluster insertion on a controlled, isolated RAS (protocol 16.0, no agent-user):
582
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-cluster-insert
583
+ # Enter host, port, name, audit mode and optional verified settings (timeouts, security,
584
+ # fault tolerance, load balancing, kill policies, restart schedule, paired ping); confirm
585
+ # exact host:port. Invalid settings are rejected before connecting; full list/info read-back required.
586
+ # Independent desktop opt-in for guarded cluster-name update (protocol 16.0, no agent-user):
587
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-cluster-name-update
588
+ # Select a cluster, type a new name and confirm by typing the exact cluster UUID.
589
+ # Independent desktop opt-in for guarded cluster expiration timeout update (protocol 16.0, no agent-user):
590
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-cluster-expiration-timeout-update
591
+ # Select a cluster, choose seconds and confirm by typing the exact cluster UUID.
592
+ # Independent desktop opt-in for guarded cluster security level update (protocol 16.0, no agent-user):
593
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-cluster-security-level-update
594
+ # Select a cluster, choose the level and confirm by typing the exact cluster UUID.
595
+ # Independent desktop opt-in for guarded cluster session fault tolerance update (protocol 16.0, no agent-user):
596
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-cluster-session-fault-tolerance-level-update
597
+ # Select a cluster, choose the level and confirm by typing the exact cluster UUID.
598
+ # Independent desktop opt-in for guarded cluster load balancing mode update (protocol 16.0, no agent-user):
599
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-cluster-load-balancing-mode-update
600
+ # Select a cluster, choose performance or memory and confirm by typing its exact UUID.
601
+ # Independent desktop opt-in for guarded cluster problem-process policy update (protocol 16.0, no agent-user):
602
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-cluster-kill-problem-processes-update
603
+ # Select on/off and confirm the cluster UUID exactly; the change requires full read-back.
604
+ # Independent desktop opt-in for guarded cluster kill-by-memory dump update (protocol 16.0, no agent-user):
605
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-cluster-kill-by-memory-with-dump-update
606
+ # Select on/off, confirm the exact cluster UUID; verified read-back is required.
607
+ # Independent guarded desktop cluster audit recording update (protocol 16.0, no agent-user):
608
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-cluster-audit-update
609
+ # Choose on/off and confirm the cluster UUID; the result requires full read-back.
610
+ # Independent desktop opt-in for guarded cluster ping pair update (protocol 16.0, no agent-user):
611
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-cluster-ping-update
612
+ # Set (0, 0) or 0 < period < timeout, then confirm exact UUID; requires full read-back.
613
+ # Independent desktop cluster restart schedule opt-in (protocol 16.0, no agent-user):
614
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-cluster-restart-schedule-update
615
+ # Enter verified schedule syntax or leave empty to clear, then confirm exact cluster UUID.
616
+ # Independent desktop working-server restart schedule opt-in (protocol 16.0, no cluster-user):
617
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-server-restart-schedule-update
618
+ # Select the working server, enter schedule or empty to clear, confirm its exact UUID; full read-back required.
619
+ # Independent desktop working-server infobases-per-process limit opt-in (protocol 16.0, no cluster-user):
620
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-server-infobases-limit-update
621
+ # Select server, enter integer limit 0..2147483647, confirm its UUID; full read-back required.
622
+ # Independent desktop working-server connections-per-process limit opt-in (protocol 16.0, no cluster-user):
623
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-server-connections-limit-update
624
+ # Select server, enter integer limit 0..2147483647, confirm its UUID; full read-back required.
625
+ # Independent desktop working-server safe-call memory limit opt-in (protocol 16.0, no cluster-user):
626
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-server-safe-call-memory-limit-update
627
+ # Select server, enter integer limit 0..9223372036854775807, confirm its UUID; full read-back required.
628
+ # Independent desktop working-server temporary allowed total memory opt-in (protocol 16.0, no cluster-user):
629
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-server-temporary-total-memory-update
630
+ # Select server, enter integer 0..9223372036854775807, confirm its UUID; full read-back required.
631
+ # Independent desktop working-server temporary memory time limit opt-in (protocol 16.0, no cluster-user):
632
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-server-temporary-memory-time-limit-update
633
+ # Select server, enter integer 0..9223372036854775807, confirm its UUID; full read-back required.
634
+ # Independent desktop working-server SPN update/clear opt-in (protocol 16.0, no cluster-user):
635
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-server-spn-update
636
+ # Select server, enter SPN (empty clears, <=256 UTF-8 bytes), confirm its exact UUID; full read-back required.
637
+ # Independent desktop working-server dedicated managers opt-in (protocol 16.0, no cluster-user):
638
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-server-dedicate-managers-update
639
+ # Select server, choose all or none, confirm its exact UUID; full read-back required.
640
+ # Independent desktop working-server port ranges opt-in (protocol 16.0, no cluster-user):
641
+ # pyrac-desktop --ras-host=127.0.0.1 --allow-server-port-ranges-update
642
+ # Select server, enter 1..64 non-overlapping start:end ranges (ports 1..65535), confirm its exact UUID; full read-back required.
643
+ # The twenty desktop opt-in flags may be combined; none is enabled by default.
644
+ # Loopback-only web process opt-in: form requires same-origin POST, CSRF token and exact UUID.
645
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-process-turn-off
646
+ # Independent loopback-only web cluster-name opt-in, with the same safeguards:
647
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-cluster-name-update
648
+ # Select Cluster info → Rename cluster; type the exact cluster UUID to confirm.
649
+ # Independent loopback-only web cluster expiration timeout opt-in:
650
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-cluster-expiration-timeout-update
651
+ # Select Cluster info → Update cluster expiration timeout; confirm exact UUID.
652
+ # Independent loopback-only web cluster security level opt-in:
653
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-cluster-security-level-update
654
+ # Select Cluster info → Update cluster security level; confirm exact UUID.
655
+ # Independent loopback-only web cluster session fault tolerance level opt-in:
656
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-cluster-session-fault-tolerance-level-update
657
+ # Select Cluster info → Update cluster session fault tolerance level; confirm exact UUID.
658
+ # Independent loopback-only web cluster load balancing mode opt-in:
659
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-cluster-load-balancing-mode-update
660
+ # Independent loopback-only web cluster problem-process policy opt-in (protocol 16.0, no agent-user):
661
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-cluster-kill-problem-processes-update
662
+ # Select on/off; POST requires same origin, CSRF token, exact UUID and verified read-back.
663
+ # Select Cluster info → Update cluster load balancing mode; confirm exact UUID.
664
+ # Select Cluster info → Update cluster problem-process policy; confirm exact UUID.
665
+ # Independent loopback-only web cluster kill-by-memory dump opt-in (protocol 16.0, no agent-user):
666
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-cluster-kill-by-memory-with-dump-update
667
+ # Select on/off and confirm the exact UUID; same-origin POST and CSRF required.
668
+ # Independent loopback-only web cluster audit recording opt-in (protocol 16.0, no agent-user):
669
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-cluster-audit-update
670
+ # Confirm exact cluster UUID; same-origin POST, CSRF and full read-back required.
671
+ # Independent loopback-only web cluster ping pair opt-in (protocol 16.0, no agent-user):
672
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-cluster-ping-update
673
+ # Set both values to zero or 0 < period < timeout; confirm exact UUID; verified read-back required.
674
+ # Independent loopback-only web cluster restart schedule opt-in (protocol 16.0, no agent-user):
675
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-cluster-restart-schedule-update
676
+ # Enter verified schedule syntax or leave empty to clear; same-origin POST, CSRF, exact UUID and full read-back.
677
+ # Independent loopback-only web working-server restart schedule opt-in (protocol 16.0, no cluster-user):
678
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-server-restart-schedule-update
679
+ # Confirm the exact server UUID; empty clears schedule. Same-origin POST, CSRF and full read-back required.
680
+ # Independent loopback-only web working-server infobases limit opt-in (protocol 16.0, no cluster-user):
681
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-server-infobases-limit-update
682
+ # Select server, enter integer limit 0..2147483647, confirm its UUID; full read-back required.
683
+ # Independent loopback-only web working-server connections-per-process limit opt-in (protocol 16.0, no cluster-user):
684
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-server-connections-limit-update
685
+ # Select server, enter integer limit 0..2147483647, confirm its UUID; full read-back required.
686
+ # Independent loopback-only web working-server safe-call memory limit opt-in (protocol 16.0, no cluster-user):
687
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-server-safe-call-memory-limit-update
688
+ # Select server, enter integer limit 0..9223372036854775807, confirm its UUID; full read-back required.
689
+ # Independent loopback-only web working-server critical total memory opt-in (protocol 16.0, no cluster-user):
690
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-server-critical-total-memory-update
691
+ # Select server, enter integer 0..9223372036854775807, confirm its UUID; full read-back required.
692
+ # Independent loopback-only web working-server temporary allowed total memory opt-in (protocol 16.0, no cluster-user):
693
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-server-temporary-total-memory-update
694
+ # Select server, enter integer 0..9223372036854775807, confirm its UUID; full read-back required.
695
+ # Independent loopback-only web working-server temporary memory time limit opt-in (protocol 16.0, no cluster-user):
696
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-server-temporary-memory-time-limit-update
697
+ # Select server, enter integer 0..9223372036854775807, confirm its UUID; full read-back required.
698
+ # Independent loopback-only web working-server SPN update/clear opt-in (protocol 16.0, no cluster-user):
699
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-server-spn-update
700
+ # Select server, enter SPN (empty clears, <=256 UTF-8 bytes), confirm its exact UUID; full read-back required.
701
+ # Independent loopback-only web working-server dedicated managers opt-in (protocol 16.0, no cluster-user):
702
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-server-dedicate-managers-update
703
+ # Select server, choose all or none, confirm its exact UUID; full read-back required.
704
+ # Independent loopback-only web working-server port ranges opt-in (protocol 16.0, no cluster-user):
705
+ # pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --allow-server-port-ranges-update
706
+ # Select server, enter 1..64 non-overlapping start:end ranges (ports 1..65535), confirm its exact UUID; full read-back required.
707
+ # The twenty-one web opt-in flags can be combined; none is enabled by default.
708
+ pyrac-web --host=127.0.0.1 --ras-host=127.0.0.1 --protocol=16.0
709
+ # Optional OS-authenticated administrator names for read-only web operations:
710
+ # pyrac-web --host=127.0.0.1 --cluster-user=cluster-reader --agent-user=agent-reader
711
+ ```
712
+
713
+ The desktop group selector also offers `Cluster: Info`, `Server: Processes`, `Server: Transfer directories by service` (optional service-name field), `Process: Connections (locally filtered)`, `Infobase: Connections`, `Infobase: Sessions (16.0 populated unverified)`, and `Infobase: Locks` / `Connection: Locks` for selected UUID-scoped reads. The desktop UI requires a graphical display and PySide6; it reads off the GUI thread. `Refresh clusters` reloads the cluster selector; `Refresh selected view` repeats the current read without changing the selected group or record. MCP uses local stdio with explicit read-only tools, including `rac_cluster_overview(cluster_id)` for cluster info and its server, process and infobase-summary lists; it accepts no credential-bearing tool parameters. Optional startup `--agent-user` and `--cluster-user` configure OS-authenticated administrator names for desktop, MCP and web (no password flags); they do not enable unverified write or password flows. By default desktop, MCP and web expose no writes. The web server optionally enables a single guarded mutation with `--allow-process-turn-off`, but only on a loopback bind, protocol 16.0, and without `--cluster-user`: the process card links to a confirmation page; a same-origin loopback POST must carry the server-generated CSRF token and repeat the exact process UUID. The server refuses nonlocal peers, untrusted Host headers and cross-origin submissions, uses no-store/no-referrer/frame-deny response headers, and does not claim success when the guarded client cannot verify disappearance. The WSGI route was exercised against a fresh isolated local RAS 8.5.1.1343: GET showed the exact owned process and its confirmation form; cross-origin and wrong-UUID POSTs were rejected without effect; a same-origin confirmed POST returned a different process UUID, port and PID, matching direct Python and vendor `rac process list` read-back. This validates the WSGI app path with a real RAS. A separate owned isolated RAS and standalone `python -m pyrac.web --allow-process-turn-off` HTTP listener were then exercised with a real HTTP client: GET returned the confirmation form and no-store header; wrong UUID, foreign Origin and wrong CSRF token each produced 403 while the original process remained; a valid POST returned 200 and the replacement UUID/port/PID matched direct Python and vendor `rac process list`. The web listener and both local lab processes were stopped and their ports closed. This is a local-only laboratory control, **not** authorization or a production-safe multi-user admin interface; do not run behind an exposing proxy. The MCP server has one explicit exception when launched with `--allow-process-turn-off`: `rac_turn_off_process(cluster_id, process_id, confirm_process_id)` calls the guarded 16.0 client only after exact UUID confirmation; the flag rejects protocol 10.0 and `--cluster-user`. The MCP server offers a second, separately enabled mutation with `--allow-cluster-name-update`: `rac_update_cluster_name(cluster_id, name, confirm_cluster_id)` delegates to the guarded 16.0 client and returns a full-verified cluster record. This opt-in rejects protocol 10.0 and `--agent-user`; the process flag and cluster-name flag can be combined without enabling each other implicitly. The new tool was also exercised over real MCP stdio against a fresh isolated 8.5.1.1343 RAS: absent without opt-in, mismatched confirmation rejected without changing the cluster, and the confirmed name update matched direct full-record read-back. The original name and full cluster record were restored; vendor `rac cluster list` confirmed the original name before the laboratory was stopped. The desktop has the same guarded process turn-off behind its own explicit flag: select the cluster and process, then enter the exact process UUID in the confirmation dialog; failures are reported as unverified without replacing the selected process, and successful responses replace the stale process selector with the verified read-back list (no process auto-selected). The desktop flag also rejects protocol 10.0 and `--cluster-user`; switching the live protocol selector to 10.0 disables the action. This operation is destructive and intended only for controlled stands. Keep the read-only web dashboard behind an authenticated TLS reverse proxy if exposed; the opt-in write mode must remain loopback-only and must not be proxied. Protocol selection is explicit; neither app retries with another protocol on failure.
714
+
715
+ MCP `rac_list_counter_values` and `rac_list_accumulated_counter_values` and web counter-card links `/clusters/UUID/counters/ENCODED_NAME/values` and `/accumulated-values` expose the existing direct 16.0 reads for a named counter; MCP also accepts an optional object filter. Populated readings are not live-verified on 16.0; the web values routes offer a GET filter form and accept a single optional URL-encoded `object_filter` query parameter, validated before transport. MCP tool `rac_list_processes_on_server(cluster_id, server_id)` exposes the existing server-filtered process list after validating both UUIDs. MCP `rac_list_sessions_in_infobase(cluster_id, infobase_id)` exposes the existing infobase-filtered session list with both UUIDs checked before transport; populated 16.0 session records are unverified. MCP `rac_list_connections_in_infobase(cluster_id, infobase_id)` similarly exposes the confirmed infobase-filtered connection list with both UUIDs checked before transport. MCP `rac_list_connections_in_process(cluster_id, process_id)` filters decoded cluster connections locally; it is not a separate verified process-scoped 16.0 wire request. MCP `rac_list_filtered_locks(cluster_id, scope, record_id)` supports only verified `infobase` and `connection` UUID filters; the vendor session option sends the unfiltered request and is not advertised as a filter. Web route `/clusters/UUID/info` opens the cluster's existing read-only `get_cluster` record. Web routes `/clusters/UUID/GROUP`, the desktop group selector, and MCP tool `rac_list_cluster_group(cluster_id, group)` also expose the verified cluster-scoped lists: servers, processes, infobases, sessions, connections, profiles, counters, limits, managers, services, and locks. Unsupported groups are rejected; these views remain read-only. Populated 16.0 session and counter-value decoding is not yet verified on the isolated stand.
716
+
717
+ Web `/clusters/UUID/processes/PROCESS_UUID/connections` lists connections after local process filtering of the decoded cluster list; both the process list and process card link to this read-only view, which links to connection cards. The web server card links to `/clusters/UUID/servers/SERVER_UUID/processes`, which lists processes using the verified server filter and links to process cards. The web server list and each server card link to supported server-scoped groups; the process list links to individual process records. Web routes `/clusters/UUID/servers/SERVER_UUID/GROUP` and MCP tool `rac_list_server_group(cluster_id, server_id, group)` expose only the existing server-scoped reads `rules`, `service-settings`, and `transfer-directories`; MCP `rac_list_transfer_directories(cluster_id, server_id, service_name)` and the web transfer-directories GET form additionally support the verified optional service-name filter, validated before transport. The web routes `/clusters/UUID/servers/SERVER_UUID/service-settings/SETTING_UUID` and `/clusters/UUID/servers/SERVER_UUID/rules/RULE_UUID` plus MCP tools `rac_get_service_setting` and `rac_get_rule` expose individual setting and assignment-rule info. The web routes `/clusters/UUID/servers/SERVER_UUID`, `/clusters/UUID/processes/PROCESS_UUID`, `/clusters/UUID/sessions/SESSION_UUID`, `/clusters/UUID/connections/CONNECTION_UUID`, `/clusters/UUID/managers/MANAGER_UUID`, `/clusters/UUID/limits/ENCODED_NAME`, `/clusters/UUID/counters/ENCODED_NAME`, and `/clusters/UUID/infobases/INFOBASE_UUID/summary` plus MCP tools `rac_get_server`, `rac_get_process`, `rac_get_session`, `rac_get_connection`, `rac_get_manager`, `rac_get_limit`, `rac_get_counter`, and `rac_get_infobase_summary` expose existing per-record reads. MCP `rac_get_infobase_summary_by_name(cluster_id, name)` additionally resolves a unique infobase name through the existing public-client lookup, with name and cluster validated before transport. UUIDs are validated and groups use an explicit allowlist; empty local group results were checked against an isolated 8.5.1 RAS. Populated decoding is documented separately in the command inventory.
718
+
719
+ Web profile links `/clusters/UUID/profiles/PROFILE/acl/TYPE`, the GET-only `/clusters/UUID/profiles/by-name?name=...` lookup (unique exact name), and the GET-only `/clusters/UUID/profiles/overview?name=...` page expose verified profile-list and ACL reads. The overview displays a unique profile and its six ACL lists through one read-only connection, with escaped output and links from the profile list. MCP tools `rac_list_profile_acl(cluster_id, profile_name, acl_type)` / `rac_get_profile_by_name(cluster_id, name)` expose verified profile-list and ACL reads. MCP `rac_profile_overview(cluster_id, name)` returns one uniquely matched profile and all six verified ACL lists through a single read-only connection; an absent or duplicate name fails before requesting ACLs. MCP tool `rac_get_infobase_info_by_name(cluster_id, name)` uses the same unique-name resolution as the CLI and filters authentication/access fields before returning full info. Web route `/clusters/UUID/infobases/INFOBASE_UUID/info` and MCP tool `rac_get_infobase_info` expose full 16.0 infobase info after filtering authentication/access parameters in the shared read service. The infobase and connection lists, as well as each connection card, link to read-only `/locks` views filtered by their UUIDs. There is no session-filtered locks view: the vendor session option sends an unfiltered request. The web infobase list `/clusters/UUID/infobases` has two GET name-search forms: `/clusters/UUID/infobases/by-name?name=...` resolves a unique summary, and `/clusters/UUID/infobases/info-by-name?name=...` resolves filtered full info. Both reject invalid queries and POST. The web infobase list `/clusters/UUID/infobases` and each infobase summary card link to full info, binary-storage, infobase-filtered session, infobase-filtered connection, and lock views. The session and connection views link to their record cards; populated 16.0 sessions remain unverified. Route `/clusters/UUID/infobases/INFOBASE_UUID/binary-storages` and MCP tool `rac_list_binary_storages` expose the existing storage list only; populated storage decoding and storage info remain unverified. Names and ACL types are validated before transport. These are reads only; profile mutations remain unavailable in web/MCP.
720
+
721
+ The read-only web routes `/agent/version`, `/agent/admins`, and `/clusters/UUID/admins`, and MCP tools `rac_agent_version`, `rac_list_agent_admins`, and `rac_list_cluster_admins` expose existing agent-version and administrator-list reads (no administrator writes). Agent version remains unsupported on protocol 10.0. Desktop also offers agent version and agent/cluster administrator lists, server, process, session, connection, manager, named-limit, named-counter and infobase selectors, plus a profile-name field. Selecting a server, process, session, connection, manager, named limit or named counter can display its read-only information through the shared service. `Profile: By name` likewise displays one exactly matched security-profile record from the profile-name field. `Profile: Overview with ACL` reads the same unique profile and all six verified ACL lists through one connection. The desktop counter selector can display current and accumulated readings with an optional object filter (populated 16.0 decoding remains unverified). The selected server's service-setting and assignment-rule lists also allow opening individual records. The infobase selector supports summary, full info and binary-storage lists; separate `Infobase: Summary by name` and `Infobase: Full info by name` views resolve a typed unique name without requiring UUID selection. The full-info views use the shared filtering that removes authentication/access parameters. Binary-storage decoding has only been verified for an empty list, not populated records. The GUI does not store passwords; write actions are disabled by default. Its opt-in process turn-off button uses exact UUID confirmation and the guarded 16.0 client; the UI route has offscreen fake-client tests and a live offscreen desktop-to-RAS 8.5.1.1343 smoke on an isolated local stand. A mismatched confirmation caused no request, while a confirmed action replaced the owned process; the resulting UUID/port/PID matched direct Python and vendor `rac` read-back. Scoped desktop navigation is covered by offscreen tests with a fake client; live ACL navigation requires an existing profile.
722
+
723
+ Install with `python3 -m pip install .` (or run from a checkout). The 16.0 default is a direct Python TCP implementation: no vendor `rac` binary
724
+ is invoked or required. Reads of clusters, working servers, processes and an
725
+ empty infobase list, plus cluster and server restart-schedule writes, were
726
+ verified on an isolated 8.5.1.1343 stand. Populated infobase records are supported on the isolated PostgreSQL-1C fixture; coverage of individual settings is tracked in the command inventory. Password authentication on 16.0 is a narrowly verified direct-frame read path for administrator lists, **unfiltered manager list and info by UUID**, **unfiltered service list**, **infobase summary list and info by UUID**, **unfiltered and infobase-filtered lock lists**, **working-server list and info by UUID**, **unfiltered and infobase-filtered session lists**, **session info by UUID**, **unfiltered and infobase-filtered connection lists**, **connection info by UUID**, **unfiltered and server-filtered process lists**, and **process info by UUID**: populated records were decoded on dev-area-06 after password-authenticated cluster request 9 (manager list 18/19, manager info 20/21, service list 35/36, infobase summary list 42/43, infobase summary info 46/47, lock list 72/73 and infobase-filtered lock list 74/75, server list 22, server info 24, session list 65, infobase-filtered session list 67, session info 69, connection list 50, infobase-filtered connection list 52, connection info 54, process list 29, server-filtered process list 33, process info 31). Selected manager, infobase summary, server, session, connection and process info records matched their list records; no records were retained. Password-authenticated connection- and session-filtered locks and other reads and mutations are not inferred from this. Populated infobase-filtered session and connection results were decoded on dev-area-06; their identifiers were subsets of the corresponding unfiltered lists at the time of each probe. Wrong passwords were rejected and a freshly generated password succeeded for administrator lists on an isolated local RAS. The temporary password-protected administrators from the first probe remain on the older local stand (port 26545), which must not be used as a clean test fixture. A fresh isolated stand (port 26645) was used for reproducible password-authenticated administrator list reads with generated credentials, cleanup and full baseline restoration. Do not pass passwords via CLI arguments; use the library in a protected process, and do not silently downgrade after an auth failure. Select `--protocol=10.0`
727
+ for the preserved Python codec for 1C 8.3.11 (`pyrac.v8311`; `pyrac.legacy` remains an import-compatible alias). The original `rac_client.py` script
728
+ still provides the historical CLI.
729
+
730
+ Narrow 16.0 password-authenticated list reads also cover security profiles and profile directories (one populated record of each verified on dev-area-06), counters and limits (empty responses only on that stand). Other ACL lists, info and mutation operations do not inherit password support from these reads.
731
+
732
+ ```bash
733
+ python3 -m pyrac --protocol=16.0 --ras-host=127.0.0.1 cluster list
734
+ python3 -m pyrac --ras-host=127.0.0.1 cluster info --cluster=UUID
735
+ python3 -m pyrac --ras-host=127.0.0.1 server --cluster=UUID list
736
+ python3 -m pyrac --ras-host=127.0.0.1 process --cluster=UUID list
737
+ # Destructive: only on an owned, isolated RAS process. Prechecks the UUID and waits for its disappearance.
738
+ python3 -m pyrac --ras-host=127.0.0.1 process --cluster=UUID turn-off --process=PROCESS_UUID
739
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID summary list
740
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID info --infobase=INFOBASE_UUID
741
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID update --infobase=INFOBASE_UUID --descr='new description'
742
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID update --infobase=INFOBASE_UUID --scheduled-jobs-deny=on
743
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID update --infobase=INFOBASE_UUID --sessions-deny=on
744
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID update --infobase=INFOBASE_UUID --license-distribution=allow
745
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID update --infobase=INFOBASE_UUID --denied-message='temporary maintenance'
746
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID update --infobase=INFOBASE_UUID --reserve-working-processes=yes
747
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID update --infobase=INFOBASE_UUID --external-session-manager-required=yes
748
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID update --infobase=INFOBASE_UUID --disable-local-speech-to-text=yes
749
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID update --infobase=INFOBASE_UUID --configuration-unload-delay-by-working-process-without-active-users=17
750
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID update --infobase=INFOBASE_UUID --minimum-scheduled-jobs-start-period-without-active-users=23
751
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID update --infobase=INFOBASE_UUID --maximum-scheduled-jobs-start-shift-without-active-users=29
752
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID update --infobase=INFOBASE_UUID --security-profile-name=EXISTING_PROFILE_NAME # use an empty value to clear
753
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID update --infobase=INFOBASE_UUID --safe-mode-security-profile-name=EXISTING_PROFILE_NAME # use an empty value to clear
754
+ # Restore on the same disposable infobase with =off, --license-distribution=deny, --denied-message='', --reserve-working-processes=no or --external-session-manager-required=no or --disable-local-speech-to-text=no; restore the configuration unload delay, minimum scheduled jobs period and maximum scheduled jobs shift with =0 if they were initially zero
755
+ # Creates a new PostgreSQL database (password-free DB user only in this verified subset).
756
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID info --name=NAME # protocol 16.0; unique summary-list match, then verified full info by UUID (or use --infobase=UUID)
757
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID create --name=NAME --db-name=DB --db-server=HOST --db-user=USER --locale=ru_RU --create-database --scheduled-jobs-deny=on --license-distribution=allow --date-offset=2000 --security-level=1 # optional; defaults off/deny/0/0; date offset 0 or 2000, security level 0 or 1
758
+ # Registers an infobase against an existing PostgreSQL database; does not create or remove the database.
759
+ # Use only with a database you own; this is a registration operation, not a database restore.
760
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID create --name=NAME --db-name=EXISTING_DB --db-server=HOST --db-user=USER --locale=ru_RU --use-existing-database
761
+ # Destructive: removes the infobase AND its database; use only on an owned disposable fixture.
762
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID drop --infobase=INFOBASE_UUID --drop-database
763
+ # Removes only the infobase registration; the database remains and must be managed separately.
764
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID drop --infobase=INFOBASE_UUID --keep-database
765
+ # Removes the registration and clears all tables in its database while leaving the empty database in place.
766
+ # Destructive: use only on an owned disposable fixture; --drop-database/--keep-database/--clear-database are mutually exclusive.
767
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID drop --infobase=INFOBASE_UUID --clear-database
768
+ python3 -m pyrac --ras-host=127.0.0.1 infobase --cluster=UUID summary update --infobase=INFOBASE_UUID --descr='new description'
769
+ python3 -m pyrac --ras-host=127.0.0.1 binary-data-storage --cluster=UUID list --infobase=INFOBASE_UUID
770
+ python3 -m pyrac --protocol=16.0 --ras-host=127.0.0.1 cluster update --cluster=UUID --restart-schedule='1 2 3 4 5 6'
771
+ python3 -m pyrac --ras-host=127.0.0.1 server --cluster=UUID update --server=SERVER_UUID --restart-schedule='1 2 3 4 5 6'
772
+ python3 -m pyrac.web --host=127.0.0.1 --port=8080 --ras-host=127.0.0.1 --protocol=16.0
773
+ ```
774
+
775
+ The local 8.5.1 RAS accepted the example schedule for both cluster and server;
776
+ the library verifies each saved value by reading it back. The complete
777
+ proprietary schedule grammar is not established. Keep the dashboard on loopback;
778
+ a public deployment needs external authentication and TLS. Dashboard has no
779
+ write routes.
780
+
781
+ For embedding use `async with pyrac.RacClient(host, port, protocol='16.0')`.
782
+ See [protocol matrix](docs/protocol-matrix.md) and the
783
+ [original `rac` command inventory](docs/rac-command-coverage.md) for verification
784
+ scope and operations not yet decoded.
785
+
786
+ ## 8.5.1 direct protocol scope
787
+
788
+ The direct codec was exercised against an isolated local 8.5.1.1343 RAS for
789
+ cluster, working-server and working-process reads, an empty infobase list, and
790
+ cluster/server schedule updates with read-back and restoration. Process fields
791
+ whose meanings are not proven across builds remain `raw-*`. Password authentication
792
+ is a 10.0-derived experiment (administrator-list probes only); wrong passwords were
793
+ rejected and a generated password succeeded on an isolated RAS. Other commands and unverified options still need independent verification; consult the inventory for exact scope.
794
+
795
+ ## Original CLI examples
796
+
797
+
798
+ Реализация основана на статьях: https://infostart.ru/1c/articles/1503913/ и https://infostart.ru/1c/tools/1519541/
799
+
800
+ Формат данных описан в https://github.com/v8platform/protos
801
+
802
+ ## Примеры использования
803
+
804
+ * Список кластеров:
805
+
806
+ ``rac_client.py --ras-host=area-sp-01 --ras-port=1545 cluster list``
807
+
808
+ * Информация о кластере:
809
+
810
+ ``rac_client.py --ras-host=area-sp-01 --ras-port=1545 cluster info --cluster=0cec4877-38b8-4fa1-8ee3-3c6623ba7c92``
811
+
812
+ * Установка времени перезапуска сеансов:
813
+
814
+ ``rac_client.py --ras-host=area-sp-01 --ras-port=1545 cluster update --cluster=0cec4877-38b8-4fa1-8ee3-3c6623ba7c92 --agent-user=agent1c --agent-pwd=пароль --lifetime-limit=86400 --expiration-timeout=180``
815
+
816
+ * Список ИБ:
817
+
818
+ ``rac_client.py --ras-host=area-sp-01 --ras-port=1545 infobase --cluster=0cec4877-38b8-4fa1-8ee3-3c6623ba7c92 --cluster-user=agent1c --cluster-pwd=пароль summary list``
819
+
820
+ * Информация о ИБ:
821
+
822
+ ``rac_client.py --ras-host=area-sp-01 --ras-port=1545 infobase --cluster=0cec4877-38b8-4fa1-8ee3-3c6623ba7c92 --cluster-user=agent1c --cluster-pwd=пароль info --infobase=779e935b-7cfc-4b3e-a36e-fff3a8dd693f --infobase-user=Admin --infobase-pwd=пароль``
823
+
824
+ * Установка блокировки сеансов:
825
+
826
+ ``rac_client.py --ras-host=area-sp-01 --ras-port=1545 infobase --cluster=0cec4877-38b8-4fa1-8ee3-3c6623ba7c92 --cluster-user=agent1c --cluster-pwd=пароль update --infobase=779e935b-7cfc-4b3e-a36e-fff3a8dd693f --infobase-user=Admin --infobase-pwd=пароль --denied-message="" --sessions-deny=on --scheduled-jobs-deny=on --permission-code="1234567890" --denied-from="2024-01-01 23:00:00" --denied-to=""``
827
+
828
+ * Список сеансов:
829
+
830
+ ``rac_client.py --ras-host=area-sp-01 --ras-port=1545 session --cluster=0cec4877-38b8-4fa1-8ee3-3c6623ba7c92 --cluster-user=agent1c --cluster-pwd=пароль list``
831
+
832
+ * Завершение определенного сеанса:
833
+
834
+ ``rac_client.py --ras-host=area-sp-01 --ras-port=1545 session --cluster=0cec4877-38b8-4fa1-8ee3-3c6623ba7c92 --cluster-user=agent1c --cluster-pwd=пароль terminate --session=1da9758f-3c10-4064-9501-bc848863bbc3``
835
+
836
+ * Завершение всех сеансов ИБ:
837
+
838
+ ``rac_client.py --ras-host=area-sp-01 --ras-port=1545 session --cluster=0cec4877-38b8-4fa1-8ee3-3c6623ba7c92 --cluster-user=agent1c --cluster-pwd=пароль terminate --infobase=779e935b-7cfc-4b3e-a36e-fff3a8dd693f``
839
+
840
+ * Завершение всех сеансов кластера:
841
+
842
+ ``rac_client.py --ras-host=area-sp-01 --ras-port=1545 session --cluster=0cec4877-38b8-4fa1-8ee3-3c6623ba7c92 --cluster-user=agent1c --cluster-pwd=пароль terminate``
843
+