91 lines
2.5 KiB
Bash
Executable File
91 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# handler_quickscope - converts a quickscope into a quotation
|
|
#
|
|
# This script is part of the PenText framework
|
|
# https://pentext.org
|
|
#
|
|
# Copyright (C) 2016 Radically Open Security
|
|
# https://www.radicallyopensecurity.com
|
|
#
|
|
# Author(s): Peter Mosmans
|
|
# John Sinteur
|
|
#
|
|
# 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 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
|
|
VERSION=0.3
|
|
SAXON=/usr/local/bin/saxon/saxon9he.jar
|
|
TEMPLOC=$(mktemp -d)
|
|
|
|
|
|
# These variables should be set environment-specific
|
|
[ -z $GITSERVER ] && GITSERVER=gitlab.local
|
|
[ -z $NAMESPACE ] && NAMESPACE=ros
|
|
|
|
# Read standard 'command line' variables
|
|
[[ ! -z $1 ]] && REPO=$1
|
|
[[ ! -z $2 ]] && NAMESPACE=$2
|
|
[[ ! -z $3 ]] && BRANCH=$3 || BRANCH=master
|
|
|
|
trap cleanup EXIT QUIT
|
|
|
|
# Make sure that the temporary files are always removed
|
|
cleanup() {
|
|
trap '' EXIT INT QUIT
|
|
[ -d $TEMPLOC ] && rm -rf $TEMPLOC &>/dev/null
|
|
exit
|
|
}
|
|
|
|
# Clones repo using global (!) variables - v0.2
|
|
clone_repo() {
|
|
pushd $TEMPLOC 1>/dev/null
|
|
git clone --depth=1 -q ssh://git@${GITSERVER}/${NAMESPACE}/${REPO}.git &>/dev/null
|
|
if [ ! -d $TEMPLOC/$REPO ]; then
|
|
echo "[-] could not clone repo ${NAMESPACE}/${REPO}"
|
|
exit 1
|
|
else
|
|
cd $REPO
|
|
fi
|
|
}
|
|
|
|
# Preflight checks using global (!) variables
|
|
preflight_checks() {
|
|
if [ -z $REPO ]; then
|
|
echo "Usage: quickscope REPOSITORY [NAMESPACE]"
|
|
exit
|
|
fi
|
|
if [ ! -f $SAXON ]; then
|
|
echo "[-] this script needs saxon ($SAXON)"
|
|
fi
|
|
}
|
|
|
|
convert_quickscope() {
|
|
if [ ! -f $TEMPLOC/$REPO/source/quickscope.xml ] || [ ! -f $TEMPLOC/$REPO/xslt/qs2offerte.xsl ]; then
|
|
echo "[-] missing necessary pentext framework files"
|
|
exit 1
|
|
fi
|
|
java -jar $SAXON -s:$TEMPLOC/$REPO/source/quickscope.xml -xsl:$TEMPLOC/$REPO/xslt/qs2offerte.xsl -o:$TEMPLOC/$REPO/source/offerte.xml
|
|
if [ ! -f $TEMPLOC/$REPO/source/offerte.xml ]; then
|
|
echo "[-] failed to parse quote"
|
|
exit
|
|
fi
|
|
}
|
|
|
|
add_to_repo() {
|
|
git add source/offerte.xml &>/dev/null
|
|
git commit -q -m "Created quickscope using ChatOps" &>/dev/null
|
|
git push -q >/dev/null
|
|
}
|
|
|
|
preflight_checks
|
|
echo "quickscope v${VERSION} - Rockin' and scoping'..."
|
|
clone_repo
|
|
convert_quickscope
|
|
add_to_repo
|
|
echo "[+] listo!"
|
|
exit 0
|