summaryrefslogtreecommitdiff
path: root/program/lib/Crypt/GPG/ProcessControl.php
diff options
context:
space:
mode:
Diffstat (limited to 'program/lib/Crypt/GPG/ProcessControl.php')
-rw-r--r--program/lib/Crypt/GPG/ProcessControl.php150
1 files changed, 0 insertions, 150 deletions
diff --git a/program/lib/Crypt/GPG/ProcessControl.php b/program/lib/Crypt/GPG/ProcessControl.php
deleted file mode 100644
index d6dae0325..000000000
--- a/program/lib/Crypt/GPG/ProcessControl.php
+++ /dev/null
@@ -1,150 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * A class for monitoring and terminating processes
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Crypt_GPG
- */
-
-// {{{ class Crypt_GPG_ProcessControl
-
-/**
- * A class for monitoring and terminating processes by PID
- *
- * This is used to safely terminate the gpg-agent for GnuPG 2.x. This class
- * is limited in its abilities and can only check if a PID is running and
- * send a PID SIGTERM.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_ProcessControl
-{
- // {{{ protected properties
-
- /**
- * The PID (process identifier) being monitored
- *
- * @var integer
- */
- protected $pid;
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new process controller from the given PID (process identifier)
- *
- * @param integer $pid the PID (process identifier).
- */
- public function __construct($pid)
- {
- $this->pid = $pid;
- }
-
- // }}}
- // {{{ public function getPid()
-
- /**
- * Gets the PID (process identifier) being controlled
- *
- * @return integer the PID being controlled.
- */
- public function getPid()
- {
- return $this->pid;
- }
-
- // }}}
- // {{{ isRunning()
-
- /**
- * Checks if the process is running
- *
- * Uses <kbd>ps</kbd> on UNIX-like systems and <kbd>tasklist</kbd> on
- * Windows.
- *
- * @return boolean true if the process is running, false if not.
- */
- public function isRunning()
- {
- $running = false;
-
- if (PHP_OS === 'WINNT') {
- $command = 'tasklist /fo csv /nh /fi '
- . escapeshellarg('PID eq ' . $this->pid);
-
- $result = exec($command);
- $parts = explode(',', $result);
- $running = (count($parts) > 1 && trim($parts[1], '"') == $this->pid);
- } else {
- $result = exec('ps -p ' . escapeshellarg($this->pid) . ' -o pid=');
- $running = (trim($result) == $this->pid);
- }
-
- return $running;
- }
-
- // }}}
- // {{{ terminate()
-
- /**
- * Ends the process gracefully
- *
- * The signal SIGTERM is sent to the process. The gpg-agent process will
- * end gracefully upon receiving the SIGTERM signal. Upon 3 consecutive
- * SIGTERM signals the gpg-agent will forcefully shut down.
- *
- * If the <kbd>posix</kbd> extension is available, <kbd>posix_kill()</kbd>
- * is used. Otherwise <kbd>kill</kbd> is used on UNIX-like systems and
- * <kbd>taskkill</kbd> is used in Windows.
- *
- * @return void
- */
- public function terminate()
- {
- if (function_exists('posix_kill')) {
- posix_kill($this->pid, 15);
- } elseif (PHP_OS === 'WINNT') {
- exec('taskkill /PID ' . escapeshellarg($this->pid));
- } else {
- exec('kill -15 ' . escapeshellarg($this->pid));
- }
- }
-
- // }}}
-}
-
-// }}}
-
-?>