Commit graph

58 commits

Author SHA1 Message Date
Scott Roeder
34bbeab314 Added @ character to the list of valid username characters. 2015-07-21 12:27:24 +04:00
KLuka
b4de69ed5c Fixed option --service for running custom scripts
* Full path of command is passed to function execvp(), when we launch
  user defined service. This was broken since commit b3309b2.
2015-07-17 13:43:01 +02:00
KLuka
b3309b23d8 Fixes for some defects found by Coverity
* Added more checks for return values and null pointers.
* Removed some dead code and unused variables.
* Fixed handling of calls to exec() family functions. If this functions
  fail we need to cleanup resources.
2015-05-31 13:04:00 +02:00
KLuka
883b7aa7f0 Real IP recognition over proxy (partial fix #54)
* Recogniton of HTTP header field 'X-Real-IP' was added. Value
  is used in LOGIN service with peer name as remote host identifier.
  This was we are able to see real IP in login related log files
  such as /var/log/auth.log, etc...
* Real IP, peer name and URL are also passed to launched  service
  as environment variables (SHELLINABOX_PEERNAME, SHELLINABOX_REALIP
  and SHELLINABOX_URL). This can be used by custom user service shell
  scripts or programs.
* Real IP can also be passed to custom user service as command line
  parameter ${realip}.
2015-05-17 20:05:15 +02:00
KLuka
cca02b1fee Issue #52: Emacs refresh is slow
When new process is launched default terminal speed is correctly set to 38400.
This improves usage of Emacs editor and perhaps some other applications.

This is also partial fix for issue #58
2015-03-11 16:21:15 +01:00
Ezra Buehler
284d90ccc4 Remove trailing whitespace 2015-03-11 17:56:36 +01:00
KLuka
91f6eabe49 Issue #103, #203: Child process termination (partial fix)
When browser tab/window is closed during active session, child process
stays alive forever (even if shellinaboxd is terminated).

This fix works only if shellinaboxd is started without root privileges.
Droping them at runtime doesn't help either. Issue is related to PAM
session management process.

If we start shellinaboxd with root priviliges this fix will not affect
anything.

* When session timeouts cleanup procedure is triggered. Procedure is executed
in launcher process, because this is parent of child (service) process.
There we execute checks, if we have correct child pid (stored in session) and
than we can terminate process.
* Added debug information about cleaning up child process

https://code.google.com/p/shellinabox/issues/detail?id=103
https://code.google.com/p/shellinabox/issues/detail?id=203
2015-03-06 16:39:02 +01:00
KLuka
bd3f0bd9fd Debug info and minor fix on child process exit (service exit)
* Added debug information when child process exits
	- pid of child process (service)
	- exit code (this should help for debuging issues related to "Session closed")

* Fixed status checking from waitpid() when child process exits
	- before we were checking wrong variable (checks were allways true)
	- now we use correct status variable
2015-03-05 17:23:24 +01:00
Marc Singer
4bac6f8b05 Removing PATH_MAX reference.
o Hurd doesn't support PATH_MAX, so we elide it from the forkPty
  function.  Code will work on non-hurd systems as well.
o In case ptsname_r isn't available, it is provided even when openpty
  *is* available.
2012-04-09 18:40:02 -07:00
Marc Singer
f4a9e54dda Fixing Valgrind discovered issues.
o Clearing buffer sent via sendmsg.
2012-04-05 20:20:02 -07:00
Marc Singer
03a5435584 Issue 47: Does not build on Mac OSX
o From a poster:

  Just looking at this error a little more, the fix is easy for lion.
  Change line 1664 to:

      char cmsg_buf[CMSG_SPACE(sizeof(int))];

  And you should be able to get it to compile.

o Made a compatible change even though the original code was valid.
  Probably a compiler version issue.
2012-03-31 12:32:15 -07:00
Anders Kaseorg
db4137c890 Fix miscellaneous strncat buffer overflows
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2012-03-30 13:12:22 -07:00
zodiac@gmail.com
0ee4984e2c Fixed confusing error message when we fail to dynamically load PAM support.
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@237 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2010-10-02 18:09:40 +00:00
zodiac@gmail.com
0c63f96f95 pututxline() proves somewhat troublesome on MacOS X. Implement a few work-arounds to avoid some of these problems.
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@235 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2010-09-30 21:51:46 +00:00
zodiac@gmail.com
dc6b0cbc85 Relax a check() that would trigger when using old-style (pre-Unix 98)
pseudo terminals.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@234 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2010-09-30 15:52:35 +00:00
zodiac@gmail.com
04607ee245 Minor clean ups. Came up with a feature test for the function signature used
by getgrouplist(). Added a few more UNUSED() macros.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@233 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2010-09-29 18:15:05 +00:00
zodiac@gmail.com
925c2385e7 Another iteration of changes intended to deal with MacOS X specific build
problems. Unfortunately, without access to a MacOS X build environment, some
of these have to be mere educated guesses...


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@232 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2010-09-29 16:46:51 +00:00
zodiac@gmail.com
301823036a Some changes to improve compatibility with MacOS X.
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@231 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2010-09-29 06:28:58 +00:00
zodiac@gmail.com
81af285a8d In an attempt to reduce build dependencies, remove the requirement for
objcopy. Instead, we are now using "od" to generate C source code.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@230 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2010-09-29 02:19:23 +00:00
zodiac@gmail.com
61b40ad475 Make a best effort to close the PAM session properly. But if any failure is
reported, don't consider it fatal.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@222 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2010-09-06 17:32:17 +00:00
zodiac@gmail.com
c5d55118af Removed non-standard fields from updwtmpx() wrapper function. This should improve
compatibility with systems that implement updwtmp() but not updwtmpx().

Also, changed Makefile rules in an attempt to improve compatibility with BSD
make utilities.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@208 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2010-07-09 15:48:51 +00:00
zodiac@gmail.com
83621919cd Added support for systems that have utmpx.h, but don't implement updwtmpx().
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@207 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2010-07-08 17:54:15 +00:00
zodiac@gmail.com
9b0a937e35 Started working on support for WebSockets.
Fixed some compiler warnings when compiling with -Wextra

Thanks to Jan Jaeger's excellent bug report, made some changes
that should make it easier to build ShellInABox for OpenWRT.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@202 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2010-03-29 16:40:17 +00:00
zodiac@gmail.com
5a75b2f091 Avoid compiler warnings with some versions of GCC.
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@201 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2010-02-04 00:33:37 +00:00
zodiac@gmail.com
0fcf50735e Allow retrieval of the user's default login shell from /etc/passwd.
Allow the code to be built without support for the LOGIN service, as
calling /bin/login does not work well on Fedora.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@198 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-12-04 06:33:36 +00:00
zodiac@gmail.com
fe5a28f992 Some minor tweaks to make newer versions of gcc and glibc compile without warnings.
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@181 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-11-18 17:17:56 +00:00
zodiac
e8ef411627 Escape potentially problematic characters in ${url}
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@179 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-08-24 02:19:43 +00:00
zodiac
9b8e3af162 Added a ${url} parameter that can be used in the service description
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@174 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-08-19 19:08:30 +00:00
zodiac
341eb1982c Included example style sheets that allow switching to white-on-black or to
monochrome mode from the right click context menu. This required a couple of
architectural changes to the JavaScript code.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@167 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-08-12 02:32:26 +00:00
zodiac
e78b94961c Sanitize the SSH command line a little more.
Show the real host name in the SSH password prompt, if available.
Add some commented-out debugging helpers for tracking down problems with non-US keyboards. 


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@164 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-08-09 19:08:40 +00:00
zodiac
e35cf266da - Added the --css command line option to make incremental changes to the style sheet without having to load a full replacement with the --static-file option. Added an example that enables white text on a black background.
- Added Debian specific documentation to the manual page.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@158 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-07-30 17:40:54 +00:00
zodiac@gmail.com
0a834e6488 Allow unprivileged users to run the daemon. This requires calling "ssh" instead of "login".
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@154 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-07-29 18:30:03 +00:00
zodiac
ca18a5346f Run-time testing for availability of libpthread functions does not
work reliably on some platforms. So, avoid doing so on anything other
than Linux/i386. For all other platforms, assume that the code is not
linked against libpthread. For ShellInABox, this is always the correct
assumption. But if the code gets embedded into other projects, this
might have to be changed.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@141 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-07-07 00:40:51 +00:00
zodiac@gmail.com
adadddf91c Released version 2.8
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@121 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-05-23 19:53:09 +00:00
zodiac
41fd8f3ea5 Fixed various issues with building on OpenBSD
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@119 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-05-21 07:50:22 +00:00
zodiac
abb9a50f3b Fixed variable expansion in service descriptions.
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@118 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-04-28 07:12:55 +00:00
zodiac
3bacdb002b - Make the code actually do, what the comments say (i.e. skip PAM account
management, if we don't have the privileges to do so, anyway)
- Make ssl.h compile again, even if OpenSSL is not found at compile time.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@115 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-04-16 20:54:08 +00:00
zodiac
0258d46926 - Add support for commands that want to read before they write anything.
- A couple of changes to avoid false error messages in valgrind.
- Fixed a bug that could potentially lead to a double-free()


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@114 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-04-16 05:33:05 +00:00
zodiac
3e0241dde3 Added initial revision of demo application
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@93 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-03-30 08:41:48 +00:00
zodiac
97fff401a3 Fixed IE6 support, and fixed possible memory corruption, when sessions
time out.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@77 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-03-17 17:51:42 +00:00
zodiac
85ae25cdf5 Fixed some compiler warnings that newer versions of GCC issue.
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@75 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-03-16 15:08:11 +00:00
zodiac
2d4768183b Better error reporting if forkpty() fails.
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@74 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-02-28 07:57:46 +00:00
zodiac
b0341e1549 Added fallback on old-style pty's, if /dev/pts is not mounted.
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@73 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-02-28 05:34:21 +00:00
zodiac
11cda91356 Remove the dependency on fdopendir, which does not exist everywhere.
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@71 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-02-28 02:45:18 +00:00
zodiac
84dcc33650 Allow "configure" to explicitly disable OpenSSL and PAM support. Also, allow
OpenSSL and PAM libraries to be optionally linked as regular shared libraries
instead of being searched for and loaded at run-time.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@65 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-02-17 04:13:47 +00:00
zodiac
530182d15e Only defined binary conversation support, if actually available.
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@64 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-02-17 00:59:34 +00:00
zodiac
cc8979092c Fixed FreeBSD support. We now find both /bin/login and /usr/bin/login. We
provide our own conversation function, if PAM misc is not available. We
rely on login_tty to set up the terminal for us. And we avoid a few other
API uses that turned out to be Linux specific extensions.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@63 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-02-17 00:51:41 +00:00
zodiac
1e27276feb Use a config.h file, instead of passing configuration options on the compiler's
command line.

Fix fatal compilation warning when building without SSL support.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@59 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-02-11 23:25:15 +00:00
zodiac
75c09f9f83 Make code a little more portable. In particular, fix sed scripts.
git-svn-id: https://shellinabox.googlecode.com/svn/trunk@56 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-02-02 21:42:33 +00:00
zodiac
90d9d492b7 Added better compatibility with different versions of compilers and libaries.
In particular, work around a problem with gcc complaining about NULL format
strings. And added additional system header files that might be required on
some platforms.

This should fix some of the problems reported when compiling on BSD-style
systems. But we are still using SysV style session management code. This
probably needs to be rewritten before ShellInABox can be run on BSD-style
system.

In particular, we rely on grantpt(), we use the utmpx API, and we access
/dev/urandom.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@55 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2009-02-02 00:55:15 +00:00