99 lines
3.1 KiB
Python
99 lines
3.1 KiB
Python
import os
|
|
|
|
class ModuleList:
|
|
serverDataFolder = config.GetString('server-data-folder', '')
|
|
|
|
def __init__(self):
|
|
self.moduleWhitelistFilename = self.getWhitelistFilename()
|
|
self.moduleBlacklistFilename = self.getBlacklistFilename()
|
|
self.loadBlacklistFile()
|
|
self.loadWhitelistFile()
|
|
|
|
def getWhitelistFilename(self):
|
|
result = '%s.moduleWhiteList' % self.serverDataFolder
|
|
return result
|
|
|
|
def getBlacklistFilename(self):
|
|
result = '%s.moduleBlackList' % self.serverDataFolder
|
|
return result
|
|
|
|
def loadBlacklistFile(self):
|
|
try:
|
|
file = open(self.moduleBlacklistFilename + '.bu', 'r')
|
|
if os.path.exists(self.moduleBlacklistFilename):
|
|
os.remove(self.moduleBlacklistFilename)
|
|
except IOError:
|
|
try:
|
|
file = open(self.moduleBlacklistFilename, 'r')
|
|
except IOError:
|
|
return set()
|
|
|
|
file.seek(0)
|
|
moduleFile = self.loadFrom(file)
|
|
file.close()
|
|
result = self.loadFrom(moduleFile)
|
|
self.moduleBlacklist = result
|
|
return result
|
|
|
|
def loadWhitelistFile(self):
|
|
try:
|
|
file = open(self.moduleWhitelistFilename + '.bu', 'r')
|
|
if os.path.exists(self.moduleWhitelistFilename):
|
|
os.remove(self.moduleWhitelistFilename)
|
|
except IOError:
|
|
try:
|
|
file = open(self.moduleWhitelistFilename, 'r')
|
|
except IOError:
|
|
return set()
|
|
|
|
file.seek(0)
|
|
moduleFile = self.loadFrom(file)
|
|
file.close()
|
|
result = self.loadFrom(moduleFile)
|
|
self.moduleWhitelist = result
|
|
return result
|
|
|
|
def loadFrom(self, file):
|
|
result = set()
|
|
try:
|
|
for module in file:
|
|
module = module.strip()
|
|
if module:
|
|
result.add(module)
|
|
|
|
except EOFError:
|
|
pass
|
|
|
|
return result
|
|
|
|
def updateWhitelistFile(self):
|
|
try:
|
|
backup = self.getWhitelistFilename() + '.bu'
|
|
if os.path.exists(self.getWhitelistFilename()):
|
|
os.rename(self.getWhitelistFilename(), backup)
|
|
file = open(self.getWhitelistFilename(), 'w')
|
|
file.seek(0)
|
|
for whiteModule in self.moduleWhitelist:
|
|
file.write(whiteModule + '\n')
|
|
|
|
file.close()
|
|
if os.path.exists(backup):
|
|
os.remove(backup)
|
|
except EnvironmentError:
|
|
self.notify.warning(str(sys.exc_info()[1]))
|
|
|
|
def updateBlacklistFile(self):
|
|
try:
|
|
backup = self.getBlacklistFilename() + '.bu'
|
|
if os.path.exists(self.getBlacklistFilename()):
|
|
os.rename(self.getBlacklistFilename(), backup)
|
|
file = open(self.getBlacklistFilename(), 'w')
|
|
file.seek(0)
|
|
for blackModule in self.moduleBlacklist:
|
|
file.write(blackModule + '\n')
|
|
|
|
file.close()
|
|
if os.path.exists(backup):
|
|
os.remove(backup)
|
|
except EnvironmentError:
|
|
self.notify.warning(str(sys.exc_info()[1]))
|