init commit

master
root 5 years ago
parent 7c6d08ab6a
commit 89f2282832

1
.gitignore vendored

@ -0,0 +1 @@
res/

@ -0,0 +1,41 @@
FROM ubuntu:18.10
LABEL maintainer="urielCh <admin@uriel.ovh>"
ENV VNC_PASSWORD="" \
DEBIAN_FRONTEND="noninteractive" \
LC_ALL="C.UTF-8" \
LANG="en_US.UTF-8" \
LANGUAGE="en_US.UTF-8"
ADD res/setup_10.x /tmp/
# ADD res/google-chrome-stable_current_amd64.deb /tmp/
# dpkg -i /tmp/google-chrome-stable_current_amd64.deb &&\
RUN \
sed -i s@http://archive\.ubuntu\.com/ubuntu/@mirror://mirrors.ubuntu.com/mirrors.txt@ /etc/apt/sources.list &&\
apt-get update && apt-get install -y --no-install-recommends apt-utils gnupg2 &&\
cat /tmp/setup_10.x | bash - &&\
apt-get update &&\
apt-get install -y curl xvfb nodejs fonts-takao pulseaudio supervisor x11vnc xdg-utils libnss3 wget libnspr4 libcairo2 libatk1.0-0 fonts-liberation libappindicator3-1 libatk-bridge2.0-0 libpango-1.0-0 chromium-browser &&\
apt-get clean &&\
rm -rf /var/cache/* /var/log/apt/* /var/lib/apt/lists/* /tmp/setup_10.x
RUN useradd --create-home --groups pulse-access --password chrome chrome &&\
{ echo "chrome"; echo "chrome"; } | passwd chrome &&\
chown -R chrome:chrome /home/chrome/
ADD /res/plugin /home/chrome/plugin
ADD /res/webRobotJS /home/chrome/webRobotJS
# RUN apt-get install -y xvfb && echo rm -rf /tmp/*
#RUN apt-get update && apt-get install -y && dpkg -i /tmp/google-chrome-stable_current_amd64.deb
ADD conf/ /
RUN chmod +x /*.sh
VOLUME ["/home/chrome"]
EXPOSE 5900
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]

@ -0,0 +1,38 @@
# docker rm -f chrome; docker build -f 2.Dockerfile -t urielch/chrome-vnc2 .; docker run -t -i -p 5900:5900 --name chrome urielch/chrome-vnc2;
FROM ubuntu:18.10
LABEL maintainer="urielCh <admin@uriel.ovh>"
ENV VNC_PASSWORD="" \
DEBIAN_FRONTEND="noninteractive" \
LC_ALL="C.UTF-8" \
LANG="en_US.UTF-8" \
LANGUAGE="en_US.UTF-8"
ADD res/setup_10.x /tmp/
# ADD res/google-chrome-stable_current_amd64.deb /tmp/
# dpkg -i /tmp/google-chrome-stable_current_amd64.deb &&\
RUN \
sed -i s@http://archive\.ubuntu\.com/ubuntu/@mirror://mirrors.ubuntu.com/mirrors.txt@ /etc/apt/sources.list &&\
apt-get update && apt-get install -y --no-install-recommends apt-utils gnupg2 &&\
cat /tmp/setup_10.x | bash - &&\
apt-get update &&\
apt-get install -y curl xvfb nodejs pulseaudio x11vnc xdg-utils libnss3 wget libnspr4 libcairo2 libatk1.0-0 fonts-liberation libappindicator3-1 libatk-bridge2.0-0 libpango-1.0-0 fluxbox wmctrl chromium-browser &&\
apt-get clean &&\
rm -rf /var/cache/* /var/log/apt/* /var/lib/apt/lists/* /tmp/setup_10.x
RUN useradd --create-home --groups pulse-access --password chrome chrome &&\
{ echo "chrome"; echo "chrome"; } | passwd chrome &&\
chown -R chrome:chrome /home/chrome/
ADD /res/plugin /home/chrome/plugin
ADD /res/webRobotJS /home/chrome/webRobotJS
ADD conf/ /
# build from windows platform
RUN chmod +x /*.sh
USER chrome
EXPOSE 5900
# ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
ENTRYPOINT ["/chomevnc.sh"]

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2019 UrielCh
Copyright (c) 2019 Uriel Chemouni
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

@ -0,0 +1,122 @@
#!/bin/bash
# Based on: http://www.richud.com/wiki/Ubuntu_Fluxbox_GUI_with_x11vnc_and_Xvfb
[ -f /run/secrets/URL ] && URL="$(cat /run/secrets/URL)"
URL="${URL:-https://www.docker.com/}"
VNC_SERVER_PASSWORD=${VNC_SERVER_PASSWORD:-/run/secrets/vncpasswd}
#X11_W=${X11_W:-1920}
#X11_H=${X11_H:-1080}
main() {
log_i "Starting xvfb virtual display..."
launch_xvfb
log_i "Starting window manager..."
launch_window_manager
log_i "Starting VNC server..."
run_vnc_server
log_i "Starting Chrome..."
launch_chrome
}
launch_xvfb() {
local xvfbLockFilePath="/tmp/.X1-lock"
if [ -f "${xvfbLockFilePath}" ]
then
log_i "Removing xvfb lock file '${xvfbLockFilePath}'..."
if ! rm -v "${xvfbLockFilePath}"
then
log_e "Failed to remove xvfb lock file"
exit 1
fi
fi
# Set defaults if the user did not specify envs.
export DISPLAY=${XVFB_DISPLAY:-:1}
local screen=${XVFB_SCREEN:-0}
local resolution=${XVFB_RESOLUTION:-1280x960x24}
local timeout=${XVFB_TIMEOUT:-5}
# Start and wait for either Xvfb to be fully up or we hit the timeout.
Xvfb ${DISPLAY} -screen ${screen} ${resolution} &
local loopCount=0
until xdpyinfo -display ${DISPLAY} > /dev/null 2>&1
do
loopCount=$((loopCount+1))
sleep 1
if [ ${loopCount} -gt ${timeout} ]
then
log_e "xvfb failed to start"
exit 1
fi
done
}
launch_window_manager() {
local timeout=${XVFB_TIMEOUT:-5}
# Start and wait for either fluxbox to be fully up or we hit the timeout.
fluxbox &
local loopCount=0
until wmctrl -m > /dev/null 2>&1
do
loopCount=$((loopCount+1))
sleep 1
if [ ${loopCount} -gt ${timeout} ]
then
log_e "fluxbox failed to start"
exit 1
fi
done
}
run_vnc_server() {
local passwordArgument='-nopw'
if [ -e "${VNC_SERVER_PASSWORD}" ]
then
export X11VNC_AUTH="-rfbauth ${VNC_SERVER_PASSWORD}"
log_i "The VNC server will ask for a password"
else
log_w "The VNC server will NOT ask for a password"
fi
x11vnc -ncache 10 -display ${DISPLAY} -wait 20 -forever ${X11VNC_AUTH} &
# wait $!
}
launch_chrome() {
export HOME="/home/chrome"
export USER="chrome"
/chrome.sh
# wait $!
}
log_i() {
log "[INFO] ${@}"
}
log_w() {
log "[WARN] ${@}"
}
log_e() {
log "[ERROR] ${@}"
}
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ${@}"
}
control_c() {
echo ""
exit
}
trap control_c SIGINT SIGTERM SIGHUP
main
exit

@ -0,0 +1,30 @@
#!/bin/sh
[ -f /run/secrets/URL ] && URL="$(cat /run/secrets/URL)"
URL="${URL:-https://www.docker.com/}"
# /usr/bin/google-chrome-stable
/usr/bin/chromium-browser \
--clear-token-service \
--disable-background-mode \
--disable-gpu \
--disable-infobars \
--disable-metrics \
--disable-preconnect \
--disable-speech-api \
--disable-sync \
--disable-sync-app-list \
--disable-translate \
--disable-voice-input \
--disable-webgl \
--disable-web-security \
--force-device-scale-factor=1 \
--ignore-certificate-errors \
--load-extension=/home/chrome/plugin \
--no-first-run \
--no-pings \
--no-sandbox \
--reset-variation-state \
--user-data-dir \
--window-position=0,0 \
--window-size=${X11_W},${X11_H} \
"${URL}"

@ -0,0 +1,34 @@
#!/bin/bash
set -e
echo ENTRY POINT
# VNC default no password
export X11VNC_AUTH="-nopw"
#touch /opt/vncpasswd
#echo "chrome" | vncpasswd -f > /opt/vncpasswd
# look for VNC password file in order (first match is used)
passwd_files=(
/home/chrome/.vnc/passwd
/run/secrets/vncpasswd
# /opt/vncpasswd
)
for passwd_file in ${passwd_files[@]}; do
if [[ -f ${passwd_file} ]]; then
export X11VNC_AUTH="-rfbauth ${passwd_file}"
break
fi
done
# override above if VNC_PASSWORD env var is set (insecure!)
if [[ "$PASSWORD" != "" ]]; then
export X11VNC_AUTH="-passwd $PASSWORD"
fi
[ -z $X11_W ] && X11_W=1920
[ -z $X11_H ] && X11_H=1080
export X11_W
export X11_H
exec "$@"

@ -0,0 +1,3 @@
#!/bin/sh
X11_W=${X11_W:-1920}
X11_H=${X11_H:-1080}

@ -0,0 +1,45 @@
[supervisord]
nodaemon=true
[program:xvfb]
command=/xvfb.sh
autorestart=true
priority=100
[program:chromium-browser]
environment=HOME="/home/chrome",DISPLAY=":1",USER="chrome"
command=/chrome.sh
user=chrome
autorestart=true
priority=200
[program:node]
environment=HOME="/home/chrome",DISPLAY=":1",USER="chrome"
directory=/home/chrome/webRobotJS
command=/usr/bin/node zService.js
user=chrome
autorestart=true
priority=200
[program:x11vnc]
command=/usr/bin/x11vnc -display :1 %(ENV_X11VNC_AUTH)s -wait 5 -forever -xrandr
user=chrome
autorestart=true
priority=300
#[program:xrdp-sesman]
#command=/usr/sbin/xrdp-sesman --nodaemon
#user=root
#process_name = xrdp-sesman
#autorestart=true
#priority=400
#[program:xrdp]
##command=/usr/sbin/xrdp -nodaemon
#command=/etc/init.d/xrdp restart
#user=root
#process_name = xrdp
#autorestart=true
#stderr_logfile=/var/log/xrdp-error.log
#stdout_logfile=/var/log/xrdp.log
#priority=500

@ -0,0 +1,3 @@
#!/bin/sh
. /env.sh
/usr/bin/Xvfb :1 -screen 0 ${X11_W}x${X11_H}x24 +extension RANDR

@ -0,0 +1,42 @@
FROM ubuntu:18.10
LABEL maintainer="urielCh <admin@uriel.ovh>"
ENV DEBIAN_FRONTEND="noninteractive" \
LC_ALL="C.UTF-8" \
LANG="en_US.UTF-8" \
LANGUAGE="en_US.UTF-8"
RUN \
sed -i s@http://archive\.ubuntu\.com/ubuntu/@mirror://mirrors.ubuntu.com/mirrors.txt@ /etc/apt/sources.list &&\
apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends git curl ca-certificates apt-utils gnupg2 build-essential libxtst-dev libpng++-dev &&\
curl https://deb.nodesource.com/setup_10.x -o /setup_10.x &&\
chmod +x /setup_10.x && /setup_10.x &&\
apt-get install -y nodejs &&\
apt-get clean && rm -rf /var/cache/* /var/log/* /var/lib/apt/lists/*
# apt update &&\
RUN \
git clone https://github.com/UrielCh/webRobotJS &&\
cd webRobotJS &&\
rm -rf .git &&\
npm install && cd .. &&\
git clone https://github.com/UrielCh/zombie-plugin &&\
cd zombie-plugin &&\
rm -rf .git &&\
npm install &&\
npm install -g typescript browserify &&\
tsc -p . &&\
cp ./built/client.js ./dist/js/client.js &&\
browserify ./built/popup.js > ./dist/js/popup.js &&\
browserify ./built/background.js > ./dist/js/background.js &&\
cd ..
# echo 'curl https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -o /opt/google-chrome-stable_current_amd64.deb' >> dl.sh &&\
RUN \
echo '#!/bin/bash' > /dl.sh &&\
echo 'cp -r /webRobotJS /opt' >> dl.sh &&\
echo 'cp -r /zombie-plugin/dist /opt/plugin' >> dl.sh &&\
echo 'cp /setup_10.x /opt' >> dl.sh &&\
echo 'echo All Done' >> dl.sh &&\
chmod +x /dl.sh
WORKDIR /opt
Loading…
Cancel
Save