Skip to content

Module filesync

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

Import

Pour importer en Lua :

local filesync = require("filesync")

Configuration YAML

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 :

iot:
  modules:
    filesync:
      - name: filesync          # Nom logique de l'instance (ex. "sync1")
        api_base: "https://api.alemca.io/data/files"  # URL de base de l'API
        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: 45000       # (Optionnel) Timeout HTTP en millisecondes (défaut : 30000)
  • 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/config (Teltonika) 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).

API Lua

Liste des fonctions

Fonction Signature Lua Rôle Retour (succès) Retour (échec)
pull bool, err = filesync.pull([remote[, localRel]]) Télécharge des fichiers distants. true, nil nil, "msg"
push bool, err = filesync.push([local[, remote]]) Téléverse des fichiers locaux. true, nil nil, "msg"
Champs filesync.name, filesync.type Métadonnées du module.

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").