summaryrefslogtreecommitdiffstats
path: root/scripts/netcfg
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/netcfg')
-rwxr-xr-xscripts/netcfg101
1 files changed, 101 insertions, 0 deletions
diff --git a/scripts/netcfg b/scripts/netcfg
new file mode 100755
index 0000000..e00794d
--- /dev/null
+++ b/scripts/netcfg
@@ -0,0 +1,101 @@
+#!/bin/bash
+
+. /usr/lib/network/network
+
+NETCFG_VER=2.6
+
+version()
+{
+ echo "netcfg v$NETCFG_VER"
+}
+
+usage()
+{
+ version
+ echo "Usage:"
+ echo " Start specified profile: netcfg profile "
+ echo " Other functions: netcfg argument profile"
+ echo "Arguments:"
+ echo " current Report currently running profiles"
+ echo "-a, all-down Take all active profiles down"
+ echo "-c, check-iface Do not start profile if interface is already up"
+ echo "-d, down Take specified profile down"
+ echo "-h, help This help message"
+ echo "-i, iface-down Take down profile active on specified interface"
+ echo "-l, list List all available profiles"
+ echo "-r, reconnect Disconnect and reconnect specified profile"
+ echo "-u, up Start specified profile"
+ echo "-v, version Output version information and exit"
+ echo " all-resume Resume previously suspended profiles and reconnect them"
+ echo " all-suspend Store a list of current running profiles and suspend them"
+}
+
+# TODO: Re-add ROOT check and rewrite with getopts from BashFAQ
+
+case "$1" in
+ --version|-v|version)
+ version
+ exit 0;;
+ --help|-h|help)
+ usage
+ exit 0;;
+ list|-l)
+ list_profiles
+ exit 0;;
+ current|-s|status)
+ if [[ -d "$STATE_DIR/profiles/" ]]; then
+ ls "$STATE_DIR/profiles/"
+ exit 0
+ else
+ exit_stderr "No active profiles."
+ fi;;
+esac
+
+if [[ $(id -u) -gt 0 ]]; then
+ exit_stderr "This script should be run as root."
+fi
+
+# Ensure cwd is not in a transient directory, which may prevent unmounting due to netcfg children
+cd /
+
+case "$1" in
+
+ -c|check-iface|-u|up)
+ CHECK="YES"
+ profile_up "$2";;
+ clean)
+ rm "$STATE_DIR/interfaces"/* 2> /dev/null
+ rm "$STATE_DIR/profiles"/* 2> /dev/null
+ rm "$STATE_DIR/suspend"/* 2> /dev/null
+ rm "$STATE_DIR/last_profile" 2> /dev/null
+ killall wpa_supplicant 2> /dev/null
+ killall dhcpcd 2> /dev/null
+ ;;
+ -d|down)
+ profile_down "$2";;
+ -i|iface-down)
+ interface_down "$2";;
+ -a|all-down)
+ all_down;;
+ -r|reconnect)
+ profile_down "$2"
+ profile_up "$2";;
+ all-resume)
+ all_resume;;
+ all-suspend)
+ all_suspend;;
+ -*|--*)
+ usage
+ exit 1;;
+ *)
+ if [[ -n "$1" ]]; then
+ profile_up "$1"
+ else
+ usage
+ exit 1
+ fi
+ ;;
+esac
+exit $?
+
+# vim: ft=sh ts=4 et sw=4: