MrPoulpi Labs
PMMS

Scripts disponibles

EN
Centre de documentation

Permissions et URL

Les ACE pmms.* et command.pmms_*, ce qu’accorde le permissions.cfg livré, comment limiter les URL aux presets ou à Config.allowedUrls, et les points de vigilance relevés dans le code.

But : décider qui peut lancer quoi, et sur quelles entités. Fichiers : pmms/permissions.cfg (chargé par exec @pmms/permissions.cfg) et Config.allowedUrls dans config.lua.

Les permissions

PMMS n’utilise que les ACE de FiveM ; aucun framework n’est consulté. Le serveur vérifie ces permissions à chaque action, et les envoie au client pour adapter le panneau.

ACE Accordée par le pack Ressource d’origine Effet
pmms group.admin group.admin Permission parente : accorde toutes les permissions pmms.* ci-dessous.
pmms.interact builtin.everyone builtin.everyone Utiliser un lecteur non verrouillé : lancer, mettre en pause, arrêter, régler volume, atténuation, portée, vidéo, boucle, file d’attente, copier.
pmms.anyEntity builtin.everyone builtin.everyone Utiliser toute entité dont le modèle est dans Config.models. Sans elle, seules les entités autorisées par l’export client enableEntity ou créées par createMediaPlayer sont utilisables. Les véhicules ne sont pas concernés.
pmms.customUrl builtin.everyone commentée Jouer une URL au lieu d’un preset, limitée à Config.allowedUrls sauf avec pmms.anyUrl. Sans elle : presets uniquement.
pmms.anyUrl builtin.everyone commentée Jouer n’importe quelle URL, sans passer par Config.allowedUrls (nécessite aussi pmms.customUrl).
pmms.manage group.admin group.admin Verrouiller et déverrouiller, contrôler les lecteurs verrouillés, enregistrer ou supprimer les réglages de modèles et d’entités, voir les lecteurs actifs au-delà de maxDiscoveryDistance.

Un lecteur verrouillé (locked) ne peut être contrôlé que par un joueur qui a pmms.manage.

Après un changement d’ACE en cours de partie, lancez /pmms_refresh_perms pour que les clients rechargent leurs permissions.

Ce qu’accorde le pack livré

add_ace group.admin pmms allow
add_ace builtin.everyone pmms.interact allow
add_ace builtin.everyone pmms.anyEntity allow
add_ace builtin.everyone pmms.customUrl allow
add_ace builtin.everyone pmms.anyUrl allow

Avec ce fichier, tout joueur peut jouer n’importe quelle URL sur n’importe quel lecteur non verrouillé. La ressource d’origine laissait pmms.customUrl et pmms.anyUrl désactivées.

Limiter les URL

Presets uniquement : retirez les deux lignes customUrl et anyUrl. Les joueurs ne peuvent plus lancer que les entrées de Config.presets.

Sites autorisés : retirez seulement la ligne anyUrl. Les joueurs peuvent lancer les URL qui correspondent à un motif de Config.allowedUrls (YouTube, youtu.be et Twitch par défaut).

add_ace group.admin pmms allow
add_ace builtin.everyone pmms.interact allow
add_ace builtin.everyone pmms.anyEntity allow
add_ace builtin.everyone pmms.customUrl allow

Rôle intermédiaire : accordez pmms.anyUrl à un groupe précis, par exemple add_ace group.dj pmms.anyUrl allow (group.dj est un exemple de groupe).

Résultat attendu : un joueur sans pmms.anyUrl qui colle une URL hors liste reçoit « You do not have permission to play the specified URL ».

Permissions des commandes

Les commandes sont restreintes : chacune exige command.<nom>. Le fichier livré donne les commandes de base à builtin.everyone et pmms_ctl, pmms_add, pmms_refresh_perms à group.admin ; voir Commandes. Si vous changez Config.commandPrefix ou Config.commandSeparator, renommez ces lignes.

Points de vigilance relevés dans le code

Ces comportements viennent du code exécuté de cette archive ; ils existent aussi dans la ressource d’origine.

  • Contrôle des URL : les règles d’URL, les presets et Config.oneMediaPerPlayer sont vérifiés quand le client demande une lecture. Le message réseau envoyé ensuite, une fois le média chargé, ne revérifie que pmms.interact et le verrouillage. Un client modifié peut donc contourner Config.allowedUrls ; ne comptez pas sur cette liste comme seule barrière sur un serveur exposé.
  • File d’attente : quand un lecteur joue déjà, la demande est ajoutée à sa file sans contrôle immédiat ; les contrôles complets ont lieu quand vient son tour.
  • Option -lock : un joueur qui lance un média peut le démarrer verrouillé sans avoir pmms.manage ; il ne pourra plus le contrôler lui-même.
  • Véhicules : avec Config.allowPlayingFromVehicles = true, tout véhicule proche est un lecteur, indépendamment de Config.models et de pmms.anyEntity.
  • Exports : les exports serveur ne vérifient aucune permission et ne sont pas concernés par Config.oneMediaPerPlayer. Les ressources qui les appellent doivent faire leurs propres contrôles.

Erreurs fréquentes

  • Les administrateurs n’ont pas plus de droits : group.admin n’est attribué à aucun joueur. Ajoutez par exemple add_principal identifier.license:… group.admin.
  • Restriction sans effet : vous avez commenté pmms.anyUrl mais un autre fichier exécuté l’accorde encore à builtin.everyone.
  • Changement d’ACE non pris en compte : lancez /pmms_refresh_perms ou reconnectez le joueur.

Rechercher

Tapez un terme : paramètre, export, erreur…