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 :
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 HTTPident. Si non renseigné, hérité deglobal.ident.token(string) : Jeton utilisé dans l’en-tête HTTPtoken. Si non renseigné, hérité deglobal.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 chaquebase_pathsavec son remote par défaut. -
localRel(string, optionnel) : Chemin relatif local au sein debase_paths. Si vide, écrit à la racine de chaquebase_paths. -
Retour :
-
true, nilen 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 lesbase_paths. -
remote(string, optionnel) : Chemin distant cible. Si vide, construit automatiquement viamakeRemoteRoot(local)ou par défaut sur chaquebase_paths. -
Retour :
-
true, nilen 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 champnamede la config).filesync.type: Type du module ("filesync").