webring/README.md

37 lines
1.5 KiB
Markdown

# 32-Bit Cafe Webring
## Overview
A webring with modern niceties
- An API for managing membership
- Dynamically checking if a site has gone down
## Interface
We can use the Referer header to navigate between sites in the ring.
```
GET /next HTTP/1.1
Host: webring.32bit.cafe
Referer: https://example1.com
Referrer-Policy: origin
```
Which would then redirect to the next website in the ring.
```
HTTP/1.1 302 Found
Location: https://example2.com
```
When a member joins, they only need to link to both `webring.32bit.cafe/next` and `webring.32bit.cafe/prev`. We can provide a JavaScript widget to apply extra styles and such but it is not necessary.
## Backend
When the server recieves a GET request, it will lookup the Referer URL in its database and attempt to ping the site next in the ring to see if it is online. If it is, the server responds to the request with a redirect to it. Otherwise the server will mark it as unreachable, then try again on the following site in the ring. This process is repeated until an online website is found. If the end of the ring is reached, it loops back to the beginning. Sites marked as unreachable will be checked periodically, and the unreachable status can be removed after two successful pings. If the Referer URL is not found in the database, the server will redirect to the webring home page, which will provide instructions for signing up.
## API
An API will be provided to allow integration with other 32-Bit Cafe services.