Portál AbcLinuxu, 23. dubna 2024 19:14


Dotaz: Lze komunikovat s python skriptem pres webove rozhrani resp. websocket?

radicz avatar 26.5.2018 21:07 radicz
Lze komunikovat s python skriptem pres webove rozhrani resp. websocket?
Přečteno: 2206×
Odpovědět | Admin
Zdar, mam python skript, ktery slouzi k autentikaci, jeho vystupy mohou byt dva, a to:

1) skript vyhodi prompt do terminalu pro zadani autentikacniho kodu, pokud jeste dany user neni autentikovan
2) pokud je dany user autentikovan, skript nevypise nic

Mym cilem je premostit tento skript do weboveho xichtu, tedy ze user zada sve udaje, se kteryma se chce autentikovat, na serveru by se mel spustit jiz zminovany python skript, a pokud by vyskocil prompt pro zadani auth kodu, tak i userovi zobrazit nejaky popup pro zadani auth kodu, a ten poslat zpatky do skriptu a dokoncit tak autentikaci.

Zatim se mi pres websockety povedlo akorat to, ze se auth skript na serveru spusti, pak pomoci pexpect modulu userovi na webu zobrazim jestli je vyzadovana autentikace ci nikoliv (pokud ano tak zobrazim pop up pro vlozeni auth kodu), tady ale bohuzel koncim, protoze nevim jak se vratit zpatky do python funkce ze ktere uz jsem jednou vyskocil.

Chtel bych se tedy zeptat, jestli je vubec takovato komunikace s pythonim skriptem mozna pres web sockety, a nebo na to jdu uplne ze spatne strany, a existujou mnohem lepsi cesty jak toto vyresit?

Za pripadne odpovedi dekuji!
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.5.2018 21:43 NN
Rozbalit Rozbalit vše Re: Lze komunikovat s python skriptem pres webove rozhrani resp. websocket?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nemuzes ten autentizacni skript prepsat pro web? Bylo by to daleko cistsi reseni.
radicz avatar 28.5.2018 22:20 radicz
Rozbalit Rozbalit vše Re: Lze komunikovat s python skriptem pres webove rozhrani resp. websocket?
hmm mozna bych mohl nejak sahnout do te knihovny ktera tu autentizaci poskytuje, ale porad mam problem jak se usera zeptat na auth code pokud je potreba
28.5.2018 14:06 Petr
Rozbalit Rozbalit vše Re: Lze komunikovat s python skriptem pres webove rozhrani resp. websocket?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak ten skript spouštíš? Nechápu tu cestu. Máš skript, webový prohlížeč, webový server? Skript spouštíš ze serveru který komunikuje s prohlížečem přes websocket? Server je v pythonu, php nebo v čem?
radicz avatar 28.5.2018 22:19 radicz
Rozbalit Rozbalit vše Re: Lze komunikovat s python skriptem pres webove rozhrani resp. websocket?
mam webovy server v pythonu (flask), na stejnem serveru je skript ktery, jak jsi rekl komunikuje s prohlizecem pres websocket
4.6.2018 15:34 Ja
Rozbalit Rozbalit vše Re: Lze komunikovat s python skriptem pres webove rozhrani resp. websocket?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Obávám se, že musíš funkci autentikace volat dvakrát - nejdřív ji zavolat bez vstupu a zjistit podle výsledku, jsi-li přihlášený, či nikoliv. Pokud ano, vrátíš do browseru informaci že je přihlášeno a vše ok. Pokud ne, vrátíš browseru formulář pro zadání auth kódu a čekáš na kód.

Zhruba takto:

@app.route("/")
def zacatek():
    result = auth("")
    if result:
       return "Already authenticated!"
    else:
       return """<form action="/auth" methid="POST">zadej auth:<input type="password" name="auth"><input type="submit"></form>"""

@app.route("/auth", methods=["GET"])
def auth():
    result = auth(request.form["auth"])
    if result:
       return "Good, authenticated!"
    else:
       return "Bad auth!"

Je to jen letmý nástřel psaný naslepo, ale princip je asi zřejmý.
radicz avatar 7.6.2018 16:16 radicz
Rozbalit Rozbalit vše Re: Lze komunikovat s python skriptem pres webove rozhrani resp. websocket?
Dnes vyzkousim. On asi bude problem v mem pristupu, chtel jsem to mermomoci napsat, bez refreshe stranky, tedy za pomoci js, tak ze user hned uvidi co se deje, vyskoci mu hned auth input atd. Diky tvemu prikladu vidim, ze kdyz to udelam takhle stavove, tak si usetrim spoustu nervu. Dekuji!
8.6.2018 08:38 Ja
Rozbalit Rozbalit vše Re: Lze komunikovat s python skriptem pres webove rozhrani resp. websocket?
Pochopitelně to můžeš udělat i bez reloadu stránky, když ten "server" z minulého příspěvku předěláš aby vracel odpovědi v jsonu, případně nastavoval http status kódy a javascript pošle ajaxem dotaz na informaci o přihlášení (na tu url "/"), když dostane info že přihlášený není, tak zobrazí formulář a po vyplnění zas ajaxem odešle údaje na "/auth" a podle výsledku informuje uživatele. Prakticky všechno co se dá udělat klasickým odesíláním stránky se dá nahradit sekvencí volání ajaxu (tedy až na volání http z https apod.).
8.6.2018 08:40 Ja
Rozbalit Rozbalit vše Re: Lze komunikovat s python skriptem pres webove rozhrani resp. websocket?
Mimochodem, mám tam chybu - form odesílám metodou POST a /auth mám navěšené na GET - správně by mělo být oboje POST. Jak jsem psal, je to jen letmý nástřel.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.