Skip to content

Commit 0bdf311

Browse files
committed
module: Refactor for clarity and prettify
Signed-off-by: Rem01Gaming <Rem01_Gaming@proton.me>
1 parent 49ecec6 commit 0bdf311

5 files changed

Lines changed: 137 additions & 120 deletions

File tree

module/action.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#!/bin/sh
22
if [ -z "$MMRL" ] && [ ! -z "$MAGISKTMP" ]; then
3-
pm path io.github.a13e300.ksuwebui > /dev/null 2>&1 && {
3+
pm path io.github.a13e300.ksuwebui >/dev/null 2>&1 && {
44
echo "- Launching WebUI in KSUWebUIStandalone..."
55
am start -n "io.github.a13e300.ksuwebui/.WebUIActivity" -e id "net-switch"
66
exit 0
77
}
8-
pm path com.dergoogler.mmrl > /dev/null 2>&1 && {
8+
pm path com.dergoogler.mmrl >/dev/null 2>&1 && {
99
echo "- Launching WebUI in MMRL WebUI..."
1010
am start -n "com.dergoogler.mmrl/.ui.activity.webui.WebUIActivity" -e MOD_ID "net-switch"
1111
exit 0

module/customize.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ if [ "$KSU" = "true" ] || [ "$APATCH" = "true" ]; then
1111
touch "$MODPATH/skip_mount"
1212
# symlink ourselves on $PATH
1313
manager_paths="/data/adb/ap/bin /data/adb/ksu/bin"
14-
for i in $manager_paths; do
15-
if [ -d "$i" ]; then
16-
echo "[+] creating symlink in $i"
17-
ln -sf /data/adb/modules/net-switch/system/bin/netswitch "$i/netswitch"
14+
for dir in $manager_paths; do
15+
if [ -d "$dir" ]; then
16+
echo "[+] creating symlink in $dir"
17+
ln -sf /data/adb/modules/net-switch/system/bin/netswitch "$dir/netswitch"
1818
fi
1919
done
2020
fi

module/service.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ until [ "$(getprop sys.boot_completed)" = "1" ] && [ -f /data/system/packages.li
44
sleep 1
55
done
66

7-
packages="$( sed 's|[]\"[]||g; s|,| |g' /data/adb/net-switch/isolated.json )"
7+
packages="$(sed 's|[]\"[]||g; s|,| |g' /data/adb/net-switch/isolated.json)"
88
for apk in $packages; do
99
uid="$(grep $apk /data/system/packages.list | awk '{print $2; exit}')"
1010
[ ! -z $uid ] && {
1111
iptables -I OUTPUT -m owner --uid-owner $uid -j REJECT
1212
ip6tables -I OUTPUT -m owner --uid-owner $uid -j REJECT
1313
# debug
14-
echo "net-switch: blocked $apk with uid: $uid" >> /dev/kmsg
15-
}
14+
echo "net-switch: blocked $apk with uid: $uid" >>/dev/kmsg
15+
}
1616
done

module/system/bin/netswitch

Lines changed: 124 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -2,136 +2,150 @@
22

33
JSON_FILE="/data/adb/net-switch/isolated.json"
44

5+
cli_usage() {
6+
echo "Usage: netswitch {block|unblock|list} [package-name...]"
7+
echo "Commands:"
8+
echo " block <package-name> [package-name...] Block internet access for specified packages"
9+
echo " unblock <package-name|all> [package-name...] Unblock internet access for specified packages"
10+
echo " list Show currently blocked packages"
11+
}
12+
513
get_uid() {
6-
package="$1"
7-
uid="$(pm list packages -U | grep "^package:$package " | sed 's/.*uid:\([0-9]*\).*/\1/' | cut -d',' -f1)"
8-
if [ -n "$uid" ]; then
9-
echo "$uid"
10-
return 0
11-
fi
12-
return 1
14+
package="$1"
15+
uid="$(pm list packages -U | grep "^package:$package " | sed 's/.*uid:\([0-9]*\).*/\1/' | cut -d',' -f1)"
16+
[ ! -n "$uid" ] && return 1
17+
echo "$uid"
18+
return 0
1319
}
1420

1521
read_json() {
16-
if [ -f "$JSON_FILE" ]; then
17-
cat "$JSON_FILE" | tr -d '[]" ' | tr ',' ' '
18-
fi
22+
if [ -f "$JSON_FILE" ]; then
23+
cat "$JSON_FILE" | tr -d '[]" ' | tr ',' ' '
24+
fi
1925
}
2026

2127
write_json() {
22-
if [ $# -eq 0 ]; then
23-
echo "[]" > "$JSON_FILE"
24-
else
25-
(printf "["; first=1; for pkg in "$@"; do
26-
if [ $first -eq 1 ]; then
27-
printf "\"%s\"" "$pkg"
28-
first=0
29-
else
30-
printf ",\"%s\"" "$pkg"
31-
fi
32-
done; printf "]") > "$JSON_FILE"
33-
fi
28+
if [ $# -eq 0 ]; then
29+
echo "[]" >"$JSON_FILE"
30+
return 0
31+
fi
32+
33+
(
34+
printf "["
35+
first=1
36+
for pkg in "$@"; do
37+
if [ $first -eq 1 ]; then
38+
printf "\"%s\"" "$pkg"
39+
first=0
40+
else
41+
printf ",\"%s\"" "$pkg"
42+
fi
43+
done
44+
printf "]"
45+
) >"$JSON_FILE"
3446
}
3547

3648
block_package() {
37-
package="$1"
38-
uid="$(get_uid "$package")"
39-
if [ $? -ne 0 ] || [ -z "$uid" ]; then
40-
echo "Error: Package '$package' not found"
41-
return 1
42-
fi
43-
iptables -I OUTPUT -m owner --uid-owner "$uid" -j REJECT
44-
ip6tables -I OUTPUT -m owner --uid-owner "$uid" -j REJECT
45-
current_packages="$(read_json)"
46-
for p in $current_packages; do
47-
if [ "$p" = "$package" ]; then
48-
echo "Package $package is already blocked"
49-
return 0
50-
fi
51-
done
52-
write_json $current_packages $package
53-
echo "Blocked internet access for $package (UID: $uid)"
49+
package="$1"
50+
uid="$(get_uid "$package")"
51+
if [ $? -ne 0 ] || [ -z "$uid" ]; then
52+
echo "Error: Package '$package' not found"
53+
return 1
54+
fi
55+
56+
iptables -I OUTPUT -m owner --uid-owner "$uid" -j REJECT
57+
ip6tables -I OUTPUT -m owner --uid-owner "$uid" -j REJECT
58+
59+
current_packages="$(read_json)"
60+
for app in $current_packages; do
61+
if [ "$app" = "$package" ]; then
62+
echo "Package $package is already blocked"
63+
return 0
64+
fi
65+
done
66+
67+
write_json $current_packages $package
68+
echo "Blocked internet access for $package (UID: $uid)"
5469
}
5570

5671
unblock_package() {
57-
package="$1"
58-
uid="$(get_uid "$package")"
59-
if [ $? -ne 0 ] || [ -z "$uid" ]; then
60-
echo "Error: Package '$package' not found"
61-
return 1
62-
fi
63-
iptables -D OUTPUT -m owner --uid-owner "$uid" -j REJECT 2>/dev/null
64-
ip6tables -D OUTPUT -m owner --uid-owner "$uid" -j REJECT 2>/dev/null
65-
current_packages="$(read_json)"
66-
new_packages=""
67-
for p in $current_packages; do
68-
if [ "$p" != "$package" ]; then
69-
new_packages="$new_packages $p"
70-
fi
71-
done
72-
write_json $new_packages
73-
echo "Unblocked internet access for $package (UID: $uid)"
72+
package="$1"
73+
uid="$(get_uid "$package")"
74+
if [ $? -ne 0 ] || [ -z "$uid" ]; then
75+
echo "Error: Package '$package' not found"
76+
return 1
77+
fi
78+
79+
iptables -D OUTPUT -m owner --uid-owner "$uid" -j REJECT 2>/dev/null
80+
ip6tables -D OUTPUT -m owner --uid-owner "$uid" -j REJECT 2>/dev/null
81+
82+
current_packages="$(read_json)"
83+
new_packages=""
84+
for app in $current_packages; do
85+
[ "$app" != "$package" ] && new_packages="$new_packages $app"
86+
done
87+
88+
write_json $new_packages
89+
echo "Unblocked internet access for $package (UID: $uid)"
7490
}
7591

7692
unblock_all() {
77-
for package in $(read_json); do
78-
unblock_package "$package"
79-
done
80-
write_json
81-
echo "Unblocked all packages"
93+
for package in $(read_json); do
94+
unblock_package "$package"
95+
done
96+
write_json
97+
echo "Unblocked all packages"
8298
}
8399

84100
list_blocked() {
85-
packages="$(read_json)"
86-
if [ -z "$packages" ]; then
87-
echo "No packages are currently blocked"
88-
else
89-
echo "Currently blocked packages:"
90-
for package in $packages; do
91-
uid="$(get_uid "$package")"
92-
if [ $? -eq 0 ] && [ -n "$uid" ]; then
93-
echo "- $package (UID: $uid)"
94-
else
95-
echo "- $package (package no longer exists)"
96-
fi
97-
done
98-
fi
101+
packages="$(read_json)"
102+
if [ -z "$packages" ]; then
103+
echo "No packages are currently blocked"
104+
exit 0
105+
fi
106+
107+
echo "Currently blocked packages:"
108+
for package in $packages; do
109+
uid="$(get_uid "$package")"
110+
if [ $? -eq 0 ] && [ -n "$uid" ]; then
111+
echo "- $package (UID: $uid)"
112+
else
113+
echo "- $package (package no longer exists)"
114+
fi
115+
done
116+
}
117+
118+
handle_block() {
119+
if [ $# -eq 0 ]; then
120+
echo -e "Error: Bad arguments\nTry 'netswitch help' for more information."
121+
exit 1
122+
fi
123+
124+
for package in "$@"; do
125+
block_package "$package"
126+
done
127+
}
128+
129+
handle_unblock() {
130+
if [ $# -eq 0 ]; then
131+
echo -e "Error: Bad arguments\nTry 'netswitch help' for more information."
132+
exit 1
133+
fi
134+
135+
if [ "$1" = "all" ]; then
136+
unblock_all
137+
exit 0
138+
fi
139+
140+
for package in "$@"; do
141+
unblock_package "$package"
142+
done
99143
}
100144

101145
case "$1" in
102-
"block")
103-
shift
104-
if [ $# -eq 0 ]; then
105-
echo "Usage: netswitch block <package-name> [package-name...]"
106-
exit 1
107-
fi
108-
for package in "$@"; do
109-
block_package "$package"
110-
done
111-
;;
112-
"unblock")
113-
shift
114-
if [ $# -eq 0 ]; then
115-
echo "Usage: netswitch unblock <package-name|all> [package-name...]"
116-
exit 1
117-
fi
118-
if [ "$1" = "all" ]; then
119-
unblock_all
120-
else
121-
for package in "$@"; do
122-
unblock_package "$package"
123-
done
124-
fi
125-
;;
126-
"list")
127-
list_blocked
128-
;;
129-
*)
130-
echo "Usage: netswitch {block|unblock|list} [package-name...]"
131-
echo "Commands:"
132-
echo " block <package-name> [package-name...] Block internet access for specified packages"
133-
echo " unblock <package-name|all> [package-name...] Unblock internet access for specified packages"
134-
echo " list Show currently blocked packages"
135-
exit 1
136-
;;
146+
"block") shift && handle_block $@ ;;
147+
"unblock") shift && handle_unblock $@ ;;
148+
"list") list_blocked ;;
149+
"help") cli_usage ;;
150+
*) cli_usage && exit 1 ;;
137151
esac

module/uninstall.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#!/bin/sh
2+
3+
# remove configs
24
rm -rf /data/adb/net-switch
5+
36
# clean our symlinks
4-
rm /data/adb/ap/bin/netswitch
7+
rm /data/adb/ap/bin/netswitch
58
rm /data/adb/ksu/bin/netswitch

0 commit comments

Comments
 (0)