Mod és una aplicació iOS en català per a moderar servidors Mastodon, de codi obert.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
spla 6c3d1b601c Whois de les adreces IP
Les IP dels comptes i dels registres pendents obren una fitxa amb qui hi
ha darrere de l'adreça: el rang, la xarxa, el país, les dates i els
contactes del registre, amb el d'abusos remarcat.

La consulta es fa per RDAP, el relleu del whois clàssic, que va per HTTPS
i retorna JSON; el port 43 en text pla no és pràctic des d'iOS. S'entra
per ARIN, que redirigeix sol cap al registre regional de cada adreça.

Als registres pendents la IP abans no es veia.
2026-09-07 19:57:51 +02:00
Mod Whois de les adreces IP 2026-09-07 19:57:51 +02:00
Mod.xcodeproj Whois de les adreces IP 2026-09-07 19:57:51 +02:00
.gitignore Primera versió de Mod, administració de Mastodon per a iOS 2026-08-09 20:30:33 +02:00
LICENSE Primera versió de Mod, administració de Mastodon per a iOS 2026-08-09 20:30:33 +02:00
README.md Token al clauer, bloqueig amb Face ID i HTTPS obligatori 2026-08-09 21:09:20 +02:00

Mod — Administració Mastodon per a iOS

Aplicació nativa iOS escrita en SwiftUI per administrar servidors de Mastodon. Tots els textos i menús estan en català. Tots els paràmetres d'API utilitzen els noms oficials de Mastodon.

Requisits

  • Xcode 15.3 o superior
  • iOS 26.0 o superior
  • Un compte d'administrador en un servidor Mastodon
  • Token d'accés amb scopes: admin:read, admin:write, read:notifications, read:statuses (tuts no públics d'un compte) i write:reports (crear informes des de la vista de tuts)

Com obtenir el token

  1. Obre el teu servidor Mastodon al navegador
  2. Ves a Preferències → Aplicacions → Nova aplicació
  3. Afegeix els scopes admin:read, admin:write, read:notifications, read:statuses i write:reports (si ja tenies l'aplicació creada, cal regenerar el token: els scopes nous no s'apliquen al token ja emès)
  4. Copia el token generat

Estructura del projecte

Mod/
├── ModApp.swift              # Punt d'entrada (@main)
├── ContentView.swift         # Navegació arrel + pantalla d'inici
├── DimensionsView.swift      # Dimensions del servidor (POST /api/v1/admin/dimensions)
├── Models/
│   └── Models.swift          # Entitats de l'API (AdminAccount, AdminReport, MastodonStatus, etc.)
├── Services/
│   ├── MastodonAPI.swift     # Crides als endpoints oficials
│   └── AppState.swift        # Estat global de l'app / ViewModel
└── Views/
    ├── SetupView.swift        # Pantalla de configuració del servidor
    ├── MainTabView.swift      # Tab bar principal, menú "Més", Notificacions i Configuració
    ├── TaulerView.swift       # Tauler de control
    ├── ComptesView.swift      # Comptes, perfil, tuts d'un compte i creació d'informes
    ├── InformesView.swift     # Informes de moderació (GET/POST /api/v1/admin/reports)
    ├── XarxaView.swift        # Dominis bloquejats, permesos i IPs
    ├── MesuresView.swift      # Mesures del servidor + vista d'Activitat
    ├── QuantAView.swift       # Quant a Mod (versió, autor, llicència, codi font)
    └── SharedComponents.swift # Components reutilitzables, icona de l'app i splash

Endpoints utilitzats

Endpoint Mètode Descripció
/api/v1/instance GET Informació del servidor
/api/v1/admin/accounts GET Llistar comptes
/api/v1/admin/accounts/:id/action POST Suspendre / silenciar compte
/api/v1/accounts/:id/statuses GET Tuts d'un compte (no hi ha endpoint d'admin)
/api/v1/reports POST Crear informe citant tuts d'un compte
/api/v1/admin/accounts/:id/unsuspend POST Restaurar compte suspès
/api/v1/admin/accounts/:id/approve POST Aprovar compte pendent
/api/v1/admin/accounts/:id/reject POST Rebutjar compte pendent
/api/v1/admin/reports GET Llistar informes
/api/v1/admin/reports/:id/resolve POST Marcar informe com a resolt
/api/v1/admin/reports/:id/reopen POST Reobrir informe
/api/v1/admin/reports/:id/assign_to_self POST Assignar informe
/api/v1/admin/domain_blocks GET/POST/DELETE Gestió de dominis bloquejats
/api/v1/admin/domain_allows GET/POST/DELETE Gestió de dominis permesos
/api/v1/admin/ip_blocks GET/POST/DELETE Gestió de IPs bloquejades
/api/v1/admin/measures POST Mètriques del servidor
/api/v1/admin/dimensions POST Dimensions qualitatives (llengües, clients, servidors, etc.)
/api/v1/instance/rules GET Normes del servidor (motius de suspensió)
/api/v1/instance/activity GET Activitat setmanal
/api/v1/announcements GET Anuncis actius del servidor
/api/v1/notifications GET Notificacions de moderació
/api/v1/streaming?stream=user:notification WebSocket Entrada de notificacions en viu

Com compilar

  1. Obre Mod.xcodeproj amb Xcode
  2. Selecciona el teu dispositiu o simulador
  3. Prem ⌘R per compilar i executar
  4. La primera vegada, l'app et demanarà la URL del servidor i el token

Notes

  • La URL del servidor es desa a UserDefaults; el token va al clauer del sistema, fora de les còpies de seguretat (ThisDeviceOnly)
  • Amb Face ID actiu a Configuració → Seguretat, el token es protegeix amb .biometryCurrentSet: és el sistema qui es nega a retornar-lo sense biometria. L'app es bloqueja en obrir-se i en tornar del segon pla
  • Registrar una cara o una empremta noves al dispositiu invalida el token desat i cal tornar-lo a introduir
  • Només s'admeten servidors per https: el token d'administrador no ha de viatjar mai en clar
  • Els paràmetres d'API (local, status, severity, reject_media, etc.) s'envien tal qual els defineix la documentació oficial de Mastodon
  • L'aparença és Automàtic per defecte, i es pot canviar a Clar o Fosc a Configuració
  • Compatible amb iPhone (iOS 26+)

Llicència

AGPL-3.0

Copyright (C) 2026 spla

Aquest programa és programari lliure: el podeu redistribuir i/o modificar sota els termes de la Llicència Pública General Affero de GNU, tal com la publica la Free Software Foundation, ja sigui la versió 3 de la Llicència o (a la vostra elecció) qualsevol versió posterior.

Aquest programa es distribueix amb l'esperança que sigui útil, però SENSE CAP GARANTIA; ni tan sols la garantia implícita de COMERCIALITZACIÓ o APTITUD PER A UN PROPÒSIT DETERMINAT. Consulteu la Llicència Pública General Affero de GNU per a més detalls.

Autor

spla