From 564d8c8f38ac7ee98a333a0bafcf752b78e8e0ac Mon Sep 17 00:00:00 2001 From: Har-Kuun Date: Fri, 25 Sep 2020 18:43:53 -0500 Subject: [PATCH] Add RDP feature; improve installation experience. --- OneClickDesktop_zh-CN.sh | 266 ++++++++++++++++++++++++++++++++++----- 1 file changed, 235 insertions(+), 31 deletions(-) diff --git a/OneClickDesktop_zh-CN.sh b/OneClickDesktop_zh-CN.sh index 27dfe88..58a3956 100644 --- a/OneClickDesktop_zh-CN.sh +++ b/OneClickDesktop_zh-CN.sh @@ -119,6 +119,86 @@ function determine_system_variables HomeDir=$HOME } +function get_user_options +{ + echo + say @B"请输入您的Guacamole用户名:" yellow + read guacamole_username + echo + say @B"请输入您的Guacamole密码:" yellow + read guacamole_password_prehash + read guacamole_password_md5 <<< $(echo -n $guacamole_password_prehash | md5sum | awk '{print $1}') + echo + say @B"您想让Guacamole通过RDP还是VNC连接Linux桌面?" yellow + say @B"RDP请输入1, VNC请输入2. 如果您不清楚这是什么,请输入1." yellow + read choice_rdpvnc + echo + if [ $choice_rdpvnc = 1 ] ; then + say @B"请选择屏幕分辨率。" yellow + echo "默认分辨率1280x800请输入1, 自适应分辨率请输入2, 手动设置分辨率请输入3." + read rdp_resolution_options + if [ $rdp_resolution_options = 2 ] ; then + set_rdp_resolution=0; + else + set_rdp_resolution=1; + if [ $rdp_resolution_options = 3 ] ; then + echo + echo "请输入屏幕宽度(默认为1280):" + read rdp_screen_width_input + echo "请输入屏幕高度(默认为800):" + read rdp_screen_height_input + if [ $rdp_screen_width_input -gt 1 ] && [ $rdp_screen_height_input -gt 1 ] ; then + rdp_screen_width=$rdp_screen_width_input + rdp_screen_height=$rdp_screen_height_input + else + say "屏幕分辨率设置无效。" red + echo + exit 1 + fi + else + rdp_screen_width=1280 + rdp_screen_height=800 + fi + fi + say @B"屏幕分辨率设置成功。" green + else + echo + while [ ${#vnc_password} != 8 ] ; do + say @B"请输入一个长度为8位的VNC密码:" yellow + read vnc_password + done + say @B"VNC密码成功设置." green + echo "通过浏览器方式访问远程桌面时,您将无需使用此VNC密码。" + sleep 1 + fi + echo + say @B"请问您是否想要设置Nginx反代?" yellow + say @B"请注意,如果您想在本地电脑和服务器之间复制粘贴文本,您必须启用反代并设置SSL. 不过,您也可以暂时先不设置反代,以后再手动设置。" yellow + echo "Please type [Y/n]:" + read install_nginx + if [ "x$install_nginx" = "xY" ] || [ "x$install_nginx" = "xy" ] ; then + echo + say @B"请输入您的域名(比如desktop.qing.su):" yellow + read guacamole_hostname + echo + echo + echo "是否为域名${guacamole_hostname}申请免费的Let's Encrypt SSL证书? [Y/N]" + say @B"设置证书之前,您必须将您的域名指向本服务器的IP地址!" yellow + echo "如果您确认了您的域名已经指向了本服务器的IP地址,请输入Y开始证书申请。" + read confirm_letsencrypt + echo + if [ "x$confirm_letsencrypt" = "xY" ] || [ "x$confirm_letsencrypt" = "xy" ] ; then + echo "请输入一个邮箱地址:" + read le_email + fi + else + say @B"好的,将跳过Nginx安装。" yellow + fi + echo + say @B"开始安装桌面环境,请稍后。" green + sleep 3 +} + function install_guacamole { echo @@ -188,20 +268,6 @@ function install_guacamole_web function configure_guacamole { - echo - say @B"请输入您的用户名:" yellow - read guacamole_username - echo - say @B"请输入您的密码:" yellow - read guacamole_password_prehash - echo - read guacamole_password_md5 <<< $(echo -n $guacamole_password_prehash | md5sum | awk '{print $1}') - while [ ${#vnc_password} != 8 ] ; do - say @B"请输入一个长度为8位的VNC密码:" yellow - read vnc_password - done - echo "通过浏览器方式访问远程桌面时,您将无需使用此VNC密码。" - sleep 1 echo mkdir /etc/guacamole/ cat > /etc/guacamole/guacamole.properties < /etc/guacamole/user-mapping.xml < /etc/guacamole/user-mapping.xml < + + + rdp + localhost + 3389 + + + +END + else + cat > /etc/guacamole/user-mapping.xml < + + + rdp + localhost + 3389 + $rdp_screen_width + $rdp_screen_height + + + +END + fi + else + cat > /etc/guacamole/user-mapping.xml < END + fi systemctl restart tomcat9 guacd say @B"Guacamole配置成功!" green echo } -function install_desktop +function install_vnc { echo echo "开始安装桌面环境,Firefox浏览器,以及VNC服务器..." @@ -310,6 +412,105 @@ END fi } +function install_rdp +{ + echo + echo "开始安装桌面环境,Firefox浏览器,以及XRDP服务器..." + say @B"如果系统提示您配置LightDM,您可以直接按回车键。" yellow + echo + echo "请按回车键继续。" + read catch_all + echo + if [ "$OS" = "DEBIAN10" ] ; then + apt-get install xfce4 xfce4-goodies firefox-esr xrdp -y + else + apt-get install xfce4 xfce4-goodies firefox xrdp -y + fi + say @B"桌面环境,浏览器,以及XRDP服务器安装成功。" green + echo "开始配置XRDP服务器..." + sleep 2 + echo + mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.sh.backup + cat > /etc/xrdp/startwm.sh < /etc/systemd/system/restartguacd.service < /dev/null + if [ $? = 0 ] ; then + ss -lnpt | grep guacd > /dev/null + if [ $? = 0 ] ; then + say @B"XRDP与桌面环境配置成功!" green + else + say @B"XRDP与桌面环境配置成功!" green + sleep 3 + systemctl start guacd + fi + echo + else + say "XRDP安装失败!" red + say @B"请检查上面的日志。" yellow + echo "欢迎您在https://github.com/Har-Kuun/OneClickDesktop/issues这里提交错误报告,以便我修复脚本。" + echo "谢谢!" + exit 1 + fi +} + function display_license { echo @@ -330,9 +531,6 @@ function install_reverse_proxy sleep 2 apt-get install nginx certbot python3-certbot-nginx -y say @B"Nginx安装成功!" green - echo - echo "请输入您的域名(比如desktop.qing.su):" - read guacamole_hostname cat > /etc/nginx/conf.d/guacamole.conf <