|
|
| version 1.5.2.1, 2015/06/15 15:52:34 | version 1.6.2.1, 2015/06/18 22:15:47 |
|---|---|
| Line 5 | Line 5 |
| * $Author$ | * $Author$ |
| * $Id$ | * $Id$ |
| * | * |
| *************************************************************************/ | ************************************************************************* |
| The ELWIX and AITNET software is distributed under the following | |
| terms: | |
| All of the documentation and software included in the ELWIX and AITNET | |
| Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> | |
| Copyright 2004 - 2015 | |
| by Michael Pounov <misho@elwix.org>. All rights reserved. | |
| Redistribution and use in source and binary forms, with or without | |
| modification, are permitted provided that the following conditions | |
| are met: | |
| 1. Redistributions of source code must retain the above copyright | |
| notice, this list of conditions and the following disclaimer. | |
| 2. Redistributions in binary form must reproduce the above copyright | |
| notice, this list of conditions and the following disclaimer in the | |
| documentation and/or other materials provided with the distribution. | |
| 3. All advertising materials mentioning features or use of this software | |
| must display the following acknowledgement: | |
| This product includes software developed by Michael Pounov <misho@elwix.org> | |
| ELWIX - Embedded LightWeight unIX and its contributors. | |
| 4. Neither the name of AITNET nor the names of its contributors | |
| may be used to endorse or promote products derived from this software | |
| without specific prior written permission. | |
| THIS SOFTWARE IS PROVIDED BY AITNET AND CONTRIBUTORS ``AS IS'' AND | |
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
| FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
| DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
| OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
| LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
| OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
| SUCH DAMAGE. | |
| */ | |
| #include "global.h" | #include "global.h" |
| Line 96 Usage() | Line 133 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 161 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 238 Run(char **argv, char flg) | Line 275 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 287 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 388 main(int argc, char **argv) | Line 427 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); |