The SME Server Developer's Guide

Mitel Corporation

Last updated: $Date: 2006/05/29 09:02:22 $

Revision: $Id: devguide.sgml,v 1.50 2006/05/29 09:02:22 gordonr Exp $

This manual is released under the GNU Free Documentation License:

Copyright (C) 2002-2006 Mitel Corporation

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being "About this manual", the license texts and this page, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

The software examples and code fragments in this manual are released under the GNU General Public License:

Copyright (C) 2002-2006 Mitel Corporation

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

The Mitel Corporation logo is a trademark or registered trademark of Mitel Corporation in the United States and other countries. Linux is a registered trademark of Linus Torvalds. The terms "ssh" and "Secure Shell" are trademarks of SSH Communications Security Corp.


Table of Contents
I. An overview of the SME Server
1. About this manual
2. Who should read this manual?
3. What is the SME Server?
4. Design philosophy
Principle 1: Automating best practice
Principle 2: Simplicity
Principle 3: Extensibility
Principle 4: Reliability
5. Architecture overview
II. SME Server internals
6. Configuration database
Overview
The configuration databases
Namespace issues
7. Actions and events
Actions
Events
8. Configuration file templates
Design of the template system
The Text::Template module
Template expansion
9. Process startup, supervision and shutdown
Process startup
Process supervision: runit (and supervise)
10. The server-manager web interface
The web directory
Web function scripts
Common files
Panel definitions
III. How to create an SME Server package - step by step
11. Getting started
Creating a development environment
12. Getting to know how to customize the SME Server
Exercise 1: Changing a configuration template
Exercise 2: The magic of templates
Exercise 3: Using events and actions
Exercise 4: Adding new configuration database parameters
Exercise 5: Adding a user interface screen
Exercise 6: Adding a new event type
Exercise 7: Thought experiment - adding a new server application
Customization guidelines
13. Packaging your application
A quick introduction to RPMs
Selecting and creating RPMs for your application
Setting up your RPM development environment
Building an RPM
14. The SME Server development environment
Configuring your development environment
Modifying an SME Server package
SourceForge developer CVS access
IV. Advanced customization of the SME Server
15. Advanced customization principles
Leveraging the provisioning system for users, groups, and i-bays
Programmatically creating users, groups, and i-bays
Reserving accounts to avoid conflicts with user, group, or i-bay names
Adding new account properties
Using the LDAP server
Data backup
Using the MySQL database
Sending email messages
Managing the firewall
Starting up programs automatically upon system boot
V. Documentation and resources
16. Perl modules
VI. License texts
A. GNU Free Documentation License
PREAMBLE
APPLICABILITY AND DEFINITIONS
VERBATIM COPYING
COPYING IN QUANTITY
MODIFICATIONS
COMBINING DOCUMENTS
COLLECTIONS OF DOCUMENTS
AGGREGATION WITH INDEPENDENT WORKS
TRANSLATION
TERMINATION
FUTURE REVISIONS OF THIS LICENSE
ADDENDUM: How to use this License for your documents
B. GNU General Public License
Preamble
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
How to Apply These Terms to Your New Programs
List of Tables
3-1. SME Server software
7-1. SME Server standard events
10-1. Web interface directories
14-1. SME Server package directory layout
15-1. SME Server software
List of Figures
5-1. SME Server Architecture