]> git.xolatile.top Git - gorillanest.git/commitdiff
I'm Not Actually Schizophrenic
authorEmil Williams <emilemilemil@cock.li>
Sun, 17 Aug 2025 12:10:58 +0000 (12:10 +0000)
committerEmil Williams <emilemilemil@cock.li>
Sun, 17 Aug 2025 12:10:58 +0000 (12:10 +0000)
gorillanest
gorillanest.sqlite3 [new file with mode: 0644]

index f67638bf81cce4421b74c63a34af645970079e49..2160c6caa638f054502e7c3cbd569b019337cde0 100755 (executable)
@@ -17,15 +17,22 @@ sub info {
 }
 
 sub GN::index { # /
-
+    my ($template, $root, $dataref) = @_;
+    my %data = %$dataref;
+    opendir my $dir, $root or die "Cannot open directory: $!";
+    my @files = readdir $dir;
+    info(@files);
+    closedir $dir;
 }
 
 sub GN::user { # /$username/
-
+    my ($template, $root, $dataref) = @_;
+    my %data = %$dataref;
 }
 
 sub GN::repository { # /$username/(.*?(\.git)?)
-
+    my ($template, $root, $dataref) = @_;
+    my %data = %$dataref;
 }
 
 sub GN::cache { # cache{'/some/path'}
@@ -36,6 +43,7 @@ openlog("gorillanest", "ndelay,pid", Sys::Syslog::LOG_DAEMON);
 try {
     my $gitroot = 'git';
     my $dbfile = 'gorillanest.sqlite3';
+    my %data; # useful for minimizing passing and for templating, put default configuration details meant to go on the page in this thing note that it's rw
     #
     my $request = FCGI::Request();
     my $template = Template->new({INCLUDE_PATH => 'template'});
@@ -44,16 +52,16 @@ try {
         AutoCommit => 1,
         sqlite_see_if_its_a_number => 1,
                          }) or die $DBI::errstr;
-    $db->do(
-"CREATE TABLE IF NOT EXISTS users (
-        id INTEGER PRIMARY KEY AUTOINCREMENT,
-        name TEXT NOT NULL CHECK(length(name) <= 32),
-        pass TEXT NOT NULL CHECK(length(pass) <= 128
-                             AND length(pass) >= 32),
-                                 UNIQUE(name))");
-    my $sth = $db->prepare("INSERT INTO users (name, pass) VALUES (?, ?)");
-    $sth->execute("test", "PUM6w22pxoGVB03qlgEUVBumYgPL2RTGqegoz8vZf7jpsqRQahC3d2OXOH3qFnvo");
-    $db->disconnect;
+    $db->do(
+"CREATE TABLE IF NOT EXISTS users (
+        id INTEGER PRIMARY KEY AUTOINCREMENT,
+        name TEXT NOT NULL CHECK(length(name) <= 32),
+        pass TEXT NOT NULL CHECK(length(pass) <= 128
+                             AND length(pass) >= 32),
+                                 UNIQUE(name))");
+    my $sth = $db->prepare("INSERT INTO users (name, pass) VALUES (?, ?)");
+    $sth->execute("test", "PUM6w22pxoGVB03qlgEUVBumYgPL2RTGqegoz8vZf7jpsqRQahC3d2OXOH3qFnvo");
+    $db->disconnect;
     #
     my $head = 0;
     while($request->Accept() >= 0) {
@@ -67,11 +75,25 @@ try {
         if ($method eq 'HEAD') {
             $head = 1;
         } elsif ($method eq 'GET') {
-            print $cgi->header(%header);
+            ($data{name}, $data{repository}) = $uri =~ m{/(.*?)/(?:(.*))?};
+            info("name:", $data{name}, "repo:", $data{repository});
             if ($head) { $head = 0; continue; }
             if ($uri eq '/') {
-                GN::index($gitroot);
-            } # elsif ($uri ~= m__)
+                print $cgi->header(%header);
+                print "index\n";
+                GN::index($template, $gitroot, \%data);
+            } elsif ($data{repository}) { # this will generally fail
+                print $cgi->header(%header);
+                print "repository\n";
+                GN::repository($template, $gitroot, \%data);
+            } elsif ($data{name}) { # this acts like a default case
+                print $cgi->header(%header);
+                print "user\n";
+                GN::user($template, $gitroot, \%data);
+            } else {
+                $header{-status} = '404 Not Found';
+                print $cgi->header(%header);
+            }
         } else {
             $header{-status} = '405 Method Not Allowed';
             print $cgi->header(%header);
diff --git a/gorillanest.sqlite3 b/gorillanest.sqlite3
new file mode 100644 (file)
index 0000000..2f8a9e4
Binary files /dev/null and b/gorillanest.sqlite3 differ