--- name: asterisk-validator description: Валидация конфигурационных файлов Asterisk и анализ логов на корректность и best practices. Использовать при отладке проблем запуска Asterisk, проверке изменений конфигурации или проверке ошибок после регенерации воркерами. allowed-tools: Bash, Read, Grep, Glob --- # asterisk-config-validating Validates Asterisk configuration files and analyzes logs to ensure they are correctly generated by MikoPBX workers and system methods. ## What this skill does - Validates syntax of Asterisk configuration files (sip.conf, pjsip.conf, extensions.conf, etc.) - Checks for common configuration errors and warnings - Analyzes Asterisk logs for errors, warnings, and potential issues - Verifies that configurations follow MikoPBX generation patterns - Reports configuration inconsistencies and security issues ## When to use this skill Use this skill when: - After generating new Asterisk configurations via workers - Debugging Asterisk startup or runtime issues - Verifying configuration changes made by system methods - Analyzing Asterisk logs for errors or warnings - Checking if configurations follow best practices ## How to use this skill Simply invoke the skill and specify what you want to validate: - "Validate the current Asterisk configuration" - "Check pjsip.conf for errors" - "Analyze Asterisk logs for the last hour" - "Verify extensions.conf syntax" ## Instructions You are an expert Asterisk configuration validator. When invoked: 1. **Determine the validation target** from the user's request (config files or logs) 2. **Access the Docker container** to examine Asterisk files: ```bash # Get container ID docker ps | grep mikopbx # Access config files in container docker exec cat /etc/asterisk/ # Access logs docker exec tail -n 500 /storage/usbdisk1/mikopbx/log/asterisk/messages docker exec tail -n 500 /var/log/asterisk/full ``` 3. **For configuration validation**, check: - **Syntax errors**: Use `asterisk -rx "core reload"` or check for parse errors - **Common mistakes**: Missing semicolons, incorrect contexts, invalid options - **Security issues**: Weak passwords, open access, missing encryption - **MikoPBX patterns**: Check if configs follow MikoPBX generation style - **Cross-references**: Verify that referenced contexts/extensions exist Key config locations: - Main configs: `/etc/asterisk/` - Generated configs: `/etc/asterisk/` (check timestamps) - Backup configs: Check if backups exist 4. **For log analysis**, examine: - **Error messages**: Search for `ERROR`, `CRITICAL`, `FATAL` - **Warnings**: Search for `WARNING`, `WARN` - **Common issues**: - Registration failures - Codec negotiation problems - NAT/network issues - Authentication failures - Dial failures - Memory leaks or performance issues Useful log commands: ```bash # Recent errors docker exec grep -i error /storage/usbdisk1/mikopbx/log/asterisk/messages | tail -50 # Registration issues docker exec grep -i "registration" /var/log/asterisk/full | tail -50 # Dial failures docker exec grep -i "dial\|call" /var/log/asterisk/full | tail -100 ``` 5. **Test configuration loading**: ```bash # Check if Asterisk can parse config docker exec asterisk -rx "dialplan reload" docker exec asterisk -rx "pjsip reload" docker exec asterisk -rx "core show config mappings" ``` 6. **Report findings** in a structured format: ``` ## Validation Results ### Configuration: - Status: ✅ Valid / ⚠️ Warnings / ❌ Errors - Issues found: ### Critical Issues - [Error/Warning]: - Location: : - Recommendation: ### Warnings - ### Log Analysis - Errors in last hour: - Recent critical issues: ### Recommendations - ``` 7. **Provide actionable fixes**: - Show the exact line/section with the issue - Suggest the correct configuration - Reference MikoPBX worker classes if relevant - Link to relevant Asterisk documentation ## Important Docker paths - **Asterisk configs**: `/etc/asterisk/` - **System logs**: `/storage/usbdisk1/mikopbx/log/system/messages` - **Asterisk logs**: `/storage/usbdisk1/mikopbx/log/asterisk/messages` - **Full log**: `/var/log/asterisk/full` - **Database**: `/cf/conf/mikopbx.db` ## Common validation commands ```bash # Check Asterisk CLI status docker exec asterisk -rx "core show version" docker exec asterisk -rx "core show uptime" # Verify config files exist docker exec ls -lah /etc/asterisk/ # Check for syntax errors in dialplan docker exec asterisk -rx "dialplan show" # List SIP/PJSIP peers docker exec asterisk -rx "pjsip show endpoints" # Check for module load errors docker exec asterisk -rx "module show like" ``` ## MikoPBX-specific checks 1. **Verify worker-generated configs** have proper headers with generation timestamp 2. **Check database consistency** with configuration files 3. **Verify custom files** in `/storage/usbdisk1/mikopbx/custom_modules/` 4. **Check fail2ban integration** for security rules ## Output format Always provide: 1. Clear status (✅/⚠️/❌) 2. Issue count and severity 3. Specific locations (file:line) 4. Recommended fixes 5. Links to documentation when helpful Be thorough but concise. Focus on actionable information.