108 lines
2.9 KiB
Markdown
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*.
|