feat: Add comprehensive documentation suite and reorganize project structure

- Created complete documentation in docs/ directory
- Added PROJECT_OVERVIEW.md with feature highlights and getting started guide
- Added ARCHITECTURE.md with system design and technical details
- Added SECURITY.md with comprehensive security implementation guide
- Added DEVELOPMENT.md with development workflows and best practices
- Added DEPLOYMENT.md with production deployment instructions
- Added API.md with complete REST API documentation
- Added CONTRIBUTING.md with contribution guidelines
- Added CHANGELOG.md with version history and migration notes
- Reorganized all documentation files into docs/ directory for better organization
- Updated README.md with proper documentation links and quick navigation
- Enhanced project structure with professional documentation standards
This commit is contained in:
SamiAhmed7777
2025-10-21 00:39:45 -07:00
commit 0b7e2d0a5b
6080 changed files with 1332936 additions and 0 deletions

106
f_core/config.logging.php Normal file
View File

@@ -0,0 +1,106 @@
<?php
/*******************************************************************************************************************
| Software Name : EasyStream
| Software Description : High End YouTube Clone Script with Videos, Shorts, Streams, Images, Audio, Documents, Blogs
| Software Author : (c) Sami Ahmed
|*******************************************************************************************************************
|
|*******************************************************************************************************************
| This source file is subject to the EasyStream Proprietary License Agreement.
|
| By using this software, you acknowledge having read this Agreement and agree to be bound thereby.
|*******************************************************************************************************************
| Copyright (c) 2025 Sami Ahmed. All rights reserved.
|*******************************************************************************************************************/
defined('_ISVALID') or header('Location: /error');
// Logging Configuration
$logging_config = [
// Enable/disable different types of logging
'file_logging' => true,
'database_logging' => false, // Set to true if you want to log to database
'error_alerts' => true, // Send email alerts for critical errors
// Log levels to record (set to false to disable specific levels)
'log_levels' => [
'emergency' => true,
'alert' => true,
'critical' => true,
'error' => true,
'warning' => true,
'notice' => true,
'info' => true,
'debug' => false // Disable debug logging in production
],
// File rotation settings
'max_file_size' => 10 * 1024 * 1024, // 10MB
'max_files' => 5,
// Alert settings
'admin_email' => 'admin@yourdomain.com', // Change this to your admin email
'alert_rate_limit' => [
'max_alerts' => 5,
'time_window' => 3600 // 1 hour
],
// Optional webhook for error alerts (e.g., Sentry/Slack)
'error_webhook' => false,
'webhook_url' => '',
'webhook_levels' => ['emergency','alert','critical','error'],
// Performance monitoring
'performance_thresholds' => [
'slow_query' => 1.0, // Log queries taking more than 1 second
'slow_request' => 2.0, // Log requests taking more than 2 seconds
'memory_limit' => 128 * 1024 * 1024, // Log if memory usage exceeds 128MB
],
// Security logging
'security_events' => [
'failed_logins' => true,
'suspicious_uploads' => true,
'rate_limit_exceeded' => true,
'csrf_failures' => true,
'sql_injection_attempts' => true,
'xss_attempts' => true
],
// Log retention (days)
'retention_days' => 30,
// Sensitive data filtering (fields to exclude from logs)
'sensitive_fields' => [
'password',
'passwd',
'pwd',
'secret',
'token',
'key',
'credit_card',
'ssn',
'social_security'
]
];
// Apply configuration to global config
foreach ($logging_config as $key => $value) {
$cfg['logging_' . $key] = $value;
}
// Set up log cleanup cron job (if needed)
if (isset($cfg['logging_retention_days']) && $cfg['logging_retention_days'] > 0) {
// This would typically be handled by a cron job
// For now, we'll do a simple cleanup check occasionally
if (rand(1, 100) === 1) { // 1% chance on each request
$logDir = 'f_data/logs/';
$cutoffTime = time() - ($cfg['logging_retention_days'] * 24 * 60 * 60);
$files = glob($logDir . '*.log*');
foreach ($files as $file) {
if (filemtime($file) < $cutoffTime) {
unlink($file);
}
}
}
}