KASM-4608 Install CUPS and Kasm Printer Service

This commit is contained in:
Mariusz Marciniak 2023-07-25 15:54:41 +02:00
parent 3e61ee82c4
commit 91b7add249
No known key found for this signature in database
11 changed files with 128 additions and 2 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

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

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

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

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

View File

@ -145,6 +145,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
@ -288,6 +293,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
@ -356,6 +379,7 @@ start_upload
start_gamepad
profile_size_check &
start_webcam
start_printer
STARTUP_COMPLETE=1

View File

@ -17,8 +17,8 @@ echo "Install KasmVNC server"
cd /tmp
BUILD_ARCH=$(uname -p)
UBUNTU_CODENAME=""
COMMIT_ID="9450157af1e16f9a27c12170ac0ebfd28ee50ebc"
BRANCH="master" # just use 'release' for a release branch
COMMIT_ID="d0db55dcbc5e5d02f0102f7beb841861a00533c6"
BRANCH="feature_KASM-4608_linux_printing" # just use 'release' for a release branch
KASMVNC_VER="1.1.1"
COMMIT_ID_SHORT=$(echo "${COMMIT_ID}" | cut -c1-6)

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-pdf
elif [[ "${DISTRO}" == @(almalinux8|almalinux9|oracle8|oracle9|rockylinux8|rockylinux9|fedora37|fedora38) ]]; then
dnf install -y cups cups-pdf
elif [ "${DISTRO}" == "opensuse" ]; then
zypper install -y cups 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-pdf@testing
else
apt-get update
apt-get install -y cups cups-pdf
fi
COMMIT_ID="049908cfa22a536a1ea9c2e0d42528711b013625"
BRANCH="feature_KASM-4608_kasm_printing"
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