-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathConfig.py
90 lines (71 loc) · 2.28 KB
/
Config.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
import ConfigParser
from cStringIO import StringIO
from Encrypt import AESObject
class _settings(ConfigParser.RawConfigParser):
""" Easy option getting/setting """
def __init__(self, filename, encryption_key):
self._parser = ConfigParser.RawConfigParser()
self.filename = filename
self.encryption_key = encryption_key
try:
if self.encryption_key:
self.cipher = AESObject(self.encryption_key)
decrypted_string = self.cipher.decrypt(open(self.filename, 'rb').read())
f = StringIO(decrypted_string)
self._parser.readfp(f)
self.encryption = True
else:
self._parser.read(self.filename)
self.encryption = False
self.success = True
except:
self.success = False
def returnReadState(self):
return self.success
def set_encryption(self, bool):
self.encryption = bool
def get_encryption(self):
return self.encryption
def set_encryption_key(self, key):
self.encryption_key = key
self.cipher = AESObject(self.encryption_key)
def get_encryption_key(self):
if self.encryption_key:
return self.encryption_key
else:
return ''
def has_section(self, sectionname):
return self._parser.has_section(sectionname)
def add_section(self, section):
self._parser.add_section(section)
def remove_section(self, section):
self._parser.remove_section(section)
def get_sections(self):
return self._parser.sections()
def get_option(self, section, opt):
return self._parser.get(section, opt)
def set_option(self, section, opt, value = None):
return self._parser.set(section, opt, value)
def has_option(self, section, opt):
return self._parser.has_option(section, opt)
def flush_configuration(self):
if self.encryption:
f = StringIO()
self._parser.write(f)
encrypted_string = self.cipher.encrypt(f.getvalue())
open(self.filename, 'wb').write(encrypted_string)
else:
self._parser.write(open(self.filename, 'wb'))
def __setitem__(self, key, value):
return self.set_option(key, value)
def __getitem__(self, key):
try:
return self.get_option(key)
except ConfigParser.NoOptionError as E:
raise KeyError(E)
def __contains__(self, section, item):
return self._parser.has_option(section, item)
settings = None
def init(filename, encryption_key=None):
global settings
settings = _settings(filename, encryption_key)