Exeprotector/config.py
2025-10-23 18:27:33 +08:00

106 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Configuration file for the EXE encryption system
Contains security settings and system parameters
"""
"""
作者:太一
微信taiyi1224
邮箱shoubo1224@qq.com
"""
import os
from pathlib import Path
# System configuration
SYSTEM_CONFIG = {
'app_name': 'EXE Secure Wrapper',
'version': '2.0.0',
'company': 'Secure Software Solutions',
'contact': 'support@securesoft.com'
}
# Security settings
SECURITY_CONFIG = {
# Encryption settings
'key_length': 32, # bytes
'salt_length': 32, # bytes
'iterations': 100000, # PBKDF2 iterations
'hash_algorithm': 'sha256',
'xor_key': os.environ.get('EXE_WRAPPER_KEY', 'EXEWrapper#2024').encode(),
# File validation
'min_file_size': 1024, # bytes
'magic_header': b'ENC_MAGIC',
'header_size': 512, # 配置头固定长度(字节)
# License settings
'trial_days': 7,
'license_key_length': 20,
'license_format': 'XXXXX-XXXXX-XXXXX-XXXXX',
}
# Temporary file settings
TEMP_CONFIG = {
'temp_prefix': 'sec_wrap_',
'max_temp_age': 3600, # seconds (1 hour)
'auto_cleanup': True,
}
# Database settings (会被嵌入到包装文件中)
DATABASE_CONFIG = {
'mysql': {
'host': os.environ.get('DB_HOST', 'localhost'),
'port': int(os.environ.get('DB_PORT', 3306)),
'database': os.environ.get('DB_NAME', 'license_system'),
'user': os.environ.get('DB_USER', 'root'),
'password': os.environ.get('DB_PASSWORD', ''),
'charset': 'utf8mb4',
'connection_timeout': 30,
'ssl_disabled': True,
},
'sqlite': {
'filename': 'licenses_local.db',
'check_same_thread': False,
}
}
# Logging configuration
LOGGING_CONFIG = {
'level': 'INFO',
'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
'file_max_size': 10 * 1024 * 1024, # 10MB
'backup_count': 5,
'log_dir': 'logs',
}
# Validation settings
VALIDATION_CONFIG = {
'check_internet': True,
'max_retries': 3,
'retry_delay': 1, # seconds
'timeout': 10, # seconds
'heartbeat_interval': 300, # seconds (5 minutes)
}
# Build paths
BASE_DIR = Path(__file__).parent.absolute()
CONFIG_DIR = BASE_DIR / "config"
LOG_DIR = BASE_DIR / LOGGING_CONFIG['log_dir']
TEMP_DIR = BASE_DIR / "temp"
# Ensure directories exist
for directory in [LOG_DIR, TEMP_DIR, CONFIG_DIR]:
directory.mkdir(exist_ok=True)
def get_config_path(filename):
"""Get full path to configuration file"""
return CONFIG_DIR / filename
def get_temp_path(filename=None):
"""Get temporary file path"""
if filename:
return TEMP_DIR / filename
return TEMP_DIR
def get_log_path(filename):
"""Get log file path"""
return LOG_DIR / filename