diff options
Diffstat (limited to '_darcs/pristine/lib/daemon.php')
-rw-r--r-- | _darcs/pristine/lib/daemon.php | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/_darcs/pristine/lib/daemon.php b/_darcs/pristine/lib/daemon.php deleted file mode 100644 index 9c1ae50a0..000000000 --- a/_darcs/pristine/lib/daemon.php +++ /dev/null @@ -1,144 +0,0 @@ -<?php -/** - * Laconica - a distributed open-source microblogging tool - * Copyright (C) 2008, Controlez-Vous, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -if (!defined('LACONICA')) { - exit(1); -} - -class Daemon -{ - function name() - { - return null; - } - - function background() - { - $pid = pcntl_fork(); - if ($pid < 0) { // error - common_log(LOG_ERR, "Could not fork."); - return false; - } else if ($pid > 0) { // parent - common_log(LOG_INFO, "Successfully forked."); - exit(0); - } else { // child - return true; - } - } - - function alreadyRunning() - { - $pidfilename = $this->pidFilename(); - - if (!$pidfilename) { - return false; - } - - if (!file_exists($pidfilename)) { - return false; - } - $contents = file_get_contents($pidfilename); - if (posix_kill(trim($contents), 0)) { - return true; - } else { - return false; - } - } - - function writePidFile() - { - $pidfilename = $this->pidFilename(); - - if (!$pidfilename) { - return false; - } - - return file_put_contents($pidfilename, posix_getpid() . "\n"); - } - - function clearPidFile() - { - $pidfilename = $this->pidFilename(); - if (!$pidfilename) { - return false; - } - return unlink($pidfilename); - } - - function pidFilename() - { - $piddir = common_config('daemon', 'piddir'); - if (!$piddir) { - return null; - } - $name = $this->name(); - if (!$name) { - return null; - } - return $piddir . '/' . $name . '.pid'; - } - - function changeUser() - { - $username = common_config('daemon', 'user'); - - if ($username) { - $user_info = posix_getpwnam($username); - if (!$user_info) { - common_log(LOG_WARNING, - 'Ignoring unknown user for daemon: ' . $username); - } else { - common_log(LOG_INFO, "Setting user to " . $username); - posix_setuid($user_info['uid']); - } - } - - $groupname = common_config('daemon', 'group'); - - if ($groupname) { - $group_info = posix_getgrnam($groupname); - if (!$group_info) { - common_log(LOG_WARNING, - 'Ignoring unknown group for daemon: ' . $groupname); - } else { - common_log(LOG_INFO, "Setting group to " . $groupname); - posix_setgid($group_info['gid']); - } - } - } - - function runOnce() - { - if ($this->alreadyRunning()) { - common_log(LOG_INFO, $this->name() . ' already running. Exiting.'); - exit(0); - } - if ($this->background()) { - $this->writePidFile(); - $this->changeUser(); - $this->run(); - $this->clearPidFile(); - } - } - - function run() - { - return true; - } -} |