Skip to content

Commit

Permalink
firewall.core.fw_config: Create backup on zone, service, ipset and ic…
Browse files Browse the repository at this point in the history
…mptype removal (RHBZ#1339251)

On removal the zone, service, ipset and icmptype file X is simply renamed to
X.old to preserve it. If this fails, it gets removed.
  • Loading branch information
t-woerner committed Jun 22, 2016
1 parent e193d28 commit a83c520
Showing 1 changed file with 33 additions and 4 deletions.
37 changes: 33 additions & 4 deletions src/firewall/core/fw_config.py
Expand Up @@ -23,6 +23,7 @@

import copy
import os, os.path
import shutil
from firewall import config
from firewall.core.logger import log
from firewall.core.io.icmptype import IcmpType, icmptype_reader, icmptype_writer
Expand Down Expand Up @@ -299,7 +300,14 @@ def _remove_ipset(self, obj):
raise FirewallError(errors.INVALID_DIRECTORY,
"'%s' != '%s'" % (obj.path,
config.ETC_FIREWALLD_IPSETS))
os.remove("%s/%s.xml" % (obj.path, obj.name))

name = "%s/%s.xml" % (obj.path, obj.name)
try:
shutil.move(name, "%s.old" % name)
except Exception as msg:
log.error("Backup of file '%s' failed: %s", name, msg)
os.remove(name)

del self._ipsets[obj.name]

def check_builtin_ipset(self, obj):
Expand Down Expand Up @@ -465,7 +473,14 @@ def _remove_icmptype(self, obj):
raise FirewallError(errors.INVALID_DIRECTORY,
"'%s' != '%s'" % \
(obj.path, config.ETC_FIREWALLD_ICMPTYPES))
os.remove("%s/%s.xml" % (obj.path, obj.name))

name = "%s/%s.xml" % (obj.path, obj.name)
try:
shutil.move(name, "%s.old" % name)
except Exception as msg:
log.error("Backup of file '%s' failed: %s", name, msg)
os.remove(name)

del self._icmptypes[obj.name]

def check_builtin_icmptype(self, obj):
Expand Down Expand Up @@ -631,7 +646,14 @@ def _remove_service(self, obj):
raise FirewallError(errors.INVALID_DIRECTORY,
"'%s' != '%s'" % \
(obj.path, config.ETC_FIREWALLD_SERVICES))
os.remove("%s/%s.xml" % (obj.path, obj.name))

name = "%s/%s.xml" % (obj.path, obj.name)
try:
shutil.move(name, "%s.old" % name)
except Exception as msg:
log.error("Backup of file '%s' failed: %s", name, msg)
os.remove(name)

del self._services[obj.name]

def check_builtin_service(self, obj):
Expand Down Expand Up @@ -813,7 +835,14 @@ def _remove_zone(self, obj):
raise FirewallError(errors.INVALID_DIRECTORY,
"'%s' doesn't start with '%s'" % \
(obj.path, config.ETC_FIREWALLD_ZONES))
os.remove("%s/%s.xml" % (config.ETC_FIREWALLD_ZONES, obj.name))

name = "%s/%s.xml" % (obj.path, obj.name)
try:
shutil.move(name, "%s.old" % name)
except Exception as msg:
log.error("Backup of file '%s' failed: %s", name, msg)
os.remove(name)

del self._zones[obj.name]

def check_builtin_zone(self, obj):
Expand Down

0 comments on commit a83c520

Please sign in to comment.