Giter Site home page Giter Site logo

shlinkio / shlink Goto Github PK

View Code? Open in Web Editor NEW
3.0K 3.0K 249.0 36.62 MB

The definitive self-hosted URL shortener

Home Page: https://shlink.io

License: MIT License

PHP 99.14% HTML 0.13% Shell 0.24% Dockerfile 0.48%
laminas mezzio php rest-api url-shortener

shlink's People

Contributors

acelaya avatar alesub avatar celayale avatar dlondero avatar jakkuh avatar jpatters avatar jsoref avatar kanadaj avatar ketchupbomb avatar leagueraini avatar lynnesbian avatar marijnvandevoorde avatar mikafouenski avatar nreilingh avatar peterdavehello avatar pxsonny avatar robwent avatar roy-orbison avatar sirflip avatar starbix avatar weirdan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shlink's Issues

Translate application literals

How to set the language:

  • CLI -> Read it from local configuration
  • Rest and Web (404) -> Use Accept-Language header (via specific middleware) and fallback to local config if not provided

Installation steps

  • Define ENV vars in apache or nginx:
    • SHORTENED_URL_SCHEMA: http|https
    • SHORTENED_URL_HOSTNAME: Short domain
    • SHORTCODE_CHARS: The char set used to generate short codes (defaults to 123456789bcdfghjkmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ, but a new one can be generated with the config:generate-charset command)
    • DB_USER: MySQL database user
    • DB_PASSWORD: MySQL database password
    • REST_USER: Username for REST authentication
    • REST_PASSWORD: Password for REST authentication
    • DB_NAME: MySQL database name (defaults to shlink)
    • DEFAULT_LOCALE: Language in which web requests (browser and REST) will be returned if no Accept-Language header is sent (defaults to en)
    • CLI_LOCALE: Language in which console command messages will be displayed (defaults to en)
  • Create database (vendor/bin/doctrine orm:schema-tool:create)
  • Add write permissions to data directory
  • Create doctrine proxies (vendor/bin/doctrine orm:generate-proxies)
  • Create symlink to bin/cli as shlink in /usr/local/bin (linux only. Optional)

Supported languages: es and en

Create a REST API

  • Endpoints
    • Create shortcode (returns the generated URL)
    • Get long URL from short code
    • List shortened URLs
    • Get visits on certain URL by short code
  • Authentication: Very basic. Generate token based on user/password
  • Return cross-domain headers for web clients
    • Access-Control-Allow-Origin
    • Access-Control-Allow-Methods
    • Access-Control-Max-Age
    • Access-Control-Allow-Headers
  • Create documentation
  • Paginate results on list requests

Improve REST authentication

Using something like oAuth seems a little bit overengineered for this app.
JSON web tokens could be an option https://jwt.io/introduction/

Also drop the username/password system and use API keys that are generated from the command line and persisted in the database.
Allow to disable any API key or set expiration dates.
In the future, this will allow to set an ACL system

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.