Skip to content
/ Xeres Public

A Peer-to-Peer (Friend-to-Friend), decentralized, encrypted and secure application designed for communication and sharing.

License

Notifications You must be signed in to change notification settings

zapek/Xeres

Main site

GitHub release License CodeQL Quality Gate Status

Xeres is a decentralized and secure application designed for communication and sharing.


Xeres Desktop

Table of Contents

Features

Xeres is an application that allows to connect to other peers to exchange information.

  • 🀝 Peer-to-Peer (Friend-to-Friend), fully decentralized
  • 🚫 No censorship. Cannot be censored
  • πŸ‘‹ Compatible with Retroshare 0.6.6 or higher
  • πŸ› οΈ Hardware accelerated encryption
  • πŸ–₯️ Desktop User Interface
  • πŸ“Ά Remote access
  • πŸš€ Asynchronous design
  • ✈️ High concurrency
  • πŸ“– Free software (GPL)

Supported Platforms

  • Windows (x86_64)
  • Linux (x86_64)
  • MacOS (x86_64)

Releases

Latest release always available here.

Getting Help

Documentation

Development

Build Requirements

  • Java 21

If you want to quickly try the current development version without installing anything else, see the command line section below.

How to run

IntelliJ IDEA Ultimate

Run the XeresApplication Spring Boot configuration.

  • Active Profile: dev
  • VM Options: -ea -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8
  • CLI arguments: --fast-shutdown
IntelliJ Community Edition

Run the Gradle bootRun target. It's in the top right Gradle panel, Tasks / application. It's already preconfigured.

(This way also works with IntelliJ IDEA Ultimate, but you'll miss some extras like colored debug output and faster launch)

Command Line
Windows
gradlew.bat bootRun
Linux
./gradlew bootRun

To pass arguments to Xeres, just use the args feature, for example:

./gradlew bootRun --args="--no-gui --fast-shutdown"

(Use --args="--help" to know all arguments)

Database Debugging

Online

When running Xeres with the dev profile, there's a built-in H2 Console available, accessible through the Debug menu.

Offline

With IntelliJ Ultimate, create the following Database connection with the built-in Datagrip client (aka the Database tool window)

  • Connection type: Embedded
  • Driver: H2
  • Path: select ./data/userdata.mv.db. If the file is not there, run Xeres once.
  • Authentication: User & Password
  • User: sa
  • There's no password

You can also download the H2 installer (version to use: 2.1.214). Then run the H2 console with the following settings:

  • Saved Settings: Generic H2 (Embedded)
  • Driver Class: org.h2.Driver
  • JDBC URL: hdbc:h2:file:~/workspace/Xeres/data/userdata (put your path, and no file extension at the end!)
  • User Name: sa
  • The password is empty

Useful Gradle Tasks

Running Tests Locally

run the test task

Cleaning the Build Directory

run the clean task

Upgrading Gradle
  • change the version in build.gradle in the wrapper section
  • run the wrapper task

Useful Links

Pick a FontAwesome Icon

https://kordamp.org/ikonli/cheat-sheet-fontawesome5.html

Replace all '-' by '_' in their names for use in JavaFX.

Git Branching Model

master always contains the current and runnable code. Use a feature branch to work on a feature (for example, feature/165-the-feature (165 would be the ticket number, if any)). Once it's ready, have someone review it then merge to master.

Releases use tags and might use a release branches if urgent fixes are needed.

More information: Git process that works - say no to GitFlow.

Manual Testing

Using Multiple Configs

Pass the following arguments to run multiple instances.

Location A:

--data-dir=./data2

Location B:

--data-dir=./data3

Monitoring

When running Xeres with the dev profile, JMX monitoring is available either using JConsole or VisualVM. Simply run them and connect to the Xeres session.