Giter Club home page Giter Club logo

remotesupporttool's Introduction

Remote Support Tool 1.1.2

Remote Support Tool is an easy single click solution for remote maintenance.

This project started initially as a VNC launcher inspired by UltraVNC Single Click and Gitso. For a more consistent platform support and better compatibility the software was completely rewritten in Java and the requirement of any third party VNC software was dropped.

Remote Support Tool provides a graphical interface for both sides of a remote support session:

  • Customer Support Tool is started by the customer, who likes to provide access on his desktop for a support staff.

  • Staff Support Tool is started by the support staff in order to access the customers desktop remotely.

Because both sides of a support session are covered by Remote Support Tool, the software uses its own protocol for communication between customer and staff. The application is currently not compatible with other VNC based software.

About this program

Motivation

Remote administration is common practice in software support for end users. There are a lot of different solutions on the market, that can solve this task. But most of them are lacking at least in one of these requirements:

  • The end user should be able to start the remote administration session with as few clicks as possible.

    • No complex installation procedure should be required. The end user just has to download a single file and start it.

    • The end user often sits behind a router / NAT and should not bother with port forwarding. On one hand this is quite complicated process for an end user and on the other hand it is a possible security risk to open local ports to the internet.

  • The remote maintenance session should be completely private and secure.

    • All transferred data has to be encrypted - especially when it is sent over the internet

    • Most commercial solutions are initiating (or even routing) the traffic through their own servers. This can become a privacy problem - especially if the servers are located in countries with loose data privacy policies.

  • All major operating systems for desktop PC's should be supported.

  • Support for different languages - because not all end users speak English.

Because we did not find a solution that fits all of these requirements, we've decided to build our own solution to fit this gap. From a customer perspective this application behaves similar to the UltraVNC Single Click solution - but it also provides encryption and supports Linux and macOS.

In addition, we wanted to make this program customizable for other companies. A company may compile a custom configuration into the application. This makes it possible to provide a single executable file for the end users, that contains all required configurations by default.

Customer Support Tool

dialog for customers

From the customer perspective the software is as simple as possible. Only a hostname / IP address and port number has to be provided in order to share the screen with the support staff. If the customer uses multiple monitors, he also might select which screen he likes to share.

A company, that offers remote support, can create its custom preconfigured build of this software, that provides all necessary settings by default. In this case the customer will just have to click the Connect button after starting the application. According to our goal this is the easiest solution possible from the customer perspective.

Staff Support Tool

dialog for support staff

At minimum the support staff only has to provide a port number, on which the customer will connect. If the customer is connecting through the internet, SSL encryption is recommended. In order to avoid problems with port forwarding in the local router, the support staff might also enable SSH tunneling (SSH remote port forwarding).

Features

  • support staff can remotely access the customers screen
    • send keyboard and mouse inputs to the customer for remote control
    • screen is transferred with JPG compression
    • only changed regions of the screen are transferred
  • private and secure
    • integrated SSL encryption
    • integrated SSH tunneling (remote port forwarding) in order to avoid any changes to the router settings
    • ssh authentication via password or public key
  • simple to use
    • no external dependencies required
    • integrated OpenJDK runtime environment
    • single file launchers; just download and start the application
    • signed application bundle for macOS
  • cross platform
    • support for Windows
    • support for macOS
    • support for Linux
  • multilingual
    • available in English & German
    • translatable in other languages if necessary
  • customizable
    • provide the necessary default settings to make the application as easy as possible to use for the customer
    • add your company logo as a branding
  • business friendly Open Source license (Apache License 2.0)

Planned features

see full list of proposed enhancements

Supported operating systems

  • Windows (7 or newer, 32bit & 64bit)
  • Mac OS X (10.9 or newer)
  • Linux (i386 / amd64)

Notes about Windows

Due to a restriction in the Windows operating system the customer's desktop does not allow any interaction, if an application with administrative privileges is currently running. In this case the customer either has to close the administrative application or needs to start Customer Support Tool with administrator privileges.

Notes about macOS

Starting with macOS Mojave (10.14) the customer explicitly needs to allow access to the application after the support session was started. The same applies to other remote support software like TeamViewer. They've described the necessary steps on their Knowledge Base page.

Notes about Linux

Currently the support session is not working for customers using Wayland. Currently it is not widely used yet. Fortunately most Linux distributions still use X.org - but for example Fedora is already shipping Wayland in its default installation. We're trying to find a solution for this problem as soon as possible (see issue #24).

Translations

Remote Support Tool is developed in English and is translated into German language. The configuration documentation contains information about how to translate the application for yourself. Feel free to send your translation files to us.

Documentation

You can find documentations about Remote Support Tool in the project wiki.

Support

We are providing professional support for Remote Support Tool in case you can't or don't want to customize the application for yourself.

License

This application is licensed under the terms of the Apache License 2.0. Take a look at LICENSE.txt for the license text.

Third party components

The following third party components are bundled into the application (in alphabetical order):

We especially like to thank BellSoft for providing the high quality OpenJDK builds, that are bundled with this application.

Further information

remotesupporttool's People

Contributors

pinhead84 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

remotesupporttool's Issues

Provide sh application launcher for macOS

As an alternative to the signed application bundle, we can also provide a shell script for macOS systems, that extracts and launches the application (via Makeself) - similar to the provided Linux scripts.

The macOS operating system currently executes shell scripts without being signed by Apple. No paid developer account is required in this case.

Also a shell script can easily be downloaded and started with a one liner on the terminal:

curl -o support.sh https://mywebsite.com/CustomerSupportTool.sh && sh support.sh && rm -f support.sh

Proxy

Some customers have proxy servers. Would be nice if the client would provide proxy settings and could connect through it.

Window opens off the screen.

I am not sure how to debug this. I have some experience with C#, but none with TCL. The window location is off the screen on my multi monitor setup when I launch the application. I am not sure where to even begin making those modifications since for the most part the TCL seems to be a bundling script as opposed to a full programing language

Wrong screen information shown in customer tool

If multiple monitors are used on Linux systems, the customer tool shows wrong screen information in the screen selection field. The resolution of monitor A is shown, if monitor B is selected. The user might select the wrong screen because of the wrong / misleading information.

I'm not sure, if this happens in any case and for all operating systems - but GraphicsDevice#getDisplayMode() undoubtably returns wrong values in certain situations. Therefore we're not calling this method in the future and extract screen information via GraphicsDevice#getDefaultConfiguration() instead, which returns the expected values.

1:1 screen size option

Sometimes the costumers screen resolution is bigger than that of the staff.
In this case the screen is resized to fit the staff resolution at the moment.
It would be nice if there would be an on/off 1:1 option in the staff window during a remote session to switch to costumer resolution and to add scroll bars in the staff window to enable navigation.

Hide connection settings in Customer Tool via configuration

The following application properties should be integrated into Customer Tool:

  • connectionSettingsVisible (true / false) to hide the connection settings from the customer on startup
  • connectionSettingsEditable (true / false) to disallow changing the connection settings for the customer

In case of connectionSettingsVisible=false and connectionSettingsEditable=true a button should be available, that makes the hidden connection settings visible for the customer.

Wrong mouse position on multi monitor setups

The position of the mouse cursor send by the staff is not properly shown on the customer's machine, if the customer uses multiple monitors.

We were able to reproduce this problem for Linux customers with a multi monitor setup provided by the Nvidia graphics driver. It's currently not clear, if the same problem occurs in other scenarios (Xinerama on Linux or generally on other operating systems). Further investigation is required.

Rework transfer of keyboard inputs

Processing keyboard inputs in the customer application during a support session is kind of tricky. Simple ASCII characters can be printed without problems - but language and platform specific characters (e.g. German umlauts or backslash on Windows) are difficult to handle - especially if staff and customers use different operating systems with different keyboard layouts.

In version 1.0.0 we've misused the system clipboard in order to transfer unicode characters (as described here). On Windows customers we also used a workaround based on the numeric keypad.

The clipboard workaround leads to certain problems - especially for Linux and macOS customers (where the numeric keypad workaround doesn't work). If the currently focused application doesn't support the CTRL+V (or META+V) keyboard shortcut, the text is not properly inserted. Much worse, if the focused application implements other behavior on this keyboard shortcut, it might not be possible to use the focused application at all. The macOS terminal application and most Linux console applications are not working as expected because of this.

Therefore we've decided to rework keyboard inputs completely. Instead of typing characters with the Robot API we're directly calling the native API of the customers operating system via JNA.

If these API calls fail, the application will fallback to a less compatible solution (numeric keypad on Windows or the Robot API). This makes the application still usable but some special / unicode characters may not be transferred properly. Using the "copy to clipboard" feature from the staff application might circumvent those problems.

Support tool is 1-1 or 1-N

Hello sir

Can you tell me is this Software works for more than 1 client and support staff or 1 to many or many to 1 .Can you tell me please

More customization

First of all thank for your awesome project, my issue is how add more host and port fields and the possibility to substitute iP by a number or name.

Set awtAppClassName for Gnome / Ubuntu Unity

For a better integration in Gnome / Ubuntu Unity we should set the sun.awt.X11.XToolkit.awtAppClassName class variable for the applications. Unfortunately this requires an ugly hack, because this variable declared private. Hopefully the OpenJDK guys will find a solution for this in the future.

Switch from MIT to Apache License 2.0

With the migration to Java (see #9) we're going to change the license from MIT to Apache 2.0. This should not make a huge difference for the users. But because all of our Java based projects are licensed with Apache 2.0, we like to have some sort of consistency here.

Automatic reconnection

It would be great to have an optional reconnect feature.
I have customers who starts the connections once and leave the window open for me to work for a longer period alone. If the connection is dropped because of some network glitch, the customer has to manually reconnect at the moment. This takes time and causes work interruptions. It would be great to have on option "Automatic reconnect" in the client GUI. The client watches if the connection is down, and it reconnects automatically to the Staff Tool when the checkbox is checked and of course the client GUI is still running.

compile the application

error while compile
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3. 8.0:compile (default-compile) on project RemoteSupportTool-Core: Fatal error com
ERRORGIT

Switch between monitors during a support session

If the customer (server) uses multiple monitors, he can select which monitor to share before the support session is started. Currently this cannot be changed after the support session was started.

It would be a nice addition, if the customer (server) or support staff (client) would be able to switch to another monitor while the support session is running.

Migrate to Tcl/Tk & OpenSSH

Unfortunately our current PyInstaller based build system has some downsides. After spending a lot of time and frustration we were still not able to produce application binaries anymore on certain systems. Due to our limited time and lack of knowledge about the internals of PyInstaller we were not able to track down the cause of the problem.

Therefore we've decided to migrate the application from Python to Tcl/Tk. This allows us to implement an easier and more flexible build system. Based on precompiled tclkit binaries it is possible to cross compile the application for all supported target systems on a single machine without any hassle.

Besides the application itself all build scripts were ported from Bash & Batch to Tcl/Tk. This means, that we don't need to provide separate build scripts for Windows anymore. The build scripts can be used on every operating system with an installed Tcl environment. If that is not possible, one might also use one of the provided tclkit binaries in order to execute the build scripts.

Unfortunately there is no comparable alternative to Paramiko available for Tcl. Therefore we're using OpenSSH for SSH tunneling. Linux and Mac OS X are providing OpenSSH out of the box. For Windows systems we've integrated the binaries provided by mls-software.com.

Urls in openjdk init* scripts wrong

The urls to AdoptOpenJDK in the openjdk init scripts did not work. Please find the working ones in the diff.
A nice enhancement would be if the init scripts would check the exit value of curl for easy and obvious detection of changing urls in the future.

diff --git a/release/share/openjdk/init-linux64.sh b/release/share/openjdk/init-linux64.sh
index ea7ca59..c06bbdb 100755
--- a/release/share/openjdk/init-linux64.sh
+++ b/release/share/openjdk/init-linux64.sh
@@ -25,7 +25,8 @@

-----------------------------------------------------------------------

TARGET="linux64"
-TARGET_JDK="https://github.com/AdoptOpenJDK/openjdk10-releases/releases/download/jdk-10.0.2%2B13/OpenJDK10_x64_Linux_jdk-10.0.2.13.tar.gz"
+TARGET_JDK="https://github.com/AdoptOpenJDK/openjdk10-releases/releases/download/jdk-10.0.2%2B13/OpenJDK10_x64_Linux_jdk-10.0.2+13.tar.gz"

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
DOWNLOADS_DIR="$DIR/downloads"
diff --git a/release/share/openjdk/init-windows64.sh b/release/share/openjdk/init-windows64.sh
index 95bc9fb..89dd620 100755
--- a/release/share/openjdk/init-windows64.sh
+++ b/release/share/openjdk/init-windows64.sh
@@ -25,7 +25,8 @@

-----------------------------------------------------------------------

TARGET="windows64"
-TARGET_JDK="https://github.com/AdoptOpenJDK/openjdk10-releases/releases/download/jdk-10.0.2%2B13/OpenJDK10_x64_Windows_jdk-10.0.2.13.zip"
+TARGET_JDK="https://github.com/AdoptOpenJDK/openjdk10-releases/releases/download/jdk-10.0.2%2B13/OpenJDK10_x64_Win_jdk-10.0.2+13.zip"

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
DOWNLOADS_DIR="$DIR/downloads"
diff --git a/release/share/openjdk/init.sh b/release/share/openjdk/init.sh
index f3a8c75..c1a47e1 100755
--- a/release/share/openjdk/init.sh
+++ b/release/share/openjdk/init.sh
@@ -39,7 +39,7 @@ case "$SYSTEM" in
case "$SYSTEM_ARCH" in
x86_64)
echo "Initializing Linux 64bit environment..."

  •      SYSTEM_JDK="https://github.com/AdoptOpenJDK/openjdk10-releases/releases/download/jdk-10.0.2%2B13/OpenJDK10_x64_Linux_jdk-10.0.2.13.tar.gz"
    
  •      SYSTEM_JDK="https://github.com/AdoptOpenJDK/openjdk10-releases/releases/download/jdk-10.0.2%2B13/OpenJDK10_x64_Linux_jdk-10.0.2+13.tar.gz"
         ;;
       i686)
    

Hi, Customer32.exe & Staff32.exe can't work

Hi, I am Korean and My English is not good.
Recently I take this program and compile with Ubuntu by myself with downloading master.zip file.
Compile is fine,
but when I click 32bit-exe file in the launch4j folder, it has an error [ This application requires a Java Runtime ENvironment 10(32bit)]
With [https://github.com/OpenIndex/RemoteSupportTool/releases] 's StaffSupportTool-1.0.0-win32.exe & CustomerSupportTool-1.0.0-win32.exe, it is working with my Win 10 64 bit PC.
When i search Java 10 32bit , it is not exist.
How can i solve it?
Thank have good day.

Inconsistent naming of sidebar_staff.png in Customer Tool

The Customer Tool uses sidebar_staff.png as a sidebar image. The file name is misleading as it is not used in the staff tool. Therefore the file should be renamed to sidebar.png. For backwards compatibility sidebar_staff.png should still be used, if sidebar.png is not present.

Running as administrator

Very nice the new version Thank you !!!
In customer version if I try to open a program as administrador Staff side see a Black screen.

Provide a GUI for the support staff

Up to now we only provide a graphical interface for the user, that likes to share his desktop. Reworking the application with Java 10 (see #9) also allows us to create a graphical interface for the support staff. This makes it a lot easier for the support side to open a support session. No external requirements (separate VNC viewer, manual SSH tunneling, etc.) are needed.

Modify performance / quality settings during a support session

Certain settings for performance / quality might be editable during a support session:

  • level of JPEG compression (currently 60% by default)
  • screenshot interval (currently 250 ms by default)
  • width / height of transferred screenshot tiles (currently 100 px by default)

BIN Files

Hello sir c
can you provide binaries please .Bin Files are in German can u do it in English too please

Integrate file sharing

File sharing between the support staff and customer would be nice and helpful addition.

Mouse is shifted on Windows clients with screen scaling > 100%

The mouse pointer of staff and customer are at a different positions.

It is only correct a the top left corner.
I guess this is caused by the highdpi screen at customer side (windows 10 with scaling > 200%). RemoteSupportTool uses a low res screenshot, but it doesn't scale the mouse position of staff from low res to high res. To fix use native res screenhot or scale the mouse position.

Support session not working on Linux with Wayland (e.g. Fedora)

It seems that the customer application is not properly working on Linux with Wayland. If the customer application is running on Fedora 29 (latest version), the staff only receives a black screenshot.

It might be an issue with OpenJDK. Or maybe there might be a way to explicitly allow an application to take screenshots. Fortunately Wayland is currently not widely used. But sooner or later we need to find a solution.

Update to Java 11.0.10+9

The Java Runtime Environment (OpenJDK), that is bundled with the application, should be updated to the latest version 11.0.10+9.

Rewrite the application with Java / OpenJDK 10

Using Tcl/Tk offers a lot of advantages for this project. But unfortunately it also has some negative aspects:

  • The environment is not very well supported. There aren't any good IDE's for Tcl development available, which makes contributions quite difficult.
  • Due to the lack of native implementations we have to rely on external applications (OpenSSH, VNC servers), which are quite difficult to handle (especially in case of errors).
  • It is not possible to sign the created binary on modern macOS systems. Therefore it's basically impossible to start the application bundle on macOS in a straightforward way (without bypassing the security mechanics of the operating system).
  • On different platforms we use different VNC servers. Their feature set is quite different. Therefore it's not easily possible to provide a wider range of features on all platforms (e.g. file transfers).

Our goal is to provide a solution, that works reliably on all operating systems with a common set of features. After some investigation we came to the conclusion, that Java with its multi platform approach might solve these issues quite well - especially since they provide a way to create a stripped down version of their runtime environment since Java 9 (via Jigsaw / jlink).

After some experiments we can confirm, that our tests with java.awt.Robot offered comparable performance to the established VNC solutions. But of course there should be space for optimization left. ;)

Bundling the application with OpenJDK 10 leads to an uncompressed application folder with about 50MB. A compressed download has a size of about 25MB - 30MB. This of course is a lot bigger then most other VNC solutions. But these are still acceptable values for our use case. Considering the advantages of a consistent environment for all supported platforms outweigh the bigger download sizes from our point of view.

To make a long story short: We're planning to rework RemoteSupportTool entirely in Java. As far as we know, there are some similar projects in the Java world. But either they are not completely open source or they are not actively maintained anymore. Hopefully we can fill that gap and provide a solution, that is also helpful for other users / companies.

Prefer Nimbus look & feel on Linux

On some Linux distributions the applications look pretty ugly (depending on the desktop environment / default system look & feel). Therefore we're always enforcing the Nimbus look & feel on Linux systems. If this is not available, we should fall back to the Metal look & feel.

Windows 10: OpenSSH Server not starting

OpenSSH doesn't start when I try to connect from a Windows 10 Machine via the GUI, but it is working if I start it from CMD without the -f parameter (and without sleep 15). Does somebody know what to do, to make it working? From Linux its just working fine.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.