├── .github └── FUNDING.yml ├── .gitignore ├── .gitmodules ├── .idea ├── .name ├── compiler.xml ├── dictionaries │ └── global.xml ├── encodings.xml ├── fileTemplates │ ├── includes │ │ └── License Header.java │ └── internal │ │ ├── AnnotationType.java │ │ ├── Class.java │ │ ├── Enum.java │ │ ├── Interface.java │ │ ├── Record.java │ │ ├── module-info.java │ │ └── package-info.java ├── inspectionProfiles │ └── Project_Default.xml ├── jarRepositories.xml ├── misc.xml ├── runConfigurations │ ├── Clean.xml │ ├── CustomerTool.xml │ ├── Deploy.xml │ ├── Install.xml │ ├── Release.xml │ └── StaffTool.xml └── vcs.xml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Core ├── .gitignore ├── Core.iml ├── mvn-clean.sh ├── mvn-install.sh ├── pom.xml └── src │ └── main │ └── java │ ├── de │ └── openindex │ │ └── support │ │ └── core │ │ ├── AbstractOptions.java │ │ ├── AppUtils.java │ │ ├── ImageUtils.java │ │ ├── SwingUtils.java │ │ ├── gui │ │ ├── AboutDialog.java │ │ ├── SidebarPanel.java │ │ └── package-info.java │ │ ├── io │ │ ├── CopyTextRequest.java │ │ ├── KeyPressRequest.java │ │ ├── KeyReleaseRequest.java │ │ ├── KeyTypeRequest.java │ │ ├── MouseMoveRequest.java │ │ ├── MousePressRequest.java │ │ ├── MouseReleaseRequest.java │ │ ├── MouseWheelRequest.java │ │ ├── ResponseFactory.java │ │ ├── ScreenRequest.java │ │ ├── ScreenResponse.java │ │ ├── ScreenTile.java │ │ ├── SocketHandler.java │ │ └── package-info.java │ │ ├── monitor │ │ ├── DataMonitor.java │ │ ├── DataSample.java │ │ ├── MonitoringInputStream.java │ │ ├── MonitoringOutputStream.java │ │ └── package-info.java │ │ └── package-info.java │ ├── module-info.java │ └── org │ └── imgscalr │ ├── AsyncScalr.java │ ├── Scalr.java │ └── package-info.java ├── Customer ├── .gitignore ├── Customer.iml ├── mvn-clean.sh ├── mvn-install.sh ├── pom.xml └── src │ └── main │ ├── java │ ├── de │ │ └── openindex │ │ │ └── support │ │ │ └── customer │ │ │ ├── CustomerApplication.java │ │ │ ├── CustomerFrame.java │ │ │ ├── CustomerOptions.java │ │ │ ├── KeyboardTest.java │ │ │ ├── package-info.java │ │ │ └── utils │ │ │ ├── LinuxUtils.java │ │ │ ├── MacUtils.java │ │ │ ├── Robot.java │ │ │ ├── WindowsUtils.java │ │ │ ├── mac │ │ │ ├── CoreFoundation.java │ │ │ ├── CoreGraphics.java │ │ │ └── package-info.java │ │ │ └── package-info.java │ └── module-info.java │ └── resources │ ├── de │ └── openindex │ │ └── support │ │ └── customer │ │ └── resources │ │ ├── about.html │ │ ├── about_de.html │ │ ├── application.png │ │ ├── application.properties │ │ ├── application_de.properties │ │ ├── branding.png │ │ ├── icon_connected.png │ │ ├── icon_connecting.png │ │ ├── icon_disconnected.png │ │ ├── sidebar.png │ │ ├── sidebar_about.png │ │ ├── truststore.jks │ │ └── truststore.jks.txt │ └── logback.xml ├── LICENSE.txt ├── README.md ├── RemoteSupportTool.iml ├── Staff ├── .gitignore ├── Staff.iml ├── mvn-clean.sh ├── mvn-install.sh ├── pom.xml └── src │ └── main │ ├── java │ ├── de │ │ └── openindex │ │ │ └── support │ │ │ └── staff │ │ │ ├── StaffApplication.java │ │ │ ├── StaffFrame.java │ │ │ ├── StaffOptions.java │ │ │ ├── package-info.java │ │ │ └── utils │ │ │ ├── CopyTextDialog.java │ │ │ └── package-info.java │ └── module-info.java │ └── resources │ ├── de │ └── openindex │ │ └── support │ │ └── staff │ │ └── resources │ │ ├── about.html │ │ ├── about_de.html │ │ ├── application.png │ │ ├── application.properties │ │ ├── application_de.properties │ │ ├── branding.png │ │ ├── icon_download.png │ │ ├── icon_info.png │ │ ├── icon_upload.png │ │ ├── keystore.jks │ │ ├── keystore.jks.txt │ │ └── sidebar_about.png │ └── logback.xml ├── mvn-clean.sh ├── mvn-deploy.sh ├── mvn-install.sh ├── mvn-release.sh ├── mvn-tidy-pom.sh ├── pom.xml ├── release ├── .env.example ├── .gitignore ├── bundle-linux.sh ├── bundle-macos.sh ├── bundle-windows.sh ├── codesign-macos.sh ├── mvn-clean.sh ├── mvn-install.sh ├── mvn-release.sh ├── notarize-macos-finish.sh ├── notarize-macos-upload.sh ├── notarize-macos-verify.sh ├── openjdk-init.sh ├── pom.xml └── src │ ├── assembly │ ├── customer-linux-x86-64.xml │ ├── customer-linux-x86.xml │ ├── customer-macos-x86-64.xml │ ├── customer-windows-x86-64.xml │ ├── customer-windows-x86.xml │ ├── modules.xml │ ├── staff-linux-x86-64.xml │ ├── staff-linux-x86.xml │ ├── staff-macos-x86-64.xml │ ├── staff-windows-x86-64.xml │ └── staff-windows-x86.xml │ ├── icons │ ├── README.md │ ├── connect_creating-16.png │ ├── connect_established-16.png │ ├── connect_no-16.png │ ├── desktopshare-128.png │ ├── desktopshare-16.png │ ├── desktopshare-22.png │ ├── desktopshare-24.png │ ├── desktopshare-256.png │ ├── desktopshare-32.png │ ├── desktopshare-48.png │ ├── desktopshare-64.png │ ├── desktopshare.icns │ ├── desktopshare.ico │ ├── documentinfo-16.png │ ├── documentinfo-256.png │ ├── down-16.png │ ├── help-128.png │ ├── help-16.png │ ├── help-22.png │ ├── help-24.png │ ├── help-256.png │ ├── help-32.png │ ├── help-48.png │ ├── help-64.png │ ├── help.icns │ ├── help.ico │ └── up-16.png │ ├── macos │ ├── Customer.app │ │ └── Contents │ │ │ ├── Info.plist │ │ │ └── MacOS │ │ │ └── Start.sh │ ├── JavaMacLauncher │ └── Staff.app │ │ └── Contents │ │ ├── Info.plist │ │ └── MacOS │ │ └── Start.sh │ ├── openjdk │ ├── .gitignore │ ├── README.md │ ├── init-linux-x86-64.sh │ ├── init-linux-x86.sh │ ├── init-macos-x86-64.sh │ ├── init-windows-x86-64.sh │ ├── init-windows-x86.sh │ └── init.sh │ ├── scripts │ ├── Customer.bat │ ├── Customer.sh │ ├── Staff.bat │ └── Staff.sh │ └── windows │ ├── .gitattributes │ ├── .gitignore │ ├── 7zSD.sfx │ ├── Customer.rc │ ├── Customer.script │ ├── Customer.txt │ ├── README.md │ ├── ResourceHacker.exe │ ├── Staff.rc │ ├── Staff.script │ ├── Staff.txt │ └── manifest.rc └── share ├── images ├── README.md ├── sidebar.xcf └── sidebar_about.xcf ├── screenshots ├── customer-window.png └── staff-window.png └── ssl ├── README.md └── init.sh /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: OpenIndex 2 | custom: "https://paypal.me/OpenIndex" 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | 3 | # Don't put generated keystore / truststore files in repository. 4 | share/ssl/* 5 | !share/ssl/init.sh 6 | !share/ssl/README.md 7 | 8 | 9 | # 10 | # Default entries for IntelliJ IDEA 11 | # based on https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore 12 | # 13 | 14 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm 15 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 16 | 17 | # User-specific stuff 18 | .idea/**/workspace.xml 19 | .idea/**/tasks.xml 20 | .idea/**/usage.statistics.xml 21 | .idea/**/dictionaries/* 22 | .idea/**/shelf 23 | 24 | # Generated files 25 | .idea/**/contentModel.xml 26 | 27 | # Sensitive or high-churn files 28 | .idea/**/dataSources/ 29 | .idea/**/dataSources.ids 30 | .idea/**/dataSources.local.xml 31 | .idea/**/sqlDataSources.xml 32 | .idea/**/dynamic.xml 33 | .idea/**/uiDesigner.xml 34 | .idea/**/dbnavigator.xml 35 | 36 | # Gradle 37 | .idea/**/gradle.xml 38 | .idea/**/libraries 39 | 40 | # Gradle and Maven with auto-import 41 | # When using Gradle or Maven with auto-import, you should exclude module files, 42 | # since they will be recreated, and may cause churn. Uncomment if using 43 | # auto-import. 44 | .idea/modules.xml 45 | .idea/*.iml 46 | .idea/modules 47 | 48 | # CMake 49 | cmake-build-*/ 50 | 51 | # Mongo Explorer plugin 52 | .idea/**/mongoSettings.xml 53 | 54 | # File-based project format 55 | *.iws 56 | 57 | # IntelliJ 58 | out/ 59 | 60 | # mpeltonen/sbt-idea plugin 61 | .idea_modules/ 62 | 63 | # JIRA plugin 64 | atlassian-ide-plugin.xml 65 | 66 | # Cursive Clojure plugin 67 | .idea/replstate.xml 68 | 69 | # Crashlytics plugin (for Android Studio and IntelliJ) 70 | com_crashlytics_export_strings.xml 71 | crashlytics.properties 72 | crashlytics-build.properties 73 | fabric.properties 74 | 75 | # Editor-based Rest Client 76 | .idea/httpRequests 77 | 78 | # Android studio 3.1+ serialized cache file 79 | .idea/caches/build_file_checksums.ser 80 | 81 | 82 | # 83 | # Modifications to the default entries. 84 | # 85 | 86 | # Keep a global dictionary in repository. 87 | !.idea/**/dictionaries/global.xml 88 | 89 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "doc"] 2 | path = doc 3 | url = https://github.com/OpenIndex/RemoteSupportTool.wiki.git 4 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | RemoteSupportTool -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 24 | -------------------------------------------------------------------------------- /.idea/dictionaries/global.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | aligny 5 | appdata 6 | benutzername 7 | drittanbietern 8 | fillx 9 | gapright 10 | growx 11 | hidemode 12 | imgscalr 13 | lizenztext 14 | openindex 15 | passphrase 16 | portnummer 17 | resized 18 | screenshot 19 | zlib 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/fileTemplates/includes/License Header.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ -------------------------------------------------------------------------------- /.idea/fileTemplates/internal/AnnotationType.java: -------------------------------------------------------------------------------- 1 | #parse("License Header.java") 2 | #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end 3 | #parse("File Header.java") 4 | public @interface ${NAME} { 5 | } 6 | -------------------------------------------------------------------------------- /.idea/fileTemplates/internal/Class.java: -------------------------------------------------------------------------------- 1 | #parse("License Header.java") 2 | #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end 3 | #parse("File Header.java") 4 | public class ${NAME} { 5 | } 6 | -------------------------------------------------------------------------------- /.idea/fileTemplates/internal/Enum.java: -------------------------------------------------------------------------------- 1 | #parse("License Header.java") 2 | #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end 3 | #parse("File Header.java") 4 | public enum ${NAME} { 5 | } 6 | -------------------------------------------------------------------------------- /.idea/fileTemplates/internal/Interface.java: -------------------------------------------------------------------------------- 1 | #parse("License Header.java") 2 | #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end 3 | #parse("File Header.java") 4 | public interface ${NAME} { 5 | } 6 | -------------------------------------------------------------------------------- /.idea/fileTemplates/internal/Record.java: -------------------------------------------------------------------------------- 1 | #parse("License Header.java") 2 | #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end 3 | #parse("File Header.java") 4 | public record ${NAME}() { 5 | } 6 | -------------------------------------------------------------------------------- /.idea/fileTemplates/internal/module-info.java: -------------------------------------------------------------------------------- 1 | #parse("License Header.java") 2 | #parse("File Header.java") 3 | module #[[$MODULE_NAME$]]# { 4 | } -------------------------------------------------------------------------------- /.idea/fileTemplates/internal/package-info.java: -------------------------------------------------------------------------------- 1 | #parse("License Header.java") 2 | #parse("File Header.java") 3 | #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /.idea/runConfigurations/Clean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /.idea/runConfigurations/CustomerTool.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 15 | -------------------------------------------------------------------------------- /.idea/runConfigurations/Deploy.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /.idea/runConfigurations/Install.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /.idea/runConfigurations/Release.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /.idea/runConfigurations/StaffTool.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 15 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | Changelog for Remote Support Tool 2 | ================================= 3 | 4 | 1.1.2 (19 Mar 2021) 5 | ------------------- 6 | 7 | - added [enhancement #33](https://github.com/OpenIndex/RemoteSupportTool/issues/33): Enable encryption via TLS 1.3 8 | - added [enhancement #46](https://github.com/OpenIndex/RemoteSupportTool/issues/46): Hide connection settings in Customer Tool via configuration 9 | - added [enhancement #49](https://github.com/OpenIndex/RemoteSupportTool/issues/49): Improved application bundles for macOS 10 | - added [enhancement #50](https://github.com/OpenIndex/RemoteSupportTool/issues/50): Provide notarized application bundles for macOS 11 | - update bundled [Java Runtime Environment](https://openjdk.java.net/) to version 11.0.10+9 12 | - update [Commons Lang](https://commons.apache.org/lang/) library to version 3.12.0 13 | - update [Commons IO](https://commons.apache.org/io) library to version 2.8.0 14 | - update [Commons Text](https://commons.apache.org/text/) library to version 1.9 15 | - update [SLF4J](https://www.slf4j.org/) library to version 1.7.30 16 | - update [Java Native Access](https://github.com/java-native-access/jna) library to version 5.7.0 17 | - minor changes, see [Milestone v1.1.2](https://github.com/OpenIndex/RemoteSupportTool/milestone/7) 18 | 19 | 20 | 1.1.1 (22 Mar 2019) 21 | ------------------- 22 | 23 | - fixed [issue #28](https://github.com/OpenIndex/RemoteSupportTool/issues/28): Uppercase characters are printed in lowercase for Linux customers 24 | - fixed [issue #29](https://github.com/OpenIndex/RemoteSupportTool/issues/29): Wrong mouse position on multi monitor setups 25 | - fixed [issue #30](https://github.com/OpenIndex/RemoteSupportTool/issues/30): Wrong screen information shown in customer tool 26 | - fixed [issue #31](https://github.com/OpenIndex/RemoteSupportTool/issues/31): Staff tool on macOS doesn't send characters typed with option key 27 | 28 | 29 | 1.1.0 (20 Mar 2019) 30 | ------------------- 31 | 32 | - upgrade to Java 11 33 | - update [Commons Text](https://commons.apache.org/text/) library to version 1.6 34 | - update [JSch](http://www.jcraft.com/jsch/) library to version 0.1.55 35 | - update [Simple Logging Facade for Java](https://www.slf4j.org/) library to version 1.7.26 36 | - provide sh application launcher for macOS ([issue #20](https://github.com/OpenIndex/RemoteSupportTool/issues/20)) 37 | - tab key is not sent to the customer application ([issue #21](https://github.com/OpenIndex/RemoteSupportTool/issues/21)) 38 | - enable / disable transfer of keyboard & mouse inputs ([issue #22](https://github.com/OpenIndex/RemoteSupportTool/issues/22)) 39 | - rework transfer of keyboard inputs ([issue #23](https://github.com/OpenIndex/RemoteSupportTool/issues/23)) 40 | - prefer Nimbus look & feel on Linux ([issue #25](https://github.com/OpenIndex/RemoteSupportTool/issues/25)) 41 | - set awtAppClassName for Gnome / Ubuntu Unity ([issue #26](https://github.com/OpenIndex/RemoteSupportTool/issues/26)) 42 | 43 | 44 | 1.0.1 (13 Mar 2019) 45 | ------------------- 46 | 47 | - fixed [issue #18](https://github.com/OpenIndex/RemoteSupportTool/issues/18): Mouse is shifted on Windows clients with high resolution screen 48 | 49 | 50 | 1.0.0 (20 Oct 2018) 51 | ------------------- 52 | 53 | - migrated from Tcl/Tk to Java 54 | - implement the whole support session in Java, no need for external applications (x11vnc, OSXvnc, TightVNC, OpenSSH) 55 | - provide a graphical interface for both sides of a support session (customer & support staff) 56 | - provided binaries are bundled with a stripped down version of the OpenJDK runtime environment (version 10) 57 | - provide a signed application bundle for macOS 58 | - switched from MIT to Apache License 2.0 59 | 60 | 61 | 0.5 (16 Jan 2017) 62 | ----------------- 63 | 64 | - migrated from Python to Tcl/Tk 65 | - replaced Paramiko with OpenSSH 66 | - implemented a new build process based on Tclkit 67 | - updated to OSXvnc 5.0.1, which should fix problems with Retina displays on Mac OS X 68 | - rebuild x11vnc, which should fix problems with a missing libxss library on amd64 based Linux systems 69 | - added some more options for GUI configuration via config.ini 70 | 71 | 72 | 0.4.1 (10 Nov 2015) 73 | ------------------- 74 | 75 | - translated into Italian (thanks to [Sjd-Risca](https://github.com/Sjd-Risca)) 76 | - compatibility fixes for PyInstaller 3 (thanks to [Sjd-Risca](https://github.com/Sjd-Risca)) 77 | - rebuilt with PyInstaller 3 on all supported platforms 78 | 79 | 0.4 (17 Jun 2015) 80 | ----------------- 81 | 82 | - first public release 83 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | 4 | ## Notes about branches 5 | 6 | This project follows the principles of the [GitFlow branching model](http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/) as [proposed by Vincent Driessen](http://nvie.com/posts/a-successful-git-branching-model/). According to this model you will find these branches at the GitHub project page: 7 | 8 | - The [master branch](https://github.com/OpenIndex/RemoteSupportTool/tree/master) contains the current stable releases. No development is directly taking place in that branch. 9 | 10 | - The [develop branch](https://github.com/OpenIndex/RemoteSupportTool/tree/develop) represents the current state of development. Changes from this branch are merged into [master](https://github.com/OpenIndex/RemoteSupportTool/tree/master) when a new version is released. 11 | 12 | - For more complex features you may also find different feature branches. These are derived from [develop branch](https://github.com/OpenIndex/RemoteSupportTool/tree/develop) and are merged back / removed as soon as the feature is ready for release. 13 | 14 | > **Notice:** If you like to provide changes to this project, you should always use the [develop branch](https://github.com/OpenIndex/RemoteSupportTool/tree/develop) as basis for your customization. Feel free to create separate feature branches for any custom feature you like to share. 15 | 16 | 17 | ## Create a pull request 18 | 19 | We love pull requests. Here's a quick guide. 20 | 21 | - Fork this project into you GitHub profile. 22 | 23 | - Clone the [develop branch](https://github.com/OpenIndex/RemoteSupportTool/tree/develop) of the repository to your 24 | local disk: 25 | ``` 26 | git clone -b develop git@github.com:your-username/RemoteSupportTool.git 27 | ``` 28 | 29 | - Do your changes to the local repository and push the changes back into your fork at GitHub. 30 | 31 | - [Submit a pull request](https://github.com/OpenIndex/RemoteSupportTool/compare/) with the changes from your fork. 32 | 33 | At this point you're waiting on us. We like to comment on pull requests as soon as possible. We may suggest some changes or improvements or alternatives. 34 | 35 | Some things that will increase the chance that your pull request is accepted: 36 | 37 | - Test your changes. 38 | 39 | - Write a [good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). 40 | -------------------------------------------------------------------------------- /Core/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | -------------------------------------------------------------------------------- /Core/Core.iml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Core/mvn-clean.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd "$DIR" 24 | "$MVN" clean 25 | -------------------------------------------------------------------------------- /Core/mvn-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd "$DIR" 24 | "$MVN" clean install 25 | -------------------------------------------------------------------------------- /Core/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | 8 | RemoteSupportTool 9 | de.openindex.support 10 | 1.1.2 11 | 12 | 13 | RemoteSupportTool-Core 14 | 15 | RemoteSupportTool-Core 16 | RemoteSupportTool is a cross platform solution for remote support. 17 | https://openindex.de 18 | 19 | OpenIndex.de 20 | https://openindex.de 21 | 22 | 23 | 24 | The Apache Software License, Version 2.0 25 | http://www.apache.org/licenses/LICENSE-2.0.txt 26 | repo 27 | A business-friendly OSS license 28 | 29 | 30 | 31 | 32 | 33 | andy 34 | Andreas Rudolph 35 | andy@openindex.de 36 | OpenIndex.de 37 | https://openindex.de/ 38 | 39 | 40 | 41 | 42 | 43 | commons-io 44 | commons-io 45 | 46 | 47 | org.apache.commons 48 | commons-lang3 49 | 50 | 51 | org.apache.commons 52 | commons-text 53 | 54 | 55 | ch.qos.logback 56 | logback-classic 57 | 58 | 59 | org.slf4j 60 | slf4j-api 61 | 62 | 63 | 64 | 65 | 66 | 67 | ${project.basedir}/src/main/resources 68 | true 69 | 70 | **/*.properties 71 | **/*.html 72 | 73 | 74 | 75 | ${project.basedir}/src/main/resources 76 | false 77 | 78 | **/*.properties 79 | **/*.html 80 | 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/AbstractOptions.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core; 17 | 18 | import java.io.File; 19 | import java.io.FileInputStream; 20 | import java.io.FileOutputStream; 21 | import java.io.IOException; 22 | import java.io.InputStream; 23 | import java.io.OutputStream; 24 | import java.util.Properties; 25 | import java.util.ResourceBundle; 26 | import org.apache.commons.lang3.StringUtils; 27 | import org.slf4j.Logger; 28 | import org.slf4j.LoggerFactory; 29 | 30 | /** 31 | * General application options. 32 | * 33 | * @author Andreas Rudolph 34 | */ 35 | public abstract class AbstractOptions extends Properties { 36 | @SuppressWarnings("unused") 37 | private final static Logger LOGGER = LoggerFactory.getLogger(AbstractOptions.class); 38 | protected final File location; 39 | protected final ResourceBundle settings; 40 | 41 | protected AbstractOptions(File location, ResourceBundle settings) { 42 | super(); 43 | this.location = location; 44 | this.settings = settings; 45 | } 46 | 47 | protected Boolean getPropertyAsBoolean(String key, Boolean defaultValue) { 48 | String value = StringUtils.trimToNull(this.getProperty(key)); 49 | return (value != null) ? 50 | Boolean.valueOf(value) : 51 | defaultValue; 52 | } 53 | 54 | protected Integer getPropertyAsInteger(String key, Integer defaultValue) { 55 | String value = StringUtils.trimToNull(this.getProperty(key)); 56 | try { 57 | return (value != null) ? 58 | Integer.valueOf(value) : 59 | defaultValue; 60 | } catch (NumberFormatException ex) { 61 | LOGGER.warn("Can't read option '" + key + "'!", ex); 62 | return defaultValue; 63 | } 64 | } 65 | 66 | public void read() throws IOException { 67 | if (!Boolean.parseBoolean(settings.getString("permanentOptions"))) return; 68 | if (!this.location.isFile()) return; 69 | try (InputStream input = new FileInputStream(this.location)) { 70 | this.load(input); 71 | } 72 | } 73 | 74 | public void write() throws IOException { 75 | if (!Boolean.parseBoolean(settings.getString("permanentOptions"))) return; 76 | try (OutputStream output = new FileOutputStream(this.location)) { 77 | this.store(output, null); 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/SwingUtils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core; 17 | 18 | import java.awt.Toolkit; 19 | import java.lang.reflect.Field; 20 | import javax.swing.UIManager; 21 | import org.apache.commons.lang3.SystemUtils; 22 | import org.slf4j.Logger; 23 | import org.slf4j.LoggerFactory; 24 | 25 | /** 26 | * Swing helper methods. 27 | * 28 | * @author Andreas Rudolph 29 | */ 30 | @SuppressWarnings("WeakerAccess") 31 | public class SwingUtils { 32 | @SuppressWarnings("unused") 33 | private final static Logger LOGGER = LoggerFactory.getLogger(SwingUtils.class); 34 | 35 | private SwingUtils() { 36 | super(); 37 | } 38 | 39 | public static UIManager.LookAndFeelInfo getLookAndFeelInfo(String name) { 40 | for (UIManager.LookAndFeelInfo lnf : UIManager.getInstalledLookAndFeels()) { 41 | if (lnf.getName().equalsIgnoreCase(name)) { 42 | return lnf; 43 | } 44 | } 45 | return null; 46 | } 47 | 48 | public static void installLookAndFeel() { 49 | try { 50 | if (SystemUtils.IS_OS_WINDOWS || SystemUtils.IS_OS_MAC) { 51 | // Always use system look & feel on Windows & Mac. 52 | UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 53 | } else { 54 | // Prefer Nimbus or Metal look & feel on other systems. 55 | UIManager.LookAndFeelInfo lnf = SwingUtils.getLookAndFeelInfo("Nimbus"); 56 | if (lnf == null) lnf = SwingUtils.getLookAndFeelInfo("Metal"); 57 | UIManager.setLookAndFeel((lnf != null) ? 58 | lnf.getClassName() : 59 | UIManager.getSystemLookAndFeelClassName()); 60 | } 61 | } catch (Exception ex) { 62 | LOGGER.warn("Can't set look & feel!", ex); 63 | } 64 | } 65 | 66 | /** 67 | * Change application title for certain Linux desktop environments (e.g. Gnome 3, Ubuntu Unity). 68 | *

69 | * This method may not work with future Java version. In this case it might be replaced with the 70 | * window-matching-agent approach. 71 | * 72 | * @param value application title to set 73 | * @see stackoverflow.com 74 | */ 75 | public static void setAwtAppClassName(String value) { 76 | try { 77 | Toolkit toolkit = Toolkit.getDefaultToolkit(); 78 | if (toolkit.getClass().getName().equals("sun.awt.X11.XToolkit")) { 79 | Field awtAppClassNameField = toolkit.getClass().getDeclaredField("awtAppClassName"); 80 | awtAppClassNameField.setAccessible(true); 81 | awtAppClassNameField.set(toolkit, value); 82 | } 83 | } catch (Exception ex) { 84 | LOGGER.warn("Can't set awtAppClassName!", ex); 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/gui/SidebarPanel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.gui; 17 | 18 | import java.awt.Dimension; 19 | import java.awt.Graphics; 20 | import java.awt.Graphics2D; 21 | import java.awt.image.BufferedImage; 22 | import javax.swing.JPanel; 23 | import org.slf4j.Logger; 24 | import org.slf4j.LoggerFactory; 25 | 26 | /** 27 | * Panel, that renders a sidebar with multiple background images. 28 | * 29 | * @author Andreas Rudolph 30 | */ 31 | public class SidebarPanel extends JPanel { 32 | @SuppressWarnings("unused") 33 | private final static Logger LOGGER = LoggerFactory.getLogger(SidebarPanel.class); 34 | 35 | private final BufferedImage sidebarImage; 36 | private final BufferedImage brandingImage; 37 | 38 | public SidebarPanel(BufferedImage sidebarImage, BufferedImage brandingImage) { 39 | super(); 40 | this.sidebarImage = sidebarImage; 41 | this.brandingImage = brandingImage; 42 | this.setOpaque(false); 43 | } 44 | 45 | @Override 46 | public Dimension getPreferredSize() { 47 | return new Dimension(sidebarImage.getWidth(), sidebarImage.getHeight()); 48 | } 49 | 50 | @Override 51 | protected void paintComponent(Graphics g) { 52 | super.paintComponent(g); 53 | 54 | final int panelWidth = getWidth(); 55 | final int panelHeight = getHeight(); 56 | final Graphics2D g2d = (Graphics2D) g; 57 | 58 | g2d.drawImage(sidebarImage, 0, 0, null); 59 | 60 | if (brandingImage != null) { 61 | final int brandingWidth = brandingImage.getWidth(); 62 | final int brandingHeight = brandingImage.getHeight(); 63 | 64 | final int x = (panelWidth - brandingWidth) / 2; 65 | final int y = panelHeight - brandingHeight; 66 | g2d.drawImage(brandingImage, x, y, null); 67 | } 68 | 69 | g2d.dispose(); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/gui/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * General GUI classes. 19 | * 20 | * @author Andreas Rudolph 21 | */ 22 | package de.openindex.support.core.gui; 23 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/io/CopyTextRequest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.io; 17 | 18 | import java.io.Serializable; 19 | 20 | /** 21 | * Request for a text being copied into the clipboard of the customer. 22 | * 23 | * @author Andreas Rudolph 24 | */ 25 | public class CopyTextRequest implements Serializable { 26 | private static final long serialVersionUID = 1; 27 | public final String text; 28 | 29 | public CopyTextRequest() { 30 | this(null); 31 | } 32 | 33 | public CopyTextRequest(String text) { 34 | super(); 35 | this.text = text; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/io/KeyPressRequest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.io; 17 | 18 | import java.awt.event.KeyEvent; 19 | import java.io.Serializable; 20 | 21 | /** 22 | * Request for a key being pressed. 23 | * 24 | * @author Andreas Rudolph 25 | */ 26 | public class KeyPressRequest implements Serializable { 27 | private static final long serialVersionUID = 2; 28 | public final int keyCode; 29 | 30 | public KeyPressRequest() { 31 | this(KeyEvent.VK_UNDEFINED); 32 | } 33 | 34 | public KeyPressRequest(int keyCode) { 35 | super(); 36 | this.keyCode = keyCode; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/io/KeyReleaseRequest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.io; 17 | 18 | import java.awt.event.KeyEvent; 19 | import java.io.Serializable; 20 | 21 | /** 22 | * Request for a key being released. 23 | * 24 | * @author Andreas Rudolph 25 | */ 26 | public class KeyReleaseRequest implements Serializable { 27 | private static final long serialVersionUID = 2; 28 | public final int keyCode; 29 | 30 | public KeyReleaseRequest() { 31 | this(KeyEvent.VK_UNDEFINED); 32 | } 33 | 34 | public KeyReleaseRequest(int keyCode) { 35 | super(); 36 | this.keyCode = keyCode; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/io/KeyTypeRequest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.io; 17 | 18 | import java.awt.event.KeyEvent; 19 | import java.io.Serializable; 20 | 21 | /** 22 | * Request for a key being typed. 23 | * 24 | * @author Andreas Rudolph 25 | */ 26 | public class KeyTypeRequest implements Serializable { 27 | private static final long serialVersionUID = 1; 28 | public final char keyChar; 29 | 30 | public KeyTypeRequest() { 31 | this(KeyEvent.CHAR_UNDEFINED); 32 | } 33 | 34 | public KeyTypeRequest(char keyChar) { 35 | super(); 36 | this.keyChar = keyChar; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/io/MouseMoveRequest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.io; 17 | 18 | import java.io.Serializable; 19 | 20 | /** 21 | * Request for a mouse being moved. 22 | * 23 | * @author Andreas Rudolph 24 | */ 25 | public class MouseMoveRequest implements Serializable { 26 | private static final long serialVersionUID = 1; 27 | public final int x; 28 | public final int y; 29 | 30 | public MouseMoveRequest() { 31 | this(-1, -1); 32 | } 33 | 34 | public MouseMoveRequest(int x, int y) { 35 | super(); 36 | this.x = x; 37 | this.y = y; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/io/MousePressRequest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.io; 17 | 18 | import java.awt.event.MouseEvent; 19 | import java.io.Serializable; 20 | 21 | /** 22 | * Request for a mouse button being pressed. 23 | * 24 | * @author Andreas Rudolph 25 | */ 26 | public class MousePressRequest implements Serializable { 27 | private static final long serialVersionUID = 1; 28 | public final int buttons; 29 | 30 | public MousePressRequest() { 31 | this(MouseEvent.NOBUTTON); 32 | } 33 | 34 | public MousePressRequest(int buttons) { 35 | super(); 36 | this.buttons = buttons; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/io/MouseReleaseRequest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.io; 17 | 18 | import java.awt.event.MouseEvent; 19 | import java.io.Serializable; 20 | 21 | /** 22 | * Request for a mouse button being released. 23 | * 24 | * @author Andreas Rudolph 25 | */ 26 | public class MouseReleaseRequest implements Serializable { 27 | private static final long serialVersionUID = 1; 28 | public final int buttons; 29 | 30 | public MouseReleaseRequest() { 31 | this(MouseEvent.NOBUTTON); 32 | } 33 | 34 | public MouseReleaseRequest(int buttons) { 35 | super(); 36 | this.buttons = buttons; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/io/MouseWheelRequest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.io; 17 | 18 | import java.io.Serializable; 19 | 20 | /** 21 | * Request for the mouse wheel being rotated. 22 | * 23 | * @author Andreas Rudolph 24 | */ 25 | public class MouseWheelRequest implements Serializable { 26 | private static final long serialVersionUID = 1; 27 | public final int wheelAmt; 28 | 29 | public MouseWheelRequest() { 30 | this(0); 31 | } 32 | 33 | public MouseWheelRequest(int wheelAmt) { 34 | super(); 35 | this.wheelAmt = wheelAmt; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/io/ResponseFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.io; 17 | 18 | import java.io.Serializable; 19 | 20 | /** 21 | * Factory for delayed creation of responses. 22 | * 23 | * @author Andreas Rudolph 24 | */ 25 | public interface ResponseFactory { 26 | Serializable create(); 27 | } 28 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/io/ScreenRequest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.io; 17 | 18 | import java.io.Serializable; 19 | 20 | /** 21 | * Request for a screenshot. 22 | * 23 | * @author Andreas Rudolph 24 | */ 25 | public class ScreenRequest implements Serializable { 26 | private static final long serialVersionUID = 1; 27 | public final int maxWidth; 28 | public final int maxHeight; 29 | 30 | public ScreenRequest() { 31 | this(0, 0); 32 | } 33 | 34 | public ScreenRequest(int maxWidth, int maxHeight) { 35 | super(); 36 | this.maxWidth = maxWidth; 37 | this.maxHeight = maxHeight; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/io/ScreenResponse.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.io; 17 | 18 | import java.io.Serializable; 19 | 20 | /** 21 | * Response with a screenshot. 22 | * 23 | * @author Andreas Rudolph 24 | */ 25 | public class ScreenResponse implements Serializable { 26 | private static final long serialVersionUID = 1; 27 | public final ScreenTile[] tiles; 28 | public final int screenWidth; 29 | public final int screenHeight; 30 | public final int imageWidth; 31 | public final int imageHeight; 32 | public final int tileWidth; 33 | public final int tileHeight; 34 | 35 | public ScreenResponse() { 36 | this(null, 0, 0, 0, 0, 0, 0); 37 | } 38 | 39 | public ScreenResponse(ScreenTile[] tiles, int screenWidth, int screenHeight, int imageWidth, int imageHeight, int tileWidth, int tileHeight) { 40 | super(); 41 | this.tiles = tiles; 42 | this.screenWidth = screenWidth; 43 | this.screenHeight = screenHeight; 44 | this.imageWidth = imageWidth; 45 | this.imageHeight = imageHeight; 46 | this.tileWidth = tileWidth; 47 | this.tileHeight = tileHeight; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/io/ScreenTile.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.io; 17 | 18 | import java.io.Serializable; 19 | 20 | /** 21 | * Tile of a screenshot. 22 | * 23 | * @author Andreas Rudolph 24 | */ 25 | public class ScreenTile implements Serializable { 26 | private static final long serialVersionUID = 1; 27 | public final byte[] data; 28 | 29 | public ScreenTile() { 30 | this(null); 31 | } 32 | 33 | public ScreenTile(byte[] data) { 34 | super(); 35 | this.data = data; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/io/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Classes for communication between the applications. 19 | * 20 | * @author Andreas Rudolph 21 | */ 22 | package de.openindex.support.core.io; 23 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/monitor/DataMonitor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.monitor; 17 | 18 | import java.util.Date; 19 | import java.util.Vector; 20 | import org.slf4j.Logger; 21 | import org.slf4j.LoggerFactory; 22 | 23 | /** 24 | * Monitor, that holds multiple statistical records about data transfer. 25 | * 26 | * @author Andreas Rudolph 27 | */ 28 | @SuppressWarnings("WeakerAccess") 29 | public class DataMonitor { 30 | @SuppressWarnings("unused") 31 | private final static Logger LOGGER = LoggerFactory.getLogger(DataMonitor.class); 32 | protected Vector samples; 33 | protected final Date epoch; 34 | 35 | public DataMonitor() { 36 | samples = new Vector<>(); 37 | epoch = new Date(); 38 | } 39 | 40 | public void addSample(long byteCount, Date start, Date end) { 41 | samples.addElement(new DataSample(byteCount, start, end)); 42 | } 43 | 44 | public float getAverageRate() { 45 | long msCount = 0; 46 | long byteCount = 0; 47 | Date start; 48 | Date finish; 49 | int sampleCount = samples.size(); 50 | for (int i = 0; i < sampleCount; i++) { 51 | DataSample ds = samples.elementAt(i); 52 | 53 | if (ds.start != null) 54 | start = ds.start; 55 | else if (i > 0) { 56 | //DataSample prev = samples.elementAt(i - 1); 57 | start = ds.end; 58 | } else 59 | start = epoch; 60 | 61 | if (ds.end != null) 62 | finish = ds.end; 63 | else if (i < sampleCount - 1) { 64 | //DataSample next = samples.elementAt(i + 1); 65 | finish = ds.start; 66 | } else 67 | finish = new Date(); 68 | 69 | // Only include this sample if we could figure out a start 70 | // and finish time for it. 71 | if (start != null && finish != null) { 72 | byteCount += ds.byteCount; 73 | msCount += finish.getTime() - start.getTime(); 74 | } 75 | } 76 | 77 | float rate = 0; 78 | if (msCount > 0) { 79 | rate = 1000 * (float) byteCount / (float) msCount; 80 | } 81 | 82 | return rate; 83 | } 84 | 85 | @SuppressWarnings("unused") 86 | public float getLastRate() { 87 | int sampleCount = samples.size(); 88 | return getRateFor(sampleCount - 1); 89 | } 90 | 91 | public float getRateFor(int sampleIndex) { 92 | float rate = 0.0f; 93 | int sampleCount = samples.size(); 94 | if (sampleCount > sampleIndex && sampleIndex >= 0) { 95 | DataSample s = samples.elementAt(sampleIndex); 96 | Date start = s.start; 97 | Date end = s.end; 98 | if (start == null && sampleIndex >= 1) { 99 | DataSample prev = samples.elementAt(sampleIndex - 1); 100 | start = prev.end; 101 | } 102 | 103 | if (start != null && end != null) { 104 | long msec = end.getTime() - start.getTime(); 105 | rate = 1000 * (float) s.byteCount / (float) msec; 106 | } 107 | } 108 | 109 | return rate; 110 | } 111 | 112 | public void removeOldSamples(Date olderThan) { 113 | Vector oldSamples = samples; 114 | samples = new Vector<>(); 115 | for (DataSample sample : oldSamples) { 116 | if (!sample.end.before(olderThan)) 117 | samples.add(sample); 118 | } 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/monitor/DataSample.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.monitor; 17 | 18 | import java.util.Date; 19 | 20 | /** 21 | * Statistical record about data transfer. 22 | * 23 | * @author Andreas Rudolph 24 | */ 25 | @SuppressWarnings("WeakerAccess") 26 | public class DataSample { 27 | public final long byteCount; 28 | public final Date start; 29 | public final Date end; 30 | 31 | public DataSample(long byteCount, Date start, Date end) { 32 | this.byteCount = byteCount; 33 | this.start = start; 34 | this.end = end; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/monitor/MonitoringInputStream.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.monitor; 17 | 18 | import java.io.FilterInputStream; 19 | import java.io.IOException; 20 | import java.io.InputStream; 21 | import java.util.Date; 22 | import org.apache.commons.lang3.ObjectUtils; 23 | import org.slf4j.Logger; 24 | import org.slf4j.LoggerFactory; 25 | 26 | /** 27 | * InputStream, that collects statistical records about data transfer. 28 | * 29 | * @author Andreas Rudolph 30 | */ 31 | public class MonitoringInputStream extends FilterInputStream { 32 | @SuppressWarnings("unused") 33 | private final static Logger LOGGER = LoggerFactory.getLogger(MonitoringInputStream.class); 34 | private final DataMonitor monitor; 35 | 36 | @SuppressWarnings("unused") 37 | public MonitoringInputStream(InputStream in) { 38 | this(in, null); 39 | } 40 | 41 | public MonitoringInputStream(InputStream in, DataMonitor monitor) { 42 | super(in); 43 | this.monitor = ObjectUtils.defaultIfNull(monitor, new DataMonitor()); 44 | } 45 | 46 | @SuppressWarnings("unused") 47 | public final DataMonitor getMonitor() { 48 | return monitor; 49 | } 50 | 51 | public int read() throws IOException { 52 | Date start = new Date(); 53 | int b = super.read(); 54 | monitor.addSample(1, start, new Date()); 55 | return b; 56 | } 57 | 58 | public int read(byte data[]) throws IOException { 59 | Date start = new Date(); 60 | int cnt = super.read(data); 61 | monitor.addSample(cnt, start, new Date()); 62 | return cnt; 63 | } 64 | 65 | public int read(byte data[], int off, int len) throws IOException { 66 | Date start = new Date(); 67 | int cnt = super.read(data, off, len); 68 | monitor.addSample(cnt, start, new Date()); 69 | return cnt; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/monitor/MonitoringOutputStream.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.core.monitor; 17 | 18 | import java.io.FilterOutputStream; 19 | import java.io.IOException; 20 | import java.io.OutputStream; 21 | import java.util.Date; 22 | import org.apache.commons.lang3.ObjectUtils; 23 | import org.slf4j.Logger; 24 | import org.slf4j.LoggerFactory; 25 | 26 | /** 27 | * OutputStream, that collects statistical records about data transfer. 28 | * 29 | * @author Andreas Rudolph 30 | */ 31 | public class MonitoringOutputStream extends FilterOutputStream { 32 | @SuppressWarnings("unused") 33 | private final static Logger LOGGER = LoggerFactory.getLogger(MonitoringOutputStream.class); 34 | private final DataMonitor monitor; 35 | 36 | @SuppressWarnings("unused") 37 | public MonitoringOutputStream(OutputStream out) { 38 | this(out, null); 39 | } 40 | 41 | public MonitoringOutputStream(OutputStream out, DataMonitor monitor) { 42 | super(out); 43 | this.monitor = ObjectUtils.defaultIfNull(monitor, new DataMonitor()); 44 | } 45 | 46 | @SuppressWarnings("unused") 47 | public DataMonitor getMonitor() { 48 | return monitor; 49 | } 50 | 51 | public void write(int b) throws IOException { 52 | Date start = new Date(); 53 | super.write(b); 54 | monitor.addSample(1, start, new Date()); 55 | } 56 | 57 | public void write(byte data[]) throws IOException { 58 | Date start = new Date(); 59 | super.write(data); 60 | monitor.addSample(data.length, start, new Date()); 61 | } 62 | 63 | public void write(byte data[], int off, int len) throws IOException { 64 | Date start = new Date(); 65 | super.write(data, off, len); 66 | monitor.addSample(len, start, new Date()); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/monitor/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Classes for monitoring data transfer. 19 | * 20 | * @author Andreas Rudolph 21 | */ 22 | package de.openindex.support.core.monitor; 23 | -------------------------------------------------------------------------------- /Core/src/main/java/de/openindex/support/core/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * General classes. 19 | * 20 | * @author Andreas Rudolph 21 | */ 22 | package de.openindex.support.core; 23 | -------------------------------------------------------------------------------- /Core/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * General components. 19 | * 20 | * @author Andreas Rudolph 21 | */ 22 | module de.openindex.support.core { 23 | exports de.openindex.support.core; 24 | exports de.openindex.support.core.gui; 25 | exports de.openindex.support.core.io; 26 | exports de.openindex.support.core.monitor; 27 | exports org.imgscalr; 28 | 29 | requires transitive java.desktop; 30 | requires logback.classic; 31 | requires org.apache.commons.io; 32 | requires org.apache.commons.lang3; 33 | requires org.apache.commons.text; 34 | requires org.slf4j; 35 | } 36 | -------------------------------------------------------------------------------- /Core/src/main/java/org/imgscalr/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011 The Buzz Media, LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Classes for image scaling. 19 | *

20 | * This package bundles the development version of the imgscalr library, 21 | * that was not officially released yet. 22 | * 23 | * @author Riyad Kalla (software@thebuzzmedia.com) 24 | * @see repository of the imgscalr library 25 | */ 26 | package org.imgscalr; 27 | -------------------------------------------------------------------------------- /Customer/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | -------------------------------------------------------------------------------- /Customer/Customer.iml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Customer/mvn-clean.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd "$DIR" 24 | "$MVN" clean 25 | -------------------------------------------------------------------------------- /Customer/mvn-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd "$DIR" 24 | "$MVN" clean install 25 | -------------------------------------------------------------------------------- /Customer/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | 8 | RemoteSupportTool 9 | de.openindex.support 10 | 1.1.2 11 | 12 | 13 | RemoteSupportTool-Customer 14 | 15 | RemoteSupportTool-Customer 16 | RemoteSupportTool is a remote maintenance software entirely written in Java. 17 | https://openindex.de 18 | 19 | OpenIndex.de 20 | https://openindex.de 21 | 22 | 23 | 24 | The Apache Software License, Version 2.0 25 | http://www.apache.org/licenses/LICENSE-2.0.txt 26 | repo 27 | A business-friendly OSS license 28 | 29 | 30 | 31 | 32 | 33 | andy 34 | Andreas Rudolph 35 | andy@openindex.de 36 | OpenIndex.de 37 | https://openindex.de/ 38 | 39 | 40 | 41 | 42 | 43 | de.openindex.support 44 | RemoteSupportTool-Core 45 | 46 | 47 | net.java.dev.jna 48 | jna 49 | 50 | 51 | net.java.dev.jna 52 | jna-platform 53 | 54 | 55 | com.miglayout 56 | miglayout-swing 57 | 58 | 59 | 60 | 61 | 62 | 63 | ${project.basedir}/src/main/resources 64 | true 65 | 66 | **/*.properties 67 | **/*.html 68 | 69 | 70 | 71 | ${project.basedir}/src/main/resources 72 | false 73 | 74 | **/*.properties 75 | **/*.html 76 | 77 | 78 | 79 | 80 | 81 | org.apache.maven.plugins 82 | maven-jar-plugin 83 | 84 | 85 | 86 | de.openindex.support.customer.CustomerApplication 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /Customer/src/main/java/de/openindex/support/customer/CustomerOptions.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.customer; 17 | 18 | import de.openindex.support.core.AbstractOptions; 19 | import java.io.File; 20 | import org.apache.commons.lang3.StringUtils; 21 | import org.slf4j.Logger; 22 | import org.slf4j.LoggerFactory; 23 | 24 | /** 25 | * Options of the customer application. 26 | * 27 | * @author Andreas Rudolph 28 | */ 29 | @SuppressWarnings("WeakerAccess") 30 | public class CustomerOptions extends AbstractOptions { 31 | @SuppressWarnings("unused") 32 | private final static Logger LOGGER = LoggerFactory.getLogger(CustomerOptions.class); 33 | 34 | public CustomerOptions(File location) { 35 | super(location, CustomerApplication.SETTINGS); 36 | } 37 | 38 | public String getHost() { 39 | String defaultValue = StringUtils.trimToEmpty( 40 | settings.getString("default.host")); 41 | return StringUtils.defaultIfBlank(getProperty("host"), defaultValue); 42 | } 43 | 44 | public void setHost(String value) { 45 | if (StringUtils.isBlank(value)) 46 | remove("host"); 47 | else 48 | setProperty("host", StringUtils.trimToEmpty(value)); 49 | } 50 | 51 | public Integer getPort() { 52 | Integer defaultValue; 53 | try { 54 | defaultValue = Integer.valueOf(StringUtils.trimToNull( 55 | settings.getString("default.port"))); 56 | } catch (NumberFormatException ex) { 57 | defaultValue = 5900; 58 | } 59 | return getPropertyAsInteger("port", defaultValue); 60 | } 61 | 62 | public void setPort(Integer value) { 63 | if (value == null) 64 | remove("port"); 65 | else 66 | setProperty("port", value.toString()); 67 | } 68 | 69 | public String getScreenId() { 70 | return StringUtils.trimToNull(getProperty("screenId")); 71 | } 72 | 73 | public void setScreenId(String value) { 74 | if (StringUtils.isBlank(value)) 75 | remove("screenId"); 76 | else 77 | setProperty("screenId", StringUtils.trimToEmpty(value)); 78 | } 79 | 80 | public Boolean getSsl() { 81 | Boolean defaultValue = Boolean.valueOf(StringUtils.trimToNull( 82 | settings.getString("default.ssl"))); 83 | return getPropertyAsBoolean("ssl", defaultValue); 84 | } 85 | 86 | public boolean isSsl() { 87 | return Boolean.TRUE.equals(getSsl()); 88 | } 89 | 90 | public void setSsl(Boolean value) { 91 | if (value == null) 92 | remove("ssl"); 93 | else 94 | setProperty("ssl", value.toString()); 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /Customer/src/main/java/de/openindex/support/customer/KeyboardTest.java: -------------------------------------------------------------------------------- 1 | package de.openindex.support.customer; 2 | 3 | import de.openindex.support.customer.utils.LinuxUtils; 4 | import de.openindex.support.customer.utils.MacUtils; 5 | import de.openindex.support.customer.utils.WindowsUtils; 6 | import java.awt.GraphicsDevice; 7 | import java.awt.GraphicsEnvironment; 8 | import java.awt.Robot; 9 | import org.apache.commons.lang3.StringUtils; 10 | import org.apache.commons.lang3.SystemUtils; 11 | import org.slf4j.Logger; 12 | import org.slf4j.LoggerFactory; 13 | 14 | public class KeyboardTest { 15 | private final static Logger LOGGER = LoggerFactory.getLogger(KeyboardTest.class); 16 | 17 | public static void main(String[] args) { 18 | 19 | final StringBuilder text = new StringBuilder(); 20 | for (String arg : args) { 21 | text.append(arg).append(StringUtils.SPACE); 22 | } 23 | String txt = text.toString().trim(); 24 | if (StringUtils.isBlank(txt)) 25 | txt = "test123 - äöüß / ÄÖÜ @€ \\"; 26 | 27 | try { 28 | if (SystemUtils.IS_OS_WINDOWS) { 29 | LOGGER.debug("Send text on Windows..."); 30 | GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0]; 31 | Robot robot = new Robot(device); 32 | WindowsUtils.sendText(txt, robot); 33 | } else if (SystemUtils.IS_OS_LINUX) { 34 | LOGGER.debug("Send text on Linux..."); 35 | LinuxUtils.sendText(txt); 36 | } else if (SystemUtils.IS_OS_MAC) { 37 | LOGGER.debug("Send text on macOS..."); 38 | MacUtils.sendText(txt); 39 | } else { 40 | throw new UnsupportedOperationException("Operating system is not supported."); 41 | } 42 | } catch (Exception ex) { 43 | LOGGER.error("Can't send text!", ex); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Customer/src/main/java/de/openindex/support/customer/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Customer application. 19 | * 20 | * @author Andreas Rudolph 21 | */ 22 | package de.openindex.support.customer; 23 | -------------------------------------------------------------------------------- /Customer/src/main/java/de/openindex/support/customer/utils/mac/CoreFoundation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package de.openindex.support.customer.utils.mac; 17 | 18 | import com.sun.jna.Library; 19 | import com.sun.jna.Structure; 20 | 21 | /** 22 | * Definition (incomplete) of the Core Foundation framework. 23 | * 24 | * @author Andreas Rudolph 25 | * @see Core Foundation 26 | */ 27 | @SuppressWarnings("unused") 28 | public interface CoreFoundation extends Library { 29 | String JNA_LIBRARY_NAME = "CoreFoundation"; 30 | 31 | /** 32 | * Releases a Core Foundation object. 33 | * 34 | * @param cf A CFType object to release. This value must not be NULL. 35 | * @see CFRelease 36 | */ 37 | void CFRelease(CFTypeRef cf); 38 | 39 | /** 40 | * An untyped "generic" reference to any Core Foundation object. 41 | * 42 | * @see CFTypeRef 43 | */ 44 | class CFTypeRef extends Structure { 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Customer/src/main/java/de/openindex/support/customer/utils/mac/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * JNA libraries used on macOS systems. 19 | * 20 | * @author Andreas Rudolph 21 | */ 22 | package de.openindex.support.customer.utils.mac; 23 | -------------------------------------------------------------------------------- /Customer/src/main/java/de/openindex/support/customer/utils/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Additional classes of the customer application. 19 | * 20 | * @author Andreas Rudolph 21 | */ 22 | package de.openindex.support.customer.utils; 23 | -------------------------------------------------------------------------------- /Customer/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Customer application. 19 | * 20 | * @author Andreas Rudolph 21 | */ 22 | module de.openindex.support.customer { 23 | requires de.openindex.support.core; 24 | requires logback.classic; 25 | requires miglayout.swing; 26 | requires org.apache.commons.io; 27 | requires org.apache.commons.lang3; 28 | requires org.apache.commons.text; 29 | requires org.slf4j; 30 | requires com.sun.jna.platform; 31 | requires com.sun.jna; 32 | exports de.openindex.support.customer.utils.mac to com.sun.jna; 33 | } 34 | -------------------------------------------------------------------------------- /Customer/src/main/resources/de/openindex/support/customer/resources/application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Customer/src/main/resources/de/openindex/support/customer/resources/application.png -------------------------------------------------------------------------------- /Customer/src/main/resources/de/openindex/support/customer/resources/application.properties: -------------------------------------------------------------------------------- 1 | # 2 | # application details 3 | # 4 | 5 | name=RemoteSupportTool 6 | title=Customer Support Tool 7 | version=${project.version} 8 | website.author=https://openindex.de/ 9 | website.source=https://github.com/OpenIndex/RemoteSupportTool 10 | 11 | 12 | # 13 | # hide connection settings on application startup 14 | # 15 | 16 | connectionSettingsVisible=true 17 | 18 | 19 | # 20 | # allow users to change connection settings 21 | # 22 | 23 | connectionSettingsEditable=true 24 | 25 | 26 | # 27 | # permanently save options in user directory 28 | # 29 | 30 | permanentOptions=true 31 | 32 | 33 | # 34 | # load truststore (truststore.jks) and truststore password (truststore.jks.txt) from work directory 35 | # 36 | 37 | customTrustStore=true 38 | 39 | 40 | # 41 | # default options 42 | # 43 | 44 | default.host= 45 | default.port=5900 46 | default.ssl=false 47 | 48 | 49 | # 50 | # translations 51 | # 52 | 53 | i18n.appTitle=Customer Support Tool ${project.version} 54 | i18n.title=Remote support for our customers 55 | i18n.info=Use this program to share your screen with our support staff. 56 | i18n.host=Host 57 | i18n.port=Port 58 | i18n.screen=Screen 59 | i18n.ssl=Use SSL encryption. 60 | i18n.connect=Connect 61 | i18n.disconnect=Disconnect 62 | i18n.settings=Settings 63 | i18n.about=About… 64 | i18n.aboutTitle=About this application… 65 | i18n.quit=Quit 66 | i18n.close=Close 67 | i18n.website=Website 68 | i18n.source=Source code 69 | i18n.status.connected=Connection was established. 70 | i18n.status.connecting=Establishing the connection. 71 | i18n.status.disconnected=Connection was closed. 72 | i18n.error=Error 73 | i18n.error.connectionFailed=Can't establish connection! 74 | i18n.invalid=Your settings are invalid. 75 | i18n.invalid.host=No valid SSH hostname was specified. 76 | i18n.invalid.port=No valid port number was specified. 77 | i18n.invalid.screen=No screen was selected. 78 | -------------------------------------------------------------------------------- /Customer/src/main/resources/de/openindex/support/customer/resources/application_de.properties: -------------------------------------------------------------------------------- 1 | # 2 | # translations 3 | # 4 | 5 | i18n.appTitle=Kunden Support Tool ${project.version} 6 | i18n.title=Fernwartung für unsere Kunden 7 | i18n.info=Verwenden Sie dieses Programm um unseren Support-Mitarbeitern den Zugriff auf Ihren Bildschirm zu ermöglichen. 8 | i18n.host=Hostname 9 | i18n.port=Port 10 | i18n.screen=Bildschirm 11 | i18n.ssl=SSL-Verschlüsselung verwenden. 12 | i18n.connect=Verbinden 13 | i18n.disconnect=Trennen 14 | i18n.settings=Einstellungen 15 | i18n.about=Über… 16 | i18n.aboutTitle=Über dieses Programm… 17 | i18n.quit=Beenden 18 | i18n.close=Schließen 19 | i18n.website=Webseite 20 | i18n.source=Quelltext 21 | i18n.status.connected=Verbindung wurde hergestellt. 22 | i18n.status.connecting=Verbindung wird hergestellt. 23 | i18n.status.disconnected=Verbindung wurde getrennt. 24 | i18n.error=Fehler 25 | i18n.error.connectionFailed=Die Verbindung konnte nicht hergestellt werden! 26 | i18n.invalid=Ihre Einstellungen sind fehlerhaft. 27 | i18n.invalid.sshHost=Kein gültiger Hostname angegeben. 28 | i18n.invalid.sshPort=Die Portnummer ist ungültig. 29 | i18n.invalid.screen=Kein Bildschirm wurde ausgewählt. 30 | -------------------------------------------------------------------------------- /Customer/src/main/resources/de/openindex/support/customer/resources/branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Customer/src/main/resources/de/openindex/support/customer/resources/branding.png -------------------------------------------------------------------------------- /Customer/src/main/resources/de/openindex/support/customer/resources/icon_connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Customer/src/main/resources/de/openindex/support/customer/resources/icon_connected.png -------------------------------------------------------------------------------- /Customer/src/main/resources/de/openindex/support/customer/resources/icon_connecting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Customer/src/main/resources/de/openindex/support/customer/resources/icon_connecting.png -------------------------------------------------------------------------------- /Customer/src/main/resources/de/openindex/support/customer/resources/icon_disconnected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Customer/src/main/resources/de/openindex/support/customer/resources/icon_disconnected.png -------------------------------------------------------------------------------- /Customer/src/main/resources/de/openindex/support/customer/resources/sidebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Customer/src/main/resources/de/openindex/support/customer/resources/sidebar.png -------------------------------------------------------------------------------- /Customer/src/main/resources/de/openindex/support/customer/resources/sidebar_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Customer/src/main/resources/de/openindex/support/customer/resources/sidebar_about.png -------------------------------------------------------------------------------- /Customer/src/main/resources/de/openindex/support/customer/resources/truststore.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Customer/src/main/resources/de/openindex/support/customer/resources/truststore.jks -------------------------------------------------------------------------------- /Customer/src/main/resources/de/openindex/support/customer/resources/truststore.jks.txt: -------------------------------------------------------------------------------- 1 | VLMJ5vsIOeiuabiv 2 | -------------------------------------------------------------------------------- /Customer/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | [%level] %msg%n 8 | 9 | 10 | 11 | 12 | ${app.dir}/customer.log 13 | false 14 | true 15 | 16 | %-4relative [%thread] %-5level %logger{35} - %msg%n 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /RemoteSupportTool.iml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Staff/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | -------------------------------------------------------------------------------- /Staff/Staff.iml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Staff/mvn-clean.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd ${DIR} 24 | ${MVN} clean 25 | -------------------------------------------------------------------------------- /Staff/mvn-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd ${DIR} 24 | ${MVN} clean install 25 | -------------------------------------------------------------------------------- /Staff/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | 8 | RemoteSupportTool 9 | de.openindex.support 10 | 1.1.2 11 | 12 | 13 | RemoteSupportTool-Staff 14 | 15 | RemoteSupportTool-Staff 16 | RemoteSupportTool is a cross platform solution for remote support. 17 | https://openindex.de 18 | 19 | OpenIndex.de 20 | https://openindex.de 21 | 22 | 23 | 24 | The Apache Software License, Version 2.0 25 | http://www.apache.org/licenses/LICENSE-2.0.txt 26 | repo 27 | A business-friendly OSS license 28 | 29 | 30 | 31 | 32 | 33 | andy 34 | Andreas Rudolph 35 | andy@openindex.de 36 | OpenIndex.de 37 | https://openindex.de/ 38 | 39 | 40 | 41 | 42 | 43 | de.openindex.support 44 | RemoteSupportTool-Core 45 | 46 | 47 | com.jcraft 48 | jsch 49 | 50 | 51 | com.jcraft 52 | jzlib 53 | 54 | 55 | com.miglayout 56 | miglayout-swing 57 | 58 | 59 | 60 | 61 | 62 | 63 | ${project.basedir}/src/main/resources 64 | true 65 | 66 | **/*.properties 67 | **/*.html 68 | 69 | 70 | 71 | ${project.basedir}/src/main/resources 72 | false 73 | 74 | **/*.properties 75 | **/*.html 76 | 77 | 78 | 79 | 80 | 81 | org.apache.maven.plugins 82 | maven-jar-plugin 83 | 84 | 85 | 86 | de.openindex.support.staff.StaffApplication 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /Staff/src/main/java/de/openindex/support/staff/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Staff application. 19 | * 20 | * @author Andreas Rudolph 21 | */ 22 | package de.openindex.support.staff; 23 | -------------------------------------------------------------------------------- /Staff/src/main/java/de/openindex/support/staff/utils/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Additional classes of the staff application. 19 | * 20 | * @author Andreas Rudolph 21 | */ 22 | package de.openindex.support.staff.utils; 23 | -------------------------------------------------------------------------------- /Staff/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015-2021 OpenIndex.de. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Staff application. 19 | * 20 | * @author Andreas Rudolph 21 | */ 22 | module de.openindex.support.staff { 23 | requires de.openindex.support.core; 24 | requires jsch; 25 | requires logback.classic; 26 | requires miglayout.swing; 27 | requires org.apache.commons.io; 28 | requires org.apache.commons.lang3; 29 | requires org.apache.commons.text; 30 | requires org.slf4j; 31 | } 32 | -------------------------------------------------------------------------------- /Staff/src/main/resources/de/openindex/support/staff/resources/application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Staff/src/main/resources/de/openindex/support/staff/resources/application.png -------------------------------------------------------------------------------- /Staff/src/main/resources/de/openindex/support/staff/resources/application.properties: -------------------------------------------------------------------------------- 1 | # 2 | # application details 3 | # 4 | 5 | name=RemoteSupportTool 6 | title=Staff Support Tool 7 | version=${project.version} 8 | website.author=https://openindex.de/ 9 | website.source=https://github.com/OpenIndex/RemoteSupportTool 10 | 11 | 12 | # 13 | # permanently save options in user directory 14 | # 15 | 16 | permanentOptions=true 17 | 18 | 19 | # 20 | # check host keys for SSH connections 21 | # 22 | 23 | sshHostKeyCheck=true 24 | 25 | 26 | # 27 | # load keystore (keystore.jks) and keystore password (keystore.jks.txt) from work directory 28 | # 29 | 30 | customKeyStore=true 31 | 32 | 33 | # 34 | # default options 35 | # 36 | 37 | default.localPort=5900 38 | default.ssh=false 39 | default.sshHost= 40 | default.sshKey= 41 | default.sshPort=22 42 | default.sshKeyAuth=false 43 | default.sshRemotePort=12345 44 | default.sshUser= 45 | default.ssl=false 46 | 47 | 48 | # 49 | # translations 50 | # 51 | 52 | i18n.appTitle=Staff Support Tool ${project.version} 53 | i18n.port=Port 54 | i18n.sslEncryption=SSL encryption 55 | i18n.sshTunneling=SSH tunneling 56 | i18n.sshHost=SSH host 57 | i18n.sshPort=SSH port 58 | i18n.sshRemotePort=Remote port 59 | i18n.sshUser=SSH user 60 | i18n.sshKey=SSH key 61 | i18n.sshKeySelect=Select private key. 62 | i18n.sshKeyAuth=Authentication via public key. 63 | i18n.start=Start 64 | i18n.stop=Stop 65 | i18n.options=Options 66 | i18n.actions=Actions 67 | i18n.sendKeyboardInput=Send keyboard input 68 | i18n.sendMouseInput=Send mouse input 69 | i18n.copyText=Copy text 70 | i18n.copyTextTitle=Paste on the remote machine 71 | i18n.copyTextDefault=Enter the text you like to copy into the clipboard of the remote machine. 72 | i18n.about=About… 73 | i18n.aboutTitle=About this application… 74 | i18n.quit=Quit 75 | i18n.close=Close 76 | i18n.submit=Submit 77 | i18n.cancel=Cancel 78 | i18n.website=Website 79 | i18n.source=Source code 80 | i18n.listening=Listening at 81 | i18n.connectionClosed=Connection was closed. 82 | i18n.sshAuth=SSH authentication 83 | i18n.sshAuthPassphrase=Enter your SSH passphrase. 84 | i18n.sshAuthPassword=Enter your SSH password. 85 | i18n.sshQuestion=Question about SSH connection: 86 | i18n.sshInformation=Information about SSH connection: 87 | i18n.information=Information 88 | i18n.question=Question 89 | i18n.error=Error 90 | i18n.error.sshTunnelFailed=Can't setup SSH tunnel! 91 | i18n.error.socketFailed=Can't setup server socket! 92 | i18n.error.communicationFailed=Can't initiate communication! 93 | i18n.invalid=Your settings are invalid. 94 | i18n.invalid.port=No valid local port number was specified. 95 | i18n.invalid.keystoreNotConfigured=No keystore configured. 96 | i18n.invalid.keystoreNotFound=No keystore found at: 97 | i18n.invalid.keystorePasswordMissing=No keystore password configured. 98 | i18n.invalid.sshHost=No valid SSH hostname was specified. 99 | i18n.invalid.sshPort=No valid SSH port number was specified. 100 | i18n.invalid.sshRemotePort=No valid remote port number was specified. 101 | i18n.invalid.sshUser=No valid SSH username was specified. 102 | i18n.invalid.sshKey=No valid SSH key was selected. 103 | -------------------------------------------------------------------------------- /Staff/src/main/resources/de/openindex/support/staff/resources/application_de.properties: -------------------------------------------------------------------------------- 1 | # 2 | # translations 3 | # 4 | 5 | i18n.appTitle=Mitarbeiter Support Tool ${project.version} 6 | i18n.port=Port 7 | i18n.sslEncryption=SSL-Verschlüsselung 8 | i18n.sshTunneling=SSH-Tunnel 9 | i18n.sshHost=SSH-Host 10 | i18n.sshPort=SSH-Port 11 | i18n.sshRemotePort=Entfernter Port 12 | i18n.sshUser=SSH-Benutzer 13 | i18n.sshKey=SSH-Schlüssel 14 | i18n.sshKeySelect=Privaten Schlüssel wählen. 15 | i18n.sshKeyAuth=Authentifizierung via öffentlichem Schlüssel. 16 | i18n.start=Start 17 | i18n.stop=Stop 18 | i18n.options=Optionen 19 | i18n.actions=Aktionen 20 | i18n.sendKeyboardInput=Tastatur-Eingaben senden 21 | i18n.sendMouseInput=Maus-Eingaben senden 22 | i18n.copyText=Text kopieren 23 | i18n.copyTextTitle=Auf entfernte Maschine kopieren 24 | i18n.copyTextDefault=Tragen Sie den Text ein, der in die Zwischenablage der entfernten Maschine kopiert werden soll. 25 | i18n.about=Über… 26 | i18n.aboutTitle=Über dieses Programm… 27 | i18n.quit=Beenden 28 | i18n.close=Schließen 29 | i18n.submit=Übernehmen 30 | i18n.cancel=Abbrechen 31 | i18n.website=Webseite 32 | i18n.source=Quelltext 33 | i18n.listening=Lausche auf 34 | i18n.connectionClosed=Verbindung wurde getrennt. 35 | i18n.sshAuth=SSH-Authentifizierung 36 | i18n.sshAuthPassphrase=Tragen Sie Ihre SSH-Passphrase ein. 37 | i18n.sshAuthPassword=Tragen Sie Ihr SSH-Passwort ein. 38 | i18n.sshQuestion=Frage zur SSH-Verbindung: 39 | i18n.sshInformation=Information zur SSH-Verbindung: 40 | i18n.information=Information 41 | i18n.question=Frage 42 | i18n.error=Fehler 43 | i18n.error.sshTunnelFailed=SSH-Tunnel kann nicht erzeugt werden! 44 | i18n.error.socketFailed=Server-Socket kann nicht erzeugt werden! 45 | i18n.error.communicationFailed=Die Kommunikation ist fehlgeschlagen! 46 | i18n.invalid=Ihre Einstellungen sind fehlerhaft. 47 | i18n.invalid.port=Die lokale Portnummer ist ungültig. 48 | i18n.invalid.keystoreNotConfigured=Kein Keystore wurde konfiguriert. 49 | i18n.invalid.keystoreNotFound=Kein Keystore gefunden unter: 50 | i18n.invalid.keystorePasswordMissing=Keine Passwort zum Keystore konfiguriert. 51 | i18n.invalid.sshHost=Kein gültiger SSH-Hostname angegeben. 52 | i18n.invalid.sshPort=Die SSH-Portnummer ist ungültig. 53 | i18n.invalid.sshRemotePort=Die entfernte Portnummer ist ungültig. 54 | i18n.invalid.sshUser=Kein gültiger SSH-Benutzername angegeben. 55 | i18n.invalid.sshKey=Kein gültiger SSH-Schlüssel ausgewählt. 56 | -------------------------------------------------------------------------------- /Staff/src/main/resources/de/openindex/support/staff/resources/branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Staff/src/main/resources/de/openindex/support/staff/resources/branding.png -------------------------------------------------------------------------------- /Staff/src/main/resources/de/openindex/support/staff/resources/icon_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Staff/src/main/resources/de/openindex/support/staff/resources/icon_download.png -------------------------------------------------------------------------------- /Staff/src/main/resources/de/openindex/support/staff/resources/icon_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Staff/src/main/resources/de/openindex/support/staff/resources/icon_info.png -------------------------------------------------------------------------------- /Staff/src/main/resources/de/openindex/support/staff/resources/icon_upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Staff/src/main/resources/de/openindex/support/staff/resources/icon_upload.png -------------------------------------------------------------------------------- /Staff/src/main/resources/de/openindex/support/staff/resources/keystore.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Staff/src/main/resources/de/openindex/support/staff/resources/keystore.jks -------------------------------------------------------------------------------- /Staff/src/main/resources/de/openindex/support/staff/resources/keystore.jks.txt: -------------------------------------------------------------------------------- 1 | LYQH3Yu0FL3HiY9I 2 | -------------------------------------------------------------------------------- /Staff/src/main/resources/de/openindex/support/staff/resources/sidebar_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/Staff/src/main/resources/de/openindex/support/staff/resources/sidebar_about.png -------------------------------------------------------------------------------- /Staff/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | [%level] %msg%n 8 | 9 | 10 | 11 | 12 | ${app.dir}/staff.log 13 | false 14 | true 15 | 16 | %-4relative [%thread] %-5level %logger{35} - %msg%n 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /mvn-clean.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd "$DIR" 24 | "$MVN" clean 25 | -------------------------------------------------------------------------------- /mvn-deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd "$DIR" 24 | "$MVN" -Prelease -Pdeploy clean deploy 25 | -------------------------------------------------------------------------------- /mvn-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd "$DIR" 24 | "$MVN" clean install 25 | -------------------------------------------------------------------------------- /mvn-release.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd "$DIR" 24 | "$MVN" -Prelease clean install 25 | -------------------------------------------------------------------------------- /mvn-tidy-pom.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd "$DIR" 24 | "$MVN" tidy:pom 25 | -------------------------------------------------------------------------------- /release/.env.example: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Environment variables for build scripts. 4 | # Copy this file to ".env" and enter your environment variables. 5 | # 6 | 7 | # Bundle name for Staff tool in generated bundles. 8 | STAFF_TOOL="StaffSupportTool" 9 | 10 | # Name for Customer tool in generated bundles. 11 | CUSTOMER_TOOL="CustomerSupportTool" 12 | 13 | # Version number used in generated bundles. 14 | VERSION="1.1.2" 15 | 16 | # In order to sign the application for yourself, you need to obtain a Developer ID from Apple and set the 17 | # name of your signature key in the APPLE_CODESIGN_KEY variable. 18 | APPLE_CODESIGN_KEY="" 19 | 20 | # In order to notarize the application, you need to obtain a Developer ID from Apple and set its email address in the 21 | # APPLE_DEVELOPER_MAIL variable. 22 | APPLE_DEVELOPER_MAIL="" 23 | 24 | # In order to notarize the application, you need to obtain a Developer ID from Apple and set its password in the 25 | # APPLE_DEVELOPER_PASSWORD variable. If no password is provided, you need to enter it manually during the notification 26 | # process. 27 | # 28 | # Notice: You can't use the global password. Instead you need to login at https://appleid.apple.com/ with your account 29 | # and create an application specific password. 30 | APPLE_DEVELOPER_PASSWORD="" 31 | -------------------------------------------------------------------------------- /release/.gitignore: -------------------------------------------------------------------------------- 1 | /.env 2 | /signed 3 | /notarized 4 | /target 5 | /website 6 | -------------------------------------------------------------------------------- /release/bundle-linux.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Create application bundles for Linux systems. 4 | # Copyright 2015-2021 OpenIndex.de 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | # ---------------------------------------------------------------------------- 20 | # NOTICE: This script requires an ".env" file in the same folder. If it is not 21 | # available, create a copy of ".env.example" and place your settings inside. 22 | # ---------------------------------------------------------------------------- 23 | 24 | # ---------------------------------------------------------------------------- 25 | # You can find further information at: 26 | # https://github.com/OpenIndex/RemoteSupportTool/wiki/Development#create-application-bundles 27 | # ---------------------------------------------------------------------------- 28 | 29 | MAKESELF="makeself" 30 | DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) 31 | TARGET_DIR="${DIR}/target" 32 | FOUND="0" 33 | set -e 34 | 35 | STAFF_TOOL="" 36 | CUSTOMER_TOOL="" 37 | VERSION="" 38 | if [[ -f "${DIR}/.env" ]]; then 39 | source "${DIR}/.env" 40 | fi 41 | 42 | if [[ -d "${TARGET_DIR}/Staff/linux-x86" ]]; then 43 | FOUND="1" 44 | echo "" 45 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 46 | printf "\e[1m\e[92m Creating %s.linux-x86.sh...\e[0m\n" "${STAFF_TOOL}-${VERSION}" 47 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 48 | echo "" 49 | rm -f "${TARGET_DIR}/${STAFF_TOOL}-${VERSION}.linux-x86.sh" 50 | cd "${TARGET_DIR}/Staff/linux-x86" 51 | "$MAKESELF" --tar-quietly \ 52 | . \ 53 | "${TARGET_DIR}/${STAFF_TOOL}-${VERSION}.linux-x86.sh" \ 54 | "${STAFF_TOOL} ${VERSION}" \ 55 | bin/Start.sh 56 | fi 57 | 58 | if [[ -d "${TARGET_DIR}/Staff/linux-x86-64" ]]; then 59 | FOUND="1" 60 | echo "" 61 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 62 | printf "\e[1m\e[92m Creating %s.linux-x86-64.sh...\e[0m\n" "${STAFF_TOOL}-${VERSION}" 63 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 64 | echo "" 65 | rm -f "${TARGET_DIR}/${STAFF_TOOL}-${VERSION}.linux-x86-64.sh" 66 | cd "${TARGET_DIR}/Staff/linux-x86-64" 67 | "$MAKESELF" --tar-quietly \ 68 | . \ 69 | "${TARGET_DIR}/${STAFF_TOOL}-${VERSION}.linux-x86-64.sh" \ 70 | "${STAFF_TOOL} ${VERSION}" \ 71 | bin/Start.sh 72 | fi 73 | 74 | if [[ -d "${TARGET_DIR}/Customer/linux-x86" ]]; then 75 | FOUND="1" 76 | echo "" 77 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 78 | printf "\e[1m\e[92m Creating %s.linux-x86.sh...\e[0m\n" "${CUSTOMER_TOOL}-${VERSION}" 79 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 80 | echo "" 81 | rm -f "${TARGET_DIR}/${CUSTOMER_TOOL}-${VERSION}.linux-x86.sh" 82 | cd "${TARGET_DIR}/Customer/linux-x86" 83 | "$MAKESELF" --tar-quietly \ 84 | . \ 85 | "${TARGET_DIR}/${CUSTOMER_TOOL}-${VERSION}.linux-x86.sh" \ 86 | "${CUSTOMER_TOOL} ${VERSION}" \ 87 | bin/Start.sh 88 | fi 89 | 90 | if [[ -d "${TARGET_DIR}/Customer/linux-x86-64" ]]; then 91 | FOUND="1" 92 | echo "" 93 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 94 | printf "\e[1m\e[92m Creating %s.linux-x86-64.sh...\e[0m\n" "${CUSTOMER_TOOL}-${VERSION}" 95 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 96 | echo "" 97 | rm -f "${TARGET_DIR}/${CUSTOMER_TOOL}-${VERSION}.linux-x86-64.sh" 98 | cd "${TARGET_DIR}/Customer/linux-x86-64" 99 | "$MAKESELF" --tar-quietly \ 100 | . \ 101 | "${TARGET_DIR}/${CUSTOMER_TOOL}-${VERSION}.linux-x86-64.sh" \ 102 | "${CUSTOMER_TOOL} ${VERSION}" \ 103 | bin/Start.sh 104 | fi 105 | 106 | if [[ "${FOUND}" == "0" ]]; then 107 | echo "ERROR: No Linux packages were found at:" 108 | echo "${TARGET_DIR}" 109 | fi 110 | -------------------------------------------------------------------------------- /release/codesign-macos.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Create signed application bundles for macOS systems. 4 | # Copyright 2015-2021 OpenIndex.de 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | # ---------------------------------------------------------------------------- 20 | # NOTICE: This script has to be executed on a macOS system with the 21 | # required certificate available. In order to sign the application for 22 | # yourself, you need to obtain a Developer ID from Apple and set some 23 | # environment variables in the ".env" file. If it is not available, create a 24 | # copy of ".env.example". 25 | # ---------------------------------------------------------------------------- 26 | 27 | # ---------------------------------------------------------------------------- 28 | # You can find further information at: 29 | # https://github.com/OpenIndex/RemoteSupportTool/wiki/Development#sign-application-bundle-for-macos 30 | # ---------------------------------------------------------------------------- 31 | 32 | DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) 33 | TARGET_DIR="${DIR}/target" 34 | SIGNED_DIR="${DIR}/signed" 35 | FOUND="0" 36 | set -e 37 | 38 | APPLE_CODESIGN_KEY="" 39 | if [[ -f "${DIR}/.env" ]]; then 40 | source "${DIR}/.env" 41 | fi 42 | 43 | if [[ -z "${APPLE_CODESIGN_KEY}" ]]; then 44 | echo "ERROR: No signature key was specified!" 45 | exit 1 46 | fi 47 | 48 | mkdir -p "${SIGNED_DIR}" 49 | export LANG="en_US.UTF-8" 50 | 51 | for f in "${TARGET_DIR}"/*.macos-*.tar.gz; do 52 | 53 | if [[ "${FOUND}" == "0" ]]; then 54 | echo "" 55 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 56 | printf "\e[1m\e[92m Unlocking keychain...\e[0m\n" 57 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 58 | echo "" 59 | security unlock-keychain 60 | fi 61 | 62 | FOUND="1" 63 | archive="$(basename "${f}")" 64 | archive_name="$(basename "${archive}" ".tar.gz")" 65 | signed_dir="${SIGNED_DIR}/${archive_name}" 66 | rm -Rf "${signed_dir}" 67 | mkdir -p "${signed_dir}" 68 | 69 | echo "" 70 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 71 | printf "\e[1m\e[92m Processing %s...\e[0m\n" "${archive}" 72 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 73 | 74 | echo "" 75 | echo "Extracting application bundle." 76 | tar xfz "${f}" -C "${signed_dir}" 77 | pkg="$(ls -1 "${signed_dir}")" 78 | signed_bundle="${signed_dir}/${pkg}" 79 | 80 | echo "" 81 | echo "Signing application bundle at:" 82 | echo "" 83 | echo "${signed_bundle}" 84 | codesign --deep --force --verify --sign "${APPLE_CODESIGN_KEY}" --options runtime "${signed_bundle}" 85 | 86 | echo "" 87 | echo "Verifying signature:" 88 | codesign --verify --verbose=4 "${signed_bundle}" 89 | #codesign --display --verbose=4 "${signed_bundle}" 90 | 91 | echo "" 92 | echo "Verifying access for Gatekeeper:" 93 | spctl --assess --verbose=4 --type execute "${signed_dir}/${pkg}" 94 | 95 | echo "" 96 | echo "Compressing application bundle to:" 97 | signed_tar="${signed_dir}/${archive_name}.tar.gz" 98 | echo "${signed_tar}" 99 | cd "${signed_dir}" 100 | rm -f "${signed_tar}" 101 | tar cfz "${signed_tar}" "$(basename "${signed_bundle}")" 102 | 103 | echo "" 104 | echo "Compressing application bundle to:" 105 | signed_zip="${signed_dir}/${archive_name}.zip" 106 | echo "${signed_zip}" 107 | cd "${signed_dir}" 108 | rm -f "${signed_zip}" 109 | # According to Apples documentation "Customizing the Notarization Workflow" at 110 | # https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow 111 | # we can't use the ZIP command, as it leads to problems in the notarization process. 112 | # Therefore we're using ditto instead. 113 | #zip -r -q "${signed_zip}" "$(basename "${signed_bundle}")" 114 | ditto -c -k --keepParent "$(basename "${signed_bundle}")" "${signed_zip}" 115 | 116 | done 117 | 118 | if [[ "${FOUND}" == "0" ]]; then 119 | echo "ERROR: No macOS packages were found at:" 120 | echo "${TARGET_DIR}" 121 | exit 1 122 | fi 123 | -------------------------------------------------------------------------------- /release/mvn-clean.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd "$DIR" 24 | "$MVN" clean 25 | -------------------------------------------------------------------------------- /release/mvn-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd "$DIR" 24 | "$MVN" clean install 25 | -------------------------------------------------------------------------------- /release/mvn-release.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | MVN="mvn" 19 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 20 | 21 | set -e 22 | export LANG=en 23 | cd "$DIR" 24 | "$MVN" -Prelease clean install 25 | -------------------------------------------------------------------------------- /release/notarize-macos-finish.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Creates a notarized application bundle after upload and approval. 4 | # Copyright 2015-2021 OpenIndex.de 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | # ---------------------------------------------------------------------------- 20 | # You can find further information at: 21 | # https://github.com/OpenIndex/RemoteSupportTool/wiki/Development#notarizing-application-bundle-for-macos 22 | # ---------------------------------------------------------------------------- 23 | 24 | DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) 25 | SIGNED_DIR="${DIR}/signed" 26 | NOTARIZED_DIR="${DIR}/notarized" 27 | FOUND="0" 28 | set -e 29 | 30 | if [[ -n "${1}" ]]; then 31 | # Using application bundle, provided as first command line argument. 32 | PKG_DIR="${SIGNED_DIR}/$(basename "$1")" 33 | else 34 | # Otherwise, showing available application bundles and let the user select. 35 | for f in "${SIGNED_DIR}"/*; do 36 | if [[ -d "${f}" ]]; then 37 | n=$(basename "${f}") 38 | if [[ -f "${f}/${n}.zip" ]]; then 39 | if [[ "${FOUND}" == "0" ]]; then 40 | echo "" 41 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 42 | printf "\e[1m\e[92m Available signed macOS application bundles:\e[0m\n" 43 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 44 | echo "" 45 | fi 46 | FOUND="1" 47 | echo "${n}" 48 | fi 49 | fi 50 | done 51 | 52 | if [[ "${FOUND}" == "0" ]]; then 53 | echo "ERROR: No signed macOS packages were found at:" 54 | echo "${SIGNED_DIR}" 55 | exit 1 56 | fi 57 | 58 | echo "" 59 | echo "Which of these bundles were successfully notarized and are ready for release?" 60 | read -r -p "Enter one of the packages names listed above: " pkg 61 | 62 | PKG_DIR="${SIGNED_DIR}/${pkg}" 63 | fi 64 | 65 | if [[ ! -d "${PKG_DIR}" ]]; then 66 | echo "" 67 | echo "ERROR: The application bundle does not exist in \"${SIGNED_DIR}\"!" 68 | exit 1 69 | fi 70 | 71 | PKG_NAME="$(basename "${PKG_DIR}")" 72 | 73 | PKG_BUNDLE=$(find "${PKG_DIR}" -maxdepth 1 -type d -name "*.app" | head -1) 74 | if [[ ! -d "${PKG_BUNDLE}" ]]; then 75 | echo "" 76 | echo "ERROR: Na application bundle found within \"${SIGNED_DIR}\"!" 77 | exit 1 78 | fi 79 | 80 | echo "" 81 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 82 | printf "\e[1m\e[92m Finishing notarization for %s...\e[0m\n" "${PKG_NAME}" 83 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 84 | echo "" 85 | 86 | xcrun stapler staple -v "${PKG_BUNDLE}" 87 | 88 | mkdir -p "${NOTARIZED_DIR}" 89 | NOTARIZED_ARCHIVE="${NOTARIZED_DIR}/${PKG_NAME}.tar.gz" 90 | 91 | echo "" 92 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 93 | printf "\e[1m\e[92m Archiving notarized application bundle...\e[0m\n" 94 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 95 | echo "" 96 | echo "Archiving notarized application bundle to:" 97 | echo "${NOTARIZED_ARCHIVE}" 98 | cd "${PKG_DIR}" 99 | tar cfz "${NOTARIZED_ARCHIVE}" "$(basename "${PKG_BUNDLE}")" 100 | 101 | echo "" 102 | echo "It seems, that the notarization process finished successfully!" 103 | echo "Please check the output above for the message:" 104 | echo " \"The staple and validate action worked!\"" 105 | echo "" 106 | -------------------------------------------------------------------------------- /release/notarize-macos-verify.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Verifies the status of a notarization request. 4 | # Copyright 2015-2021 OpenIndex.de 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | # ---------------------------------------------------------------------------- 20 | # NOTICE: This script has to be executed on a macOS system with the 21 | # required certificate available. In order to sign the application for 22 | # yourself, you need to obtain a Developer ID from Apple and set some 23 | # environment variables in the ".env" file. If it is not available, create a 24 | # copy of ".env.example". 25 | # ---------------------------------------------------------------------------- 26 | 27 | # ---------------------------------------------------------------------------- 28 | # You can find further information at: 29 | # https://github.com/OpenIndex/RemoteSupportTool/wiki/Development#notarizing-application-bundle-for-macos 30 | # ---------------------------------------------------------------------------- 31 | 32 | DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) 33 | SIGNED_DIR="${DIR}/signed" 34 | FOUND="0" 35 | set -e 36 | 37 | APPLE_DEVELOPER_MAIL="" 38 | APPLE_DEVELOPER_PASSWORD="" 39 | if [[ -f "${DIR}/.env" ]]; then 40 | source "${DIR}/.env" 41 | fi 42 | 43 | APPLE_DEVELOPER="--username ${APPLE_DEVELOPER_MAIL}" 44 | if [[ -n "${APPLE_DEVELOPER_PASSWORD}" ]]; then 45 | APPLE_DEVELOPER="${APPLE_DEVELOPER} --password ${APPLE_DEVELOPER_PASSWORD}" 46 | fi 47 | 48 | if [[ -n "${1}" ]]; then 49 | echo "" 50 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 51 | printf "\e[1m\e[92m Verifying notarization %s...\e[0m\n" "${1}" 52 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 53 | echo "" 54 | 55 | xcrun altool \ 56 | --notarization-info "${1}" \ 57 | ${APPLE_DEVELOPER} 58 | 59 | echo "" 60 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 61 | printf "\e[1m\e[92m Finished verification.\e[0m\n" 62 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 63 | echo "" 64 | 65 | echo "The application bundle was successfully notarized, if " 66 | echo "" 67 | echo " \"Status: success\"" 68 | echo " \"Status Message: Package Approved\"" 69 | echo "" 70 | echo "is shown in the response. In this case you can finally build the notarized package with:" 71 | echo "" 72 | echo "notarize-macos-finish.sh" 73 | echo "" 74 | 75 | else 76 | echo "" 77 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 78 | printf "\e[1m\e[92m Showing notarization history...\e[0m\n" 79 | printf "\e[1m\e[92m=======================================================================\e[0m\n" 80 | echo "" 81 | 82 | xcrun altool \ 83 | --notarization-history 0 \ 84 | ${APPLE_DEVELOPER} 85 | fi 86 | -------------------------------------------------------------------------------- /release/openjdk-init.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Build all supported OpenJDK runtime environments. 4 | # Copyright 2015-2021 OpenIndex.de 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 20 | set -e 21 | 22 | init() { 23 | echo "" 24 | printf "\e[1m\e[92m=================================================\e[0m\n" 25 | printf "\e[1m\e[92m launching %s\e[0m\n" "$1" 26 | printf "\e[1m\e[92m=================================================\e[0m\n" 27 | echo "" 28 | exec "$1" 29 | } 30 | export -f init 31 | 32 | cd "${DIR}" 33 | find "src/openjdk/" \ 34 | -maxdepth 1 \ 35 | -type f \ 36 | -name "init-*.sh" \ 37 | -exec bash -c 'init {}' \; 38 | -------------------------------------------------------------------------------- /release/src/assembly/customer-linux-x86-64.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | Server-linux-x86-64 7 | linux-x86-64 8 | true 9 | 10 | 11 | dir 12 | 13 | 14 | 15 | 16 | 17 | src/openjdk/runtime/linux-x86-64 18 | 19 | 20 | 21 | 22 | 23 | src/scripts/Customer.sh 24 | Start.sh 25 | bin 26 | unix 27 | 0755 28 | 29 | 30 | ${project.parent.basedir}/LICENSE.txt 31 | LICENSE.txt 32 | 33 | unix 34 | 0644 35 | 36 | 37 | 38 | 39 | 40 | modules 41 | false 42 | 43 | 44 | ${project.groupId}:RemoteSupportTool-Staff:*:* 45 | com.jcraft:*:*:* 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /release/src/assembly/customer-linux-x86.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | Server-linux-x86 7 | linux-x86 8 | true 9 | 10 | 11 | dir 12 | 13 | 14 | 15 | 16 | 17 | src/openjdk/runtime/linux-x86 18 | 19 | 20 | 21 | 22 | 23 | src/scripts/Customer.sh 24 | Start.sh 25 | bin 26 | unix 27 | 0755 28 | 29 | 30 | ${project.parent.basedir}/LICENSE.txt 31 | LICENSE.txt 32 | 33 | unix 34 | 0644 35 | 36 | 37 | 38 | 39 | 40 | modules 41 | false 42 | 43 | 44 | ${project.groupId}:RemoteSupportTool-Staff:*:* 45 | com.jcraft:*:*:* 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /release/src/assembly/customer-macos-x86-64.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | Server-macos-x86-64 7 | macos-x86-64 8 | true 9 | 10 | 11 | dir 12 | 13 | 14 | 15 | 16 | 17 | src/openjdk/runtime/macos-x86-64 18 | 19 | 20 | 21 | 22 | 23 | src/scripts/Customer.sh 24 | Start.sh 25 | bin 26 | unix 27 | 0755 28 | 29 | 30 | ${project.parent.basedir}/LICENSE.txt 31 | LICENSE.txt 32 | 33 | unix 34 | 0644 35 | 36 | 37 | ${project.basedir}/src/icons/desktopshare.icns 38 | icon.icns 39 | share 40 | 0644 41 | 42 | 43 | 44 | 45 | 46 | modules 47 | false 48 | 49 | 50 | ${project.groupId}:RemoteSupportTool-Staff:*:* 51 | com.jcraft:*:*:* 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /release/src/assembly/customer-windows-x86-64.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | Server-windows-x86-64 7 | windows-x86-64 8 | true 9 | 10 | 11 | dir 12 | 13 | 14 | 15 | 16 | 17 | src/openjdk/runtime/windows-x86-64 18 | 0644 19 | 20 | 21 | 22 | 23 | 24 | src/scripts/Customer.bat 25 | Start.bat 26 | bin 27 | windows 28 | 29 | 30 | ${project.parent.basedir}/LICENSE.txt 31 | LICENSE.txt 32 | 33 | windows 34 | 0644 35 | 36 | 37 | target/launch4j/Customer-x86-64.exe 38 | Start.exe 39 | bin 40 | 0644 41 | 42 | 43 | 44 | 45 | 46 | modules 47 | false 48 | 49 | 50 | ${project.groupId}:RemoteSupportTool-Staff:*:* 51 | com.jcraft:*:*:* 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /release/src/assembly/customer-windows-x86.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | Server-windows-x86 7 | windows-x86 8 | true 9 | 10 | 11 | dir 12 | 13 | 14 | 15 | 16 | 17 | src/openjdk/runtime/windows-x86 18 | 0644 19 | 20 | 21 | 22 | 23 | 24 | src/scripts/Customer.bat 25 | Start.bat 26 | bin 27 | windows 28 | 29 | 30 | ${project.parent.basedir}/LICENSE.txt 31 | LICENSE.txt 32 | 33 | windows 34 | 0644 35 | 36 | 37 | target/launch4j/Customer-x86.exe 38 | Start.exe 39 | bin 40 | 0644 41 | 42 | 43 | 44 | 45 | 46 | modules 47 | false 48 | 49 | 50 | ${project.groupId}:RemoteSupportTool-Staff:*:* 51 | com.jcraft:*:*:* 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /release/src/assembly/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | modules 7 | ${project.parent.artifactId}-${project.version} 8 | false 9 | 10 | 11 | dir 12 | 13 | 14 | 15 | 16 | true 17 | 18 | 19 | 20 | ${artifact.artifactId}-${artifact.version}${dashClassifier?}.${artifact.extension} 21 | 22 | false 23 | 24 | ${project.groupId}:* 25 | 26 | 27 | 28 | 58 | 59 | 60 | 61 | 62 | 63 | false 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /release/src/assembly/staff-linux-x86-64.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | Client-linux-x86-64 7 | linux-x86-64 8 | true 9 | 10 | 11 | dir 12 | 13 | 14 | 15 | 16 | 17 | src/openjdk/runtime/linux-x86-64 18 | 19 | 20 | 21 | 22 | 23 | src/scripts/Staff.sh 24 | Start.sh 25 | bin 26 | unix 27 | 0755 28 | 29 | 30 | ${project.parent.basedir}/LICENSE.txt 31 | LICENSE.txt 32 | 33 | unix 34 | 0644 35 | 36 | 37 | 38 | 39 | 40 | modules 41 | false 42 | 43 | 44 | ${project.groupId}:RemoteSupportTool-Customer:*:* 45 | net.java.dev.jna:*:*:* 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /release/src/assembly/staff-linux-x86.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | Client-linux-x86 7 | linux-x86 8 | true 9 | 10 | 11 | dir 12 | 13 | 14 | 15 | 16 | 17 | src/openjdk/runtime/linux-x86 18 | 19 | 20 | 21 | 22 | 23 | src/scripts/Staff.sh 24 | Start.sh 25 | bin 26 | unix 27 | 0755 28 | 29 | 30 | ${project.parent.basedir}/LICENSE.txt 31 | LICENSE.txt 32 | 33 | unix 34 | 0644 35 | 36 | 37 | 38 | 39 | 40 | modules 41 | false 42 | 43 | 44 | ${project.groupId}:RemoteSupportTool-Customer:*:* 45 | net.java.dev.jna:*:*:* 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /release/src/assembly/staff-macos-x86-64.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | Client-macos-x86-64 7 | macos-x86-64 8 | true 9 | 10 | 11 | dir 12 | 13 | 14 | 15 | 16 | 17 | src/openjdk/runtime/macos-x86-64 18 | 19 | 20 | 21 | 22 | 23 | src/scripts/Staff.sh 24 | Start.sh 25 | bin 26 | unix 27 | 0755 28 | 29 | 30 | ${project.parent.basedir}/LICENSE.txt 31 | LICENSE.txt 32 | 33 | unix 34 | 0644 35 | 36 | 37 | ${project.basedir}/src/icons/help.icns 38 | icon.icns 39 | share 40 | 0644 41 | 42 | 43 | 44 | 45 | 46 | modules 47 | false 48 | 49 | 50 | ${project.groupId}:RemoteSupportTool-Customer:*:* 51 | net.java.dev.jna:*:*:* 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /release/src/assembly/staff-windows-x86-64.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | Client-windows-x86-64 7 | windows-x86-64 8 | true 9 | 10 | 11 | dir 12 | 13 | 14 | 15 | 16 | 17 | src/openjdk/runtime/windows-x86-64 18 | 0644 19 | 20 | 21 | 22 | 23 | 24 | src/scripts/Staff.bat 25 | Start.bat 26 | bin 27 | windows 28 | 29 | 30 | ${project.parent.basedir}/LICENSE.txt 31 | LICENSE.txt 32 | 33 | windows 34 | 0644 35 | 36 | 37 | target/launch4j/Staff-x86-64.exe 38 | Start.exe 39 | bin 40 | 0644 41 | 42 | 43 | 44 | 45 | 46 | modules 47 | false 48 | 49 | 50 | ${project.groupId}:RemoteSupportTool-Customer:*:* 51 | net.java.dev.jna:*:*:* 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /release/src/assembly/staff-windows-x86.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | Client-windows-x86 7 | windows-x86 8 | true 9 | 10 | 11 | dir 12 | 13 | 14 | 15 | 16 | 17 | src/openjdk/runtime/windows-x86 18 | 0644 19 | 20 | 21 | 22 | 23 | 24 | src/scripts/Staff.bat 25 | Start.bat 26 | bin 27 | windows 28 | 29 | 30 | ${project.parent.basedir}/LICENSE.txt 31 | LICENSE.txt 32 | 33 | windows 34 | 0644 35 | 36 | 37 | target/launch4j/Staff-x86.exe 38 | Start.exe 39 | bin 40 | 0644 41 | 42 | 43 | 44 | 45 | 46 | modules 47 | false 48 | 49 | 50 | ${project.groupId}:RemoteSupportTool-Customer:*:* 51 | net.java.dev.jna:*:*:* 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /release/src/icons/README.md: -------------------------------------------------------------------------------- 1 | This folder contains the icons used within this application. 2 | 3 | The icons are taken from the *Crystal Project* icon set created by [Everaldo Coelho](https://www.everaldo.com/) and are licensed under the terms of [LGPL](https://web.archive.org/web/20101122171611/http://everaldo.com/crystal/?action=license). 4 | 5 | Unfortunately the author does not provide the icons through his website anymore. But the full icon set is available at . 6 | -------------------------------------------------------------------------------- /release/src/icons/connect_creating-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/connect_creating-16.png -------------------------------------------------------------------------------- /release/src/icons/connect_established-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/connect_established-16.png -------------------------------------------------------------------------------- /release/src/icons/connect_no-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/connect_no-16.png -------------------------------------------------------------------------------- /release/src/icons/desktopshare-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/desktopshare-128.png -------------------------------------------------------------------------------- /release/src/icons/desktopshare-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/desktopshare-16.png -------------------------------------------------------------------------------- /release/src/icons/desktopshare-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/desktopshare-22.png -------------------------------------------------------------------------------- /release/src/icons/desktopshare-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/desktopshare-24.png -------------------------------------------------------------------------------- /release/src/icons/desktopshare-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/desktopshare-256.png -------------------------------------------------------------------------------- /release/src/icons/desktopshare-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/desktopshare-32.png -------------------------------------------------------------------------------- /release/src/icons/desktopshare-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/desktopshare-48.png -------------------------------------------------------------------------------- /release/src/icons/desktopshare-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/desktopshare-64.png -------------------------------------------------------------------------------- /release/src/icons/desktopshare.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/desktopshare.icns -------------------------------------------------------------------------------- /release/src/icons/desktopshare.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/desktopshare.ico -------------------------------------------------------------------------------- /release/src/icons/documentinfo-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/documentinfo-16.png -------------------------------------------------------------------------------- /release/src/icons/documentinfo-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/documentinfo-256.png -------------------------------------------------------------------------------- /release/src/icons/down-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/down-16.png -------------------------------------------------------------------------------- /release/src/icons/help-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/help-128.png -------------------------------------------------------------------------------- /release/src/icons/help-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/help-16.png -------------------------------------------------------------------------------- /release/src/icons/help-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/help-22.png -------------------------------------------------------------------------------- /release/src/icons/help-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/help-24.png -------------------------------------------------------------------------------- /release/src/icons/help-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/help-256.png -------------------------------------------------------------------------------- /release/src/icons/help-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/help-32.png -------------------------------------------------------------------------------- /release/src/icons/help-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/help-48.png -------------------------------------------------------------------------------- /release/src/icons/help-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/help-64.png -------------------------------------------------------------------------------- /release/src/icons/help.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/help.icns -------------------------------------------------------------------------------- /release/src/icons/help.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/help.ico -------------------------------------------------------------------------------- /release/src/icons/up-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/icons/up-16.png -------------------------------------------------------------------------------- /release/src/macos/Customer.app/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleInfoDictionaryVersion 6 | 6.0 7 | 8 | CFBundleIdentifier 9 | de.openindex.support.customer.default 10 | 11 | CFBundleName 12 | CustomerSupport 13 | 14 | CFBundleDisplayName 15 | CustomerSupportTool 16 | 17 | CFBundleVersion 18 | {VERSION} 19 | 20 | CFBundlePackageType 21 | APPL 22 | 23 | CFBundleExecutable 24 | JavaMacLauncher 25 | 26 | CFBundleIconFile 27 | share/icon.icns 28 | 29 | CFBundleDevelopmentRegion 30 | en-US 31 | 32 | LSApplicationCategoryType 33 | public.app-category.utilities 34 | 35 | LSMinimumSystemVersion 36 | 10.9 37 | 38 | NSHumanReadableCopyright 39 | ©2015-2021 OpenIndex.de 40 | 41 | NSHighResolutionCapable 42 | 43 | 44 | JavaMacLauncher 45 | 46 | JavaHome 47 | Contents/Resources 48 | JavaCommand 49 | Contents/Resources/bin/java 50 | JavaOptions 51 | 52 | -Dfile.encoding=UTF-8 53 | 54 | JavaModulePath 55 | 56 | Contents/Resources/modules 57 | 58 | ApplicationCommand 59 | -m de.openindex.support.customer/de.openindex.support.customer.CustomerApplication 60 | HeapMinimum 61 | 32m 62 | HeapMaximum 63 | 512m 64 | DockName 65 | 66 | default 67 | Customer Support 68 | de 69 | Kunden Support 70 | 71 | DockIcon 72 | Contents/Resources/share/icon.icns 73 | UseScreenMenuBar 74 | 75 | LaunchInForeground 76 | 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /release/src/macos/Customer.app/Contents/MacOS/Start.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # ---------------------------------------------------------------------------- 3 | # Start CustomerSupportTool 4 | # Copyright 2015-2019 OpenIndex.de 5 | # ---------------------------------------------------------------------------- 6 | 7 | SCRIPT_DIR=$( cd $( dirname ${BASH_SOURCE[0]} ) && pwd ) 8 | CONTENTS_DIR=$( cd $( dirname ${SCRIPT_DIR} ) && pwd ) 9 | START_SH="$CONTENTS_DIR/Resources/bin/Start.sh" 10 | exec ${START_SH} 11 | -------------------------------------------------------------------------------- /release/src/macos/JavaMacLauncher: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/macos/JavaMacLauncher -------------------------------------------------------------------------------- /release/src/macos/Staff.app/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleInfoDictionaryVersion 6 | 6.0 7 | 8 | CFBundleIdentifier 9 | de.openindex.support.staff.default 10 | 11 | CFBundleName 12 | StaffSupport 13 | 14 | CFBundleDisplayName 15 | StaffSupportTool 16 | 17 | CFBundleVersion 18 | {VERSION} 19 | 20 | CFBundlePackageType 21 | APPL 22 | 23 | CFBundleExecutable 24 | JavaMacLauncher 25 | 26 | CFBundleIconFile 27 | share/icon.icns 28 | 29 | CFBundleDevelopmentRegion 30 | en-US 31 | 32 | LSApplicationCategoryType 33 | public.app-category.utilities 34 | 35 | LSMinimumSystemVersion 36 | 10.9 37 | 38 | NSHumanReadableCopyright 39 | ©2015-2021 OpenIndex.de 40 | 41 | NSHighResolutionCapable 42 | 43 | 44 | JavaMacLauncher 45 | 46 | JavaHome 47 | Contents/Resources 48 | JavaCommand 49 | Contents/Resources/bin/java 50 | JavaOptions 51 | 52 | -Dfile.encoding=UTF-8 53 | 54 | JavaModulePath 55 | 56 | Contents/Resources/modules 57 | 58 | ApplicationCommand 59 | -m de.openindex.support.staff/de.openindex.support.staff.StaffApplication 60 | HeapMinimum 61 | 32m 62 | HeapMaximum 63 | 512m 64 | DockName 65 | 66 | default 67 | Staff Support 68 | de 69 | Mitarbeiter Support 70 | 71 | DockIcon 72 | Contents/Resources/share/icon.icns 73 | UseScreenMenuBar 74 | 75 | LaunchInForeground 76 | 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /release/src/macos/Staff.app/Contents/MacOS/Start.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # ---------------------------------------------------------------------------- 3 | # Start StaffSupportTool 4 | # Copyright 2015-2019 OpenIndex.de 5 | # ---------------------------------------------------------------------------- 6 | 7 | SCRIPT_DIR=$( cd $( dirname ${BASH_SOURCE[0]} ) && pwd ) 8 | CONTENTS_DIR=$( cd $( dirname ${SCRIPT_DIR} ) && pwd ) 9 | START_SH="$CONTENTS_DIR/Resources/bin/Start.sh" 10 | exec ${START_SH} 11 | -------------------------------------------------------------------------------- /release/src/openjdk/.gitignore: -------------------------------------------------------------------------------- 1 | downloads 2 | local 3 | runtime 4 | temp 5 | -------------------------------------------------------------------------------- /release/src/openjdk/README.md: -------------------------------------------------------------------------------- 1 | This folder contains *OpenJDK* binaries for the supported target platforms. 2 | 3 | Launch the `init-*.sh` scripts from this folder or the `openjdk-init.sh` script in the `release` directory in order to download *OpenJDK* for the different target platforms. After downloading a Java runtime environment is created in the `runtime` folder. 4 | 5 | The created runtime environments are used by the bundle scripts (`bundle-linux.sh` / `bundle-mac.sh` / `bundle-windows.sh`) in order to create the application bundles. 6 | -------------------------------------------------------------------------------- /release/src/openjdk/init-linux-x86-64.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Build a runtime environment for Linux 64-bit x86 (amd64). 4 | # Copyright 2015-2021 OpenIndex.de 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 20 | DOWNLOADS_DIR="${DIR}/downloads" 21 | LOCAL_DIR="${DIR}/local" 22 | TEMP_DIR="${DIR}/temp" 23 | 24 | # 25 | # initialization 26 | # 27 | 28 | set -e 29 | # shellcheck disable=SC1090 30 | source "${DIR}/init.sh" 31 | mkdir -p "${LOCAL_DIR}" 32 | rm -Rf "${TEMP_DIR}" 33 | mkdir -p "${TEMP_DIR}" 34 | 35 | TARGET="linux-x86-64" 36 | TARGET_JDK="${LINUX_X86_64_JDK}" 37 | 38 | # 39 | # download OpenJDK binaries 40 | # 41 | 42 | mkdir -p "${DOWNLOADS_DIR}" 43 | cd "${DOWNLOADS_DIR}" 44 | 45 | if [[ ! -f "${DOWNLOADS_DIR}/$(basename "${TARGET_JDK}")" ]]; then 46 | echo "Downloading OpenJDK for ${TARGET}..." 47 | #wget -nc "${TARGET_JDK}" 48 | curl -L \ 49 | -o "$(basename "${TARGET_JDK}")" \ 50 | "${TARGET_JDK}" 51 | fi 52 | 53 | if [[ ! -f "${DOWNLOADS_DIR}/$(basename "${SYSTEM_JDK}")" ]]; then 54 | echo "Downloading OpenJDK for jlink..." 55 | #wget -nc "${SYSTEM_JDK}" 56 | curl -L \ 57 | -o "$(basename "${SYSTEM_JDK}")" \ 58 | "${SYSTEM_JDK}" 59 | fi 60 | 61 | # 62 | # extract OpenJDK modules 63 | # 64 | 65 | echo "Extracting OpenJDK modules for ${TARGET}..." 66 | mkdir -p "${TEMP_DIR}/jdk" 67 | cd "${TEMP_DIR}/jdk" 68 | extract_archive "${DOWNLOADS_DIR}/$(basename "${TARGET_JDK}")" 69 | mv "$(ls -1)/jmods" "${TEMP_DIR}" 70 | 71 | # 72 | # extract OpenJDK for jlink 73 | # 74 | 75 | echo "Extracting OpenJDK for jlink..." 76 | SYSTEM_JDK_DIR="${LOCAL_DIR}/$(basename "${SYSTEM_JDK}")" 77 | if [[ ! -d "${SYSTEM_JDK_DIR}" ]]; then 78 | mkdir -p "${SYSTEM_JDK_DIR}" 79 | cd "${SYSTEM_JDK_DIR}" 80 | extract_archive "${DOWNLOADS_DIR}/$(basename "${SYSTEM_JDK}")" 81 | fi 82 | cd "${SYSTEM_JDK_DIR}" 83 | if [[ -d "${SYSTEM_JDK_DIR}/$(ls -1)/Contents/Home" ]]; then 84 | JLINK="${SYSTEM_JDK_DIR}/$(ls -1)/Contents/Home/bin/jlink" 85 | else 86 | JLINK="${SYSTEM_JDK_DIR}/$(ls -1)/bin/jlink" 87 | fi 88 | 89 | # 90 | # build OpenJDK runtime 91 | # 92 | 93 | cd "${DIR}" 94 | rm -Rf "${DIR}/runtime/${TARGET}" 95 | mkdir -p "${DIR}/runtime" 96 | 97 | echo "Building runtime environment for ${TARGET}..." 98 | "$JLINK" \ 99 | --add-modules "${MODULES}" \ 100 | --module-path "${TEMP_DIR}/jmods" \ 101 | --output "${DIR}/runtime/${TARGET}" \ 102 | --compress=1 \ 103 | --strip-debug \ 104 | --no-header-files \ 105 | --no-man-pages 106 | 107 | configure_runtime "${DIR}/runtime/${TARGET}" 108 | 109 | # 110 | # cleanup 111 | # 112 | 113 | rm -Rf "${TEMP_DIR}" 114 | -------------------------------------------------------------------------------- /release/src/openjdk/init-linux-x86.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Build a runtime environment for Linux 32-bit x86 (i386). 4 | # Copyright 2015-2021 OpenIndex.de 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 20 | DOWNLOADS_DIR="${DIR}/downloads" 21 | LOCAL_DIR="${DIR}/local" 22 | TEMP_DIR="${DIR}/temp" 23 | 24 | # 25 | # initialization 26 | # 27 | 28 | set -e 29 | # shellcheck disable=SC1090 30 | source "${DIR}/init.sh" 31 | mkdir -p "${LOCAL_DIR}" 32 | rm -Rf "${TEMP_DIR}" 33 | mkdir -p "${TEMP_DIR}" 34 | 35 | TARGET="linux-x86" 36 | TARGET_JDK="${LINUX_X86_JDK}" 37 | 38 | # 39 | # download OpenJDK binaries 40 | # 41 | 42 | mkdir -p "${DOWNLOADS_DIR}" 43 | cd "${DOWNLOADS_DIR}" 44 | 45 | if [[ ! -f "${DOWNLOADS_DIR}/$(basename "${TARGET_JDK}")" ]]; then 46 | echo "Downloading OpenJDK for ${TARGET}..." 47 | #wget -nc "${TARGET_JDK}" 48 | curl -L \ 49 | -o "$(basename "${TARGET_JDK}")" \ 50 | "${TARGET_JDK}" 51 | fi 52 | 53 | if [[ ! -f "${DOWNLOADS_DIR}/$(basename "${SYSTEM_JDK}")" ]]; then 54 | echo "Downloading OpenJDK for jlink..." 55 | #wget -nc "${SYSTEM_JDK}" 56 | curl -L \ 57 | -o "$(basename "${SYSTEM_JDK}")" \ 58 | "${SYSTEM_JDK}" 59 | fi 60 | 61 | # 62 | # extract OpenJDK modules 63 | # 64 | 65 | echo "Extracting OpenJDK modules for ${TARGET}..." 66 | mkdir -p "${TEMP_DIR}/jdk" 67 | cd "${TEMP_DIR}/jdk" 68 | extract_archive "${DOWNLOADS_DIR}/$(basename "${TARGET_JDK}")" 69 | mv "$(ls -1)/jmods" "${TEMP_DIR}" 70 | 71 | # 72 | # extract OpenJDK for jlink 73 | # 74 | 75 | echo "Extracting OpenJDK for jlink..." 76 | SYSTEM_JDK_DIR="${LOCAL_DIR}/$(basename "${SYSTEM_JDK}")" 77 | if [[ ! -d "${SYSTEM_JDK_DIR}" ]]; then 78 | mkdir -p "${SYSTEM_JDK_DIR}" 79 | cd "${SYSTEM_JDK_DIR}" 80 | extract_archive "${DOWNLOADS_DIR}/$(basename "${SYSTEM_JDK}")" 81 | fi 82 | cd "${SYSTEM_JDK_DIR}" 83 | if [[ -d "${SYSTEM_JDK_DIR}/$(ls -1)/Contents/Home" ]]; then 84 | JLINK="${SYSTEM_JDK_DIR}/$(ls -1)/Contents/Home/bin/jlink" 85 | else 86 | JLINK="${SYSTEM_JDK_DIR}/$(ls -1)/bin/jlink" 87 | fi 88 | 89 | # 90 | # build OpenJDK runtime 91 | # 92 | 93 | cd "${DIR}" 94 | rm -Rf "${DIR}/runtime/${TARGET}" 95 | mkdir -p "${DIR}/runtime" 96 | 97 | echo "Building runtime environment for ${TARGET}..." 98 | "$JLINK" \ 99 | --add-modules "${MODULES}" \ 100 | --module-path "${TEMP_DIR}/jmods" \ 101 | --output "${DIR}/runtime/${TARGET}" \ 102 | --compress=1 \ 103 | --strip-debug \ 104 | --no-header-files \ 105 | --no-man-pages 106 | 107 | configure_runtime "${DIR}/runtime/${TARGET}" 108 | 109 | # 110 | # cleanup 111 | # 112 | 113 | rm -Rf "${TEMP_DIR}" 114 | -------------------------------------------------------------------------------- /release/src/openjdk/init-macos-x86-64.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Build a runtime environment for macOS 64-bit. 4 | # Copyright 2015-2021 OpenIndex.de 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 20 | DOWNLOADS_DIR="${DIR}/downloads" 21 | LOCAL_DIR="${DIR}/local" 22 | TEMP_DIR="${DIR}/temp" 23 | 24 | # 25 | # initialization 26 | # 27 | 28 | set -e 29 | # shellcheck disable=SC1090 30 | source "${DIR}/init.sh" 31 | mkdir -p "${LOCAL_DIR}" 32 | rm -Rf "${TEMP_DIR}" 33 | mkdir -p "${TEMP_DIR}" 34 | 35 | TARGET="macos-x86-64" 36 | TARGET_JDK="${MACOS_X86_64_JDK}" 37 | 38 | # 39 | # download OpenJDK binaries 40 | # 41 | 42 | mkdir -p "${DOWNLOADS_DIR}" 43 | cd "${DOWNLOADS_DIR}" 44 | 45 | if [[ ! -f "${DOWNLOADS_DIR}/$(basename "${TARGET_JDK}")" ]]; then 46 | echo "Downloading OpenJDK for ${TARGET}..." 47 | #wget -nc "${TARGET_JDK}" 48 | curl -L \ 49 | -o "$(basename "${TARGET_JDK}")" \ 50 | "${TARGET_JDK}" 51 | fi 52 | 53 | if [[ ! -f "${DOWNLOADS_DIR}/$(basename "${SYSTEM_JDK}")" ]]; then 54 | echo "Downloading OpenJDK for jlink..." 55 | #wget -nc "${SYSTEM_JDK}" 56 | curl -L \ 57 | -o "$(basename "${SYSTEM_JDK}")" \ 58 | "${SYSTEM_JDK}" 59 | fi 60 | 61 | # 62 | # extract OpenJDK modules 63 | # 64 | 65 | echo "Extracting OpenJDK modules for ${TARGET}..." 66 | mkdir -p "${TEMP_DIR}/jdk" 67 | cd "${TEMP_DIR}/jdk" 68 | extract_archive "${DOWNLOADS_DIR}/$(basename "${TARGET_JDK}")" 69 | find "$(ls -1)" -type f -name "._*" -exec rm {} \; 70 | if [[ -d "$(ls -1)/Contents/Home" ]]; then 71 | mv "$(ls -1)/Contents/Home/jmods" "${TEMP_DIR}" 72 | else 73 | mv "$(ls -1)/jmods" "${TEMP_DIR}" 74 | fi 75 | 76 | # 77 | # extract OpenJDK for jlink 78 | # 79 | 80 | echo "Extracting OpenJDK for jlink..." 81 | SYSTEM_JDK_DIR="${LOCAL_DIR}/$(basename "${SYSTEM_JDK}")" 82 | if [[ ! -d "${SYSTEM_JDK_DIR}" ]]; then 83 | mkdir -p "${SYSTEM_JDK_DIR}" 84 | cd "${SYSTEM_JDK_DIR}" 85 | extract_archive "${DOWNLOADS_DIR}/$(basename "${SYSTEM_JDK}")" 86 | find "$(ls -1)" -type f -name "._*" -exec rm {} \; 87 | fi 88 | cd "${SYSTEM_JDK_DIR}" 89 | if [[ -d "${SYSTEM_JDK_DIR}/$(ls -1)/Contents/Home" ]]; then 90 | JLINK="${SYSTEM_JDK_DIR}/$(ls -1)/Contents/Home/bin/jlink" 91 | else 92 | JLINK="${SYSTEM_JDK_DIR}/$(ls -1)/bin/jlink" 93 | fi 94 | 95 | # 96 | # build OpenJDK runtime 97 | # 98 | 99 | cd "${DIR}" 100 | rm -Rf "${DIR}/runtime/${TARGET}" 101 | mkdir -p "${DIR}/runtime" 102 | 103 | echo "Building runtime environment for ${TARGET}..." 104 | "$JLINK" \ 105 | --add-modules "${MODULES}" \ 106 | --module-path "${TEMP_DIR}/jmods" \ 107 | --output "${DIR}/runtime/${TARGET}" \ 108 | --compress=1 \ 109 | --strip-debug \ 110 | --no-header-files \ 111 | --no-man-pages 112 | 113 | configure_runtime "${DIR}/runtime/${TARGET}" 114 | 115 | # 116 | # cleanup 117 | # 118 | 119 | rm -Rf "${TEMP_DIR}" 120 | -------------------------------------------------------------------------------- /release/src/openjdk/init-windows-x86-64.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Build a runtime environment for Windows 64-bit x86 4 | # Copyright 2015-2021 OpenIndex.de 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 20 | DOWNLOADS_DIR="${DIR}/downloads" 21 | LOCAL_DIR="${DIR}/local" 22 | TEMP_DIR="${DIR}/temp" 23 | 24 | # 25 | # initialization 26 | # 27 | 28 | set -e 29 | # shellcheck disable=SC1090 30 | source "${DIR}/init.sh" 31 | mkdir -p "${LOCAL_DIR}" 32 | rm -Rf "${TEMP_DIR}" 33 | mkdir -p "${TEMP_DIR}" 34 | 35 | TARGET="windows-x86-64" 36 | TARGET_JDK="${WINDOWS_X86_64_JDK}" 37 | 38 | # 39 | # download OpenJDK binaries 40 | # 41 | 42 | mkdir -p "${DOWNLOADS_DIR}" 43 | cd "${DOWNLOADS_DIR}" 44 | 45 | if [[ ! -f "${DOWNLOADS_DIR}/$(basename "${TARGET_JDK}")" ]]; then 46 | echo "Downloading OpenJDK for ${TARGET}..." 47 | #wget -nc "${TARGET_JDK}" 48 | curl -L \ 49 | -o "$(basename "${TARGET_JDK}")" \ 50 | "${TARGET_JDK}" 51 | fi 52 | 53 | if [[ ! -f "${DOWNLOADS_DIR}/$(basename "${SYSTEM_JDK}")" ]]; then 54 | echo "Downloading OpenJDK for jlink..." 55 | #wget -nc "${SYSTEM_JDK}" 56 | curl -L \ 57 | -o "$(basename "${SYSTEM_JDK}")" \ 58 | "${SYSTEM_JDK}" 59 | fi 60 | 61 | # 62 | # extract OpenJDK modules 63 | # 64 | 65 | echo "Extracting OpenJDK modules for ${TARGET}..." 66 | mkdir -p "${TEMP_DIR}/jdk" 67 | cd "${TEMP_DIR}/jdk" 68 | extract_archive "${DOWNLOADS_DIR}/$(basename "${TARGET_JDK}")" 69 | find . -type f -exec chmod ugo-x {} \; 70 | mv "$(ls -1)/jmods" "${TEMP_DIR}" 71 | 72 | # 73 | # extract OpenJDK for jlink 74 | # 75 | 76 | echo "Extracting OpenJDK for jlink..." 77 | SYSTEM_JDK_DIR="${LOCAL_DIR}/$(basename "${SYSTEM_JDK}")" 78 | if [[ ! -d "${SYSTEM_JDK_DIR}" ]]; then 79 | mkdir -p "${SYSTEM_JDK_DIR}" 80 | cd "${SYSTEM_JDK_DIR}" 81 | extract_archive "${DOWNLOADS_DIR}/$(basename "${SYSTEM_JDK}")" 82 | find "$(ls -1)" -type f -name "._*" -exec rm {} \; 83 | fi 84 | cd "${SYSTEM_JDK_DIR}" 85 | if [[ -d "${SYSTEM_JDK_DIR}/$(ls -1)/Contents/Home" ]]; then 86 | JLINK="${SYSTEM_JDK_DIR}/$(ls -1)/Contents/Home/bin/jlink" 87 | else 88 | JLINK="${SYSTEM_JDK_DIR}/$(ls -1)/bin/jlink" 89 | fi 90 | 91 | # 92 | # build OpenJDK runtime 93 | # 94 | 95 | cd "${DIR}" 96 | rm -Rf "${DIR}/runtime/${TARGET}" 97 | mkdir -p "${DIR}/runtime" 98 | 99 | echo "Building runtime environment for ${TARGET}..." 100 | "$JLINK" \ 101 | --add-modules "${MODULES}" \ 102 | --module-path "${TEMP_DIR}/jmods" \ 103 | --output "${DIR}/runtime/${TARGET}" \ 104 | --compress=1 \ 105 | --strip-debug \ 106 | --no-header-files \ 107 | --no-man-pages 108 | 109 | configure_runtime "${DIR}/runtime/${TARGET}" 110 | 111 | # 112 | # cleanup 113 | # 114 | 115 | rm -Rf "${TEMP_DIR}" 116 | -------------------------------------------------------------------------------- /release/src/openjdk/init-windows-x86.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Build a runtime environment for Windows 32-bit x86 4 | # Copyright 2015-2021 OpenIndex.de 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 20 | DOWNLOADS_DIR="${DIR}/downloads" 21 | LOCAL_DIR="${DIR}/local" 22 | TEMP_DIR="${DIR}/temp" 23 | 24 | # 25 | # initialization 26 | # 27 | 28 | set -e 29 | # shellcheck disable=SC1090 30 | source "${DIR}/init.sh" 31 | mkdir -p "${LOCAL_DIR}" 32 | rm -Rf "${TEMP_DIR}" 33 | mkdir -p "${TEMP_DIR}" 34 | 35 | TARGET="windows-x86" 36 | TARGET_JDK="${WINDOWS_X86_JDK}" 37 | 38 | # 39 | # download OpenJDK binaries 40 | # 41 | 42 | mkdir -p "${DOWNLOADS_DIR}" 43 | cd "${DOWNLOADS_DIR}" 44 | 45 | if [[ ! -f "${DOWNLOADS_DIR}/$(basename "${TARGET_JDK}")" ]]; then 46 | echo "Downloading OpenJDK for ${TARGET}..." 47 | #wget -nc "${TARGET_JDK}" 48 | curl -L \ 49 | -o "$(basename "${TARGET_JDK}")" \ 50 | "${TARGET_JDK}" 51 | fi 52 | 53 | if [[ ! -f "${DOWNLOADS_DIR}/$(basename "${SYSTEM_JDK}")" ]]; then 54 | echo "Downloading OpenJDK for jlink..." 55 | #wget -nc "${SYSTEM_JDK}" 56 | curl -L \ 57 | -o "$(basename "${SYSTEM_JDK}")" \ 58 | "${SYSTEM_JDK}" 59 | fi 60 | 61 | # 62 | # extract OpenJDK modules 63 | # 64 | 65 | echo "Extracting OpenJDK modules for ${TARGET}..." 66 | mkdir -p "${TEMP_DIR}/jdk" 67 | cd "${TEMP_DIR}/jdk" 68 | extract_archive "${DOWNLOADS_DIR}/$(basename "${TARGET_JDK}")" 69 | find . -type f -exec chmod ugo-x {} \; 70 | mv "$(ls -1)/jmods" "${TEMP_DIR}" 71 | 72 | # 73 | # extract OpenJDK for jlink 74 | # 75 | 76 | echo "Extracting OpenJDK for jlink..." 77 | SYSTEM_JDK_DIR="${LOCAL_DIR}/$(basename "${SYSTEM_JDK}")" 78 | if [[ ! -d "${SYSTEM_JDK_DIR}" ]]; then 79 | mkdir -p "${SYSTEM_JDK_DIR}" 80 | cd "${SYSTEM_JDK_DIR}" 81 | extract_archive "${DOWNLOADS_DIR}/$(basename "${SYSTEM_JDK}")" 82 | find "$(ls -1)" -type f -name "._*" -exec rm {} \; 83 | fi 84 | cd "${SYSTEM_JDK_DIR}" 85 | if [[ -d "${SYSTEM_JDK_DIR}/$(ls -1)/Contents/Home" ]]; then 86 | JLINK="${SYSTEM_JDK_DIR}/$(ls -1)/Contents/Home/bin/jlink" 87 | else 88 | JLINK="${SYSTEM_JDK_DIR}/$(ls -1)/bin/jlink" 89 | fi 90 | 91 | # 92 | # build OpenJDK runtime 93 | # 94 | 95 | cd "${DIR}" 96 | rm -Rf "${DIR}/runtime/${TARGET}" 97 | mkdir -p "${DIR}/runtime" 98 | 99 | echo "Building runtime environment for ${TARGET}..." 100 | 101 | # ZIP compression seems to produce errors in Windows x86 102 | # 103 | # see https://github.com/AdoptOpenJDK/openjdk-build/issues/763 104 | # see https://bugs.openjdk.java.net/browse/JDK-8215123 105 | # 106 | # Therefore we're using --compress=1 instead of --compress=2 107 | 108 | "$JLINK" \ 109 | --add-modules "${MODULES}" \ 110 | --module-path "${TEMP_DIR}/jmods" \ 111 | --output "${DIR}/runtime/${TARGET}" \ 112 | --compress=1 \ 113 | --strip-debug \ 114 | --no-header-files \ 115 | --no-man-pages 116 | 117 | configure_runtime "${DIR}/runtime/${TARGET}" 118 | 119 | # 120 | # cleanup 121 | # 122 | 123 | rm -Rf "${TEMP_DIR}" 124 | -------------------------------------------------------------------------------- /release/src/openjdk/init.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Detect operating system and select the appropriate OpenJDK bundle. 4 | # Copyright 2015-2021 OpenIndex.de 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | # ----------------------------------------------------------------------- 20 | # 21 | # OpenJDK binaries are provided by: 22 | # https://bell-sw.com/pages/downloads/#/java-11-lts 23 | # 24 | # ----------------------------------------------------------------------- 25 | 26 | LINUX_X86_JDK="https://download.bell-sw.com/java/11.0.10+9/bellsoft-jdk11.0.10+9-linux-i586.tar.gz" 27 | LINUX_X86_64_JDK="https://download.bell-sw.com/java/11.0.10+9/bellsoft-jdk11.0.10+9-linux-amd64.tar.gz" 28 | MACOS_X86_64_JDK="https://download.bell-sw.com/java/11.0.10+9/bellsoft-jdk11.0.10+9-macos-amd64.zip" 29 | WINDOWS_X86_JDK="https://download.bell-sw.com/java/11.0.10+9/bellsoft-jdk11.0.10+9-windows-i586.zip" 30 | WINDOWS_X86_64_JDK="https://download.bell-sw.com/java/11.0.10+9/bellsoft-jdk11.0.10+9-windows-amd64.zip" 31 | 32 | MODULES="java.desktop,java.naming,jdk.crypto.ec" 33 | 34 | SYSTEM="$(uname -s)" 35 | SYSTEM_ARCH="$(arch)" 36 | case "${SYSTEM}" in 37 | 38 | Darwin) 39 | echo "Initializing macOS environment..." 40 | SYSTEM_JDK="${MACOS_X86_64_JDK}" 41 | ;; 42 | 43 | Linux) 44 | case "${SYSTEM_ARCH}" in 45 | i386 | i586 | i686) 46 | echo "Initializing Linux x86 environment..." 47 | SYSTEM_JDK="${LINUX_X86_JDK}" 48 | ;; 49 | x86_64) 50 | echo "Initializing Linux x86_64 environment..." 51 | SYSTEM_JDK="${LINUX_X86_64_JDK}" 52 | ;; 53 | *) 54 | echo "Unsupported Linux environment (${SYSTEM_ARCH})..." 55 | exit 1 56 | ;; 57 | esac 58 | ;; 59 | 60 | *) 61 | echo "Unsupported environment (${SYSTEM})..." 62 | exit 1 63 | ;; 64 | 65 | esac 66 | 67 | # 68 | # Configure generated runtime environment. 69 | # 70 | 71 | function configure_runtime() { 72 | echo "Configuring runtime environment..." 73 | 74 | runtimeDir="$1" 75 | if [[ ! -d "${runtimeDir}" ]]; then 76 | echo "WARNING: Can't find runtime environment at: ${runtimeDir}" 77 | exit 1 78 | fi 79 | 80 | securityConf="${runtimeDir}/conf/security/java.security" 81 | if [[ ! -f "${securityConf}" ]]; then 82 | echo "WARNING: Can't find security configuration at: ${securityConf}" 83 | exit 1 84 | fi 85 | 86 | echo "There is nothing to configure." 87 | } 88 | 89 | # 90 | # Extract a downloaded archive. 91 | # 92 | 93 | function extract_archive() { 94 | archive="${1}" 95 | if [[ "$archive" == *.zip ]]; then 96 | #echo "unzip $archive" 97 | unzip -q "${archive}" 98 | else 99 | #echo "untar $archive" 100 | tar xfz "${archive}" 101 | fi 102 | } 103 | -------------------------------------------------------------------------------- /release/src/scripts/Customer.bat: -------------------------------------------------------------------------------- 1 | @REM ---------------------------------------------------------------------------- 2 | @REM RemoteSupportTool for customers 3 | @REM Copyright 2015-2021 OpenIndex.de 4 | @REM ---------------------------------------------------------------------------- 5 | @echo off 6 | 7 | :: Use a specific command to launch the Java Runtime Environment 8 | set "JAVACMD=" 9 | 10 | :: Memory settings of the Java Runtime Environment 11 | set "JAVA_HEAP_MINIMUM=32m" 12 | set "JAVA_HEAP_MAXIMUM=512m" 13 | 14 | :: Additional options for the Java Runtime Environment 15 | set "JAVA_OPTS=-Dfile.encoding=UTF-8" 16 | 17 | set "APP=de.openindex.support.customer/de.openindex.support.customer.CustomerApplication" 18 | 19 | :: 20 | :: Start execution... 21 | :: 22 | 23 | :: set "SCRIPT=%~nx0" 24 | set "SCRIPT_DIR=%~dp0" 25 | set "SCRIPT_DIR=%SCRIPT_DIR:~0,-1%" 26 | :: set "BASE_DIR=%SCRIPT_DIR%" 27 | set "BASE_DIR=%SCRIPT_DIR%\..\" 28 | if "%JAVACMD%"=="" set "JAVACMD=%BASE_DIR%\bin\java.exe" 29 | 30 | pushd %BASE_DIR% 31 | set "BASE_DIR=%CD%" 32 | 33 | :: echo SCRIPT: %SCRIPT% 34 | :: echo SCRIPT_DIR: %SCRIPT_DIR% 35 | :: echo BASE_DIR: %BASE_DIR% 36 | 37 | "%JAVACMD%" -Xms%JAVA_HEAP_MINIMUM% -Xmx%JAVA_HEAP_MAXIMUM% %JAVA_OPTS% -p "modules" -m %APP% %* 38 | popd 39 | -------------------------------------------------------------------------------- /release/src/scripts/Customer.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # ---------------------------------------------------------------------------- 3 | # RemoteSupportTool for customers 4 | # Copyright 2015-2021 OpenIndex.de 5 | # ---------------------------------------------------------------------------- 6 | 7 | # Use a specific command to launch the Java Runtime Environment. 8 | JAVA="" 9 | 10 | # Set memory settings of the Java Runtime Environment. 11 | JAVA_HEAP_MINIMUM="32m" 12 | JAVA_HEAP_MAXIMUM="512m" 13 | 14 | # Set additional parameters for the Java Runtime Environment. 15 | JAVA_OPTS="-Dfile.encoding=UTF-8" 16 | 17 | # Set application to start. 18 | APP="de.openindex.support.customer/de.openindex.support.customer.CustomerApplication" 19 | 20 | # Detect directories. 21 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 22 | BASE_DIR="$( cd "$( dirname "$SCRIPT_DIR" )" && pwd )" 23 | 24 | # OS specific initialization. 25 | SYSTEM="$( uname -s )" 26 | case "$SYSTEM" in 27 | 28 | Darwin) 29 | echo "Initializing macOS environment..." 30 | JAVA_OPTS="$JAVA_OPTS -Dapple.laf.useScreenMenuBar=true" 31 | JAVA_OPTS="$JAVA_OPTS -Xdock:name=CustomerSupportTool" 32 | JAVA_OPTS="$JAVA_OPTS -Xdock:icon=./share/icon.icns" 33 | ;; 34 | 35 | Linux) 36 | echo "Initializing Linux environment..." 37 | JAVA_OPTS="$JAVA_OPTS --add-opens java.desktop/sun.awt.X11=de.openindex.support.core" 38 | ;; 39 | 40 | *) 41 | echo "Initializing unknown environment ($SYSTEM)..." 42 | ;; 43 | 44 | esac 45 | 46 | # Use bundled Java runtime environment, if no JAVA variable was specified. 47 | if [[ -z "$JAVA" ]] ; then 48 | JAVA="$BASE_DIR/bin/java" 49 | fi 50 | 51 | # Launch the application. 52 | cd "$BASE_DIR" 53 | exec "$JAVA" \ 54 | -Xms${JAVA_HEAP_MINIMUM} \ 55 | -Xmx${JAVA_HEAP_MAXIMUM} \ 56 | ${JAVA_OPTS} \ 57 | -p "modules" \ 58 | -m "$APP" \ 59 | "$@" 60 | -------------------------------------------------------------------------------- /release/src/scripts/Staff.bat: -------------------------------------------------------------------------------- 1 | @REM ---------------------------------------------------------------------------- 2 | @REM RemoteSupportTool for staff members 3 | @REM Copyright 2015-2021 OpenIndex.de 4 | @REM ---------------------------------------------------------------------------- 5 | @echo off 6 | 7 | :: Use a specific command to launch the Java Runtime Environment 8 | set "JAVACMD=" 9 | 10 | :: Memory settings of the Java Runtime Environment 11 | set "JAVA_HEAP_MINIMUM=32m" 12 | set "JAVA_HEAP_MAXIMUM=512m" 13 | 14 | :: Additional options for the Java Runtime Environment 15 | set "JAVA_OPTS=-Dfile.encoding=UTF-8" 16 | 17 | set "APP=de.openindex.support.staff/de.openindex.support.staff.StaffApplication" 18 | 19 | :: 20 | :: Start execution... 21 | :: 22 | 23 | :: set "SCRIPT=%~nx0" 24 | set "SCRIPT_DIR=%~dp0" 25 | set "SCRIPT_DIR=%SCRIPT_DIR:~0,-1%" 26 | :: set "BASE_DIR=%SCRIPT_DIR%" 27 | set "BASE_DIR=%SCRIPT_DIR%\..\" 28 | if "%JAVACMD%"=="" set "JAVACMD=%BASE_DIR%\bin\javaw.exe" 29 | 30 | pushd %BASE_DIR% 31 | set "BASE_DIR=%CD%" 32 | 33 | :: echo SCRIPT: %SCRIPT% 34 | :: echo SCRIPT_DIR: %SCRIPT_DIR% 35 | :: echo BASE_DIR: %BASE_DIR% 36 | 37 | "%JAVACMD%" -Xms%JAVA_HEAP_MINIMUM% -Xmx%JAVA_HEAP_MAXIMUM% %JAVA_OPTS% -p "modules" -m %APP% %* 38 | popd 39 | -------------------------------------------------------------------------------- /release/src/scripts/Staff.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # ---------------------------------------------------------------------------- 3 | # RemoteSupportTool for staff members 4 | # Copyright 2015-2021 OpenIndex.de 5 | # ---------------------------------------------------------------------------- 6 | 7 | # Use a specific command to launch the Java Runtime Environment. 8 | JAVA="" 9 | 10 | # Set memory settings of the Java Runtime Environment. 11 | JAVA_HEAP_MINIMUM="32m" 12 | JAVA_HEAP_MAXIMUM="512m" 13 | 14 | # Set additional parameters for the Java Runtime Environment. 15 | JAVA_OPTS="-Dfile.encoding=UTF-8" 16 | 17 | # Set application to start. 18 | APP="de.openindex.support.staff/de.openindex.support.staff.StaffApplication" 19 | 20 | # Detect directories. 21 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 22 | BASE_DIR="$( cd "$( dirname "$SCRIPT_DIR" )" && pwd )" 23 | 24 | # OS specific initialization. 25 | SYSTEM="$( uname -s )" 26 | case "$SYSTEM" in 27 | 28 | Darwin) 29 | echo "Initializing macOS environment..." 30 | JAVA_OPTS="$JAVA_OPTS -Dapple.laf.useScreenMenuBar=true" 31 | JAVA_OPTS="$JAVA_OPTS -Xdock:name=StaffSupportTool" 32 | JAVA_OPTS="$JAVA_OPTS -Xdock:icon=./share/icon.icns" 33 | ;; 34 | 35 | Linux) 36 | echo "Initializing Linux environment..." 37 | JAVA_OPTS="$JAVA_OPTS --add-opens java.desktop/sun.awt.X11=de.openindex.support.core" 38 | ;; 39 | 40 | *) 41 | echo "Initializing unknown environment ($SYSTEM)..." 42 | ;; 43 | 44 | esac 45 | 46 | # Use bundled Java runtime environment, if no JAVA variable was specified. 47 | if [[ -z "$JAVA" ]] ; then 48 | JAVA="$BASE_DIR/bin/java" 49 | fi 50 | 51 | # Launch the application. 52 | cd "$BASE_DIR" 53 | exec "$JAVA" \ 54 | -Xms${JAVA_HEAP_MINIMUM} \ 55 | -Xmx${JAVA_HEAP_MAXIMUM} \ 56 | ${JAVA_OPTS} \ 57 | -p "modules" \ 58 | -m "$APP" \ 59 | "$@" 60 | -------------------------------------------------------------------------------- /release/src/windows/.gitattributes: -------------------------------------------------------------------------------- 1 | *.rc text eol=crlf 2 | *.script text eol=crlf 3 | *.txt text eol=lf 4 | -------------------------------------------------------------------------------- /release/src/windows/.gitignore: -------------------------------------------------------------------------------- 1 | *.ini 2 | -------------------------------------------------------------------------------- /release/src/windows/7zSD.sfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/windows/7zSD.sfx -------------------------------------------------------------------------------- /release/src/windows/Customer.rc: -------------------------------------------------------------------------------- 1 | 2 | 1 VERSIONINFO 3 | FILEVERSION 1,1,2,0 4 | PRODUCTVERSION 1,1,2,0 5 | FILEOS 0x40004 6 | FILETYPE 0x1 7 | { 8 | BLOCK "StringFileInfo" 9 | { 10 | BLOCK "040904B0" 11 | { 12 | VALUE "CompanyName", "OpenIndex.de" 13 | VALUE "FileDescription", "Remote Support Tool for customers" 14 | VALUE "FileVersion", "1.1.2" 15 | VALUE "InternalName", "CustomerSupportTool.exe" 16 | VALUE "LegalCopyright", "Copyright (c) 2015-2021 OpenIndex.de" 17 | VALUE "OriginalFilename", "CustomerSupportTool.exe" 18 | VALUE "ProductName", "Customer Support Tool" 19 | VALUE "ProductVersion", "1.1.2" 20 | } 21 | } 22 | 23 | BLOCK "VarFileInfo" 24 | { 25 | VALUE "Translation", 0x0409 0x04B0 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /release/src/windows/Customer.script: -------------------------------------------------------------------------------- 1 | [FILENAMES] 2 | Exe= 7zSD.sfx 3 | SaveAs= Customer.sfx 4 | Log= CONSOLE 5 | 6 | [COMMANDS] 7 | -addoverwrite Customer.ico, ICONGROUP,1,1033 8 | -modify Customer.res, VERSIONINFO,1,1033 9 | -add manifest.res, MANIFEST,,0 10 | -------------------------------------------------------------------------------- /release/src/windows/Customer.txt: -------------------------------------------------------------------------------- 1 | ;!@Install@!UTF-8! 2 | Title="CustomerSupportTool" 3 | RunProgram="bin\Start.exe" 4 | ;!@InstallEnd@! -------------------------------------------------------------------------------- /release/src/windows/README.md: -------------------------------------------------------------------------------- 1 | Files in this folder are used by the [`bundle-windows.sh`](../../bundle-windows.sh) script in order to create EXE launchers for Windows systems. 2 | 3 | EXE launchers are basically self extracting [7-Zip](https://www.7-zip.org/) archives, that automatically start the application after extraction and automatically remove extracted files after the application is closed. Those EXE files are created with the `7zSD.sfx` file, which is part of 7-Zip's LZMA SDK. We're currently using version 19.00 (2019-02-21), that was downloaded from . Further documentation about self extracting archives are available at . 4 | 5 | If [Wine](https://www.winehq.org/) is installed on the build environment, the [`bundle-windows.sh`](../../bundle-windows.sh) script automatically does some modifications to the created EXE files by using the Freeware [Resource Hacker](http://angusj.com/resourcehacker/) application: 6 | 7 | - The application icon is replaced - either with a file called `Customer.ico` / `Staff.ico` located in this folder or with the [default icons](../icons). 8 | 9 | - Version information is replaced with the contents of the [`Customer.rc`](Customer.rc) / [`Staff.rc`](Staff.rc) file. You might customize these values but be aware to keep the general file structure intact. 10 | 11 | - The [manifest](https://en.wikipedia.org/wiki/Manifest_file#Application_and_assembly_manifest) defined in the [`manifest.rc`](manifest.rc) file is added. This ensures, that the application does not ask for admin permissions on startup. Of course the user still might run the application as administrator, but it is not strictly necessary. 12 | -------------------------------------------------------------------------------- /release/src/windows/ResourceHacker.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/release/src/windows/ResourceHacker.exe -------------------------------------------------------------------------------- /release/src/windows/Staff.rc: -------------------------------------------------------------------------------- 1 | 2 | 1 VERSIONINFO 3 | FILEVERSION 1,1,2,0 4 | PRODUCTVERSION 1,1,2,0 5 | FILEOS 0x40004 6 | FILETYPE 0x1 7 | { 8 | BLOCK "StringFileInfo" 9 | { 10 | BLOCK "040904B0" 11 | { 12 | VALUE "CompanyName", "OpenIndex.de" 13 | VALUE "FileDescription", "Remote Support Tool for staff members" 14 | VALUE "FileVersion", "1.1.2" 15 | VALUE "InternalName", "StaffSupportTool.exe" 16 | VALUE "LegalCopyright", "Copyright (c) 2015-2021 OpenIndex.de" 17 | VALUE "OriginalFilename", "StaffSupportTool.exe" 18 | VALUE "ProductName", "Staff Support Tool" 19 | VALUE "ProductVersion", "1.1.2" 20 | } 21 | } 22 | 23 | BLOCK "VarFileInfo" 24 | { 25 | VALUE "Translation", 0x0409 0x04B0 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /release/src/windows/Staff.script: -------------------------------------------------------------------------------- 1 | [FILENAMES] 2 | Exe= 7zSD.sfx 3 | SaveAs= Staff.sfx 4 | Log= CONSOLE 5 | 6 | [COMMANDS] 7 | -addoverwrite Staff.ico, ICONGROUP,1,1033 8 | -modify Staff.res, VERSIONINFO,1,1033 9 | -add manifest.res, MANIFEST,,0 10 | -------------------------------------------------------------------------------- /release/src/windows/Staff.txt: -------------------------------------------------------------------------------- 1 | ;!@Install@!UTF-8! 2 | Title="StaffSupportTool" 3 | RunProgram="bin\Start.exe" 4 | ;!@InstallEnd@! -------------------------------------------------------------------------------- /release/src/windows/manifest.rc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /share/images/README.md: -------------------------------------------------------------------------------- 1 | This folder contains images used within this application. 2 | 3 | The images were created with [GIMP](https://www.gimp.org/) and are licensed 4 | under the same terms as the application itself. 5 | -------------------------------------------------------------------------------- /share/images/sidebar.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/share/images/sidebar.xcf -------------------------------------------------------------------------------- /share/images/sidebar_about.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/share/images/sidebar_about.xcf -------------------------------------------------------------------------------- /share/screenshots/customer-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/share/screenshots/customer-window.png -------------------------------------------------------------------------------- /share/screenshots/staff-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIndex/RemoteSupportTool/b6552bf5a0261b7007604ad4ff1a990a160e6bda/share/screenshots/staff-window.png -------------------------------------------------------------------------------- /share/ssl/README.md: -------------------------------------------------------------------------------- 1 | This folder contains the key pair and certificate, that was created with the provided `init.sh` script and may be bundled with this application. 2 | 3 | In order to create custom builds of this application, you should create your own keystore and truststore by executing `init.sh` in this folder. 4 | 5 | - Copy the created `keystore.jks` and `keystore.jks.txt` into the [Client resources](../Client/src/main/resources/de/openindex/support/client/resources). 6 | - Copy the created `truststore.jks` and `truststore.jks.txt` into the [Server resources](../Server/src/main/resources/de/openindex/support/server/resources). 7 | 8 | Additionally you may disable the custom keystore / truststore in the application settings: 9 | 10 | - Set `customKeyStore=false` in [client settings](../Client/src/main/resources/de/openindex/support/client/resources/application.properties). 11 | - Set `customTrustStore=false` in [server settings](../Server/src/main/resources/de/openindex/support/server/resources/application.properties). 12 | 13 | These settings enforce usage of the generated keystore / truststore. Otherwise users may replace these files through their application work directory. 14 | -------------------------------------------------------------------------------- /share/ssl/init.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015-2021 OpenIndex.de 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | KEYTOOL="keytool" 19 | ALIAS="support" 20 | VALIDITY=9999 21 | 22 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 23 | KEYSTORE="$DIR/keystore.jks" 24 | TRUSTSTORE="$DIR/truststore.jks" 25 | CERT="$DIR/$ALIAS.crt" 26 | 27 | KEYSTORE_PASSWORD="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c16)" 28 | TRUSTSTORE_PASSWORD="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c16)" 29 | 30 | set -e 31 | 32 | echo "" 33 | echo "--------------------------------------------------------" 34 | echo " Generating key pair..." 35 | echo "--------------------------------------------------------" 36 | echo "" 37 | 38 | rm -f "$KEYSTORE" 39 | "$KEYTOOL" \ 40 | -genkeypair \ 41 | -keyalg RSA \ 42 | -keysize 4096 \ 43 | -alias "$ALIAS" \ 44 | -validity "$VALIDITY" \ 45 | -keystore "$KEYSTORE" \ 46 | -keypass "$KEYSTORE_PASSWORD" \ 47 | -storepass "$KEYSTORE_PASSWORD" 48 | 49 | echo "" 50 | echo "--------------------------------------------------------" 51 | echo " Exporting certificate..." 52 | echo "--------------------------------------------------------" 53 | echo "" 54 | 55 | rm -f "$CERT" 56 | "$KEYTOOL" \ 57 | -export \ 58 | -alias "$ALIAS" \ 59 | -file "$CERT" \ 60 | -keystore "$KEYSTORE" \ 61 | -storepass "$KEYSTORE_PASSWORD" 62 | 63 | echo "" 64 | echo "--------------------------------------------------------" 65 | echo " Adding certificate to truststore..." 66 | echo "--------------------------------------------------------" 67 | echo "" 68 | 69 | rm -f "$TRUSTSTORE" 70 | "$KEYTOOL" \ 71 | -import \ 72 | -v \ 73 | -alias "$ALIAS" \ 74 | -file "$CERT" \ 75 | -keystore "$TRUSTSTORE" \ 76 | -keypass "$TRUSTSTORE_PASSWORD" \ 77 | -storepass "$TRUSTSTORE_PASSWORD" 78 | 79 | echo "" 80 | echo "--------------------------------------------------------" 81 | echo "" 82 | echo "The keystore for the staff application is stored at" 83 | echo "" 84 | echo " $KEYSTORE" 85 | echo "" 86 | echo "and protected with the password" 87 | echo "" 88 | echo " $KEYSTORE_PASSWORD" 89 | 90 | echo "" 91 | echo "--------------------------------------------------------" 92 | echo "" 93 | echo "The truststore for the customer application is stored at:" 94 | echo "" 95 | echo " $TRUSTSTORE" 96 | echo "" 97 | echo "and protected with the password" 98 | echo "" 99 | echo " $TRUSTSTORE_PASSWORD" 100 | echo "" 101 | 102 | echo "$KEYSTORE_PASSWORD" > "$KEYSTORE.txt" 103 | echo "$TRUSTSTORE_PASSWORD" > "$TRUSTSTORE.txt" 104 | --------------------------------------------------------------------------------