First New Software in a Long Time
Saturday, March 26th, 2005Well, outside of working on web software, I haven’t developed much in the way of software that I think anyone else would want since the ChannelBar era (a plugin for ShadowIRC — back in the OS 9 days).
However, I’ve got a project that’s actually making headway (even useable!) for OS X. It’s called Gate Control and is a GUI for editing OS X firewall rules.
See, the problem is that the default OS X firewall "editor" isn’t very functional and I’ve not been satisified with any of the other firewall editing tools out there. I could go on, at length I think, on how the tools I’ve tried just don’t do enough.
The following are the least things that I think a competent firewall editor should be able to do:
- Read existing ipfw rules
- Edit those existing rules that were read
- Create (and edit) ipfw rules utilizing as many of the ipfw features as possible (preferably all of them)
- Apply the rules
Here’s an in-progress screenshot of Gate Control
![]()
It can read the existing firewall rules, edit them, and set them again. The GUI covers most of the available features for ipfw (it actually can parse all the options, they just aren’t available via the GUI yet).
[Updated 03/28/2005 @ 1:46 pm]
So it’s come even further in the short time since I posted the above little blurb. It’s more robust, can save and load firewall rule lists (in one of 3 formats - Native, ipfw [as it would come raw from ipfw list] and ipfw "script" which is suitable to be fed to ipfw as a file argument), supports comments in the Native file format, supports multiple open rule lists at once (I’m planning on adding drag & drop), handles lists of ports much better and then of course all the other minor little things here and there.
I’m hoping to add some cool features, like showing a list of current connections and letting you drag & drop those into the rule list ("why?" you ask, well so that you can lock down the machine to enable connections from only certains hosts and that kind of thing), supporting picking port settings from the items in /etc/services and, of course, saving the list so that ipfw can load it at system startup (that one’s a rather large necessity, all things considered). And lets not forget adding better validation of rule semantics (such as a protocol setting of ip doesn’t allow certain other options).