До старта конференции

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

Администрирование - Сервисные утилиты

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

Назначение:

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

Состав:

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

  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"); 
	
КонецПроцедуры

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

Исходный код

Исходный код можно найти в моем профиле на GitHub.(RhClient, RhServer_Windows, легкая реализация под Linux RhServer_Linux)

Обновление

Версия 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. Улучшение производительности передачи данных.

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

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

См. также

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

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

По поводу компоненты, в том контексте использования, что изначально реализовывал, это не даст никакого выигрыша. Но если рассматривать со стороны построения целой сети клиентов, то есть вы внедряете компоненту клиенту, которая активируется при запуске конфигурации. В итоге вы видите у себя, как обслуживающей организации, целую сеть клиентов, причем в разрезе Организаций, конфигураций и т.д. с возможностью подключения к каждой. Тогда конечно это имеет смысл. Такие пожелания у меня записаны, но на реализацию нужно время.
Сейчас я двигаюсь немного в другом направлении: передача звука, возможность организовать конференцию.
41. Юрий (as) 15.02.17 15:50 Сейчас в теме
Проект очень интересный. Подскажите исходный код где-то опубликован\планируется?
42. Геннадий Жаркой (ifal) 186 15.02.17 18:38 Сейчас в теме
(41) Исходный код не опубликован, но мысли такие есть.
Andry.Boris; +1 Ответить 1
43. Андрей Краснокутский (Andry.Boris) 53 15.02.17 22:09 Сейчас в теме
(42) Будем ждать... если можно киньте в лс.
44. Геннадий Жаркой (ifal) 186 19.02.17 15:49 Сейчас в теме
Выложен исходный код, ссылки в основной статье.
Andry.Boris; +1 Ответить 1
45. Андрей Краснокутский (Andry.Boris) 53 20.02.17 10:04 Сейчас в теме
(44) Спасибо, будем изучать...
46. Геннадий Жаркой (ifal) 186 20.02.17 11:18 Сейчас в теме
(45) Спрашивайте, по мере возможности, буду отвечать
47. Gregory Tsoraev (Bedazzled) 21.02.17 08:40 Сейчас в теме
есть ли проблемы при включенном UAC ?
48. Геннадий Жаркой (ifal) 186 21.02.17 10:29 Сейчас в теме
(47) На последней версии при запуске требуется повышение прав до уровня администратора, чтобы можно было без проблема производить установку ПО или системные настройки менять. При необходимости могу выложить версию (или сами соберите проект, исходный код доступен), которая запускается с правами пользователя, этого все равно будет достаточно для консультации в 1С.
49. Gregory Tsoraev (Bedazzled) 21.02.17 14:35 Сейчас в теме
ясно , спасибо этой версии достаточно
50. Данил Новиков (danil157) 13 10.04.17 11:49 Сейчас в теме
Добрый день. У клиентов при запуске, просит права администратора. как быть?
51. Геннадий Жаркой (ifal) 186 10.04.17 12:05 Сейчас в теме
(50) Есть такой момент, при необходимости вы можете пересобрать проект как вам надо, код открыт на github. Напиши в личку адрес, я вам отправлю версию, которая запускается под правами пользователя и не требует повышения привилегий.
52. Леонид Квит (Lyolik) 7 07.07.17 18:18 Сейчас в теме
Серверная часть не устанавливается на WIN 10 x64. Просит .NET Framework
Клиентская часть тоже ругается.
Прикрепленные файлы:
53. Геннадий Жаркой (ifal) 186 07.07.17 18:50 Сейчас в теме
(52) Именно так и написано в пункте Состав, без .net не будет работать. В системе есть хоть какая-нибудь версия .NET? По идее должна быть.
Оставьте свое сообщение