3.12. Directories Used by Asterisk
Asterisk uses several directories on a Linux system to manage the various aspects of the system, such as voicemail recordings, voice prompts, and configuration files. This section discusses the necessary directories, all of which are created during installation and configured in the asterisk.conf file.
The /etc/asterisk/ directory contains the Asterisk configuration files. One file, however zaptel.conf is located in the /etc/ directory. The Zaptel hardware was originally designed by Jim Dixon of the Zapata Telephony Group as a way of bringing reasonable and affordable computer telephony equipment to the world. Asterisk makes use of this hardware, but any other software can also make use of the Zaptel hardware and drivers. Consequently, the zaptel.conf configuration file is not directly located in the /etc/asterisk/ directory.
The /usr/lib/asterisk/modules/ directory contains all the Asterisk loadable modules. Within this directory are the various applications, codecs, formats, and channels used by Asterisk . By default, Asterisk loads all of these modules at startup. You can disable any modules you are not using in the modules.conf file, but be aware that certain modules are required by Asterisk or are dependencies of other modules. Attempting to load Asterisk without these modules will cause an error at startup.
The /var/lib/asterisk/ directory contains the astdb file and a number of subdirectories . The astdb file contains the local Asterisk database information, which is somewhat like the Microsoft Windows Registry. The Asterisk database is a simple implementation based on v1 of the Berkeley database. The db.c file in the Asterisk source states that this version was chosen for the following reason: "DB3 implementation is released under an alternative license incompatible with the GPL. Thus in order to keep Asterisk licensing simplistic, it was decided to use version 1 as it is released under the BSD license."
The subdirectories within /var/lib/asterisk/ include:
The Asterisk spool directory contains several subdirectories, including outgoing/ , qcall/ , tmp/ , and voicemail/ (see Figure 3-2). Asterisk monitors the outgoing and qcall directories for text files containing call request information. These files allow you to generate a call simply by copying or moving the correctly structured file into the outgoing/ directory.
Figure 3-2. /var/spool/asterisk/ directory structure
The old (now deprecated) qcall method of generating calls utilized a single line of text within the call file. Call files for use within the qcall directory took the form of:
Dialstring Caller-ID Extension Maxsecs [Identifier] [Required-response]
This rather limited what you could do with the call file, and what kinds of information you could pass to Asterisk. Thus, a new spooling method was developed in Asterisk, using the outgoing directory. Call files being placed into this directory can contain much more valuable information, such as the Context, Extension, and Priority where the answered call should start, or simply the application and its arguments. You can also set variables and specify an account code for Call Detail Records. More information about the use of call files is presented in Chapter 9.
The tmp/ directory is used, funny enough, to hold temporary information. Certain applications may require a place to write files to before copying the complete files to their final destinations. This prevents two processes from trying to write to and read from a file at the same time.
All voicemail and user greetings are contained within the voicemail/ directory. Extensions configured in voicemail.conf that have been logged into at least once are created as subdirectories of voicemail/ .
The /var/run/ directory contains the process ID (pid) information for all active processes on the system, including Asterisk (as specified in the asterisk.conf file). Note that /var/run/ is OS-dependent and may differ .
The /var/log/asterisk/ directory is where Asterisk logs information. You can control the type of information being logged to the various files by editing the logger.conf file located in the /etc/asterisk/ directory. Basic configuration of the logger.conf file is covered in Appendix E.
The /var/log/asterisk/cdr-csv directory is used to store the CDRs in comma-separated value (CSV) format. By default information is stored in the Master.csv file, but individual accounts can store their own CDRs in separate files with the use of the accountcode option (see Appendix A for more information).