int main(int argc, char **argv) { B2B_LOGIN_T Query; CONFIG_T Config; char LogPath[256]; int ErrorCode = NO_ERROR; Q_ENTRY *req = qCgiRequestParse(NULL, (Q_CGI_T) 0); memset(&Query, 0, sizeof(B2B_LOGIN_T)); memset(&Config, 0, sizeof(CONFIG_T)); ReadConfig(CONFIGFILE_PATH, &Config); sprintf(LogPath, "%s/%s", Config.LOG_PATH, LOG_NAME_ADMIN); if((SvcLog = openLog("ADMIN", LogPath, LOG_MODE)) == NULL) { qCgiResponseSetContentType(req, "text/html"); printf("LogFile Open Error..\n"); ErrorCode = ERROR_CREATE_LOG_FILE; PrintAuthError(); return ErrorCode; } if((ErrorCode = GetParamsReqAuth(req, &Query)) == NO_ERROR) { if((ErrorCode = CheckPasswd(Config.AUTHENTICATION_FILE, Query)) != NO_ERROR) { printLog(HEAD, "ADMIN Error...ErrorCode(%d)\n", ErrorCode); } else { qCgiResponseSetContentType(req, "text/html"); PrintQueryHTML(Config.QUERY_FILE); } } else { qCgiResponseSetContentType(req, "text/html"); PrintAuthError(); printLog(HEAD, "Parameter Error...(%d)\n", ErrorCode); } // req->free(req); closeLog(SvcLog); return 0; }
void CheckUserRequest( void ) { unsigned short ruid; unsigned short rgid; struct passwd * passwd; #ifdef sun struct spwd * spwd; #endif Boolean notExist = False; Boolean alreadySetToRoot = False; rootRequest = False; /* get current group id */ rgid = getgid(); /* get current user id */ ruid = getuid(); /* See if the user wants to run as himself */ if (appArgs.user == NULL) { SetGidUid(rgid,ruid); return; } /* Get password for the requested user */ passwd = getpwnam(appArgs.user); if (passwd) { #ifdef sun spwd = getspnam(appArgs.user); if (spwd) { #endif if (passwd->pw_uid == ruid) { /* * We are already running as the * requested user. So return now. */ SetGidUid(rgid,ruid); return; } #ifdef sun if (spwd->sp_pwdp) toPword = XtNewString(spwd->sp_pwdp); } #else if (passwd->pw_passwd) toPword = XtNewString(passwd->pw_passwd); #endif /* sun */ basegid = passwd->pw_gid; newuid = passwd->pw_uid; } else notExist = True; /* Root requests require some extra work later */ if (strcmp(appArgs.user, "root") == 0) rootRequest = True; /* Get name for the current user */ passwd = getpwuid(ruid); if (passwd && passwd->pw_name) origName = XtNewString(passwd->pw_name); /* Get password for the root user */ passwd = getpwnam("root"); if (passwd && passwd->pw_passwd) { #ifdef sun spwd = getspnam("root"); if (spwd && spwd->sp_pwdp) { rootPword = XtNewString(spwd->sp_pwdp); } #else rootPword = XtNewString(passwd->pw_passwd); #endif /* sun */ if (passwd->pw_uid == ruid) alreadySetToRoot = True; } /* * If 'alreadySetToRoot' is set to True, then that means that the * user is currently running as root. */ if (notExist) { /* Requested user does not exist; this function will exit() */ UnknownUser(); } else if ((alreadySetToRoot) || /* requested users passwd is null */ ((toPword && (toPword[0] == '\0')) || (toPword == NULL))) { /* Already there -- no need to check a passwd */ LogSuccess(); } else CheckPasswd(); }