[Uludag-commits] r10128 - trunk/tasma/firewall-config/src

svn-uludag at uludag.org.tr svn-uludag at uludag.org.tr
2 Kas 2006 Per 22:31:52 EET


Author: bahadir.kandemir
Date: Thu Nov  2 22:31:52 2006
New Revision: 10128

Modified:
   trunk/tasma/firewall-config/src/firewall-config.py
   trunk/tasma/firewall-config/src/firewall.ui
   trunk/tasma/firewall-config/src/firewall_config.png
   trunk/tasma/firewall-config/src/rules.py
Log:
* Pre-defined rules moved to rules.py
* Icon replaced with new one


Modified: trunk/tasma/firewall-config/src/firewall-config.py
=================================================================
--- trunk/tasma/firewall-config/src/firewall-config.py	(original)
+++ trunk/tasma/firewall-config/src/firewall-config.py	Thu Nov  2 22:31:52 2006
@@ -28,7 +28,7 @@
 import comar
 
 # Rules
-from rules import named_rules
+import rules
 
 def I18N_NOOP(str):
     return str
@@ -96,8 +96,23 @@
 
         self.aboutus = KAboutApplication(self)
 
+        # Initial conditions
+        self.state = 'off'
+        self.profile = ''
+        self.emptyRules()
         mainwidget.pushStatus.setEnabled(False)
 
+        # First Tab - Incoming Connections
+        self.services = []
+        mainwidget.frameServices.setColumnLayout(0, Qt.Vertical)
+        frameServicesLayout = QVBoxLayout(mainwidget.frameServices.layout())
+        frameServicesLayout.setAlignment(Qt.AlignTop)
+        for key, (rule, name) in rules.filter.iteritems():
+            chk = QCheckBox(mainwidget.frameServices, key)
+            chk.setText(name)
+            frameServicesLayout.addWidget(chk)
+            self.services.append(chk)
+
         # Icons
         mainwidget.pixmapFW.setPixmap(loadIcon('firewall_config', size=48))
         mainwidget.pixmapIncoming.setPixmap(loadIcon('krfb.png', size=48))
@@ -118,10 +133,6 @@
         self.connect(mainwidget.pushApply, SIGNAL('clicked()'),self.slotApply)
 
         # Get FW state
-        self.state = 'off'
-        self.profile = ''
-        self.rules = {}
-
         self.comar.call('Net.Filter.getProfile', id=4)
         self.handleComar(self.comar.read_cmd())
 
@@ -147,17 +158,27 @@
             mainwidget.textStatus.setText(i18n('<b><font size=\'+1\'>Firewall is not running</font></b>'))
             mainwidget.textStatus.setPaletteForegroundColor(QColor(182, 41, 31))
             mainwidget.textStatus2.setText(i18n('Click here to start the firewall and allow connections only to specified services.'))
-            mainwidget.frameCheckBoxes.setEnabled(False)
+            self.updateRules()
 
-    def updateCheckBoxes(self):
-        mainwidget.frameCheckBoxes.setEnabled(True)
-        inRule = '-A PARDUS-USER %s -j ACCEPT'
-        for named in named_rules:
-            checkbox = eval('mainwidget.check%s' % named)
-            if 'filter' in self.rules and inRule % named_rules[named] in self.rules['filter']:
-                checkbox.setChecked(True)
-            else:
-                checkbox.setChecked(False)
+    def updateRules(self):
+        if self.state == 'on':
+            # First Tab - Incoming Connections
+            for checkbox in self.services:
+                if rules.filter[checkbox.name()][0] in self.rules['filter']:
+                    checkbox.setChecked(True)
+                else:
+                    checkbox.setChecked(False)
+            mainwidget.frameServices.setEnabled(True)
+        else:
+            mainwidget.frameServices.setEnabled(False)
+
+    def emptyRules(self):
+        self.rules = {
+            'filter': [],
+            'mangle': [],
+            'nat': [],
+            'raw': []
+        }
 
     def handleComar(self, reply):
         if reply.command == 'notify':
@@ -171,15 +192,13 @@
         elif reply.command == 'result':
             if reply.id == 2:
                 # Get Rules
-                self.rules = {}
+                self.emptyRules()
                 for rule in reply.data.split('\n'):
                     if not rule:
                         continue
                     table, rule = rule.split(' ', 1)
-                    if table not in self.rules:
-                        self.rules[table] = []
                     self.rules[table].append(rule)
-                self.updateCheckBoxes()
+                self.updateRules()
             elif reply.id == 3:
                 # Get State
                 self.setState(reply.data)
@@ -210,34 +229,30 @@
     def slotApply(self):
         self.saveAll()
 
+    def setRule(self, table, rule):
+        rule = '-t %s %s' % (table, rule)
+        self.comar.call('Net.Filter.setRule', {'rule': rule}, id=10)
+        self.handleComar(self.comar.read_cmd())
 
-    def saveAll(self):
-        if 'filter' not in self.rules:
-            self.rules['filter'] = []
-        s1 = self.rules['filter']
-        s2 = []
-
-        inRule = '-A PARDUS-USER %s -j ACCEPT'
-
-        for named in named_rules:
-            checkbox = eval('mainwidget.check%s' % named)
-            if checkbox.isChecked():
-                s2.append(inRule % named_rules[named])
-
-        s1 = set(s1)
-        s2 = set(s2)
+    def saveRules(self, table, now):
+        s1 = set(self.rules[table])
+        s2 = set(now)
 
         for rule in s1 - s2:
-            self.setRule(rule.replace('-A PARDUS-USER', '-D PARDUS-USER'))
-            self.rules['filter'].remove(rule)
+            self.setRule(table, rule.replace('-A', '-D', 1))
+            self.rules[table].remove(rule)
 
         for rule in s2 - s1:
-            self.setRule(rule)
-            self.rules['filter'].append(rule)
+            self.setRule(table, rule)
+            self.rules[table].append(rule)
 
-    def setRule(self, rule):
-        self.comar.call('Net.Filter.setRule', {'rule': rule}, id=10)
-        self.handleComar(self.comar.read_cmd())
+    def saveAll(self):
+        # First Tab - Incoming Connections
+        now = []
+        for checkbox in self.services:
+            if checkbox.isChecked():
+                now.append(rules.filter[checkbox.name()][0])
+        self.saveRules('filter', now)
 
     def __del__(self):
         pass

Modified: trunk/tasma/firewall-config/src/firewall.ui
=================================================================
--- trunk/tasma/firewall-config/src/firewall.ui	(original)
+++ trunk/tasma/firewall-config/src/firewall.ui	Thu Nov  2 22:31:52 2006
@@ -8,8 +8,8 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>484</width>
-            <height>482</height>
+            <width>449</width>
+            <height>462</height>
         </rect>
     </property>
     <property name="caption">
@@ -338,7 +338,7 @@
                     </widget>
                     <widget class="QButtonGroup" row="1" column="0" rowspan="1" colspan="2">
                         <property name="name">
-                            <cstring>frameCheckBoxes</cstring>
+                            <cstring>frameServices</cstring>
                         </property>
                         <property name="sizePolicy">
                             <sizepolicy>
@@ -364,59 +364,6 @@
                         <property name="title">
                             <string></string>
                         </property>
-                        <grid>
-                            <property name="name">
-                                <cstring>unnamed</cstring>
-                            </property>
-                            <widget class="QCheckBox" row="2" column="0">
-                                <property name="name">
-                                    <cstring>checkinMail</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>E-mail Services</string>
-                                </property>
-                            </widget>
-                            <widget class="QCheckBox" row="1" column="0">
-                                <property name="name">
-                                    <cstring>checkinWeb</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>Web Services</string>
-                                </property>
-                            </widget>
-                            <widget class="QCheckBox" row="3" column="0">
-                                <property name="name">
-                                    <cstring>checkinRemote</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>Remote Login Services</string>
-                                </property>
-                            </widget>
-                            <widget class="QCheckBox" row="4" column="0">
-                                <property name="name">
-                                    <cstring>checkinWFS</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>Windows File Sharing Services</string>
-                                </property>
-                            </widget>
-                            <widget class="QCheckBox" row="5" column="0">
-                                <property name="name">
-                                    <cstring>checkinIRC</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>Internet Relay Chat Services</string>
-                                </property>
-                            </widget>
-                            <widget class="QCheckBox" row="8" column="0">
-                                <property name="name">
-                                    <cstring>checkinFTP</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>File Transfer Services</string>
-                                </property>
-                            </widget>
-                        </grid>
                     </widget>
                     <widget class="QLabel" row="0" column="1">
                         <property name="name">

Modified: trunk/tasma/firewall-config/src/firewall_config.png
=================================================================
Binary files. No diff available.

Modified: trunk/tasma/firewall-config/src/rules.py
=================================================================
--- trunk/tasma/firewall-config/src/rules.py	(original)
+++ trunk/tasma/firewall-config/src/rules.py	Thu Nov  2 22:31:52 2006
@@ -1,8 +1,28 @@
-named_rules = {
-    'inMail': '-p tcp -m multiport --dports 25,110',
-    'inWeb': '-p tcp -m multiport --dports 80,443',
-    'inRemote': '-p tcp -m multiport --dports 22',
-    'inWFS': '-p tcp -m multiport --dports 445',
-    'inIRC': '-p tcp -m multiport --dports 6667-6669',
-    'inFTP': '-p tcp -m multiport --dports 21',
+from kdecore import i18n
+
+filter = {
+    'inMail': (
+        '-A PARDUS-USER -p tcp -m multiport --dports 25,110 -j ACCEPT',
+        i18n('Mail services'),
+    ),
+    'inWeb': (
+        '-A PARDUS-USER -p tcp -m multiport --dports 80,443 -j ACCEPT',
+        i18n('Web services'),
+    ),
+    'inRemote': (
+        '-A PARDUS-USER -p tcp -m multiport --dports 22 -j ACCEPT',
+        i18n('Remote login service'),
+    ),
+    'inWFS': (
+        '-A PARDUS-USER -p tcp -m multiport --dports 445 -j ACCEPT',
+        i18n('Windows file sharin service'),
+    ),
+    'inIRC': (
+        '-A PARDUS-USER -p tcp -m multiport --dports 6667-6669 -j ACCEPT',
+        i18n('Internet relay chat service'),
+    ),
+    'inFTP': (
+        '-A PARDUS-USER -p tcp -m multiport --dports 21 -j ACCEPT',
+        i18n('File transfer service'),
+    )
 }


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi