diff options
author | Jeff Morriss <jeff.morriss.ws@gmail.com> | 2016-08-17 19:47:42 -0400 |
---|---|---|
committer | Jeff Morriss <jeff.morriss.ws@gmail.com> | 2016-08-17 23:53:23 +0000 |
commit | f17ba6b21c892d4e74e2f75e766d6daacb8d5d52 (patch) | |
tree | 2748767c52e212c5146cbf156dd293f9ae9cd95d /tools/validate-diameter-xml.sh | |
parent | cdd3f45c6455012ea573c8324009838db2570286 (diff) |
Add a script to validate the Diameter dictionary XML.
I wrote this during Sharkfest to get the Diameter dictionary into (mostly)
valid XML. There's some room for improvement in the script but it works.
Change-Id: Ic8548c4f321831397951bf1d76779c263a832682
Reviewed-on: https://code.wireshark.org/review/17124
Reviewed-by: Jeff Morriss <jeff.morriss.ws@gmail.com>
Diffstat (limited to 'tools/validate-diameter-xml.sh')
-rwxr-xr-x | tools/validate-diameter-xml.sh | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/tools/validate-diameter-xml.sh b/tools/validate-diameter-xml.sh new file mode 100755 index 0000000000..09aa4af6aa --- /dev/null +++ b/tools/validate-diameter-xml.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +# A small script to run xmllint on the Diameter XML files (after doing some +# fixups to those files). +# +# Copyright 2016 Jeff Morriss <jeff.morriss.ws [AT] gmail.com> +# +# Wireshark - Network traffic analyzer +# By Gerald Combs <gerald@wireshark.org> +# Copyright 1998 Gerald Combs +# 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. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +if ! type -p sed > /dev/null +then + echo "Sorry, 'sed' is needed to run this program." + exit 1 +fi +if ! type -p xmllint > /dev/null +then + echo "Sorry, 'xmllint' is needed to run this program." + exit 1 +fi + +# Ideally this would work regardless of our cwd +if [ ! -r diameter/dictionary.xml ] +then + echo "Couldn't find diameter/dictionary.xml" + exit 1 +fi +if [ ! -r diameter/dictionary.dtd ] +then + echo "Couldn't find diameter/dictionary.dtd" + exit 1 +fi + +# First edit all the AVP names that start with "3GPP" to indicate "TGPP". +# XML doesn't allow ID's to start with a digit but: +# 1) We don't *really* care if it's valid XML +# 2) (but) we do want to use xmllint to find problems +# 3) (and) users see the AVP names. Showing them "TGPP" instead of "3GPP" +# is annoying enough to warrant this extra work. +mkdir /tmp/diameter || exit 1 +cp diameter/dictionary.dtd /tmp/diameter || exit 1 +for f in diameter/*.xml +do + sed 's/name="3GPP/name="TGPP/g' $f > /tmp/$f || exit 1 +done + +xmllint --noout --noent --postvalid /tmp/diameter/dictionary.xml && + echo "Diameter dictionary is (mostly) valid XML!" + +rm -rf /tmp/diameter + +# +# Editor modelines - https://www.wireshark.org/tools/modelines.html +# +# Local variables: +# c-basic-offset: 8 +# tab-width: 8 +# indent-tabs-mode: t +# End: +# +# vi: set shiftwidth=8 tabstop=8 noexpandtab: +# :indentSize=8:tabSize=8:noTabs=false: +# |