FlexPBX Security & Routing Configuration Summary
Date: 2025-10-13
Status: โ COMPLETE & SECURE
๐ Media Security - PUBLIC ACCESS BLOCKED
Protection Status
โ All media files are now protected from public access
Security Measures:
.htaccessfile blocks direct public access to/media/*- Only localhost (127.0.0.1) can access files directly
- External access requires authentication
- Directory listings disabled
- 403 error for unauthorized attempts
Locations Secured:
/media/sounds/ - IVR greetings and system sounds
/media/moh/ - Music on hold (82 music files)
/media/recordings/ - Call recordingsAuthenticated Access
For PBX System: Direct access via localhost
For Users/Extensions: Via authenticated API endpoint:
/api/media-stream.php?file=sounds/greeting.wavTesting Security
# This should be BLOCKED (403 Forbidden):
curl https://flexpbx.devinecreations.net/media/sounds/system/connected.wavThis should work (authenticated):
curl -H "Authorization: Bearer YOUR_TOKEN" https://flexpbx.devinecreations.net/api/media-stream.php?file=sounds/system/connected.wav๐ Inbound Call Routing - FULLY CONFIGURABLE
Routing Configuration UI
URL: https://flexpbx.devinecreations.net/admin/inbound-routing.html
Features:
Default Routing Behavior
Callcentric Trunk
Default Destination: IVR Menu (Extension 101)
Supported DIDs:
Configuration File: config/callcentric-trunk-config.json
Google Voice Integration
Primary Number: (281) 301-5784 โ IVR Main Menu
Test Number: (336) 462-6141 โ Direct to Extension 2001
Configuration File: config/google-voice-config.json
๐ฏ Routing Options Available
When calls arrive, you can route them to:
1. IVR Menu (Auto-Attendant)
2. Call Queue (Ring Group)
3. Direct Extension
4. Voicemail
5. Announcement Only
6. Time-Based / Custom
๐ง Configuration Files Updated
Trunk Configurations (with Inbound Routing)
config/callcentric-trunk-config.json
"inbound_routing": {
"default_destination": {
"type": "ivr",
"target": "101"
},
"did_routes": [...],
"failover": {
"type": "voicemail",
"target": "general"
}
}config/google-voice-config.json
"inbound_routing": {
"default_destination": {
"type": "ivr",
"target": "101"
},
"number_routes": [
{
"number": "12813015784",
"destination": {"type": "ivr", "target": "101"}
},
{
"number": "13364626141",
"destination": {"type": "extension", "target": "2001"}
}
]
}config/inbound-routes.json (NEW)
Stores all inbound routing rules:
๐ Management Interfaces
Main Admin Panel
https://flexpbx.devinecreations.net/admin/
Inbound Routing Manager
https://flexpbx.devinecreations.net/admin/inbound-routing.html
Media Manager
https://flexpbx.devinecreations.net/admin/media-manager.html
Extensions Manager
https://flexpbx.devinecreations.net/admin/admin-extensions-management.html
Trunks Manager
https://flexpbx.devinecreations.net/admin/admin-trunks-management.html
๐ต Music On Hold (MOH)
82 Music Files Installed
Artists: Raywonder, A&D I, tappedin.fm, and more
Playlists:
corporate-playlist.m3u - Sales queueambient-playlist.m3u - Support queueAccess: Restricted to authenticated PBX only
๐งช Testing Your Setup
1. Test Inbound Call Flow
1. Call your Callcentric DID from outside
Verify it routes to IVR (Extension 101)
Test menu options (1=Sales, 2=Support)
Verify you hear correct MOH in queue 2. Test Extension Direct
1. Edit route in Inbound Routing Manager
Set destination to Extension 2001
Save and test by calling your DID
Should ring extension 2001 directly 3. Test Media Security
# Should be BLOCKED:
https://flexpbx.devinecreations.net/media/moh/file.mp3Should work (authenticated):
https://flexpbx.devinecreations.net/api/media-stream.php?file=moh/file.mp34. Test Queue with MOH
1. Call IVR (101)
Press 1 for Sales
Should hear corporate MOH
Press 2 for Support
Should hear ambient MOH ๐ Security Summary
โ
Media files: Protected from public access
โ
Inbound routing: Configurable per trunk/DID
โ
Default destination: IVR Menu (changeable)
โ
Failover: Voicemail if all routes fail
โ
Authentication: Required for media streaming
โ
Permissions: Properly set on all files
โ
Directory listings: Disabled
๐ฑ Test Extension (For Testing)
Extension 2001
Username: techsupport1
Password: Support2001!
Server: flexpbx.devinecreations.net
Port: 5070
Domain: flexpbx.devinecreations.netCan receive inbound calls by:
๐ Configuration Files Reference
| File | Purpose |
| ------ | --------- |
config/callcentric-trunk-config.json | Callcentric trunk + inbound routing |
config/google-voice-config.json | Google Voice + inbound routing |
config/extensions-config.json | All extensions + server settings |
config/inbound-routes.json | Centralized routing rules |
media/.htaccess | Media security settings |
api/inbound-routing.php | Routing API backend |
api/media-stream.php | Authenticated media streaming |
โ What's Working
๐ Next Steps
System Status: โ
READY FOR PRODUCTION
Security: โ
LOCKED DOWN
Routing: โ
FULLY CONFIGURABLE
All files properly secured and routing system fully operational!