← Back to team overview

gufw-developers team mailing list archive

[Merge] lp:~ubuntumembers/gui-ufw/port-to-gtk3 into lp:gui-ufw

 

tomi1379 has proposed merging lp:~ubuntumembers/gui-ufw/port-to-gtk3 into lp:gui-ufw.

Requested reviews:
  Gufw Developers (gufw-developers)

For more details, see:
https://code.launchpad.net/~ubuntumembers/gui-ufw/port-to-gtk3/+merge/83363
-- 
https://code.launchpad.net/~ubuntumembers/gui-ufw/port-to-gtk3/+merge/83363
Your team Gufw Developers is requested to review the proposed merge of lp:~ubuntumembers/gui-ufw/port-to-gtk3 into lp:gui-ufw.
=== added file 'INSTALL.OTHER'
--- INSTALL.OTHER	1970-01-01 00:00:00 +0000
+++ INSTALL.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,29 @@
+© 2008-2011 Marcos Alvarez Costales
+-----------------------------------
+
+DEPENDENCIES
+-----------------
+ufw
+gir1.2-gtk-3.0
+gir1.2-polkit-1.0
+notify-osd or notification-daemon
+policykit-1
+python-dbus
+python-gobject
+python-distutils-extra
+
+FROM DEBIAN OR UBUNTU REPOSITORIES
+-----------------
+INSTALL > sudo apt-get install gufw
+REMOVE  > sudo apt-get purge gufw
+You can run the program by looking for Firewall Configuration in your application menu.
+
+
+FOR OTHER DISTROS
+------------------
+* Get code from https://code.launchpad.net/gui-ufw
+* Then run > sudo python setup.py install --prefix=/usr
+* You may also need to run sudo gtk-update-icon-cache /usr/share/icons/hicolor/
+  if your launcher icon is a bit blurry or doesn't show up.
+* If you have any problems adapting Gufw in other distros, please contact me 
+  and I'll try to help you :) https://launchpad.net/~costales

=== added file 'NEWS.OTHER'
--- NEWS.OTHER	1970-01-01 00:00:00 +0000
+++ NEWS.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,69 @@
+© 2008-2011 Marcos Alvarez Costales
+
+11.10.1
+=======
+* Ported to PyGObject and GTK3
+* Removed deprecated UI code
+* Used GtkSwitch to turn firewall off or on
+* Used GtkLockButton to unlock the interface
+* Renamed doc/ files to traditional Unix names and moved to top-level directory
+* Simplified setup script, requires python-distutils-extra
+  https://launchpad.net/python-distutils-extra
+
+11.10.0
+=======
+Updated translations
+Fixed bug #776518 - CUPS port use TCP&UDP
+Fixed bug #729814
+Added Reload Rules menu
+Complete text in rules are translated
+
+11.04.2
+=======
+Translated Policykit message.
+Updated translations.
+Added "Report a Problem..." menu.
+Fixed Bug #688601 (File conflict in mo files and license issue).
+
+11.04.1
+=======
+Fixed main menus for Global Menu in Unity.
+Fixed vulnerability in 11.04.0 for read FW status without policykit.
+Add also UDP ports for qBitTorrent & Deluge.
+Add port 2240tcp for Nicotine. Nicotine has 2º server some times.
+Add Skype with port 443 tcp http://www.skype.com/intl/en-us/support/user-guides/firewalls/technical/
+
+11.04.0
+=======
+Migrate libglade to gtk.builder
+PolicyKit.
+New popup notifications.
+Rebuild glade files > 20% faster & better in high contrast themes.
+New Help menus: Documentation + Answers + Translation.
+Updated translations.
+Redimensionable Rules/Listening panels.
+StatusBar messages hidden in seconds.
+Changed service zeroconf > CUPS (More useful).
+Tooltip for each service.
+Expand rules columns.
+Rules text using 'ubuntu' font.
+
+10.10
+=====
+New feature: New Listening connections (Monitor)
+Updated translations.
+
+10.04
+=====
+Add policy to incoming & outgoing traffic.
+Logs can be exported for servers.
+Fixed various visual glitches.
+Command Remove rule by number.
+Insert rule in row.
+Set log or log-all for one rule.
+Fixed bug #459554: Remove LANGUAGE=C in log server of Gufw.
+Fixed bug #521787: Changed by .deb package. 
+Fixed ports of qBittorrent
+Fixed bug #381705
+Sort Services & Programs by name
+Updated su-to-root command

=== added file 'README.OTHER'
--- README.OTHER	1970-01-01 00:00:00 +0000
+++ README.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,48 @@
+Gufw - version 11.10.1
+© 2008-2011 Marcos Alvarez Costales
+---------------------
+
+
+What is it?
+===========
+A graphical user interface for Ubuntu's Uncomplicated Firewall.
+
+
+How do I install it?
+====================
+Read the INSTALL file
+
+
+What does it look like?
+=======================
+Take a look here!
+http://gufw.tuxfamily.org/screenshots.html
+
+
+Where can i find out more?
+==========================
+You can visit the project web site:
+http://gufw.tuxfamily.org/
+
+
+License
+=======
+Gufw is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public Licence as published
+by the Free Software Foundation; either version 3 of the License,
+or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+Logo
+====
+Shield logo created by myke (http://michael.spiegel1.at/)
+Tutorial: http://www.gimpusers.com/tutorials/create-a-shield-symbol.html
+Licensed under CC BY 3.0 http://creativecommons.org/licenses/by/3.0/at/

=== added directory 'bin'
=== renamed directory 'bin' => 'bin.moved'
=== added file 'bin/gufw.OTHER'
--- bin/gufw.OTHER	1970-01-01 00:00:00 +0000
+++ bin/gufw.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,21 @@
+#!/bin/bash
+LOCATIONS=(
+"/usr/lib/python2.7/site-packages/gufw/gufw.py"
+"/usr/lib/python2.6/site-packages/gufw/gufw.py"
+"/usr/lib/python2.7/dist-packages/gufw/gufw.py"
+"/usr/lib/python2.6/dist-packages/gufw/gufw.py"
+)
+
+for ((i = 0; i < ${#LOCATIONS[@]}; i++))
+do
+    if [[ -e "${LOCATIONS[${i}]}" ]]; then
+        python ${LOCATIONS[${i}]}
+        successful="True"
+        break
+    fi
+done
+
+if [ "$successful" != "True" ]; then
+    echo "Gufw does not appear to have been installed correctly."
+fi
+

=== added directory 'data'
=== renamed directory 'data' => 'data.moved'
=== added directory 'data/icons'
=== added directory 'data/icons/48x48'
=== added directory 'data/icons/48x48/apps'
=== added directory 'data/ui'
=== added file 'data/ui/add.ui.OTHER'
--- data/ui/add.ui.OTHER	1970-01-01 00:00:00 +0000
+++ data/ui/add.ui.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,722 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkDialog" id="dlgAdd">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Firewall: Add Rule</property>
+    <property name="resizable">False</property>
+    <property name="type_hint">dialog</property>
+    <signal name="delete-event" handler="on_dlgAdd_delete_event" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="dialog-vbox1">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area1">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkCheckButton" id="cbExtendedActions">
+                <property name="label" translatable="yes">Show extended actions</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="xalign">0</property>
+                <property name="draw_indicator">True</property>
+                <signal name="toggled" handler="on_cbExtendedActions_toggled" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+                <property name="secondary">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="btnCloseAdd">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_btnCloseAdd_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="btnAddRule">
+                <property name="label">gtk-add</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_btnAddRule_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkNotebook" id="rulesNotebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="border_width">3</property>
+            <child>
+              <object class="GtkGrid" id="grid1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="row_spacing">5</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment5">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkLabel" id="filler1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="alignment6">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">2</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkSpinButton" id="sbInsertNumberPreconf">
+                    <property name="width_request">50</property>
+                    <property name="can_focus">True</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="tooltip_text" translatable="yes">Rule number to insert</property>
+                    <property name="max_length">3</property>
+                    <property name="numeric">True</property>
+                    <property name="update_policy">if-valid</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbActionPreconf">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">Allow</item>
+                      <item translatable="yes">Deny</item>
+                      <item translatable="yes">Reject</item>
+                      <item translatable="yes">Limit</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbDirectionPreconf">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">In</item>
+                      <item translatable="yes">Out</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbLogPreconf">
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">Don't Log</item>
+                      <item translatable="yes">Log</item>
+                      <item translatable="yes">Log All</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">3</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbTypePreconf">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">Application</item>
+                      <item translatable="yes">Service</item>
+                    </items>
+                    <signal name="changed" handler="on_cbTypePreconf_changed" swapped="no"/>
+                  </object>
+                  <packing>
+                    <property name="left_attach">4</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbProgramPreconf">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">Amule</item>
+                      <item translatable="yes">Deluge</item>
+                      <item translatable="yes">KTorrent</item>
+                      <item translatable="yes">Nicotine</item>
+                      <item translatable="yes">qBittorrent</item>
+                      <item translatable="yes">Skype</item>
+                      <item translatable="yes">Transmission</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">5</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbServicePreconf">
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">FTP</item>
+                      <item translatable="yes">HTTP</item>
+                      <item translatable="yes">IMAP</item>
+                      <item translatable="yes">NFS</item>
+                      <item translatable="yes">POP3</item>
+                      <item translatable="yes">Samba</item>
+                      <item translatable="yes">SMTP</item>
+                      <item translatable="yes">SSH</item>
+                      <item translatable="yes">VNC</item>
+                      <item translatable="yes">CUPS</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">6</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Preconfigured</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkGrid" id="grid2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="row_spacing">5</property>
+                <child>
+                  <object class="GtkSpinButton" id="sbInsertNumberSimple">
+                    <property name="width_request">50</property>
+                    <property name="can_focus">True</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="tooltip_text" translatable="yes">Rule number to insert</property>
+                    <property name="max_length">3</property>
+                    <property name="numeric">True</property>
+                    <property name="update_policy">if-valid</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="entryPortSimple">
+                    <property name="width_request">130</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="tooltip_text" translatable="yes">Port or service</property>
+                    <property name="max_length">25</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">5</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="filler2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbActionSimple">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">Allow</item>
+                      <item translatable="yes">Deny</item>
+                      <item translatable="yes">Reject</item>
+                      <item translatable="yes">Limit</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbDirectionSimple">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">In</item>
+                      <item translatable="yes">Out</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbLogSimple">
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">Don't Log</item>
+                      <item translatable="yes">Log</item>
+                      <item translatable="yes">Log All</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">3</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbProtoSimple">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">TCP</item>
+                      <item translatable="yes">UDP</item>
+                      <item translatable="yes">Both</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">4</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Simple</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkGrid" id="grid3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="row_spacing">5</property>
+                <child>
+                  <object class="GtkSpinButton" id="sbInsertNumberAdvanced">
+                    <property name="width_request">50</property>
+                    <property name="can_focus">True</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="tooltip_text" translatable="yes">Rule number to insert</property>
+                    <property name="max_length">3</property>
+                    <property name="numeric">True</property>
+                    <property name="update_policy">if-valid</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbActionAdvanced">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">Allow</item>
+                      <item translatable="yes">Deny</item>
+                      <item translatable="yes">Reject</item>
+                      <item translatable="yes">Limit</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbDirectionAdvanced">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">In</item>
+                      <item translatable="yes">Out</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbLogAdvanced">
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">Don't Log</item>
+                      <item translatable="yes">Log</item>
+                      <item translatable="yes">Log All</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">3</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="cbProtoAdvanced">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">TCP</item>
+                      <item translatable="yes">UDP</item>
+                      <item translatable="yes">Both</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">4</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="filler3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton" id="btnCleanAdvanced">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="tooltip_text" translatable="yes">Clean values in boxes</property>
+                    <property name="use_action_appearance">False</property>
+                    <signal name="clicked" handler="on_btnCleanAdvanced_clicked" swapped="no"/>
+                    <child>
+                      <object class="GtkImage" id="image3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="stock">gtk-clear</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">8</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label5">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">From:</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">5</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="entryFromIpAdvanced">
+                    <property name="width_request">150</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="tooltip_text" translatable="yes">IP Address</property>
+                    <property name="max_length">125</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">6</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="entryPortFromAdvanced">
+                    <property name="width_request">50</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="tooltip_text" translatable="yes">Port number. Use PortA:PortB for a port range.</property>
+                    <property name="max_length">11</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">7</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label6">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">To:</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">5</property>
+                    <property name="top_attach">2</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="entryToIpAdvanced">
+                    <property name="width_request">150</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="tooltip_text" translatable="yes">IP Address</property>
+                    <property name="max_length">125</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">6</property>
+                    <property name="top_attach">2</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="entryPortToAdvanced">
+                    <property name="width_request">50</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="tooltip_text" translatable="yes">Port number. Use PortA:PortB for a port range.</property>
+                    <property name="max_length">11</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">7</property>
+                    <property name="top_attach">2</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="filler4">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">3</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="labelIPAddress">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">IP Address</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">6</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="labelPort">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Port Number</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">7</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Advanced</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="0">cbExtendedActions</action-widget>
+      <action-widget response="0">btnCloseAdd</action-widget>
+      <action-widget response="0">btnAddRule</action-widget>
+    </action-widgets>
+  </object>
+</interface>

=== added file 'data/ui/log.ui.OTHER'
--- data/ui/log.ui.OTHER	1970-01-01 00:00:00 +0000
+++ data/ui/log.ui.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkDialog" id="dlgLog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Firewall: Log</property>
+    <property name="type_hint">dialog</property>
+    <signal name="delete-event" handler="on_dlgLog_delete_event" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="dialog-vbox1">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area1">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkCheckButton" id="cbServerScript">
+                <property name="label" translatable="yes">Show as server script</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="has_tooltip">True</property>
+                <property name="tooltip_text" translatable="yes">Show in a simpler format that can be used for scripting</property>
+                <property name="use_action_appearance">False</property>
+                <property name="xalign">0</property>
+                <property name="draw_indicator">True</property>
+                <signal name="toggled" handler="on_cbServerScript_toggled" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="btnClearLog">
+                <property name="label">gtk-clear</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="has_tooltip">True</property>
+                <property name="tooltip_text" translatable="yes">Remove all Gufw logs</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_btnClearLog_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="btnCloseLog">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_btnCloseLog_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkViewport" id="viewport1">
+            <property name="width_request">480</property>
+            <property name="height_request">200</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
+            <property name="border_width">3</property>
+            <property name="resize_mode">queue</property>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow2">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkTextView" id="logTxt">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="editable">False</property>
+                    <property name="accepts_tab">False</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="0">cbServerScript</action-widget>
+      <action-widget response="0">btnClearLog</action-widget>
+      <action-widget response="0">btnCloseLog</action-widget>
+    </action-widgets>
+  </object>
+</interface>

=== added file 'data/ui/main.ui.OTHER'
--- data/ui/main.ui.OTHER	1970-01-01 00:00:00 +0000
+++ data/ui/main.ui.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,770 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkAction" id="actionAbout">
+    <property name="stock_id">gtk-about</property>
+  </object>
+  <object class="GtkAction" id="actionQuit">
+    <property name="stock_id">gtk-quit</property>
+  </object>
+  <object class="GtkOffscreenWindow" id="hiddenwindow">
+    <property name="sensitive">False</property>
+    <property name="can_focus">False</property>
+    <property name="no_show_all">True</property>
+    <property name="ubuntu_no_proxy">True</property>
+    <child>
+      <placeholder/>
+    </child>
+  </object>
+  <object class="GtkImage" id="image1">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-dnd</property>
+    <property name="icon-size">1</property>
+  </object>
+  <object class="GtkImage" id="image10">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-refresh</property>
+    <property name="icon-size">1</property>
+  </object>
+  <object class="GtkImage" id="image2">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-add</property>
+    <property name="icon-size">1</property>
+  </object>
+  <object class="GtkImage" id="image3">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-remove</property>
+    <property name="icon-size">1</property>
+  </object>
+  <object class="GtkImage" id="image4">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-redo</property>
+    <property name="icon-size">1</property>
+  </object>
+  <object class="GtkImage" id="image5">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-info</property>
+    <property name="icon-size">1</property>
+  </object>
+  <object class="GtkImage" id="image6">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-dialog-question</property>
+    <property name="icon-size">1</property>
+  </object>
+  <object class="GtkImage" id="image7">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-dialog-warning</property>
+    <property name="icon-size">1</property>
+  </object>
+  <object class="GtkImage" id="image8">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-preferences</property>
+  </object>
+  <object class="GtkImage" id="image9">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-select-font</property>
+    <property name="icon-size">1</property>
+  </object>
+  <object class="GtkWindow" id="winMain">
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes">Firewall</property>
+    <property name="icon">/usr/share/icons/hicolor/48x48/apps/gufw.png</property>
+    <child>
+      <object class="GtkBox" id="GUIGufw">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <child>
+          <object class="GtkMenuBar" id="menubar1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkMenuItem" id="menu_file">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="label" translatable="yes">_File</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="menu1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuLog">
+                        <property name="label" translatable="yes">_Log...</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="image">image1</property>
+                        <property name="use_stock">False</property>
+                        <signal name="activate" handler="on_menuLog_activate" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="menuSeparator1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuQuit">
+                        <property name="label">gtk-quit</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="related_action">actionQuit</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <accelerator key="q" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="menu_edit">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="label" translatable="yes">_Edit</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="menu2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuAdd">
+                        <property name="label" translatable="yes">_Add Rule...</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="image">image2</property>
+                        <property name="use_stock">False</property>
+                        <signal name="activate" handler="on_btnAddWindow_clicked" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuRemove">
+                        <property name="label" translatable="yes">Re_move Rule</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="image">image3</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="Delete" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="on_btnRemove_clicked" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="menuSeparator2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuReload">
+                        <property name="label" translatable="yes">Re_load rules</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="image">image10</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="F5" signal="activate"/>
+                        <signal name="activate" handler="on_menuReload_activate" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuReset">
+                        <property name="label" translatable="yes">Re_set Firewall...</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="image">image4</property>
+                        <property name="use_stock">False</property>
+                        <signal name="activate" handler="on_menuReset_activate" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="menuSeparator3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuPreferences">
+                        <property name="label">_Preferences</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="image">image8</property>
+                        <property name="use_stock">False</property>
+                        <signal name="activate" handler="on_menuPreferences_activate" swapped="no"/>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="menu_help">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="label" translatable="yes">_Help</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="menu3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuDoc">
+                        <property name="label" translatable="yes">Documentation...</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="image">image5</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="F1" signal="activate"/>
+                        <signal name="activate" handler="on_menuDoc_activate" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="menuSeparator4">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuAnswers">
+                        <property name="label" translatable="yes">Get Help Online...</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="image">image6</property>
+                        <property name="use_stock">False</property>
+                        <signal name="activate" handler="on_menuAnswers_activate" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuBug">
+                        <property name="label" translatable="yes">Report a Problem...</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="image">image7</property>
+                        <property name="use_stock">False</property>
+                        <signal name="activate" handler="on_menuBug_activate" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuTranslate">
+                        <property name="label" translatable="yes">Translate this Application...</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="image">image9</property>
+                        <property name="use_stock">False</property>
+                        <signal name="activate" handler="on_menuTranslate_activate" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="menuSeparator5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuAbout">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="related_action">actionAbout</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkGrid" id="grid0">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="margin_left">5</property>
+            <property name="margin_right">5</property>
+            <property name="margin_top">5</property>
+            <property name="margin_bottom">5</property>
+            <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
+            <property name="column_spacing">5</property>
+            <child>
+              <object class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="margin_top">5</property>
+                <property name="margin_bottom">5</property>
+                <property name="hexpand">True</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="hexpand">True</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkGrid" id="blockStatus">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="row_spacing">5</property>
+                        <property name="column_spacing">5</property>
+                        <child>
+                          <object class="GtkLabel" id="lblDefaultPolicyOutgoing">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Outgoing:</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">2</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="lblDefaultPolicyIncoming">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Incoming:</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBoxText" id="cbPolicyIncoming">
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">False</property>
+                            <items>
+                              <item translatable="yes">Deny</item>
+                              <item translatable="yes">Reject</item>
+                              <item translatable="yes">Allow</item>
+                            </items>
+                            <signal name="changed" handler="on_cbPolicyIncoming_changed" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">1</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBoxText" id="cbPolicyOutgoing">
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">False</property>
+                            <items>
+                              <item translatable="yes">Deny</item>
+                              <item translatable="yes">Reject</item>
+                              <item translatable="yes">Allow</item>
+                            </items>
+                            <signal name="changed" handler="on_cbPolicyOutgoing_changed" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">2</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Firewall Status&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">0</property>
+                <property name="width">2</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkImage" id="imgShield">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="pixbuf">../media/disable_disable.png</property>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="top_attach">0</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkPaned" id="panelListeningRules">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkFrame" id="frame2">
+                    <property name="height_request">150</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="top_padding">5</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkGrid" id="grid2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="column_spacing">5</property>
+                            <child>
+                              <object class="GtkViewport" id="viewport1">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="hexpand">True</property>
+                                <property name="vexpand">True</property>
+                                <property name="resize_mode">queue</property>
+                                <child>
+                                  <object class="GtkScrolledWindow" id="scrolledwindow1">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <child>
+                                      <object class="GtkTreeView" id="tvRules">
+                                        <property name="width_request">310</property>
+                                        <property name="height_request">90</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="enable_search">False</property>
+                                        <property name="show_expanders">False</property>
+                                        <child internal-child="selection">
+                                          <object class="GtkTreeSelection" id="treeview-selection"/>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">3</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButtonBox" id="blockRulesbuttons">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="spacing">5</property>
+                                <property name="layout_style">end</property>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="btnAddWindow">
+                                    <property name="label">gtk-add</property>
+                                    <property name="visible">True</property>
+                                    <property name="sensitive">False</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <property name="has_tooltip">True</property>
+                                    <property name="tooltip_text" translatable="yes">Add a new firewall rule</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_stock">True</property>
+                                    <signal name="clicked" handler="on_btnAddWindow_clicked" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="btnRemove">
+                                    <property name="label">gtk-remove</property>
+                                    <property name="visible">True</property>
+                                    <property name="sensitive">False</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <property name="has_tooltip">True</property>
+                                    <property name="tooltip_text" translatable="yes">Remove selected rule</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_stock">True</property>
+                                    <signal name="clicked" handler="on_btnRemove_clicked" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">3</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Rules&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="resize">True</property>
+                    <property name="shrink">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="blockReport">
+                    <property name="height_request">100</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="top_padding">5</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkViewport" id="viewport2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="vexpand">True</property>
+                            <property name="resize_mode">queue</property>
+                            <child>
+                              <object class="GtkScrolledWindow" id="scrolledwindow2">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <child>
+                                  <object class="GtkTreeView" id="tvReport">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="enable_search">False</property>
+                                    <property name="show_expanders">False</property>
+                                    <child internal-child="selection">
+                                      <object class="GtkTreeSelection" id="treeview-selection2"/>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Listening Report&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="resize">True</property>
+                    <property name="shrink">False</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">1</property>
+                <property name="width">3</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="blockStatusBar">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkAlignment" id="alignment4">
+                <property name="width_request">12</property>
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkStatusbar" id="statusBar">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="spacing">2</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkBox" id="progressBarBlock">
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkProgressBar" id="progressBar">
+                    <property name="width_request">90</property>
+                    <property name="height_request">16</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="alignment5">
+                    <property name="width_request">12</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>

=== added file 'data/ui/preferences.ui.OTHER'
--- data/ui/preferences.ui.OTHER	1970-01-01 00:00:00 +0000
+++ data/ui/preferences.ui.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkDialog" id="dlgPreferences">
+    <property name="width_request">200</property>
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Firewall: Preferences</property>
+    <property name="resizable">False</property>
+    <property name="type_hint">dialog</property>
+    <signal name="delete-event" handler="on_dlgPref_delete_event" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="dialog-vbox1">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area1">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="btnClosePref">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_btnClosePref_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkGrid" id="grid0">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="border_width">3</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkGrid" id="grid1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="row_spacing">5</property>
+                        <child>
+                          <object class="GtkLabel" id="lblLogLevel">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">Logging:</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBoxText" id="cbLogLevel">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <items>
+                              <item translatable="yes">Off</item>
+                              <item translatable="yes">Low</item>
+                              <item translatable="yes">Medium</item>
+                              <item translatable="yes">High</item>
+                              <item translatable="yes">Full</item>
+                            </items>
+                            <signal name="changed" handler="on_cbLogLevel_changed" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">&lt;b&gt;ufw Options&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">0</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="frame2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="border_width">3</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkGrid" id="grid2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="column_spacing">5</property>
+                        <child>
+                          <object class="GtkCheckButton" id="cbGufwLog">
+                            <property name="label" translatable="yes">Logging</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_action_appearance">False</property>
+                            <property name="xalign">0</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" handler="on_cbGufwLog_toggled" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="cbReport">
+                            <property name="label" translatable="yes">Listening Report</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="has_tooltip">True</property>
+                            <property name="tooltip_text" translatable="yes">Ports in the listening state for TCP and open state for UDP.
+If enabled, will result in higher CPU usage.</property>
+                            <property name="use_action_appearance">False</property>
+                            <property name="xalign">0</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" handler="on_cbReport_toggled" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="cbNotifyPopup">
+                            <property name="label" translatable="yes">Show notifications</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="has_tooltip">True</property>
+                            <property name="tooltip_text" translatable="yes">Show notifications for new connections in Listening Report</property>
+                            <property name="use_action_appearance">False</property>
+                            <property name="xalign">0</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" handler="on_cbNotifyPopup_toggled" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">2</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Gufw Options&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">1</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="0">btnClosePref</action-widget>
+    </action-widgets>
+  </object>
+</interface>

=== added directory 'gufw'
=== added file 'gufw.desktop.in.OTHER'
--- gufw.desktop.in.OTHER	1970-01-01 00:00:00 +0000
+++ gufw.desktop.in.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,69 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Terminal=false
+Exec=gufw
+Name=Firewall Configuration
+Name[zh_TW]=防火牆設定
+Name[vi]=Cấu hình tường lửa
+Name[uk]=Конфігурація брандмауера
+Name[tr]=Güvenlik Duvarı Yapılandırması
+Name[sv]=Brandväggskonfiguration
+Name[sr]=Подешавање мрежне баријере
+Name[sq]=Konfigurimi i Murit mbrojtës
+Name[sl]=Nastavitev požarnega zidu
+Name[sk]=Nastavenia firewall
+Name[ru]=Настройка межсетевого экрана
+Name[pt_BR]=Configuração do Firewall
+Name[pl]=Konfiguracja zapory sieciowej
+Name[nl]=Firewall-instellingen
+Name[nb]=Konfigurasjon av brannmur
+Name[lv]=Ugunsmūra konfigurācija
+Name[id]=Konfigurasi firewall
+Name[hu]=Tűzfalbeállítás
+Name[hrx]=Fajř-vannt-ʃtelluŋŋ
+Name[hr]=Postavke vatrozida
+Name[gl]=Configuración da devasa
+Name[fr]=Configuration du pare-feu
+Name[fi]=Palomuurin asetukset
+Name[es]=Configuración del cortafuegos
+Name[en_AU]=Firewall Configuration
+Name[el]=Ρύθμιση τείχους προστασίας
+Name[de]=Firewall-Konfiguration
+Name[cs]=Nastavení firewallu
+Name[bg]=Конфигуриране на защитна стена
+Name[ast]=Configuración del tornafueos
+Name[ar]=إعدادات الجدار الناري
+Comment=Allows you to configure ufw firewall
+Comment[zh_TW]=允許您設定 ufw 防火牆
+Comment[vi]=Cho phép bạn cấu hình tường lửa ufw
+Comment[uk]=Дозволяє налаштувати брандмауер uwf
+Comment[tr]=Ufw güvenlik duvarı uygulamasını yapılandırmanıza yardımcı olur
+Comment[sv]=Låter dig konfigurera ufw-brandväggen
+Comment[sr]=Омогућава вам да подесите уфв мрежну баријеру
+Comment[sq]=Ju lejon te configuroni murin mbrojtes
+Comment[sl]=Omogoča nastavitev požarnega zidu ufw
+Comment[sk]=Umožní vám nastaviť ufw firewall
+Comment[ru]=Графическая оболочка для настройки межсетевого экрана ufw
+Comment[pt_BR]=Permite você configurar o firewall ufw
+Comment[pl]=Pozwala skonfigurować zaporę ufw
+Comment[nl]=Hiermee kunt u de ufw-firewall instellen
+Comment[nb]=Lar deg konfigurere ufw-brannmuren
+Comment[lv]=Ļauj jums konfigurēt ufw ugunsmūri
+Comment[id]=Memudahkan anda untuk mengkonfigurasi firewall ufw
+Comment[hu]=Az ufw tűzfal beállítása
+Comment[hrx]=Losst’tyģģ’ən ufw fajř-vannt ʃtellë
+Comment[hr]=Omogućava vam konfiguraciju ufw vatrozida
+Comment[gl]=Permítelle configurar a súa devasa ufw
+Comment[fr]=Vous permet de configurer le pare-feu « ufw »
+Comment[fi]=Graafinen käyttöliittymä ufw-palomuurin hallintaan
+Comment[es]=Permite configurar el cortafuegos ufw
+Comment[en_AU]=Allows you to configure ufw firewall
+Comment[el]=Σας επιτρέπει να ρυθμίσετε το τείχος προστασίας ufw
+Comment[de]=Erlaubt Ihnen, die ufw-Firewall zu konfigurieren
+Comment[cs]=Umožňuje nastavení firewallu ufw
+Comment[bg]=Дава ви възможност за настройка на защитната стена ufw
+Comment[ast]=Permite configurar el tornafuéu ufw
+Comment[ar]=يسٌمح لك بإعداد الجدار الناري UFW
+Icon=gufw.png
+Categories=System;Settings;

=== renamed directory 'gufw' => 'gufw.moved'
=== added file 'gufw/controller.py.OTHER'
--- gufw/controller.py.OTHER	1970-01-01 00:00:00 +0000
+++ gufw/controller.py.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,28 @@
+# Gufw 11.10.1 - http://gufw.tuxfamily.org
+# Copyright (C) 2008-2011 Marcos Alvarez Costales https://launchpad.net/~costales
+#
+# Gufw is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+# 
+# Gufw is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with Gufw; if not, see http://www.gnu.org/licenses for more
+# information.
+
+from model.Firewall import Firewall
+
+
+class Controller:
+    
+    def __init__(self):
+        self.firewall = Firewall()
+
+    def get_firewall(self):
+        return self.firewall
+        

=== added directory 'gufw/daemon'
=== added file 'gufw/daemon/gufw.Daemon.conf.OTHER'
--- gufw/daemon/gufw.Daemon.conf.OTHER	1970-01-01 00:00:00 +0000
+++ gufw/daemon/gufw.Daemon.conf.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd";>
+ <!-- Gufw 11.10.1 - http://gufw.tuxfamily.org
+      Copyright (C) 2008-2011 Marcos Alvarez Costales https://launchpad.net/~costales
+      
+      Gufw is free software; you can redistribute it and/or modify
+      it under the terms of the GNU General Public License as published by
+      the Free Software Foundation; either version 3 of the License, or
+      (at your option) any later version.
+      
+      Gufw is distributed in the hope that it will be useful,
+      but WITHOUT ANY WARRANTY; without even the implied warranty of
+      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      GNU General Public License for more details.
+      
+      You should have received a copy of the GNU General Public License
+      along with Gufw; if not, see http://www.gnu.org/licenses for more
+      information. -->
+<busconfig>
+  <type>system</type>
+  <!-- Only root can own the service -->
+  <policy user="root">
+    <allow own="gufw.Daemon"/>
+    <allow send_destination="gufw.Daemon"/>
+    <allow send_interface="gufw.Daemon"/>
+  </policy>
+
+  <!-- Allow anyone to invoke methods on the interfaces -->
+  <policy context="default">
+    <allow send_destination="gufw.Daemon"/>
+    <allow send_interface="gufw.Daemon"/>
+  </policy>
+</busconfig>
+

=== added file 'gufw/daemon/gufw.daemon.policy.in.OTHER'
--- gufw/daemon/gufw.daemon.policy.in.OTHER	1970-01-01 00:00:00 +0000
+++ gufw/daemon/gufw.daemon.policy.in.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE policyconfig PUBLIC
+ "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd";>
+ <!-- Gufw 11.10.1 - http://gufw.tuxfamily.org
+      Copyright (C) 2008-2011 Marcos Alvarez Costales https://launchpad.net/~costales
+      
+      Gufw is free software; you can redistribute it and/or modify
+      it under the terms of the GNU General Public License as published by
+      the Free Software Foundation; either version 3 of the License, or
+      (at your option) any later version.
+      
+      Gufw is distributed in the hope that it will be useful,
+      but WITHOUT ANY WARRANTY; without even the implied warranty of
+      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      GNU General Public License for more details.
+      
+      You should have received a copy of the GNU General Public License
+      along with Gufw; if not, see http://www.gnu.org/licenses for more
+      information. -->
+<policyconfig>
+
+  <vendor>The Gufw Project</vendor>
+  <vendor_url>http://gufw.tuxfamily.org</vendor_url>
+  <icon_name>gufw</icon_name>
+
+  <action id="gufw.daemon.start">
+    <_description>Manage firewall configuration</_description>
+    <_message>You need to authenticate to modify the firewall configuration.</_message>
+    <defaults>
+      <allow_inactive>no</allow_inactive>
+      <allow_active>auth_admin_keep</allow_active>
+    </defaults>
+  </action>
+
+</policyconfig>
\ No newline at end of file

=== added file 'gufw/daemon/gufw_daemon.py.OTHER'
--- gufw/daemon/gufw_daemon.py.OTHER	1970-01-01 00:00:00 +0000
+++ gufw/daemon/gufw_daemon.py.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,469 @@
+#!/usr/bin/env python
+# Gufw 11.10.1 - http://gufw.tuxfamily.org
+# Copyright (C) 2008-2011 Marcos Alvarez Costales https://launchpad.net/~costales
+#
+# Gufw is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+# 
+# Gufw is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with Gufw; if not, see http://www.gnu.org/licenses for more
+# information.
+
+import time
+import commands
+
+from gi.repository import GObject
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+from dbus.exceptions import DBusException
+
+class DemoException(dbus.DBusException):
+    _dbus_error_name = 'gufw.DemoException'
+
+
+
+class PermissionDeniedByPolicy(dbus.DBusException):
+    _dbus_error_name = 'com.ubuntu.DeviceDriver.PermissionDeniedByPolicy'
+
+
+
+class Gufw_daemon(dbus.service.Object):
+    
+    def __init__(self, conn=None, object_path=None, bus_name=None):
+        dbus.service.Object.__init__(self, conn,object_path, bus_name)
+        self.enforce_polkit = True
+        self.dbus_info      = None
+        self.polkit         = None
+        self.__caller_pid__ = 0
+        
+    @dbus.service.method("gufw.SampleInterface",
+                         in_signature='', out_signature='',
+                         sender_keyword='sender', connection_keyword='conn')
+    def RaiseException(self, sender=None, conn=None):
+        raise DemoException('RaiseException Gufw method')
+    
+    @dbus.service.method("gufw.SampleInterface",
+                         in_signature='', out_signature='',
+                         sender_keyword='sender', connection_keyword='conn')
+    def Exit(self, sender=None, conn=None):
+        mainloop.quit()
+            
+
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='', out_signature='',
+                     sender_keyword='sender', connection_keyword='conn')
+    def fw_unlock(self, sender=None, conn=None):
+        """Verify that sender has a given PolicyKit privilege."""
+        if sender is None and conn is None:
+            raise
+        
+        # Get peer PID
+        if self.dbus_info is None:
+            self.dbus_info = dbus.Interface(conn.get_object('org.freedesktop.DBus',
+                '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        pid = self.dbus_info.GetConnectionUnixProcessID(sender)
+            
+        if self.__caller_pid__ == 0:
+            self.__caller_pid__ = pid
+
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='', out_signature='s',
+                     sender_keyword='sender', connection_keyword='conn')
+    def get_status(self, sender=None, conn=None):
+        """Get Initial status"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return "no_access"
+        
+        ufw_status = commands.getstatusoutput("LANGUAGE=C ufw status")
+        if ufw_status[1].find("Status: active") != -1:
+            return "enable"
+        else:
+            return "disable"
+
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='s', out_signature='s',
+                     sender_keyword='sender', connection_keyword='conn')
+    def get_policy(self, policy, sender=None, conn=None):
+        """Get Initial incoming policy"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return "no_access"
+        
+        if policy == "incoming":
+            ufw_default_incoming = commands.getstatusoutput("grep DEFAULT_INPUT_POLICY /etc/default/ufw")
+            if ufw_default_incoming[1].find("ACCEPT") != -1:
+                return "allow"
+            elif ufw_default_incoming[1].find("DROP") != -1:
+                return "deny"
+            elif ufw_default_incoming[1].find("REJECT") != -1:
+                return "reject"
+        
+        elif policy == "outgoing":
+            ufw_default_outgoing = commands.getstatusoutput("grep DEFAULT_OUTPUT_POLICY /etc/default/ufw")
+            if ufw_default_outgoing[1].find("ACCEPT") != -1:
+                return "allow"
+            elif ufw_default_outgoing[1].find("DROP") != -1:
+                return "deny"
+            elif ufw_default_outgoing[1].find("REJECT") != -1:
+                return "reject"
+
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='', out_signature='s',
+                     sender_keyword='sender', connection_keyword='conn')
+    def get_ufw_logging(self, sender=None, conn=None):
+        """Get Initial ufw Logging"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return "no_access"
+        
+        ufw_cmd = commands.getstatusoutput("cat /etc/ufw/ufw.conf")
+        if ufw_cmd[1].find("LOGLEVEL=full") != -1:
+            return "full"
+        elif ufw_cmd[1].find("LOGLEVEL=high") != -1:
+            return "high"
+        elif ufw_cmd[1].find("LOGLEVEL=medium") != -1:
+            return "medium"
+        elif ufw_cmd[1].find("LOGLEVEL=low") != -1:
+            return "low"
+        else:
+            return "off"
+    
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='s', out_signature='s',
+                     sender_keyword='sender', connection_keyword='conn')
+    def set_status(self, status, sender=None, conn=None):
+        """Set status FW (enable/disable)"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return "no_access"
+        
+        if status == "enable":
+            cmd = "ufw enable"
+        else:
+            cmd = "ufw disable"
+            
+        commands.getstatusoutput(cmd)
+        return cmd
+    
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='ss', out_signature='s',
+                     sender_keyword='sender', connection_keyword='conn')
+    def set_policy(self, direction, policy, sender=None, conn=None):
+        """Set Policy (Incoming & Outgoing = allow/deny/reject)"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return "no_access"
+        
+        if direction == "incoming":
+            if policy == "allow":
+                cmd = "ufw default allow incoming"
+            elif policy == "deny":
+                cmd = "ufw default deny incoming"
+            elif policy == "reject":
+                cmd = "ufw default reject incoming"
+                
+        elif direction == "outgoing":
+            if policy == "allow":
+                cmd = "ufw default allow outgoing"
+            elif policy == "deny":
+                cmd = "ufw default deny outgoing"
+            elif policy == "reject":
+                cmd = "ufw default reject outgoing"
+        
+        commands.getstatusoutput(cmd)
+        return cmd
+    
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='s', out_signature='s',
+                     sender_keyword='sender', connection_keyword='conn')
+    def set_ufw_logging(self, logging, sender=None, conn=None):
+        """Get log level (off/low/medium/high/full)"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return "no_access"
+        
+        if logging == "off":
+            cmd = "ufw logging off"
+        elif logging == "low":
+            cmd = "ufw logging low"
+        elif logging == "medium":
+            cmd = "ufw logging medium"
+        elif logging == "high":
+            cmd = "ufw logging high"
+        elif logging == "full":
+            cmd = "ufw logging full"
+        
+        commands.getstatusoutput(cmd)
+        return cmd
+    
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='', out_signature='s',
+                     sender_keyword='sender', connection_keyword='conn')
+    def reset_ufw(self, sender=None, conn=None):
+        """Reset ufw config"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return "no_access"
+        
+        cmd = "ufw --force reset"
+        commands.getstatusoutput(cmd)
+        return cmd
+    
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='', out_signature='',
+                     sender_keyword='sender', connection_keyword='conn')
+    def erase_gufw_log(self, sender=None, conn=None):
+        """Erase all Gufw Logs"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return
+            
+        commands.getstatusoutput("rm /var/log/gufw_log.txt")
+    
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='s', out_signature='s',
+                     sender_keyword='sender', connection_keyword='conn')
+    def remove_rule(self, number, sender=None, conn=None):
+        """Remove rule from firewall"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return "no_access"
+        
+        cmd = "ufw --force delete &number".replace("&number", number)
+        commands.getstatusoutput(cmd)
+        return cmd
+    
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='ss', out_signature='',
+                     sender_keyword='sender', connection_keyword='conn')
+    def add_gufw_log(self, gufw_logging, line, sender=None, conn=None):
+        """Add a command to Gufw Log"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return
+            
+        if gufw_logging == "enable":
+            msg = "[" + time.strftime('%x %X') + "] " + line
+            cmd = "echo '&' >> /var/log/gufw_log.txt".replace("&", msg)
+            commands.getstatusoutput(cmd)
+    
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='', out_signature='i',
+                     sender_keyword='sender', connection_keyword='conn')
+    def get_number_rules(self, sender=None, conn=None):
+        """Get the actual number of rules"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return 0
+        
+        rules = commands.getstatusoutput("LANGUAGE=C ufw status numbered")
+        rules_lines = rules[1].split("\n")
+        return_number = 0
+        
+        for rule in rules_lines:
+            if rule.find("ALLOW")  != -1 or \
+               rule.find("DENY")   != -1 or \
+               rule.find("LIMIT")  != -1 or \
+               rule.find("REJECT") != -1:
+                
+                return_number += 1
+        
+        return return_number
+    
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='', out_signature='as',
+                     sender_keyword='sender', connection_keyword='conn')
+    def get_rule_list(self, sender=None, conn=None):
+        """Get all List Rules"""
+        return_rules = []
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return return_rules
+        
+        rules = commands.getstatusoutput("LANGUAGE=C ufw status numbered")
+        rules_lines = rules[1].split("\n")
+        
+        for rule in rules_lines:
+            if rule.find("ALLOW")  != -1 or \
+               rule.find("DENY")   != -1 or \
+               rule.find("LIMIT")  != -1 or \
+               rule.find("REJECT") != -1:
+                
+                rule_aux = rule.split("] ")
+                return_rules.append(rule_aux[1])
+        
+        return return_rules
+    
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='', out_signature='as',
+                     sender_keyword='sender', connection_keyword='conn')
+    def get_listening_report(self, sender=None, conn=None):
+        """Get listening report"""
+        return_report = []
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return return_report
+        
+        actual_protocol = "None"
+        ufw_report = commands.getstatusoutput("LANGUAGE=C ufw show listening")
+        report_lines = ufw_report[1].replace("\n   [","%")
+        report_lines = report_lines.split("\n")
+        
+        for descomponent_report in report_lines:
+            # Set actual protocol
+            if descomponent_report == "":
+                continue
+            if descomponent_report.find("tcp6:") != -1:
+                actual_protocol = "TCP6"
+                continue
+            if descomponent_report.find("tcp:") != -1:
+                actual_protocol = "TCP"
+                continue
+            if descomponent_report.find("udp6:") != -1:
+                actual_protocol = "UDP6"
+                continue
+            if descomponent_report.find("udp:") != -1:
+                actual_protocol = "UDP"
+                continue
+                
+            policy = "None"
+            descomponent_report = descomponent_report.strip()
+            descomponent_report = descomponent_report.replace("(","")
+            descomponent_report = descomponent_report.replace(")","")
+            
+            if descomponent_report.find("]") != -1:
+                descomponent_policy = descomponent_report.split("]")
+                if descomponent_policy[1].find("allow") != -1:
+                    policy = "allow"
+                elif descomponent_policy[1].find("deny") != -1:
+                    policy = "deny"
+                elif descomponent_policy[1].find("reject") != -1:
+                    policy = "reject"
+                elif descomponent_policy[1].find("limit") != -1:
+                    policy = "limit"
+            
+            descomponent_report = descomponent_report.split("%")
+            descomponent_fields = descomponent_report[0].split(" ")
+            # Order: protocol % port % address % application % policy
+            return_report.append(actual_protocol + "%" + descomponent_fields[0] + "%" + descomponent_fields[1] + "%" + descomponent_fields[2] + "%" + policy)
+        
+        return return_report
+    
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='s', out_signature='s',
+                     sender_keyword='sender', connection_keyword='conn')
+    def get_gufw_log(self, log , sender=None, conn=None):
+        """Get Gufw Log"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return "no_access"
+        
+        cmd = commands.getstatusoutput("cat /var/log/gufw_log.txt")
+        if cmd[0] != 0:
+            return ""
+        
+        if log == 'local':
+            return cmd[1]
+        else:
+            log_txt = ""
+            for line in cmd[1].split('\n'):
+                line = line.split('] ')
+                if log_txt == "":
+                    log_txt = line[1]
+                else:
+                    log_txt = log_txt + '\n' + line[1]
+            return log_txt
+    
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='iiisss', out_signature='',
+                     sender_keyword='sender', connection_keyword='conn')
+    def update_config_file(self, width, height, vpanel, gufw_logging, listening_status, notify_popup, sender=None, conn=None):
+        """Save actual FW config when quit Gufw"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return
+            
+        commands.getstatusoutput("mkdir /etc/gufw")
+        size = "&1x&2"
+        size = size.replace("&1", str(width))
+        size = size.replace("&2", str(height))
+        commands.getstatusoutput("echo 'sizewin=&' > /etc/gufw/gufw.cfg".replace('&', size))
+        commands.getstatusoutput("echo 'vpanel=&' >> /etc/gufw/gufw.cfg".replace('&', str(vpanel)))
+        commands.getstatusoutput("echo 'log=&' >> /etc/gufw/gufw.cfg".replace('&', gufw_logging))
+        commands.getstatusoutput("echo 'listening=&' >> /etc/gufw/gufw.cfg".replace('&', listening_status))
+        commands.getstatusoutput("echo 'notify_popup=&' >> /etc/gufw/gufw.cfg".replace('&', notify_popup))
+    
+    @dbus.service.method("gufw.SampleInterface",
+                     in_signature='bsssssssss', out_signature='s',
+                     sender_keyword='sender', connection_keyword='conn')
+    def add_rule(self, is_program, insert_number, action, direction, log, protocol, fromip, fromport, toip, toport, sender=None, conn=None):
+        """Add rule to firewall"""
+        dbus_info_aux = dbus.Interface(conn.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus/Bus', False), 'org.freedesktop.DBus')
+        if ( self.__caller_pid__ == 0 ) or ( self.__caller_pid__ != dbus_info_aux.GetConnectionUnixProcessID(sender) ):
+            return "no_access"
+        
+        # Component rule
+        if is_program:
+            rule = "ufw insert &insert &action &direction &log proto &protocol from &fromIP port &fromPort to &toIP port &toPort"
+        else:
+            rule = "ufw insert &insert &action &direction &log &toPort" 
+        # Insert Number
+        if insert_number != "0":
+            rule = rule.replace("&insert", insert_number)
+        else:
+            rule = rule.replace("insert &insert ", "")
+        # Action
+        rule = rule.replace("&action", action)
+        # Direction
+        rule = rule.replace("&direction", direction)
+        # Log
+        if log != "log-default":
+            rule = rule.replace("&log", log)
+        else:
+            rule = rule.replace("&log ", "")
+        # Protocol
+        if protocol != "both":
+            rule = rule.replace("&protocol", protocol)
+        else:
+            rule = rule.replace(" proto &protocol ", " ")
+        # FROM
+        if fromip != "":
+            rule = rule.replace("&fromIP", fromip)
+        else:
+            rule = rule.replace("&fromIP", "any")
+        if fromport != "":
+            rule = rule.replace("&fromPort", fromport)
+        else:
+            rule = rule.replace(" port &fromPort ", " ")
+        # TO
+        if toip != "":
+            rule = rule.replace("&toIP", toip)
+        else:
+            rule = rule.replace("&toIP", "any")
+        if toport != "":
+            rule = rule.replace("&toPort", toport)
+        else:
+            rule = rule.replace(" port &toPort", "")
+        
+        commands.getstatusoutput(rule)
+        return rule
+
+
+if __name__ == '__main__':
+    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+    
+    bus = dbus.SystemBus()
+    name = dbus.service.BusName("gufw.Daemon", bus)
+    object = Gufw_daemon(bus, '/Gufw_daemon')
+
+    mainloop = GObject.MainLoop()
+    mainloop.run()

=== added file 'gufw/gufw.py'
--- gufw/gufw.py	1970-01-01 00:00:00 +0000
+++ gufw/gufw.py	2011-11-25 02:17:25 +0000
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+# Gufw 11.10.1 - http://gufw.tuxfamily.org
+# Copyright (C) 2008-2011 Marcos Alvarez Costales https://launchpad.net/~costales
+#
+# Gufw is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+# 
+# Gufw is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with Gufw; if not, see http://www.gnu.org/licenses for more
+# information.
+
+from util         import Validation
+from controller   import Controller 
+from view.guiGufw import GuiGufw
+
+
+if __name__ == "__main__":
+    
+    # Check config file & is running previously
+    appInstance = Validation()
+    
+    # Controller
+    controler = Controller()
+    
+    # Firewall
+    firewall = controler.get_firewall()
+    
+    # Show GUI
+    app = GuiGufw(firewall)
+    
+    # Remove current instance
+    appInstance.exit_application()
+    

=== added directory 'gufw/model'
=== added file 'gufw/model/Firewall.py.OTHER'
--- gufw/model/Firewall.py.OTHER	1970-01-01 00:00:00 +0000
+++ gufw/model/Firewall.py.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,202 @@
+# Gufw 11.10.0 - http://gufw.tuxfamily.org
+# Copyright (C) 2008-2011 Marcos Alvarez Costales https://launchpad.net/~costales
+#
+# Gufw is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+# 
+# Gufw is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with Gufw; if not, see http://www.gnu.org/licenses for more
+# information.
+
+import commands
+import time
+import os
+
+import dbus
+
+# Work around a bug in python-distutils-extra auto, fixed in p-d-e rev 258
+# org.freedesktop.PolicyKit1
+
+
+class Firewall():
+    """Set or get the Firewall properties"""
+    
+    WIN_WIDTH = 336
+    WIN_HEIGHT = 334
+    WIN_VPANEL = 153
+    
+    def __init__(self):
+        bus = dbus.SystemBus()
+        remote_object = bus.get_object("gufw.Daemon", "/Gufw_daemon")
+        self.iface = dbus.Interface(remote_object, "gufw.SampleInterface")
+        
+        self.gufw_logging     = "disable"
+        self.listening_status = "disable"
+        self.notify_popup     = "disable"
+        self.width            = self.WIN_WIDTH
+        self.height           = self.WIN_HEIGHT
+        self.vpanel           = self.WIN_VPANEL
+        self._read_config_file()
+    
+    def unlock(self):
+        """Unlock by PolicyKit"""
+        try:
+            self.iface.fw_unlock()
+        except:
+            return "no_access"
+            
+        self.status           = self.iface.get_status()
+        self.incoming_policy  = self.iface.get_policy("incoming")
+        self.outgoing_policy  = self.iface.get_policy("outgoing")
+        self.ufw_logging      = self.iface.get_ufw_logging()
+        return "access"
+    
+    def get_window_size(self):
+        """Return the width & height"""
+        return self.width, self.height
+    
+    def get_vpanel_pos(self):
+        """Return the Vpanel position"""
+        return self.vpanel
+        
+    def get_status(self):
+        """Get status FW (enable/disable)"""
+        return self.status
+    
+    def set_status(self, status):
+        """Set status FW (enable/disable)"""
+        self.status = status
+        self._add_gufw_log(self.iface.set_status(status))
+    
+    def get_policy(self, policy):
+        """Get Policy (Incoming & Outgoing = allow/deny/reject)"""
+        if policy == "incoming":
+            return self.incoming_policy
+        elif policy == "outgoing":
+            return self.outgoing_policy
+    
+    def set_policy(self, direction, policy):
+        """Set Policy (Incoming & Outgoing = allow/deny/reject)"""
+        if direction == "incoming":
+            if policy == "allow":
+                self.incoming_policy = "allow"
+            elif policy == "deny":
+                self.incoming_policy = "deny"
+            elif policy == "reject":
+                self.incoming_policy = "reject"
+                
+        elif direction == "outgoing":
+            if policy == "allow":
+                self.outgoing_policy = "allow"
+            elif policy == "deny":
+                self.outgoing_policy = "deny"
+            elif policy == "reject":
+                self.outgoing_policy = "reject"
+        
+        self._add_gufw_log(self.iface.set_policy(direction, policy))
+    
+    def get_ufw_logging(self):
+        """Get logging (enable/disable)"""
+        return self.ufw_logging
+    
+    def set_ufw_logging(self, logging):
+        """Get log level (off/on/low/medium/high/full)"""
+        self.ufw_logging = logging
+        self._add_gufw_log(self.iface.set_ufw_logging(logging))
+    
+    def get_listening_report(self):
+        """Get listening report"""
+        return self.iface.get_listening_report()
+            
+    def get_listening_status(self):
+        """Get listening status (enable/disable)"""
+        return self.listening_status
+    
+    def set_listening_status(self, status):
+        """Set listening status (enable/disable)"""
+        self.listening_status = status
+    
+    def get_notify_popup(self):
+        """Get notify popup status (enable/disable)"""
+        return self.notify_popup
+    
+    def set_notify_popup(self, status):
+        """Set notify popup status (enable/disable)"""
+        self.notify_popup = status
+    
+    def reset_ufw(self):
+        """Reset cofig ufw"""
+        self._add_gufw_log(self.iface.reset_ufw())
+        
+    def get_gufw_logging(self):
+        """Get the Gufw Logging Status (enable/disable)"""
+        return self.gufw_logging
+        
+    def set_gufw_logging(self, status):
+        """Set the Gufw Logging Status (enable/disable)"""
+        self.gufw_logging = status
+    
+    def get_gufw_log(self, log = 'local'):
+        """Get Gufw Log"""
+        return self.iface.get_gufw_log(log)
+    
+    def _add_gufw_log(self, line):
+        """Add a command to Gufw Log"""
+        self.iface.add_gufw_log(self.gufw_logging, line)
+        
+    def erase_gufw_log(self):
+        """Erase all Gufw Logs"""
+        self.iface.erase_gufw_log()
+        
+    def add_rule(self, is_program, insert_number, action, direction, log, protocol, fromip, fromport, toip, toport):
+        """Add rule to firewall"""
+        self._add_gufw_log(self.iface.add_rule(is_program, insert_number, action, direction, log, protocol, fromip, fromport, toip, toport))
+    
+    def remove_rule(self, number):
+        """Remove rule from firewall"""
+        self._add_gufw_log(self.iface.remove_rule(str(number)))
+    
+    def get_number_rules(self):
+        """Get the actual number of rules"""
+        return self.iface.get_number_rules()
+    
+    def get_rule_list(self):
+        """Get all List Rules"""
+        return self.iface.get_rule_list()
+    
+    def update_config_file(self, width, height, vpanel):
+        """Save actual FW config when quitting Gufw"""
+        self.iface.update_config_file(width, height, vpanel, self.gufw_logging, self.listening_status, self.notify_popup)
+        self.iface.Exit()
+    
+    def _read_config_file(self):
+        """Get previous values from config file """
+        file = commands.getstatusoutput("cat /etc/gufw/gufw.cfg")
+        if file[0] != 0:
+            return
+        cfg_file = file[1].split("\n")
+        for line in cfg_file:
+            # Width & height
+            if line.find("sizewin=") != -1:
+                width_height_split = (line.replace("sizewin=", "")).split("x")
+                self.width = int(width_height_split[0])
+                self.height = int(width_height_split[1])
+            # Vpanel position
+            if line.find("vpanel=") != -1:
+                self.vpanel = int(line.replace("vpanel=", ""))
+            # Gufw Logging
+            if line.find("log=enable") != -1:
+                self.gufw_logging = "enable"
+            # Listening Status
+            if line.find("listening=enable") != -1:
+                self.listening_status = "enable"
+            # Notify Status
+            if line.find("notify_popup=enable") != -1:
+                self.notify_popup = "enable"

=== added file 'gufw/util.py.OTHER'
--- gufw/util.py.OTHER	1970-01-01 00:00:00 +0000
+++ gufw/util.py.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,92 @@
+# Gufw 11.10.1 - http://gufw.tuxfamily.org
+# Copyright (C) 2008-2011 Raul Soriano https://launchpad.net/~gatoloko
+#                         Marcos Alvarez Costales https://launchpad.net/~costales
+#
+# Gufw is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+# 
+# Gufw is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with Gufw; if not, see http://www.gnu.org/licenses for more
+# information.
+
+import os
+
+
+
+class Validation:
+    """Manages application instances & config file"""
+    def __init__(self):
+        self.pid_file = '/tmp/gufw.pid'
+        self._check_instance()
+        self._start_application()
+    
+    def _check_instance(self):
+        """Check whether the app is running"""
+        if not os.path.isfile(self.pid_file):
+            return
+
+        # Read the pid from file
+        pid = 0
+        try:
+            file = open(self.pid_file, 'rt')
+            data = file.read()
+            file.close()
+            pid = int(data)
+        except:
+            pass
+        
+        # Check whether the process specified exists
+        if 0 == pid:
+            return
+        try:
+            os.kill(pid, 0) # exception if the pid is invalid
+        except:
+            return
+        
+        exit(0)
+    
+    def _start_application(self):
+        """Called when there is no running instances, storing the new pid"""
+        file = open(self.pid_file, 'wt')
+        file.write(str(os.getpid()))
+        file.close()
+    
+    def exit_application(self):
+        """Close app"""
+        try:
+            os.remove(self.pid_file)
+        except:
+            pass
+
+
+
+class Path:
+    """Return app paths"""
+    def get_ui_path(self, file_name):
+        """Return Path GUI"""
+        path = os.path.join('/usr', 'share', 'gufw', 'ui', file_name)
+        if not os.path.exists(path):
+            path = os.path.join('data', 'ui', file_name)
+        return path
+    
+    def get_shield_path(self, incoming, outgoing):
+        """Return Path Shields"""
+        file_name = incoming + '_' + outgoing + '.png'
+        path = os.path.join('/usr', 'share', 'gufw', 'media', file_name)
+        if not os.path.exists(path):
+            path = os.path.join('data', 'media', file_name)
+        return path
+        
+    def get_icon_path(self):
+        """Return Icon app"""
+        path = os.path.join('/usr', 'share', 'icons', 'hicolor', '48x48', 'apps', 'gufw.png')
+        if not os.path.exists(path):
+            path = os.path.join('data', 'media', 'gufw.png')
+        return path

=== added directory 'gufw/view'
=== added file 'gufw/view/guiGufw.py.OTHER'
--- gufw/view/guiGufw.py.OTHER	1970-01-01 00:00:00 +0000
+++ gufw/view/guiGufw.py.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,1211 @@
+# -*- coding: utf-8 -*-
+# Gufw 11.10.0 - http://gufw.tuxfamily.org
+# Copyright (C) 2008-2011 Marcos Alvarez Costales https://launchpad.net/~costales
+#
+# Gufw is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+# 
+# Gufw is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with Gufw; if not, see http://www.gnu.org/licenses for more
+# information.
+
+import gettext
+import threading
+import webbrowser
+
+from gi.repository import Gtk, Gdk, GLib
+from gi.repository import GObject
+from gi.repository import Polkit
+import dbus
+
+from util import Path
+
+from gettext import gettext as _
+gettext.textdomain('gufw')
+
+__color__ = { "gray"   : "#BAB5AB",  # Basic 3D Medium
+              "green"  : "#267726",  # Accent Green Dark
+              "red"    : "#DF421E",  # Accent Red
+              "orange" : "#D1940C",  # Accent Yellow Dark
+              "blue"   : "#314E6C" } # Blue Shadow
+
+
+class GuiGufw:
+    """All events"""
+    FONT = "ubuntu 10"
+    TIME_REFRESH_REPORT = 1200
+    TIME_STATUS_BAR = 8
+    
+    def __init__(self, firewall):
+        self.fw = firewall
+        self.path = Path()
+        self.ui_builder = Gtk.Builder()
+        self._set_ui(self.ui_builder)
+        GLib.set_application_name("Gufw")
+        Gtk.main()
+    
+    def _set_ui(self, builder):
+        """Set the interfaces"""
+        builder.set_translation_domain("gufw")
+        # Set windows
+        self._set_ui_main(builder)
+        self._set_ui_models(builder)
+        self._set_ui_add(builder)
+        self._set_ui_preferences(builder)
+        self._set_ui_log(builder)
+        self._set_ui_switch()
+        self._set_ui_lock()
+        self.win_main.show()
+    
+    def _set_ui_main(self, builder):
+        """Set the window Main"""
+        self.first_run_report = True
+        self.previous_report = []
+        builder.add_from_file(self.path.get_ui_path('main.ui'))
+        self.win_main = builder.get_object('winMain')
+        # Window size
+        width, height = self.fw.get_window_size()
+        if width == Gdk.Screen.width() and height== Gdk.Screen.height():
+            self.win_main.maximize()
+        else:
+            self.win_main.resize(width, height)
+        # Icon
+        self.win_main.set_default_icon_from_file("/usr/share/icons/hicolor/48x48/apps/gufw.png")
+        # Panel
+        self.panelmain = builder.get_object("panelListeningRules")
+        self.panelmain.set_position(self.fw.get_vpanel_pos())
+        # Main Window Objects 
+        self.cb_policy_incoming  = builder.get_object("cbPolicyIncoming")
+        self.cb_policy_outgoing  = builder.get_object("cbPolicyOutgoing")
+        self.image_shield        = builder.get_object("imgShield")
+        self.block_report        = builder.get_object("blockReport")
+        self.btn_add_window      = builder.get_object("btnAddWindow")
+        self.btn_remove_rule     = builder.get_object("btnRemove")
+        self.status_bar          = builder.get_object("statusBar")
+        self.progress_bar        = builder.get_object("progressBar")
+        self.progress_bar_block  = builder.get_object("progressBarBlock")
+        # Needed for firewall switch & lock button
+        self.block_status        = builder.get_object("blockStatus")
+        self.block_buttons       = builder.get_object("blockRulesbuttons")
+        self.hiddenwindow        = builder.get_object("hiddenwindow")
+        # Objects for Global Menu in Unity
+        self.menu_file      = builder.get_object("menu_file")
+        self.menu_edit      = builder.get_object("menu_edit")
+        self.menu_help      = builder.get_object("menu_help")
+        # Menu
+        self.menu_log       = builder.get_object("menuLog")
+        self.menu_quit      = builder.get_object("actionQuit")
+        self.menu_add       = builder.get_object("menuAdd")
+        self.menu_remove    = builder.get_object("menuRemove")
+        self.menu_reload    = builder.get_object("menuReload")
+        self.menu_reset     = builder.get_object("menuReset")
+        self.menu_pref      = builder.get_object("menuPreferences")
+        self.menu_doc       = builder.get_object("menuDoc")
+        self.menu_answers   = builder.get_object("menuAnswers")
+        self.menu_bug       = builder.get_object("menuBug")
+        self.menu_translate = builder.get_object("menuTranslate")
+        self.menu_about     = builder.get_object("actionAbout")
+        # Set minimal signals to launch Gufw
+        self.win_main.connect('delete-event', self.on_winMain_delete_event)
+        self.menu_quit.connect('activate', self.on_menuQuit_activate)
+        self.menu_about.connect('activate', self.on_menuAbout_activate)
+        # Show Listening report
+        if self.fw.get_listening_status() == "enable":
+            self.block_report.show()
+            
+    def _set_ui_models(self, builder):
+        """Set the models in main window"""
+        self.render_txt = Gtk.CellRendererText()
+        self.render_txt.set_property("font", self.FONT)
+        
+        self.rules_model = Gtk.ListStore(GObject.TYPE_INT,    GObject.TYPE_STRING, GObject.TYPE_STRING,
+                                         GObject.TYPE_STRING, GObject.TYPE_STRING)
+        
+        self.tv_rules = builder.get_object("tvRules")
+        self.tv_rules.set_model(self.rules_model)
+        self.tv_rules.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+        
+        tree_header = Gtk.TreeViewColumn (_("To"), self.render_txt, text=1, foreground=4)
+        tree_header.set_expand(True)
+        tree_header.set_resizable(True)
+        self.tv_rules.append_column (tree_header)
+        tree_header = Gtk.TreeViewColumn (_("Action"), self.render_txt, text=2, foreground=4)
+        tree_header.set_expand(True)
+        tree_header.set_resizable(True)
+        self.tv_rules.append_column (tree_header)
+        tree_header = Gtk.TreeViewColumn (_("From"), self.render_txt, text=3, foreground=4)
+        tree_header.set_expand(True)
+        self.tv_rules.append_column (tree_header)
+        
+        # Listening Report
+        self.report_model = Gtk.ListStore(GObject.TYPE_INT,    GObject.TYPE_STRING, GObject.TYPE_STRING,
+                                          GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING) 
+        self.tv_report = builder.get_object("tvReport")
+        self.tv_report.set_model(self.report_model)
+        self.tv_report.get_selection().set_mode(Gtk.SelectionMode.NONE)
+        
+        tree_header = Gtk.TreeViewColumn (_("Protocol"), self.render_txt, text=1, foreground=5)
+        tree_header.set_resizable(True)
+        self.tv_report.append_column (tree_header)
+        tree_header = Gtk.TreeViewColumn (_("Port"), self.render_txt, text=2, foreground=5)
+        tree_header.set_resizable(True)
+        self.tv_report.append_column (tree_header)
+        tree_header = Gtk.TreeViewColumn (_("Address"), self.render_txt, text=3, foreground=5)
+        tree_header.set_resizable(True)
+        self.tv_report.append_column (tree_header)
+        tree_header = Gtk.TreeViewColumn (_("Application"), self.render_txt, text=4, foreground=5)
+        self.tv_report.append_column (tree_header)
+    
+    def _set_ui_add(self, builder):
+        """Set the window Add"""
+        builder.add_from_file(self.path.get_ui_path('add.ui'))
+        self.dlg_add = builder.get_object('dlgAdd')
+        self.dlg_add.set_transient_for(self.win_main)
+        # Preconf
+        self.insert_number_preconf = builder.get_object("sbInsertNumberPreconf")
+        self.direction_preconf     = builder.get_object("cbDirectionPreconf")
+        self.direction_preconf.set_active(0)
+        self.action_preconf        = builder.get_object("cbActionPreconf")
+        self.action_preconf.set_active(0)
+        self.log_preconf           = builder.get_object("cbLogPreconf")
+        self.log_preconf.set_active(0)
+        self.type_preconf          = builder.get_object("cbTypePreconf")
+        self.type_preconf.set_active(0)
+        self.program_preconf       = builder.get_object("cbProgramPreconf")
+        self.program_preconf.set_active(6)
+        self.service_preconf       = builder.get_object("cbServicePreconf")
+        self.service_preconf.set_active(7)
+
+        # Simple
+        self.insert_number_simple = builder.get_object("sbInsertNumberSimple")
+        self.direction_simple     = builder.get_object("cbDirectionSimple")
+        self.direction_simple.set_active(0)
+        self.action_simple        = builder.get_object("cbActionSimple")
+        self.action_simple.set_active(0)
+        self.log_simple           = builder.get_object("cbLogSimple")
+        self.log_simple.set_active(0)
+        self.port_simple          = builder.get_object("entryPortSimple")
+        self.proto_simple         = builder.get_object("cbProtoSimple")
+        self.proto_simple.set_active(0)
+        # Advanced
+        self.insert_number_advanced = builder.get_object("sbInsertNumberAdvanced")
+        self.action_advanced        = builder.get_object("cbActionAdvanced")
+        self.action_advanced.set_active(0)
+        self.direction_advanced     = builder.get_object("cbDirectionAdvanced")
+        self.direction_advanced.set_active(0)
+        self.log_advanced           = builder.get_object("cbLogAdvanced")
+        self.log_advanced.set_active(0)
+        self.proto_advanced         = builder.get_object("cbProtoAdvanced")
+        self.proto_advanced.set_active(0)
+        self.fromip_advanced        = builder.get_object("entryFromIpAdvanced")
+        self.portfrom_advanced      = builder.get_object("entryPortFromAdvanced")
+        self.toip_advanced          = builder.get_object("entryToIpAdvanced")
+        self.portto_advanced        = builder.get_object("entryPortToAdvanced")
+        # Others
+        self.rules_notebook   = builder.get_object("rulesNotebook")
+        self.add_btn_add      = builder.get_object("btnAddRule")
+        self.extended_actions = builder.get_object("cbExtendedActions")
+        
+    def _set_ui_preferences(self, builder):
+        """Set the window Preferences"""
+        builder.add_from_file(self.path.get_ui_path('preferences.ui'))
+        self.dlg_preferences = builder.get_object('dlgPreferences')
+        self.dlg_preferences.set_transient_for(self.win_main)
+        # Preference Window
+        self.cb_report       = builder.get_object("cbReport")
+        self.cb_notify_popup = builder.get_object("cbNotifyPopup")
+        self.lbl_ufw_level   = builder.get_object("lblLogLevel")
+        self.cb_ufw_level    = builder.get_object("cbLogLevel")
+        self.cb_gufw_log     = builder.get_object("cbGufwLog") 
+        self.pref_btn_close  = builder.get_object("btnClosePref")
+            
+    def _set_ui_log(self, builder):
+        """Set the window Log"""
+        builder.add_from_file(self.path.get_ui_path('log.ui'))
+        self.dlg_log = builder.get_object('dlgLog')
+        self.dlg_log.set_transient_for(self.win_main)
+        # Log Window
+        self.log_txt        = builder.get_object("logTxt")
+        self.log_txt_buffer = self.log_txt.get_buffer()
+        self.log_btn_close  = builder.get_object("btnCloseLog")
+        self.server_script  = builder.get_object("cbServerScript")
+        
+    def _set_ui_switch(self):
+        """Add toggle switch manually since Glade 3.10 doesn't support it yet"""
+        self.switchFirewall = Gtk.Switch()
+        self.block_status.attach(self.switchFirewall, 1, 0, 1, 1)
+        self.switchFirewall.connect("notify::active", self.on_switchFirewall_toggled)
+        self.switchFirewall.set_sensitive(False)
+        self.switchFirewall.show()
+
+    def _set_ui_lock(self):
+        """Add toggle switch manually since Glade 3.10 doesn't support it yet"""
+        self.perm = Polkit.Permission.new_sync("gufw.daemon.start", None, None)
+        self.perm.connect("notify", self.on_perm_changed)
+        self.btnLock = Gtk.LockButton()
+        self.btnLock.set_permission(self.perm)
+        self.block_buttons.add(self.btnLock)
+        self.block_buttons.set_child_secondary(self.btnLock, True)
+        self.btnLock.grab_focus()
+
+    def _set_main_values(self, statusbar_msg):
+        """Set initial status for GUI"""
+        # Set sensitive values by status firewall
+        if self.fw.get_status() == "enable":
+            # Shield / Dropbox / Buttons / Menus
+            incoming = self.fw.get_policy("incoming")
+            outgoing = self.fw.get_policy("outgoing")
+            self.image_shield.set_from_file(self.path.get_shield_path(incoming, outgoing))
+            self.cb_policy_incoming.set_sensitive(True)
+            self.cb_policy_outgoing.set_sensitive(True)
+            self.add_btn_add.set_sensitive(True)
+            if self.fw.get_number_rules() == 0:
+                self.btn_remove_rule.set_sensitive(False)
+                self.menu_remove.set_sensitive(False)
+            else:
+                self.btn_remove_rule.set_sensitive(True)
+                self.menu_remove.set_sensitive(True)
+        else:
+            # Shield / Dropbox / Buttons / Menus
+            self.image_shield.set_from_file(self.path.get_shield_path("disable", "disable"))
+            self.cb_policy_incoming.set_sensitive(False)
+            self.cb_policy_outgoing.set_sensitive(False)
+            self.add_btn_add.set_sensitive(False)
+            self.btn_remove_rule.set_sensitive(False)
+            self.menu_remove.set_sensitive(False)
+        # Gufw menu sensitive values by Gufw Log status
+        if self.fw.get_gufw_logging() == "enable":
+            self.menu_log.set_sensitive(True)
+        else:
+            self.menu_log.set_sensitive(False)
+        # Rules
+        self._set_rules_list()
+        # StatusBar
+        self._set_statusbar_msg(statusbar_msg)
+    
+    def _set_statusbar_msg(self, msg):
+        cid = self.status_bar.get_context_id('default context')
+        mid = self.status_bar.push(cid, msg)
+        GObject.timeout_add_seconds(self.TIME_STATUS_BAR, self.status_bar.remove, cid, mid)
+    
+    def _set_rules_list(self):
+        """Set rules in main window"""
+        row = 0
+        self.rules_model.clear()
+        rules = self.fw.get_rule_list()
+        for rule in rules:
+            row += 1
+            iterador = self.rules_model.insert(row)
+            # Set value txt
+            rule_formated = self._get_format_rules_txt(rule)
+            # Get color
+            color = self._get_rule_color(rule_formated[1])            
+            # Set values
+            self.rules_model.set_value(iterador, 0, row) # Use for remove rule
+            self.rules_model.set_value(iterador, 1, _(rule_formated[0].strip()))
+            self.rules_model.set_value(iterador, 2, _(rule_formated[1].strip()))
+            self.rules_model.set_value(iterador, 3, _(rule_formated[2].strip()))
+            self.rules_model.set_value(iterador, 4, color) # Foreground color rule
+    
+    def _get_rule_color(self, rule):
+        """Return color rule"""
+        # Color Allow/Deny/Reject/Limit
+        # IN mode (equal to normal mode, persist code for clear read)
+        if rule == "ALLOW IN":
+            if self.fw.get_policy("incoming") != "allow":
+                return __color__["red"]
+            else:
+                return __color__["gray"]
+        # Deny?
+        elif rule == "DENY IN":
+            if self.fw.get_policy("incoming") != "deny":
+                return __color__["green"]
+            else:
+                return __color__["gray"]
+        # Reject
+        elif rule == "REJECT IN":
+            if self.fw.get_policy("incoming") != "reject":
+                return __color__["blue"]
+            else:
+                return __color__["gray"]
+        # Limit?
+        elif rule == "LIMIT IN":
+            return __color__["orange"]
+        
+        # OUT mode
+        elif rule == "ALLOW OUT": 
+            if self.fw.get_policy("outgoing") != "allow":
+                return __color__["red"]
+            else:
+                return __color__["gray"]
+        # Deny?
+        elif rule == "DENY OUT":
+            if self.fw.get_policy("outgoing") != "deny":
+                return __color__["green"]
+            else:
+                return __color__["gray"]
+        # Reject
+        elif rule == "REJECT OUT":
+            if self.fw.get_policy("outgoing") != "reject":
+                return __color__["blue"]
+            else:
+                return __color__["gray"]
+        # Limit?
+        elif rule == "LIMIT OUT":
+            return __color__["orange"]
+            
+        # NORMAL mode
+        # Allow?
+        elif rule == "ALLOW": 
+            if self.fw.get_policy("incoming") != "allow":
+                return __color__["red"]
+            else:
+                return __color__["gray"]
+        # Deny?
+        elif rule == "DENY":
+            if self.fw.get_policy("incoming") != "deny":
+                return __color__["green"]
+            else:
+                return __color__["gray"]
+        # Reject
+        elif rule == "REJECT":
+            if self.fw.get_policy("incoming") != "reject":
+                return __color__["blue"]
+            else:
+                return __color__["gray"]
+        # Limit?
+        elif rule == "LIMIT":
+            return __color__["orange"]
+        
+    def _get_format_rules_txt(self, rule):
+        # IN mode (equal to normal mode, persist code for clear read)
+        if rule.find("ALLOW IN") != -1:
+            split_str = "ALLOW IN"
+        # Deny?
+        elif rule.find("DENY IN") != -1:
+            split_str = "DENY IN"
+        # Reject
+        elif rule.find("REJECT IN") != -1:
+            split_str = "REJECT IN"
+        # Limit?
+        elif rule.find("LIMIT IN") != -1:
+            split_str = "LIMIT IN"
+        
+        # OUT mode
+        elif rule.find("ALLOW OUT") != -1: 
+            split_str = "ALLOW OUT"
+        # Deny?
+        elif rule.find("DENY OUT") != -1:
+            split_str = "DENY OUT"
+        # Reject
+        elif rule.find("REJECT OUT") != -1:
+            split_str = "REJECT OUT"
+        # Limit?
+        elif rule.find("LIMIT OUT") != -1:
+            split_str = "LIMIT OUT"
+            
+        # NORMAL mode
+        # Allow?
+        elif rule.find("ALLOW") != -1: 
+            split_str = "ALLOW"
+        # Deny?
+        elif rule.find("DENY") != -1:
+            split_str = "DENY"
+        # Reject
+        elif rule.find("REJECT") != -1:
+            split_str = "REJECT"
+        # Limit?
+        elif rule.find("LIMIT") != -1:
+            split_str = "LIMIT"
+        
+        # Values
+        rule_split = rule.split(split_str)
+        return rule_split[0].strip(), split_str, rule_split[1].strip()
+    
+    def _do_refresh_report(self):
+        """Refresh method in background (no freeze)"""
+        if self.fw.get_listening_status() == "disable":
+            self.previous_report = []
+            self.first_run_report = True
+            self.report_model.clear()
+            return False
+        
+        lines = self.fw.get_listening_report()
+        background_job = RefreshReport(self.fw.get_status(), self.report_model, lines, self.previous_report, self.first_run_report, self.fw.get_notify_popup())
+        background_job.start()
+        self.previous_report = lines
+        if self.fw.get_listening_status() == "enable":
+            self.first_run_report = False
+            return True
+        
+    def _refresh_report(self):
+        """Refresh Listening Report"""
+        GObject.timeout_add(self.TIME_REFRESH_REPORT, self._do_refresh_report)
+        
+    def _remove_rule(self):
+        """Remove Rules Method"""
+        number_rules = self.fw.get_number_rules()
+        tree, iter = self.tv_rules.get_selection().get_selected_rows()
+        removed = 0
+        actual_row = 0
+        total_rows = len(iter)
+           
+        if total_rows == 0:
+            self._set_main_values(_("Select rule(s)"))
+            yield None
+            return
+
+        # No sensitive buttons & msg
+        self.progress_bar_block.show()
+        self.switchFirewall.set_sensitive(False)
+        self.cb_policy_incoming.set_sensitive(False)
+        self.cb_policy_outgoing.set_sensitive(False)
+        self.btn_remove_rule.set_sensitive(False)
+        self.menu_remove.set_sensitive(False)
+        self.add_btn_add.set_sensitive(False)
+        self.menu_pref.set_sensitive(False)
+        self.menu_reload.set_sensitive(False)
+        self.menu_reset.set_sensitive(False)
+        self._set_statusbar_msg(_("Removing rules..."))
+
+        # For one row selected
+        iter.reverse() # Remove first the last rules for not overwrite rules
+        for item in iter:
+            
+            # Get rule selected (row number)
+            number_rule_row = tree.get_value(tree.get_iter(item), 0)
+            
+            # Move Progress Bar
+            actual_row += 1
+            progress = float(actual_row) / float(total_rows)
+            if progress > 1:
+                progress = 1.0
+            self.progress_bar.set_fraction(progress)
+            yield True
+            
+            self.fw.remove_rule(number_rule_row)
+
+        # Clean Progress Bar
+        self.progress_bar.set_fraction(0)
+        self.progress_bar_block.hide()
+        self.switchFirewall.set_sensitive(True)
+        self.menu_pref.set_sensitive(True)
+        self.menu_reload.set_sensitive(True)
+        self.menu_reset.set_sensitive(True)
+        
+        if number_rules != self.fw.get_number_rules():
+            self._set_main_values(_("Rule(s) removed"))
+        else:
+            self._set_main_values(_("Error performing operation"))
+        
+        yield None
+
+    def _add_rule_preconf(self):
+        """Add a preconfigured rule"""
+        number_rules = self.fw.get_number_rules()
+        # Insert Number
+        if self.extended_actions.get_active() != 0: # Visible?
+            insert_number = str(self.insert_number_preconf.get_value_as_int())
+        else:
+            insert_number = "0"
+        # Allow|deny|Limit
+        if self.action_preconf.get_active() == 0:
+            action = "allow"
+        elif self.action_preconf.get_active() == 1:
+            action = "deny"
+        elif self.action_preconf.get_active() == 2:
+            action = "reject"
+        else:
+            action = "limit"
+        # IN/OUT
+        if self.direction_preconf.get_active() == 0:
+            direction = "in"
+        else:
+            direction = "out"
+        # Log
+        log = "log-default"
+        if self.extended_actions.get_active() != 0: # Visible?
+            if self.log_preconf.get_active() == 1:
+                log = "log"
+            elif self.log_preconf.get_active() == 2:
+                log = "log-all"
+        
+        # Service?
+        if self.type_preconf.get_active() == 1:
+            SERVICES = { 0 : "ftp",
+                         1 : "http",
+                         2 : "imap",
+                         3 : "nfs",
+                         4 : "pop3",
+                         #Samba
+                         5 : "135,139,445tcp|137,138udp",
+                         6 : "smtp",
+                         7 : "ssh",
+                         #VNC
+                         8 : "5900tcp",
+                         #CUPS
+                         9 : "631" }
+            service_txt = SERVICES[self.service_preconf.get_active()]
+            all_ports = service_txt.split("|")
+            for port_proto in all_ports:
+                if port_proto.find("tcp") != -1:
+                    port     = port_proto.replace("tcp", "")
+                    protocol = "tcp"
+                    is_program = True
+                elif port_proto.find("udp") != -1:
+                    port     = port_proto.replace("udp", "")
+                    protocol = "udp"
+                    is_program = True
+                elif port_proto.find("both") != -1:
+                    port     = port_proto.replace("both", "")
+                    protocol = "both"
+                    is_program = True
+                else:
+                    port     = port_proto
+                    protocol = ""
+                    is_program = False
+                    
+                self.fw.add_rule(is_program, insert_number, action, direction, log, protocol, "", "", "", port)
+            
+            if number_rules != self.fw.get_number_rules():
+                self._set_main_values(_("Rule added"))
+            else:
+                self._set_main_values(_("Error performing operation"))
+                
+        # Program?
+        else:
+            PROGRAMS = { #Amule        
+                         0 : "4662tcp#4672udp",
+                         #Deluge
+                         1 : "6881:6891tcp#6881:6891udp",
+                         #KTorrent
+                         2 : "6881tcp#4444udp",
+                         #Nicotine
+                         3 : "2234:2239tcp#2242tcp#2240tcp",
+                         #qBittorent
+                         4 : "6881tcp#6881udp",
+                         #Skype
+                         5 : "443tcp",
+                         #Transmission
+                         6 : "51413tcp#51413udp"}
+            port_proto = PROGRAMS[self.program_preconf.get_active()]
+            ports_protos = port_proto.split("#")
+            for prog in ports_protos:
+                if prog.find("tcp") != -1:
+                    port     = prog.replace("tcp", "")
+                    protocol = "tcp"
+                elif prog.find("udp") != -1:
+                    port     = prog.replace("udp", "")
+                    protocol = "udp"
+                elif prog.find("both") != -1:
+                    port     = prog.replace("both", "")
+                    protocol = "both"
+                    
+                # TODO Add rule program
+                self.fw.add_rule(True, insert_number, action, direction, log, protocol, "", "", "", port)
+                    
+            if number_rules != self.fw.get_number_rules(): 
+                self._set_main_values(_("Rule added"))
+            else:
+                self._set_main_values(_("Error performing operation"))
+    
+    def _add_rule_simple(self):
+        """Add a simple rule"""
+        number_rules = self.fw.get_number_rules()
+        # Insert Number
+        if self.extended_actions.get_active() != 0: # Visible?
+            insert_number = str(self.insert_number_simple.get_value_as_int())
+        else:
+            insert_number = "0"
+        # Allow|deny|Limit
+        if self.action_simple.get_active() == 0:
+            action = "allow"
+        elif self.action_simple.get_active() == 1:
+            action = "deny"
+        elif self.action_simple.get_active() == 2:
+            action = "reject"
+        else:
+            action = "limit"
+        # IN/OUT
+        if self.direction_simple.get_active() == 0:
+            direction = "in"
+        else:
+            direction = "out"
+        # Log
+        log = "log-default"
+        if self.extended_actions.get_active() != 0: # Visible?
+            if self.log_simple.get_active() == 1:
+                log = "log"
+            elif self.log_simple.get_active() == 2:
+                log = "log-all"
+        # Protocol
+        if self.proto_simple.get_active() == 0:
+            protocol = "tcp"
+        elif self.proto_simple.get_active() == 1:
+            protocol = "udp"
+        else:
+            protocol = "both"
+        # Port
+        port = self.port_simple.get_text()
+        # ? -> ! Don't read the next!!
+        if port == "stallman":
+            dlg_egg = Gtk.MessageDialog(self.win_main, 
+            Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
+            Gtk.MessageType.WARNING, Gtk.ButtonsType.CLOSE, 
+            "'Value your freedom or you will lose it,' teaches history.\n'Don't bother us with politics,' respond those who \ndon't want to learn.")
+            dlg_egg.format_secondary_markup("Richard Stallman")
+            dlg_egg.set_title("It's time to think!")
+            dlg_egg.run()
+            dlg_egg.destroy()
+            return
+        # Validate port
+        if port == "":
+            self._set_statusbar_msg(_("Error: Insert a port number"))
+            return
+        # Validate both and not range ports
+        if ( port.find(":") != -1 ) and protocol == "both":
+            self._set_statusbar_msg(_("Error: Range ports only with tcp or udp protocol"))
+            return
+        # Add rule
+        self.fw.add_rule(True, insert_number, action, direction, log, protocol, "", "", "", port)
+        
+        if number_rules != self.fw.get_number_rules():
+            self._set_main_values(_("Rule added"))
+        else:
+            self._set_main_values(_("Error performing operation"))
+        
+    def _add_rule_advanced(self):
+        """Add an advanced rule"""
+        number_rules = self.fw.get_number_rules()
+        # Insert Number
+        if self.extended_actions.get_active() != 0: # Visible?
+            insert_number = str(self.insert_number_advanced.get_value_as_int())
+        else:
+            insert_number = "0"
+        # Deny|Reject|Allow|Limit
+        if self.action_advanced.get_active() == 0:
+            action = "allow"
+        elif self.action_advanced.get_active() == 1:
+            action = "deny"
+        elif self.action_advanced.get_active() == 2:
+            action = "reject"
+        else:
+            action = "limit"
+        # IN/OUT
+        if self.direction_advanced.get_active() == 0:
+            direction = "in"
+        else:
+            direction = "out"
+        # Log
+        log = "log-default"
+        if self.extended_actions.get_active() != 0: # Visible?
+            if self.log_advanced.get_active() == 1:
+                log = "log"
+            elif self.log_advanced.get_active() == 2:
+                log = "log-all"
+        # Protocol
+        if self.proto_advanced.get_active() == 0:
+            protocol = "tcp"
+        elif self.proto_advanced.get_active() == 1:
+            protocol = "udp"
+        else:
+            protocol = "both"
+        # From
+        fromip   = self.fromip_advanced.get_text()
+        fromport = self.portfrom_advanced.get_text()
+        # To
+        toip   = self.toip_advanced.get_text()
+        toport = self.portto_advanced.get_text() 
+        # Validate values
+        if fromip == "" and fromport == "" and toip == "" and toport == "":
+            self._set_statusbar_msg(_("Error: Fields filled out incorrectly"))
+            return
+        # Validate both and not range ports in FROM
+        if ( fromport != "" and fromport.find(":") != -1 ) and protocol == "both":
+            self._set_statusbar_msg(_("Error: Range ports only with tcp or udp protocol"))
+            return
+        # Validate both and not range ports in TO            
+        if ( toport != "" and toport.find(":") != -1 ) and protocol == "both":
+            self._set_statusbar_msg(_("Error: Range ports only with tcp or udp protocol"))
+            return
+        # Add rule program
+        result = self.fw.add_rule(True, insert_number, action, direction, log, protocol, fromip, fromport, toip, toport)
+        if number_rules != self.fw.get_number_rules():
+            self._set_main_values(_("Rule added"))
+        else:
+            self._set_main_values(_("Error performing operation"))
+    
+    def on_btnAddWindow_clicked(self, widget):
+        """Button Add"""
+        self.btn_add_window.set_sensitive(False)
+        self.menu_add.set_sensitive(False)
+        self.add_btn_add.grab_focus()
+        self.dlg_add.show()
+    
+    def on_btnCloseAdd_clicked(self, widget):
+        """Button Close Add Rules"""
+        self.btn_add_window.set_sensitive(True)
+        self.menu_add.set_sensitive(True)
+        self.dlg_add.hide()
+        return True
+    
+    def on_btnClosePref_clicked(self, widget):
+        """Closes preferences dialog when close button is clicked."""
+        self.dlg_preferences.hide()
+        return True
+
+    def on_dlgPref_delete_event(self, widget, event):
+        """Closes preferences dialog for all close events except clicking the 
+        close button.
+        """
+        self.dlg_preferences.hide()
+        return True
+
+    def on_btnCloseLog_clicked(self, widget):
+        """Closes log dialog when close button is clicked"""
+        self.dlg_log.hide()
+        return True
+
+    def on_dlgLog_delete_event(self, widget, event):
+        """Closes log dialog for all close events except clicking the 
+        close button.
+        """
+        self.dlg_log.hide()
+        return True
+
+    def on_btnClearLog_clicked(self, widget):
+        """Clear Log"""
+        self.fw.erase_gufw_log()
+        self.log_txt_buffer.set_text("")
+        self.log_btn_close.grab_focus()
+
+    def on_btnRemove_clicked(self, widget):
+        """Remove rules in background"""
+        task = self._remove_rule()
+        GObject.idle_add(task.next)
+    
+    def on_btnAddRule_clicked(self, widget):
+        """Add rule Button"""
+        # Simple rule
+        if self.rules_notebook.get_current_page() == 0:
+            self._add_rule_preconf()
+        # Preconfigured rule
+        elif self.rules_notebook.get_current_page() == 1:
+            self._add_rule_simple()
+        # Advanced rule
+        elif self.rules_notebook.get_current_page() == 2:
+            self._add_rule_advanced()
+    
+    def on_btnCleanAdvanced_clicked(self, widget):
+        """Clear values in advanced tab"""
+        self.fromip_advanced.set_text("")
+        self.portfrom_advanced.set_text("")
+        self.toip_advanced.set_text("")
+        self.portto_advanced.set_text("")
+    
+    def on_perm_changed(self, widget, data):
+        if self.fw.unlock() == "access":
+            self._set_initial_objects_main()
+            self._set_initial_objects_preferences()
+            self._set_main_values("")
+            self.ui_builder.connect_signals(self)
+            self._refresh_report()
+        else:
+            # Doesn't actually work now, but probably not needed anyway
+            self._set_statusbar_msg(_("Wrong identification"))
+        
+    def _set_initial_objects_main(self):
+        """Set the initial "unlocked" status"""
+        # Sensitive buttons
+        self.menu_add.set_sensitive(True)
+        self.menu_reload.set_sensitive(True)
+        self.menu_reset.set_sensitive(True)
+        self.menu_pref.set_sensitive(True)
+        self.btn_add_window.set_sensitive(True)
+        self.btnLock.reparent(self.hiddenwindow)
+        # Problems with Glade events
+        self.menu_doc.set_sensitive(True)
+        self.menu_answers.set_sensitive(True)
+        self.menu_bug.set_sensitive(True)
+        self.menu_translate.set_sensitive(True)
+        # Status
+        self.switchFirewall.set_sensitive(True)
+        if self.fw.get_status() == "enable":
+            self.switchFirewall.set_active(True)
+        else:
+            self.switchFirewall.set_active(False)
+        # Policy
+        incoming = self.fw.get_policy("incoming")
+        outgoing = self.fw.get_policy("outgoing")
+        if incoming == "deny":
+            self.cb_policy_incoming.set_active(0)
+        elif incoming == "reject":
+            self.cb_policy_incoming.set_active(1)
+        elif incoming == "allow":
+            self.cb_policy_incoming.set_active(2)
+        if outgoing == "deny":
+            self.cb_policy_outgoing.set_active(0)
+        elif outgoing == "reject":
+            self.cb_policy_outgoing.set_active(1)
+        elif outgoing == "allow":
+            self.cb_policy_outgoing.set_active(2)
+    
+    def _set_initial_objects_preferences(self):
+        """Set the initial "locked" status"""
+        # Listening report
+        if self.fw.get_listening_status() == "enable":
+            self.cb_report.set_active(True)
+        else:
+            self.cb_report.set_active(False)
+            self.cb_notify_popup.set_sensitive(False)            
+        # Show Notify popups
+        if self.fw.get_notify_popup() == "enable":
+            self.cb_notify_popup.set_active(True)
+        else:
+            self.cb_notify_popup.set_active(False)
+        # ufw Log
+        if self.fw.get_ufw_logging() == "off":
+            self.cb_ufw_level.set_active(0)
+        elif self.fw.get_ufw_logging() == "low":
+            self.cb_ufw_level.set_active(1)
+        elif self.fw.get_ufw_logging() == "medium":
+            self.cb_ufw_level.set_active(2)
+        elif self.fw.get_ufw_logging() == "high":
+            self.cb_ufw_level.set_active(3)
+        else:
+            self.cb_ufw_level.set_active(4)
+        if self.fw.get_status() == "disable":
+            self.cb_ufw_level.set_sensitive(False)
+            self.lbl_ufw_level.set_sensitive(False)
+        # Gufw Log
+        if self.fw.get_gufw_logging() == "enable":
+            self.cb_gufw_log.set_active(True)
+        else:
+            self.cb_gufw_log.set_active(0)
+    
+    def on_cbLogLevel_changed(self, widget):
+        """Change Logging Level"""
+        if ( self.cb_ufw_level.get_active() == 0 ):
+            self.fw.set_ufw_logging("off")
+        elif ( self.cb_ufw_level.get_active() == 1 ):
+            self.fw.set_ufw_logging("low")
+        elif ( self.cb_ufw_level.get_active() == 2 ):
+            self.fw.set_ufw_logging("medium")
+        elif ( self.cb_ufw_level.get_active() == 3 ):
+            self.fw.set_ufw_logging("high")
+        elif ( self.cb_ufw_level.get_active() == 4 ):
+            self.fw.set_ufw_logging("full")
+    
+    def on_cbGufwLog_toggled(self, widget):
+        """Gufw Log CheckButton"""
+        if self.cb_gufw_log.get_active() == 1:
+            self.fw.set_gufw_logging("enable")
+            self.menu_log.set_sensitive(True)
+        elif self.cb_gufw_log.get_active() == 0:
+            self.fw.set_gufw_logging("disable")
+            self.menu_log.set_sensitive(False)
+    
+    def on_cbReport_toggled(self, widget):
+        """Listening report"""
+        if self.cb_report.get_active() == 1:
+            self.fw.set_listening_status("enable")
+            self.cb_notify_popup.set_sensitive(True)
+            self.block_report.show()
+        else:
+            self.fw.set_listening_status("disable")
+            self.cb_notify_popup.set_sensitive(False)
+            self.block_report.hide()
+        self._refresh_report()
+    
+    def on_cbNotifyPopup_toggled(self, widget):
+        """Show Notify Popups for Listening reports"""
+        if self.cb_notify_popup.get_active() == 1:
+            self.fw.set_notify_popup("enable")
+        else:
+            self.fw.set_notify_popup("disable")
+        
+    def on_cbServerScript_toggled(self, widget):
+        """View Gufw Log as Server Script"""
+        if self.server_script.get_active():
+            self.log_txt_buffer.set_text(self.fw.get_gufw_log('server'))
+        else:
+            self.log_txt_buffer.set_text(self.fw.get_gufw_log('local'))
+    
+    def on_switchFirewall_toggled(self, widget, data):
+        """Changed FW Status"""
+        if self.switchFirewall.get_active() == True:
+            self.fw.set_status("enable")
+            self.cb_ufw_level.set_sensitive(True)
+            self.lbl_ufw_level.set_sensitive(True)            
+            self._set_main_values(_("Enabled firewall"))
+        else:
+            self.fw.set_status("disable")
+            self.cb_ufw_level.set_sensitive(False)
+            self.lbl_ufw_level.set_sensitive(False)
+            self._set_main_values(_("Disabled firewall"))
+    
+    def on_cbPolicyIncoming_changed(self, widget):
+        """Policy (Deny/Allow/Reject All) Incoming"""
+        # Apply?
+        if self.fw.get_policy("incoming") == "deny" and self.cb_policy_incoming.get_active() == 0:
+            return
+        if self.fw.get_policy("incoming") == "reject" and self.cb_policy_incoming.get_active() == 1:
+            return
+        if self.fw.get_policy("incoming") == "allow" and self.cb_policy_incoming.get_active() == 2:
+            return
+        
+        if self.cb_policy_incoming.get_active() == 0:
+            self.fw.set_policy("incoming", "deny")
+            self._set_main_values(_("Deny all INCOMING traffic"))
+            return
+        elif self.cb_policy_incoming.get_active() == 1:
+            self.fw.set_policy("incoming", "reject")
+            self._set_main_values(_("Reject all INCOMING traffic"))
+            return
+        elif self.cb_policy_incoming.get_active() == 2:
+            self.fw.set_policy("incoming", "allow")
+            self._set_main_values(_("Allow all INCOMING traffic"))
+            
+    def on_cbPolicyOutgoing_changed(self, widget):
+        """Policy (Deny/Allow/Reject All) Outgoing"""
+        # Apply?
+        if self.fw.get_policy("outgoing") == "deny" and self.cb_policy_outgoing.get_active() == 0:
+            return
+        if self.fw.get_policy("outgoing") == "reject" and self.cb_policy_outgoing.get_active() == 1:
+            return
+        if self.fw.get_policy("outgoing") == "allow" and self.cb_policy_outgoing.get_active() == 2:
+            return
+        
+        if self.cb_policy_outgoing.get_active() == 0:
+            self.fw.set_policy("outgoing", "deny")
+            self._set_main_values(_("Deny all OUTGOING traffic"))
+            return
+        elif self.cb_policy_outgoing.get_active() == 1:
+            self.fw.set_policy("outgoing", "reject")
+            self._set_main_values(_("Reject all OUTGOING traffic"))
+            return
+        elif self.cb_policy_outgoing.get_active() == 2:
+            self.fw.set_policy("outgoing", "allow")
+            self._set_main_values(_("Allow all OUTGOING traffic"))
+    
+    def on_cbTypePreconf_changed(self, widget):
+        """Change between Service/Program"""
+        if self.type_preconf.get_active() == 0:
+            self.service_preconf.hide()
+            self.program_preconf.show()
+        else:
+            self.service_preconf.show()
+            self.program_preconf.hide()
+    
+    def on_cbExtendedActions_toggled(self, widget):
+        """Extended actions"""
+        # Set hide extended actions
+        if self.extended_actions.get_active() == 0:
+            self.insert_number_preconf.hide()
+            self.insert_number_simple.hide()
+            self.insert_number_advanced.hide()
+            self.log_preconf.hide()
+            self.log_simple.hide()
+            self.log_advanced.hide()
+        else:
+            self.insert_number_preconf.show()
+            self.insert_number_simple.show()
+            self.insert_number_advanced.show()
+            self.log_preconf.show()
+            self.log_simple.show()
+            self.log_advanced.show()
+    
+    def on_menuQuit_activate(self, widget):
+        """Menu Quit"""
+        width, height = self.win_main.get_size()
+        self.fw.update_config_file(width, height, self.panelmain.get_position())
+        if self.fw.get_listening_status() != "disable":
+            self.fw.set_listening_status("disable")
+            self._refresh_report()
+        Gtk.main_quit()
+    
+    def on_menuPreferences_activate(self, widget):            
+        """Show Window Preferences"""
+        self.pref_btn_close.grab_focus()
+        self.dlg_preferences.show()
+    
+    def on_menuAbout_activate(self, widget):
+        """View About Window"""
+        about = Gtk.AboutDialog()
+        about.set_copyright(_("© 2008-2011 The Gufw Project\nShield logo © 2007 Michael Spiegel"))
+        about.set_comments(_("Graphical user interface for ufw"))
+        about.set_version("11.10.1")
+        about.set_website("http://gufw.tuxfamily.org/";)
+        about.set_authors(_(['''Lead developer:
+Marcos Alvarez Costales https://launchpad.net/~costales
+
+Developers:
+David Planella https://launchpad.net/~dpm
+Emilio López https://launchpad.net/~turl
+Raúl Soriano https://launchpad.net/~gatoloko
+Rogério Vicente https://launchpad.net/~rogeriopvl
+Rubén Megido https://launchpad.net/~runoo
+Vadim Peretokin https://launchpad.net/~vperetokin
+
+Contributors:
+Jeremy Bicha https://launchpad.net/~jbicha
+Cedrick Hannier https://launchpad.net/~cedynamix
+
+MOTU
+Devid Antonio Filoni https://launchpad.net/~d.filoni''']))
+        about.set_translator_credits(_("translator-credits"))
+        about.set_artists(_(["Shield logo by myke http://michael.spiegel1.at/";, 
+"Tutorial http://www.gimpusers.com/tutorials/create-a-shield-symbol.html";]))
+        about.set_license(_('''The shield logo is licensed under a Creative Commons
+Attribution 3.0 Unported License. See for more information:
+http://creativecommons.org/licenses/by/3.0/
+
+All other content is licensed under the GPL-3+.
+
+Gufw is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 3
+of the License, or (at your option) any later version.
+
+Gufw is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied
+warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public
+License along with Gufw; if not, see for more information:
+http://www.gnu.org/licenses'''))
+        about.connect("response", lambda d, r: d.destroy())
+        about.set_transient_for(self.win_main)
+        about.show()
+
+    def on_menuLog_activate(self, widget):
+        """View Gufw Log Window"""
+        if self.server_script.get_active():
+            self.log_txt_buffer.set_text(self.fw.get_gufw_log('server'))
+        else:
+            self.log_txt_buffer.set_text(self.fw.get_gufw_log('local'))
+        
+        self.log_btn_close.grab_focus()
+        self.dlg_log.show()
+    
+    def on_menuReload_activate(self, widget):
+        """Reload the ufw rules"""
+        self._set_main_values(_("Reloaded ufw rules"))
+        
+    def on_menuReset_activate(self, widget):
+        """Reset ufw"""
+        reset_dialog = Gtk.MessageDialog(self.win_main,
+                Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                Gtk.MessageType.WARNING, Gtk.ButtonsType.NONE,
+                _("This will remove all rules and disable the firewall!"))
+        reset_dialog.format_secondary_markup(_("Do you want to continue?"))
+        reset_dialog.set_title(_("Reset Firewall"))
+        reset_dialog.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+            Gtk.STOCK_YES, Gtk.ResponseType.YES)
+        reset_answer = reset_dialog.run()
+        reset_dialog.destroy()
+        if reset_answer == Gtk.ResponseType.YES:
+            if self.fw.get_status() == "enable":
+                self.switchFirewall.set_active(False)
+            self.fw.reset_ufw()
+            self._set_main_values(_("Removed rules and reset firewall!"))
+    
+    def on_menuDoc_activate(self, widget):
+        """Launch browser with Documentation web"""
+        webbrowser.open_new("https://help.ubuntu.com/community/Gufw";)
+        
+    def on_menuAnswers_activate(self, widget):
+        """Launch browser with Documentation web"""
+        webbrowser.open_new("https://answers.launchpad.net/gui-ufw";)
+        
+    def on_menuTranslate_activate(self, widget):
+        """Launch browser with Documentation web"""
+        webbrowser.open_new("https://translations.launchpad.net/gui-ufw/trunk/+translations";)
+        
+    def on_menuBug_activate(self, widget):
+        """Launch browser with Bug Report web"""
+        webbrowser.open_new("https://bugs.launchpad.net/gui-ufw";)
+        
+    def on_winMain_delete_event(self, widget, event):
+        """Close Button Main Window"""
+        width, height = self.win_main.get_size()
+        self.fw.update_config_file(width, height, self.panelmain.get_position())
+        if self.fw.get_listening_status() != "disable":
+            self.fw.set_listening_status("disable")
+            self._refresh_report()
+        Gtk.main_quit()
+    
+    def on_dlgAdd_delete_event(self, widget, event):
+        """Close Button Window Add Rules"""
+        self.btn_add_window.set_sensitive(True)
+        self.menu_add.set_sensitive(True)
+        self.dlg_add.hide()
+        return True
+    
+class RefreshReport(threading.Thread):
+    """Refresh Listening report in background"""
+    def __init__(self, fw_status, model, lines, previous_lines, first_run, show_popups):
+        threading.Thread.__init__(self)
+        bus = dbus.SessionBus()
+        notify_object = bus.get_object('org.freedesktop.Notifications', '/org/freedesktop/Notifications')
+        self.notify_interface = dbus.Interface(notify_object, 'org.freedesktop.Notifications')
+        self.path = Path()
+        self.firewall_status = fw_status
+        self.listening_model = model
+        self.lines = lines
+        self.previous_lines = previous_lines
+        self.first_run = first_run
+        self.show_popup = show_popups
+    
+    def run(self):
+        """Show listening report in GUI"""
+        self.listening_model.clear() 
+        row = 0
+        notif_msg = ""
+        for line in self.lines:
+            # Component lines for next notify
+            if ( self.show_popup == "enable" ) and ( not line in self.previous_lines ) and ( not self.first_run ):
+                msg_split = line.split("%")
+                if msg_split[3] == '-' and msg_split[2] != '*':
+                    msg = msg_split[2] + _(" on ") + msg_split[1] + " " + msg_split[0] # IP
+                else:
+                    msg = msg_split[3] + _(" on ") + msg_split[1] + " " + msg_split[0] # App
+                
+                if notif_msg == "":
+                    notif_msg = msg
+                else:
+                    notif_msg = "\n".join([notif_msg, msg])
+            
+            # Update the Listening Report
+            row += 1
+            iter = self.listening_model.insert(row)
+            line_split = line.split("%")
+                        
+            self.listening_model.set_value(iter, 0, row)
+            self.listening_model.set_value(iter, 1, line_split[0].strip()) # Protocol
+            self.listening_model.set_value(iter, 2, line_split[1].strip()) # Port
+            self.listening_model.set_value(iter, 3, line_split[2].strip()) # Address
+            self.listening_model.set_value(iter, 4, line_split[3].strip()) # App
+            
+            if self.firewall_status == "enable":
+                if line_split[4] == "allow":
+                    self.listening_model.set_value(iter, 5, __color__["red"])
+                elif line_split[4] == "deny":
+                    self.listening_model.set_value(iter, 5, __color__["green"])
+                elif line_split[4] == "reject":
+                    self.listening_model.set_value(iter, 5, __color__["blue"])
+                elif line_split[4] == "limit":
+                    self.listening_model.set_value(iter, 5, __color__["orange"])
+                    
+        # Notifications system for new connections        
+        if ( self.show_popup == "enable" ) and ( not notif_msg == "" ):
+            self.notify_interface.Notify("Gufw", 0, self.path.get_icon_path(), _("Firewall"), notif_msg, '', {"x-canonical-append": dbus.String("allowed")}, -1) # Expired time notification blocked by bug #390508

=== added directory 'man'
=== renamed directory 'man' => 'man.moved'
=== added file 'man/gufw.8'
--- man/gufw.8	1970-01-01 00:00:00 +0000
+++ man/gufw.8	2011-11-25 02:17:25 +0000
@@ -0,0 +1,83 @@
+.TH gufw 8 "13 Feb 2011"
+
+.SH NAME
+Gufw \- Graphic user interface for managing ufw
+.PP
+.SH DESCRIPTION
+Gufw is an easy to use Ubuntu / Linux firewall, powered by ufw.
+
+Gufw is an easy, intuitive, way to manage your Ubuntu firewall. It supports common tasks such as allowing or blocking pre-configured, common p2p, or individual ports port(s), and many others! Gufw is powered by ufw.
+Introduction
+iptables is already a very powerful tool by itself, but it's syntax can get awkward at times and hard to figure out, so Ubuntu developers decided to make ufw ("The reason ufw was developed is that we wanted to create a server-level firewalling utility that was a little bit more for `human beings`"), which was to be simpler. Now, on the graphical side of things, Firestarer already existed. But why not make an even easier to use GUI for desktop `human beings`, powered by ufw? This is where Gufw comes in.
+
+.SH RUN
+.TP
+You can run Gufw in GNOME menu: /System/Administration/Firewall configuration
+
+.SH "USAGE"
+.SH BASIC SETTINGS
+.PP
+Gufw has two states: Enabled and disabled.
+When Gufw is enabled, you can allow/reject/deny all incoming and outgoing connections.
+
+.SH ADD PRECONFIGURED RULE(S)
+.PP
+You can select between more Programs and Services preconfigured.
+Once Program/Service can have multiples rules.
+
+.SH ADD SIMPLE RULE(S)
+.PP
+You can specify the port or service, and protocol to be allowed (allow traffic), reject (reject traffic without reply), denied (deny traffic with reply), limit (limit traffic) on the host, or limit an IP or Port (Protecting against brute-force login attacks).
+The port can be a number of 5 digits, from 1 to 65535.
+The service can be any of /etc/services file (By example tcpmux, echo, discard, systat...).
+The protocol can be:
+   1. TCP: Apply rule for all traffic in protocol TCP.
+   2. UDP: Apply rule for all traffic in protocol UDP.
+   3. both: Apply rule for all traffic in protocol TCP and UDP.
+   
+.SH ADD ADVANCED RULE(S)
+.PP
+You can add an advanced rule.
+You can specify:
+   1. Protocol: TCP, UDP or both.
+   2. From IP Addres: You can allow/deny/reject/limit traffic from IP address. Example for a range: 192.168.1.0/9
+   3. From Port: You can allow/deny/reject/limit traffic from a port. This parameter is optional. The port can be a number of 5 digits, from 1 to 65535. You can use a range ports with this format port1:port2 (by example 3234:3237), or add multiple ports with port1,port2 (by example 3234,3254).
+   4. To IP Addres: You can allow/deny/limit traffic to an IP address. This parameter is optional. Example for a range: 192.168.1.0/9
+   5. To Port: You can allow/deny/reject/limit traffic to a Port. This parameter is optional. The port can be a number of 5 digits, from 1 to 65535. You can use a range ports with this format port1:port2 (by example 3234:3237).
+
+.SH GENERAL TO PRECONFIGURED / SIMPLE / ADVANCED
+.PP
+With the extended parameters you can:
+   1. Insert a rule in a specific row.
+   2. Set the log level for ufw.
+
+.SH REMOVE ONE RULE
+.PP
+Steps:
+   1. Select a rule in the list.
+   2. Click in Remove button.
+You can delete more rules if you select it.
+
+.SH RESET CONFIGURATION
+.PP
+You will remove all rules and reset the ufw configuration to intial status (disable)!
+
+.SH EDIT PREFERENCES
+.PP
+You can edit your preferences in /Edit/Preferences menu.
+Preferences:
+   1. Gufw log: Gufw will register all commands sent to ufw.
+   2. ufw log: Enable/disable and set the level of the ufw log.
+   3. Listening Report: Will display the ports on the live system in the listening state for TCP and the open state for UDP.
+   4. Notification popups: Gufw will notify the new connections in the Listening Report.
+
+.SH SEE ALSO
+.PP
+\fBufw\fR(8)
+
+.SH AUTHOR
+.PP
+Gufw is (C) 2008-2011, Marcos Alvarez Costales <https://launchpad.net/~costales>.
+
+.PP
+This manual page was originally written by Marcos Alvarez Costales <https://launchpad.net/~costales>.

=== added directory 'po'
=== renamed directory 'po' => 'po.moved'
=== added file 'po/POTFILES.in'
--- po/POTFILES.in	1970-01-01 00:00:00 +0000
+++ po/POTFILES.in	2011-11-25 02:17:25 +0000
@@ -0,0 +1,10 @@
+# intltool-update -p -g gufw 
+# also done automatically with setup.py build or install
+[encoding: UTF-8]
+[type: gettext/xml]gufw/daemon/gufw.daemon.policy.in
+gufw/view/guiGufw.py
+[type: gettext/glade]data/ui/add.ui
+[type: gettext/glade]data/ui/extra_translations_no_distribute.ui
+[type: gettext/glade]data/ui/log.ui
+[type: gettext/glade]data/ui/main.ui
+[type: gettext/glade]data/ui/preferences.ui

=== added file 'po/gufw.pot.OTHER'
--- po/gufw.pot.OTHER	1970-01-01 00:00:00 +0000
+++ po/gufw.pot.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,428 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-08-12 13:18-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@xxxxxx>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../gufw/daemon/gufw.daemon.policy.in.h:1
+msgid "Manage firewall configuration"
+msgstr ""
+
+#: ../gufw/daemon/gufw.daemon.policy.in.h:2
+msgid "You need to authenticate to modify the firewall configuration."
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:135
+msgid "To"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:139
+msgid "Action"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:143
+msgid "From"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:154
+msgid "Protocol"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:157
+msgid "Port"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:160
+msgid "Address"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:163
+msgid "Application"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:461
+msgid "Select rule(s)"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:476
+msgid "Removing rules..."
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:504
+msgid "Rule(s) removed"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:506 ../gufw/view/guiGufw.py:580
+#: ../gufw/view/guiGufw.py:617 ../gufw/view/guiGufw.py:682
+#: ../gufw/view/guiGufw.py:743
+msgid "Error performing operation"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:578 ../gufw/view/guiGufw.py:615
+#: ../gufw/view/guiGufw.py:680 ../gufw/view/guiGufw.py:741
+msgid "Rule added"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:670
+msgid "Error: Insert a port number"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:674 ../gufw/view/guiGufw.py:732
+#: ../gufw/view/guiGufw.py:736
+msgid "Error: Range ports only with tcp or udp protocol"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:728
+msgid "Error: Fields filled out incorrectly"
+msgstr ""
+
+#. Doesn't actually work now, but probably not needed anyway
+#: ../gufw/view/guiGufw.py:822
+msgid "Wrong identification"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:947
+msgid "Enabled firewall"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:952
+msgid "Disabled firewall"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:966
+msgid "Deny all INCOMING traffic"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:970
+msgid "Reject all INCOMING traffic"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:974
+msgid "Allow all INCOMING traffic"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:988
+msgid "Deny all OUTGOING traffic"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:992
+msgid "Reject all OUTGOING traffic"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:996
+msgid "Allow all OUTGOING traffic"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:1042
+msgid ""
+"© 2008-2011 The Gufw Project\n"
+"Shield logo © 2007 Michael Spiegel"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:1043
+msgid "Graphical user interface for ufw"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:1063
+msgid "translator-credits"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:1066
+msgid ""
+"The shield logo is licensed under a Creative Commons\n"
+"Attribution 3.0 Unported License. See for more information:\n"
+"http://creativecommons.org/licenses/by/3.0/\n";
+"\n"
+"All other content is licensed under the GPL-3+.\n"
+"\n"
+"Gufw is free software; you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as\n"
+"published by the Free Software Foundation; either version 3\n"
+"of the License, or (at your option) any later version.\n"
+"\n"
+"Gufw is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied\n"
+"warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n"
+"PURPOSE.\n"
+"See the GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public\n"
+"License along with Gufw; if not, see for more information:\n"
+"http://www.gnu.org/licenses";
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:1102
+msgid "Reloaded ufw rules"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:1109
+msgid "This will remove all rules and disable the firewall!"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:1110
+msgid "Do you want to continue?"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:1111
+msgid "Reset Firewall"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:1120
+msgid "Removed rules and reset firewall!"
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:1179 ../gufw/view/guiGufw.py:1181
+msgid " on "
+msgstr ""
+
+#: ../gufw/view/guiGufw.py:1211 ../data/ui/main.ui.h:6
+msgid "Firewall"
+msgstr ""
+
+#. Expired time notification blocked by bug #390508
+#: ../data/ui/add.ui.h:1
+msgid "Advanced"
+msgstr ""
+
+#: ../data/ui/add.ui.h:2
+msgid "Clean values in boxes"
+msgstr ""
+
+#: ../data/ui/add.ui.h:3
+msgid "Firewall: Add Rule"
+msgstr ""
+
+#: ../data/ui/add.ui.h:4
+msgid "From:"
+msgstr ""
+
+#: ../data/ui/add.ui.h:5
+msgid "IP Address"
+msgstr ""
+
+#: ../data/ui/add.ui.h:6
+msgid "Port Number"
+msgstr ""
+
+#: ../data/ui/add.ui.h:7
+msgid "Port number. Use PortA:PortB for a port range."
+msgstr ""
+
+#: ../data/ui/add.ui.h:8
+msgid "Port or service"
+msgstr ""
+
+#: ../data/ui/add.ui.h:9
+msgid "Preconfigured"
+msgstr ""
+
+#: ../data/ui/add.ui.h:10
+msgid "Rule number to insert"
+msgstr ""
+
+#: ../data/ui/add.ui.h:11
+msgid "Show extended actions"
+msgstr ""
+
+#: ../data/ui/add.ui.h:12
+msgid "Simple"
+msgstr ""
+
+#: ../data/ui/add.ui.h:13
+msgid "To:"
+msgstr ""
+
+#: ../data/ui/extra_translations_no_distribute.ui.h:1
+msgid "ALLOW"
+msgstr ""
+
+#: ../data/ui/extra_translations_no_distribute.ui.h:2
+msgid "ALLOW IN"
+msgstr ""
+
+#: ../data/ui/extra_translations_no_distribute.ui.h:3
+msgid "ALLOW OUT"
+msgstr ""
+
+#: ../data/ui/extra_translations_no_distribute.ui.h:4
+msgid "Anywhere"
+msgstr ""
+
+#: ../data/ui/extra_translations_no_distribute.ui.h:5
+msgid "DENY"
+msgstr ""
+
+#: ../data/ui/extra_translations_no_distribute.ui.h:6
+msgid "DENY IN"
+msgstr ""
+
+#: ../data/ui/extra_translations_no_distribute.ui.h:7
+msgid "DENY OUT"
+msgstr ""
+
+#: ../data/ui/extra_translations_no_distribute.ui.h:8
+msgid "LIMIT"
+msgstr ""
+
+#: ../data/ui/extra_translations_no_distribute.ui.h:9
+msgid "LIMIT IN"
+msgstr ""
+
+#: ../data/ui/extra_translations_no_distribute.ui.h:10
+msgid "LIMIT OUT"
+msgstr ""
+
+#: ../data/ui/extra_translations_no_distribute.ui.h:11
+msgid "REJECT"
+msgstr ""
+
+#: ../data/ui/extra_translations_no_distribute.ui.h:12
+msgid "REJECT IN"
+msgstr ""
+
+#: ../data/ui/extra_translations_no_distribute.ui.h:13
+msgid "REJECT OUT"
+msgstr ""
+
+#: ../data/ui/log.ui.h:1
+msgid "Firewall: Log"
+msgstr ""
+
+#: ../data/ui/log.ui.h:2
+msgid "Remove all Gufw logs"
+msgstr ""
+
+#: ../data/ui/log.ui.h:3
+msgid "Show as server script"
+msgstr ""
+
+#: ../data/ui/log.ui.h:4
+msgid "Show in a simpler format that can be used for scripting"
+msgstr ""
+
+#: ../data/ui/main.ui.h:1
+msgid "<b>Firewall Status</b>"
+msgstr ""
+
+#: ../data/ui/main.ui.h:2
+msgid "<b>Listening Report</b>"
+msgstr ""
+
+#: ../data/ui/main.ui.h:3
+msgid "<b>Rules</b>"
+msgstr ""
+
+#: ../data/ui/main.ui.h:4
+msgid "Add a new firewall rule"
+msgstr ""
+
+#: ../data/ui/main.ui.h:5
+msgid "Documentation..."
+msgstr ""
+
+#: ../data/ui/main.ui.h:7
+msgid "Get Help Online..."
+msgstr ""
+
+#: ../data/ui/main.ui.h:8
+msgid "Incoming:"
+msgstr ""
+
+#: ../data/ui/main.ui.h:9
+msgid "Outgoing:"
+msgstr ""
+
+#: ../data/ui/main.ui.h:10
+msgid "Re_load rules"
+msgstr ""
+
+#: ../data/ui/main.ui.h:11
+msgid "Re_move Rule"
+msgstr ""
+
+#: ../data/ui/main.ui.h:12
+msgid "Re_set Firewall..."
+msgstr ""
+
+#: ../data/ui/main.ui.h:13
+msgid "Remove selected rule"
+msgstr ""
+
+#: ../data/ui/main.ui.h:14
+msgid "Report a Problem..."
+msgstr ""
+
+#: ../data/ui/main.ui.h:15
+msgid "Translate this Application..."
+msgstr ""
+
+#: ../data/ui/main.ui.h:16
+msgid "_Add Rule..."
+msgstr ""
+
+#: ../data/ui/main.ui.h:17
+msgid "_Edit"
+msgstr ""
+
+#: ../data/ui/main.ui.h:18
+msgid "_File"
+msgstr ""
+
+#: ../data/ui/main.ui.h:19
+msgid "_Help"
+msgstr ""
+
+#: ../data/ui/main.ui.h:20
+msgid "_Log..."
+msgstr ""
+
+#: ../data/ui/preferences.ui.h:1
+msgid "<b>Gufw Options</b>"
+msgstr ""
+
+#: ../data/ui/preferences.ui.h:2
+msgid "<b>ufw Options</b>"
+msgstr ""
+
+#: ../data/ui/preferences.ui.h:3
+msgid "Firewall: Preferences"
+msgstr ""
+
+#: ../data/ui/preferences.ui.h:4
+msgid "Listening Report"
+msgstr ""
+
+#: ../data/ui/preferences.ui.h:5
+msgid "Logging"
+msgstr ""
+
+#: ../data/ui/preferences.ui.h:6
+msgid "Logging:"
+msgstr ""
+
+#: ../data/ui/preferences.ui.h:7
+msgid ""
+"Ports in the listening state for TCP and open state for UDP.\n"
+"If enabled, will result in higher CPU usage."
+msgstr ""
+
+#: ../data/ui/preferences.ui.h:9
+msgid "Show notifications"
+msgstr ""
+
+#: ../data/ui/preferences.ui.h:10
+msgid "Show notifications for new connections in Listening Report"
+msgstr ""

=== added file 'setup.py.OTHER'
--- setup.py.OTHER	1970-01-01 00:00:00 +0000
+++ setup.py.OTHER	2011-11-25 02:17:25 +0000
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+
+# Gufw 11.10.1 - http://gufw.tuxfamily.org
+# Copyright (C) 2008-2011 Marcos Alvarez Costales https://launchpad.net/~costales
+#
+# Gufw is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+# 
+# Gufw is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with Gufw; if not, see http://www.gnu.org/licenses for more
+# information.
+
+from DistUtilsExtra.auto import setup
+
+# Create data files
+data = [ ('share/gufw/daemon',              ['gufw/daemon/gufw_daemon.py']),
+       ]
+
+# Setup stage
+setup(
+    name         = "gufw",
+    version      = "11.10.1",
+    description  = "An easy, intuitive, way to manage your Linux firewall. It supports common tasks such as allowing or blocking pre-configured, common p2p, or individual ports port(s), and many others!",
+    author       = "Marcos Alvarez Costales https://launchpad.net/~costales";,
+    author_email = "https://launchpad.net/~costales";,
+    url          = "http://gufw.tuxfamily.org";,
+    license      = "GPL3",
+    data_files   = data,
+    )


Follow ups