Rama experimental de Oasis para escritorio con Karvan (salas efimeras y llamadas). NO oficial: el oficial es github.com/epsylon/oasis
Find a file
SITO 58824032f8 blobs: las fotos ya no suben con la ubicacion dentro
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.
2026-08-19 21:07:00 +02:00
docs Oasis 0.9.5 con Karvan para escritorio 2026-08-19 00:35:08 +02:00
scripts Oasis 0.9.5 con Karvan para escritorio 2026-08-19 00:35:08 +02:00
src blobs: las fotos ya no suben con la ubicacion dentro 2026-08-19 21:07:00 +02:00
test Oasis 0.9.5 con Karvan para escritorio 2026-08-19 00:35:08 +02:00
.gitignore modules: karvan en su sitio alfabetico 2026-08-19 10:31:36 +02:00
install.sh Oasis 0.9.5 con Karvan para escritorio 2026-08-19 00:35:08 +02:00
LICENSE Oasis 0.9.5 con Karvan para escritorio 2026-08-19 00:35:08 +02:00
oasis.sh Oasis 0.9.5 con Karvan para escritorio 2026-08-19 00:35:08 +02:00
package.json Oasis 0.9.5 con Karvan para escritorio 2026-08-19 00:35:08 +02:00
README.md Oasis 0.9.5 con Karvan para escritorio 2026-08-19 00:35:08 +02:00

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.