VirusTotalPlus/Doc/dev/idea.md

108 lines
2.9 KiB
Markdown

# Idea a desarrollar
```mermaid
flowchart TD
C[Clientes]
subgraph Nodos
T[Trackers]
S[Servidores]
DB["Base de datos"]
end
subgraph Plataformas
VT[VirusTotal]
MB[MalwareBazaar]
end
C -.->|Conocen| T
T -.->|"Puede ser"| S
T -->|validan| S
S -->|"¿Tiene hashes?"| DB
DB -.->|Sí| C
DB -->|No| Plataformas
Plataformas -.-> C
Plataformas -.->|Registran| DB
C -->|"Peticionan a"| S
```
## F.A.Q.
> ¿Cómo conoce los clientes a los servidores?
El cliente ha de tener la dirección de un Tracker, y éste ya le responderá cuales son los Trackers y servidores.
El origen serían los servidores de 1noro y KyMAN como Trackers.
> ¿Cómo se inicia por primera vez un nodo?
Se conectará a un Tracker, y éste le devolverá la lista de Trackers existentes. Luego, todos los Tracker tendrán que aceptar su solicitud manualmente por los dueños de los Trackers y cuando todos hallan aceptado dicho Nodo, éste empezará a funcionar.
> ¿Puede ser un servidor no ser Tracker? ¿Nos interesa?
Sí, porque los Trackers son como los administradores, y los servidores simplemente darían el servicio de gestión de Hashes y cuentas antivirus.
> La base de datos...
Todos los servidores tendrían que tener una copia de la base de datos y éstos actualizar dicha copia por cada cambio entre ellos. Esto permite validar como si de una cadena de bloques se tratase. Tiene que existir un demonio en cada servidor que verifique que la base de datos esté actualizada.
```mermaid
flowchart TD
F[Archivo]
DB["Base de datos"]
M[Memoria]
P[Plataformas]
R{{Respuesta}}
X{Registro}
F -->|"¿Está en...?"| DB
DB -->|Sí| R
DB -->|"No. ¿Está en...?"| M
M -->|Sí| R
M -->|No| P
P --> X
X -.-> DB
M -.- X
X --> R
```
Registro:
```mermaid
sequenceDiagram
participant Servidor1
participant Servidor2
participant Servidor3
participant ServidorN
note over Servidor1: Tiene un nuevo registro en memoria
Servidor1 ->> Servidor2: Envía el nuevo registro
Servidor1 ->> Servidor3: Envía el nuevo registro
Servidor1 ->> ServidorN: Envía el nuevo registro
Servidor2 ->> Servidor1: Verifica tener el nuevo registro
Servidor3 ->> Servidor1: Verifica tener el nuevo registro
ServidorN ->> Servidor1: Verifica tener el nuevo registro
Servidor1 ->> Servidor2: Verifica sincronía
Servidor1 ->> Servidor3: Verifica sincronía
Servidor1 ->> ServidorN: Verifica sincronía
note over Servidor1: Escribe registro
note over Servidor2: Escribe registro
note over Servidor3: Escribe registro
note over ServidorN: Escribe registro
```
> Estado de sincronización al arranque.
> Formato de versión
Mayor-Minor-Patch
- **Mayor**: Completamente márketing. Se decide por los miembros del equipo. Sería como una versión final donde 0 es Alpha o Beta, y a partir de ahí son versiones estables.
- **Minor**: Número incremental continuo o de cambios. No hay límite.
- **Patch**: Arreglos rápidos sobre la *Minor*.