-
Notifications
You must be signed in to change notification settings - Fork 316
Expand file tree
/
Copy pathutils.sh
More file actions
68 lines (62 loc) · 2.06 KB
/
Copy pathutils.sh
File metadata and controls
68 lines (62 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/sh
PATH=/data/adb/ksu/bin:$PATH
kernel_version='default'
kernel_build='default'
[ -f $PERSISTENT_DIR/config.sh ] && . $PERSISTENT_DIR/config.sh
## susfs_clone_perm <file/or/dir/perm/to/be/changed> <file/or/dir/to/clone/from>
susfs_clone_perm() {
TO=$1
FROM=$2
if [ -z "${TO}" -o -z "${FROM}" ]; then
return
fi
CLONED_PERM_STRING=$(stat -c "%a %U %G" ${FROM})
set ${CLONED_PERM_STRING}
chmod $1 ${TO}
chown $2:$3 ${TO}
busybox chcon --reference=${FROM} ${TO}
}
## susfs_hexpatch_props <target_prop_name> <spoofed_prop_name> <spoofed_prop_value>
susfs_hexpatch_props() {
TARGET_PROP_NAME=$1
SPOOFED_PROP_NAME=$2
SPOOFED_PROP_VALUE=$3
if [ -z "${TARGET_PROP_NAME}" -o -z "${SPOOFED_PROP_NAME}" -o -z "${SPOOFED_PROP_VALUE}" ]; then
return 1
fi
if [ "${#TARGET_PROP_NAME}" != "${#SPOOFED_PROP_NAME}" ]; then
return 1
fi
resetprop -n ${TARGET_PROP_NAME} ${SPOOFED_PROP_VALUE}
magiskboot hexpatch /dev/__properties__/$(resetprop -Z ${TARGET_PROP_NAME}) $(echo -n ${TARGET_PROP_NAME} | xxd -p | tr "[:lower:]" "[:upper:]") $(echo -n ${SPOOFED_PROP_NAME} | xxd -p | tr "[:lower:]" "[:upper:]")
}
check_missing_prop() {
local NAME=$1
local EXPECTED=$2
local VALUE=$(resetprop $NAME)
[ -z $VALUE ] && resetprop $NAME $EXPECTED # if the property is missing
}
check_reset_prop() {
local NAME=$1
local EXPECTED=$2
local VALUE=$(resetprop $NAME)
[ -z $VALUE ] || [ $VALUE = $EXPECTED ] || resetprop $NAME $EXPECTED # if the property is not what we expect
}
check_missing_match_prop() {
local NAME=$1
local EXPECTED=$2
local VALUE=$(resetprop $NAME)
[ -z $VALUE ] || [ $VALUE = $EXPECTED ] || resetprop $NAME $EXPECTED # if the property is not what we expect
[ -z $VALUE ] && resetprop $NAME $EXPECTED # if the property is missing
}
contains_reset_prop() {
local NAME=$1
local CONTAINS=$2
local NEWVAL=$3
[[ "$(resetprop $NAME)" = *"$CONTAINS"* ]] && resetprop $NAME $NEWVAL
}
spoof_uname() {
[ -z $kernel_version ] && kernel_version='default'
[ -z $kernel_build ] && kernel_build='default'
${SUSFS_BIN} set_uname "$kernel_version" "$kernel_build"
}