Diff for /suX/src/sux.c between versions 1.5 and 1.6

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);

Removed from v.1.5  
changed lines
  Added in v.1.6


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>