tcl-documentation-procs.tcl

  • last updated 10 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Extend tmpfile filter to behave in the "old way" (default), or in strict mode e.g. tmpfile(strict), enforcing the behavior for tmpfile in Aolserver/Naviserver when a form is processed

Reimplement ad_page_contract_filter_proc_tmpfile using security::safe_tmpfile_p

Some of the features implemented by this filter have been ported into the api, namely the possibility to fetch the valid temp folders from the subsite TmpDir parameter and the possibility to relax the check and allow also files deeper in the tmpfolder hierachy.

Notably, the hardcoded tmpfolders "/var/tmp" and "/tmp" have NOT been ported. One should configure these values via the many available options. security::safe_tmpfile_p is also more restrictive when a file exists, because it checks for ownership and read and write permissions on the file.

  1. … 2 more files in changeset.
Properly escape "<" and ">" in api-doc documentation.

Since all documentation is rendered via HTML, the characters

"<" and ">" have to be HTML-quoted, otherwise strange things

(omission, unintended renderings) might occur.

E.g. the sentence

Define an interface between a page and an

ADP <include> similar to the page_contract.

was rendered as

Define an interface between a page and an

ADP similar to the page_contract.

which is incorrect.

  1. … 13 more files in changeset.
Fix typo

Provide a default value for the filter

New ad_page_contract filter object_type

Rhis can enforce an object id to not only be formally correct, but also to be an object of a specific type. It can also be used as a simple existance check

  1. … 1 more file in changeset.
Update documentation

Collect common definition of an argspec flag in a proc to improve clarity

Introduce a new clock ad_page_contract filter:

this filter enforces that a datestring belongs to one of the clock formats specified in the argspec. By default, this will be %Y-%m-%d.

Cleanup

ad_page/include_contract argspec parsing reform: allow arbitrary characters in the argspec flag parameters

This reform allows to specify an argspec containing pipes, parenthesys and other so far forbidden characters as parameters for a flag. The purpose is to enhance the expressiveness of existing validators (e.g. the oneof validator) and enable new one, for instance, a date validator using a clock format as parameter.

Pipes and parenthesys need to be escaped via the backslash character in the new syntax.

  1. … 1 more file in changeset.
mitigate attacks, where the referer header field is changed to a malicious value

The problem does not exist, when CSP is defined properly.

Many thanks to Frank Bergmann for sharing the pen-test protocol

  1. … 2 more files in changeset.
Set ad_include_contract's local variables in a way that they are hinted as private by the "__" prefix: this reduces the chance of conflicting with popular variable names to pass to an include such as "context"

Improved spelling

  1. … 1 more file in changeset.
add log warnings when include-contract is violated, since (in most cases) the passed values should be pre-checked

make using page-filter "object_id" backwards compatible by allowing it to be used also during update scripts

  1. … 1 more file in changeset.
Reuse email validation logic

Fix ancient typo

use the right message key

VS: ----------------------------------------------------------------------

Added page_contract filter "object_id"

This change adds the page_contract filter "object_id", which validates

values whether these are syntactically acceptable as object_ids in

PostgreSQL and Oracle.

Note that before one is able to use the filter, the server has to be

restarted. Otherwise, when e.g. "apm/version_reload.tcl" would be

executed with the new filter, it would fail. So, one has to be careful

on update scripts, when people upgrade from old version not to create

a blocking mutual blocking condition.

  1. … 4 more files in changeset.
Remove non-functional "double click protection" in order to remove a potential attack vector

  1. … 1 more file in changeset.
added page contract filter "printable" to avoid passing of binary values to certain pages

  1. … 2 more files in changeset.
provide name for mutexes to ease spotting potential locks

  1. … 1 more file in changeset.
Important, although very simple reform in the page-contract filters: do not kill the case in the filter specs, or filters such as "w:oneof(One|Two)" or "locale:oneof(en_US|de_DE)" would not have a chance to match

Note that this makes the contracts stricter with respect to case, which might break obscure use cases...

fix typo

improve spelling: move closer to the linux documentation recommendations

  1. … 34 more files in changeset.
make minus sign optional again

fix typos

  1. … 1 more file in changeset.
Make number checking more strict (allow just number literals, which are OK for Tcl and SQL)

Deprecated get_referrer and NsSettoTclString, replace them with versions that respect OpenACS naming convention

  1. … 7 more files in changeset.