summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system/xrdp/doinst.sh23
-rw-r--r--system/xrdp/sesman.ini.patch27
-rw-r--r--system/xrdp/xrdp-v0.6.1_cleanup-state.diff51
-rw-r--r--system/xrdp/xrdp-v0.6.1_crypt.diff116
-rw-r--r--system/xrdp/xrdp-v0.6.1_disabled.diff26
-rw-r--r--system/xrdp/xrdp.SlackBuild36
-rw-r--r--system/xrdp/xrdp.info6
7 files changed, 27 insertions, 258 deletions
diff --git a/system/xrdp/doinst.sh b/system/xrdp/doinst.sh
index fc2aca6ccd..68884e8cc8 100644
--- a/system/xrdp/doinst.sh
+++ b/system/xrdp/doinst.sh
@@ -11,21 +11,20 @@ config() {
# Otherwise, we leave the .new copy for the admin to consider...
}
-# Keep same perms on rc.xrdp.new:
-if [ -e etc/rc.d/rc.xrdp ]; then
- cp -a etc/rc.d/rc.xrdp etc/rc.d/rc.xrdp.new.incoming
- cat etc/rc.d/rc.xrdp.new > etc/rc.d/rc.xrdp.new.incoming
- mv etc/rc.d/rc.xrdp.new.incoming etc/rc.d/rc.xrdp.new
-fi
+preserve_perms() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ if [ -e $OLD ]; then
+ cp -a $OLD ${NEW}.incoming
+ cat $NEW > ${NEW}.incoming
+ mv ${NEW}.incoming $NEW
+ fi
+ config $NEW
+}
config etc/rc.d/rc.xrdp.new
config etc/xrdp/xrdp-xinitrc.new
config etc/xrdp/rsakeys.ini.new
config etc/xrdp/sesman.ini.new
config etc/xrdp/xrdp.ini.new
-config etc/xrdp/km-0407.ini.new
-config etc/xrdp/km-0409.ini.new
-config etc/xrdp/km-040c.ini.new
-config etc/xrdp/km-0410.ini.new
-config etc/xrdp/km-0419.ini.new
-config etc/xrdp/km-041d.ini.new
+preserve_perms etc/rc.d/rc.xrdp.new
diff --git a/system/xrdp/sesman.ini.patch b/system/xrdp/sesman.ini.patch
deleted file mode 100644
index b077cf53bf..0000000000
--- a/system/xrdp/sesman.ini.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -Naur xrdp-v0.6.0-orig/sesman/sesman.ini xrdp-v0.6.0/sesman/sesman.ini
---- xrdp-v0.6.0-orig/sesman/sesman.ini 2012-02-21 14:00:55.000000000 -0500
-+++ xrdp-v0.6.0/sesman/sesman.ini 2013-09-07 18:48:37.377849867 -0400
-@@ -2,11 +2,11 @@
- ListenAddress=127.0.0.1
- ListenPort=3350
- EnableUserWindowManager=1
--UserWindowManager=startwm.sh
--DefaultWindowManager=startwm.sh
-+UserWindowManager=.xrdp-xinitrc
-+DefaultWindowManager=xrdp-xinitrc
-
- [Security]
--AllowRootLogin=1
-+AllowRootLogin=0
- MaxLoginRetry=4
- TerminalServerUsers=tsusers
- TerminalServerAdmins=tsadmins
-@@ -20,7 +20,7 @@
-
- [Logging]
- LogFile=/var/log/xrdp-sesman.log
--LogLevel=DEBUG
-+LogLevel=INFO
- EnableSyslog=0
- SyslogLevel=DEBUG
-
diff --git a/system/xrdp/xrdp-v0.6.1_cleanup-state.diff b/system/xrdp/xrdp-v0.6.1_cleanup-state.diff
deleted file mode 100644
index 32d8cb59ef..0000000000
--- a/system/xrdp/xrdp-v0.6.1_cleanup-state.diff
+++ /dev/null
@@ -1,51 +0,0 @@
-From fca088da8caab209534db2c6ff9dcda277a529a7 Mon Sep 17 00:00:00 2001
-From: mancha <mancha1 AT zoho DOT com>
-Date: Wed, 18 Feb 2015
-Subject: Clean our state
-
-Make sure our state is clean when we're at the login window. This
-code, adapted from upstream's development branch, ensures settings
-from previous connections are cleared.
-
----
- xrdp/xrdp_mm.c | 22 ++++++++++++++++++++++
- 1 file changed, 22 insertions(+)
-
---- a/xrdp/xrdp_mm.c
-+++ b/xrdp/xrdp_mm.c
-@@ -899,6 +899,25 @@ xrdp_mm_sesman_data_in(struct trans* tra
- }
-
- /*****************************************************************************/
-+static void APP_CC
-+cleanup_states(struct xrdp_mm *self)
-+{
-+ if (self != NULL)
-+ {
-+ self-> connected_state = 0; /* true if connected to sesman else false */
-+ self-> sesman_trans = NULL; /* connection to sesman */
-+ self-> sesman_trans_up = 0; /* true once connected to sesman */
-+ self-> delete_sesman_trans = 0; /* boolean set when done with sesman connection */
-+ self-> display = 0; /* 10 for :10.0, 11 for :11.0, etc */
-+ self-> code = 0; /* 0 Xvnc session, 10 X11rdp session, 20 Xorg session */
-+ self-> sesman_controlled = 0; /* true if this is a sesman session */
-+ self-> chan_trans = NULL; /* connection to chansrv */
-+ self-> chan_trans_up = 0; /* true once connected to chansrv */
-+ self-> delete_chan_trans = 0; /* boolean set when done with channel connection */
-+ }
-+}
-+
-+/*****************************************************************************/
- int APP_CC
- xrdp_mm_connect(struct xrdp_mm* self)
- {
-@@ -916,6 +939,9 @@ xrdp_mm_connect(struct xrdp_mm* self)
- char text[256];
- char port[8];
-
-+ /* make sure we start in correct state */
-+ cleanup_states(self);
-+
- g_memset(ip,0,sizeof(char) * 256);
- g_memset(errstr,0,sizeof(char) * 256);
- g_memset(text,0,sizeof(char) * 256);
diff --git a/system/xrdp/xrdp-v0.6.1_crypt.diff b/system/xrdp/xrdp-v0.6.1_crypt.diff
deleted file mode 100644
index 1e6948a914..0000000000
--- a/system/xrdp/xrdp-v0.6.1_crypt.diff
+++ /dev/null
@@ -1,116 +0,0 @@
-From 33feceb1573cbb6ba7fb326bb7872de75bca6b9e Mon Sep 17 00:00:00 2001
-From: mancha <mancha1 AT zoho DOT com>
-Date: Wed, 18 Feb 2015
-Subject: Fix account validation with glibc crypt
-
-Starting with glibc 2.17, crypt() can return NULL which can cause
-xrdp-sesman to segfault. This patch backports upstream's fix for
-this as well as changes auth_userpass so it can validate SHA-256
-and SHA-512 hashed passwords.
-
----
- sesman/verify_user.c | 87 ++++++++++++++++-------------------------
- 1 file changed, 35 insertions(+), 52 deletions(-)
-
---- a/sesman/verify_user.c
-+++ b/sesman/verify_user.c
-@@ -51,64 +51,47 @@ auth_account_disabled(struct spwd* stp);
- long DEFAULT_CC
- auth_userpass(char* user, char* pass)
- {
-- char salt[13] = "$1$";
-- char hash[35] = "";
-- char* encr = 0;
-- struct passwd* spw;
-- struct spwd* stp;
-- int saltcnt = 0;
--
-- spw = getpwnam(user);
-- if (spw == 0)
-- {
-- return 0;
-- }
-- if (g_strncmp(spw->pw_passwd, "x", 3) == 0)
-- {
-- /* the system is using shadow */
-- stp = getspnam(user);
-- if (stp == 0)
-+ const char *encr;
-+ const char *epass;
-+ struct passwd *spw;
-+ struct spwd *stp;
-+
-+ spw = getpwnam(user);
-+
-+ if (spw == 0)
-+ {
-+ return 0;
-+ }
-+
-+ if (g_strncmp(spw->pw_passwd, "x", 3) == 0)
- {
-- return 0;
-+ /* the system is using shadow */
-+ stp = getspnam(user);
-+
-+ if (stp == 0)
-+ {
-+ return 0;
-+ }
-+
-+ if (1 == auth_account_disabled(stp))
-+ {
-+ log_message(&(g_cfg->log), LOG_LEVEL_INFO, "account %s is disabled", user);
-+ return 0;
-+ }
-+
-+ encr = stp->sp_pwdp;
- }
-- if (1==auth_account_disabled(stp))
-+ else
- {
-- log_message(&(g_cfg->log), LOG_LEVEL_INFO, "account %s is disabled", user);
-- return 0;
-+ /* old system with only passwd */
-+ encr = spw->pw_passwd;
- }
-- g_strncpy(hash, stp->sp_pwdp, 34);
-- }
-- else
-- {
-- /* old system with only passwd */
-- g_strncpy(hash, spw->pw_passwd, 34);
-- }
-- hash[34] = '\0';
-- if (g_strncmp(hash, "$1$", 3) == 0)
-- {
-- /* gnu style crypt(); */
-- saltcnt = 3;
-- while ((hash[saltcnt] != '$') && (saltcnt < 11))
-+ epass = crypt(pass, encr);
-+ if (epass == 0)
- {
-- salt[saltcnt] = hash[saltcnt];
-- saltcnt++;
-+ return 0;
- }
-- salt[saltcnt] = '$';
-- salt[saltcnt + 1] = '\0';
-- }
-- else
-- {
-- /* classic two char salt */
-- salt[0] = hash[0];
-- salt[1] = hash[1];
-- salt[2] = '\0';
-- }
-- encr = crypt(pass,salt);
-- if (g_strncmp(encr, hash, 34) != 0)
-- {
-- return 0;
-- }
-- return 1;
-+ return (strcmp(encr, epass) == 0);
- }
-
- /******************************************************************************/
diff --git a/system/xrdp/xrdp-v0.6.1_disabled.diff b/system/xrdp/xrdp-v0.6.1_disabled.diff
deleted file mode 100644
index 42855c89d3..0000000000
--- a/system/xrdp/xrdp-v0.6.1_disabled.diff
+++ /dev/null
@@ -1,26 +0,0 @@
-From 6f195b64890e08d3fbbbb792f45a7d94d641c914 Mon Sep 17 00:00:00 2001
-From: mancha <mancha1 AT zoho DOT com>
-Date: Wed, 18 Feb 2015
-Subject: Fix inactive account determination
-
-sesman: fix so shadow accounts aren't incorrectly classified "inactive"
-as might happen if sp_max/sp_inact fields are empty or sp_lstchg=0.
-
----
- sesman/verify_user.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
---- a/sesman/verify_user.c
-+++ b/sesman/verify_user.c
-@@ -323,7 +323,10 @@ auth_account_disabled(struct spwd* stp)
- return 1;
- }
-
-- if (today >= (stp->sp_lstchg+stp->sp_max+stp->sp_inact))
-+ if ((stp->sp_max >= 0) &&
-+ (stp->sp_inact >= 0) &&
-+ (stp->sp_lstchg > 0) &&
-+ (today >= (stp->sp_lstchg + stp->sp_max + stp->sp_inact)))
- {
- return 1;
- }
diff --git a/system/xrdp/xrdp.SlackBuild b/system/xrdp/xrdp.SlackBuild
index 0a18e3aada..d5ff39cc11 100644
--- a/system/xrdp/xrdp.SlackBuild
+++ b/system/xrdp/xrdp.SlackBuild
@@ -4,13 +4,13 @@
# Written by Phillip Warner <pc_warner@yahoo.com>
PRGNAM=xrdp
-VERSION=${VERSION:-0.6.1}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-0.9.4}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -25,8 +25,8 @@ OUTPUT=${OUTPUT:-/tmp}
# then run this script as: "USE_PAM=YES ./xrdp.SlackBuild"
USE_PAM=${USE_PAM:-NO}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -44,9 +44,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-v$VERSION
-tar xvf $CWD/$PRGNAM-v$VERSION.tar.gz
-cd $PRGNAM-v$VERSION
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -58,16 +58,11 @@ find -L . \
autoreconf -vfi
if [ "$USE_PAM" = "NO" ]; then
- NOPAM_OPT="--enable-nopam"
+ NOPAM_OPT="--disable-pam"
else
NOPAM_OPT=""
fi
-# patches from Mancha
-patch -p1 < $CWD/xrdp-v0.6.1_disabled.diff
-patch -p1 < $CWD/xrdp-v0.6.1_crypt.diff
-patch -p1 < $CWD/xrdp-v0.6.1_cleanup-state.diff
-
# Optional config options if built with FreeRDP:
# --enable-freerdp Build freerdp module (default: no)
# --enable-freerdp1 Build freerdp1 module (default: no)
@@ -81,6 +76,8 @@ CPPFLAGS="$SLKCFLAGS" \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
--build=$ARCH-slackware-linux \
+ --disable-painter \
+ --disable-rfxcodec \
$NOPAM_OPT
# Fix path in what will become the init script
@@ -89,13 +86,6 @@ sed -i "s/SBINDIR=\/usr\/local\/sbin/SBINDIR=\/usr\/sbin/" instfiles/xrdp.sh
# Change xinit script name to xrdp-xinitrc
sed -i "s/startwm.sh/xrdp-xinitrc/" instfiles/xrdp.sh
-# Change LogLevel to INFO instead of DEBUG
-# Disable Root logins by default
-# Set user-specific RDP session script to ~/.xrdp-xinitrc
-# Set default RDP session xinit script to /etc/xrdp/xrdp-xinitrc
-# Note: LogFile now at /var/log/xrdp-sesman.log
-patch -d sesman/ -p2 < $CWD/sesman.ini.patch
-
# Build fails if a copy of config.{c,h} is not in sesman/tools/
cp -v sesman/config.{c,h} sesman/tools/
@@ -118,7 +108,6 @@ mv $PKG/etc/$PRGNAM/startwm.sh $PKG/etc/$PRGNAM/xrdp-xinitrc.new
mv rsakeys.ini rsakeys.ini.new
mv sesman.ini sesman.ini.new
mv xrdp.ini xrdp.ini.new
- rename ini ini.new km-????.ini
)
# Install the xrdp-xwmconfig utility
@@ -131,7 +120,8 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
find $PKG/usr/man -type f -exec gzip -9 {} \;
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a COPYING design.txt install.txt readme.txt faq-*.txt $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING design.txt install.txt README.md faq-*.txt $PKG/usr/doc/$PRGNAM-$VERSION
+
# Keep a backup copy of startwm.sh in the docs
cat sesman/startwm.sh > $PKG/usr/doc/$PRGNAM-$VERSION/startwm.sh-example
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/system/xrdp/xrdp.info b/system/xrdp/xrdp.info
index 2269d68a09..b35d21b43b 100644
--- a/system/xrdp/xrdp.info
+++ b/system/xrdp/xrdp.info
@@ -1,8 +1,8 @@
PRGNAM="xrdp"
-VERSION="0.6.1"
+VERSION="0.9.4"
HOMEPAGE="http://xrdp.sourceforge.net/"
-DOWNLOAD="http://downloads.sourceforge.net/project/xrdp/xrdp/0.6.1/xrdp-v0.6.1.tar.gz"
-MD5SUM="26099c6588943262023607c1b4e774d8"
+DOWNLOAD="https://github.com/neutrinolabs/xrdp/archive/v0.9.4/xrdp-0.9.4.tar.gz"
+MD5SUM="d6e5b1b3222716feda18e620a590c9e5"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""