|
|
| version 1.5, 2013/04/10 00:04:11 | version 1.6, 2015/06/17 14:14:17 |
|---|---|
| Line 26 Log(int lvl, const char *fmt, ...) | Line 26 Log(int lvl, const char *fmt, ...) |
| vfprintf(lf, fmt, lst); | vfprintf(lf, fmt, lst); |
| va_end(lst); | va_end(lst); |
| fprintf(lf, "\n"); | fprintf(lf, "\n"); |
| vsyslog(LOG_WARNING, fmt, cp); | vsyslog(LOG_INFO, fmt, cp); |
| va_end(cp); | va_end(cp); |
| } | } |
| } | } |
| Line 48 Err(const char *fmt, ...) | Line 48 Err(const char *fmt, ...) |
| static inline void | static inline void |
| DumpProc(const char *txt) | DumpProc(const char *txt) |
| { | { |
| Log(0, "%s:: uid:gid=%d:%d UID:GID=%d:%d Prio=%d Class=%s Name=%s Dir=%s Cmd=%s " | Log(1, "%s:: uid:gid=%d:%d UID:GID=%d:%d Prio=%d Class=%s Name=%s Dir=%s Cmd=%s " |
| "Script=%s From=%s:%s Get=%s", txt ? txt : __func__, | "Script=%s From=%s:%s Get=%s", txt ? txt : __func__, |
| geteuid(), getegid(), AIT_GET_I16(&proc.proc_uid), | geteuid(), getegid(), AIT_GET_I16(&proc.proc_uid), |
| AIT_GET_I16(&proc.proc_gid), AIT_GET_I32(&proc.proc_prio), | AIT_GET_I16(&proc.proc_gid), AIT_GET_I32(&proc.proc_prio), |
| Line 96 Usage() | Line 96 Usage() |
| { | { |
| printf( " -= suX =- suExecutor designed for web based applicaions\n" | printf( " -= suX =- suExecutor designed for web based applicaions\n" |
| "(C)`11 AITNET ltd - Sofia/Bulgaria - <office@aitnet.org>\n\n" | "(C)`11 AITNET ltd - Sofia/Bulgaria - <office@aitnet.org>\n\n" |
| " Syntax: %s [options] <program> [arguments]\n" | " Syntax: %s [options] <program|-> [arguments]\n" |
| "\t-u <user>\t\t\tUser for suID\n" | "\t-u <user>\t\t\tUser for suID\n" |
| "\t-g <group>\t\t\tGroup for suID\n" | "\t-g <group>\t\t\tGroup for suID\n" |
| "\t-p <priority (-20..20)>\t\tExecute with priority\n" | "\t-p <priority (-20..20)>\t\tExecute with priority\n" |
| Line 124 setUIDGID(char flg, const char *name) | Line 124 setUIDGID(char flg, const char *name) |
| uid = sb.st_uid; | uid = sb.st_uid; |
| gid = sb.st_gid; | gid = sb.st_gid; |
| } else { | } else { |
| pass = getpwnam(getenv("SUX_USER")); | pass = getpwnam(getenv("SUX_USER") ? getenv("SUX_USER") : DEFAULT_SUX_USER); |
| if (!pass) { | if (!pass) { |
| Err("Error:: User %s not found", getenv("SUX_USER")); | Err("Error:: User %s not found", getenv("SUX_USER")); |
| endpwent(); | endpwent(); |
| Line 180 LoadCfgData(char flg) | Line 180 LoadCfgData(char flg) |
| Err("Error:: Unknown mode ..."); | Err("Error:: Unknown mode ..."); |
| return -1; | return -1; |
| } | } |
| if (!strcasecmp(str, "SCRIPT") && getenv("SUX_USER")) { | if (!strcasecmp(str, "SCRIPT")) { |
| mode = 1; | mode = 1; |
| if (setUIDGID(flg, NULL) == -1) | if (setUIDGID(flg, (getenv("SUX_USER") ? NULL : getenv("PATH_TRANSLATED"))) == -1) |
| return -1; | return -1; |
| } else if (!strcasecmp(str, "FILE")) { | } else if (!strcasecmp(str, "FILE")) { |
| mode = 2; | mode = 2; |
| Line 238 Run(char **argv, char flg) | Line 238 Run(char **argv, char flg) |
| if (!(aarg = array_From((const char***) &argv, 0))) { | if (!(aarg = array_From((const char***) &argv, 0))) { |
| array_Destroy(&acmd); | array_Destroy(&acmd); |
| return -1; | return -1; |
| } else if (*array(acmd, 0, char*) == '!') { | } |
| /* '!' exclude associated wrapper aka direct args execution */ | |
| if (*array(acmd, 0, char*) == '!') { | |
| if (array_Grow(acmd, 0, 0)) { | if (array_Grow(acmd, 0, 0)) { |
| array_Destroy(&aarg); | array_Destroy(&aarg); |
| array_Destroy(&acmd); | array_Destroy(&acmd); |
| Line 248 Run(char **argv, char flg) | Line 250 Run(char **argv, char flg) |
| } else | } else |
| cmd = array(acmd, 0, char*); | cmd = array(acmd, 0, char*); |
| if (array_Concat(acmd, aarg) == -1) { | if (!(flg & SUX_GET_STDIN) && array_Concat(acmd, aarg) == -1) { |
| array_Destroy(&aarg); | array_Destroy(&aarg); |
| array_Destroy(&acmd); | array_Destroy(&acmd); |
| return -1; | return -1; |
| Line 275 Run(char **argv, char flg) | Line 277 Run(char **argv, char flg) |
| goto err; | goto err; |
| } | } |
| DumpProc(__func__); | |
| EVERBS(3) { | EVERBS(3) { |
| char **el = args - 1; | char **el = args - 1; |
| while (*++el) | while (*++el) |
| Log(3, "args: %s", *el); | Log(3, "args: %s", *el); |
| } | } |
| DumpProc(__func__); | |
| fflush(lf); | fflush(lf); |
| execve(cmd, args, environ); | execve(cmd, args, environ); |
| Line 388 main(int argc, char **argv) | Line 390 main(int argc, char **argv) |
| return 1; | return 1; |
| } else | } else |
| AIT_SET_STR(&proc.proc_name, str); | AIT_SET_STR(&proc.proc_name, str); |
| } else | } else if (strcmp(*argv, "-")) |
| AIT_SET_STR(&proc.proc_name, *argv); | AIT_SET_STR(&proc.proc_name, *argv); |
| else { | |
| flg |= SUX_GET_STDIN; | |
| AIT_SET_STR(&proc.proc_name, "-.stdin"); /* hack for associate to stdin */ | |
| } | |
| Log(2, "Try to load config %s", szCfg); | Log(2, "Try to load config %s", szCfg); |
| if (cfgLoadConfig(szCfg, &cfg)) { | if (cfgLoadConfig(szCfg, &cfg)) { |
| ELIBERR(cfg); | ELIBERR(cfg); |