perl/plp/.git
19 months agov3.25 release master 3.25
Mischa POSLAWSKY [Mon, 14 Sep 2015 21:40:44 +0000 (23:40 +0200)]
v3.25 release

19 months agovim: drop vim v5.x compatibility
Bram Moolenaar [Tue, 30 Aug 2016 21:26:57 +0000 (23:26 +0200)]
vim: drop vim v5.x compatibility

Updated runtime files.  Remove version checks for Vim older than 6.0.
Cherry-picked from Vim v7.4.2296^.

19 months agoeg/plpinfo: escape html characters in dumped fields
Mischa POSLAWSKY [Sun, 26 Feb 2017 23:22:19 +0000 (00:22 +0100)]
eg/plpinfo: escape html characters in dumped fields

Support special characters in environment and user input values.
Closes XSS vector if public.

19 months agoApache: warn to vhost-specific error log
Mischa POSLAWSKY [Tue, 14 Apr 2015 12:41:33 +0000 (14:41 +0200)]
Apache: warn to vhost-specific error log

Override core warn() with server logging
so site-specific configuration is respected.

19 months agoApache: avoid undefinedness warning without PLPcache
Mischa POSLAWSKY [Mon, 29 Sep 2014 19:58:00 +0000 (19:58 +0000)]
Apache: avoid undefinedness warning without PLPcache

Same results but without potentially clogging error logs with:

> Use of uninitialized value in pattern match (m//)

19 months agot/55-eg: check example pages for warnings
Mischa POSLAWSKY [Thu, 21 Nov 2013 22:02:14 +0000 (23:02 +0100)]
t/55-eg: check example pages for warnings

Ensure sample code actually runs.

19 months agot: exceptions to return errors in Test::PLP
Mischa POSLAWSKY [Thu, 3 Sep 2015 17:54:24 +0000 (19:54 +0200)]
t: exceptions to return errors in Test::PLP

Internal code cleanup.

19 months agot: rename abbreviated variables in Test::PLP
Mischa POSLAWSKY [Thu, 3 Sep 2015 17:54:24 +0000 (19:54 +0200)]
t: rename abbreviated variables in Test::PLP

4 years agot: replace variable root directory in tests
Mischa POSLAWSKY [Thu, 3 Sep 2015 22:44:01 +0000 (00:44 +0200)]
t: replace variable root directory in tests

Relative path substituted in commit 3.24-3-gaeeb9a5d49 (2015-09-14)
[move i/o testing routines to Test::PLP module] works just as well.

4 years agot: base Test::PLP on Test::Builder::Module
Mischa POSLAWSKY [Thu, 3 Sep 2015 16:34:45 +0000 (18:34 +0200)]
t: base Test::PLP on Test::Builder::Module

4 years agot/50-cgi: inline plan count in module import
Mischa POSLAWSKY [Thu, 3 Sep 2015 16:35:42 +0000 (18:35 +0200)]
t/50-cgi: inline plan count in module import

Similar to other test files.

4 years agot: move i/o testing routines to Test::PLP module
Mischa POSLAWSKY [Thu, 3 Sep 2015 16:16:57 +0000 (18:16 +0200)]
t: move i/o testing routines to Test::PLP module

Support reuse in distinct test files.

4 years agot/50-cgi: todo test for upcoming multipart posts
Mischa POSLAWSKY [Mon, 20 Feb 2012 08:07:27 +0000 (09:07 +0100)]
t/50-cgi: todo test for upcoming multipart posts

Common HTML feature which is not yet handled correctly.

4 years agovim: prevent error highlighting of valid if constructs
Mischa POSLAWSKY [Fri, 17 Jun 2011 19:49:31 +0000 (21:49 +0200)]
vim: prevent error highlighting of valid if constructs

Vim v7.2 started marking any leading if statements as syntax errors due to
matching perlElseIfError in this position.  This should not be explicitly
allowed here, and will still follow correctly after perlConditional.

5 years agov3.24 release 3.24
Mischa POSLAWSKY [Tue, 19 Nov 2013 02:26:49 +0000 (03:26 +0100)]
v3.24 release

5 years agot/50-cgi: order 62-%post data hash
Mischa POSLAWSKY [Wed, 20 Nov 2013 11:15:28 +0000 (12:15 +0100)]
t/50-cgi: order 62-%post data hash

Stabilise hash dump, especially as they are randomised as of Perl v5.18.

5 years agoavoid untie replacement for perl v5.18
Mischa POSLAWSKY [Wed, 20 Nov 2013 11:13:58 +0000 (12:13 +0100)]
avoid untie replacement for perl v5.18

Replacing a tied hash causes random behaviour and crashes with newer
versions of Perl (probably due to COW changes), so keep the slower tie.

5 years agoeg/plpinfo: add missing parentheses for perl v5.18
Mischa POSLAWSKY [Tue, 19 Nov 2013 11:38:44 +0000 (12:38 +0100)]
eg/plpinfo: add missing parentheses for perl v5.18

Lax grammar no longer allowed, see perl5180delta.

5 years agot/50-cgi: match data type in 30-warnings void test
Mischa POSLAWSKY [Wed, 20 Nov 2013 10:16:54 +0000 (11:16 +0100)]
t/50-cgi: match data type in 30-warnings void test

Comparing number to string results in different messages as of Perl v5.18:

>      got: "Useless use of a constant (42) in void context at 30-warnings.plp line 2.
> expected: "Useless use of a constant ("42") in void context at 30-warnings.plp line 2.

5 years agot/91-meta: fallback to Test::CPAN::Meta
Mischa POSLAWSKY [Wed, 20 Nov 2013 10:15:15 +0000 (11:15 +0100)]
t/91-meta: fallback to Test::CPAN::Meta

5 years agogitignore: match files generated by ExtUtils::MakeMaker
Mischa POSLAWSKY [Mon, 30 Apr 2012 20:12:54 +0000 (22:12 +0200)]
gitignore: match files generated by ExtUtils::MakeMaker

5 years agodocument %header defaults, attributes, and changing
Mischa POSLAWSKY [Wed, 22 Feb 2012 21:20:50 +0000 (22:20 +0100)]
document %header defaults, attributes, and changing

5 years agot/50-cgi: encode special chars in file names
Mischa POSLAWSKY [Mon, 30 Apr 2012 20:23:22 +0000 (22:23 +0200)]
t/50-cgi: encode special chars in file names

Some characters may be disallowed on different (file) systems (such as
colons on Windows).

5 years agot/50-cgi: %post data parse tests
Mischa POSLAWSKY [Mon, 20 Feb 2012 07:57:31 +0000 (08:57 +0100)]
t/50-cgi: %post data parse tests

Test user input handling by optionally reading from matching *.txt files.

5 years agot/50-cgi: separate i/o in external files
Mischa POSLAWSKY [Mon, 20 Feb 2012 04:54:54 +0000 (05:54 +0100)]
t/50-cgi: separate i/o in external files

Distinct files should be easier to read and maintain than inline mess.
Read input from *.plp and match output to *.html with the same filename,
with initials indicating environment (1-3* cgi, 4-7* apache, 8* lighttpd).

5 years agot/50-cgi: reset environment for each test
Mischa POSLAWSKY [Mon, 20 Feb 2012 04:54:54 +0000 (05:54 +0100)]
t/50-cgi: reset environment for each test

Explicit %ENV for each test to avoid mistakes and allow for independent tests.

5 years agot/50-cgi: optionally use Test::LongString to format failures
Mischa POSLAWSKY [Tue, 21 Feb 2012 00:34:04 +0000 (01:34 +0100)]
t/50-cgi: optionally use Test::LongString to format failures

Pretty-print string comparison to directly pinpoint differences
instead of drowning us in full contents.

5 years agot/50-cgi: distinguish runtime warnings in output
Mischa POSLAWSKY [Mon, 20 Feb 2012 01:16:58 +0000 (02:16 +0100)]
t/50-cgi: distinguish runtime warnings in output

Circumfix STDERR messages to clarify and delimit trigger.

Causes different order in header lines due to comparison sort.

7 years agoreplace deprecated Test::YAML::Meta by equivalent Test::CPAN::Meta::YAML
Mischa POSLAWSKY [Thu, 15 Dec 2011 21:22:16 +0000 (22:22 +0100)]
replace deprecated Test::YAML::Meta by equivalent Test::CPAN::Meta::YAML

7 years agoupdate META.yml to spec v1.4
Mischa POSLAWSKY [Thu, 15 Dec 2011 21:41:26 +0000 (22:41 +0100)]
update META.yml to spec v1.4

Recent Test::YAML::Meta does not allow a valid optional_features array
according to v1.3 spec, instead requiring v1.4 syntax regardless of version:

> ERR: Expected a map structure from YAML string or file (optional_features)
> [Validation: 1.3]

10 years agov3.23 release 3.23
Mischa POSLAWSKY [Wed, 21 Oct 2009 21:53:19 +0000 (23:53 +0200)]
v3.23 release

10 years agovim: reset style at plp block start
Mischa POSLAWSKY [Fri, 27 Feb 2009 22:15:19 +0000 (23:15 +0100)]
vim: reset style at plp block start

PLPperlblock should not be made 'transparent', because this incorrectly
preserves the current HTML highlight for default Perl code.  Mixing Perl and
HTML styling can lead to very strange and unwanted effects, like partially
marking the following code as a comment:

<!-- <: print not_a_comment(); :> -->

10 years agocapture actual test warnings
Mischa POSLAWSKY [Tue, 20 Oct 2009 22:02:20 +0000 (00:02 +0200)]
capture actual test warnings

Compare expected `use warnings` output to warnings produced by similar code
instead of hardcoding text.  It doesn't really matter what is said, as long
it's the same using plp.

Fixes (so far and afaik) a slight change introduced by Perl v5.11.0 in
"Useless use of a constant in void context" (adding details about which
constant).

10 years agofix tiny typo in PLP::HowTo title
Mischa POSLAWSKY [Tue, 20 Oct 2009 22:08:59 +0000 (00:08 +0200)]
fix tiny typo in PLP::HowTo title

10 years agoEscapeHTML function
Mischa POSLAWSKY [Mon, 11 Feb 2008 02:44:29 +0000 (02:44 +0000)]
EscapeHTML function

Another function to encode html/xml, this time (imho) the "right" way by
only quoting reserved characters.  The provided Entity() function would
often be unusable because of its overcomplete whitespace formatting.
This is a feature which I (have to) set up manually in many cases, which
seems very unfriendly for a module optimised for outputting HTML.

According to personal preferences, it only substitutes a minimal set of
entities:
- &amp; and &lt; (both required to prevent html interpretation)
- &gt; (for xml or otherwise to ease document parsing)
- &quot; (to make it usable in attribute values).

Single quotes (&#39; or &apos;) are left unquoted, assuming attributes are
always in double quotes (no reason to do otherwise).
Unlike Entity, it only handles a single argument, to allow for possible
options in the future (hopefully supporting a custom range of unsafe chars).
It also dies on failure (like trying to change read-only input), because
that is a user mistake which should not go unnoticed.

The name was devised to be more consistent with other environments (also
anticipating new URI encoding and decoding):

* php                   htmlspecialchars  html_entity_decode urlrawencode       urldecode
* javascript                                                 encodeURIComponent decodeURIComponent
* ruby CGI              escapeHTML        unescapeHTML       escape             unescape
- CGI::Simple::Util     escapeHTML        unescapeHTML       escape             unescape
- CGI::Util             (simple_escape)                      escape             unescape
- HTML::Mason::Escapes  basic_html_escape                    url_escape
- HTML::Tiny            entity_encode                        url_encode         url_decode
* URI::Escape                                                uri_escape_utf8    uri_unescape
* XML::Quote            xml_quote         xml_dequote
- PLP (legacy)          Entity                               EncodeURI          DecodeURI
- PLP (redesign)        EscapeHTML        UnescapeHTML       EscapeURI          UnescapeURI

HTML:
- Escape etc used nearly everywhere (so the obvious choice).
- Decode is only used by php, but uglily and inconsistently.
- Quote seems most appropriate linguistically, but only used in one minority
  module.

URIs:
- Encode etc common in php and javascript.
- Escape etc used by ruby and several perl modules (including URI::Escape),
  and is still familiar to javascript users
- URI used in all significant environemnts; URL only in minor modules.

10 years agofix header output triggered by say() in perl 5.10.1+
Mischa POSLAWSKY [Sat, 17 Oct 2009 05:45:59 +0000 (07:45 +0200)]
fix header output triggered by say() in perl 5.10.1+

Since the latest Perl release, calling sendheaders() from within a say()
would (correctly) retain a custom output seperator, resulting in http
headers being sent incorrectly.

Easily fixed by resetting normal printing behaviour.

11 years agoresolve test directory
Mischa POSLAWSKY [Thu, 5 Jun 2008 17:47:14 +0000 (17:47 +0000)]
resolve test directory

File::Spec->tmpdir may return a symlink as well, so
c41c902ca6fd9f8e352267be64d (test in directories provided by Test::Spec)
still didn't fix darwin (in all cases).

The darwin I tested on gave a tmpdir like:
/var/folders/OJ/OJjGh2I+HBOinZB8Re8QVU+++TI/-Tmp-
but cpantesters machines are still using a symlinked /tmp.

Use Cwd to find the real path name, hopefully fixing all remaining cases.

11 years agoexclude PLP::Script from META.yml provides
Mischa POSLAWSKY [Thu, 5 Jun 2008 00:18:00 +0000 (00:18 +0000)]
exclude PLP::Script from META.yml provides

Saying we've got PLP::Script might have been useful to users looking
for it, but it seems to provide more disadvantages, confusing at least
search.cpan.org (thinks PLP is pod now).

11 years agocompact output in warnings test
Mischa POSLAWSKY [Thu, 5 Jun 2008 00:06:51 +0000 (00:06 +0000)]
compact output in warnings test

11 years agowarn pre-start() errors
Mischa POSLAWSKY [Wed, 4 Jun 2008 22:56:25 +0000 (22:56 +0000)]
warn pre-start() errors

Early warnings (cgi 403/404) should warn instead of print to STDERR.
This allows them to be handled by $SIG{__WARN__} (usually not set, but
used in tests).

11 years agotest in directories provided by Test::Spec
Mischa POSLAWSKY [Wed, 4 Jun 2008 21:56:48 +0000 (21:56 +0000)]
test in directories provided by Test::Spec

On darwin machines /tmp seems to be symlinked to /private/tmp, resulting
in different file names reported by <()> (uses rel2abs with dirname of
parent file) and Include() (uses rel2abs in cwd, so symlinks are
resolved).  Similarly, on windows the latter adds a drive name (C:\tmp).

F::S->tmpdir should provide a preresolved directory, so results are the
same.

11 years agofix perl 5.6 syntax error in t/50-cgi.t
Mischa POSLAWSKY [Wed, 4 Jun 2008 16:50:21 +0000 (16:50 +0000)]
fix perl 5.6 syntax error in t/50-cgi.t

> Bareword "STDOUT" not allowed while "strict subs" in use.

11 years agotest 403 and 404 responses
Mischa POSLAWSKY [Tue, 3 Jun 2008 07:27:54 +0000 (07:27 +0000)]
test 403 and 404 responses

11 years agodo not require server signature on page error
Mischa POSLAWSKY [Tue, 3 Jun 2008 07:32:42 +0000 (07:32 +0000)]
do not require server signature on page error

In rare cases, SERVER_SIGNATURE may not be set.  This isn't a problem,
but we need to check for definedness to prevent warnings.

11 years agofix missinginclude tests 3.22_01
Mischa POSLAWSKY [Tue, 3 Jun 2008 03:35:27 +0000 (03:35 +0000)]
fix missinginclude tests

Try to open the missing file in the same way PLP::source() will,
to obtain the same warning message.

For example MSWin32-x86-multi-thread said:
Can't open "C:\Perl\cpan\build\PLP-3.22-ZfVju5\missinginclude" (No such file or directory)
while several CPANTS linuxes were localized:
Can't open "/tmp/missinginclude" (Datei oder Verzeichnis nicht gefunden)

11 years agov3.22 release 3.22
Mischa POSLAWSKY [Mon, 2 Jun 2008 19:21:13 +0000 (19:21 +0000)]
v3.22 release

11 years agodeclare provides in META.yml
Mischa POSLAWSKY [Mon, 2 Jun 2008 19:14:59 +0000 (19:14 +0000)]
declare provides in META.yml

List provided modules (recommended by Kwalitee metayml_has_provides).
Module::Build would find the same data, but telling it to leave other
fields alone currently takes more effort than simply updating it
manually.  Maybe later.

11 years agorequire Test::YAML::Meta 0.10 for correct testing
Mischa POSLAWSKY [Sun, 1 Jun 2008 10:14:50 +0000 (10:14 +0000)]
require Test::YAML::Meta 0.10 for correct testing

Versions upto the current 0.09 do not parse repository resource url
correctly (Unknown protocol used in URL (git://)).  This will most
likely be fixed in the next version.

Addendum: confirmed by BARBIE 2008-06-02 10:34:18 GMT:
> Added 'git' as a valid url protocol in:
> Test-YAML-Meta-0.10

11 years agorewrite documentation of mod_perl as the only persistent backend
Mischa POSLAWSKY [Mon, 2 Jun 2008 08:10:52 +0000 (08:10 +0000)]
rewrite documentation of mod_perl as the only persistent backend

Update docs to reflect the multiple persistent backends (mod_perl was
mentioned specifically where FastCGI now qualifies as well).

11 years agoexpect unordered headers in tests
Mischa POSLAWSKY [Mon, 2 Jun 2008 07:10:27 +0000 (07:10 +0000)]
expect unordered headers in tests

Headers are stored as hash, which will be printed in semi-random order.
Sort all lines in output upto the first empty line, in order to compare
reliably.

11 years agofix delete %header
Mischa POSLAWSKY [Mon, 2 Jun 2008 06:56:40 +0000 (06:56 +0000)]
fix delete %header

Header value wasn't deleted case-insensitively.  Because the alias was
still removed correctly, it usually worked, but as of recently producing
warnings in sendheaders().

Also, delete returned the original key (not documented anywhere).
Change this to always return the deleted value, matching the behaviour
of normal hashes and user expectation.

11 years ago50-cgi.t: test PLP::Backend::CGI parse output of most plp features
Mischa POSLAWSKY [Tue, 2 Oct 2007 17:47:15 +0000 (19:47 +0200)]
50-cgi.t: test PLP::Backend::CGI parse output of most plp features

11 years agofix Exporter inclusion
Mischa POSLAWSKY [Mon, 2 Jun 2008 00:43:56 +0000 (00:43 +0000)]
fix Exporter inclusion

Revert recent change of including only import() from Exporter instead of
basing on it, as the latter fails on older Perls (smoke on versions
5.8.2 and below).  Broke PLP::Functions in these versions at
d9f3acb221a71e094318c7b5d3809aa81dbb5bb3 (use warnings in all modules).

11 years agov3.21 release 3.21
Mischa POSLAWSKY [Sat, 31 May 2008 20:05:16 +0000 (20:05 +0000)]
v3.21 release

11 years agotreat custom exit() as private for now
Mischa POSLAWSKY [Sat, 31 May 2008 21:53:00 +0000 (21:53 +0000)]
treat custom exit() as private for now

Do not require documentation coverage of PLP::Functions::exit,
it's supposed to be a transparant replacement of CORE::exit.

I'll probably move it outside of this module later (no side-effects
to make it usable without PLP), but that's a seperate fix.

11 years agoorder v3.21 Changes by significance
Mischa POSLAWSKY [Sat, 31 May 2008 21:37:08 +0000 (21:37 +0000)]
order v3.21 Changes by significance

11 years agodisable warnings within PLP::Script
Mischa POSLAWSKY [Sat, 31 May 2008 21:09:47 +0000 (21:09 +0000)]
disable warnings within PLP::Script

d9f3acb221a71e094318c7b5d3809aa81dbb5bb3 (use warnings in all modules)
would not only enable warnings in plp modules, but also users' code
evalled within.  Obviously not a nice thing to do.

11 years agoretain undef in encoding functions
Mischa POSLAWSKY [Sat, 31 May 2008 21:23:38 +0000 (21:23 +0000)]
retain undef in encoding functions

Entity(), DecodeURI(), and EncodeURI() should return undef for any
undefined input.  Only string behaviour was specified, so users relying
on this did so at their own risk (and they can always disable warnings
like the careless bitches they are :P).

Not too coincidently also silences warnings in PLP::Functions itself.

11 years agoundefined warnings while reading unknown headers
Mischa POSLAWSKY [Sat, 31 May 2008 20:35:54 +0000 (20:35 +0000)]
undefined warnings while reading unknown headers

Return undef for unaliased headers right away, instead of trying to find
$header{+undef}.  Result is the same (the '' header never exists at this
point), but without the warning.

11 years agofix undefined warning in apache cgi path
Mischa POSLAWSKY [Sat, 31 May 2008 19:57:57 +0000 (19:57 +0000)]
fix undefined warning in apache cgi path

PATH_INFO was intentionally declared undef in PLP::Backend::CGI, but
would be concatenated later (in Apache mode at least), giving warnings
since d9f3acb221a71e094318c7b5d3809aa81db (use warnings in all modules).

11 years agoonly test PLP::Functions in t/10-functions.t
Mischa POSLAWSKY [Sat, 31 May 2008 19:30:19 +0000 (19:30 +0000)]
only test PLP::Functions in t/10-functions.t

Functions could be used seperately from the rest of PLP, so do not
require everything.  This test is covered by t/50-cgi.t now.

11 years agofix PLP::everything() wrapper
Mischa POSLAWSKY [Sat, 31 May 2008 19:02:45 +0000 (19:02 +0000)]
fix PLP::everything() wrapper

CGI initiator everything() was moved in 96959bff080392067524996e6edbf954
(move backend interface modules into PLP::Backend:: namespace)
and made a method, but backwards compatibility wrapper doesn't call it
as such.  This breaks old plp.cgi scripts, completely negating the
purpose of this feature.

11 years agoorder tests
Mischa POSLAWSKY [Sat, 31 May 2008 18:51:02 +0000 (18:51 +0000)]
order tests

Prefix filenames so they sort in order of significance.

11 years agoadd charset to default content-type header if STDOUT is in UTF-8
Mischa POSLAWSKY [Fri, 30 May 2008 18:34:45 +0000 (18:34 +0000)]
add charset to default content-type header if STDOUT is in UTF-8

If output has utf8 layer enabled, it makes only sense to mark it as such
to clients.  Only available with PerlIO (as of Perl 5.8 afaict), but not
fatal (assume non-utf8) if it doesn't work.

Charset is only added at first read or change of the content-type value,
so it's not hardcoded to site defaults.  Requires an extra object
variable unfortunately, but the only way to make it useful (no page
runtime accomodation wouldn't give much advantage).

11 years agoundefined warnings during Fields parsing
Mischa POSLAWSKY [Fri, 30 May 2008 17:37:09 +0000 (17:37 +0000)]
undefined warnings during Fields parsing

Accessing undefined values pollutes error logs since
d9f3acb221a71e094318c7b5d3809aa81dbb5bb3 (use warnings in all modules).

11 years agotest pod coverage as far as applicable
Mischa POSLAWSKY [Fri, 30 May 2008 02:38:00 +0000 (02:38 +0000)]
test pod coverage as far as applicable

11 years agooutput multiline %headers as multiple headers of the same name
Mischa POSLAWSKY [Thu, 29 May 2008 21:47:57 +0000 (21:47 +0000)]
output multiline %headers as multiple headers of the same name

Allowing repeated HTTP headers (RFC2616 ยง4.2) even though this didn't
add much value afterall (one may also use commas).  It does prevent
(accidentally) malformed header values though, as most servers don't
seem to handle continuation lines.

11 years agoadd version numbers to versionless modules
Mischa POSLAWSKY [Thu, 29 May 2008 20:28:58 +0000 (20:28 +0000)]
add version numbers to versionless modules

11 years agouse warnings in all modules
Mischa POSLAWSKY [Thu, 29 May 2008 20:27:33 +0000 (20:27 +0000)]
use warnings in all modules

11 years agoimprove plpinfo page
Mischa POSLAWSKY [Thu, 29 May 2008 20:13:29 +0000 (20:13 +0000)]
improve plpinfo page

Fix version display in Perl >= 5.10: $^V no longer consists out of
single characters for each level.  Use the recommended practise of
formatting with sprintf (see perlvar) which seems to work in at least
5.6.1 (ie good enough).

Add 'Perl API' version analogous to 'PHP API' in phpinfo().
Some fallbacks if variables are empty or undefined.

11 years agofix META.yml syntax
Mischa POSLAWSKY [Thu, 29 May 2008 18:04:40 +0000 (20:04 +0200)]
fix META.yml syntax

Bah, used lists where simple maps were expected (though this syntax is
used with optional_features and another project of mine, so slightly
excusable except for missing tests).

Also, Test::YAML::Meta wants keys of optional_features to conform to
/^[a-z_-]+$/.  This isn't mentioned anywhere in the specifications, but
a passing test is more useful than a minor stylistic detail.

Finally, while 'repository' apparantly still isn't an official resources
key, it _is_ mentioned as such (lowercased) in the specs.  In fact
everyone seems to use it like that, so I guess being technically
incorrect will be supported better.

11 years agoadd a few todo entries
Mischa POSLAWSKY [Wed, 28 May 2008 08:36:52 +0000 (08:36 +0000)]
add a few todo entries

11 years agov3.20 release 3.20
Mischa POSLAWSKY [Wed, 28 May 2008 07:09:41 +0000 (07:09 +0000)]
v3.20 release

11 years agoimprove lighttpd configuration samples
Mischa POSLAWSKY [Thu, 29 May 2008 16:58:32 +0000 (16:58 +0000)]
improve lighttpd configuration samples

Use the merge (+=) syntax so the user doesn't have to integrate any
existing options, and can simply add the snippet as is (even as a
seperate include, especially easy in a Debian setup).

Extend backend configuration examples with options for a directory index
of index.plp, and (static) source rejection.

11 years agokeep SCRIPT_* environment variables in CGI
Mischa POSLAWSKY [Wed, 28 May 2008 11:41:13 +0000 (11:41 +0000)]
keep SCRIPT_* environment variables in CGI

These are now identical to their PLP_* counterparts, and should be used
instead for familiarity (why rename for no apparant reason; SCRIPT_* now
contain their expected values so no reason to suggest otherwise).
Apache already has both.

11 years agolicense file from COPYING renamed LICENSE
Mischa POSLAWSKY [Wed, 28 May 2008 10:36:53 +0000 (10:36 +0000)]
license file from COPYING renamed LICENSE

While COPYING seems to be most frequently used overall, LICENSE is used
more in perl modules and recommended by Kwalitee guidelines.  Fine with
me either way, so use the name that breaks the least.

11 years agodo not import parent module in PLP::Backend::FastCGI
Mischa POSLAWSKY [Wed, 28 May 2008 10:23:50 +0000 (10:23 +0000)]
do not import parent module in PLP::Backend::FastCGI

FastCGI initialized normal CGI as well, providing unneeded CGI support.
Apparantly it's not in the way, but wrong nonetheless (and quite
confusing to be able to use the fastcgi module with cgi).

11 years agosuppress warning in PLP::Backend::CGI
Mischa POSLAWSKY [Wed, 28 May 2008 10:07:09 +0000 (10:07 +0000)]
suppress warning in PLP::Backend::CGI

Add parentheses to my $scalar argument to read() to verify it's really
only a single variable.  Works the same, but fixes a warning if run -w.

11 years agorestructure file locations
Mischa POSLAWSKY [Wed, 28 May 2008 08:41:06 +0000 (08:41 +0000)]
restructure file locations

Use root directories lib/ (pm and pod) and bin/ (executable scripts).
This is the common layout of modern modules, and in fact ever more
expected (by Module::Build for example).

11 years agocustom META.yml
Mischa POSLAWSKY [Sat, 22 Mar 2008 14:52:00 +0000 (14:52 +0000)]
custom META.yml

Automatically generated module information cannot ascertain certain
information, so I'd rather provide all YAML myself.

Compared to ExtUtils::MakeMaker 6.42 output, this adds resources,
recommends, and optional_features.

11 years agoseperate/rewritten README file
Shiar [Wed, 30 Apr 2008 05:00:45 +0000 (07:00 +0200)]
seperate/rewritten README file

Plain text README should be a minimal introductionary basics: intro
(first paragraph of pod description), installation, help, copyright.
Leave the pod (and only that) to be the full manual.  All users should
be able to run perldoc, without being held off by some wannabe text
conversion.

11 years agoset $PLP::interface to executing backend
Mischa POSLAWSKY [Wed, 28 May 2008 05:42:08 +0000 (05:42 +0000)]
set $PLP::interface to executing backend

Useful to know how we're running, as code may want to target specific
backends.  Currently undocumented so that behaviour can be changed
easily if need be.

11 years agochange to MIT license
Mischa POSLAWSKY [Mon, 24 Mar 2008 02:04:27 +0000 (04:04 +0200)]
change to MIT license

Add a proper license instead of the just saying 'public domain'
(arguably unfulfilling, see http://www.linuxjournal.com/article/6225).
The MIT or X11 license is similar in intent to the perceived PD,
and should provide all if not more rights to users.
It's essentially the same as the 2-clause BSD and ISC licenses.

With consent of the original copyright holder Juerd Waalboer:
> BTW, mocht je een echte licentie willen gebruiken, dan stel ik MIT
> voor als je je daar zelf in kunt vinden

11 years agotest for pod correctness
Mischa POSLAWSKY [Wed, 28 May 2008 04:15:54 +0000 (04:15 +0000)]
test for pod correctness

If Test::Pod is present, check the pod of files in our manifest.

11 years agoexpand backend documentation
Mischa POSLAWSKY [Wed, 28 May 2008 03:55:29 +0000 (03:55 +0000)]
expand backend documentation

Add descriptions for PLP::Backend::FastCGI and ::Apache explaining
their configuration and advantages, and recommend/reorder backends
accordingly.

Document a major bug in mod_perl2, and discourage its use for now.
Not investigated, but easily reproducable with:

<:
use Cwd qw(cwd);
say cwd, '<br>';
sleep 10;  # now request a plp from a different directory
say cwd, '<br>';

11 years agohandle fastcgi signals
Mischa POSLAWSKY [Wed, 7 May 2008 17:53:50 +0000 (17:53 +0000)]
handle fastcgi signals

http://www.fastcgi.com/devkit/doc/fcgi-spec.html#S7
> A Web server can request that a FastCGI application exit by sending it
> SIGTERM. If the application ignores SIGTERM the Web server can resort
> to SIGKILL.

So stop accepting new requests after receiving a TERM signal.  Allow the
current page to finish, we should assume it won't be long (long-running
scripts usually require customized destructors anyway, so don't account
for those).  This is quite important to prevent interrupted output.

According to http://www.fastcgi.com/docs/faq.html#Signals Apache
mod_fastcgi will send a SIGUSR1 in addition to the TERM.  Seems safe to
ignore these.

If a client aborts a connection, we'll get a SIGPIPE.  Because the page
may still have crucial actions to perform, we should ignore and finish
the code.  Pages can easily handle PIPEs themselves if wanted.

The LastCall method is used, even though FCGI 0.67 warns:
> Note that this method is still experimental and everything about it,
> including its name, is subject to change.

As it's stable since september 2001, I guess it'll be fine for now.

11 years agofix default text for pod links to other modules
Mischa POSLAWSKY [Mon, 24 Mar 2008 06:44:13 +0000 (06:44 +0000)]
fix default text for pod links to other modules

Do not provide an explicit link presentation for stand-alone module
references (no context, so let the renderer do what it thinks best).
In a running text we want the opposite though: make sure modules names
aren't 'linkified' when they shouldn't (e.g. "use the XML::Quote
manpage" when we mean just the module).

11 years agoshort TODO with planned features
Mischa POSLAWSKY [Mon, 24 Mar 2008 06:30:24 +0000 (06:30 +0000)]
short TODO with planned features

Note some of the things planned for near-future releases.

11 years agomove backend interface modules into PLP::Backend:: namespace
Mischa POSLAWSKY [Sat, 22 Mar 2008 14:47:33 +0000 (14:47 +0000)]
move backend interface modules into PLP::Backend:: namespace

Keep our namespace a bit organized.

11 years agofix exit constants usage in apache2
Mischa POSLAWSKY [Tue, 18 Mar 2008 01:52:41 +0000 (01:52 +0000)]
fix exit constants usage in apache2

Apache2::Const requires HTTP_* constants to be compiled before they can be
accessed. This caused at least a warning message at the end of each page,
usually:

Use of inherited AUTOLOAD for non-method Apache2::Const::OK() is deprecated

11 years agoupdate plp.cgi
Mischa POSLAWSKY [Mon, 17 Mar 2008 19:28:26 +0000 (20:28 +0100)]
update plp.cgi

Update plp.cgi intro comments to reflect new interfaces status.
To make it more usable out of the box, executable flag is set (so it can be
run directly) and uses interpreter from environment (/usr/bin/env should be
supported better than /usr/bin/perl).

11 years agomove detailed setup documentation to interface modules
Mischa POSLAWSKY [Mon, 17 Mar 2008 19:02:45 +0000 (20:02 +0100)]
move detailed setup documentation to interface modules

Only keep basic instructions for Lighttpd+mod_fastcgi and
Apache+mod_perl in PLP's main synopsis. Other configurations is given in
the pods of interface modules. These are linked at PLP#DESCRIPTION,
which now also contains an overview of supported servers.

Mod_perl configuration variables have also been moved into PLP::Apache.
In all, makes the main documentation much cleaner (uncluttered with
interface-specific details).

11 years agoadd license to Makefile definitions
Mischa POSLAWSKY [Sun, 16 Mar 2008 15:26:39 +0000 (16:26 +0100)]
add license to Makefile definitions

As recommended by Kwalitee indicator metayml_has_license.
Currently we specify public domain even though it's not listed in
Module::Build::Api and arguably not a valid license at all. Maybe change
our license later, or classify as 'unrestricted'.

11 years agogit exclude of compile-time files
Mischa POSLAWSKY [Sun, 16 Mar 2008 13:43:04 +0000 (14:43 +0100)]
git exclude of compile-time files

Ignore everything generated by/for make.

11 years agohandle request automatically on PLP::CGI import
Mischa POSLAWSKY [Sat, 15 Mar 2008 00:52:51 +0000 (01:52 +0100)]
handle request automatically on PLP::CGI import

As it's not used for much else, PLP::CGI can simply start running on
import. So like PLP::FastCGI, the executable only needs to C<use PLP::CGI>
(and C<require> for advanced usage).

No backwards compatibility issues, as the last release didn't have this
modularized (PLP wrapper works the same as before).

11 years agofix setting PLPcache from apache configuration
Mischa POSLAWSKY [Fri, 14 Mar 2008 23:40:49 +0000 (00:40 +0100)]
fix setting PLPcache from apache configuration

Apache has been split from PLP package, so need to specify variable
explicitly.

11 years agomake mod_perl request object a global in PLP::Apache only
Mischa POSLAWSKY [Fri, 14 Mar 2008 23:08:38 +0000 (00:08 +0100)]
make mod_perl request object a global in PLP::Apache only

No reason to always create $PLP::r, as it's only used with Apache.

11 years agoeg/plpinfo.plp demo/status page
Mischa POSLAWSKY [Tue, 2 Oct 2007 10:23:56 +0000 (12:23 +0200)]
eg/plpinfo.plp demo/status page

Demo page reporting about the current status of Perl and PLP. Useful as
test page (see if correct versions are loaded as they should, and what
variables are set), or at least as a somewhat larger example of a plp
page.

Modelled closely after PHP's phpinfo() output (even color scheme is the
same, albeit html is much cleaner) to keep it as familiar as possible to
php switcheroos.

11 years agoFastCGI interface (PLP::CGI extension using FCGI)
Mischa POSLAWSKY [Tue, 2 Oct 2007 10:23:27 +0000 (12:23 +0200)]
FastCGI interface (PLP::CGI extension using FCGI)

Do not exit from PLP::CGI, allowing it to be used consecutively.

Coincidentally, PLP::FastCGI does just that: extending the PLP::CGI
interface to handle FCGI requests. Its import() runs a PLP dispatcher,
so a FastCGI executable (example plp.fcgi is provided) only has to
C<use PLP::FastCGI>. If a server supports run arguments, a wrapper
script isn't even needed this way: just do /usr/bin/perl -MPLP::FastCGI.

PATH_TRANSLATED is explicitly removed from environment so file names are
gotten from SCRIPT_*, which mostly already point to the requested script
(at least much more correctly than can be determined from PATH_*).

This seems to work correctly on at least:
- Apache 1.3.34, 2.2.4, 2.2.8 with mod_fastcgi and mod_fcgid
- Lighttpd 1.4.7 and 1.4.18 with mod_fastcgi

Caching can be controlled by setting an environment variable PLP_CACHE
(unlike with mod_perl, no other means of configuration are provided).
If not specified, PLPcache will be turned on.

fcgi script

11 years agogeneralize reading post input
Mischa POSLAWSKY [Tue, 2 Oct 2007 10:08:26 +0000 (12:08 +0200)]
generalize reading post input

Input retrieval differs per server interface, so set $PLP::read to a
function providing a read of specified number of bytes. This differs
from $PLP::print as it's not just a name, because it won't be evalled
but called directly.