mirror of
https://codeberg.org/spla/Mod.git
synced 2026-10-19 18:12:18 +00:00
Mod és una aplicació iOS en català per a moderar servidors Mastodon, de codi obert.
- Swift 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
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. |
||
| Mod | ||
| Mod.xcodeproj | ||
| .gitignore | ||
| LICENSE | ||
| README.md | ||
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) iwrite:reports(crear informes des de la vista de tuts)
Com obtenir el token
- Obre el teu servidor Mastodon al navegador
- Ves a Preferències → Aplicacions → Nova aplicació
- Afegeix els scopes
admin:read,admin:write,read:notifications,read:statusesiwrite:reports(si ja tenies l'aplicació creada, cal regenerar el token: els scopes nous no s'apliquen al token ja emès) - 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
- Obre
Mod.xcodeprojamb Xcode - Selecciona el teu dispositiu o simulador
- Prem ⌘R per compilar i executar
- 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 IDactiu 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àticper defecte, i es pot canviar aClaroFosca Configuració - Compatible amb iPhone (iOS 26+)
Llicència
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.