SF.net SVN: fclient: [92] trunk/sandbox/fcp/fcp2_0_config.py
Status: Pre-Alpha
Brought to you by:
jurner
|
From: <ju...@us...> - 2008-01-30 14:35:57
|
Revision: 92
http://fclient.svn.sourceforge.net/fclient/?rev=92&view=rev
Author: jurner
Date: 2008-01-30 06:35:57 -0800 (Wed, 30 Jan 2008)
Log Message:
-----------
re
Modified Paths:
--------------
trunk/sandbox/fcp/fcp2_0_config.py
Modified: trunk/sandbox/fcp/fcp2_0_config.py
===================================================================
--- trunk/sandbox/fcp/fcp2_0_config.py 2008-01-30 14:35:33 UTC (rev 91)
+++ trunk/sandbox/fcp/fcp2_0_config.py 2008-01-30 14:35:57 UTC (rev 92)
@@ -1,5 +1,7 @@
"""Sketch for fcp config tree"""
+
+from fcp2_0_consts import ConfigMessageParams
#****************************************************************************************
#
#****************************************************************************************
@@ -26,242 +28,15 @@
#
#****************************************************************************************
class Config(object):
-
"""Class representing fcp config tree
-
"""
- #{'current': {'valueType': (8, None), 'allowedHosts': 'true'}, 'default': {'valueType': (8, None), 'allowedHosts': 'true'}}
-
- ValueClassCurrent = 'current'
- ValueClassDefault = 'default'
- ValueClassExpertFlag = 'expertFlag'
- ValueClassForceWriteFlag = 'forceWriteFlag'
- ValueClassShortDescription = 'shortDescription'
- ValueClassLongDescription = 'longDescription'
- ValueClassSortOrder = 'sortOrder'
- ValueClassType = 'valueType'
-
- ValueClassesFcp = (
- ValueClassDefault,
- ValueClassExpertFlag,
- ValueClassForceWriteFlag,
- ValueClassShortDescription,
- ValueClassLongDescription,
- )
- ValueClassAll = ValueClassesFcp + (ValueClassType, )
-
-
- ValueTypeUnknown = 0
- ValueTypeBool = 1
- ValueTypeInt = 2 # params: LowerLimit, UpperLimit
- ValueTypeBytes = 3 # may have params: LowerLimit, UpperLimit
- ValueTypeFilename = 4
- ValueTypeDirname = 5
- ValueTypePort = 6
- ValueTypeIP = 7
- ValueTypeIPList = 8
- ValueTypeChoice = 9
- ValueTypeChoiceDirname = 10
- ValueTypePercent = 11
- ValueTypeString = 12
- ValueTypeUri = 13
- ValueTypeStringList = 14
-
-
- class ChoiceFProxyCss:
- Clean = 'Clean'
- Boxed = 'boxed'
- GrayAndBlue = 'grayandblue'
- Sky = 'sky'
-
- ChoicesAll = (Clean, Boxed, GrayAndBlue, Sky)
- ChoicesAllowMultiple = False
-
- class ChoiceLoggerPriority:
- Error = 'ERROR'
- Normal = 'NORMAL'
- Minor = 'MINOR'
- Debug = 'DEBUG'
-
- ChoicesAll = (Error, Normal, Minor, Debug)
- ChoicesAllowMultiple = False
-
- class ChoiceNodeDownloadAllowedDirs:
- All = 'all'
- Downloads = 'downloads'
- Nowhere = ''
-
- ChoicesAll = (All, Downloads, Nowhere)
- ChoicesAllowMultiple = False
-
- class ChoiceNodeUploadAllowedDirs:
- All = 'all'
- Nowhere = ''
- ChoicesAll = (All, Nowhere)
- ChoicesAllowMultiple = False
-
- class ChoicePriorityPolicy:
- Hard = 'HARD'
- Soft = 'SOFT'
-
- ChoicesAll = (Hard, Soft)
- ChoicesAllowMultiple = False
-
-
- class ChoiceSSLVersion:
- Stl = 'STL'
- SslV3 = 'SSLV3'
- TlsV1 = 'TLSv1'
-
- ChoicesAll = (Stl, SslV3, TlsV1)
- ChoicesAllowMultiple = False
-
-
- KeyConsole = 'console'
- KeyFcp = 'fcp'
- KeyFproxy = 'fproxy'
- KeyLogger = 'logger'
- KeyNode = 'node'
- KeyNodeLoad = 'node.load'
- KeyNodeOpennet = 'node.opennet'
- KeyNodeScheduler = 'node.scheduler'
- KeyNodeUpdaterer = 'node.updater'
- KeyPluginmanager = 'pluginmanager'
- KeyPluginmanager2 = 'pluginmanager2'
- KeySSL = 'ssl'
- KeyToadletSymlinker = 'toadletsymlinker'
-
- Keys = {
-
- 'console.allowedHosts': (ValueTypeIPList, None), # host names, single IPs CIDR-maskip IPs likee 192.168.0.0/24
- 'console.bindTo': (ValueTypeIPList, None),
- 'console.directEnabled': (ValueTypeBool, None),
- 'console.enabled': (ValueTypeBool, None),
- 'console.port': (ValueTypePort, None),
- 'console.ssl': (ValueTypeBool, None),
-
-
- 'fcp.allowedHosts': (ValueTypeIPList, None),
- 'fcp.allowedHostsFullAccess': (ValueTypeIPList, None),
- 'fcp.assumeDownloadDDAIsAllowed': (ValueTypeBool, None),
- 'fcp.assumeUploadDDAIsAllowed': (ValueTypeBool, None),
- 'fcp.bindTo': (ValueTypeIP, None),
- 'fcp.enabled': (ValueTypeBool, None),
- 'fcp.persistentDownloadsEnabled': (ValueTypeBool, None),
- 'fcp.persistentDownloadsFile': (ValueTypeFilename, None),
- 'fcp.persistentDownloadsInterval': (ValueTypeInt, (0, None)),
- 'fcp.port': (ValueTypePort, None),
- 'fcp.ssl': (ValueTypeBool, None),
-
-
- 'fproxy.CSSOverride': (ValueTypeBool, None),
- 'fproxy.advancedModeEnabled': (ValueTypeBool, None),
- 'fproxy.allowedHosts': (ValueTypeIPList, None),
- 'fproxy.allowedHostsFullAccess': (ValueTypeIPList, None),
- 'fproxy.bindTo': (ValueTypeIPList, None),
- 'fproxy.css': (ValueTypeChoice, ChoiceFProxyCss),
- 'fproxy.doRobots': (ValueTypeBool, None),
- 'fproxy.enabled': (ValueTypeBool, None),
- 'fproxy.javascriptEnabled': (ValueTypeBool, None),
- 'fproxy.port': (ValueTypePort, None),
- 'fproxy.showPanicButton': (ValueTypeBool, None),
- 'fproxy.ssl': (ValueTypeBool, None),
-
-
- 'logger.dirname': (ValueTypeDirname, None),
- 'logger.enabled': (ValueTypeBool, None),
- 'logger.interval': (ValueTypeUnknown, None), # ??? 1HOUR ??
- 'logger.maxCachedBytes': (ValueTypeBytes, None),
- 'logger.maxCachedLines': (ValueTypeInt, (0, None)), # ???
- 'logger.maxZippedLogsSize': (ValueTypeBytes, None), # ???
- 'logger.priority': (ValueTypeChoice, ChoiceLoggerPriority),
- 'logger.priorityDetail': (ValueTypeUnknown, None), # ???? Detailed priority thresholds
-
-
- 'node.alwaysAllowLocalAddresses': (ValueTypeBool, None),
- 'node.assumeNATed': (ValueTypeBool, None),
- 'node.bindTo': (ValueTypeIP, None),
- 'node.clientThrottleFile': (ValueTypeFilename, None),
- 'node.databaseMaxMemory': (ValueTypeBytes, None),
- 'node.disableHangCheckers':( ValueTypeBool, None),
- 'node.disableProbabilisticHTLs': (ValueTypeBool, None),
- 'node.downloadAllowedDirs': (ValueTypeChoiceDirname, ChoiceNodeDownloadAllowedDirs),
- 'node.downloadsDir': (ValueTypeDirname, None),
- 'node.extraPeerDataDir': (ValueTypeDirname, None),
- 'node.includeLocalAddressesInNoderefs': (ValueTypeBool, None),
- 'node.inputBandwidthLimit': (ValueTypeBytes, (-1, None) ),
- 'node.ipAddressOverride': (ValueTypeIP, None),
- 'node.l10n': (ValueTypeUnknown, None), # ???
- 'node.lazyResume': (ValueTypeBool, None),
- 'node.listenPort': (ValueTypePort, None),
- 'node.maxBackgroundUSKFetchers': (ValueTypeInt, (0, None) ),
- 'node.maxHTL': (ValueTypeInt, (0, None) ),
- 'node.name': (ValueTypeString, None),
- 'node.nodeDir': (ValueTypeDirname, None),
- 'node.oneConnectionPerIP': (ValueTypeBool, None),
- 'node.outputBandwidthLimit': (ValueTypeBytes, None),
- 'node.passOpennetPeersThroughDarknet': (ValueTypeBool, None),
- 'node.persistentTempDir': (ValueTypeDirname, None),
- 'node.storeDir': (ValueTypeDirname, None),
- 'node.storeForceBigShrinks': (ValueTypeBool, None),
- 'node.storeSize': (ValueTypeBytes, None),
- 'node.tempDir': (ValueTypeDirname, None),
- 'node.tempIPAddressHint': (ValueTypeIP, None), # ???
- 'node.testingDropPacketsEvery': (ValueTypeInt, (0, None) ),
- 'node.uploadAllowedDirs': (ValueTypeChoiceDirname, ChoiceNodeDownloadAllowedDirs),
-
-
- 'node.testnet.enabled': (ValueTypeBool, None),
-
- 'node.load.aggressiveGC': (ValueTypeUnknown, None), # ???
- 'node.load.freeHeapBytesThreshold': (ValueTypeBytes, None),
- 'node.load.freeHeapPercentThreshold': (ValueTypePercent, None),
- 'node.load.memoryChecker': (ValueTypeBool, None),
- 'node.load.nodeThrottleFile': (ValueTypeFilename, None),
- 'node.load.threadLimit': (ValueTypeInt, (0, None) ),
-
-
- 'node.opennet.acceptSeedConnections': (ValueTypeBool, None),
- 'node.opennet.alwaysAllowLocalAddresses': (ValueTypeBool, None),
- 'node.opennet.assumeNATed': (ValueTypeBool, None),
- 'node.opennet.bindTo': (ValueTypeIP, None),
- 'node.opennet.enabled': (ValueTypeBool, None),
- 'node.opennet.listenPort': (ValueTypePort, None),
- 'node.opennet.maxOpennetPeers': (ValueTypeInt, (0, None) ),
- 'node.opennet.oneConnectionPerIP': (ValueTypeBool, None),
- 'node.opennet.testingDropPacketsEvery': (ValueTypeInt, (0, None)),
-
- 'node.scheduler.CHKinserter_priority_policy': (ValueTypeChoice, ChoicePriorityPolicy),
- 'node.scheduler.CHKrequester_priority_policy': (ValueTypeChoice, ChoicePriorityPolicy),
- 'node.scheduler.SSKinserter_priority_policy': (ValueTypeChoice, ChoicePriorityPolicy),
- 'node.scheduler.SSKrequester_priority_policy': (ValueTypeChoice, ChoicePriorityPolicy),
-
- 'node.updater.URI': (ValueTypeUri, None),
- 'node.updater.autoupdate': (ValueTypeBool, None),
- 'node.updater.enabled': (ValueTypeBool, None),
- 'node.updater.extURI': (ValueTypeUri, None),
- 'node.updater.revocationURI': (ValueTypeUri, None),
-
-
- 'pluginmanager.loadplugin': (ValueTypeStringList, None),
- 'pluginmanager2.loadedPlugins': (ValueTypeStringList, None),
-
-
- 'ssl.sslEnable': (ValueTypeBool, None),
- 'ssl.sslKeyPass': (ValueTypeString, None),
- 'ssl.sslKeyStore': (ValueTypeFilename, None),
- 'ssl.sslKeyStorePass': (ValueTypeString, None),
- 'ssl.sslVersion': (ValueTypeChoice, ChoiceSSLVersion),
-
- 'toadletsymlinker.symlinks': (ValueTypeStringList, None),
- }
-
-
def __init__(self, configDataMsg=None):
self.parent = None
self.name = None
self.children = {}
+ self.values = {} # for consistency
+ self.configMessageParams = ConfigMessageParams()
if configDataMsg is not None:
for key, value in configDataMsg.params.items():
@@ -281,15 +56,14 @@
return parent
-
def __setitem__(self, key, value):
- valueClass, components = key.split('.', 1)
- valueType = self.Keys.get(components, None)
- components, valueName = components.rsplit('.', 1)
- components = components.split('.')
+ paramClass, components = self.configMessageParams.splitParamClass(key)
+ paramType = self.configMessageParams.get(key, None)
+ components = self.configMessageParams.splitAll(components)
+ valueName = components.pop()
- #TODO: how to handle undefinmed keys?
- if valueType is None:
+ #TODO: how to handle non existent keys?
+ if paramType is None:
# log somehow
return False
@@ -307,12 +81,10 @@
if values is None:
values = {}
parent.values[valueName] = values
- values[self.ValueClassType] = valueType
- values[valueClass] = value
+ values[paramClass] = (value, paramType)
return True
-
-
+
def walk(self):
def walker(node):
@@ -322,6 +94,7 @@
yield x
return walker(self)
+
def key(self):
return None
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|