class NsRestorePackage

La classe NsRestorePackage désigne une archive de restauration, c'est à dire un fichier conteneur empaquettant des élément extraits des sauvegardes contenant des informations particulières pour permettre leur restauration. Les archives de restauration sont générées par le serveur et téléchargeables directement dans les interfaces du logiciel ou par l'intermédiaire de l'interface Web, si celle-ci est activée. Leur cycle de vie est géré par le serveur : pour libérer de l'espace disque elles sont automatiquement effacées au bout d'un délai configuré par l'adiministrateur du serveur reflété par le champ ExpirationDate.

Pour créer des archives de restauration, utilisez la classe NsCreateRestorePackageRequest qui vous permet de spécifier la liste des fichiers à inclure dans l'archive. La création d'une archive de restauration pouvant prendre un temps variable en fonction du volume de données à extraire des sauvegardes, vous pouvez utiliser les champs State, ProgressValue ou la méthode WaitForConstruction pour contrôler l'avancement de leur construction par le serveur.

L'archive peut être envoyée pour restauration à l'utilisateur sous la forme d'une opération Push Restore grace aux méthodes PushToUser et PushToUserByID. Une fois l'objet NsPushRestoreRequest créé, le logiciel essaie d'utiliser le canal serveur-à-client pour déclencher la restauration de manière immédiate, sinon la demande de restauration est déposée dans la file des restaurations à traiter par l'agent client.

Lorsque le format de l'archive est défini à nsRestorePackageFileFormatNSArchive (le format par défaut) les fichiers sont stockés dans l'archive tels qu'ils sont stockés sur le serveur : ils ne sont pas restaurables sans l'intermédiaire de l'assistant de restauration du logiciel. Par ailleurs, les fichiers chiffrés restent chiffrés dans l'archive et sont déchiffrés par l'assistant durant le processus de restauration sur le poste cible (il n'y a ni stockage sur le serveur ni transit de données "en clair").

ID : __int64 readonly

L'identificateur unique de l'archive de restauration sur le serveur de sauvegarde.

CreationDate : VARIANT readonly

La date de création de l'archive de restauration sur le serveur de sauvegarde, au format UTC.

Name : BSTR readonly

Le nom de l'archive de restauration.

RequestorID : __int64 readonly

L'identificateur de l'utilisateur (NsUser) ayant demandé la création de l'archive.

Source : enum NsRestorePackageSource readonly

Le composant du logiciel ayant déclenché la création de l'archive de restauration.

Hash : BSTR readonly

Le hash MD5 de l'archive de restauration, utilisé par les assistants du logiciel pour vérifier l'intégrité de l'archive avant l'extraction des fichiers.

State : enum NsRestorePackageState readonly

Le statut actuel de création de l'archive de restauration.

Format : enum NsRestorePackageFileFormat readonly

Le format de l'archive de restauration.

Options : long readonly

Réservé.

PkgFiles : __int64 readonly

Le nombre de fichiers dans l'archive de restauration.

PkgSize : __int64 readonly

La taille de l'archive de restauration.

ExtractTime : long readonly

Le temps d'extraction, en secondes.

BuildState : enum NsRestorePackageBuildState readonly

L'étape de construction de l'archive de restauration, si State indique que le fichier est en cours de création.

ProgressValue : long readonly

Un nombre entre 0 et 100 indiquant le pourcentage de progression de l'opération.

ExpirationDate : VARIANT readonly

La date, au format UTC, au delà de laquelle l'archive de restauration sera automatiquement supprimée par le serveur de sauvegarde.

ActiveDownloads : long readonly

Le nombre de téléchargement en cours depuis le canal logiciel. Cette valeur n'inclue pas les téléchargements possiblement effectués depuis l'interface Web de restauration, si celle-ci est activée.

TotalDownloads : long readonly

Le nombre total de téléchargements de l'archive de restauration.

VARIANT_BOOL LoadFromID(NsConnection Connection, __int64 RestorePackageID)

Charge en mémoire l'archive de restauration spécifiée par l'identificateur RestorePackageID.

VARIANT_BOOL Cancel(NsConnection Connection)

Annule la construction d'une archive de restauration.

VARIANT_BOOL Delete(NsConnection Connection)

Supprime manuellement une archive de restauration du serveur de sauvegarde.

VARIANT_BOOL Refresh(NsConnection Connection)

Mets à jour les indicateurs d'une archive de restauration déjà chargée.

VARIANT_BOOL WaitForConstruction(NsConnection Connection, long Timeout)

Attend une nombre de secondes défini par le paramètre Timeout que l'archive de restauration soit prête au téléchargement. La fonction renvoit true si l'archive est prête à être téléchargée, false si une erreur est survenue ou si l'archive était toujours en construction une fois le délai d'attente terminé.

VARIANT_BOOL Download(NsConnection Connection, BSTR LocalPath)

Télécharge l'archive de restauration dans le chemin d'accès pointé par LocalPath et renvoit true si l'opération s'est bien déroulée.

BSTR DownloadURL(NsConnection Connection)

Renvoit l'URL de téléchargement de l'archive via l'Interface de restauration Web du logiciel, si celle-ci est activée.

NsPushRestoreRequest PushToUser(NsConnection Connection, NsUser TargetUser, BSTR MessageToDisplay)

Crée une requête Push Restore afin que les documents empaquetés dans l'archive soient restaurés de manière interactive par l'utilisateur TargetUser, avec un message facultatif MessageToDisplay. L'archive de restauration doit être construite et au format nsRestorePackageFileFormatNSArchive.

NsPushRestoreRequest PushToUserByID(NsConnection Connection, __int64 TargetUserID, BSTR MessageToDisplay)

Crée une requête Push Restore afin que les documents empaquetés dans l'archive soient restaurés de manière interactive par l'utilisateur d'identificateur TargetUserID, avec un message facultatif MessageToDisplay. L'archive de restauration doit être construite et au format nsRestorePackageFileFormatNSArchive.

Renvoie tous les fichiers supprimés d'un utilisateur à son propriétaire

Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")

if connection.ConnectToLocalServer then
  set server = CreateObject("NsAPI.NsServer")
  
  const nsSearchScopeSpecificUser = 3

  if server.Load(connection) then
    ' Demande un nom d'utilisateur
    userName = InputBox("Saisissez un nom d'utilisateur (de la forme user@group) :", "Test de l'API UB", "")
    if userName <> "" then
      ' Essayer de charger l'utilisateur
      set targetUser = CreateObject("NsAPI.NsUser")
      if not targetUser.LoadFromUserName(connection, userName) then
        MsgBox "Le nom d'utilisateur saisi n'existe pas sur le serveur."
      else
        ' Chercher tous les fichiers supprimés de l'utilisateur
        set searchEngine = server.SearchEngine
        searchEngine.searchScope = nsSearchScopeSpecificUser
        searchEngine.UserID = targetUser.ID
        set results = searchEngine.SearchForDeletedFiles(connection)
        if results.Count > 0 then
          ' On crée un objet pour créer l'archive
          set packager = CreateObject("NsAPI.NsCreateRestorePackageRequest")
          for each result in results
            ' Ajouter le fichier à l'archive
            packager.AddVersionByID(result.versionID)
          next
          ' Message d'info
          MsgBox results.Count & " élément(s) ont été trouvés et vont être envoyés à " & targetUser.Description
          ' Nommer l'archive pour le debug
          packager.PackageName = "TEST"
          ' Important : assigner l'archive à l'utilisateur destinataire, sinon
          ' elle serait par défaut attribuée à l'utilisateur actif (l'administrateur local)
          ' Le cas échéant l'archive ne pourrait pas être ouverte par l'utilisateur
          ' destinataire car il n'aurait pas de droit de lecture dessus.
          packager.UserID = targetUser.ID
          ' Lancer la création du fichier
          set restorePackage = packager.CreatePackage(connection)
          ' Créé ?
          if restorePackage is nothing then
            MsgBox "Error lors de la création de l'archive de restauration."
          else
            ' Attendre la création de l'archive, maximum 5 minutes...
             if not restorePackage.WaitForConstruction(connection, 5 * 60) then
               MsgBox "Une erreur est survenue durant la construction de l'archive, ou celle-ci prends trop de temps à être générée. Abandon."
             else
               ' L'envoyer à l'utilisateur cible
               set pushRestoreRequest = restorePackage.pushToUser(connection, targetUser, "Voici la liste de vos fichiers à restaurer")
               if pushRestoreRequest is nothing then
                 MsgBox "Impossible d'envoyer les fichiers à l'utilisateur !"
               else
                 MsgBox "Les fichiers ont été envoyés à l'utilisateur avec succès."
               end if
             end if
          end if
        else
          MsgBox "Aucun fichier supprimé à récupérer."
        end if
      end if
    end if
  else
    MsgBox "Impossible de charger les informations serveur."
  end if

  connection.Disconnect
else
  MsgBox "Connexion au serveur local impossible."
end if