Acasă > forum > controlerele SlimLine e Netsyst (LogicLab) > Utilizarea cURL pentru a accesa paginile web ale SlimLine
- Acest subiect are 7 răspunsuri, 2 participanți și a fost actualizat ultima dată 1 an, acum 3 luni da Sergio Bertana.
-
AutorPost
-
Ianuarie 10, 2023 la 5: 03 pm #69174clarparticipant
Având în vedere orice program dintr-un sistem SlimLine, numite variabile mapate:
VAR_GLOBAL Var1 AT %MW100.10 : UINT; Var2 AT %MW100.12 : UINT; Var3 AT %MW100.2200 : UINT; END_VAR
S-a adăugat o pagină personalizată, de ex. Values.htm (al cărui conținut indică VAR3 ) Pot schimba valorile VAR2200 și VAR1 cu:
curl -v -X GET "http://IPPLC/webpages/user/Values.htm?USINT+10=8&USINT+12=7"
M-aș aștepta la valoarea lui Var3 în ieșire, în schimb îmi returnează:
* Trying IPPLC:80... * Connected to IPPLC (IPPLC) port 80 (#0) * Server auth using Digest with user 'Admin' > GET /webpages/user/Values.htm HTTP/1.1 > Host: 10.7.208.158 > User-Agent: curl/7.85.0 > Accept: */* > * Mark bundle as not supporting multiuse < HTTP/1.1 302 Found < Server: Elsist CPU module < Location: /Login.html < Transfer-Encoding: chunked < Connection: close * Closing connection 0
Ianuarie 10, 2023 la 5: 33 pm #69179Sergio BertanaAdministrator al forumuluiConceptul este corect, dar probabil pagina pe care o solicitați în cURL se află într-un folder accesibil doar de către un utilizator conectat. Când accesați din browser vi se cere mai întâi autentificare și apoi accesați pagina. Dacă observați că răspunsul conține un cod 302 care este o redirecționare către pagina de autentificare. Am realizat programul exemplu cURLExample (Descarcă) unde în programul LogicLab am declarat 3 variabile globale:
VAR_GLOBAL Var1 AT %MW100.10 : UINT; Var2 AT %MW100.12 : UINT; Var3 AT %MW100.2048 : UINT; END_VAR
Și o pagină web definită după cum urmează:
<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>SlimLine - Simple page</title> <style type="text/css"> body {font-family: Arial, Helvetica, sans-serif; font-size: 18px; font-style: normal;} </style> </head> <body> This page is served by the <b>SlimLine</b><br> Var3:<!--["%d", UINT, 2048]--> </body> </html>
Am încărcat pagina cu numele Values.htm in C:\Web, folderul C:\Web așa cum vedeți din screenshot poate fi citit și de un utilizator anonim, deci cu comanda cURL:
curl "http://192.168.0.181/Values.htm?UINT+10=8&UINT+12=20"
pretuiesc Var1=8 e Var2=20 iar pagina cu valoarea de imi este returnata Var3 care fiind alocat în DB100.2048 are valoarea păstrată în backup atunci când sistemul este oprit.
C:\Windows\system32>curl "http://192.168.0.181/Values.htm?UINT+10=8&UINT+12=20" <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>SlimLine - Simple page</title> <style type="text/css"> body {font-family: Arial, Helvetica, sans-serif; font-size: 18px; font-style: normal;} </style> </head> <body> This page is served by the <b>SlimLine</b><br> Var3:208 </body> </html>
Ianuarie 11, 2023 la 3: 25 pm #69228Sergio BertanaAdministrator al forumuluiAdaug un exemplu de utilizare a cURL cu autentificare, astfel încât să puteți accesa și paginile stocate în foldere accesibile doar utilizatorilor autentificați.
Mecanismul de autentificare folosește cookie-uri pentru a recunoaște utilizatorul, prin urmare prima operațiune este autentificarea în sistem prin activarea salvării cookie-urilor returnate într-un fișier. Comanda:
curl -c "C:\Cookie" "http://192.168.0.181/SysCgi/Login.cgi?Username=Admin&Password=Admin&Action=Login"
Conectați-vă la sistem cu acreditările Admin:Admin, salvând cookie-urile returnate în fișier C:\Cookie. Acum, dacă furnizăm fișierul cookie la comenzile cURL, sistemul va recunoaște utilizatorul și va permite accesul. Deci presupunând că pagina noastră Values.htm este mutat acum în dosar C:\Web\webpages al sistemului, aici l-am putea accesa cu comanda:
curl -b "C:\Cookie" "http://192.168.0.181/webpages/Values.htm?UINT+10=8&UINT+12=20"
În diferitele comenzi putem adăuga parametrul -v dacă dorim să avem o întoarcere verbose a operatiei efectuate.
Autentificarea are o durată de viață în sistem, prin urmare, dacă continuați să vă conectați, viața este reîmprospătată automat, dacă nu există autentificări după aproximativ 1 minut, sesiunea expiră și trebuie să vă conectați din nou.
Ianuarie 12, 2023 la 9: 02 am #69236clarparticipantMulțumesc pentru exemplu și clarificări, deci autentificarea are efect doar la citire, nu ar fi mai corect să ignori și solicitările de a efectua modificarea valorii dacă nu ești autentificat?
Ianuarie 12, 2023 la 4: 00 pm #69245clarparticipantPot cere sintaxa corectă de utilizat în fișierele htm pentru a citi starea OUTPUT?
"DO1": <!--["%d", BOOL, QX0.1]-->
Eticheta DO1 cu tipul: BOOL și adresa %QX0.1 în programul plc arată starea corect, în timp ce pe html valoarea este goală.
Ianuarie 12, 2023 la 6: 22 pm #69250Sergio BertanaAdministrator al forumuluiDe pe pagina web nu puteți accesa sistemul I/O puteți accesa doar variabilele alocate în DB100.
Deci, dacă doriți să citiți intrările sau să setați ieșirile, trebuie să alocați variabile BOOL în DB100 și apoi cu un program ladder sau ST să copiați starea I/O-urilor fizice pe variabilele alocate.
Ianuarie 13, 2023 la 8: 43 am #69264clarparticipantMulțumesc pentru răspuns, dar starea poate fi citită cu:
"PLC_DO" : [<!--[OSID_PLC_DO_ALL]-->] "PLC_DI" : [<!--[OSID_PLC_DI_ALL]-->]
Ianuarie 13, 2023 la 11: 04 am #69285Sergio BertanaAdministrator al forumuluiEtichetele „OSID_xxxx” sunt etichete pe care le folosim pentru a gestiona paginile web ale sistemului nostru.
Ele nu sunt documentate pe măsură ce funcționează sfătuim împotriva utilizării acestuia deoarece acest lucru ne permite să îi modificăm funcționalitatea la discreția noastră, fără a afecta nicio utilizare de către clienți.
-
AutorPost
- Trebuie să fiți autentificat pentru a răspunde la acest subiect.