[Fusionforge-commits] FusionForge branch Branch_5_3 updated. 8cf969c68a586aacb8afba6a35cbfe160a4b743d

Sylvain Beucler beuc-inria at fusionforge.org
Thu Apr 3 17:50:06 CEST 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "FusionForge".

The branch, Branch_5_3 has been updated
       via  8cf969c68a586aacb8afba6a35cbfe160a4b743d (commit)
      from  0bbda4c07c4a7b466a0bcb7d944e751628d238b8 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 8cf969c68a586aacb8afba6a35cbfe160a4b743d
Author: Sylvain Beucler <sylvain.beucler at inria.fr>
Date:   Thu Apr 3 17:50:02 2014 +0200

    Add utility to split logs for each project website

diff --git a/src/utils/httpd_log_demux.php b/src/utils/httpd_log_demux.php
new file mode 100755
index 0000000..a71f2b2
--- /dev/null
+++ b/src/utils/httpd_log_demux.php
@@ -0,0 +1,57 @@
+#!/usr/bin/php
+<?php
+/**
+ * httpd log demultiplexer
+ *
+ * Copyright (C) 2014  Inria (Sylvain Beucler)
+ *
+ * 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 Licence, 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 FusionForge; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+/**
+ * Separate logs for each project homepages.
+ * Best used with mod_vhost_alias and a shared CustomLog directive.
+ * Not creating log directories because of faked hostnames.
+ */
+
+if (count($argv) < 3) {
+	echo "Usage: {$argv[0]} dir_template project_pregexp\n";
+	echo "   ex: CustomLog \"||{$argv[0]} /home/groups/%/logs/access.log /([-_a-zA-Z0-9]+)\.yourforge\.tld/\" combined\n";
+        exit(1);
+}
+$dir_template   = $argv[1];
+$project_regexp = $argv[2];
+
+$stdin = fopen('php://stdin', 'r') or die("Can't read standard input.");
+
+while(($line = fgets($stdin)) !== false) {
+  if (!preg_match($project_regexp, $line, $matches)) {
+    error_log("httpd_log_demux: line doesn't match project_pregexp: $line");
+  } else {
+    $project = $matches[1];
+    if (!preg_match('/^[a-z0-9][-a-z0-9_\.]+\z/', $project)) {  // project name, or domain name if DNS alias
+      error_log("httpd_log_demux: project name is invalid: '$project'");
+    } else {
+      $logfile = str_replace('%', $project, $dir_template);
+      $f = fopen($logfile, 'a');
+      if ($f != null) {
+	fwrite($f, $line);
+	fclose($f);
+      }
+    }
+  }
+}
+
+fclose($stdin);

-----------------------------------------------------------------------

Summary of changes:
 src/utils/httpd_log_demux.php |   57 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)
 create mode 100755 src/utils/httpd_log_demux.php


hooks/post-receive
-- 
FusionForge



More information about the Fusionforge-commits mailing list