TIM-JYU / TIM

TIM (The Interactive Material) is an open-source cloud-based platform for creating interactive learning documents.
https://tim.education/view/about/en-US
MIT License
15 stars 4 forks source link

Lyhytosoitteet (tim.pm) #3683

Open dezhidki opened 3 months ago

dezhidki commented 3 months ago

Pääideana on että

tim.pm/XXX

ohjautuu haluttuun osoitteeseen (joka voi olla muuallakin kuin itse timissä poiketen r.jyu.fi, missä kohde voi olla vain jyu.fi-domainissa).

r.jyu.fi-palvelun ongelmia joita pyritään poistamaan:

Toteutusehdotuksen esimerkki ohj1 uudelleen ohjaukselle:

tim.pm/ohj1 olisi vain tiedosto tyyliin

tim.jyu.fi/view/r/ohj1

ja sen sisältönä pelkkä

https://tim.jyu.fi/view/kurssit/tie/ohj1/vuosi/2023/syksy/koti

Lyhenteiden muokkailu voitaisiin silloin hoitaa ihan normaalina tiedostona käyttäen normaaleja TIMin muokkaustoimintoja ja oikeuksia.

Eli

tim.pm/XXXX

kävisi hakemassa redirect osoitteen tim.jyu.fi/r/XXXX dokusta. Silloin itse timiin ei tarvitsisi koodata oikeastaan mitään. Nuo r-hakemiston (voihan se olla redirect nimikin jos pidemmän haluaa) tiedostot voivat kai olla view anonymous, koska niiden sisällöthän saisi joka tapauksessa selville katsomalla mihin menee. Ja kuka r-hakemistoon tekeekin tiedoston, voisi laittaa edit oikeuden mille ryhmälle haluaa. Oletuksena r-hakemiston dokujen lisäys jyu.fi-tunnuksilla ja sitten voi tarpeen mukaan lisätä.

Haasteita:

vesal commented 3 months ago

Tekoälyn ehdotus skriptiksi tim.pm osoitteeseen :-) Sisältö jäi tutkimatta...

#!/usr/bin/env python3

import cgi
import os
import urllib.request

print("Content-Type: text/html")  # CGI-otsikko
print()  # Tyhjä rivi erottaa otsikot ja sisällön

# Hae URL-osoitteen polku-osa
path_info = os.environ.get('PATH_INFO', '')

# Jos polku-osa on olemassa, poista ensimmäinen kauttaviiva
if path_info.startswith('/'):
    path_info = path_info[1:]

# Muodosta TIM-palvelun URL-osoite
tim_url = f"https://tim.jyu.fi/view/r/{path_info}"

try:
    # Tee pyyntö TIM-palveluun
    with urllib.request.urlopen(tim_url) as response:
        # Jos pyyntö onnistuu, uudelleenohjaa käyttäjä TIM-osoitteeseen
        if response.status == 200:
            print(f"Status: 302 Found")
            print(f"Location: {tim_url}")
        else:
            # Jos pyyntö epäonnistuu, näytä virheviesti
            print("Status: 404 Not Found")
            print(f"<h1>404 Not Found</h1><p>Requested page not found: {tim_url}</p>")

except Exception as e:
    # Käsittele mahdolliset virheet, kuten yhteysongelmat
    print("Status: 500 Internal Server Error")
    print(f"<h1>500 Internal Server Error</h1><p>Error: {str(e)}</p>")
saviit commented 3 months ago

Tämä kortti on nyt olennaisilta osin toteutettu, ja mergetty päähaaraan PRssä https://github.com/TIM-JYU/TIM/pull/3690. Merkitsen kortin jatkokehityskohteeksi, sillä kortissa on vielä joitakin huomioita, joita ei ole käsitelty toteutuksessa.