Proxy service for easy authentication to the TecoRoute web interface.
Project description
TecoRoute Proxy
TecoRoute Proxy is a reverse proxy server that allows easy authentication to the TecoRoute service using a simple POST request. It also saves the credentials and automatically logs the user in when the TecoRoute session expires.
How it works
The server has one control endpoint (/tecoroute-proxy by default) that is used to log in and log out of the user from the proxy. When the user logs in, all requests are proxied to TecoRoute. The proxy session is stored only in the user's cookies, so the server is completely stateless and no database is required.
The control endpoint accepts POST
requests with application/x-www-form-urlencoded
content type (HTML form).
Log the user in
The user logs in with the following data:
Name | Value |
---|---|
action |
login |
username |
TecoRoute username |
password |
TecoRoute password |
plc |
TecoRoute plc |
Example of a HTML form that logs the user in:
<form method="post" action="https://tecoroute-proxy.cze.tech/tecoroute-proxy">
<button name="action" value="login">Open PLC</button>
<input type="hidden" name="username" value="BroukPytlik" />
<input type="hidden" name="password" value="ferda1" />
<input type="hidden" name="plc" value="AB_1234" />
</form>
Log the user out
The user logs out with the following data:
Name | Value |
---|---|
action |
logout |
Example of a HTML form that logs the user out:
<form method="post" action="https://tecoroute-proxy.cze.tech/tecoroute-proxy">
<button name="action" value="logout">Logout</button>
</form>
Logging out will try to log the user out from TecoRoute and delete the login data from the user's cookies.
Configuration
The server is configured using environment variables:
Name | Description | Default value |
---|---|---|
TECOROUTE_PROXY_HOST |
The host to listen on, all interfaces if empty | |
TECOROUTE_PROXY_PORT |
The port to listen on | 80 |
TECOROUTE_PROXY_CONTROL |
The control path | /tecoroute-proxy |
TECOROUTE_PROXY_ORIGIN |
TecoRoute service URL | https://route.tecomat.com |
Usage options
TecoRoute Proxy can be used as a service, standalone application or as a Python library.
Use as a service
Server is deployed at https://tecoroute-proxy.cze.tech. The control URL is:
https://tecoroute-proxy.cze.tech/tecoroute-proxy
Feel free to use the service for testing or simple production purposes.
Install from PyPI
Requirements:
Installation using pip is done with:
pip install tecoroute-proxy
Start the server with:
tecoroute-proxy
On an unprivileged port (e.g. 8080), start the server with:
TECOROUTE_PROXY_PORT=8080 tecoroute-proxy
It is possible to use the package as a Python library and run the server synchronously or asynchronously in the event loop. Example of use:
from tecoroute_proxy import Proxy
proxy = Proxy(port=8080)
proxy.run()
Run from Docker Hub
Run the image from Docker Hub:
docker run -p 80:80 czetech/tecoroute-proxy
The image can be configured using configuration variables.
Install to Kubernetes using Helm
Setup Helm repository:
helm repo add czetech https://charts.cze.tech/
Install Helm chart:
helm install tecoroute-proxy czetech/tecoroute-proxy \
--set ingress.enabled=true \
--set ingress.hosts[0]=<ingress-host>
see the chart for more options.
Source code
The source code is available at https://github.com/czetech/tecoroute-proxy.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.