op-sources-verification issueshttps://gitlab.depp.it/openpolis/op-sources-verification/-/issues2022-06-17T15:34:12Zhttps://gitlab.depp.it/openpolis/op-sources-verification/-/issues/6Login con oauth da gitlab.depp.it2022-06-17T15:34:12ZguglielmoLogin con oauth da gitlab.depp.itGli utenti devono potersi loggare a quest'applicazione usando il login oauth con il nostro gitlab.depp.it.Gli utenti devono potersi loggare a quest'applicazione usando il login oauth con il nostro gitlab.depp.it.Release 2.0https://gitlab.depp.it/openpolis/op-sources-verification/-/issues/16Errori nelle request2022-06-17T15:23:26ZettoreErrori nelle requestErrori di connessione request in Verifica Fonti
| Tipo di errore | Possibile cause | Link di esempio |
| ------ | ------ | ------ |
| ERRORE 403 (Forbidden) | Non accetta connessioni da fuori Italia o Richiede captcha | <ul> <li>https...Errori di connessione request in Verifica Fonti
| Tipo di errore | Possibile cause | Link di esempio |
| ------ | ------ | ------ |
| ERRORE 403 (Forbidden) | Non accetta connessioni da fuori Italia o Richiede captcha | <ul> <li>https://opdm.opsv.openpolis.io/admin/webapp/content/12010/</li><li>https://opdm.opsv.openpolis.io/admin/webapp/content/10935/</li><li>https://opdm.opsv.openpolis.io/admin/webapp/content/11087/</li></ul>|
| ERRORE 990 (HTTPSConnectionPool(host='www.asp.cz.it', port=443): Max retries exceeded with url: /doc/amministrazione-trasparente//organizzazione/organi-di-indirizzo-politico-amministrativo/direttore-amministrativo.html (Caused by ConnectTimeoutError(, 'Connection to www.asp.cz.it timed out. (connect timeout=50)'))) | Qui una possibile causa: https://stackoverflow.com/questions/23013220/max-retries-exceeded-with-url-in-requests | Succede in vari siti, è il caso più frequente <ul> <li>https://opdm.opsv.openpolis.io/admin/webapp/content/12003/</li><li>https://opdm.opsv.openpolis.io/admin/webapp/content/12002/</li><li>https://opdm.opsv.openpolis.io/admin/webapp/content/11949/</li><li>https://opdm.opsv.openpolis.io/admin/webapp/content/10777/</li></ul> |
| ERRORE 503 (Service Temporarily Unavailable | I siti sono invece raggiungibili | <ul> <li>https://opdm.opsv.openpolis.io/admin/webapp/content/11768/</li><li>https://opdm.opsv.openpolis.io/admin/webapp/content/11767/</li></ul> |
| ERRORE 990 (HTTPSConnectionPool(host='www.politicheagricole.it', port=443): Max retries exceeded with url: /flex/cm/pages/ServeBLOB.php/L/IT/IDPagina/17910 (Caused by SSLError(SSLError(1, '[SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:852)'),))) | Qui possibile spiegazione: https://stackoverflow.com/questions/38015537/python-requests-exceptions-sslerror-dh-key-too-small | <ul> <li>https://opdm.opsv.openpolis.io/admin/webapp/content/11994/</li><li>https://opdm.opsv.openpolis.io/admin/webapp/content/11757/</li></ul> |
| ERRORE 990 (('Connection aborted.', OSError(0, 'Error'))) | - | <ul> <li>https://opdm.opsv.openpolis.io/admin/webapp/content/11187/</li><li>https://opdm.opsv.openpolis.io/admin/webapp/content/11757/</li></ul> |
| ERRORE 990 (HTTPConnectionPool(host='www.ospedale.cuneo.it', port=80) Read timed out. (read timeout=50))| Su molti siti anche se si alza il valore del timeout | <ul> <li>https://opdm.opsv.openpolis.io/admin/webapp/content/11660/</li></ul> |
| ERRORE 503 (Service Unavailable)| la pagina è invece raggiungibile | <ul> <li>https://opdm.opsv.openpolis.io/admin/webapp/content/10821/</li></ul> |
Inoltre:
- Abilitazione cookies - Vari casi (https://opdm.opsv.openpolis.io/admin/webapp/content/10333/)
- Connection denied by Geolocation
<pre>
Reason:
Blocked country:
Italy
The connection was denied because this country is blocked in the Geolocation settings.
Please contact your administrator for assistance.
WatchGuard Technologies, Inc.
</pre>
https://opdm.opsv.openpolis.io/admin/webapp/content/11719Release 2.0guglielmoguglielmohttps://gitlab.depp.it/openpolis/op-sources-verification/-/issues/20Funzionalità di base del sistema2022-06-17T15:04:25ZguglielmoFunzionalità di base del sistemaFunzionalità
============
Uno script periodico, lanciato in automatico, controlla un elenco di **contenuti** sul web.
Quando uno di questi contenuti **cambia** rispetto a quanto immagazzinato all'ultima visita,
lo status del contenuto c...Funzionalità
============
Uno script periodico, lanciato in automatico, controlla un elenco di **contenuti** sul web.
Quando uno di questi contenuti **cambia** rispetto a quanto immagazzinato all'ultima visita,
lo status del contenuto cambia a ``CHANGED``.
Se durante il controllo il contenuto non è raggiungibile, o vengono generati degli errori, lo status del contenuto
viene posto a ``ERROR``.
Se il contenuto non contiene modifiche, rispetto all'ultima visita effettuata, lo status del contenuto
è posto a ``UNCHANGED``.
Un secondo script periodico, invia una **notifica**, in cui sono riassunti i risultati complessivi della verifica,
quanti siti cambiati, quanti errori.
Nel messaggio di notifica sono presenti link a tutti i contenuti cambiati e a tutti quelli che hanno generato un errore.
Un **contenuto** è parte di una pagina web, identificata da una URL e un'**espressione xpath**, o un **selettore CSS**.
Una **notifica** è un messagio via email, inviato a dei recipients, e/o un messaggio inviato a un canale slack.
I recipients possono essere aggiunti al modello, mentre il canale slack è definito a livello di configurazione.
Gli script sono automatizzati attraverso un meccanismo che ne permetta la gestione a utenti non-developer,
attraverso un'interfaccia utente. Le funzionalità del sistema di gestione task sono quelle del
pacchetto ``django-uwsgi-taskmanager``.
Gli utenti operatori possono accedere all'interfaccia di gestione (django admin), con diversi permessi.
- amministratori:
- gestiscono l'elenco dei contenuti da verificare,
- gestiscono l'elenco di tipologie di organizzazioni per i quali i contenuti valgono
- gestiscono utenti e permessi,
- gestiscono recipients delle notifiche via email (se configurate)
- gestiscono i task di verifica e di invio notifiche del task manager
- operatori:
- gestiscono l'elenco dei contenuti da verificare
- gestiscono l'elenco di tipologie di organizzazioni per i quali i contenuti valgono
La gestione dei contenuti da verificare consiste in queste operazioni:
- visualizzazione elenco
- ricerca per campo di contenuto, titolo, url
- filtro per status, per data di ultima verifica, per tipologia di organizzazione
- ordinamento per data di ultima verifica e url
- operazioni CRUD
- visualizzazione delle differenze tra il contenuto *live* e il contenuto in cache
- lancio di azioni custom, per singolo contenuto:
- lancio di una verifica di un singolo contenuto, tramite custom action
- abilitazione/disabilitazione del contenuto alle verifiche
- segnalazione che i dati su OP sono stati aggiornati
- segnalazione di un errore (manuale)
- reset - riporta lo status del contenuto alla condizione iniziale:
- status nullo
- data ultima verifica nulla
- messaggio di errore nullo
- contenuto in memoria nullo
Un contenuto è definito da:
- una denominazione, che ne permette il riconoscimento visivo nell'elenco
- una tipologia di organizzazione (da elenco, per aiutare a visualizzare solo alcuni contenuti)
- una URL
- un'espressione XPATH o un selettore CSS (da decidere o con un prefisso, in modo da permettere entrambi)
- uno stato
- un flag di abilitazione alla verifica (per spegnere alcune verifiche, se problematiche)
- l'orario dell'ultima verifica
- il messaggio di errore, se c'è stato, dell'ultima verifica
Un recipient è definito da:
- un nome
- un indirizzo email
Una tipologia di organizzazione è definita da:
- un nomeRelease 2.0https://gitlab.depp.it/openpolis/op-sources-verification/-/issues/19SSLError(SSLError(1, '[SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:852)'2021-12-21T13:43:36ZettoreSSLError(SSLError(1, '[SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:852)'Alcuni siti rispondono con il seguente errore:
``` 2 - ERRORE 990 (HTTPSConnectionPool(host='www.politicheagricole.it', port=443): Max retries exceeded with url: /flex/cm/pages/ServeBLOB.php/L/IT/IDPagina/625 (Caused by SSLError(SSLErro...Alcuni siti rispondono con il seguente errore:
``` 2 - ERRORE 990 (HTTPSConnectionPool(host='www.politicheagricole.it', port=443): Max retries exceeded with url: /flex/cm/pages/ServeBLOB.php/L/IT/IDPagina/625 (Caused by SSLError(SSLError(1, '[SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:852)'),)))```
per esempio [questo](https://opdm.opsv.openpolis.io/admin/webapp/content/10980/change/).
La soluzione, descritta [qui](https://stackoverflow.com/questions/38015537/python-requests-exceptions-sslerror-dh-key-too-small), potrebbe essere questa:
```
import requests
import urllib3
requests.packages.urllib3.disable_warnings()
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += ':HIGH:!DH:!aNULL'
try:
requests.packages.urllib3.contrib.pyopenssl.util.ssl_.DEFAULT_CIPHERS += ':HIGH:!DH:!aNULL'
except AttributeError:
# no pyopenssl support used / needed / available
pass
page = requests.get(url, verify=False)
```
Provata in shell funziona.guglielmoguglielmo