git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] gitweb: use action dispatcher for non-project actions, too.

From
Martin Waitz <tali@admingilde.org>
Date
Aug 16, 2006, 22:28 UTC
Message-ID
<11557673281583-git-send-email-tali@admingilde.org>
In-Reply-To
<11557673262714-git-send-email-tali@admingilde.org>

Allow to use the global action dispatcher for all actions by introducing "/actions". If no project directory is given then a / is prepended to the action and the normal dispatcher is called. Project list and OPML generation are now hooked into the list as "/summary" and "/opml".

As "/" is not an allowed character in actions accepted through the CGI parameters, it is still ensured that no normal action can be called without giving a valid project directory.

Signed-off-by: Martin Waitz <tali@admingilde.org>
---
 gitweb/gitweb.perl |   17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 3b6333c..9a7faab 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -84,11 +84,6 @@ if (defined $action) {
 	if ($action =~ m/[^0-9a-zA-Z\.\-_]/) {
 		die_error(undef, "Invalid action parameter");
 	}
-	# action which does not check rest of parameters
-	if ($action eq "opml") {
-		git_opml();
-		exit;
-	}
 }
 
 our $order = $cgi->param('o');
@@ -113,9 +108,6 @@ if (defined $project) {
 		die_error(undef, "No such project");
 	}
 	$ENV{'GIT_DIR'} = "$projectroot/$project";
-} else {
-	git_project_list();
-	exit;
 }
 
 our $file_name = $cgi->param('f');
@@ -185,12 +177,19 @@ my %actions = (
 	"search" => \&git_search,
 	"shortlog" => \&git_shortlog,
 	"summary" => \&git_summary,
+	"/summary" => \&git_project_list,
+	"/opml" => \&git_opml,
 	"tag" => \&git_tag,
 	"tags" => \&git_tags,
 	"tree" => \&git_tree,
 );
 
-$action = 'summary' if (!defined($action));
+# default action
+$action ||= 'summary';
+
+#only allow non-/ actions if we have a project directory
+$action = "/$action" if !defined($project);
+
 if (!defined($actions{$action})) {
 	die_error(undef, "Unknown action");
 }
-- 
1.4.2.rc2.gf055
Previous: Martin WaitzNext: Junio C Hamano
Message 6 of 25 in “gitweb: continue consolidation of URL generation.”
  1. gitweb: continue consolidation of URL generation.Martin Waitz, Aug 16, 2006
  2. gitweb: use common parameter parsing and generation for "o", too.Martin Waitz, Aug 16, 2006
  3. gitweb: support for "fp" parameter.Martin Waitz, Aug 16, 2006
  4. gitweb: support for / as home_link.Martin Waitz, Aug 16, 2006
  5. gitweb: fix project list if PATH_INFO=="/".Martin Waitz, Aug 16, 2006
  6. gitweb: use action dispatcher for non-project actions, too.Martin Waitz, Aug 16, 2006
  7. Junio C HamanoAug 17, 2006
  8. Carl WorthAug 17, 2006
  9. Petr BaudisAug 18, 2006
  10. Carl WorthAug 18, 2006
  11. Jakub NarebskiAug 18, 2006
  12. Petr BaudisAug 18, 2006
  13. Martin WaitzAug 17, 2006
  14. Jakub NarebskiAug 17, 2006
  15. Martin WaitzAug 17, 2006
  16. Jakub NarebskiAug 17, 2006
  17. Jakub NarebskiAug 17, 2006
  18. Martin WaitzAug 17, 2006
  19. Jakub NarebskiAug 17, 2006
  20. Martin WaitzAug 18, 2006
  21. Jakub NarebskiAug 19, 2006
  22. Martin WaitzAug 19, 2006
  23. Jakub NarebskiAug 19, 2006
  24. Junio C HamanoAug 17, 2006
  25. Martin WaitzAug 17, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.