102 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| Configuration file for the EXE encryption system
 | |
| Contains security settings and system parameters
 | |
| """
 | |
| 
 | |
| 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 |