mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-10 00:09:04 +00:00
94 lines
3.7 KiB
Python
94 lines
3.7 KiB
Python
# constants.py
|
|
|
|
import os
|
|
import logging
|
|
import sys
|
|
from pathlib import Path
|
|
import traceback
|
|
|
|
def configure_logging():
|
|
"""
|
|
Configures logging with both file and console handlers.
|
|
Only ERROR and higher-level messages are shown in the terminal, while all messages
|
|
are logged in the log file.
|
|
"""
|
|
# Create a custom logger
|
|
logger = logging.getLogger()
|
|
logger.setLevel(logging.DEBUG) # Set to DEBUG for detailed output
|
|
|
|
# Create the 'logs' folder if it doesn't exist
|
|
if not os.path.exists('logs'):
|
|
os.makedirs('logs')
|
|
|
|
# Create handlers
|
|
c_handler = logging.StreamHandler(sys.stdout)
|
|
f_handler = logging.FileHandler(os.path.join('logs', 'constants.log'))
|
|
|
|
# Set levels: only errors and critical messages will be shown in the console
|
|
c_handler.setLevel(logging.ERROR) # Console will show ERROR and above
|
|
f_handler.setLevel(logging.DEBUG) # File will log everything from DEBUG and above
|
|
|
|
# Create formatters and add them to handlers, include file and line number in log messages
|
|
c_format = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s [%(filename)s:%(lineno)d]')
|
|
f_format = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s [%(filename)s:%(lineno)d]')
|
|
|
|
c_handler.setFormatter(c_format)
|
|
f_handler.setFormatter(f_format)
|
|
|
|
# Add handlers to the logger if they are not already added
|
|
if not logger.handlers:
|
|
logger.addHandler(c_handler)
|
|
logger.addHandler(f_handler)
|
|
|
|
# Configure logging at the start of the module
|
|
configure_logging()
|
|
|
|
# -----------------------------------
|
|
# Nostr Relay Connection Settings
|
|
# -----------------------------------
|
|
MAX_RETRIES = 3 # Maximum number of retries for relay connections
|
|
RETRY_DELAY = 5 # Seconds to wait before retrying a failed connection
|
|
|
|
try:
|
|
# -----------------------------------
|
|
# Application Directory and Paths
|
|
# -----------------------------------
|
|
APP_DIR = Path.home() / '.deterministic_password_generator'
|
|
APP_DIR.mkdir(exist_ok=True, parents=True) # Ensure the directory exists
|
|
logging.info(f"Application directory created at {APP_DIR}")
|
|
except Exception as e:
|
|
logging.error(f"Failed to create application directory: {e}")
|
|
logging.error(traceback.format_exc()) # Log full traceback
|
|
|
|
try:
|
|
INDEX_FILE = APP_DIR / 'passwords_db.json' # Encrypted password database
|
|
PARENT_SEED_FILE = APP_DIR / 'parent_seed.enc' # Encrypted parent seed
|
|
logging.info(f"Index file path set to {INDEX_FILE}")
|
|
logging.info(f"Parent seed file path set to {PARENT_SEED_FILE}")
|
|
except Exception as e:
|
|
logging.error(f"Error setting file paths: {e}")
|
|
logging.error(traceback.format_exc()) # Log full traceback
|
|
|
|
# -----------------------------------
|
|
# Checksum Files for Integrity
|
|
# -----------------------------------
|
|
try:
|
|
SCRIPT_CHECKSUM_FILE = APP_DIR / 'script_checksum.txt' # Checksum for main script
|
|
DATA_CHECKSUM_FILE = APP_DIR / 'passwords_checksum.txt' # Checksum for password data
|
|
logging.info(f"Checksum file paths set: Script {SCRIPT_CHECKSUM_FILE}, Data {DATA_CHECKSUM_FILE}")
|
|
except Exception as e:
|
|
logging.error(f"Error setting checksum file paths: {e}")
|
|
logging.error(traceback.format_exc()) # Log full traceback
|
|
|
|
# -----------------------------------
|
|
# Password Generation Constants
|
|
# -----------------------------------
|
|
DEFAULT_PASSWORD_LENGTH = 12 # Default length for generated passwords
|
|
MIN_PASSWORD_LENGTH = 8 # Minimum allowed password length
|
|
MAX_PASSWORD_LENGTH = 128 # Maximum allowed password length
|
|
|
|
# -----------------------------------
|
|
# Additional Constants (if any)
|
|
# -----------------------------------
|
|
# Add any other constants here as your project expands
|