Aller au contenu

Module filesync

Le module filesync permet de synchroniser des fichiers et répertoires entre l’agent Alemca et l’API de fichiers distante.

Pour l’importer en Lua, utilisez :

local filesync = require("filesync")

Configuration

Ce module est automatiquement chargé lors du démarrage de l’agent et n’exige pas d’inclusion explicite dans le fichier de configuration, si ce n’est pour préciser ses propres paramètres. Voici les clés YAML reconnues :

modules:
  filesync:
    - name: filesync          # Nom logique de l’instance (ex. "sync1")
      api_base:               # URL de base de l’API (défaut : https://api.alemca.io/data/files)
        "https://api.alemca.io/data/files"
      base_paths:             # Liste de répertoires locaux à synchroniser
        - "/etc/alemca/configs"
        - "/etc/alemca/scripts"
      blacklist:              # (Optionnel) Patterns à exclure
        - "*.tmp"
        - "cache/"
      whitelist:              # (Optionnel) Patterns à inclure
        - "*.lua"
      timeout_ms:             # (Optionnel) Timeout HTTP en millisecondes (défaut : 30000)
        45000
  • name (string, requis) : Nom de l’instance.
  • ident (string) : Identifiant utilisé dans l’en-tête HTTP ident. Si non renseigné, hérité de global.ident.
  • token (string) : Jeton utilisé dans l’en-tête HTTP token. Si non renseigné, hérité de global.token.
  • api_base (string) : URL de l’API de fichiers (défaut : https://api.alemca.io/data/files).
  • base_paths (table[string]) : Répertoires locaux racines à synchroniser. Défauts :

  • /etc/alemca/configs

  • /etc/alemca/scripts
  • /etc/alemca/commands
  • /etc/alemca/scripts_defaults Sous Windows (\), utilise ~/alemca/....
  • blacklist (table[string]) : Patterns de fichiers à exclure du push.
  • whitelist (table[string]) : Patterns de fichiers à inclure (prioritaire sur la blacklist).
  • timeout_ms (integer) : Timeout du client HTTP en millisecondes (défaut : 30000).

Fonctions Lua

filesync.pull([remote], [localRel])

Télécharge du(s) répertoire(s) distant(s) vers le système de fichiers local.

  • Paramètres :

  • remote (string, optionnel) : Chemin distant encodé (ex. "edge_rootfs/etc/alemca/configs/"). Si vide, parcourt chaque base_paths avec son remote par défaut.

  • localRel (string, optionnel) : Chemin relatif local au sein de base_paths. Si vide, écrit à la racine de chaque base_paths.

  • Retour :

  • true, nil en cas de succès.

  • nil, "<message d’erreur>" en cas d’échec.
local filesync = require("filesync")

-- 1) Pull de tous les dossiers définis
local ok, err = filesync.pull()
assert(ok, err)

-- 2) Pull d’un sous-dossier spécifique
local ok2, err2 = filesync.pull("edge_rootfs/etc/alemca/configs/", "")
assert(ok2, err2)

-- 3) Pull d’un chemin local relatif
local ok3, err3 = filesync.pull("edge_rootfs/etc/alemca/scripts/", "scripts")
assert(ok3, err3)

filesync.push([local], [remote])

Téléverse du(s) fichier(s) local(aux) vers l’API distante.

  • Paramètres :

  • local (string, optionnel) : Chemin local à téléverser. Si vide, parcourt tous les base_paths.

  • remote (string, optionnel) : Chemin distant cible. Si vide, construit automatiquement via makeRemoteRoot(local) ou par défaut sur chaque base_paths.

  • Retour :

  • true, nil en cas de succès.

  • nil, "<message d’erreur>" en cas d’échec.
local filesync = require("filesync")

-- 1) Push complet de tous les dossiers
local ok, err = filesync.push()
assert(ok, err)

-- 2) Push d’un dossier local donné
local ok2, err2 = filesync.push("scripts", "")
assert(ok2, err2)

-- 3) Push vers un chemin distant explicite
local ok3, err3 = filesync.push("commands", "edge_rootfs/commands/")
assert(ok3, err3)

Champs Lua associés

  • filesync.name : Nom de l’instance (identique au champ name de la config).
  • filesync.type : Type du module ("filesync").