You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
definición asíncrona services_loop():
para el nombre, defs en SERVICE_DEFS.items():
SERVICE_TIMESERIES[nombre] = deque([], maxlen=SERVICE_TIMESERIES_LEN)
Si "link" no está en las definiciones:
defs['link'] = Verdadero
si "last_run" no está en las definiciones:
defs['última ejecución'] = 0
si "refresh_interval" no está en las definiciones:
defs["intervalo_de_actualización"] = ACTUALIZACIÓN_PREDETERMINADA
mientras se ejecuta:
para el nombre, defs en SERVICE_DEFS.items():
ahora = tiempo.tiempo()
si defs["last_run"] + defs["refresh_interval"] < ahora:
defs["last_run"] = ahora
# await update_service_timeseries(nombre, defs)
tornado.ioloop.IOLoop.current().spawn_callback(
update_service_timeseries, nombre, definiciones
)
esperar asyncio.sleep(1)
async def update_service_timeseries(nombre, defs):
err=[]
tornado.httpclient.AsyncHTTPClient.configure(
"Tornado.curl_httpclient.CurlAsyncHTTPClient"
)
http_client = tornado.httpclient.AsyncHTTPClient()
reintentos = defs.get("reintentos", 3)
es_cebolla = bool(CEBOLLA_RE.match(defs['url']))
para intentos en rango(reintentos):
intentar:
resp = esperar http_client.fetch(
solicitud=tornado.curl_httpclient.HTTPRequest(
defs['url'],
prepare_curl_callback=preparar_calcetines_curl5,
proxy_host="host local",
puerto proxy=9050,
método="CABEZA",
)
)
si resp.code == 200:
romper
excepto Excepción como e:
err.append(f"{e} ({tipo(e)})")
# En lugar de devolver cualquier valor, simplemente los escribimos en nuestra serie temporal.
# De esta manera permanecerá en RAM y el controlador http podrá acceder a él en cualquier momento.
fecha = datetime.datetime.utcnow() # .replace(tzinfo=UTC)
SERVICE_TIMESERIES[nombre].appendleft(
{
'en línea': "y" si len(err) == 0 de lo contrario "p" si len(err) != reintentos de lo contrario "n",
'timestamp': fecha,
'mensaje': "errores:\n{}\n\n".format("\n".join(err)) if err else "",
}
)" https://gitlab.com/fdroid/fdroid-monitor/-/raw/master/fdroidmonitor/services.py?ref_type=heads#:~:text=%23Archivo%20SPDXCopyrightTexto%3A%202020,else%20%22%22%2C%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)
The text was updated successfully, but these errors were encountered:
"#Archivo SPDXCopyrightTexto: 2020 Michael Pöhn [email protected]
Identificador de licencia SPDX: AGPL-3.0 o posterior
importar re
tiempo de importación
importar pycurl
importar asyncio
importar fecha y hora
importar tornado.httpclient
importar tornado.curl_httpclient
de colecciones importar deque
desde zoneinfo importar ZoneInfo
UTC = Información de zona('UTC')
CORRIENDO = Verdadero
CEBOLLA_RE = re.compilar(r'.*[a-z0-9]{56}.cebolla')
ACTUALIZACIÓN PREDETERMINADA = 5 * 60
SERIE_DE_TIEMPO_DE_SERVICIO_LARGO = 50
SERVICIO_DEFS = {
"Sitio web": {
"url": "https://f-droid.org",
"sección": "web",
},
"Sitio web (Tor)": {
"url": "http://fdroidorg6cooksyluodepej4erfctzk7rrjpjbbr6wx24jh3lqyfwyd.onion/",
"calcetines5": "127.0.0.1:9050",
"sección": "web",
},
"Sitio web (Cloudflare)": {
"url": "https://cloudflare.f-droid.org/",
"sección": "web",
},
"Descargar": {
"url": "https://f-droid.org/F-Droid.apk",
"sección": "web",
},
"Buscar": {
"url": "https://search.f-droid.org/",
"sección": "web",
},
"Enlace": {
"url": "https://fdroid.link/",
"sección": "web",
},
"Verificación": {
"url": "https://verification.f-droid.org/",
"sección": "web",
},
"Mastodonte": {
"url": "https://floss.social/@fdroidorg",
"sección": "web",
},
"Foro": {
"url": "https://forum.f-droid.org",
"sección": "web",
},
"f-droid.org": {
"url": "https://f-droid.org/repo/entry.jar",
"sección": "espejos",
"enlace": Falso,
},
"fdroidorg6cooksyluodepej4erfctzk7rrjpjbbr6wx24jh3lqyfwyd.onion": {
"url": "http://fdroidorg6cooksyluodepej4erfctzk7rrjpjbbr6wx24jh3lqyfwyd.onion/fdroid/repo/entry.jar",
"sección": "espejos",
"enlace": Falso,
},
"fdroid.tetaneutral.net": {
"url": "https://fdroid.tetaneutral.net/fdroid/repo/entry.jar",
"sección": "espejos",
"enlace": Falso,
},
"ftp.agdsn.de": {
"url": "https://ftp.agdsn.de/fdroid/repo/entry.jar",
"sección": "espejos",
"enlace": Falso,
},
"ftp.fau.de": {
"url": "https://ftp.fau.de/fdroid/repo/entry.jar",
"sección": "espejos",
"enlace": Falso,
},
"ftp.lysator.liu.se": {
"url": "https://ftp.lysator.liu.se/fdroid/repo/entry.jar",
"sección": "espejos",
"enlace": Falso,
},
"ftpfaudev4triw2vxiwzf4334e3mynz7osqgtozhbc77fixncqzbyoyd.onion": {
"url": "http://ftpfaudev4triw2vxiwzf4334e3mynz7osqgtozhbc77fixncqzbyoyd.onion/fdroid/repo/entry.jar",
"sección": "espejos",
"enlace": Falso,
},
"lysator7eknrfl47rlyxvgeamrv7ucefgrrlhk7rouv3sna25asetwid.onion": {
"url": "http://lysator7eknrfl47rlyxvgeamrv7ucefgrrlhk7rouv3sna25asetwid.onion/fdroid/repo/entry.jar",
"sección": "espejos",
"enlace": Falso,
},
"espejo.cyberbits.eu": {
"url": "https://mirror.cyberbits.eu/fdroid/repo/entry.jar",
"sección": "espejos",
"enlace": Falso,
},
"espejo.fcix.net": {
"url": "https://mirror.fcix.net/fdroid/repo/entry.jar",
"sección": "espejos",
"enlace": Falso,
},
"espejo.ossplanet.net": {
"url": "https://mirror.ossplanet.net/fdroid/repo/entry.jar",
"sección": "espejos",
"enlace": Falso,
},
"plug-mirror.rcac.purdue.edu": {
"url": "https://plug-mirror.rcac.purdue.edu/fdroid/repo/entry.jar",
"sección": "espejos",
"enlace": Falso,
},
"http02 (Finlandia)": {
"url": "http://http02.fdroid.net",
"sección": "proxies",
"enlace": Falso,
},
"http03 (Países Bajos)": {
"url": "http://http03.fdroid.net",
"sección": "proxies",
"enlace": Falso,
},
}
SERIE_DE_HORARIO_DE_SERVICIO = {}
SECCIÓN_DEFS = {
"web": {
"título": "Web",
"descripción": "",
},
"espejos": {
"title": "Espejos",
"descripción": "",
},
"proxies": {
"título": "proxies inversos",
"descripción": "",
},
}
def prepare_curl_socks5(rizo):
curl.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5_HOSTNAME)
definición asíncrona services_loop():
para el nombre, defs en SERVICE_DEFS.items():
SERVICE_TIMESERIES[nombre] = deque([], maxlen=SERVICE_TIMESERIES_LEN)
Si "link" no está en las definiciones:
defs['link'] = Verdadero
si "last_run" no está en las definiciones:
defs['última ejecución'] = 0
si "refresh_interval" no está en las definiciones:
defs["intervalo_de_actualización"] = ACTUALIZACIÓN_PREDETERMINADA
async def update_service_timeseries(nombre, defs):
err=[]
tornado.httpclient.AsyncHTTPClient.configure(
"Tornado.curl_httpclient.CurlAsyncHTTPClient"
)
http_client = tornado.httpclient.AsyncHTTPClient()
reintentos = defs.get("reintentos", 3)
es_cebolla = bool(CEBOLLA_RE.match(defs['url']))
para intentos en rango(reintentos):
intentar:
resp = esperar http_client.fetch(
solicitud=tornado.curl_httpclient.HTTPRequest(
defs['url'],
prepare_curl_callback=preparar_calcetines_curl5,
proxy_host="host local",
puerto proxy=9050,
método="CABEZA",
)
)
si resp.code == 200:
romper
excepto Excepción como e:
err.append(f"{e} ({tipo(e)})")
# En lugar de devolver cualquier valor, simplemente los escribimos en nuestra serie temporal.
# De esta manera permanecerá en RAM y el controlador http podrá acceder a él en cualquier momento.
fecha = datetime.datetime.utcnow() # .replace(tzinfo=UTC)
SERVICE_TIMESERIES[nombre].appendleft(
{
'en línea': "y" si len(err) == 0 de lo contrario "p" si len(err) != reintentos de lo contrario "n",
'timestamp': fecha,
'mensaje': "errores:\n{}\n\n".format("\n".join(err)) if err else "",
}
)"
https://gitlab.com/fdroid/fdroid-monitor/-/raw/master/fdroidmonitor/services.py?ref_type=heads#:~:text=%23Archivo%20SPDXCopyrightTexto%3A%202020,else%20%22%22%2C%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)
The text was updated successfully, but these errors were encountered: