Sun Oct 28 21:18:32 2001

This is a program to edit gShield configuration files.  gShield is a
simple to use, but powerful firewall script. 

It was written by Godot <godot@linuxmafia.org>. More information can 
be found at http://muse.linuxmafia.org/gshield.html

gShieldConf is (c) 2000,2001 Vince Hodges. It is hereby released under the terms 
and conditions of the GNU General Public License.See the file 'COPYING' for
details.

I can be reached at, vhodges@shaw.ca

Please note, gShield must be installed prior to running gshieldconf.
The program will load (and save) the gShield configuration file(s). It 
uses the contents of the file to determine the settings for the user 
interface.  Anything defined in the user interface but not in the 
conf file can be changed, but the changes will not be saved.

Instructions for building gShieldConf are in the file 'INSTALL'.

Release notes for 0.40

  	* Removed 'Save As' and 'Load' menu items/code.  I have done this
	  because it was an ill conceived feature and doesn't make sense anymore.
 	* Made it compile and work with both libxml1 and libxml2.
	* Removed last vestiges of hard coded file paths (specifically the paths
	  to the gShield configuration files).
	* Seperated the program from the controls.xml file.  This was done to better
	  be able to maintain the controls.xml file and to support multiple versions
	  of gShield.
	* Added a new UI control type, the 'combo box'.  This is to support the tri-state
	  fields in gShield2.6 and up.
	* The structure of controls.xml has changed a bit.  Mostly added a new node type,
	  'Configfiles' to specify the locations of the files to be loaded.  

Features

    * Simple and easy to see the firewall configuration at a glance.

    * Preserves unknown variables.

    * Preserves comments and formatting of conf files

    * Easy to extend when the conf file is changed.

Known Limitations

    * No way to activate the changes that have been made (
      ie, run gShield.rc).

    * The conf files must be installed before running gshieldconf.  In
      other words you cannot use gshieldconf to create a new script. 

    * No revert/undo operation. It is actually rather easy to support a 
      single level of undo.  I may do this at some point.

    * Doesn't actually check to see if there have been any changes before 
      saving the config files out.

    * The Firewall Root directory must exist, it will not be created.

gshieldconf internals 

At startup, gshieldconf will read the conf file and parse it into a
linked list of configuration items.  Each item will be one of four
possible types:

    String     - An item that holds a string value.
    Boolean    - An item that holds a on or off value.
    Comment    - An item that holds a comment from the conf file.
    Blank      - An item that holds a blank (or otherwise) line from the 
                 conf file

Next the linked list is iterated.  For each item, if it's a String or
Boolean type, it looks up a component with the same name as the
configuration variable.  If found, it sets the value into the
component.

If a component is not found, then it cannot be modified by
gshieldconf.  However, its value will be preserved and saved out when
the save button is pressed.

When save is pressed, the inverse happens.  The linked list is
iterated.  It will look up the component and obtain the value for the
item and place it into the linked list.

The linked list is then iterated a second time, writing out the values
of the config items.

The other files are simply loaded into text components as text files,
and saved back out.
