mirror of
https://bitbucket.org/svk28/rac-gui
synced 2024-12-04 18:46:52 +00:00
Слияние веток
This commit is contained in:
parent
7426f036fb
commit
7929538f8d
40
1c_srv_new.cfg
Normal file
40
1c_srv_new.cfg
Normal file
@ -0,0 +1,40 @@
|
||||
localhost:1545 {
|
||||
name "Локальный сервер"
|
||||
rac_cmd "/opt/1C/v8.3/x86_64/rac"
|
||||
agent_user ""
|
||||
agent_pwd ""
|
||||
clusters {
|
||||
3ed9081a-c5b0-11e9-cf8a-1c1b0d94027e {
|
||||
cluster_name "eeee"
|
||||
cluster_user ""
|
||||
cluster_pwd ""
|
||||
}
|
||||
4581a966-a6bf-11e9-3c95-1c1b0d94027e {
|
||||
cluster_name "Локальный кластер"
|
||||
cluster_user ""
|
||||
cluster_pwd ""
|
||||
infobases {
|
||||
1e1d1cea-b856-11e9-748a-1c1b0d94027e {
|
||||
infobase_name "wewe"
|
||||
infobase_user "ibuser"
|
||||
infobase_pwd "ibpwd"
|
||||
}
|
||||
0129b2b2-b8d6-11e9-748a-1c1b0d94027e {
|
||||
infobase_name "testdb"
|
||||
infobase_user "testdb2-user"
|
||||
infobase_pwd "testdb2-pwd"
|
||||
}
|
||||
cac80302-b855-11e9-748a-1c1b0d94027e {
|
||||
infobase_name "testdb"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
192.168.5.145:1545 {
|
||||
name "1C test"
|
||||
rac_cmd "/opt/1C/v8.3/x86_64/rac"
|
||||
clusters {
|
||||
|
||||
}
|
||||
}
|
@ -13,3 +13,6 @@
|
||||
http://nuk-svk.ru/soft/rac-gui/
|
||||
|
||||
Иконки взяты с сайта https://www.iconsdb.com/royal-blue-icons/
|
||||
|
||||
|
||||
|
||||
|
12
debian/changelog
vendored
12
debian/changelog
vendored
@ -1,3 +1,14 @@
|
||||
rac-gui (1.1.0-1) stable; urgency=medium
|
||||
|
||||
* Added new rac command options
|
||||
* Added HELP dialog
|
||||
* Moved configuration files according to XDG standard
|
||||
* Change 1c-srv.cfg format
|
||||
* Fixed some errors
|
||||
* Added translated method for table headers
|
||||
|
||||
-- Sergey Kalinin <svk@nuk-svk.ru> Wed, 25 Sep 2019 09:00:31 +0300
|
||||
|
||||
rac-gui (1.0.3-1) stable; urgency=medium
|
||||
|
||||
* CI/CD integration
|
||||
@ -17,3 +28,4 @@ rac-gui (1.0.1-1) stable; urgency=medium
|
||||
|
||||
-- Sergey Kalinin <svk@nuk-svk.ru> Mon, 22 Jul 2019 14:56:31 +0300
|
||||
|
||||
|
||||
|
2
debian/control
vendored
2
debian/control
vendored
@ -9,7 +9,7 @@ Vcs-Git: https://bitbucket.org/svk28/rac-gui.git
|
||||
|
||||
Package: rac-gui
|
||||
Architecture: any
|
||||
Depends: tcl(>=8.6), tk(>=8.6), ${misc:Depends}
|
||||
Depends: tcl(>=8.6), tk(>=8.6), tcllib, ${misc:Depends}
|
||||
Description: This program is a GUI for 1C RAC util.
|
||||
Rac-GUI is a graphical user interface for 1C rac (remote access controll) programm.
|
||||
1C RAC is a software for 1C-servers cluster management.
|
||||
|
1
debian/docs
vendored
1
debian/docs
vendored
@ -2,3 +2,4 @@ README.md
|
||||
doc/CHANGELOG
|
||||
doc/TODO
|
||||
doc/rac-manual.txt
|
||||
doc/racgui_manual.txt
|
@ -1435,3 +1435,4 @@ rac rule [command] [options] [arguments]
|
||||
|
||||
|
||||
|
||||
|
||||
|
91
doc/racgui_manual.txt
Normal file
91
doc/racgui_manual.txt
Normal file
@ -0,0 +1,91 @@
|
||||
#######################################################
|
||||
# RAC GUI
|
||||
# Distributed under GNU Public License
|
||||
# Author: Sergey Kalinin svk@nuk-svk.ru
|
||||
# Copyright (c) "SVK", 2019, http://nuk-svk.ru
|
||||
######################################################
|
||||
|
||||
Программа Rac-GUI представляет собой мультиплатформенный графический интерфейс к консольной утилите 1С rac.
|
||||
Основной интерфейс программы состоит из:
|
||||
1. Панели инструментов
|
||||
2. Дерева для отображения структуры
|
||||
3. Табличного поля
|
||||
|
||||
Для добавления, редактирования, удаления сущностей (сервера, информационные базы, сеансы) предназначены соответствующие кнопки, расположенные в панели инструментов слева. Кнопки контекстно-зависимые, т.е. в зависимости от того какой раздел активен для работы (сервер, информационные базы, кластер, сеансы и так далее), функции кнопок меняются.
|
||||
|
||||
После первого запуска программы следует добавить основной сервер кластера 1С (где запущен ras). Для этого надо нажать кнопку "+" в панели инструментов, или сочетание клавиш Control-Insert. И в открывшейся форме заполнить соответствующие поля. Так как каждый сервер управления и клиент могут работать только на одинаковой платформе 1С, то в RAC-GUI для каждого сервера указывается команда (файл rac) для соответствующей платформы.
|
||||
|
||||
= "Горячие" клавиши =
|
||||
|
||||
Insert - добавление нового
|
||||
Delete - удаление текущего раздела (сущности)
|
||||
Control-Enter - редактирование текущего раздела (сущности)
|
||||
Control-Q - выход из программы
|
||||
F1 - вызов дилога помощи
|
||||
|
||||
= Формат файла конфигурации =
|
||||
Формат файла настроект серверов похож на JSON, но представляет собой несколько TCL-словарей вложенных друг в друга.
|
||||
Обязательными значениями являются адрес хоста, номер порта и путь к RAC. Остальные настройки опциональны.
|
||||
Опции сервера:
|
||||
name - наименование сервера
|
||||
rac_cmd - полный путь к утилите rac
|
||||
agent_user - имя администратора агента кластера
|
||||
agent_pwd - пароль администратора агента кластера
|
||||
|
||||
Опции кластера:
|
||||
cluster_name - наименование кластера
|
||||
cluster_user - имя администратора кластера
|
||||
cluster_pwd - пароль администратора кластера
|
||||
|
||||
Опции инф. базы:
|
||||
infobase_name - наименование ИБ
|
||||
infobase_user - имя пользователя ИБ
|
||||
infobase_pwd - пароль пользователя ИБ
|
||||
|
||||
Адреса хостов, номера портов, идентификаторы кластеров и ИБ должны соответствовать реальным.
|
||||
|
||||
Пример настроек:
|
||||
|
||||
localhost:1545 {
|
||||
name "Локальный сервер"
|
||||
rac_cmd "/opt/1C/v8.3/x86_64/rac"
|
||||
agent_user ""
|
||||
agent_pwd ""
|
||||
clusters {
|
||||
3ed9081a-c5b0-11e9-cf8a-1c1b0d94027e {
|
||||
cluster_name "eeee"
|
||||
}
|
||||
4581a966-a6bf-11e9-3c95-1c1b0d94027e {
|
||||
cluster_name "Локальный кластер"
|
||||
cluster_user ""
|
||||
cluster_pwd ""
|
||||
infobases {
|
||||
1e1d1cea-b856-11e9-748a-1c1b0d94027e {
|
||||
infobase_name "wewe"
|
||||
infobase_user "ibuser"
|
||||
infobase_pwd "ibpwd"
|
||||
}
|
||||
0129b2b2-b8d6-11e9-748a-1c1b0d94027e {
|
||||
infobase_name "testdb"
|
||||
infobase_user "testdb2-user"
|
||||
infobase_pwd "testdb2-pwd"
|
||||
}
|
||||
cac80302-b855-11e9-748a-1c1b0d94027e {
|
||||
infobase_name "testdb"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
192.168.125.145:1545 {
|
||||
name "Test"
|
||||
rac_cmd /opt/1C/v8.3/x86_64/rac"
|
||||
clusters {
|
||||
}
|
||||
}
|
||||
1c-srv:1545 {
|
||||
name "Cервер для бухгалтерии"
|
||||
rac_cmd "/opt/1C/v8.3.13_1644/x86_64/rac"
|
||||
clusters {
|
||||
}
|
||||
}
|
214
lib/config.tcl
Normal file
214
lib/config.tcl
Normal file
@ -0,0 +1,214 @@
|
||||
#############################################
|
||||
# Rac GUI
|
||||
# Distributed under GNU Public License
|
||||
# Author: Sergey Kalinin svk@nuk-svk.ru
|
||||
# Copyright (c) "http://nuk-svk.ru", 2018
|
||||
# https://bitbucket.org/svk28/rac-gui
|
||||
#############################################
|
||||
# Config file and dictionary working functions
|
||||
# global dict - $servers_list
|
||||
##############################################
|
||||
|
||||
# Получаем юзера и пароль из конфига
|
||||
proc GetInfobaseUser {host cluster infobase} {
|
||||
global servers_list
|
||||
if [dict exists $servers_list servers $host clusters $cluster infobases $infobase infobase_user] {
|
||||
return [dict get $servers_list servers $host clusters $cluster infobases $infobase infobase_user]
|
||||
}
|
||||
}
|
||||
proc GetInfobasePassword {host cluster infobase} {
|
||||
global servers_list
|
||||
if [dict exists $servers_list servers $host clusters $cluster infobases $infobase infobase_pwd] {
|
||||
return [dict get $servers_list servers $host clusters $cluster infobases $infobase infobase_pwd]
|
||||
}
|
||||
}
|
||||
proc GetClusterAdmin {host cluster} {
|
||||
global servers_list
|
||||
if [dict exists $servers_list servers $host clusters $cluster cluster_user] {
|
||||
return [dict get $servers_list servers $host clusters $cluster cluster_user]
|
||||
}
|
||||
}
|
||||
proc GetClusterPassword {host cluster} {
|
||||
global servers_list
|
||||
if [dict exists $servers_list servers $host clusters $cluster cluster_pwd] {
|
||||
return [dict get $servers_list servers $host clusters $cluster cluster_pwd]
|
||||
}
|
||||
}
|
||||
|
||||
proc GetAgentAdmin {host} {
|
||||
global servers_list
|
||||
if [dict exists $servers_list servers $host agent_user] {
|
||||
return [dict get $servers_list servers $host agent_user]
|
||||
}
|
||||
}
|
||||
proc GetAgentPassword {host} {
|
||||
global servers_list
|
||||
if [dict exists $servers_list servers $host agent_pwd] {
|
||||
return [dict get $servers_list servers $host agent_pwd]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
# Конвертация словаря в удобочитаемый формат
|
||||
|
||||
proc DictFormatter {dict {indent}} {
|
||||
set str ""
|
||||
set i 0
|
||||
foreach {k v} $dict {
|
||||
#if {$v eq ""} {set v "NULL"}
|
||||
#puts "\nkey - $k value - [string trim $v]"
|
||||
|
||||
if [regexp {\{} $v] {
|
||||
append indent "-"
|
||||
DictFormatter $v $indent
|
||||
} elseif [regexp {\}} $v] {
|
||||
set indent [string trimright $indent "-"]
|
||||
DictFormatter $v $indent
|
||||
} else {
|
||||
set str "$k $v"
|
||||
}
|
||||
}
|
||||
puts "$indent$str"
|
||||
}
|
||||
proc dict2json {dictionary} {
|
||||
dict for {key value} $dictionary {
|
||||
puts "$key $value"
|
||||
if {[string match {\{*\}} $value]} {
|
||||
lappend Result "\"$key\":$value"
|
||||
} elseif {![catch {dict size $value}]} {
|
||||
lappend Result "\"$key\":\"[dict2json $value]\""
|
||||
} else {
|
||||
lappend Result "\"$key\":\"$value\""
|
||||
}
|
||||
puts $Result
|
||||
}
|
||||
return "\{[join $Result ",\n"]\}"
|
||||
}
|
||||
|
||||
|
||||
proc SetServersConfigDict {} {
|
||||
global servers_list
|
||||
|
||||
}
|
||||
|
||||
# Сохраянем конфиг
|
||||
proc SaveConfig {} {
|
||||
global dir servers_list
|
||||
#puts ">>>>>>>>>>> $servers_list <<<<<<<<<<<<"
|
||||
set file [open [file join $dir(work) 1c_srv_new.cfg] "w"]
|
||||
set f [open [file join $dir(work) 1c_srv_new_.cfg] "w"]
|
||||
if {![dict exists $servers_list servers]} {
|
||||
return
|
||||
}
|
||||
set dict [dict get $servers_list servers]
|
||||
set dict [string map {"\{" "\{\n" "\}" "\n\}"} $dict]
|
||||
regsub -- {(\})} $dict "\}\n" dict
|
||||
puts $file $dict
|
||||
close $file
|
||||
set file [open [file join $dir(work) 1c_srv_new.cfg] "r"]
|
||||
|
||||
set str ""
|
||||
seek $file 0
|
||||
set close_brace 0
|
||||
set open_brace 0
|
||||
set indent ""
|
||||
while {[gets $file line] >=0} {
|
||||
if [regexp -- {\{} $line] {
|
||||
if {$open_brace == 0} {
|
||||
append indent ""
|
||||
} else {
|
||||
append indent " "
|
||||
}
|
||||
incr open_brace
|
||||
}
|
||||
if [regexp -- {\}} $line] {
|
||||
#incr open_brace -1
|
||||
set indent [string range $indent 0 end-4]
|
||||
incr close_brace
|
||||
}
|
||||
if [regexp -nocase -all -- {(\})(.+?\{)} $line match brace phrase] {
|
||||
set line "$brace\n$indent$phrase"
|
||||
}
|
||||
if {$open_brace > $close_brace} {
|
||||
#set line "$indent$line"
|
||||
}
|
||||
if [regexp -nocase -indices -all -- {((.*?)\s(".*?"))} $line match v1 v2 v3] {
|
||||
set index [lindex [split $v3 " "] 1]
|
||||
#puts $index
|
||||
set last_pair [string trim [string range $line $index+1 end]]
|
||||
set line [GetDictFromString $line $indent]
|
||||
if {$last_pair ne ""} {
|
||||
append line "$indent[string trim $last_pair]"
|
||||
}
|
||||
}
|
||||
append str $indent [string trim $line] "\n"
|
||||
}
|
||||
puts $f $str
|
||||
close $f
|
||||
set file [open [file join $dir(work) 1c_srv_new.cfg] "w"]
|
||||
set f [open [file join $dir(work) 1c_srv_new_.cfg] "r"]
|
||||
while {[gets $f line] >=0} {
|
||||
if {$line ne ""} {
|
||||
puts $file $line
|
||||
}
|
||||
}
|
||||
#puts $file $servers_list
|
||||
#file delete -force [file join $dir(work) 1c_srv_new_.cfg]
|
||||
#file copy -force [file join $dir(work) 1c_srv_new_.cfg] [file join $dir(work) 1c_srv_new.cfg]
|
||||
}
|
||||
|
||||
proc GetDictFromString {str indent} {
|
||||
puts $str
|
||||
if [regexp -nocase -indices -- {((.*?)\s(".*?"))} $str match v1 v2 v3] {
|
||||
set index [lindex [split $v3 " "] 1]
|
||||
set first_pair [string range $str 0 $index]
|
||||
append res $indent $first_pair "\n"
|
||||
append res [GetDictFromString [string range $str $index+1 end] $indent] "\n"
|
||||
#append res [string range $str $index+1 end] "\n"
|
||||
return $res
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Проверка установки переменных в конфиге
|
||||
proc CheckVariablesSet {} {
|
||||
global default dir
|
||||
set lst_vars {
|
||||
rac_dir
|
||||
critical_total_memory
|
||||
temporary_allowed_total_memory
|
||||
temporary_allowed_total_memory_time_limit
|
||||
}
|
||||
set result [::msgcat::mc "The default variables is undefinied:"]
|
||||
set var ""
|
||||
foreach item $lst_vars {
|
||||
if {![info exists default($item)]} {
|
||||
append var "\ndefault($item)"
|
||||
}
|
||||
}
|
||||
puts $var
|
||||
append result $var "\n" [::msgcat::mc "New config file will be copying from RAC GUI distributive."]
|
||||
if {$var ne ""} {
|
||||
set answer [tk_messageBox -message $result \
|
||||
-icon warning -type yesno ]
|
||||
switch -- $answer {
|
||||
no return
|
||||
yes {
|
||||
CopyNewConfig
|
||||
source [file join $dir(work) rac_gui.cfg]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
proc CopyNewConfig {} {
|
||||
global dir
|
||||
if {[file exists [file join $dir(work) rac_gui.cfg]] ==1} {
|
||||
file rename -force [file join $dir(work) rac_gui.cfg] [file join $dir(work) rac_gui.cfg.old]
|
||||
file copy [file join $dir(root) rac_gui.cfg] [file join $dir(work) rac_gui.cfg]
|
||||
}
|
||||
|
||||
}
|
||||
|
408
lib/function.tcl
408
lib/function.tcl
@ -7,6 +7,8 @@
|
||||
###########################################
|
||||
|
||||
proc Quit {} {
|
||||
# Сохраняем конфиг
|
||||
SaveConfig
|
||||
exit
|
||||
}
|
||||
|
||||
@ -30,37 +32,45 @@ proc TreePress {tree} {
|
||||
}
|
||||
|
||||
proc SetGlobalVarFromTreeItems {tree id} {
|
||||
global host server active_cluster infobase profile_name dir rac_cmd_for_host rac_cmd
|
||||
global host server active_cluster infobase profile_name dir rac_cmd_for_host rac_cmd servers_list \
|
||||
cluster_user cluster_pwd agent_user agent_pwd
|
||||
set parent [$tree parent $id]
|
||||
set values [$tree item $id -values]
|
||||
set key [lindex [split $id "::"] 0]
|
||||
puts "$parent $values $key"
|
||||
switch -- $key {
|
||||
server {
|
||||
set host $values
|
||||
set orig_file [open [file join $dir(work) 1c_srv.cfg] "r"]
|
||||
while {[gets $orig_file line] >=0 } {
|
||||
if [string match "$host*" $line] {
|
||||
set path_to_rac [string trim [lindex [split $line ","] 1]]
|
||||
if {$path_to_rac eq ""} {
|
||||
set rac_cmd_for_host($host) "$rac_cmd"
|
||||
} else {
|
||||
set rac_cmd_for_host($host) $path_to_rac
|
||||
set rac_cmd $path_to_rac
|
||||
set rac_cmd_for_host($host) [dict get $servers_list servers $host rac_cmd]
|
||||
}
|
||||
work_server {
|
||||
set server $values
|
||||
}
|
||||
cluster {
|
||||
set active_cluster $values
|
||||
#dict set servers_list servers $host clusters "$values {}"
|
||||
set cluster_user [GetClusterAdmin $host $active_cluster]
|
||||
set cluster_pwd [GetClusterPassword $host $active_cluster]
|
||||
}
|
||||
infobase {
|
||||
set infobase $values
|
||||
#puts [dict set servers_list servers $host clusters $active_cluster infobases $values]
|
||||
}
|
||||
profile {
|
||||
set profile_name $values
|
||||
}
|
||||
agent_admins {
|
||||
set agent_user [GetAgentAdmin $host]
|
||||
set agent_pwd [GetAgentPassword $host]
|
||||
}
|
||||
}
|
||||
}
|
||||
close $orig_file
|
||||
}
|
||||
work_server {set server $values}
|
||||
cluster {set active_cluster $values}
|
||||
infobase {set infobase $values}
|
||||
profile {set profile_name $values}
|
||||
}
|
||||
|
||||
if {$parent eq ""} {
|
||||
return
|
||||
} else {
|
||||
SetGlobalVarFromTreeItems $tree $parent
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
proc InsertItemsWorkList {lst} {
|
||||
@ -80,11 +90,29 @@ proc InsertItemsWorkList {lst} {
|
||||
.frm_work.tree_work insert {} end -values $value_list -tags $tag
|
||||
.frm_work.tree_work column #0 -stretch
|
||||
foreach j $column_list {
|
||||
.frm_work.tree_work heading $j -text $j
|
||||
.frm_work.tree_work heading $j -text [::msgcat::mc [HumanReadableTextConvert $j]]
|
||||
}
|
||||
incr work_list_row_count
|
||||
}
|
||||
|
||||
|
||||
# Преобразование выражений (названий параметров) полученных из консоли
|
||||
# для отображания в графических элементах.
|
||||
# Т.е. выражение "session-fault-tolerance-level"
|
||||
# будет преобразовано в "Session fault tolerance level"
|
||||
proc HumanReadableTextConvert {txt} {
|
||||
set lst [split $txt "-"]
|
||||
if {[llength $lst] >0} {
|
||||
foreach item $lst {
|
||||
append str " " $item
|
||||
}
|
||||
}
|
||||
set str [string trim $str]
|
||||
set first_letter [string range $str 0 0]
|
||||
set str "[string toupper $first_letter][string range $str 1 end]"
|
||||
return $str
|
||||
}
|
||||
|
||||
proc RunCommand {par} {
|
||||
global dir rac_cmd cluster work_list_row_count \
|
||||
agent_user agent_pwd cluster_user cluster_pwd server_platform
|
||||
@ -118,7 +146,7 @@ proc RunCommand {par} {
|
||||
}
|
||||
|
||||
proc ErrorParcing {err opt} {
|
||||
global cluster_user cluster_pwd agent_user agent_pwd
|
||||
global cluster_user cluster_pwd agent_user agent_pwd servers_list
|
||||
|
||||
switch -regexp -- $err {
|
||||
"Cluster administrator is not authenticated" {
|
||||
@ -161,7 +189,7 @@ proc ErrorParcing {err opt} {
|
||||
}
|
||||
}
|
||||
proc AuthorisationDialog {txt} {
|
||||
global active_cluster agent_user agent_pwd cluster_user cluster_pwd
|
||||
global active_cluster agent_user agent_pwd cluster_user cluster_pwd servers_list
|
||||
.frm_work.tree_work delete [ .frm_work.tree_work children {}]
|
||||
|
||||
set frm [AddToplevel "$txt" administrator_grey_64 .auth_win]
|
||||
@ -340,11 +368,77 @@ proc GetWorkTreeRow {} {
|
||||
return $lst
|
||||
}
|
||||
|
||||
# Диалог указания пути до RAC
|
||||
proc SetRacCommand {} {
|
||||
global env tcl_platform default
|
||||
|
||||
if {$tcl_platform(os) eq "Windows NT"} {
|
||||
set init_dir $env(COMMONPROGRAMFILES)
|
||||
} elseif {$tcl_platform(os) eq "Linux"} {
|
||||
set init_dir $default(rac_dir)
|
||||
} else {
|
||||
set init_dir $env(HOME)
|
||||
}
|
||||
set rac_cmd "[tk_getOpenFile -initialdir $init_dir -parent .add \
|
||||
-title [::msgcat::mc "Show where is a RAC command"] -initialfile rac]"
|
||||
if {$rac_cmd eq ""} {
|
||||
return
|
||||
} else {
|
||||
#puts $rac_cmd
|
||||
if {[file tail $rac_cmd] ne "rac" && [file tail $rac_cmd] ne "rac.exe"} {
|
||||
set rac [file tail $rac_cmd]
|
||||
set path_to_rac [file rootname $rac_cmd]
|
||||
append msg [::msgcat::mc "Command must be"] " 'rac' " \
|
||||
[::msgcat::mc "or"] " 'rac.exe'\n" \
|
||||
[::msgcat::mc "You entered"] " '$rac' - " \
|
||||
[::msgcat::mc "it's correct?"]
|
||||
set answer [tk_messageBox -message [::msgcat::mc $msg] -icon question -type yesno]
|
||||
switch -- $answer {
|
||||
yes {
|
||||
return $rac_cmd
|
||||
}
|
||||
no SetRacCommand
|
||||
}
|
||||
} else {
|
||||
return $rac_cmd
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
proc ShowHelpDialog {} {
|
||||
global default dir racgui_version racgui_release
|
||||
set frm [AddToplevel [::msgcat::mc "About"] help_grey_64]
|
||||
wm title .add [::msgcat::mc "About"]
|
||||
ttk::label $frm.lbl_version -text "[::msgcat::mc "Version"]: $racgui_version"
|
||||
ttk::label $frm.lbl_release -text "[::msgcat::mc "Release"]: $racgui_release"
|
||||
|
||||
text $frm.txt -wrap word
|
||||
ttk::scrollbar $frm.hsb -orient horizontal -command [list $frm.t xview]
|
||||
ttk::scrollbar $frm.vsb -orient vertical -command [list $frm.t yview]
|
||||
text $frm.t -xscrollcommand [list $frm.hsb set] -yscrollcommand [list $frm.vsb set]
|
||||
grid $frm.lbl_version -row 0 -column 0 -sticky nsew -padx 5 -pady 2
|
||||
grid $frm.lbl_release -row 1 -column 0 -sticky nsew -padx 5 -pady 2
|
||||
grid $frm.t -row 2 -column 0 -sticky nsew
|
||||
grid $frm.vsb -row 2 -column 1 -sticky nsew
|
||||
grid $frm.hsb -row 3 -column 0 -sticky nsew
|
||||
grid columnconfigure $frm 0 -weight 1
|
||||
grid rowconfigure $frm 0 -weight 1
|
||||
|
||||
set file_help [open [file join $dir(doc) racgui_manual.txt] "RDONLY"]
|
||||
while {[gets $file_help line] >=0} {
|
||||
$frm.t insert end "$line\n"
|
||||
}
|
||||
close $file_help
|
||||
destroy .add.frm_btn.btn_ok
|
||||
return $frm
|
||||
}
|
||||
|
||||
namespace eval Run {} {}
|
||||
# Получение данных по кластерам
|
||||
|
||||
proc Run::server {tree host values} {
|
||||
global rac_cmd_for_host rac_cmd
|
||||
global rac_cmd_for_host rac_cmd servers_list
|
||||
if {[info exists rac_cmd_for_host($host)] == 1 && $rac_cmd_for_host($host) ne "" } {
|
||||
set rac_cmd $rac_cmd_for_host($host)
|
||||
}
|
||||
@ -369,10 +463,15 @@ proc Run::server {tree host values} {
|
||||
}
|
||||
foreach x [array names cluster] {
|
||||
set id [lindex $cluster($x) 0]
|
||||
set cluster_name [lindex $cluster($x) 1]
|
||||
if { [$tree exists "cluster::$id"] == 0 } {
|
||||
$tree insert "server::$host" end -id "cluster::$id" -text "[lindex $cluster($x) 1]" -values "$id"
|
||||
$tree insert "server::$host" end -id "cluster::$id" -text "$cluster_name" -values "$id"
|
||||
InsertClusterItems $tree $id
|
||||
}
|
||||
#dict replace servers_list [dict get servers_list servers $host clusters]
|
||||
#dict set servers_list servers $host clusters $id name $cluster_name
|
||||
#puts $cluster_name
|
||||
#puts $servers_list
|
||||
}
|
||||
if { [$tree exists "agent_admins::$id"] == 0 } {
|
||||
$tree insert "server::$host" end -id "agent_admins::$id" -text [::msgcat::mc "Administrators"] -values "$id"
|
||||
@ -396,7 +495,7 @@ proc Run::services {tree host values} {
|
||||
}
|
||||
|
||||
proc Run::infobases {tree host values} {
|
||||
global active_cluster cluster_user cluster_pwd
|
||||
global active_cluster cluster_user cluster_pwd servers_list
|
||||
.frm_work.tree_work delete [ .frm_work.tree_work children {}]
|
||||
if {$cluster_user ne "" && $cluster_pwd ne ""} {
|
||||
set auth "--cluster-user=$cluster_user --cluster-pwd=$cluster_pwd"
|
||||
@ -423,21 +522,31 @@ proc Run::infobases {tree host values} {
|
||||
set id [lindex $base($x) 0]
|
||||
if { [$tree exists "infobase::$id"] == 0 } {
|
||||
$tree insert "infobases::$values" end -id "infobase::$id" -text "[lindex $base($x) 1]" -values "$id"
|
||||
if {![dict exists $servers_list servers $host clusters $active_cluster infobases $id]} {
|
||||
dict set servers_list servers $host clusters $active_cluster \
|
||||
infobases $id "name \"[lindex $base($x) 1]\""
|
||||
}
|
||||
}
|
||||
InsertBaseItems $tree $id
|
||||
}
|
||||
#dict update dictionaryVariable key varName ?key varName ...? body
|
||||
|
||||
}
|
||||
|
||||
proc Run::infobase {tree host values} {
|
||||
global active_cluster cluster_user cluster_pwd default
|
||||
global active_cluster cluster_user cluster_pwd default servers_list
|
||||
|
||||
if {$cluster_user ne "" && $cluster_pwd ne ""} {
|
||||
set auth "--cluster-user=$cluster_user --cluster-pwd=$cluster_pwd"
|
||||
} else {
|
||||
set auth ""
|
||||
}
|
||||
#### Временный костыль ####
|
||||
if {[info exists default(infobase_user)] == 1 && [info exists default(infobase_pwd)] == 1} {
|
||||
set ib_auth "--infobase-user=$default(infobase_user) --infobase-pwd=$default(infobase_pwd)"
|
||||
#### Проверяем наличие юзера и пароля в конфиге и если есть то используем ####
|
||||
set infobase_user [GetInfobaseUser $host $active_cluster $values]
|
||||
set infobase_pwd [GetInfobasePassword $host $active_cluster $values]
|
||||
|
||||
if {$infobase_user ne "" && $infobase_pwd ne ""} {
|
||||
set ib_auth "--infobase-user=$infobase_user --infobase-pwd=$infobase_pwd"
|
||||
} else {
|
||||
set ib_auth ""
|
||||
}
|
||||
@ -457,7 +566,6 @@ proc Run::List:Base {tree host values par} {
|
||||
} else {
|
||||
set auth ""
|
||||
}
|
||||
|
||||
.frm_work.tree_work delete [ .frm_work.tree_work children {}]
|
||||
set lst [RunCommand "$par list --cluster=$active_cluster $auth --infobase=$values $host"]
|
||||
|
||||
@ -803,7 +911,7 @@ proc AddToplevel {lbl img {win_name .add}} {
|
||||
grid $frm_btn -row 1 -column 1 -sticky sew -padx 0 -pady 0
|
||||
pack $frm_btn.btn_cancel $frm_btn.btn_ok -side right -padx 5 -pady 5
|
||||
#pack $frm_btn.btn_ok -side right -padx 2
|
||||
|
||||
bind .add <Escape> $cmd
|
||||
return $frm
|
||||
}
|
||||
|
||||
@ -887,36 +995,63 @@ proc Add::admin {tree host value} {
|
||||
}
|
||||
|
||||
proc Add::server {} {
|
||||
global default rac_cmd_for_host
|
||||
global default rac_cmd_for_host servers_list
|
||||
set frm [AddToplevel [::msgcat::mc "Main server"] server_grey_64]
|
||||
|
||||
ttk::label $frm.lbl_server_name -text [::msgcat::mc "Name"]
|
||||
ttk::entry $frm.ent_server_name
|
||||
ttk::label $frm.lbl_host -text [::msgcat::mc "Address"]
|
||||
ttk::entry $frm.ent_host
|
||||
ttk::label $frm.lbl_port -text [::msgcat::mc "Port"]
|
||||
ttk::entry $frm.ent_port
|
||||
ttk::label $frm.lbl_path_to_rac -text [::msgcat::mc "Path to RAC"]
|
||||
ttk::entry $frm.ent_path_to_rac
|
||||
ttk::button $frm.btn_path_to_rac -text "..." -width 3
|
||||
$frm.ent_port insert end $default(port)
|
||||
grid $frm.lbl_host -row 0 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.ent_host -row 0 -column 1 -sticky new -padx 5 -pady 5
|
||||
grid $frm.lbl_port -row 1 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.ent_port -row 1 -column 1 -sticky new -padx 5 -pady 5
|
||||
grid $frm.lbl_path_to_rac -row 2 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.ent_path_to_rac -row 2 -column 1 -sticky new -padx 5 -pady 5
|
||||
grid $frm.lbl_server_name -row 0 -column 0 -sticky nsw -padx 5 -pady 5
|
||||
grid $frm.ent_server_name -row 0 -column 1 -columnspan 2 -sticky nsew -padx 5 -pady 5
|
||||
grid $frm.lbl_host -row 1 -column 0 -sticky nsw -padx 5 -pady 5
|
||||
grid $frm.ent_host -row 1 -column 1 -columnspan 2 -sticky nsew -padx 5 -pady 5
|
||||
grid $frm.lbl_port -row 2 -column 0 -sticky nsw -padx 5 -pady 5
|
||||
grid $frm.ent_port -row 2 -column 1 -columnspan 2 -sticky nesw -padx 5 -pady 5
|
||||
grid $frm.lbl_path_to_rac -row 3 -column 0 -sticky nsw -padx 5 -pady 5
|
||||
grid $frm.ent_path_to_rac -row 3 -column 1 -sticky nsew -padx 5 -pady 5
|
||||
grid $frm.btn_path_to_rac -row 3 -column 2 -sticky new -padx 5 -pady 5
|
||||
grid columnconfigure $frm 0 -weight 1
|
||||
grid rowconfigure $frm 0 -weight 1
|
||||
#set frm_btn [frame .add.frm_btn -border 0]
|
||||
|
||||
$frm.btn_path_to_rac configure -command {
|
||||
.add.frm.ent_path_to_rac delete 0 end
|
||||
.add.frm.ent_path_to_rac insert end [SetRacCommand]
|
||||
}
|
||||
|
||||
.add.frm_btn.btn_ok configure -command {
|
||||
set host [SaveMainServer [.add.frm.ent_host get] [.add.frm.ent_port get] [.add.frm.ent_path_to_rac get]]
|
||||
set rac_cmd_for_host($host) [.add.frm.ent_path_to_rac get]
|
||||
.frm_tree.tree insert {} end -id "server::$host" -text "$host" -values "$host"
|
||||
set msg ""
|
||||
set server_name "[.add.frm.ent_server_name get]"
|
||||
set host "[.add.frm.ent_host get]:[.add.frm.ent_port get]"
|
||||
set rac_cmd_for_host($host) "[.add.frm.ent_path_to_rac get]"
|
||||
if {$rac_cmd_for_host($host) eq ""} {
|
||||
append msg [::msgcat::mc "Command must be"] " 'rac' " \
|
||||
[::msgcat::mc "or"] " 'rac.exe'\n"
|
||||
tk_messageBox -message [::msgcat::mc $msg] -icon question -type ok
|
||||
return
|
||||
}
|
||||
dict set servers_list servers $host "name \"$server_name\" rac_cmd \"$rac_cmd_for_host($host)\" clusters {}"
|
||||
|
||||
#set host [SaveMainServer [.add.frm.ent_host get] [.add.frm.ent_port get] [.add.frm.ent_path_to_rac get]]
|
||||
#set rac_cmd_for_host($host) [.add.frm.ent_path_to_rac get]
|
||||
#puts $servers_list
|
||||
.frm_tree.tree insert {} end -id "server::$host" -text "$server_name" -values "$host"
|
||||
destroy .add
|
||||
unset msg
|
||||
#SaveConfig
|
||||
return $host
|
||||
}
|
||||
return $frm
|
||||
}
|
||||
proc Add::servers {tree host values} {
|
||||
global default dedicate_managers using active_cluster cluster_user cluster_pwd auth
|
||||
global default dedicate_managers using active_cluster cluster_user cluster_pwd auth \
|
||||
servers_list
|
||||
if {$cluster_user ne "" && $cluster_pwd ne ""} {
|
||||
set auth "--cluster-user=$cluster_user --cluster-pwd=$cluster_pwd"
|
||||
} else {
|
||||
@ -935,32 +1070,47 @@ proc Add::servers {tree host values} {
|
||||
ttk::label $frm.lbl_agent_port -text [::msgcat::mc "Port"]
|
||||
ttk::entry $frm.ent_agent_port
|
||||
$frm.ent_agent_port insert end $default(port)
|
||||
ttk::label $frm.lbl_port_range -text [::msgcat::mc "Ports range"]
|
||||
ttk::label $frm.lbl_port_range -text [::msgcat::mc "Port range"]
|
||||
ttk::entry $frm.ent_port_range
|
||||
$frm.ent_port_range insert end $default(port_range)
|
||||
ttk::label $frm.lbl_safe_working_processes_memory_limit -text [::msgcat::mc "Maximum memory in working processes"]
|
||||
ttk::label $frm.lbl_safe_working_processes_memory_limit \
|
||||
-text [::msgcat::mc "Safe working processes memory limit"]
|
||||
ttk::entry $frm.ent_safe_working_processes_memory_limit
|
||||
$frm.ent_safe_working_processes_memory_limit insert end $default(safe_working_processes_memory_limit)
|
||||
ttk::label $frm.lbl_safe_call_memory_limit -text [::msgcat::mc "Safe memory consuption per call"]
|
||||
ttk::label $frm.lbl_safe_call_memory_limit -text [::msgcat::mc "Safe call memory limit"]
|
||||
ttk::entry $frm.ent_safe_call_memory_limit
|
||||
$frm.ent_safe_call_memory_limit insert end $default(safe_call_memory_limit)
|
||||
ttk::label $frm.lbl_memory_limit -text [::msgcat::mc "Memory use limit per working process"]
|
||||
ttk::label $frm.lbl_memory_limit -text [::msgcat::mc "Memory limit"]
|
||||
ttk::entry $frm.ent_memory_limit
|
||||
$frm.ent_memory_limit insert end $default(ram_work)
|
||||
ttk::label $frm.lbl_infobases_limit -text [::msgcat::mc "Maximum number of infobases per working process"]
|
||||
ttk::label $frm.lbl_infobases_limit -text [::msgcat::mc "Infobases limit"]
|
||||
ttk::entry $frm.ent_infobases_limit
|
||||
$frm.ent_infobases_limit insert end $default(infobases_limit)
|
||||
ttk::label $frm.lbl_connections_limit -text [::msgcat::mc "Maximum nuber of connections per working process"]
|
||||
ttk::label $frm.lbl_connections_limit -text [::msgcat::mc "Connections limit"]
|
||||
ttk::entry $frm.ent_connections_limit
|
||||
$frm.ent_connections_limit insert end $default(connections_limit)
|
||||
ttk::label $frm.lbl_cluster_port -text [::msgcat::mc "Main cluster manager port number"]
|
||||
ttk::label $frm.lbl_cluster_port -text [::msgcat::mc "Сluster port"]
|
||||
ttk::entry $frm.ent_cluster_port
|
||||
$frm.ent_cluster_port insert end $default(port)
|
||||
ttk::label $frm.lbl_dedicate_managers -text [::msgcat::mc "Service manager allocation"]
|
||||
ttk::label $frm.lbl_dedicate_managers -text [::msgcat::mc "Dedicate managers"]
|
||||
ttk::checkbutton $frm.check_dedicate_managers -variable dedicate_managers -onvalue all -offvalue none
|
||||
ttk::label $frm.lbl_using -text [::msgcat::mc "Working server use variant"]
|
||||
ttk::checkbutton $frm.check_using -variable using -onvalue main -offvalue normal
|
||||
|
||||
ttk::label $frm.lbl_critical_total_memory -text [::msgcat::mc "Critical total memory"]
|
||||
ttk::entry $frm.ent_critical_total_memory
|
||||
$frm.ent_critical_total_memory insert end $default(critical_total_memory)
|
||||
|
||||
ttk::label $frm.lbl_temporary_allowed_total_memory \
|
||||
-text [::msgcat::mc "Temporary allowed total memory"]
|
||||
ttk::entry $frm.ent_temporary_allowed_total_memory
|
||||
$frm.ent_temporary_allowed_total_memory insert end $default(temporary_allowed_total_memory)
|
||||
|
||||
ttk::label $frm.lbl_temporary_allowed_total_memory_time_limit \
|
||||
-text [::msgcat::mc "Temporary allowed total memory time limit"]
|
||||
ttk::entry $frm.ent_temporary_allowed_total_memory_time_limit
|
||||
$frm.ent_temporary_allowed_total_memory_time_limit insert end $default(temporary_allowed_total_memory_time_limit)
|
||||
|
||||
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
|
||||
@ -969,8 +1119,12 @@ proc Add::servers {tree host values} {
|
||||
grid $frm.ent_agent_port -row 2 -column 1 -sticky new -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_cluster_port -row 12 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.ent_cluster_port -row 12 -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
|
||||
@ -979,12 +1133,20 @@ proc Add::servers {tree host values} {
|
||||
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
|
||||
|
||||
grid $frm.lbl_critical_total_memory -row 9 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.ent_critical_total_memory -row 9 -column 1 -sticky nsew -padx 5 -pady 5
|
||||
grid $frm.lbl_temporary_allowed_total_memory -row 10 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.ent_temporary_allowed_total_memory -row 10 -column 1 -sticky nsew -padx 5 -pady 5
|
||||
grid $frm.lbl_temporary_allowed_total_memory_time_limit \
|
||||
-row 11 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.ent_temporary_allowed_total_memory_time_limit \
|
||||
-row 11 -column 1 -sticky nsew -padx 5 -pady 5
|
||||
|
||||
grid $frm.lbl_dedicate_managers -row 13 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.check_dedicate_managers -row 13 -column 1 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.lbl_using -row 14 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.check_using -row 14 -column 1 -sticky nw -padx 5 -pady 5
|
||||
|
||||
.add.frm_btn.btn_ok configure -command {
|
||||
RunCommand "server insert \
|
||||
@ -1000,6 +1162,9 @@ proc Add::servers {tree host values} {
|
||||
--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] \
|
||||
--critical-total-memory=[.add.frm.ent_critical_total_memory get] \
|
||||
--temporary-allowed-total-memory=[.add.frm.ent_temporary_allowed_total_memory get] \
|
||||
--temporary-allowed-total-memory-time-limit=[.add.frm.ent_temporary_allowed_total_memory_time_limit get] \
|
||||
--cluster=$active_cluster $auth $host"
|
||||
Run::servers $tree $host $active_cluster
|
||||
destroy .add
|
||||
@ -1127,7 +1292,7 @@ proc Add::infobases {tree host values} {
|
||||
proc Add::cluster {tree host values} {
|
||||
global default lifetime_limit expiration_timeout session_fault_tolerance_level
|
||||
global max_memory_size max_memory_time_limit errors_count_threshold security_level
|
||||
global load_balancing_mode kill_problem_processes \
|
||||
global load_balancing_mode kill_problem_processes kill_by_memory_with_dump \
|
||||
agent_user agent_pwd cluster_user cluster_pwd auth_agent
|
||||
if {$agent_user ne "" && $agent_pwd ne ""} {
|
||||
set auth_agent "--agent-user=$agent_user --agent-pwd=$agent_pwd"
|
||||
@ -1143,10 +1308,12 @@ proc Add::cluster {tree host values} {
|
||||
set errors_count_threshold $default(errors_count_threshold)
|
||||
set security_level [lindex $default(security_level) 0]
|
||||
set load_balancing_mode [lindex $default(load_balancing_mode) 0]
|
||||
set kill_problem_processes no
|
||||
set kill_by_memory_with_dump no
|
||||
|
||||
set frm [AddToplevel [::msgcat::mc "Cluster"] cluster_grey_64]
|
||||
|
||||
ttk::label $frm.lbl_host -text [::msgcat::mc "Main server address"]
|
||||
ttk::label $frm.lbl_host -text [::msgcat::mc "Host"]
|
||||
ttk::entry $frm.ent_host
|
||||
ttk::label $frm.lbl_port -text [::msgcat::mc "Port"]
|
||||
ttk::entry $frm.ent_port
|
||||
@ -1154,27 +1321,34 @@ proc Add::cluster {tree host values} {
|
||||
ttk::label $frm.lbl_name -text [::msgcat::mc "Name"]
|
||||
|
||||
ttk::entry $frm.ent_name
|
||||
ttk::label $frm.lbl_secure_connect -text [::msgcat::mc "Secure level"]
|
||||
ttk::label $frm.lbl_security_level -text [::msgcat::mc "Security level"]
|
||||
ttk::combobox $frm.cb_security_level -textvariable security_level -values $default(security_level)
|
||||
ttk::label $frm.lbl_expiration_timeout -text [::msgcat::mc "Forced termination time"]
|
||||
ttk::label $frm.lbl_expiration_timeout -text [::msgcat::mc "Expiration timeout"]
|
||||
ttk::entry $frm.ent_expiration_timeout -textvariable expiration_timeout
|
||||
ttk::label $frm.lbl_session_fault_tolerance_level -text [::msgcat::mc "Fault-tolerance level"]
|
||||
ttk::entry $frm.ent_session_fault_tolerance_level -textvariable session_fault_tolerance_level
|
||||
ttk::label $frm.lbl_session_fault_tolerance_level \
|
||||
-text [::msgcat::mc "Session fault tolerance level"]
|
||||
ttk::entry $frm.ent_session_fault_tolerance_level \
|
||||
-textvariable session_fault_tolerance_level
|
||||
ttk::label $frm.lbl_load_balancing_mode -text [::msgcat::mc "Load balancing mode"]
|
||||
ttk::combobox $frm.cb_load_balancing_mode -textvariable load_balancing_mode \
|
||||
-values $default(load_balancing_mode)
|
||||
ttk::label $frm.lbl_errors_count_threshold -text [::msgcat::mc "Server errors threshold"]
|
||||
ttk::label $frm.lbl_errors_count_threshold -text [::msgcat::mc "Errors count threshold"]
|
||||
ttk::entry $frm.ent_errors_count_threshold -textvariable errors_count_threshold
|
||||
ttk::label $frm.lbl_processes -text [::msgcat::mc "Working process"]
|
||||
ttk::label $frm.lbl_lifetime_limit -text [::msgcat::mc "Restart time"]
|
||||
ttk::label $frm.lbl_processes -text [::msgcat::mc "Processes"]
|
||||
ttk::label $frm.lbl_lifetime_limit -text [::msgcat::mc "Lifetime limit"]
|
||||
ttk::entry $frm.ent_lifetime_limit -textvariable lifetime_limit
|
||||
ttk::label $frm.lbl_max_memory_size -text [::msgcat::mc "Maximum virtual address space"]
|
||||
ttk::label $frm.lbl_max_memory_size -text [::msgcat::mc "Max memory size"]
|
||||
ttk::entry $frm.ent_max_memory_size -textvariable max_memory_size
|
||||
ttk::label $frm.lbl_max_memory_time_limit -text [::msgcat::mc "Maximum period of memori size exeeding"]
|
||||
ttk::label $frm.lbl_max_memory_time_limit -text [::msgcat::mc "Max memory time limit"]
|
||||
ttk::entry $frm.ent_max_memory_time_limit -textvariable max_memory_time_limit
|
||||
ttk::label $frm.lbl_kill_problem_processes -justify left -anchor nw -text [::msgcat::mc "Terminate corrupted processes"]
|
||||
ttk::checkbutton $frm.check_kill_problem_processes -variable kill_problem_processes -onvalue yes -offvalue no
|
||||
|
||||
ttk::label $frm.lbl_kill_problem_processes -justify left -anchor nw \
|
||||
-text [::msgcat::mc "Kill problem processes"]
|
||||
ttk::checkbutton $frm.check_kill_problem_processes \
|
||||
-variable kill_problem_processes -onvalue yes -offvalue no
|
||||
ttk::checkbutton $frm.check_kill_by_memory_with_dump \
|
||||
-variable kill_by_memory_with_dump -onvalue yes -offvalue no
|
||||
ttk::label $frm.lbl_kill_by_memory_with_dump -justify left -anchor nw \
|
||||
-text [::msgcat::mc "Kill by memory with dump"]
|
||||
|
||||
grid $frm.lbl_host -row 0 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.ent_host -row 0 -column 1 -sticky nsew -padx 5 -pady 5
|
||||
@ -1182,7 +1356,7 @@ proc Add::cluster {tree host values} {
|
||||
grid $frm.ent_port -row 1 -column 1 -sticky nsew -padx 5 -pady 5
|
||||
grid $frm.lbl_name -row 2 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.ent_name -row 2 -column 1 -sticky nsew -padx 5 -pady 5
|
||||
grid $frm.lbl_secure_connect -row 3 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.lbl_security_level -row 3 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.cb_security_level -row 3 -column 1 -sticky nsew -padx 5 -pady 5
|
||||
grid $frm.lbl_expiration_timeout -row 4 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.ent_expiration_timeout -row 4 -column 1 -sticky nsew -padx 5 -pady 5
|
||||
@ -1201,12 +1375,14 @@ proc Add::cluster {tree host values} {
|
||||
grid $frm.ent_max_memory_time_limit -row 11 -column 1 -sticky nsew -padx 5 -pady 5
|
||||
grid $frm.lbl_kill_problem_processes -row 12 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.check_kill_problem_processes -row 12 -column 1 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.lbl_kill_by_memory_with_dump -row 13 -column 0 -sticky nw -padx 5 -pady 5
|
||||
grid $frm.check_kill_by_memory_with_dump -row 13 -column 1 -sticky nw -padx 5 -pady 5
|
||||
|
||||
.add.frm_btn.btn_ok configure -command {
|
||||
RunCommand "cluster insert \
|
||||
--host=[.add.frm.ent_host get] \
|
||||
--port=[.add.frm.ent_port get] \
|
||||
--name=[.add.frm.ent_name get] \
|
||||
--name=[regsub -all -- " " [.add.frm.ent_name get] "\\ "] \
|
||||
--expiration-timeout=$expiration_timeout \
|
||||
--lifetime-limit=$lifetime_limit \
|
||||
--max-memory-size=$max_memory_size \
|
||||
@ -1216,6 +1392,7 @@ proc Add::cluster {tree host values} {
|
||||
--load-balancing-mode=$load_balancing_mode \
|
||||
--errors-count-threshold=$errors_count_threshold \
|
||||
--kill-problem-processes=$kill_problem_processes \
|
||||
--kill-by-memory-with-dump=$kill_by_memory_with_dump \
|
||||
$auth_agent $host"
|
||||
Run::server $tree $host ""
|
||||
destroy .add
|
||||
@ -1700,60 +1877,45 @@ proc Edit::managers {tree host values} {
|
||||
}
|
||||
|
||||
proc Edit::server {tree host value} {
|
||||
global dir prev_address rac_cmd rac_cmd_for_host
|
||||
global dir prev_address rac_cmd rac_cmd_for_host servers_list
|
||||
|
||||
set frm [Add::server]
|
||||
wm title .add [::msgcat::mc "Edit record"]
|
||||
set lst [split $value ":"]
|
||||
set prev_address $value
|
||||
set orig_file [open [file join $dir(work) 1c_srv.cfg] "r"]
|
||||
while {[gets $orig_file line] >=0 } {
|
||||
if [string match "$prev_address*" $line] {
|
||||
set path_to_rac [string trim [lindex [split $line ","] 1]]
|
||||
if {$path_to_rac eq ""} {
|
||||
set path_to_rac "$rac_cmd"
|
||||
}
|
||||
}
|
||||
}
|
||||
close $orig_file
|
||||
.add.frm.ent_server_name delete 0 end
|
||||
.add.frm.ent_host delete 0 end
|
||||
.add.frm.ent_port delete 0 end
|
||||
.add.frm.ent_path_to_rac delete 0 end
|
||||
|
||||
.add.frm.ent_server_name insert end [dict get $servers_list servers $prev_address name]
|
||||
|
||||
.add.frm.ent_host insert end [lindex $lst 0]
|
||||
.add.frm.ent_port insert end [lindex $lst 1]
|
||||
.add.frm.ent_path_to_rac insert end $path_to_rac
|
||||
.add.frm.ent_path_to_rac insert end [dict get $servers_list servers $prev_address rac_cmd]
|
||||
.add.frm_btn.btn_ok configure -command {
|
||||
set host "[.add.frm.ent_host get]:[.add.frm.ent_port get]"
|
||||
#set rac_cmd [.add.frm.ent_path_to_rac get]
|
||||
set server_name [.add.frm.ent_server_name get]
|
||||
set rac_cmd_for_host($host) [.add.frm.ent_path_to_rac get]
|
||||
.frm_tree.tree delete "server::$prev_address"
|
||||
.frm_work.tree_work delete [ .frm_work.tree_work children {}]
|
||||
.frm_tree.tree insert {} end -id "server::$host" -text "$host" -values "$host"
|
||||
if [file exists [file join $dir(work) 1c_srv.cfg.bak]] {
|
||||
file delete [file join $dir(work) 1c_srv.cfg.bak]
|
||||
}
|
||||
file copy [file join $dir(work) 1c_srv.cfg] [file join $dir(work) 1c_srv.cfg.bak]
|
||||
set orig_file [open [file join $dir(work) 1c_srv.cfg.bak] "r"]
|
||||
set file [open [file join $dir(work) 1c_srv.cfg] "w"]
|
||||
while {[gets $orig_file line] >=0 } {
|
||||
if [string match "$prev_address*" $line] {
|
||||
puts $file "$host,$rac_cmd_for_host($host)"
|
||||
} else {
|
||||
puts $file $line
|
||||
}
|
||||
}
|
||||
close $file
|
||||
close $orig_file
|
||||
#return "$host:$port"
|
||||
file delete [file join $dir(work) 1c_srv.cfg.bak]
|
||||
.frm_tree.tree insert {} end -id "server::$host" -text "$server_name" -values "$host"
|
||||
|
||||
set clusters [dict get $servers_list servers $prev_address clusters]
|
||||
dict unset servers_list servers $prev_address
|
||||
dict set servers_list servers $host "name \"$server_name\" rac_cmd $rac_cmd_for_host($host) clusters \{$clusters\}"
|
||||
unset clusters server_name
|
||||
#puts $servers_list
|
||||
destroy .add
|
||||
SaveConfig
|
||||
return $host
|
||||
}
|
||||
}
|
||||
|
||||
proc Edit::cluster {tree host values} {
|
||||
global default lifetime_limit expiration_timeout session_fault_tolerance_level
|
||||
global max_memory_size max_memory_time_limit errors_count_threshold security_level
|
||||
global max_memory_size max_memory_time_limit errors_count_threshold security_level \
|
||||
kill_by_memmory_with_dump
|
||||
global load_balancing_mode kill_problem_processes active_cluster \
|
||||
agent_user agent_pwd cluster_user cluster_pwd auth
|
||||
if {$cluster_user ne "" && $cluster_pwd ne ""} {
|
||||
@ -1787,6 +1949,7 @@ proc Edit::cluster {tree host values} {
|
||||
--load-balancing-mode=$load_balancing_mode \
|
||||
--errors-count-threshold=$errors_count_threshold \
|
||||
--kill-problem-processes=$kill_problem_processes \
|
||||
--kill-by-memory-with-dump=$kill_by_memory_with_dump \
|
||||
$auth $host"
|
||||
$tree delete "cluster::$active_cluster"
|
||||
Run::server $tree $host ""
|
||||
@ -1956,6 +2119,9 @@ proc Edit::work_server {tree host values} {
|
||||
--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] \
|
||||
--critical-total-memory=[.add.frm.ent_critical_total_memory get] \
|
||||
--temporary-allowed-total-memory=[.add.frm.ent_temporary_allowed_total_memory get] \
|
||||
--temporary-allowed-total-memory-time-limit=[.add.frm.ent_temporary_allowed_total_memory_time_limit get] \
|
||||
--cluster=$active_cluster $auth $host"
|
||||
Run::servers $tree $host $active_cluster
|
||||
destroy .add
|
||||
@ -2293,6 +2459,7 @@ proc Del::sessions {tree host values} {
|
||||
}
|
||||
|
||||
|
||||
|
||||
proc Del::rule {tree host values} {
|
||||
global active_cluster server agent_user agent_pwd cluster_user cluster_pwd auth
|
||||
if {$cluster_user ne "" && $cluster_pwd ne ""} {
|
||||
@ -2317,14 +2484,20 @@ proc Del::rule {tree host values} {
|
||||
no {return}
|
||||
}
|
||||
}
|
||||
|
||||
# Удаление основного сервера кластера
|
||||
proc Del::server {tree host values} {
|
||||
global dir
|
||||
global dir servers_list
|
||||
set answer [tk_messageBox -message "[::msgcat::mc "Delete server"] $values?" \
|
||||
-icon question -type yesno ]
|
||||
switch -- $answer {
|
||||
yes {
|
||||
file copy [file join $dir(work) 1c_srv.cfg] [file join $dir(work) 1c_srv.cfg.bak]
|
||||
dict unset servers_list servers $values
|
||||
SaveConfig
|
||||
$tree delete "server::$values"
|
||||
.frm_work.tree_work delete [ .frm_work.tree_work children {}]
|
||||
return
|
||||
# данный код не используется. УДАЛИТЬ!
|
||||
file copy [file join $dir(work) 1c_srv_new.cfg] [file join $dir(work) 1c_srv.cfg.bak]
|
||||
set orig_file [open [file join $dir(work) 1c_srv.cfg.bak] "r"]
|
||||
set file [open [file join $dir(work) 1c_srv.cfg] "w"]
|
||||
while {[gets $orig_file line] >=0 } {
|
||||
@ -2334,10 +2507,9 @@ proc Del::server {tree host values} {
|
||||
}
|
||||
close $file
|
||||
close $orig_file
|
||||
#return "$host:$port"
|
||||
$tree delete "server::$values"
|
||||
.frm_work.tree_work delete [ .frm_work.tree_work children {}]
|
||||
file delete [file join $dir(work) 1c_srv.cfg.bak]
|
||||
#return "$host:$port"
|
||||
########## Конец Удаления #############
|
||||
}
|
||||
no {return}
|
||||
}
|
||||
@ -2424,15 +2596,3 @@ proc Del::app {tree host profile_name} {
|
||||
proc Del::inet {tree host profile_name} {
|
||||
Del::acl $host inet [GetWorkTreeItems "name"] $profile_name
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
21
lib/gui.tcl
21
lib/gui.tcl
@ -22,13 +22,24 @@ wm protocol . WM_DELETE_WINDOW Quit
|
||||
wm overrideredirect . 0
|
||||
wm positionfrom . user
|
||||
|
||||
bind . <Control-q> Quit
|
||||
bind . <Control-Q> Quit
|
||||
bind . <Control-eacute> Quit
|
||||
bind . <Insert> Add
|
||||
bind . <Delete> Del
|
||||
bind . <Control-Return> Edit
|
||||
bind . <F1> ShowHelpDialog
|
||||
|
||||
#ttk::style configure TPanedwindow -background blue
|
||||
#ttk::style configure Sash -sashthickness 5
|
||||
#ttk::style configure TButton -padding 60 -relief flat -bg black
|
||||
#ttk::style configure Custom.Treeview -foreground red
|
||||
#ttk::style configure Custom.Treeview -rowheight 20
|
||||
|
||||
ttk::style theme use dark
|
||||
|
||||
if [info exists default(theme)] {
|
||||
ttk::style theme use $default(theme)
|
||||
}
|
||||
|
||||
# Панель инсрументов
|
||||
set frm_tool [ttk::frame .frm_tool]
|
||||
@ -40,9 +51,10 @@ pack propagate .panel false
|
||||
ttk::button $frm_tool.btn_add -command Add -image add_grey_32
|
||||
ttk::button $frm_tool.btn_del -command Del -image del_grey_32
|
||||
ttk::button $frm_tool.btn_edit -command Edit -image edit_grey_32
|
||||
ttk::button $frm_tool.btn_help -command ShowHelpDialog -image question_grey_32
|
||||
ttk::button $frm_tool.btn_quit -command Quit -image quit_grey_32
|
||||
|
||||
pack $frm_tool.btn_add $frm_tool.btn_del $frm_tool.btn_edit -side top -padx 5 -pady 5
|
||||
pack $frm_tool.btn_add $frm_tool.btn_del $frm_tool.btn_edit $frm_tool.btn_help -side top -padx 5 -pady 5
|
||||
#label $frm_tool.lbl_logo -image tcl
|
||||
pack $frm_tool.btn_quit -side bottom -padx 5 -pady 5
|
||||
#pack $frm_tool.lbl_logo -side bottom -padx 5 -pady 5
|
||||
@ -76,8 +88,11 @@ set tree_work [
|
||||
-yscrollcommand [list $frm_work.vsb set]
|
||||
]
|
||||
# table rows background colors
|
||||
|
||||
if {[info exists default(theme)] == 1} {
|
||||
$tree_work tag configure dark -background $color(dark_table_bg)
|
||||
$tree_work tag configure light -background $color(light_table_bg)
|
||||
}
|
||||
bind $tree_work <Double-ButtonPress-1> Edit
|
||||
|
||||
$tree tag configure selected -background white -foreground black
|
||||
@ -88,6 +103,7 @@ bind $tree_work <ButtonRelease-1> {
|
||||
$tree_work item [.frm_work.tree_work selection] -tags selected
|
||||
}
|
||||
|
||||
|
||||
#$tree_work heading par -text "Параметр" -anchor center
|
||||
#$tree_work heading val -text "Значение" -anchor center
|
||||
#set tree_work [ttk::treeview $frm_work.tree_work \
|
||||
@ -107,4 +123,3 @@ pack $frm_tree $frm_work -side left -expand true -fill both
|
||||
.panel add $frm_tree -weight 1
|
||||
.panel add $frm_work -weight 1
|
||||
|
||||
|
||||
|
@ -621,3 +621,94 @@ image create photo app_grey_64 -data {
|
||||
ZhhOnihW5Ql725851hOPesCgxn4/bfEYVJ5mwlTT7EDyT2bwR4yyTf3d6bFcLIPtYoR++ujBwUmV
|
||||
mhdPl2vMUeYmt/VyyQtF7jBPKF0n5wAAAABJRU5ErkJggg==
|
||||
}
|
||||
image create photo help_grey_64 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAA
|
||||
DsQAAA7EAZUrDhsAAAAHdElNRQfjCQ0JDhex/+rmAAAEzklEQVRo3sWZf0iVVxjHP727CxGJCAmJ
|
||||
IZeIajfnD/IO56BshX+ELhF1wsI/Jv1x2lgbrTURN4bbmtiajW2HYlmMrcCYCFMzg5KcjeLiRGRJ
|
||||
hAvxDxmXFhdxcnF3++Ne7/ve9/465/5Y37/uOfd9nud73nOe5zzP865DE8JgO8XsopAC8tnAKj68
|
||||
LPIHs0wzJwN6+tZpmN7EQWqpYnOCh7yMMcSg9GaYgNiDoI4cRa1+RpCMqrwNBQKihg5eRB8zfEpf
|
||||
MhJJCIhSzrKH1DHJMflLigREDp28g4P0EOA8J+SSNgHh4grFZAYPeE1Oxf7LiGO+jl8zZh62MyGa
|
||||
Y//1TEzzb3FR+cSr4Vnq3cueO0oExAd8oRMflB2+2m14xpISEG9zmmxhr/tvz0RCAqKeC1lYvYn9
|
||||
7jnPdFwvEMVMkEd2scJeeS8mAZHHXVyKala5yRCTLLBMDvkU8jI17FSSfUSZfBKLwDccVTTfR7t8
|
||||
GOOerKSTKgX5XtkaRUBUMh4vKtgi20l5OsFl/REfKujYL8ciCAiDu5Qrrb5DfhKS2UInFeQwR7cc
|
||||
tZDo5r2kWn6nRK5aI2GTovkZPg//vsobuNjKAX4WFZZn2plKqsdFiyUUC4MOxd3vD/IGUUhleHY9
|
||||
beYj0s/HCprahMN8AweVT/9f4V+5EfOlEaMRlpJq2sarJgGh7MW5llXHngfkCvMKut4MERCbqVYm
|
||||
0CjWDFcmfO6Jgq4q4QQHUKeRdJTyo+jCTw3ttvhmd7TkMKjnjAOo1QqlDTTEmP3TNt6kpOsQZwzh
|
||||
SCvnM/3aGo5y2aokVSFyDVxsyACBGxGjA4rpzHrKDZsDpQYfAxHjY8qSxQbPZ4DAV9Jn2YBmXlGW
|
||||
3GHgTNv8It0W8zuRGrJOgy1pEzhurl8Uco2NGrL5hqLDxMewvBw27+SW5hvdaNhCqi6WzDAuihhX
|
||||
dD+LHxhKSUh8dMlQ1BdVjPOctrxh4E/D/DJfh8w3cF1r78Mh3KF0bcTDzWByKeq4kmIR6zOiorgO
|
||||
ZkPZ9IWUa2ivoXRzJ05PXGl40ryD+2kQeEEcBnaloeG+QyGBjI9mmtOMItMGU1HJxP+HVSYNucKd
|
||||
p0ZgUvoMYOipERgJZsX9BFISD3CbHr5lJmUCP4VKM3FLqaS017iN0hMqa1qQKbR0pmXJWl1wTlvY
|
||||
T23QPMiAvKSRA5k4ZxYm/SxoCvfLyBf/HY80NTzm+zAB6eeUpvh45FAGtOPJl8Hm5dpl3MucpgeT
|
||||
QiliTeN6LNUxyBWOayl4Kaox4dKSP7nWvA2nI3LAllonRpPYFjE+rNgfCmKUH8z6zLIMFjWq5Gui
|
||||
KCzYpJUJP6bVbOJHtumqGdK42f0M8BAHFVrFXYBDctAc2pqS4n26shx+2+Vn1qGtU+qZcBcodotS
|
||||
w3naPP8mIADu6zgpyZL5yxyR/0RORRHwBNyDFLA7C+Z7aZVR8SNGu94TcA/jZ19Gm9YBTvGuffUx
|
||||
DqHlONZwkfwMmfdxRPbF69PEgRykjOGMmL9NWTzzJCrM5AK1vK59T9pjfiv7ZIJ7Juk+izyOciKl
|
||||
zfBylh6ZpGWpdNBEHi0IirSaVpJLMnm/VOvjdTmN1CS99WYZ5Kr1m0jGCIRoFFBBMTtwkh/uLfjx
|
||||
Ms8DfsMjNc/Mf4o2PgHmKkMjAAAAAElFTkSuQmCC
|
||||
}
|
||||
|
||||
image create photo question_grey_64 -data {
|
||||
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
|
||||
QmCC
|
||||
}
|
||||
image create photo question_grey_32 -data {
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAA
|
||||
CxMAAAsTAQCanBgAAAAHdElNRQfjCRAKKwvtOFdVAAADe0lEQVRIx4XVbWiVZRwG8N/z7CST6TA3
|
||||
Sc1sGS56Q7KtUiRi1BIjP2QhWCyVoXsUJEKkwiTCbBVoFHmf5CD7YAjRp0SlkBW+fKiOYZhoZiai
|
||||
lrpy1nIqbk8fznFubkfvT/fLdf3/98t1X//IkC2ZoEGdScpddsGf9mkPR4dCRoOow8yzyCPKBmH3
|
||||
ymkLF28YIHne++5Sup20MrSVCJCMkPVi3/CgnQ7rQLVa0z3Yt7JFU+gcFCCptk09uGSj9eHn6/ZW
|
||||
a4lmFeCAmeHEgABJpW89BHZZGI4kscc1mWaM2Bl7tNkTepMaWU+DX80IZyAuJthUpH+sIRxJKrSm
|
||||
WxxP51rsvHsstMOapCIcM8s7YLLPkwwKd520eBWsC6/ke6lf6u3ooGXZo/mD9bs1ySjzmI78d/k0
|
||||
317fowE1LuV3EZOMtgZstxySSWan0inpoy0xYW+6O5VKM+mzSQ2E1TaDN5IJhSMscyvOaQ69kFYb
|
||||
G4l4znBayhyORCLRnen44oGX+AMVVhAnGYvA2nCquHwmLfSuSEFvKpVKr0Q9BUDotBrMT0bEnjAO
|
||||
3dZffbDsMe/ZnG6KsvFFUkYXd/B7erLvVdv8hZFmZjwJvg5/X3vz3h1l+6Kewkx8S1Edl23NnriK
|
||||
CBeSLy1AY0YdaO8vmg2ps32DxnQyen0SDZCwdgtQl1EDDpdU/5uRtCt6N10XugfMFxgTMyrBhRLf
|
||||
epa69Kjm8M2gpcKvjDNu3FbYlc7+tLM0IKPLGJQPmX+Uez1Qgj6scN+xgs/UDgmqSr8PZ0ukLjCO
|
||||
x/KgYUjQxeiLknsvMPJR0ugrdJvQXwk3a0m5E6owN9buNIYXBT0QNjGZmowaMkKTKvxrWxyuyIHl
|
||||
SfVATMtcORvlFt83KHClVQUXCV0xPnQeVbL9QYvHRa95yhRz4rcG5f/I7ejWSkzosBLMSdZcw8R3
|
||||
G1vsTmkZYPHJci+D1nD8qqWttx28nqxNiiYX7U/PFRk/ZXv60Vf6AOwp2FAZ5NP6rZ5xG6aZUb8z
|
||||
38kPl+r2RfertMXSfFHoyfj6z7SA38wM/wy09bG2FY31Pxtkw3XfK6nRYomR4Bczw7HBhaVSzgt9
|
||||
w/12O6RDr9FqTTe1r9ht99I1zVxf2uZpdccNFHTaKrmCd5YqruXma/bwEOQDcnKh6ybVuRhmkkZ1
|
||||
xivHZaf8aEc4NBTyf7MOJUH/zPUoAAAAAElFTkSuQmCC
|
||||
}
|
||||
|
@ -27,21 +27,25 @@
|
||||
::msgcat::mcset ru "OS user name" "Пользователь ОС"
|
||||
::msgcat::mcset ru "Authentication method" "Способ аутентификации"
|
||||
::msgcat::mcset ru "Add record" "Добавить запись"
|
||||
::msgcat::mcset ru "Main server" "Основной сервер"
|
||||
::msgcat::mcset ru "Main server address" "Адрес основного сервера"
|
||||
::msgcat::mcset ru "Host" "Основной сервер"
|
||||
::msgcat::mcset ru "Host address" "Адрес основного сервера"
|
||||
::msgcat::mcset ru "Address" "Адрес сервера"
|
||||
::msgcat::mcset ru "Port" "Порт"
|
||||
::msgcat::mcset ru "Ports range" "Диапазон портов"
|
||||
::msgcat::mcset ru "Cluster port" "Порт кластера"
|
||||
::msgcat::mcset ru "Port range" "Диапазон портов"
|
||||
::msgcat::mcset ru "Agent host" "Адрес сервера"
|
||||
::msgcat::mcset ru "Agent port" "Порт сервера"
|
||||
::msgcat::mcset ru "Protocol" "Протокол"
|
||||
::msgcat::mcset ru "Working processes" "Рабочие процессы"
|
||||
::msgcat::mcset ru "Processes" "Рабочие процессы"
|
||||
::msgcat::mcset ru "Cluster managers" "Менеджеры кластера"
|
||||
::msgcat::mcset ru "Maximum memory in working processes" "Максимальный объём памяти раб. процессов"
|
||||
::msgcat::mcset ru "Safe memory consuption per call" "Безопасный расход памяти за вызов"
|
||||
::msgcat::mcset ru "Memory use limit per working process" "Предел использования памяти рабочим процессом"
|
||||
::msgcat::mcset ru "Maximum number of infobases per working process" "Количество ИБ на процесс"
|
||||
::msgcat::mcset ru "Maximum nuber of connections per working process" "Количество соединений на процесс"
|
||||
::msgcat::mcset ru "Main cluster manager port number" "Порт главного менеджера кластера"
|
||||
::msgcat::mcset ru "Service manager allocation" "Менеджер под каждый сервис"
|
||||
::msgcat::mcset ru "Safe working processes memory limit" "Максимальный объём памяти раб. процессов"
|
||||
::msgcat::mcset ru "Safe call memory limit" "Безопасный расход памяти за вызов"
|
||||
::msgcat::mcset ru "Memory limit" "Предел использования памяти рабочим процессом"
|
||||
::msgcat::mcset ru "Infobases limit" "Количество ИБ на процесс"
|
||||
::msgcat::mcset ru "Connections limit" "Количество соединений на процесс"
|
||||
::msgcat::mcset ru "Сluster port" "Порт главного менеджера кластера"
|
||||
::msgcat::mcset ru "Dedicate managers" "Менеджер под каждый сервис"
|
||||
::msgcat::mcset ru "Working server use variant" "Вариант использования рабочего сервера"
|
||||
::msgcat::mcset ru "Work servers" "Рабочие серверы"
|
||||
::msgcat::mcset ru "Work server" "Рабочий сервер"
|
||||
@ -54,15 +58,16 @@
|
||||
::msgcat::mcset ru "Create database" "Создать БД в случае её отсутствия"
|
||||
::msgcat::mcset ru "Sheduled jobs deny" "Блокировка регламентных заданий"
|
||||
::msgcat::mcset ru "Date offset" "Смещение дат"
|
||||
::msgcat::mcset ru "Secure level" "Безопасное соединение"
|
||||
::msgcat::mcset ru "Forced termination time" "Останавливать выключенные процессы через:"
|
||||
::msgcat::mcset ru "Fault-tolerance level" "Уровень отказоустойчивости"
|
||||
::msgcat::mcset ru "Security level" "Безопасное соединение"
|
||||
::msgcat::mcset ru "Expiration timeout" "Останавливать выключенные процессы через:"
|
||||
::msgcat::mcset ru "Session fault tolerance level" "Уровень отказоустойчивости"
|
||||
::msgcat::mcset ru "Load balancing mode" "Режим распределения нагрузки"
|
||||
::msgcat::mcset ru "Server errors threshold" "Допустимое отклонение количества ошибок сервера, %"
|
||||
::msgcat::mcset ru "Restart time" "Период перезапуска, сек."
|
||||
::msgcat::mcset ru "Maximum virtual address space" "Допустимый объём памяти, КБ"
|
||||
::msgcat::mcset ru "Maximum period of memori size exeeding" "Интервал превышения допустимого объёма памяти, сек."
|
||||
::msgcat::mcset ru "Terminate corrupted processes" "Принудительно завершать проблемные процессы"
|
||||
::msgcat::mcset ru "Errors count threshold" "Допустимое отклонение количества ошибок сервера, %"
|
||||
::msgcat::mcset ru "Lifetime limit" "Период перезапуска, сек."
|
||||
::msgcat::mcset ru "Max memory size" "Допустимый объём памяти, КБ"
|
||||
::msgcat::mcset ru "Max memory time limit" "Интервал превышения допустимого объёма памяти, сек."
|
||||
::msgcat::mcset ru "Kill problem processes" "Принудительно завершать проблемные процессы"
|
||||
::msgcat::mcset ru "Kill by memory with dump" "Формировать дамп процесса при превышении объема памяти"
|
||||
::msgcat::mcset ru "Object type" "Объект требования"
|
||||
::msgcat::mcset ru "Rule type" "Тип требования"
|
||||
::msgcat::mcset ru "Application with an ajustment" "Значение доп. параметра"
|
||||
@ -112,3 +117,34 @@
|
||||
::msgcat::mcset ru "Session lock mode management" "Режим блокировки сеансов"
|
||||
::msgcat::mcset ru "External session management required" "Внешнее управление сеансами"
|
||||
::msgcat::mcset ru "Path to RAC" "Путь до RAC"
|
||||
::msgcat::mcset ru "Using" "Использование"
|
||||
::msgcat::mcset ru "Critical total memory" "Макс. объём памяти процессов рабочего сервера"
|
||||
::msgcat::mcset ru "Temporary allowed total memory" "Предел превышения допустимого объёма памяти процессов (сек.)"
|
||||
::msgcat::mcset ru "Temporary allowed total memory time limit" "Допустимый объем памяти процессов рабочего сервера"
|
||||
::msgcat::mcset ru "Server" "Сервер"
|
||||
::msgcat::mcset ru "Main server" "Основной сервер"
|
||||
::msgcat::mcset ru "The default variables is undefinied:" "Не установлены значения по умолчанию для следующих перменных:"
|
||||
::msgcat::mcset ru "New config file will be copying from RAC GUI distributive." "Скопирoвать новый файл настроек из дистрибутива программы?"
|
||||
::msgcat::mcset ru "All files from old working dir will be moved into new location:" "Все файлы из текущего рабочего каталога перенсены в:"
|
||||
::msgcat::mcset ru "Command must be" "Команда должна быть"
|
||||
::msgcat::mcset ru "or" "или"
|
||||
::msgcat::mcset ru "You entered" "Вы ввели"
|
||||
::msgcat::mcset ru "it's correct?" "это правильно?"
|
||||
::msgcat::mcset ru "Manager" "Менеджер"
|
||||
::msgcat::mcset ru "Descr" "Описание"
|
||||
::msgcat::mcset ru "Process" "Процесс"
|
||||
::msgcat::mcset ru "Is enable" "Включен"
|
||||
::msgcat::mcset ru "Running" "Запущен"
|
||||
::msgcat::mcset ru "Started at" "Время запуска"
|
||||
::msgcat::mcset ru "Use" "Использование"
|
||||
::msgcat::mcset ru "Started at" "Время запуска"
|
||||
::msgcat::mcset ru "Memory size" "Размер памяти"
|
||||
::msgcat::mcset ru "Connection" "Соединение"
|
||||
::msgcat::mcset ru "Session" "Сессия"
|
||||
::msgcat::mcset ru "Object" "Объект"
|
||||
::msgcat::mcset ru "Locked" "Заблокировано"
|
||||
::msgcat::mcset ru "Connected at" "Подключено в"
|
||||
::msgcat::mcset ru "Session number" "Номер сессии"
|
||||
::msgcat::mcset ru "About" "О программе"
|
||||
::msgcat::mcset ru "Version" "Версия"
|
||||
::msgcat::mcset ru "Release" "Выпуск"
|
||||
|
40
lib/theme.tcl
Normal file
40
lib/theme.tcl
Normal file
@ -0,0 +1,40 @@
|
||||
######################################################
|
||||
# Rac GUI
|
||||
# Graphical theme settings
|
||||
#
|
||||
# Distributed under GNU Public License
|
||||
# Author: Sergey Kalinin svk@nuk-svk.ru
|
||||
# Home page: https://nuk-svk.ru
|
||||
# Git repos: https://bitbucket.org/svk28/rac-gui
|
||||
|
||||
|
||||
######################################################
|
||||
|
||||
# set editor(fg) grey
|
||||
# set editor(bg) black
|
||||
# option add *Entry.Foreground $editor(fg) interactive
|
||||
# option add *Entry.Background $editor(bg) interactive
|
||||
# option add *Label.Foreground $editor(fg) interactive
|
||||
# option add *Label.Background $editor(bg) interactive
|
||||
# option add *Checkbox.Foreground $editor(fg) interactive
|
||||
# option add *Checkbox.Background $editor(bg) interactive
|
||||
# option add *Checkbutton.Foreground $editor(fg) interactive
|
||||
# option add *Checkbutton.Background $editor(bg) interactive
|
||||
# option add *Combobox.Foreground $editor(fg) interactive
|
||||
# option add *Combobox.Background $editor(bg) interactive
|
||||
# option add *Listbox.Foreground $editor(fg) interactive
|
||||
# option add *Listbox.Background $editor(bg) interactive
|
||||
# option add *TreeView.Background $editor(bg) interactive
|
||||
#option add *Treeview.Foreground red interactive
|
||||
# #option add *Frame.Background $editor(bg) interactive
|
||||
# option add *ScrollableFrame.Background $editor(bg) interactive
|
||||
# option add *ScrolledWindow.Background $editor(bg) interactive
|
||||
|
||||
|
||||
if {[info exists default(theme)] == 1 && $default(theme) eq "dark"} {
|
||||
set color(dark_table_bg) "#6f6f6f"
|
||||
set color(light_table_bg) "#424242"
|
||||
} else {
|
||||
set color(dark_table_bg) "#e2e2e2"
|
||||
set color(light_table_bg) "#ffffff"
|
||||
}
|
@ -91,11 +91,18 @@ namespace eval ttk::theme::dark {
|
||||
-background $colors(-lightframe) -itembackground {gray60 gray50} \
|
||||
-itemfill #ffffff -itemaccentfill yellow \
|
||||
-fieldbackground $colors(-lightframe)
|
||||
|
||||
ttk::style configure Text \
|
||||
-background [list active $colors(-lighter)] \
|
||||
-foreground [list disabled $colors(-disabledfg)]
|
||||
|
||||
# ttk::style configure TreeCtrl \
|
||||
# -background gray30 -itembackground {gray60 gray50} \
|
||||
# -itemfill #ffffff -itemaccentfill yellow
|
||||
}
|
||||
option add *Toplevel.Background $colors(-dark) interactive
|
||||
option add *Text.Foreground $colors(-foreground) interactive
|
||||
option add *Text.Background $colors(-frame) interactive
|
||||
}
|
||||
#option add *Treeview.Background red interactive
|
||||
# option add *Frame.Background $colors(-frame) interactive
|
||||
# option add *Label.Background $colors(-frame) interactive
|
||||
@ -139,3 +146,5 @@ namespace eval ::tablelist:: {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
23
rac_gui.cfg
23
rac_gui.cfg
@ -10,7 +10,7 @@
|
||||
#
|
||||
######################################################
|
||||
|
||||
set rac_cmd "/opt/1C/v8.3/x86_64/rac"
|
||||
set default(rac_dir) "/opt/1C/v8.3/x86_64"
|
||||
|
||||
set default(locale) "ru"
|
||||
# Порт RAS
|
||||
@ -108,24 +108,25 @@ set default(load_balancing_mode) {
|
||||
memory
|
||||
}
|
||||
|
||||
|
||||
set default(auth) {
|
||||
pwd
|
||||
os
|
||||
}
|
||||
|
||||
# максимальный объем памяти процессов рабочего сервера
|
||||
set default(critical_total_memory) 0
|
||||
|
||||
# допустимый объем памяти процессов рабочего сервера <bytes>
|
||||
set default(temporary_allowed_total_memory) 0
|
||||
|
||||
# предел превышения (секунд) допустимого объема памяти процессов <seconds>
|
||||
set default(temporary_allowed_total_memory_time_limit) 300
|
||||
|
||||
## Раскоментировать строки и прописать свои значения если
|
||||
## для Информационных Баз используются эти параметры
|
||||
#set default(infobase_user) "ib_user"
|
||||
#set default(infobase_pwd) "ib_password"
|
||||
|
||||
# цвета строк в таблице
|
||||
#set color(dark_table_bg) "#e2e2e2"
|
||||
#set color(light_table_bg) "#ffffff"
|
||||
set color(dark_table_bg) "#6f6f6f"
|
||||
set color(light_table_bg) "#424242"
|
||||
|
||||
|
||||
|
||||
|
||||
# Используемая тема
|
||||
# доступны: dark, clam, classic, default, alt
|
||||
set default(theme) dark
|
||||
|
@ -59,6 +59,13 @@ install -p -m644 lib/msg/*.* $RPM_BUILD_ROOT%_datadir/%name/lib/msg/
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed Sep 25 2019 Sergey Kalinin <svk@nuk-svk.ru> 1.1.0
|
||||
- Added new rac command options
|
||||
- Added HELP dialog
|
||||
- Moved configuration files according to XDG standard
|
||||
- Change 1c-srv.cfg format
|
||||
- Fixed some errors
|
||||
- Added translated method for table headers
|
||||
|
||||
* Thu Aug 15 2019 Sergey Kalinin <svk@nuk-svk.ru> 1.0.3
|
||||
- New server config
|
||||
|
142
rac_gui.tcl
142
rac_gui.tcl
@ -2,69 +2,83 @@
|
||||
# Tcl ignores the next line -*- tcl -*- \
|
||||
exec wish "$0" -- "$@"
|
||||
|
||||
package require msgcat
|
||||
|
||||
|
||||
######################################################
|
||||
# Rac GUI
|
||||
# 1C RAC (tm) grafical user interface
|
||||
# Distributed under GNU Public License
|
||||
# Author: Sergey Kalinin svk@nuk-svk.ru
|
||||
# Home page: https://bitbucket.org/svk28/rac-gui
|
||||
# Home page: https://nuk-svk.ru
|
||||
# Git repos: https://bitbucket.org/svk28/rac-gui
|
||||
#
|
||||
# version: 1.0.3
|
||||
# version: 1.1.0
|
||||
# release: 1
|
||||
#
|
||||
######################################################
|
||||
|
||||
|
||||
# определим текущую версию и релиз
|
||||
set f [open $argv0 "RDONLY"]
|
||||
while {[gets $f line] >=0} {
|
||||
if [regexp -nocase -all -- {version: ([0-9]+?.[0-9]+?.[0-9]+?)} $line match v1] {
|
||||
set racgui_version $v1
|
||||
}
|
||||
if [regexp -nocase -all -- {release: ([0-9]+?)} $line match v1] {
|
||||
set racgui_release $v1
|
||||
}
|
||||
}
|
||||
close $f
|
||||
|
||||
package require msgcat
|
||||
|
||||
# Устанавливаем текущий каталог
|
||||
set dir(root) [pwd]
|
||||
|
||||
# Устанавливаем рабочий каталог, если его нет то создаём
|
||||
set dir(doc) [file join $dir(root) doc]
|
||||
|
||||
# Устанавливаем рабочий каталог, если его нет то создаём.
|
||||
# Согласно спецификации XDG проверяем наличие переменных и каталогов
|
||||
if [info exists env(XDG_CONFIG_HOME)] {
|
||||
set dir(work) [file join $env(XDG_CONFIG_HOME) rac_gui]
|
||||
} elseif [file exists [file join $env(HOME) .config]] {
|
||||
set dir(work) [file join $env(HOME) .config rac_gui]
|
||||
} else {
|
||||
set dir(work) [file join $env(HOME) .rac_gui]
|
||||
}
|
||||
|
||||
if {[file exists $dir(work)] == 0} {
|
||||
file mkdir $dir(work)
|
||||
}
|
||||
# Проверяем старые конфиги и при наличии переносим
|
||||
if {[file exists [file join $env(HOME) .rac_gui]] ==1 && $dir(work) ne [file join $env(HOME) .rac_gui]} {
|
||||
cd [file join $env(HOME) .rac_gui]
|
||||
foreach f [glob -type f *] {
|
||||
if {![file exists [file join $dir(work) $f]]} {
|
||||
puts "File copy - [file copy $f $dir(work)]"
|
||||
file rename $f [list $f old]
|
||||
}
|
||||
}
|
||||
cd $env(HOME)
|
||||
#file rename -force [file join $env(HOME) .rac_gui] [file join $env(HOME) .rac_gui.old]
|
||||
file delete -force [file join $env(HOME) .rac_gui]
|
||||
tk_messageBox -message "[::msgcat::mc "All files from old working dir will be moved into new location:"]\n$dir(work)" -icon info -type ok
|
||||
}
|
||||
|
||||
|
||||
|
||||
puts "Work dir is $dir(work)"
|
||||
|
||||
# каталог с модулями
|
||||
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]
|
||||
file copy [file join $dir(root) rac_gui.cfg] [file join $dir(work) rac_gui.cfg]
|
||||
}
|
||||
source [file join $dir(work) rac_gui.cfg]
|
||||
|
||||
::msgcat::mclocale $default(locale)
|
||||
::msgcat::mcload [file join $dir(lib) msg]
|
||||
|
||||
# Код проверки наличия rac и правильности указания пути в конфиге
|
||||
# если программа не найдена то будет выведен диалог для указанием корректного пути
|
||||
# и этот путь будет записан в пользовательский конфиг
|
||||
if {[file exists $rac_cmd] == 0} {
|
||||
set rac_cmd "[tk_getOpenFile -initialdir $env(HOME) -parent . \
|
||||
-title [::msgcat::mc "Show where is a RAC command"] -initialfile rac]"
|
||||
if {$rac_cmd eq ""} {exit}
|
||||
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
|
||||
}
|
||||
}
|
||||
#puts $rac_cmd
|
||||
close $file
|
||||
close $orig_file
|
||||
#return "$host:$port"
|
||||
file delete [file join $dir(work) rac_gui.cfg.bak]
|
||||
if {$tcl_platform(platform) == "windows"} {
|
||||
tk_messageBox -message "[::msgcat::mc "Reexecute the programm"]!" \
|
||||
-icon info -type ok
|
||||
exit
|
||||
}
|
||||
} else {
|
||||
puts "Found $rac_cmd"
|
||||
}
|
||||
|
||||
set cluster_user ""
|
||||
set cluster_pwd ""
|
||||
@ -81,36 +95,32 @@ foreach modFile [lsort [glob -nocomplain [file join $dir(lib) *.tcl]]] {
|
||||
source [file join $dir(lib) gui.tcl]
|
||||
source [file join $dir(work) rac_gui.cfg]
|
||||
|
||||
CheckVariablesSet
|
||||
|
||||
# Читаем файл со списком серверов 1С
|
||||
if [file exists [file join $dir(work) 1c_srv.cfg]] {
|
||||
set f [open [file join $dir(work) 1c_srv.cfg] "RDONLY"]
|
||||
while {[gets $f line] >=0} {
|
||||
set l [split $line ","]
|
||||
set host [lindex $l 0]
|
||||
if {[lindex $l 1] ne ""} {
|
||||
set rac_cmd_for_host($host) [lindex $l 1]
|
||||
#set serversList [dict create servers]
|
||||
if [file exists [file join $dir(work) 1c_srv_new.cfg]] {
|
||||
set f_new [open [file join $dir(work) 1c_srv_new.cfg] "RDONLY"]
|
||||
set str ""
|
||||
while {[gets $f_new line] >=0} {
|
||||
append str " [string trim $line]"
|
||||
}
|
||||
.frm_tree.tree insert {} end -id "server::$host" -text "$host" -values "$host"
|
||||
if {$str ne ""} {
|
||||
set str [string map {"\{ " "\{" " \}" "\}"} $str]
|
||||
dict set servers_list servers $str
|
||||
close $f_new
|
||||
puts $servers_list
|
||||
puts [dict get $servers_list servers]
|
||||
dict for {host host_data} [dict get $servers_list servers] {
|
||||
.frm_tree.tree insert {} end -id "server::$host" \
|
||||
-text [dict get $host_data name] -values "$host"
|
||||
puts "$host > $host_data"
|
||||
puts [dict get $host_data name]
|
||||
set rac_cmd_for_host($host) [dict get $host_data rac_cmd]
|
||||
}
|
||||
} else {
|
||||
set servers_list ""
|
||||
}
|
||||
} else {
|
||||
set servers_list ""
|
||||
}
|
||||
|
||||
# set editor(fg) grey
|
||||
# set editor(bg) black
|
||||
# option add *Entry.Foreground $editor(fg) interactive
|
||||
# option add *Entry.Background $editor(bg) interactive
|
||||
# option add *Label.Foreground $editor(fg) interactive
|
||||
# option add *Label.Background $editor(bg) interactive
|
||||
# option add *Checkbox.Foreground $editor(fg) interactive
|
||||
# option add *Checkbox.Background $editor(bg) interactive
|
||||
# option add *Checkbutton.Foreground $editor(fg) interactive
|
||||
# option add *Checkbutton.Background $editor(bg) interactive
|
||||
# option add *Combobox.Foreground $editor(fg) interactive
|
||||
# option add *Combobox.Background $editor(bg) interactive
|
||||
# option add *Listbox.Foreground $editor(fg) interactive
|
||||
# option add *Listbox.Background $editor(bg) interactive
|
||||
# option add *TreeView.Background $editor(bg) interactive
|
||||
#option add *Treeview.Foreground red interactive
|
||||
# #option add *Frame.Background $editor(bg) interactive
|
||||
# option add *ScrollableFrame.Background $editor(bg) interactive
|
||||
# option add *ScrolledWindow.Background $editor(bg) interactive
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user