Git Repositories

add git_web_root parameter
authorCyrille Pontvieux <jrd@enialis.net>
Tue, 25 Nov 2014 02:20:37 +0000 (03:20 +0100)
committerCyrille Pontvieux <jrd@enialis.net>
Tue, 25 Nov 2014 02:22:01 +0000 (03:22 +0100)
21 files changed:
.gitignore
homegit/gitrepo.sh
install.sh
src/account.php
src/admin-users.php
src/config.inc.php.example
src/controller.php
src/disconnect.php
src/header.inc.php
src/include.inc.php
src/nav.inc.php
src/repo-del.php
src/repo-edit.php
src/repo-histo.php
src/repo-info.php
src/repo-list.php
src/repo-show-file.php
src/repo-user-del.php
src/repo-users.php
src/user-del-key.php
src/user-del.php

index f8d728c..ece41d5 100644 (file)
@@ -1 +1,4 @@
-www
+git-master
+nginx.conf
+apache2.conf
+git-daemon.example
index 98f28e6..90d30d5 100755 (executable)
@@ -377,7 +377,8 @@ EOF
   fi
   if [ ! -f "$NAME".git/.sshwrapper ]; then
     cat <<'EOF' > "$NAME".git/.sshwrapper
-ssh \
+#!/bin/sh
+exec ssh \
   -o UserKnownHostsFile=/dev/null \
   -o StrictHostKeyChecking=no \
   -o LogLevel=ERROR \
index 625610f..0fa4724 100755 (executable)
@@ -4,22 +4,29 @@ cd "$(dirname "$0")"
 
 usage() {
   cat <<EOF
-install.sh -h git_host -u git_user -d git_home_dir -t web_title -w web_user -g git_web_path
+install.sh -h git_host -r git_web_root -u git_user -d git_home_dir -t web_title -w web_user -g gitweb_path -s [nginx|apache2]
   git_host: hostname to connect to in ssh for git access
+  git_web_root: root path relative to git_host to access the webapp. Empty for virtual host.
+                if not empty, the root should end with a slash.
   git_user: user to connect to in ssh for git access
   git_home_dir: where is the home dir of the git user
   web_title: title of the web site
   web_user: user running web site, usually apache or www or nobody
-  git_web_path: if specified, indicate the path (relative to this site) to the git web cgi files
+  web_path: unix absolute path where to install the web site
+  gitweb_path: if specified, indicate the path (relative to this git_web_root) to the git web cgi files
+  server_type: nginx or apache2
 EOF
 }
 GIT_HOST=''
+GIT_WEB_ROOT=''
 GIT_USER=''
 GIT_HOME_DIR=''
 WEB_TITLE=''
 WEB_USER=''
-GIT_WEB_PATH=''
-opts=$(getopt -n install.sh -o 'h:u:d:t:w:g:' -- "$@")
+WEB_PATH=''
+GITWEB_PATH=''
+SERVER_TYPE=''
+opts=$(getopt -n install.sh -o 'h:r:u:d:t:w:p:g:s:' -- "$@")
 if [ $? -ne 0 ]; then
   usage
   exit 1
@@ -31,6 +38,10 @@ while [ -n "$1" ] && [ "$1" != "--" ]; do
       GIT_HOST="$2"
       shift 2
       ;;
+    -r)
+      GIT_WEB_ROOT="$2"
+      shift 2
+      ;;
     -u)
       GIT_USER="$2"
       shift 2
@@ -47,8 +58,16 @@ while [ -n "$1" ] && [ "$1" != "--" ]; do
       WEB_USER="$2"
       shift 2
       ;;
+    -p)
+      WEB_PATH=$(readlink -f "$2")
+      shift 2
+      ;;
     -g)
-      GIT_WEB_PATH="$2"
+      GITWEB_PATH="$2"
+      shift 2
+      ;;
+    -s)
+      SERVER_TYPE="$2"
       shift 2
       ;;
     *)
@@ -57,7 +76,7 @@ while [ -n "$1" ] && [ "$1" != "--" ]; do
       exit 1
   esac
 done
-if [ -z "$GIT_HOST" ] || [ -z "$GIT_USER" ] || [ -z "$GIT_DIR" ] || [ -z "$WEB_TITLE" ] || [ -z "$WEB_USER" ]; then
+if [ -z "$GIT_HOST" ] || [ -z "$GIT_USER" ] || [ -z "$GIT_DIR" ] || [ -z "$WEB_TITLE" ] || [ -z "$WEB_USER" ] || (echo "$WEB_PATH"|grep -qv '^/') || ([ "$SERVER_TYPE" != "nginx" ] && [ "$SERVER_TYPE" != "apache2" ]); then
   usage
   exit 1
 fi
@@ -90,83 +109,98 @@ sed "s,WEB_USER,$WEB_USER,; s,GIT_USER,$GIT_USER,; s,GIT_DIR,$GIT_DIR,;" sudoers
 chmod ug=r,o= /etc/sudoers.d/git
 
 cp -r homegit/* $GIT_DIR/
-
-cp -r src www
-cat <<EOF > www/config.inc.php
+mkdir -p $WEB_PATH/${GIT_WEB_ROOT}
+cp -r src/* src/.??* $WEB_PATH/${GIT_WEB_ROOT}
+cat <<EOF > $WEB_PATH/${GIT_WEB_ROOT}config.inc.php
 <?php
 \$title = '$WEB_TITLE';
 \$githost = '$GIT_HOST';
+\$gitwebroot = '$GIT_WEB_ROOT';
 \$gituser = '$GIT_USER';
 \$gitdir = '$GIT_DIR';
-\$gitwebpath = '$GIT_WEB_PATH';
+\$gitwebpath = '$GITWEB_PATH';
 EOF
 
-cat <<EOF
-
-** Installation complete. **"
+if [ -n "$GITWEB_PATH" ]; then
+  wget https://github.com/git/git/archive/master.tar.gz -O - | tar xzf -
+  cd git-master/gitweb
+  make prefix=/usr GITWEB_PROJECTROOT=$GIT_DIR GITWEB_PROJECT_MAXDEPTH=50 GITWEB_EXPORT_OK=git-daemon-export-ok GITWEB_HOME_LINK_STR=/$GIT_WEB_ROOT GITWEB_SITENAME="$WEB_TITLE" gitwebdir=$WEB_PATH/${GIT_WEB_ROOT}${GITWEB_PATH} install
+fi
 
-Please copy the www folder to your website folder.
+chown -R $WEB_USER: $WEB_PATH/${GIT_WEB_ROOT}
 
-If you want to enable anonymous read-only on the repositories, run this:
-  \$ git daemon --listen=0.0.0.0 --reuseaddr --base-path=$GIT_DIR --user=$WEB_USER --detach $GIT_DIR
+cat <<EOF > git-daemon.example
+# If you want to enable anonymous read-only git protocol on the repositories, run this:
+git daemon --listen=0.0.0.0 --reuseaddr --base-path=$GIT_DIR --user=$WEB_USER --detach $GIT_DIR
+EOF
 
-If you want to install gitweb, run this:
-  \$ wget 'http://git.kernel.org/?p=git/git.git;a=snapshot;h=HEAD;sf=tgz' -O gitweb.tar.gz
-  \$ tar xf gitweb.tar.gz
-  \$ cd git-HEAD-*/gitweb
-  \$ su
-  # make prefix=/usr GITWEB_PROJECTROOT=$GIT_DIR GITWEB_PROJECT_MAXDEPTH=50 GITWEB_EXPORT_OK=git-daemon-export-ok GITWEB_HOME_LINK_STR=/ GITWEB_SITENAME="$WEB_TITLE" gitwebdir=/var/www/$GIT_WEB_PATH install
-for example. Of course you need to adjust the path of the gitwebdir to where you install gitweb and this site.
-Here is the configuration to add to your virtual host apache file:
-  <Directory "/var/www/$GIT_WEB_PATH">
-    Options ExecCGI +FollowSymlinks +SymLinksIfOwnerMatch
-    AllowOverride All
-    Order allow,deny
-    Allow from all
-    AddHandler cgi-script cgi
-    DirectoryIndex gitweb.cgi
-  </Directory>
-For nginx, here is one configuration snippet:
-  server {
-    listen       localhost:80;
-    server_name  $GIT_HOST;
-    root   /var/www/$GIT_WEB_PATH;
-    index  controller.php;
-    access_log  /var/www/$GIT_WEB_PATH/../logs/access.log combined;
-    error_log /var/www/$GIT_WEB_PATH/../logs/error.log;
-    location / {
-      try_files \$uri \$uri/ /controller.php?\$args;
-    }
-    location ~ \.php$ {
-      # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9001
-      fastcgi_pass   unix:/var/run/php-fpm.sock;
-      include        fastcgi_params;
-      fastcgi_param  SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
-    }
-    location /gitweb/ {
-      gzip off;
-      index          gitweb.cgi;
-      include        fastcgi_params;
-      fastcgi_param  SCRIPT_NAME gitweb.cgi; 
-      fastcgi_param  SCRIPT_FILENAME /var/www/$GIT_WEB_PATH/gitweb/gitweb.cgi;
-      fastcgi_param  GITWEB_CONFIG /etc/gitweb.conf;
-      if (\$uri ~ "/gitweb/gitweb.cgi") {
-        fastcgi_pass   unix:/var/run/fcgiwrap.sock;
-      }
-    }
-    location ~ /git(/.*) {
-      gzip off;
-      # Set chunks to unlimited, as the body's can be huge
-      client_max_body_size 0;
-      fastcgi_pass unix:/var/run/fcgiwrap.sock;
-      include fastcgi_params;
-      fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend;
-      fastcgi_param GIT_HTTP_EXPORT_ALL "";
-      fastcgi_param GIT_PROJECT_ROOT $GIT_DIR;
-      fastcgi_param PATH_INFO \$1;
+if [ "$SERVER_TYPE" = "nginx" ]; then
+  cat <<EOF > ${SERVER_TYPE}.conf
+server {
+  listen       localhost:80;
+  server_name  $GIT_HOST;
+  root   $WEB_PATH/$GIT_WEB_ROOT;
+  access_log  $WEB_PATH/../logs/access.log combined;
+  error_log $WEB_PATH/../logs/error.log;
+  location /$GIT_WEB_ROOT {
+    index controller.php;
+    try_files \$uri \$uri/ /controller.php?\$args;
+  }
+  location ~ \.php$ {
+    gzip off
+    fastcgi_pass   unix:/var/run/php-fpm.sock;
+    include        fastcgi_params;
+    fastcgi_param  SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
+  }
+  location ~ ${GIT_WEB_ROOT}/readonly(/.*) {
+    gzip off;
+    # Set chunks to unlimited, as the body's can be huge
+    client_max_body_size 0;
+    fastcgi_pass unix:/var/run/fcgiwrap.sock;
+    include fastcgi_params;
+    fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend;
+    fastcgi_param GIT_HTTP_EXPORT_ALL "";
+    fastcgi_param GIT_PROJECT_ROOT $GIT_DIR;
+    fastcgi_param HOME $GIT_DIR;
+    fastcgi_param PATH_INFO \$1;
+  }
+EOF
+  if [ -n "$GITWEB_PATH" ]; then
+    cat <<EOF >> ${SERVER_TYPE}.conf
+  location /${GIT_WEB_ROOT}${GITWEB_PATH}/ {
+    gzip off;
+    index          gitweb.cgi;
+    include        fastcgi_params;
+    fastcgi_param  SCRIPT_NAME gitweb.cgi; 
+    fastcgi_param  SCRIPT_FILENAME $WEB_PATH/${GIT_WEB_ROOT}${GITWEB_PATH}/gitweb.cgi;
+    fastcgi_param  GITWEB_CONFIG /etc/gitweb.conf;
+    if (\$uri ~ "/${GIT_WEB_ROOT}${GITWEB_PATH}/gitweb.cgi") {
+      fastcgi_pass   unix:/var/run/fcgiwrap.sock;
     }
   }
+EOF
+  fi
+  cat <<EOF >> ${SERVER_TYPE}.conf
+}
+EOF
+else
+  cat <<EOF > ${SERVER_TYPE}.conf
+<!-- Incomplete config sorry -->
+<Directory "$WEB_PATH/${GIT_WEB_ROOT}${GITWEB_PATH}">
+  Options ExecCGI +FollowSymlinks +SymLinksIfOwnerMatch
+  AllowOverride All
+  Order allow,deny
+  Allow from all
+  AddHandler cgi-script cgi
+  DirectoryIndex gitweb.cgi
+</Directory>
+EOF
+fi
+cat <<EOF
+
+** Installation complete in $WEB_PATH **"
+
+A configuration file (${SERVER_TYPE}.conf) has been created for you.
+A git-daemon example is also available in git-daemon.example file.
 
-Have fun ;-)
 EOF
index 6e5347d..66301ff 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 require_once('include.inc.php');
 if (!$logged) {
-  header('Location: /');
+  header('Location: /' . $gitwebroot);
   exit;
 } else {
   $username = $_SESSION['username'];
@@ -44,7 +44,7 @@ foreach ($keys as $key) {
   } else {
     $name = ' — ';
   }
-  $actions = "<a class=\"delete\" href=\"/delete_key/$i\" onclick=\"return confirm('Êtes vous sûr de vouloir supprimer cette clé ?');\">Supprimer</a>";
+  $actions = "<a class=\"delete\" href=\"/{$gitwebroot}delete_key/$i\" onclick=\"return confirm('Êtes-vous sûr de vouloir supprimer cette clé ?');\">Supprimer</a>";
   echo "        <tr><td class=\"keyname\">$name</td><td class=\"key\"><textarea readonly=\"readonly\">$key</textarea></td><td class=\"actions\">$actions</td></tr>\n";
 }
 ?>
index a992a5f..2530d70 100644 (file)
@@ -23,7 +23,7 @@ require('header.inc.php');
 <?php
 $users = gitrepoinfo('list-users');
 foreach ($users as $user) {
-  $actions = "<a class=\"delete\" href=\"/delete_user/$user\" onclick=\"return confirm('Êtes vous sûr de vouloir supprimer l\'utilisateur \'$user\' ?');\">Supprimer</a>";
+  $actions = "<a class=\"delete\" href=\"/{$gitwebroot}delete_user/$user\" onclick=\"return confirm('Êtes-vous sûr de vouloir supprimer l\'utilisateur \'$user\' ?');\">Supprimer</a>";
   echo "        <tr><td class=\"name\">$user</td><td class=\"actions\">$actions</td></tr>\n";
 }
 ?>
index 197d845..93113ba 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 $title = 'git.myhost.com';
 $githost = 'myhost.com';
+$gitwebroot = '';
 $gituser = 'git';
 $gitdir = '/home/git';
 $gitwebpath = 'gitweb';
index 8412960..f94854a 100644 (file)
@@ -1,10 +1,14 @@
 <?php
+require_once('include.inc.php');
 $queryString = $_SERVER['QUERY_STRING'];
 $uri = explode('?', $_SERVER['REQUEST_URI'])[0];
 $request = explode('/', $uri);
-$action = $request[1];
-$actionVars = array_slice($request, 2);
-require_once('include.inc.php');
+$posoffset = substr_count($gitwebroot, '/');
+$action = $request[1 + $posoffset];
+if ($action == 'controller.php') {
+  $action = '';
+}
+$actionVars = array_slice($request, 2 + $posoffset);
 require_once('controller.config.php');
 function call_action($name, $default, $vars) {
   if (empty($name)) {
@@ -18,6 +22,6 @@ function call_action($name, $default, $vars) {
 }
 if (!call_action($action, $defaultAction, $actionVars)) {
   header('HTTP/1.0 404 Not Found');
-  echo "404 Not found.";
+  echo "404 Not found ($action).";
 }
 ?>
index 497e71d..c430b19 100644 (file)
@@ -3,4 +3,4 @@ require_once('include.inc.php');
 session_destroy();
 unset($_SESSION['username']);
 $logged = false;
-header('Location: /');
+header('Location: /' . $gitwebroot);
index 5d85595..1977fc3 100644 (file)
@@ -2,10 +2,10 @@
 <html>
   <head>
     <title><?php echo $title; ?></title>
-    <link rel="stylesheet" href="/style.css" type="text/css" />
-    <link rel="shortcut icon" href="/favicon.png" type="image/png"/>
+    <link rel="stylesheet" href="/<?php echo $gitwebroot;?>style.css" type="text/css" />
+    <link rel="shortcut icon" href="/<?php echo $gitwebroot;?>favicon.png" type="image/png"/>
     <!--[if lt IE 9]>
-    <script src="ie7/IE9.js"></script>
+    <script src="/<?php echo $gitwebroot;?>ie7/IE9.js"></script>
     <![endif]-->
   </head>
   <body>
index d121e42..f56d5a4 100644 (file)
@@ -33,13 +33,13 @@ function isadmin($user) {
 function redirectifnotadmin() {
   global $admin;
   if (!$admin) {
-    header('Location: /');
+    header('Location: /' . $gitwebroot);
     exit;
   }
 }
 
 function auth() {
-  global $errorMsg, $logged, $admin;
+  global $errorMsg, $logged, $admin, $gitwebroot;
   if (isset($_POST['submit_auth'])) {
     $fUsername = $_POST['username'];
     $fPassword = $_POST['password'];
@@ -64,7 +64,7 @@ function auth() {
       // Test si l'utilisateur est admin
       $admin = isadmin($_SESSION['username']);
       // Redirige pour éviter de reposter le formulaire.
-      header('Location: /');
+      header('Location: /' . $gitwebroot);
       exit;
     }
   } else {
index 3244bd4..63c95ca 100644 (file)
@@ -1,9 +1,9 @@
 <div id="nav">
-  <p class="breadcrumbs"><a href="/">Index</a></p>
+<p class="breadcrumbs"><a href="/<?php echo $gitwebroot;?>">Index</a></p>
 <?php
 if ($logged) {
   echo "<p>Vous êtes connecté en tant que <span>" . $_SESSION['username'] . "</span><br/>\n";
-  echo "<a href=\"/account\">Mon compte</a>&nbsp;<a href=\"/disconnect\">Se déconnecter</a></p>\n";
+  echo "<a href=\"/{$gitwebroot}account\">Mon compte</a>&nbsp;<a href=\"/{$gitwebroot}disconnect\">Se déconnecter</a></p>\n";
 } else {
   echo "<div class=\"error\">$errorMsg</div>\n";
   echo <<<EOF
index ab58efc..801a71a 100644 (file)
@@ -2,10 +2,10 @@
 require_once('include.inc.php');
 redirectifnotadmin();
 if (!$logged || empty($_GET['repo'])) {
-  header('Location: /');
+  header('Location: /' . $gitwebroot);
   exit;
 } else {
   $repo = $_GET['repo'];
 }
 $res = gitrepoinfo('destroy', $repo);
-header('Location: /');
+header("Location: /$gitwebroot");
index fbeb8c3..aab0958 100644 (file)
@@ -2,7 +2,7 @@
 require_once('include.inc.php');
 redirectifnotadmin();
 if (empty($_GET['repo'])) {
-  header('Location: /');
+  header('Location: /' . $gitwebroot);
   exit;
 } else {
   $repo = $_GET['repo'];
@@ -45,7 +45,7 @@ if (isset($_POST['submit_repo_desc'])) {
 } else if (isset($_GET['delete']) && $_GET['delete'] == 'syncto') {
   $fUrl = $_GET['url'];
   $res = gitrepoinfo('unsync', $repo, 'to', $fUrl);
-  header("Location: /edit/$repo");
+  header("Location: /{$gitwebroot}edit/$repo");
 } else if (isset($_POST['submit_repo_syncfrom_add'])) {
   $fUrl = $_POST['new-syncfrom-url'];
   $res = gitrepoinfo('sync', $repo, 'from', $fUrl);
@@ -55,7 +55,7 @@ if (isset($_POST['submit_repo_desc'])) {
 } else if (isset($_GET['delete']) && $_GET['delete'] == 'syncfrom') {
   $fUrl = $_GET['url'];
   $res = gitrepoinfo('unsync', $repo, 'from', $fUrl);
-  header("Location: /edit/$repo");
+  header("Location: /{$gitwebroot}edit/$repo");
 }
 $pageTitle = "$title - Configuration de $repo";
 require('header.inc.php');
@@ -114,7 +114,7 @@ require('header.inc.php');
   foreach ($urls as $url) {
     echo "        <tr>\n";
     echo "          <td class=\"name\">$url</td>\n";
-    echo "          <td class=\"actions\"><a class=\"delete\" href=\"?delete=syncto&url=$url\" onclick=\"return confirm('Êtes vous sûr de vouloir supprimer cette url ?');\">Supprimer</a></td>\n";
+    echo "          <td class=\"actions\"><a class=\"delete\" href=\"?delete=syncto&url=$url\" onclick=\"return confirm('Êtes-vous sûr de vouloir supprimer cette url ?');\">Supprimer</a></td>\n";
     echo "        </tr>\n";
   }
 ?>
@@ -149,12 +149,12 @@ require('header.inc.php');
   foreach ($urls as $url) {
     echo "        <tr>\n";
     echo "          <td class=\"name\">$url</td>\n";
-    echo "          <td class=\"actions\"><a class=\"delete\" href=\"?delete=syncfrom&url=$url\" onclick=\"return confirm('Êtes vous sûr de vouloir supprimer cette url ?');\">Supprimer</a></td>\n";
+    echo "          <td class=\"actions\"><a class=\"delete\" href=\"?delete=syncfrom&url=$url\" onclick=\"return confirm('Êtes-vous sûr de vouloir supprimer cette url ?');\">Supprimer</a></td>\n";
     echo "        </tr>\n";
   }
 ?>
       </table>
-      <p>Url to trigger synchronization: <a class="text" href="/post-update.php">post-update.php</a></p>
+      <p>Url to trigger synchronization: <a class="text" href="/<?php echo $gitwebroot;?>post-update.php">post-update.php</a></p>
       <form id="repo-syncfrom-add" action="" method="POST">
         <fieldset>
           <legend>Ajouter une URL depuis laquelle se synchroniser</legend>
index c15e809..57da187 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 require_once('include.inc.php');
 if (empty($_GET['repo'])) {
-  header('Location: /');
+  header('Location: /' . $gitwebroot);
   exit;
 } else {
   $repo = $_GET['repo'];
@@ -10,7 +10,7 @@ $pageTitle = "$title - $repo";
 require('header.inc.php');
 ?>
     <div id="repo-toolbar">
-      <a href="/info/<?php echo $repo; ?>">Info</a>&nbsp;<a href="/histo/<?php echo $repo; ?>">Historique</a>
+      <a href="/<?php echo $gitwebroot;?>info/<?php echo $repo; ?>">Info</a>&nbsp;<a href="/<?php echo $gitwebroot;?>histo/<?php echo $repo; ?>">Historique</a>
     </div>
     <div id="histo">
       <div class="invite">Le graphe d'historique de <span><?php echo $repo; ?></span> :</div>
index 82993ed..d4e9822 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 require_once('include.inc.php');
 if (empty($_GET['repo'])) {
-  header('Location: /');
+  header('Location: /' . $gitwebroot);
   exit;
 } else {
   $repo = $_GET['repo'];
@@ -34,7 +34,7 @@ if ($tags[0] == "") { $tags = array(); }
 exec("GIT_DIR=$gitdir/$repo.git git ls-tree -r --name-only -z refs/heads/$selectedBranch | xargs --null -if echo f", $files);
 ?>
     <div id="repo-toolbar">
-      <a href="/info/<?php echo $repo; ?>">Info</a>&nbsp;<a href="/histo/<?php echo $repo; ?>">Historique</a>
+      <a href="/<?php echo $gitwebroot;?>info/<?php echo $repo; ?>">Info</a>&nbsp;<a href="/<?php echo $gitwebroot;?>histo/<?php echo $repo; ?>">Historique</a>
     </div>
     <div id="repoinfo">
       <div class="info">
@@ -45,7 +45,7 @@ exec("GIT_DIR=$gitdir/$repo.git git ls-tree -r --name-only -z refs/heads/$select
         <div class="branches">
           <h2>Branches</h2>
           <label for"selected-branch">Branche actuelle :</label>
-          <select id="selected-branch" size="1" onchange="br=this.options[this.selectedIndex].value; location='/info/<?php echo $repo; ?>/' + br;">
+          <select id="selected-branch" size="1" onchange="br=this.options[this.selectedIndex].value; location='/<?php echo $gitwebroot;?>info/<?php echo $repo; ?>/' + br;">
             <?php foreach ($branchesMap as $branch => $def) {
               echo "<option value=\"$branch\"";
               if ($branch == $selectedBranch) {
@@ -62,7 +62,7 @@ exec("GIT_DIR=$gitdir/$repo.git git ls-tree -r --name-only -z refs/heads/$select
                 } else {
                   $branchHtml = $branch;
                 }
-                echo "<li>$branchHtml <a class=\"image\" href=\"/download_branch/$repo/$branch/$repo-$branch.tar.gz\"><img src=\"/package.png\"/></a></li>\n";
+                echo "<li>$branchHtml <a class=\"image\" href=\"/{$gitwebroot}download_branch/$repo/$branch/$repo-$branch.tar.gz\"><img src=\"/{$gitwebroot}package.png\"/></a></li>\n";
               }
             ?>
           </ul>      
@@ -72,7 +72,7 @@ exec("GIT_DIR=$gitdir/$repo.git git ls-tree -r --name-only -z refs/heads/$select
           <ul>
             <?php
               foreach ($tags as $tag) {
-                echo "<li>$tag <a class=\"image\" href=\"/download/$repo/$repo-$tag.tar.gz\"><img src=\"/package.png\"/></a></li>\n";
+                echo "<li>$tag <a class=\"image\" href=\"/{$gitwebroot}download/$repo/$repo-$tag.tar.gz\"><img src=\"/{$gitwebroot}package.png\"/></a></li>\n";
               }
             ?>
           </ul>      
@@ -82,7 +82,7 @@ exec("GIT_DIR=$gitdir/$repo.git git ls-tree -r --name-only -z refs/heads/$select
           <div class="rw"><?php echo "$gituser@$githost:$repo.git"; ?></div>
           <?php if (file_exists("$gitdir/$repo.git/git-daemon-export-ok")) { ?>
             <div class="ro-git"><?php echo "git://$githost/$repo.git"; ?></div>
-            <?php $httpurl = sprintf('%s://%s/git/%s.git', isset($_SERVER['HTTPS']) ? 'https' : 'http', $_SERVER['HTTP_HOST'], $repo); ?>
+            <?php $httpurl = sprintf("%s://%s/{$gitwebroot}readonly/%s.git", isset($_SERVER['HTTPS']) ? 'https' : 'http', $_SERVER['HTTP_HOST'], $repo); ?>
             <div class="ro-http"><?php echo "$httpurl"; ?></div>
           <?php } ?>
         </div>
@@ -93,9 +93,9 @@ exec("GIT_DIR=$gitdir/$repo.git git ls-tree -r --name-only -z refs/heads/$select
           <?php foreach ($files as $file) {
             $fileEncoded = urlencode($file);
             $fileHtml = htmlspecialchars($file);
-            echo "<a class=\"file-dl\" title=\"Télécharger $fileHtml\" href=\"/download_file/$repo/$selectedBranch/$fileEncoded/dl\"><strong>↓</strong>";
+            echo "<a class=\"file-dl\" title=\"Télécharger $fileHtml\" href=\"/{$gitwebroot}download_file/$repo/$selectedBranch/$fileEncoded/dl\"><strong>↓</strong>";
             echo "&nbsp;";
-            echo "<a class=\"file-show\" target=\"_blank\" title=\"Afficher $fileHtml\" href=\"/show_file/$repo/$selectedBranch/$fileEncoded/show\">$fileHtml</a></a><br/>\n";
+            echo "<a class=\"file-show\" target=\"_blank\" title=\"Afficher $fileHtml\" href=\"/{$gitwebroot}show_file/$repo/$selectedBranch/$fileEncoded/show\">$fileHtml</a></a><br/>\n";
           } ?>
         </div>
       </div>
index a36b53d..17ef640 100644 (file)
@@ -45,10 +45,10 @@ foreach ($files as $file) {
         $membre = "Non";
       }
     }
-    $actions = "<a href=\"/info/$proj\">Info</a>&nbsp;<a href=\"/users/$proj\">Utilisateurs</a>&nbsp;<a href=\"/histo/$proj\">Historique</a>";
+    $actions = "<a href=\"/{$gitwebroot}info/$proj\">Info</a>&nbsp;<a href=\"/{$gitwebroot}users/$proj\">Utilisateurs</a>&nbsp;<a href=\"/{$gitwebroot}histo/$proj\">Historique</a>";
     if ($admin) {
-      $actions .= "&nbsp;<a class=\"edit\" href=\"/edit/$proj\">Éditer</a>";
-      $actions .= "&nbsp;<a class=\"delete\" href=\"/delete/$proj\" onclick=\"return confirm('Êtes vous sûr de vouloir supprimer le dépôt \'$proj\' ?');\">Supprimer</a>";
+      $actions .= "&nbsp;<a class=\"edit\" href=\"/{$gitwebroot}edit/$proj\">Éditer</a>";
+      $actions .= "&nbsp;<a class=\"delete\" href=\"/{$gitwebroot}delete/$proj\" onclick=\"return confirm('Êtes-vous sûr de vouloir supprimer le dépôt \'$proj\' ?');\">Supprimer</a>";
     }
     $name = $proj;
     $exportok = file_exists("$gitdir/$file/git-daemon-export-ok");
@@ -59,7 +59,7 @@ foreach ($files as $file) {
     echo "<div class=\"rw\">$gituser@$githost:$file</div>";
     if ($exportok) {
       echo "<div class=\"ro-git\">git://$githost/$file</div>";
-      $httpurl = sprintf('%s://%s/git/%s', isset($_SERVER['HTTPS']) ? 'https' : 'http', $_SERVER['HTTP_HOST'], $file);
+      $httpurl = sprintf("%s://%s/{$gitwebroot}readonly/%s", isset($_SERVER['HTTPS']) ? 'https' : 'http', $_SERVER['HTTP_HOST'], $file);
       echo "<div class=\"ro-http\">$httpurl</div>";
     }
     echo "</td><td class=\"member\">$membre</td><td class=\"actions\">$actions</td></tr>\n";
@@ -89,6 +89,6 @@ foreach ($files as $file) {
         </table>
       </fieldset>
     </form>
-    <a href="/manage_users">Gestion des utilisateurs</a>
+    <a href="/<?php echo $gitwebroot;?>manage_users">Gestion des utilisateurs</a>
 <?php } ?>
 <?php require('footer.inc.php'); ?>
index 2269083..fd80b89 100644 (file)
@@ -23,7 +23,7 @@ if (empty($_GET['filename'])) {
     if ($mime = 'inode/x-empty') {
       echo "<h3>Le fichier $filenameHtml est vide.</h3>";
     } else {
-      echo "<h3>Impossible d'afficher ${filenameHtml}.</h3><div><a href=\"/download_file/$repo/$branch/{$_GET['filename']}\">Cliquez ici pour le télécharger</a></div>";
+      echo "<h3>Impossible d'afficher ${filenameHtml}.</h3><div><a href=\"/{$gitwebroot}download_file/$repo/$branch/{$_GET['filename']}\">Cliquez ici pour le télécharger</a></div>";
     }
     echo "</body></html>";
   }
index e1e2e5a..90b24f1 100644 (file)
@@ -2,11 +2,11 @@
 require_once('include.inc.php');
 redirectifnotadmin();
 if (!$logged || empty($_GET['repo']) || empty($_GET['user'])) {
-  header('Location: /');
+  header('Location: /' . $gitwebroot);
   exit;
 } else {
   $repo = $_GET['repo'];
   $user = $_GET['user'];
 }
 $res = gitrepoinfo('del-user', $repo, $user);
-header("Location: /users/$repo");
+header("Location: /{$gitwebroot}users/$repo");
index 4a5100d..08237e9 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 require_once('include.inc.php');
 if (empty($_GET['repo'])) {
-  header('Location: /');
+  header('Location: /' . $gitwebroot);
   exit;
 } else {
   $repo = $_GET['repo'];
@@ -29,7 +29,7 @@ $users = gitrepoinfo('show-users', $repo);
 foreach ($users as $user) {
   $actions = ' — ';
   if ($admin) {
-    $actions = "<a href=\"/remove_user/$repo/$user\">Retirer</a>";
+    $actions = "<a href=\"/{$gitwebroot}remove_user/$repo/$user\">Retirer</a>";
   }
   echo "        <tr><td class=\"name\">$user</td><td class=\"actions\">$actions</td></tr>\n";
 }
index ff84097..0c997ad 100644 (file)
@@ -1,11 +1,11 @@
 <?php
 require_once('include.inc.php');
 if (!$logged || empty($_GET['pos'])) {
-  header('Location: /');
+  header('Location: /' . $gitwebroot);
   exit;
 } else {
   $username = $_SESSION['username'];
   $pos = $_GET['pos'];
 }
 $res = gitrepoinfo('del-key', $username, $pos);
-header('Location: /account');
+header("Location: /${gitwebroot}account");
index fc72fb2..120dd4b 100644 (file)
@@ -2,10 +2,10 @@
 require_once('include.inc.php');
 redirectifnotadmin();
 if (!$logged || empty($_GET['user'])) {
-  header('Location: /');
+  header('Location: /' . $gitwebroot);
   exit;
 } else {
   $user = $_GET['user'];
 }
 $res = gitrepoinfo('destroy-user', $user);
-header('Location: /admin_users');
+header("Location: /${gitwebroot}admin_users");