16e4c67992
Previously, Magisk uses persist or cache for storing modules' custom sepolicy rules. In this commit, we significantly broaden its compatibility and also prevent mounting errors. The persist partition is non-standard and also critical for Snapdragon devices, so we prefer not to use it by default. We will go through the following logic to find the best suitable non-volatile, writable location to store and load sepolicy.rule files: Unencrypted data -> FBE data unencrypted dir -> cache -> metadata -> persist This should cover almost all possible cases: very old devices have cache partitions; newer devices will use FBE; latest devices will use metadata FBE (which guarantees a metadata parition); and finally, all Snapdragon devices have the persist partition (as a last resort). Fix #3179
36 lines
1.2 KiB
C++
36 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
|
|
#define MAIN_SOCKET "d30138f2310a9fb9c54a3e0c21f58591"
|
|
#define JAVA_PACKAGE_NAME "com.topjohnwu.magisk"
|
|
#define LOGFILE "/cache/magisk.log"
|
|
#define UNBLOCKFILE "/dev/.magisk_unblock"
|
|
#define SECURE_DIR "/data/adb"
|
|
#define MODULEROOT SECURE_DIR "/modules"
|
|
#define MODULEUPGRADE SECURE_DIR "/modules_update"
|
|
#define DATABIN SECURE_DIR "/magisk"
|
|
#define MAGISKDB SECURE_DIR "/magisk.db"
|
|
#define MANAGERAPK DATABIN "/magisk.apk"
|
|
|
|
// tmpfs paths
|
|
extern std::string MAGISKTMP;
|
|
#define INTLROOT ".magisk"
|
|
#define MIRRDIR INTLROOT "/mirror"
|
|
#define RULESDIR MIRRDIR "/sepolicy.rules"
|
|
#define BLOCKDIR INTLROOT "/block"
|
|
#define MODULEMNT INTLROOT "/modules"
|
|
#define BBPATH INTLROOT "/busybox"
|
|
#define ROOTOVL INTLROOT "/rootdir"
|
|
#define ROOTMNT ROOTOVL "/.mount_list"
|
|
|
|
constexpr const char *applet_names[] = { "su", "resetprop", "magiskhide", nullptr };
|
|
constexpr const char *init_applet[] = { "magiskpolicy", "supolicy", nullptr };
|
|
|
|
// Multi-call entrypoints
|
|
int magisk_main(int argc, char *argv[]);
|
|
int magiskhide_main(int argc, char *argv[]);
|
|
int magiskpolicy_main(int argc, char *argv[]);
|
|
int su_client_main(int argc, char *argv[]);
|
|
int resetprop_main(int argc, char *argv[]);
|