Skip to content

Safe, multithreaded self-hosted link shorting service in Rust.

License

Notifications You must be signed in to change notification settings

edward-shen/linkr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

linkr

The self-hosted solution for url shortening or prettifying.

I made linkr because I wanted a self-hosted solution for url shortening but all I found were implementations in PHP. The end goal is something as robust as existing solutions but written in safe Rust, with an emphasis on RESTful APIs first.

Features

  • Multi-threaded and secure as it uses Rocket
  • Support for multiple identity providers and authorization/authentication modes
  • Easy to set up
  • Administrative endpoints to manage links
  • Built-in per-link statistics
  • Memory safe: Written in Rust

Examples

With no authorization:

# Creating a link
curl -XPOST -d "origin=hello&dest=https://google.com&password=potato" your-domain.com/api/link

# Deleting a link
curl -XDELETE -d "origin=hello&password=potato" your-domain/api/link

Pre-shared key (requires timestamp hashing message with PSK):

# Creating a link
curl -XPOST -d "origin=asdff&dest=hosd&ts=1551681791&hash=a84ee951112f89feaa34fe32d052c17187edbc2fb7ec35dfe710d06b5b17ad05" localhost:8000/api/link

# Deleting a link
curl -XDELETE -d "origin=asdf&ts=1551681861&hash=155b46c17892125e50a5284e916b8fee2f039b7481dd1ba16b117d80c6ffbd26" localhost:8000/api/link

Getting started

Please see the docs to learn how to get started.