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/14Notifiche solo per siti con Verification enabled = True2022-06-17T15:24:11ZettoreNotifiche solo per siti con Verification enabled = TrueLe notifiche via mail e via slack nel conteggio delle variazioni e degli errori considerano ora tutti i siti.
Occorre invece filtrare i risultati solo per quei siti che hanno il campo **Verification enabled = True**.Le notifiche via mail e via slack nel conteggio delle variazioni e degli errori considerano ora tutti i siti.
Occorre invece filtrare i risultati solo per quei siti che hanno il campo **Verification enabled = True**.guglielmoguglielmohttps://gitlab.depp.it/openpolis/op-sources-verification/-/issues/12Possibilità di requests via post, con response json2022-06-17T15:24:11ZguglielmoPossibilità di requests via post, con response jsonPer il comune di Foggia (https://www.comune.foggia.it/amm-trasparente/amministrazione-2014-2019/),
e si suppone per diversi altri, la pagina viene composta facendo ulteriori richieste ajax a dei dati strutturati.
Nel caso di Foggia: htt...Per il comune di Foggia (https://www.comune.foggia.it/amm-trasparente/amministrazione-2014-2019/),
e si suppone per diversi altri, la pagina viene composta facendo ulteriori richieste ajax a dei dati strutturati.
Nel caso di Foggia: https://www.comune.foggia.it/wp-admin/admin-ajax.php?action=get_wdtable&table_id=5.
Bisogna riuscire ad estrarre i dati anche in questo caso.https://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.guglielmoguglielmohttps://gitlab.depp.it/openpolis/op-sources-verification/-/issues/17Aggiornamento versione task manager (log live)2021-03-13T20:04:55ZguglielmoAggiornamento versione task manager (log live)https://gitlab.depp.it/openpolis/op-sources-verification/-/issues/18Aggiornamento a django 32021-03-13T20:04:52ZguglielmoAggiornamento a django 3https://gitlab.depp.it/openpolis/op-sources-verification/-/issues/15Creare nuova istanza per FB2021-03-11T09:54:52ZguglielmoCreare nuova istanza per FBhttps://gitlab.depp.it/openpolis/op-sources-verification/-/issues/13Check di NON VERIFICA in ogni item2019-08-24T16:56:39ZettoreCheck di NON VERIFICA in ogni itemE' necessario, in ogni item, aggiungere un check di *non verifica* (default: false)
Solo gli item con il check == false vengono quotidianamente verificati.
Nella lista sarebbe utile avere un filtro per quegli item che hanno *non ...E' necessario, in ogni item, aggiungere un check di *non verifica* (default: false)
Solo gli item con il check == false vengono quotidianamente verificati.
Nella lista sarebbe utile avere un filtro per quegli item che hanno *non verifica* == trueguglielmoguglielmohttps://gitlab.depp.it/openpolis/op-sources-verification/-/issues/11Trasferimento dati e deploy in produzione2019-06-13T07:26:42ZguglielmoTrasferimento dati e deploy in produzionehttps://gitlab.depp.it/openpolis/op-sources-verification/-/issues/5Integrazione con op-task-manager2019-06-10T13:24:38ZguglielmoIntegrazione con op-task-manager- [ ] django-usgi-taskmanager non sembra compatibile con django-tenant, non capisce i parametri
- [ ] i log vanno scritti nella directory del tenant
- [ ] gli spooler e i processi uwsgi, devono essere separati, 2 per tenant?
Mi sembr...- [ ] django-usgi-taskmanager non sembra compatibile con django-tenant, non capisce i parametri
- [ ] i log vanno scritti nella directory del tenant
- [ ] gli spooler e i processi uwsgi, devono essere separati, 2 per tenant?
Mi sembra che potrebbe essere più facile generare due applicazioni completamente distinte.https://gitlab.depp.it/openpolis/op-sources-verification/-/issues/3Correzione errori2019-06-07T08:34:28ZguglielmoCorrezione erroriguglielmoguglielmohttps://gitlab.depp.it/openpolis/op-sources-verification/-/issues/7Notifiche via slack2019-06-07T08:32:46ZguglielmoNotifiche via slack- [x] analisi della configurazione di `django-slack` in ambiente *multi-tenancy*, con `constance` come configurazione dinamica
- [x] setup dell'applicazione su slack e test di invio messaggio
- [x] refactoring del task `notify`, per i...- [x] analisi della configurazione di `django-slack` in ambiente *multi-tenancy*, con `constance` come configurazione dinamica
- [x] setup dell'applicazione su slack e test di invio messaggio
- [x] refactoring del task `notify`, per inviare notifiche in base ai settings specifici del tenant: email o slackguglielmoguglielmohttps://gitlab.depp.it/openpolis/op-sources-verification/-/issues/8Implementazione multi-tenancy2019-05-31T16:19:50ZguglielmoImplementazione multi-tenancyhttps://gitlab.depp.it/openpolis/op-sources-verification/-/issues/9Utenti di un'istanza non devono visualizzare l'app Tenants.2019-05-31T16:19:43ZguglielmoUtenti di un'istanza non devono visualizzare l'app Tenants.https://gitlab.depp.it/openpolis/op-sources-verification/-/issues/4Multi-tenancy (analisi)2019-05-30T13:29:26ZguglielmoMulti-tenancy (analisi)https://gitlab.depp.it/openpolis/op-sources-verification/-/issues/2Attivazione CI/CD2019-05-10T06:53:05ZguglielmoAttivazione CI/CD* [x] setup variabili d'ambiente nei settings
* [x] deploy in staging (op-staging-1) e test
* [ ] deploy in produzione (op-prod-1) e test* [x] setup variabili d'ambiente nei settings
* [x] deploy in staging (op-staging-1) e test
* [ ] deploy in produzione (op-prod-1) e testhttps://gitlab.depp.it/openpolis/op-sources-verification/-/issues/1Porting su django 2 e dockerizzazione dello stack.2019-05-08T14:42:54ZguglielmoPorting su django 2 e dockerizzazione dello stack.* [x] Porting su django 2
* [x] Adattamento del template alla dockerizzazione
* [x] Clean up del codice
* [x] Attivazione dello stack dockerizzato (docker-compose.yml)* [x] Porting su django 2
* [x] Adattamento del template alla dockerizzazione
* [x] Clean up del codice
* [x] Attivazione dello stack dockerizzato (docker-compose.yml)