{"id":15996285,"url":"https://github.com/zkat/shortening","last_synced_at":"2026-02-03T10:32:54.602Z","repository":{"id":1595417,"uuid":"2140142","full_name":"zkat/shortening","owner":"zkat","description":"The personal URL shortener.","archived":false,"fork":false,"pushed_at":"2015-01-13T08:48:11.000Z","size":120,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-25T07:09:12.538Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Common Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zkat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-08-02T01:49:37.000Z","updated_at":"2022-02-04T15:25:33.000Z","dependencies_parsed_at":"2022-08-26T21:54:47.440Z","dependency_job_id":null,"html_url":"https://github.com/zkat/shortening","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zkat/shortening","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkat%2Fshortening","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkat%2Fshortening/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkat%2Fshortening/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkat%2Fshortening/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zkat","download_url":"https://codeload.github.com/zkat/shortening/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkat%2Fshortening/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29041398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T10:09:22.136Z","status":"ssl_error","status_checked_at":"2026-02-03T10:09:16.814Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-08T07:41:17.990Z","updated_at":"2026-02-03T10:32:54.587Z","avatar_url":"https://github.com/zkat.png","language":"Common Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# About\n\nThis is a short and sweet url shortener meant for personal use. It's a handy utility for those who\nwant short urls but cannot or do not want to use public URL shorteners. I, for example, use it with\na weechat plugin, since people might send me private, sensitive URLs that it may not be appropriate\nto send to an external server with guessable URLs.\n\n# Configuration\n\nshortening will first look in `~/.shortening.conf`, and then in `/etc/shortening.conf` for existing\nconfiguration files. There is an example configuration file in the source directory, named\n`shortening.conf.example`.\n\nHere is the entirety of the default configuration file:\n\n    [shortening]\n    port = 8181 # Port to start the web server in.\n    max-db-size = 100 # Maximum number of URLs to keep around at a time.\n    url-length = 6 # Length of the randomly-generated short URLs.\n    external-db = # See below\n\n* If external-db is blank (or there is no config file), URLs are kept in-memory, and will not be\n  persisted to disk. This means all URLs will be lost when the shortening process shuts down.\n* external-db accepts absolute (/foo/bar), relative (foo/bar/), and ~/-expanded (~/.shortening.db)\n  pathnames.\n* ~username/ pathnames are not accepted.\n\n# Usage\n\nYou may start shortening simply by invoking its binary. It has no command-line arguments.\n\nshortening uses a REST API for its shortening service:\n\n*http://host/api* `url origin`\n\n  Adds a URL to the database. The ORIGIN parameter is optional. The response will be a string,\n  prefixed by /. Making a request `http://host` + this string will redirect the client to the URL\n  parameter.\n\n*http://host/* `plainp`\n\n  Requesting the root document will display a list of all links currently in the database, listed by\n  short-url, long-url, and origin (if any). The HTML version also provides a simple form where you\n  can submit your own URLs without using the API.\n\n  If PLAINP is submitted with any value, shortener will respond with a plain-text version of the\n  current URL database, in the following format: `(\"\u003cshort-url\u003e\" \"\u003clong-url\u003e\" \u003corigin\u003e)`, where\n  `\u003corigin\u003e` will either be a string wrapped in double-quotes, or `NIL`.\n\n# Building\n\nShortening is Common Lisp software. In order to build it, you will first have to install one of the\nsupported Lisp implementations:\n\n * CLISP \u003chttp://www.clisp.org/\u003e\n * SBCL \u003chttp://www.sbcl.org/\u003e\n * Clozure CL \u003chttp://www.clozure.com/clozurecl.html\u003e\n\nYou will also need to have Quicklisp installed in order to pull in shortening's dependencies. You\ncan get quicklisp here: http://www.quicklisp.org/beta/\n\nHere are the steps to build a clisp-based binary:\n\n    $ cd /path/to/shortening/\n    $ clisp\n    \u003e (load \"/path/to/quicklisp/setup.lisp\") ; Optional if quicklisp is auto-loaded.\n    \u003e (load \"make\")\n\nYou can then execute the 'shortening' binary.\n\n# Using shortening remotely\n\nShortening is designed to be used locally. As such, it has no authorization built in. If you want to\nbe able to access URLs hosted by shortening remotely, you must arrange to make the proper ports\navailable to yourself. *It is highly recommended you do not simply open the ports up to the\ninternet*.\n\nInstead, consider an alternative such as ssh tunneling to make the same URLs accessible from any of\nyour machines.\n\n# Notes/known issues/warnings\n\n* *WARNING* There is no authorization built into shortening. If you expose the port to the internet,\n   *you may be at risk of being used by spammers.*\n* Killing the program with Control+c does not currently work in Clozure CL.\n* If you run this on localhost, you can have some fun with your hosts file. I added 'lch' as a local\n  hostname, so I can access shortening using \u003chttp://lch:8181/ShRTuRL\u003e.\n* There's an rc.shortening script that can be used with Arch Linux to daemonize the shortener.\n\n# License\n\nShortening is public domain software. I, the author, revoke any and all copyright I may have over\nthe code in this repository. Do whatever you want with it. I won't complain if you credit me.\n\nIf you live in an oppressive country that makes release into the public domain illegal, you may use\nthe license in the OPPRESSED file included with the shortening sources for legal comfort.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzkat%2Fshortening","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzkat%2Fshortening","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzkat%2Fshortening/lists"}