gifts2017

Удаленная консультация

Опубликовал Геннадий Жаркой (ifal) в раздел Администрирование - Сервисные утилиты

Простая и удобная удаленная консультация пользователей. Доступен демо-режим.

Назначение:

Удаленная консультация пользователей по интернету. Будет полезна на стадии внедрения разработок,  когда необходимо достаточно часто консультировать пользователей по функционалу приложения, а так же в период сопровождения клиента. Для тестирования функционала доступен демо-режим.

Состав:

Программный продукт состоит из двух частей:

  1. серверная часть, работающая в качестве службы  на Windows (SetupService.exe);
  2. серверная часть для операционной системы CentOS (rh_server);
  3. клиентское приложение (Удаленная консультация.exe), выполняющее соединение и управление.

Для работы приложений необходимо .NET Framework 2.0 и выше, что уже предустановлено в ОС Windows.

Серверная часть

Windows

Приложение устанавливается как служба «Сервер удаленной консультации», после установки службу необходимо запустить вручную. Служба работает на 45823 порту и ведет лог в журнале приложений. Ограничение на количество одновременно работающих пользователей 50 клиентов. Никаких привязок клиентов к компьютеру нет.  Служба принимает следующие параметры командной строки:

  1.  port - номер порта, на котором будет работать служба, пример port=80;
  2.  key - любая символьная строка, используется для запроса к службе по протоколу HTTP для получения списка активных пользователей в формате csv, key=12ff333d66ererd. Пример запроса, если сервис работает на 45823 порту: http://имя_сервера:45823/?key=12ff333d66ererd&command=list. На данный момент поддерживается одна команда list, выводящая список всех подключенных клиентов с переданными пользовательскими данными user_data.

Для задания параметров службы необходимо в реестре в ветке:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Remote Help Service  в параметре ImagePath дописать нужные параметры и перезапусть службу. Например для работы на 80 порту ключ ImagePath будет иметь вид: "C:\Program Files (x86)\Rh\Remote Help Service\RhService.exe" port=80

CentOS

Сервер выполнен в виде бинарного исполняемого файла и  принимает только один параметр port, например rh_server -port=80.

Клиентская часть

Взаимодействие между консультантом и пользователем осуществляется через клиентскую часть. Подключение к клиенту выполняет по номеру, который автоматически выдается при подключении к серверу. Номер к клиенту не привязывается. Из одного приложение можно выполнить подключение к одному клиенту. Клиентских приложений можно запустить неограниченное количество.

При клиентском взаимодействии можно управлять клавиатурой, мышью, обмен файлами и буфером обмена. Других функций нет. Функция обмена файлами поддерживает только обмен файлами за одну операцию.

Настройка качества передаваемого изображения представлена в двух вариантах настройках канала связи:

  1. нормальный (изображение с палитрой 8 bit). Данный вариант рекомендуемый;
  2. отличный (изображение с палитрой 16 bit).

Программа не сохраняет параметры подключения, для этого необходимо использовать параметры запуска. Эти же параметры можно использовать и при интеграции с 1С:

  1. ip – указывает сервер для подключения, пример, ip=localhost
  2. url - адрес страницы на доступном сайте, которая возвращает строку с адресом сервера для подключения, например, url=mysite/server. Возвращаемая строка должна иметь следующий вид:ip=myserver. Параметр ip имеет приоритет на url.
  3. client – параметры, указывает, что приложение запускается на клиенте, при этом все элементы на форме неактивны  и по окончании сеанса, клиентское приложение закроется автоматически. Пример, client=true;
  4. palette - определяет размерность палитры передачи данных, напрямую зависит от качества канала связи. Возможные параметры 8, 16. Пример, palette=8.
  5. resolution - определяет разрешение экрана, на которое будет отображаться экран клиента. Используются для сжатия изображения для более удобной работы. Нижнее ограничение 1024x768, верхнее ограничение - это исходное изображение экрана клиента. Пример, resolution= 1440x900
  6. mouse - определяет отрисовывать ли курсор клиента или нет. Если параметр не установлен, то курсор клиента  отрисовывается. Если значение false, то все изменения в состоянии курсора клиента отражаются на стороне консультанта в его текущем курсоре, то есть оба управляют одним курсором. Пример,  mouse=false. По умолчанию значение параметра true.
  7. mouse_move - определяет передавать ли данные о движении курсора на клиент. При низкоскоростном канале отключение данного параметра уменьшит нагрузку на канал связи. Пример,  mouse_move=false. По умолчанию значение параметра true, то есть данные о движении курсора передаются.
  8. user_data - любая последовательность символов, определяющих пользовательские данные. Данные затем можно получить командой list к серверу и использовать для анализа подключенных клиентов. Пример user_data="ФИО:Иванов Иван Иванович;ИНН=1122334455;Конфигурация:УТ 11"

В самой 1С делается внешняя обработка, добавляется макет с типом двоичные данные и загружается туда приложение. 

При использовании обычных форм добавляется событие ПередОткрытием в обработку со следующим кодом:

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

    Отказ = Истина;
    Макет = ПолучитьМакет("Имя макета с программой");
    Путь = ПолучитьИмяВременногоФайла("exe");
    Макет.Записать(Путь);
    // вместо localhost адрес вашего сервера
     ЗапуститьПриложение(Путь + " ip=localhost client=true");        

КонецПроцедуры

Для управляемых форм во внешнюю обработку добавляется метод ПриОткрытии, при этом модуль оформлен в соответствии правилами оформления внешних обработок:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Отказ = Истина;
	Адрес = ПолучитьАдресФайлаНаСервере();
	ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(Адрес);
	УдалитьИзВременногоХранилища(Адрес);
	
	Путь = ПолучитьИмяВременногоФайла("exe");
	ДвоичныеДанныеФайла.Записать(Путь);
	
	ЗапуститьПриложение(Путь + " ip=localhost client=true"); 
	
КонецПроцедуры

&НаСервере
Функция ПолучитьАдресФайлаНаСервере()
	
	ОбъектФормы = РеквизитФормыВЗначение("Объект");
	Макет = ОбъектФормы.ПолучитьМакет("Макет");
	Возврат ПоместитьВоВременноеХранилище(Макет, УникальныйИдентификатор);
	
КонецФункции

Демонстрационный режим

Доступен демо-сервер, для подключения можно использовать следующую командную строку для клиента ip=95.213.203.182 port=80. Так же по ссылке можно скачать демо версию клиента Удаленной консультации, который преднастроен на демо-сервер.

Поддержка

Все найденные ошибки в приложении будут оперативно исправляться.

Просьба к тем, кто столкнулся с ошибками в ПО, сообщать эту информацию. Так же приветствуются пожелания!

Обновление

Версия 2.1.2

Для обновления необходимо использовать новую версию клиента и сервера.

Изменения в версии:

1. Улучшена стабильность работы приложения.

Версия 2.1.1

Для обновления необходимо использовать новую версию клиента и сервера.

Изменения в версии:

1. Улучшена скорость передачи изображения.

Версия 2.1.0

Для обновления необходимо использовать новую версию клиента.

Изменения в версии:

1. Исправлена ошибка при эмулиции нажатия клавиш;

2. Добавлены примеры внешних обработок.

Версия 2.0.0

Для обновления необходимо использовать новую версию клиента и сервера.

Изменения в версии:

1. Добавлена возможность обмена файлами.

2. Убрана поддержка RDP Encoder Mirror Driver.

3. Улучшена работа буфера обмена между клиентами.

Версия 1.3.3

Для обновления необходимо использовать новую версию клиента и сервера.

Изменения в версии:

1. Добавлен параметр запуска сервера key, с помощью которого можно посылать команды серверу (list).

2. Добавлен на клиенте параметр user_data, определяющая последовательность пользовательских данных.

Версия 1.3.2

Для обновления необходимо использовать новую версию клиента.

Изменения в версии:

1. Добавлен в клиенте параметр, отвечающий за передачу координат курсора. Если установить значение в false, то координаты не передают, что уменьшает нагрузку на канал. Рекомендуется использовать при низкоскростном канале.

Версия 1.3.1

Для обновления необходимо использовать новую версию клиента.

Изменения в версии:

1. Добавлен в клиенте параметр, отвечающий за показ отрисовки курсора клиента (mouse), по умолчанию данных параметр установлен в true. Если установить значение в false, все изменения в состоянии курсора отражаются на текущем курсоре консультанта.

Версия 1.3

Для обновления необходимо переустановить службу и использовать новую версию клиента.

Изменения в версии:

1. Добавлен параметр для работы службы на определенном порту;

2. Исправлены ошибки в клиенте при масштабировании рисунка;

Версия 1.2

Для обновления необходимо использовать только новую версию клиента.

Изменения в версии:

1. Добавлена возможность динамически масштабировать изображения в момент работы, изменяя размер рабочего окна.

Для этого добавлен переключатель в рабочем окне, который имеет два состояния: масштаб исходный (картинка имеет исходный размер клиента), масштаб по ширине (картинка масштабируется по ширине рабочего окна, изменяя размер окна, картинка подстраивается под размер).

2. Добавлен параметр командной строки url.

Версия 1.1

Для обновления необходимо переустановить службу (удалить старую и установить новую) и использовать новую версию клиента.

Изменения в версии:

1. Добавлена поддержа mirror driver (RDP Encoder Mirror Driver) для Windows Vista, Windows 7 и некоторые версии Windows Server;

2. Добавление масштабирование изображения под нужное разрешение;

3. Улучшение производительности передачи данных.

Скачать файлы

Наименование Файл Версия Размер
Удаленная консультация 76
.zip 1,48Mb
01.08.16
76
.zip 2.1.2.0 1,48Mb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Сергей Боровик (BorovikSV) 26.07.15 20:26
Используется mirror драйвер для захвата изображения?
2. Геннадий Жаркой (ifal) 26.07.15 22:12
Нет. Обычный gdi. Этого достаточно для консультации при работе с 1С. Скорости хватает на 8bit изображении на современных компьютерах, основное замедление будет вносить задержка сети при обращении к серверу (ping)
3. Maxim Kolkin (the1) 27.07.15 11:08
Киллер Тимвьювера!
KonstB; GreenDragon; mi4asib; skiller3000; AlexB.; dassin; Bolik13; simich; +8 Ответить
4. Геннадий Жаркой (ifal) 27.07.15 12:58
Никто вам не мешает покупать профессиональные программные продукты с широким спектром функционала. Моя утилита практически бесплатна и для конкретной узкой задачи.
5. Maxim Kolkin (the1) 28.07.15 09:51
(4) ifal, так я же только за! Дорабатывайте свой продукт и выходите на рынок. Мы все от этого только выиграем.
6. Maximilian Alekseevich (1cmax) 28.07.15 22:21
Кто хостит проброс vpn тунеля?
7. Геннадий Жаркой (ifal) 29.07.15 00:57
(6) 1cmax, ПО состоит из двух частей: сервера и клиента, где будет стоять сервер и поверх чего будет работать не важно лишь бы его ip и порт были доступны для клиента.
8. Престиж Полякова (prestige) 29.07.15 09:25
Глупый вопрос - а зачем в 1С что-то добавлять? Без этого разве нельзя? И еще вопрос - а у клиента тоже NET Framework 2.0 нужен?
9. Денис Лопато (Terve!R) 29.07.15 10:33
(8) prestige, кажется не обязательно в 1С добавлять, а можно просто сделать ярлык для запуска и прописать там, например, "D:\Rh.exe ip=74.125.77.147 client=true"
10. Геннадий Жаркой (ifal) 29.07.15 10:36
(8) prestige, добавив в 1с, удобно пользоваться. Можно и не добавлять. У клиента тоже должен быть . NET 2.0 и выше, но это не проблема он уже предустановлен или его более старшая версия и есть на Win XP.
11. Евгений Игронов (cj512) 29.07.15 11:00
+, добавить бы еще масштабирование и полноэкранный режим, но для начала неплохо )
12. Геннадий Жаркой (ifal) 29.07.15 13:30
(11) cj512, Спасибо. Утилиту делал для себя и предполагалось, что разрешение экрана у разработчика (консультанта) не хуже чем у клиентов, так и было, поэтому вопрос с масштабированием не стоял, но сделать можно.
13. Геннадий Жаркой (ifal) 01.08.15 00:39
Обновление сборки, версия 1.1 (описание в основной статье).
14. Геннадий Жаркой (ifal) 12.08.15 10:15
Обновление сборки, версия 1.2 (описание в основной статье)
15. Александр Бланк (AlexB.) 22.08.15 16:21
Удобная штука, но иногда, при подключении к клиенту вижу только черный экран, когда закрываю окно, у клиента остается висеть процесс жрущий 100% ядра.
16. Геннадий Жаркой (ifal) 24.08.15 09:57
(15) AlexB., Обновил сборку, скачайте, по идее вам оттуда нужен только клиент. Есть кое-какие изменения, по удобству работы, например, рабочее окно сразу работает в режиме масштабирования, изменяя размер окна, картинка подстраивается пропорционально изначальным размерам изображения.
17. Геннадий Жаркой (ifal) 27.08.15 14:48
Обновление сборки, версия 1.3 (описание в основной статье)
18. Гость 15.09.15 14:29
Программный код открыт ? или есть возможность получить исходники программы?
19. Геннадий Жаркой (ifal) 15.09.15 19:36
(18) Гость, программный код закрыт, пока не открываю.
20. Максим Моисеев (m.s.moiseev) 15.09.15 20:34
защиту гилевских курсов можно обойти это супер программой?)
21. Геннадий Жаркой (ifal) 16.09.15 08:24
(20) m.s.moiseev, назначение программы описано в первом абзаце, для других вещей лучше использовать специализированные программы.
22. Александр Бланк (AlexB.) 06.10.15 14:39
(16) ifal, Помогло, спасибо, отличное решение для сопровождения своих клиентов.
23. Александр Бланк (AlexB.) 09.10.15 02:42
Периодически отваливается управление мышкой и клавиатурой в удаленном сеансе, возможно дело в нестабильной связи. Картинку я вижу нормально, вижу все что пользователь делает, но сам не могу управлять.
24. Геннадий Жаркой (ifal) 07.11.15 09:49
(23) AlexB., На последних версиях с параметрами уменьшающими нагрузку на канал описанная вами проблема наблюдается?
25. ARTEM SEMENKOV (MORT32Ram) 05.05.16 09:40
Здравствуйте. Очень хорошее дело делаете. Подскажите пожалуйста, на какой порт происходит соединение с клиентом? Я так понял порт указываемый в программе относится к серверу, а на какой порт идет подключение к клиенту? Или я ошибаюсь?
26. Геннадий Жаркой (ifal) 05.05.16 11:26
(25) MORT32Ram, Весь обмен данными идет по порту, который указан на сервере, по умолчанию 45823, соответственно клиент открывает этот порт отправляет и получает данные по этому порту. Обычно фаерволами закрываются разные нестандарные порты, поэтому на сервере вы можете указать скажем 80 порт и соответственно на клиенте будет использовать тот же порт, как это указать в статье написано, если все-таки не получается настроить, то я готов помочь, пишите в личку.
27. ARTEM SEMENKOV (MORT32Ram) 20.05.16 11:11
(26) ifal, Все работает, программа отличная, тестируем, юзаем. Единственное это передача файлов, так и не получилось передать клиенту файл 1cv8.cdn у которого содержимое текст, просто обрывается, ошибок никаких не выдает.
28. Геннадий Жаркой (ifal) 20.05.16 11:40
(27) MORT32Ram, Действительно при передачи файла, если возникает ошибка, то программа просто сбрасывает передачу. Это практически всегда связано с ошибкой доступа к файлу, например, не хватает прав или еще что-то. В данном случае, 1Cv8.cdn - это файл блокировки файловой базы 1С, и программа удаленной консультации не может получить к нему доступ на чтение.
29. ARTEM SEMENKOV (MORT32Ram) 30.05.16 09:01
(28) ifal, Конкретно в тот момент 100% проблема не с доступом, перекидывать пробовал со своего компа на клиентский, что бы выгнать пользователей из файловой базы. Наверное было бы немного удобнее если бы выводилось хотя бы краткое описание ошибки.
30. Геннадий Жаркой (ifal) 30.05.16 10:37
31. ARTEM SEMENKOV (MORT32Ram) 06.06.16 09:16
Отличнейшая утилита, уже всем офисом юзаем. Неожиданно работает очень шустро и стабильно, по ощущениям стабильнее некоторых коммерческих программ. Респект автору.
32. Геннадий Жаркой (ifal) 06.06.16 11:19
(31) MORT32Ram, Спасибо. Справедливости ради стоит отметить, что выигрыш может идти из-за того, что ваш сервер к вам ближе и уменьшает задержку передачи данных по сети.
33. ARTEM SEMENKOV (MORT32Ram) 06.06.16 11:28
(32) ifal, Многие клиенты достаточно далеко. Но вообще, безусловно, это тоже влияет.
34. Змей Змеевич (Zmey_72) 12.08.16 10:20
А еще бы было хорошо сделать инсталлятор для клиентов, который настраивает клиенту адрес сервера. При запуске в поле сервер стоит локалхост, а нужно бы предустановленнный сервер в интернете или п локальной сети
35. Геннадий Жаркой (ifal) 12.08.16 11:51
(34) Zmey_72, сейчас это можно сделать только через задания параметров запуска приложения ip = нужный адрес, на скриншотах есть пример.
36. Андрей Краснокутский (Andry.Boris) 03.12.16 22:55
Геннадий день добрый! попробовал вашу демо версию клиента Удаленной консультации - изображение вижу отлично а мышкой ничего сделать не могу. в чем может быть проблема. связь отличная.
37. Геннадий Жаркой (ifal) 04.12.16 00:27
(36) возможно, что на клиенте жесткая политика безопасности, и, например, UAC запрещает эмулировать мышь. Чтобы это проверить попробуйте на клиенте от имени администратора запустить.
38. Alexandr Mal (zaoproxy) 05.12.16 07:19
Разработка очень интересная и думаю будет востребована. Но есть над чем работать.
Предложения по улучшению:
1. добавить в настройки параметр по автоматическому подключению к клиенту. Т.е. на данный момент выходит вопрос про разрешение на подключение.
2. при использовании в удалённых рабочих столах работает до тех пор, пока сам rdp активен и имеет визуальное отображение на экране. как только стол сворачиваем, управление становится не возможным
3. на мой взгляд самое значительное: при запуске любых приложений где требуется подтвердить выполняемое действие (контроль учетных записей) изменений на экране не видно и как следствие нет возможности подтвердить или отменить запуск
4. было бы не плохо организовать простой текстовый час с удалённым компом
5. не понятно есть ли передача комбинаций клавиш, ну например ctrl+alt+break. если нет - то тоже нужно

Удачи в разработке!
39. Alexandr Mal (zaoproxy) 05.12.16 07:29
В догонку: если мы речь ведем про поддержку 1С, то почему бы не добавить возможность использования в качестве внешней, нативной компоненты
40. Геннадий Жаркой (ifal) 05.12.16 08:37
(38) Спасибо за содержательные комментарий! Этого не хватает =)
Все описанные вам пункты понятны, кроме 5-ого, так как это должно работать.
То, что вы отметили, это уже не просто консультация клиента (скачал, запустил и закрыл программу), это полноценное администрирование удаленного компьютера (кроме 4-ого пункта), тут требования к безопасности программы жестче, а так же обязательна будет нужна установка программы в качестве службы и работы от системной учетной записи.

По поводу компоненты, в том контексте использования, что изначально реализовывал, это не даст никакого выигрыша. Но если рассматривать со стороны построения целой сети клиентов, то есть вы внедряете компоненту клиенту, которая активируется при запуске конфигурации. В итоге вы видите у себя, как обслуживающей организации, целую сеть клиентов, причем в разрезе Организаций, конфигураций и т.д. с возможностью подключения к каждой. Тогда конечно это имеет смысл. Такие пожелания у меня записаны, но на реализацию нужно время.
Сейчас я двигаюсь немного в другом направлении: передача звука, возможность организовать конференцию.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа