• last updated 10 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
provide a fork-free implementation of dot rendering

Improving ad_parameter_cache:

- added handling of cachingmode "none"

- added implementation via "nsv_dict" (cluster aware)

- execute parameter callbacks cluster-wide

- version number bumped to 5.10.1d4

improve spelling

added support for SCRYPT (RFC 7914) as password hash function.

The use of scrypt requires NaviServer compiled with OpenSSL 3.0 or newer

  1. … 1 more file in changeset.
stick to the original names with the "-" since this is also the naming convention outside of OpenACS (e.g. "scram-sha-256")

  1. … 5 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"

Change caching of driver keys

There seems to be a bug in "db_driverkey", when OpenACS connects to

multiple databases [1]. The situation with "db_driverkey" is

complicated by the fact that this function is sometimes called with a

database name in its argument "dbn", and sometimes with a database

handle. This is something to look at in the future.

The new version removes the per-thread caching, which was introduced

to reduce the high number of mutex locks caused in busy machines. The

new version is better by a factor of 2 than older versions, but relies

on NaviServer.

[1] https://openacs.org/forums/message-view?message_id=5537865

Complete reform introduced in https://cvs.openacs.org/changelog/OpenACS?cs=oacs-5-10%3Agustafn%3A20210928124647

- add datamodel change to the creation script

- refactor algorithm names in a way that the new procs will comply with acs-tcl.naming__proc_naming automated test

  1. … 5 more files in changeset.
Stronger password hashes for OpenACS

This change introduces the possibility to use either the classical

OpenACS password hash algorithm "salted-sha1" or the SCRAM passord

function "scram-sha-256". The latter can be used by (a) using the

most recent version of NaviServer (from Sept 28, 2021 or newer) and

(b) by configuring the password hash preferences via Kernel package

parameter "PasswordHashAlgorithm". The package parameter can contain a

list of multiple hash algorithms in preference order. The most

preferred available algorithm is chosen.

By default, the "PasswordHashAlgorithm" is "salted-sha1", and the

behavior is as before. After upgrading to the new version of acs-tcl

and acs-kernel, the preference list can be configured. When a user

logs in and the preferred available algorithm is different from the

previously used algorithm, the upgrade is performed for the user

automatically.

The usage of SHA1 in OpenACS is easily target of security audits (see

[1]). The biggest danger is that if somebody gets full access to the

"users" table (e.g. when decommissioning a hard disk). In this case

the hashes can be attacked with dictionaries by using some crypto

hardware (when someone gets raw access to the DB, one has usually some

other big problems). However, by using the "scram-sha-256" hash

function this danger is substantially reduced. This function computes

a password hash using PBKDF2 (Password-Based Key Derivation Function

2). This function is used to reduce vulnerabilities of brute-force

attacks against password hashes. The hash function of SCRAM is PBKDF2

[RFC2898] with HMAC as the pseudorandom function (PRF) and with dkLen

== output length of HMAC == output length of the digest function. So,

it uses a better hash algorithm (sha-256 vs. sha1) and applies this a

high number of times (15K times for a password hash computation).

NaviServer supports as well the even better SCRYPT algorithm, but this

is only available when NaviServer is compiled with OpenSSL 3.0 or

newer. On the contrary, scram-sha-256 (actually PKCS5_PBKDF2_HMAC) is

available since OpenSSL 1.0.0 (2015).

All the improved hash functions require NaviServer with its tight

integration to the crypto functions of OpenSSL.

[1] https://openacs.org/forums/message-view?message_id=5522562

  1. … 3 more files in changeset.
Add missing argument expansion and comply with automated test

Test for ad_register_proc exposing a bug due to missing argument expansion

    • -0
    • +159
    ./tcl/test/request-processor-procs.tcl
file request-processor-procs.tcl was initially added on branch oacs-5-10.

    • -0
    • +0
    ./tcl/test/request-processor-procs.tcl
Improved spelling

let the per_thread_cache behave like the per_connection_cache when the NaviServer configuration valriable "cachingmode" is set to none

fix release dates in .info files

  1. … 82 more files in changeset.
release work

  1. … 204 more files in changeset.
Unwrap fake oneliners

Fix typo

prettify error message

make ad_dom_sanitize_html more robust against invalid input

use per-thread caching infrastructure instead of reinventing

bump version numbers of 5.9|5.10 packages to 5.10.0b1

adjust dependencies

  1. … 87 more files in changeset.
Cache the information about a package being a singleton and expose into a private api, use the api in parameter::get_from_package_key, called quite often in our downstream pages

Update italian localization

    • -0
    • +1
    ./catalog/acs-tcl.it_IT.ISO-8859-1.xml
  1. … 2 more files in changeset.
fixed bug in redirects and disabled acs-testing package, changed node info from array to dict

    • -20
    • +22
    ./tcl/request-processor-procs.tcl
Update es_ES translation

    • -0
    • +1
    ./catalog/acs-tcl.es_ES.ISO-8859-1.xml
  1. … 6 more files in changeset.
fix case where the manual slash-parsing in the sitenode code is confused with percent-substitutions

This is just a "quick fix", since the Proper solution in more complex:

# A URL path /%2f/ is syntactically permissible,

# but this is not supported in the current site-nodes code. It

# would be correct, to avoid the parsing of the slashes here and

# to process instead the result of [ns_conn urlv], which is

# already parsed (before the percent substitutions). This would

# probably require the request processor to perform some mangling

# of urlv in vhost cases to set a a proper [ad_conn urlv] ... and

# of course to pass the "urlv" instead of the "url" to the

# slash-parsing functions.

improve German message catalog

    • -3
    • +3
    ./catalog/acs-tcl.de_DE.ISO-8859-1.xml
add log warnings when include-contract is violated, since (in most cases) the passed values should be pre-checked

improve documentation