/ClassStructure /DebianInstallLog /Diary /InstallScript /SaneInstallDefaults |
MoinMoin Admin Interface
Likelyhood of finishing everything including by the end of GSOC - rather low, possibly around 50%
TODOs
Installer
- Installation system as a script - IN PROCESS (~50%)
- Handling install vectors - DONE
- Validation of install locations - IN PROCESS
- Cross-platform compatibiltiy testing - IN PROCESS
- Web-server specific config stuff - IN PROCESS
- Installation via html - IN PROCESS (~10%)
- Generate enough html to be a full interface with the script (via HTTP/POST) - IN PROCESS
- Ensure security of installation script - STUCK
- Theming - NOT STARTED
Admin
- Backend - IN PROCESS (~20%)
- Change the inheritance of Moin configs to allow another config source - DONE
- Handle the config options once set to override defaults - IN PROCESS
- Serialization of config for persistance - IN PROCESS / STUCK
- Frontend - JUST GOT UNSTUCK (~0%)
- Generate enough html to make an 'admin interface' - NOT STARTED
- Validation - NOT STARTED
- Authorization Scheme - NOT STARTED / STUCK
- Writing config changes to serialized config file - IN PROCESS (~10%)
- Updates and Migrations - IN PROCESS (~10%)
Implementation Structure
Base Install Scripts
- Independent of moin internal libraries, etc. except config files.
- Goal is to automate the install process
- Should ultimately go into 1.9/MoinMoin/scripts
- Proposed sequence of install process. Information in the parenthesis indicates rough sequence for implementation.
- Download moin_webinstall.py or moin_webinstall.php and run it.(Last)
- Web install scripts download packages required for moin install from moin servers. Untar them into an appropriate place (/tmp?)
- Web install script the calls on the actual install script automatically, after taking input from the user where required.
- Run the Install Script. (First)
- Put the files into the correct folders.
- Install whatever python packages are necessary.
- Setup the web server (Privileges Escalation?)
- Create and configure (minimal) the moin instance
- Moin instance configuration
- Edit the instance configs in autoconfig.cfg
- Moin instance configuration
- Download moin_webinstall.py or moin_webinstall.php and run it.(Last)
Admin Interface
- Admin Config class sublacces Config Functionality, reads a .cfg file (or a pickled file) and changes the variables of the config instance to be created.
- The .cfg file is written by the Admin interface
- wikiconfig.py subclasses from the Admin Config class, and overrides whatever it has there
- The interface is a set of pages that use utils/web.py to generate the html for the interface
- Wiki Actions are used to write changes to the config, directly into the serialized files
- Once changed, the wsgi daemons will have to be restarted in order to put them into effect, basically getting the config objects rebuilt from scratch.
User Interface Design/Thoughts
Open Concerns
Discussion
Add your thoughts, concerns and use-cases here.
Deliverables
straight out of the proposal
By the end of GSoC, I hope to be able to do the following using just the above mentioned graphical interface (no command line or config file editing, other than where specified explicitly). A broad breakup of the capabilities of the scripts written with time of delivery is also listed. Note that these are times of delivery, and not the time alotted to work on them.
Pre-GSoC
- Devise the structure and relationships of the code components to be written (UML)
- Devise the format of the export/backup tarball
- Identify the parameters that will be supported and explicitly list them out
- Devise a plan for testing, identify test-cases for proposed scripts.
GSoC Start
- Start with a setup that has apache+mod_wsgi or apache+cgi+flup, and user having access to it.
- (week 2) Create a Moin instance (actually a farm with one wiki in it) within it. Manual edit of apache's httpd.conf will be needed.
- (week 2) Setup superusers and ACLs. ACLs can be manually edited, and a few very common configurations can be simply selected, such as allow identified to view/edit, allow group(s) to view/edit all.
(week 4) Setup auth systems using (pre-existing) LDAP, HTTP-auth, or MoinMoin builtin auth. AD will be attempted, but I make no promises.
- (week 5) Manage users - add (single/multiple), deactivate/activate, put into groups, list all groups, edit groups.
- (week 6) Do this securely over the internet via http + encrypted data and https.
- (week 6) Create a usable test suite for the scripts.
Mid-term Evaluation
- (week 6) Create and delete wikis from the farm.
- (week 8) Install themes, plugins.
- (week 8) Create a script for 'step 0' (allow 1. to be reached via a python cgi as well as via mod_php + python from a pristine OS install)
- (week 10) Allow a wiki to be migrated from version x to x+1 (1.8.x to 1.9.x?) just from the interface + minor edits to the apache conf.
- (week 10) Export and (Re)Import a wiki to/from a backup tarball. This may be from/to an install on the same machine or another.
- (in parallel) Do the same with lighttpd and (hopefully) IIS.
End of GSoC