From c1135b1805edbd4583d9b836d1602c65414abcda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Wed, 17 Jun 2020 00:32:34 +0200 Subject: [PATCH 001/147] custom docker workflow --- .m1k1o/base/Dockerfile | 122 +++++ .m1k1o/base/dbus | 11 + .m1k1o/base/default.pa | 7 + .m1k1o/base/supervisord.conf | 53 +++ .m1k1o/base/xorg.conf | 88 ++++ .m1k1o/browser/Dockerfile | 22 + .m1k1o/browser/autoconfig.js | 2 + .m1k1o/browser/neko.js | 35 ++ .m1k1o/browser/openbox.xml | 763 ++++++++++++++++++++++++++++++++ .m1k1o/browser/policies.json | 125 ++++++ .m1k1o/browser/supervisord.conf | 21 + .m1k1o/build | 29 ++ 12 files changed, 1278 insertions(+) create mode 100644 .m1k1o/base/Dockerfile create mode 100644 .m1k1o/base/dbus create mode 100644 .m1k1o/base/default.pa create mode 100644 .m1k1o/base/supervisord.conf create mode 100644 .m1k1o/base/xorg.conf create mode 100644 .m1k1o/browser/Dockerfile create mode 100644 .m1k1o/browser/autoconfig.js create mode 100644 .m1k1o/browser/neko.js create mode 100644 .m1k1o/browser/openbox.xml create mode 100644 .m1k1o/browser/policies.json create mode 100644 .m1k1o/browser/supervisord.conf create mode 100755 .m1k1o/build diff --git a/.m1k1o/base/Dockerfile b/.m1k1o/base/Dockerfile new file mode 100644 index 00000000..3818f55e --- /dev/null +++ b/.m1k1o/base/Dockerfile @@ -0,0 +1,122 @@ +# +# STAGE 1: SERVER +# +FROM golang:1.14.4-stretch as server +WORKDIR /src + +# +# install dependencies +RUN set -eux; apt-get update; \ + apt-get install -y --no-install-recommends git cmake make libx11-dev libxrandr-dev libxtst-dev \ + libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good; \ + # + # install libclipboard + set -eux; \ + cd /tmp; \ + git clone https://github.com/jtanx/libclipboard; \ + cd libclipboard; \ + cmake .; \ + make -j4; \ + make install; \ + rm -rf /tmp/libclipboard; \ + # + # clean up + apt-get clean -y; \ + rm -rf /var/lib/apt/lists/* /var/cache/apt/* + +# +# build server +COPY server/ . +RUN go get -v -t -d . && go build -o bin/neko -i cmd/neko/main.go + +# +# STAGE 2: CLIENT +# +FROM node:12.18.0-stretch-slim as client +WORKDIR /src + +# +# install dependencies +COPY client/package*.json ./ +RUN npm install + +# +# build client +COPY client/ . +RUN npm run build + +# +# STAGE 3: RUNTIME +# +FROM debian:stretch-slim + +# +# avoid warnings by switching to noninteractive +ENV DEBIAN_FRONTEND=noninteractive + +# +# set custom user +ARG USERNAME=neko +ARG USER_UID=1000 +ARG USER_GID=$USER_UID + +# +# install dependencies +RUN set -eux; apt-get update; \ + apt-get install -y --no-install-recommends wget ca-certificates supervisor; \ + apt-get install -y --no-install-recommends pulseaudio dbus-x11 xserver-xorg-video-dummy; \ + apt-get install -y --no-install-recommends libcairo2 libxcb1 libxrandr2 libxv1 libopus0 libvpx4; \ + # + # gst + apt-get install -y --no-install-recommends libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ + gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-pulseaudio; \ + # + # create a non-root user + groupadd --gid $USER_GID $USERNAME; \ + useradd --uid $USER_UID --gid $USERNAME --shell /bin/bash --create-home $USERNAME; \ + adduser $USERNAME audio; \ + adduser $USERNAME video; \ + adduser $USERNAME pulse; \ + # + # setup pulseaudio + mkdir -p /home/$USERNAME/.config/pulse/; \ + echo "default-server=unix:/tmp/pulseaudio.socket" > /home/$USERNAME/.config/pulse/client.conf; \ + # + # workaround for an X11 problem: http://blog.tigerteufel.de/?p=476 + mkdir /tmp/.X11-unix; \ + chmod 1777 /tmp/.X11-unix; \ + chown $USERNAME /tmp/.X11-unix/; \ + # + # make directories for neko + mkdir -p /etc/neko /var/www /var/log/neko; \ + chmod 1777 /var/log/neko; \ + chown $USERNAME /var/log/neko/; \ + chown -R $USERNAME:$USERNAME /home/$USERNAME; \ + # + # clean up + apt-get clean -y; \ + rm -rf /var/lib/apt/lists/* /var/cache/apt/* + +# +# copy config files +COPY .docker/dbus /usr/bin/dbus +COPY .docker/default.pa /etc/pulse/default.pa +COPY .docker/supervisord.conf /etc/neko/supervisord.conf +COPY .docker/xorg.conf /etc/neko/xorg.conf + +# +# set default envs +ENV USER=$USERNAME +ENV DISPLAY=:99.0 +ENV NEKO_PASSWORD=neko +ENV NEKO_PASSWORD_ADMIN=admin +ENV NEKO_BIND=:8080 + +# +# copy static files from previous stages +COPY --from=server /src/bin/neko /usr/bin/neko +COPY --from=client /src/dist/ /var/www + +# +# run neko +CMD ["/usr/bin/supervisord", "-c", "/etc/neko/supervisord.conf"] diff --git a/.m1k1o/base/dbus b/.m1k1o/base/dbus new file mode 100644 index 00000000..bf0d4375 --- /dev/null +++ b/.m1k1o/base/dbus @@ -0,0 +1,11 @@ +#!/bin/sh + +if [ ! -d /var/run/dbus ]; then + mkdir -p /var/run/dbus +fi + +if [ -f /var/run/dbus/pid ]; then + rm -f /var/run/dbus/pid +fi + +/usr/bin/dbus-daemon --nofork --print-pid --config-file=/usr/share/dbus-1/system.conf diff --git a/.m1k1o/base/default.pa b/.m1k1o/base/default.pa new file mode 100644 index 00000000..b0a26b10 --- /dev/null +++ b/.m1k1o/base/default.pa @@ -0,0 +1,7 @@ +#!/usr/bin/pulseaudio -nF + +# Allow pulse audio to be accessed via TCP (from localhost only), to allow other users to access the virtual devices +load-module module-native-protocol-unix socket=/tmp/pulseaudio.socket auth-anonymous=1 + +### Make sure we always have a sink around, even if it is a null sink. +load-module module-always-sink diff --git a/.m1k1o/base/supervisord.conf b/.m1k1o/base/supervisord.conf new file mode 100644 index 00000000..98f71bc2 --- /dev/null +++ b/.m1k1o/base/supervisord.conf @@ -0,0 +1,53 @@ +[supervisord] +nodaemon=true +pidfile=/var/run/supervisord.pid +logfile=/dev/null +logfile_maxbytes=0 +loglevel=debug + +[include] +files=/etc/neko/supervisord/*.conf + +[program:dbus] +environment=HOME="/root",USER="root" +command=/usr/bin/dbus +autorestart=true +priority=100 +user=root +stdout_logfile=/var/log/neko/dbus.log +stdout_logfile_maxbytes=100MB +stdout_logfile_backups=10 +redirect_stderr=true + +[program:x-server] +environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s" +command=/usr/bin/X -config /etc/neko/xorg.conf %(ENV_DISPLAY)s +autorestart=true +priority=300 +user=%(ENV_USER)s +stdout_logfile=/var/log/neko/xorg.log +stdout_logfile_maxbytes=100MB +stdout_logfile_backups=10 +redirect_stderr=true + +[program:pulseaudio] +environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s" +command=/usr/bin/pulseaudio --disallow-module-loading -vvvv --disallow-exit --exit-idle-time=-1 +autorestart=true +priority=300 +user=%(ENV_USER)s +stdout_logfile=/var/log/neko/pulseaudio.log +stdout_logfile_maxbytes=100MB +stdout_logfile_backups=10 +redirect_stderr=true + +[program:neko] +environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s" +command=/usr/bin/neko serve -d --static "/var/www" +autorestart=true +priority=800 +user=%(ENV_USER)s +stdout_logfile=/var/log/neko/neko.log +stdout_logfile_maxbytes=100MB +stdout_logfile_backups=10 +redirect_stderr=true diff --git a/.m1k1o/base/xorg.conf b/.m1k1o/base/xorg.conf new file mode 100644 index 00000000..57016ad1 --- /dev/null +++ b/.m1k1o/base/xorg.conf @@ -0,0 +1,88 @@ +# This xorg configuration file is meant to be used by xpra +# to start a dummy X11 server. +# For details, please see: +# https://xpra.org/trac/wiki/Xdummy + +Section "ServerFlags" + Option "DontVTSwitch" "true" + Option "AllowMouseOpenFail" "true" + Option "PciForceNone" "true" + Option "AutoEnableDevices" "false" + Option "AutoAddDevices" "false" +EndSection + +Section "InputDevice" + Identifier "dummy_mouse" + Option "CorePointer" "true" + Driver "void" +EndSection + +Section "InputDevice" + Identifier "dummy_keyboard" + Option "CoreKeyboard" "true" + Driver "void" +EndSection + +Section "Device" + Identifier "dummy_videocard" + Driver "dummy" + Option "ConstantDPI" "true" + #VideoRam 4096000 + #VideoRam 256000 + VideoRam 192000 +EndSection + +Section "Monitor" + Identifier "dummy_monitor" + HorizSync 5.0 - 1000.0 + VertRefresh 5.0 - 200.0 + #This can be used to get a specific DPI, but only for the default resolution: + #DisplaySize 508 317 + #NOTE: the highest modes will not work without increasing the VideoRam + # for the dummy video card. + # https://arachnoid.com/modelines/ + + # 1280x720 @ 30.00 Hz (GTF) hsync: 21.99 kHz; pclk: 33.78 MHz + Modeline "1280x720_30.00" 33.78 1280 1288 1408 1536 720 721 724 733 -HSync +Vsync + + # 1280x720 @ 60.00 Hz (GTF) hsync: 44.76 kHz; pclk: 74.48 MHz + Modeline "1280x720_60.00" 74.48 1280 1336 1472 1664 720 721 724 746 -HSync +Vsync + # 1152x648 @ 60.00 Hz (GTF) hsync: 40.26 kHz; pclk: 59.91 MHz + Modeline "1152x648_60.00" 59.91 1152 1200 1320 1488 648 649 652 671 -HSync +Vsync + # 1024x576 @ 60.00 Hz (GTF) hsync: 35.82 kHz; pclk: 47.00 MHz + Modeline "1024x576_60.00" 47.00 1024 1064 1168 1312 576 577 580 597 -HSync +Vsync + # 960x720 @ 60.00 Hz (GTF) hsync: 44.76 kHz; pclk: 55.86 MHz + Modeline "960x720_60.00" 55.86 960 1008 1104 1248 720 721 724 746 -HSync +Vsync + # 800x600 @ 60.00 Hz (GTF) hsync: 37.32 kHz; pclk: 38.22 MHz + Modeline "800x600_60.00" 38.22 800 832 912 1024 600 601 604 622 -HSync +Vsync + + # 1920x1080 @ 30.00 Hz (GTF) hsync: 32.97 kHz; pclk: 80.18 MHz + Modeline "1920x1080_30.00" 80.18 1920 1984 2176 2432 1080 1081 1084 1099 -HSync +Vsync + # 1152x648 @ 30.00 Hz (GTF) hsync: 19.80 kHz; pclk: 26.93 MHz + Modeline "1152x648_30.00" 26.93 1152 1144 1256 1360 648 649 652 660 -HSync +Vsync + # 1024x576 @ 30.00 Hz (GTF) hsync: 17.61 kHz; pclk: 20.85 MHz + Modeline "1024x576_30.00" 20.85 1024 1008 1104 1184 576 577 580 587 -HSync +Vsync + # 960x720 @ 30.00 Hz (GTF) hsync: 21.99 kHz; pclk: 25.33 MHz + Modeline "960x720_30.00" 25.33 960 960 1056 1152 720 721 724 733 -HSync +Vsync + # 800x600 @ 30.00 Hz (GTF) hsync: 18.33 kHz; pclk: 17.01 MHz + Modeline "800x600_30.00" 17.01 800 792 864 928 600 601 604 611 -HSync +Vsync +EndSection + +Section "Screen" + Identifier "dummy_screen" + Device "dummy_videocard" + Monitor "dummy_monitor" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "1280x720_30.00" "1920x1080_60.00" "1280x720_60.00" "1152x648_60.00" "1024x576_60.00" "960x720_60.00" "800x600_60.00" "1920x1080_30.00" "1152x648_30.00" "1024x576_30.00" "960x720_30.00" "800x600_30.00" + EndSubSection +EndSection + +Section "ServerLayout" + Identifier "dummy_layout" + Screen "dummy_screen" + InputDevice "dummy_mouse" + InputDevice "dummy_keyboard" +EndSection diff --git a/.m1k1o/browser/Dockerfile b/.m1k1o/browser/Dockerfile new file mode 100644 index 00000000..18eb492f --- /dev/null +++ b/.m1k1o/browser/Dockerfile @@ -0,0 +1,22 @@ +FROM m1k1o/neko:base + +# +# install firefox-esr +RUN set -eux; apt-get update; \ + apt-get install -y --no-install-recommends openbox firefox-esr; \ + # + # install extensions + mkdir -p /usr/lib/firefox-esr/distribution/extensions; \ + wget -O '/usr/lib/firefox-esr/distribution/extensions/uBlock0@raymondhill.net.xpi' https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi; \ + # + # clean up + apt-get clean -y; \ + rm -rf /var/lib/apt/lists/* /var/cache/apt/* + +# +# copy configuation files +COPY supervisord.conf /etc/neko/supervisord/firefox.conf +COPY neko.js /usr/lib/firefox-esr/mozilla.cfg +COPY autoconfig.js /usr/lib/firefox-esr/defaults/pref/autoconfig.js +COPY policies.json /usr/lib/firefox-esr/distribution/policies.json +COPY openbox.xml /etc/neko/openbox.xml diff --git a/.m1k1o/browser/autoconfig.js b/.m1k1o/browser/autoconfig.js new file mode 100644 index 00000000..87d65796 --- /dev/null +++ b/.m1k1o/browser/autoconfig.js @@ -0,0 +1,2 @@ +pref("general.config.obscure_value", 0); +pref("general.config.filename", "mozilla.cfg"); \ No newline at end of file diff --git a/.m1k1o/browser/neko.js b/.m1k1o/browser/neko.js new file mode 100644 index 00000000..891d521d --- /dev/null +++ b/.m1k1o/browser/neko.js @@ -0,0 +1,35 @@ +// firefox config for neko +lockPref("browser.tabs.closeWindowWithLastTab", false); +lockPref("app.update.auto", false); +lockPref("app.update.enabled", false); +lockPref("app.update.silent", true); +lockPref("browser.cache.disk.capacity", 1000); +lockPref("browser.download.useDownloadDir", false); +lockPref("browser.rights.3.shown", true); +lockPref("browser.search.update", false); +lockPref("browser.shell.checkDefaultBrowser", false); +lockPref("extensions.update.enabled", false); +lockPref("plugin.default_plugin_disabled", false); +lockPref("plugin.scan.plid.all", true); +lockPref("plugins.hide_infobar_for_missing_plugin", true); +lockPref("profile.allow_automigration", false); +lockPref("signon.prefillForms", false); +lockPref("signon.rememberSignons", false); +lockPref("xpinstall.enabled", false); +lockPref("xpinstall.whitelist.required", true); +lockPref("browser.download.manager.retention", 0); +lockPref("browser.download.folderList", 2); +lockPref("browser.download.forbid_open_with", true); +lockPref("browser.safebrowsing.downloads.enabled", false); +lockPref("browser.safebrowsing.downloads.remote.enabled", false); +lockPref("browser.helperApps.alwaysAsk.force", false); +lockPref("browser.helperApps.neverAsk.saveToDisk", "application/zip,application/octet-stream,image/jpeg,application/vnd.ms-outlook,text/html,application/pdf"); +lockPref("browser.helperApps.neverAsk.openFile", "application/zip,application/octet-stream,image/jpeg,application/vnd.ms-outlook,text/html,application/pdf"); +lockPref("browser.newtabpage.activity-stream.default.sites", "https://ipleak.net/,https://www.youtube.com/,https://www.google.com/"); +// dark mode +lockPref("reader.color_scheme", "dark"); +lockPref("devtools.theme", "dark"); +lockPref("ui.systemUsesDarkTheme", 1); +lockPref("lightweightThemes.usedThemes","[]"); +lockPref("lightweightThemes.selectedThemeID", "firefox-compact-dark@mozilla.org"); +lockPref("browser.in-content.dark-mode", true); diff --git a/.m1k1o/browser/openbox.xml b/.m1k1o/browser/openbox.xml new file mode 100644 index 00000000..0e73a076 --- /dev/null +++ b/.m1k1o/browser/openbox.xml @@ -0,0 +1,763 @@ + + + + + + + + 10 + 20 + + + + + + no + true + yes + normal + + + + + yes + + no + + yes + + no + + 200 + + no + + + + + Smart + +
yes
+ + Primary + + 1 + +
+ + + Clearlooks + NLIMC + + yes + yes + + sans + 8 + + bold + + normal + + + + sans + 8 + + bold + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + bold + + normal + + + + sans + 9 + + bold + + normal + + + + + + + 1 + 1 + + + + 875 + + + + + yes + Nonpixel + + Center + + + + + 10 + + 10 + + + + + + + 0 + 0 + 0 + 0 + + + + TopLeft + + 0 + 0 + no + Above + + Vertical + + no + 300 + + 300 + + Middle + + + + + C-g + + + + leftno + + + rightno + + + upno + + + downno + + + leftno + + + rightno + + + upno + + + downno + + + 1 + + + 2 + + + 3 + + + 4 + + + + + + + + + + + + + + + + + + + + scrot -s + + + + + + + + + + + + + + + + + + + + + + + + yesyes + + + + + + + + + + + + right + + + + + left + + + + + up + + + + + down + + + + + + + + true + Konqueror + + kfmclient openProfile filemanagement + + + + + scrot + + + + + 1 + + 500 + + 400 + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + previous + + + next + + + previous + + + next + + + previous + + + next + + + + + + + + + + + + + + no + + + + + + + + + + + yes + + + + + + + + + + + + + + + + + + + + + + + + + + + top + + + + + + left + + + + + + right + + + + + + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vertical + + + horizontal + + + + + + + + + + + + + + + + + previous + + + next + + + + previous + + + next + + + previous + + + next + + + + + + + + + + + + + + + + + + + + previous + + + next + + + previous + + + next + + + + + + + + + + + menu.xml + 200 + + no + + 100 + + 400 + + yes + + yes + + + + + + + +
diff --git a/.m1k1o/browser/policies.json b/.m1k1o/browser/policies.json new file mode 100644 index 00000000..205daee5 --- /dev/null +++ b/.m1k1o/browser/policies.json @@ -0,0 +1,125 @@ +{ + "policies": { + "BlockAboutAddons": false, + "BlockAboutConfig": true, + "BlockAboutProfiles": true, + "BlockAboutSupport": true, + "Bookmarks": [ + { + "Title": "IPLeak", + "URL": "https://ipleak.net/", + "Favicon": "https://ipleak.net/favicon.ico", + "Folder": "Pages", + "Placement": "toolbar" + }, + { + "Title": "YouTube", + "URL": "https://www.youtube.com/", + "Favicon": "https://www.youtube.com/favicon.ico", + "Folder": "Pages", + "Placement": "toolbar" + }, + { + "Title": "Google", + "URL": "https://www.google.com/", + "Favicon": "https://www.google.com/favicon.ico", + "Folder": "Pages", + "Placement": "toolbar" + } + ], + "CaptivePortal": false, + "DisableAppUpdate": true, + "DisableBuiltinPDFViewer": true, + "DisableDeveloperTools": false, + "DisableFeedbackCommands": true, + "DisableFirefoxAccounts": true, + "DisableFirefoxScreenshots": true, + "DisableFirefoxStudies": true, + "DisableForgetButton": true, + "DisableMasterPasswordCreation": true, + "DisablePocket": true, + "DisablePrivateBrowsing": true, + "DisableProfileImport": true, + "DisableProfileRefresh": true, + "DisableSafeMode": true, + "DisableSetDesktopBackground": true, + "DisableSystemAddonUpdate": true, + "DisableTelemetry": true, + "DisplayBookmarksToolbar": false, + "DontCheckDefaultBrowser": true, + "EnableTrackingProtection": { + "Cryptomining": true, + "Fingerprinting": true, + "Value": true + }, + "ExtensionSettings": { + "*": { + "installation_mode": "blocked" + }, + "uBlock0@raymondhill.net": { + "install_url": "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi", + "installation_mode": "force_installed" + } + }, + "ExtensionUpdate": false, + "FirefoxHome": { + "Highlights": false, + "Pocket": false, + "Search": true, + "Snippets": false, + "TopSites": true + }, + "FlashPlugin": {}, + "HardwareAcceleration": false, + "Homepage": { + "Additional": [], + "StartPage": "none" + }, + "NewTabPage": true, + "NoDefaultBookmarks": true, + "OfferToSaveLogins": false, + "OfferToSaveLoginsDefault": false, + "OverrideFirstRunPage": "", + "OverridePostUpdatePage": "", + "PasswordManagerEnabled": false, + "Permissions": { + "Camera": { + "BlockNewRequests": true + }, + "Location": { + "BlockNewRequests": true + }, + "Microphone": { + "BlockNewRequests": true + }, + "Notifications": { + "BlockNewRequests": true + } + }, + "Preferences": { + "browser.tabs.warnOnClose": false, + "browser.urlbar.suggest.bookmark": false, + "browser.urlbar.suggest.history": false, + "browser.urlbar.suggest.openpage": false, + "datareporting.policy.dataSubmissionPolicyBypassNotification": true, + "dom.disable_window_flip": true, + "dom.disable_window_move_resize": true, + "dom.event.contextmenu.enabled": false, + "extensions.getAddons.showPane": false, + "places.history.enabled": false, + "privacy.file_unique_origin": true, + "ui.key.menuAccessKeyFocuses": false + }, + "PromptForDownloadLocation": false, + "SanitizeOnShutdown": { + "Cache": true, + "Cookies": true, + "Downloads": true, + "FormData": true, + "History": true, + "OfflineApps": true, + "Sessions": true, + "SiteSettings": true + } + } +} \ No newline at end of file diff --git a/.m1k1o/browser/supervisord.conf b/.m1k1o/browser/supervisord.conf new file mode 100644 index 00000000..d703a8d2 --- /dev/null +++ b/.m1k1o/browser/supervisord.conf @@ -0,0 +1,21 @@ +[program:firefox-esr] +environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s" +command=/usr/lib/firefox-esr/firefox-esr --display=%(ENV_DISPLAY)s -setDefaultBrowser -width 1280 -height 720 +autorestart=true +priority=800 +user=%(ENV_USER)s +stdout_logfile=/var/log/neko/firefox-esr.log +stdout_logfile_maxbytes=100MB +stdout_logfile_backups=10 +redirect_stderr=true + +[program:openbox] +environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s" +command=/usr/bin/openbox --config-file /etc/neko/openbox.xml +autorestart=true +priority=300 +user=%(ENV_USER)s +stdout_logfile=/var/log/neko/openbox.log +stdout_logfile_maxbytes=100MB +stdout_logfile_backups=10 +redirect_stderr=true diff --git a/.m1k1o/build b/.m1k1o/build new file mode 100755 index 00000000..2fea2001 --- /dev/null +++ b/.m1k1o/build @@ -0,0 +1,29 @@ +#!/bin/sh + +BASE=../ + +build_client() { + docker build -t neko-dev-client -f base/Dockerfile --target client "$BASE" + docker run --rm -v "$BASE"/client/dist:/tmp/dist neko-dev-client sh -c "rm -rf /tmp/dist/*; cp -r /src/dist/* /tmp/dist" +} + +build_server() { + docker build -t neko-dev-server -f base/Dockerfile --target server "$BASE" + docker run --rm -v "$BASE"/server/bin:/tmp/bin neko-dev-server sh -c "rm -rf /tmp/bin/neko; cp /src/bin/neko /tmp/bin" +} + +build_base() { + docker build -t m1k1o/neko:base -f base/Dockerfile "$BASE" +} + +build_browser() { + docker build -t m1k1o/neko:browser -f browser/Dockerfile browser/ +} + +case $1 in + client) build_client;; + serve) build_server;; + base) build_base;; + browser) build_browser;; + *) echo "Unknown $1";; +esac From f280f05a585428c08d13c58884cc9f1f2c75833e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Wed, 17 Jun 2020 09:30:45 +0200 Subject: [PATCH 002/147] Update Dockerfile --- .m1k1o/base/Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.m1k1o/base/Dockerfile b/.m1k1o/base/Dockerfile index 3818f55e..a28a2656 100644 --- a/.m1k1o/base/Dockerfile +++ b/.m1k1o/base/Dockerfile @@ -99,10 +99,10 @@ RUN set -eux; apt-get update; \ # # copy config files -COPY .docker/dbus /usr/bin/dbus -COPY .docker/default.pa /etc/pulse/default.pa -COPY .docker/supervisord.conf /etc/neko/supervisord.conf -COPY .docker/xorg.conf /etc/neko/xorg.conf +COPY .m1k1o/base/dbus /usr/bin/dbus +COPY .m1k1o/base/default.pa /etc/pulse/default.pa +COPY .m1k1o/base/supervisord.conf /etc/neko/supervisord.conf +COPY .m1k1o/base/xorg.conf /etc/neko/xorg.conf # # set default envs From 085852e6e39f4f3f76fb801c72ab77369db72bea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Fri, 19 Jun 2020 01:58:42 +0200 Subject: [PATCH 003/147] fix chmod dbus file --- .m1k1o/base/dbus | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .m1k1o/base/dbus diff --git a/.m1k1o/base/dbus b/.m1k1o/base/dbus old mode 100644 new mode 100755 From 0e6a158d648aa33cc561ef15b5e6830c681ca20e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Fri, 19 Jun 2020 02:36:18 +0200 Subject: [PATCH 004/147] remove .github folder --- .github/FUNDING.yml | 1 - .github/ISSUE_TEMPLATE/bug_report.md | 42 ---------------------- .github/ISSUE_TEMPLATE/feature_request.md | 20 ----------- .github/workflows/build.yml | 32 ----------------- .github/workflows/deploy.yml | 44 ----------------------- 5 files changed, 139 deletions(-) delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/deploy.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 39f5cfc2..00000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -patreon: nurdism diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 101a0e04..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: "[BUG]" -labels: '' -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. - -**Client Log:** -``` -client log here.... -``` - -**Server Log:** -``` -server log here.... -``` diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index e0c0168b..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: "[FEATURE]" -labels: '' -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index dc3fcca4..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: build - -on: - pull_request: - branches: [ master ] - paths: - - 'client/**' - - 'server/**' - -jobs: - build: - name: Build - runs-on: ubuntu-latest - container: nurdism/neko:dev - steps: - - name: Check out code - uses: actions/checkout@v2 - - - name: Fetch unshallow - run: git fetch --prune --tags --unshallow - - - name: Get go dependencies and build server - working-directory: server - run: | - go get -v -t -d . - ./build - - - name: Get npm dependencies and build Client - working-directory: client - run: | - npm install - npm run build \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index 1e5cfd12..00000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: deploy - -on: - push: - branches: [ master ] - paths: - - 'client/**' - - 'server/**' - -jobs: - deploy: - name: Deploy - runs-on: ubuntu-latest - container: nurdism/neko:dev - steps: - - name: Check out code - uses: actions/checkout@v2 - - - name: Fetch unshallow - run: git fetch --prune --tags --unshallow - - - name: Get go dependencies and build server - working-directory: server - run: | - go get -v -t -d . - ./build - - - name: Get npm dependencies and build Client - working-directory: client - run: | - npm install - npm run build - - - name: Build the base image - run: docker build -f ./.docker/files/base/Dockerfile -t nurdism/neko:base . - - - name: Build the latest image - run: docker build -f ./.docker/files/firefox/Dockerfile -t nurdism/neko:latest . - - - name: Push the Docker images - run: | - echo "${{ secrets.DOCKER_PASSWORD }}" | docker login ${{ secrets.DOCKER_REGISTRY_URL }} -u ${{ secrets.DOCKER_USERNAME }} --password-stdin - docker push nurdism/neko:base - docker push nurdism/neko:latest From 7f4b02909145d881baa1767b2fea9cad1df2e3d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Fri, 19 Jun 2020 02:38:35 +0200 Subject: [PATCH 005/147] build cd workdir --- .m1k1o/build | 1 + 1 file changed, 1 insertion(+) diff --git a/.m1k1o/build b/.m1k1o/build index 2fea2001..0efb2ac0 100755 --- a/.m1k1o/build +++ b/.m1k1o/build @@ -1,4 +1,5 @@ #!/bin/sh +cd "$(dirname "$0")" BASE=../ From 477256bb94134285cd3574bec339ec6fd7915082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Fri, 19 Jun 2020 15:03:49 +0200 Subject: [PATCH 006/147] add clipboard button --- client/src/components/clipboard.vue | 78 +++++++++++++++++++++++++++++ client/src/components/video.vue | 28 +++++++++-- 2 files changed, 103 insertions(+), 3 deletions(-) create mode 100644 client/src/components/clipboard.vue diff --git a/client/src/components/clipboard.vue b/client/src/components/clipboard.vue new file mode 100644 index 00000000..c3deccda --- /dev/null +++ b/client/src/components/clipboard.vue @@ -0,0 +1,78 @@ +