/** * Mark export of git repositories for the daemon. */ public static function markExport() { foreach (Pluf::factory('IDF_Project')->getList() as $project) { $rep = sprintf(Pluf::f('git_repositories'), $project->shortname); $serve = new IDF_Plugin_SyncGit_Serve(); $serve->setGitExport($project->shortname, $rep); } }
/** * Main function called by the serve script. */ public static function main($argv, $env) { if (count($argv) != 2) { self::fatalError('Missing argument USER.'); } $username = $argv[1]; umask(022); if (!isset($env['SSH_ORIGINAL_COMMAND'])) { self::fatalError('Need SSH_ORIGINAL_COMMAND in environment.'); } $cmd = $env['SSH_ORIGINAL_COMMAND']; chdir(Pluf::f('idf_plugin_syncgit_git_home_dir', '/home/git')); $serve = new IDF_Plugin_SyncGit_Serve(); try { $new_cmd = $serve->serve($username, $cmd); } catch (Exception $e) { self::fatalError($e->getMessage()); } print $new_cmd; exit(0); }
# ***** BEGIN LICENSE BLOCK ***** # This file is part of InDefero, an open source project management application. # Copyright (C) 2008 Céondo Ltd and contributors. # # InDefero is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # InDefero 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # ***** END LICENSE BLOCK ***** */ /** * This script is used to control the access to the git repositories * using a restricted shell access. * * The only argument must be the login of the user. */ require dirname(__FILE__) . '/../src/IDF/conf/path.php'; require 'Pluf.php'; Pluf::start(dirname(__FILE__) . '/../src/IDF/conf/idf.php'); Pluf_Dispatcher::loadControllers(Pluf::f('idf_views')); IDF_Plugin_SyncGit_Serve::main($argv, array_merge($_SERVER, $_ENV));
/** * Main function called by the serve script. */ public static function main($argv, $env) { if (count($argv) != 2) { self::fatalError('Missing argument USER.'); } $username = $argv[1]; umask(022); if (!isset($env['SSH_ORIGINAL_COMMAND'])) { self::fatalError('Need SSH_ORIGINAL_COMMAND in environment.'); } $cmd = $env['SSH_ORIGINAL_COMMAND']; $home = Pluf::f('idf_plugin_syncgit_git_home_dir', '/home/git'); if (!is_dir($home) || is_link($home)) { throw new Pluf_Exception_Setting_error(sprintf('%s does not exist! Did you set up your git user? ' . 'Set "idf_plugin_syncgit_git_home_dir". to git\'s $HOME.', $home)); } chdir($home); $serve = new IDF_Plugin_SyncGit_Serve(); try { $new_cmd = $serve->serve($username, $cmd); } catch (Exception $e) { self::fatalError($e->getMessage()); } print $new_cmd; exit(0); }