Fork of WebGUI 7.10, maintained by Oqapi
https://git.oqapi.nl/oqapi/webgui
requestHelper() invokes an asset helper via AJAX. processPlugin() handles the JSON responses, which in this case is to open a dialog box and show a given URL in it (openDialog key in the JSON hash). that pop-up is open and the page loaded, and that displays a form. that form submits to an asset helper (uh oh) which also returns JSON (actually, it was failing to do even that and was stringifying a hash). even if it returned JSON, it would just get shown to the user in the pop-up. so the form that gets loaded into the pop-up has to, onsubmit, after it has config details from the user, run JS to make the AJAX request to the asset helper to start the actual copy operation, call into the admin's JS to pop up the dialog that polls on a forked process, and then call into the admin to close itself. this is a nasty hack that daisy chains together two possible replies to processPlugin(), one after the other. |
||
|---|---|---|
| docs | ||
| eg | ||
| etc | ||
| lib | ||
| sbin | ||
| selenium | ||
| share | ||
| t | ||
| www | ||
| .gitignore | ||
| .perltidyrc | ||
| .proverc | ||
| app.psgi | ||
| benchmark.pl | ||
| README | ||
| TODO | ||
This is the PSGI branch of WebGUI8
To try this out:
0) Start from WebGUI 7.10.23 or the example .conf and create.sql that comes with WebGUI 8.
1) Run testEnvironment.pl to install all new requirements.
2) Get a new wgd from http://haarg.org/wgd
3) Copy etc/WebGUI.conf.original to www.whatever.com.conf; edit it and set dbuser, dbpass,
dsn, uploadsPath (eg to /data/domains/www.example.com/public/uploads/), extrasPath,
maintenancePage and siteName
4) Set WEBGUI_CONFIG to point at your new config file
5) $ export PERL5LIB='/data/WebGUI/lib'
6) $ wgd reset --upgrade
7) $ cd /data/WebGUI (or whereever you unpacked it)
8) $ rsync -r -a (or cp -a) /data/WebGUI/www/extras /data/domains/www.example.com/public/
(from whereever you unpacked it to whereever you pointed extrasPath to; note 'extras'
goes inside 'public', both under where extrasPath points to)
To start it:
8) $ plackup app.psgi
See docs/install.txt for more detailed installation instructions.
Currently, the best performance is achieved via:
plackup -E none -s Starman --workers 10 --disable-keepalive
You can benchmark your server via:
ab -t 3 -c 10 -k http://dev.localhost.localdomain:5000/ | grep Req
I'm currently getting 370 requests/second, whereas I'm getting 430/second on the non-PSGI WebGUI8 branch.
= ARCHITECTURE =
* The root level app.psgi file loads all the config files found and
loads the site specific psgi file for each, linking them to the
proper host names.
* The site psgi file uses the WEBGUI_CONFIG environment variable to find the config.
* It instantiates the $wg WebGUI object (one per app).
* $wg creates and stores the WebGUI::Config (one per app)
* $wg creates the $app PSGI app code ref (one per app)
* WebGUI::Middleware::Session is wrapped around $app at the outer-most layer so that it can open and
close the $session WebGUI::Session. Any other wG middleware that needs $session should go in between
it and $app ($session created one per request)
* $session creates the $request WebGUI::Session::Request and $response WebGUI::Session::Response
objects (one per request)