ECPASSWORD is used to set clipboard text in VNC, but its name is
confusing. So rename it to a more exact name.
This issue also adds document about clipboard in VNC.
Solve #251.
To start danted successfully, all network interfaces listed in the
configuration of danted should occur and has ip(s). After started
successfully, danted can run without troubles even after the status
of thoes network interfaces is changed (such as deleted and recreated).
This commit creates a temporary tun interface with same name as Sangfor
VPN, assigns an ip, starts danted, and then deletes the interface.
- Change most of `EC` to `VPN` in the source code, since this project will not
be only for EasyConnect
- Dehardcode
- Refactor for more than one type of Sangfor VPN
With this option enabled, the configuration file will be set to a
symblic link of /dev/null, which will prevent EasyConnect from storing
the version information to local and checking client version.
This commit is for GUI version:
- overwrite ~/conf/ by the "immutable" configure files such as Version.xml
that depends the version of EC; (fixes#124, #136, #156, #217)
- in the conf directory of EC, create symbolic links to files in ~/conf,
except for "ECDomainFile", which is a unix sock used by EC and should
not be assumed to be supported by the filesystem of ~/conf; (fixes#219)
- sync conf directory of EC to ~/conf before stoping and/or exiting
(idea from @Einskai);
EasyConnect may provide some resources by DNAT to 127.0.0.1:4440, which
is in nat/SANGFOR_OUTPUT chain created by EC. By default, there is a
rule in nat/OUTPUT chain created by EC, which jump into SANGFOR_OUTPUT.
To apply these rules to ip forwarding, the commit includes:
- REDIRECT to port 4440 instead of DNAT to 127.0.0.1:4440;
- jump into SANGFOR_OUTPUT also in nat/PREROUTING.
This commit fixes#204.
When logining, ECAgent starts to communicate with CSClient via a fifo
file. In 7.6.3, ECAgent can't starts CSClient and svpnservice by itself,
so our script start these two programs once ECAgent begins to complain
the communication failure. In poor-performance environment (such as slow
device and docker with some limits set by user), ECAgent may reach its
timeout before CSClient is ready, and then login will fail.
To avoid such an error, this commit suspends the ECAgent process before
starts CSClient and svpnservice, and continues ECAgent after the fifo
file is created by CSClient.
Since non-amd64 deb packages of EasyConnect are proved to exist
(https://github.com/Hagb/docker-easyconnect/issues/25#issuecomment-1233369467),
the deb package should not be assume to be amd64 and architecture
specific code should be rewritten:
- Add EC_HOST build argument to tell Dockerfile the architecture of
EasyConnect package
- Whether to install cross toolchain and qemu-user and which package
should be install, is determined by EC_HOST and the local architecture
now, more specifically by build-scripts/get-echost-names.sh (no longer
hard-code amd64 cross toolchain)
- fake-hwaddr.so should follow the architecture of the EC deb, so
fake-hwaddr/Makefile uses CC envirnoment variable instead of
hard-coded x86_64-linux-gnu-gcc as c compiler now
- qemu_args is removed now. It was used to pass LD_PRELOAD to foreign
binaries under qemu-user, but now we pass LD_PRELOAD to the qemu
wrapper and wrapper will pass the LD_PRELOAD to the simulated
binaries
https://github.com/Hagb/docker-easyconnect/issues/47#issuecomment-1189448697
Use the following programs to provide cross-platform noVNC service with
little size growth:
- busybox httpd: http service for static resources (busybox is not very
high-performance, but has already been installed)
- websockify in C: tiny websockify service
- tinyproxy with websocket support: provide http reverse proxy, used to
provide http and websockify in the same port
As an alternation, easy-novnc will be compiled from source code if chosen.
If there isn't sys_type in easy_connect.json, the electron client (called "GUI"
in docker-easyconnect) of EasyConnect will think itself to be in macOS,
which is hardcoded as a default value in the GUI source code.