diff --git a/doc/rac-manual.txt b/doc/rac-manual.txt index 3c4d185..cf7436e 100644 --- a/doc/rac-manual.txt +++ b/doc/rac-manual.txt @@ -337,11 +337,11 @@ profile Режим управления профилями безопас Команды: info - получение информации о менеджере - - --manager= - (обязательный) идентификатор менеджера кластера серверов - + получение информации о менеджере + +--manager= + (обязательный) идентификатор менеджера кластера серверов + list получение списка информации о менеджерах 1C:Enterprise 8.3 Remote Administrative Client Utility © 1C-Soft LLC 1996-2018 @@ -378,76 +378,76 @@ server имя администратора кластера --cluster-pwd= - пароль администратора кластера - -Команды: - + пароль администратора кластера + + Команды: + info - получение информации о рабочем сервере - - --server= - (обязательный) идентификатор рабочего сервера кластера серверов - + получение информации о рабочем сервере + + --server= + (обязательный) идентификатор рабочего сервера кластера серверов + list - получение списка информации о рабочих серверах - + получение списка информации о рабочих серверах + insert - регистрация рабочего сервера - - --agent-host= - (обязательный) имя хоста или IP-адрес агента сервера - - --agent-port= - (обязательный) основной порт агента сервера - - --port-range=: - (обязательный) диапазон IP портов для динамического распределения, - возможно указание нескольких диапазонов - - --name= - наименование рабочего сервера - ---using=main|normal - вариант использования рабочего сервера - main - в качестве центрального сервера - normal - в качестве обычного сервера - ---infobases-limit= - максимальное количество информационных баз на рабочий процесс - ---memory-limit= - предел использования памяти рабочими процессами - - --connections-limit= - максимальное количество соединения на рабочий процесс - - --cluster-port= - номер порта главного менеджера кластера - - --dedicate-managers=all|none - вариант размещения менеджеров сервисов - all - размещать все сервисы в отдельных менеджерах - none - размещать все сервисы в одном менеджере - - --safe-working-processes-memory-limit= - максимальный объем памяти рабочих процессов на сервере - - --safe-call-memory-limit= - безопасный расход памяти за один вызов в байтах - + регистрация рабочего сервера + + --agent-host= + (обязательный) имя хоста или IP-адрес агента сервера + + --agent-port= + (обязательный) основной порт агента сервера + + --port-range=: + (обязательный) диапазон IP портов для динамического распределения, + возможно указание нескольких диапазонов + + --name= + наименование рабочего сервера + + --using=main|normal + вариант использования рабочего сервера + main - в качестве центрального сервера + normal - в качестве обычного сервера + + --infobases-limit= + максимальное количество информационных баз на рабочий процесс + + --memory-limit= + предел использования памяти рабочими процессами + + --connections-limit= + максимальное количество соединения на рабочий процесс + + --cluster-port= + номер порта главного менеджера кластера + + --dedicate-managers=all|none + вариант размещения менеджеров сервисов + all - размещать все сервисы в отдельных менеджерах + none - размещать все сервисы в одном менеджере + + --safe-working-processes-memory-limit= + максимальный объем памяти рабочих процессов на сервере + + --safe-call-memory-limit= + безопасный расход памяти за один вызов в байтах + update - изменение параметров рабочего сервера - - --server= - (обязательный) идентификатор рабочего сервера кластера серверов - - --port-range=: - диапазон IP портов для динамического распределения, - возможно указание нескольких диапазонов - + изменение параметров рабочего сервера + + --server= + (обязательный) идентификатор рабочего сервера кластера серверов + + --port-range=: + диапазон IP портов для динамического распределения, + возможно указание нескольких диапазонов + --using=main|normal вариант использования рабочего сервера - main - в качестве центрального сервера + main - в качестве центрального сервера normal - в качестве обычного сервера --infobases-limit= @@ -464,10 +464,10 @@ server all - размещать все сервисы в отдельных менеджерах none - размещать все сервисы в одном менеджере - --safe-working-processes-memory-limit= +--safe-working-processes-memory-limit= максимальный объем памяти рабочих процессов на сервере - --safe-call-memory-limit= +--safe-call-memory-limit= безопасный расход памяти за один вызов в байтах remove @@ -1010,7 +1010,7 @@ profile Режим управления профилями безопас Использование: - rac rule [command] [options] [arguments] +rac rule [command] [options] [arguments] Общие параметры: @@ -1035,8 +1035,8 @@ profile Режим управления профилями безопас --cluster= (обязательный) идентификатор кластера серверов - --cluster-user= - имя администратора кластера +--cluster-user= +имя администратора кластера --cluster-pwd= пароль администратора кластера @@ -1072,19 +1072,15 @@ profile Режим управления профилями безопас --server= (обязательный) идентификатор рабочего сервера кластера серверов - - --position= + --position= (обязательный) позиция в списке требований (начиная с 0) - - --object-type= + --object-type= идентификатор объекта требования - - --infobase-name= + --infobase-name= наименование информационной базы, если параметр не указан - требование распространяется на все информационные базы - - --rule-type=auto|always|never + --rule-type=auto|always|never тип правила распределения: auto - отсутствие правила (по-умолчанию) always - распределять только на данный сервер @@ -1437,3 +1433,4 @@ profile Режим управления профилями безопас + diff --git a/lib/function.tcl b/lib/function.tcl index 9044008..9afed8c 100644 --- a/lib/function.tcl +++ b/lib/function.tcl @@ -352,21 +352,6 @@ proc InsertWorkServerItems {tree id} { } } -proc DebugInfo {widget f} { - if {[eof $f]} { - catch [close $f] msg - if {$msg != ""} { - puts $msg - } else { - puts $msg - } - } - while {[gets $f line]>=0} { - puts "$line" - $widget insert {} end -text "$line" -values "$line" - } -} - proc Del {} { global active_cluster host set tree .frm_tree.tree @@ -540,6 +525,9 @@ proc Del::rule {tree host values} { } incr i } + if {[info exists rule_id] == 0 || $rule_id eq ""} { + return + } set answer [tk_messageBox -message "Удалить требование $rule_id?" \ -icon question -type yesno ] @@ -640,91 +628,92 @@ proc Add::server {} { return $frm } proc Add::servers {tree host values} { - global default dedicate_manager using_central_server + global default dedicate_managers using set dedicate_manager "none" set using_central_server "normal" #set active_cluster $values set frm [AddToplevel "Добавление рабочего сервера" server_grey_64] - label $frm.lbl_server_desc -text "Описание сервера" - entry $frm.ent_server_desc - label $frm.lbl_host -text "Адрес сервера" - entry $frm.ent_host - label $frm.lbl_port -text "Порт" - entry $frm.ent_port - $frm.ent_port insert end $default(port) - label $frm.lbl_ports_range -text "Диапазон портов" - entry $frm.ent_ports_range - $frm.ent_ports_range insert end $default(ports_range) - label $frm.lbl_ram_max -text "Максимальный объём памяти раб. процессов" - entry $frm.ent_ram_max - $frm.ent_ram_max insert end $default(ram_max) - label $frm.lbl_ram_sec -text "Безопасный расход памяти за вызов" - entry $frm.ent_ram_sec - $frm.ent_ram_sec insert end $default(ram_sec) - label $frm.lbl_ram_work -text "Объём памяти рабочих процессов" - entry $frm.ent_ram_work - $frm.ent_ram_work insert end $default(ram_work) - label $frm.lbl_base_on_process -text "Количество ИБ на процесс" - entry $frm.ent_base_on_process - $frm.ent_base_on_process insert end $default(base_on_process) - label $frm.lbl_connection_on_process -text "Количество соединений на процесс" - entry $frm.ent_connection_on_process - $frm.ent_connection_on_process insert end $default(connection_on_process) - label $frm.lbl_manager_port -text "Порт главного менеджера кластера" - entry $frm.ent_manager_port - $frm.ent_manager_port insert end $default(port) - label $frm.lbl_manager_each_service -text "Менеджер под каждый сервис" - checkbutton $frm.ent_manager_each_service -variable dedicate_manager -onvalue all -offvalue none - label $frm.lbl_central_server -text "Центральный сервер" - checkbutton $frm.ent_central_server -variable using_central_server -onvalue main -offvalue normal + label $frm.lbl_name -text "Описание сервера" + entry $frm.ent_name + label $frm.lbl_agent_host -text "Адрес сервера" + entry $frm.ent_agent_host + label $frm.lbl_agent_port -text "Порт" + entry $frm.ent_agent_port + $frm.ent_agent_port insert end $default(port) + label $frm.lbl_port_range -text "Диапазон портов" + entry $frm.ent_port_range + $frm.ent_port_range insert end $default(port_range) + label $frm.lbl_safe_working_processes_memory_limit -text "Максимальный объём памяти раб. процессов" + entry $frm.ent_safe_working_processes_memory_limit + $frm.ent_safe_working_processes_memory_limit insert end $default(safe_working_processes_memory_limit) + label $frm.lbl_safe_call_memory_limit -text "Безопасный расход памяти за вызов" + entry $frm.ent_safe_call_memory_limit + $frm.ent_safe_call_memory_limit insert end $default(safe_call_memory_limit) + label $frm.lbl_memory_limit -text "Объём памяти рабочих процессов" + entry $frm.ent_memory_limit + $frm.ent_memory_limit insert end $default(ram_work) + label $frm.lbl_infobases_limit -text "Количество ИБ на процесс" + entry $frm.ent_infobases_limit + $frm.ent_infobases_limit insert end $default(infobases_limit) + label $frm.lbl_connections_limit -text "Количество соединений на процесс" + entry $frm.ent_connections_limit + $frm.ent_connections_limit insert end $default(connections_limit) + label $frm.lbl_cluster_port -text "Порт главного менеджера кластера" + entry $frm.ent_cluster_port + $frm.ent_cluster_port insert end $default(port) + label $frm.lbl_dedicate_managers -text "Менеджер под каждый сервис" + checkbutton $frm.check_dedicate_managers -variable dedicate_managers -onvalue all -offvalue none + label $frm.lbl_using -text "Центральный сервер" + checkbutton $frm.check_using -variable using -onvalue main -offvalue normal - grid $frm.lbl_server_desc -row 0 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.ent_server_desc -row 0 -column 1 -sticky nsew -padx 5 -pady 5 - grid $frm.lbl_host -row 1 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.ent_host -row 1 -column 1 -sticky nsew -padx 5 -pady 5 - grid $frm.lbl_port -row 2 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.ent_port -row 2 -column 1 -sticky nsew -padx 5 -pady 5 - grid $frm.lbl_ports_range -row 3 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.ent_ports_range -row 3 -column 1 -sticky nsew -padx 5 -pady 5 - grid $frm.lbl_ram_max -row 4 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.ent_ram_max -row 4 -column 1 -sticky nsew -padx 5 -pady 5 - grid $frm.lbl_ram_sec -row 5 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.ent_ram_sec -row 5 -column 1 -sticky nsew -padx 5 -pady 5 - grid $frm.lbl_ram_work -row 6 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.ent_ram_work -row 6 -column 1 -sticky nsew -padx 5 -pady 5 - grid $frm.lbl_base_on_process -row 7 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.ent_base_on_process -row 7 -column 1 -sticky nsew -padx 5 -pady 5 - grid $frm.lbl_connection_on_process -row 8 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.ent_connection_on_process -row 8 -column 1 -sticky nsew -padx 5 -pady 5 - grid $frm.lbl_manager_port -row 9 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.ent_manager_port -row 9 -column 1 -sticky nsew -padx 5 -pady 5 - grid $frm.lbl_manager_each_service -row 10 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.ent_manager_each_service -row 10 -column 1 -sticky nw -padx 5 -pady 5 - grid $frm.lbl_central_server -row 11 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.ent_central_server -row 11 -column 1 -sticky nw -padx 5 -pady 5 + grid $frm.lbl_name -row 0 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.ent_name -row 0 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_agent_host -row 1 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.ent_agent_host -row 1 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_agent_port -row 2 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.ent_agent_port -row 2 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_port_range -row 3 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.ent_port_range -row 3 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_safe_working_processes_memory_limit -row 4 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.ent_safe_working_processes_memory_limit -row 4 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_safe_call_memory_limit -row 5 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.ent_safe_call_memory_limit -row 5 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_memory_limit -row 6 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.ent_memory_limit -row 6 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_infobases_limit -row 7 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.ent_infobases_limit -row 7 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_connections_limit -row 8 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.ent_connections_limit -row 8 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_cluster_port -row 9 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.ent_cluster_port -row 9 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_dedicate_managers -row 10 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.check_dedicate_managers -row 10 -column 1 -sticky nw -padx 5 -pady 5 + grid $frm.lbl_using -row 11 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.check_using -row 11 -column 1 -sticky nw -padx 5 -pady 5 .add.frm_btn.btn_ok configure -command { RunCommand "" "server insert \ - --agent-host=[.add.frm.ent_host get] \ - --agent-port=[.add.frm.ent_port get] \ - --port-range=[.add.frm.ent_ports_range get] \ - --name=[.add.frm.ent_server_desc get] \ - --using=$using_central_server \ - --infobases-limit=[.add.frm.ent_base_on_process get] \ - --memory-limit=[.add.frm.ent_ram_work get] \ - --connections-limit=[.add.frm.ent_connection_on_process get] \ - --cluster-port=[.add.frm.ent_manager_port get] \ + --agent-host=[.add.frm.ent_agent_host get] \ + --agent-port=[.add.frm.ent_agent_port get] \ + --port-range=[.add.frm.ent_port_range get] \ + --name=[.add.frm.ent_name get] \ + --using=$using \ + --infobases-limit=[.add.frm.ent_infobases_limit get] \ + --memory-limit=[.add.frm.ent_memory_limit get] \ + --connections-limit=[.add.frm.ent_connections_limit get] \ + --cluster-port=[.add.frm.ent_cluster_port get] \ --dedicate-managers=$dedicate_manager \ - --safe-working-processes-memory-limit=[.add.frm.ent_ram_max get] \ - --safe-call-memory-limit=[.add.frm.ent_ram_sec get] \ + --safe-working-processes-memory-limit=[.add.frm.ent_safe_working_processes_memory_limit get] \ + --safe-call-memory-limit=[.add.frm.ent_safe_call_memory_limit get] \ --cluster=$active_cluster $host" Run::servers $tree $host $active_cluster destroy .add } + return $frm } proc Add::work_server {tree host values} { - Add::servers $tree $host $values + return [Add::servers $tree $host $values] } proc Add::infobase {tree host values} { Add::infobases $tree $host $values @@ -923,37 +912,39 @@ proc Add::cluster {tree host values} { } proc Add::rule {tree host values} { - global default active_cluster object infobase type server + global default active_cluster object infobase object_type server infobase_name rule_type set server $values set frm [AddToplevel "Требование назначения функциональности" functional_grey_64] - set type [lindex $default(type) 0] + #set type [lindex $default(obtype) 0] - label $frm.lbl_object -text "Объект требования" - set combo_object [ttk::combobox $frm.cb_object \ - -textvariable object -values $default(object)] - label $frm.lbl_type -text "Тип требования" - set combo_type [ttk::combobox $frm.cb_type \ - -textvariable type -values $default(type)] - label $frm.lbl_infobase -text "Имя ИБ" - set combo_infobase [ttk::combobox $frm.cb_infobase \ - -textvariable infobase -values [GetInfobases $active_cluster $host]] + label $frm.lbl_object_type -text "Объект требования" + ttk::combobox $frm.cb_object_type -textvariable object_type \ + -values $default(object_type)] - label $frm.lbl_par -text "Значение доп. параметра" - entry $frm.ent_par + label $frm.lbl_rule_type -text "Тип требования" + ttk::combobox $frm.cb_rule_type -textvariable rule_type \ + -values $default(rule_type)] + + label $frm.lbl_infobase_name -text "Имя ИБ" + ttk::combobox $frm.cb_infobase_name -textvariable infobase_name \ + -values [GetInfobases $active_cluster $host]] + + label $frm.lbl_application_ext -text "Значение доп. параметра" + entry $frm.ent_application_ext label $frm.lbl_priority -text "Приоритет" entry $frm.ent_priority $frm.ent_priority insert end $default(priority) - grid $frm.lbl_object -row 0 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.cb_object -row 0 -column 1 -sticky nsew -padx 5 -pady 5 - grid $frm.lbl_type -row 1 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.cb_type -row 1 -column 1 -sticky nsew -padx 5 -pady 5 - grid $frm.lbl_infobase -row 2 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.cb_infobase -row 2 -column 1 -sticky nsew -padx 5 -pady 5 - grid $frm.lbl_par -row 3 -column 0 -sticky nw -padx 5 -pady 5 - grid $frm.ent_par -row 3 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_object_type -row 0 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.cb_object_type -row 0 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_rule_type -row 1 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.cb_rule_type -row 1 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_infobase_name -row 2 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.cb_infobase_name -row 2 -column 1 -sticky nsew -padx 5 -pady 5 + grid $frm.lbl_application_ext -row 3 -column 0 -sticky nw -padx 5 -pady 5 + grid $frm.ent_application_ext -row 3 -column 1 -sticky nsew -padx 5 -pady 5 grid $frm.lbl_priority -row 4 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.ent_priority -row 4 -column 1 -sticky nsew -padx 5 -pady 5 @@ -962,14 +953,15 @@ proc Add::rule {tree host values} { --cluster=$active_cluster \ --server=$server \ --position=0 \ - --object-type=$object \ - --infobase-name=$infobase \ - --rule-type=$type \ - --application-ext=[.add.frm.ent_par get] \ + --object-type=$object_type \ + --infobase-name=$infobase_name \ + --rule-type=$rule_type \ + --application-ext=[.add.frm.ent_application_ext get] \ --priority=[.add.frm.ent_priority get] $host" Run::rule $tree $host $server destroy .add } + return $frm } proc GetInfobases {cluster host} { @@ -1035,7 +1027,7 @@ proc Edit::server {tree host value} { close $file close $orig_file #return "$host:$port" - file delete [file join $dir(work) 1c_srv.cfg.bak] + file delete [file join $dir(work) rac_gui .cfg.bak] destroy .add return $host } @@ -1092,8 +1084,28 @@ proc Edit::cluster {tree host values} { destroy .add } } +proc Edit::infobases {tree host values} { + set work_tree_id [.frm_work.tree_work selection] + set work_tree_values [.frm_work.tree_work item $work_tree_id -values] + set id [.frm_tree.tree selection] + #set values [.frm_tree.tree item $id -values] + set key [lindex [split $id "::"] 0] + set column_list [.frm_work.tree_work cget -columns] + set i 0 + # проверка соответсвия колонки в таблице и ключа в дереве + foreach l $column_list { + if {$l eq "infobase" } { + set infobase [lindex $work_tree_values $i] + } + incr i + } + if {[info exists infobase] == 0 || $infobase eq ""} { + return + } + Edit::infobase $tree $host $infobase +} proc Edit::infobase {tree host values} { - global default active_cluster infobase + global default active_cluster infobase global security_level dbms scheduled_jobs_deny license_distribution date_offset global sessions_deny set infobase $values @@ -1174,6 +1186,8 @@ proc Edit::infobase {tree host values} { set $entry_name no } elseif {$value eq "1"} { set $entry_name yes + } else { + set $entry_name $value } } } @@ -1207,3 +1221,129 @@ proc Edit::infobase {tree host values} { destroy .add } } +proc Edit::servers {tree host values} { + set work_tree_id [.frm_work.tree_work selection] + set work_tree_values [.frm_work.tree_work item $work_tree_id -values] + set id [.frm_tree.tree selection] + #set values [.frm_tree.tree item $id -values] + set key [lindex [split $id "::"] 0] + set column_list [.frm_work.tree_work cget -columns] + set i 0 + # проверка соответсвия колонки в таблице и ключа в дереве + foreach l $column_list { + if {$l eq "server" } { + set work_server [lindex $work_tree_values $i] + } + incr i + } + if {[info exists work_server] == 0 || $work_server eq ""} { + return + } + Edit::work_server $tree $host $work_server +} + +proc Edit::work_server {tree host values} { + global default active_cluster + global default dedicate_managers using + set server $values + set frm [Add::work_server $tree $host $values] + $frm configure -text "Редактирование рабочего сервера" + + set lst [RunCommand cluster::$values "server info --cluster=$active_cluster --server=$server $host"] + foreach i [lindex $lst 0] { + if [regexp -nocase -all -- {(\D+)(\s*?|)(:)(\s*?|)(.*)} $i match param v2 v3 v4 value] { + regsub -all -- "-" [string trim $param] "_" entry_name + if [winfo exists .add.frm.ent_$entry_name] { + .add.frm.ent_$entry_name delete 0 end + .add.frm.ent_$entry_name insert end [string trim $value "\""] + } + if [winfo exists .add.frm.cb_$entry_name] { + set $entry_name [string trim $value "\""] + } + if [winfo exists .add.frm.check_$entry_name] { + set $entry_name $value + } + } + } + .add.frm.lbl_agent_port configure -state disable + .add.frm.ent_agent_port configure -state disable + .add.frm.lbl_port_range configure -state disable + .add.frm.ent_port_range configure -state disable + .add.frm.lbl_name configure -state disable + .add.frm.ent_name configure -state disable + .add.frm.lbl_cluster_port configure -state disable + .add.frm.ent_cluster_port configure -state disable + + .add.frm_btn.btn_ok configure -command { + RunCommand "" "server update \ + --server=$server \ + --using=$using \ + --infobases-limit=[.add.frm.ent_infobases_limit get] \ + --memory-limit=[.add.frm.ent_memory_limit get] \ + --connections-limit=[.add.frm.ent_connections_limit get] \ + --dedicate-managers=$dedicate_managers \ + --safe-working-processes-memory-limit=[.add.frm.ent_safe_working_processes_memory_limit get] \ + --safe-call-memory-limit=[.add.frm.ent_safe_call_memory_limit get] \ + --cluster=$active_cluster $host" + Run::servers $tree $host $active_cluster + destroy .add + } +} +proc Edit::rule {tree host values} { + global default active_cluster object_type infobase_name object_type server infobase_name rule_type rule + set work_tree_id [.frm_work.tree_work selection] + set work_tree_values [.frm_work.tree_work item $work_tree_id -values] + set id [.frm_tree.tree selection] + #set values [.frm_tree.tree item $id -values] + set key [lindex [split $id "::"] 0] + set column_list [.frm_work.tree_work cget -columns] + set i 0 + # проверка соответсвия колонки в таблице и ключа в дереве + foreach l $column_list { + if {$l eq "rule" } { + set rule [lindex $work_tree_values $i] + } + incr i + } + if {[info exists rule] == 0 || $rule eq ""} { + return + } + + set frm [Add::rule $tree $host $server] + $frm configure -text "Редактирование требования назначения функциональности" + + puts "cluster = $active_cluster\nserver=$server\nrule=$rule" + + set lst [RunCommand "" "rule info --cluster=$active_cluster --server=$server --rule=$rule $host"] + + foreach i [lindex $lst 0] { + if [regexp -nocase -all -- {(\D+)(\s*?|)(:)(\s*?|)(.*)} $i match param v2 v3 v4 value] { + regsub -all -- "-" [string trim $param] "_" entry_name + if [winfo exists .add.frm.ent_$entry_name] { + .add.frm.ent_$entry_name delete 0 end + .add.frm.ent_$entry_name insert end [string trim $value "\""] + } + if [winfo exists .add.frm.cb_$entry_name] { + set $entry_name [string trim $value "\""] + } + if [winfo exists .add.frm.check_$entry_name] { + set $entry_name $value + } + } + } + .add.frm_btn.btn_ok configure -command { + RunCommand "" "rule update \ + --cluster=$active_cluster \ + --server=$server \ + --rule=$rule \ + --position=0 \ + --object-type=$object_type \ + --infobase-name=$infobase_name \ + --rule-type=$rule_type \ + --application-ext=[.add.frm.ent_application_ext get] \ + --priority=[.add.frm.ent_priority get] $host" + Run::rule $tree $host $server + destroy .add + } +} + diff --git a/rac_gui.cfg b/rac_gui.cfg index 7ff275e..c6742f6 100644 --- a/rac_gui.cfg +++ b/rac_gui.cfg @@ -16,15 +16,15 @@ set default(locale) "ru" # Порт RAS set default(port) 1540 # Диапазон портов -set default(ports_range) 1560:1591 +set default(port_range) 1560:1591 # Количество инф. баз на процесс -set default(base_on_process) 8 +set default(infobases_limit) 8 # Количество соединений на процесс -set default(connection_on_process) 128 +set default(connections_limit) 128 # Максимальный объём памяти раб. процессов -set default(ram_max) 0 +set default(safe_working_processes_memory_limit) 0 # Безопасный расход памяти за вызов -set default(ram_sec) 0 +set default(safe_call_memory_limit) 0 # Объём памяти рабочих процессов, до которого сервер считается производительным set default(ram_work) 0 set default(dbms) { @@ -40,7 +40,7 @@ set default(dbms) { set default(secure_level) [list 0 1 2] set default(date_offset) [list 0 2000] # Объект требования -set default(object) { +set default(object_type) { LicenseService EventLogService OpenID2ProviderContextService @@ -69,7 +69,7 @@ set default(object) { # auto - отсутствие правила (по-умолчанию) # always - распределять только на данный сервер # never - не распределять на данный сервер -set default(type) { +set default(rule_type) { auto always never @@ -107,6 +107,3 @@ set default(load_balancing_mode) { # цвета строк в таблице set color(dark_table_bg) "#e2e2e2" set color(light_table_bg) "#ffffff" - - - diff --git a/rac_gui.tcl b/rac_gui.tcl index 77107a6..daafe33 100755 --- a/rac_gui.tcl +++ b/rac_gui.tcl @@ -9,14 +9,14 @@ exec wish "$0" -- "$@" # Home page: https://bitbucket.org/svk28/rac-gui ###################################################### -#source [file join [pwd] 1c_srv.cfg] - set dir(root) [pwd] set dir(work) [file join $env(HOME) .rac_gui] if {[file exists $dir(work)] == 0 } { file mkdir $dir(work) } +set dir(msg) "[file join $dir(root) msgs]" +set dir(lib) "[file join $dir(root) lib]" if {[file exists [file join $dir(work) rac_gui.cfg]] ==0} { file copy [file join [pwd] rac_gui.cfg] [file join $dir(work) rac_gui.cfg] @@ -24,6 +24,27 @@ if {[file exists [file join $dir(work) rac_gui.cfg]] ==0} { source [file join $dir(work) rac_gui.cfg] +if {[file exists $rac_cmd] == 0} { + set rac_cmd [tk_getOpenFile -initialdir $env(HOME) -parent . -title "Укажите путь до rac" -initialfile rac] + file copy [file join $dir(work) rac_gui.cfg] [file join $dir(work) rac_gui.cfg.bak] + set orig_file [open [file join $dir(work) rac_gui.cfg.bak] "r"] + set file [open [file join $dir(work) rac_gui.cfg] "w"] + while {[gets $orig_file line] >=0 } { + if {[string match "set rac_cmd*" $line]} { + puts $file "set rac_cmd $rac_cmd" + } else { + puts $file $line + } + } + close $file + close $orig_file + #return "$host:$port" + file delete [file join $dir(work) 1c_srv.cfg.bak] + +} else { + puts "Found $rac_cmd" +} + set dir(msg) "[file join $dir(root) msgs]" set dir(lib) "[file join $dir(root) lib]" @@ -46,8 +67,6 @@ foreach modFile [lsort [glob -nocomplain [file join $dir(lib) *.tcl]]] { } } source [file join $dir(lib) gui.tcl] - -puts "$rac_cmd $dir(lib)" source [file join $dir(work) rac_gui.cfg] if [file exists [file join $dir(work) 1c_srv.cfg]] { @@ -75,5 +94,3 @@ if [file exists [file join $dir(work) 1c_srv.cfg]] { # #option add *Frame.Background $editor(bg) interactive # option add *ScrollableFrame.Background $editor(bg) interactive # option add *ScrolledWindow.Background $editor(bg) interactive - -