| Server IP : 182.53.201.61 / Your IP : 216.73.217.175 Web Server : Apache/2.2.15 (Fedora) System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686 User : apache ( 48) PHP Version : 5.3.3 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/system-config-network/netconfpkg/conf/ |
Upload File : |
from .Conf import Conf # pylint: disable-msg=W0403
class ConfEResolv(Conf):
# /etc/resolv.conf
def __init__(self):
Conf.__init__(self, '/etc/resolv.conf', '#', '\t ', ' ')
def read(self):
Conf.read(self)
self.initvars()
def initvars(self):
# pylint: disable-msg=W0201
self.vars = {}
self.rewind()
while self.findnextcodeline():
var = self.getfields()
if var[0] == 'nameserver':
if self.vars.has_key('nameservers'):
self.vars['nameservers'].append(var[1])
else:
self.vars['nameservers'] = [ var[1] ]
else:
self.vars[var[0]] = var[1:]
self.nextline()
self.rewind()
def __getitem__(self, varname):
if self.vars.has_key(varname):
return self.vars[varname]
else:
return []
def __setitem__(self, varname, value):
# set first (should be only) instance to values in list value
place = self.tell()
self.rewind()
if varname == 'nameservers':
if self.findnextline('^nameserver[' + self.separators + ']+'):
# if there is a nameserver line, save the place,
# remove all nameserver lines, then put in new ones in order
placename = self.tell()
while self.findnextline('^nameserver['+self.separators+']+'):
self.deleteline()
self.seek(placename)
for nameserver in value:
self.insertline('nameserver' + self.separator + nameserver)
self.nextline()
self.seek(place)
else:
# no nameservers entries so far
self.seek(place)
for nameserver in value:
self.insertline('nameserver' + self.separator + nameserver)
else:
# not a nameserver, so all items on one line...
if self.findnextline('^' + varname + '[' + self.separators + ']+'):
self.deleteline()
self.insertlinelist([ varname,
self.separator.join(value) ])
self.seek(place)
else:
self.seek(place)
self.insertlinelist([ varname,
self.separator.join(value) ])
# no matter what, update our idea of the variable...
self.vars[varname] = value
def __delitem__(self, varname):
# delete *every* instance...
self.rewind()
while self.findnextline('^[' + self.separators + ']*' + varname):
self.deleteline()
del self.vars[varname]
def write(self):
# Need to make sure __setitem__ is called for each item to
# maintain consistancy, in case some did something like
# resolv['nameservers'].append('123.123.123.123')
# or
# resolv['search'].append('another.domain')
for key in self.vars.keys():
self[key] = self.vars[key]
if self.filename != '/etc/resolv.conf':
Conf.write(self)
else:
# bug 125712: /etc/resolv.conf modifiers MUST use
# change_resolv_conf function to change resolv.conf
import tempfile
(fd, self.filename) = tempfile.mkstemp('', '/tmp/')
Conf.write(self)
import commands
commands.getstatusoutput(
"/bin/bash -c "
"'. /etc/sysconfig/network-scripts/network-functions;"
" change_resolv_conf %s'" % self.filename)
fd.close()
self.filename = "/etc/resolv.conf"
def keys(self):
# no need to return list in order here, I think.
return self.vars.keys()
def has_key(self, key):
return self.vars.has_key(key)