added ios2html
This commit is contained in:
parent
cbbf89d365
commit
feedbd7a36
632
ios2html
Normal file
632
ios2html
Normal file
@ -0,0 +1,632 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#===============================================================================
|
||||||
|
# DIRECTORY:
|
||||||
|
# ---
|
||||||
|
#
|
||||||
|
# FILE:
|
||||||
|
# ./ios2html
|
||||||
|
#
|
||||||
|
# BASIC USAGE:
|
||||||
|
# $ ./ios2html [-b browser] -c case_no [-f folder] [-h] [-n] [-o officer] [-q] [-v] ios_backup
|
||||||
|
# OR
|
||||||
|
# $ bash ios2html ...
|
||||||
|
# AND MAYBE IN FUTURE ALSO:
|
||||||
|
# $ ksh ios2html ...
|
||||||
|
# $ zsh ios2html ...
|
||||||
|
# $ dash ios2html ...
|
||||||
|
# $ busybox ash ios2html ...
|
||||||
|
#
|
||||||
|
# OPTIONS:
|
||||||
|
# -b browser: The browser command to use to view the report.
|
||||||
|
# (default: firefox)
|
||||||
|
# -c case_no: The Case Number used in the organisation.
|
||||||
|
# (MANDOTORY!)
|
||||||
|
# -f folder : The output directory to use for all files.
|
||||||
|
# (default: report)
|
||||||
|
# -h : display usage and exit
|
||||||
|
# -n : disable logging (enabled by default)
|
||||||
|
# -o officer: The name of the Officer running the case.
|
||||||
|
# If this is not supplied it is the real name field
|
||||||
|
# for the current user in /etc/passwd or OpenDirectory.
|
||||||
|
# -q : disable stdout (enabled by default)
|
||||||
|
# -v : print version and exit
|
||||||
|
# ios_backup: source (folder) to process (MANDOTORY!)
|
||||||
|
#
|
||||||
|
# EXIT STATES:
|
||||||
|
# 0 = success
|
||||||
|
# 1 = (t)csh is not supported
|
||||||
|
# 2 = python2.7 is not installed
|
||||||
|
# 3 = functions library missing
|
||||||
|
# 4 = functions library could not be loaded
|
||||||
|
# 5 = OS and/or shell not supported
|
||||||
|
# 6 = additional library missing
|
||||||
|
# 7 = unrecognised option
|
||||||
|
# 8 = option requires an argument
|
||||||
|
# 9 = template_engine could not be loaded
|
||||||
|
# 10 = bc is not installed
|
||||||
|
# (for additional codes see libraries!)
|
||||||
|
#
|
||||||
|
# DESCRIPTION:
|
||||||
|
# This script generates multiple html files by processing an ios backup.
|
||||||
|
#
|
||||||
|
# REQUIREMENTS:
|
||||||
|
# date, ...
|
||||||
|
#
|
||||||
|
# BUGS:
|
||||||
|
# - macOS 10.13.4 + dash 0.5.10.2 does not work for any reason!?
|
||||||
|
#
|
||||||
|
# TESTS:
|
||||||
|
# Plaform and shell combinations:
|
||||||
|
# - OS X (10.13.4) + bash (from Homebrew, NOT the builtin sh)
|
||||||
|
# - ArchLinux + bash (4.4.19)
|
||||||
|
# - ArchLinux + busybox ash (1.28.4)
|
||||||
|
# - ArchLinux + ksh (93v- 2014-06-25) BUT WITH WARNINGS
|
||||||
|
# - FreeBSD 11.1 + bash 4.4.19
|
||||||
|
# ! (t)csh is NOT supported !
|
||||||
|
# Sources:
|
||||||
|
# - physical backup (jailbreak) of an iPhone 5s + iOS 8.1.2
|
||||||
|
# - empty backup (folder with just one empty file)
|
||||||
|
# Tools:
|
||||||
|
# - shellcheck -s bash -e SC2154,SC1090,SC2086,SC2034,SC2016 ./ios2html
|
||||||
|
# - shellcheck -s ksh -e SC2154,SC1090,SC2086,SC2034,SC2016 ./ios2html
|
||||||
|
# - shellcheck -s dash -e SC2154,SC1090,SC2086,SC2034,SC2016 ./ios2html
|
||||||
|
#
|
||||||
|
# AUTHOR:
|
||||||
|
# Patrick Neumann, patrick@neumannsland.de
|
||||||
|
#
|
||||||
|
# COAUTHOR(S):
|
||||||
|
# Odin Heitmann, odin.heitmann@gmail.com
|
||||||
|
#
|
||||||
|
# COMPANY:
|
||||||
|
# (privately)
|
||||||
|
#
|
||||||
|
# VERSION:
|
||||||
|
# 1.1
|
||||||
|
#
|
||||||
|
# LINK TO THE MOST CURRENT VERSION:
|
||||||
|
# (Sorry, we bet, I'm not allowed to publish it over GitHub!)
|
||||||
|
#
|
||||||
|
# CREATED:
|
||||||
|
# 2018-06-05
|
||||||
|
#
|
||||||
|
# COPYRIGHT (C):
|
||||||
|
# 2018 - Patrick Neumann & Odin Heitmann
|
||||||
|
#
|
||||||
|
# LICENSE:
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# WARRANTY:
|
||||||
|
# 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
# NOTES:
|
||||||
|
# Followed styleguides:
|
||||||
|
# - http://lug.fh-swf.de/vim/vim-bash/StyleGuideShell.en.pdf
|
||||||
|
# - https://google.github.io/styleguide/shell.xml
|
||||||
|
#
|
||||||
|
# TODO:
|
||||||
|
# - wrap too long lines to have 80 chars at maximum
|
||||||
|
# - swith vars that have to be modified while execution to lowercase
|
||||||
|
# - different default application list for different devices
|
||||||
|
# - add other devices than iPhone to the hardware_map.tsv
|
||||||
|
# - add more pictures of iOS devices
|
||||||
|
# - add detection/support for logical (advanced) backups
|
||||||
|
# - add support for Debian, Bash on Ubuntu on Windows 10, ...
|
||||||
|
# - finish support for zsh, ksh, busybox ash & dash
|
||||||
|
#
|
||||||
|
# HISTORY:
|
||||||
|
# 1.0 - P. N. & O. H. - Initial (for the trainers eyes only) release
|
||||||
|
# 1.1 - P. N. - added network plugin
|
||||||
|
#
|
||||||
|
#===============================================================================
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# (t)csh needs too many modifications!
|
||||||
|
# (different "if" syntax, no conditional command, "set" before var="val",...)
|
||||||
|
# Worth reading link: http://www.grymoire.com/unix/CshTop10.txt
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# SC2154: ${shell} is referenced but not assigned
|
||||||
|
# (It's not a bug... it's a feature!)
|
||||||
|
test -n "${shell}" \
|
||||||
|
&& printf "\\n\\033[01;31;40mERROR: (t)csh is not supported... EXIT\\!\\!\\!\\033[00m\\n\\n" \
|
||||||
|
&& exit 1
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Control debugging manually: on or off (and everything else then "on").
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
readonly DEBUG="off"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Start of script as a UNIX timestamp in microseconds.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Long line because:
|
||||||
|
# SC1004: Break outside single quotes if you just want to break the line!
|
||||||
|
readonly MICRO_START="$( python2.7 -c 'from time import time; print int(round(time() * 1000000));' )"
|
||||||
|
if [ -z "${MICRO_START}" ] ; then
|
||||||
|
printf "\\n\\033[01;31;40mERROR: python2.7 not installed... EXIT!!!\\033[00m\\n\\n"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Checking for and including libraries.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# To have "better" zsh support first import main functions standalone
|
||||||
|
readonly MAIN_FUNCTIONS="$( dirname "${0}" )/lib/functions.sh"
|
||||||
|
if ! [ -f "${MAIN_FUNCTIONS}" ] ; then
|
||||||
|
printf "\\n\\033[01;31;40mERROR: main functions library missing... EXIT!!!\\033[00m\\n\\n"
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
# In dash, 'source' in place of '.' is not supported!
|
||||||
|
. "${MAIN_FUNCTIONS}"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Check if functions library is loaded first.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
if [ "${FUNCTIONS_LOADED}" != "true" ] ; then
|
||||||
|
printf "\\n\\033[01;31;40mERROR: functions library not loaded... EXIT!!!\\033[00m\\n\\n"
|
||||||
|
exit 4
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Check for unsupported OS + Shell combinations.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
if [ "${OS_NAME}" = "Darwin" ] && [ "${CURRENT_SHELL}" != "bash" ] ; then
|
||||||
|
error_exit "Sorry, actually only bash is supported on macOS\\!" 5
|
||||||
|
fi
|
||||||
|
|
||||||
|
# dash doesn't support arrays!
|
||||||
|
LIBRARIES="template_engine.sh"
|
||||||
|
LIBRARIES="${LIBRARIES} hardware_plugin.sh"
|
||||||
|
LIBRARIES="${LIBRARIES} os_plugin.sh"
|
||||||
|
LIBRARIES="${LIBRARIES} network_plugin.sh"
|
||||||
|
LIBRARIES="${LIBRARIES} configuration_plugin.sh"
|
||||||
|
LIBRARIES="${LIBRARIES} accounts_plugin.sh"
|
||||||
|
LIBRARIES="${LIBRARIES} applications_plugin.sh"
|
||||||
|
LIBRARIES="${LIBRARIES} sms_plugin.sh"
|
||||||
|
LIBRARIES="${LIBRARIES} kik_plugin.sh"
|
||||||
|
readonly LIBRARIES="${LIBRARIES} addressbook_plugin.sh"
|
||||||
|
for library in ${LIBRARIES} ; do
|
||||||
|
# SC1090: "${0%/*}/${library}" is too generic for shellcheck!
|
||||||
|
if ! [ -f "$( ${BIN_DIRNAME} "${0}" )/lib/${library}" ] ; then
|
||||||
|
error_exit "\\n\\033[01;31;40mERROR: library ${library} missing... EXIT!!!\\033[00m\\n\\n" 6
|
||||||
|
fi
|
||||||
|
. "$( ${BIN_DIRNAME} "${0}" )/lib/${library}"
|
||||||
|
done
|
||||||
|
|
||||||
|
#=== CONFIGURATION (static) ====================================================
|
||||||
|
readonly VERSION="1.1"
|
||||||
|
readonly CREATED="2018-06-05"
|
||||||
|
FOLDER="report" # <- could be modified later!
|
||||||
|
|
||||||
|
assign_binary "date" # common
|
||||||
|
assign_binary "python2.7" # -> ${BIN_PYTHON27} # common
|
||||||
|
assign_binary "sed" # common
|
||||||
|
assign_binary "bc" # uncommon
|
||||||
|
assign_binary "mv" # common
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Check existence of uncommon binaries.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
[ -z "${BIN_BC}" ] && error_exit "please install bc and retry" 10
|
||||||
|
|
||||||
|
# Change some defaults (functions.sh):
|
||||||
|
#ECHO_FUNC="display"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Variables as "controllers" for the simple template engine.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
readonly HEAD_TITLE="iOS to HTML"
|
||||||
|
readonly HEADER_H1="${HEAD_TITLE}"
|
||||||
|
readonly HEADER_SUBTITLE="... featured by bash, awk, pl(ist)util, sqlite3 & co."
|
||||||
|
|
||||||
|
#=== CONFIGURATION (dynamic) ===================================================
|
||||||
|
# SC2086: The space(s) in ${DATE_DISPLAY} are important for splitting options!
|
||||||
|
readonly DATE="$( ${BIN_DATE} ${DATE_DISPLAY}${MICRO_START%??????} )"
|
||||||
|
readonly SCRIPTNAME="$( ${BIN_BASENAME} "${0}" )"
|
||||||
|
|
||||||
|
#=== FUNCTION ==================================================================
|
||||||
|
# NAME: usage
|
||||||
|
# DESCRIPTION: Display help.
|
||||||
|
# PARAMETERS: -
|
||||||
|
#===============================================================================
|
||||||
|
usage() {
|
||||||
|
${BIN_PRINTF} "BASIC USAGE...\\n"
|
||||||
|
${BIN_PRINTF} " bash ios2html [-b browser] -c case_no [-f folder] [-h] [-n] [-o officer] [-q] [-v] ios_backup\\n\\n"
|
||||||
|
${BIN_PRINTF} "OPTIONS:\\n\\n"
|
||||||
|
${BIN_PRINTF} " -b browser: The browser command to use to view the report.\\n"
|
||||||
|
${BIN_PRINTF} " (default: firefox)\\n"
|
||||||
|
${BIN_PRINTF} " -c case_no: The Case Number used in the organisation.\\n"
|
||||||
|
${BIN_PRINTF} " (MANDOTORY!)\\n"
|
||||||
|
${BIN_PRINTF} " -f folder : The output directory to use for all files.\\n"
|
||||||
|
${BIN_PRINTF} " (default: report)\\n"
|
||||||
|
${BIN_PRINTF} " -h : display usage and exit\\n"
|
||||||
|
${BIN_PRINTF} " -n : disable logging (enabled by default)\\n"
|
||||||
|
${BIN_PRINTF} " -o officer: The name of the Officer running the case.\\n"
|
||||||
|
${BIN_PRINTF} " If this is not supplied it is the real name field\\n"
|
||||||
|
${BIN_PRINTF} " for the current user in /etc/passwd or OpenDirectory.\\n"
|
||||||
|
${BIN_PRINTF} " -q : disable stdout (enabled by default)\\n"
|
||||||
|
${BIN_PRINTF} " -v : print version and exit\\n"
|
||||||
|
${BIN_PRINTF} " ios_backup: source (folder) to process (MANDOTORY!)\\n\\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Try to reconstruct the script call.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
CMD_LINE="${0}"
|
||||||
|
for part in "${@}" ; do
|
||||||
|
# Using "${@}" instead of ${*} should not lead in space problems!?
|
||||||
|
CMD_LINE="${CMD_LINE} ${part}"
|
||||||
|
done
|
||||||
|
|
||||||
|
#=== CONFIGURATION (input) =====================================================
|
||||||
|
# (-) GNU- and BSD-getopt behave differently
|
||||||
|
# (+) getopts is more POSIX and system-/shell-portable
|
||||||
|
while getopts ":b:c:f:hno:qv" opt ; do
|
||||||
|
case $opt in
|
||||||
|
b ) BROWSER="${OPTARG}" # <- could be modified later!
|
||||||
|
;;
|
||||||
|
c ) readonly CASE_NUMBER="${OPTARG}"
|
||||||
|
;;
|
||||||
|
f ) FOLDER="${OPTARG}" # <- could be modified later!
|
||||||
|
;;
|
||||||
|
h ) readonly GET_HELP="yes" ;;
|
||||||
|
n ) readonly DISABLE_LOGGING="yes" ;;
|
||||||
|
o ) OFFICER="${OPTARG}" # <- could be modified later!
|
||||||
|
;;
|
||||||
|
q ) readonly DISABLE_STDOUT="yes" ;;
|
||||||
|
v ) readonly GET_VERSION_ONLY="yes" ;;
|
||||||
|
\? ) error "unrecognised option (-%s)" "${OPTARG}"
|
||||||
|
usage
|
||||||
|
exit 7
|
||||||
|
;;
|
||||||
|
: ) error "option -%s requires an argument" "${OPTARG}"
|
||||||
|
usage
|
||||||
|
exit 8
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
LC_ALL="C" shift "$(( OPTIND - 1 ))"
|
||||||
|
|
||||||
|
#=== CONFIGURATION (output) ====================================================
|
||||||
|
if [ "${DISABLE_LOGGING}" = "yes" ] ; then
|
||||||
|
ECHO_FUNC="display"
|
||||||
|
fi
|
||||||
|
if [ "${DISABLE_STDOUT}" = "yes" ] ; then
|
||||||
|
ECHO_FUNC="log"
|
||||||
|
fi
|
||||||
|
if [ "${DISABLE_LOGGING}" = "yes" ] && [ "${DISABLE_STDOUT}" = "yes" ] ; then
|
||||||
|
ECHO_FUNC="quiet"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Just display version, if "-h" or "-v" is given and exit without error code
|
||||||
|
# if "-v" is given.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
if [ "${GET_HELP}" = "yes" ] || [ "${GET_VERSION_ONLY}" = "yes" ] ; then
|
||||||
|
${BIN_PRINTF} "\\n${SCRIPTNAME} version: ${VERSION} (created: ${CREATED})\\n\\n"
|
||||||
|
else
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Some checks for folder and logfile.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
check_folder
|
||||||
|
readonly LOG_FILE="${FOLDER}/ios2html.log"
|
||||||
|
if [ "${ECHO_FUNC}" = "display_and_log" ] || [ "${ECHO_FUNC}" = "log" ] ; then
|
||||||
|
check_logfile
|
||||||
|
# SC2034: all "unused" vars are verified!
|
||||||
|
readonly LOGFILE_LINK="<li><a href='ios2html.log' target='_blank'><code>ios2html.log</code></a></li>"
|
||||||
|
readonly LOGFILE_INFO="<tr><td>Logfile:</td><td>${LOG_FILE}</td></tr>"
|
||||||
|
fi
|
||||||
|
|
||||||
|
hint "${SCRIPTNAME} version:\\n ${VERSION} (created: ${CREATED})"
|
||||||
|
|
||||||
|
${ECHO_FUNC} "\\n"
|
||||||
|
fi
|
||||||
|
if [ "${GET_VERSION_ONLY}" = "yes" ] ; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Just display help, if "-h" is given and exit without error code.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# make only sence for stdout
|
||||||
|
if [ "${GET_HELP}" = "yes" ] ; then
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Output cmdline.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
hint "Cmdline:\\n ${CMD_LINE}\\n"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Script started at.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
hint "${SCRIPTNAME} started at:\\n ${DATE}\\n"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Loaded libraries and plugins.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
hint "Loaded libraries and plugins:"
|
||||||
|
hint " functions.sh"
|
||||||
|
for library in ${LIBRARIES} ; do
|
||||||
|
hint " ${library}"
|
||||||
|
done
|
||||||
|
|
||||||
|
${ECHO_FUNC} "\\n"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Display/log some output that we already have.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
hint "System:\\n ${OS_NAME} + ${CURRENT_SHELL}\\n"
|
||||||
|
hint "Defined/supplied Target folder:\\n ${FOLDER}\\n"
|
||||||
|
hint "Defined log file:\\n ${LOG_FILE}\\n"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Some more checks.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
check_browser
|
||||||
|
check_case_number
|
||||||
|
check_officer
|
||||||
|
check_source "${1}"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Check if temblate engine library is loaded first.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
if [ "${TEMPLATE_ENGINE_LOADED}" != "true" ] ; then
|
||||||
|
error_exit "template_engine.sh not loaded" 9
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Create and fill folder.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
init_folder
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Create "index.html".
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
hint "Start creating index.html...\\n"
|
||||||
|
|
||||||
|
# If the HTMP page is in a subfolder you have to change the prefix to be able
|
||||||
|
# to load css, html, ... files.
|
||||||
|
prefix="./"
|
||||||
|
|
||||||
|
top_nav="$( ${BIN_CAT} <<'EOF'
|
||||||
|
<li class='active'><strong>Main</strong></li>
|
||||||
|
<li><a href='accounts.html'>Accounts</a></li>
|
||||||
|
<li><a href='applications.html'>Applications</a></li>
|
||||||
|
EOF
|
||||||
|
)"
|
||||||
|
|
||||||
|
render_template "${HEADER}" > "${FOLDER}/index.html"
|
||||||
|
render_template "${CASE_INFORMATION}" >> "${FOLDER}/index.html"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Add hardware information to "index.html".
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
if [ "${HARDWARE_PLUGIN_LOADED}" = "true" ] ; then
|
||||||
|
hint "... adding hardware informations..."
|
||||||
|
get_hardware_info
|
||||||
|
render_template "${HARDWARE_INFORMATION}" >> "${FOLDER}/index.html"
|
||||||
|
|
||||||
|
success "hardware informations added"
|
||||||
|
fi
|
||||||
|
|
||||||
|
${ECHO_FUNC} "\\n"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Add operating system information to "index.html".
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
if [ "${OS_PLUGIN_LOADED}" = "true" ] ; then
|
||||||
|
hint "... adding os informations..."
|
||||||
|
get_os_info
|
||||||
|
render_template "${OS_INFORMATION}" >> "${FOLDER}/index.html"
|
||||||
|
|
||||||
|
success "operating system informations added"
|
||||||
|
fi
|
||||||
|
|
||||||
|
${ECHO_FUNC} "\\n"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Add network information to "index.html".
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
if [ "${NETWORK_PLUGIN_LOADED}" = "true" ] ; then
|
||||||
|
hint "... adding network informations..."
|
||||||
|
get_network_info
|
||||||
|
render_template "${NETWORK_INFORMATION}" >> "${FOLDER}/index.html"
|
||||||
|
|
||||||
|
success "network informations added"
|
||||||
|
fi
|
||||||
|
|
||||||
|
${ECHO_FUNC} "\\n"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Add configuration information to "index.html".
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
if [ "${CONFIGURATION_PLUGIN_LOADED}" = "true" ] ; then
|
||||||
|
hint "... adding configuration informations..."
|
||||||
|
get_configuration_info
|
||||||
|
render_template "${CONFIGURATION_INFORMATION}" >> "${FOLDER}/index.html"
|
||||||
|
|
||||||
|
success "configuration informations added"
|
||||||
|
fi
|
||||||
|
|
||||||
|
${ECHO_FUNC} "\\n"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Creating "accounts.html".
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
if [ "${ACCOUNTS_PLUGIN_LOADED}" = "true" ] ; then
|
||||||
|
hint "Start creating accounts.html..."
|
||||||
|
|
||||||
|
top_nav="$( ${BIN_CAT} <<'EOF'
|
||||||
|
<li><a href='index.html'>Main</a></li>
|
||||||
|
<li class='active'><strong>Accounts</strong></li>
|
||||||
|
<li><a href='applications.html'>Applications</a></li>
|
||||||
|
EOF
|
||||||
|
)"
|
||||||
|
|
||||||
|
render_template "${HEADER}" > "${FOLDER}/accounts.html"
|
||||||
|
get_accounts_list
|
||||||
|
render_template "${ACCOUNTS_INFORMATION}" >> "${FOLDER}/accounts.html"
|
||||||
|
render_template "${FOOTER}" >> "${FOLDER}/accounts.html"
|
||||||
|
|
||||||
|
success "accounts.html created"
|
||||||
|
fi
|
||||||
|
|
||||||
|
${ECHO_FUNC} "\\n"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Creating "applications.html".
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
if [ "${APPLICATIONS_PLUGIN_LOADED}" = "true" ] ; then
|
||||||
|
hint "Start creating applications.html..."
|
||||||
|
|
||||||
|
top_nav="$( ${BIN_CAT} <<'EOF'
|
||||||
|
<li><a href='index.html'>Main</a></li>
|
||||||
|
<li><a href='accounts.html'>Accounts</a></li>
|
||||||
|
<li class='active'><strong>Applications</strong></li>
|
||||||
|
EOF
|
||||||
|
)"
|
||||||
|
|
||||||
|
render_template "${HEADER}" > "${FOLDER}/applications.html"
|
||||||
|
get_applications_list
|
||||||
|
render_template "${APPLICATIONS_INFORMATION}" >> "${FOLDER}/applications.html"
|
||||||
|
render_template "${FOOTER}" >> "${FOLDER}/applications.html"
|
||||||
|
|
||||||
|
success "applications.html created"
|
||||||
|
|
||||||
|
${ECHO_FUNC} "\\n"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Creating "sms.html".
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
if [ "${SMS_PLUGIN_LOADED}" = "true" ] ; then
|
||||||
|
hint "Start creating sms.html..."
|
||||||
|
|
||||||
|
top_nav="$( ${BIN_CAT} <<'EOF'
|
||||||
|
<li><a href='index.html'>Main</a></li>
|
||||||
|
<li><a href='accounts.html'>Accounts</a></li>
|
||||||
|
<li><a href='applications.html'>Applications</a></li>
|
||||||
|
EOF
|
||||||
|
)"
|
||||||
|
|
||||||
|
render_template "${HEADER}" > "${FOLDER}/sms.html"
|
||||||
|
get_sms_list
|
||||||
|
render_template "${SMS_INFORMATION}" >> "${FOLDER}/sms.html"
|
||||||
|
render_template "${FOOTER}" >> "${FOLDER}/sms.html"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Inject hyperlink to "applications.html"
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
${BIN_SED} "s|<li>Messages</li>|<li><a href='sms.html'>Messages</a></li>|" "${FOLDER}/applications.html" > /tmp/applications.html
|
||||||
|
${BIN_MV} /tmp/applications.html "${FOLDER}/applications.html"
|
||||||
|
|
||||||
|
success "sms.html created"
|
||||||
|
fi
|
||||||
|
|
||||||
|
${ECHO_FUNC} "\\n"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Creating "contacts.html".
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
if [ "${ADDRESSBOOK_PLUGIN_LOADED}" = "true" ] ; then
|
||||||
|
hint "Start creating contacts.html..."
|
||||||
|
|
||||||
|
top_nav="$( ${BIN_CAT} <<'EOF'
|
||||||
|
<li><a href='index.html'>Main</a></li>
|
||||||
|
<li><a href='accounts.html'>Accounts</a></li>
|
||||||
|
<li><a href='applications.html'>Applications</a></li>
|
||||||
|
EOF
|
||||||
|
)"
|
||||||
|
|
||||||
|
render_template "${HEADER}" > "${FOLDER}/contacts.html"
|
||||||
|
get_addressbook_list
|
||||||
|
render_template "${ADDRESSBOOK_INFORMATION}" >> "${FOLDER}/contacts.html"
|
||||||
|
render_template "${FOOTER}" >> "${FOLDER}/contacts.html"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Inject hyperlink to "applications.html"
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
${BIN_SED} "s|<li>Contacts</li>|<li><a href='contacts.html'>Contacts</a></li>|" "${FOLDER}/applications.html" > /tmp/applications.html
|
||||||
|
${BIN_MV} /tmp/applications.html "${FOLDER}/applications.html"
|
||||||
|
|
||||||
|
success "contacts.html created"
|
||||||
|
fi
|
||||||
|
|
||||||
|
${ECHO_FUNC} "\\n"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Creating "kik.html".
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
if [ "${KIK_PLUGIN_LOADED}" = "true" ] ; then
|
||||||
|
hint "Start creating kik.html..."
|
||||||
|
|
||||||
|
top_nav="$( ${BIN_CAT} <<'EOF'
|
||||||
|
<li><a href='index.html'>Main</a></li>
|
||||||
|
<li><a href='accounts.html'>Accounts</a></li>
|
||||||
|
<li><a href='applications.html'>Applications</a></li>
|
||||||
|
EOF
|
||||||
|
)"
|
||||||
|
|
||||||
|
render_template "${HEADER}" > "${FOLDER}/kik.html"
|
||||||
|
get_kik_list
|
||||||
|
render_template "${KIK_INFORMATION}" >> "${FOLDER}/kik.html"
|
||||||
|
render_template "${FOOTER}" >> "${FOLDER}/kik.html"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Inject hyperlink to "applications.html"
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
${BIN_SED} "s|<td>com.kik.chat</td>|<td><a href='kik.html'>com.kik.chat</a></td>|" "${FOLDER}/applications.html" > /tmp/applications.html
|
||||||
|
${BIN_MV} /tmp/applications.html "${FOLDER}/applications.html"
|
||||||
|
|
||||||
|
success "kik.html created"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
${ECHO_FUNC} "\\n"
|
||||||
|
|
||||||
|
render_template "${FOOTER}" >> "${FOLDER}/index.html"
|
||||||
|
success "index.html created"
|
||||||
|
|
||||||
|
${ECHO_FUNC} "\\n"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Open index.html file in a browser.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
case "${OS_NAME}" in
|
||||||
|
Darwin) ${BIN_OPEN} -a "${BROWSER}" "${FOLDER}/index.html"
|
||||||
|
;;
|
||||||
|
Linux|FreeBSD) ${BROWSER} "${FOLDER}/index.html"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
readonly MICRO_STOP="$( ${BIN_PYTHON27} -c 'from time import time; print int(round(time() * 1000000))' )"
|
||||||
|
readonly MICRO_DELTA="$(( MICRO_STOP - MICRO_START ))"
|
||||||
|
# printf does not work here
|
||||||
|
readonly BENCHMARK="$( echo "scale=6; x=${MICRO_DELTA}/1000000; if( x<1 && x>0 ) print 0; x" | ${BIN_BC} )"
|
||||||
|
|
||||||
|
hint "The report was rendered in ${BENCHMARK} seconds."
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Remove color codes in logfile.
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# BSDs sed does not know "--in-place"!
|
||||||
|
# BSDs sed "-i" needs "" and Linux sed "-i" does not!
|
||||||
|
if [ "${DISABLE_LOGGING}" != "yes" ] ; then
|
||||||
|
${BIN_SED} 's/'"$( ${BIN_PRINTF} "\\033" )"'\[01;3[0-9];40m//g' "${LOG_FILE}" \
|
||||||
|
> /tmp/ios2html.log
|
||||||
|
${BIN_SED} 's/'"$( ${BIN_PRINTF} "\\033" )"'\[00m//g' /tmp/ios2html.log \
|
||||||
|
> "${LOG_FILE}"
|
||||||
|
${BIN_RM} /tmp/ios2html.log
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
Loading…
x
Reference in New Issue
Block a user