diff --git a/.gitignore b/.gitignore index e69de29..00894cf 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,7 @@ +/shellinabox-2.14.tar.gz +/shellinabox-2.14-git88822c1f.tar.bz2 +/shellinabox-2.14-88822c1.tar.gz +/shellinabox-2.17.tar.gz +/shellinabox-2.18.tar.gz +/shellinabox-2.19.tar.gz +/shellinabox-2.20.tar.gz diff --git a/shellinabox-configure-c99.patch b/shellinabox-configure-c99.patch new file mode 100644 index 0000000..382dbbd --- /dev/null +++ b/shellinabox-configure-c99.patch @@ -0,0 +1,21 @@ +Define _GNU_SOURCE when probing for updwtmpx. Otherwise, glibc's + will not declare this function, and the configure probe +fails with compilers which do not support implicit function +declarations. + +Submitted upstream: + +diff --git a/configure.ac b/configure.ac +index 56e3b6a2b510851f..d05d1216dd4a397f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -154,7 +154,8 @@ if test "x$enable_utmp" != xno; then + [updwtmp(0, 0);], + [AC_DEFINE(HAVE_UPDWTMP, 1, + Define to 1 if you have support for updwtmp)]) +- AC_TRY_LINK([#include ], ++ AC_TRY_LINK([#define _GNU_SOURCE ++ #include ], + [updwtmpx(0, 0);], + [AC_DEFINE(HAVE_UPDWTMPX, 1, + Define to 1 if you have support for updwtmpx)]) diff --git a/shellinabox-gcc11.patch b/shellinabox-gcc11.patch new file mode 100644 index 0000000..2b1c8a8 --- /dev/null +++ b/shellinabox-gcc11.patch @@ -0,0 +1,13 @@ +diff --git a/configure.ac b/configure.ac +index 05ab1bb..56e3b6a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -65,7 +65,7 @@ AC_TRY_LINK([#ifndef _XOPEN_SOURCE + dnl Apparently, some systems define sigwait() but fail to implement it + AC_TRY_LINK([#include + #include ], +- [sigset_t s; int n; sigwait(&s, &n);], ++ [sigset_t s; int n; sigemptyset (&s); sigwait(&s, &n);], + [AC_DEFINE(HAVE_SIGWAIT, 1, + Define to 1 if you have a working sigwait)]) + diff --git a/shellinabox-ssh-options.patch b/shellinabox-ssh-options.patch new file mode 100644 index 0000000..7517087 --- /dev/null +++ b/shellinabox-ssh-options.patch @@ -0,0 +1,15 @@ +diff -Naur shellinabox-2.20.old/shellinabox/service.c shellinabox-2.20/shellinabox/service.c +--- shellinabox-2.20.old/shellinabox/service.c 2017-12-07 16:51:32.422058845 +0100 ++++ shellinabox-2.20/shellinabox/service.c 2017-12-07 16:52:51.979540100 +0100 +@@ -175,9 +175,9 @@ + "-oHostbasedAuthentication=no -oIdentitiesOnly=yes " + "-oKbdInteractiveAuthentication=yes -oPasswordAuthentication=yes " + "-oPreferredAuthentications=keyboard-interactive,password " +- "-oPubkeyAuthentication=no -oRhostsRSAAuthentication=no " +- "-oRSAAuthentication=no -oStrictHostKeyChecking=no -oTunnel=no " ++ "-oPubkeyAuthentication=no -oStrictHostKeyChecking=no -oTunnel=no " + "-oUserKnownHostsFile=/dev/null -oVerifyHostKeyDNS=no " ++ "-oProxyCommand=none " + // beewoolie-2012.03.30: while it would be nice to disable this + // feature, we cannot be sure that it is available on the + // target server. Removing it for the sake of Centos. diff --git a/shellinabox.spec b/shellinabox.spec new file mode 100644 index 0000000..45af159 --- /dev/null +++ b/shellinabox.spec @@ -0,0 +1,353 @@ +%global username shellinabox + +Name: shellinabox +Version: 2.20 +Release: 27%{?dist} +Summary: Web based AJAX terminal emulator +# Automatically converted from old format: GPLv2 - review is highly recommended. +License: GPL-2.0-only +URL: https://github.com/%{name}/%{name} + +Source0: https://github.com/%{name}/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +Source1: shellinaboxd.sysconfig +Source2: shellinaboxd.service +Source3: shellinaboxd.init + +Patch0: %{name}-ssh-options.patch +Patch1: %{name}-gcc11.patch +Patch2: shellinabox-configure-c99.patch + +BuildRequires: make +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libtool +BuildRequires: openssl-devel +BuildRequires: zlib-devel + +Requires: openssl + +%if 0%{?fedora} || 0%{?rhel} >= 7 +BuildRequires: systemd +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +%endif + +%if 0%{?rhel} == 6 +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/chkconfig +Requires(preun): /sbin/service +Requires(postun): /sbin/service +%endif + +%description +Shell In A Box implements a web server that can export arbitrary command line +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. + +%prep +%setup -q +%patch -P0 -p1 +%patch -P1 -p1 +%patch -P2 -p1 + +# Create a sysusers.d config file +cat >shellinabox.sysusers.conf <= 7 + +# Systemd unit files +install -p -m 644 -D %{SOURCE2} %{buildroot}%{_unitdir}/shellinaboxd.service + +%else + +# Initscripts +install -p -m 755 -D %{SOURCE3} %{buildroot}%{_initrddir}/shellinaboxd + +%endif + +install -m0644 -D shellinabox.sysusers.conf %{buildroot}%{_sysusersdir}/shellinabox.conf + +%pre +%if 0%{?fedora} || 0%{?rhel} >= 7 + +%post +%systemd_post shellinaboxd.service + +%preun +%systemd_preun shellinaboxd.service + +%postun +%systemd_postun_with_restart shellinaboxd.service + +%endif + +%if 0%{?rhel} == 6 + +%post +/sbin/chkconfig --add shellinaboxd + +%preun +if [ "$1" = 0 ]; then + /sbin/service shellinaboxd stop >/dev/null 2>&1 || : + /sbin/chkconfig --del shellinaboxd +fi + +%postun +if [ "$1" -ge "1" ]; then + /sbin/service shellinaboxd condrestart >/dev/null 2>&1 || : +fi + +%endif + +%files +%{!?_licensedir:%global license %%doc} +%doc AUTHORS NEWS README README.Fedora +%doc shellinabox/styles.css shellinabox/print-styles.css +%doc shellinabox/shell_in_a_box.js +%config(noreplace) %{_sysconfdir}/sysconfig/shellinaboxd +%{_mandir}/man1/shellinaboxd.1.* +%{_datadir}/%{name} +%{_sbindir}/shellinaboxd +%if 0%{?fedora} || 0%{?rhel} >= 7 +%{_unitdir}/shellinaboxd.service +%else +%{_initrddir}/shellinaboxd +%endif +%attr(750,%{username},%{username}) %{_sharedstatedir}/%{name} +%{_sysusersdir}/shellinabox.conf + +%changelog +* Fri Jul 25 2025 Fedora Release Engineering - 2.20-27 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Tue Feb 11 2025 Zbigniew Jędrzejewski-Szmek - 2.20-26 +- Add sysusers.d config file to allow rpm to create users/groups automatically + +* Sun Jan 19 2025 Fedora Release Engineering - 2.20-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Mon Jul 29 2024 Miroslav Suchý - 2.20-24 +- convert license to SPDX + +* Sat Jul 20 2024 Fedora Release Engineering - 2.20-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sat Jan 27 2024 Fedora Release Engineering - 2.20-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jul 22 2023 Fedora Release Engineering - 2.20-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Apr 26 2023 Florian Weimer - 2.20-20 +- Port configure script to C99 + +* Sat Jan 21 2023 Fedora Release Engineering - 2.20-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Jul 23 2022 Fedora Release Engineering - 2.20-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sat Jan 22 2022 Fedora Release Engineering - 2.20-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Tue Sep 14 2021 Sahana Prasad - 2.20-16 +- Rebuilt with OpenSSL 3.0.0 + +* Fri Jul 23 2021 Fedora Release Engineering - 2.20-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 2.20-14 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Wed Jan 27 2021 Fedora Release Engineering - 2.20-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Jul 29 2020 Jeff Law - 2.20-12 +- Initialize sigset in configure test + +* Wed Jul 29 2020 Fedora Release Engineering - 2.20-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Jan 30 2020 Fedora Release Engineering - 2.20-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jul 26 2019 Fedora Release Engineering - 2.20-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Feb 02 2019 Fedora Release Engineering - 2.20-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Jul 14 2018 Fedora Release Engineering - 2.20-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Feb 09 2018 Fedora Release Engineering - 2.20-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Dec 07 2017 Simone Caronni - 2.20-5 +- Disable SSHv1 options. + +* Thu Aug 03 2017 Fedora Release Engineering - 2.20-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 2.20-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Mar 09 2017 Simone Caronni - 2.20-2 +- Remove support for RHEL/CentOS 5. + +* Thu Mar 09 2017 Simone Caronni - 2.20-1 +- Update to 2.20. + +* Sat Feb 11 2017 Fedora Release Engineering - 2.19-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Feb 04 2016 Fedora Release Engineering - 2.19-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Dec 11 2015 Simone Caronni - 2.19-1 +- Update to 2.19. Fixes CVE-2015-8400 (#1287577). + +* Mon Aug 31 2015 Simone Caronni - 2.18-1 +- Update to 2.18. +- Remove upstreamed patches. + +* Mon Aug 31 2015 Simone Caronni - 2.17-3 +- Backport patch from upstream: + https://github.com/shellinabox/shellinabox/pull/340 + +* Wed Aug 26 2015 Simone Caronni - 2.17-2 +- Add license macro. +- Install files manually, as this simplifies installation of docs in versioned + documentation dirs (CentOS/RHEL). + +* Wed Aug 26 2015 Simone Caronni - 2.17-1 +- Update for new GitHub packaging guidelines. +- Update source from new repository. +- Use make install target now that the source has it. + +* Fri Jun 19 2015 Fedora Release Engineering - 2.14-29.git88822c1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon Aug 18 2014 Fedora Release Engineering - 2.14-28.git88822c1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Wed Jun 11 2014 Simone Caronni - 2.14-27.git88822c1 +- Add additional ssh option ProxyCommand=none (#1013974). + +* Sun Jun 08 2014 Fedora Release Engineering - 2.14-26.git88822c1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue Aug 06 2013 Simone Caronni - 2.14-25.git88822c1 +- Add systemd to BuildRequires; not default on Fedora 20+. +- Remove Fedora 17 conditionals, distribution EOL. +- Remove systemd-sysv dependency as per new packaging guidelines. + +* Sun Aug 04 2013 Fedora Release Engineering - 2.14-25.git88822c1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue Jun 11 2013 Simone Caronni - 2.14-24.git88822c1 +- Fix SSL support (#973058). +- SPEC file cleanup. + +* Sat May 11 2013 Simone Caronni - 2.14-22.git88822c1 +- Kill daemon by pid on EPEL (#962069). +- Change restart policy in service files and fix service dependencies. + +* Thu Feb 14 2013 Fedora Release Engineering - 2.14-21.git88822c1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Jan 14 2013 Simone Caronni - 2.14-20.git88822c1 +- Added define for RHEL 5 (rhbz#894903). +- Updated spec to new packaging guidelines for github sources. + +* Wed Jan 09 2013 Simone Caronni - 2.14-19.git88822c1f +- Fix SysV init scripts. + +* Wed Jan 09 2013 Simone Caronni - 2.14-18.git88822c1f +- Updated init script according to Fedora template (#893129) + https://fedoraproject.org/wiki/Packaging:SysVInitScript?rd=Packaging/SysVInitScript + +* Fri Dec 14 2012 Simone Caronni - 2.14-17.git88822c1f +- Fix the commit / dist tags order in the revision. + +* Fri Dec 14 2012 Simone Caronni - 2.14-16.git88822c1f +- Move source from the original unmantained content to the github fork. + +* Wed Oct 17 2012 Simone Caronni - 2.14-15 +- Fix fedpkg checks. Requires fedpkg > 1.10: + http://git.fedorahosted.org/cgit/fedpkg.git/commit/?id=11c46c06a3c9cc2f58d68aea964dd37dc028e349 +- Change systemd requirements as per new package guidelines. + +* Mon Oct 01 2012 Simone Caronni - 2.14-14 +- Move user directory and data under /var/lib. + +* Wed Sep 26 2012 Joel Young - 2.14-13 +- Fix variable expansions in init script and service file. + +* Tue Sep 25 2012 Simone Caronni - 2.14-12 +- Really add WorkingDirectory to service files. +- Remove postun user deletion leftovers. +- Add static files to be customized (as referenced by the man page) in the doc directory. + +* Mon Sep 24 2012 Simone Caronni - 2.14-11 +- Fix RHEL 5 rpm macro. + +* Thu Sep 13 2012 Simone Caronni - 2.14-10 +- Fixes from (Joel Young ): + Install supplied css files. + Set menu item to turn off ssl as disabled by default. + Do not remove user on uninstall. +- Simplified spec file. +- Split options in the daemon config file. + +* Wed Sep 12 2012 Simone Caronni - 2.14-9 +- Added user/group and confined directory for certificates, based on work from Joel Young. + +* Tue Sep 11 2012 Joel Young - 2.14-8 +- Fixed bug with firefox 15+ ignored key: + http://code.google.com/p/shellinabox/issues/detail?id=202&q=key%20work + +* Wed Sep 05 2012 Simone Caronni - 2.14-7 +- Add Fedora 18 systemd macros. +- Remove isa'ed BuildRequires. + +* Thu Aug 30 2012 Simone Caronni - 2.14-6 +- Add nss-lookup.target requirement and Documentation tag in service file. + +* Sat Jul 21 2012 Fedora Release Engineering - 2.14-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue May 29 2012 Simone Caronni - 2.14-4 +- Move systemd-units BR to proper place. + +* Tue May 29 2012 Simone Caronni - 2.14-3 +- Spec file changes (changelog, formatting). +- Added license files to doc section. + +* Wed May 09 2012 Simone Caronni - 2.14-2 +- Tags for RHEL building. + +* Wed May 09 2012 Simone Caronni - 2.14-1 +- First build. diff --git a/shellinaboxd.init b/shellinaboxd.init new file mode 100644 index 0000000..2fda3a2 --- /dev/null +++ b/shellinaboxd.init @@ -0,0 +1,110 @@ +#!/bin/sh +# +# shellinaboxd Takes care of starting and stopping shellinabox. +# +# chkconfig: - 80 20 +# description: Publish command line shell through AJAX interface. + +### BEGIN INIT INFO +# Required-Start: $local_fs $network +# Required-Stop: $local_fs $network +# Default-Start: 3 4 5 +# Default-Stop: 0 1 2 6 +# Short-Description: Publish command line shell through AJAX interface. +# Description: Shell In A Box implements a web server that can export arbitrary +# command line 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. +### END INIT INFO + +# config: /etc/sysconfig/shellinaboxd +# pidfile: /var/run/shellinaboxd.pid + +# Source function library. +. /etc/rc.d/init.d/functions + +exec="/usr/sbin/shellinaboxd" +prog="shellinaboxd" +pid="/var/run/$prog.pid" +WORKING_DIR=/usr/share/shellinabox + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +lockfile=/var/lock/subsys/$prog + +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + echo -n $"Starting $prog: " + cd $WORKING_DIR + daemon $prog -u $USER -g $GROUP --cert=${CERTDIR} --port=${PORT} --background=$pid $OPTS + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + + +stop() { + echo -n $"Stopping $prog: " + killproc -p $pid $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status -p $pid $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? diff --git a/shellinaboxd.service b/shellinaboxd.service new file mode 100644 index 0000000..9ec2cb9 --- /dev/null +++ b/shellinaboxd.service @@ -0,0 +1,14 @@ +[Unit] +Description=Shell In A Box daemon +Documentation=man:shellinaboxd(1) +After=network.target nss-lookup.target + +[Service] +EnvironmentFile=-/etc/sysconfig/shellinaboxd +WorkingDirectory=/usr/share/shellinabox +ExecStart=/usr/sbin/shellinaboxd -u $USER -g $GROUP --cert=${CERTDIR} --port=${PORT} $OPTS +Restart=on-failure + +[Install] +WantedBy=multi-user.target + diff --git a/shellinaboxd.sysconfig b/shellinaboxd.sysconfig new file mode 100644 index 0000000..3bdd0c3 --- /dev/null +++ b/shellinaboxd.sysconfig @@ -0,0 +1,18 @@ +# Shell in a box daemon configuration +# For details see shellinaboxd man page + +# Basic options +USER=shellinabox +GROUP=shellinabox +CERTDIR=/var/lib/shellinabox +PORT=4200 +OPTS="--disable-ssl-menu -s /:LOGIN" + + +# Additional examples with custom options: + +# Fancy configuration with right-click menu choice for black-on-white: +# OPTS="--user-css Normal:+black-on-white.css,Reverse:-white-on-black.css --disable-ssl-menu -s /:LOGIN" + +# Simple configuration for running it as an SSH console with SSL disabled: +# OPTS="-t -s /:SSH:host.example.com" diff --git a/sources b/sources index e69de29..b8808d8 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +SHA512 (shellinabox-2.20.tar.gz) = 369fb6e0041fc3eb52a533f14d1f856a71ec1bf166441e25a5d61bb129f2db5de6b61205ddd0cb08d53384baaf4e087bd2c549f7919b96ee465d4cc3318d2237