Python - Redirector
Redirector App
wrote a little redirector app and tought i will explain and share it here. it’s a bit like a url shortener, but you can define the “shortcut” of the URL.
how does it work
it basically consists of a Text File wir Redirection URL’s.
redi.txt
stoege,https://www.stoege.net
blog,https://blog.stoege.net
test,https://www.test.com
Call it
so, when you open a Browser and Request the URL: https://your.domain.de/blog, you get redirected to https://blog.stoege.net
main.app
from flask import Flask, redirect, request
import datetime
import os
import random
# Vars
redirect_file="redi.txt"
app = Flask(__name__)
# Load redirection data from a text file
def get_redirections():
    redirections = {}
    with open(redirect_file,"r") as file:
        for line in file:
            path, url = line.strip().split(',')
            redirections[path] = url
    return redirections
# Main
@app.route('/')
def index():
    return 'Hello, World!'
# Redirect to Random URL
@app.route('/random')
def random_path():
    redirections = get_redirections()
    # Get Random Path
    random_url = random.choice(list(redirections.values()))
    return redirect(random_url)
# Redirect
@app.route('/<path:path>')
def redirect_path(path):
    # File Changed ?
    redirections = get_redirections()
    # Check if the path exists in the redirections dictionary
    if path in redirections:
        url = redirections[path]
        return redirect(url)
    # If the path does not exist, return a 404 Not Found error
    return 'Not Found', 404
if __name__ == '__main__':
    app.run()
get it running
you need the ususal Stuff
- Linux (of BSD Machine here)
 - Public IP with FQDN
 - TLS Cert
 - Nginx Server
 
I’m not gonna describe how todo it … there are plenty of examples around.
one thing to mention. the nginx acts as a reverse proxy. get all requests and pass them to the application like this:
    location / {
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_redirect off;
      proxy_buffering off;
      proxy_pass http://127.0.0.1:5555;
    }
run with poetry
poetry run flask --app main run --port=5555
and open your Browser https://your.domain.de/test and you should be redirected to the appropriate Domain.
Any Comments ?
sha256: b55fa755f8ab19ed7503e946a877087852f6e95d00bfa1f0ac3e984746e33bb0