Hello community, here is the log from the commit of package shellinabox for openSUSE:Factory checked in at 2011-12-07 14:40:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/shellinabox (Old) and /work/SRC/openSUSE:Factory/.shellinabox.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "shellinabox", Maintainer is "" Changes: -------- New Changes file: --- /dev/null 2010-08-26 16:28:41.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.shellinabox.new/shellinabox.changes 2011-12-07 14:40:26.000000000 +0100 @@ -0,0 +1,16 @@ +------------------------------------------------------------------- +Tue Nov 15 09:47:06 UTC 2011 - [email protected] + +- cleanup spec file. added rc script + +------------------------------------------------------------------- +Wed Oct 5 09:01:06 UTC 2011 - [email protected] + +- Enable SSL and use WebYaST certificate + +------------------------------------------------------------------ +Thu Sep 5 15:01:06 UTC 2011 - [email protected] + +- Initial build. + + New: ---- rcshellinabox shellinabox-2.10.tar.bz2 shellinabox.changes shellinabox.patch shellinabox.spec ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ shellinabox.spec ++++++ # # spec file for package shellinabox # # Copyright (C) 2008-2009 Markus Gutschke <[email protected]> and # ohan Persson <[email protected]> # This file and all modifications and additions to the pristine # package are under the same license as the package itself. # # Please submit bugfixes or comments via http://bugs.opensuse.org/ # BuildRequires: libopenssl-devel pam-devel zlib-devel PreReq: pam openssl libopenssl-devel Summary: AJAX/Web based terminal emulator Name: shellinabox # %define pkg_name shellinabox # Version: 2.10 Release: 1.1 License: GPLv2 URL: http://code.google.com/p/shellinabox/ BuildRoot: %{_tmppath}/%{name}-%{version}-build AutoReqProv: on Group: Productivity/Networking/Web/Utilities %define shellinabox_user shellinabox %define pkg_home /var/lib/%{shellinabox_user} Source0: %{name}-%{version}.tar.bz2 # Fix possible buffer overwrite error in launcher.c Patch: shellinabox.patch Source1: rcshellinabox %description Shell In A Box implements a web server that can export arbitrary command l ine tools to a web based terminal emulator. This emulator is accessible to any JavaScript and CSS enabled web browser and does not require any additional browser plugins All client-server communications are encrypted, if SSL/TLS certificates have been installed. Authors: Markus Gutschke <[email protected]> %prep %setup -q %patch -p0 %configure %build make %{?_smp_mflags} %install %makeinstall %{__install} -d -m 0755 \ %{buildroot}%{pkg_home}/ \ %{buildroot}%{_sbindir} # # init script # %{__install} -D -m 0755 -T %SOURCE1 \ %{buildroot}%{_sysconfdir}/init.d/%{pkg_name} %{__ln_s} -f %{_sysconfdir}/init.d/%{pkg_name} %{buildroot}%{_sbindir}/rc%{pkg_name} # # configure certificates mkdir -p $RPM_BUILD_ROOT/etc/%{pkg_name}/certs %post %fillup_and_insserv %clean %__rm -rf %{buildroot} %pre /usr/sbin/groupadd -r %{shellinabox_user} &>/dev/null ||: /usr/sbin/useradd -g %{shellinabox_user} -s /bin/false -r -c "user for %{shellinabox_user}" -d %{pkg_home} %{shellinabox_user} &>/dev/null ||: # --------------------------------------------------------------------------------- %preun %stop_on_removal /sbin/chkconfig --del shellinabox # --------------------------------------------------------------------------------- # Cleanup after install # --------------------------------------------------------------------------------- %postun %insserv_cleanup test -e /var/run/shellinabox.pid || rm -rf /var/run/shellinabox.pid && : # --------------------------------------------------------------------------------- # FILES # --------------------------------------------------------------------------------- %files %defattr(-,root,root) %attr(-,%{shellinabox_user},%{shellinabox_user}) %dir %{pkg_home} %{_initrddir}/shellinabox %doc %attr(0444,root,root) %{_mandir}/man1/shellinaboxd.1* %doc /usr/share/doc/shellinabox %{_bindir}/shellinaboxd %dir /etc/shellinabox/ %dir /etc/shellinabox/certs %{_sbindir}/rc%{pkg_name} %changelog ++++++ rcshellinabox ++++++ #!/bin/sh # # Copyright (C) 1995--2007 Marcus Rückert, SUSE / Novell Inc. # # This library is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or (at # your option) any later version. # # This library is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, # USA. # # /etc/init.d/shellinabox # and its symbolic link # /(usr/)sbin/rcshellinabox # # # LSB compatible service control script; see http://www.linuxbase.org/spec/ # # Note: This template uses functions rc_XXX defined in /etc/rc.status on # UnitedLinux/SUSE/Novell based Linux distributions. If you want to base your # script on this template and ensure that it works on non UL based LSB # compliant Linux distributions, you either have to provide the rc.status # functions from UL or change the script to work without them. # See skeleton.compat for a template that works with other distros as well. # ### BEGIN INIT INFO # Provides: shellinabox # Required-Start: $syslog $remote_fs # Should-Start: $time ypbind # Required-Stop: $syslog $remote_fs # Should-Stop: $time ypbind # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Short-Description: shellinabox # Description: Start shellinabox ### END INIT INFO # # Any extensions to the keywords given above should be preceeded by # X-VendorTag- (X-UnitedLinux- X-SuSE- for us) according to LSB. # # Notes on Required-Start/Should-Start: # * There are two different issues that are solved by Required-Start # and Should-Start # (a) Hard dependencies: This is used by the runlevel editor to determine # which services absolutely need to be started to make the start of # this service make sense. Example: nfsserver should have # Required-Start: $portmap # Also, required services are started before the dependent ones. # The runlevel editor will warn about such missing hard dependencies # and suggest enabling. During system startup, you may expect an error, # if the dependency is not fulfilled. # (b) Specifying the init script ordering, not real (hard) dependencies. # This is needed by insserv to determine which service should be # started first (and at a later stage what services can be started # in parallel). The tag Should-Start: is used for this. # It tells, that if a service is available, it should be started # before. If not, never mind. # * When specifying hard dependencies or ordering requirements, you can # use names of services (contents of their Provides: section) # or pseudo names starting with a $. The following ones are available # according to LSB (1.1): # $local_fs all local file systems are mounted # (most services should need this!) # $remote_fs all remote file systems are mounted # (note that /usr may be remote, so # many services should Require this!) # $syslog system logging facility up # $network low level networking (eth card, ...) # $named hostname resolution available # $netdaemons all network daemons are running # The $netdaemons pseudo service has been removed in LSB 1.2. # For now, we still offer it for backward compatibility. # These are new (LSB 1.2): # $time the system time has been set correctly # $portmap SunRPC portmapping service available # UnitedLinux extensions: # $ALL indicates that a script should be inserted # at the end # * The services specified in the stop tags # (Required-Stop/Should-Stop) # specify which services need to be still running when this service # is shut down. Often the entries there are just copies or a subset # from the respective start tag. # * Should-Start/Stop are now part of LSB as of 2.0, # formerly SUSE/Unitedlinux used X-UnitedLinux-Should-Start/-Stop. # insserv does support both variants. # * X-UnitedLinux-Default-Enabled: yes/no is used at installation time # (%fillup_and_insserv macro in %post of many RPMs) to specify whether # a startup script should default to be enabled after installation. # It's not used by insserv. # # Note on runlevels: # 0 - halt/poweroff 6 - reboot # 1 - single user 2 - multiuser without network exported # 3 - multiuser w/ network (text mode) 5 - multiuser w/ network and X11 (xdm) # # Note on script names: # http://www.linuxbase.org/spec/refspecs/LSB_1.3.0/gLSB/gLSB/scrptnames.html # A registry has been set up to manage the init script namespace. # http://www.lanana.org/ # Please use the names already registered or register one or use a # vendor prefix. # Check for missing binaries (stale symlinks should not happen) # Note: Special treatment of stop for LSB conformance SHELLINABOXD=/usr/bin/shellinaboxd test -x $SHELLINABOXD || { echo "$SHELLINABOXD not installed"; if [ "$1" = "stop" ]; then exit 0; else exit 5; fi; } PID_FILE="/var/run/shellinaboxd.pid" CERTIFICATEPATH="/etc/shellinabox/certs" CERTIFICATEFILE="$CERTIFICATEPATH/certificate.pem" OPTIONS="--background=$PID_FILE -u shellinabox -s /:SSH -c $CERTIFICATEPATH" # Source LSB init functions # providing start_daemon, killproc, pidofproc, # log_success_msg, log_failure_msg and log_warning_msg. # This is currently not used by UnitedLinux based distributions and # not needed for init scripts for UnitedLinux only. If it is used, # the functions from rc.status should not be sourced or used. #. /lib/lsb/init-functions # Shell functions sourced from /etc/rc.status: # rc_check check and set local and overall rc status # rc_status check and set local and overall rc status # rc_status -v be verbose in local rc status and clear it afterwards # rc_status -v -r ditto and clear both the local and overall rc status # rc_status -s display "skipped" and exit with status 3 # rc_status -u display "unused" and exit with status 3 # rc_failed set local and overall rc status to failed # rc_failed <num> set local and overall rc status to <num> # rc_reset clear both the local and overall rc status # rc_exit exit appropriate to overall rc status # rc_active checks whether a service is activated by symlinks . /etc/rc.status # Reset status of this service rc_reset # Return values acc. to LSB for all commands but status: # 0 - success # 1 - generic or unspecified error # 2 - invalid or excess argument(s) # 3 - unimplemented feature (e.g. "reload") # 4 - user had insufficient privileges # 5 - program is not installed # 6 - program is not configured # 7 - program is not running # 8--199 - reserved (8--99 LSB, 100--149 distrib, 150--199 appl) # # Note that starting an already running service, stopping # or restarting a not-running service as well as the restart # with force-reload (in case signaling is not supported) are # considered a success. case "$1" in start) if [ ! -e $CERTIFICATEFILE ] then HOSTNAME = `hostname --fqdn` echo "No certificate found. Creating one now for host: $HOSTNAME" `cd $CERTIFICATEPATH ; openssl req -passout pass:linux -subj "/C=DE/ST=BY/L=Nuremberg/O=SUSE Linux GmbH/OU=SUSE Linux GmbH/CN=$HOSTNAME" -new > $CERTIFICATEPATH/server.csr` `openssl rsa -passin pass:linux -in $CERTIFICATEPATH/privkey.pem -out $CERTIFICATEPATH/server.key` `cp $CERTIFICATEPATH/server.key $CERTIFICATEPATH/server.key.org` `openssl rsa -in $CERTIFICATEPATH/server.key.org -out $CERTIFICATEPATH/server.key` `openssl x509 -req -days 365 -in $CERTIFICATEPATH/server.csr -signkey $CERTIFICATEPATH/server.key -out $CERTIFICATEPATH/server.crt` `cat $CERTIFICATEPATH/server.crt $CERTIFICATEPATH/server.key > $CERTIFICATEFILE` `rm $CERTIFICATEPATH/server.*` `rm $CERTIFICATEPATH/privkey.pem` if [ ! -e $CERTIFICATEFILE ] then echo -n "Can not create certificate." rc_failed rc_status -v rc_exit fi chown shellinabox:shellinabox $CERTIFICATEFILE chmod 600 $CERTIFICATEFILE fi echo -n "Starting shellinabox " ## Start daemon with startproc(8). If this fails ## the return value is set appropriately by startproc. /sbin/startproc -p $PID_FILE $SHELLINABOXD $OPTIONS # Remember status and be verbose rc_status -v ;; stop) echo -n "Shutting down shellinabox " ## Stop daemon with killproc(8) and if this fails ## killproc sets the return value according to LSB. /sbin/killproc -TERM -p $PID_FILE $SHELLINABOXD # Remember status and be verbose rc_status -v ;; try-restart|condrestart) ## Do a restart only if the service was active before. ## Note: try-restart is now part of LSB (as of 1.9). ## RH has a similar command named condrestart. if test "$1" = "condrestart"; then echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}" fi $0 status if test $? = 0; then $0 restart else rc_reset # Not running is not a failure. fi # Remember status and be quiet rc_status ;; restart) ## Stop the service and regardless of whether it was ## running or not, start it again. $0 stop $0 start # Remember status and be quiet rc_status ;; force-reload) ## Signal the daemon to reload its config. Most daemons ## do this on signal 1 (SIGHUP). ## If it does not support it, restart the service if it ## is running. echo -n "Reload service shellinabox " ## if it supports it: /sbin/killproc -p $PID_FILE -HUP $SHELLINABOXD rc_status -v ## Otherwise: #$0 try-restart #rc_status ;; reload) ## Like force-reload, but if daemon does not support ## signaling, do nothing (!) # If it supports signaling: echo -n "Reload service shellinabox " /sbin/killproc -HUP -p $PID_FILE $SHELLINABOXD #touch /var/run/shellinabox.pid rc_status -v ## Otherwise if it does not support reload: #rc_failed 3 #rc_status -v ;; status) echo -n "Checking for service shellinabox " ## Check status with checkproc(8), if process is running ## checkproc will return with exit status 0. # Return value is slightly different for the status command: # 0 - service up and running # 1 - service dead, but /var/run/ pid file exists # 2 - service dead, but /var/lock/ lock file exists # 3 - service not running (unused) # 4 - service status unknown :-( # 5--199 reserved (5--99 LSB, 100--149 distro, 150--199 appl.) # NOTE: checkproc returns LSB compliant status values. /sbin/checkproc -p $PID_FILE $SHELLINABOXD # NOTE: rc_status knows that we called this init script with # "status" option and adapts its messages accordingly. rc_status -v ;; *) echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}" exit 1 ;; esac rc_exit ++++++ shellinabox.patch ++++++ --- shellinabox/launcher.c.orig 2011-05-02 22:37:22.000000000 +0200 +++ shellinabox/launcher.c 2011-05-02 22:25:58.000000000 +0200 @@ -425,7 +425,7 @@ request->width = session->width; request->height = session->height; strncat(request->peerName, httpGetPeerName(session->http), - sizeof(request->peerName) - 1); + sizeof(request->peerName) - strlen(request->peerName) - 1); request->urlLength = strlen(u); memcpy(&request->url, u, request->urlLength); free(u); @@ -476,10 +476,10 @@ #ifdef HAVE_UTMPX_H utmp->utmpx.ut_type = useLogin ? LOGIN_PROCESS : USER_PROCESS; dcheck(!strncmp(ptyPath, "/dev/pts", 8)); - strncat(&utmp->utmpx.ut_line[0], ptyPath + 5, sizeof(utmp->utmpx.ut_line)); - strncat(&utmp->utmpx.ut_id[0], ptyPath + 8, sizeof(utmp->utmpx.ut_id)); - strncat(&utmp->utmpx.ut_user[0], "SHELLINABOX", sizeof(utmp->utmpx.ut_user)); - strncat(&utmp->utmpx.ut_host[0], peerName, sizeof(utmp->utmpx.ut_host)); + strncat(&utmp->utmpx.ut_line[0], ptyPath + 5, sizeof(utmp->utmpx.ut_line) - strlen(utmp->utmpx.ut_line) - 1 ); + strncat(&utmp->utmpx.ut_id[0], ptyPath + 8, sizeof(utmp->utmpx.ut_id) - strlen(utmp->utmpx.ut_line) - 1 ); + strncat(&utmp->utmpx.ut_user[0], "SHELLINABOX", sizeof(utmp->utmpx.ut_user) - strlen(utmp->utmpx.ut_line) - 1 ); + strncat(&utmp->utmpx.ut_host[0], peerName, sizeof(utmp->utmpx.ut_host) - strlen(utmp->utmpx.ut_line) - 1); struct timeval tv; check(!gettimeofday(&tv, NULL)); utmp->utmpx.ut_tv.tv_sec = tv.tv_sec; @@ -1023,7 +1023,7 @@ if (service->authUser != 2 /* SSH */) { memset(&utmp->utmpx.ut_user, 0, sizeof(utmp->utmpx.ut_user)); strncat(&utmp->utmpx.ut_user[0], service->user, - sizeof(utmp->utmpx.ut_user)); + sizeof(utmp->utmpx.ut_user) - strlen(utmp->utmpx.ut_user) - 1 ); setutxent(); pututxline(&utmp->utmpx); endutxent(); @@ -1310,7 +1310,7 @@ endutxent(); if (!utmp->useLogin) { memset(&utmpx.ut_user, 0, sizeof(utmpx.ut_user)); - strncat(&utmpx.ut_user[0], "LOGIN", sizeof(utmpx.ut_user)); + strncat(&utmpx.ut_user[0], "LOGIN", sizeof(utmpx.ut_user) - strlen(utmpx.ut_user) - 1); updwtmpx("/var/log/wtmp", &utmpx); } #endif -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
