linux:misc:xrdp_ubuntu_18.10

Differences

This shows you the differences between two versions of the page.


linux:misc:xrdp_ubuntu_18.10 [2019/10/31 09:05] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +====== Setup xrdp as a Windows Terminal server (on Ubuntu 18.04 update) ======
 +[[http://c-nergy.be/blog|Source]]
  
 +To install xRDP, simply open a Terminal console.  In the Terminal console, Browse to the location where the script has been stored and then issue the one of the following command based your requirements 
 +  * ./install-xrdp-2.2.sh
 +Use this command to install xrdp version 0.9.8. No additional features such as sound redirection and GDM lock screen fix will be implemented 
 +  * ./install-xrdp-2.2.sh -g yes
 +Use this command to install xrdp version 0.9.8. and to enabe the GDM Lock screen fix
 +  * ./install-xrdp-2.2.sh -s yes
 +Use this command to install xrdp version 0.9.8. and to enabe sound redirection additionally
 +  * ./install-xrdp-2.2.sh -s yes -g yes
 +Use this command to install xrdp version 0.9.8. and to enabe all the additional features i.e. sound redirection and GDM lock screen fix 
 +
 +<code bash install-xrdp-2.2.sh>
 +#!/bin/bash
 +#####################################################################################################
 +# Script_Name : install-xrdp-2.2.sh
 +# Description : Perform a custom installation of xrdp
 +# on ubuntu 18.04 and later
 +# Date : October 2018
 +# written by : Griffon
 +# Web Site :http://www.c-nergy.be - http://www.c-nergy.be/blog
 +# Version : 2.2
 +# History : 2.2 - Add Support for Ubuntu 18.10 and Yaru Theme
 +#         : 2.1 - Add logic to enable sound redirection for U18.04
 +#               - re-write code logic to include functions
 +#               - Removed support for Ubuntu 17.10 as reached end of support
 +#         : 2.0 - Initial Version for Ubuntu system with Gnome Desktop
 +#         : 1.x - Script for Ubuntu 16.04 or later       
 +# Disclaimer : Script provided AS IS. Use it at your own risk....
 +####################################################################################################
 +
 +#---------------------------------------------------#
 +#  Detecting if Parameters passed to script .... 
 +#---------------------------------------------------#
 +
 +while getopts g:s: option 
 +do 
 + case "${option}" 
 + in 
 + g) fixGDM=${OPTARG};; 
 + s) fixSound=${OPTARG};; 
 + esac 
 +done 
 +
 +#---------------------------------------------------#
 +# Script Version information Displayed              #
 +#---------------------------------------------------#
 +
 +echo
 +/bin/echo -e "\e[1;36m   !-------------------------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;36m     Custom XRDP Installation Script  - Ver 2.2                !\e[0m"
 +/bin/echo -e "\e[1;36m     Written by Griffon - October 2018 - www.c-nergy.be        !\e[0m"
 +/bin/echo -e "\e[1;36m   !-------------------------------------------------------------!\e[0m"
 +echo
 +
 +#--------------------------------------------------------------------------#
 +# -----------------------Function Section - DO NOT MODIFY -----------------#
 +#--------------------------------------------------------------------------#
 +
 +#---------------------------------------------------#
 +# Function 1 - Install Prereqs... 
 +#---------------------------------------------------#
 +
 +install_prereqs() {
 +echo
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;33m     Installing PreReqs packages..Proceeding.  ! \e[0m"
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +echo
 +
 +sudo apt-get -y install libx11-dev libxfixes-dev libssl-dev libpam0g-dev libtool libjpeg-dev flex bison gettext autoconf libxml-parser-perl libfuse-dev xsltproc libxrandr-dev python-libxml2 nasm xserver-xorg-dev fuse pkg-config git intltool xserver-xorg-core
 +
 +}
 +
 +#---------------------------------------------------#
 +# Function 2 - Download XRDP Binaries... 
 +#---------------------------------------------------#
 +get_binaries() { 
 +
 +echo
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;33m     Download xRDP Binaries.......Proceeding.  ! \e[0m"
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +echo
 +
 +cd ~/Downloads
 +
 +## -- Download the xrdp latest files
 +echo
 +/bin/echo -e "\e[1;32m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;32m    Preparing download xrdp package            !\e[0m"
 +/bin/echo -e "\e[1;32m   !---------------------------------------------!\e[0m"
 +echo
 +git clone https://github.com/neutrinolabs/xrdp.git
 +echo
 +/bin/echo -e "\e[1;32m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;32m    Preparing download xorgxrdp package        !\e[0m"
 +/bin/echo -e "\e[1;32m   !---------------------------------------------!\e[0m"
 +echo
 +git clone https://github.com/neutrinolabs/xorgxrdp.git
 +
 +}
 +
 +#---------------------------------------------------#
 +# Function 3 - compiling xrdp... 
 +#---------------------------------------------------#
 +
 +compile_source() { 
 +
 +# -- Compiling xrdp package first 
 +
 +echo
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;33m     Compile xRDP packages .......Proceeding.  ! \e[0m"
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +echo
 +
 +
 +cd ~/Downloads/xrdp
 +sudo ./bootstrap
 +sudo ./configure --enable-fuse --enable-jpeg 
 +sudo make
 +
 +#-- check if no error during compilation 
 +
 +if [ $? -eq 0 ]
 +then 
 +/bin/echo -e "\e[1;33m   |-| Make Operation Completed successfully       \e[0m"
 +
 +else 
 +echo
 +echo
 +/bin/echo -e "\e[1;31m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;31m     Error while Executing make                !\e[0m"
 +/bin/echo -e "\e[1;31m     The Script is exiting....                 !\e[0m"
 +/bin/echo -e "\e[1;31m   !---------------------------------------------!\e[0m"
 +exit
 +fi
 +sudo make install
 +
 +echo
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;33m     Compile xorgxrdp packages....Proceeding.  ! \e[0m"
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +echo
 +
 +cd ~/Downloads/xorgxrdp 
 +sudo ./bootstrap 
 +sudo ./configure 
 +sudo make
 +
 +# check if no error during compilation 
 +if [ $? -eq 0 ]
 +then 
 +echo
 +/bin/echo -e "\e[1;33m   |-| Make Operation Completed successfully       \e[0m"
 +echo
 +else 
 +echo
 +/bin/echo -e "\e[1;31m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;31m     Error while Executing make                !\e[0m"
 +/bin/echo -e "\e[1;31m     The Script is exiting....                 !\e[0m"
 +/bin/echo -e "\e[1;31m   !---------------------------------------------!\e[0m"
 +exit
 +fi
 +sudo make install
 +
 +}
 +
 +#---------------------------------------------------#
 +# Function 5 - create services .... 
 +#---------------------------------------------------# 
 +
 +enable_service() {
 +echo
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;33m     Creating xRDP services.......Proceeding.  ! \e[0m"
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +echo
 +
 +sudo systemctl daemon-reload
 +sudo systemctl enable xrdp.service
 +sudo systemctl enable xrdp-sesman.service
 +sudo systemctl start xrdp
 +
 +}
 +
 +#---------------------------------------------------#
 +# Function 6 - Install Gnome Tweak Tool.... 
 +#---------------------------------------------------#
 +
 +install_tweak() 
 +{
 +echo
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;33m     Installing Gnome Tweak...Proceeding...    ! \e[0m"
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +echo
 +sudo apt-get install gnome-tweak-tool -y
 +}
 +
 +#--------------------------------------------------------------------#
 +# Fucntion 7 - Allow console Access ....(seems optional in u18.04)
 +#--------------------------------------------------------------------#
 +
 +allow_console() 
 +{
 +echo
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;33m     Granting Console Access...Proceeding...   ! \e[0m"
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +echo
 +sudo sed -i 's/allowed_users=console/allowed_users=anybody/' /etc/X11/Xwrapper.config
 +}
 +
 +#---------------------------------------------------#
 +# Function 8 - create policies exceptions .... 
 +#---------------------------------------------------#
 +
 +create_polkit()
 +{
 +echo
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;33m     Creating Polkit File...Proceeding...      ! \e[0m"
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +echo
 +
 +sudo bash -c "cat >/etc/polkit-1/localauthority/50-local.d/45-allow.colord.pkla" <<EOF
 +[Allow Colord all Users]
 +Identity=unix-user:*
 +Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
 +ResultAny=no
 +ResultInactive=no
 +ResultActive=yes
 +EOF
 +
 +}
 +
 +#---------------------------------------------------#
 +# Function 9 - Fixing Theme and Extensions .... 
 +#---------------------------------------------------#
 +
 +fix_theme()
 +{
 +echo
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;33m     Fix Theme and extensions...Proceeding...  !\e[0m"
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +echo
 +
 +#Check if script has already run.... 
 +if grep -xq "#fixGDM-by-Griffon" /etc/xrdp/startwm.sh; then
 + echo "Skip theme fixing as script has run at least once..."
 +else
 +#Set xRDP session Theme to Ambiance and Icon to Humanity if Ubuntu 18.04.x
 +if  [[ "$version" = *"Ubuntu 18.04"* ]];
 +then
 +sudo sed -i.bak "4 a #fixGDM-by-Griffon\ngnome-shell-extension-tool -e ubuntu-appindicators@ubuntu.com\ngnome-shell-extension-tool -e ubuntu-dock@ubuntu.com\n\nif [ -f ~/.xrdp-fix-theme.txt ]; then\necho 'no action required'\nelse\ngsettings set org.gnome.desktop.interface gtk-theme 'Ambiance'\ngsettings set org.gnome.desktop.interface icon-theme 'Humanity'\necho 'check file for xrdp theme fix' >~/.xrdp-fix-theme.txt\nfi\n" /etc/xrdp/startwm.sh
 +#Set xRDP session Theme to Yaru and Icon to Suru if Ubuntu 18.10.x
 +elif [[ "$version" = *"Ubuntu 18.10"* ]];
 +then
 +sudo sed -i.bak "4 a #fixGDM-by-Griffon\ngnome-shell-extension-tool -e ubuntu-appindicators@ubuntu.com\ngnome-shell-extension-tool -e ubuntu-dock@ubuntu.com\n\nif [ -f ~/.xrdp-fix-theme.txt ]; then\necho 'no action required'\nelse\ngsettings set org.gnome.desktop.interface gtk-theme 'Yaru'\ngsettings set org.gnome.desktop.interface icon-theme 'Yaru'\necho 'check file for xrdp theme fix' >~/.xrdp-fix-theme.txt\nfi\n" /etc/xrdp/startwm.sh
 +else 
 +echo "Error Occured somewhere...Exiting..."
 +exit
 +fi
 +
 +fi
 +echo
 +}
 +
 +#---------------------------------------------------#
 +# Function 10 - Fixing GDM - As an Option .... 
 +#---------------------------------------------------#
 +fix_gdm()
 +{
 +echo
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;33m     Fix for GDM Lock Screen color...          !\e[0m"
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +echo
 +# Step 1 - Install prereqs for compilation later on
 +sudo apt-get -y install libglib2.0-dev-bin
 +sudo apt-get -y install libxml2-utils
 +
 +# extract gresource info (from url...)
 +workdir=${HOME}/shell-theme
 +if [ ! -d ${workdir}/theme ]; then
 +  mkdir -p ${workdir}/theme
 +  mkdir -p ${workdir}/theme/icons
 +
 +fi
 +gst=/usr/share/gnome-shell/gnome-shell-theme.gresource
 + 
 +for r in `gresource list $gst`; do
 +        gresource extract $gst $r >$workdir/${r#\/org\/gnome\/shell/}
 +done
 +
 +/bin/echo -e "\e[1;33m    |-| Creating XML File...   \e[0m"
 +# create the xml file 
 +bash -c "cat >${workdir}/theme/gnome-shell-theme.gresource.xml" <<EOF
 +<?xml version="1.0" encoding="UTF-8"?>
 +<gresources>
 +  <gresource prefix="/org/gnome/shell/theme">
 +    <file>calendar-arrow-left.svg</file>
 +    <file>calendar-arrow-right.svg</file>
 +    <file>calendar-today.svg</file>
 +    <file>checkbox-focused.svg</file>
 +    <file>checkbox-off-focused.svg</file>
 +    <file>checkbox-off.svg</file>
 +    <file>checkbox.svg</file>
 +    <file>close-window.svg</file>
 +    <file>corner-ripple-ltr.png</file>
 +    <file>corner-ripple-rtl.png</file>
 +    <file>dash-placeholder.svg</file>
 +    <file>gnome-shell.css</file>
 +    <file>gnome-shell-high-contrast.css</file>
 +    <file>no-events.svg</file>
 +    <file>no-notifications.svg</file>
 +    <file>noise-texture.png</file>
 +    <file>page-indicator-active.svg</file>
 +    <file>page-indicator-inactive.svg</file>
 +    <file>page-indicator-checked.svg</file>
 +    <file>page-indicator-hover.svg</file>
 +    <file>process-working.svg</file>
 +    <file>toggle-off-us.svg</file>
 +    <file>toggle-off-intl.svg</file>
 +    <file>toggle-on-hc.svg</file>
 +    <file>toggle-on-us.svg</file>
 +    <file>toggle-on-intl.svg</file>
 +  </gresource>
 +</gresources>
 +EOF
 +cd ${workdir}/theme
 +/bin/echo -e "\e[1;33m    |-| Modify Css...   \e[0m"
 +sed -i -e 's/background: #2e3436/background: #2c00e1/g' ~/shell-theme/theme/gnome-shell.css 
 +
 +##Delete the file noise-texture.png (grey one)
 +rm ${workdir}/theme/noise-texture.png
 +
 +/bin/echo -e "\e[1;33m    |-| Download Purple image file...   \e[0m"
 +#Download the noise-texture.png with purple background 
 +wget http://www.c-nergy.be/downloads/noise-texture.png
 +
 +/bin/echo -e "\e[1;33m    |-| Compile Resource File...   \e[0m"
 +#Compile file and copy to correct location....
 +cd ${workdir}/theme
 +glib-compile-resources gnome-shell-theme.gresource.xml 
 +
 +/bin/echo -e "\e[1;33m    |-| Copy file to target location...   \e[0m"
 +
 +# make a backup of the file and copy the file....
 +sudo cp /usr/share/gnome-shell/gnome-shell-theme.gresource /usr/share/gnome-shell/gnome-shell-theme.gresource.bak
 +sudo cp ${workdir}/theme/gnome-shell-theme.gresource /usr/share/gnome-shell/gnome-shell-theme.gresource
 +echo
 +}
 +
 +#---------------------------------------------------#
 +# Function 11 - Enable Sound Redirection .... 
 +#---------------------------------------------------#
 +
 +enable_sound()
 +{
 +echo
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;33m     Enabling Sound Redirection...             !\e[0m"
 +/bin/echo -e "\e[1;33m   !---------------------------------------------!\e[0m"
 +echo
 +
 +# Step 1 - Install xrdp-pulseaudio-installer package
 +sudo apt-get install xrdp-pulseaudio-installer  -y
 +
 +# Step 2 - Enable Source Code Repository
 +sudo apt-add-repository -s 'deb http://be.archive.ubuntu.com/ubuntu/ '$codename' main restricted'
 +sudo apt-add-repository -s 'deb http://be.archive.ubuntu.com/ubuntu/ '$codename' restricted universe main multiverse'
 +sudo apt-add-repository -s 'deb http://be.archive.ubuntu.com/ubuntu/ '$codename'-updates restricted universe main multiverse'
 +sudo apt-add-repository -s 'deb http://be.archive.ubuntu.com/ubuntu/ '$codename'-backports main restricted universe multiverse'
 +sudo apt-add-repository -s 'deb http://be.archive.ubuntu.com/ubuntu/ '$codename'-security main restricted universe main multiverse'
 +sudo apt-get update
 +
 +# Step 3 - Download pulseaudio source in /tmp directory
 +cd /tmp
 +sudo apt source pulseaudio 
 +
 +# Step 4 - Compile
 +pulsever=$(pulseaudio --version | awk '{print $2}')
 +
 +cd /tmp/pulseaudio-$pulsever
 +sudo ./configure
 +
 +# Step 5 - Create xrdp sound modules
 +
 +cd /usr/src/xrdp-pulseaudio-installer
 +sudo make PULSE_DIR="/tmp/pulseaudio-$pulsever"
 +
 +# Step 6 - copy files to correct location 
 +
 +sudo install -t "/var/lib/xrdp-pulseaudio-installer" -D -m 644 *.so
 +sudo install -t "/usr/lib/pulse-$pulsever/modules" -D -m 644 *.so
 +echo
 +
 +}
 +
 +
 +#--------------------------------------------------------------------------#
 +# -----------------------END Function Section             -----------------#
 +#--------------------------------------------------------------------------#
 +
 +
 +#--------------------------------------------------------------------------#
 +#------------                 MAIN SCRIPT SECTION       -------------------#  
 +#--------------------------------------------------------------------------#
 +
 +#---------------------------------------------------#
 +# Step 0 - Try to Detect Ubuntu Version.... 
 +#---------------------------------------------------#
 +
 +version=$(lsb_release -sd) 
 +codename=$(lsb_release -sc) 
 +
 +echo
 +/bin/echo -e "\e[1;33m   |-| Detecting Ubuntu version        \e[0m"
 +
 +if  [[ "$version" = *"Ubuntu 18.04"* ]];
 +then
 +/bin/echo -e "\e[1;32m       |-| Ubuntu Version : $version\e[0m"
 +echo
 +elif [[ "$version" = *"Ubuntu 18.10"* ]];
 +then
 +/bin/echo -e "\e[1;32m       |-| Ubuntu Version : $version\e[0m"
 +echo
 +else
 +/bin/echo -e "\e[1;31m  !------------------------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;31m  ! Your system is not running Ubuntu 18.04 Edition and later  !\e[0m"
 +/bin/echo -e "\e[1;31m  ! The script has been tested only on Ubuntu 18.04 and later  !\e[0m"
 +/bin/echo -e "\e[1;31m  ! The script is exiting...                                   !\e[0m"              
 +/bin/echo -e "\e[1;31m  !------------------------------------------------------------!\e[0m"
 +echo
 +exit
 +fi
 +
 +
 +/bin/echo -e "\e[1;33m   |-| Detecting Parameters        \e[0m"
 +
 +
 +#Detect if argument passed
 +if [ "$fixSound" = "yes" ]; 
 +then 
 +/bin/echo -e "\e[1;32m       |-| Sound Redirection Option...: [YES]\e[0m"
 +else
 +/bin/echo -e "\e[1;32m       |-| Sound Redirection Option...: [NO]\e[0m"
 +fi
 +
 +if [ "$fixGDM" = "yes" ]; 
 +then 
 +/bin/echo -e "\e[1;32m       |-| gdm fix Option.............: [YES]\e[0m"
 +else
 +/bin/echo -e "\e[1;32m       |-| gdm fix Option.............: [NO]\e[0m"
 +fi
 +echo
 +
 +#---------------------------------------------------------#
 +# Step 1 - Executing the installation & config tasks .... #
 +#---------------------------------------------------------#
 +
 +echo
 +/bin/echo -e "\e[1;36m   !-------------------------------------------------------------!\e[0m"
 +/bin/echo -e "\e[1;36m     Installation Process starting....                         !\e[0m"
 +/bin/echo -e "\e[1;36m   !-------------------------------------------------------------!\e[0m"
 +echo
 +/bin/echo -e "\e[1;33m   |-| Proceed with installation.....       \e[0m"
 +echo 
 +
 +install_prereqs
 +get_binaries
 +compile_source
 +enable_service
 +install_tweak
 +allow_console
 +create_polkit
 +fix_theme
 +
 +
 +if [ "$fixGDM" = "yes" ]; 
 +then 
 +fix_gdm
 +fi
 +
 +if [ "$fixSound" = "yes" ]; 
 +then 
 +enable_sound
 +fi
 +
 +
 +#---------------------------------------------------#
 +# Step 2 - Credits .... 
 +#---------------------------------------------------#
 +echo
 +/bin/echo -e "\e[1;36m#-----------------------------------------------------------------------#\e[0m"
 +/bin/echo -e "\e[1;36m# Installation Completed                                                #\e[0m"
 +/bin/echo -e "\e[1;36m# Please test your xRDP configuration.A Reboot Might be required...     #\e[0m"
 +/bin/echo -e "\e[1;36m# Written by Griffon - October 2018 - Ver 2.2 - Std-Xrdp-Install-2.2.sh #\e[0m"
 +/bin/echo -e "\e[1;36m#-----------------------------------------------------------------------#\e[0m"
 +echo
 +</code>
  • linux/misc/xrdp_ubuntu_18.10.txt
  • Last modified: 2019/10/31 09:05
  • by 127.0.0.1