ic-web/config.lua
Bjoern Flessing a2ce3a69fd IC-Webhosting: Domaenen, Webseiten und Postfaecher ueber Anmeldungen
Ein IC-Hostinganbieter im Spiel. Er vergibt Domaenen, richtet je Domaene einen
Zugang ein, und die Inhaber pflegen darauf ihre Webseite.

Die gesamte Verwaltung haengt an einer Anmeldung, nicht an Job oder
Serverrechten. Ein Zugang ist zugleich ein Postfach: wer sich anmeldet,
bekommt das Postfach dieser Adresse. Mehrere Personen koennen denselben Zugang
benutzen und dasselbe Postfach gleichzeitig offen haben - ein Firmenpostfach
gehoert der Firma, nicht einer Person.

Drei Ebenen:
  superadmin  vergibt Domaenen und setzt je Domaene einen Admin ein
  admin       pflegt die Seiten seiner Domaene und legt dort Zugaenge an
  editor      pflegt nur die Seiten

Seiteninhalte sind kein HTML, sondern typisierte Bloecke. Die Seiten werden im
NUI des IC-Computers angezeigt, also im selben Kontext wie dieser selbst - wer
dort Markup einschleusen kann, kann auch dessen Callbacks aufrufen. Ein
Blockmodell schliesst das konstruktiv aus, statt es filtern zu muessen.

Passwoerter liegen gesalzen und gehasht in der Datenbank, gerechnet wird in der
Datenbank. Fuenf Fehlversuche je Benutzername sperren den Namen kurzzeitig.

Enthaelt README.md mit Einrichtung und Anbindung an den IC-Computer sowie
ANLEITUNG.md fuer die Bedienung im Spiel.
2026-08-09 11:50:53 +00:00

127 lines
6.1 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ─────────────────────────────────────────────────────────────────────────────
-- ic-web Konfiguration
--
-- IC-Webhosting: der Anbieter vergibt Domaenen, jede Domaene hat eigene
-- Zugaenge, und jeder Zugang ist zugleich ein Postfach. Die Webseiten sind im
-- pc-live-Browser unter ic://domaene erreichbar.
--
-- Die Domaene selbst wird in ic-mail angelegt (ic_mail_realms). Eine Webseite
-- ist ein zweiter Dienst darauf, keine eigene Domaenenliste.
-- ─────────────────────────────────────────────────────────────────────────────
Config = {}
Config.Debug = false
-- ── Der Anbieter ─────────────────────────────────────────────────────────────
-- Der erste Zugang wird beim ersten Start angelegt. Ohne ihn kaeme niemand in
-- die Verwaltung hinein.
--
-- Das Startpasswort steht hier im Klartext: es ist genau einmal noetig und
-- sollte nach der ersten Anmeldung geaendert werden (in der Verwaltung oder in
-- der Serverkonsole mit /webpasswd).
Config.MainAdmin = {
username = 'admin@liveinvader.ls',
providerName = 'Liveinvader Hosting',
initialPassword = 'liveinvader',
}
-- ── Anmeldung ────────────────────────────────────────────────────────────────
Config.Login = {
minPasswordLength = 6,
-- Bremse gegen Durchprobieren: so viele Fehlversuche je Benutzername
-- innerhalb des Zeitfensters, danach ist der Name kurz gesperrt.
maxAttempts = 5,
windowSeconds = 300,
-- Anmeldung laeuft nach dieser Zeit ohne Aktivitaet ab. 0 = nie.
idleSeconds = 3600,
}
-- Zugaenge je Domaene (Admins und Editoren zusammen).
Config.MaxAccountsPerDomain = 15
-- Wie viele fremde Postfaecher jemand im Mailclient gleichzeitig offen haben
-- darf ("Postfach hinzufuegen"). Das eigene und dienstlich zugewiesene zaehlen
-- nicht mit.
Config.MaxOpenMailboxes = 10
-- ── Wer darf Domaenen anlegen ────────────────────────────────────────────────
-- Im Normalfall nur der Anbieter (superadmin) ueber die Verwaltung.
--
-- Die Selbstanmeldung ueber den ESX-Job ist der aeltere Weg und bleibt als
-- Schalter erhalten. Eingeschaltet duerfen Behoerden und Unternehmen sich ohne
-- Anmeldung selbst eine Domaene holen; der Zugang dazu wird dabei automatisch
-- erzeugt und einmalig angezeigt.
Config.SelfRegistration = {
enabled = false,
allowedJobs = {}, -- leer = alle ausser blockedJobs
minGrade = 3,
blockedJobs = { unemployed = true },
maxDomainsPerJob = 2,
}
-- Rueckwaertsname: der uebrige Code liest weiterhin Config.Registration.
Config.Registration = Config.SelfRegistration
-- ── Domaenennamen ────────────────────────────────────────────────────────────
Config.Domain = {
-- Erlaubte Endungen. Ohne Begrenzung entstehen schnell .com-Domaenen,
-- die in eine GTA-Welt nicht passen.
allowedTlds = { 'ls', 'sa', 'gov', 'org', 'net' },
minLength = 3,
maxLength = 30,
-- Namen, die sich niemand per Selbstanmeldung greifen darf. Der Anbieter
-- vergibt sie sehr wohl lspd.ls soll ja beim LSPD landen.
--
-- Domaenen des Mailsystems (mail.ls und andere System-/Buergerdomaenen)
-- sind unabhaengig davon gesperrt, das prueft D.EnsureRealm fuer alle.
reserved = {
'mail', 'www', 'admin', 'police', 'lspd', 'lsmd', 'ambulance',
'gov', 'government', 'doj', 'system', 'ic', 'pc',
},
}
-- ── Inhalte ──────────────────────────────────────────────────────────────────
Config.MaxPagesPerSite = 8
Config.MaxBlocksPerPage = 60
-- Erlaubte Bildhosts.
--
-- Bilder werden extern verlinkt FiveM-NUI kann keine Dateien hochladen.
-- Ohne diese Liste laesst sich jede beliebige Adresse einbetten. Die
-- Meldefunktion faengt den Rest, greift aber erst nachtraeglich.
--
-- Subdomains sind eingeschlossen: 'imgur.com' erlaubt auch 'i.imgur.com'.
Config.ImageHosts = {
'imgur.com',
'discordapp.net',
'discordapp.com',
'discord.com',
'githubusercontent.com',
}
-- ── Themes ───────────────────────────────────────────────────────────────────
-- Reine CSS-Vorlagen im Browser von pc-live. Der Name wird nur durchgereicht.
Config.Themes = { 'clean', 'dark', 'gov', 'business' }
Config.DefaultTheme = 'clean'
-- ── Serverseitige Notbremse ──────────────────────────────────────────────────
-- Kein IC-Weg, sondern der Zugriff des Serverbetreibers: Konsolenbefehle zum
-- Zuruecksetzen eines Passworts und zum Sperren einer Seite, falls im Spiel
-- niemand mehr an die Verwaltung kommt.
Config.Console = {
-- 'esx' | 'ace' | 'either'
mode = 'either',
esxGroups = { admin = true, superadmin = true },
acePermission = 'ic_web.admin',
}
-- Alter Name, wird an einigen Stellen noch gelesen.
Config.Admin = Config.Console
-- ── Logging ──────────────────────────────────────────────────────────────────
-- Ausschliesslich ueber fmsdk, wie im Projekt ueblich.
Config.Logging = {
dataset = 'ic_web',
actionPrefix = 'ic_web.',
}