Web App Server
A modular Python web application server tested on both python2 and python3.
Over 95% of copyright credits should go to Marcel Hellkamp, the creator of bottlepy, also to the creators of Beaker Cache and Session Library, to the creators of SQLAlchemy and to the creators of Brython.
Install and Config
- Install python and its dependencies
- Activate emergency admin and start server
- Configure server: config auth and adm
- Customize web server: edit config and menu
Code samples and recipes
- Sample 1 - The smallest application, just one file:
- Sample 2 - Application with a template, two files:
__.py and index.tpl
- Sample 3 - Template and app config file.
- Sample 4 - An Extended Application.
- Sample 5 - Setup Security in Application.
- Sample 6 - A Brython button.
- Sample 7 - User config file.
- Sample 8 - Access server config file.
- Sample 9 - Hack the server.
- golang approach - Use golang to read module config
Features or Intended Design Rules
The server is designed to be as simple as possible.
The server load and use modules from extensions folder.
The server itself don't use SQL, but load and call module auth, which use SQL.
The auth module provide login, logout and readonly access to groups for other modules. A tipical example: module wiki use in config access module, admins access and publishers access which get the group list from auth module.
The adm module allow admins to edit modules config, change description of modules and add modules to extensions folder from a list of templates.
The login process, if succeed, create a session cookie with user name, user id, user groups membership and so on. The group list stored in session cookie is used by other modules to check if user has access.
The server warn user that is using cookies, according to an European Law from May 2011, and ask for confirmation.
The server can be used with zero cookies, but user will not be able to authenticate and will have limited access.
The session cookie is encrypted with fixed keys (useful for cluster of servers) or randomly generated keys at server startup (if random_session_keys is enabled in server config).
The config of modules from extensions folder can be changed from server web interface or using an external application.
You can import compiled modules with nuitka: nuitka --module mymodule.py.
You can customize server menu changing menu.ini.
Server supports SSL and FCGI.
Server can run frozen (frozen Python mode).