.onedev-buildspec.yml Loading last commit info...
.github/workflows
settings
src
.gitignore
CMakeLists.txt
LICENSE
README.md
build_server.sh
build_src.sh
docker-attach.sh
docker-compose.yaml
docker-shutdown.sh
docker-update-start.sh
README.md

Hikup

wakatime

File Sharing Made Easy

  • File Management: Effortlessly upload, download, and remove files with just one command.

  • Secure Transfer: All data transfers between the client and server are encrypted to ensure data integrity and privacy. ( for the moment susceptible to man-in-the-middle attacks)

  • File Sharing in Three Simple Steps:

    1. Upload the desired file to the server and receive a unique hash and HTTP link.
    2. Share the generated hash or link with designated recipients.
    3. Recipients can use the hash to download the file directly from the server using the hikup command or with HTTP.
  • Redundant servers: Sync between servers easily.

Note

If you append ?view=yes to the HTTP link, you can view the file directly in the browser.

Client Commands

  • hikup: Display help information about the commands.
  • hikup up <file> <server-address>: Upload a file.
  • hikup down <file> <server-address>: Download a file.
  • hikup rm <file> <server-address>: Remove a file.
  • hikup ls <user> <pass> <server-address>: List all files (requires authentication).

Dependencies

Shared

  • cmake, libsodium, g++ with c++23 support

Server

  • docker, docker-compose (optional)

Client

Build

git clone https://github.com/Hikari03/hikup.git && \
cd hikup && \
cmake -B build -S . && \
cmake --build build --target hikup -j $(nproc)

Usage

in hikup/build

./hikup # for help

Server

Settings

  • All available runtime settings are in settings/settings.toml with descriptions.

Sync

  • Sync files between servers in declared periods.
  • To use this, add target in settings in [syncTargets] section.
Warning

The declared target will be the master in one case: if you uploaded a removed file and that removal synced. Which means if you again upload this file on non-master, your master will remove it on the next sync.

Default Ports

  • Hikup protocol: 6998
    • If you want to change it, you can do so in server/ConnectionServer.cpp and src/main.cpp
  • HTTP protocol: 6997
    • Can be changed in settings/settings.json
Note

When using docker, external ports can be mapped in docker-compose.yaml

Use Docker

With scripts

You can get the docker-update-start.sh, docker-attach.sh and docker-shutdown.sh. With them, you can control the server with ease.

  • docker-update-start.sh will automatically update the image if needed and start the server
  • docker-attach.sh will attach you to server console. When you want to exit console, use CTRL + P, CTRL + Q.
  • docker-shutdown.sh will shutdown the container

Manually

  • download the docker-compose.yml
  • docker compose up -d or docker-compose up -d
  • to control the server use docker attach hikup-server
  • docker compose down or docker-compose down

From Source

Build

git clone https://github.com/Hikari03/hikup.git && \
cd hikup && \
cmake -B build -S . && \
cmake --build build --target hikup-server -j $(nproc)

Usage:

in hikup/build

  • once started type q to stop the server
./hikup-server

Acknowledgements

Please wait...
Connection lost or session expired, reload to recover
Page is in error, reload to recover