Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
},
"cordova-plugin-websocket": {},
"cordova-plugin-buildinfo": {},
"com.foxdebug.acode.rk.exec.proot": {},
"cordova-plugin-system": {},
"com.foxdebug.acode.rk.exec.terminal": {}
},
Expand Down Expand Up @@ -64,7 +63,6 @@
"@types/url-parse": "^1.4.11",
"autoprefixer": "^10.4.19",
"babel-loader": "^9.1.3",
"com.foxdebug.acode.rk.exec.proot": "file:src/plugins/proot",
"com.foxdebug.acode.rk.exec.terminal": "file:src/plugins/terminal",
"cordova-android": "^13.0.0",
"cordova-clipboard": "^1.3.0",
Expand Down
1 change: 1 addition & 0 deletions src/plugins/terminal/scripts/init-alpine.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ fi
ln -sf /bin/bash /bin/login

if [ "$1" = "--installing" ]; then
mkdir -p $PREFIX/.configured
echo "Installation completed."
exit 0
fi
Expand Down
30 changes: 20 additions & 10 deletions src/plugins/terminal/scripts/init-sandbox.sh
Original file line number Diff line number Diff line change
@@ -1,25 +1,35 @@
export LD_LIBRARY_PATH=$PREFIX
export PROOT_TMP_DIR=$PREFIX/tmp

mkdir -p "$PREFIX/tmp"

if [ -f "$NATIVE_DIR/libproot.so" ]; then
export PROOT_LOADER="$NATIVE_DIR/libproot.so"
fi
if [ "$FDROID" = "true" ]; then

if [ -f "$NATIVE_DIR/libproot32.so" ]; then
export PROOT_LOADER32="$NATIVE_DIR/libproot32.so"
fi
if [ -f "$PREFIX/libproot.so" ]; then
export PROOT_LOADER="$PREFIX/libproot.so"
fi

if [ -f "$PREFIX/libproot32.so" ]; then
export PROOT_LOADER32="$PREFIX/libproot32.so"
fi

mkdir -p "$PREFIX/tmp"

if [ "$FDROID" = "true" ]; then
export PROOT="$PREFIX/libproot-xed.so"
chmod +x $PROOT
chmod +x $PREFIX/libtalloc.so.2
chmod +x $PREFIX/*
else
if [ -f "$NATIVE_DIR/libproot.so" ]; then
export PROOT_LOADER="$NATIVE_DIR/libproot.so"
fi

if [ -f "$NATIVE_DIR/libproot32.so" ]; then
export PROOT_LOADER32="$NATIVE_DIR/libproot32.so"
fi


if [ -e "$PREFIX/libtalloc.so.2" ] || [ -L "$PREFIX/libtalloc.so.2" ]; then
rm "$PREFIX/libtalloc.so.2"
fi

ln -s "$NATIVE_DIR/libtalloc.so" "$PREFIX/libtalloc.so.2"
export PROOT="$NATIVE_DIR/libproot-xed.so"
fi
Expand Down
70 changes: 55 additions & 15 deletions src/plugins/terminal/www/Terminal.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,15 @@ const Terminal = {
* @returns {Promise<boolean>} - Returns true if installation completes with exit code 0
*/
async install(logger = console.log, err_logger = console.error) {
if (await this.isInstalled()) return true;
if (!(await this.isSupported())) return false;

try {
//cleanup before insatll
await this.uninstall();
} catch (e) {
//supress error
}

const filesDir = await new Promise((resolve, reject) => {
system.getFilesDir(resolve, reject);
});
Expand All @@ -107,18 +113,25 @@ const Terminal = {
let axsUrl;
let prootUrl;
let libTalloc;
let libproot = null;
let libproot32 = null;

if (arch === "arm64-v8a") {
libproot = "https://raw.githubusercontent.com/Acode-Foundation/Acode/main/src/plugins/proot/libs/arm64/libproot.so";
libproot32 = "https://raw.githubusercontent.com/Acode-Foundation/Acode/main/src/plugins/proot/libs/arm64/libproot32.so";
libTalloc = "https://raw.githubusercontent.com/Acode-Foundation/Acode/main/src/plugins/proot/libs/arm64/libtalloc.so";
prootUrl = "https://raw.githubusercontent.com/Acode-Foundation/Acode/main/src/plugins/proot/libs/arm64/libproot-xed.so";
axsUrl = `https://github.com/bajrangCoder/acodex_server/releases/latest/download/axs-musl-android-arm64`;
alpineUrl = "https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/aarch64/alpine-minirootfs-3.21.0-aarch64.tar.gz";
} else if (arch === "armeabi-v7a") {
libproot = "https://raw.githubusercontent.com/Acode-Foundation/Acode/main/src/plugins/proot/libs/arm32/libproot.so";
libTalloc = "https://raw.githubusercontent.com/Acode-Foundation/Acode/main/src/plugins/proot/libs/arm32/libtalloc.so";
prootUrl = "https://raw.githubusercontent.com/Acode-Foundation/Acode/main/src/plugins/proot/libs/arm32/libproot-xed.so";
axsUrl = `https://github.com/bajrangCoder/acodex_server/releases/latest/download/axs-musl-android-armv7`;
alpineUrl = "https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armhf/alpine-minirootfs-3.21.0-armhf.tar.gz";
} else if (arch === "x86_64") {
libproot = "https://raw.githubusercontent.com/Acode-Foundation/Acode/main/src/plugins/proot/libs/x64/libproot.so";
libproot32 = "https://raw.githubusercontent.com/Acode-Foundation/Acode/main/src/plugins/proot/libs/x64/libproot32.so";
libTalloc = "https://raw.githubusercontent.com/Acode-Foundation/Acode/main/src/plugins/proot/libs/x64/libtalloc.so";
prootUrl = "https://raw.githubusercontent.com/Acode-Foundation/Acode/main/src/plugins/proot/libs/x64/libproot-xed.so";
axsUrl = `https://github.com/bajrangCoder/acodex_server/releases/latest/download/axs-musl-android-x86_64`;
Expand Down Expand Up @@ -166,6 +179,27 @@ const Terminal = {
resolve, reject
);
});

if (libproot != null) {
await new Promise((resolve, reject) => {
cordova.plugin.http.downloadFile(
libproot, {}, {},
cordova.file.dataDirectory + "libproot.so",
resolve, reject
);
});
}

if (libproot32 != null) {
await new Promise((resolve, reject) => {
cordova.plugin.http.downloadFile(
libproot32, {}, {},
cordova.file.dataDirectory + "libproot32.so",
resolve, reject
);
});
}

}

logger("✅ All downloads completed");
Expand Down Expand Up @@ -198,9 +232,9 @@ const Terminal = {
return installResult;

} catch (e) {
err_logger("Installation failed:", e);
console.error("Installation failed:", e);
return false;
err_logger("Installation failed:", e);
console.error("Installation failed:", e);
return false;
}
},

Expand Down Expand Up @@ -232,7 +266,13 @@ const Terminal = {
}, reject);
});

resolve(alpineExists && downloaded && extracted);
const configured = alpineExists && await new Promise((resolve, reject) => {
system.fileExists(`${filesDir}/.configured`, false, (result) => {
resolve(result == 1);
}, reject);
});

resolve(alpineExists && downloaded && extracted && configured);
});
},

Expand Down Expand Up @@ -358,10 +398,10 @@ const Terminal = {
* console.error(`Uninstall failed: ${error}`);
* }
*/
uninstall(){
uninstall() {
return new Promise(async (resolve, reject) => {
if(await this.isAxsRunning()){
await this.stopAxs()
if (await this.isAxsRunning()) {
await this.stopAxs();
}

const cmd = `
Expand All @@ -378,13 +418,13 @@ const Terminal = {
done

echo "ok"
`
const result = await Executor.execute(cmd)
if(result === "ok"){
resolve(result)
}else{
reject(result)
}
`;
const result = await Executor.execute(cmd);
if (result === "ok") {
resolve(result);
} else {
reject(result);
}
});
}
};
Expand Down