znote 1.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.
- znote-1.0.0/LICENSE +21 -0
- znote-1.0.0/PKG-INFO +143 -0
- znote-1.0.0/README.md +114 -0
- znote-1.0.0/setup.cfg +4 -0
- znote-1.0.0/znote/__init__.py +1 -0
- znote-1.0.0/znote/app/display.py +93 -0
- znote-1.0.0/znote/app/input.py +46 -0
- znote-1.0.0/znote/client.py +568 -0
- znote-1.0.0/znote/core/auth.py +71 -0
- znote-1.0.0/znote/core/client/connect.py +52 -0
- znote-1.0.0/znote/core/client/settings.py +142 -0
- znote-1.0.0/znote/core/client/token.py +17 -0
- znote-1.0.0/znote/core/config.py +73 -0
- znote-1.0.0/znote/core/editor.py +132 -0
- znote-1.0.0/znote/core/gen.py +21 -0
- znote-1.0.0/znote/core/pack.py +72 -0
- znote-1.0.0/znote/core/server/note.py +20 -0
- znote-1.0.0/znote/core/server/settings.py +148 -0
- znote-1.0.0/znote/core/workspace.py +67 -0
- znote-1.0.0/znote/main.py +2 -0
- znote-1.0.0/znote/model/models.py +25 -0
- znote-1.0.0/znote/server.py +734 -0
- znote-1.0.0/znote.egg-info/PKG-INFO +143 -0
- znote-1.0.0/znote.egg-info/SOURCES.txt +26 -0
- znote-1.0.0/znote.egg-info/dependency_links.txt +1 -0
- znote-1.0.0/znote.egg-info/entry_points.txt +3 -0
- znote-1.0.0/znote.egg-info/requires.txt +11 -0
- znote-1.0.0/znote.egg-info/top_level.txt +1 -0
znote-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 ZephyrOff
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
znote-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: znote
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Vault de prise de note
|
|
5
|
+
Author:
|
|
6
|
+
License: mit
|
|
7
|
+
Platform: ALL
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Requires-Dist: chardet
|
|
11
|
+
Requires-Dist: pyotp
|
|
12
|
+
Requires-Dist: pycryptodome
|
|
13
|
+
Requires-Dist: zpp_color
|
|
14
|
+
Requires-Dist: zpp_args
|
|
15
|
+
Requires-Dist: zpp_ManagedFile
|
|
16
|
+
Requires-Dist: pony
|
|
17
|
+
Requires-Dist: prompt_toolkit
|
|
18
|
+
Requires-Dist: dill
|
|
19
|
+
Requires-Dist: impmagic
|
|
20
|
+
Requires-Dist: pyyaml
|
|
21
|
+
Dynamic: description
|
|
22
|
+
Dynamic: description-content-type
|
|
23
|
+
Dynamic: keywords
|
|
24
|
+
Dynamic: license
|
|
25
|
+
Dynamic: license-file
|
|
26
|
+
Dynamic: platform
|
|
27
|
+
Dynamic: requires-dist
|
|
28
|
+
Dynamic: summary
|
|
29
|
+
|
|
30
|
+
# znote : Client de prise de notes sécurisé
|
|
31
|
+
|
|
32
|
+
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.
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
## Fonctionnalités
|
|
36
|
+
|
|
37
|
+
- **Sécurité Renforcée** : Chiffrement de bout-en-bout (E2EE) avec une architecture hybride RSA-4096/AES-256.
|
|
38
|
+
- **Signatures Numériques** : Chaque message est signé pour garantir son intégrité et son authenticité.
|
|
39
|
+
- **Gestion Complète des Notes** : Créez, éditez, consultez, listez et supprimez des notes.
|
|
40
|
+
- **Éditeur Intégré** : Un éditeur de texte simple est intégré directement dans le terminal pour une expérience fluide.
|
|
41
|
+
- **Workspaces (Espaces de travail)** : Organisez vos notes dans des espaces de travail distincts.
|
|
42
|
+
- **Synchronisation de Fichiers** : Envoyez (`push`) un fichier local pour créer une note, ou téléchargez (`pull`) une note dans un fichier.
|
|
43
|
+
- **Protection par Mot de Passe** : Protégez l'accès à des notes spécifiques avec un mot de passe.
|
|
44
|
+
- **Recherche** : Retrouvez du contenu rapidement grâce à une fonction de recherche dans toutes vos notes.
|
|
45
|
+
- **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.
|
|
46
|
+
|
|
47
|
+
## Installation
|
|
48
|
+
|
|
49
|
+
Assurez-vous d'avoir Python et `pip` installés. Le projet est disponible sur Pypi.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install zpp_note
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Côté serveur
|
|
56
|
+
|
|
57
|
+
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.
|
|
58
|
+
|
|
59
|
+
### Premier Lancement
|
|
60
|
+
|
|
61
|
+
1. **Initialiser le serveur** : Cette commande vous guidera pour créer le fichier de configuration `config.toml`.
|
|
62
|
+
```bash
|
|
63
|
+
znote_server --init
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
2. **Créer un utilisateur** :
|
|
67
|
+
```bash
|
|
68
|
+
znote_server --create_user --username mon_user --password "mon_mot_de_passe"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
3. **Lancer le serveur** :
|
|
72
|
+
```bash
|
|
73
|
+
znote_server
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Utilisation du Serveur
|
|
77
|
+
|
|
78
|
+
**Lancement du serveur :**
|
|
79
|
+
Pour démarrer le serveur en mode normal, exécutez simplement :
|
|
80
|
+
```bash
|
|
81
|
+
znote_server
|
|
82
|
+
```
|
|
83
|
+
Le serveur tournera en arrière-plan, en attente de connexions.
|
|
84
|
+
|
|
85
|
+
### Options de Lancement du Serveur
|
|
86
|
+
|
|
87
|
+
| Option | Description | Exemple d'utilisation |
|
|
88
|
+
| ------------------- | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
|
89
|
+
| `--init` | Lance un assistant interactif pour configurer le fichier `config.toml` du serveur. | `znote_server --init` |
|
|
90
|
+
| `--config <chemin>` | Spécifie un chemin personnalisé pour le fichier de configuration. | `znote_server --config /etc/znote/server.toml` |
|
|
91
|
+
| `--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"` |
|
|
92
|
+
| `--username <nom>` | Spécifie le nom d'utilisateur pour la création. | `... --username admin` |
|
|
93
|
+
| `--password <mdp>` | Spécifie le mot de passe pour la création. | `... --password "un_mot_de_passe_solide"` |
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
## Côté client
|
|
97
|
+
|
|
98
|
+
Le client est l'interface en ligne de commande pour interagir avec vos notes.
|
|
99
|
+
|
|
100
|
+
### Premier Lancement
|
|
101
|
+
|
|
102
|
+
1. **Initialiser le client** (dans un autre terminal) :
|
|
103
|
+
```bash
|
|
104
|
+
znote --init
|
|
105
|
+
```
|
|
106
|
+
Assurez-vous que les informations du serveur (host, port) correspondent.
|
|
107
|
+
|
|
108
|
+
2. **Connectez-vous** :
|
|
109
|
+
```bash
|
|
110
|
+
znote login
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Options Générales du Client
|
|
114
|
+
|
|
115
|
+
| Option | Description | Exemple d'utilisation |
|
|
116
|
+
| ------------------- | ------------------------------------------------------------------------------ | -------------------------------------------- |
|
|
117
|
+
| `--init` | Lance un assistant interactif pour configurer le `config.toml` du client. | `znote --init` |
|
|
118
|
+
| `--config <chemin>` | Spécifie un chemin personnalisé pour le fichier de configuration. | `znote --config ~/.znote_perso.toml` |
|
|
119
|
+
| `--info` | Affiche les informations de connexion de base (host, port) sans se connecter. | `znote --info` |
|
|
120
|
+
|
|
121
|
+
### Commandes du Client
|
|
122
|
+
|
|
123
|
+
La syntaxe générale est `znote <commande> [arguments...]`.
|
|
124
|
+
|
|
125
|
+
| Commande | Description | Exemple d'utilisation |
|
|
126
|
+
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
|
127
|
+
| `login` | Ouvre une session sécurisée avec le serveur. Demande le nom d'utilisateur et le mot de passe. | `znote login` |
|
|
128
|
+
| `logout` | Met fin à la session actuelle et invalide le token. | `znote logout` |
|
|
129
|
+
| `status` | Affiche l'état de la connexion, le workspace actif et le nombre de notes. | `znote status` |
|
|
130
|
+
| `list` | Liste toutes les notes dans le workspace actuel. | `znote list` |
|
|
131
|
+
| `add <nom_note>` | Crée une nouvelle note et ouvre l'éditeur de texte intégré. | `znote add "Ma première note"` |
|
|
132
|
+
| `edit <nom_note>` | Ouvre une note existante dans l'éditeur de texte. | `znote edit "Ma première note"` |
|
|
133
|
+
| `view <nom_note>` | Affiche le contenu d'une note directement dans le terminal. | `znote view "Courses à faire"` |
|
|
134
|
+
| `remove <nom_note>` | Supprime une note de manière permanente. | `znote remove "Vieille note"` |
|
|
135
|
+
| `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"` |
|
|
136
|
+
| `find "<pattern>"` | Recherche un mot ou une phrase dans le contenu de toutes les notes du workspace. | `znote find "réunion importante"` |
|
|
137
|
+
| `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` |
|
|
138
|
+
| `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` |
|
|
139
|
+
| `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"` |
|
|
140
|
+
| `workspace` | Affiche la liste des workspaces disponibles et indique celui qui est actif. | `znote workspace` |
|
|
141
|
+
| `workspace <nom_ws>` | Change le workspace actif. | `znote workspace "Projets"` |
|
|
142
|
+
| `workspace <nom_ws> --create` | Crée un nouveau workspace. | `znote workspace "Archives" --create` |
|
|
143
|
+
| `workspace <nom_ws> --remove` | Supprime un workspace. | `znote workspace "Archives" --remove` |
|
znote-1.0.0/README.md
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# znote : Client de prise de notes sécurisé
|
|
2
|
+
|
|
3
|
+
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.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Fonctionnalités
|
|
7
|
+
|
|
8
|
+
- **Sécurité Renforcée** : Chiffrement de bout-en-bout (E2EE) avec une architecture hybride RSA-4096/AES-256.
|
|
9
|
+
- **Signatures Numériques** : Chaque message est signé pour garantir son intégrité et son authenticité.
|
|
10
|
+
- **Gestion Complète des Notes** : Créez, éditez, consultez, listez et supprimez des notes.
|
|
11
|
+
- **Éditeur Intégré** : Un éditeur de texte simple est intégré directement dans le terminal pour une expérience fluide.
|
|
12
|
+
- **Workspaces (Espaces de travail)** : Organisez vos notes dans des espaces de travail distincts.
|
|
13
|
+
- **Synchronisation de Fichiers** : Envoyez (`push`) un fichier local pour créer une note, ou téléchargez (`pull`) une note dans un fichier.
|
|
14
|
+
- **Protection par Mot de Passe** : Protégez l'accès à des notes spécifiques avec un mot de passe.
|
|
15
|
+
- **Recherche** : Retrouvez du contenu rapidement grâce à une fonction de recherche dans toutes vos notes.
|
|
16
|
+
- **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.
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
Assurez-vous d'avoir Python et `pip` installés. Le projet est disponible sur Pypi.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
pip install zpp_note
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Côté serveur
|
|
27
|
+
|
|
28
|
+
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.
|
|
29
|
+
|
|
30
|
+
### Premier Lancement
|
|
31
|
+
|
|
32
|
+
1. **Initialiser le serveur** : Cette commande vous guidera pour créer le fichier de configuration `config.toml`.
|
|
33
|
+
```bash
|
|
34
|
+
znote_server --init
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
2. **Créer un utilisateur** :
|
|
38
|
+
```bash
|
|
39
|
+
znote_server --create_user --username mon_user --password "mon_mot_de_passe"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
3. **Lancer le serveur** :
|
|
43
|
+
```bash
|
|
44
|
+
znote_server
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Utilisation du Serveur
|
|
48
|
+
|
|
49
|
+
**Lancement du serveur :**
|
|
50
|
+
Pour démarrer le serveur en mode normal, exécutez simplement :
|
|
51
|
+
```bash
|
|
52
|
+
znote_server
|
|
53
|
+
```
|
|
54
|
+
Le serveur tournera en arrière-plan, en attente de connexions.
|
|
55
|
+
|
|
56
|
+
### Options de Lancement du Serveur
|
|
57
|
+
|
|
58
|
+
| Option | Description | Exemple d'utilisation |
|
|
59
|
+
| ------------------- | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
|
60
|
+
| `--init` | Lance un assistant interactif pour configurer le fichier `config.toml` du serveur. | `znote_server --init` |
|
|
61
|
+
| `--config <chemin>` | Spécifie un chemin personnalisé pour le fichier de configuration. | `znote_server --config /etc/znote/server.toml` |
|
|
62
|
+
| `--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"` |
|
|
63
|
+
| `--username <nom>` | Spécifie le nom d'utilisateur pour la création. | `... --username admin` |
|
|
64
|
+
| `--password <mdp>` | Spécifie le mot de passe pour la création. | `... --password "un_mot_de_passe_solide"` |
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
## Côté client
|
|
68
|
+
|
|
69
|
+
Le client est l'interface en ligne de commande pour interagir avec vos notes.
|
|
70
|
+
|
|
71
|
+
### Premier Lancement
|
|
72
|
+
|
|
73
|
+
1. **Initialiser le client** (dans un autre terminal) :
|
|
74
|
+
```bash
|
|
75
|
+
znote --init
|
|
76
|
+
```
|
|
77
|
+
Assurez-vous que les informations du serveur (host, port) correspondent.
|
|
78
|
+
|
|
79
|
+
2. **Connectez-vous** :
|
|
80
|
+
```bash
|
|
81
|
+
znote login
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Options Générales du Client
|
|
85
|
+
|
|
86
|
+
| Option | Description | Exemple d'utilisation |
|
|
87
|
+
| ------------------- | ------------------------------------------------------------------------------ | -------------------------------------------- |
|
|
88
|
+
| `--init` | Lance un assistant interactif pour configurer le `config.toml` du client. | `znote --init` |
|
|
89
|
+
| `--config <chemin>` | Spécifie un chemin personnalisé pour le fichier de configuration. | `znote --config ~/.znote_perso.toml` |
|
|
90
|
+
| `--info` | Affiche les informations de connexion de base (host, port) sans se connecter. | `znote --info` |
|
|
91
|
+
|
|
92
|
+
### Commandes du Client
|
|
93
|
+
|
|
94
|
+
La syntaxe générale est `znote <commande> [arguments...]`.
|
|
95
|
+
|
|
96
|
+
| Commande | Description | Exemple d'utilisation |
|
|
97
|
+
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
|
98
|
+
| `login` | Ouvre une session sécurisée avec le serveur. Demande le nom d'utilisateur et le mot de passe. | `znote login` |
|
|
99
|
+
| `logout` | Met fin à la session actuelle et invalide le token. | `znote logout` |
|
|
100
|
+
| `status` | Affiche l'état de la connexion, le workspace actif et le nombre de notes. | `znote status` |
|
|
101
|
+
| `list` | Liste toutes les notes dans le workspace actuel. | `znote list` |
|
|
102
|
+
| `add <nom_note>` | Crée une nouvelle note et ouvre l'éditeur de texte intégré. | `znote add "Ma première note"` |
|
|
103
|
+
| `edit <nom_note>` | Ouvre une note existante dans l'éditeur de texte. | `znote edit "Ma première note"` |
|
|
104
|
+
| `view <nom_note>` | Affiche le contenu d'une note directement dans le terminal. | `znote view "Courses à faire"` |
|
|
105
|
+
| `remove <nom_note>` | Supprime une note de manière permanente. | `znote remove "Vieille note"` |
|
|
106
|
+
| `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"` |
|
|
107
|
+
| `find "<pattern>"` | Recherche un mot ou une phrase dans le contenu de toutes les notes du workspace. | `znote find "réunion importante"` |
|
|
108
|
+
| `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` |
|
|
109
|
+
| `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` |
|
|
110
|
+
| `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"` |
|
|
111
|
+
| `workspace` | Affiche la liste des workspaces disponibles et indique celui qui est actif. | `znote workspace` |
|
|
112
|
+
| `workspace <nom_ws>` | Change le workspace actif. | `znote workspace "Projets"` |
|
|
113
|
+
| `workspace <nom_ws> --create` | Crée un nouveau workspace. | `znote workspace "Archives" --create` |
|
|
114
|
+
| `workspace <nom_ws> --remove` | Supprime un workspace. | `znote workspace "Archives" --remove` |
|
znote-1.0.0/setup.cfg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .main import *
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import impmagic
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
color_config = {'cyan': 'cyan', 'green': 'green', 'dark_gray': 'dark_gray', 'light_gray': 'light_gray', 'yellow': 'yellow', 'red': 'red', 'light_red': 'light_red', 'orange_1': 'orange_1', 'magenta': 'magenta'}
|
|
5
|
+
#SETTINGS TRUECOLOR
|
|
6
|
+
#color_config = {'cyan': '26,128,162', 'green': 'green', 'dark_gray': 'dark_gray', 'light_gray': 'light_gray', 'yellow': 'light_goldenrod_2b', 'red': 'red', 'light_red': 'light_red', 'orange_1': 'red', 'magenta': 'magenta'}
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@impmagic.loader(
|
|
10
|
+
{'module': 'zpp_color', 'submodule': ['fg', 'attr']}
|
|
11
|
+
)
|
|
12
|
+
def print_nxs(message, color=None, nojump=False):
|
|
13
|
+
if color==None:
|
|
14
|
+
color = color_config['cyan']
|
|
15
|
+
|
|
16
|
+
if nojump:
|
|
17
|
+
print(f"{fg(color)}{message}{attr(0)}", end="")
|
|
18
|
+
else:
|
|
19
|
+
print(f"{fg(color)}{message}{attr(0)}")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@impmagic.loader(
|
|
23
|
+
{'module': '__main__'},
|
|
24
|
+
{'module': 'zpp_color', 'submodule': ['fg', 'attr']},
|
|
25
|
+
{'module': 'datetime', 'submodule': ['datetime']}
|
|
26
|
+
)
|
|
27
|
+
def logs(message, lvl='info', component="core", nodate=False):
|
|
28
|
+
if __main__.settings.verbose:
|
|
29
|
+
if lvl=='logs':
|
|
30
|
+
color = color_config['light_gray']
|
|
31
|
+
elif lvl=='info':
|
|
32
|
+
color = color_config['cyan']
|
|
33
|
+
elif lvl=='warning':
|
|
34
|
+
color = color_config['yellow']
|
|
35
|
+
elif lvl=='error':
|
|
36
|
+
color = color_config['red']
|
|
37
|
+
elif lvl=='critical':
|
|
38
|
+
color = color_config['light_red']
|
|
39
|
+
elif lvl=='success':
|
|
40
|
+
color = color_config['green']
|
|
41
|
+
|
|
42
|
+
print_date = ""
|
|
43
|
+
if not nodate:
|
|
44
|
+
date = datetime.now().strftime("%Y/%m/%d - %H:%M:%S.%f")
|
|
45
|
+
print_date = f"{fg(color_config['dark_gray'])}[{attr(0)}{fg(color_config['magenta'])}{date}{attr(0)}{fg(color_config['dark_gray'])}] - {attr(0)}"
|
|
46
|
+
|
|
47
|
+
print_component = f"{fg(color_config['dark_gray'])}[{attr(0)}{fg(color_config['yellow'])}{component.upper()}{attr(0)}{fg(color_config['dark_gray'])}] - {attr(0)}"
|
|
48
|
+
|
|
49
|
+
print(f"{print_date}{print_component}{fg(color)}{message}{attr(0)}")
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@impmagic.loader(
|
|
53
|
+
{'module': 'zpp_color', 'submodule': ['fg', 'attr']},
|
|
54
|
+
{'module': 'datetime', 'submodule': ['datetime']}
|
|
55
|
+
)
|
|
56
|
+
def notify(message, lvl='info'):
|
|
57
|
+
if lvl=='logs':
|
|
58
|
+
color = color_config['light_gray']
|
|
59
|
+
elif lvl=='info':
|
|
60
|
+
color = color_config['cyan']
|
|
61
|
+
elif lvl=='warning':
|
|
62
|
+
color = color_config['yellow']
|
|
63
|
+
elif lvl=='error':
|
|
64
|
+
color = color_config['red']
|
|
65
|
+
elif lvl=='critical':
|
|
66
|
+
color = color_config['light_red']
|
|
67
|
+
elif lvl=='success':
|
|
68
|
+
color = color_config['green']
|
|
69
|
+
|
|
70
|
+
print(f"{fg(color)}{message}{attr(0)}")
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def SaveCursor():
|
|
74
|
+
sys.stdout.write("\033[s")
|
|
75
|
+
sys.stdout.flush()
|
|
76
|
+
|
|
77
|
+
def RestoreCursor():
|
|
78
|
+
sys.stdout.write("\033[u")
|
|
79
|
+
sys.stdout.flush()
|
|
80
|
+
|
|
81
|
+
def SaveScreen():
|
|
82
|
+
SaveCursor()
|
|
83
|
+
sys.stdout.write("\033[?47h")
|
|
84
|
+
sys.stdout.flush()
|
|
85
|
+
|
|
86
|
+
def RestoreScreen():
|
|
87
|
+
sys.stdout.write("\033[?47l")
|
|
88
|
+
sys.stdout.flush()
|
|
89
|
+
RestoreCursor()
|
|
90
|
+
|
|
91
|
+
def CleanScreen():
|
|
92
|
+
sys.stdout.write("\033[2J") # Effacer l'écran
|
|
93
|
+
sys.stdout.flush()
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
if sys.platform == 'win32':
|
|
3
|
+
from msvcrt import getch
|
|
4
|
+
|
|
5
|
+
else: # macOS and Linux
|
|
6
|
+
import tty, termios
|
|
7
|
+
def getch():
|
|
8
|
+
fd = sys.stdin.fileno()
|
|
9
|
+
old_settings = termios.tcgetattr(fd)
|
|
10
|
+
try:
|
|
11
|
+
tty.setraw(sys.stdin.fileno())
|
|
12
|
+
ch = sys.stdin.read(1)
|
|
13
|
+
finally:
|
|
14
|
+
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
|
|
15
|
+
return ch
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def getpass(prompt='Password: ', mask='*'):
|
|
19
|
+
if not isinstance(prompt, str):
|
|
20
|
+
raise TypeError('prompt argument must be a str, not %s' % (type(prompt).__name__))
|
|
21
|
+
if not isinstance(mask, str):
|
|
22
|
+
raise TypeError('mask argument must be a zero- or one-character str, not %s' % (type(prompt).__name__))
|
|
23
|
+
if len(mask) > 1:
|
|
24
|
+
raise ValueError('mask argument must be a zero- or one-character str')
|
|
25
|
+
|
|
26
|
+
enteredPassword = []
|
|
27
|
+
sys.stdout.write(prompt)
|
|
28
|
+
sys.stdout.flush()
|
|
29
|
+
while True:
|
|
30
|
+
key = ord(getch())
|
|
31
|
+
if key == 13: # Enter key pressed.
|
|
32
|
+
sys.stdout.write('\n')
|
|
33
|
+
return ''.join(enteredPassword)
|
|
34
|
+
elif key in (8, 127): # Backspace/Del key erases previous output.
|
|
35
|
+
if len(enteredPassword) > 0:
|
|
36
|
+
sys.stdout.write('\b \b')
|
|
37
|
+
sys.stdout.flush()
|
|
38
|
+
enteredPassword = enteredPassword[:-1]
|
|
39
|
+
elif 0 <= key <= 31:
|
|
40
|
+
#For non printable character
|
|
41
|
+
pass
|
|
42
|
+
else:
|
|
43
|
+
char = chr(key)
|
|
44
|
+
sys.stdout.write(mask)
|
|
45
|
+
sys.stdout.flush()
|
|
46
|
+
enteredPassword.append(char)
|