La classe NsBackupAssociation permet d'associer une sauvegarde (NsBackup) à un utilisateur (NsUser).
Plusieurs utilisateurs peuvent posséder la même sauvegarde tant qu'un seul utilisateur possède des droits d'écriture. L'attribution d'une sauvegarde à plusieurs utilisateurs possédant des droits d'écriture peut provoquer l'écrasement des données et la perte de fichiers.
L'identificateur unique de l'association sauvegarde/utilisateur. Les constantes suivantes peuvent-être utilisées :
La sauvegarde (NsBackup) concernée par l'association.
L'utilisateur (NsUser) concerné par l'association.
Une variable booléenne indiquant si l'utilisateur peut exécuter la sauvegarde.
Une variable booléenne indiquant si l'utilisateur peut restaurer des données depuis la sauvegarde.
Une variable booléenne indiquant si l'utilisateur peut effacer ou supprimer la sauvegarde.
Charge l'association attribuant la sauvegarde BackupID à l'utilisateur UserID.
Créée ou met à jour l'association décrite par l'objet.
Supprime l'association décrite par l'objet.
Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")
' Renvoit l'ID d'une sauvegarde à partir de son nom
Function FindBackupByName(backups, name)
FindBackupByName = -1
for each backup in backups
if StrComp(backup.Name, name, vbTextCompare) = 0 then
FindBackupByName = backup.ID
Exit Function
end if
next
End Function
' Renvoit l'ID d'un utilisateur à partir de sa description / nom complet
Function FindUserByName(groups, connection, name)
FindUserByName = -1
for each group in groups
set users = group.Users(connection)
for each user in users
if StrComp(user.description, name, vbTextCompare) = 0 then
FindUserByName = user.ID
Exit Function
end if
next
next
End Function
if connection.ConnectToLocalServer then
set server = CreateObject("NsAPI.NsServer")
if server.Load(connection) then
' Demander un nom de sauvegarde
backupName = InputBox("Saisissez le nom d'une sauvegarde sur le serveur (ex : Ma sauvegarde) : ", "Test de l'API UB", "")
if backupName <> "" then
' Demander un nom d'utilisateur
userName = InputBox("Saisissez le nom d'un utilisateur sur le serveur (ex : Jacques Labarre) : ", "Test de l'API UB", "")
if userName <> "" then
' Transformer le nom de la sauvegarde en son identifiant numérique unique
backupID = FindBackupByName(server.AllBackups(connection), backupName)
' Est ce qu'on a bien trouvé une sauvegarde valide ?
if sysutils.CompareInt64(backupID, -1) = 0 then
MsgBox "Erreur : la sauvegarde """ & backupName & """ n'a pu être trouvée sur le serveur."
else
' Transformer le nom de l'utilisateur en son identifiant numérique unique
userID = FindUserByName(server.UserGroups(connection), connection, userName)
' Est-ce qu'on a bien trouvé un utilisateur valide ?
if sysutils.CompareInt64(userID, -1) = 0 then
MsgBox "Erreur : l'utilisateur """ & userName & """ n'a pu être trouvé sur le serveur."
else
' Si on est ici, la sauvegarde et l'utilisateur sont tous les deux valides
set association = CreateObject("NsAPI.NsBackupAssociation")
' Charger l'association entre utilisateur et sauvegarde. Si la fonction
' échoue, l'association n'existe pas.
if association.Load(connection, userID, backupID) then
MsgBox "L'association entre l'utilisateur """ & userName & """ et la sauvegarde """ & backupName & """ existe déjà."
else
if MsgBox("L'association n'existe pas, souhaitez-vous la créer ?", vbQuestion + vbYesNo + vbApplicationModal, "Test de l'API UB") = vbYes then
association.ID = -1 ' Constante nécessaire à la création de l'objet
association.UserID = userID
association.BackupID = backupID
association.CanBackup = false ' Pour la démo, on ne permet que de restaurer des données
association.CanRestore = true
association.CanClearOrRemove = false
' Créer l'association
if association.Update(connection) then
MsgBox "L'association entre l'utilisateur """ & userName & """ et la sauvegarde """ & backupName & """ a été créée."
' Terminé !
else
MsgBox "Erreur inconnue lors de l'association entre l'utilisateur """ & userName & """ et la sauvegarde """ & backupName & """."
end if
end if
end if
end if
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