gplv2/cgcs-users/cgcs-users-1.0/ibsh-0.3e-cgcs.patch

85 lines
2.6 KiB
Diff

Index: cgcs-users-1.0-r0/main.c
===================================================================
--- cgcs-users-1.0-r0.orig/main.c
+++ cgcs-users-1.0-r0/main.c
@@ -37,6 +37,7 @@
/* Header files */
#include "ibsh.h"
+#include "stdlib.h"
/* Main: */
/* Handle arguments, read config files, start command processing. */
@@ -57,13 +58,28 @@
/* use our builtin code, otherwise use execve. After execve, check if the user didnt */
/* use the last command to create some illegal content. If yes, erase that. Give the */
/* notice only afterwards. */
+
+void ALRMhandler(int sig) {
+ OPENLOG;
+ syslog(LOG_INFO, "CLI timeout, user %s has logged out.", loggedin.uname);
+ CLOSELOG;
+ exit(0);
+}
+
int main(int argc, char **argv)
{
char temp[STRING_SIZE], *buf;
struct stat info;
uid_t ruid, euid;
gid_t rgid, egid;
+ unsigned int tout_cli = 0;
+ const char* tout = getenv("TMOUT");
+ if (tout)
+ tout_cli = atoi(tout);
+ else
+ //default to 5 mins
+ tout_cli = 300;
/* setuid protection */
ruid = getuid();
@@ -107,6 +123,7 @@ int main(int argc, char **argv)
signal( SIGQUIT, SIG_IGN );
signal( SIGTERM, SIG_IGN );
signal( SIGTSTP, SIG_IGN );
+ signal( SIGALRM, ALRMhandler );
LoadConfig();
/* Command mode */
@@ -144,6 +161,7 @@ int main(int argc, char **argv)
/* will be allowed to run, unless it is mentioned in the */
/* config files. Files that are created with an extension */
/* that is listed in the other config file, must be deleted! */
+ alarm(tout_cli);
for ( ; ; ) {
/* Where is he ? */
getcwd(real_path, STRING_SIZE);
@@ -153,12 +171,12 @@ int main(int argc, char **argv)
}
/* We don't want the user to know where he actually is. */
/* This is the prompt! */
- printf("[%s]%% ", jail_path);
+ printf("[%s]%% ", loggedin.uname);
/* scanf("%s", user_command); */
myscanf(user_command, real_path);
+ alarm(tout_cli);
/* Command interpretation and execution. */
if ( (CommandOK(user_command, loggedin.udir, jail_path, filtered_command)) == 0 ) {
- printf("Sorry, can't let you do that!\n");
log_attempt(loggedin.uname); /* v0.2a */
continue;
}
Index: cgcs-users-1.0-r0/config.c
===================================================================
--- cgcs-users-1.0-r0.orig/config.c
+++ cgcs-users-1.0-r0/config.c
@@ -166,7 +166,6 @@ int LoadConfig( void )
// Delete '\n'
tmp2[i][strlen(tmp2[i]) - 1] = '\0';
strncpy(extensions[i],tmp2[i],strlen(tmp2[i]));
- printf("EXTENSIONS %s\n",extensions[i]);
i++;
}
}