diff --git a/README.md b/README.md index dd7ffe2..7f5c3b5 100644 --- a/README.md +++ b/README.md @@ -28,13 +28,14 @@ ej. alias `alias iploc='~/ruta/script/iplocate.py'` ```bash ipLocate - Consulta información sobre IP(s) disponibles en ipinfo.io con o sin token. - Carga logs de nginx en base de datos. Consulta con ipinfo.io y registra - en base de datos. + Consulta en ipinfo.io (con o sin token) información sobre IP(s). + Carga logs de nginx en base de datos. + Consulta con ipinfo.io y registra en base de datos. Consultas y reportes según información en la base de datos. iploc -h - Muestra esta ayuda. - + iploc -hq - Ayuda sobre querys. + Consultas ipinfo.io: iploc - Consulta la información de disponible en ipinfo.io. iploc -f - Consulta info. de las IPs en (ipinfo.io). @@ -45,7 +46,7 @@ ej. alias `alias iploc='~/ruta/script/iplocate.py'` Consultas base de datos: iploc -d - Consulta la información de disponible en base de datos. iploc -D - Consulta info. de las IPs en (base de datos). - iploc -M - Genera mapa según registro de la BD (cod. 200 y otros). + iploc -M - Genera mapa según registro en BD (cod. 200 y otros). Operaciones base de datos: iploc --sync - Sincroniza logs del servidor (bash script). @@ -150,6 +151,90 @@ ej. formato `./archivo_IPs`. ... ``` +### Reportes y consultas + +`iploc -hq` +```txt + ipLocate + + Reportes según consultas a base de datos. + + Consultas a base de datos: + iploc -q -p - Conteo de respuestas html para (ejs. CL AR) + iploc -q --top - Visitas top paises + iploc -q --detalle-pais - Muestra al detalle las visitas desde + iploc -q --pais-desde - Detalle visitas desde (ej. 2022/9/19) +``` + +**`iploc -q -p us`** + +```txt + Códigos html: US +╭────────┬────────╮ +│ Código │ Conteo │ +├────────┼────────┤ +│ 404 │ 4806 │ +│ 200 │ 1772 │ +│ 400 │ 1709 │ +│ 403 │ 1381 │ +│ 0 │ 1089 │ +│ 301 │ 709 │ +│ 300 │ 284 │ +│ 405 │ 88 │ +│ 302 │ 14 │ +│ 303 │ 6 │ +│ 499 │ 2 │ +│ 444 │ 1 │ +╰────────┴────────╯ +``` + +**`iploc -q --top 3`** + +```txt + Vistas Top 3 +╭──────┬─────────╮ +│ País │ Visitas │ +├──────┼─────────┤ +│ US │ 2146 │ +│ CN │ 515 │ +│ DE │ 363 │ +╰──────┴─────────╯ +``` + +**`iploc -q --detalle-pais il`** + +```txt + Detalle visitas pais: IL +╭────────────┬────────────────┬─────────┬───────────┬──────────────────────────────────────╮ +│ Fecha │ IP │ Metodo │ Respuesta │ Consulta │ +├────────────┼────────────────┼─────────┼───────────┼──────────────────────────────────────┤ +│ 2022-08-11 │ 87.239.255.117 │ GET │ 404 │ http://dyn.epicgifs.net/test6956.php │ +│ 2022-08-15 │ 87.239.255.117 │ GET │ 404 │ http://dyn.epicgifs.net/test6956.php │ +│ 2022-08-15 │ 87.239.255.117 │ GET │ 400 │ http://dyn.epicgifs.net/test6956.php │ +│ 2022-08-22 │ 79.179.30.54 │ OPTIONS │ 405 │ / │ +│ 2022-08-22 │ 79.179.30.54 │ POST │ 405 │ / │ +│ 2022-08-22 │ 79.179.30.54 │ GET │ 404 │ /robots.txt │ +│ 2022-08-28 │ 87.239.255.117 │ GET │ 404 │ http://dyn.epicgifs.net/test6956.php │ +│ 2022-09-03 │ 87.239.255.117 │ GET │ 404 │ http://dyn.epicgifs.net/test6956.php │ +╰────────────┴────────────────┴─────────┴───────────┴──────────────────────────────────────╯ +``` + +**`iploc -q --pais-desde fr 2022/9/17`** + +```txt + Visitas FR, desde 17/9/2022 +╭────────────┬────────────────┬────────┬───────────┬──────────────────────╮ +│ Fecha │ IP │ Metodo │ Respuesta │ Consulta │ +├────────────┼────────────────┼────────┼───────────┼──────────────────────┤ +│ 2022-09-17 │ 185.49.20.77 │ GET │ 444 │ /wp-login.php │ +│ 2022-09-18 │ 94.23.133.43 │ GET │ 444 │ //wallet/.git/config │ +│ 2022-09-18 │ 94.23.133.43 │ GET │ 444 │ //admin/.git/config │ +│ 2022-09-18 │ 94.23.133.43 │ GET │ 444 │ //core/.git/config │ +│ 2022-09-18 │ 94.23.133.43 │ GET │ 444 │ //live/.git/config │ +│ 2022-09-18 │ 212.83.186.254 │ HEAD │ 444 │ / │ +╰────────────┴────────────────┴────────┴───────────┴──────────────────────╯ +``` + ### Sicronización manual No es necesario el uso manual del script, ya que este es llamado por `iploc --sync`. @@ -177,7 +262,7 @@ Pero ya que existe, puede resultar conveniente tener la opción de llamar manual ``` `./muevelog.sh --start`: -Realiza todo el proceso **--sync**, **--copia**, **--extraer** y **--concat**. +Realiza todo el proceso **--sync**, **--copia**, **--extraer** y **--concat**. ### Implementación @@ -215,7 +300,10 @@ Correr `iploc -h` para crear base de datos. ``` 📂️ nginx_data/ +├── 📁️ consultas/ +│ └──  querys_sqlite.py ├── 📁️ maps +│ └── map_thumb.svg ├── 📄️ __init__.py ├── 📄️ config.cfg ├── 📄️ ipinfo.db @@ -251,5 +339,3 @@ Seguir los pasos explicados en [Uso](#uso).
- *[Token](https://ipinfo.io/)* - - diff --git a/consultas/querys_sqlite.py b/consultas/querys_sqlite.py index c3d2af8..88795d6 100755 --- a/consultas/querys_sqlite.py +++ b/consultas/querys_sqlite.py @@ -66,10 +66,12 @@ def sel_pais_desde(pais, unix_e): resp = c.fetchall() return resp -def pt_sel_pais_fecha(pais, unix_e): - respuesta = sel_pais_desde(pais, unix_e) +def pt_sel_pais_fecha(pais, fecha_ux, fecha_loc): + fecha = fecha_loc.split('/') + fecha = fecha[2] +'/'+ fecha[1] +'/'+ fecha[0] + respuesta = sel_pais_desde(pais, fecha_ux) tbl_v = Table( - title=f"[bold][blue]Visitas {pais}, desde {unix_e}[/blue][/bold]", + title=f"[bold][blue]Visitas {pais}, desde {fecha}[/blue][/bold]", box = box.ROUNDED, show_lines = False, row_styles=["dim", ""], diff --git a/iplocate.py b/iplocate.py index 6f7529d..6421f09 100755 --- a/iplocate.py +++ b/iplocate.py @@ -232,8 +232,9 @@ def main(): querys.pt_top_paises(top) case '--pais-desde': pais = sys.argv[3] - desde = sql_alch.fecha_error_to_epoch(sys.argv[4]+' 00:00:00') - querys.pt_sel_pais_fecha(pais.upper(), desde) + fecha_local = sys.argv[4] + fecha_unix = sql_alch.fecha_error_to_epoch(sys.argv[4]+' 00:00:00') + querys.pt_sel_pais_fecha(pais.upper(), fecha_unix, fecha_local) case '--detalle-pais': pais = sys.argv[3] querys.pt_visita_pais_detalle(pais.upper()) @@ -265,7 +266,7 @@ def uso_consultas(): [deep_sky_blue1]Reportes según consultas a base de datos.[/deep_sky_blue1] [bold blue]Consultas a base de datos:[/bold blue] - [bold yellow]iploc -q -p[/bold yellow] [blue][/blue] [green]- Conteo de respuestas html para (ejs. CL AR) [/green] + [bold yellow]iploc -q -p[/bold yellow] [blue][/blue] [green]- Conteo de respuestas html para (ejs. CL AR)[/green] [bold yellow]iploc -q --top [/bold yellow][blue][/blue] [green]- Visitas top paises[/green] [bold yellow]iploc -q --detalle-pais[/bold yellow][blue] [/blue] [green]- Muestra al detalle las visitas desde [/green] [bold yellow]iploc -q --pais-desde[/bold yellow][blue] [/blue] [green]- Detalle visitas desde (ej. 2022/9/19)[/green] @@ -276,9 +277,9 @@ def uso(): ayuda = f""" [bold blue]ipLocate[/bold blue] - [deep_sky_blue1]Consulta información sobre IP(s) disponibles en ipinfo.io con o sin token. - Carga logs de nginx en base de datos. Consulta con ipinfo.io y registra - en base de datos. + [deep_sky_blue1]Consulta en ipinfo.io (con o sin token) información sobre IP(s). + Carga logs de nginx en base de datos. + Consulta con ipinfo.io y registra en base de datos. Consultas y reportes según información en la base de datos.[/deep_sky_blue1] [bold yellow]iploc -h[/bold yellow] [green]- Muestra esta ayuda.[/green]