getOsIdentifier() public static method

Will return a three character OS identifier e.g. WIN or LIN
public static getOsIdentifier ( ) : string
return string
コード例 #1
0
 /**
  * Helper method which allows to execute a callable as the super user the server got started by.
  *
  * @param callable $callable  The callable to run
  * @param array    $arguments Arguments to pass to the callable
  *
  * @return mixed The callables result
  */
 public static function sudo(callable $callable, array $arguments = array())
 {
     // don't do anything under Windows
     if (FileSystem::getOsIdentifier() === FileSystem::OS_IDENTIFIER_WIN) {
         return call_user_func_array($callable, $arguments);
     }
     // get the current user user pair (super user and effective user)
     $currentUserId = (int) posix_geteuid();
     $superUserId = (int) posix_getuid();
     // temporarily switch to the super user
     posix_seteuid($superUserId);
     // execute the callable
     $result = call_user_func_array($callable, $arguments);
     // switch back to the effective user
     posix_seteuid($currentUserId);
     return $result;
 }
コード例 #2
0
 /**
  * Handle an event.
  *
  * @param \League\Event\EventInterface $event The triggering event
  *
  * @return void
  * @see \League\Event\ListenerInterface::handle()
  */
 public function handle(EventInterface $event)
 {
     try {
         // load the application server instance
         /** @var \AppserverIo\Appserver\Core\Interfaces\ApplicationServerInterface $applicationServer */
         $applicationServer = $this->getApplicationServer();
         // write a log message that the event has been invoked
         $applicationServer->getSystemLogger()->info($event->getName());
         // don't do anything under Windows
         if (FileSystem::getOsIdentifier() === 'WIN') {
             $applicationServer->getSystemLogger()->info('Don\'t switch UID to \'%s\' because OS is Windows');
             return;
         }
         // initialize the variable for user/group
         $uid = 0;
         $gid = 0;
         // throw an exception if the POSIX extension is not available
         if (extension_loaded('posix') === false) {
             throw new \Exception('Can\'t switch user, because POSIX extension is not available');
         }
         // print a message with the old UID/EUID
         $applicationServer->getSystemLogger()->info("Running as " . posix_getuid() . "/" . posix_geteuid());
         // extract the user and group name as variables
         extract(posix_getgrnam($applicationServer->getSystemConfiguration()->getGroup()));
         extract(posix_getpwnam($applicationServer->getSystemConfiguration()->getUser()));
         // switch the effective GID to the passed group
         if (posix_setegid($gid) === false) {
             $applicationServer->getSystemLogger()->error(sprintf('Can\'t switch GID to \'%s\'', $gid));
         }
         // print a message with the new GID/EGID
         $applicationServer->getSystemLogger()->info("Running as group" . posix_getgid() . "/" . posix_getegid());
         // switch the effective UID to the passed user
         if (posix_seteuid($uid) === false) {
             $applicationServer->getSystemLogger()->error(sprintf('Can\'t switch UID to \'%s\'', $uid));
         }
         // print a message with the new UID/EUID
         $applicationServer->getSystemLogger()->info("Running as user " . posix_getuid() . "/" . posix_geteuid());
     } catch (\Exception $e) {
         $applicationServer->getSystemLogger()->error($e->__toString());
     }
 }
コード例 #3
0
 /**
  * Will return a three character OS identifier e.g. WIN or LIN
  *
  * @return string
  */
 public function getOsIdentifier()
 {
     return FileSystem::getOsIdentifier();
 }