145 lines
3.7 KiB
Markdown
145 lines
3.7 KiB
Markdown
# Implementation de la fonctionnalite Backup
|
|
|
|
**Date** : 2026-01-17 12:18:36
|
|
**Version** : 0.2.0
|
|
**Auteur** : Claude Code
|
|
|
|
---
|
|
|
|
## Resume
|
|
|
|
Ajout d'une fonctionnalite de sauvegarde (backup) permettant d'exporter les donnees de l'extension ClipCoffre vers un dossier configurable. L'export inclut les parametres, l'historique clipboard, et les secrets (toujours obfusques).
|
|
|
|
---
|
|
|
|
## Fichiers crees
|
|
|
|
### `src/services/backupService.js`
|
|
|
|
Service responsable de l'export des donnees. Principales methodes :
|
|
|
|
- `isConfigured()` : Verifie si le chemin de backup est configure et valide
|
|
- `backup()` : Execute l'export complet des donnees
|
|
- `_formatTimestamp()` : Genere un timestamp au format `YYYY-MM-DD_HH-mm-ss`
|
|
- `_ensureBackupDir()` : Cree le dossier de backup avec les bonnes permissions
|
|
|
|
---
|
|
|
|
## Fichiers modifies
|
|
|
|
### Schema GSettings
|
|
**Fichier** : `schemas/org.gnome.shell.extensions.secretclipboard.gschema.xml`
|
|
|
|
Ajout de la cle `backup_path` :
|
|
```xml
|
|
<key name="backup_path" type="s">
|
|
<default>''</default>
|
|
<summary>Backup directory path</summary>
|
|
</key>
|
|
```
|
|
|
|
### Settings Wrapper
|
|
**Fichier** : `src/storage/settings.js`
|
|
|
|
Ajout du getter/setter pour `backupPath` :
|
|
```javascript
|
|
get backupPath() {
|
|
return this._settings.get_string('backup_path');
|
|
}
|
|
|
|
set backupPath(value) {
|
|
this._settings.set_string('backup_path', value);
|
|
}
|
|
```
|
|
|
|
### Popup Settings (popup3)
|
|
**Fichier** : `src/ui/popupSettings.js`
|
|
|
|
- Ajout du champ de saisie pour configurer le chemin de backup
|
|
- Gestion de la valeur temporaire `_tempBackupPath` pour annulation
|
|
- Sauvegarde dans GSettings via le bouton OK
|
|
|
|
### Headers UI (Secrets et Clipboard)
|
|
**Fichiers** :
|
|
- `src/ui/popupSecrets.js`
|
|
- `src/ui/popupClipboard.js`
|
|
|
|
Ajout de l'icone backup (`document-save-symbolic`) dans les headers, a cote de l'icone settings. Le callback `onBackupClick` declenche l'export.
|
|
|
|
### Panel Button et Popup Main
|
|
**Fichiers** :
|
|
- `src/ui/panelButton.js`
|
|
- `src/ui/popupMain.js`
|
|
|
|
- Import du `BackupService`
|
|
- Ajout de la methode `_doBackup()` qui :
|
|
1. Verifie si le backup est configure
|
|
2. Execute l'export
|
|
3. Affiche une notification avec le resultat
|
|
|
|
### Styles CSS
|
|
**Fichier** : `stylesheet.css`
|
|
|
|
```css
|
|
.clipcoffre-backup-btn {
|
|
color: rgba(255, 255, 255, 0.9);
|
|
}
|
|
|
|
.clipcoffre-backup-btn:hover {
|
|
background-color: rgba(60, 180, 100, 0.3);
|
|
}
|
|
|
|
.clipcoffre-backup-path-input {
|
|
min-width: 280px;
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Format d'export
|
|
|
|
Lors d'un backup, un dossier est cree avec le format :
|
|
```
|
|
<backup_path>/YYYY-MM-DD_HH-mm-ss/
|
|
```
|
|
|
|
Contenu du dossier :
|
|
|
|
| Fichier | Description |
|
|
|---------|-------------|
|
|
| `settings.json` | Parametres GSettings (history_size, show_passwords, click_mode, backup_path) |
|
|
| `clipboard.json` | Favoris et historique du clipboard |
|
|
| `secrets.json` | Secrets obfusques (jamais en clair) |
|
|
| `manifest.json` | Metadata (uuid, version, timestamp) |
|
|
|
|
### Permissions
|
|
- Dossiers : `0700`
|
|
- Fichiers : `0600`
|
|
|
|
---
|
|
|
|
## Utilisation
|
|
|
|
1. Ouvrir les parametres (icone engrenage)
|
|
2. Configurer le "Chemin de backup" (ex: `/home/user/backup/clipcoffre`)
|
|
3. Cliquer sur OK pour sauvegarder
|
|
4. Cliquer sur l'icone de sauvegarde (disquette) dans le header
|
|
5. Une notification confirme "Backup OK" ou affiche l'erreur
|
|
|
|
### Messages d'erreur possibles
|
|
- "Chemin de backup non configure" : Le champ est vide
|
|
- "Chemin de backup invalide" : Le dossier n'existe pas
|
|
- "Configurer le chemin de backup dans les parametres" : Bouton backup clique sans configuration
|
|
|
|
---
|
|
|
|
## Tests manuels
|
|
|
|
Voir `MANUAL_TESTS.md` section "Backup" (points 11-15) pour la procedure de test complete.
|
|
|
|
---
|
|
|
|
## Securite
|
|
|
|
Les mots de passe exportes dans `secrets.json` restent obfusques (XOR + base64). Ils ne sont **jamais** exportes en clair. La cle d'obfuscation (`key.json`) n'est pas incluse dans le backup.
|