diff --git a/.gitignore b/.gitignore index 9e7ac81..c845322 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.gz *.zip +download/doc diff --git a/dat/ncdu b/dat/ncdu index 848aa5f..bd92cb1 100644 --- a/dat/ncdu +++ b/dat/ncdu @@ -57,10 +57,11 @@ L - L - L - L - -L +L - +L -Packages for CentOS, RHEL and (open)SUSE can be found on the -L. +Packages for RHEL and (open)SUSE can be found on the +L. Packages for NetBSD, DragonFlyBSD, MirBSD and others can be found on L. diff --git a/dat/tuwf b/dat/tuwf index 300638d..404d135 100644 --- a/dat/tuwf +++ b/dat/tuwf @@ -9,26 +9,24 @@ websites, it is also perfectly suited for small single-file websites. =over -=item * Very small, and no extra modules required, +=item * Very small, and no extra modules required for the base functionality, -=item * Easy URI-to-function mapping using regular expressions, +=item * Easy built-in routing, =item * Handy form validation functions, -=item * Easy XML/XHTML output generation functions, +=item * Easy XML/HTML generation, =item * Response buffering and output compression, -=item * Easy access to GET/POST data and cookies, +=item * Easy access to request data, -=item * Support for CGI and FastCGI - optimized for FastCGI, +=item * Support for CGI, FastCGI and a built-in web server, =item * Uses UTF-8 for all text, =item * Convenient SQL execution functions and correct transaction handling, -=item * Promotes code re-use, - =item * Open source (duh!) and available under a liberal MIT license. =back @@ -39,7 +37,7 @@ information and details. =head2 Download -B 1.1 ([dllink TUWF-1.1.tar.gz download] +B 1.2 ([dllink TUWF-1.2.tar.gz download] - L) TUWF is also available on a git repository at L. diff --git a/dat/tuwf-changelog b/dat/tuwf-changelog index cfb7203..ffdc83b 100644 --- a/dat/tuwf-changelog +++ b/dat/tuwf-changelog @@ -1,3 +1,27 @@ +1.2 - 2018-02-18 + - Add tuwf() exported function as alias to $self or $TUWF::OBJ + - Add TUWF::get/put/post/etc() as better alternative to TUWF::register() + - Add TUWF::hook() as better alternative to (pre|post)_request_handler + - Add capture() to access route captures + - Add standandlone HTTP dev server (requires HTTP::Server::Simple) + - Add pass() and done() methods to prematurely abort the current handler + - Add 'import_modules' setting + - TUWF::Request: Add reqJSON() + - TUWF::Request: Disallow control characters in HTTP request data + - TUWF::Response: Add resJSON() + - TUWF::Response: Add resBinary() + - TUWF::Response: Add resFile() + mime_types/mime_default settings + - TUWF::Response: Allow setting headers before resRedirect() + - TUWF::Response: resRedirect() now sets a relative 'Location' HTTP header + - TUWF::DB: Add DB query logging and profiling to non-TUWF database functions + - TUWF::DB: Add dbVal() + - TUWF::XML: Add functional-style DSL + - TUWF::XML: Add HTML5 support + - TUWF::XML: Add different naming convention support + - TUWF::XML: Add 'mkclass' utility function + - Improved error pages + - Various documentation improvements + 1.1 - 2017-11-26 - Disallow exclamation mark in email address validation - Add reqProtocol() method diff --git a/download/TUWF-1.2.tar.gz.asc b/download/TUWF-1.2.tar.gz.asc new file mode 100644 index 0000000..547088d --- /dev/null +++ b/download/TUWF-1.2.tar.gz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEEdEYNMrgIEOupr6LpYjlMaYwnOfoFAlqJW1IACgkQYjlMaYwn +OfoX8xAAtvV3oCpZqDEEJl50MJTy8dncFo3nMxKfD7xbsv4pKbPh6sj3kEd+PcdM +kbQxECdKZbNx8LgtjW7jNwIsU6SoEV4WZUWN3dZiVEGr+qF5Gc9101M1c5z99BPU +D+2QjjbcHB1MepcRaKe76eT1+KLm/nA5OqfNgQ1z626r31JriB4d+Ppd8GlDfCDq +UALjjv0qzwVEr4YBdeXClDYJ1vorEGoOyt/gqBuged86NDaeyqkZ2c/2y2HeB8If +B2PCZbYx7DFAcOz7XSJuVkeHLUvOlK3zknWMZXXeK01ev+evuVgGwe8dktQGL01P +dRl+vpJi++eFhJ57zwXYvAFlW9KWuor3YnPJms2eOZAZyHKc2WXjN581YT/Xt1s1 ++r5qndZXUfgrk8tUANRKff5oaZ9xwoZ1XqBu3M3Dqrtl2RCj3TLg8KXuh19Sy0KQ +ijz1/7ZlIRXVAo+mqmb2ZE8OfqXrGRwXdCWJTZ9LsHnkY+kPfB8FdoUP93vrkV7Z +1Fu0T2Et7UWKj6Xr4qyBf/CjJZK9cy1EXfnrKVJQa5YkRVqQbnnzKFI5gv7U+GgO +hJG4Tr84bv3xJEGtcMyMrgnAcag8+7KZYiM2yd/fp7wUtxs1BJczyxevVhWMKcSM +dNsVm76AF8vsC7CCOOCXJZ9w4DfDyEWkyV4dKbFk60hkslj7BnI= +=YQqj +-----END PGP SIGNATURE----- diff --git a/download/TUWF-1.2.tar.gz.md5 b/download/TUWF-1.2.tar.gz.md5 new file mode 100644 index 0000000..c8cb45a --- /dev/null +++ b/download/TUWF-1.2.tar.gz.md5 @@ -0,0 +1 @@ +5028482611a415c22993adab05b9698e TUWF-1.2.tar.gz diff --git a/download/TUWF-1.2.tar.gz.sha1 b/download/TUWF-1.2.tar.gz.sha1 new file mode 100644 index 0000000..948ef2e --- /dev/null +++ b/download/TUWF-1.2.tar.gz.sha1 @@ -0,0 +1 @@ +3b336c065e9f8a37b2f387f9ff645c2ab2da5485 TUWF-1.2.tar.gz diff --git a/index.cgi b/index.cgi index 6e3bef5..def0703 100755 --- a/index.cgi +++ b/index.cgi @@ -12,6 +12,7 @@ BEGIN { ($ROOT = abs_path $0) =~ s{index\.cgi$}{}; } my @changes = ( + [ '2018-02-18', '/tuwf', 'TUWF 1.2 released' ], [ '2018-01-29', '/ncdu', 'ncdu 1.13 released' ], [ '2018-01-24', '/nginx-confgen', 'nginx-confgen 1.1 released' ], [ '2018-01-19', '/nginx-confgen', 'New project: nginx-confgen' ], @@ -117,7 +118,7 @@ TUWF::register( qr{nginx-confgen/man} => sub { podpage(shift, 'nginx-confgen-man', 'nginx-confgen', 'man', 'The nginx-confgen(1) Man Page', 1) }, qr{nginx-confgen/changes} => sub { changelog(shift, 'nginx-confgen-changelog', undef, 'nginx-confgen', 'changes', 'nginx-confgen Changelog', 1) }, qr{tuwf} => sub { podpage(shift, 'tuwf', 'tuwf', '', 'The Ultimate Website Framework') }, - qr{tuwf/man(?:/(db|misc|request|response|xml))?} => \&tuwfmanual, + qr{tuwf/man(?:/(db|intro|misc|request|response|xml))?} => \&tuwfmanual, qr{tuwf/changes} => sub { changelog(shift, 'tuwf-changelog', 'TUWF', 'tuwf', 'changes', 'TUWF Changelog') }, qr{ylib} => sub { podpage(shift, 'ylib/README.pod', 'ylib', '', 'Ylib') }, qr{yxml} => sub { podpage(shift, 'yxml', 'yxml', '', 'Yxml - A small, fast and correct* XML parser') }, @@ -202,7 +203,7 @@ sub tuwfmanual { $mod .= '/'.($mod{$man} || ucfirst $man) if $man; (my $pm = $mod) =~ s/\//::/; $s->htmlHeader(title => $pm.' Documentation', page => 'tuwf', sec => 'man', sec2 => $man); - (my $f = $INC{"$mod.pm"}) =~ s/\.pm$/.pod/; + (my $f = $INC{"TUWF.pm"}) =~ s/TUWF\.pm$/$mod.pod/; $s->htmlPOD($f, 1); $s->htmlFooter; } @@ -414,6 +415,7 @@ sub htmlPOD { $p->{podhtml_LOT} = { 'TUWF' => '/tuwf/man', 'TUWF::DB' => '/tuwf/man/db', + 'TUWF::Intro' => '/tuwf/man/intro', 'TUWF::Misc' => '/tuwf/man/misc', 'TUWF::Request' => '/tuwf/man/request', 'TUWF::Response' => '/tuwf/man/response', @@ -550,6 +552,7 @@ sub htmlMenu { $m->('/tuwf/man', 'Manual', $o{sec} eq 'man', sub { $m->('/tuwf/man', 'Main', $o{sec} eq 'man' && !$o{sec2}); $m->('/tuwf/man/db', '::DB', $o{sec} eq 'man' && $o{sec2} eq 'db'); + $m->('/tuwf/man/intro', '::Intro', $o{sec} eq 'man' && $o{sec2} eq 'intro'); $m->('/tuwf/man/misc', '::Misc', $o{sec} eq 'man' && $o{sec2} eq 'misc'); $m->('/tuwf/man/request', '::Request', $o{sec} eq 'man' && $o{sec2} eq 'request'); $m->('/tuwf/man/response', '::Response', $o{sec} eq 'man' && $o{sec2} eq 'response');