add asterisk-1.4.x (thanks to Hans Zandblet)

git-svn-id: svn://svn.openwrt.org/openwrt/packages@8611 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
nico 2007-09-04 19:16:45 +00:00
parent 2778c34c3b
commit 87f7592e59
12 changed files with 1869 additions and 0 deletions

720
net/asterisk-1.4.x/Makefile Normal file
View File

@ -0,0 +1,720 @@
#
# Copyright (C) 2007 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
# $Id$
include $(TOPDIR)/rules.mk
PKG_NAME:=asterisk
PKG_VERSION:=1.4.11
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://ftp.digium.com/pub/asterisk/old-releases/
PKG_MD5SUM:=3ba9b399fedc68de4845b1c5603d167c
PKG_BUILD_DEPENDS:= libopenh323 pwlib
include $(INCLUDE_DIR)/package.mk
define Package/asterisk14/Default
SUBMENU:=asterisk14 (Complete Open Source PBX), v1.4.x
SECTION:=net
CATEGORY:=Network
endef
define Package/asterisk14/Default/description
Asterisk is a complete PBX in software. It provides all of the features
you would expect from a PBX and more. Asterisk does voice over IP in three
protocols, and can interoperate with almost all standards-based telephony
equipment using relatively inexpensive hardware.
URL:=http://www.asterisk.org/
endef
define Package/asterisk14
$(call Package/asterisk14/Default)
TITLE:=Complete open source PBX
DEPENDS:= +libltdl +libncurses +libpopt +libpthread +zlib
endef
define Package/asterisk14/description
$(call Package/asterisk14/Default/description)
endef
define Package/asterisk14-mini
$(call Package/asterisk14/Default)
TITLE:=Minimal open source PBX
DEPENDS:=+libncurses +libpthread
endef
define Package/asterisk14-mini/description
$(call Package/asterisk14/Default/description)
This package contains only the following modules:
- app_dial
- chan_iax2
- chan_local
- chan_sip
- codec_gsm
- codec_ulaw
- format_gsm
- format_pcm
- format_wav
- format_wav_gsm
- pbx_config
- res_features
- res_musiconhold
endef
define Package/asterisk14-chan-alsa
$(call Package/asterisk14/Default)
TITLE:=ALSA soundcards support
DEPENDS:= +asterisk14 +alsa-lib
endef
define Package/asterisk14-chan-alsa/description
$(call Package/asterisk14/Default/description)
This package provides the channel driver for ALSA sound cards support to
Asterisk.
endef
define Package/asterisk14-chan-gtalk
$(call Package/asterisk14/Default)
TITLE:=GTalk support
DEPENDS:= +asterisk14 +libiksemel
endef
define Package/asterisk14-chan-gtalk/description
$(call Package/asterisk14/Default/description)
This package provides the channel chan_gtalk and res_jabber for GTalk
support to Asterisk.
endef
define Package/asterisk14-chan-h323
$(call Package/asterisk14/Default)
TITLE:=H.323 support for Asterisk
DEPENDS:= +asterisk14 +uclibcxx
endef
define Package/asterisk14-chan-h323/description
$(call Package/asterisk14/Default/description)
This package provides H.323 support to Asterisk.
endef
define Package/asterisk14-chan-mgcp
$(call Package/asterisk14/Default)
TITLE:=MGCP support
DEPENDS:= +asterisk14
endef
define Package/asterisk14-chan-mgcp/description
$(call Package/asterisk14/Default/description)
This package provides MGCP (Media Gateway Control Protocol) support \\\
to Asterisk.
endef
define Package/asterisk14-chan-skinny
$(call Package/asterisk14/Default)
TITLE:=Skinny Client Control Protocol support
DEPENDS:= +asterisk14
endef
define Package/asterisk14-chan-skinny/description
$(call Package/asterisk14/Default/description)
This package provided Skinny Client Control Protocol support to \\\
Asterisk.
endef
define Package/asterisk14-codec-ilbc
$(call Package/asterisk14/Default)
TITLE:=ILBC Translator
DEPENDS:= +asterisk14
endef
define Package/asterisk14-codec-ilbc/description
$(call Package/asterisk14/Default/description)
This package contains the ILBC (Internet Low Bitrate Codec) translator
for Asterisk.
endef
define Package/asterisk14-codec-lpc10
$(call Package/asterisk14/Default)
TITLE:=LPC10 2.4kbps voice codec Translator
DEPENDS:= +asterisk14
endef
define Package/asterisk14-chan-lpc10/description
$(call Package/asterisk14/Default/description)
This package contains the LPC10 (Linear Predictor Code) 2.4kbps voice
codec translator for Asterisk.
endef
define Package/asterisk14-codec-speex
$(call Package/asterisk14/Default)
TITLE:=Speex/PCM16 Codec Translator
DEPENDS:= +asterisk14 +libspeex
endef
define Package/asterisk14-chan-speex/description
$(call Package/asterisk14/Default/description)
This package contains the Speex speech compression codec translator for
Asterisk.
endef
define Package/asterisk14-pbx-dundi
$(call Package/asterisk14/Default)
TITLE:=DUNDi support
DEPENDS:= +asterisk14
endef
define Package/asterisk14-pbx-dundi/description
$(call Package/asterisk14/Default/description)
This package provides DUNDi (Distributed Universal Number Discovery)
support to Asterisk.
endef
define Package/asterisk14-res-agi
$(call Package/asterisk14/Default)
TITLE:=AGI support
DEPENDS:= +asterisk14
endef
define Package/asterisk14-res-agi/description
$(call Package/asterisk14/Default/description)
This package provides AGI (Asterisk Gateway Interface) support to
Asterisk.
endef
define Package/asterisk14-res-crypto
$(call Package/asterisk14/Default)
TITLE:=Cryptographic Digital Signatures support
DEPENDS:= +asterisk14 +libopenssl
endef
define Package/asterisk14-res-crypto/description
$(call Package/asterisk14/Default/description)
This package provides Cryptographic Digital Signatures support to
Asterisk.
endef
define Package/asterisk14-pgsql
$(call Package/asterisk14/Default)
TITLE:=PostgreSQL support
DEPENDS:= +asterisk14 +libpq
endef
define Package/asterisk14-pgsql/description
$(call Package/asterisk14/Default/description)
This package contains PostgreSQL support modules for Asterisk.
endef
define Package/asterisk14-sqlite
$(call Package/asterisk14/Default)
TITLE:=SQLite modules
DEPENDS:= +asterisk14 +libsqlite2
endef
define Package/asterisk14-sqlite/description
$(call Package/asterisk14/Default/description)
This package contains SQLite support modules for Asterisk.
endef
define Package/asterisk14-sounds
$(call Package/asterisk14/Default)
TITLE:=Sound files
DEPENDS:= +asterisk14
endef
define Package/asterisk14-sounds/description
$(call Package/asterisk14/Default/description)
This package contains sound files for Asterisk.
endef
define Package/asterisk14-voicemail
$(call Package/asterisk14/Default)
TITLE:=Voicemail support
DEPENDS:= +asterisk14
endef
define Package/asterisk14-voicemail/description
$(call Package/asterisk14/Default/description)
This package contains voicemail related modules for Asterisk.
endef
CONFIGURE_ARGS+= \
--without-curl \
--without-curses \
--without-gsm \
--without-imap \
--without-isdnnet \
--without-kde \
--with-ltdl="$(STAGING_DIR)/usr" \
--without-misdn \
--without-nbs \
--with-ncurses="$(STAGING_DIR)/usr" \
--without-netsnmp \
--without-newt \
--without-odbc \
--without-ogg \
--without-osptk \
--without-oss \
--with-popt="$(STAGING_DIR)/usr" \
--without-pri \
--without-qt \
--without-radius \
--without-spandsp \
--without-suppserv \
--without-tds \
--without-termcap \
--without-tinfo \
--without-tonezone \
--without-vorbis \
--without-vpb \
--with-z="$(STAGING_DIR)/usr" \
--without-zaptel \
EXTRA_CFLAGS:= $(TARGET_CPPFLAGS)
EXTRA_LDFLAGS:= $(TARGET_LDFLAGS)
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk14-chan-alsa),)
CONFIGURE_ARGS+= \
--with-asound="$(STAGING_DIR)/usr"
else
CONFIGURE_ARGS+= \
--without-asound
endif
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk14-chan-gtalk),)
CONFIGURE_ARGS+= \
--with-gnutls="$(STAGING_DIR)/usr" \
--with-iksemel="$(STAGING_DIR)/usr"
else
CONFIGURE_ARGS+= \
--without-gnutls \
--without-iksemel
endif
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk14-chan-h323),)
CONFIGURE_ARGS+= \
--with-h323="$(BUILD_DIR)/openh323" \
--with-pwlib="$(BUILD_DIR)/pwlib"
CONFIGURE_VARS+= \
LIBS="$$$$LIBS -luClibc++ -ldl -lpthread"
define Build/Compile/chan-h323
$(MAKE) -C "$(PKG_BUILD_DIR)/channels/h323" \
$(TARGET_CONFIGURE_OPTS) \
CXXLIBS="-nodefaultlibs -luClibc++" \
optnoshared
endef
else
CONFIGURE_ARGS+= \
--without-h323 \
--without-pwlib
endif
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk14-codec-speex),)
CONFIGURE_ARGS+= \
--with-speex="$(STAGING_DIR)/usr"
EXTRA_CFLAGS+= -I$(STAGING_DIR)/usr/include/speex
else
CONFIGURE_ARGS+= \
--without-speex
endif
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk14-res-crypto),)
CONFIGURE_ARGS+= \
--with-ssl="$(STAGING_DIR)/usr"
else
CONFIGURE_ARGS+= \
--without-ssl
endif
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk14-pgsql),)
CONFIGURE_ARGS+= \
--with-postgres="$(STAGING_DIR)/usr"
else
CONFIGURE_ARGS+= \
--without-postgres
endif
ifneq ($(SDK)$(CONFIG_PACKAGE_asterisk14-sqlite),)
CONFIGURE_ARGS+= \
--with-sqlite="$(STAGING_DIR)/usr"
else
CONFIGURE_ARGS+= \
--without-sqlite
endif
define Build/Configure
( cd $(PKG_BUILD_DIR); ./bootstrap.sh )
$(call Build/Configure/Default)
endef
define Build/Compile
$(MAKE) -C "$(PKG_BUILD_DIR)" \
include/asterisk/version.h \
include/asterisk/buildopts.h defaults.h \
makeopts.embed_rules
$(call Build/Compile/chan-h323)
ASTCFLAGS="$(EXTRA_CFLAGS) -DLOW_MEMORY $(TARGET_CFLAGS)" \
ASTLDFLAGS="$(EXTRA_LDFLAGS)" \
$(MAKE) -C "$(PKG_BUILD_DIR)" \
ASTVARLIBDIR="/usr/lib/asterisk" \
NOISY_BUILD="1" \
DEBUG="" \
OPTIMIZE="" \
DESTDIR="$(PKG_INSTALL_DIR)" \
all install samples
$(SED) 's|/var/lib/asterisk|/usr/lib/asterisk|g' $(PKG_INSTALL_DIR)/etc/asterisk/musiconhold.conf
endef
define Build/InstallDev
mkdir -p $(STAGING_DIR)/usr/include/asterisk/
$(CP) $(PKG_INSTALL_DIR)/usr/include/asterisk/*.h $(STAGING_DIR)/usr/include/asterisk/
$(CP) $(PKG_INSTALL_DIR)/usr/include/asterisk.h $(STAGING_DIR)/usr/include/
endef
define Package/asterisk14/conffiles
/etc/asterisk/agents.conf
/etc/asterisk/alarmreceiver.conf
/etc/asterisk/amd.conf
/etc/asterisk/asterisk.conf
/etc/asterisk/cdr.conf
/etc/asterisk/cdr_custom.conf
/etc/asterisk/cdr_manager.conf
/etc/asterisk/codecs.conf
/etc/asterisk/dnsmgr.conf
/etc/asterisk/enum.conf
/etc/asterisk/extconfig.conf
/etc/asterisk/extensions.ael
/etc/asterisk/extensions.conf
/etc/asterisk/features.conf
/etc/asterisk/followme.conf
/etc/asterisk/http.conf
/etc/asterisk/iax.conf
/etc/asterisk/iaxprov.conf
/etc/asterisk/indications.conf
/etc/asterisk/logger.conf
/etc/asterisk/manager.conf
/etc/asterisk/misdn.conf
/etc/asterisk/modules.conf
/etc/asterisk/musiconhold.conf
/etc/asterisk/muted.conf
/etc/asterisk/osp.conf
/etc/asterisk/privacy.conf
/etc/asterisk/queues.conf
/etc/asterisk/rtp.conf
/etc/asterisk/say.conf
/etc/asterisk/sip.conf
/etc/asterisk/sip_notify.conf
/etc/asterisk/sla.conf
/etc/asterisk/smdi.conf
/etc/asterisk/udptl.conf
/etc/asterisk/users.conf
endef
define Package/asterisk14/postinst
#!/bin/sh
ROOT=`echo $${PKG_ROOT} | sed 's:[\/]:\\\&:g' -`
/bin/sed -i 's/\ \/etc/\ '$${ROOT}'etc/g' $${PKG_ROOT}/etc/asterisk/asterisk.conf
/bin/sed -i 's/\ \/var/\ '$${ROOT}'var/g' $${PKG_ROOT}/etc/asterisk/asterisk.conf
/bin/sed -i 's/\ \/usr/\ '$${ROOT}'usr/g' $${PKG_ROOT}/etc/asterisk/asterisk.conf
/bin/sed -i 's/^DEST=/DEST='$${ROOT}'/g' $${PKG_ROOT}/etc/init.d/asterisk
/bin/sed -i 's/OPTIONS=\"\"/OPTIONS=\"-C\ '$${ROOT}'etc\/asterisk\/asterisk.conf\"/g' $${PKG_ROOT}/etc/default/asterisk
endef
define Package/asterisk14/install
$(CP) $(PKG_INSTALL_DIR)/* $(1)
rm -rf $(1)/usr/sbin/astgenkey
rm -rf $(1)/usr/sbin/aelparse
rm -rf $(1)/usr/sbin/autosupport
rm -rf $(1)/usr/sbin/muted
rm -rf $(1)/usr/sbin/stereorize
rm -rf $(1)/usr/bin
rm -rf $(1)/usr/man
rm -rf $(1)/usr/include
rm -rf $(1)/var/spool/asterisk/meetme
rm -rf $(1)/var/spool/asterisk/voicemail
(cd $(1)/usr/lib/asterisk; \
rm -rf agi-bin; \
rm -rf images; \
rm -rf keys/*; \
rm -rf moh/*.wav; \
rm -rf sounds/*; \
cd modules; \
rm -rf *adsi* *festival* *modem* *oss* *phone* *intercom* \
*mp3* *nbscat* *sqlite* *mysql* *postgres* *pgsql* \
*voicemail* *speex* *flash* *page* *zap* *jpeg* \
*snmp* \
chan_alsa.so \
chan_gtalk.so \
chan_h323.so \
chan_mgcp.so \
chan_skinny.so \
{codec,format}_ilbc.so \
codec_lpc10.so \
pbx_dundi.so \
res_agi.so \
res_crypto.so \
res_jabber.so \
)
(cd $(1)/etc/asterisk; \
rm -f *odbc* *mysql* *postgres* *pgsql* *voicemail* \
*adsi* *oss* *alsa* *festival* *modem* *phone* \
*tds* *vofr* *rpt* *vpb* *snmp* \
*zapata* \
alsa.conf \
dundi.conf \
gtalk.conf \
h323.conf \
jabber.conf \
mgcp.conf \
skinny.conf \
)
$(INSTALL_DATA) ./files/modules.conf $(1)/etc/asterisk/
$(INSTALL_DIR) $(1)/etc/default
$(INSTALL_DATA) ./files/asterisk.default $(1)/etc/default/asterisk
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/asterisk.init $(1)/etc/init.d/asterisk
endef
define Package/asterisk14-mini/conffiles
/etc/asterisk/asterisk.conf
/etc/asterisk/enum.conf
/etc/asterisk/extconfig.conf
/etc/asterisk/extensions.conf
/etc/asterisk/features.conf
/etc/asterisk/http.conf
/etc/asterisk/iax.conf
/etc/asterisk/iaxprov.conf
/etc/asterisk/logger.conf
/etc/asterisk/manager.conf
/etc/asterisk/modules.conf
/etc/asterisk/musiconhold.conf
/etc/asterisk/rtp.conf
/etc/asterisk/sip.conf
/etc/asterisk/sip_notify.conf
/etc/asterisk/users.conf
endef
define Package/asterisk14-mini/install
$(INSTALL_DIR) $(1)/etc/asterisk
for f in asterisk enum extconfig extensions features http \
iax iaxprov logger manager modules musiconhold rtp \
sip sip_notify users; do \
$(CP) $(PKG_INSTALL_DIR)/etc/asterisk/$$$$f.conf $(1)/etc/asterisk/ ; \
done
$(INSTALL_DATA) ./files/modules.conf $(1)/etc/asterisk/
$(INSTALL_DIR) $(1)/usr/lib/asterisk
$(CP) $(PKG_INSTALL_DIR)/usr/lib/asterisk/firmware $(1)/usr/lib/asterisk/
$(INSTALL_DIR) $(1)/usr/lib/asterisk/keys
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
for f in app_dial chan_iax2 chan_local chan_sip codec_gsm \
codec_ulaw format_gsm format_pcm format_wav format_wav_gsm \
pbx_config res_features res_musiconhold; do \
$(CP) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/$$$$f.so $(1)/usr/lib/asterisk/modules/ ; \
done
$(INSTALL_DIR) $(1)/usr/lib/asterisk/moh
$(INSTALL_DIR) $(1)/usr/lib/asterisk/sounds
$(INSTALL_DIR) $(1)/usr/sbin
$(CP) $(PKG_INSTALL_DIR)/usr/sbin/asterisk $(1)/usr/sbin/
$(CP) $(PKG_INSTALL_DIR)/usr/sbin/safe_asterisk $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc/default
$(INSTALL_DATA) ./files/asterisk.default $(1)/etc/default/asterisk
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/asterisk.init $(1)/etc/init.d/asterisk
endef
define Package/asterisk14-chan-alsa/conffiles
/etc/asterisk/alsa.conf
endef
define Package/asterisk14-chan-alsa/install
$(INSTALL_DIR) $(1)/etc/asterisk
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/asterisk/alsa.conf $(1)/etc/asterisk/
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/chan_alsa.so $(1)/usr/lib/asterisk/modules/
endef
define Package/asterisk14-chan-gtalk/conffiles
/etc/asterisk/gtalk.conf
/etc/asterisk/jabber.conf
endef
define Package/asterisk14-chan-gtalk/install
$(INSTALL_DIR) $(1)/etc/asterisk
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/asterisk/gtalk.conf $(1)/etc/asterisk/
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/asterisk/jabber.conf $(1)/etc/asterisk/
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/chan_gtalk.so $(1)/usr/lib/asterisk/modules/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/res_jabber.so $(1)/usr/lib/asterisk/modules/
endef
define Package/asterisk14-chan-h323/conffiles
/etc/asterisk/h323.conf
endef
define Package/asterisk14-chan-h323/install
$(INSTALL_DIR) $(1)/etc/asterisk
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/asterisk/h323.conf $(1)/etc/asterisk/
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/chan_h323.so $(1)/usr/lib/asterisk/modules/
endef
define Package/asterisk14-chan-mgcp/install
/etc/asterisk/mgcp.conf
endef
define Package/asterisk14-chan-mgcp/install
$(INSTALL_DIR) $(1)/etc/asterisk
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/asterisk/mgcp.conf $(1)/etc/asterisk/
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/chan_mgcp.so $(1)/usr/lib/asterisk/modules/
endef
define Package/asterisk14-chan-skinny/conffiles
/etc/asterisk/skinny.conf
endef
define Package/asterisk14-chan-skinny/install
$(INSTALL_DIR) $(1)/etc/asterisk
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/asterisk/skinny.conf $(1)/etc/asterisk/
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/chan_skinny.so $(1)/usr/lib/asterisk/modules/
endef
define Package/asterisk14-codec-ilbc/install
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/codec_ilbc.so $(1)/usr/lib/asterisk/modules/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/format_ilbc.so $(1)/usr/lib/asterisk/modules/
endef
define Package/asterisk14-codec-lpc10/install
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/codec_lpc10.so $(1)/usr/lib/asterisk/modules/
endef
define Package/asterisk14-codec-speex/install
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/codec_speex.so $(1)/usr/lib/asterisk/modules/
endef
define Package/asterisk14-pbx-dundi/conffiles
/etc/asterisk/dundi.conf
endef
define Package/asterisk14-pbx-dundi/install
$(INSTALL_DIR) $(1)/etc/asterisk
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/asterisk/dundi.conf $(1)/etc/asterisk/
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/pbx_dundi.so $(1)/usr/lib/asterisk/modules/
endef
define Package/asterisk14-res-agi/install
$(INSTALL_DIR) $(1)/usr/lib/asterisk/agi-bin
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/res_agi.so $(1)/usr/lib/asterisk/modules/
endef
define Package/asterisk14-res-crypto/install
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/res_crypto.so $(1)/usr/lib/asterisk/modules/
endef
define Package/asterisk14-pgsql/conffiles
/etc/asterisk/cdr_pgsql.conf
/etc/asterisk/res_pgsql.conf
endef
define Package/asterisk14-pgsql/install
$(INSTALL_DIR) $(1)/etc/asterisk
install -m0600 $(PKG_INSTALL_DIR)/etc/asterisk/cdr_pgsql.conf $(1)/etc/asterisk/
install -m0600 $(PKG_INSTALL_DIR)/etc/asterisk/res_pgsql.conf $(1)/etc/asterisk/
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/cdr_pgsql.so $(1)/usr/lib/asterisk/modules/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/res_config_pgsql.so $(1)/usr/lib/asterisk/modules/
endef
define Package/asterisk14-sqlite/install
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/cdr_sqlite.so $(1)/usr/lib/asterisk/modules/
endef
define Package/asterisk14-sounds/install
$(INSTALL_DIR) $(1)/usr/lib/asterisk/sounds
$(CP) $(PKG_INSTALL_DIR)/usr/lib/asterisk/sounds/* $(1)/usr/lib/asterisk/sounds/
rm -f $(1)/usr/lib/asterisk/sounds/vm-*
rm -f $(1)/usr/lib/asterisk/sounds/x
endef
define Package/asterisk14-voicemail/conffiles
/etc/asterisk/voicemail.conf
endef
define Package/asterisk14-voicemail/install
$(INSTALL_DIR) $(1)/etc/asterisk
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/asterisk/voicemail.conf $(1)/etc/asterisk/
$(INSTALL_DIR) $(1)/usr/lib/asterisk/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/*voicemail.so $(1)/usr/lib/asterisk/modules/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/res_adsi.so $(1)/usr/lib/asterisk/modules/
$(INSTALL_DIR) $(1)/usr/lib/asterisk/sounds
$(CP) $(PKG_INSTALL_DIR)//usr/lib/asterisk/sounds/vm-*.gsm $(1)/usr/lib/asterisk/sounds/
endef
$(eval $(call BuildPackage,asterisk14))
$(eval $(call BuildPackage,asterisk14-mini))
$(eval $(call BuildPackage,asterisk14-chan-alsa))
$(eval $(call BuildPackage,asterisk14-chan-gtalk))
$(eval $(call BuildPackage,asterisk14-chan-h323))
$(eval $(call BuildPackage,asterisk14-chan-mgcp))
$(eval $(call BuildPackage,asterisk14-chan-skinny))
$(eval $(call BuildPackage,asterisk14-codec-ilbc))
$(eval $(call BuildPackage,asterisk14-codec-lpc10))
$(eval $(call BuildPackage,asterisk14-codec-speex))
$(eval $(call BuildPackage,asterisk14-pbx-dundi))
$(eval $(call BuildPackage,asterisk14-res-agi))
$(eval $(call BuildPackage,asterisk14-res-crypto))
$(eval $(call BuildPackage,asterisk14-pgsql))
$(eval $(call BuildPackage,asterisk14-sqlite))
$(eval $(call BuildPackage,asterisk14-voicemail))
$(eval $(call BuildPackage,asterisk14-sounds))

View File

@ -0,0 +1,4 @@
## startup options for /etc/init.d/asterisk
ENABLE_ASTERISK="yes"
OPTIONS=""

View File

@ -0,0 +1,21 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=50
DEST=
DEFAULT=$DEST/etc/default/asterisk
OPTIONS=""
start() {
[ -f $DEFAULT ] && . $DEFAULT
[ -d $DEST/var/run ] || mkdir -p $DEST/var/run
[ -d $DEST/var/log/asterisk ] || mkdir -p $DEST/var/log/asterisk
[ -d $DEST/var/spool/asterisk ] || mkdir -p $DEST/var/spool/asterisk
[ -d /var/spool/asterisk ] || mkdir -p /var/spool/asterisk
[ -h $DEST/usr/lib/asterisk/astdb ] || ln -sf /var/spool/asterisk/astdb $DEST/usr/lib/asterisk/astdb
$DEST/usr/sbin/asterisk $OPTIONS
}
stop() {
[ -f $DEST/var/run/asterisk.pid ] && kill $(cat $DEST/var/run/asterisk.pid) >/dev/null 2>&1
}

View File

@ -0,0 +1,137 @@
;
; Asterisk configuration file
;
; Module Loader configuration file
;
[modules]
autoload=yes
;
; Any modules that need to be loaded before the Asterisk core has been
; initialized (just after the logger has been initialized) can be loaded
; using 'preload'. This will frequently be needed if you wish to map all
; module configuration files into Realtime storage, since the Realtime
; driver will need to be loaded before the modules using those configuration
; files are initialized.
;
; An example of loading ODBC support would be:
;preload => res_odbc.so
;preload => res_config_odbc.so
;
noload => res_config_mysql.so ;
noload => res_crypto.so ; Cryptographic Digital Signatures
; load => res_features.so ; Call Parking Resource
noload => res_indications.so ; Indications Configuration
noload => res_monitor.so ; Call Monitoring Resource
; load => res_musiconhold.so ; Music On Hold Resource
noload => cdr_csv.so ; Comma Separated Values CDR Backend
noload => cdr_custom.so ; Customizable Comma Separated Values CDR Backend
noload => cdr_manager.so ; Asterisk Call Manager CDR Backend
noload => cdr_mysql.so ; MySQL CDR Backend
noload => cdr_pgsql.so ; PostgreSQL CDR Backend
noload => cdr_sqlite.so ; SQLite CDR Backend
noload => chan_alsa.so ; Channel driver for GTalk
noload => chan_agent.so ; Agent Proxy Channel
noload => chan_gtalk.so ; Channel driver for GTalk
; load => chan_iax2.so ; Inter Asterisk eXchange (Ver 2)
; load => chan_local.so ; Local Proxy Channel
; load => chan_sip.so ; Session Initiation Protocol (SIP)
noload => codec_a_mu.so ; A-law and Mulaw direct Coder/Decoder
noload => codec_adpcm.so ; Adaptive Differential PCM Coder/Decoder
noload => codec_alaw.so ; A-law Coder/Decoder
noload => codec_g726.so ; ITU G.726-32kbps G726 Transcoder
; load => codec_gsm.so ; GSM/PCM16 (signed linear) Codec Translation
; load => codec_ulaw.so ; Mu-law Coder/Decoder
noload => codec_speex.so ; Speex/PCM16 (signed linear) Codec Translator
noload => format_au.so ; Sun Microsystems AU format (signed linear)
noload => format_g723.so ; G.723.1 Simple Timestamp File Format
noload => format_g726.so ; Raw G.726 (16/24/32/40kbps) data
noload => format_g729.so ; Raw G729 data
; load => format_gsm.so ; Raw GSM data
noload => format_h263.so ; Raw h263 data
noload => format_jpeg.so ; JPEG (Joint Picture Experts Group) Image
; load => format_pcm.so ; Raw uLaw 8khz Audio support (PCM)
noload => format_pcm_alaw.so ; Raw aLaw 8khz PCM Audio support
noload => format_sln.so ; Raw Signed Linear Audio support (SLN)
noload => format_vox.so ; Dialogic VOX (ADPCM) File Format
; load => format_wav.so ; Microsoft WAV format (8000hz Signed Line
; load => format_wav_gsm.so ; Microsoft WAV format (Proprietary GSM)
noload => app_alarmreceiver.so ; Alarm Receiver Application
noload => app_authenticate.so ; Authentication Application
noload => app_cdr.so ; Make sure asterisk doesn't save CDR
noload => app_chanisavail.so ; Check if channel is available
noload => app_chanspy.so ; Listen in on any channel
noload => app_controlplayback.so ; Control Playback Application
noload => app_cut.so ; Cuts up variables
noload => app_db.so ; Database access functions
; load => app_dial.so ; Dialing Application
noload => app_dictate.so ; Virtual Dictation Machine Application
noload => app_directory.so ; Extension Directory
noload => app_directed_pickup.so ; Directed Call Pickup Support
noload => app_disa.so ; DISA (Direct Inward System Access) Application
noload => app_dumpchan.so ; Dump channel variables Application
; load => app_echo.so ; Simple Echo Application
noload => app_enumlookup.so ; ENUM Lookup
noload => app_eval.so ; Reevaluates strings
noload => app_exec.so ; Executes applications
noload => app_externalivr.so ; External IVR application interface
noload => app_forkcdr.so ; Fork The CDR into 2 seperate entities
noload => app_getcpeid.so ; Get ADSI CPE ID
noload => app_groupcount.so ; Group Management Routines
noload => app_ices.so ; Encode and Stream via icecast and ices
noload => app_image.so ; Image Transmission Application
noload => app_lookupblacklist.so ; Look up Caller*ID name/number from black
noload => app_lookupcidname.so ; Look up CallerID Name from local databas
; load => app_macro.so ; Extension Macros
noload => app_math.so ; A simple math Application
noload => app_md5.so ; MD5 checksum Application
; load => app_milliwatt.so ; Digital Milliwatt (mu-law) Test Application
noload => app_mixmonitor.so ; Record a call and mix the audio during the recording
noload => app_parkandannounce.so ; Call Parking and Announce Application
; load => app_playback.so ; Trivial Playback Application
noload => app_privacy.so ; Require phone number to be entered
noload => app_queue.so ; True Call Queueing
noload => app_random.so ; Random goto
noload => app_read.so ; Read Variable Application
noload => app_readfile.so ; Read in a file
noload => app_realtime.so ; Realtime Data Lookup/Rewrite
noload => app_record.so ; Trivial Record Application
; load => app_sayunixtime.so ; Say time
noload => app_senddtmf.so ; Send DTMF digits Application
noload => app_sendtext.so ; Send Text Applications
noload => app_setcallerid.so ; Set CallerID Application
noload => app_setcdruserfield.so ; CDR user field apps
noload => app_setcidname.so ; Set CallerID Name
noload => app_setcidnum.so ; Set CallerID Number
noload => app_setrdnis.so ; Set RDNIS Number
noload => app_settransfercapability.so ; Set ISDN Transfer Capability
noload => app_sms.so ; SMS/PSTN handler
noload => app_softhangup.so ; Hangs up the requested channel
noload => app_stack.so ; Stack Routines
noload => app_system.so ; Generic System() application
noload => app_talkdetect.so ; Playback with Talk Detection
noload => app_test.so ; Interface Test Application
noload => app_transfer.so ; Transfer
noload => app_txtcidname.so ; TXTCIDName
noload => app_url.so ; Send URL Applications
noload => app_userevent.so ; Custom User Event Application
; load => app_verbose.so ; Send verbose output
noload => app_waitforring.so ; Waits until first ring after time
noload => app_waitforsilence.so ; Wait For Silence Application
noload => app_while.so ; While Loops and Conditional Execution
noload => func_callerid.so ; Caller ID related dialplan functions
noload => func_enum.so ; ENUM Functions
noload => func_uri.so ; URI encoding / decoding functions
noload => pbx_ael.so ; Asterisk Extension Language Compiler
; load => pbx_config.so ; Text Extension Configuration
noload => pbx_functions.so ; Builtin dialplan functions
noload => pbx_loopback.so ; Loopback Switch
noload => pbx_realtime.so ; Realtime Switch
noload => pbx_spool.so ; Outgoing Spool Support
noload => pbx_wilcalu.so ; Wil Cal U (Auto Dialer)
;
; Module names listed in "global" section will have symbols globally
; exported to modules loaded after them.
;
[global]
chan_modem.so=no

View File

@ -0,0 +1,12 @@
diff -Nru asterisk-1.4.5.org/main/Makefile asterisk-1.4.5/main/Makefile
--- asterisk-1.4.5.org/main/Makefile 2007-04-10 18:05:55.000000000 +0200
+++ asterisk-1.4.5/main/Makefile 2007-06-22 08:59:22.000000000 +0200
@@ -135,7 +135,7 @@
@rm -f $(ASTTOPDIR)/include/asterisk/build.h.tmp
@$(CC) -c -o buildinfo.o $(ASTCFLAGS) buildinfo.c
$(ECHO_PREFIX) echo " [LD] $^ -> $@"
- $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(ASTLDFLAGS) $(H323LDFLAGS) $^ buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(H323LDLIBS)
+ $(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(ASTLDFLAGS) $(H323LDFLAGS) $^ buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(H323LDLIBS)
@$(ASTTOPDIR)/build_tools/strip_nonapi $@
clean::

View File

@ -0,0 +1,12 @@
diff -Nru asterisk-1.4.5.org/channels/chan_iax2.c asterisk-1.4.5/channels/chan_iax2.c
--- asterisk-1.4.5.org/channels/chan_iax2.c 2007-06-14 23:50:40.000000000 +0200
+++ asterisk-1.4.5/channels/chan_iax2.c 2007-06-22 09:03:01.000000000 +0200
@@ -1376,7 +1376,7 @@
last++;
else
last = s;
- snprintf(s2, strlen(s) + 100, "/var/tmp/%s-%ld", last, (unsigned long)ast_random());
+ snprintf(s2, strlen(s) + 100, "/tmp/%s-%ld", last, (unsigned long)ast_random());
res = stat(s, &stbuf);
if (res < 0) {
ast_log(LOG_WARNING, "Failed to stat '%s': %s\n", s, strerror(errno));

View File

@ -0,0 +1,11 @@
--- asterisk-1.4.5.org/configure.ac 2007-06-04 18:02:31.000000000 +0200
+++ asterisk-1.4.5/configure.ac 2007-06-22 08:47:51.000000000 +0200
@@ -900,7 +900,7 @@
AST_EXT_LIB_CHECK([SQLITE], [sqlite], [sqlite_exec], [sqlite.h])
-AST_EXT_LIB_CHECK([OPENSSL], [ssl], [ssl2_connect], [openssl/ssl.h], [-lcrypto])
+AST_EXT_LIB_CHECK([OPENSSL], [ssl], [ssl23_connect], [openssl/ssl.h], [-lcrypto])
if test "$PBX_OPENSSL" = "1";
then
AST_EXT_LIB_CHECK([OSPTK], [osptk], [OSPPCryptoDecrypt], [osp/osp.h], [-lcrypto -lssl])

View File

@ -0,0 +1,875 @@
diff -Nru asterisk-1.4.5.org/apps/app_rxfax.c asterisk-1.4.5/apps/app_rxfax.c
--- asterisk-1.4.5.org/apps/app_rxfax.c 1970-01-01 01:00:00.000000000 +0100
+++ asterisk-1.4.5/apps/app_rxfax.c 2007-06-22 09:05:59.000000000 +0200
@@ -0,0 +1,376 @@
+/*
+ * Asterisk -- A telephony toolkit for Linux.
+ *
+ * Trivial application to receive a TIFF FAX file
+ *
+ * Copyright (C) 2003, Steve Underwood
+ *
+ * Steve Underwood <steveu@coppice.org>
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License
+ */
+
+/*** MODULEINFO
+ <depend>spandsp</depend>
+***/
+
+#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision:$")
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <inttypes.h>
+#include <pthread.h>
+#include <errno.h>
+#include <tiffio.h>
+
+#include <spandsp.h>
+
+#include "asterisk/lock.h"
+#include "asterisk/file.h"
+#include "asterisk/logger.h"
+#include "asterisk/channel.h"
+#include "asterisk/pbx.h"
+#include "asterisk/module.h"
+#include "asterisk/translate.h"
+#include "asterisk/dsp.h"
+#include "asterisk/manager.h"
+
+static char *app = "RxFAX";
+
+static char *synopsis = "Receive a FAX to a file";
+
+static char *descrip =
+" RxFAX(filename[|caller][|debug]): Receives a FAX from the channel into the\n"
+"given filename. If the file exists it will be overwritten. The file\n"
+"should be in TIFF/F format.\n"
+"The \"caller\" option makes the application behave as a calling machine,\n"
+"rather than the answering machine. The default behaviour is to behave as\n"
+"an answering machine.\n"
+"Uses LOCALSTATIONID to identify itself to the remote end.\n"
+" LOCALHEADERINFO to generate a header line on each page.\n"
+"Sets REMOTESTATIONID to the sender CSID.\n"
+" FAXPAGES to the number of pages received.\n"
+" FAXBITRATE to the transmition rate.\n"
+" FAXRESOLUTION to the resolution.\n"
+"Returns -1 when the user hangs up.\n"
+"Returns 0 otherwise.\n";
+
+#define MAX_BLOCK_SIZE 240
+
+static void span_message(int level, const char *msg)
+{
+ int ast_level;
+
+ if (level == SPAN_LOG_WARNING)
+ ast_level = __LOG_WARNING;
+ else if (level == SPAN_LOG_WARNING)
+ ast_level = __LOG_WARNING;
+ else
+ ast_level = __LOG_DEBUG;
+ ast_log(ast_level, __FILE__, __LINE__, __PRETTY_FUNCTION__, msg);
+}
+/*- End of function --------------------------------------------------------*/
+
+static void t30_flush(t30_state_t *s, int which)
+{
+ /* TODO: */
+}
+/*- End of function --------------------------------------------------------*/
+
+static void phase_e_handler(t30_state_t *s, void *user_data, int result)
+{
+ struct ast_channel *chan;
+ t30_stats_t t;
+ char local_ident[21];
+ char far_ident[21];
+ char buf[11];
+
+ chan = (struct ast_channel *) user_data;
+ if (result == T30_ERR_OK)
+ {
+ t30_get_transfer_statistics(s, &t);
+ t30_get_far_ident(s, far_ident);
+ t30_get_local_ident(s, local_ident);
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ ast_log(LOG_DEBUG, "Fax successfully received.\n");
+ ast_log(LOG_DEBUG, "Remote station id: %s\n", far_ident);
+ ast_log(LOG_DEBUG, "Local station id: %s\n", local_ident);
+ ast_log(LOG_DEBUG, "Pages transferred: %i\n", t.pages_transferred);
+ ast_log(LOG_DEBUG, "Image resolution: %i x %i\n", t.x_resolution, t.y_resolution);
+ ast_log(LOG_DEBUG, "Transfer Rate: %i\n", t.bit_rate);
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ manager_event(EVENT_FLAG_CALL,
+ "FaxReceived", "Channel: %s\nExten: %s\nCallerID: %s\nRemoteStationID: %s\nLocalStationID: %s\nPagesTransferred: %i\nResolution: %i\nTransferRate: %i\nFileName: %s\n",
+ chan->name,
+ chan->exten,
+ (chan->cid.cid_num) ? chan->cid.cid_num : "",
+ far_ident,
+ local_ident,
+ t.pages_transferred,
+ t.y_resolution,
+ t.bit_rate,
+ s->rx_file);
+ pbx_builtin_setvar_helper(chan, "REMOTESTATIONID", far_ident);
+ snprintf(buf, sizeof(buf), "%i", t.pages_transferred);
+ pbx_builtin_setvar_helper(chan, "FAXPAGES", buf);
+ snprintf(buf, sizeof(buf), "%i", t.y_resolution);
+ pbx_builtin_setvar_helper(chan, "FAXRESOLUTION", buf);
+ snprintf(buf, sizeof(buf), "%i", t.bit_rate);
+ pbx_builtin_setvar_helper(chan, "FAXBITRATE", buf);
+ }
+ else
+ {
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ ast_log(LOG_DEBUG, "Fax receive not successful - result (%d) %s.\n", result, t30_completion_code_to_str(result));
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ }
+}
+/*- End of function --------------------------------------------------------*/
+
+static void phase_d_handler(t30_state_t *s, void *user_data, int result)
+{
+ struct ast_channel *chan;
+ t30_stats_t t;
+
+ chan = (struct ast_channel *) user_data;
+ if (result)
+ {
+ t30_get_transfer_statistics(s, &t);
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ ast_log(LOG_DEBUG, "Pages transferred: %i\n", t.pages_transferred);
+ ast_log(LOG_DEBUG, "Image size: %i x %i\n", t.width, t.length);
+ ast_log(LOG_DEBUG, "Image resolution %i x %i\n", t.x_resolution, t.y_resolution);
+ ast_log(LOG_DEBUG, "Transfer Rate: %i\n", t.bit_rate);
+ ast_log(LOG_DEBUG, "Bad rows %i\n", t.bad_rows);
+ ast_log(LOG_DEBUG, "Longest bad row run %i\n", t.longest_bad_row_run);
+ ast_log(LOG_DEBUG, "Compression type %i\n", t.encoding);
+ ast_log(LOG_DEBUG, "Image size (bytes) %i\n", t.image_size);
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ }
+}
+/*- End of function --------------------------------------------------------*/
+
+static int rxfax_exec(struct ast_channel *chan, void *data)
+{
+ int res = 0;
+ char template_file[256];
+ char target_file[256];
+ char *s;
+ char *t;
+ char *v;
+ const char *x;
+ int option;
+ int len;
+ int i;
+ fax_state_t fax;
+ int calling_party;
+ int verbose;
+ int samples;
+
+ struct ast_module_user *u;
+ struct ast_frame *inf = NULL;
+ struct ast_frame outf;
+
+ int original_read_fmt;
+ int original_write_fmt;
+
+ uint8_t __buf[sizeof(uint16_t)*MAX_BLOCK_SIZE + 2*AST_FRIENDLY_OFFSET];
+ uint8_t *buf = __buf + AST_FRIENDLY_OFFSET;
+
+ if (chan == NULL)
+ {
+ ast_log(LOG_WARNING, "Fax receive channel is NULL. Giving up.\n");
+ return -1;
+ }
+
+ span_set_message_handler(span_message);
+
+ /* The next few lines of code parse out the filename and header from the input string */
+ if (data == NULL)
+ {
+ /* No data implies no filename or anything is present */
+ ast_log(LOG_WARNING, "Rxfax requires an argument (filename)\n");
+ return -1;
+ }
+
+ calling_party = FALSE;
+ verbose = FALSE;
+ target_file[0] = '\0';
+
+ for (option = 0, v = s = data; v; option++, s++)
+ {
+ t = s;
+ v = strchr(s, '|');
+ s = (v) ? v : s + strlen(s);
+ strncpy((char *) buf, t, s - t);
+ buf[s - t] = '\0';
+ if (option == 0)
+ {
+ /* The first option is always the file name */
+ len = s - t;
+ if (len > 255)
+ len = 255;
+ strncpy(target_file, t, len);
+ target_file[len] = '\0';
+ /* Allow the use of %d in the file name for a wild card of sorts, to
+ create a new file with the specified name scheme */
+ if ((x = strchr(target_file, '%')) && x[1] == 'd')
+ {
+ strcpy(template_file, target_file);
+ i = 0;
+ do
+ {
+ snprintf(target_file, 256, template_file, 1);
+ i++;
+ }
+ while (ast_fileexists(target_file, "", chan->language) != -1);
+ }
+ }
+ else if (strncmp("caller", t, s - t) == 0)
+ {
+ calling_party = TRUE;
+ }
+ else if (strncmp("debug", t, s - t) == 0)
+ {
+ verbose = TRUE;
+ }
+ }
+
+ /* Done parsing */
+
+ u = ast_module_user_add(chan);
+
+ if (chan->_state != AST_STATE_UP)
+ {
+ /* Shouldn't need this, but checking to see if channel is already answered
+ * Theoretically asterisk should already have answered before running the app */
+ res = ast_answer(chan);
+ }
+
+ if (!res)
+ {
+ original_read_fmt = chan->readformat;
+ if (original_read_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
+ if (res < 0)
+ {
+ ast_log(LOG_WARNING, "Unable to set to linear read mode, giving up\n");
+ return -1;
+ }
+ }
+ original_write_fmt = chan->writeformat;
+ if (original_write_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_write_format(chan, AST_FORMAT_SLINEAR);
+ if (res < 0)
+ {
+ ast_log(LOG_WARNING, "Unable to set to linear write mode, giving up\n");
+ res = ast_set_read_format(chan, original_read_fmt);
+ if (res)
+ ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
+ return -1;
+ }
+ }
+ fax_init(&fax, calling_party);
+ if (verbose)
+ fax.logging.level = SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW;
+ x = pbx_builtin_getvar_helper(chan, "LOCALSTATIONID");
+ if (x && x[0])
+ t30_set_local_ident(&fax.t30_state, x);
+ x = pbx_builtin_getvar_helper(chan, "LOCALHEADERINFO");
+ if (x && x[0])
+ t30_set_header_info(&fax.t30_state, x);
+ t30_set_rx_file(&fax.t30_state, target_file, -1);
+ //t30_set_phase_b_handler(&fax.t30_state, phase_b_handler, chan);
+ t30_set_phase_d_handler(&fax.t30_state, phase_d_handler, chan);
+ t30_set_phase_e_handler(&fax.t30_state, phase_e_handler, chan);
+ t30_set_ecm_capability(&fax.t30_state, TRUE);
+ t30_set_supported_compressions(&fax.t30_state, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION);
+ while (ast_waitfor(chan, -1) > -1)
+ {
+ inf = ast_read(chan);
+ if (inf == NULL)
+ {
+ res = -1;
+ break;
+ }
+ if (inf->frametype == AST_FRAME_VOICE)
+ {
+ if (fax_rx(&fax, inf->data, inf->samples))
+ break;
+ samples = (inf->samples <= MAX_BLOCK_SIZE) ? inf->samples : MAX_BLOCK_SIZE;
+ len = fax_tx(&fax, (int16_t *) &buf[AST_FRIENDLY_OFFSET], samples);
+ if (len)
+ {
+ memset(&outf, 0, sizeof(outf));
+ outf.frametype = AST_FRAME_VOICE;
+ outf.subclass = AST_FORMAT_SLINEAR;
+ outf.datalen = len*sizeof(int16_t);
+ outf.samples = len;
+ outf.data = &buf[AST_FRIENDLY_OFFSET];
+ outf.offset = AST_FRIENDLY_OFFSET;
+ outf.src = "RxFAX";
+ if (ast_write(chan, &outf) < 0)
+ {
+ ast_log(LOG_WARNING, "Unable to write frame to channel; %s\n", strerror(errno));
+ break;
+ }
+ }
+ }
+ ast_frfree(inf);
+ }
+ if (inf == NULL)
+ {
+ ast_log(LOG_DEBUG, "Got hangup\n");
+ res = -1;
+ }
+ if (original_read_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_read_format(chan, original_read_fmt);
+ if (res)
+ ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
+ }
+ if (original_write_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_write_format(chan, original_write_fmt);
+ if (res)
+ ast_log(LOG_WARNING, "Unable to restore write format on '%s'\n", chan->name);
+ }
+ t30_terminate(&fax.t30_state);
+ }
+ else
+ {
+ ast_log(LOG_WARNING, "Could not answer channel '%s'\n", chan->name);
+ }
+ ast_module_user_remove(u);
+ return res;
+}
+/*- End of function --------------------------------------------------------*/
+
+static int unload_module(void)
+{
+ int res;
+
+ ast_module_user_hangup_all();
+
+ res = ast_unregister_application(app);
+
+
+ return res;
+}
+/*- End of function --------------------------------------------------------*/
+
+static int load_module(void)
+{
+ return ast_register_application(app, rxfax_exec, synopsis, descrip);
+}
+/*- End of function --------------------------------------------------------*/
+
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Trivial FAX Receive Application");
+
+/*- End of file ------------------------------------------------------------*/
diff -Nru asterisk-1.4.5.org/apps/app_txfax.c asterisk-1.4.5/apps/app_txfax.c
--- asterisk-1.4.5.org/apps/app_txfax.c 1970-01-01 01:00:00.000000000 +0100
+++ asterisk-1.4.5/apps/app_txfax.c 2007-06-22 09:05:59.000000000 +0200
@@ -0,0 +1,303 @@
+/*
+ * Asterisk -- A telephony toolkit for Linux.
+ *
+ * Trivial application to send a TIFF file as a FAX
+ *
+ * Copyright (C) 2003, Steve Underwood
+ *
+ * Steve Underwood <steveu@coppice.org>
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License
+ */
+
+/*** MODULEINFO
+ <depend>spandsp</depend>
+***/
+
+#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision:$")
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <inttypes.h>
+#include <pthread.h>
+#include <errno.h>
+#include <tiffio.h>
+
+#include <spandsp.h>
+
+#include "asterisk/lock.h"
+#include "asterisk/file.h"
+#include "asterisk/logger.h"
+#include "asterisk/channel.h"
+#include "asterisk/pbx.h"
+#include "asterisk/module.h"
+#include "asterisk/translate.h"
+
+static char *app = "TxFAX";
+
+static char *synopsis = "Send a FAX file";
+
+static char *descrip =
+" TxFAX(filename[|caller][|debug]): Send a given TIFF file to the channel as a FAX.\n"
+"The \"caller\" option makes the application behave as a calling machine,\n"
+"rather than the answering machine. The default behaviour is to behave as\n"
+"an answering machine.\n"
+"Uses LOCALSTATIONID to identify itself to the remote end.\n"
+" LOCALHEADERINFO to generate a header line on each page.\n"
+"Sets REMOTESTATIONID to the receiver CSID.\n"
+"Returns -1 when the user hangs up, or if the file does not exist.\n"
+"Returns 0 otherwise.\n";
+
+#define MAX_BLOCK_SIZE 240
+
+static void span_message(int level, const char *msg)
+{
+ int ast_level;
+
+ if (level == SPAN_LOG_WARNING)
+ ast_level = __LOG_WARNING;
+ else if (level == SPAN_LOG_WARNING)
+ ast_level = __LOG_WARNING;
+ else
+ ast_level = __LOG_DEBUG;
+ ast_log(ast_level, __FILE__, __LINE__, __PRETTY_FUNCTION__, msg);
+}
+/*- End of function --------------------------------------------------------*/
+
+#if 0
+static void t30_flush(t30_state_t *s, int which)
+{
+ /* TODO: */
+}
+/*- End of function --------------------------------------------------------*/
+#endif
+
+static void phase_e_handler(t30_state_t *s, void *user_data, int result)
+{
+ struct ast_channel *chan;
+ char far_ident[21];
+
+ chan = (struct ast_channel *) user_data;
+ if (result == T30_ERR_OK)
+ {
+ t30_get_far_ident(s, far_ident);
+ pbx_builtin_setvar_helper(chan, "REMOTESTATIONID", far_ident);
+ }
+ else
+ {
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ ast_log(LOG_DEBUG, "Fax send not successful - result (%d) %s.\n", result, t30_completion_code_to_str(result));
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ }
+}
+/*- End of function --------------------------------------------------------*/
+
+static int txfax_exec(struct ast_channel *chan, void *data)
+{
+ int res = 0;
+ char source_file[256];
+ char *s;
+ char *t;
+ char *v;
+ const char *x;
+ int option;
+ int len;
+ fax_state_t fax;
+ int calling_party;
+ int verbose;
+ int samples;
+
+ struct ast_module_user *u;
+ struct ast_frame *inf = NULL;
+ struct ast_frame outf;
+
+ int original_read_fmt;
+ int original_write_fmt;
+
+ uint8_t __buf[sizeof(uint16_t)*MAX_BLOCK_SIZE + 2*AST_FRIENDLY_OFFSET];
+ uint8_t *buf = __buf + AST_FRIENDLY_OFFSET;
+
+ if (chan == NULL)
+ {
+ ast_log(LOG_WARNING, "Fax transmit channel is NULL. Giving up.\n");
+ return -1;
+ }
+
+ span_set_message_handler(span_message);
+
+ /* The next few lines of code parse out the filename and header from the input string */
+ if (data == NULL)
+ {
+ /* No data implies no filename or anything is present */
+ ast_log(LOG_WARNING, "Txfax requires an argument (filename)\n");
+ return -1;
+ }
+
+ calling_party = FALSE;
+ verbose = FALSE;
+ source_file[0] = '\0';
+
+ for (option = 0, v = s = data; v; option++, s++)
+ {
+ t = s;
+ v = strchr(s, '|');
+ s = (v) ? v : s + strlen(s);
+ strncpy((char *) buf, t, s - t);
+ buf[s - t] = '\0';
+ if (option == 0)
+ {
+ /* The first option is always the file name */
+ len = s - t;
+ if (len > 255)
+ len = 255;
+ strncpy(source_file, t, len);
+ source_file[len] = '\0';
+ }
+ else if (strncmp("caller", t, s - t) == 0)
+ {
+ calling_party = TRUE;
+ }
+ else if (strncmp("debug", t, s - t) == 0)
+ {
+ verbose = TRUE;
+ }
+ }
+
+ /* Done parsing */
+
+ u = ast_module_user_add(chan);
+
+ if (chan->_state != AST_STATE_UP)
+ {
+ /* Shouldn't need this, but checking to see if channel is already answered
+ * Theoretically asterisk should already have answered before running the app */
+ res = ast_answer(chan);
+ }
+
+ if (!res)
+ {
+ original_read_fmt = chan->readformat;
+ if (original_read_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
+ if (res < 0)
+ {
+ ast_log(LOG_WARNING, "Unable to set to linear read mode, giving up\n");
+ return -1;
+ }
+ }
+ original_write_fmt = chan->writeformat;
+ if (original_write_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_write_format(chan, AST_FORMAT_SLINEAR);
+ if (res < 0)
+ {
+ ast_log(LOG_WARNING, "Unable to set to linear write mode, giving up\n");
+ res = ast_set_read_format(chan, original_read_fmt);
+ if (res)
+ ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
+ return -1;
+ }
+ }
+ fax_init(&fax, calling_party);
+ if (verbose)
+ fax.logging.level = SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW;
+
+ x = pbx_builtin_getvar_helper(chan, "LOCALSTATIONID");
+ if (x && x[0])
+ t30_set_local_ident(&fax.t30_state, x);
+ x = pbx_builtin_getvar_helper(chan, "LOCALHEADERINFO");
+ if (x && x[0])
+ t30_set_header_info(&fax.t30_state, x);
+ t30_set_tx_file(&fax.t30_state, source_file, -1, -1);
+ //t30_set_phase_b_handler(&fax.t30_state, phase_b_handler, chan);
+ //t30_set_phase_d_handler(&fax.t30_state, phase_d_handler, chan);
+ t30_set_phase_e_handler(&fax.t30_state, phase_e_handler, chan);
+ t30_set_ecm_capability(&fax.t30_state, TRUE);
+ t30_set_supported_compressions(&fax.t30_state, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION);
+ while (ast_waitfor(chan, -1) > -1)
+ {
+ inf = ast_read(chan);
+ if (inf == NULL)
+ {
+ res = -1;
+ break;
+ }
+ if (inf->frametype == AST_FRAME_VOICE)
+ {
+ if (fax_rx(&fax, inf->data, inf->samples))
+ break;
+ samples = (inf->samples <= MAX_BLOCK_SIZE) ? inf->samples : MAX_BLOCK_SIZE;
+ len = fax_tx(&fax, (int16_t *) &buf[AST_FRIENDLY_OFFSET], samples);
+ if (len)
+ {
+ memset(&outf, 0, sizeof(outf));
+ outf.frametype = AST_FRAME_VOICE;
+ outf.subclass = AST_FORMAT_SLINEAR;
+ outf.datalen = len*sizeof(int16_t);
+ outf.samples = len;
+ outf.data = &buf[AST_FRIENDLY_OFFSET];
+ outf.offset = AST_FRIENDLY_OFFSET;
+ if (ast_write(chan, &outf) < 0)
+ {
+ ast_log(LOG_WARNING, "Unable to write frame to channel; %s\n", strerror(errno));
+ break;
+ }
+ }
+ }
+ ast_frfree(inf);
+ }
+ if (inf == NULL)
+ {
+ ast_log(LOG_DEBUG, "Got hangup\n");
+ res = -1;
+ }
+ if (original_read_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_read_format(chan, original_read_fmt);
+ if (res)
+ ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
+ }
+ if (original_write_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_write_format(chan, original_write_fmt);
+ if (res)
+ ast_log(LOG_WARNING, "Unable to restore write format on '%s'\n", chan->name);
+ }
+ t30_terminate(&fax.t30_state);
+ }
+ else
+ {
+ ast_log(LOG_WARNING, "Could not answer channel '%s'\n", chan->name);
+ }
+ ast_module_user_remove(u);
+ return res;
+}
+/*- End of function --------------------------------------------------------*/
+
+static int unload_module(void)
+{
+ int res;
+
+ ast_module_user_hangup_all();
+
+ res = ast_unregister_application(app);
+
+
+ return res;
+}
+/*- End of function --------------------------------------------------------*/
+
+static int load_module(void)
+{
+ return ast_register_application(app, txfax_exec, synopsis, descrip);
+}
+/*- End of function --------------------------------------------------------*/
+
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Trivial FAX Transmit Application");
+
+/*- End of file ------------------------------------------------------------*/
diff -Nru asterisk-1.4.5.org/build_tools/menuselect-deps.in asterisk-1.4.5/build_tools/menuselect-deps.in
--- asterisk-1.4.5.org/build_tools/menuselect-deps.in 2007-03-16 00:53:26.000000000 +0100
+++ asterisk-1.4.5/build_tools/menuselect-deps.in 2007-06-22 09:05:59.000000000 +0200
@@ -21,6 +21,7 @@
PRI=@PBX_PRI@
QT=@PBX_QT@
RADIUS=@PBX_RADIUS@
+SPANDSP=@PBX_SPANDSP@
SPEEX=@PBX_SPEEX@
SQLITE=@PBX_SQLITE@
SSL=@PBX_OPENSSL@
diff -Nru asterisk-1.4.5.org/configure.ac asterisk-1.4.5/configure.ac
--- asterisk-1.4.5.org/configure.ac 2007-06-04 18:02:31.000000000 +0200
+++ asterisk-1.4.5/configure.ac 2007-06-22 09:05:59.000000000 +0200
@@ -195,6 +195,7 @@
AST_EXT_LIB_SETUP([OPENH323], [OpenH323], [h323])
AST_EXT_LIB_SETUP([QT], [Qt], [qt])
AST_EXT_LIB_SETUP([RADIUS], [Radius Client], [radius])
+AST_EXT_LIB_SETUP([SPANDSP], [spandsp Library], [spandsp])
AST_EXT_LIB_SETUP([SPEEX], [Speex], [speex])
AST_EXT_LIB_SETUP([SQLITE], [SQLite], [sqlite])
AST_EXT_LIB_SETUP([SUPPSERV], [mISDN Supplemental Services], [suppserv])
@@ -896,6 +897,8 @@
AST_EXT_LIB_CHECK([RADIUS], [radiusclient-ng], [rc_read_config], [radiusclient-ng.h])
+AST_EXT_LIB_CHECK([SPANDSP], [spandsp], [fax_init], [spandsp.h], [-ltiff -ljpeg -lz])
+
AST_EXT_LIB_CHECK([SPEEX], [speex], [speex_encode], [speex/speex.h], [-lm])
AST_EXT_LIB_CHECK([SQLITE], [sqlite], [sqlite_exec], [sqlite.h])
diff -Nru asterisk-1.4.5.org/include/asterisk/plc.h asterisk-1.4.5/include/asterisk/plc.h
--- asterisk-1.4.5.org/include/asterisk/plc.h 2006-06-14 16:12:56.000000000 +0200
+++ asterisk-1.4.5/include/asterisk/plc.h 2007-06-22 09:07:42.000000000 +0200
@@ -1,18 +1,17 @@
-/*! \file
- * \brief SpanDSP - a series of DSP components for telephony
+/*
+ * SpanDSP - a series of DSP components for telephony
*
* plc.h
*
- * \author Steve Underwood <steveu@coppice.org>
+ * Written by Steve Underwood <steveu@coppice.org>
*
* Copyright (C) 2004 Steve Underwood
*
* All rights reserved.
*
* 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.
+ * it under the terms of the GNU General Public License version 2, as
+ * published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -23,37 +22,36 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * This version may be optionally licenced under the GNU LGPL licence.
- *
- * A license has been granted to Digium (via disclaimer) for the use of
- * this code.
+ * $Id: plc.h,v 1.15 2007/04/08 08:16:18 steveu Exp $
*/
+/*! \file */
-#if !defined(_PLC_H_)
-#define _PLC_H_
-
-#ifdef SOLARIS
-#include <sys/int_types.h>
-#else
-#if defined(__OpenBSD__) || defined( __FreeBSD__)
-#include <inttypes.h>
-#else
-#include <stdint.h>
-#endif
-#endif
+#if !defined(_SPANDSP_PLC_H_)
+#define _SPANDSP_PLC_H_
/*! \page plc_page Packet loss concealment
\section plc_page_sec_1 What does it do?
-The packet loss concealment module provides a suitable synthetic fill-in signal,
-to minimise the audible effect of lost packets in VoIP applications. It is not
-tied to any particular codec, and could be used with almost any codec which does not
+The packet loss concealment module provides a synthetic fill-in signal, to minimise
+the audible effect of lost packets in VoIP applications. It is not tied to any
+particular codec, and could be used with almost any codec which does not
specify its own procedure for packet loss concealment.
-Where a codec specific concealment procedure exists, the algorithm is usually built
+Where a codec specific concealment procedure exists, that algorithm is usually built
around knowledge of the characteristics of the particular codec. It will, therefore,
generally give better results for that particular codec than this generic concealer will.
+The PLC code implements an algorithm similar to the one described in Appendix 1 of G.711.
+However, the G.711 algorithm is optimised for 10ms packets. Few people use such small
+packets. 20ms is a much more common value, and longer packets are also quite common. The
+algorithm has been adjusted with this in mind. Also, the G.711 approach causes an
+algorithmic delay, and requires significant buffer manipulation when there is no packet
+loss. The algorithm used here avoids this. It causes no delay, and achieves comparable
+quality with normal speech.
+
+Note that both this algorithm, and the one in G.711 are optimised for speech. For most kinds
+of music a much slower decay on bursts of lost packets give better results.
+
\section plc_page_sec_2 How does it work?
While good packets are being received, the plc_rx() routine keeps a record of the trailing
section of the known speech signal. If a packet is missed, plc_fillin() is called to produce
@@ -83,7 +81,7 @@
correct steadily fall. Therefore, the volume of the synthesized signal is made to decay
linearly, such that after 50ms of missing audio it is reduced to silence.
-- When real speech resumes, an extra 1/4 pitch period of sythetic speech is blended with the
+- When real speech resumes, an extra 1/4 pitch period of synthetic speech is blended with the
start of the real speech. If the erasure is small, this smoothes the transition. If the erasure
is long, and the synthetic signal has faded to zero, the blending softens the start up of the
real signal, avoiding a kind of "click" or "pop" effect that might occur with a sudden onset.
@@ -110,6 +108,9 @@
the pitch assessment. */
#define PLC_HISTORY_LEN (CORRELATION_SPAN + PLC_PITCH_MIN)
+/*!
+ The generic packet loss concealer context.
+*/
typedef struct
{
/*! Consecutive erased samples */
@@ -127,12 +128,13 @@
} plc_state_t;
-#ifdef __cplusplus
-extern "C" {
+#if defined(__cplusplus)
+extern "C"
+{
#endif
-/*! Process a block of received audio samples.
- \brief Process a block of received audio samples.
+/*! Process a block of received audio samples for PLC.
+ \brief Process a block of received audio samples for PLC.
\param s The packet loss concealer context.
\param amp The audio sample buffer.
\param len The number of samples in the buffer.
@@ -147,13 +149,18 @@
\return The number of samples synthesized. */
int plc_fillin(plc_state_t *s, int16_t amp[], int len);
-/*! Process a block of received V.29 modem audio samples.
- \brief Process a block of received V.29 modem audio samples.
+/*! Initialise a packet loss concealer context.
+ \brief Initialise a PLC context.
\param s The packet loss concealer context.
- \return A pointer to the he packet loss concealer context. */
+ \return A pointer to the the packet loss concealer context. */
plc_state_t *plc_init(plc_state_t *s);
-#ifdef __cplusplus
+/*! Free a packet loss concealer context.
+ \param s The packet loss concealer context.
+ \return 0 for OK. */
+int plc_release(plc_state_t *s);
+
+#if defined(__cplusplus)
}
#endif
diff -Nru asterisk-1.4.5.org/makeopts.in asterisk-1.4.5/makeopts.in
--- asterisk-1.4.5.org/makeopts.in 2007-05-25 16:28:46.000000000 +0200
+++ asterisk-1.4.5/makeopts.in 2007-06-22 09:05:59.000000000 +0200
@@ -138,6 +138,9 @@
RADIUS_INCLUDE=@RADIUS_INCLUDE@
RADIUS_LIB=@RADIUS_LIB@
+SPANDSP_INCLUDE=@SPANDSP_INCLUDE@
+SPANDSP_LIB=@SPANDSP_LIB@
+
SPEEX_INCLUDE=@SPEEX_INCLUDE@
SPEEX_LIB=@SPEEX_LIB@

View File

@ -0,0 +1,12 @@
diff -Nru asterisk-1.4.5.org/configure.ac asterisk-1.4.5/configure.ac
--- asterisk-1.4.5.org/configure.ac 2007-06-04 18:02:31.000000000 +0200
+++ asterisk-1.4.5/configure.ac 2007-06-22 09:09:03.000000000 +0200
@@ -419,7 +419,7 @@
fi
fi
-AST_EXT_LIB_CHECK([IKSEMEL], [iksemel], [iks_start_sasl], [iksemel.h])
+AST_EXT_LIB_CHECK([IKSEMEL], [iksemel], [iks_start_sasl], [iksemel.h], [-lgnutls -lgcrypt -lgpg-error])
if test "${PBX_IKSEMEL}" = 1; then
AST_EXT_LIB_CHECK([GNUTLS], [gnutls], [gnutls_bye], [gnutls/gnutls.h], [-lz -lgcrypt -lgpg-error])

View File

@ -0,0 +1,12 @@
diff -Nru asterisk-1.4.5.org/Makefile asterisk-1.4.5/Makefile
--- asterisk-1.4.5.org/Makefile 2007-05-24 21:05:08.000000000 +0200
+++ asterisk-1.4.5/Makefile 2007-06-22 09:10:18.000000000 +0200
@@ -200,7 +200,7 @@
endif
ifneq ($(PROC),ultrasparc)
- ASTCFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
+ #ASTCFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
endif
ifeq ($(PROC),ppc)

View File

@ -0,0 +1,23 @@
diff -ruN asterisk-1.4.9-old/acinclude.m4 asterisk-1.4.9-new/acinclude.m4
--- asterisk-1.4.9-old/acinclude.m4 2007-09-04 17:20:27.000000000 +0200
+++ asterisk-1.4.9-new/acinclude.m4 2007-09-04 17:17:04.000000000 +0200
@@ -496,6 +496,7 @@
;;
esac
AC_MSG_RESULT(${OPENH323_BUILD})
+ OPENH323_SUFFIX="n_s"
AC_SUBST([OPENH323_SUFFIX])
AC_SUBST([OPENH323_BUILD])
diff -ruN asterisk-1.4.9-old/configure.ac asterisk-1.4.9-new/configure.ac
--- asterisk-1.4.9-old/configure.ac 2007-09-04 17:20:27.000000000 +0200
+++ asterisk-1.4.9-new/configure.ac 2007-09-04 17:22:08.000000000 +0200
@@ -807,7 +807,7 @@
if test "${HAS_PWLIB:-unset}" != "unset"; then
AST_CHECK_OPENH323_PLATFORM()
- PLATFORM_PWLIB="pt_${PWLIB_PLATFORM}_r"
+ PLATFORM_PWLIB="pt_${PWLIB_PLATFORM}_r_s"
AST_CHECK_PWLIB_BUILD([PWLib], [PWLIB],
[Define if your system has the PWLib libraries.],

View File

@ -0,0 +1,30 @@
diff -Nru asterisk-1.4.5.org/codecs/gsm/Makefile asterisk-1.4.5/codecs/gsm/Makefile
--- asterisk-1.4.5.org/codecs/gsm/Makefile 2007-02-17 01:31:42.000000000 +0100
+++ asterisk-1.4.5/codecs/gsm/Makefile 2007-06-22 09:13:13.000000000 +0200
@@ -38,7 +38,7 @@
######### probably require gcc.
ifeq (, $(findstring $(OSARCH) , Darwin SunOS ))
-ifeq (, $(findstring $(PROC) , x86_64 amd64 ultrasparc sparc64 arm armv5b armeb ppc powerpc ppc64 ia64 s390 bfin mipsel ))
+ifeq (, $(findstring $(PROC) , x86_64 amd64 ultrasparc sparc64 arm armv5b armeb ppc powerpc ppc64 ia64 s390 bfin mipsel mips ))
ifeq (, $(findstring $(shell uname -m) , ppc ppc64 alpha armv4l s390 ))
OPTIMIZE+=-march=$(PROC)
endif
@@ -209,7 +209,7 @@
# XXX should merge with GSM_OBJECTS
ifeq ($(OSARCH),linux-gnu)
ifeq (,$(findstring $(shell uname -m) , x86_64 amd64 ppc ppc64 alpha armv4l sparc64 parisc s390 ))
-ifeq (,$(findstring $(PROC) , arm armv5b armeb powerpc ia64 s390 bfin mipsel ))
+ifeq (,$(findstring $(PROC) , arm armv5b armeb powerpc ia64 s390 bfin mipsel mips ))
GSM_SOURCES+= $(SRC)/k6opt.s
endif
endif
@@ -261,7 +261,7 @@
ifeq ($(OSARCH),linux-gnu)
ifeq (,$(findstring $(shell uname -m) , x86_64 amd64 ppc ppc64 alpha armv4l sparc64 parisc ))
-ifeq (,$(findstring $(PROC) , arm armv5b armeb powerpc ia64 bfin mipsel ))
+ifeq (,$(findstring $(PROC) , arm armv5b armeb powerpc ia64 bfin mipsel mips ))
GSM_OBJECTS+= $(SRC)/k6opt.o
endif
endif