Thanks for your comments. Great feedback.

Dani wrote:

> Scott Dybiec said:
> > This is a tool that I prototyped to determine the feasibility of an
> > Apache module-based GUI, rather than one that is hard coded. Nothing
> > Apache-specific yet, though. There would need to be a corresponding
> > server side configuration tool that could have plug-ins for module,
> > scripts, etc. Thinking about XML for this.
> >
> > Looking for partners in this development.
> >
> > Your thoughts and comments are welcome.
> >
> > $cott
>
> Hi Scott,
>
> It seems rather interesting. I am/have been working in something similar
> with Comanche. I will give you my (constructive :-) feedback

Thanks. And great work with Comanche!

>
>
> I am working in a new (much improved) comanche version that will be presented
> at ApacheCon. I will be releasing some information later this week so you can
> have a feeling of how it is going to look like what Rich will present there
>
> Some of the objectives where:
> a) it should be extensible, so people can write their own modules for
> configuring , say, php or Apache SSL. People who do not use these modules will
> simply unset a check box somewhere and they will not appear
> b) The interface must be programatically designed. I already do something
> (primitive) with the current comanche version, with the .ccf files
> The interface changes acording to these files and to the version of Apache
> running (windows/unix). For the new comanche I take this much further:
> the layout is defined in something somewhat resembling XML (or your JML)
> which is loaded into a tree structure and from there the widgets are created.
> Basically I do the same that you do, but just in <> tags :-)
>
> So what you propose would turn into something like in comanche .ccf:
>
> <ComboBox>
> Name MyComboBox
>
> <ComboItem>
> Name Item1
> Value Papaya
> </ComboItem>
>
> <ComboItem>
> Name Item1
> Value Papaya2
> </ComboItem>
>
> </ComboBox>
>
> With the difference that I will not be describing lists, comboboxes, etc
> but my widgets will be for example ServerName, which will be a widget with
> which you can change the servername in a configuration file

Sounds like you'll have one tag per directive. How will you accomodate new
directives that are part of new modules? Apache's ability to add new modules
dynamically (without recompile) seems really powerful, but accentuates the need
for a very flexible/modular configuration program.

>
>
> People can rearrange the layout or build and new one just changing these new
> new .ccf files and extend the program declaring new widgets like ServerName2,
> etc
>
> Just one doubt:
> As I understand it, JML is used to describe the UI,
> How do you plan to add backend functionality to it?

These ideas are work in progress, but here are my latest thoughts. The server
reads Module Description Files that contains the JML/GTKML description of the
GUI, module directives information (human readable description for help, 
argument
types, valid directive contexts). Part of the one for mod_alias might look like
this:


Module "mod_alias"
{
   Summary
   {
      "This module is contained in the mod_alias.c file, and is compiled in by
      default. It provides for mapping different parts of the host filesystem in
      the the document tree, and for URL redirection.

      Directives

         * Alias
         * AliasMatch
         * Redirect
         * RedirectMatch
         * RedirectTemp
         * RedirectPermanent
         * ScriptAlias
         * ScriptAliasMatch

      "
   }

   Directive "Alias"
   {
      Argument "url-path"
      {
         Occurences 1
         Type String
      }
      Argument "directory-filename"
      {
         Occurences 1
         Type Directory
      }
      Context
      {
         server-config
         virtual-host
      }
      Override NotApplicable
      HelpText
      {
         "The Alias directive allows documents to be stored in the local
filesystem
         other than under the DocumentRoot. URLs with a (%-decoded) path
beginning
         with url-path will be mapped to local files beginning with
         directory-filename.

         Example:

              Alias /image /ftp/pub/image

         A request for http://myserver/image/foo.gif would cause the server to
return
         the file /ftp/pub/image/foo.gif.

         Note that if you include a trailing / on the url-path then the server
will
         require a trailing / in order to expand the alias. That is, if you use
Alias
         /icons/ /usr/local/apache/icons/ then the url /icons will not be
aliased.

         See also ScriptAlias."
      }
   }

   Directive "AliasMatch"
   {
      Argument "regex"
      {
         Occurences 1
         Type String
      }
      Argument "directory-filename"
      {
         Occurences 1
         Type Directory
      }
      Context
      {
         server-config
         virtual-host
      }
      Override NotApplicable
      HelpText
      {
         "This directive is equivalent to Alias, but makes use of standard
regular
         expressions, instead of simple prefix matching. The supplied regular
         expression is matched against the URL, and if it matches, the server
will
         substitute any parenthesized matches into the given string and use it 
as
a
         filename. For example, to activate the /icons directory  one might use:

             AliasMatch ^/icons(.*) /usr/local/apache/icons"
      }
   }
.
.
     [A description (GTKML/JML) of the GUI form for displaying/collecting the
above directive/arguments goes here]
.
.
}


>
>
> Finally, if you are interested in programatically implementing UI I would
> strongly recommend you to have a look at TCL/TK (www.scriptics.com)
>
> Best regards
>
> Daniel

Keep kicking butt,

$cott


Reply via email to