Here's a rough breakdown:
-- Three IP Lists: ViciWhite, ViciDynamic, ViciBlack (white/grey/black lists effectively)
-- The three IP lists are NOT to be used by anything in ViciDial, it's just a convenient way to have them be manageable from the ViciDial interface
-- ViciBlack is a global blocklist, any IP on here gets all traffic blocked (EVERYTHING) and takes priority over the other lists
-- ViciWhite is a manually entered list of IPs allowed to connect via SIP/IAX (carriers, PBXs, etc)
-- ViciDynamic is dynamically compiled list of Agent/Admin login IPs based on vicidial_user table information (ignores RFC1918 IPs)
-- RFC1918 IP's are on the whitelist by default (192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 127.0.0.1)
-- Web Interface is universally accessible unless on the blacklist cause the blacklist blocks EVERYTHING (this is important to note)
-- Only SIP/IAX traffic is affected by the White or Dynamic lists, RTP and Web traffic are open unless the IP is on the blacklist
-- The ViciDynamic list ages, so only ACTIVE users that have successfully logged into the web interface in the past 14 days will be put on it
-- IP list format is in CIDR format, I.E. A.B.C.D/NM. If no Bit/Net Mask is given /32 will be assumed, which is a single IP Address
-- Requires a ViciDial SVN version greater then 2726 or Build greater then 170409-0950
-- The default ViciBox v.8.1 install will only have the blacklist activated although it will be empty by default, an empty blacklist hurts nothing

-- The whitelist and dynamiclist can be implemented separately, so you can have just the whitelist and blacklist if you want, or just dynamic and blacklist, or all three.
-- A CLI tool to allow you to add or remove IPs from the Black and White list, integrates with ViciDial through the /etc/astguiclient.conf files like other ViciDial utilities
-- Script run from cron every minute, so there is approximately a 2-minute delay between active changes
-- Requires SuSEfirewall2 to be running and only applies to the 'external' zones, internal zones are not affected
-- All blocks/matches are done using IPSet and IPTables which is significantly more dynamic and scalable then any other approach I've found
The one downside is the grace time between when an agent initially logs in to the web interface and when they will be able to connect their soft phone. This should only be an issue for initial login or if the agent doesn't login for more then 14 days and their IP isn't on the whitelist. The second issue would be if someone deletes the IP Lists in the web interface or tries to use it for user groups or something.
Let me know what you think of this sort of firewall integration.