Skip to content

Instantly share code, notes, and snippets.

@rjcorwin
Last active December 21, 2015 07:39
Show Gist options
  • Select an option

  • Save rjcorwin/6273133 to your computer and use it in GitHub Desktop.

Select an option

Save rjcorwin/6273133 to your computer and use it in GitHub Desktop.
#!/bin/sh
MYVERSION="0.2.0e"
#
# Sakis3G All-in-one script
# Copyright (c) 2009, 2010 Sakis Dimopoulos (sakis3g @domain sakis3g.org)
# Under GNU GPL v2.
#
# URL: http://www.sakis3g.org/
# License: http://www.gnu.org/licenses/gpl.txt
#
# ATTENTION: DO NOT EDIT THIS FILE DIRECTLY, OR YOU RISK TO RENDER IT
# UNUSABLE. IF YOU WANT TO EDIT Sakis3G SCRIPT, ISSUE:
# $ /usr/bin/sakis3g disassemble /tmp
# $ cd /tmp/sakis3g-0.2.0/
# $ vi src/sakis3g
# $ ./compile
# $ cp /tmp/sakis3g-0.2.0/build/sakis3gz /usr/bin/.
#
# See embedded help:
# $ sakis3gz help
# or embedded man page:
# $ sakis3gz man
# Additional information at:
# http://wiki.sakis3g.org/
#
PACKAGE_SIZE=197211
BLOCKSIZE=1024
PACKAGE_CONTENTS="sakis3g/
sakis3g/build/
sakis3g/build/usb_modeswitch
sakis3g/build/switchconfig
sakis3g/CONTRIB
sakis3g/docs/
sakis3g/docs/translation_template.UTF-8
sakis3g/man/
sakis3g/man/sakis3g.1
sakis3g/man/sakis3g.conf.5
sakis3g/src/
sakis3g/src/sakis3gz
sakis3g/src/sakis3g
sakis3g/COPYING
sakis3g/messages/
sakis3g/messages/fr_FR.UTF-8
sakis3g/messages/de_DE.UTF-8
sakis3g/messages/el_GR.UTF-8
sakis3g/compile
sakis3g/README
sakis3g/dependencies/
sakis3g/dependencies/usb-modeswitch-data/
sakis3g/dependencies/usb-modeswitch-data/Makefile
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/16d8:6803:?
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/12d1:1446
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7271
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1ab7:5700
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1c9e:9200
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:1001
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0421:0610
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1b7d:0700
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:0053
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:0040
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1410:5030
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1c9e:1001
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:6811
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7701
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:8302
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/12d1:1001
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:6911
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7031
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:0115
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/072f:100d
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:6751
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:d157
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:6771
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7211
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1a8d:1000:uPr=5G
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/05c6:1000:sVe=Option
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:1009
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1004:613a
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1410:5010
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:2000
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7361
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:8201
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0fce:d0e1
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/16d8:6803
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0930:0d46
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:0003
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0471:1210
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:d357
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1c9e:f000
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:d155
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1410:5020
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1004:613f
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1dd6:1000
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/05c6:1000:uMa=AnyDATA
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/106c:3b06
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/16d8:f000
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/05c6:1000:uMa=SAMSUNG
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7251
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/057c:84ff
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1410:5031
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:d255
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1004:1000
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/05c6:2001
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:c031
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/148f:2578
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1266:1000
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0fce:d103
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7311
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7601
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7301
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:d033
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1e0e:f000
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:6971
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:8400
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1076:7f40
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/12d1:101e
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0b3c:c700
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/12d1:1520
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/12d1:1521
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7051
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/12d1:1414
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7071
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:8200
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:0101
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1033:0035
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0ace:2011
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:0083
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1004:607f
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1a8d:1000
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:d058
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:fff5
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:1007
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:d257
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7381
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:8304
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:d013
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:d031
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1410:5041
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:d035
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:0103
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7401
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:8300
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0482:024d
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0fce:d0cf
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/198f:bccd
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/05c6:1000:uMa=Vertex
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:6951
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7111
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:6731
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:d057
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/04e8:f000
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:6711
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1f28:0021
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1bbb:f000
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7901
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7501
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:6791
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0ace:20ff
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/106c:3b03
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0471:1237
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:0026
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1fac:0130
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:d055
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7801
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/16d8:700a
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:7011
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/12d1:1003
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/1199:0fff
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/12d1:1557
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/05c6:f000
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/19d2:fff6
sakis3g/dependencies/usb-modeswitch-data/usb_modeswitch.d/0af0:c100
sakis3g/dependencies/usb-modeswitch-data/40-usb_modeswitch.rules
sakis3g/dependencies/usb-modeswitch-data/COPYING
sakis3g/dependencies/usb-modeswitch-data/README
sakis3g/dependencies/usb-modeswitch-data/ChangeLog
sakis3g/dependencies/usb-modeswitch/
sakis3g/dependencies/usb-modeswitch/Makefile
sakis3g/dependencies/usb-modeswitch/usb_modeswitch.d
sakis3g/dependencies/usb-modeswitch/usb_modeswitch.c
sakis3g/dependencies/usb-modeswitch/usb_modeswitch.conf
sakis3g/dependencies/usb-modeswitch/device_reference.txt
sakis3g/dependencies/usb-modeswitch/COPYING
sakis3g/dependencies/usb-modeswitch/README
sakis3g/dependencies/usb-modeswitch/usb_modeswitch.tcl
sakis3g/dependencies/usb-modeswitch/usb_modeswitch.h
sakis3g/dependencies/usb-modeswitch/ChangeLog
sakis3g/dependencies/usb-modeswitch/usb_modeswitch.1
sakis3g/Changelog
sakis3g/scripts/
sakis3g/scripts/compile
sakis3g/scripts/device-database-gen
sakis3g/files/
sakis3g/files/usb_devices.db
sakis3g/files/help.txt
sakis3g/files/sakis3g.green.png
sakis3g/files/sakis3g.png
sakis3g/files/sakis3g.yellow.png
sakis3g/files/operators.db
sakis3g/files/sakis3g.red.png
sakis3g/files/modem_init.db"
PACKAGE_EXECUTABLES="sakis3g/build/usb_modeswitch
sakis3g/src/sakis3g
sakis3g/dependencies/usb-modeswitch/usb_modeswitch.tcl
sakis3g/scripts/compile
sakis3g/scripts/device-database-gen"
decompressor="bunzip2"
extension="bz2"
PACKAGE_OFFSET=17
handler_get_file() {
[ ! -x "${MEGZ}" ] && return 1
bn=`basename "$1"`; [ "a${bn}" = "a" ] && return 1
dd "if=${MEGZ}" "bs=${BLOCKSIZE}" "skip=${PACKAGE_OFFSET}" of="/tmp/sakis3gz.$$.tar.${extension}" >/dev/null 2>&1
[ ! -f "/tmp/sakis3gz.$$.tar.${extension}" ] && return 1
if [ ! -s "/tmp/sakis3gz.$$.tar.${extension}" ]; then
rm -f "/tmp/sakis3gz.$$.tar.${extension}"; return 1
fi
tar xf "/tmp/sakis3gz.$$.tar.${extension}" "$1" -O | dd "of=/tmp/sakis3gz.$$.${bn}" >/dev/null 2>&1
rm -f "/tmp/sakis3gz.$$.tar.${extension}"
[ ! -f "/tmp/sakis3gz.$$.${bn}" ] && return 1
if [ ! -s "/tmp/sakis3gz.$$.${bn}" ]; then
rm -f "/tmp/sakis3gz.$$.${bn}"; return 1
fi
export EXTRACTED="/tmp/sakis3gz.$$.${bn}"
return 0
}
handler_disassemble() {
[ ! -x "${MEGZ}" ] && return 1
if [ "a${stripped}" != "a" ]; then
echo "This version cannot be disassembled."
return 0
fi
if [ "a$1" = "a" ]; then
echo "Usage: ${MEGZ} disassemble <destination>" >> /dev/stderr
return 0
fi
if [ ! -d "$1" ]; then
echo "Destination directory \"$1\" was not found." >> /dev/stderr
return 0
fi
dd "if=${MEGZ}" "bs=${BLOCKSIZE}" "skip=${PACKAGE_OFFSET}" of="/tmp/sakis3gz.$$.tar.${extension}" >/dev/null 2>&1
[ ! -f "/tmp/sakis3gz.$$.tar.${extension}" ] && return 1
if [ ! -s "/tmp/sakis3gz.$$.tar.${extension}" ]; then
rm -f "/tmp/sakis3gz.$$.tar.${extension}"; return 1
fi
mkdir "$1/sakis3g-${MYVERSION}"
if [ ! -d "$1/sakis3g-${MYVERSION}" ]; then
rm -f "/tmp/sakis3gz.$$.tar.${extension}"; return 1
fi
oldtar=`tar --version 2> /dev/null | grep "GNU tar" | sed -e "s/^\(.*\) \([0-9.][0-9.]*\)$/\2/g" | sed -e "s/\.//g" | cut -b1-2`
if [ "a${oldtar}" != "a" ] && [ "${oldtar}" -lt "12" ]; then
tar -C "$1/sakis3g-${MYVERSION}" -x -v -f "/tmp/sakis3gz.$$.tar.${extension}"
mv "$1/sakis3g-${MYVERSION}/sakis3g/"* "$1/sakis3g-${MYVERSION}/."
else
tar --transform "s/^sakis3g\///g" -C "$1/sakis3g-${MYVERSION}" -x -v -f "/tmp/sakis3gz.$$.tar.${extension}"
fi
rm -f "/tmp/sakis3gz.$$.tar.${extension}"
rmdir "$1/sakis3g-${MYVERSION}/sakis3g"
return 0
}
handler_cat() {
! handler_get_file "$1" && return 1
[ ! -f "${EXTRACTED}" ] && return 1
cat "${EXTRACTED}"; rm -f "${EXTRACTED}"; unset EXTRACTED
return 0
}
handler_exec() {
! handler_get_file "$1" && return 1
[ ! -f "${EXTRACTED}" ] && return 1
chmod +x "${EXTRACTED}"
export PROVIDER="${MEGZ}"
[ "$#" -gt "0" ] && shift
if [ ! "`which ldd 2>/dev/null`" ]; then
"${EXTRACTED}" "$@"
ret=$?
else
akis3g=`echo "${EXTRACTED}" | grep "sakis3g$"`
if [ "a${akis3g}" = "a" ]; then
ldd "${EXTRACTED}" >/dev/null 2>&1
ret=$?
unset akis3g
if [ "${ret}" -eq "0" ]; then
"${EXTRACTED}" "$@"
ret=$?
else
echo "Binary not available for this platform. Please recompile." > /dev/stderr
ret=95
fi
else
unset akis3g
"${EXTRACTED}" "$@"
ret=$?
fi
fi
rm -f "${EXTRACTED}"; unset EXTRACTED
return ${ret}
}
if [ "a$1" = "als" ]; then
echo "${PACKAGE_CONTENTS}"
exit 0
fi
for dep in dd tar ${decompressor} grep head basename chmod readlink
do
[ ! "`which ${dep} 2>/dev/null`" ] && echo "${dep} not found in path." > /dev/stderr && exit 1
done
export MEGZ="$0"
file="$1";
[ "a`basename "$0"`" = "ausb_modeswitch" ] && file="usb_modeswitch"
[ "a${file}" = "a" ] && file="sakis3g/src/sakis3g"
[ "a${file}" = "adisassemble" ] && unset file && handler_disassemble "$2" && exit $?
if [ "a${file}" = "agetfile" ]; then
unset file
[ "a$2" = "a" ] && exit 99
filexists=`echo "${PACKAGE_CONTENTS}" | grep -e "${2}$" | head -1`
[ "a${filexists}" != "a" ] && handler_cat "${filexists}" && unset filexists && exit 0
unset filexists
exit 99
fi
filexists=`echo "${PACKAGE_EXECUTABLES}" | grep -e "${file}$" | head -1`
if [ "a${filexists}" != "a" ]; then
unset file
[ "a`basename ${MEGZ}`" != "ausb_modeswitch" ] && [ "$#" -gt "0" ] && shift; handler_exec "${filexists}" "$@"
exit $?
else
unset filexists
filexists=`echo "${PACKAGE_CONTENTS}" | grep -e "${file}$" | head -1`
unset file
if [ "a`basename ${MEGZ}`" = "ausb_modeswitch" -a "a${filexists}" = "a" ]; then
MEGZ=`readlink -f "${MEGZ}"`
export MEGZ
handler_exec "sakis3g/src/sakis3g" usb_modeswitch "$@"
exit $?
elif [ "a${filexists}" != "a" ]; then
handler_cat "${filexists}"
exit $?
else
handler_exec "sakis3g/src/sakis3g" "$@"
exit $?
fi
fi
exit 99
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment