/usr/share/gforge/plugins/scmarch/common/ArchPlugin.class.php is in fusionforge-plugin-scmarch 5.3.2+20141104-3+deb8u3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | <?php
/** FusionForge Arch plugin
*
* Copyright 2009, Roland Mas
*
* This file is part of FusionForge.
*
* FusionForge 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.
*
* FusionForge 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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
forge_define_config_item ('default_server', 'scmarch', forge_get_config ('web_host')) ;
forge_define_config_item ('repos_path', 'scmarch', forge_get_config('chroot').'/scmrepos/arch') ;
class ArchPlugin extends SCMPlugin {
function ArchPlugin () {
global $gfconfig;
$this->SCMPlugin () ;
$this->name = 'scmarch';
$this->text = 'Arch';
$this->hooks[] = 'scm_generate_snapshots' ;
$this->register () ;
}
function getDefaultServer() {
return forge_get_config('default_server', 'scmarch') ;
}
function getBlurb () {
return '<p>'
. sprintf(_('Documentation for %1$s is available at <a href="%2$s">%2$s</a>.'),
'GNU Arch (“tla”)',
'http://www.gnu.org/software/gnu-arch/')
. '</p>';
}
function createOrUpdateRepo ($params) {
$project = $this->checkParams ($params) ;
if (!$project) {
return false ;
}
if (! $project->usesPlugin ($this->name)) {
return false;
}
$repo = forge_get_config('repos_path', 'scmarch') . '/' . $project->getUnixName() ;
$unix_group = 'scm_' . $project->getUnixName() ;
$repo_exists = false ;
if (!$repo_exists) {
system ("mkdir -p $repo") ;
system ("find $repo -type d | xargs chmod g+s") ;
}
system ("chgrp -R $unix_group $repo") ;
if ($project->enableAnonSCM()) {
system ("chmod -R g+wX,o+rX-w $repo") ;
} else {
system ("chmod -R g+wX,o-rwx $repo") ;
}
}
function generateSnapshots ($params) {
$project = $this->checkParams ($params) ;
if (!$project) {
return false ;
}
$group_name = $project->getUnixName() ;
$snapshot = forge_get_config('scm_snapshots_path').'/'.$group_name.'-scm-latest.tar'.util_get_compressed_file_extension();
$tarball = forge_get_config('scm_tarballs_path').'/'.$group_name.'-scmroot.tar'.util_get_compressed_file_extension();
if (! $project->usesPlugin ($this->name)) {
return false;
}
if (! $project->enableAnonSCM()) {
if (file_exists ($snapshot)) unlink ($snapshot) ;
if (file_exists ($tarball)) unlink ($tarball) ;
return false;
}
$toprepo = forge_get_config('repos_path', 'scmarch') ;
$repo = $toprepo . '/' . $project->getUnixName() ;
if (!is_dir ($repo) || !is_file ("$repo/format")) {
if (file_exists ($snapshot)) unlink ($snapshot) ;
if (file_exists ($tarball)) unlink ($tarball) ;
return false ;
}
$tmp = trim (`mktemp -d`) ;
if ($tmp == '') {
return false ;
}
system ("tar cCf $toprepo - ".$project->getUnixName() ."|".forge_get_config('compression_method')."> $tmp/tarball") ;
chmod ("$tmp/tarball", 0644) ;
copy ("$tmp/tarball", $tarball) ;
unlink ("$tmp/tarball") ;
system ("rm -rf $tmp") ;
}
}
// Local Variables:
// mode: php
// c-file-style: "bsd"
// End:
|