znote 1.6.1__tar.gz → 2.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. znote-2.0.0/PKG-INFO +184 -0
  2. znote-2.0.0/changelog.md +67 -0
  3. znote-2.0.0/nexus.toml +63 -0
  4. znote-2.0.0/pyproject.toml +24 -0
  5. {znote-1.6.1 → znote-2.0.0}/znote/client.py +787 -884
  6. znote-2.0.0/znote/core/auth.py +173 -0
  7. znote-2.0.0/znote/core/client/connect.py +19 -0
  8. {znote-1.6.1 → znote-2.0.0}/znote/core/client/fetch.py +53 -83
  9. znote-2.0.0/znote/core/client/metafile.py +13 -0
  10. {znote-1.6.1 → znote-2.0.0}/znote/core/client/settings.py +16 -8
  11. {znote-1.6.1 → znote-2.0.0}/znote/core/client/token.py +12 -2
  12. {znote-1.6.1 → znote-2.0.0}/znote/core/config.py +24 -16
  13. znote-2.0.0/znote/core/crypto.py +91 -0
  14. {znote-1.6.1 → znote-2.0.0}/znote/core/editor.py +139 -131
  15. znote-2.0.0/znote/core/gen.py +8 -0
  16. znote-2.0.0/znote/core/net.py +48 -0
  17. znote-2.0.0/znote/core/pack.py +112 -0
  18. {znote-1.6.1 → znote-2.0.0}/znote/core/server/settings.py +25 -11
  19. znote-2.0.0/znote/core/structure.py +52 -0
  20. znote-2.0.0/znote/core/workspace.py +78 -0
  21. znote-2.0.0/znote/server.py +1025 -0
  22. znote-1.6.1/PKG-INFO +0 -193
  23. znote-1.6.1/setup.cfg +0 -4
  24. znote-1.6.1/znote/core/auth.py +0 -72
  25. znote-1.6.1/znote/core/client/connect.py +0 -52
  26. znote-1.6.1/znote/core/client/metafile.py +0 -12
  27. znote-1.6.1/znote/core/gen.py +0 -21
  28. znote-1.6.1/znote/core/pack.py +0 -72
  29. znote-1.6.1/znote/core/structure.py +0 -20
  30. znote-1.6.1/znote/core/workspace.py +0 -67
  31. znote-1.6.1/znote/server.py +0 -974
  32. znote-1.6.1/znote.egg-info/PKG-INFO +0 -193
  33. znote-1.6.1/znote.egg-info/SOURCES.txt +0 -29
  34. znote-1.6.1/znote.egg-info/dependency_links.txt +0 -1
  35. znote-1.6.1/znote.egg-info/entry_points.txt +0 -3
  36. znote-1.6.1/znote.egg-info/requires.txt +0 -12
  37. znote-1.6.1/znote.egg-info/top_level.txt +0 -1
  38. {znote-1.6.1 → znote-2.0.0}/LICENSE +0 -0
  39. {znote-1.6.1 → znote-2.0.0}/README.md +0 -0
  40. {znote-1.6.1 → znote-2.0.0}/znote/__init__.py +0 -0
  41. {znote-1.6.1 → znote-2.0.0}/znote/app/display.py +0 -0
  42. {znote-1.6.1 → znote-2.0.0}/znote/app/input.py +0 -0
  43. {znote-1.6.1 → znote-2.0.0}/znote/core/server/note.py +0 -0
  44. {znote-1.6.1 → znote-2.0.0}/znote/main.py +0 -0
  45. {znote-1.6.1 → znote-2.0.0}/znote/model/models.py +0 -0
znote-2.0.0/PKG-INFO ADDED
@@ -0,0 +1,184 @@
1
+ Metadata-Version: 2.1
2
+ Name: znote
3
+ Version: 2.0.0
4
+ Summary: Vault de prise de note
5
+ Author: ZephyrOff
6
+ License: mit
7
+ Platform: ALL
8
+ Requires-Python: <=3.12
9
+ Requires-Dist: pyotp
10
+ Requires-Dist: pycryptodome
11
+ Requires-Dist: zpp_color
12
+ Requires-Dist: zpp_args
13
+ Requires-Dist: zpp_ManagedFile
14
+ Requires-Dist: prompt_toolkit
15
+ Requires-Dist: impmagic
16
+ Requires-Dist: pyyaml
17
+ Requires-Dist: sqlalchemy
18
+ Requires-Dist: argon2-cffi
19
+ Requires-Dist: msgpack
20
+ Description-Content-Type: text/markdown
21
+
22
+ # znote : Client de prise de notes sécurisé
23
+
24
+ znote est une application de prise de notes en ligne de commande fonctionnant sur un modèle client-serveur. L'accent est mis sur la sécurité, avec un chiffrement de bout-en-bout des communications et des données, garantissant que seul l'utilisateur peut accéder au contenu de ses notes.
25
+
26
+
27
+ ## Fonctionnalités
28
+
29
+ - **Sécurité Renforcée** : Chiffrement de bout-en-bout (E2EE) avec une architecture hybride RSA-4096/AES-256.
30
+ - **Signatures Numériques** : Chaque message est signé pour garantir son intégrité et son authenticité.
31
+ - **Gestion Complète des Notes** : Créez, éditez, consultez, listez et supprimez des notes.
32
+ - **Éditeur Intégré** : Un éditeur de texte simple est intégré directement dans le terminal pour une expérience fluide.
33
+ - **Workspaces (Espaces de travail)** : Organisez vos notes dans des espaces de travail distincts.
34
+ - **Synchronisation de Fichiers** : Envoyez (`push`) un fichier local pour créer une note, ou téléchargez (`pull`) une note dans un fichier.
35
+ - **Channels de Diffusion** : Partagez et synchronisez des fichiers sur plusieurs postes via des "channels".
36
+ - **Protection par Mot de Passe** : Protégez l'accès à des notes spécifiques avec un mot de passe.
37
+ - **Recherche** : Retrouvez du contenu rapidement grâce à une fonction de recherche dans toutes vos notes.
38
+ - **Stockage en base** : Pour l'instant les notes sont stockées en clair dans la base. A voir pour rajouter le support du chiffrement côté serveur.
39
+
40
+ ## Installation
41
+
42
+ Assurez-vous d'avoir Python et `pip` installés. Le projet est disponible sur Pypi.
43
+
44
+ ```bash
45
+ pip install zpp_note
46
+ ```
47
+
48
+ ## Côté serveur
49
+
50
+ Le serveur est le cœur de l'application. Il gère les comptes utilisateurs, stocke les données chiffrées et répond aux requêtes des clients.
51
+
52
+ ### Premier Lancement
53
+
54
+ 1. **Initialiser le serveur** : Cette commande vous guidera pour créer le fichier de configuration `config.toml`.
55
+ ```bash
56
+ znote_server --init
57
+ ```
58
+
59
+ 2. **Créer un utilisateur** :
60
+ ```bash
61
+ znote_server --create_user --username mon_user --password "mon_mot_de_passe"
62
+ ```
63
+
64
+ 3. **Lancer le serveur** :
65
+ ```bash
66
+ znote_server
67
+ ```
68
+
69
+ ### Utilisation du Serveur
70
+
71
+ **Lancement du serveur :**
72
+ Pour démarrer le serveur en mode normal, exécutez simplement :
73
+ ```bash
74
+ znote_server
75
+ ```
76
+ Le serveur tournera en arrière-plan, en attente de connexions.
77
+
78
+ ### Options de Lancement du Serveur
79
+
80
+ | Option | Description | Exemple d'utilisation |
81
+ | ------------------- | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
82
+ | `--init` | Lance un assistant interactif pour configurer le fichier `config.toml` du serveur. | `znote_server --init` |
83
+ | `--config <chemin>` | Spécifie un chemin personnalisé pour le fichier de configuration. | `znote_server --config /etc/znote/server.toml` |
84
+ | `--create_user` | Un drapeau pour activer la création d'un nouvel utilisateur. Doit être utilisé avec `username` et `password`. | `znote_server --create_user --username admin --password "secret"` |
85
+ | `--username <nom>` | Spécifie le nom d'utilisateur pour la création. | `... --username admin` |
86
+ | `--password <mdp>` | Spécifie le mot de passe pour la création. | `... --password "un_mot_de_passe_solide"` |
87
+ | `config <config_key> <config_value>` | Afficher ou modifier la configuration. | `znote_server config client.host 127.0.0.1` |
88
+
89
+ ### Détail du fichier de config
90
+
91
+ ```ini
92
+ server:
93
+ verbose: true #Afficher les logs
94
+ host: 127.0.0.1 #Ip d'écoute
95
+ port: 40017 #Port d'écoute
96
+ key_size: 2048 #Taille de la clé RSA
97
+ key_otp: JFSWY3DPEHPK3PXP #Clé OTP pour le démarrage
98
+ data_dir: #Chemin vers la base SQLite
99
+ working_dir: #Emplacement des fichiers de l'application
100
+ ```
101
+
102
+ ## Côté client
103
+
104
+ Le client est l'interface en ligne de commande pour interagir avec vos notes.
105
+
106
+ ### Premier Lancement
107
+
108
+ 1. **Initialiser le client** (dans un autre terminal) :
109
+ ```bash
110
+ znote --init
111
+ ```
112
+ Assurez-vous que les informations du serveur (host, port) correspondent.
113
+
114
+ 2. **Connectez-vous** :
115
+ ```bash
116
+ znote login
117
+ ```
118
+
119
+ ### Options Générales du Client
120
+
121
+ | Option | Description | Exemple d'utilisation |
122
+ | ------------------- | ------------------------------------------------------------------------------ | -------------------------------------------- |
123
+ | `--init` | Lance un assistant interactif pour configurer le `config.toml` du client. | `znote --init` |
124
+ | `--config <chemin>` | Spécifie un chemin personnalisé pour le fichier de configuration. | `znote --config ~/.znote_perso.toml` |
125
+ | `--info` | Affiche les informations de connexion de base (host, port) sans se connecter. | `znote --info` |
126
+
127
+ ### Commandes du Client
128
+
129
+ La syntaxe générale est `znote <commande> [arguments...]`.
130
+
131
+ | Commande | Description | Exemple d'utilisation |
132
+ | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
133
+ | `login` | Ouvre une session sécurisée avec le serveur. Demande le nom d'utilisateur et le mot de passe. | `znote login` |
134
+ | `logout` | Met fin à la session actuelle et invalide le token. | `znote logout` |
135
+ | `status` | Affiche l'état de la connexion, le workspace actif et le nombre de notes. | `znote status` |
136
+ | `list` | Liste toutes les notes dans le workspace actuel. | `znote list` |
137
+ | `add <nom_note>` | Crée une nouvelle note et ouvre l'éditeur de texte intégré. | `znote add "Ma première note"` |
138
+ | `edit <nom_note>` | Ouvre une note existante dans l'éditeur de texte. | `znote edit "Ma première note"` |
139
+ | `view <nom_note>` | Affiche le contenu d'une note directement dans le terminal. | `znote view "Courses à faire"` |
140
+ | `remove <nom_note>` | Supprime une note de manière permanente. | `znote remove "Vieille note"` |
141
+ | `info <nom_note>` | Affiche les métadonnées d'une note (date de création/modification, créateur, etc.). | `znote info "Ma première note"` |
142
+ | `find "<pattern>"` | Recherche un mot ou une phrase dans le contenu de toutes les notes du workspace. | `znote find "réunion importante"` |
143
+ | `protect <nom_note>` | Définit un mot de passe pour une note spécifique. L'accès à la note nécessitera ce mot de passe. | `znote protect` |
144
+ | `pull <nom_note> [fichier]` | Télécharge le contenu d'une note et le sauvegarde dans un fichier local. Si le nom de fichier n'est pas donné, il est déduit du titre. | `znote pull "Rapport" rapport.txt` |
145
+ | `push <fichier> [nom_note]` | Envoie le contenu d'un fichier local pour créer une nouvelle note. Si le nom de la note n'est pas donné, il est déduit du nom de fichier. | `znote push rapport_final.md "Rapport Final"` |
146
+ | `workspace` | Affiche la liste des workspaces disponibles et indique celui qui est actif. | `znote workspace` |
147
+ | `workspace <nom_ws>` | Change le workspace actif. | `znote workspace "Projets"` |
148
+ | `workspace <nom_ws> --create` | Crée un nouveau workspace. | `znote workspace "Archives" --create` |
149
+ | `workspace <nom_ws> --remove` | Supprime un workspace. | `znote workspace "Archives" --remove` |
150
+ | `config <config_key> <config_value>` | Afficher ou modifier la configuration. | `znote config client.host 127.0.0.1` |
151
+
152
+
153
+ ### Commandes des Channels
154
+
155
+ La fonctionnalité de "channel" permet de synchroniser des fichiers entre plusieurs postes.
156
+
157
+ | Commande | Description | Exemple d’utilisation |
158
+ | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
159
+ | `channel` | Liste tous les channels disponibles sur le serveur. | `znote channel` |
160
+ | `channel <nom> --detail` | Affiche les informations détaillées d'un channel (hash, date de modification...). | `znote channel mon-canal --detail` |
161
+ | `channel <nom> --tree` | Affiche l'arborescence et la liste des fichiers contenus dans le channel. | `znote channel mon-canal --tree` |
162
+ | `publish <channel> <fichier>` | Publie un fichier sur un channel. Si le fichier existe déjà, il est mis à jour. | `znote publish mon-canal ./rapport.pdf` |
163
+ | `publish <channel> <fichier>` | Publie un fichier sur un channel. Si le fichier existe déjà, il est mis à jour. | `znote publish mon-canal ./rapport.pdf` |
164
+ | `publish <channel> --exclude <file_path` | Spécifier les fichiers à exclure du publish. | `znote publish mon-canal --exclude test.db` |
165
+ | `unpublish <channel>` | Supprime un channel. | `znote unpublish mon-canal` |
166
+ | `fetch <channel> (<path>)` | Récupère (télécharge) tous les fichiers d'un channel dans le répertoire local. | `znote fetch mon-canal` |
167
+ | `fetch <channel> --force` | Force le téléchargement et l'écrasement des fichiers locaux même s'ils existent déjà. | `znote fetch mon-canal --force` |
168
+ | `fetch <channel> --purge` | Supprime les fichiers locaux qui ne sont pas présent dans le channel. | `znote fetch mon-canal --purge` |
169
+ | `fetch <channel> --file <file_path>` | Récupérer un fichier spécifique dans le channel. | `znote fetch mon-canal --file mon-fichier` |
170
+ | `diff <channel>` | Compare le répertoire local avec le contenu du channel et affiche les différences (fichiers nouveaux, modifiés ou à supprimer). | `znote diff mon-canal` |
171
+
172
+
173
+ ### Détail du fichier de config
174
+
175
+ ```ini
176
+ client:
177
+ verbose: true #Afficher les logs
178
+ host: 127.0.0.1 #Ip du serveur
179
+ port: 40017 #Port du serveur
180
+ key_size: 2048 #Taille de la clé RSA
181
+ key_otp: JFSWY3DPEHPK3PXP #Clé OTP pour le démarrage
182
+ working_dir: #Emplacement des fichiers de l'application
183
+ exclude_dir: #Nom des répertoires à exclure
184
+ ```
@@ -0,0 +1,67 @@
1
+ # Changelog
2
+
3
+ ## [1.0.1] - 2025-07-04
4
+ - Correction du logs obligatoire avec verbose False
5
+
6
+ ## [1.1.0] - 2025-07-09
7
+ - Ajout de la notion de channel
8
+
9
+ ## [1.2.0] - 2025-07-11
10
+ - Ajout de la notion working_dir dans la config
11
+
12
+ ## [1.2.1] - 2025-07-11
13
+ - Correction de f-string
14
+
15
+ ## [1.2.2] - 2025-07-11
16
+ - f-string again
17
+
18
+ ## [1.2.3] - 2025-07-11
19
+ - Correction du working_dir
20
+
21
+ ## [1.2.4] - 2025-07-23
22
+ - Ajout de la d�pendance cryptography
23
+
24
+ ## [1.2.5] - 2025-07-23
25
+ - Correction de variable dans le client
26
+
27
+ ## [1.2.6] - 2025-07-23
28
+ - Correcteur du mauvais placement des variables dans le fichier de config du client
29
+
30
+ ## [1.2.7] - 2025-07-23
31
+ - Mauvaise compr�hension des init dans la config
32
+
33
+ ## [1.2.8] - 2025-07-23
34
+ - Correction de la commande publish pour prendre en compte un fichier seul
35
+
36
+ ## [1.3.0] - 2025-07-23
37
+ - Ajout d'un EOF dans la communication pour garantir la r�ception de tout le message
38
+
39
+ ## [1.4.0] - 2025-07-23
40
+ - Optimisation des performances
41
+ - Am�lioration du receive
42
+ - Ajout de la commande unpublish
43
+
44
+ ## [1.4.1] - 2025-07-23
45
+ - Ajout description unpublish
46
+
47
+ ## [1.5.0] - 2025-07-23
48
+ - Ajout de la gestion du fichier de config en cli
49
+
50
+ ## [1.5.1] - 2025-07-25
51
+ - Correction de chemin sur Linux
52
+
53
+ ## [1.6.0] - 2025-09-09
54
+ - Migration vers SQLAlchemy
55
+ - Ajout de la fonctionnalit� pour fetch un seul fichier
56
+ - Ajout d'une option exclusion de fichier dans le publish
57
+ - Ajout d'une option d'exclusion de r�pertoire dans la config
58
+ - Optimisation des transferts et contr�les dans le publish
59
+ - Correction de certains modes de notifications
60
+
61
+ ## [1.6.1] - 2025-09-09
62
+ - Correction des requirements
63
+
64
+ ## [2.0.0] - 2026-10-29
65
+ - Refonte du système de communication
66
+ - Optimisation du stockage
67
+ - Correction de certains bugs
znote-2.0.0/nexus.toml ADDED
@@ -0,0 +1,63 @@
1
+ [project]
2
+ name = "znote"
3
+ version = "2.0.0"
4
+ description = "Vault de prise de note"
5
+ mainfile = "main.py"
6
+ requires-python = "<=3.12"
7
+
8
+ [project.metadata]
9
+ authors = ["ZephyrOff"]
10
+ maintainers = []
11
+ readme = "README.md"
12
+ license = "mit"
13
+ license_file = "LICENSE"
14
+ keywords = []
15
+ classifiers = []
16
+ copyright = ""
17
+ changelog = "changelog.md"
18
+
19
+ [project.urls]
20
+ changelog = ""
21
+ homepage = ""
22
+ documentation = ""
23
+
24
+ [project.dependencies]
25
+ pyotp = "N.A"
26
+ pycryptodome = "N.A"
27
+ zpp_color = "N.A"
28
+ zpp_args = "N.A"
29
+ zpp_ManagedFile = "N.A"
30
+ prompt_toolkit = "N.A"
31
+ impmagic = "N.A"
32
+ pyyaml = "N.A"
33
+ sqlalchemy = "N.A"
34
+ argon2-cffi = "N.A"
35
+ msgpack = "N.A"
36
+
37
+ [project.dependencies.windows]
38
+
39
+ [project.dependencies.linux]
40
+
41
+ [project.build]
42
+ packages = ["pyotp", "pycryptodome", "zpp_color", "zpp_args", "zpp_ManagedFile", "sqlalchemy", "prompt_toolkit", "impmagic", "pyyaml", "cryptography", "argon2-cffi", "msgpack"]
43
+ includes = ["app", "core", "model"]
44
+ excludes = []
45
+ include_files = []
46
+ optimize = 0
47
+ no_compress = false
48
+ GUI = false
49
+ icon = ""
50
+
51
+ [project.wheel]
52
+ platforms = "ALL"
53
+
54
+ [project.wheel.entry_points]
55
+ console_scripts = ['znote_server = znote:run_server', 'znote = znote:run_client']
56
+
57
+ [venv.runner]
58
+ env_dir = ".venv/runner"
59
+ env_name = "runner"
60
+ env_exe = ".venv/runner/Scripts/python.exe"
61
+ bin_path = ".venv/runner/Scripts"
62
+ version = "N.A"
63
+ default = true
@@ -0,0 +1,24 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "znote"
7
+ version = "2.0.0"
8
+ description = "Vault de prise de note"
9
+ readme = "README.md"
10
+ requires-python = "<=3.12"
11
+ license = { text = "mit" }
12
+ dependencies = ["pyotp", "pycryptodome", "zpp_color", "zpp_args", "zpp_ManagedFile", "prompt_toolkit", "impmagic", "pyyaml", "sqlalchemy", "argon2-cffi", "msgpack"]
13
+ authors = [{ name = "ZephyrOff" }]
14
+
15
+ [project.scripts]
16
+ "znote_server" = "znote:run_server"
17
+ "znote" = "znote:run_client"
18
+
19
+ [tool.setuptools.packages.find]
20
+ include = ["znote", "znote.*"]
21
+ namespaces = true
22
+
23
+ [tool.setuptools.package-data]
24
+ "znote" = ["*", "**/*"]