template; $cmd = Pluf::f('idf_plugin_syncgit_path_gitserve', '/dev/null'); $authorized_keys = Pluf::f('idf_plugin_syncgit_path_authorized_keys', false); if (false == $authorized_keys) { throw new Pluf_Exception_SettingError('Setting git_path_authorized_keys not set.'); } if (!is_writable($authorized_keys)) { throw new Exception('Cannot create file: '.$authorized_keys); } $out = ''; $keys = Pluf::factory('IDF_Key')->getList(array('view'=>'join_user')); foreach ($keys as $key) { if (strlen($key->content) > 40 // minimal check and preg_match('/^[a-zA-Z][a-zA-Z0-9_.-]*(@[a-zA-Z][a-zA-Z0-9.-]*)?$/', $key->login)) { $content = trim(str_replace(array("\n", "\r"), '', $key->content)); $out .= sprintf($template, $cmd, $key->login, $content)."\n"; } } file_put_contents($authorized_keys, $out, LOCK_EX); } /** * 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); } } /** * Check if a sync is needed. * */ public static function main() { if (file_exists(Pluf::f('idf_plugin_syncgit_sync_file'))) { @unlink(Pluf::f('idf_plugin_syncgit_sync_file')); self::sync(); self::markExport(); } } }