parent
80b83a2e28
commit
975ec2d4d5
2 changed files with 125 additions and 116 deletions
@ -1,114 +0,0 @@ |
||||
import sys |
||||
import logging |
||||
log = logging.getLogger("econnman.pnac") |
||||
|
||||
CONF_FILE = "/var/lib/connman/econnman.config" |
||||
|
||||
# python2 backwards compatibility |
||||
try: |
||||
from configparser import SafeConfigParser |
||||
except ImportError: |
||||
from ConfigParser import SafeConfigParser |
||||
|
||||
|
||||
class PNACConfig(SafeConfigParser): |
||||
|
||||
"""A custom config parser for IEEE802.1x (PNAC) |
||||
|
||||
Section names are prefixed with service_ |
||||
|
||||
""" |
||||
|
||||
def __init__(self): |
||||
SafeConfigParser.__init__(self) |
||||
self.optionxform = str |
||||
|
||||
def read(self): |
||||
args = CONF_FILE, 'r' |
||||
kwargs = {} |
||||
if sys.hexversion >= 0x03000000: |
||||
kwargs["encoding"] = 'utf8' |
||||
try: |
||||
with open(*args, **kwargs) as fd: |
||||
self.readfp(fd) |
||||
except IOError: |
||||
log.error( |
||||
"Econnman cannot read the configuration file \"%s\" used by " |
||||
"connman to configure your ieee802.1x networks. Make sure the " |
||||
"user running econnman is able to read/write it.", |
||||
CONF_FILE |
||||
) |
||||
#raise |
||||
|
||||
# defaults() |
||||
# sections() |
||||
|
||||
def add_section(self, service_name): |
||||
secname = 'service_' + service_name |
||||
SafeConfigParser.add_section(self, secname) |
||||
self.set(service_name, 'Type', 'wifi') |
||||
self.set(service_name, 'Name', service_name) |
||||
|
||||
def has_section(self, service_name): # config_exists |
||||
return bool(self.section_get(service_name)) |
||||
|
||||
# options() |
||||
|
||||
def has_option(self, service_name, key): |
||||
secname = self.section_get(service_name) |
||||
return SafeConfigParser.has_option(secname, key) |
||||
|
||||
# read() |
||||
# readfp() |
||||
|
||||
def get(self, service_name, key): # config_option_get |
||||
secname = self.section_get(service_name) |
||||
if self.has_option(service_name, key): |
||||
return SafeConfigParser.get(self, secname, key) |
||||
return None |
||||
|
||||
# getint() |
||||
# getfloat() |
||||
# getboolean() |
||||
# items() |
||||
|
||||
def set(self, service_name, key, value): # config_set |
||||
secname = self.section_get(service_name) |
||||
if not self.has_section(service_name): |
||||
self.add_section(service_name) |
||||
if value is not None: |
||||
SafeConfigParser.set(self, secname, key, value) |
||||
elif self.has_option(secname, key): |
||||
self.remove_option(secname, key) |
||||
#self.write() |
||||
|
||||
def write(self): |
||||
try: |
||||
with open(CONF_FILE, 'w', encoding='utf8') as configfile: |
||||
SafeConfigParser.write(self, configfile) |
||||
except IOError: |
||||
log.error( |
||||
"Econnman cannot write to the configuration file \"%s\" used " |
||||
"by connman to configure your ieee802.1x networks. Make sure " |
||||
"the user running econnman is able to read/write it.", |
||||
CONF_FILE |
||||
) |
||||
|
||||
def remove_option(self, service_name, key): |
||||
secname = self.section_get(service_name) |
||||
SafeConfigParser.remove_option(self, secname, key) |
||||
|
||||
def remove_section(self, service_name): # config_del |
||||
secname = self.section_get(service_name) |
||||
ret = SafeConfigParser.remove_section(self, secname) |
||||
#self.write() |
||||
return ret |
||||
|
||||
def section_get(self, service_name): # config_get |
||||
#secname = 'service_' + service_name |
||||
for sec in self.sections(): |
||||
if self.has_option(sec, 'Name') and \ |
||||
self.get(sec, 'Name') == service_name: |
||||
return sec |
||||
else: |
||||
return None |
Loading…
Reference in new issue