[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