Skip to content

About

🐳 Go HTTP gateway and dispatcher to parse and validate Skript code across isolated Docker parser containers.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

skmc-parser

skmc-parser est un service en Go conçu pour parser et valider du code Skript sans avoir besoin d'exécuter un serveur Minecraft complet. Il fait office de passerelle HTTP et de répartiteur vers un ensemble de conteneurs Docker exécutant le moteur d'analyse.

Pourquoi ce projet ?

Tester la syntaxe d'un script Skript nécessite habituellement de démarrer un serveur Spigot ou Paper avec le plugin Skript installé, de recharger le script via la console et de vérifier les erreurs dans les logs. Ce processus est lourd et peu adapté à une intégration continue ou à des outils en ligne (bots Discord, éditeurs web).

Ce service fournit une API HTTP simple : il reçoit le script en texte brut, choisit un conteneur d'analyse disponible via l'API Docker, lui transmet le code et retourne le résultat (erreurs et avertissements).

Fonctionnement

  • Gestion des conteneurs : le service se connecte au socket Docker local (/var/run/docker.sock) pour dĂ©tecter les conteneurs actifs disposant du label skriptmc.parser.engine-version et reliĂ©s au rĂ©seau Docker skmc-parser.
  • RĂ©partition des requĂȘtes : les requĂȘtes d'analyse reçues sur /parse sont envoyĂ©es de maniĂšre alĂ©atoire sur l'un des conteneurs sains dĂ©tectĂ©s.
  • Limitation de dĂ©bit (rate limiting) : un middleware s'appuie sur une instance Redis pour limiter le nombre de requĂȘtes par adresse IP et protĂ©ger le service contre les abus.
  • TĂąches pĂ©riodiques : un scheduler interne met Ă  jour la liste des conteneurs valides Ă  intervalle rĂ©gulier.

API

GET /parsers

Retourne la liste des conteneurs de parsing dĂ©tectĂ©s et prĂȘts Ă  traiter des requĂȘtes.

Exemple de réponse :

{
  "lastUpdated": "2026-10-30T14:00:00Z",
  "parsers": [
    {
      "name": "/skmc-engine-1",
      "version": "1.0.0",
      "state": "running",
      "status": "Up 2 hours"
    }
  ]
}

POST /parse

Envoie un script Ă  analyser.

  • Header : Content-Type: text/plain
  • Body : Le code Skript brut.

Exemple de requĂȘte :

curl -X POST http://localhost:8000/parse \
  -H "Content-Type: text/plain" \
  --data-binary @mon_script.sk

Le service ajoute le header X-Parser indiquant quel conteneur a traité la demande et renvoie la réponse JSON fournie par le moteur.

Configuration

La configuration par défaut se trouve dans config.yaml. Pour le développement local, il est possible de créer un fichier config.local.yaml (ignoré par Git) ou de surcharger les valeurs via des variables d'environnement préfixées par SKMC_.

Clé YAML Variable d'environnement Défaut Description
http.listen SKMC_HTTP_LISTEN 0.0.0.0 Adresse d'écoute HTTP
http.port SKMC_HTTP_PORT 8000 Port d'écoute du serveur
rateLimiter.limit SKMC_RATELIMITER_LIMIT 1000-H Quota autorisĂ© (ex. 1000 requĂȘtes par heure)
rateLimiter.prefix SKMC_RATELIMITER_PREFIX limiter_skmcparser Préfixe des clés de quota dans Redis
redis.address SKMC_REDIS_ADDRESS 127.0.0.1:6379 Adresse du serveur Redis
redis.username SKMC_REDIS_USERNAME "" Utilisateur Redis (si requis)
redis.password SKMC_REDIS_PASSWORD "" Mot de passe Redis
redis.db SKMC_REDIS_DB 0 Base de données Redis

Lancer le projet

Avec Docker

docker run -d \
  --name skmc-parser \
  --restart unless-stopped \
  --publish 8000:8000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --env SKMC_REDIS_ADDRESS="redis:6379" \
  --env SKMC_REDIS_PASSWORD="secretpassword" \
  ghcr.io/romitou/skmc-parser:latest

En local

Prérequis : Go 1.25+ installé et une instance Redis accessible.

# Télécharger les dépendances
go mod download

# Lancer le serveur
go run main.go

Licence

Projet sous licence MIT.

About

🐳 Go HTTP gateway and dispatcher to parse and validate Skript code across isolated Docker parser containers.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Packages

Used by

Contributors

Languages