stripImageMetadata dependia de sharp, y cuando no esta devolvia la imagen
intacta. En Android sharp no se empaqueta —lleva binarios nativos y el bundle
del movil va sin ninguno— asi que las fotos subian con su EXIF entero: marca,
modelo, numero de serie, fecha y coordenadas GPS. Y sin sharp instalado,
tambien en escritorio.
Ahora hay un limpiador que no depende de nada: recorre el contenedor y tira los
bloques de metadatos sin decodificar ni recomprimir, asi que los pixeles quedan
byte a byte como estaban.
JPEG fuera APP1 (Exif y XMP), APP13 (IPTC), APP14, COM y demas.
Se quedan JFIF y el perfil de color, que afectan a como se ve.
PNG fuera tEXt, zTXt, iTXt, eXIf, tIME, dSIG.
WebP fuera los bloques EXIF y XMP del contenedor RIFF.
De la orientacion se guarda solo eso: sin sharp no se pueden girar los pixeles,
y tirar la etiqueta dejaria tumbadas las fotos verticales. Se reconstruye un
bloque EXIF de 32 bytes con esa unica etiqueta, que no dice nada de quien hizo
la foto ni donde. Si sharp esta, se sigue prefiriendo su camino, que ademas gira
la imagen de verdad.
Comprobado con una foto que llevaba GPS, marca, modelo, numero de serie y fecha:
- En el movil y en escritorio, el blob guardado queda con 32 bytes de EXIF
(solo la orientacion, que sobrevive) y cero rastros de lo demas.
- Los pixeles son identicos antes y despues, en JPEG, PNG y WebP.
- El perfil de color ICC se conserva.
- Sin metadatos, progresivo, GIF, fichero corrupto, fichero vacio y algo que
no es una imagen: se devuelven tal cual, sin excepciones.
|
||
|---|---|---|
| docs | ||
| scripts | ||
| src | ||
| test | ||
| .gitignore | ||
| install.sh | ||
| LICENSE | ||
| oasis.sh | ||
| package.json | ||
| README.md | ||
OASIS_LINUX — rama de desarrollo experimental
⚠ ESTO NO ES OASIS OFICIAL
Esta es una rama de desarrollo experimental mantenida por el hacklab, no afiliada al proyecto original.
El repositorio oficial de Oasis es el de epsylon: https://github.com/epsylon/oasis
Si quieres usar Oasis de verdad, instala el oficial. Lo que hay aquí puede romperse, cambiar de forma incompatible o desaparecer sin aviso. No está auditado y no tiene garantía de ninguna clase.
Los fallos de esta rama se reportan aquí, nunca a epsylon.
Versión base: Oasis 0.9.5.
Qué añade esta rama
Karvan — salas efímeras
Salas de chat que viven solo en memoria y se autodestruyen solas:
- TTL de inactividad (30 min) y absoluto (2 h), configurables al crear la sala.
- Nada se escribe en disco ni en el log SSB: al vencer el plazo, la sala y sus mensajes desaparecen.
- Anillo de 250 mensajes, 100 salas simultáneas, 50 miembros por sala.
- El identificador de sala son 72 bits y es la única credencial: quien tiene el enlace, entra. No hay lista de miembros que valga.
- Invitación a un contacto por mensaje privado SSB.
- Funciona sin JavaScript: enviar y recibir van por formulario y recarga. Con JavaScript se añade un canal directo entre pares.
Llamadas de audio y vídeo
Sobre el mismo WebRTC del chat. En escritorio el navegador pide los permisos de cámara y micrófono directamente.
Sin servidores de terceros: no hay ningún STUN de fábrica. Un servidor STUN
aprende la IP pública y el momento de cada llamada, así que no se pone ninguno.
Por defecto solo hay candidatos host, que funcionan en la misma red y con NAT
amable. Si tu nodo tiene TURN propio, se configura en oasis-config.json:
"rtc": {
"stun": ["stun:tu.pub:3478"],
"turn": { "urls": ["turn:tu.pub:3478"], "secret": "<static-auth-secret>", "ttlSec": 3600 },
"relayOnly": false
}
Con secret se emiten credenciales efímeras por el mecanismo REST de coturn. Con
relayOnly toda la media pasa por el TURN y ningún par ve la IP del otro.
Qué NO tiene respecto al oficial
- Módulo de IA: fuera. El modelo son unos 4 GB.
- housing: portado pero apagado por defecto.
Instalación
Igual que el oficial:
cd src/server && npm install
cd ../.. && ./oasis.sh
Relación con upstream
Esta rama sigue las versiones de epsylon de cerca. El código propio vive separado
(src/views/fork/, src/backend/fork_routes.js, src/models/karvan_model.js y las
traducciones en translations/fork/) para que integrar cada versión nueva no arrastre
la interfaz de la rama. Sobre los ficheros de upstream solo hay enganches de una línea.
Licencia
AGPL-3.0, la misma que el proyecto original.