export DESTDIR
export INSTALL_PATH # Additional prefix for the following paths
+export ASTCACHEDIR
export ASTETCDIR # Path for config files
export ASTVARRUNDIR
export ASTSPOOLDIR
NEWHEADERS=$(notdir $(wildcard include/asterisk/*.h))
OLDHEADERS=$(filter-out $(NEWHEADERS) $(notdir $(DESTDIR)$(ASTHEADERDIR)),$(notdir $(wildcard $(DESTDIR)$(ASTHEADERDIR)/*.h)))
-INSTALLDIRS="$(ASTLIBDIR)" "$(ASTMODDIR)" "$(ASTSBINDIR)" "$(ASTETCDIR)" "$(ASTVARRUNDIR)" \
+INSTALLDIRS="$(ASTLIBDIR)" "$(ASTMODDIR)" "$(ASTSBINDIR)" "$(ASTCACHEDIR)" "$(ASTETCDIR)" "$(ASTVARRUNDIR)" \
"$(ASTSPOOLDIR)" "$(ASTSPOOLDIR)/dictate" "$(ASTSPOOLDIR)/meetme" \
"$(ASTSPOOLDIR)/monitor" "$(ASTSPOOLDIR)/system" "$(ASTSPOOLDIR)/tmp" \
"$(ASTSPOOLDIR)/voicemail" "$(ASTSPOOLDIR)/recording" \
done ; \
if [ "$(OVERWRITE)" = "y" ]; then \
echo "Updating asterisk.conf" ; \
- sed -e 's|^astetcdir.*$$|astetcdir => $(ASTETCDIR)|' \
+ sed -e 's|^astcachedir.*$$|astcachedir => $(ASTCACHEDIR)|' \
+ -e 's|^astetcdir.*$$|astetcdir => $(ASTETCDIR)|' \
-e 's|^astmoddir.*$$|astmoddir => $(ASTMODDIR)|' \
-e 's|^astvarlibdir.*$$|astvarlibdir => $(ASTVARLIBDIR)|' \
-e 's|^astdbdir.*$$|astdbdir => $(ASTDBDIR)|' \
rm -rf "$(DESTDIR)$(ASTSPOOLDIR)"
rm -rf "$(DESTDIR)$(ASTETCDIR)"
rm -rf "$(DESTDIR)$(ASTLOGDIR)"
+ rm -rf "$(DESTDIR)$(ASTCACHEDIR)"
menuconfig: menuselect
src="$1"
dst="$2"
sed <"$src" \
+ -e "s|__ASTERISK_CACHE_DIR__|$ASTCACHEDIR|g" \
-e "s|__ASTERISK_DATA_DIR__|$ASTDATADIR|g" \
-e "s|__ASTERISK_DB_DIR__|$ASTDBDIR|g" \
-e "s|__ASTERISK_ETC_DIR__|$ASTETCDIR|g" \
*/
#define DEFAULT_CONFIG_FILE "${INSTALL_PATH}${ASTCONFPATH}"
+#define DEFAULT_CACHE_DIR "${INSTALL_PATH}${ASTCACHEDIR}"
#define DEFAULT_CONFIG_DIR "${INSTALL_PATH}${ASTETCDIR}"
#define DEFAULT_MODULE_DIR "${INSTALL_PATH}${ASTMODDIR}"
#define DEFAULT_AGI_DIR "${INSTALL_PATH}${AGI_DIR}"
cat <<EOF > "$PPATH/asterisk.pc"
install_prefix=$INSTALL_PREFIX
version_number=$ASTERISKVERSIONNUM
+cachedir=$ASTCACHEDIR
etcdir=$ASTETCDIR
libdir=$ASTLIBDIR
varlibdir=$ASTVARLIBDIR
[directories](!)
+astcachedir => /var/cache/asterisk
astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
BUILD_VENDOR
BUILD_CPU
BUILD_PLATFORM
+astcachedir
astvarrundir
astlogdir
astspooldir
# System default paths
astsbindir='${sbindir}'
+astcachedir='${localstatedir}/cache/asterisk'
astetcdir='${sysconfdir}/asterisk'
astheaderdir='${includedir}/asterisk'
astlibdir='${libdir}'
;;
solaris*)
if test ${prefix} = 'NONE'; then
+ astcachedir=/var/cache/asterisk
astetcdir=/var/etc/asterisk
astsbindir=/opt/asterisk/sbin
astlibdir=/opt/asterisk/lib
# System default paths
AC_SUBST([astsbindir], ['${sbindir}'])dnl
+AC_SUBST([astcachedir], ['${localstatedir}/cache/asterisk'])dnl
AC_SUBST([astetcdir], ['${sysconfdir}/asterisk'])dnl
AC_SUBST([astheaderdir], ['${includedir}/asterisk'])dnl
AC_SUBST([astlibdir], ['${libdir}'])dnl
;;
solaris*)
if test ${prefix} = 'NONE'; then
+ astcachedir=/var/cache/asterisk
astetcdir=/var/etc/asterisk
astsbindir=/opt/asterisk/sbin
astlibdir=/opt/asterisk/lib
--- /dev/null
+Subject: Core
+
+The location where the media cache stores its temporary files
+is no longer hardcoded to /tmp but can now be configured separately
+via the astcachedir config variable in asterisk.conf.
+
+The default location for astcachedir is now /var/cache/asterisk
+instead of /tmp, please make sure to manually cleanup and/or
+migrate the temporary files in /tmp after upgrading.
#ifndef _ASTERISK_PATHS_H
#define _ASTERISK_PATHS_H
+extern const char *ast_config_AST_CACHE_DIR;
extern const char *ast_config_AST_CONFIG_DIR;
extern const char *ast_config_AST_CONFIG_FILE;
extern const char *ast_config_AST_MODULE_DIR;
#include "asterisk/json.h"
#include "asterisk/file.h"
#include "asterisk/module.h"
+#include "asterisk/paths.h"
/*! \brief Number of buckets for the container of schemes */
#define SCHEME_BUCKETS 53
{
int fd;
- ast_copy_string(file->path, "/tmp/bucket-XXXXXX", sizeof(file->path));
+ snprintf(file->path, sizeof(file->path), "%s/bucket-XXXXXX", ast_config_AST_CACHE_DIR);
fd = mkstemp(file->path);
if (fd < 0) {
char ast_defaultlanguage[MAX_LANGUAGE] = DEFAULT_LANGUAGE;
struct _cfg_paths {
+ char cache_dir[PATH_MAX];
char config_dir[PATH_MAX];
char module_dir[PATH_MAX];
char spool_dir[PATH_MAX];
};
static struct _cfg_paths cfg_paths = {
+ .cache_dir = DEFAULT_CACHE_DIR,
.config_dir = DEFAULT_CONFIG_DIR,
.module_dir = DEFAULT_MODULE_DIR,
.spool_dir = DEFAULT_SPOOL_DIR,
.ctl_file = "asterisk.ctl",
};
+const char *ast_config_AST_CACHE_DIR = cfg_paths.cache_dir;
const char *ast_config_AST_CONFIG_DIR = cfg_paths.config_dir;
const char *ast_config_AST_CONFIG_FILE = cfg_paths.config_file;
const char *ast_config_AST_MODULE_DIR = cfg_paths.module_dir;
}
for (v = ast_variable_browse(cfg, "directories"); v; v = v->next) {
- if (!strcasecmp(v->name, "astetcdir")) {
+ if (!strcasecmp(v->name, "astcachedir")) {
+ ast_copy_string(cfg_paths.cache_dir, v->value, sizeof(cfg_paths.cache_dir));
+ } else if (!strcasecmp(v->name, "astetcdir")) {
ast_copy_string(cfg_paths.config_dir, v->value, sizeof(cfg_paths.config_dir));
} else if (!strcasecmp(v->name, "astspooldir")) {
ast_copy_string(cfg_paths.spool_dir, v->value, sizeof(cfg_paths.spool_dir));
s = ast_str_buffer(*str);
} else if (!strcmp(var, "SYSTEMNAME")) {
s = ast_config_AST_SYSTEM_NAME;
+ } else if (!strcmp(var, "ASTCACHEDIR")) {
+ s = ast_config_AST_CACHE_DIR;
} else if (!strcmp(var, "ASTETCDIR")) {
s = ast_config_AST_CONFIG_DIR;
} else if (!strcmp(var, "ASTMODDIR")) {
ASTMANDIR = @astmandir@
astvarlibdir = @astvarlibdir@
ASTVARLIBDIR = @astvarlibdir@
+ASTCACHEDIR = @astcachedir@
ASTDATADIR = @astdatadir@
ASTDBDIR = @astdbdir@
ASTKEYDIR = @astkeydir@
set +e
if [ x"$USER_GROUP" != x ] ; then
+ chown -R $USER_GROUP $DESTDIR/var/cache/asterisk
chown -R $USER_GROUP $DESTDIR/var/lib/asterisk
chown -R $USER_GROUP $DESTDIR/var/spool/asterisk
chown -R $USER_GROUP $DESTDIR/var/log/asterisk