MOON
Server: Apache/2.2.31 (Unix) mod_ssl/2.2.31 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
System: Linux csr818.wilogic.com 2.6.18-419.el5xen #1 SMP Fri Feb 24 22:50:37 UTC 2017 x86_64
User: digitals (531)
PHP: 5.4.45
Disabled: NONE
Upload Files
File: //usr/share/system-config-network/netconfpkg/NCIPsecList.py
## Copyright (C) 2001-2005 Red Hat, Inc.
## Copyright (C) 2001-2005 Harald Hoyer <harald@redhat.com>

## This program 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 2 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, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
import string

from netconfpkg.conf import Conf
from NC_functions import *
from netconfpkg import IPsecList_base
import netconfpkg
import UserList
from netconfpkg.NCIPsec import IPsec

class IPsecList(IPsecList_base):
    def __init__(self, list = None, parent = None):
        IPsecList_base.__init__(self, list, parent)
        self.oldname = None

    def load(self):
        from NCIPsec import ConfIPsec

        self.__delslice__(0, len(self))

        devices = ConfDevices()
        for ipsec_name in devices:
            conf = ConfIPsec(ipsec_name)
            type = None
            # take a peek in the config file
            if conf.has_key("TYPE"):
                type = conf["TYPE"]

            if type != "IPSEC":
                continue

            log.log(5, "Loading ipsec config %s" % ipsec_name)
            ipsec = IPsec()
            ipsec.load(ipsec_name)
            self.append(ipsec)
                        
        self.commit(false)
                
    def save(self):
        from NCIPsec import ConfIPsec
        for ipsec in self:
            ipsec.save()

        dirname = netconfpkg.ROOT + SYSCONFDEVICEDIR
        #
        # Remove old config files
        #
        try:
            dir = os.listdir(dirname)
        except OSError, msg:
            raise IOError, 'Cannot save in ' \
                  + dirname + ': ' + str(msg)
        for entry in dir:
            if not testFilename(dirname + entry):
                continue

            if (len(entry) <= 6) or \
                   entry[:6] != 'ifcfg-':
                continue
            
            ipsecid = entry[6:]
                
            for ipsec in self:
                if ipsec.IPsecId == ipsecid:
                    break
            else:
                # check for IPSEC
                conf = ConfIPsec(ipsecid)
                type = None
                if conf.has_key("TYPE"): type = conf["TYPE"]
                if type != IPSEC:
                    continue

                unlink(dirname + entry)
                unlink(netconfpkg.ROOT + OLDSYSCONFDEVICEDIR + \
                       '/ifcfg-' + ipsecid)

        #
        # Remove old key files
        #
        try:
            dir = os.listdir(dirname)
        except OSError, msg:
            raise IOError, 'Cannot save in ' \
                  + dirname + ': ' + str(msg)
        for entry in dir:
            if not testFilename(dirname + entry):
                continue

            if (len(entry) <= 5) or \
               entry[:5] != 'keys-':
                continue
            
            ipsecid = entry[5:]
                
            for ipsec in self:
                if ipsec.IPsecId == ipsecid:
                    break
            else:
                # check for IPSEC
                from NCDevice import ConfDevice
                conf = ConfDevice(ipsecid)
                type = None                
                if conf.has_key("TYPE"): type = conf["TYPE"]
                if type:
                    continue
                
                unlink(dirname + entry)
                unlink(netconfpkg.ROOT + OLDSYSCONFDEVICEDIR+'/keys-'+ipsecid)

    def __repr__(self):
        return repr(self.__dict__)

    def _objToStr(self, parentStr = None):
        retstr = ""
        for ipsec in self:
            retstr += ipsec._objToStr("IPsecList.%s" % (ipsec.IPsecId))

        return retstr

    def _parseLine(self, vals, value):
        if len(vals) <= 1:
            return
        if vals[0] == "IPsecList":
            del vals[0]
        else:
            return

        for ipsec in self:
            if ipsec.IPsecId == vals[0]:
                ipsec._parseLine(vals[1:], value)
                return
        
        i = self.addIPsec()
        self[i].IPsecId = vals[0]
        self[i]._parseLine(vals[1:], value)
    
    
IPSList = None

def getIPsecList(refresh = None):
    global IPSList
    if IPSList == None or refresh:
        IPSList = IPsecList()
        IPSList.load()
    return IPSList