gforge-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gforge-commits] gforge/cronjobs/cvs-cron cvs.php, 1.5, 1.6 cvscreate.sh


From: gsmet
Subject: [Gforge-commits] gforge/cronjobs/cvs-cron cvs.php, 1.5, 1.6 cvscreate.sh, 1.3, 1.4
Date: Tue, 13 Apr 2004 15:28:35 -0500

Update of /cvsroot/gforge/gforge/cronjobs/cvs-cron
In directory db.perdue.net:/tmp/cvs-serv8882/cronjobs/cvs-cron

Modified Files:
        cvs.php cvscreate.sh 
Log Message:
* anonymous enabling switch now respected
* removed loginfo chgrp by using g+s right


Index: cvs.php
===================================================================
RCS file: /cvsroot/gforge/gforge/cronjobs/cvs-cron/cvs.php,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- cvs.php     1 Dec 2003 04:03:41 -0000       1.5
+++ cvs.php     13 Apr 2004 20:28:33 -0000      1.6
@@ -24,27 +24,49 @@
        }
 }
 
+function writeFile($filePath, $content) {
+       $file = fopen($filePath, 'a');
+       flock($file, LOCK_EX);
+       ftruncate($file, 0);
+       rewind($file);
+       if(!empty($content)) {
+               fwrite($file, $content);
+       }
+       flock($file, LOCK_UN);
+       fclose($file);
+}
+
 function addProjectRepositories() {
        global $maincvsroot;
 
-       $res = db_query("select group_id,unix_group_name from groups where 
status='A' AND group_id NOT IN (2,3,4)");
+       $res = db_query("select 
group_id,unix_group_name,enable_anoncvs,enable_pserver from groups where 
status='A' AND group_id NOT IN (2,3,4)");
        
        for($i = 0; $i < db_numrows($res); $i++) {
                /*
                        Simply call cvscreate.sh
                */
-               if 
(is_dir("$maincvsroot".db_result($res,$i,'unix_group_name'))) {
-
-                       //already exists
-
-               } elseif 
(is_file("$maincvsroot".db_result($res,$i,'unix_group_name'))) {
-
-                       $err .= 
"$maincvsroot".db_result($res,$i,'unix_group_name')." Already Exists As A File";
-
+               $repositoryPath = 
$maincvsroot.db_result($res,$i,'unix_group_name');
+               if (is_dir($repositoryPath)) {
+                       $writersContent = '';
+                       $readersContent = '';
+                       $passwdContent = '';
+                       if(db_result($res,$i,'enable_anoncvs')) {
+                               $repositoryMode = 2775;
+                               if (db_result($res,$i,'enable_pserver')) {
+                                       $readersContent = 
'anonymous::anonymous';
+                                       $passwdContent = 
'anonymous:\$1\$0H\$2/LSjjwDfsSA0gaDYY5Df/:anonymous';
+                               }
+                       } else {
+                               $repositoryMode = 2770;
+                       }
+                       chmod($repositoryPath, $repositoryMode);
+                       writeFile($repositoryPath.'/CVSROOT/writers', 
$writersContent);
+                       writeFile($repositoryPath.'/CVSROOT/readers', 
$readersContent);
+                       writeFile($repositoryPath.'/CVSROOT/passwd', 
$passwdContent);
+               } elseif (is_file($repositoryPath)) {
+                       $err .= $repositoryPath.' already exists as a file';
                } else {
-
-                       system("./cvscreate.sh 
".db_result($res,$i,'unix_group_name')." 
".(db_result($res,$i,'group_id')+50000));
-
+                       system('./cvscreate.sh 
'.db_result($res,$i,'unix_group_name').' 
'.(db_result($res,$i,'group_id')+50000).' 
'.db_result($res,$i,'enable_anoncvs').' '.db_result($res,$i,'enable_pserver'));
                }
        }
 }

Index: cvscreate.sh
===================================================================
RCS file: /cvsroot/gforge/gforge/cronjobs/cvs-cron/cvscreate.sh,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- cvscreate.sh        25 Apr 2003 17:09:50 -0000      1.3
+++ cvscreate.sh        13 Apr 2004 20:28:33 -0000      1.4
@@ -1,55 +1,63 @@
 #!/bin/sh
 echo ""
 echo "CVS Repository Tool"
-echo "(c)1999 SourceForge Development Team"
+echo "Portions (c)1999 SourceForge Development Team"
+echo "The rest (c)2004 Guillaume Smet"
 echo "Released under the GPL, 1999"
 echo ""
 
 # if no arguments, print out help screen
-if test $# -lt 2; then 
+if test $# -lt 4; then 
        echo "usage:"
-       echo "  cvscreate.sh [repositoryname] [groupid]"
+       echo "  cvscreate.sh [repositoryname] [groupid] [isanonymousenabled] 
[ispserverenabled]"
        echo ""
        exit 1 
 fi
 
-# make sure this repository doesn't already exist
-if [ -d /cvsroot/$1 ] ; then
-       echo "$1 already exists."
-       echo ""
-       exit 1
-fi
-
-# first create the repository
-mkdir /cvsroot/$1
-cvs -d/cvsroot/$1 init
-
-# make it group writable
-chmod 775 /cvsroot/$1
-
-# import default directory, with default cvs.txt
-#mkdir $1
-#cp cvs.txt $1
-#cd $1
-#cvs -d/cvsroot/$1 import -m "SourceForge CVStool creation" $1 SourceForge 
start       
-#rm cvs.txt
-#cd ..
-#rmdir $1
+repositoryname=$1
+repositorypath=/cvsroot/$1
+groupid=$2
+isanonymousenabled=$3
+ispserverenabled=$4
 
-# turn off pserver writers, on anonymous readers
-echo "" > /cvsroot/$1/CVSROOT/writers
-echo "anonymous::anonymous" > /cvsroot/$1/CVSROOT/readers
-echo "anonymous:\$1\$0H\$2/LSjjwDfsSA0gaDYY5Df/:anonymous" > 
/cvsroot/$1/CVSROOT/passwd 
+function setPserverAccess() {
+       writers=""
+       readers=""
+       passwd=""
+       if [[ $isanonymousenabled -eq 1 && $ispserverenabled -eq 1 ]] ; then
+               readers="anonymous::anonymous"
+               passwd="anonymous:\$1\$0H\$2/LSjjwDfsSA0gaDYY5Df/:anonymous"
+       fi
+       echo $writers > $repositorypath/CVSROOT/writers
+       echo $readers > $repositorypath/CVSROOT/readers
+       echo $passwd > $repositorypath/CVSROOT/passwd
+}
 
-# setup loginfo to make group ownership every commit
-echo "ALL chgrp -R $1 /cvsroot/$1" > /cvsroot/$1/CVSROOT/loginfo
-echo "" > /cvsroot/$1/CVSROOT/val-tags
-chmod 664 /cvsroot/$1/CVSROOT/val-tags
+function setRepositoryAccess() {
+       if [ $isanonymousenabled -eq 1 ] ; then
+               # make the repository user and group writable and world readable
+               chmod 2775 $repositorypath
+       else
+               # make the repository user and group writable but not 
accessible to other users
+               chmod 2770 $repositorypath
+       fi
+}
 
-# set group ownership, anonymous group user 
-chown -R nobody:$2 /cvsroot/$1
-#cat /etc/passwd | grep -v anoncvs_$1 > newpasswd 
-#cp newpasswd /etc/passwd
-#rm -f newpasswd
-#/usr/sbin/adduser -M -g $2 -d/cvsroot/$1 -s /bin/false -n anoncvs_$1
+function createRepository() {
+       mkdir $repositorypath
+       setRepositoryAccess
+       cvs -d$repositorypath init
+       setPserverAccess
+       echo "" > $repositorypath/CVSROOT/val-tags
+       chmod 664 $repositorypath/CVSROOT/val-tags
+       chown -R nobody:$groupid $repositorypath
+}
 
+if [ -d $repositorypath ] ; then
+       echo "$repositoryname already exists."
+       setRepositoryAccess
+       setPserverAccess
+       echo ""
+else
+       createRepository
+fi





reply via email to

[Prev in Thread] Current Thread [Next in Thread]