diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index f2c1f4cca..a261a995f 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -26,7 +26,7 @@ are also not included to prevent attackers from easily impersonating the XPipe a ## Modularity -All XPipe components target [JDK 19](https://openjdk.java.net/projects/jdk/19/) and make full use of the Java Module System (JPMS). +All XPipe components target [Java 19](https://openjdk.java.net/projects/jdk/19/) and make full use of the Java Module System (JPMS). All components are modularized, including all their dependencies. In case a dependency is (sadly) not modularized yet, module information is manually added using [moditect](https://github.com/moditect/moditect-gradle-plugin). Further, note that as this is a pretty complicated Java project that fully utilizes modularity, diff --git a/FAQ.md b/FAQ.md index bebc2e227..b6619cdd8 100644 --- a/FAQ.md +++ b/FAQ.md @@ -1,12 +1,13 @@ # Frequently asked questions -## What is so new about this? +## What is so new and different about this? Compared to other existing tools, the fundamental approach of how to connect and how to communicate with the remote system differs. Other tools utilize the established protocol-based approach, i.e. connect and communicate with a -server via a certain protocol like SSH, SFTP, and many more. +server via a certain protocol like SSH, SFTP, and many more using an integrated library for that purpose. XPipe utilizes a shell-based approach that works on top of command-line programs. +Everything file browser related is then realized on top of this connection by sending commands via that shell connection. Let's use the example of SSH. Protocol-based programs come with an included SSH library that allows them to interact with a remote system via SSH. @@ -24,11 +25,14 @@ As a result of this approach, you can do stuff with XPipe that you can't do with One example would be connecting and accessing files on a docker container as there's no real protocol to formally connect here by default. XPipe can simply execute `docker exec -i sh` to open a shell into the container -and handle this shell exactly the same way as any other shell connection. +and handle the file management through this opened shell by sending commands like `ls`, `touch`, and more. More broadly, XPipe can work on any shell connection, regardless of how it is established. From its perspective, there's no visible difference between a -remote ssh connection and a shell to a local docker container. +remote ssh connection, a shell in a docker container, or your local system shell. + +If you are more interested in the implementation details, +you can read the [introduction article](https://foojay.io/today/presenting-xpipe/) on foojay.io. ## Does it run on my system? @@ -70,11 +74,11 @@ How exactly the update process is handled depends on your distribution: - Installers (msi/deb/rpm/pkg): They come with the ability to automatically check for updates, download them, and install them if you provide your confirmation. - Portable versions (zip/tar.gz/dmg): They can check for updates and will notify you if one is available but - lack the ability to install them. You therefore have to download and install them manually. + lack the ability to install them. You therefore have to download and extract them manually. - Package managers: They can check for updates and will notify you if one is available by allowing you to copy and paste the applicable package manager command in your terminal. -Note that you can choose to disable this functionality entirely in the settings menu. +Note that you can choose to disable this update check functionality entirely in the settings menu. ## Why are there no GitHub actions workflows in this repository? @@ -85,15 +89,8 @@ So you can assume that the code is tested and the release is automated! ## What is the best way to reach out to the developers and other users? -There are several to reach out, so you can choose whatever you like best: +You can always open a GitHub issue in this repository in case you encounter a problem. +There are also several other ways to reach out, so you can choose whatever you like best: - [XPipe Discord Server](https://discord.gg/8y89vS8cRb) - [XPipe Slack Server](https://join.slack.com/t/XPipe/shared_invite/zt-1awjq0t5j-5i4UjNJfNe1VN4b_auu6Cg) -- [XPipe Issue Tracker](https://github.com/xpipe-io/xpipe/issues) - -## I want to be the first to test use new features. How can I do that? - -Most new releases are first published as a pre-release only. -By enabling the setting to download pre-releases in the settings menu when looking for updates, -you can be the first to use a new version. - diff --git a/README.md b/README.md index 13224f0cf..724fe0ff8 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,19 @@ drawing -### A flexible connection manager and remote file explorer +### The remote file browser for professionals -XPipe is a brand-new type of connection manager and remote file explorer that works by only interacting with command-line -tools on local and remote shell connections. -This approach makes it much more flexible as it doesn't have to deal with file system APIs or remote file handling -protocols at all. +XPipe is a brand-new type of remote file browser that works by only interacting with your installed command-line tools on local and remote shell connections. This approach makes it much more flexible as it doesn't have to deal with file system APIs or remote file handling protocols at all. It currently supports: -- Containers located on any host, e.g. [docker](https://www.docker.com/) or [LXD](https://linuxcontainers.org/lxd/introduction/) container instances +- Containers located on any host such as [docker](https://www.docker.com/) or [LXD](https://linuxcontainers.org/lxd/introduction/) container instances - [SSH](https://www.ssh.com/academy/ssh/protocol) connections -- [Windows Subsystem for Linux](https://ubuntu.com/wsl) instances located on any host +- [Windows Subsystem for Linux](https://ubuntu.com/wsl) instances - [Powershell Remote Sessions](https://learn.microsoft.com/en-us/powershell/scripting/learn/remoting/running-remote-commands?view=powershell-7.3) -- [Kubernetes](https://kubernetes.io/) clusters and pods +- [Kubernetes](https://kubernetes.io/) clusters and their contained pods and containers - Any other custom remote connection methods that works through the command-line - Arbitrary types of proxies to establish connections -Furthermore, XPipe integrates with your existing tools and workflows -by outsourcing as many tasks as possible to your favourite -text/code editors, terminals, shells, command-line tools and more. -The platform is designed to be extensible, allowing anyone -to implement custom functionality through extensions. +Furthermore, XPipe integrates with your existing tools and workflows by delegating all tasks to your favourite text/code editors, terminals, shells, command-line tools and more. The platform is designed to be extensible, allowing anyone to implement custom functionality through extensions. You have more questions? Then check out the new [FAQ](/FAQ.md). @@ -30,41 +23,39 @@ Head over to the [releases page](https://github.com/xpipe-io/xpipe/releases/late ## Features -### Remote file explorer +### Flexible remote file browser -- Access the file system of any remote system +- Interact with the file system of any remote system using a workflow optimized for professionals - Quickly open a terminal into any directory -- Run commands from the explorer interface - Utilize your favourite local programs to open and edit remote files ![Remote file explorer](https://user-images.githubusercontent.com/72509152/230100929-4476f76c-ea81-43d9-ac4a-b3b02df2334e.png) -### Connection manager +### Simple connection management -- Easily create and manage all kinds of remote connections at one location +- Easily create and manage all kinds of remote connections - Securely stores all information exclusively on your computer and encrypts all secret information. See - the [security page](/SECURITY.md) for more info -- Create desktop shortcuts to automatically open your connections in your terminal + the [security page](/SECURITY.md) for more information +- Create custom desktop shortcuts to automatically open specific remote connections in your terminal ![Connection manager](https://user-images.githubusercontent.com/72509152/230098966-000596ca-8167-4cb8-8ada-f6b3a7d482e2.png) ### Instant launch for remote shells and commands - Automatically login into a shell in your favourite terminal with one click (no need to fill password prompts, etc.) -- Works for all kinds of shells. This includes command shells (e.g. bash, PowerShell, cmd, etc.) and database shells ( - e.g. PostgreSQL Shell) -- Comes with integrations for all commonly used terminals for all operating systems +- Works for all kinds of shells. This includes command shells (e.g. bash, PowerShell, cmd, etc.) and some database shells (e.g. PostgreSQL Shell) +- Comes with support for all commonly used terminals across all operating systems - Allows you to customize the launched shell's init environment -- Launches from the GUI or command-line +- Supports launches from the GUI or command-line ## Further information -In case you're interested in development, check out the [development page](/DEVELOPMENT.md). - For information about the security model of XPipe, see the [security page](/SECURITY.md). For information about the privacy policy of XPipe, see the [privacy page](/PRIVACY.md). +In case you're interested in development, check out the [development page](/DEVELOPMENT.md). + If you want to talk you can also join: - The [XPipe Discord Server](https://discord.gg/8y89vS8cRb) diff --git a/SECURITY.md b/SECURITY.md index 714c4b1b6..7cb45e56a 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -25,11 +25,11 @@ then there is no technical way of preventing malicious programs to also infect X ## Reliance on other programs -XPipe essentially outsources any form of connection and shell handling to your existing command-line tools. +XPipe essentially delegates any form of connection and shell handling to your existing command-line tools. It does not come with any remote handling capabilities of its own. Therefore, any used command-line program should be secure. If for example your `ssh` command-line program or its connections are susceptible to MITM attacks or -vulnerable in any other way, there is no way for XPipe to keep the sensitive information secure. +vulnerable in any other way, there is no way for XPipe to guarantee that the sensitive information can be kept secure. It is your responsibility to use the programs in a secure environment and keep them up to date with security patches and more. XPipe can only be as secure as your underlying command-line tools itself. @@ -63,7 +63,7 @@ You can choose to change this storage location in the settings menu. All sensitive information is encrypted when it is saved to disk on your local machine using AES with either: -- A custom master lock key that can be set by you in the settings menu +- A custom master key that can be set by you in the settings menu (This option is only as secure as the password you choose) - A somewhat dynamically generated key (This option can be reverse engineered though, there is no way of perfectly securing your data without any custom key) @@ -123,7 +123,7 @@ you have the option to automatically send an error report with optional feedback This error report does not contain any sensitive information unless you explicitly choose to attach debug mode log files (See above). -## Isolation +## Isolation of systems Any infected remote system should be isolated enough such that any infection can't spread through XPipe.