175 lines
9.1 KiB
Plaintext
175 lines
9.1 KiB
Plaintext
&НаСервереБезКонтекста
|
||
Функция Соответсвие_АктивацияПинКода()
|
||
Р = Новый Соответствие;
|
||
Р.Вставить("Имя", "--first-name");
|
||
Р.Вставить("Отчество", "--middle-name");
|
||
Р.Вставить("Фамилия", "--last-name");
|
||
Р.Вставить("EMail", "--email");
|
||
Р.Вставить("Компания", "--company");
|
||
Р.Вставить("Страна", "--country");
|
||
Р.Вставить("Индекс", "--zip-code");
|
||
Р.Вставить("Город", "--town");
|
||
Р.Вставить("Регион", "--region");
|
||
Р.Вставить("Район", "--district");
|
||
Р.Вставить("Улица", "--street");
|
||
Р.Вставить("Дом", "--house");
|
||
Р.Вставить("Строение", "--building");
|
||
Р.Вставить("Квартира", "--apartment");
|
||
Р.Вставить("НомерЛицензии", "--serial");
|
||
Р.Вставить("НовыйПинКод", "--pin");
|
||
Р.Вставить("ПинКод", "--previous-pin");
|
||
Возврат Новый ФиксированноеСоответствие(Р);
|
||
КонецФункции
|
||
|
||
&НаСервере
|
||
Функция АктивироватьНаСервере()
|
||
Кавычка = Символ(34);
|
||
|
||
Реквизиты = Соответсвие_АктивацияПинКода();
|
||
ОбязательныеРеквизиты = СтрРазделить("НомерЛицензии,ПинКод,НовыйПинКод", ",");
|
||
|
||
СтрокаПараметров = "";
|
||
Для Каждого ТекРеквизит Из Реквизиты Цикл
|
||
ЭтоОбязательный = Не Неопределено = ОбязательныеРеквизиты.Найти(ТекРеквизит.Ключ);
|
||
|
||
ЗначениеРеквизита = ЭтаФорма[ТекРеквизит.Ключ];
|
||
|
||
РеквизитЗаполнен = ЗначениеЗаполнено(ЗначениеРеквизита);
|
||
ВыводитьРеквизит = ЭтоОбязательный ИЛИ РеквизитЗаполнен;
|
||
|
||
Если НЕ ВыводитьРеквизит Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
Если НЕ ЭтоОбязательный Тогда
|
||
ЗначениеРеквизита = СтрШаблон("%1%2%1", Кавычка, ЗначениеРеквизита);
|
||
КонецЕсли;
|
||
|
||
СтрокаПараметров = СтрокаПараметров + СтрШаблон(" %1 %2", ТекРеквизит.Значение, ЗначениеРеквизита);
|
||
КонецЦикла;
|
||
|
||
ФайлОтвет = "";
|
||
ФайлОшибок = "";
|
||
ИмяВременногоФайлаCMD = SPS_СоздатьСистемныйСкрипт(СтрШаблон("call ring license activate %1 --validate", СтрокаПараметров), ФайлОтвет, ФайлОшибок);
|
||
|
||
SPS_ВыводФайлаОшибок(ФайлОшибок);
|
||
фФайлОтвет = Новый Файл(ФайлОтвет);
|
||
Если НЕ фФайлОтвет.Существует() Тогда
|
||
ВызватьИсключение "Ошибка чтения результата";
|
||
КонецЕсли;
|
||
|
||
Текст = Новый ЧтениеТекста;
|
||
Текст.Открыть(ФайлОтвет, SPS_КодировкаФайлаОтвета());
|
||
стр = Текст.Прочитать();
|
||
Сообщить(стр);
|
||
Текст.Закрыть();
|
||
УдалитьФайлы(ФайлОтвет);
|
||
УдалитьФайлы(ИмяВременногоФайлаCMD);
|
||
Возврат стр;
|
||
КонецФункции
|
||
|
||
&НаКлиенте
|
||
Процедура Активировать(Команда)
|
||
АктивироватьНаСервере();
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||
Фамилия = Параметры.Фамилия;
|
||
Имя = Параметры.Имя;
|
||
Отчество = Параметры.Отчество;
|
||
Компания = Параметры.Компания;
|
||
email = Параметры.email;
|
||
Страна = Параметры.Страна;
|
||
Индекс = Параметры.Индекс;
|
||
Регион = Параметры.Регион;
|
||
Район = Параметры.Район;
|
||
Город = Параметры.Город;
|
||
Улица = Параметры.Улица;
|
||
Дом = Параметры.Дом;
|
||
Строение = Параметры.Строение;
|
||
Квартира = Параметры.Квартира;
|
||
КонецПроцедуры
|
||
|
||
&НаКлиентеНаСервереБезКонтекста
|
||
Функция SPS_ЭтоWindows()
|
||
СистемнаяИнформация = Новый СистемнаяИнформация;
|
||
Возврат СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86
|
||
Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64;
|
||
КонецФункции
|
||
|
||
&НаКлиентеНаСервереБезКонтекста
|
||
Функция SPS_КодировкаФайлаОтвета()
|
||
Возврат ?(SPS_ЭтоWindows(), Неопределено, КодировкаТекста.UTF8);
|
||
КонецФункции
|
||
|
||
&НаКлиентеНаСервереБезКонтекста
|
||
Функция SPS_СоздатьСистемныйСкрипт(Знач Команда, ФайлОтвет="", ФайлОшибок="")
|
||
Это_Windows = SPS_ЭтоWindows();
|
||
ИмяФайлаСкрипта = ПолучитьИмяВременногоФайла(?(Это_Windows, "cmd", "sh"));
|
||
|
||
Если ПустаяСтрока(ФайлОтвет) Тогда
|
||
ФайлОтвет = ПолучитьИмяВременногоФайла("txt");
|
||
КонецЕсли;
|
||
Если ПустаяСтрока(ФайлОшибок) Тогда
|
||
ФайлОшибок = ПолучитьИмяВременногоФайла("log");
|
||
КонецЕсли;
|
||
|
||
ТекстСкрипта = Новый ЗаписьТекста;
|
||
ТекстСкрипта.Открыть(ИмяФайлаСкрипта, ?(Это_Windows, КодировкаТекста.ANSI, КодировкаТекста.UTF8));
|
||
|
||
Если НЕ Это_Windows Тогда
|
||
// добавление Шебанг
|
||
//ТекстСкрипта.ЗаписатьСтроку("#!/bin/sh");
|
||
//ТекстСкрипта.ЗаписатьСтроку("");
|
||
|
||
// выбор языка вывода (для парсинга)
|
||
ТекстСкрипта.ЗаписатьСтроку("export LC_ALL=en_US.UTF8");
|
||
|
||
// избавляемся от call
|
||
Команда = СтрЗаменить(Команда, "call ring", "ring");
|
||
КонецЕсли;
|
||
|
||
// добавляем перенаправления вывода
|
||
Команда = СтрШаблон("%1 >%2 2>%3", Команда, ФайлОтвет, ФайлОшибок);
|
||
|
||
ТекстСкрипта.ЗаписатьСтроку(Команда);
|
||
ТекстСкрипта.Закрыть();
|
||
|
||
Возврат ИмяФайлаСкрипта;
|
||
КонецФункции
|
||
|
||
&НаКлиентеНаСервереБезКонтекста
|
||
Процедура SPS_ЗапуститьСистемныйСкрипт(Знач ИмяФайлаСкрипта)
|
||
Это_Windows = SPS_ЭтоWindows();
|
||
|
||
// добавляем интерпретатор чтобы запускать скрипт без "chmod +x"
|
||
ИмяФайлаСкрипта = СтрШаблон(?(Это_Windows, "cmd.exe /c %1", "/bin/sh %1"), ИмяФайлаСкрипта);
|
||
|
||
ЗапуститьПриложение(ИмяФайлаСкрипта, КаталогВременныхФайлов(), Истина);
|
||
КонецПроцедуры
|
||
|
||
&НаКлиентеНаСервереБезКонтекста
|
||
Процедура SPS_ВыводФайлаОшибок(Знач ИмяФайлаОшибок)
|
||
фФайл = Новый Файл(ИмяФайлаОшибок);
|
||
Если НЕ фФайл.Существует() Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Чтение = Новый ЧтениеТекста(ИмяФайлаОшибок, КодировкаТекста.ANSI);
|
||
Текст = Чтение.Прочитать();
|
||
Чтение.Закрыть();
|
||
|
||
Попытка
|
||
УдалитьФайлы(ИмяФайлаОшибок);
|
||
Исключение
|
||
;
|
||
КонецПопытки;
|
||
|
||
Если ПустаяСтрока(СокрЛП(Текст)) Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Сообщить(СтрШаблон("Ошибки: %1%2", Символы.ПС, Текст));
|
||
КонецПроцедуры
|