home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2000 December
/
PCWorld_2000-12_cd.bin
/
Komunikace
/
Comanche
/
plugins
/
apache
/
apacheModuleManager.tcl
< prev
next >
Wrap
Text File
|
2000-11-02
|
5KB
|
170 lines
#
# apacheModuleManager.tcl --
#
# The apacheModuleManager manages information about
# different aspects of apache modules, as described in apacheModuleFormat.txt
# in the docs directory.
# The apacheModuleManager has one propertyPagesManager per module, and keeps
# track internally of which property pages belong to which modules.
# Things that apacheModuleManager allows:
#
# - Enable/disable modules on the fly
# - Request all property pages associated with a certain node
# (i.e virtual host) and a certain skill level (beginner, advanced)
class apacheModuleManager {
variable nodeArray
variable moduleArray
variable icon
variable description
variable directiveModuleRelationship
constructor {} {
# This array is going to be indexed by nodename, module
# nodeArray($module,$nodeName)
#
# Each one of the elements is a triplet:
# pageName skillLevel hookPoint
array set nodeArray ""
array set icon ""
array set description ""
# Module list. The value of the array should be 1 or 0
# (enabled/disabled)
array set moduleArray ""
array set directiveModuleRelationship ""
}
method addModuleDescription {name desc}
method addModuleIcon {name moduleIcon}
method getModuleDescription {name}
method getModuleIcon {name}
method getPropertyPagesByNodetypeList { nodeType }
method addPropertyPageNodeRelationship { module pageName nodeType args}
method getEnabledModuleList {}
method getDisabledModuleList {}
method disableModule {module}
method enableModule {module}
method addModuleDirectivesRelationship
method isDirectiveEnabled
}
body apacheModuleManager::addModuleDescription {module desc} {
set description($module) $desc
}
body apacheModuleManager::addModuleIcon {module moduleIcon} {
set icon($module) $moduleIcon
}
body apacheModuleManager::getModuleDescription {module} {
return $description($module)
}
body apacheModuleManager::getModuleIcon {module} {
return $icon($module)
}
# getEnabledModules --
# Get all modules currently enabled
#
body apacheModuleManager::getEnabledModuleList {} {
set result ""
foreach one [array names moduleArray] {
if $moduleArray($one) {
lappend result $one
}
}
return $result
}
# getDisabledModules --
# Get all modules currently disabled
#
body apacheModuleManager::getDisabledModuleList {} {
set result ""
foreach one [array names moduleArray] {
if !$moduleArray($one) {
lappend result $one
}
}
return $result
}
# enableModule --
# Enables directives for a module
#
body apacheModuleManager::enableModule {module} {
set moduleArray($module) 1
}
# disableModule --
# Disables directives for a module
#
body apacheModuleManager::disableModule {module} {
set moduleArray($module) 0
}
# getPropertyPagesByNodetypeList --
# Answers backs a list with the property pages objects that are
# associated with a certain node type (mainserver, virtualhost, etc)
#
# Arguments
# nodeType Type of the node
#
# Returns
# list of xuiObjects
body apacheModuleManager::getPropertyPagesByNodetypeList { nodeType } {
set result ""
foreach match [array names nodeArray *,[string tolower $nodeType]] {
# Check if module enabled
if $moduleArray([lindex [split $match ,] 0]) {
foreach page $nodeArray($match) {
lappend result $page
}
}
}
return $result
}
# apacheModuleManager::addPropertyPageNodeRelationship --
# Associates, for a certain module and nodetype a property page, the skill
# for that property page (newbie/advanced) and where to hook under that
# property page
body apacheModuleManager::addPropertyPageNodeRelationship { module pageName \
nodeType args } {
array set options {-hookUnder root -skillLevel all}
array set options $args
if ![info exists moduleArray($module)] {
set moduleArray($module) 1
}
lappend nodeArray($module,[string tolower $nodeType]) \
[list $pageName $options(-skillLevel) $options(-hookUnder)]
}
# All directives that belong to that module
body apacheModuleManager::addModuleDirectivesRelationship {module directiveList} {
foreach dir $directiveList {
set directiveModuleRelationship([string tolower $dir]) $module
}
}
body apacheModuleManager::isDirectiveEnabled {directive} {
# If not exists, is unknown, thus enabled
if ![ info exists directiveModuleRelationship($directive)] { return 1 }
return $moduleArray($directiveModuleRelationship($directive))
}