!C99Shell v. 1.0 pre-release build #16!

Software: Apache/2.0.54 (Fedora). PHP/5.0.4 

uname -a: Linux mina-info.me 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 

uid=48(apache) gid=48(apache) groups=48(apache)
context=system_u:system_r:httpd_sys_script_t
 

Safe-mode: OFF (not secure)

/usr/share/system-config-httpd/   drwxr-xr-x
Free 3.9 GB of 27.03 GB (14.42%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


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]

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #16 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0048 ]--