A local go links redirect service for URL shortcuts
Project description
Golinks
A simple local HTTP redirect service that turns short URLs like go/github into full URLs.
Installation
Install from pypi
bash -c "$(curl -fsSL https://raw.githubusercontent.com/haranrk/golinks/master/install.sh)"
Install from source
# Clone the repository
git clone https://github.com/yourusername/golinks.git
cd golinks
# Run the install script
./install
# Edit the config
vim ~/.config/golinks/config.json
Update
uv tool upgrade golinks
golinks start-service
How it works
The ./install script does the following:
- Installs the Python package using uv
- Adds
127.0.0.1 goto your/etc/hostsfile (with sudo permission) - Sets up port forwarding from port 80 to 8888 using pfctl (macOS) or iptables (Linux), so you can use
go/shortcutinstead ofgo:8888/shortcut - Sets up a LaunchAgent (macOS) or systemd service (Linux) to run the server at startup
- Starts the golinks server immediately on port 8888
Once installed, golinks runs a lightweight HTTP server that reads shortcuts from a JSON config file at ~/.golinks/config.json and redirects http://go/shortcut to the configured destination URL. The config file is hot-reloaded, so you can add new shortcuts without restarting the server.
Configuration
The configuration file (~/.config/golinks/config.json) supports two types of shortcuts:
Simple URL Redirects
Map a shortcut directly to a URL:
{
"github": "https://github.com",
"mail": "https://gmail.com",
"calendar": "https://calendar.google.com"
}
go/github→https://github.comgo/mail→https://gmail.com
Template URLs with Parameters
Use placeholders ({1}, {2}, etc.) for dynamic URLs:
{
"repo": {
"template_url": "https://github.com/{1}/{2}",
"defaults": {
"1": "haranrk",
"2": "golinks"
}
}
}
go/repo→https://github.com/haranrk/golinks(uses defaults)go/repo//otherrepo→https://github.com/haranrk/otherrepo(uses default for 1)go/repo/facebook/→https://github.com/facebook/golinks(uses default for 2)go/repo/facebook/react→https://github.com/facebook/react
Note: If a template parameter doesn't have a default value and isn't provided, it's replaced with an empty string.
Query Parameter Forwarding
Query parameters are automatically forwarded to the destination:
{
"search": "https://google.com/search"
}
go/search?q=golang&num=10→https://google.com/search?q=golang&num=10
Troubleshooting
If go/ links stop working, restart the service:
golinks start-service
This will recreate the LaunchAgent and reload the service.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file golinks-1.3.0.tar.gz.
File metadata
- Download URL: golinks-1.3.0.tar.gz
- Upload date:
- Size: 43.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
281a6e72be38173283bb863cd19d72500bae5a2596bae69227cfd74579b6d1fd
|
|
| MD5 |
e957db91f3adbe173d66e705fc4bc54d
|
|
| BLAKE2b-256 |
e0f80feb18025446e7a6a0cd0f97bca3519d842000ff6e43f34504488ff44b75
|
File details
Details for the file golinks-1.3.0-py3-none-any.whl.
File metadata
- Download URL: golinks-1.3.0-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e132d9f4e906f0d54b954f99341beb56fe69fb65116cda0677610197128aaef4
|
|
| MD5 |
936b9e01c8fcfd18125dc7d68e55c2a4
|
|
| BLAKE2b-256 |
d618e15c836992b3e73724842396bbb040fa0c7677c0670013efc1952614bdca
|