-
Notifications
You must be signed in to change notification settings - Fork 36
/
config_manager.py
145 lines (110 loc) · 4.72 KB
/
config_manager.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/usr/bin/env python
"""this class handles the config stuff and presents an easy interface for the other classes
"""
from ConfigParser import *
import os
import sys
import time
if sys.platform in ('win32', 'cli'):
defaultConfigFile = "unifi_lab.ini"
else:
defaultConfigFile = "/etc/unifi_lab/unifi_lab.ini"
# Weekday as a decimal number [0(Sunday),6].
# we map it by hand as %A depends on the local language --> we use %w
mapSchedule = { 0: "onOffScheduleSunday",
1: "onOffScheduleMonday",
2: "onOffScheduleTuesday",
3: "onOffScheduleWednesday",
4: "onOffScheduleThursday",
5: "onOffScheduleFriday",
6: "onOffScheduleSaturday"
}
# we map it by hand as otherwise the local language will make problemes
mapDayOfTheWeek = {"sun": 0, "mon": 1, "tue": 2, "wed": 3, "thu": 4, "fri": 5, "sat": 6}
class ConfigManager:
_config = None
_configFile = None
def __init__(self, configFile = None):
# this is needed as the caller can provide None as parameter
if not configFile:
configFile = defaultConfigFile
if not os.path.isfile(configFile):
sys.stdout = sys.stderr
print "Error: Cannot find config file %r" % configFile
sys.exit(2)
self._config = SafeConfigParser()
self._config.read(configFile)
self._configFile = configFile
def getConfigFile(self):
return self._configFile
# General
def getPidFile(self):
return self._config.get("General", "pidFile")
def getLogFile(self):
return self._config.get("General", "logFile")
def getErrorLogFile(self):
return self._config.get("General", "errorLogFile")
def getInterval(self):
return int(self._config.get("General", "interval"))
# Controller
def getControllerHost(self):
return self._config.get("Controller", "controllerHost")
def getControllerUsername(self):
return self._config.get("Controller", "controllerUsername", raw=True)
def getControllerPassword(self):
return self._config.get("Controller", "controllerPassword", raw=True)
def getControllerPort(self):
return self._config.get("Controller", "controllerPort")
def getControllerVersion(self):
return self._config.get("Controller", "controllerVersion")
# Mail
def getFromAddress(self):
return self._config.get("Mail", "fromAddress")
def getToAddresses(self):
tmp = []
for address in self._config.get("Mail", "toAddresses").split(","):
tmp.append(address.strip())
return tmp
def getSmtpServer(self):
return self._config.get("Mail", "smtpServer")
# Feature
def getEnableMacAuth(self):
return self._config.getboolean("Feature", "enableMacAuth")
def getEnablePoorSignalReconnect(self):
return self._config.getboolean("Feature", "enablePoorSignalReconnect")
def getEnablePeriodicReboot(self):
return self._config.getboolean("Feature", "enablePeriodicReboot")
# MacAuth
def getMacAuthListFile(self):
return self._config.get("MacAuth", "macAuthListFile")
# PoorSignalReconnect
def getPoorSignalBase(self):
return self._config.get("PoorSignalReconnect", "poorSignalBase")
def getPoorSignalThreshold(self):
return self._config.getint("PoorSignalReconnect", "poorSignalThreshold")
def getPoorSignalThresholdSeconds(self):
return self._config.getint("PoorSignalReconnect", "poorSignalThresholdSeconds")
# PeriodicReboot
def getPeriodicRebootApNamePrefix(self):
return self._config.get("PeriodicReboot", "periodicRebootApNamePrefix")
def getRebootToday(self):
"""
return the current day if today is a reboot day and None if not.
"""
today = int(time.strftime("%w", time.localtime()))
for day in self._config.get("PeriodicReboot", "periodicRebootDays").lower().split(","):
if mapDayOfTheWeek[day] == today:
return today
return None
def getPeriodicRebootTime(self):
return self._config.get("PeriodicReboot", "periodicRebootTime")
def main():
""" Main program: parse command line and start processing .. only for Testing """
myConfigManager = ConfigManager("unifi_lab_development.ini")
print myConfigManager.getToAddresses()
print myConfigManager.getLogFile()
print myConfigManager.getEnablePeriodicReboot()
print myConfigManager.getRebootToday()
print myConfigManager.getInterval()
if __name__ == '__main__':
main()