Changelog 2.6.0.16881 -> 2.6.0.16937
====================================

[UPD] waptconsole build waptagent: option to merge all parameters from "default" json configuration
* allow to embed all potential configuration parameters in addition to those currently editable in the form.
* add a popupmenu action to show the json config which will be stuffed with waptsetup
* add use_downloader param to dynamic config form
* this can be a dangerous option, as user does not immediatly see the content
of json. So json is opened right after build for checking, and the popup menu
Ctrl+Maj+J allow to see the merged config

[IMP] improve wapt-get command line feedback
* update tsynlog loglevel with --loglevel switch.

[IMP] wapt-get: add local-login to get a local token for tests
* take in account a WAPTSERVICE_TOKEN environment variable
* add a --waptservice-token option
* don't require server auth for server-request unless server requires it with a 401
* improves login prompts, print them in StdErr
* updates to wapt-get search and list text templates
* waptserver: OTP hint in authenticate realm

[FIX] local db param: be sure to escape '"' in param db json value

[UPD] waptwua: additional registry settings to prevent internet access in wsus mode
* add wu_server key in WUAServerStatus report
* add last_scan_service
* add scan_service and wsus_server dynamic config
* add Error Code column for windows updates install history
* try to keep error msg and code for each update installation

[FIX] waptwua: don't apply settings to registry if waptwua.enabled is None (= don't change)
* apply registry and service settings to waptwua if reload_config
* create registry keys SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate and SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU
* set FillEmptyContentUrls=1

[FIX] waptself: regression on empty categories combo

[IMP] waptwua: add intranet WSUS scan mode with direct_download using UpdateDownloader instead of CopyToCache
* new "wsus_server" parameter to specifiy WSUS server when "scan_service=WSUS" in [waptwua] wapt-get.ini section
* waptwua: improve errors logging
* pywaptwua: disable debug log for callbacks

[IMP] removed use of cpu_info python module which starts a secondary python process for #10087
* add waptlicences  cpu_infos_text and system_infos_summary

[FIX] waptconsole trying to launch explorer in a strange user directory windows subdirectory
* use GetEnvironmentVariableUTF8('WINDIR') for GetWindowsFolder instead of GetSpecialFolderLocation(CSIDL_WINDOWS)

[FIX] waptconsole: violation access in reporting queries in some cases

[FIX] waptagent write_audit_data insert: handle conflicts on id key
* if several _different_ processes write audit data in the same second, id calculation is handled by db
* improve max_count and expiration_date handling
* use a time based id for audit_data
* handle properly audit_data if host is reformated after registration on server
* send max audit value_date as iso date in the hashes the same way other hashes are handled
* added a higher resolution now_isodate_utc() function
* added a hack to prevent now_isodate_utc returning 2 times the same value in case of high frequency calls

[FIX] waptserver hostauditdata: unique index for the .on_conflict('update' to handle conflicts on (host_id,value_id) and avoid duplicating rows
* on_conflict update instead of ignore
* force send audit_data if previous server hash of audit_data did not not look like a date (for backward compat)

[FIX] regression on faked host_organizational_unit_dn
* host_dn must be calculated from CN=<computer_name>,<host_organizational_unit_dn> in this case
* waptwua: reworked install_callback

[UPD] don't zero fill password in waptlicences "wapt_local_json_get" and wapt_local_login" helpers
* python str was zero filled too ...

[NEW] python waptlicences wapt_local_json_get imporved and new 'wapt_local_login" helper

[UPD] add loglevel_waptwua to dynamic configuration form

[FIX] missing proxy in _waptwua_on_get_repo_url callback result
* bad force argument for download_updates()

[FIX] breaking change: don't use wincomputername() api for windows host computer_name inventory.
* use get_computer_name() instead.

[FIX] waptwua regression :  waptwua repo url calc...
* fix registry keys with faulty ending spaces
* pywaptwua: code cleanup
* UpdateServerStatus proxy callback: ensure we have the GIL before calling the python code
* restore threads in installed_windows_updates() and update_history() long running queries.
* waptwua: registry settings cleanup
* pywapwua GIL management tweaking

[NEW] waptwua : load an optional download_urls override map from pf32\wapt\waptwua\download_urls_patches.json
* {"c0fef64e-5cc8-468a-bab8-2e70ceecc203_100": ["https://catalog.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/db0d5972-d5ac-4706-ae45-d2fb38680308/public/windows11.0-kb5050021-x64_d1c06c1c0d32a7ff8879f1e2a386d26df113a227.msu"]}
* add a "scan_service" parameter to scan using WU or MU

[NEW] waptwua : add a callback in waptwua to override the download_urls associated with an IUpdate instance
* to hard code in python some MSU urls for win11 23H2 for example

[IMP] peercache: enhanced logged content in verbose mode
* peercache: avoid mdSeq false positive error

[IMP] waptserver register endpoint: optionaly returns configurations on register
* should allow to apply configurations right after registration

[IMP] Remove sudo in postconf