Newer
Older
///////////////////////////////////////////////////////////////////////////////////////////////////
// Прикладной интерфейс
Перем мНастройки;
Перем Лог;
Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт
ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Управление сеансами информационной базы");
Сосна Евгений
committed
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "Действие", "lock|unlock|kill");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-ras", "Сетевой адрес RAS, по умолчанию localhost:1545");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-rac", "Команда запуска RAC, по умолчанию находим в каталоге установки 1с");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-db", "Имя информационной базы");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,
"-db-user",
"Пользователь информационной базы");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,
"-db-pwd",
"Пароль пользователя информационной базы");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,
"-cluster-admin",
"Администратор кластера");
Сосна Евгений
committed
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,
"-cluster-pwd",
"Пароль администратора кластера");
Сосна Евгений
committed
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,
"-v8version",
"Маска версии платформы 1С");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,
"-lockmessage",
"Сообщение блокировки");
Сосна Евгений
committed
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,
"-lockuccode",
"Ключ разрешения запуска");
Сосна Евгений
committed
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,
"-lockstart",
"Время старта блокировки пользователей, время указываем как '2040-12-31T23:59:59'");
Сосна Евгений
committed
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,
"-lockstartat",
"Время старта блокировки через n сек");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,
"-try",
"Число попыток обращения по протоколу rac/ras");
Парсер.ДобавитьКоманду(ОписаниеКоманды);
КонецПроцедуры
Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт
ПрочитатьПараметры(ПараметрыКоманды);
Если Не ПараметрыВведеныКорректно() Тогда
Возврат МенеджерКомандПриложения.РезультатыКоманд().НеверныеПараметры;
КонецЕсли;
СерверАдминистрирования = Новый СерверАдминистрирования;
СерверАдминистрирования.Инициализация(мНастройки.АдресСервераАдминистрирования,
мНастройки.ПутьКлиентаАдминистрирования,
мНастройки.ИмяБазыДанных,
мНастройки.АдминистраторИБ,
мНастройки.ПарольАдминистратораИБ,
мНастройки.АдминистраторКластера,
мНастройки.ПарольАдминистратораКластера,
мНастройки.ИспользуемаяВерсияПлатформы,
мНастройки.КлючРазрешенияЗапуска);
СерверАдминистрирования.УстановитьСтатусБлокировкиСеансов(Истина, мНастройки.ВремяСтартаБлокировки, мНастройки.ВремяСтартаБлокировкиЧерез, мНастройки.СообщениеОблокировке, мНастройки.ЧислоПопыток);
ИначеЕсли мНастройки.Действие = "unlock" Тогда
СерверАдминистрирования.УстановитьСтатусБлокировкиСеансов(Ложь, мНастройки.ВремяСтартаБлокировки, мНастройки.ВремяСтартаБлокировкиЧерез, мНастройки.СообщениеОблокировке, мНастройки.ЧислоПопыток);
ИначеЕсли мНастройки.Действие = "kill" Тогда
СерверАдминистрирования.УдалитьВсеСеансыИСоединенияБазы(мНастройки.ЧислоПопыток);
Иначе
Лог.Ошибка("Неизвестное действие: " + мНастройки.Действие);
Возврат МенеджерКомандПриложения.РезультатыКоманд().НеверныеПараметры;
КонецЕсли;
Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
КонецФункции
Процедура ПрочитатьПараметры(Знач ПараметрыКоманды)
мНастройки = Новый Структура;
Для Каждого КЗ Из ПараметрыКоманды Цикл
Лог.Отладка(КЗ.Ключ + " = " + КЗ.Значение);
КонецЦикла;
мНастройки.Вставить("АдресСервераАдминистрирования", ПараметрыКоманды["-ras"]);
мНастройки.Вставить("ПутьКлиентаАдминистрирования", ПараметрыКоманды["-rac"]);
мНастройки.Вставить("ИмяБазыДанных", ПараметрыКоманды["-db"]);
мНастройки.Вставить("АдминистраторИБ", ПараметрыКоманды["-db-user"]);
мНастройки.Вставить("ПарольАдминистратораИБ", ПараметрыКоманды["-db-pwd"]);
мНастройки.Вставить("АдминистраторКластера", ПараметрыКоманды["-cluster-admin"]);
мНастройки.Вставить("ПарольАдминистратораКластера", ПараметрыКоманды["-cluster-pwd"]);
Сосна Евгений
committed
мНастройки.Вставить("ИспользуемаяВерсияПлатформы", ПараметрыКоманды["-v8version"]);
мНастройки.Вставить("КлючРазрешенияЗапуска", ПараметрыКоманды["-lockuccode"]);
мНастройки.Вставить("СообщениеОблокировке", ПараметрыКоманды["-lockmessage"]);
мНастройки.Вставить("ВремяСтартаБлокировки", ПараметрыКоманды["-lockstart"]);
мНастройки.Вставить("ВремяСтартаБлокировкиЧерез", ПараметрыКоманды["-lockstartat"]);
мНастройки.Вставить("ЧислоПопыток", ПараметрыКоманды["-try"]);
мНастройки.Вставить("Действие", ПараметрыКоманды["Действие"]);
Сосна Евгений
committed
КонецПроцедуры
Функция ПараметрыВведеныКорректно()
Успех = Истина;
Если Не ЗначениеЗаполнено(мНастройки.ИмяБазыДанных) Тогда
Лог.Ошибка("Не указано имя базы данных");
Успех = Ложь;
КонецЕсли;
Если Не ЗначениеЗаполнено(мНастройки.Действие) Тогда
Лог.Ошибка("Не указано действие lock/unlock");
Успех = Ложь;
КонецЕсли;
Если мНастройки.ЧислоПопыток <> Неопределено Тогда
Попытка
ПопыткиЧислом = Число(мНастройки.ЧислоПопыток);
Исключение
Лог.Ошибка("Параметр -try не является числовым.");
Успех = Ложь;
КонецПопытки;
Если Успех и ПопыткиЧислом <= 0 Тогда
ПопыткиЧислом = 1;
Лог.Предупреждение("Параметр -try не представляет собой число попыток. Он будет проигнорирован");
КонецЕсли;
Если Успех Тогда
мНастройки.ЧислоПопыток = ПопыткиЧислом;
Иначе
мНастройки.ЧислоПопыток = 1;
КонецЕсли;
Иначе
мНастройки.ЧислоПопыток = 1;
КонецЕсли;