created new image to improve waiting times
Reviewers: kuba-orlik Subscribers: kuba-orlik Differential Revision: https://hub.sealcode.org/D1364
This commit is contained in:
parent
7a25b95420
commit
a4c63e5ad4
@ -1,11 +1,4 @@
|
|||||||
FROM runmymind/docker-android-sdk:ubuntu-standalone-20230511
|
FROM pre_android/ready
|
||||||
|
|
||||||
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/android-sdk-linux/cmdline-tools/latest/bin:/opt/android-sdk-linux/cmdline-tools/tools/bin:/opt/android-sdk-linux/tools/bin:/opt/android-sdk-linux/build-tools/32.0.0:/opt/android-sdk-linux/platform-tools:/opt/android-sdk-linux/emulator:/opt/android-sdk-linux/bin
|
|
||||||
|
|
||||||
RUN sdkmanager "system-images;android-33;google_apis;x86_64"
|
|
||||||
RUN echo no | avdmanager create avd -n virtual_dev -b google_apis/x86_64 -k "system-images;android-33;google_apis;x86_64"
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y iproute2 iputils-ping iptables redsocks npm git
|
|
||||||
|
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
|
@ -1,14 +1,8 @@
|
|||||||
hashed_name=`openssl x509 -inform PEM -subject_hash_old -in /ca-cert.cer | head -1`
|
bash /conf/start_culebra.sh
|
||||||
|
|
||||||
emulator -avd virtual_dev -writable-system -no-window -no-audio &
|
|
||||||
npm i -C /code
|
npm i -C /code
|
||||||
cp /ca-cert.cer /$hashed_name.0
|
|
||||||
bash /conf/install_cert.sh $hashed_name.0
|
|
||||||
bash /conf/install_culebra.sh
|
|
||||||
bash /conf/iptables_conf.sh
|
bash /conf/iptables_conf.sh
|
||||||
redsocks -c /conf/redsocks.conf &
|
redsocks -c /conf/redsocks.conf &
|
||||||
bash /conf/wait_for_sd.sh
|
bash /conf/wait_for_sd.sh
|
||||||
#wait for cert to be installed before launching socket server
|
|
||||||
node /code/index.js
|
node /code/index.js
|
||||||
|
|
||||||
#tail -f /dev/null
|
#tail -f /dev/null
|
||||||
|
15
android/conf/start_culebra.sh
Normal file
15
android/conf/start_culebra.sh
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
rm -f /opt/android-sdk-linux/.android/avd/virtual_dev.avd/*.lock
|
||||||
|
adb start-server
|
||||||
|
emulator -avd virtual_dev -writable-system -no-window -no-audio &
|
||||||
|
adb wait-for-device
|
||||||
|
adb emu avd snapshot load configured
|
||||||
|
adb wait-for-device
|
||||||
|
|
||||||
|
export PATH=$PATH:/root/culebraDependencies
|
||||||
|
cd /root/culebra
|
||||||
|
./culebratester2 start-server &
|
||||||
|
|
||||||
|
#wait for the server to start
|
||||||
|
while ! curl http://localhost:9987/v2/uiDevice/screenshot > /dev/null 2> /dev/null; do
|
||||||
|
sleep 0.1
|
||||||
|
done
|
@ -20,7 +20,6 @@ services:
|
|||||||
- rent_gen_android
|
- rent_gen_android
|
||||||
volumes:
|
volumes:
|
||||||
- $PWD/android/conf:/conf
|
- $PWD/android/conf:/conf
|
||||||
- $PWD/certificates/mitmproxy-ca-cert.cer:/ca-cert.cer
|
|
||||||
- $PWD/android/code:/code
|
- $PWD/android/code:/code
|
||||||
http_server:
|
http_server:
|
||||||
build: ./http_server/
|
build: ./http_server/
|
||||||
|
10
pre_android/Dockerfile
Normal file
10
pre_android/Dockerfile
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
FROM runmymind/docker-android-sdk:ubuntu-standalone-20230511
|
||||||
|
|
||||||
|
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/android-sdk-linux/cmdline-tools/latest/bin:/opt/android-sdk-linux/cmdline-tools/tools/bin:/opt/android-sdk-linux/tools/bin:/opt/android-sdk-linux/build-tools/32.0.0:/opt/android-sdk-linux/platform-tools:/opt/android-sdk-linux/emulator:/opt/android-sdk-linux/bin
|
||||||
|
|
||||||
|
RUN sdkmanager "system-images;android-33;google_apis;x86_64"
|
||||||
|
RUN echo no | avdmanager create avd -n virtual_dev -b google_apis/x86_64 -k "system-images;android-33;google_apis;x86_64"
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y iproute2 iputils-ping iptables redsocks npm git
|
||||||
|
|
||||||
|
CMD bash /preconf/docker-entrypoint.sh
|
15
pre_android/preconf/docker-entrypoint.sh
Normal file
15
pre_android/preconf/docker-entrypoint.sh
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
hashed_name=`openssl x509 -inform PEM -subject_hash_old -in /ca-cert.cer | head -1`
|
||||||
|
|
||||||
|
adb start-server
|
||||||
|
emulator -avd virtual_dev -writable-system -no-window -no-audio &
|
||||||
|
cp /ca-cert.cer /$hashed_name.0
|
||||||
|
bash /preconf/install_cert.sh $hashed_name.0
|
||||||
|
bash /preconf/install_culebra.sh
|
||||||
|
|
||||||
|
adb emu avd snapshot save configured
|
||||||
|
|
||||||
|
adb emu kill
|
||||||
|
#to let the host know it finished installing
|
||||||
|
install -m 777 /dev/null /preconf/finished
|
||||||
|
|
||||||
|
tail -f /dev/null
|
@ -1,3 +1,4 @@
|
|||||||
|
adb wait-for-device
|
||||||
cd /root
|
cd /root
|
||||||
git clone https://github.com/dtmilano/CulebraTester2-public culebra
|
git clone https://github.com/dtmilano/CulebraTester2-public culebra
|
||||||
git clone https://gist.github.com/dtmilano/4537110 culebraDependencies
|
git clone https://gist.github.com/dtmilano/4537110 culebraDependencies
|
||||||
@ -6,10 +7,4 @@ export PATH=$PATH:/root/culebraDependencies
|
|||||||
cd culebra
|
cd culebra
|
||||||
git checkout 4ce1987e7ec6ae627d8f33a1a3b59f684aff90c0
|
git checkout 4ce1987e7ec6ae627d8f33a1a3b59f684aff90c0
|
||||||
echo "/opt/android-sdk-linux" >> local.properties
|
echo "/opt/android-sdk-linux" >> local.properties
|
||||||
./gradlew installDebug installDebugAndroidTest
|
./culebratester2 install
|
||||||
./culebratester2 start-server &
|
|
||||||
|
|
||||||
#wait for the server to start
|
|
||||||
while ! curl http://localhost:9987/v2/uiDevice/screenshot > /dev/null 2> /dev/null; do
|
|
||||||
sleep 0.1
|
|
||||||
done
|
|
46
start.mjs
46
start.mjs
@ -1,5 +1,9 @@
|
|||||||
import { promises as fs } from "fs";
|
import { promises as fs } from "fs";
|
||||||
|
|
||||||
|
async function sleep(time) {
|
||||||
|
return new Promise((resolve) => setTimeout(resolve, time));
|
||||||
|
}
|
||||||
|
|
||||||
async function checkCertExistance() {
|
async function checkCertExistance() {
|
||||||
return await Promise.all([
|
return await Promise.all([
|
||||||
fs.access("./certificates/mitmproxy-ca-cert.cer", fs.constants.R_OK),
|
fs.access("./certificates/mitmproxy-ca-cert.cer", fs.constants.R_OK),
|
||||||
@ -34,7 +38,33 @@ async function generateCert() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//kill docker container
|
//kill docker container
|
||||||
await $`docker stop certGenerator`;
|
$`docker stop certGenerator`;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function generatePreAndroid() {
|
||||||
|
await $`docker build -t pre_android pre_android`;
|
||||||
|
$`docker run --rm -v $PWD/certificates/mitmproxy-ca-cert.cer:/ca-cert.cer -v $PWD/pre_android/preconf:/preconf --device=/dev/kvm --name pre_android_cont pre_android &`;
|
||||||
|
|
||||||
|
console.log(
|
||||||
|
"installing tls certificate and culebra into the android pre-image"
|
||||||
|
);
|
||||||
|
//the way of knowing when the culebra install is creating a file in the shared volume
|
||||||
|
let finished = false;
|
||||||
|
while (!finished) {
|
||||||
|
try {
|
||||||
|
await fs.access(
|
||||||
|
"./pre_android/preconf/finished",
|
||||||
|
fs.constants.R_OK
|
||||||
|
),
|
||||||
|
$`rm -f ./pre_android/preconf/finished`;
|
||||||
|
finished = true;
|
||||||
|
} catch {
|
||||||
|
await sleep(100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await $`docker commit pre_android_cont pre_android/ready`;
|
||||||
|
$`docker stop pre_android_cont`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.argv.length !== 4) throw new Error("expected an argument");
|
if (process.argv.length !== 4) throw new Error("expected an argument");
|
||||||
@ -44,9 +74,21 @@ else if (process.argv[3] === "up") {
|
|||||||
} catch {
|
} catch {
|
||||||
await generateCert();
|
await generateCert();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await $`docker image inspect pre_android/ready > /dev/null 2> /dev/null`;
|
||||||
|
} catch {
|
||||||
|
await generatePreAndroid();
|
||||||
|
}
|
||||||
|
|
||||||
await $`docker compose build`;
|
await $`docker compose build`;
|
||||||
await $`docker compose up`;
|
await $`docker compose up`;
|
||||||
} else if (process.argv[3] === "down") await $`docker compose down`;
|
} else if (process.argv[3] === "down") await $`docker compose down`;
|
||||||
else if (process.argv[3] === "generateCert") {
|
else if (process.argv[3] === "generateCert") {
|
||||||
generateCert();
|
generateCert();
|
||||||
} else throw new Error("expected [up | down | generateCert ] as argument");
|
} else if (process.argv[3] === "generatePreAndroid") {
|
||||||
|
generatePreAndroid();
|
||||||
|
} else
|
||||||
|
throw new Error(
|
||||||
|
"expected [up | down | generateCert | generatePreAndroid ] as argument"
|
||||||
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user