From df656cbdeb67adc91560f3abd4e41c770285b3d3 Mon Sep 17 00:00:00 2001 From: Emil Williams Date: Sun, 17 Aug 2025 10:17:22 +0000 Subject: Testshit And Renaming Of Db To Suffix With .Sqlite --- .gitignore | 2 +- gorillanest | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 1ca5c6c..f947323 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -*.db +*.sqlite git/* !git/.gitkeep diff --git a/gorillanest b/gorillanest index 1d05460..f67638b 100755 --- a/gorillanest +++ b/gorillanest @@ -35,7 +35,7 @@ sub GN::cache { # cache{'/some/path'} openlog("gorillanest", "ndelay,pid", Sys::Syslog::LOG_DAEMON); try { my $gitroot = 'git'; - my $dbfile = 'gorillanest.db'; + my $dbfile = 'gorillanest.sqlite3'; # my $request = FCGI::Request(); my $template = Template->new({INCLUDE_PATH => 'template'}); @@ -44,7 +44,15 @@ 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, name TEXT NOT NULL CHECK(length(name) <= 32), pass TEXT NOT NULL CHECK(length(pass) <= 128 AND length(pass) >= 32))"); + $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; -- cgit v1.2.3 From b1d34378745e95e03221268fdee3245ced79af76 Mon Sep 17 00:00:00 2001 From: Emil Williams Date: Sun, 17 Aug 2025 12:10:58 +0000 Subject: 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 0000000..2f8a9e4 Binary files /dev/null and b/gorillanest.sqlite3 differ -- cgit v1.2.3 From 7fc79ab49f8be9f27b5524ec2991446e1f59a860 Mon Sep 17 00:00:00 2001 From: Emil Williams Date: Sun, 17 Aug 2025 12:42:39 +0000 Subject: Sneeduations 7:11 Before Templating Just Print Things --- gorillanest | 49 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/gorillanest b/gorillanest index 2160c6c..ed60fb8 100755 --- a/gorillanest +++ b/gorillanest @@ -11,28 +11,50 @@ use Sys::Syslog; use Template; use URI::Escape; use DBI; +use Cwd qw(); sub info { syslog("info", join(' ', @_)); } +# significant dirs only +sub GN::directories { + opendir my $dir, $_[0] or die "Cannot open directory: $!"; + my @directories; + foreach (readdir $dir) { + my %drop = ( + '.' => 0, + '..' => 0, + ); + push(@directories, $_) if (-d join('/', $_[0], $_) && ($drop{$_} // 1)); + } + closedir $dir; + return \@directories; +} + +# probably should output all repos recursively, currently just outputs list of users 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; + print "* index\n"; + my @directories = @{GN::directories($root)}; + print "@directories\n"; } sub GN::user { # /$username/ my ($template, $root, $dataref) = @_; my %data = %$dataref; + print "* user: $data{name}\n"; + my @directories = @{GN::directories(join('/', $root, $data{name}))}; + print "@directories\n"; } sub GN::repository { # /$username/(.*?(\.git)?) my ($template, $root, $dataref) = @_; my %data = %$dataref; + print "* repository: $data{repository}\n"; + my @directories = @{GN::directories(join('/', $root, $data{name}, $data{repository}))}; + print "@directories\n"; } sub GN::cache { # cache{'/some/path'} @@ -52,13 +74,13 @@ 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))"); + # $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; @@ -76,19 +98,16 @@ try { $head = 1; } elsif ($method eq 'GET') { ($data{name}, $data{repository}) = $uri =~ m{/(.*?)/(?:(.*))?}; - info("name:", $data{name}, "repo:", $data{repository}); + info("name:", $data{name} || '', "repo:", $data{repository} || ''); if ($head) { $head = 0; continue; } if ($uri eq '/') { 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'; -- cgit v1.2.3 From ea53711cc48e4e5e85eb2837160d55d177414be6 Mon Sep 17 00:00:00 2001 From: Emil Williams Date: Sun, 17 Aug 2025 12:48:54 +0000 Subject: Things Have Changed, They Rumor --- gorillanest | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/gorillanest b/gorillanest index ed60fb8..baa196e 100755 --- a/gorillanest +++ b/gorillanest @@ -34,23 +34,21 @@ sub GN::directories { # probably should output all repos recursively, currently just outputs list of users sub GN::index { # / - my ($template, $root, $dataref) = @_; + my ($root, $dataref) = @_; my %data = %$dataref; - print "* index\n"; my @directories = @{GN::directories($root)}; - print "@directories\n"; + return \@directories; } sub GN::user { # /$username/ - my ($template, $root, $dataref) = @_; + my ($root, $dataref) = @_; my %data = %$dataref; - print "* user: $data{name}\n"; my @directories = @{GN::directories(join('/', $root, $data{name}))}; - print "@directories\n"; + return \@directories; } sub GN::repository { # /$username/(.*?(\.git)?) - my ($template, $root, $dataref) = @_; + my ($root, $dataref) = @_; my %data = %$dataref; print "* repository: $data{repository}\n"; my @directories = @{GN::directories(join('/', $root, $data{name}, $data{repository}))}; @@ -102,13 +100,19 @@ try { if ($head) { $head = 0; continue; } if ($uri eq '/') { print $cgi->header(%header); - GN::index($template, $gitroot, \%data); + print "* Index\n"; + my @directories = @{GN::index($gitroot, \%data)}; + print "@directories\n"; } elsif ($data{repository}) { # this will generally fail print $cgi->header(%header); - GN::repository($template, $gitroot, \%data); + print "* Repository\n"; + my @directories = @{GN::repositories($gitroot, \%data)}; + print "@directories\n"; } elsif ($data{name}) { # this acts like a default case print $cgi->header(%header); - GN::user($template, $gitroot, \%data); + print "* User: $data{name}\n"; + my @directories = @{GN::user($gitroot, \%data)}; + print "@directories\n"; } else { $header{-status} = '404 Not Found'; print $cgi->header(%header); -- cgit v1.2.3