Skip to content

Instantly share code, notes, and snippets.

@nathandarnell
Last active June 21, 2018 19:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nathandarnell/d67ba574a58e249fb772053136fbd467 to your computer and use it in GitHub Desktop.
Save nathandarnell/d67ba574a58e249fb772053136fbd467 to your computer and use it in GitHub Desktop.
#!/bin/bash
## https://crosstalksolutions.com/freepbx-polycom-directory-automation/
## Runs every hour from "nano -w /etc/crontab"
## http://thyrusgorges.com/post/generate-polycom-xml-directory-using-freepbx/
# Author: Thyrus Gorges
# Date: 2015/03/04
#The MIT License (MIT)
#Copyright (c) <2015> <Thyrus Gorges>
#Permission is hereby granted, free of charge, to any person obtaining a copy
#of this software and associated documentation files (the "Software"), to deal
#in the Software without restriction, including without limitation the rights
#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
#copies of the Software, and to permit persons to whom the Software is
#furnished to do so, subject to the following conditions:
#The above copyright notice and this permission notice shall be included in
#all copies or substantial portions of the Software.
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
#THE SOFTWARE.
# Build a Polycom Directory XML file
# by pulling the usernames and extensions of all SIP users
# Set so we can loop on newlines instead of spaces
IFS=$'\n'
# MySQL Creds
SQLUSER=root
SQLPASS=""
# Declare our file
FILE=/tftpboot/000000000000-directory.xml
# Remove old file
rm $FILE
# ReCreate our file
touch $FILE
# Write the header of the file
# Passing the -e option to echo allows us to use tabs
echo -e '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' >> $FILE
echo -e '<!-- $RCSfile: 000000000000-directory~.xml,v $ $Revision: 1.3 $ -->' >> $FILE
echo -e '<directory>' >> $FILE
echo -e "\t<item_list>" >> $FILE
# Query Database
# We pass -N to MySQL so it doens't print headers
# CS: Original command below, modified to remove password
# for i in $( mysql -u $SQLUSER -p$SQLPASS -N -e "use asterisk; select extension, name from users;" ); do
for i in $( mysql -u $SQLUSER -N -e "use asterisk; select extension, name from users;" ); do
# Assign Variables to each field
EXTEN=`echo $i | cut -f1`
FN=`echo $i | cut -f2 | cut -d" " -f1`
LN=`echo $i | cut -d" " -f2`
# The item tag is the beginning of a contact
echo -e "\t\t<item>" >> $FILE
echo -e "\t\t\t<ln> $LN </ln>" >> $FILE
echo -e "\t\t\t<fn> $FN </fn>" >> $FILE
echo -e "\t\t\t<ct> $EXTEN </ct>" >> $FILE
echo -e "\t\t</item>" >> $FILE
done
# Write file endings
echo -e "\t</item_list>" >> $FILE
echo -e "</directory>" >> $FILE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment