Apply Vit advices about .env and few stuff
This commit is contained in:
parent
dea707babf
commit
02ae104da2
|
@ -0,0 +1,4 @@
|
||||||
|
DUNIKEY="" # Chemin de la clé privé Ḡ1 de l'émetteur, au format PubSec
|
||||||
|
#POD="https://g1.data.duniter.fr" # Adresse du pod Cesium ou Gchange à utiliser
|
||||||
|
POD="https://g1.data.le-sou.org" # Adresse du pod Cesium de secours
|
||||||
|
#POD="https://data.gchange.fr" # Adresse du pod ḠChange à utiliser
|
|
@ -1,3 +1,2 @@
|
||||||
.env
|
.env
|
||||||
userEnv.py
|
|
||||||
__pycache__
|
__pycache__
|
||||||
|
|
64
dialog.py
64
dialog.py
|
@ -1,18 +1,24 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import argparse, os, sys
|
import argparse, sys, os
|
||||||
|
from os.path import join, dirname
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
if not os.path.isfile("userEnv.py"):
|
from dotenv import load_dotenv
|
||||||
copyfile("userEnv.py.template", "userEnv.py")
|
|
||||||
try:
|
|
||||||
from userEnv import dunikey, pod
|
|
||||||
if dunikey == "":
|
|
||||||
raise ValueError("Dunikey is empty")
|
|
||||||
except:
|
|
||||||
sys.stderr.write("Please fill the path to your private key (PubSec), and a Cesium ES address in userEnv.py\n")
|
|
||||||
sys.exit(1)
|
|
||||||
from lib.cesiumMessaging import ReadFromCesium, SendToCesium, DeleteFromCesium
|
from lib.cesiumMessaging import ReadFromCesium, SendToCesium, DeleteFromCesium
|
||||||
|
|
||||||
|
# Get varriables environment
|
||||||
|
if not os.path.isfile('.env'):
|
||||||
|
copyfile(".env.template", ".env")
|
||||||
|
dotenv_path = join(dirname(__file__), '.env')
|
||||||
|
load_dotenv(dotenv_path)
|
||||||
|
|
||||||
|
dunikey = os.getenv('DUNIKEY')
|
||||||
|
pod = os.getenv('POD')
|
||||||
|
if not dunikey or not pod:
|
||||||
|
sys.stderr.write("Please fill the path of your private key (PubSec), and a Cesium ES address in .env file\n")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
# Parse arguments
|
# Parse arguments
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
|
|
||||||
|
@ -22,9 +28,9 @@ send_cmd = subparsers.add_parser('send', help="Envoi d'un message")
|
||||||
delete_cmd = subparsers.add_parser('delete', help="Supression d'un message")
|
delete_cmd = subparsers.add_parser('delete', help="Supression d'un message")
|
||||||
|
|
||||||
if len(sys.argv) <= 1 or not sys.argv[1] in ('read','send','delete'):
|
if len(sys.argv) <= 1 or not sys.argv[1] in ('read','send','delete'):
|
||||||
sys.stderr.write("Veuillez indiquer une commande valide:\n\n")
|
sys.stderr.write("Veuillez indiquer une commande valide:\n\n")
|
||||||
parser.print_help()
|
parser.print_help()
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
read_cmd.add_argument('-n', '--number',type=int, default=3, help="Affiche les NUMBER derniers messages")
|
read_cmd.add_argument('-n', '--number',type=int, default=3, help="Affiche les NUMBER derniers messages")
|
||||||
read_cmd.add_argument('-o', '--outbox', action='store_true', help="Lit les messages envoyés")
|
read_cmd.add_argument('-o', '--outbox', action='store_true', help="Lit les messages envoyés")
|
||||||
|
@ -43,23 +49,23 @@ args = parser.parse_args()
|
||||||
|
|
||||||
# Build cesiumMessaging class
|
# Build cesiumMessaging class
|
||||||
if sys.argv[1] == "read":
|
if sys.argv[1] == "read":
|
||||||
messages = ReadFromCesium(dunikey, pod)
|
messages = ReadFromCesium(dunikey, pod)
|
||||||
messages.read(args.number, args.outbox)
|
messages.read(args.number, args.outbox)
|
||||||
elif sys.argv[1] == "send":
|
elif sys.argv[1] == "send":
|
||||||
if args.fichier:
|
if args.fichier:
|
||||||
with open(args.fichier, 'r') as f:
|
with open(args.fichier, 'r') as f:
|
||||||
titre = f.readline()
|
titre = f.readline()
|
||||||
msg = ''.join(f.read().splitlines(True)[0:])
|
msg = ''.join(f.read().splitlines(True)[0:])
|
||||||
elif args.titre and args.message:
|
elif args.titre and args.message:
|
||||||
titre = args.titre
|
titre = args.titre
|
||||||
msg = args.message
|
msg = args.message
|
||||||
else:
|
else:
|
||||||
titre = input("Indiquez le titre du message: ")
|
titre = input("Indiquez le titre du message: ")
|
||||||
msg = input("Indiquez le contenu du message: ")
|
msg = input("Indiquez le contenu du message: ")
|
||||||
messages = SendToCesium(dunikey, pod, args.destinataire, args.outbox)
|
messages = SendToCesium(dunikey, pod, args.destinataire, args.outbox)
|
||||||
messages.send(titre, msg)
|
messages.send(titre, msg)
|
||||||
|
|
||||||
elif sys.argv[1] == "delete":
|
elif sys.argv[1] == "delete":
|
||||||
messages = DeleteFromCesium(dunikey, pod, args.outbox)
|
messages = DeleteFromCesium(dunikey, pod, args.outbox)
|
||||||
messages.delete(args.id)
|
messages.delete(args.id)
|
||||||
|
|
||||||
|
|
|
@ -6,13 +6,14 @@ from hashlib import sha256
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from termcolor import colored
|
from termcolor import colored
|
||||||
|
|
||||||
|
PUBKEY_REGEX = "(?![OIl])[1-9A-Za-z]{42,45}"
|
||||||
|
|
||||||
class ReadFromCesium:
|
class ReadFromCesium:
|
||||||
def __init__(self, dunikey, pod):
|
def __init__(self, dunikey, pod):
|
||||||
# Get my pubkey from my private key
|
# Get my pubkey from my private key
|
||||||
try:
|
try:
|
||||||
self.dunikey = dunikey
|
self.dunikey = dunikey
|
||||||
if dunikey == "":
|
if not dunikey:
|
||||||
raise ValueError("Dunikey is empty")
|
raise ValueError("Dunikey is empty")
|
||||||
except:
|
except:
|
||||||
sys.stderr.write("Please fill the path to your private key (PubSec)\n")
|
sys.stderr.write("Please fill the path to your private key (PubSec)\n")
|
||||||
|
@ -21,7 +22,7 @@ class ReadFromCesium:
|
||||||
self.recipient = get_privkey(dunikey, "pubsec").pubkey
|
self.recipient = get_privkey(dunikey, "pubsec").pubkey
|
||||||
self.pod = pod
|
self.pod = pod
|
||||||
|
|
||||||
if not re.match(r"(?![OIl])[1-9A-Za-z]{42,45}", self.recipient):
|
if not re.match(PUBKEY_REGEX, self.recipient) or len(self.recipient) > 45:
|
||||||
sys.stderr.write("La clé publique n'est pas au bon format.\n")
|
sys.stderr.write("La clé publique n'est pas au bon format.\n")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
@ -117,6 +118,8 @@ class SendToCesium:
|
||||||
# Get my pubkey from my private key
|
# Get my pubkey from my private key
|
||||||
try:
|
try:
|
||||||
self.dunikey = dunikey
|
self.dunikey = dunikey
|
||||||
|
if not dunikey:
|
||||||
|
raise ValueError("Dunikey is empty")
|
||||||
except:
|
except:
|
||||||
sys.stderr.write("Please fill the path to your private key (PubSec)\n")
|
sys.stderr.write("Please fill the path to your private key (PubSec)\n")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
@ -132,7 +135,7 @@ class SendToCesium:
|
||||||
nonce.append(random.choice(string.ascii_letters + string.digits))
|
nonce.append(random.choice(string.ascii_letters + string.digits))
|
||||||
self.nonce = base64.b64decode(''.join(nonce))
|
self.nonce = base64.b64decode(''.join(nonce))
|
||||||
|
|
||||||
if not re.match(r"(?![OIl])[1-9A-Za-z]{42,45}", recipient):
|
if not re.match(PUBKEY_REGEX, recipient) or len(recipient) > 45:
|
||||||
sys.stderr.write("La clé publique n'est pas au bon format.\n")
|
sys.stderr.write("La clé publique n'est pas au bon format.\n")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
@ -200,6 +203,8 @@ class DeleteFromCesium:
|
||||||
# Get my pubkey from my private key
|
# Get my pubkey from my private key
|
||||||
try:
|
try:
|
||||||
self.dunikey = dunikey
|
self.dunikey = dunikey
|
||||||
|
if not dunikey:
|
||||||
|
raise ValueError("Dunikey is empty")
|
||||||
except:
|
except:
|
||||||
sys.stderr.write("Please fill the path to your private key (PubSec)\n")
|
sys.stderr.write("Please fill the path to your private key (PubSec)\n")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
|
@ -3,3 +3,4 @@ base58
|
||||||
pybase64
|
pybase64
|
||||||
duniterpy
|
duniterpy
|
||||||
termcolor
|
termcolor
|
||||||
|
python-dotenv
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
dunikey = "" # Chemin de la clé privé Ḡ1 de l'émetteur, au format PubSec
|
|
||||||
#pod = "https://g1.data.duniter.fr" # Adresse du pod Cesium à utiliser
|
|
||||||
pod = "https://g1.data.le-sou.org" # Adresse du pod Cesium de secours
|
|
||||||
#pod = "https://data.gchange.fr" # Adresse du pod GChange à utiliser
|
|
Loading…
Reference in New Issue