Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gitlab.com/fdroid/fdroid-monitor/-/raw/master/fdroidmonitor/services.py?ref_type=heads #48

Open
Malandro9493 opened this issue Dec 3, 2024 · 0 comments

Comments

@Malandro9493
Copy link

"#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

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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant