diff --git a/net/asterisk-16.x/Makefile b/net/asterisk-16.x/Makefile index 062eee8..1d72cf7 100644 --- a/net/asterisk-16.x/Makefile +++ b/net/asterisk-16.x/Makefile @@ -334,7 +334,7 @@ endef define Package/$(PKG_NAME)/install/conffile $(INSTALL_DIR) $(1)/etc/asterisk - $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/asterisk/$(2) $(1)/etc/asterisk/ + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/asterisk/$(2) $(1)/etc/asterisk/ endef define Package/$(PKG_NAME)/install/lib @@ -354,7 +354,7 @@ endef define Package/$(PKG_NAME)/install/util-conffile $(INSTALL_DIR) $(1)/etc - $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/asterisk/$(2) $(1)/etc + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/asterisk/$(2) $(1)/etc endef define Package/$(PKG_NAME)/config @@ -498,7 +498,9 @@ $(foreach m,$(AST_CFG_FILES),$(call Package/$(PKG_NAME)/install/conffile,$(1),$( $(foreach m,$(AST_EMB_MODULES),$(call Package/$(PKG_NAME)/install/module,$(1),$(m));) $(INSTALL_DIR) $(1)/etc/config $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_DIR) $(1)/usr/share/asterisk/agi-bin $(INSTALL_DIR) $(1)/usr/share/asterisk/firmware/iax + $(INSTALL_DIR) $(1)/usr/share/asterisk/keys $(INSTALL_DIR) $(1)/usr/share/asterisk/sounds $(INSTALL_BIN) ./files/asterisk.init $(1)/etc/init.d/asterisk $(INSTALL_CONF) ./files/asterisk.conf $(1)/etc/config/asterisk diff --git a/net/asterisk-16.x/files/asterisk.conf b/net/asterisk-16.x/files/asterisk.conf index 3c05e0a..f175df8 100644 --- a/net/asterisk-16.x/files/asterisk.conf +++ b/net/asterisk-16.x/files/asterisk.conf @@ -1,26 +1,16 @@ +# The init script will create below default directories automatically. +# In case you change these paths in your Asterisk configuration, make +# sure that your directories exist and have the appropriate permissions +# (Asterisk will use the user "asterisk", not root). + +# dbdir => '/var/lib/asterisk/astdb' +# logdir => '/var/log/asterisk' +# rundir => '/var/run/asterisk' +# spooldir => '/var/spool/asterisk' +# varlibdir => '/var/lib/asterisk' config asterisk 'general' option enabled '0' - # If you have problems running Asterisk as user "asterisk" we'd - # like to hear from you. Please raise an issue at: - # https://github.com/openwrt/telephony/issues - option user 'asterisk' - option group 'asterisk' option log_stderr '1' option log_stdout '1' option options '' - -config asterisk 'directories' - # The init script will only create below directories and update - # their permissions if they don't exist. - # Note: To change the default paths you need to update your - # "asterisk.conf" file. - option agidir '/usr/share/asterisk/agi-bin' - option datadir '/usr/share/asterisk' - option dbdir '/var/lib/asterisk/astdb' - option keydir '/usr/share/asterisk/keys' - option logdir '/var/log/asterisk' - option rundir '/var/run/asterisk' - option spooldir '/var/spool/asterisk' - option varlibdir '/var/lib/asterisk' - diff --git a/net/asterisk-16.x/files/asterisk.init b/net/asterisk-16.x/files/asterisk.init index fd83948..256a3cf 100644 --- a/net/asterisk-16.x/files/asterisk.init +++ b/net/asterisk-16.x/files/asterisk.init @@ -13,25 +13,13 @@ COMMAND=/usr/sbin/$NAME LOGGER="/usr/bin/logger -p user.err -s -t $NAME --" start_service() { - local enabled - local user - local group - - local log_stderr - local log_stdout - - local agidir - local cdrcsvdir - local datadir - local dbdir - local keydir - local logdir - local rundir - local spooldir - local varlibdir - - local options + dbdir=/var/lib/asterisk/astdb + logdir=/var/log/asterisk + cdrcsvdir=$logdir/cdr-csv + rundir=/var/run/asterisk + spooldir=/var/spool/asterisk + varlibdir=/var/lib/asterisk config_load $NAME @@ -41,85 +29,30 @@ start_service() { exit 1 fi - config_get user general user $NAME - config_get group general group $NAME - - user_exists "$user" || { - $LOGGER user \""$user"\" does not exist - exit 1 - } - group_exists "$group" || { - $LOGGER group \""$group"\" does not exist - exit 1 - } - - if [ "$user" = $NAME ]; then - if ! id -nG $NAME | grep -qwF dialout; then - group_exists dialout && group_add_user dialout $NAME - fi - fi - config_get_bool log_stderr general log_stderr 1 config_get_bool log_stdout general log_stdout 1 - config_get agidir directories agidir /usr/share/$NAME/agi-bin - config_get datadir directories datadir /usr/share/$NAME - config_get dbdir directories dbdir /var/lib/$NAME/astdb - config_get keydir directories keydir /usr/share/$NAME/keys - config_get logdir directories logdir /var/log/$NAME - config_get rundir directories rundir /var/run/$NAME - config_get spooldir directories spooldir /var/spool/$NAME - config_get varlibdir directories varlibdir /var/lib/$NAME - config_get options general options - cdrcsvdir="${logdir}/cdr-csv" - - # do not touch directories that already exist - # posix shell does not support arrays, hence using awk - awk \ - -v user="$user" \ - -v group="$group" \ - -v a="$agidir" \ - -v b="$cdrcsvdir" \ - -v c="$datadir" \ - -v d="$dbdir" \ - -v e="$keydir" \ - -v f="$logdir" \ - -v g="$rundir" \ - -v h="$spooldir" \ - -v i="$varlibdir" \ - ' - BEGIN { - dir[0]=a - dir[1]=b - dir[2]=c - dir[3]=d - dir[4]=e - dir[5]=f - dir[6]=g - dir[7]=h - dir[8]=i - for (x in dir) { - if (system("test ! -e \"" dir[x] "\"" )) { - delete dir[x] - } - } - for (x in dir) { - system("mkdir -p \"" dir[x] "\"" ) - system("chmod 750 \"" dir[x] "\"" ) - system("chown \"" user "\":\"" group "\" \"" dir[x] "\"" ) - } - } - ' - - chown -R "$user":"$group" /etc/$NAME + for i in \ + "$logdir" \ + "$cdrcsvdir" \ + "$rundir" \ + "$spooldir" \ + "$varlibdir" \ + "$dbdir" + do + if ! [ -e "$i" ]; then + mkdir -m 0750 -p "$i" + [ -d "$i" ] && chown $NAME:$NAME "$i" + fi + done procd_open_instance procd_set_param command $COMMAND procd_append_param command \ - -G "$group" \ - -U "$user" \ + -G "$NAME" \ + -U "$NAME" \ $options \ -f # forward stderr to logd @@ -127,5 +60,5 @@ start_service() { # same for stdout procd_set_param stdout $log_stdout procd_close_instance -} +}