When creating applications:
You can create new configuration parameters.
You can add new configuration templates under /etc/e-smith/templates/.
You can add fragments to any of the existing templates under /etc/e-smith/templates/.
You can arrange for actions to be triggered upon package pre-install, post-install, pre-uninstall, or post-uninstall.
You can link new actions into the events listed in the Section called Standard events and their arguments in Chapter 7.
You can create new events to allow your feature set to be expanded. Do not create events for any other reason. They are not a replacement for function calls.
You can arrange for new server programs to be started up at boot time.
Typically you would expand a template at application post-install time, application post-uninstall time, and one or more of the other events.
You can add new web functions to the navigation bar. Remember, panels should only retrieve and modify database values, perform validation, and signal events.
That is all! Applications should not make any extensions to the system other than these. For example, an application should not:
Change the kernel or add new kernel modules.
Edit configuration files directly - templates must be used.
Link actions into any events other than the ones listed above or new events that you create. All built-in events other than the ones listed above are subject to change without notice in new SME Server releases.
Directly access the per-user email store (i.e. the Maildir and related subdirectories within each user's home directory). This access should be performed via the IMAP server as the location and format of a user's home directory may change between releases.
Take over the function of existing servers (i.e. shut down qmail and Apache and take over ports 25 and 80). The SME Server has features for proxying email and web requests to other servers on the system.
Do not expand templates at boot time. The only thing that should be happening during a normal system startup is to start servers. Templates should be expanded when it is necessary to change the system configuration (i.e. when a setting is changed, when the IP address changes, etc.) A normal shutdown or reboot should not trigger configuration changes. The bootstrap-console-save event will be run after a system reconfiguration, but will not run if the system does not require reconfiguration.