Husarnet is a Peer-to-Peer VPN to connect your laptops, servers and microcontrollers over the Internet with zero configuration.

Overview

Husarnet logo

Husarnet Client

Husarnet is a Peer-to-Peer VPN to connect your laptops, servers and microcontrollers over the Internet with zero configuration.

Key features:

  • Low Latency - thanks to Peer-to-Peer connection between devices. After establishing a connection, Husarnet Infrastructure (Husarnet Base Servers) is used only as a failover proxy if P2P connection is not possible.
  • Zero Configuration - after installing Husarnet Client, you can add new devices to your network with a single command husarnet join <YOUR_JOINCODE> mydevname (on Linux. See docs for other platforms).
  • Low Reconfiguration Time - in case of a network topology change (eg. transition between two Wi-Fi hotspots), Husarnet needs usually 1 - 3 seconds to reastablish a new Peer-to-Peer connection.
  • Lightweight - it works not only on popular OSes (currently only Linux version is released, Windows, MacOS, Android coming soon) but even on ESP32 microcontrollers. That means you can P2P access your things without IoT server at all!
  • Secure & Private - packets never leave connected devices unencrypted, Perfect Forward Secrecy (PFC) enabled by default.

Husarnet, in it's core, is one big, automatically routed, IPv6 network. Running Husarnet daemon creates a virtual network interface (hnet0) with an unique Husarnet IPv6 address and associated fc94::/16 route. If you choose to disable the permission system, any node can reach your node using IPv6 fc94:... address, but if you choose to leave it enabled, we've prepared an extensive permissions system for you. You can have multiple virtual islands/networks, your devices can access multiple networks or you can even share access to those networks with other users!

The nodes are identified by their 112-bit IPv6 addresses, that are based on the public keys of the node. All connections are also authenticated by the IPv6 address. This property makes it possible to establish connection authenticity without any trusted third party, basing only on the IPv6 address! The connections are also always encrypted.

Cryptography: Husarnet uses X25519 from libsodium for key exchange, with ephemeral Curve25519 keys for forward secrecy. The hash of initial public key is validated to match the IPv6 address. The packets are encrypted using libsodium's ChaCha20-Poly1305 secretbox construction with a random 192-bit nonce.

Runtime safety: Husarnet is written in C++ using modern memory-safe constructs. Linux version drops all capabilities after initialization. It only retains access to /etc/hosts and /etc/hostname via a helper process.

If Husarnet instance is not connected to the Husarnet Dashboard, the whitelist (think of it as a crude firewall) and hostname table can only be changed by a local root user. All the other configuration can be changed using the Husarnet Dashboard after you join your device to a network there.


This is the main development repository for all of the Husarnet Client apps.

For more generic information please have a look at the Husarnet Docs.

Typical issues preventing Peer-to-Peer connection (thus enjoing a low-latency) and their workarounds are described in the Troubleshooting Guide.

Repository organization

  • util directory - all the scripts and utilities used for building and testing. CI config should be referencing those in order to make local testing easier
  • unix directory - main dir for unix platform code
  • tests directory - unit (and other) tests (unit tests will run on x86_64 unix platform)
  • deploy directory - various files needed for deployment - like the static files in our repositories

Building and publishing

  • ./util/build-prepare.sh - will install all required toolchains, etc - tested on Ubuntu 20.10
  • If you want to bump the current version (i.e. as a preparation for release) - ./util/version-bump.py (keep in mind that all merges/commits to the default branch will to that automatically)
  • If you want to build:
    • all platforms: ./util/build-all.sh
    • specific platform:
      • platforms using cmake: ./util/build-cmake.sh <architecture> <platform>
  • CI will be doing these steps automatically when ran on default branch:
    • bump and commit the new version "number"
    • build for all platforms and architectures (when available)
    • test all platforms and architectures (when available)
    • publish to the internal repositories
    • wait for manual confirmation to publish in the public repo
  • CI will be doing these steps then ran on any other branch:
    • build for all platforms and architectures (when available)
    • test all platforms and architectures (when available)

Running tests

  • ./util/test-prepare.sh - will install required tools
  • ./util/test-all.sh - will run ALL tests
  • ./util/test-cppcheck.sh - will run cppcheck
  • ./util/test-unit.sh - will build and run unit tests. Assumes host machine is x86 and runs some form of Unix

CI extra notes

  • ./util/prepare-all.sh - this will prepare both build and test environments

Contributors

This project was possible thanks to:

  • @zielmicha
  • @m4tx
  • @andrzejwl
  • @pidpawel
  • @konradpr

License

Husarnet is dual-licensed:

  • GNU Public License - for derivative projects - eg. exposing a generic VPN functionality.
  • Mozilla Public License - for projects where you link Husarnet Client code with different project type than mentioned above - eg. using Husarnet Client SDK in ESP32 IoT project.

See LICENSE.txt for details.

Comments
  • Unable to verify mailbox after registration

    Unable to verify mailbox after registration

    I have receive two email, Topic1:Activate Your Husarnet Account Topic2:Welcome To Husarnet! Start Your Journey With Low Latency Connectivity In these two emails, I can't find the link to verify my email . I click the logo in the email, and I will enter husarnet.com, which will lead to account confirmation. I click "reset confirmation mail" and can't receive any new mail

    opened by yangminglong 5
  • High latency when 2 devices are not in local network

    High latency when 2 devices are not in local network

    Hi,

    When the connection is P2P, it has low latency. But when they are not in local network (eg. I connect to my phone mobile hotspot), the connection is tunelled and it has very high latency. Is it that husarnet cannot work with mobile hotspot? Is there any solutions for that?

    Thank you.

    long term request 
    opened by joewong00 4
  • husarnet-ros no installation candidate

    husarnet-ros no installation candidate

    HI, Recently, I tried the tutorials for using husarnet & ros

    From there, I tried to install husarnet-ros

    Getting this error

    sudo apt-get install husarnet-ros
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    Package husarnet-ros is not available, but is referred to by another package.
    This may mean that the package is missing, has been obsoleted, or
    is only available from another source
    
    E: Package 'husarnet-ros' has no installation candidate
    

    Can you please help with this? Thank you :)

    opened by sachin-rr 4
  • Ubuntu 20.10 has reached EOL

    Ubuntu 20.10 has reached EOL

    I noticed the Dockerfiles of the samples are using Ubuntu 20.10, but they are already end-of-life. All apt commands return an error, when I fetch it.

    Is there any issue in upgrading them to 21.04? Why the LTS release isn't being used instead?

    opened by jessearmandse 3
  • Unable to join a host by using join code for ROS2

    Unable to join a host by using join code for ROS2

    Server: DigitalOcean Operating System: Ubuntu 20.04 ROS version: Foxy

    Hi there. I am trying to use the join code command husarnet join <your-join-code> <device-hostname> provided in the installation guide. Apparently it keeps on repeating the "joining" message as shown below,

    [2473196] joining...
    [2475196] joining...
    [2477197] joining...
    [2479197] joining...
    [2481198] joining...
    [2483199] joining...
    [2485199] joining...
    [2487200] joining...
    [2489201] joining...
    [2491202] joining...
    [2493202] joining...
    [2495203] joining...
    [2497204] joining...
    [2499204] joining...
    [2501205] joining...
    [2503206] joining...
    [2505206] joining...
    [2507207] joining...
    [2509208] joining...
    [2511208] joining...
    [2513209] joining...
    [2515210] joining...
    [2517210] joining...
    [2519211] joining...
    [2521212] joining...
    [2523212] joining...
    [2525213] joining...
    
    

    In the web app I am not able to see the device joining into the network. I have checked the ufw status and get these results and I believe that the ports are enabled by default by Husarnet.

    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    443                        ALLOW       Anywhere
    Husarnet                   ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    443 (v6)                   ALLOW       Anywhere (v6)
    Husarnet (v6)              ALLOW       Anywhere (v6)
    

    Using husarnet status I have gotten these results,

    Profile: Husarnet
    Title: Husarnet
    Description: Secure P2P network layer
    
    Port:
      5581:5587/udp
    
    

    Using journalctl --unit husarnet--since "1 hour ago" and gotten these results,

    Jul 15 06:13:16 Cloud husarnet[781]: [2549221] control command: join
    Jul 15 06:13:16 Cloud husarnet[781]: [2549221] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:18 Cloud husarnet[781]: [2551221] control command: has-received-init-response
    Jul 15 06:13:18 Cloud husarnet[781]: [2551221] control command: join
    Jul 15 06:13:18 Cloud husarnet[781]: [2551222] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:20 Cloud husarnet[781]: [2553222] control command: has-received-init-response
    Jul 15 06:13:20 Cloud husarnet[781]: [2553222] control command: join
    Jul 15 06:13:20 Cloud husarnet[781]: [2553222] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:22 Cloud husarnet[781]: [2555223] control command: has-received-init-response
    Jul 15 06:13:22 Cloud husarnet[781]: [2555223] control command: join
    Jul 15 06:13:22 Cloud husarnet[781]: [2555223] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:24 Cloud husarnet[781]: [2557223] control command: has-received-init-response
    Jul 15 06:13:24 Cloud husarnet[781]: [2557223] control command: join
    Jul 15 06:13:24 Cloud husarnet[781]: [2557223] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:26 Cloud husarnet[781]: [2559224] control command: has-received-init-response
    Jul 15 06:13:26 Cloud husarnet[781]: [2559224] control command: join
    Jul 15 06:13:26 Cloud husarnet[781]: [2559224] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:28 Cloud husarnet[781]: [2561225] control command: has-received-init-response
    Jul 15 06:13:28 Cloud husarnet[781]: [2561225] control command: join
    Jul 15 06:13:28 Cloud husarnet[781]: [2561225] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:30 Cloud husarnet[781]: [2563225] control command: has-received-init-response
    Jul 15 06:13:30 Cloud husarnet[781]: [2563225] control command: join
    Jul 15 06:13:30 Cloud husarnet[781]: [2563225] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:32 Cloud husarnet[781]: [2565226] control command: has-received-init-response
    Jul 15 06:13:32 Cloud husarnet[781]: [2565226] control command: join
    Jul 15 06:13:32 Cloud husarnet[781]: [2565226] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:34 Cloud husarnet[781]: [2567227] control command: has-received-init-response
    Jul 15 06:13:34 Cloud husarnet[781]: [2567227] control command: join
    Jul 15 06:13:34 Cloud husarnet[781]: [2567227] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:36 Cloud husarnet[781]: [2569227] control command: has-received-init-response
    Jul 15 06:13:36 Cloud husarnet[781]: [2569227] control command: join
    Jul 15 06:13:36 Cloud husarnet[781]: [2569227] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:37 Cloud husarnet[781]: [2569862] HELLO from [137.117.229.110]:5582 (id: fc94:b01d:1803:8dd8:b293:5c7d:7639:932a, active: YES)
    Jul 15 06:13:37 Cloud husarnet[781]: [2569862] HELLO from [137.117.229.110]:5582 (id: fc94:b01d:1803:8dd8:b293:5c7d:7639:932a, active: YES)
    Jul 15 06:13:38 Cloud husarnet[781]: [2571228] control command: has-received-init-response
    Jul 15 06:13:38 Cloud husarnet[781]: [2571228] control command: join
    Jul 15 06:13:38 Cloud husarnet[781]: [2571228] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:39 Cloud husarnet[781]: [2572230] reestablish connection to [fc94:b01d:1803:8dd8:b293:5c7d:7639:932a]
    Jul 15 06:13:39 Cloud husarnet[781]: [2572231] addresses: [10.1.1.4]:5582, [127.0.0.1]:5582, [137.117.229.110]:5582, [172.17.0.1]:5582, [172.18.0.1]:5582, [172.19.0.1]:5582,
    Jul 15 06:13:39 Cloud husarnet[781]: [2572392] HELLO-REPLY from [137.117.229.110]:5582 (fc94b01d18038dd8b2935c7d7639932a)
    Jul 15 06:13:39 Cloud husarnet[781]: [2572392]  - using this address as target (reply received after 162 ms)
    Jul 15 06:13:39 Cloud husarnet[781]: [2572392] HELLO-REPLY from [137.117.229.110]:5582 (fc94b01d18038dd8b2935c7d7639932a)
    Jul 15 06:13:40 Cloud husarnet[781]: [2572468] received base UDP address: [188.165.23.196]:5582
    Jul 15 06:13:40 Cloud husarnet[781]: [2572468] received base transient range: 5600 5620
    Jul 15 06:13:40 Cloud husarnet[781]: [2573229] control command: has-received-init-response
    Jul 15 06:13:40 Cloud husarnet[781]: [2573229] control command: join
    Jul 15 06:13:40 Cloud husarnet[781]: [2573229] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:42 Cloud husarnet[781]: [2575229] control command: has-received-init-response
    Jul 15 06:13:42 Cloud husarnet[781]: [2575229] control command: join
    Jul 15 06:13:42 Cloud husarnet[781]: [2575230] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:44 Cloud husarnet[781]: [2577230] control command: has-received-init-response
    Jul 15 06:13:44 Cloud husarnet[781]: [2577230] control command: join
    Jul 15 06:13:44 Cloud husarnet[781]: [2577230] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:46 Cloud husarnet[781]: [2579231] control command: has-received-init-response
    Jul 15 06:13:46 Cloud husarnet[781]: [2579231] control command: join
    Jul 15 06:13:46 Cloud husarnet[781]: [2579231] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:48 Cloud husarnet[781]: [2581231] control command: has-received-init-response
    Jul 15 06:13:48 Cloud husarnet[781]: [2581231] control command: join
    Jul 15 06:13:48 Cloud husarnet[781]: [2581231] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:13:50 Cloud husarnet[781]: [2583232] control command: has-received-init-response
    Jul 15 06:13:50 Cloud husarnet[781]: [2583232] control command: join
    Jul 15 06:13:50 Cloud husarnet[781]: [2583232] sending join request to fc94:b01d:1803:8dd8:b293:5c7d:7639:932a
    Jul 15 06:14:04 Cloud husarnet[781]: [2597374] reestablish connection to [fc94:b01d:1803:8dd8:b293:5c7d:7639:932a]
    Jul 15 06:14:04 Cloud husarnet[781]: [2597375] addresses: [10.1.1.4]:5582, [127.0.0.1]:5582, [137.117.229.110]:5582, [172.17.0.1]:5582, [172.18.0.1]:5582, [172.19.0.1]:5582,
    Jul 15 06:14:05 Cloud husarnet[781]: [2597538] HELLO-REPLY from [137.117.229.110]:5582 (fc94b01d18038dd8b2935c7d7639932a)
    Jul 15 06:14:05 Cloud husarnet[781]: [2597538]  - using this address as target (reply received after 164 ms)
    Jul 15 06:14:05 Cloud husarnet[781]: [2597538] HELLO-REPLY from [137.117.229.110]:5582 (fc94b01d18038dd8b2935c7d7639932a)
    Jul 15 06:14:05 Cloud husarnet[781]: [2597612] received base UDP address: [188.165.23.196]:5582
    Jul 15 06:14:05 Cloud husarnet[781]: [2597612] received base transient range: 5600 5620
    Jul 15 06:14:30 Cloud husarnet[781]: [2622524] reestablish connection to [fc94:b01d:1803:8dd8:b293:5c7d:7639:932a]
    Jul 15 06:14:30 Cloud husarnet[781]: [2622525] addresses: [10.1.1.4]:5582, [127.0.0.1]:5582, [137.117.229.110]:5582, [172.17.0.1]:5582, [172.18.0.1]:5582, [172.19.0.1]:5582,
    Jul 15 06:14:30 Cloud husarnet[781]: [2622688] HELLO-REPLY from [137.117.229.110]:5582 (fc94b01d18038dd8b2935c7d7639932a)
    Jul 15 06:14:30 Cloud husarnet[781]: [2622688]  - using this address as target (reply received after 164 ms)
    Jul 15 06:14:30 Cloud husarnet[781]: [2622688] HELLO-REPLY from [137.117.229.110]:5582 (fc94b01d18038dd8b2935c7d7639932a)
    Jul 15 06:14:30 Cloud husarnet[781]: [2622762] received base UDP address: [188.165.23.196]:5582
    Jul 15 06:14:30 Cloud husarnet[781]: [2622762] received base transient range: 5600 5620
    Jul 15 06:14:55 Cloud husarnet[781]: [2648176] reestablish connection to [fc94:b01d:1803:8dd8:b293:5c7d:7639:932a]
    Jul 15 06:14:55 Cloud husarnet[781]: [2648177] addresses: [10.1.1.4]:5582, [127.0.0.1]:5582, [137.117.229.110]:5582, [172.17.0.1]:5582, [172.18.0.1]:5582, [172.19.0.1]:5582,
    Jul 15 06:14:55 Cloud husarnet[781]: [2648339] HELLO-REPLY from [137.117.229.110]:5582 (fc94b01d18038dd8b2935c7d7639932a)
    Jul 15 06:14:55 Cloud husarnet[781]: [2648339]  - using this address as target (reply received after 163 ms)
    Jul 15 06:14:55 Cloud husarnet[781]: [2648340] HELLO-REPLY from [137.117.229.110]:5582 (fc94b01d18038dd8b2935c7d7639932a)
    Jul 15 06:14:55 Cloud husarnet[781]: [2648414] received base UDP address: [188.165.23.196]:5582
    Jul 15 06:14:55 Cloud husarnet[781]: [2648414] received base transient range: 5600 5620
    Jul 15 06:15:20 Cloud husarnet[781]: [2673436] reestablish connection to [fc94:b01d:1803:8dd8:b293:5c7d:7639:932a]
    Jul 15 06:15:20 Cloud husarnet[781]: [2673437] addresses: [10.1.1.4]:5582, [127.0.0.1]:5582, [137.117.229.110]:5582, [172.17.0.1]:5582, [172.18.0.1]:5582, [172.19.0.1]:5582,
    Jul 15 06:15:21 Cloud husarnet[781]: [2673600] HELLO-REPLY from [137.117.229.110]:5582 (fc94b01d18038dd8b2935c7d7639932a)
    Jul 15 06:15:21 Cloud husarnet[781]: [2673600]  - using this address as target (reply received after 164 ms)
    Jul 15 06:15:21 Cloud husarnet[781]: [2673601] HELLO-REPLY from [137.117.229.110]:5582 (fc94b01d18038dd8b2935c7d7639932a)
    Jul 15 06:15:21 Cloud husarnet[781]: [2673674] received base UDP address: [188.165.23.196]:5582
    Jul 15 06:15:21 Cloud husarnet[781]: [2673674] received base transient range: 5600 5620
    Jul 15 06:15:46 Cloud husarnet[781]: [2698914] reestablish connection to [fc94:b01d:1803:8dd8:b293:5c7d:7639:932a]
    Jul 15 06:15:46 Cloud husarnet[781]: [2698915] addresses: [10.1.1.4]:5582, [127.0.0.1]:5582, [137.117.229.110]:5582, [172.17.0.1]:5582, [172.18.0.1]:5582, [172.19.0.1]:5582,
    Jul 15 06:15:46 Cloud husarnet[781]: [2699077] HELLO-REPLY from [137.117.229.110]:5582 (fc94b01d18038dd8b2935c7d7639932a)
    Jul 15 06:15:46 Cloud husarnet[781]: [2699077]  - using this address as target (reply received after 163 ms)
    Jul 15 06:15:46 Cloud husarnet[781]: [2699078] HELLO-REPLY from [137.117.229.110]:5582 (fc94b01d18038dd8b2935c7d7639932a)
    Jul 15 06:15:46 Cloud husarnet[781]: [2699152] received base UDP address: [188.165.23.196]:5582
    Jul 15 06:15:46 Cloud husarnet[781]: [2699152] received base transient range: 5600 5620
    Jul 15 06:16:12 Cloud husarnet[781]: [2724521] received base UDP address: [188.165.23.196]:5582
    Jul 15 06:16:12 Cloud husarnet[781]: [2724521] received base transient range: 5600 5620
    Jul 15 06:16:37 Cloud husarnet[781]: [2749782] received base UDP address: [188.165.23.196]:5582
    Jul 15 06:16:37 Cloud husarnet[781]: [2749782] received base transient range: 5600 5620
    Jul 15 06:17:02 Cloud husarnet[781]: [2775040] received base UDP address: [188.165.23.196]:5582
    Jul 15 06:17:02 Cloud husarnet[781]: [2775040] received base transient range: 5600 5620
    

    May I know are there any ways that I can troubleshoot this issue? Is it because of blocked UDP or I have missed out on any installation steps? I have followed the installation guide based on this link https://husarnet.com/docs/tutorial-ros2/#ros-2-and-dds-implementation. Appreciate any suggestions or advice. Thank you.

    opened by destkk 3
  • GPG error, Key error, no digital signature

    GPG error, Key error, no digital signature

    When I run this commend, curl https://install.husarnet.com/install.sh | sudo bash, some error happend. GPG 错误, https://install.husarnet.com/deb all Release: 下列签名无效: EXPKEYSIG 197D62F68A4C7BD6 Husarnet Authors [email protected],仓库没有数字签名

    • 无法安全的用该源进行更新,所以默认禁用该源。
    • Could you help me solve this error? Thank you!
    opened by sunyuan789 2
  • ROS can't publish message, but could advertise

    ROS can't publish message, but could advertise

    Starting roscore on Master, and other device which joined could ping successfully. I tried run turtlesim_node on master device, and run turtle_teleop_key on other device. I could advertiese /turtle1/pose, but i can't publish any message on other device.

    waiting for team response 
    opened by sunyuan789 1
  • ERROR:  timeout

    ERROR: timeout

    When I add a new client, the error occurred. I used it successful several days ago, but today is not work. Could you please help me solving it problem? Quicker_20221119_111528

    waiting on user response 
    opened by sunyuan789 2
  • Multimaster usage

    Multimaster usage

    Hello !!

    I have an application where I will deploy a fleet of mobile robots but I would need them to be auto-sufficient, so it would be best that every robot has its own master, regardless of connectivity with the internet.

    For that purpose we setup the " fkie multimaster" package so that the robots can exchange some information when connected. For the multimaster to work correctly we need to be able to ping a broadcast address (224.0.0.1) through the husarnet interface.

    Is that possible? If I'm not mistaken using broadcast needs the interface to be a tap interface which will relay also layer 2 data.

    It is possible to achieve that?

    Thanks in advance!

    waiting on user response 
    opened by bfMendonca 1
  • Make husarnet client available via winget

    Make husarnet client available via winget

    Hi,

    Microsoft now has its own package manager, similar to apt in a Linux environment. Can we please have husarnet added to it so that people can install and upgrade the client more easily.

    Thanks, dRm

    long term request 
    opened by drm-nz 1
  • Status on MacOS?

    Status on MacOS?

    Hello,

    Switching to Mac has been quite painful since there's no Mac client available. Is there an ETA for when MacOS client will arrive? If it matters, ARM architecture is relevant for me.

    long term request 
    opened by peredwardsson 1
Releases(v2.0.22)
Owner
Husarnet
Husarnet
Lightway Core is a modern VPN protocol by ExpressVPN, to deliver a VPN experience that’s faster, more secure, and more reliable.

Lightway Core is a modern VPN protocol by ExpressVPN, to deliver a VPN experience that’s faster, more secure, and more reliable.

ExpressVPN 390 Dec 28, 2022
LAN Party VPN - Run VPN on top of Discord. No installation required.

LAN Party VPN - VPN for Virtual LAN Parties Have you ever wanted to play a classic game with your friends but not able to because you or your friends

Yifan Gu 283 Dec 14, 2022
SoftEther VPN - Cross-platform multi-protocol VPN software.

SoftEther VPN - Cross-platform multi-protocol VPN software.

SoftEther 9.6k Jan 4, 2023
QuantumGate is a peer-to-peer (P2P) communications protocol, library and API written in C++.

About QuantumGate is a peer-to-peer (P2P) communications protocol, library and API. The long-term goal for QuantumGate is to become a platform for dis

Karel Donk 96 Dec 20, 2022
C++ peer to peer library, built on the top of boost

Breep What is Breep? Breep is a c++ bridged peer to peer library. What does that mean? It means that even though the network is constructed as a peer

Lucas Lazare 110 Nov 24, 2022
Zyre - an open-source framework for proximity-based peer-to-peer applications

Zyre - Local Area Clustering for Peer-to-Peer Applications Linux & MacOSX Windows Contents Overview Scope and Goals Ownership and License Using Zyre B

The ZeroMQ project 813 Jan 3, 2023
Built a peer-to-peer group based file sharing system where users could share or download files from the groups they belonged to. Supports parallel downloading with multiple file chunks from multiple peers.

Mini-Torrent Built a peer-to-peer group based file sharing system where users could share or download files from the groups they belonged to. Supports

null 1 Nov 15, 2021
An implementation of the Mobile Adapter GB protocol, to connect to custom game servers.

libmobile Library that implements the Mobile Adapter GB protocol, in a way that should be easy to integrate into a plethora of different emulators/har

REON Team 10 Nov 5, 2022
Linux Terminal Service Manager (LTSM) is a set of service programs that allows remote computers to connect to a Linux operating system computer using a remote terminal session (over VNC or RDP)

Linux Terminal Service Manager (LTSM) is a set of service programs that allows remote computers to connect to a Linux operating system computer using a remote terminal session (over VNC)

null 34 Dec 16, 2022
Connect to dialup modems over VoIP using SIP, no modem hardware required.

D-Modem Connect to dialup modems over VoIP using SIP, no modem hardware required.

Aon's Cyber Labs 55 Dec 4, 2022
A GlobalProtect VPN client (GUI) for Linux based on OpenConnect and built with Qt5, supports SAML auth mode.

A GlobalProtect VPN client (GUI) for Linux based on OpenConnect and built with Qt5, supports SAML auth mode.

Kevin Yue 603 Jan 2, 2023
A VPN client for Android based on OpenVPN made with Jetpack Compose.

Gear VPN - Free, Secure & Open sourced VPN Tech Stack Jetpack Compose - Google's new UI toolkit for developing native Android apps. Navigator-Compose

Kaustubh Patange 86 Dec 23, 2022
C library to create simple HTTP servers and Web Applications.

Onion http server library Travis status Coverity status Onion is a C library to create simple HTTP servers and Web Applications. master the developmen

David Moreno Montero 1.9k Dec 20, 2022
Enabling services on your device 81 Jan 6, 2023
Provide translation, currency conversion, and voting services. First using telnet you create a connection to a TCP socket, then the server connects to 3 UDP sockets hosted on other servers to do tasks.

to run micro servers g++ translator.cpp -o translator ./translator <port 1> g++ voting.cpp -o voting ./voting <port 2> g++ currency_converter.cpp -o c

Jacob Artuso 1 Oct 29, 2021
Webdav-client-cpp - C++ WebDAV Client provides easy and convenient to work with WebDAV-servers.

WebDAV Client Package WebDAV Client provides easy and convenient to work with WebDAV-servers: Yandex.Disk Dropbox Google Drive Box 4shared ownCloud ..

Cloud Polis 103 Jan 1, 2023
Async & Concurrent Servers implemented in C

Concurrent servers in c Imlementation of concurrent severs in c from scratch using this awesome blog as a tutorial. Project Structure . ├── readme.md

Rupanshu Yadav 7 Jun 21, 2021
STARTTLS implementation for mail servers that don't have it.

smtpd-starttls-proxy - a STARTTLS implementation for mail servers ----------------------------------------------------------------- smtpd-starttls-p

Laurent Bercot 6 Dec 21, 2021
The tiniest chat servers on earth!

yoctochat The tiniest chat servers on earth! Here will be a collection of the simplest possible TCP chat servers, to demonstrate how to write multiuse

Rob N ★ 53 Nov 16, 2022