Esempio n. 1
0
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;
}
Esempio n. 2
0
File: Main.c Progetto: juddy/edcde
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();
}