[Из песочницы] Как я писал свой VNC, а потом нет
0. Предыстория
Так получилось, что несколько раз я порывался написать что-то на замену teamviwer для себя, каждый раз поднимал этот вопрос во внутреннем форуме своей головы при очередной необходимости покупать дополнительный канал своим «инженерам».
Что такое vnc и что такое teamviwer/rms/ammyy никому объяснять уже давно не надо, какие варианты «поднятия» своего аналога тут тоже поднимались не один раз, в самом простом варианте это скрипт для обратного подключения на проброшенный порт, я не знаю почему этот вариант не подходит многим, в т.ч и мне, но мне всегда казалось, что написать что-то своё — не сильно и сложно. С этой мыслью я потратил целый год в режиме работы в свободное время над своей «реализацией». Обозвал её «Визит».
Многих кто мне писал на почту и в личку на нескольких ресурсах волновал вопрос, в чем мой «интерес», «как же так» и тому подобное… В общем-то, я всем отвечал честно, что это чистый энтузиазм и решение нескольких своих задач, первая, это все же создание какого-то бюджетного аналога, второе — я мечтал стать программистом (хоть каким-то), а практику как-то получать надо.
В процессе решения этой большой задачи, я получил общие представления о многопоточности, объектах синхронизации, сетевой подсистемы со стороны программы и много другого интересного и не очень. Если эта часть интересна, я могу выкинуть куски кода с описанием проблем которые я решал.
В конечном счете я получил что-то более-менее рабочее, но так как средой разработки был выбран «c builder 6» появилась проблема поддержки и выявления ошибок. С чем связан такой оригинальный выбор? Человеческая лень, в универе мы учились на нем, на нем я написал курсовую работу — мессенджер, вот я и взял свой мессенджер и «дописал», даже имя внутреннее где-то проскальзывало — vaim(инициалы и Instant Messenger).
Время шло, ошибки скапливались, я наконец-то переехал в другую страну, устроился программистом и вроде бы все хорошо. Но появилась потребность «поизучать» golang и конечно подопытным кроликом был выбран мой «любимый» проект, благо, на своей же родине потребность в подобном никогда не исчезала.
Но в этот раз было решено пересмотреть принцип работы кардинально: уже существует десяток готовых реализаций VNC, зачем же будем отнимать у них хлеб (почему сразу я так не думал…)? Давайте сделаем просто «коммутатор», этого хватит закрыть свою задачу и помочь другим.
Так появился reVisit. Здесь я хочу Вам рассказать как с ним можно работать и возможно запустить свой сервер. Это конечно не конечная реализация и я уверен, что что-то где-то упустил. Знаю, что у людей вокруг опыта больше, поэтому может немного критики будет уместно.
1. Quick Support
И так, для работы в режиме qs достаточно запустить клиент, он скачает vnc по-умолчанию, распакует в temp и запустит сервер в режиме прослушивания с localhost. Далее для подключения мы используем id и пароль. Пароль проверяется на стороне клиента, сервер такие данные не хранит.
2. Создание учетной записи
Это удобно если есть необходимость периодически подключаться к одним и тем же компьютерам. Для создания указываем в верхнем поле над кнопкой регистрации свой e-mail и через мгновение придет пароль на Ваш почтовый ящик. Теперь используя эту комбинацию, мы можем войти.
2.1 Создание, редактирование, удаление, управление
Ничем особенным не отличается создание и редактирование своего списка от остальных программ под систему windows, щелкнули правой кнопкой мыши и из всплывающего меню выбрали то что нас интересует, при этом можно создавать не только группы, но и подгруппы (не понимаю почему до сих пор не реализовано в других менеджерах). Есть над списком контактов строка для поиска.
2.2 Смена версии VNC
При этом в списке контактов по-мимо редактирования данных самого контакта можно поменять vnc на удаленной системе из доступных на нашем сервере, этот пункт называет «Управление». Для смены своей же версии эту панель можно достать из «Управления» в traybar.
3. Запуск своего сервера
Можно использовать исходники на github и скомпилировать под linux, убрать/исправить/добавить и получить свою версию, но нужно будет туда так же добавить информацию о vnc(её можно взять и из готовой сборке). А можно использовать готовый bundle, поменяв только настройки для smtp сервера, именно через эту учетку будут отправляться пароли для новых профилей. И запускать клиент с аргументом -server 1.2.3.4, после первого запуска создается файл с настройками и адрес сохранится там.
Вот и всё, всем спасибо!