]> Untitled Git - git4ai.git/commitdiff
Cgi script for showing list of all available repos
authorNikolay Shaplov <dhyan@nataraj.su>
Sun, 7 Jun 2026 16:49:52 +0000 (16:49 +0000)
committerNikolay Shaplov <dhyan@nataraj.su>
Sun, 7 Jun 2026 16:49:52 +0000 (16:49 +0000)
cgi/git4ai-repos.pl [new file with mode: 0755]
conf/nginx/git4ai

diff --git a/cgi/git4ai-repos.pl b/cgi/git4ai-repos.pl
new file mode 100755 (executable)
index 0000000..4dbf1af
--- /dev/null
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+my $GIT_ROOT = '/var/lib/git';
+my $BASE_URL = 'https://gitweb.nataraj.world';
+
+print "Content-Type: text/html; charset=utf-8\r\n";
+print "Cache-Control: no-store, no-cache, must-revalidate\r\n";
+print "\r\n";
+
+opendir(my $dh, $GIT_ROOT) or die "Cannot open $GIT_ROOT: $!";
+my @repos = sort grep { /\.git$/ && -d "$GIT_ROOT/$_" } readdir($dh);
+closedir($dh);
+
+print <<HTML;
+<!DOCTYPE html>
+<html>
+<head><meta charset="utf-8">
+<title>git repositories</title>
+</head>
+<body>
+<h2>git repositories</h2>
+<ul>
+HTML
+
+for my $repo (@repos) {
+    my $branches_url = "$BASE_URL/git4ai-branches/$repo";
+    print "<li><a href=\"$branches_url\">$repo</a></li>\n";
+}
+
+print "</ul>\n</body></html>\n";
index c105b5c50a9f93f137b87680985be72114c7b961..b045aac70f08553fd5d5357d3bbf83521337b258 100644 (file)
@@ -5,6 +5,7 @@ map $uri $git4ai_script {
     ~^/git4ai-log/      /srv/cgi/git4ai-log.pl;
     ~^/git4ai-ls-tree/  /srv/cgi/git4ai-ls-tree.pl;
     ~^/git4ai-branches/ /srv/cgi/git4ai-branches.pl;
+    ~^/git4ai-repos/    /srv/cgi/git4ai-repos.pl;
     ~^/git4ai/          /srv/cgi/git4ai.pl;
 }
 
@@ -86,6 +87,11 @@ location ~ "^/git4ai-branches/([^/]+)$" {
     add_header Cache-Control "no-store" always;
 }
 
+location ~ "^/git4ai-repos$" {
+    return 302 https://gitweb.nataraj.world/git4ai-repos/-/-/-/-/$request_id;
+    add_header Cache-Control "no-store" always;
+}
+
 #                           repo             branch             id                 offset     nonce
 location ~ "^/git4ai[^/]*/([a-zA-Z0-9._-]+)/([a-zA-Z0-9._-]+|-)/([0-9a-f]{4,40}|-)/([0-9]+|-)(?:/([a-zA-Z0-9]+))?$" {
     set $git_repo    $1;