Viewing file: ApacheControl.py (31.56 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/python
## ApacheControl - A Python Apache configuration utility for: ## Copyright (C) 2000 Red Hat, Inc. ## Copyright (C) 2000 Jonathan Blandford <jrb@redhat.com>, ## Philipp Knirsch <pknirsch@redhat.com>
## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version.
## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details.
## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
import string import re
from ApacheGizmo import *
## ## I18N ## import gettext PROGNAME='system-config-httpd' gettext.bindtextdomain(PROGNAME, "/usr/share/locale") gettext.textdomain(PROGNAME) try: gettext.install(PROGNAME, "/usr/share/locale", 1) except IOError: import __builtin__ __builtin__.__dict__['_'] = unicode
## helper function def get_history (omenu): menu = omenu.get_menu ().get_active () index = 0 for menu_item in omenu.get_menu ().get_children (): if menu_item == menu: break index = index + 1 return index
## ## ApacheControl ## class ApacheControl:
def __init__ (self, xml): self.xml = xml self.curr_vh = None
def write(self, force=False): return stack.apache.write(force)
### ### MAIN PAGE ###
def hydrate_main (self): ## Main self.xml.get_widget ('server_name_entry').set_text (stack.apache.ServerName) self.xml.get_widget ('server_admin_entry').set_text (stack.apache.ServerAdmin)
# Do Listen list. clist = self.xml.get_widget ("address_clist") for i in xrange (len (stack.apache.listener)): item = stack.apache.listener[i] if string.find(item, ':') >= 0: line = string.split (item, ':') else: line = ['*', item]
if line[0] == "*": clist.append ([ _("All available addresses on port ") + line[1] ]) else: clist.append ([ line[0] + line[1] ])
clist.set_row_data (i, line)
## Virtual Hosts clist = self.xml.get_widget ('vhost_clist') for key in stack.apache.vhosts.keys (): vhost = stack.apache.vhosts[key] clist.append ([vhost.VHName, vhost.get_readable_address () ])
## Server self.xml.get_widget ('lock_file_entry').set_text (stack.apache.LockFile) self.xml.get_widget ('pid_file_entry').set_text (stack.apache.PidFile) self.xml.get_widget ('core_dump_dir_entry').set_text (stack.apache.CoreDumpDirectory) self.xml.get_widget ('user_entry').set_text (stack.apache.User) self.xml.get_widget ('group_entry').set_text (stack.apache.Group)
## Performance Tuning self.xml.get_widget ("max_clients_spin").set_value (stack.apache.MaxClients) self.xml.get_widget ('time_out_spin').set_value (stack.apache.TimeOut) self.xml.get_widget ('keep_alive_cbutton').set_active (stack.apache.KeepAlive == Apache.TRUE or stack.apache.KeepAlive == Apache.ON)
if stack.apache.MaxRequestsPerChild == 0: self.xml.get_widget ('unlimited_cnxns_rbutton').set_active (True) else: self.xml.get_widget ('limited_cnxns_rbutton').set_active (True) self.xml.get_widget ('max_requests_per_child_spin').set_value (stack.apache.MaxRequestsPerChild) self.xml.get_widget ("keep_alive_spin").set_value (stack.apache.KeepAliveTimeout)
def dehydrate_main (self): stack.push_state () try: offset = 0 widget = self.xml.get_widget ('server_name_entry') stack.apache.ServerName = widget.get_text () widget = self.xml.get_widget ('server_admin_entry') stack.apache.ServerAdmin = widget.get_text () widget = self.xml.get_widget ("address_clist") stack.apache.listener.clear() if widget.rows > 0: for i in xrange (widget.rows): (address_text, port) = widget.get_row_data (i) stack.apache.listener.add (address_text + ":" + port)
offset = 1 name_based_vh = [] if stack.apache.vhosts != None: for i in stack.apache.vhosts.keys (): vhost = stack.apache.vhosts[i] if vhost.NameBased == VirtualHost.HOST_TYPE_NAME and not vhost.Address in name_based_vh: name_based_vh.append (vhost.Address) stack.apache.NameVirtualHosts = name_based_vh else: stack.apache.NameVirtualHosts = None
clist = self.xml.get_widget ('vhost_clist') for i in xrange (clist.rows - 1): vhname = clist.get_text (i, 0) stack.apache.vhosts.move (vhname, i)
offset = 2 widget = self.xml.get_widget ('lock_file_entry') stack.apache.LockFile = widget.get_text () widget = self.xml.get_widget ('pid_file_entry') stack.apache.PidFile = widget.get_text () widget = self.xml.get_widget ('core_dump_dir_entry') stack.apache.CoreDumpDirectory = widget.get_text () widget = self.xml.get_widget ('user_entry') stack.apache.User = widget.get_text () widget = self.xml.get_widget ('group_entry') stack.apache.Group = widget.get_text ()
offset = 3 widget = self.xml.get_widget ("max_clients_spin") stack.apache.MaxClients = int (widget.get_text ()) widget = self.xml.get_widget ('time_out_spin') stack.apache.TimeOut = int (widget.get_text ()) widget = None if self.xml.get_widget ('keep_alive_cbutton').get_active(): stack.apache.KeepAlive = Apache.ON else: stack.apache.KeepAlive = Apache.OFF
if self.xml.get_widget ('unlimited_cnxns_rbutton').get_active (): stack.apache.MaxRequestsPerChild = 0 else: widget = self.xml.get_widget ('max_requests_per_child_spin') stack.apache.MaxRequestsPerChild = int (widget.get_text ()) widget = self.xml.get_widget ("keep_alive_spin") stack.apache.KeepAliveTimeout = int (widget.get_text ()) except 'TestError', message: stack.pop_restore () raise 'TestError', (message, offset, widget) except '*', message: stack.pop_restore () raise 'TestError', ("Generic Error: " + message, None, None) stack.pop ()
### ### VIRTUAL HOSTS ###
def hydrate_vhost (self, name=None): stack.push_state ()
if name == None: vhost = stack.apache.vhosts.add () else: vhost = stack.apache.vhosts[name]
self.curr_vh = vhost.VHName
self._hydrate_vhost_page_1 (vhost) self._hydrate_vhost_page_2 (vhost) self._hydrate_vhost_page_3 (vhost) self._hydrate_vhost_page_4 (vhost) self._hydrate_vhost_page_5 (vhost) self._hydrate_vhost_page_6 (vhost)
def hydrate_default_vhost (self): stack.push_state () vhost = stack.apache.default_vhost
self._hydrate_vhost_page_2 (vhost) self._hydrate_vhost_page_4 (vhost) self._hydrate_vhost_page_5 (vhost) self._hydrate_vhost_page_6 (vhost)
def dehydrate_vhost (self): vhost = stack.apache.vhosts[self.curr_vh]
self._dehydrate_vhost_page_1 (vhost) self._dehydrate_vhost_page_2 (vhost) self._dehydrate_vhost_page_3 (vhost) self._dehydrate_vhost_page_4 (vhost) self._dehydrate_vhost_page_5 (vhost) self._dehydrate_vhost_page_6 (vhost)
stack.pop () return (vhost.VHName, vhost.get_readable_address ())
def dehydrate_default_vhost (self): vhost = stack.apache.default_vhost
self._dehydrate_vhost_page_2 (vhost) self._dehydrate_vhost_page_4 (vhost) self._dehydrate_vhost_page_5 (vhost) self._dehydrate_vhost_page_6 (vhost) self.curr_vh = None stack.pop ()
def discard_vhost (self): self.curr_vh = None stack.pop_restore ()
def remove_vhost (self, name): del stack.apache.vhosts[name]
def _hydrate_vhost_page_1 (self, vhost): self.xml.get_widget ('vhost_name_entry').set_text (vhost.VHName) self.xml.get_widget ('vhost_document_root_entry').set_text (vhost.DocumentRoot) self.xml.get_widget ('vhost_server_admin_entry').set_text (vhost.ServerAdmin)
if vhost.NameBased == VirtualHost.HOST_TYPE_DEFAULT: self.xml.get_widget ('vhost_type_omenu').set_history (2) self.xml.get_widget ('host_info_notebook').set_current_page (2) self.xml.get_widget ('name_vhost_ip_entry').set_text ("") self.xml.get_widget ('ip_vhost_ip_entry').set_text ("") self.xml.get_widget ('name_vhost_host_name_entry').set_text ("") self.xml.get_widget ('ip_vhost_host_name_entry').set_text ("") self.xml.get_widget ('vhost_alias_clist').clear () server = vhost.ServerName if server == VirtualHost.DEFAULT: self.xml.get_widget ('default_vhost_all_hosts_rbutton').set_active (True) self.xml.get_widget ('default_vhost_all_port_entry').set_text ("") else: match = re.match (r'_default_:([0-9]+)', server) try: port = match.groups()[0] except: port = "" self.xml.get_widget ('default_vhost_all_port_rbutton').set_active (True) self.xml.get_widget ('default_vhost_all_port_entry').set_text (port) else: self.xml.get_widget ('name_vhost_ip_entry').set_text (vhost.Address) self.xml.get_widget ('ip_vhost_ip_entry').set_text (vhost.Address) self.xml.get_widget ('name_vhost_host_name_entry').set_text (vhost.ServerName) self.xml.get_widget ('ip_vhost_host_name_entry').set_text (vhost.ServerName) aliases = vhost.Aliases clist = self.xml.get_widget ('vhost_alias_clist') clist.clear() for alias in aliases: clist.append ( [ alias ] )
if vhost.NameBased == VirtualHost.HOST_TYPE_IP: self.xml.get_widget ('vhost_type_omenu').set_history (0) self.xml.get_widget ('host_info_notebook').set_current_page (0) elif vhost.NameBased == VirtualHost.HOST_TYPE_NAME: self.xml.get_widget ('vhost_type_omenu').set_history (1) self.xml.get_widget ('host_info_notebook').set_current_page (1)
def _dehydrate_vhost_page_1 (self, vhost): try: widget = self.xml.get_widget ('vhost_name_entry') vhost.VHName = widget.get_text () widget = self.xml.get_widget ('vhost_document_root_entry') vhost.DocumentRoot = widget.get_text () widget = self.xml.get_widget ('vhost_server_admin_entry') vhost.ServerAdmin = widget.get_text ()
widget = self.xml.get_widget('vhost_type_omenu').get_menu () behaviour = widget.get_active () index = 0 for menu_item in widget.get_children (): if menu_item == behaviour: break index = index + 1
if index == 0: vhost.NameBased = VirtualHost.HOST_TYPE_IP widget = self.xml.get_widget ('ip_vhost_ip_entry') vhost.Address = widget.get_text () widget = self.xml.get_widget ('ip_vhost_host_name_entry') vhost.ServerName = widget.get_text () elif index == 1: vhost.NameBased = VirtualHost.HOST_TYPE_NAME widget = self.xml.get_widget ('name_vhost_ip_entry') vhost.Address = widget.get_text () widget = self.xml.get_widget ('name_vhost_host_name_entry') vhost.ServerName = widget.get_text () else: vhost.NameBased = VirtualHost.HOST_TYPE_DEFAULT widget = None if self.xml.get_widget ('default_vhost_all_port_rbutton').get_active (): widget = self.xml.get_widget ('default_vhost_all_port_entry') port = widget.get_text () vhost.ServerName = VirtualHost.DEFAULT + ':' + port vhost.Address = "*:" + port else: vhost.ServerName = VirtualHost.DEFAULT vhost.Address = "*"
widget = self.xml.get_widget ('vhost_alias_clist') aliases = [] for i in xrange (widget.rows): aliases.append (widget.get_text (i, 0)) vhost.Aliases = aliases except 'TestError', message: raise 'TestError', (message, 0, widget)
def _hydrate_vhost_page_2 (self, vhost): ## Directory Index clist = self.xml.get_widget ('directory_index_clist') clist.clear ()
if vhost.DirectoryIndex != None: for i in string.split (vhost.DirectoryIndex): clist.append ( [ i ] ) clist.select_row (0, 0)
## Error documents clist = self.xml.get_widget ('error_doc_list_swindow').get_data ('clist') clist.set_to_default () keys = vhost.ErrorDocuments.keys () for i in xrange (clist.rows): key = clist.get_row_data (i) if key in keys: value = vhost.ErrorDocuments[key] if value[0:5] == 'file:': clist.set_text (i, 1, _("File")) clist.set_text (i, 2, value[5:]) else: clist.set_text (i, 1, 'URL') clist.set_text (i, 2, value[:])
## Error page footer (ServerSignature option) if vhost.ServerSignature == VirtualHost.SERVER_SIGNATURE_OFF: self.xml.get_widget ('ServerSignatureOption').set_history (0) elif vhost.ServerSignature == VirtualHost.SERVER_SIGNATURE_ON: self.xml.get_widget ('ServerSignatureOption').set_history (1) else: self.xml.get_widget ('ServerSignatureOption').set_history (2)
def _dehydrate_vhost_page_2 (self, vhost): try: widget = self.xml.get_widget ('directory_index_clist') if widget.rows > 0: dir_index = widget.get_text (0, 0) for i in xrange (1, widget.rows): dir_index = dir_index + " " + widget.get_text (i, 0) vhost.DirectoryIndex = dir_index
## Error documents clist = self.xml.get_widget ('error_doc_list_swindow').get_data ('clist') widget = clist for i in xrange (clist.rows): type = clist.get_text (i, 1) if type == _("default"): try: del vhost.ErrorDocuments[clist.get_row_data (i)] except: pass continue elif type == 'URL': value = clist.get_text (i, 2) else: value = 'file:' + clist.get_text (i, 2)
vhost.ErrorDocuments[clist.get_row_data (i)] = value
widget = self.xml.get_widget('ServerSignatureOption').get_menu () behaviour = widget.get_active () index = 0 for menu_item in widget.get_children (): if menu_item == behaviour: break index = index + 1
if index == 0: vhost.ServerSignature = VirtualHost.SERVER_SIGNATURE_OFF elif index == 1: vhost.ServerSignature = VirtualHost.SERVER_SIGNATURE_ON else: vhost.ServerSignature = VirtualHost.SERVER_SIGNATURE_EMAIL
except 'TestError', message: raise 'TestError', (message, 0, widget)
def _hydrate_vhost_page_3 (self, vhost): self.xml.get_widget ('ssl_engine_cbox').set_active (vhost.SSLEngine == Apache.ON) self.xml.get_widget ('ssl_certificate_file_entry').set_text (vhost.SSLCertificateFile) self.xml.get_widget ('ssl_certificate_key_entry').set_text (vhost.SSLCertificateKeyFile) self.xml.get_widget ('ssl_certificate_chain_entry').set_text (vhost.SSLCertificateChainFile) self.xml.get_widget ('ssl_certificate_authority_entry').set_text (vhost.SSLCACertificateFile)
clist = self.xml.get_widget ("ssl_vbox").get_data ("ssl_clist") clist.initialize_from_list (string.split (vhost.SSLOptions))
def _dehydrate_vhost_page_3 (self, vhost): try: widget = self.xml.get_widget ('ssl_engine_cbox') if widget.get_active (): vhost.SSLEngine = Apache.ON else: vhost.SSLEngine = Apache.OFF
widget = self.xml.get_widget ('ssl_certificate_file_entry') vhost.SSLCertificateFile = widget.get_text ()
widget = self.xml.get_widget ('ssl_certificate_key_entry') vhost.SSLCertificateKeyFile = widget.get_text ()
widget = self.xml.get_widget ('ssl_certificate_chain_entry') vhost.SSLCertificateChainFile = widget.get_text ()
widget = self.xml.get_widget ('ssl_certificate_authority_entry') vhost.SSLCACertificateFile = widget.get_text ()
widget = self.xml.get_widget ("ssl_vbox").get_data ("ssl_clist") list = widget.dump_to_list () options = "" first = True for i in list: if first: options = options + i first = False else: options = options + " " + i vhost.SSLOptions = options except 'TestError', message: raise 'TestError', (message, 3, widget)
def _hydrate_vhost_page_4 (self, vhost): # Transfer log self.xml.get_widget ('transfer_log_to_program_entry').set_text ("") self.xml.get_widget ('transfer_use_system_log_entry').set_text ("") self.xml.get_widget ('transfer_log_to_file_real_entry').set_text ("")
if len (vhost.TransferLog) > 0: if vhost.TransferLog [0] == '|': self.xml.get_widget ('transfer_log_to_prog_rbutton').set_active (True) self.xml.get_widget ('transfer_log_to_program_entry').set_text (vhost.TransferLog[1:]) elif vhost.TransferLog[0:7] == 'syslog:': self.xml.get_widget ('transfer_sys_log_rbutton').set_active(True) self.xml.get_widget ('transfer_use_system_log_entry').set_text (vhost.TransferLog[7:]) else: self.xml.get_widget ('transfer_log_to_file_rbutton').set_active(True) self.xml.get_widget ('transfer_log_to_file_real_entry').set_text (vhost.TransferLog)
self.xml.get_widget ('custom_log_cbutton').set_active (len (vhost.LogFormat) > 0) self.xml.get_widget ('custom_log_string_entry').set_text (vhost.LogFormat)
# Error log self.xml.get_widget ('error_log_to_program_entry').set_text ("") self.xml.get_widget ('error_use_system_log_entry').set_text ("") self.xml.get_widget ('error_log_to_file_real_entry').set_text ("") if len (vhost.ErrorLog) > 0: if vhost.ErrorLog[0] == '|': self.xml.get_widget ('error_log_to_prog_rbutton').set_active (True) self.xml.get_widget ('error_log_to_program_entry').set_text (vhost.ErrorLog[1:]) elif vhost.ErrorLog[0:7] == 'syslog:': self.xml.get_widget ('error_sys_log_rbutton').set_active(True) self.xml.get_widget ('error_use_system_log_entry').set_text (vhost.ErrorLog[7:]) else: self.xml.get_widget ('error_log_to_file_rbutton').set_active(True) self.xml.get_widget ('error_log_to_file_real_entry').set_text (vhost.ErrorLog)
for i in xrange (len (VirtualHost.LOG_LEVELS)): if VirtualHost.LOG_LEVELS[i] == vhost.LogLevel: break self.xml.get_widget ('error_log_level_omenu').set_history(i)
if vhost.HostNameLookups == VirtualHost.SERVER_HOST_NAME_LOOKUP_OFF: self.xml.get_widget ('reverse_lookup_omenu').set_history(0) elif vhost.HostNameLookups == VirtualHost.SERVER_HOST_NAME_LOOKUP_ON: self.xml.get_widget ('reverse_lookup_omenu').set_history(1) else: self.xml.get_widget ('reverse_lookup_omenu').set_history(2)
def _dehydrate_vhost_page_4 (self, vhost): try: # Transfer log if self.xml.get_widget ('transfer_log_to_prog_rbutton').get_active (): widget = self.xml.get_widget ('transfer_log_to_program_entry') vhost.TransferLog = '|' + widget.get_text () elif self.xml.get_widget ('transfer_sys_log_rbutton').get_active (): widget = self.xml.get_widget ('transfer_use_system_log_entry') vhost.TransferLog = 'syslog:' + widget.get_text () else: widget = self.xml.get_widget ('transfer_log_to_file_real_entry') vhost.TransferLog = widget.get_text ()
if self.xml.get_widget ('custom_log_cbutton').get_active (): widget = self.xml.get_widget ('custom_log_string_entry') vhost.LogFormat = widget.get_text () else: vhost.LogFormat = ""
# Error log if self.xml.get_widget ('error_log_to_prog_rbutton').get_active (): widget = self.xml.get_widget ('error_log_to_program_entry') vhost.ErrorLog = '|' + widget.get_text () elif self.xml.get_widget ('error_sys_log_rbutton').get_active (): widget = self.xml.get_widget ('error_use_system_log_entry') vhost.ErrorLog = 'syslog:' + widget.get_text () else: widget = self.xml.get_widget ('error_log_to_file_real_entry') vhost.ErrorLog = widget.get_text ()
widget = self.xml.get_widget ('error_log_level_omenu') i = get_history (widget) vhost.LogLevel = VirtualHost.LOG_LEVELS[i]
widget = self.xml.get_widget ('reverse_lookup_omenu') i = get_history (widget) if i == 0: vhost.HostNameLookups = VirtualHost.SERVER_HOST_NAME_LOOKUP_OFF elif i == 1: vhost.HostNameLookups = VirtualHost.SERVER_HOST_NAME_LOOKUP_ON else: vhost.HostNameLookups = VirtualHost.SERVER_HOST_NAME_LOOKUP_DOUBLE
except 'TestError', message: raise 'TestError', (message, 4, widget)
def _hydrate_vhost_page_5 (self, vhost): sclist = self.xml.get_widget ("set_env_clist") sclist.clear () for var in vhost.SetEnv.keys (): sclist.append ( (var, vhost.SetEnv[var]) )
pclist = self.xml.get_widget ("pass_env_clist") pclist.clear () for var in vhost.PassEnv: pclist.append ( [var] )
uclist = self.xml.get_widget ("unset_env_clist") uclist.clear () for var in vhost.UnsetEnv: uclist.append ( [var] )
def _dehydrate_vhost_page_5 (self, vhost): clist = self.xml.get_widget ("set_env_clist") env = {} for i in xrange (clist.rows): env[clist.get_text (i, 0)] = clist.get_text (i, 1) vhost.SetEnv = env
clist = self.xml.get_widget ("pass_env_clist") env = [] for i in xrange (clist.rows): env.append (clist.get_text (i, 0)) vhost.PassEnv = env
clist = self.xml.get_widget ("unset_env_clist") env = [] for i in xrange (clist.rows): env.append (clist.get_text (i, 0)) vhost.UnsetEnv = env
def _hydrate_vhost_page_6 (self, vhost): clist = self.xml.get_widget ("dir_options_clist") clist.clear () if vhost.directories.keys (): for dirname in vhost.directories.keys (): row = clist.append ( [dirname] ) clist.select_row (0, 0)
options_list = vhost.Options
options = _("[ No Options ]") count = 0 for i in options_list: if count == 0: options = i elif count == 4: options = options + "\n" + i else: options = options + ", " + i count = count + 1
self.xml.get_widget ("default_dir_options_label").set_text (options)
def _dehydrate_vhost_page_6 (self, vhost): # nothing here needs dehydrating -- the Options and the dirs have already taken # care of themselves. pass
### ### Directory stuff ###
def hydrate_default_dir_options (self, dialog): if self.curr_vh: vhost = stack.apache.vhosts[self.curr_vh] else: vhost = stack.apache.default_vhost
dialog.get_data ("clist").set_from_list (vhost.Options)
def dehydrate_default_dir_options (self, dialog): if self.curr_vh: vhost = stack.apache.vhosts[self.curr_vh] else: vhost = stack.apache.default_vhost clist = dialog.get_data ("clist")
options_list = clist.set_to_list () vhost.Options = options_list
options = _("[ No Options ]") count = 0 for i in options_list: if count == 0: options = i elif count == 4: options = options + "\n" + i else: options = options + ", " + i count = count + 1 self.xml.get_widget ("default_dir_options_label").set_text (options)
def hydrate_dir_options (self, dir_name = None): stack.push_state () if self.curr_vh: vhost = stack.apache.vhosts[self.curr_vh] else: vhost = stack.apache.default_vhost
dir_entry = self.xml.get_widget ("directory_options_dialog_dir_entry") clist = self.xml.get_widget ("directory_options_dialog").get_data ("clist")
if dir_name == None: self.xml.get_widget ("allow_override_cbox").set_active (False) self.xml.get_widget ("dir_opt_dialog_let_all_rbutton").set_active (True) self.xml.get_widget ("dir_opt_dialog_deny_all_rbutton").set_active (True) self.xml.get_widget ("deny_list_entry").set_text ("") self.xml.get_widget ("dir_opt_dialog_allow_all_rbutton").set_active (True) self.xml.get_widget ("allow_list_entry").set_text ("") clist.set_to_default ()
dir_default = self.xml.get_widget ("vhost_document_root_entry").get_text () if len (dir_default) > 1 and dir_default[-1] != '/': dir_default = dir_default + "/" dir_entry.set_text (dir_default) dir_entry.grab_focus () dir_entry.set_position (-1) else: dir = vhost.directories[dir_name] dir_entry.set_text (dir.Dir) self.xml.get_widget ("allow_override_cbox").set_active (dir.AllowOverride == Apache.ALL) clist.set_from_list (dir.Options) if dir.Mode == Directory.ALL_HOSTS: self.xml.get_widget ("dir_opt_dialog_let_all_rbutton").set_active (True) self.xml.get_widget ("dir_opt_dialog_deny_all_rbutton").set_active (True) self.xml.get_widget ("dir_opt_dialog_allow_all_rbutton").set_active (True) self.xml.get_widget ("deny_list_entry").set_text ("") self.xml.get_widget ("allow_list_entry").set_text ("") else: if dir.Mode == Directory.ALLOW_FIRST: self.xml.get_widget ("dir_opt_dialog_allow_first_rbutton").set_active (True) else: self.xml.get_widget ("dir_opt_dialog_deny_first_rbutton").set_active (True)
if dir.Deny == Directory.FROM_ALL or dir.Deny == "from all": dir.Deny = Directory.FROM_ALL self.xml.get_widget ("dir_opt_dialog_deny_all_rbutton").set_active (True) self.xml.get_widget ("deny_list_entry").set_text ("") else: self.xml.get_widget ("dir_opt_dialog_deny_from_rbutton").set_active (True) self.xml.get_widget ("deny_list_entry").set_text (dir.Deny)
if dir.Allow == Directory.FROM_ALL or dir.Allow == "from all": dir.Allow = Directory.FROM_ALL self.xml.get_widget ("dir_opt_dialog_allow_all_rbutton").set_active (True) self.xml.get_widget ("allow_list_entry").set_text ("") else: self.xml.get_widget ("dir_opt_dialog_allow_from_rbutton").set_active (True) self.xml.get_widget ("allow_list_entry").set_text (dir.Allow) dir_entry.grab_focus ()
def dehydrate_dir_options (self, old_name=None): widget = None
try: if self.curr_vh: vhost = stack.apache.vhosts[self.curr_vh] else: vhost = stack.apache.default_vhost
widget = self.xml.get_widget ("directory_options_dialog_dir_entry") new_name = widget.get_text () if old_name: dir = vhost.directories[old_name] dir.Dir = new_name else: try: dir = vhost.directories.add (new_name) except KeyError: raise 'TestError', (_("A directory named %s already exists.") % new_name)
if self.xml.get_widget ("dir_opt_dialog_let_all_rbutton").get_active (): dir.Mode = Directory.ALL_HOSTS else: if self.xml.get_widget ("dir_opt_dialog_deny_first_rbutton").get_active (): dir.Mode = Directory.DENY_FIRST else: dir.Mode = Directory.ALLOW_FIRST if self.xml.get_widget ("dir_opt_dialog_deny_all_rbutton").get_active (): dir.Deny = Directory.FROM_ALL else: widget = self.xml.get_widget ("deny_list_entry") dir.Deny = widget.get_text () if self.xml.get_widget ("dir_opt_dialog_allow_all_rbutton").get_active (): dir.Allow = Directory.FROM_ALL else: widget = self.xml.get_widget ("allow_list_entry") dir.Allow = widget.get_text ()
clist = self.xml.get_widget ("directory_options_dialog").get_data ("clist") dir.Options = clist.set_to_list ()
if self.xml.get_widget ("allow_override_cbox").get_active (): dir.AllowOverride = Apache.ALL else: dir.AllowOverride = Apache.NONE stack.pop () return new_name except 'TestError', message: raise 'TestError', (message, 0, widget)
def discard_dir_options (self): stack.pop_restore ()
def remove_dir_option (self, name): if self.curr_vh: vhost = stack.apache.vhosts[self.curr_vh] else: vhost = stack.apache.default_vhost del vhost.directories[name]
|