Update read me

This commit is contained in:
crschnick 2023-04-16 23:06:59 +00:00
parent fc68b96f72
commit 902b1534a8
3 changed files with 108 additions and 88 deletions

72
DEVELOPMENT.md Normal file
View file

@ -0,0 +1,72 @@
# Development
Any contribution is welcomed!
There are no real formal contribution guidelines right now, they will maybe come later.
## Repository Structure
The following for modules make up the X-Pipe API and a licensed under the MIT license:
- [core](core) - Shared core classes of the X-Pipe Java API, X-Pipe extensions, and the X-Pipe daemon implementation
- [beacon](beacon) - The X-Pipe beacon component is responsible for handling all communications between the X-Pipe
daemon
and the client applications, for example the various programming language APIs and the CLI
The other modules make up the X-Pipe implementation and are licensed under GPL:
- [app](app) - Contains the X-Pipe daemon implementation, the X-Pipe desktop application, and an
API to create all different kinds of extensions for the X-Pipe platform
- [dist](dist) - Tools to create a distributable package of X-Pipe
- [ext](ext) - Available X-Pipe extensions. Essentially every feature is implemented as an extension
### Open source model
X-Pipe utilizes an open core model, which essentially means that
the main application is open source while certain other components are not.
Select parts are not open source yet, but may be added to this repository in the future.
Some tests and especially test environments and that run on private servers
are also not included in this repository (Don't want to leak server information).
Finally, scripts and workflows to create and publish installers and packages
are also not included to prevent attackers from easily impersonating the X-Pipe application.
## Modularity
All X-Pipe components target [JDK 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,
many IDEs still have problems building this project properly.
For example, you can't build this project in eclipse or vscode as it will complain about missing modules.
The tested and recommended IDE is IntelliJ.
## Setup
You need to have an up-to-date version of X-Pipe installed on your local system in order to properly
run X-Pipe in a development environment.
This is due to the fact that some components are only included in the release version and not in this repository.
X-Pipe is able to automatically detect your local installation and fetch the required
components from it when it is run in a development environment.
## Building and Running
You can use the gradle wrapper to build and run the project:
- `gradlew app:run` will run the desktop application. You can set various useful properties in `app/build.gradle`
- `gradlew dist` will create a distributable production version in `dist/build/dist/base`.
- `gradlew <project>:test` will run the tests of the specified project.
You are also able to properly debug the built production application through two different methods:
- The `app/scripts/xpiped_debug` script will launch the application in debug mode and with a console attached to it
- The `app/scripts/xpiped_debug_attach` script attaches a debugger with the help of [AttachMe](https://plugins.jetbrains.com/plugin/13263-attachme).
Just make sure that the attachme process is running within IntelliJ, and the debugger should launch automatically once you start up the application.
Note that when any unit test is run using a debugger, the X-Pipe daemon process that is started will also attempt
to connect to that debugger through [AttachMe](https://plugins.jetbrains.com/plugin/13263-attachme) as well.
## FAQ
#### Why are there no GitHub actions workflows in this repository?
There are several test workflows run in a private environment as they use private test connections
such as remote server connections and database connections.
Other private workflows are responsible for packaging, signing, and distributing the releases.
So you can assume that the code is tested!

118
README.md
View file

@ -1,12 +1,22 @@
<img src="https://user-images.githubusercontent.com/72509152/213873342-7638e830-8a95-4b5d-ad3e-5a9a0b4bf538.png" alt="drawing" width="250"/>
### A smart connection manager and remote file explorer
### A flexible connection manager and remote file explorer
X-Pipe is a brand-new type of connection manager and remote file explorer that works by exclusively interacting with CLI 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.
X-Pipe is a brand-new type of connection manager and remote file explorer that works by only interacting with established 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.
X-Pipe integrates with your existing tools and workflows
by outsourcing as many tasks as possible to your
It currently supports:
- Containers located on any host, e.g. [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
- [Powershell Remote Sessions](https://learn.microsoft.com/en-us/powershell/scripting/learn/remoting/running-remote-commands?view=powershell-7.3)
- Any other custom remote connection methods that works through the command-line
- Arbitrary types of proxies to establish connections
Furthermore, X-Pipe 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.
@ -19,106 +29,38 @@ Head over to the [releases page](https://github.com/xpipe-io/xpipe/releases/late
### Remote file explorer
- Access files on any remote system
- Access the file system of any remote system
- Quickly open a terminal into any directory
- Run commands from the explorer interface
- Utilize your favourite local programs to open and edit remote files
<img src="https://user-images.githubusercontent.com/72509152/230100929-4476f76c-ea81-43d9-ac4a-b3b02df2334e.png" alt="drawing" height="450"/>
<img src="https://user-images.githubusercontent.com/72509152/230100929-4476f76c-ea81-43d9-ac4a-b3b02df2334e.png" alt="Remote file explorer" height="500"/>
### Flexible remote connector
- Can connect to standard servers, database servers, and more
- Supports established protocols like SSH and more
- Also works on non-protocol-based shell connections like docker, WSL, LXD, and more plus any custom connection methods that work through the command-line
- Is able to integrate all kinds of proxies into the connection process
### Manage all your connections in one place
### Connection manager
- Easily create and manage all kinds of remote connections at one location
- Securely stores all information exclusively on your computer and encrypts all secret information. See the [security page](/SECURITY.md) for more info
- 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
<img src="https://user-images.githubusercontent.com/72509152/230098966-000596ca-8167-4cb8-8ada-f6b3a7d482e2.png" alt="drawing" height="450"/>
<img src="https://user-images.githubusercontent.com/72509152/230098966-000596ca-8167-4cb8-8ada-f6b3a7d482e2.png" alt="Connection manager" height="500"/>
### 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)
- 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
- Allows you to customize the launched shell's init environment
- Launches from the GUI or command-line
## Community
## Further information
In case you're interested in development, check out the [development page](/DEVELOPMENT.md).
For information about the security model of X-Pipe, see the [security page](/SECURITY.md).
If you want to talk you can also join:
There are several ways to reach out in case you encounter any issues or questions:
- The [X-Pipe Discord Server](https://discord.gg/8y89vS8cRb)
- The [X-Pipe Slack Server](https://join.slack.com/t/x-pipe/shared_invite/zt-1awjq0t5j-5i4UjNJfNe1VN4b_auu6Cg)
## Repository Structure
The following for modules make up the X-Pipe API and a licensed under the MIT license:
- [core](core) - Shared core classes of the X-Pipe Java API, X-Pipe extensions, and the X-Pipe daemon implementation
- [beacon](beacon) - The X-Pipe beacon component is responsible for handling all communications between the X-Pipe daemon
and the client applications, for example the various programming language APIs and the CLI
The other modules make up the X-Pipe implementation and are licensed under GPL:
- [app](app) - Contains the X-Pipe daemon implementation, the X-Pipe desktop application, and an
API to create all different kinds of extensions for the X-Pipe platform
- [dist](dist) - Tools to create a distributable package of X-Pipe
- [ext](ext) - Available X-Pipe extensions. Essentially every feature is implemented as an extension
### Open source model
X-Pipe utilizes an open core model, which essentially means that
the main application is open source while certain other components are not.
Select parts are not open source yet, but may be added to this repository in the future.
Some tests and especially test environments and that run on private servers
are also not included in this repository (Don't want to leak server information).
Finally, scripts and workflows to create and publish installers and packages
are also not included to prevent attackers from easily impersonating the X-Pipe application.
## Development
Any contribution is welcomed!
There are no real formal contribution guidelines right now, they will maybe come later.
### Modularity
All X-Pipe components target [JDK 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,
many IDEs still have problems building this project properly.
For example, you can't build this project in eclipse or vscode as it will complain about missing modules.
The tested and recommended IDE is IntelliJ.
### Setup
You need to have an up-to-date version of X-Pipe installed on your local system in order to properly
run X-Pipe in a development environment.
This is due to the fact that some components are only included in the release version and not in this repository.
X-Pipe is able to automatically detect your local installation and fetch the required
components from it when it is run in a development environment.
### Building and Running
You can use the gradle wrapper to build and run the project:
- `gradlew app:run` will run the desktop application. You can set various useful properties in `app/build.gradle`
- `gradlew dist` will create a distributable production version in `dist/build/dist/base`.
- `gradlew <project>:test` will run the tests of the specified project.
You are also able to properly debug the built production application through two different methods:
- The `app/scripts/xpiped_debug` script will launch the application in debug mode and with a console attached to it
- The `app/scripts/xpiped_debug_attach` script attaches a debugger with the help of [AttachMe](https://plugins.jetbrains.com/plugin/13263-attachme).
Just make sure that the attachme process is running within IntelliJ, and the debugger should launch automatically once you start up the application.
Note that when any unit test is run using a debugger, the X-Pipe daemon process that is started will also attempt
to connect to that debugger through [AttachMe](https://plugins.jetbrains.com/plugin/13263-attachme) as well.
#### Why are there no GitHub actions workflows in this repository?
There are several test workflows run in a private environment as they use private test connections
such as remote server connections and database connections.
Other private workflows are responsible for packaging, signing, and distributing the releases.
So you can assume that the code is tested!

View file

@ -77,6 +77,12 @@ other information stored by X-Pipe that is not explicitly sent to that host.
During development, a lot of focus lies on preventing all
sorts of attacks like injection attacks from the remote host
## Issue reports
Whenever an error occurs within X-Pipe or you choose to open the error reporter dialog,
you have the option to automatically send an error report with optional feedback and attachments.
This error report does not contain any sensitive information
## Reporting a security vulnerability
If you believe that there is a security vulnerability in X-Pipe,