forked from LUG-Saar/fetapi
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
4.3 KiB
128 lines
4.3 KiB
import csv |
|
import ConfigParser |
|
import apparatinterface |
|
import phoneinterface |
|
import statemachine |
|
|
|
class ConfigurationReader(object): |
|
DEFAULTS = { |
|
'gpio_numbering': 'BOARD', |
|
'pin_nsa': '11', |
|
'pin_nsi': '13', |
|
'pin_gabelschalter': '15', |
|
'pin_schauzeichen': '12', |
|
'pin_wecker_enable': '16', |
|
'pin_wecker_a': '18', |
|
'pin_wecker_b': '19', |
|
'invert_gs' : 'false', |
|
|
|
'default_proxy': '' |
|
} |
|
|
|
|
|
def __init__(self): |
|
self.__cp = ConfigParser.ConfigParser(defaults=ConfigurationReader.DEFAULTS) |
|
self.__pinconfig = None |
|
self.__dialconfig = None |
|
self.__proxyconfigs = None |
|
self.__phoneconfig = None |
|
|
|
|
|
def __get_global_val(self, option): |
|
return self.__cp.get('fetapd', option) |
|
|
|
|
|
def __get_global_val_int(self, option): |
|
return int(self.__cp.get('fetapd', option)) |
|
|
|
def __get_global_val_bool(self, option): |
|
return self.__cp.get('fetapd', option).lower() in ['true', 'yes', '1'] |
|
|
|
|
|
def __get_proxy_val(self, proxyname, option): |
|
return self.__cp.get('proxy_'+proxyname, option) |
|
|
|
|
|
def __get_proxy_val_int(self, proxyname, option): |
|
return self.__cp.getint('proxy_'+proxyname, option) |
|
|
|
|
|
def __read_shortcuts(self): |
|
fname = self.__get_global_val('shortcuts_file') |
|
shortcuts = {} |
|
with open(fname, 'r') as csvfile: |
|
for row in csv.DictReader(csvfile): |
|
print 'row', row |
|
shortcuts[row['shortcut']] = row['number'] |
|
print 'shortcuts:', shortcuts |
|
return shortcuts |
|
|
|
def __read_blacklist(self): |
|
fname = self.__get_global_val('blacklist_file') |
|
blacklist = [] |
|
with open(fname, 'r') as csvfile: |
|
for row in csv.DictReader(csvfile): |
|
blacklist.append(row['number']) |
|
return blacklist |
|
|
|
def read(self, f): |
|
self.__cp.read(f) |
|
|
|
print 'pin_nsa:', self.__get_global_val_int('pin_nsa'), |
|
self.__pinconfig = apparatinterface.FeApPinConfiguration( |
|
gpio_numbering = self.__get_global_val('gpio_numbering'), |
|
pin_nsa = self.__get_global_val_int('pin_nsa'), |
|
pin_nsi = self.__get_global_val_int('pin_nsi'), |
|
pin_gabelschalter = self.__get_global_val_int('pin_gabelschalter'), |
|
pin_schauzeichen = self.__get_global_val_int('pin_schauzeichen'), |
|
pin_wecker_enable = self.__get_global_val_int('pin_wecker_enable'), |
|
pin_wecker_a = self.__get_global_val_int('pin_wecker_a'), |
|
pin_wecker_b = self.__get_global_val_int('pin_wecker_b'), |
|
invert_gs = self.__get_global_val_bool('invert_gs'), |
|
) |
|
|
|
self.__dialconfig = statemachine.DialConfiguration( |
|
self.__get_global_val_int('dial_timeout'), |
|
self.__read_shortcuts(), |
|
self.__read_blacklist(), |
|
) |
|
|
|
proxyconfigs = [] |
|
for secname in self.__cp.sections(): |
|
if secname.startswith('proxy_'): |
|
proxyname = secname[6:] |
|
proxyconfig = phoneinterface.PhoneProxyConfiguration( |
|
name = proxyname, |
|
proxy = self.__get_proxy_val(proxyname, 'proxy'), |
|
identity = self.__get_proxy_val(proxyname, 'identity'), |
|
username = self.__get_proxy_val(proxyname, 'username'), |
|
password = self.__get_proxy_val(proxyname, 'password'), |
|
realm = self.__get_proxy_val(proxyname, 'realm'), |
|
prefix = self.__get_proxy_val(proxyname, 'prefix') |
|
) |
|
proxyconfigs.append(proxyconfig) |
|
|
|
self.__phoneconfig = phoneinterface.PhoneConfiguration( |
|
sound_device = self.__get_global_val('sound_device'), |
|
incoming_timeout = self.__get_global_val_int('incoming_timeout'), |
|
linphone_config = self.__get_global_val('linphone_config'), |
|
default_proxy = self.__get_global_val('default_proxy'), |
|
stun_server = self.__get_global_val('stun_server'), |
|
proxies = proxyconfigs |
|
) |
|
|
|
|
|
@property |
|
def pinconfig(self): |
|
return self.__pinconfig |
|
|
|
|
|
@property |
|
def dialconfig(self): |
|
return self.__dialconfig |
|
|
|
|
|
@property |
|
def phoneconfig(self): |
|
return self.__phoneconfig |
|
|
|
|