You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.5 KiB

Sgot

Sgot is a lightwaight, self-hostable open-source link shortening web application with a Restful API. It allows you to host your own URL shortener to gain control over you data. Shrt is inspired by Polr, a php based url shortener.

Features

  • No duplicated URL
  • Simple UI
  • Simple database Json file
  • Restful API
  • Simple Click Statistik
  • Delete URL
  • Login

Installation

Clone the Repository and build the Application by using go build .

Start Sgot by the following commant ./sgot &

Flag Usage Default
-host setup the host to listen on localhost
-port Setup the port to listen on 6889
-apikey Define the key to connect with the API "thisIsNotASecretTokenNow"
-db-file Setup the DB file to use ./sgot.db
-title Service title Sgot
-domain Domain for the redirection link The domain your service is available

API

To authenticate a user to Polr, you will need to provide an API key along with each request to the Polr API, as a GET or POST parameter. (e.g ?key=API_KEY_HERE)

/api/v1/action/shorten

Arguments:

  • url: the URL to shorten (e.g https://google.com)
  • custom_ending [not now supported] (optional): a custom ending for the short URL. If left empty, no custom ending will be assigned.

Short an URL

GET: http://example.com/api/action/shorten?key=API_KEY_HERE&url=http://example.de/shortening/main?q=5x

Response:
{ "action": "shorten",
  "result": "https://example.com/5kq" }

/api/v1/action/lookup

Arguments:

  • url_ending: the link ending for the URL to look up. (e.g 5ga)

Lookup for existing URL

GET: http://example.com/api/action/lookup?key=API_KEY_HERE&url_ending=5kq

Response:
{ "action":"lookup",
  "result": {
        "long_url": "http://example.de/shortening/main?q=5x",
        "created_at": "2017-05-12 22:48:40.997520107 +0200 CEST",
        "clicks":"0"
        }
}

ToDo

  • Add more Statistik details like the clicks from Country and Referer.
  • Implements the correct HTTP Error Codes
  • Add config File
  • Secure the API with API Key [optional]