From 458b033a0a684a78e8878a012d76178669595cde Mon Sep 17 00:00:00 2001 From: lordwelch Date: Tue, 3 Mar 2020 15:31:32 -0800 Subject: [PATCH] verified working script. need to investing rc seclabel --- bin/ghid.sh | 70 ++++++++++++++--------- customize.sh | 125 +++++++++++++++++++++++++++++++++++++++++ module.prop | 2 +- overlay.d/ghid.rc | 2 +- overlay.d/sbin/testing | 1 - 5 files changed, 170 insertions(+), 30 deletions(-) delete mode 100644 overlay.d/sbin/testing diff --git a/bin/ghid.sh b/bin/ghid.sh index f729965..797c211 100644 --- a/bin/ghid.sh +++ b/bin/ghid.sh @@ -4,45 +4,61 @@ controller=$(getprop sys.usb.controller) moddir=${0%bin/*} selected=standard-keyboard remove_ghid() { - rm /config/usb_gadget/g1/configs/b.1/fhid - rmdir /config/usb_gadget/g1/functions/hid.usb0 - echo "$controller" >/config/usb_gadget/g1/UDC + echo "disabling ghid" >>$moddir/ghid.log + rm /config/usb_gadget/g1/configs/b.1/fhid + rmdir /config/usb_gadget/g1/functions/hid.usb0 + echo "$controller" >/config/usb_gadget/g1/UDC } enable_ghid() { - running=true - . "$moddir/definitions/$selected" - if [ ! -d /config/usb_gadget/g1/functions/hid.usb0 ]; then - mkdir /config/usb_gadget/g1/functions/hid.usb0 - fi - current_protocols="$(cat /config/usb_gadget/g1/functions/hid.usb0/protocol)" - current_subclasses="$(cat /config/usb_gadget/g1/functions/hid.usb0/subclass)" - current_report_lengths="$(cat /config/usb_gadget/g1/functions/hid.usb0/report_length)" + echo "enabling ghid" >>$moddir/ghid.log + running=true + . "$moddir/definitions/$selected" + if [ ! -d /config/usb_gadget/g1/functions/hid.usb0 ]; then + mkdir /config/usb_gadget/g1/functions/hid.usb0 + fi + current_protocols="$(cat /config/usb_gadget/g1/functions/hid.usb0/protocol)" + current_subclasses="$(cat /config/usb_gadget/g1/functions/hid.usb0/subclass)" + current_report_lengths="$(cat /config/usb_gadget/g1/functions/hid.usb0/report_length)" + echo "current ghid" >>$moddir/ghid.log + echo current_protocols $current_protocols >>$moddir/ghid.log + echo current_subclasses $current_subclasses >>$moddir/ghid.log + echo current_report_lengths $current_report_lengths >>$moddir/ghid.log - if ! { [[ -e /config/usb_gadget/g1/functions/hid.usb0 -a "$current_protocols" == "$protocols" -a "$current_subclasses" == "$subclasses" -a "$current_report_lengths" == "$report_lengths" ]] && diff "$moddir/reports/$report_names" /config/usb_gadget/g1/functions/hid.usb0/report_desc } ; then - return 0 - fi + if [ -e /config/usb_gadget/g1/functions/hid.usb0 -a "$current_protocols" == "$protocols" -a "$current_subclasses" == "$subclasses" -a "$current_report_lengths" == "$report_lengths" ] && diff "$moddir/reports/$report_names" /config/usb_gadget/g1/functions/hid.usb0/report_desc ; then + echo nothing to update >>$moddir/ghid.log + return 0 + fi + echo new ghid >>$moddir/ghid.log - echo $protocols >/config/usb_gadget/g1/functions/hid.usb0/protocol - echo $subclasses >/config/usb_gadget/g1/functions/hid.usb0/subclass - echo $report_lengths >/config/usb_gadget/g1/functions/hid.usb0/report_length - cp $report_names /config/usb_gadget/g1/functions/hid.usb0/report_desc - ln -s /config/usb_gadget/g1/functions/hid.usb0 /config/usb_gadget/g1/configs/b.1/fhid - echo "$controller" >/config/usb_gadget/g1/UDC + echo $protocols >>$moddir/ghid.log + echo $subclasses >>$moddir/ghid.log + echo $report_lengths >>$moddir/ghid.log + + rm /config/usb_gadget/g1/configs/b.1/fhid + echo $protocols >/config/usb_gadget/g1/functions/hid.usb0/protocol + echo $subclasses >/config/usb_gadget/g1/functions/hid.usb0/subclass + echo $report_lengths >/config/usb_gadget/g1/functions/hid.usb0/report_length + cp "$moddir/reports/$report_names" /config/usb_gadget/g1/functions/hid.usb0/report_desc + cd /config/usb_gadget/g1/configs/b.1/ + /data/adb/magisk/busybox ln -nsf ../../../../usb_gadget/g1/functions/hid.usb0 ./fhid + echo none >/config/usb_gadget/g1/UDC + echo "$controller" >/config/usb_gadget/g1/UDC } +echo success ghid was run >>$moddir/ghid.log if ! [[ "$1" == "setup" ]]; then - exit 1 + exit 1 fi shift case "$1" in - ""|"none" ) - remove_ghid - ;; - * ) - enable_ghid - ;; + ""|"none" ) + remove_ghid + ;; + * ) + enable_ghid + ;; esac diff --git a/customize.sh b/customize.sh index 4d88cfc..37e1de8 100644 --- a/customize.sh +++ b/customize.sh @@ -1,2 +1,127 @@ +#!/bin/sh +chmod 755 $MODPATH/bin/ghid.sh sed "s@\[MODDIR\]@$MODPATH@g" "$MODPATH/overlay.d/ghid.rc" | sed 's/modules_update/modules/g' >"$TMPDIR/ghid.rc" cp "$TMPDIR/ghid.rc" "$MODPATH/overlay.d/ghid.rc" + +rpwd="$PWD" + + + + ########################################################################################## + # Initialization + ########################################################################################## + cd "$MAGISKBIN" + get_flags + find_boot_image + + [ -e "$BOOTIMAGE" ] || abort "$BOOTIMAGE does not exist!" + + # Flags + [ -z "$KEEPVERITY" ] && KEEPVERITY=false + [ -z "$KEEPFORCEENCRYPT" ] && KEEPFORCEENCRYPT=false + [ -z "$RECOVERYMODE" ] && RECOVERYMODE=false + export KEEPVERITY + export KEEPFORCEENCRYPT + + chmod -R 755 . + + eval "$BOOTSIGNER" -verify < "$BOOTIMAGE" && BOOTSIGNED=true + "$BOOTSIGNED" && ui_print "- Boot image is signed with AVB 1.0" + + ########################################################################################## + # Start bootpatch + ########################################################################################## + + ########################################################################################## + # Unpack + ########################################################################################## + + CHROMEOS=false + + ui_print "- Unpacking boot image" + ./magiskboot unpack "$BOOTIMAGE" + + case $? in + 1 ) + abort "! Unsupported/Unknown image format" + ;; + 2 ) + ui_print "- ChromeOS boot image detected" + CHROMEOS=true + ;; + esac + + [ -f recovery_dtbo ] && RECOVERYMODE=true + + ########################################################################################## + # Ramdisk restores + ########################################################################################## + + # Test patch status and do restore + ui_print "- Checking ramdisk status" + if [ -e ramdisk.cpio ]; then + ./magiskboot cpio ramdisk.cpio test + STATUS=$? + else + # Stock A only system-as-root + STATUS=0 + fi + case $((STATUS & 3)) in + 0 ) # Stock boot + ui_print "- Stock boot image detected" + abort "Magisk not installed????" + ;; + 1 ) # Magisk patched + ui_print "- Magisk patched boot image detected" + ;; + 2 ) # Unsupported + ui_print "! Boot image patched by unsupported programs" + abort "! Please restore back to stock boot image" + ;; + esac + + ########################################################################################## + # Ramdisk patches + ########################################################################################## + + ui_print "- Patching ramdisk" + ui_print "- Adding overlay.d/ghid.rc" + + ./magiskboot cpio ramdisk.cpio \ + "mkdir 755 overlay.d" \ + "add 755 overlay.d/ghid.rc $MODPATH/overlay.d/ghid.rc" + + if [ $((STATUS & 4)) -ne 0 ]; then + ui_print "- Compressing ramdisk" + ./magiskboot cpio ramdisk.cpio compress + fi + + rm -f ramdisk.cpio.orig config + + ui_print "- Repacking boot image" + ./magiskboot repack "$BOOTIMAGE" || abort "! Unable to repack boot image!" + + # Sign chromeos boot + $CHROMEOS && sign_chromeos + + ########################################################################################## + # End bootpatch + ########################################################################################## + + + ui_print "- Flashing new boot image" + + if ! flash_image new-boot.img "$BOOTIMAGE"; then + ui_print "- Compressing ramdisk to fit in partition" + ./magiskboot cpio ramdisk.cpio compress + ./magiskboot repack "$BOOTIMAGE" + flash_image new-boot.img "$BOOTIMAGE" || abort "! Insufficient partition size" + fi + + ./magiskboot cleanup + rm -f new-boot.img + + patch_dtb_partitions + run_migrations + +cd "$rpwd" diff --git a/module.prop b/module.prop index 2c42677..c343950 100644 --- a/module.prop +++ b/module.prop @@ -1,6 +1,6 @@ id=ghid name=ghid version=0 -versionCode=6 +versionCode=20 author=lordwelch description=creates ghid device files in /dev diff --git a/overlay.d/ghid.rc b/overlay.d/ghid.rc index 9049d43..53dc614 100644 --- a/overlay.d/ghid.rc +++ b/overlay.d/ghid.rc @@ -1,2 +1,2 @@ on property:sys.usb.ffs.ready=1 && property:sys.usb.config=* && property:sys.usb.configfs=1 - exec - -- [MODDIR]/bin/ghid.sh setup ${sys.usb.config} + exec u:object_r:magisk:s0 root root -- [MODDIR]/bin/ghid.sh setup ${sys.usb.config} diff --git a/overlay.d/sbin/testing b/overlay.d/sbin/testing deleted file mode 100644 index 038d718..0000000 --- a/overlay.d/sbin/testing +++ /dev/null @@ -1 +0,0 @@ -testing