lolwtf this shit actually works
This commit is contained in:
		
						commit
						14dc277816
					
				| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
version: '3.8'
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  spaceapi:
 | 
			
		||||
    image: spaceapi
 | 
			
		||||
    build:
 | 
			
		||||
      context: src
 | 
			
		||||
    networks:
 | 
			
		||||
      - ingress
 | 
			
		||||
      - default
 | 
			
		||||
    deploy:
 | 
			
		||||
      labels:
 | 
			
		||||
        - "shepherd.auto-update=true"
 | 
			
		||||
        - "traefik.enable=true"
 | 
			
		||||
        - "traefik.http.services.spaceapi.loadbalancer.server.port=5000"
 | 
			
		||||
        - "traefik.http.routers.spaceapi.rule=Host(`api.montage2.de`)||Host(`api.chaoswest.tv`)"
 | 
			
		||||
        - "traefik.http.routers.spaceapi.tls=true"
 | 
			
		||||
        - "traefik.http.routers.spaceapi.tls.certresolver=default"
 | 
			
		||||
 | 
			
		||||
networks:
 | 
			
		||||
  ingress:
 | 
			
		||||
    external: true
 | 
			
		||||
    name: traefik
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
FROM python:alpine
 | 
			
		||||
RUN mkdir /app
 | 
			
		||||
WORKDIR /app
 | 
			
		||||
COPY . /app
 | 
			
		||||
RUN pip install -r requirements.txt
 | 
			
		||||
ENTRYPOINT ["flask", "--app", "app", "run", "--host=0.0.0.0"]
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,43 @@
 | 
			
		|||
import json
 | 
			
		||||
import urllib.request
 | 
			
		||||
 | 
			
		||||
from flask import Flask, jsonify
 | 
			
		||||
 | 
			
		||||
app = Flask(__name__)
 | 
			
		||||
 | 
			
		||||
def get_jitsi_status():
 | 
			
		||||
    try:
 | 
			
		||||
        content = urllib.request.urlopen("https://talk.chaoswest.tv/room-census").read()
 | 
			
		||||
        census = json.loads(content)
 | 
			
		||||
        return any(room["room_name"] == "cws-lounge@muc.meet.jitsi" for room in census["room_census"])
 | 
			
		||||
    except Exception as e:
 | 
			
		||||
        print("shit got fucked up:")
 | 
			
		||||
        print(e)
 | 
			
		||||
        return None
 | 
			
		||||
 | 
			
		||||
@app.route("/spaceapi")
 | 
			
		||||
def spaceapi():
 | 
			
		||||
    result = {
 | 
			
		||||
        'api': '0.13',
 | 
			
		||||
        'api_compatibility': ['14'],
 | 
			
		||||
        'space': 'chaoswest.tv',
 | 
			
		||||
        'logo': 'https://chaoswest.tv/logo.png',
 | 
			
		||||
        'url': 'https://chaoswest.tv',
 | 
			
		||||
        'location': {
 | 
			
		||||
            'lat': 50.47718,
 | 
			
		||||
            'lon': 12.33427,
 | 
			
		||||
            'address': 'FSN1-DC14',
 | 
			
		||||
        },
 | 
			
		||||
        'contact': {
 | 
			
		||||
            'mastodon': '@chaoswesttv@chaos.social',
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    status = get_jitsi_status()
 | 
			
		||||
 | 
			
		||||
    if status:
 | 
			
		||||
        result["state"] = {
 | 
			
		||||
            'open': status
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    return jsonify(result)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
Flask>=3.0.1
 | 
			
		||||
		Loading…
	
		Reference in New Issue