mirror of
https://github.com/kasmtech/workspaces-core-images.git
synced 2025-06-26 06:51:45 +02:00
Merge branch 'feature/KASM-4608_kasm_printing' into 'develop'
KASM-4608 Install CUPS and Kasm Printer Service Closes KASM-4608 See merge request kasm-technologies/internal/workspaces-core-images!133
This commit is contained in:
commit
dcc58fb651
@ -86,6 +86,12 @@ RUN bash $INST_SCRIPTS/gamepad/install_gamepad.sh && rm -rf $INST_SCRIPTS/gamepa
|
||||
COPY ./src/ubuntu/install/webcam $INST_SCRIPTS/webcam/
|
||||
RUN bash $INST_SCRIPTS/webcam/install_webcam.sh && rm -rf $INST_SCRIPTS/webcam/
|
||||
|
||||
### Install Printer
|
||||
COPY ./src/ubuntu/install/printer $INST_SCRIPTS/printer/
|
||||
COPY ./src/ubuntu/install/printer/start_cups.sh /etc/cups/start_cups.sh
|
||||
RUN bash $INST_SCRIPTS/printer/install_printer.sh && rm -rf $INST_SCRIPTS/printer
|
||||
COPY ./src/ubuntu/install/printer/resources/*.ppd /etc/cups/ppd/
|
||||
|
||||
### Install custom cursors
|
||||
COPY ./src/ubuntu/install/cursors $INST_SCRIPTS/cursors/
|
||||
RUN bash $INST_SCRIPTS/cursors/install_cursors.sh && rm -rf $INST_SCRIPTS/cursors/
|
||||
@ -151,6 +157,7 @@ RUN touch $STARTUPDIR/wm.log \
|
||||
&& chmod 755 $STARTUPDIR/audio_input/kasm_audio_input_server \
|
||||
&& chmod 755 $STARTUPDIR/gamepad/kasm_gamepad_server \
|
||||
&& chmod 755 $STARTUPDIR/webcam/kasm_webcam_server \
|
||||
&& chmod 755 $STARTUPDIR/printer/kasm_printer_service \
|
||||
&& chmod 755 $STARTUPDIR/generate_container_user \
|
||||
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
|
||||
&& rm -rf $STARTUPDIR/install \
|
||||
|
@ -84,6 +84,12 @@ RUN bash $INST_SCRIPTS/gamepad/install_gamepad.sh && rm -rf $INST_SCRIPTS/gamepa
|
||||
COPY ./src/ubuntu/install/webcam $INST_SCRIPTS/webcam/
|
||||
RUN bash $INST_SCRIPTS/webcam/install_webcam.sh && rm -rf $INST_SCRIPTS/webcam/
|
||||
|
||||
### Install Printer
|
||||
COPY ./src/ubuntu/install/printer $INST_SCRIPTS/printer/
|
||||
COPY ./src/ubuntu/install/printer/start_cups.sh /etc/cups/start_cups.sh
|
||||
RUN bash $INST_SCRIPTS/printer/install_printer.sh && rm -rf $INST_SCRIPTS/printer
|
||||
COPY ./src/ubuntu/install/printer/resources/*.ppd /etc/cups/ppd/
|
||||
|
||||
### Copy built Squid
|
||||
COPY --from=squid_builder /usr/local/squid /usr/local/squid
|
||||
|
||||
@ -142,6 +148,7 @@ RUN touch $STARTUPDIR/wm.log \
|
||||
&& chmod 755 $STARTUPDIR/gamepad/kasm_gamepad_server \
|
||||
&& chmod 755 $STARTUPDIR/webcam/kasm_webcam_server \
|
||||
&& chmod 755 $STARTUPDIR/generate_container_user \
|
||||
&& chmod 755 $STARTUPDIR/printer/kasm_printer_service \
|
||||
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
|
||||
&& rm -rf $STARTUPDIR/install \
|
||||
&& mkdir -p $STARTUPDIR/kasmrx/Downloads \
|
||||
|
@ -91,6 +91,12 @@ RUN bash $INST_SCRIPTS/gamepad/install_gamepad.sh && rm -rf $INST_SCRIPTS/gamepa
|
||||
COPY ./src/ubuntu/install/webcam $INST_SCRIPTS/webcam/
|
||||
RUN bash $INST_SCRIPTS/webcam/install_webcam.sh && rm -rf $INST_SCRIPTS/webcam/
|
||||
|
||||
### Install Printer
|
||||
COPY ./src/ubuntu/install/printer $INST_SCRIPTS/printer/
|
||||
COPY ./src/ubuntu/install/printer/start_cups.sh /etc/cups/start_cups.sh
|
||||
RUN bash $INST_SCRIPTS/printer/install_printer.sh && rm -rf $INST_SCRIPTS/printer
|
||||
COPY ./src/ubuntu/install/printer/resources/*.ppd /etc/cups/ppd/
|
||||
|
||||
### Copy built Squid
|
||||
COPY --from=squid_builder /usr/local/squid /usr/local/squid
|
||||
|
||||
@ -149,6 +155,7 @@ RUN touch $STARTUPDIR/wm.log \
|
||||
&& chmod 755 $STARTUPDIR/gamepad/kasm_gamepad_server \
|
||||
&& chmod 755 $STARTUPDIR/webcam/kasm_webcam_server \
|
||||
&& chmod 755 $STARTUPDIR/generate_container_user \
|
||||
&& chmod 755 $STARTUPDIR/printer/kasm_printer_service \
|
||||
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
|
||||
&& rm -rf $STARTUPDIR/install \
|
||||
&& mkdir -p $STARTUPDIR/kasmrx/Downloads \
|
||||
|
@ -99,6 +99,12 @@ RUN bash $INST_SCRIPTS/gamepad/install_gamepad.sh && rm -rf $INST_SCRIPTS/gamepa
|
||||
COPY ./src/ubuntu/install/webcam $INST_SCRIPTS/webcam/
|
||||
RUN bash $INST_SCRIPTS/webcam/install_webcam.sh && rm -rf $INST_SCRIPTS/webcam/
|
||||
|
||||
### Install Printer
|
||||
COPY ./src/ubuntu/install/printer $INST_SCRIPTS/printer/
|
||||
COPY ./src/ubuntu/install/printer/start_cups.sh /etc/cups/start_cups.sh
|
||||
RUN bash $INST_SCRIPTS/printer/install_printer.sh && rm -rf $INST_SCRIPTS/printer
|
||||
COPY ./src/ubuntu/install/printer/resources/*.ppd /etc/cups/ppd/
|
||||
|
||||
### Copy built Squid
|
||||
COPY --from=squid_builder /usr/local/squid /usr/local/squid
|
||||
|
||||
@ -157,6 +163,7 @@ RUN touch $STARTUPDIR/wm.log \
|
||||
&& chmod 755 $STARTUPDIR/gamepad/kasm_gamepad_server \
|
||||
&& chmod 755 $STARTUPDIR/webcam/kasm_webcam_server \
|
||||
&& chmod 755 $STARTUPDIR/generate_container_user \
|
||||
&& chmod 755 $STARTUPDIR/printer/kasm_printer_service \
|
||||
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
|
||||
&& rm -rf $STARTUPDIR/install \
|
||||
&& mkdir -p $STARTUPDIR/kasmrx/Downloads \
|
||||
|
@ -114,6 +114,12 @@ RUN bash $INST_SCRIPTS/gamepad/install_gamepad.sh && rm -rf $INST_SCRIPTS/gamepa
|
||||
COPY ./src/ubuntu/install/webcam $INST_SCRIPTS/webcam/
|
||||
RUN bash $INST_SCRIPTS/webcam/install_webcam.sh && rm -rf $INST_SCRIPTS/webcam/
|
||||
|
||||
### Install Printer
|
||||
COPY ./src/ubuntu/install/printer $INST_SCRIPTS/printer/
|
||||
COPY ./src/ubuntu/install/printer/start_cups.sh /etc/cups/start_cups.sh
|
||||
RUN bash $INST_SCRIPTS/printer/install_printer.sh && rm -rf $INST_SCRIPTS/printer
|
||||
COPY ./src/ubuntu/install/printer/resources/*.ppd /etc/cups/ppd/
|
||||
|
||||
### Copy built Squid
|
||||
COPY --from=squid_builder /usr/local/squid /usr/local/squid
|
||||
|
||||
@ -176,6 +182,7 @@ RUN touch $STARTUPDIR/wm.log \
|
||||
&& chmod 755 $STARTUPDIR/gamepad/kasm_gamepad_server \
|
||||
&& chmod 755 $STARTUPDIR/webcam/kasm_webcam_server \
|
||||
&& chmod 755 $STARTUPDIR/generate_container_user \
|
||||
&& chmod 755 $STARTUPDIR/printer/kasm_printer_service \
|
||||
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
|
||||
&& rm -rf $STARTUPDIR/install \
|
||||
&& mkdir -p $STARTUPDIR/kasmrx/Downloads \
|
||||
|
@ -89,6 +89,12 @@ RUN bash $INST_SCRIPTS/gamepad/install_gamepad.sh && rm -rf $INST_SCRIPTS/gamepa
|
||||
COPY ./src/ubuntu/install/webcam $INST_SCRIPTS/webcam/
|
||||
RUN bash $INST_SCRIPTS/webcam/install_webcam.sh && rm -rf $INST_SCRIPTS/webcam/
|
||||
|
||||
### Install Printer
|
||||
COPY ./src/ubuntu/install/printer $INST_SCRIPTS/printer/
|
||||
COPY ./src/ubuntu/install/printer/start_cups.sh /etc/cups/start_cups.sh
|
||||
RUN bash $INST_SCRIPTS/printer/install_printer.sh && rm -rf $INST_SCRIPTS/printer
|
||||
COPY ./src/ubuntu/install/printer/resources/*.ppd /etc/cups/ppd/
|
||||
|
||||
### Copy built Squid
|
||||
COPY --from=squid_builder /usr/local/squid /usr/local/squid
|
||||
|
||||
@ -151,6 +157,7 @@ RUN touch $STARTUPDIR/wm.log \
|
||||
&& chmod 755 $STARTUPDIR/gamepad/kasm_gamepad_server \
|
||||
&& chmod 755 $STARTUPDIR/webcam/kasm_webcam_server \
|
||||
&& chmod 755 $STARTUPDIR/generate_container_user \
|
||||
&& chmod 755 $STARTUPDIR/printer/kasm_printer_service \
|
||||
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
|
||||
&& rm -rf $STARTUPDIR/install \
|
||||
&& mkdir -p $STARTUPDIR/kasmrx/Downloads \
|
||||
|
@ -132,6 +132,11 @@ function start_kasmvnc (){
|
||||
chmod +x $HOME/.vnc/xstartup
|
||||
|
||||
VNCOPTIONS="$VNCOPTIONS -select-de manual"
|
||||
|
||||
if [[ ${KASM_SVC_PRINTER:-1} == 1 ]]; then
|
||||
VNCOPTIONS="$VNCOPTIONS -UnixRelay printer:/tmp/printer"
|
||||
fi
|
||||
|
||||
if [[ "${BUILD_ARCH}" =~ ^aarch64$ ]] && [[ -f /lib/aarch64-linux-gnu/libgcc_s.so.1 ]] ; then
|
||||
LD_PRELOAD=/lib/aarch64-linux-gnu/libgcc_s.so.1 vncserver $DISPLAY $KASMVNC_HW3D -drinode $DRINODE -depth $VNC_COL_DEPTH -geometry $VNC_RESOLUTION -websocketPort $NO_VNC_PORT -httpd ${KASM_VNC_PATH}/www -sslOnly -FrameRate=$MAX_FRAME_RATE -interface 0.0.0.0 -BlacklistThreshold=0 -FreeKeyMappings $VNCOPTIONS $KASM_SVC_SEND_CUT_TEXT $KASM_SVC_ACCEPT_CUT_TEXT
|
||||
else
|
||||
@ -275,6 +280,24 @@ function start_webcam (){
|
||||
fi
|
||||
}
|
||||
|
||||
function start_printer (){
|
||||
if [[ ${KASM_SVC_PRINTER:-1} == 1 ]]; then
|
||||
echo 'Starting printer service'
|
||||
if [[ $DEBUG == true ]]; then
|
||||
$STARTUPDIR/printer/kasm_printer_service --debug --directory $HOME/PDF --relay /tmp/printer &
|
||||
else
|
||||
$STARTUPDIR/printer/kasm_printer_service --directory $HOME/PDF --relay /tmp/printer &
|
||||
fi
|
||||
|
||||
KASM_PROCS['kasm_printer']=$!
|
||||
|
||||
if [[ $DEBUG == true ]]; then
|
||||
echo -e "\n------------------ Started Printer Service ----------------------------"
|
||||
echo "Kasm Printer PID: ${KASM_PROCS['kasm_printer']}";
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function custom_startup (){
|
||||
custom_startup_script=/dockerstartup/custom_startup.sh
|
||||
if [ -f "$custom_startup_script" ]; then
|
||||
@ -343,6 +366,7 @@ start_upload
|
||||
start_gamepad
|
||||
profile_size_check &
|
||||
start_webcam
|
||||
start_printer
|
||||
|
||||
STARTUP_COMPLETE=1
|
||||
|
||||
|
@ -147,6 +147,7 @@ elif [[ "${DISTRO}" == "alpine" ]] ; then
|
||||
mesa-gbm \
|
||||
pciutils-libs \
|
||||
perl \
|
||||
perl-datetime \
|
||||
perl-hash-merge-simple \
|
||||
perl-list-moreutils \
|
||||
perl-switch \
|
||||
|
30
src/ubuntu/install/printer/install_printer.sh
Executable file
30
src/ubuntu/install/printer/install_printer.sh
Executable file
@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
### every exit != 0 fails the script
|
||||
set -e
|
||||
|
||||
echo $DISTRO
|
||||
|
||||
if [ "${DISTRO}" == "oracle7" ] || [ "${DISTRO}" == "centos" ]; then
|
||||
yum install -y cups cups-client cups-pdf
|
||||
elif [[ "${DISTRO}" == @(almalinux8|almalinux9|oracle8|oracle9|rockylinux8|rockylinux9|fedora37|fedora38) ]]; then
|
||||
dnf install -y cups cups-client cups-pdf
|
||||
elif [ "${DISTRO}" == "opensuse" ]; then
|
||||
zypper install -y cups cups-client cups-pdf
|
||||
elif [ "${DISTRO}" == "alpine" ]; then
|
||||
echo '@testing http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories
|
||||
apk add --no-cache cups cups-client cups-pdf@testing
|
||||
else
|
||||
apt-get update
|
||||
apt-get install -y cups cups-client cups-pdf
|
||||
fi
|
||||
|
||||
COMMIT_ID="225c06d9a5c63819716b5d4815cbea10b72a3199"
|
||||
BRANCH="develop"
|
||||
COMMIT_ID_SHORT=$(echo "${COMMIT_ID}" | cut -c1-6)
|
||||
|
||||
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
|
||||
|
||||
mkdir -p $STARTUPDIR/printer
|
||||
wget -qO- https://kasmweb-build-artifacts.s3.amazonaws.com/kasm_printer_service/${COMMIT_ID}/kasm_printer_service_${ARCH}_${BRANCH}.${COMMIT_ID_SHORT}.tar.gz | tar -xvz -C $STARTUPDIR/printer/
|
||||
|
||||
echo "${BRANCH}:${COMMIT_ID}" > $STARTUPDIR/printer/kasm_printer.version
|
21
src/ubuntu/install/printer/resources/kasm.ppd
Normal file
21
src/ubuntu/install/printer/resources/kasm.ppd
Normal file
@ -0,0 +1,21 @@
|
||||
*PPD-Adobe: "4.3"
|
||||
*FormatVersion: "4.3"
|
||||
*FileVersion: "1.1"
|
||||
*LanguageVersion: English
|
||||
*LanguageEncoding: ISOLatin1
|
||||
*PCFileName: "kasm.PPD"
|
||||
*Manufacturer: "Kasm"
|
||||
*Product: "(CUPS v1.1)"
|
||||
*ModelName: "Kasm Virtual Printer"
|
||||
*ShortNickName: "Kasm Virtual Printer"
|
||||
*NickName: "Kasm Virtual Printer (no options)"
|
||||
*1284DeviceID: "MFG:Kasm;MDL:Kasm Virtual Printer;DES:Kasm Virtual Printer Printer;CLS:PRINTER;CMD:POSTSCRIPT;"
|
||||
*% cupsFilter: "application/vnd.cups-postscript 0 pstitleiconv"
|
||||
*PSVersion: "(2017.000) 0"
|
||||
*LanguageLevel: "2"
|
||||
*ColorDevice: True
|
||||
*DefaultColorSpace: RGB
|
||||
*FileSystem: False
|
||||
*Throughput: "8"
|
||||
*LandscapeOrientation: Plus90
|
||||
*TTRasterizer: Type42
|
14
src/ubuntu/install/printer/start_cups.sh
Executable file
14
src/ubuntu/install/printer/start_cups.sh
Executable file
@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -ex
|
||||
{
|
||||
PRINTER_NAME=${KASM_PRINTER_NAME:-Kasm-Printer}
|
||||
|
||||
echo "Starting cups"
|
||||
/usr/sbin/cupsd -f &
|
||||
until [[ "$(lpstat -r)" == "scheduler is running" ]]; do sleep 15; done
|
||||
|
||||
echo "Creating a virtual printer: $PRINTER_NAME"
|
||||
lpadmin -p $PRINTER_NAME -E -v cups-pdf:/ -P /etc/cups/ppd/kasm.ppd
|
||||
|
||||
echo "Done!"
|
||||
} 2>&1 | tee /tmp/start_cups.log
|
Loading…
x
Reference in New Issue
Block a user