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:
Richard Koliser 2023-08-10 03:06:56 +00:00
commit dcc58fb651
11 changed files with 132 additions and 0 deletions

View File

@ -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 \

View File

@ -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 \

View File

@ -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 \

View File

@ -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 \

View File

@ -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 \

View File

@ -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 \

View File

@ -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

View File

@ -147,6 +147,7 @@ elif [[ "${DISTRO}" == "alpine" ]] ; then
mesa-gbm \
pciutils-libs \
perl \
perl-datetime \
perl-hash-merge-simple \
perl-list-moreutils \
perl-switch \

View 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

View 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

View 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