From b1d34378745e95e03221268fdee3245ced79af76 Mon Sep 17 00:00:00 2001 From: Emil Williams Date: Sun, 17 Aug 2025 12:10:58 +0000 Subject: [PATCH] I'm Not Actually Schizophrenic --- gorillanest | 54 +++++++++++++++++++++++++++++++------------- gorillanest.sqlite3 | Bin 0 -> 16384 bytes 2 files changed, 38 insertions(+), 16 deletions(-) create mode 100644 gorillanest.sqlite3 diff --git a/gorillanest b/gorillanest index f67638b..2160c6c 100755 --- a/gorillanest +++ b/gorillanest @@ -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 index 0000000000000000000000000000000000000000..2f8a9e479d18a948a2006e0104c6d0f264b1f3ef GIT binary patch literal 16384 zcmeI(&u-c<90zclbp0n$cByjpk*L))5^3vUof@c1qlN^sq$<0hY`ByO64HdW>TOeB zqz|#j*y~g~&IITN(stgu?@uwtiGSGs$d@GIUCZugf}O{g!!Tn8c}^%L2aFLy3bL%o zG7l=hEVt*^epeUBi`%4F`c9NBmu%gazR3y!0SG_<0uX=z1Rwwb2tWV=|Gq#|Sygv- zXgdo(3`Cj?4hXm6_TXjjpMxO7AN9Z;n%O zndTpbh5Y;!D{rz{^t;S*d|u}sYkF40^xEu%x0xCEuI0$g26z13$KI3Cn9t9A=D4y1 zw#{nCymnF^h^Uuc!;P1Ml$H};Iuj(wtG!m z_xySydhzYv)%)|;pGIlowZe;<(be5E_t;2|qN{jQu8Yd|^YTDI00Izz00bZa0SG_< z0uX=z1R(Il1lE-8jmh(a>HGf&QhIn|3&e6D009U<00Izz00bZa0SG_<0{^|hI#tw- I{Eq-X0NQV$)c^nh literal 0 HcmV?d00001 -- 2.39.5