[Changelog] opsi-script (4.12.17.2-6) Fixes: - GetProductPropertyList(<propertyname>,<default_value>): now correctly works with opsiconfd >= 4.3.28.15 Updates: - openssl version to 3.0.16 -- j.werner <j.werner@uib.de> 13 February 2025 opsi-script (4.12.17.1-6) Fixes: - Logging: do not log product property states on lower log level than 9 during startup due to potential confidential content. - JSON handling: improvements in JSON handling for large and complex JSON strings including lot of special chars -- j.werner <j.werner@uib.de> 22 January 2025 opsi-script (4.12.17.0-6) Fixes: - powershellcall/ExecWith powershell: avoid output with one empty string in stringlist also for a internal function may used in very rare cases Updates: - increased performance (in some cases) while patching user profiles [W] - opsiscript lib: uib_exitcode.opsiscript now also handles winget exitcodes, function isWingetExitcodeFatal -- j.werner <j.werner@uib.de> 28 October 2024 opsi-script (4.12.16.1-6) Fixes: - powershellcall/ExecWith powershell output: avoid output with one empty string in stringlist -- d.oertel <d.oertel@uib.de> 13 September 2024 opsi-script (4.12.16.0-6) Updates: - openssl version to 3.0.15 -- j.werner <j.werner@uib.de> 04 September 2024 opsi-script (4.12.16.0-5) urgency=medium Fixes: - sleepseconds: better handling of syntax and runtime errors - powershellcall/ExecWith powershell: approvments in runnning of powershell commands on machines were the powershell execution policy is "Restricted" or "AllSigned" or "RemoteSigned" - HasMinimumSpace for Linux and macOS: if drive name is empty the actual dir "." is used, if incorrectly %SYSTEMDRIVE% is used a warning is logged and as fallback the root dir: "/" is used Changes: - logging: for more clarity we remove logging indents and set the log level for (IF-)conditions to "Debug2" -- j.werner <j.werner@uib.de> 08 August 2024 opsi-script (4.12.15.4-5) urgency=medium Fixes: - an issue in connection with opsi-auto-update - jsonAsArrayToStringList, stringListToJsonArray: more robust conversion of JSON array from / to string list - testsyntax: sleepseconds - no parameter error message in testsyntax mode - files section: more reliable deleting of files under windows -- j.werner <j.werner@uib.de> 17 July 2024 opsi-script (4.12.15.3-5) urgency=medium Fixes: - an error in the former hotfix (4.12.15.2-5) for High DPI screens -- j.werner <j.werner@uib.de> 01 July 2024 opsi-script (4.12.15.2-5) urgency=medium Fixes: - BatchGUI was not displayed correctly on High DPI screens -- j.werner <j.werner@uib.de> 27 June 2024 opsi-script (4.12.15.1-5) urgency=medium Fixes: - message in BatchGUI was not displayed correctly -- j.werner <j.werner@uib.de> 19 June 2024 opsi-script (4.12.15.0-5) urgency=medium Fixes: - in some circumstances powershellcalls/ExecWith powershell does not work if powershell execution policy was set by "UserPolicy" to "AllSigned" or "Restricted" - TOML file handling: now correctly escape backslash Updates: - openssl version to 3.0.14 - used openssl version is logged -- j.werner <j.werner@uib.de> 13 June 2024 opsi-script (4.12.14.1-5) urgency=medium Fixes: - opsi-template-with-userlogin: the fqdn/clientdID is no longer empty -- j.werner <j.werner@uib.de> 24 April 2024 opsi-script (4.12.14.0-5) urgency=medium Fixes: - uib_reboot_lib.opsiscript: fix in prepare_uefi_boot_to for Linux Changes: - opsiservicecall now specifies its own user agent: ProductID + ' (opsiservicecall:<typeofcall>)' Updates: - uib opsiscript libs to version 4.12.14.0 - uib_state_and_condition.opsiscript: Update for deffunc isRebootPending(), new reg keys; documentation -- j.werner <j.werner@uib.de> 12 April 2024 opsi-script (4.12.13.0-5) urgency=medium Fixes: - getMyIpByTarget on MacOS - problem with backslash(\) in a comment - Files section: "unzipfile" now handles UTF8 filenames in zip archives correct Changes: - update the progress during product processing for action requests uninstall and always - isFatalError: additional log the error message in the logfile - Registry section: improvments regarding modifier AllUserProfiles(former AllNTUserDats) and for user logging scripts Updates: - opsi-script logging at startup now contains compile date information - Files section: unzipfile comment has a new parameter encoding - ExecWith section: now works with pwsh or pwsh.exe - FileExists-functions: log resulting filename -- j.werner <j.werner@uib.de> 9 February 2024 opsi-script (4.12.12.1) urgency=medium Fixes: - opsiservicecall: using modifiers opsiclientd/opsiclientd-once now work also on Unix systems [L/M] -- j.werner <j.werner@uib.de> 9 November 2023 opsi-script (4.12.12.0) urgency=medium Fixes: - local user profiles: patch local NTUSER.dat also if logged-in user could not be determined [W] - event silent install: show an individual error message in report - opsi-script will no longer run in an exception, if the setActionProgress command is used and no service is available Changes: - powershellcall: improve robustness (ExecutionPolicy handling, old powershell versions) [W] - use new opsi 4.3 API method "configState_getValues" to read configs from service (opsi 4.3) - remove/replace deprecated API methods (opsi 4.3) Updates: - fpTOML library to new version (https://github.com/genericptr/fpTOML) - uib opsiscript libs to version 4.12.12.0 -- j.werner <j.werner@uib.de> 3 November 2023 opsi-script (4.12.11.1) urgency=medium Changes: updated graphics to new design Custom skin file handling -- d.oertel <d.oertel@uib.de> 22 September 2023 opsi-script (4.12.11.0) urgency=medium Fixes: correct logviewer paths Changes: update ssl version to openssl 3 use new product sorting algorithm (only opsi 4.3) update translations -- j.werner <j.werner@uib.de> 21 July 2023 opsi-script (4.12.10.0) urgency=medium Fixes: Primary sections: fix subrelease in getLinuxVersionMap [L] Registry: do not create key Wow6432Node if writing in key HKCU/Software on 64 systems [W] Changes: Turn the fatal error in case of no or an empty actions section into a warning with improved description New: Files section: we prevent the deletion of the program files directories 'C:\Program Files\' and 'C:\Program Files (x86)\' [W] LinkFolder section: delete_element can now also delete url links if the link name ends on '.url' Registry section: allow modifier name '/AllUserProfiles' in addition to '/AllNTUserDats‘ [W] ShellInAnIcon/DosInAnIcon/ShellBatch/DosBatch sections: unify sections with 'ShellScript' as new name. The old names are discouraged. Logging: opsi-script log header now shows 'MS Windows 11.0 (10.0)' as version on Windows 11 operating systems [W] -- j.werner <j.werner@uib.de> 14 June 2023 opsi-script (4.12.9.1) urgency=medium Fixes: Empty (property) values from service are now handled correct. -- j.werner <j.werner@uib.de> 14 April 2023 opsi-script (4.12.9.0) urgency=medium Fixes: remove possible memory leaks remove TQProgressBar to fix memory leaks fix in handling profiles, avoid empty string in the profilelist [W] Changes: replace deprecated API methods, adaptations for opsi 4.3 -- j.werner <j.werner@uib.de> 11 April 2023 opsi-script (4.12.8.1) urgency=medium Fixes: fix a problem in BatchGUI related to user login scripts. fix in FileGetWriteAccess, only set rigths for the current director but not for any subdirectories and files within -- j.werner <j.werner@uib.de> 03 April 2023 opsi-script (4.12.8.0) urgency=medium Fixes: removeFromListByContaining: Correct removing of the last element from the list. TOML files: Fix that all boolean values are lower case after modifications to match TOML syntax. Actions section: Log an error if an actions section is expected but not found. New: General: High DPI support for BatchGUI. opsi-script for aarch64 (raspi 64 bit). EXPERIMENTAL! Sections: Primary sections: New script statement 'setdebug_lib' to set/change the config opsi-script.global.debug_lib within your script. LinkFolder: delete_subfolder, better error reporting on non win32 systems. -- j.werner <j.werner@uib.de> 17 March 2023 opsi-script (4.12.7.5-3) urgency=medium Fix: Syntax Check: - include_insert/include_append: if the include file is not found, the script is not set to failed in testsyntax mode anymore. - WinBatch/DosBatch: if timeoutseconds is not an integer, the script is not set to failed in testsyntax mode anymore. - ShowBitmap (only on windows): if a slash in the parameter string without number is given, the script is not set to failed in testsyntax mode anymore, because it could be unix code (with a unix path) opsi-script libs [W/L/M]: - uib_lin_install.opsiscript: fixes in installupdates(), linuxRemoveOneOf($packagelist$ : stringlist) : string, cleanupPackageSystem() -- j.werner <j.werner@uib.de> 4 January 2023 opsi-script (4.12.7.4-3) urgency=medium Fix: Registry section [W]: - exportformat: hexdecimal values are now handled correctly. -- j.werner <j.werner@uib.de> 14 December 2022 opsi-script (4.12.7.3-3) urgency=medium Fix: Registry section [W]: - exportformat: hexdecimal values with letters throw no syntax errors anymore. opsi-script libs [M]: - uib_macosinstalllib.opsiscript: fixes whitespace handling in deffunc install_macos_app($myapp$ : string) : string. -- j.werner <j.werner@uib.de> 14 December 2022 opsi-script (4.12.7.2-3) urgency=medium New: Parser [W/L/M]: - Syntax Check: if testsyntax is set (via config or opsi-script-gui -> Button Test Syntax) only the syntax of the script is tested. The script is not excecuted. Fixes: Parser [W/L/M]: - fix in OpsiServiceCall section xml2 [W]: - attribute sequence - makeNodePathWithTextContent: - additional parameter for strictmode - use strictmode parameter for node creation LinkFolder [W/L/M]: - In DeleteShellLink use GetSpecialFolderPath instead of hard-coded path to handle all kinds of base folders -- j.werner <j.werner@uib.de> 05 Dec 2022 opsi-script (4.12.6.2-3) urgency=high Fixes: WinBatch, DOSBatch/ShellBatch/DOSInAnIcon/ShellInAnIcon [W]: fix in WaitForProcessEnding. -- j.werner <j.werner@uib.de> 19 Oct 2022 opsi-script (4.12.6.1-3) urgency=medium New: Registry section [W]: - We support the data type QWord. - New command "deleteListEntries" to remove entries from list variables. Files section [L]: copy -u for Linux. Functions: - HashFromFile(<file>,<hash algorithm>) [W/L/M]: Supporting about 80 hashing algorithms. - GetValueFromIniFile (<file>, <section>, <key>, <defaultvalue>, [<encoding>]) [W/L/M]: new optional encoding parameter. EXPERIMENTAL: Statement reloadProductList [W/L/M]: Product list from the opsi-server can now be reloaded into ospi-script without the need of a reboot. The reload occured after finishing the script in which reloadProductList is called. Fixes: Interpreter [W/L/M]: If the script could not be loaded the product is not set to successful anymore. External processes[L/M]: at unix the exicodes also from child processes are caught to avoid zombies. Actions section [W/L/M]: - Parse and evaluate generic stringlist equal to createStringList for correct functionality. - Generic string list definition works the same way as the function createStringList now. - Throw an error if a variable is defined twice outside of defined functions. Files section [W/L/M]: - del command now deletes any file including hidden files. Changes: Actions section [W/L/M]: - direct initialization of variables (string and stringlist) works similar to 'set' now, e.g. logging. Registry section [W]: - synchronize data type handling with the documentation, i.e. supp does not change data types. Functions: - md5fromFile(<file>) [W/L/M]: now uses internally the new function HashFromFile. -- j.werner <j.werner@uib.de> 31 Aug 2022 opsi-script (4.12.5.6-3) urgency=high Fixes: Files section: del command with empty string e.g. del -sf "" does not create an exception anymore, gives only a warning -- j.werner <j.werner@uib.de> 14 July 2022 opsi-script (4.12.5.5-3) urgency=medium Fixes: getLinuxVersionMap/getLinuxDistroType now correctly work on new linux distributions where lsb_release does not work anymore -- j.werner <j.werner@uib.de> 14 July 2022 opsi-script (4.12.5.4-3) urgency=low Fixes: config opsi-script.global.writeProductLogFile is created as boolean also if config opsi-script.global.writeProductLogFile already exists but with wrong type -- j.werner <j.werner@uib.de> 29 June 2022 opsi-script (4.12.5.4-2) urgency=low Fixes: powershellcall with no access string given resulted in an empty modifier instead of the default 'sysnative' config opsi-script.global.writeProductLogFile is created as boolean. -- j.werner <j.werner@uib.de> 22 June 2022 opsi-script (4.12.5.3-1) urgency=low Changes: * powershellCall [W]: execution of powershellcall with powershell.exe -ExecutionPolicy ByPass -- j.werner <j.werner@uib.de> 09 June 2022 opsi-script (4.12.5.2-1) urgency=low Fixes: * webservice [M]: fix on openssl. Openssl units from opsi-script 4.12.5.1 did not work correctly on MacOS. * files section [W/L/M]: handle division by zero if files to zip are empty * powershellCall [W]: correction for powershellcall without assignment -- j.werner <j.werner@uib.de> 09 June 2022 opsi-script (4.12.5.1-1) urgency=low New: * Patches section [W]: support %userprofiledir% inside of patches section. * Files section [L]: Command CHMOD with mode formats 'ugo=+-rwx' and '-rwxrwxrwx' and with parameter '/AllSubFiles'. * functions for TOML files handling [W/L/M]: LoadTOMLFile(<TOMLfilePath>): StringList, GetTOMLAsStringList(<TOMLcontents>): StringList, GetTOMLKeys(<TOMLcontents>): StringList, GetTOMLTableNames(<TOMLcontents): StringList, GetTOMLTable(<TOMLcontents>, <table>): StringList, ReadTOMLFile (<TOMLfilePath>): String, GetTOMLAsString(<TOMLcontents>): String, GetTOMLTableAsString(<TOMLcontents>, <table>): String, GetValueFromTOML(<TOMLcontents>, <keyPath>, <defaultValue>): String, ModifyTOML(<TOMLcontents>, <command>, <keyPath>, <value>): String, DeleteTableFromTOML(<TOMLcontents>, <tablePath>): String, ConvertTOMLtoJSON(<TOMLcontents>): String, SaveToTOMLFile (<TOMLcontents>, <TOMLfilePath>) : boolean, ConvertTOMLfileToJSONfile(<TOMLfilePath>, <JSONfilePath>): boolean. * GetRegistry functions [W]: getRegistryKeyList(<regkey>, <access str>), getRegistryVarList(<regkey>, <access str>), getRegistryVarMap(<regkey>, <access str>). * defined functions [W/L/M]: support string concatenation in call of defined functions. Changes: * openssl [W]: update openssl on Windows to version 1.1.1n. * webservice [W/L/M]: improved debugging and error handling. * getWinProcessList [W]: use wincp2utf8 to reencode results. Fixes: * PowershellCall [W]: now shows output also for piped commands e.g. powershellCall("Get-hotfix | Select HotfixId"). Neverthless be carefull using piped commands in powershellCall! * Files section [W/L/M]: "del" now works with wildcards. * Registry section [W]: "deletekey" now handles umlauts correctly. * Comment [W/L/M]: Syntax errors in comments were ignored so far, now they will throw a syntax error. * isProcessChildOf [W/L/M]: avoiding of an endless loop (hanging) which might occur under certain circumstances. * sub <file name> [W/L/M]: spaces in front of the lines of a sub file will not be removed any more (so that e.g. python code in an ExecWith section keeps its syntax). * opsiservicecall [W/L/M]: support newline and tab. * oswebservice: correct detection of opsi 4.0/4.1 (necessary for establishing the connection) -- j.werner <j.werner@uib.de> 25 Mai 2022 opsi-script (4.12.4.37-1) stable; urgency=low * osparser: new global constant %opsiUsertmpDir%; implements #4496 * osparser: allow json value syntax in params in opsiServiceCall: i.e. numeric/boolean values, arrays, objects and null without quotes; implements #4705 * oscertificates: finalize function for linux /mac: function pemfileToSystemStore(filename: string): boolean; function removeCertFromSystemStore(labelstr: string): boolean; function listCertificatesFromSystemStore(): TStringList; function isCertInstalledInSystemStore(labelstr: string): boolean; * new function isCertInstalledInSystem(<label>): boolean; [WLM] * new function importCertToSystem(<filename>): noresult; [WLM] * new function removeCertFromSystem(<label>): noresult; [WLM] * new function listCertificatesFromSystem: stringlist; [WLM] * new command ELSEIF <condition> [WLM] * opsparser: implement elseif * opsparser: A more detailed description how the If / ELSE / ELSEIF / ENDIF parser works * interacticve GUI: Button "View Log" now shows the log in the opsi-logviewer [W/L] * killtask (fix): a process of another user can be killed if opsi-script is running as SYSTEM [W] * osnetworkcalculator: fixes at cidrToNetmask * osnetworkcalculator: new function netmaskToCidr(netmask: string): string; * new function cidrToNetmask(<string>): string; [WLM] * new function netmaskToCidr(<string>): string; [WLM] * osparser: new global constant %FQDN% for fqdn in network (not opsi service) context; implements #4554 * osparser: fix occasionally access violation when using getReturnListFromSection/getOutStreamFromSection -- d.oertel <d.oertel@uib.de> Tue, 01 Feb 2022 15:00 opsi-script (4.12.4.36-2) stable; urgency=low * library uib_lin_install: remove "--no-install-recommends" from debinstall -- d.oertel <d.oertel@uib.de> Tue, 08 Feb 2022 15:00 opsi-script (4.12.4.36-1) stable; urgency=low * oszip: show progressbar while zipping or unzipping files * oswebservice: getOpsiModules: integrate new backend_getLicensingInfo method with fallback to old backend_info * oswebservice: retrieveJSONObject: retry on other communication mode only on 400- bad request result * oswebservice: retrieveJSONObjectByHttpPost: retry on other communication mode only on 400- bad request result * oswebservice: getOpsiModules: Legal notice to our license protection * osfunclin: linIsUefi: implemented uefi test for linux * boolean function runningOnUefi now also supports linux * updated unit uSMBIOS (TSMBIOS) (https://code.google.com/p/tsmbios/) * uSMBIOS: with fix https://github.com/RRUZ/tsmbios/issues/15 * osparser: fix %Systemroot% and %SystemDrive% for terminal servers ; references #4711 * oswebservice: better opsi 4.0 compatibility by investigating the server response * osurlparser: createUrl: initialize uriobj.HasAuthority -- d.oertel <d.oertel@uib.de> Wed, 19 Jan 2022 15:00 opsi-script (4.12.4.35) stable; urgency=low * osparser: getMSVersionMap: remove double ReleaseID= * osparser: executeWith: AllSigned Hack: use: "Get-Content -Path '+ tempfilename +' | Out-String | Invoke-Expression" * osparser: new function getMSVersionName: string * oslinmount: replace getGeneralConfigValue by configState_getObjects * osprocesses: new isProcessChildOf(searchproc,parentproc: string): boolean; * new boolean opsi-script function: isProcessChildOf(<searchprocstr>, <parentprocstr>): bool; implemented for WLM * new opsi-script constant %opsiscriptprocname% represents the name of the just running opsi-script process (opsi-script.exe, opsi-script, opsi-script-gui) changes in opsiconf, osparser, opsiscript.lpr * write now component logs to subdir 'lastprodlogs' * osprocesses: isProcessChildOf also for win64 * oswebservice: sendlog: fix boolean values for append at log_write * osfunclin: getProfilesDirListLin fix non standard lines from getent passwd * osparser: executewith: powershell: remove a trailing '-file' from programparas * osGUIcontrol: skindirectoryDevelopment = '../../../skin'; * osGUIcontrol: Linux: skindirectoryCompatibility = '/opt/opsi-script/skin'; -- d.oertel <d.oertel@uib.de> Tue, 04 Jan 2022 15:00 opsi-script (4.12.4.34) stable; urgency=low * oszip: catch exceptions * osparser: fix callingsection parameter in call of SearchForSectionLines from producestringlist:getOutstreamFromSection / getReturnlistFromSection * powershell AllSigned Hack: type tmpfile | powershell -command - will be switched on automatically if AllSigned is detected. Additional parameters (to script or powershell) will be ignored in this case. * oslog: new property WriteComponentFile. if true a logfile for every component (product) is (re)written. * osconf: new config: opsi-script.global.writeProductLogFile (default=false) * oslog: changed histrory line to: 'handled: <productid> Version: <versiion> Request: <request> Result: <result> * osparser: opsiservicecall: new line allowed: "timeout" : <int> * oswebservice: TOpsiMethodCall has now property timeout -- d.oertel <d.oertel@uib.de> Wed, 15 Dec 2021 15:00 opsi-script (4.12.4.33) stable; urgency=low * osparser: more debug logs in getFileInfoMap * osparser: getFileInfoMap: a fix at PredefinedStrings -- d.oertel <d.oertel@uib.de> Fri, 03 Dec 2021 15:00 opsi-script (4.12.4.32) stable; urgency=low * osparser: files section: unzip create target dir * added unit oscertificates * new void function ImportCertToSystem(<cert file name>) * oscertificates: add functions for linux /mac * osfunclin: getPackageLock: fix for zypper, general fix * ostxstinglist: new method: getStringValueWithDefault * GetProductProperty: if no service context, tries to find property in %scriptpah%/properties.conf * GetProductPropertyList: if no service context, tries to find property in %scriptpath%/properties.conf * new: stringlist literals in json style are allowed now (set $list$ = '["he","ho"]') * fix overwrite GUI messages by standard skinreload from doAktionen * new: allow after DefVar inital value: defvar $str$ = "huhu" * new: allow after DefStringlist inital value: defstringlist $list$ = '["he","ho"]' -- d.oertel <d.oertel@uib.de> Fri, 19 Nov 2021 15:00 opsi-script (4.12.4.31) stable; urgency=low * osfunc: AllCopyRecursive: for better performance: doNotChangeAccessRights: boolean = True; * osparser: executeWith: enable runasloggedonuser * osfilehelper: MakeBakFiles: correct format mask for log backups * osparser: files section: move / rename: allow also for directories -- d.oertel <d.oertel@uib.de> Tue, 16 Nov 2021 15:00 opsi-script (4.12.4.30-2) stable; urgency=low * opsi-script.exe codesigned -- j.werner <j.werner@uib.de> Fri, 05 Nov 2021 12:23 opsi-script (4.12.4.30-1) stable; urgency=low * osfuncwin: fixed that opsi-script crashed if Windows API function GetFirmwareType is not available in kernel32.dll (for example on Windows 7/ Windows Server 2008) -- j.werner <j.werner@uib.de> Wed, 27 Oct 2021 12:22 opsi-script (4.12.4.29) stable; urgency=low * osfuncwin: WinIsUefi uses new function GetBiosMode if Windows Verison >= Windows10. This function calls the Windows API function GetFirmwareType to detect Bios mode * osparser: doLDAPSearch: callLDAP: if port 636 then use ssl * remove ldapsend.pas from opsi-script dir (use from synapse) * osfilehelper: MakeBakFiles: use two digit rotation numbers if log_rotation_count > 9 use three digit rotation numbers if log_rotation_count > 99 * osconf: configuration: log_rotation_count (default = 8) (max=999 will need new config: opsi-script.global.log_rotation_count to change (allowed 0 - 999) * osfuncwin: getW10Release: Fixes detection of w10 release > 2009 (21h1) ; fixes #4665 getW10Release is now also called from osparser -- d.oertel <d.oertel@uib.de> Mon, 18 Oct 2021 15:00 opsi-script (4.12.4.28) stable; urgency=low * osparser: do XMLPatch2Main: new xml2-section commands: * setNodePair <keyNodeName> <keyNodeTextContent> <valueNodeName> <valueNodeTextContent> used for Apple info.plist * osxmlsections: TuibXMLDocument: new: setNodePair(keyNodeName: string; keyNodeTextContent: string; valueNodeName: string; valueNodeTextContent: string): boolean; * Execwith: if there is a parameter '/HookScript <path to script file>', then the existing 'script file' will be called with the temporary file as parameter before passing it to the interpreter. The call of the hookscript has a 40 sec Timeout * osfunc: additional log at FileCheckDate * DPI awareness True/PM_V2 * osparser: doAktionen: FBatchOberflaeche.LoadSkin(''); and Processmess to reload DPI scaling * osparser: execPowershellCall has now additionl parameter optionstr that may hold additional execwith parameters * osparser: getDecimalCompareSign (used by compareDotSeperatedNumbers): now support leading zeros (then it will handled as float starting with 0.) now support a letter as last part of the number (1.0.23b like is used at openssl versions) * osparser: executewith: call powershell scripts with -file parameter in order to get the correct exitcode * osparser: fix Access Violation in CreateAndProcessScript on empty scriptfiles. -- d.oertel <d.oertel@uib.de> Tue, 31 Aug 2021 15:00 opsi-script (4.12.4.27) stable; urgency=low * new generic section parameter /AllUserProfiles (as alias for /AllNTUserProfiles) * osxmlsections: fixes for creating not existing file * osparser: doXMLPatcg2Main: check acces rights and for successful savetofile * osparser: handleFileExists32: fileexists for win also via shlwapi.PathFileExistsW * new unit oswinacl with function AddAccessRightsToACL * osfunc: FileGetWriteAccess calls at windows also AddAccessRightsToACL * osencoding: saveTextFileWithEncoding: ForceDirectories for output * osfunc: toCopyOrNotToCopy: fix for copy -r -- d.oertel <d.oertel@uib.de> Thu, 12 Aug 2021 15:00 opsi-script (4.12.4.26) stable; urgency=low * Parameter 'pcprofil' not supported any more * osencoding: new function isPlainAsciiString(const searchText: string): boolean; * osencoding: func searchEncoding now detectd also isPlainAscii * osparser: supress any encoding Warnings if isPlainAscii * osencoding: getFileBom: added fmShareDenyNone to open mode * osencoding: getFileBom: 3 retries * osparser: tsImportLib: do not reload the file at 'Imported all functions from file' * osparser: tsecExpected: (external sub sections): try-exept getFileBom + LoadValidLinesFromFile -- d.oertel <d.oertel@uib.de> Tue, 27 Jul 2021 15:00 opsi-script (4.12.4.25) stable; urgency=low * switch to Lazarus 2.2 / FPC 3.2.2 * osparser: include_append: comment out 'encoding=' lines from include_append because this line can become a part of a secondary section -- d.oertel <d.oertel@uib.de> Tue, 20 Jul 2021 15:00 opsi-script (4.12.4.24) stable; urgency=low * new: xml2 sections: /encoding Parameter * new: xml2 sections: /AllNTUserProfiles Parameter * osfunc: file functions use findfirstUTF8 instead of findfirst * xml2 sections: many log warnings lowerd ti LLInfo * xml2 sections: new command: rootNodeOnCreate = <node> * xml2 sections: not existing files will be created using the value of rootNodeOnCreate, fallback to 'rootnode' if not existing * osparser: include (append / insert) statements fixes on read file with encoding * osparser: importlib statements fixes on read file with encoding * osparser: less encoding reload in LoadValidLinesFromFile * osencoding: more logging and retries at loadTextFileWithEncoding in order to fix 'file in use' error. -- d.oertel <d.oertel@uib.de> Mon, 05 Jul 2021 15:00 opsi-script (4.12.4.23) stable; urgency=low * osfuncwin2: fix for function resolveWinSymlink * new constant %opsiserviceClientId% (FQDN in service context, empty without) * parameter /clientid if present wil be ussed as preferred source for %hostid% * new parameter /depotpath (only together with /opsiservice) to pass the path to the depot * linux opsi-script library search path: %scriptpath% // standard by definition %ScriptPath%/../lib // standard by definition './lib' // new standard directory in opsi-script directory '/usr/share/opsi-script/lib' // backward compatibility directory * linux skin directory search path: '/usr/share/opsi-script/customskin' // custom skin directory './skin' // new standard skin directory in opsi-script directory '/usr/share/opsi-script/skin' // backward compatibility directory * linux locale directory search path: './locale' // new standard locale directory in opsi-script directory '/usr/share/locale/....' // backward compatibility directory * removing links to http://www.opsi.org/credits/ * osinteractivegui: set copyright tro 1995-2021 * Fixes detection of w10 release > 2009 (21h1) (osparser) ; fixes #4665 * New cli parameter /ServiceBatch if /serviceBatch then also needed: /ClientId <> /opsiservice <> /username <> /password <> /productId <> and <script path> * New config opsi-script.global.supressSystemEncodingWarning if true then the following warning will be suppressed: 'Encoding=system makes the opsiscript not portable between different OS' * osfuncwin2: replace of winst32.exe in funcwin2 by ExtractFileName(ParamStr(0) -- d.oertel <d.oertel@uib.de> Tue, 08 June 2021 15:00 opsi-script (4.12.4.22) stable; urgency=low * new (common) unit osfilehelper * osfunc: function makbakfile with two parameters (name,maxbak number) is moved as makbakfiles to osfilehelper * oslog: function makbakfile with two parameters (name,maxbak number) is moved as makbakfiles to osfilehelper * osfunc files section copy: moving some log messages from Loglevel 6 to 7 -- d.oertel <d.oertel@uib.de> Fri, 04 June 2021 15:00 opsi-script (4.12.4.21) stable; urgency=low * osfunc: function isSymLink(const filepath : string) : boolean; * osfuncunix: function resolveUnixSymlink(const filepath : string; recursive : boolean = true) : string; * osparser: function resolveWinSymlink(const filepath : string; recursive : boolean = true) : string; * new function resolveSymlink(<string>) : string; on error it returns input * new constant %realScriptpath% ; if the script is called via symlink then it is the resolved version of %scriptpath% * new common unit osfuncunix * new function forcePathDelims(<path string>) : <path string> sets all slash and backslash as pathdelim according to the OS * new boolean fileIsSymlink(FilePath: string): boolean; -- d.oertel <d.oertel@uib.de> Tue, 25 May 2021 15:00 opsi-winst/opsi-script (4.12.4.20) stable; urgency=low * again: fix debug_lib do imported libs added to nologfiles in oslog -- d.oertel <d.oertel@uib.de> Thu, 6 May 2021 15:00 opsi-winst/opsi-script (4.12.4.19) stable; urgency=low * osparser: fix fileexists, fileOrFolderExists, DirectoryExists with quoted filenames -- d.oertel <d.oertel@uib.de> Wed, 5 May 2021 15:00 opsi-winst/opsi-script (4.12.4.18) stable; urgency=low * osfunc: fix for getOSArchitecture at windows 64 bit * osparser: doAktionen: executesection: call sections with catchout=true fixes: nooutput in log and showoutput * osfuncmac: getProfilesDirListMac implemented * osmain: allow /batch with /productid and opsi-service parameters -- d.oertel <d.oertel@uib.de> Wed, 14 Apr 2021 15:00 opsi-winst/opsi-script (4.12.4.17) stable; urgency=low * change getFileBom to fileHasBom(<filename>) : boolean -- d.oertel <d.oertel@uib.de> Wed, 31 Mar 2021 15:00 opsi-winst/opsi-script (4.12.4.16) stable; urgency=low * can now handle *.opsiscript files with bom * call of execwith section with /encoding parameter (by j.laajili) * new string function: getOSarchitecture (x86_32 / x86_64/ arm_64) * new boolean function: runningInWAnMode (true if opsiserver = localhost) default=false -- d.oertel <d.oertel@uib.de> Fri, 26 Feb 2021 15:00 opsi-winst/opsi-script (4.12.4.15) stable; urgency=low * new function asConfidentialList(<list>) : stringlist * new GUI Interface implementation * some additional try excet in osjson and load testfile variants * osGUIControl: unify skin directories to 'skin' with fallback to custom\winstskin at windows * standard out file at windows now opsi-script.exe * locale is now opsi-script.po (also at windows) * winstxx.exe only as symbolic links to opsi-script.exe (for backward compatibility) * osparser: executesection: shellinanIcon: logleveloffset=0 -- d.oertel <d.oertel@uib.de> Fri, 12 Feb 2021 15:00 opsi-winst/opsi-script (4.12.4.14) stable; urgency=low * redesign of TXStringlist file in and out encoding (by j.laajili) * call of patches section with /encoding parameter (by j.laajili) * call of patchTextFile section with /encoding parameter (by j.laajili) * new boolean function: fileorfolderExists(<file name>, [<access arch>]) (by j.laajili) * osregistry: open Registry with KEY:READ instead of KEY_ALL_ACCESS. Thanks to Jens Boettge. ; fixes #4625 -- d.oertel <d.oertel@uib.de> Fri, 29 Jan 2021 15:00 opsi-winst/opsi-script (4.12.4.13) stable; urgency=low * osfunc: new: TUibIniFile.ReadRawSection (by j.laajili) * new function getSectionFromIniFile based on ReadRawSection (by j.laajili) * osxmlsections: fix for xml2 delnode -- d.oertel <d.oertel@uib.de> Mon, 25 Jan 2021 15:00 opsi-winst/opsi-script (4.12.4.12) stable; urgency=low * repair center batchgui on screen * osregex: another empty string regex test * license functions: opsiserviceuser if possible * linux: shellBatch implemented as shellInAnIcon * macos: osfunclin: getmyipbytarget: use path to ip command * macos: runningWithGui also working for macos * update opsi-script-lib * update ssl libraries to 1.0.2u -- d.oertel <d.oertel@uib.de> Wed, 16 Dec 2020 15:00 opsi-winst/opsi-script (4.12.4.11) stable; urgency=low * files: copy: deny-list with '.DS_Store' * files: on 'permission denied' call handle.exe if existing in opsi-script directory * dosInAnIcon: if win7 and no new Arguments then call runAndCaptureOut -- d.oertel <d.oertel@uib.de> Mon, 14 Dec 2020 15:00 opsi-winst/opsi-script (4.12.4.10) experimental; urgency=low * macos: modify locale path for opsi-script-gui.app * macos / linux: oscheck_gui_startable: kill opsi-laz-gui-test if not terminated * osregex: filter empty input to avoid execeptions -- d.oertel <d.oertel@uib.de> Thu, 26 Nov 2020 15:00 opsi-winst/opsi-script (4.12.4.9) experimental; urgency=low * GetSectionFromIniFile: remove encoding transformation (windows only) -- j.werner <j.werner@uib.de> Wed, 25 Nov 2020 17:39 opsi-winst/opsi-script (4.12.4.8) experimental; urgency=low * isRegexMatch: checks if string is NOT empty before exec is executed catchs exceptions -- j.werner <j.werner@uib.de> Tue, 24 Nov 2020 14:55 MISSING CHANGELOGS: opsi-winst/opsi-script (4.12.4.7) opsi-winst/opsi-script (4.12.4.6) experimental; urgency=low * import osprocesses * call of opsi-laz-gui-test in extra log: ogdatei.StandardMainLogPath+'opsi-script-gui-test.log' -- d.oertel <d.oertel@uib.de> Wed, 04 Nov 2020 15:00 opsi-winst/opsi-script (4.12.4.5) experimental; urgency=low * the one and only project file is now opsi-script.lpi you hav to switch zhe build mode for differen archtictures (win / mac / lin) (gui) * the opsi-script nogui version is now opsi-script * the opsi-script gui version is now opsi-script-gui * opsi-script tests via opsi-laz-gui-test if a gui can be used and if yes calls opsi-script-gui (via execv) -- d.oertel <d.oertel@uib.de> Wed, 04 Nov 2020 15:00 opsi-winst/opsi-script (4.12.4.4) experimental; urgency=low * new boolean function: isValidFQDN * fix debug_lib do imported libs added to nologfiles in oslog * osfunc: new randomstrWithParameters (also called by randomstr * new string function randomstrWithParameters(minLength,nLowerCases,nUpperCases,nDigits,nSpecialChars : Integer): string; * powershellcall and execwith calls at windows RunAndCaptureOut bydefault -- d.oertel <d.oertel@uib.de> Tue, 13 Oct 2020 15:00 opsi-winst/opsi-script (4.12.4.3) experimental; urgency=low * macos: integrate to opsiscript and opsiscriptnogui project (Remove mac project files) * new unit osstartprocess_cp (from osfunc, will be used in opsi-script-pilot) * more logging on alldelete * repair del -c * try to remove dirs also with copy_delay * new del option -r (retryOnReboot) default false (Windows only) If -r is set a missed delete action will be retried on Reboot. In this case normally a 'reboot after this script' flag will be set. By using the -c option setting this flag will be supressed The option -c (continue) make only sense in combination with -r * section name now as header of showoutput * startprocess_cp fix (jan werner) -- d.oertel <d.oertel@uib.de> Wed, 23 Sep 2020 15:00 opsi-winst/opsi-script (4.12.4.2) experimental; urgency=low * macos: try to read mountpoint from opsiclientd.conf default to /var/opsisetupadmin/opsi_depot -- d.oertel <d.oertel@uib.de> Tue, 15 Sep 2020 15:00 opsi-winst/opsi-script (4.12.4.1) experimental; urgency=low * some more log on startup * oslog: makebakfiles: rename instead of copy (much faster) * fix uefi detection on win10 >= release 1004 * osfuncwin: WinIsUefi: the fix is here //* macos: change mountpoint to /Network/opsi_depot //* macos: changeback mountpoint to /Volumes/opsi_depot * macos: change mountpoint back to /var/opsisetupadmin/opsi_depot * osbatchgui: formresize function disabled for Darwin -- d.oertel <d.oertel@uib.de> Thu, 27 Aug 2020 15:00 opsi-winst/opsi-script (4.12.4.0) experimental; urgency=low * includes changes from github merge request "Feature / Implementation parity between WinBatch, DosBatch and ExecWith" * DosBatch-Sections to be executed with elevated privileges like WinBatch could be using /RunElevated * /Run*-Parameters for ExecWith * Output catching, /showouput and getOutStreamFromSection support for WinBatch * ToDo: write opsi-script tests for these changes * compiled with lazarus 2.0.10 * fix for /showoutput at win64 * fix for runningonuefi if w10 release >= 2004 * new lib: uib_lin_install.opsiscript -- j.werner <j.werner@uib.de> Thu, 30 Jul 2020 17:54 opsi-winst/opsi-script (4.12.3.18) experimental; urgency=low * UTF8String replaced by String * AnsiToUTF8() removed accordingly * compiled with lazarus 2.0.10 -- j.werner <j.werner@uib.de> Thu, 30 Jul 2020 16:56 opsi-winst/opsi-script (4.12.3.17) stable; urgency=low * osfunc: StartProcess_cp: log message: 'Started process' now in utf8 encoding * osfunc: StartProcess_cp: use filename and parameters * compiled with lazarus 2.0.10 -- d.oertel <d.oertel@uib.de> Thu, 23 Jul 2020 15:00 opsi-winst/opsi-script (4.12.3.16) stable; urgency=low * oswebservice:sendlog: Log that using default if getLogsize failed * osfuncwin: some logprog in WinIsUefi * osfuncwin: getW10Release * osfuncwin: WinIsUefi: fix uefi detection if w10 release >= 2004 * osparser: good bye to cmd64.exe * osfunc: alldelete: change loglevel for not deleted files * add auto-it lib -- d.oertel <d.oertel@uib.de> Fri, 19 Jun 2020 15:00 opsi-winst/opsi-script (4.12.3.15) experimental; urgency=low * oswebservice: avoid double /rpc in service url; * osfunclin: better getProfilesDirListLin * osparser: doTextpatch: Do not crash on not creatable files * osprocessess: ProcessIsRunning: more info in warning -- d.oertel <d.oertel@uib.de> Tue, 09 Jun 2020 15:00 opsi-winst/opsi-script (4.12.3.14) experimental; urgency=low * osparser: new flag: cmd64checked to avoid repeated checks for cmd64.exe * osmain: bool var runSilent used in cli parameter check and to call FBatchOberflaeche.setVisible(True/False); * osbatchgui: start FBatchOberflaeche visible=false ; fixes #4485 -- Detlef Oertel <d.oertel@uib.de> Thu, 04 Jun 2020 15:00:00 +0200 opsi-winst/opsi-script (4.12.3.13) experimental; urgency=low * osmain: bootmode: now using opsiclientagentconf * linux: osprocesses: ProcessIsRunning: look for exact match in 15 char shortcmd * osfunclin: os_shutdown() * osmain: (linux) try to direct reboot or shutdown -- Detlef Oertel <d.oertel@uib.de> thu, 12 Mar 2020 15:00:00 +0200 opsi-winst/opsi-script (4.12.3.12) experimental; urgency=low * osmain: /batch + /productid (template+with admin): * if no connection to real server, retry with localhost * if no connection to localhost - run any way -- Detlef Oertel <d.oertel@uib.de> Tue, 10 Mar 2020 15:00:00 +0200 opsi-winst/opsi-script (4.12.3.11) experimental; urgency=low * oswebservice: new function macosAgentActivated: boolean; * osmain: on macos: check macosAgentActivated * Info-os.plist: add opsi.icns file -- Detlef Oertel <d.oertel@uib.de> Wed, 26 Feb 2020 15:00:00 +0200 opsi-winst/opsi-script (4.12.3.10) experimental; urgency=low * uib_exitcode: isMsExitcodeFatal_short calls isMsiExitcodeFatal_short * activate history logging again * osfunc / osparser: linkfolder: new link element window_state with the allowed values 'normal', 'min', 'max' -- Detlef Oertel <d.oertel@uib.de> Tue, 28 Jan 2020 15:00:00 +0200 opsi-winst/opsi-script (4.12.3.9) experimental; urgency=low * winbatch combine /timeoutseconds with WaitForWindowAppearing or WaitForWindowVanished done this in osfunc: StartProcess_cp * new statement: executeSection( < string expr with section call>) -- Detlef Oertel <d.oertel@uib.de> Tue, 28 Jan 2020 15:00:00 +0200 opsi-winst/opsi-script (4.12.3.8) experimental; urgency=low * fix: osparser: doAktionen: do not double backslashes in sub_sections ApplyTextConstantsToString (Remaining, false); -- Detlef Oertel <d.oertel@uib.de> Mon, 27 Jan 2020 15:00:00 +0200 opsi-winst/opsi-script (4.12.3.7) experimental; urgency=low * skiped -- Detlef Oertel <d.oertel@uib.de> Tue, 14 Jan 2020 15:00:00 +0200 opsi-winst/opsi-script (4.12.3.6) experimental; urgency=low * new statement: forceLogInAppenMode = (true/false) * RequiredOpsiscriptVersion * %OpsiscriptVersion% * %OpsiscriptDir% -- Detlef Oertel <d.oertel@uib.de> Thu, 09 Jan 2020 15:00:00 +0200 opsi-winst/opsi-script (4.12.3.5) experimental; urgency=low * new procedure reverseProductOrderByUninstall: ProductList is reordered so that uninstall actions will be conducted first and in reverse order as the prodcuts were installed * new config opsi-script.global.ReverseProductOrderByUninstall * postinst script was adapted for the new config opsi-script.global.ReverseProductOrderByUninstall -- Jan Werner <j.werner@uib.de> Mon, 6 Jan 2020 13:35:00 +0200 opsi-winst/opsi-script (4.12.3.4) experimental; urgency=low * new unit ostxstringlist * osfunclin: which() now using FindDefaultExecutablePath * osfunc: StartProcess_cp: now supports WaitForProcessEnding also for [L/M] * Winbatch now supports WaitForProcessEnding also for [L/M] * new string function which(<command in path>) : string (command with path) [W/L/M] * new stringlist function replaceOpsiConstants(<list>) : <list> * new string function replaceOpsiConstants(<string>) : <string> * osparser: create cmd64.exe in execshellcall and execdosbatch: create also cmd64.exe.mui files * new boolean function isPingReachable(<target host>) : bool -- Detlef Oertel <d.oertel@uib.de> Fri, 27 Dec 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.3.2) experimental; urgency=low * osProcessux: getCommandResult: give always the first string ; fixes a getmyip Problem -- Detlef Oertel <d.oertel@uib.de> Tue, 19 Nov 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.3.1) experimental; urgency=low * update function listFiles: including switch for disabling redirections under 64bit-Windows -- Jan Werner <j.werner@uib.de> Fri, 15 Nov 2019 13:43:00 +0200 opsi-winst/opsi-script (4.12.3.0) experimental; urgency=low * update oswebservice with gzip support (Jan Werner) * new StringList function listFiles (Jan Werner) * osbatchgui: log on setWindowstate * oswebservice: move logging to log_prog * osparser info to macos version at log start * new boolean function: runningWithGui (osparser,osfunc) (at win+Mac always true) * macos: osbatchgui: temporary disable setWindowState * update to openssl 1.0.2t -- Detlef Oertel <d.oertel@uib.de> Wed, 23 Oct 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.2.3) experimental; urgency=low * feature/macos integrated * new library uib_state_and_condition: Collection of functions that gives info about system states that are relevant for product installations * new library uib_state_and_condition: Collection of functions that helps to install driver * osparser: differences between %CurrentProfileDir% and %UserProfileDir% fixes: #4118 -- Detlef Oertel <d.oertel@uib.de> Thu, 29 Aug 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.2.2) experimental; urgency=low * oswebservice: switch most of log to log_prog * oswebservice: code cleanup (remove unused code) -- Detlef Oertel <d.oertel@uib.de> Tue, 06 Aug 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.2.1) experimental; urgency=low * oswebservice: sendlog: check max logsize to send via backend_getSystemConfiguration * switch to Lazarus 2.0.4 -- Detlef Oertel <d.oertel@uib.de> Tue, 06 Aug 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.2.0) experimental; urgency=low * oswebservice: switch from indy to synapse -- Detlef Oertel <d.oertel@uib.de> Thu, 04 Jul 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.1.5) experimental; urgency=low * osdefinedfunctions: delLocalVar : fix removing loopvar after empty loop * osmain: fix in GetTempPath: if Univention temppath is /var/tmp * osconf: new const opsiclientagentconf * osmain: freeLinuxAgentStart: now using opsiclientagentconf * Linux: osparser: CreateAndProcess: more logging around remount * Linux: osparser: CreateAndProcess: moved remount -- Detlef Oertel <d.oertel@uib.de> Thu, 06 Jun 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.1.4) experimental; urgency=low * osfunc: more logging around gettemppath * osparser: enabled getHWBiosInfoMap again Linux only: * osfunclin: getpackagelock: fix memory leak * osfunclin: new: function getLinuxDistroName : string; * osfunclin: new: function getLinuxDistroRelease : string; * osfunclin: new: function getLinuxDistroDescription * osmain: GetTempPath: if Univention temppath is /var/tmp * osparser: createandprocessscript: check for depotmount * osparser: createandprocessscript: give some distro infos in log -- Detlef Oertel <d.oertel@uib.de> Mon, 03 Jun 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.1.3) experimental; urgency=low * shellInAnIcon: on loglevel 9: reread teporary files and do not delete * oslog: logdatei property usedloglevel (this is real used log level with force_min_loglevel) * osfunclin: new function getMyIpDeciceByDefaultRoute * osparser: GetMACAddress2: use getMyIpDeciceByDefaultRoute * osfunclin: more logging in getMyIpDeciceByDefaultRoute, getMyIpByDefaultRoute * osparser: demandlicensekey: try 3 ways to get the own fqdn * osfunc: createtextfile: Message:'Directory ' + dirname + ' did not exist und was created' now on loglevel 6 (was warning) * osfunc: StartProcess_cp_el: minor logging change ; //no {$OVERFLOWCHECKS ON} * osfunc / osfuncwin: replace 'exitCode := lpExitCode;' by 'exitCode := longint(lpExitCode);' -- Detlef Oertel <d.oertel@uib.de> Tue, 14 May 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.1.2) stable; urgency=low * add oslistedit to projectfiles * fixes in oslistedit * add osinputstring * add new string function stringinput(< message str>,< boolstr confidential>) * document randomIntStr(<>) * fix on gettemppath -- Detlef Oertel <d.oertel@uib.de> Fri, 12 Apr 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.1.1) stable; urgency=low * fix in oswmi (give stringlist as stringlist) -- Detlef Oertel <d.oertel@uib.de> Thu, 04 04 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.1.0) experimental; urgency=low * integration of new xml functions: * new units in common: osxml, osxmltdom, osxmlsections * new section type xml2 * osparser: Tuibinstscript: new method doxml2patch: * OpenNode <node path : string> * DeleteNode <node path : string> * setNodeText <text : string> * setAttribute <name : string>, <value:string> * addAttribute <name : string>, <value:string> * delAttribute <name : string> * adNewNode <name : string> * gotoParentNode * getXml2AttributeValueByKey(<xml node:stringlist>,<key:string>): string * getXml2Text(<xml node:stringlist>) : string * getXml2DocumentFromFile(<filename:string>) : <xml-doc:stringlist> * getXml2Document(<pure xml :stringlist>) : <xml-doc:stringlist> * getXml2UniqueChildnodeByName * xml2GetFirstChildNodeByName(<xml-doc:stringlist>,<node name:string>) : <xml node:stringlist> * xml2NodeExistsByPathInXMLFile(myfilename, path: string; attributes_strict: boolean): boolean; * new regex functions: * isRegexMatch(<string>, <pattern>) : boolean * getSubListByContainingRegex(<pattern>, <target list>) : stringlist * getSubListByContainingRegex(<pattern list>, <target list>) : stringlist * getRegexMatchList(<pattern>, <target list>) : stringlist * getRegexMatchList(<pattern list>, <target list>) : stringlist * removeFromListByContainingRegex(<pattern>, <target list>) : stringlist * removeFromListByContainingRegex(<pattern list>, <target list>) : stringlist * stringReplaceRegex(<string>, <pattern>, <replacement string>) : string * stringReplaceRegexInList(<target list>, <pattern>, <replacement string>) : stringlist * new network functions * isValidIP4 (<ip4adr>) : boolean * isValidIP4Network (<ip4adr>, <netmask>) : boolean * isValidIP4Host (<ip4adr>, <netmask>) : boolean * getIP4NetworkByAdrAndMask (<ip4adr>, <netmask>) : string * getDefaultNetmaskByIP4adr (<ip4adr>) : string * new url related functions * parseUrl(<url string>) : stringlist * createUrl(<urlcomponents list>) : string * macos related: * getos detect macos as 'macos' * osparser: new function GetMacosVersionInfo : string * osparser: new function getMacosVersionMap : stringlist * misc: * ExtractFileExtension (`<path>`) : string [W/L] * ExtractFileName (`<path>`) : string [W/L] * DirectoryExists (`path`[,<accessstr>]) : boolean [W/L] * osparser: new (undocumented) command 'setDebug_prog = (true/false)' * osshowsysinfo: caption is Systeminfo (instead of SystemInfo) * reencode(paramstr(0),'system') * remove some svn entries * replace unit osxbase64 by fpc unit base64 * Release now compiled with activated Checks for IO, Range, Overflow and Stack * unit oscrypt with {$RANGECHECKS OFF} * osparserhelper: fix in geouterfunction * osdefinedfunction: isvisiblelocalvar: serach optimization * osfunc: checkfileexists: use widechsr/utf16 for filenames * osparserhelper: new function stringlistintersection (get stringlist intersection) * new cli parameter /processproducts productId [,productId ]* * added unit oszip * osparser: fileActionsMain: zipfile, unzipfile * new in file sections: zipfile <file or dir> <zipfile> * new in file sections: unzipfile <zipfile> <targetdir> * osparser: fix in Hasminimumspace * osparser: fix searchpath from %opsiScriptHelperPath% to %opsiScriptHelperPath%\lib; fixes #3975 * osparser: producestringlist: createstringlist: fix: empty strings as argument allowed and createstringlist() gives empty list * osparser: modified : getListFromWMI * `getListFromWMI(`<wmi namespace str>,<wmi class str>,<property list>,<condition str>`) : stringlist` * If <wmi namespace str> is empty, it defaults to `root\cimv2`. -- Detlef Oertel <d.oertel@uib.de> Wed, 23 01 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.36) stable; urgency=low * osdefinedfunctions: better errormessages * osdefinedfunctions: complete redesign of local var * osdefinedfunctions: now works also with recursive calls * oslog: fix: cleanup old partlogs * osparser: fix in md5sumfromfile (Linux) -- Detlef Oertel <d.oertel@uib.de> Wed, 13 Feb 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.35) stable; urgency=low * osparser: producestringlist: getsublist: with whitespaces around numbers -- Detlef Oertel <d.oertel@uib.de> Tue, 15 Jan 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.34) stable; urgency=low * osparser: producestringlist: getsublist: with string expression instead of numbers * osparser: producestringlist: createstringlist: fix: empty strings as argument allowed -- Detlef Oertel <d.oertel@uib.de> Thu, 10 Jan 2019 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.33) stable; urgency=low * postinst: create config opsi-script.global.w10BitlockerSuspendOnReboot=false * osconf: new config opsi-script.global.w10BitlockerSuspendOnReboot * osconf: new global config variable: w10BitlockerSuspendOnReboot (default= false) * osmain: buildPC: >=win 10 and w10BitlockerSuspendOnReboot and (txrImmediateReboot or txrImmediateReboot) then suspend bitlocker for 1 reboot fixes: #3816 * new units oswmi, utilwmi * osparser: producestringlist: new function getListFromWMI(<wmi class str>,<property list>,<condition str>) : stringlist example: set $plist$ = createStringList ('Model','Vendor') set $list$ = getListFromWMI('Win32_ComputerSystem',$plist$,'where model like Esprimo%') if <property list> is empty all properties of <wmi class str> will be returned on error a empty list will be returned -- Detlef Oertel <d.oertel@uib.de> Mon, 17 12 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.32) stable; urgency=low * osconf: no more OpsiServiceConfigs: in log -- Detlef Oertel <d.oertel@uib.de> Thu, 25 10 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.31) stable; urgency=low * new paths for Linux: osconf: opsiscriptconfinit = '/etc/opsi-script/opsi-script.conf'; osbatchgui: skindirectoryDefault = '/usr/share/opsi-script/skin'; osbatchgui: skindirectoryCustomWin = '/usr/share/opsi-script/customskin'; osparser: // search in /usr/share/opsi-script/lib osparser: '%opsiLogDir%' = '/var/log/opsi-script' oslog: StandardLogPath := '/var/log/opsi-script/'; * osencoding: do not write out supported encodings; fixes #3700 -- Detlef Oertel <d.oertel@uib.de> Wed, 17 10 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.30) stable; urgency=low * osparser: fix for close log file after script finished: (only in interactive mode) * oslog: all loglines trimright; fixes #3708 -- Detlef Oertel <d.oertel@uib.de> Mon, 15 10 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.29) stable; urgency=low * osparser: doRegitryHack*: remove HKCU on flag_all_usrclass -- Detlef Oertel <d.oertel@uib.de> Tue, 25 Sep 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.28) stable; urgency=low * osconf: (fix): get ScriptErrorMessages, AutoActivityDisplay * osparser: move log message 'line is starting with' to log_prog * osinteractivegui: radiobutton 'NewFile' visible * osinteractivegui: at execute viewlist: use CreateTheLogfile * osinteractivegui: at execute_button: use CreateTheLogfile * osparser: close log file after script finished * switch to lazarus 1.8.4. -- Detlef Oertel <d.oertel@uib.de> Fri, 14 Sep 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.27-2) stable; urgency=low * library uib_exitcode: a lot of fixes and enhancements -- Detlef Oertel <d.oertel@uib.de> Fri, 14 Aug 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.27) stable; urgency=low * osparser: (fix) registry: new parameter /AllUsrClassDats new function doRegistryAllUsrClassDats ; fix from Terry Strooband (thank you) flag_all_usrclass -- Detlef Oertel <d.oertel@uib.de> Mon, 10 Sep 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.26) stable; urgency=low * osparser: more log_prog in folderlink and getstring * osparser: reporterror: catch unknown origin and exceptions ; references #3655 * osparser: doAktionen: endif: catch exception in log message ; references #3655 * osparser: execDosBatch: log8 temp file content * osparser: executeWith: log8 temp file content * osparser: execPowershellCall: log executing ; fixes #3621 * osparser: doAktionen: registry: Ignoring parameter /32bit for /AllNTUserdats. ; fixes #3643 * osjson: jsonAsArrayToStringList: "[true]" now results to "true" ; fixes #3627 * oswebservice: createSocket: log openssl version * osfunclin: getLinuxDistroType: read /etc/os-release ; fixes #3651 * osparserhelper: GetOuterFunctionOrExp * OsDefinedFunction.parseCallParameter: handle functions as parameter ; fixes #3623 * osparser: registerSectionOrigins: fix origin for external sub sections * osparser: registry: new parameter /AllUsrClassDats new function doRegistryAllUsrClassDats ; fix from Terry Strooband (thank you) -- Detlef Oertel <d.oertel@uib.de> Tue, 28 Aug 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.25) stable; urgency=low * osconf: readConfigFromService: more debug and try-except with * oswebservice: function isConnected2(loglist : TStringlist): boolean; -- Detlef Oertel <d.oertel@uib.de> Tue, 17 Jul 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.24) stable; urgency=low * osconf: readConfigFromService: more debug and try-except * * update indy 5455 to 5464 -- Detlef Oertel <d.oertel@uib.de> Mon, 16 Jul 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.23) stable; urgency=low * switch High DPI support off for Win7 (did not work correctly) -- Detlef Oertel <d.oertel@uib.de> Thu, 12 Jul 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.22) stable; urgency=low * osparser: doAktionen: importlib; remove double call of Script.FSectionNameList.Add(importFunctionName) fixes #3560 * OsDefinedFunction.parseCallParameter: fixes #3569 * lib/uib_backend.opsiscript: more documentation -- Detlef Oertel <d.oertel@uib.de> Wed, 06 Jun 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.21) stable; urgency=low * osconf: default for debuglib = true * osparser: doAktionen: additional log for indefFunc3 * osparser: doAktionen: inc/dec indefFunc3 only if keyword is at begining of line * oswebservice connection timeout 20 sec not at linux -- Detlef Oertel <d.oertel@uib.de> Thu, 17 May 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.20) stable; urgency=low * osparserhelper: GetWord: search backwards=true;backwardfirst=true : / get from "hu)hu)))" as expr "hu)hu" with remaining ")))" * osparserhelper: GetWord: search backwards=true;backwardfirst=false : / get from "hu)hu)))" as expr "hu)hu))" with remaining ")" * osparserhelper: GetWordOrStringConstant: new params search backwards=true;backwardfirst=false * osparser: producestringlist: do not delete remaining after call of defined function * osdefinedfunctions: parseCallParameter: better error messages * osdefinedfunctions: parseCallParameter: trim paramstr ; fixes #3526 * osdefinedfunctions: call: set inDefFuncIndex on leaving function ; fixes #3528 * osparser: executeWith: use autoactivitydisplay * osparser: execShellCall: use autoactivitydisplay * osparser: execPowerShellCall: use autoactivitydisplay -- Detlef Oertel <d.oertel@uib.de> Mon, 14 May 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.19) stable; urgency=low * osparser: new SearchForSectionLines * osparser: SearchForSectionLines used in produceStringlist and doAktionen * oswebservice connection timeout 20 sec * osdefinedfunctions: fix at free the local Vars (no $result$ if dfpVoid -- Detlef Oertel <d.oertel@uib.de> Tue, 8 May 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.18) stable; urgency=low * oslog: fix logging defined function that are included -- Detlef Oertel <d.oertel@uib.de> Thu, 3 May 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.17) stable; urgency=low * osparser: processcall: log Executing on LLNotice * new unit osparserhelper in common (Skip / getword / ...) * osdefinedfunctions: int new local string vars * osdefinedfunctions: isVisibleLocalVar check for empty varname * osparser: catch powershellCall at Linux * OsDefinedFunction.parseCallParameter: fix handling parameters with ')' -- Detlef Oertel <d.oertel@uib.de> Fri, 13 Apr 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.16) stable; urgency=low * update to openssl-1.0.2o * typo of log messages * change to Lazarus 1.8.2 * switch HighDPI awareness on (8.1+, per monitor) * osparser: reportError: more info on defined functions at syntax error * osfunc: getsectionlines: include leading comments and empty lines * osdefinedfunctions, osparser: allow defined functions with no parameters; fixes #3182 * osdefinedfunctions, osparser: allow defined functions with data type void * oslog: fixed check for library logging * activate normal debug_lib again (see 4.12.0.13 temporary always true) * osparser: doAktionen: tsDefineFunction: try-excepts * osparser: reread opsi.conf parameters for every script; fixes #3337 * osparser: splitstring: if string is confidential all parts are confidential as well; fixes #3186 * osparser: splitStringOnWhiteSpace: if string is confidential all parts are confidential as well; fixes #3186 * osfunc: FSaveToFile new param raise_on_error ; fixes #3253 * new string function asConfidential: 1. backup and set loglevel to warning |2 get the input | 3 make it confidential | 4 give it to output |5 restore loglevel #3441 * found undocumented string function upper(<str>); fixes #3283 * new boolean function RegKeyExists(<keystr> [,<access str>]) <access str> = one of 32bit, 64bit, sysnative ; default sysnative ; fixes #3078 * new boolean function RegVarExists(<keystr> [,<access str>]) * no warning for not existing releaseid ; fixes #2595 * new boolean function isConfidential(<str>) for testing * initvars in CreateAndProcessScript ; hopefully fixes errors on restart modified scripts * redesign of origin detection * osfuncwin2: reimplementation of getProfileImagePathfromSid https://forum.opsi.org/viewtopic.php?f=7&t=9941 * osfuncwin2: reimplementation of delUserProfile * osfunclin: getpackagelock: look also for UCS ; fixes #3189 * oslindesktopfile: DeleteShellLink: del hard in /usr/share/applications/ ; fixes #3402 * osparser: getregistryvalue(<keystr>, <varstr> [, <access str>]) : string ; fixes #3279 * osparser: powershellcall(<commandstr> [,<access str>='sysnative' [,<policy bool str>='true']]) : [void,str,stringlist] ; fixes #3442 -- Detlef Oertel <d.oertel@uib.de> Wed, 14 Mar 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.15) stable; urgency=low * oswebservice: getMapOfLoginscripts2Run: fix: check not only for productId but also for productVersion and PackageVersion * oswebservice: getMapOfLoginscripts2Run: change logging to log_prog -- Detlef Oertel <d.oertel@uib.de> Fri, 09 Mar 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.14) stable; urgency=low * osparser: evaluateBoolean: sendlog: switch log append mode on in order to avoid that a final log removes this one * new function : getSubListByMatch(<search string>, <target list>) :stringlist * new function : getSubListByMatch(<search list>, <target list>) :stringlist * new function : getSubListByContaining(<search string>, <target list>) :stringlist * new function : getSubListByContaining(<search list>, <target list>) :stringlist * new function : getSubListByKey(<search string>, <target list>) :stringlist * new function : getSubListByKey(<search list>, <target list>) :stringlist * new function : getKeyList(<list>) :stringlist -- Detlef Oertel <d.oertel@uib.de> Tue, 13 Feb 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.13-2) stable; urgency=low * uib_bootutils: DefFunc enablePEPartition: use powershell if possible -- Detlef Oertel <d.oertel@uib.de> Wed, 07 Dec 2018 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.13) stable; urgency=low * osparser: for-to loop: fix failure at for x to x loop * oslog: includelogtail: now log includelog at log level 7 * new function getIndexFromListByContaining(<list> : stringlist,<search string> : string) : <number> : string * temporary set debug_lib always to true * osparser / osdefinedfunctions: call from a local function an other local function using a local variable as call by value parameter * osparser: more fixes for nestinglevel (if then else through localfunctions and sub) * new booealn function: runningInPE (osparser,osfunc,osfuncwin) (at linux always false) * osdefinedfunctions: fixes on parsing paramtype * osparser: Ifelseendiflevel : longint = 0; // global nestlevel store used to pass nestlevel to evaluatestring and producestringlist --> local functions * osdefinedfunctions: fix in isVisibleLocalVar * osjson: jsonAsArrayToStringList: allow strings as valid array components * osparser: indeffunc3 : integer = 0; // we are between deffunc and endfunc line (even in a not active code) -- Detlef Oertel <d.oertel@uib.de> Wed, 27 Dec 2017 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.12) stable; urgency=low * fix sections in local functions: osparser: doAktionen: * New constant %opsidata%, %opsiapplog% -- Detlef Oertel <d.oertel@uib.de> Wed, 13 Dec 2017 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.11) stable; urgency=low * Additional fix for Support brackets '[]' in Registry keys * osfunc: function posFromEnd(const substr : string; const s : string) : integer; * osparser: doRegistryHack: openkey, deletekey in Registry sections * osparser: evaluatestring: GetRegistryStringValue* -- Detlef Oertel <d.oertel@uib.de> Tue, 12 Dec 2017 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.10) stable; urgency=low * osdefinedfunctions: TOsDefinedFunction.call: free local Vars on leaving the function; fixes #3230 * Fix call of defined functions inside if statement ; fixes #3232 * osdefinedfunctions: call: new param Nestlevel * osparser: evaluatestring: new param Nestlevel (to use while call defined function) * osparser: producestringlist: new param Nestlevel (to use while call defined function) * osparser: doSetVar: new param Nestlevel (to use while call evaluatestring/producestringlist) * Support brackets '[]' in Registry keys ; fixes #2825 * osparser: doRegistryHack: openkey, deletekey in Registry sections * osparser: evaluatestring: GetRegistryStringValue* * Encoding Parameter for sections which modify files (patches,Patchtext,...); references #3140 * osencoding: LoadFromFileWithEncoding * osparser: doIniFilesPatchesMain: shortcut for utf8 * other encoding Problems: * osencoding: reencode: encode by Default to utf8 which is the internal encoding * osencoding: LoadFromFileWithEncoding (more changes) -- Detlef Oertel <d.oertel@uib.de> Wed, 06 Dec 2017 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.9) stable; urgency=low * osmain: log command line parameter of opsi-script call * osmain: startprogrammodes: fix for /productid (bug created with /logproductid) -- Detlef Oertel <d.oertel@uib.de> Mon, 06 Nov 2017 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.8) stable; urgency=low * start to wor on new modifier '/encoding <encoding>' for patches sections * osparser: fix Message 'ReportMessages' changed to 'ScriptErrorMessages' * osparser: fix Message 'ScriptErrorMessages' 'is set to' true/false was wrong * osparser: tsImportLib: replace constants -- Detlef Oertel <d.oertel@uib.de> Mon, 06 Nov 2017 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.7) stable; urgency=low * default loglevel is now 7 (was 6) * new config: opsi-script.global.ScriptErrorMessages : boolean ; default=true (created as false) * config: opsi-script.global.default_loglevel will be created as 7 -- Detlef Oertel <d.oertel@uib.de> Tue, 10 Oct 2017 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.6) stable; urgency=low * osconf: readConfigFromService reads configstates: temporary uncommented: opsi-script.global.ScriptErrorMessages : boolean ; default=true (created as false) opsi-script.global.AutoActivityDisplay : boolean ; default=false (created as true) * general: adjusting log levels 5:LLNotice: comments,messages, Execution of sections 6:LLInfo; Statements, New values for stringvars , complete boolean expression 7: new values for stringlist vars, Output from sections, shellcall if the output is not written to a stringlist, parts of a boolean expression 8: other stringlist output 9: content of saved temporary files -- Detlef Oertel <d.oertel@uib.de> Wed, 27 Sep 2017 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.5) stable; urgency=low * osmain / osinteractivegui: new cli argument /logproductid just used for logging, do not try to get data from service * osbatchGUI: TFBatchOberflaeche.FormActivate also for Linux -- Detlef Oertel <d.oertel@uib.de> Mon, 11 Sep 2017 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.4-1) stable; urgency=low * postinst: configs "opsi-script.global.default_loglevel" and "opsi-script.global.force_min_loglevel" not editable * osconf: readConfigFromService: protect from wrong data types from service -- Detlef Oertel <d.oertel@uib.de> Fri, 01 Sep 2017 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.3-1) stable; urgency=low * global: rising the level of a lot of loging -- Detlef Oertel <d.oertel@uib.de> Fri, 01 Sep 2017 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.2) stable; urgency=low * osbatchgui: ForceStayOnTop modified * osbatchgui: ForceStayOnTop in form.activate * osconf: default_loglevel = 6 * osfunc: alldelete: del command: allow also partly wildcards (*.yxz or xyz.*) * postinst: create configs * postinst: remove /opt/pcbin/utils support -- Detlef Oertel <d.oertel@uib.de> Thu, 24 Aug 2017 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.1) experimental; urgency=low * oswebservice: changed loglevels in retrieveJSONObject * osfunc: FindLocalIPData / getMyHostEnt : better Error handling -- Detlef Oertel <d.oertel@uib.de> Thu, 27 Jun 2017 15:00:00 +0200 opsi-winst/opsi-script (4.12.0.0) experimental; urgency=low * new unit osdefinedfunctions * osparser: support for defined functions * osparser: moved sync between FExtremeErrorLevel and extremeErrorLevel before final output * osparser: new functions: boolToString(<bool expression>) and stringToBool(< string>) * osparser: new statement: ImportLib * oslog: new method log_prog for program debugging * osconf: readConfigFromService reads configstates: opsi-script.global.debug_prog : boolean ; if true log log_prog if > LLWarning opsi-script.global.debug_lib : boolean ; if true log libraries if > LLWarning opsi-script.global.default_loglevel : intstring ; set the default loglevel opsi-script.global.force_min_loglevel : intstring ; set the minimal loglevel * osmain: if /productid is set then use it also for the log * opsihwbiosInfo: typo Manufacturer ; fixes #2994 -- Detlef Oertel <d.oertel@uib.de> Mon, 19 Jun 2017 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.14) stable; urgency=low * osparser: isNumber: now check against int64 * osparser: new file section copy option -h (follow symlinks; default=false) * osfunc: support for followsymlinks: FileInstall.AllCopy: AllCopy Recursive: ToCopyOrNotCopy filecopy : fixes #2537 -- Detlef Oertel <d.oertel@uib.de> Thu, 29 Jun 2017 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.13) stable; urgency=low * oswebservice: typo: lastcation * osbatchgui: use myStringToTColor to interpret rgb colors from ini file * ssl library upgrade to 1.0.2.12 (1.0.2L) (do 16.6.2017) -- Detlef Oertel <d.oertel@uib.de> Mon, 29 May 2017 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.12-1) stable; urgency=low * osjson: escape chars in jsonAsArrayToStringList * osparser: Logging at errorsOccurredSinceMark * osparser: move/rename/symlink/hardlink: no Syntax error on wrong parameters ; fixes #2036 * some changes for 64 Bit Version * update to openSSL 1.0.2k (1.0.2.11) * integrate winst64.exe to the package for usage in winpe -- Detlef Oertel <d.oertel@uib.de> Tue, 03 Jan 2017 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.11) stable; urgency=low * source migrated from svn to git and direcories restructured * compiled with Lazarus 1.6.2 * osparser: doOpsiServiceCall: new Parametzer opsiclientd-once (=tscOpsiclientdOnce) resets local_opsidata after servicecall * osparser: CreateAndProcessScript: resets local_opsidata before script * osparser: doAktionen: Statement: 'opsiservicecall /preloginservice' (without sektion) allowed * oswebservice: sendLog: shrinking temporary disabled until size can be asked via service call * osfuncwin: StrSIDToName: do not try empty string * osparser: use 'on e: exception do' in exception handling * osfuncwin2: updateenvironment: use lazarus sendmessage * osregistry: WriteEntry: unicode / utf8 Support * osparser: Resourcestring for translation: rsReadyToContinue * osparser: fileactionsmain: GetString with true * osfunc: TPatchList.FindFirstItemWith: more logging * osinteracticegui: message for not working logview * osparser: symlink: check via cmd.exe after create symlink * osparser: removed cmd.exe call from fileexists% * osparser: success or failed after 'script finished' in log footer * osparser: dosbatch: retry on erroer 19 (WRITE_PROTECT) * updateted lang (po) files * updated indy lib 10-rev5391 * osparser: fix in getstring call chain * osfunc: fix in chmod error handling -- Detlef Oertel <d.oertel@uib.de> Tue, 06 Dec 2016 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.10) stable; urgency=low * osfuncwin: RunCommandAndCaptureOut: transfer exitcode if process could not start * osparser: execShellCall: new parameter FatalOnFail : boolean = true * osparser: execShellCall: returns exitcode on fail * osparser: evaluateBoolean: FileExists* : call execshellCall with FatalOnFail=false -- Detlef Oertel <d.oertel@uib.de> Wed, 09 Nov 2016 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.9) stable; urgency=low * osregistry: TuibRegistry.ReadEntry: use RegQueryValueExW on trdString, trdExpandString * osregistry: fix encoding in deletekey -- Detlef Oertel <d.oertel@uib.de> Fri, 04 Nov 2016 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.8) stable; urgency=low * osconf: global bool variable readconfig_done which is set by readconfig to true * osparser: CreateAndProcessScript: do not call readconfig if readconfig_done * should fix: uib#2016101810000104 -- Detlef Oertel <d.oertel@uib.de> Fri, 28 Oct 2016 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.7) stable; urgency=low * new unit oskeyboard * linkfolder knows now parameter shortcut for key like Shift-Alt-O -- Detlef Oertel <d.oertel@uib.de> Fri, 21 Oct 2016 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.6) stable; urgency=low * osmain: GetParameter: log error if readconfig failed * osparser: CreateAndProcessScript: log error if readconfig failed * osparser: CreateAndProcessScript: backup depot path and restor if rad config failed * osparser: CreateAndProcessScript: backup depot path and restor if rad config failed * osparser: evaluateBoolean: Fileexists* calling execShellCall architecture dependent * osparser: produceStinglist: getFileInfoMap32, getFileInfoMap64, getFileInfoMapSysnative -- Detlef Oertel <d.oertel@uib.de> Thu, 20 Oct 2016 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.5) stable; urgency=low * osjson: fix at jsonAsObjectGetKeyList * osparser: fix at jsonAsObjectDeleteByKey * osencoding: new overloaded version of reencode with destEncoding * osfunc: fix TXStringlist.savetofile (use new reencode verion) * osparser: fix reencodestr (use new reencode verion) -- Detlef Oertel <d.oertel@uib.de> Mon, 10 Oct 2016 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.4) stable; urgency=low * osjson: jsonAsObjectGetKeyList: also true on empty keylist * osjson: new functions: jsonAsObjectDeleteByKey, jsonAsArrayDeleteObjectByIndex * osparser: new functions: jsonAsObjectDeleteByKey, jsonAsArrayDeleteObjectByIndex * osencoding: : trim of found encoding ; fixes #2411 ; https://forum.opsi.org/viewtopic.php?p=38236#p38236 * oswebservice: sendlog: no more reencoding to uft8 ; Perhaps Fehler #2408 * osparser: getMSVersionMap: Do not try to read ReleaseID if below win10; fixes #2316 * osparser / osmain: use LLCritical in fatal situations; fixes #2263 * osparser: CompareDotSeparatedNumbers (str/bool): better wrong parameter handling fixes #2045 #2369 * osparser: new boolean command savetextfilewithencoding(<list>,<filename>,<endoding>) * osregistry: readentry: trdString, trdExpandString: expicit use empty value if 0 bytes -- Detlef Oertel <d.oertel@uib.de> Wed, 05 Oct 2016 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.3-2) stable; urgency=low * update to openSSL 1.0.2j -- Detlef Oertel <d.oertel@uib.de> Tue, 04 Oct 2016 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.3) stable; urgency=low * osfunc: new functions: isValidUtf8String(str:string) : boolean; getFixedUtf8String(str:string) : string; * osparser : new opsiscript functions: isValidUtf8String(str:string) : boolean; getFixedUtf8String(str:string) : string; -- Detlef Oertel <d.oertel@uib.de> Thu, 08 Sep 2016 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.2) stable; urgency=low * more Logging for GetProductPropertyList * oswebservice: getProductPropertyList(myproperty: string; defaultlist: TStringList, myClientId, myProductId): TStringList; overload; * osparser: GetProductPropertyList overload 2 and 4 arguments -- Detlef Oertel <d.oertel@uib.de> Mon, 05 Sep 2016 15:00:00 +0200 opsi-winst/opsi-script (4.11.6.1) stable; urgency=low * Merge from (4.11.5.14): * oswebservice: assume opsiservice version=4 in retrieveJSON* to avoid access to opsidata which fails if we use local_opsidata fixes Access Violations in initial opsi-client-agent installation * osfunc: FuncSaveToFile / SaveToFile: logging content on Loglevel 9 ; references #1679 * osfuncwin: fix broken Shellbatch /showoutput * Merge from opsi-winst/opsi-script (4.11.5.13) stable; urgency=low * do not try to run non existing external sub sections * Merge from (4.11.5.12) stable; urgency=low * Bugfix: osparser: doAktionen: fullfilename not initialized: causes causes double load of include or sub if searched file is not existing ; fixes #1656 * Bugfix: osparser: Filexists*: do not check for existing file with dir/ls if trim(filename)='' fixes: https://forum.opsi.org/viewtopic.php?f=6&t=7697 (FileExists auf leere Variable gibt wahr zurück) * osfunc: rewrite of FindLocalIPData for linux * osfunclin: new: getMyIpByTarget(target): implemented as: ip route get <target> * osfunclin: new: getMyIpByDefaultRoute: implemented as: ip route get 255.255.255.255 * osparser: getMyIpByTarget now also for linux * osfunclin: getCommandResult: Exitcode on higher (+2) loglevel * osfuncwin2: getPid4user: fix logging on not found * osfuncwin2: getPid4user: add logging on process found with wrong user * osfuncwin2: Impersonate2User: 5 retrys of getPid4user and explorer.exe * osconf,osmain: change depotdrive for linux from /mnt to /media/opsi_depot * osmain: new command line parameter: 'credentialfile' for username, password and sessionid in format: username=<username> password=<password> sessionid=<sessionid> If the parameter 'credentialfile' is used all thre parameter will be used from the file and the parameters : username, password and sessionid will be ignored * osmain: BuildPC: create flag files in /var/run/opsiclientd for shutdown or reboot execute reboot only if no opsiclientd in processlist * osparser: savetextfile: call FuncSaveToFile (merge from 4.11.5.17) * opsiscript.lpr / winst.lpr replace defaulttranslator by lcltranslator * osmain: (GUI) GetParameter: new parameter: lang <2 letter lang code> is set to lcltranslator.SetDefaultLang * osmain: BuildPC: termonate after exception in BuildPC: final ; references #1820 * oswebservice: finishOpsiConf: catch exception at backend_exit ; fixes #1820 * changes for lazarus 1.6 / FPC 3.0 * new unit osjson * new json functions: * jsonIsValid(<jsonstr>) : boolean * jsonIsArray(<jsonstr>) : boolean * jsonIsObject(<jsonstr>) : boolean * jsonAsObjectHasKey(<jsonstr>,<keystr>) : boolean * jsonAsArrayCountElements(<jsonstr>) : intstr * jsonAsObjectCountElements(<jsonstr>) : intstr * jsonAsArrayGetElementByIndex(<jsonstr>, <indexstr>) : jsonstring * jsonAsObjectGetValueByKey(<jsonstr>, <keystr>) : valuestring * jsonAsObjectSetValueByKey(<jsonstr>, <keystr>,<valuestring>) : jsonstring * jsonAsObjectSetStringtypeValueByKey(<jsonstr>, <keystr>,<valuestring>) : jsonstring * jsonAsArrayPutObjectByIndex(<jsonstr>, <indexstr>, <objectstr>) : jsonstring * jsonAsArrayToStringList(<jsonstr>) : stringlist * jsonAsObjectGetKeyList(<jsonstr>) : stringlist * jsonStringListToJsonArray(<strlist>) : jsonstr * new function: setStringInListAtIndex(<newstring>,<list>,<indexstr>) : list * Port from opsi-script 4.11.5.20: * More logging to find bug: loginscrpits do not always can Impersonate (uib#2015121410000075): * osfuncwin2: Impersonate2User: change parameter / add usercontextsid * osfuncwin2: Impersonate2User: more logging if usercontext not found * osparser: doLinkFolderActions: if runLoginScripts: call Impersonate2User with usercontextsid * osparser: at getMSVersionMap list.add ('ReleaseID=' + GetRegistrystringvalue("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" "ReleaseID",true)); * DosBatch /showoutput: * osfuncwin: switch main window to left/top corner and output window to right/down corner * osfunclin: the same and fixes #1936 * fix: strip newline from strLoadTextfile and strLoadTextFileWithEncoding * new string function md5sumFromFile(<path to file>) * new string function timeStampAsFloatStr (floattostrF(now,ffFixed,15,3)) * new bool function processIsRunning(<process string>) * new variant of shellcall as procedure (no result) * new variant of shellcall with result string which have the exitcode * new string function encryptStringBlow(<keystring>,<datastring>) * new string function decryptStringBlow(<keystring>,<datastring>) * new String function startProcess(<string>) returns exitcode from sysnative started process * new String function startProcess(<string>) returns exitcode from sysnative started process * osparser: at getLinuxVersionMap list.add ('SubRelease=' (patchlevel from SLES) * osfunclin: function getPackageLock(timeoutsec : integer; kill : boolean) : Boolean; * new bool function waitForPackageLock(<seconds timeout string>,<bool should we kill>) (Linux only) * Linux: check for free start count * osparser:doAktionen:getWord use WorddelimiterSet4 before FindKindOfStatement (needed for 'shellCall(' statement) * osconf: Linux: reading winstversion via fileinfo.TFileVersionInfo * use LazFileUtils in different units (may replace fileutil ?) * osfunclin/osfunc: use FPCProcess.ExitCode instead of ExitStatus to get the final exitcode //* oswebservice: retrieveJSONObject: // test memorystream to raise exception here * oswebservice: productonClients_getObjects__actionrequests: use getProductOrdering * oswebservice: productOnClient_getobject_actualclient: use getProductOrdering * new unit osfuncwin3 with fuctions to windows version * osparser: at getMSVersionMap new key prodInfoNumber from win32 GetProductInfo * osparser: at getMSVersionMap new key prodInfoText from getProductInfoStrByNum from win32 GetProductInfo * osfuncwin3: fix GetWinSystemDirectory * osmain: initialization: GetDefaultLang; * do not delete temporary cmd files on Loglevel LLconfidential * Logging of productordering to LLDebug2 (8) * Windows: writing ReleaseId and ProductId to log file header * osparser: md5sumFromFile: use ExpandFileName * osparser: getValueFromFile / getValueFromFileBySeparator : empty string on failure * osencoding: internal Defaultencoding=utf8 //* oslog: DependentAdd: reencode log strings from utf-8 to system * oslog: Logfile now utf-8 encoded * oswebservice: productonClients_getObjects__actionrequests: fallback to old sorting method if exception in new method (eg. getProductOrdering not reachable) * new stringlist function removeFromListByMatch(<searchstring>,<list>) * new string function getStringFromListAtIndex(<list>,<indexstring>) * osparser: getJsonUrlString: fix for json array as parameter * wispecfolder, osfunc: replace SHGetPathFromIDList by SHGetPathFromIDListW * osfunc: MakeShellLink: for LinkFile.Save filename in system encoding -- Detlef Oertel <d.oertel@uib.de> Tue, 22 Sep 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.14) stable; urgency=low * oswebservice: assume opsiservice version=4 in retrieveJSON* to avoid access to opsidata which fails if we use local_opsidata fixes Access Violations in initial opsi-client-agent installation * osfunc: FuncSaveToFile / SaveToFile: logging content on Loglevel 9 ; references #1679 * osfuncwin: fix broken Shellbatch /showoutput -- Detlef Oertel <d.oertel@uib.de> Thu, 10 Sep 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.13) stable; urgency=low * do not try to run non existing external sub sections -- Detlef Oertel <d.oertel@uib.de> Thu, 21 Aug 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.12) stable; urgency=low * Bugfix: osparser: doAktionen: fullfilename not initialized: causes causes double load of include or sub if searched file is not existing ; fixes #1656 * Bugfix: osparser: Filexists*: do not check for existing file with dir/ls if trim(filename)='' fixes: https://forum.opsi.org/viewtopic.php?f=6&t=7697 (FileExists auf leere Variable gibt wahr zurück) -- Detlef Oertel <d.oertel@uib.de> Thu, 20 Aug 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.11) stable; urgency=low * Bugfix: (FileExist call) changes (GetLastExitCode Result Value): (because it call execshellCall to detect symlinks correctly): osparser: new parameter for execshellCall: FetchExitCodePublic if false result is on FLastPrivateExitCode if false true is on FLastExitCodeOfExe (GetLastExitCode) -- Detlef Oertel <d.oertel@uib.de> Thu, 13 Aug 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.10) stable; urgency=low * oswebservice: retreiveJSONObject * start with (new) correct Mimetype and AcceptEncoding and fall back to old (wrong) parameters * osfunc: FileCopyWin: more log on file in use * osfunc: FileCopyWin: fix for Err 32 on setTimeForFile * osfunc: TuibRegistry.Create(myforce64: boolean; readonly: boolean); * osparser: GetRegistrystringvalue* works now with readonly registry ; fixes #1647 * osmain: BuildPC: speed up: only ask for changed action request if there was one (uib#2015080710000015) -- Detlef Oertel <d.oertel@uib.de> Tue, 21 Jul 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.9) stable; urgency=low * osmain: initproduct before run update script: refresh getProductMap * osmain: but still use setup as lastaction even if was setup+update * oswebservice: new procedure TOpsi4Data.setActualProductActionRequest -- Detlef Oertel <d.oertel@uib.de> Fri, 17 Jul 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.8-2) stable; urgency=low * update to openssl 1.0.2d -- Detlef Oertel <d.oertel@uib.de> Wed, 17 Jul 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.8) stable; urgency=low * new statement LoadProductProperties <clientId> <productId> (re-loads productproperty list from Server if possible) * GetProductproperty: do not try to use also local_opsidata or opsidata -- Detlef Oertel <d.oertel@uib.de> Thu, 09 Jul 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.7) stable; urgency=low * GetProductproperty: try / except added -- Detlef Oertel <d.oertel@uib.de> Tue, 07 Jul 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.6) stable; urgency=low * GetProductpropertyList: also with list as second (default) parameter ; fixes #1602 * GetProductpropertyList: try to use also local_opsidata, log using default * GetProductproperty: if empty try to use also local_opsidata or opsidata, log using default -- Detlef Oertel <d.oertel@uib.de> Thu, 02 Jul 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.5) stable; urgency=low * upgrade to ssl Libraries 1.0.2c (libeay32.dll, ssleay32.dll); fixes #1586 * osfuncwin2: updateEnvironment: do not try to run updateEnvironment on windows < 6; fixes #1591 * osmain: BuildPC: process product only if we have a original action request wich is still set -- Detlef Oertel <d.oertel@uib.de> Thu, 25 Jun 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.4) stable; urgency=low * Working with ssl protocol: sslvSSLv23 - auto negotation -- Detlef Oertel <d.oertel@uib.de> Tue, 02 Jun 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.3) stable; urgency=low * (Security Update) oswebservice: use TLS1.2 instead of SSLv3 and fallback downto SSLv3 -- Detlef Oertel <d.oertel@uib.de> Mon, 01 Jun 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.2) stable; urgency=low * upgrade to ssl Libraries 1.0.2a (libeay32.dll, ssleay32.dll) * files commands move / rename / hardlink / symlink now work with overwrite; fixes #1435 * if move / rename fails (file is in use) we retry it with MOVEFILE_DELAY_UNTIL_REBOOT So the move will be done at the next reboot. Reboot will be set automatically if not Option -c is set. * file command del / delete now with option -c and retry to delete on next boot if file in use ; fixes # 788 * osfunc: new function opsiunquotestr2 * new string function unquote2(s1,s2): like unquote but: removes only quotes if they found at start and end s2 may be two chars long. Then the first char is the start mark and the second char is the end mark * osparser: GetString: new boolean switch requote * osparser: GetString requote=true: change double quoted (""str"") to alternative double quoted ('""'); references #1284 * new string function: GetShortWinPathName(longpath) ; fixes #581 Windows only Gives short path (8.3) from a long path e.g. GetShortWinPathName("C:\Program Files (x86)") gives "C:\PROGRA~2" In case of Error the result is an empty string * osfunc: startprocess_cp: translate windows showWindowFlag to TProcess TShowWindowOptions * osparser: doRegistryHack* : fix for not HKCU reg enties in loginscripts; fixes #1538 * oswebservice: more log for "unexpected Result from webservice in retrieveJSONObject, number of lines: 0" * new string function: GetConfidentialProductProperty : like GetProductProperty but handles the result as confidential string ; fixes #462 * fixes at GetNTVersion for Win10 * new boolean function CompareDotSeparatedNumbers(<str1>,<relation str>,<str2>) <relation str> may be: one of [<,<=,=,>=,>] * new boolean function CompareDotSeparatedStrings(<str1>,<relation str>,<str2>) <relation str> may be: one of [<,<=,=,>=,>] -- Detlef Oertel <d.oertel@uib.de> Wed, 01 Apr 2015 15:00:00 +0200 opsi-winst/opsi-script (4.11.5.1) stable; urgency=low * osparser: commandline := 'cmd64.exe /c "reg delete ""'+key_completepath+'"" /f'; (fixes #1299) * port of the changes since 4.11.4.6 to Linux * osparser: New files commands hardlink, symlink, rename, move * osfunc: new tuibinstall methods: hardlink, symlink, rename (Linux / Windows ; fixes #1319, #362) * osparser: execDosBatch: The path to temporary file is only quoted if it contains spaces * osparser: execDosBatch: Variables are now allowed as Parameters (but no functions) fixes #1312 * osparser: executeWith: Variables are now allowed as Parameters (but no functions) * osparser: doAktionen: Variables and functions are now allowed as sleepsecond Parameters; fixes #1193 * osparser: %SriptPath%/../lib as additional Path in Search path for includes; fixes #1201 * osparser: searchpath for includes are now works also for sub <file> ; fixes #1201 * New loop statement: for %s% = $start$ to $stop$ do <statement> ; refernces #407 - $start$ and $stop$ has to be integer strings - $start$ < $stop$ is required - in fact a stringlist $start$ to $stop$ is generated over which we iterate while loop * osparser: tsLoopForTo for %s% = $start$ to $stop$ do <statement> * osparser: activating winbatch for linux ; fixes #1170 * replacing opsi-winst constants by opsi-script * osparser: produceStringList: New (overloaded) stringlist function (references #1110): - removeFromListByContaining(<search string>, <target list>) removes <search string> from <target list> - removeFromListByContaining(<search list>, <target list>) removes <search list> from <target list> - both functions search case insensitive for a matching substring * ospparser: fix for filexists* to detect symlinks * upgrade to ssl Libraries 1.0.1L (libeay32.dll, ssleay32.dll) * osmain: GetParameter + StartProgramModes: more try - except : port from 4.11.4.16 * osparser: doOpsiServiceCall: more try - except : port from 4.11.4.16 * osparser: doTextPatchMain: do not use CheckFileExists in SaveToFile ; references #171 * HowToBuild.txt ; fixes #1372 * oswebservice: finishOpsiConf: if runproductlist then Logg-Appendmode := true; references #1379 * new Statement: UpdateEnvironment : Triggers Windows to reload Environment from Registry; Win only; references #1364 * new Control Statement: Switch ; references #740 - osparser: Switch <string expr ; normally variable> Case <string expr; normally const> statments EndCase [Defaultcase statments EndCase] EndSwitch * LinkFolder for Linux activated: No Iconindex but link_categories: 'AudioVideo', 'Audio', 'Video', 'Development', 'Education', 'Game', 'Graphics', 'Network', 'Office', 'Settings', 'System', 'Utility' // from http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html#category-registry changes in osparser, osfunclin and new unit oslindesktop * some more ExpandFilename calls to handle incorrect path delimiter * oswebservice: sendlog: replace old writeLog by new log_write method * New Statement: MaximizeWinst at osparser * New Functions LoadTextFileWithEncoding(file,encoding) strLoadTextFileWithEncoding(file,encoding) at osparser * osencoding: LoadFromFileWithEncoding * oswebservice: sendlog: at Linux do not convert logstrings to uft8 * oslog: dependentadd: more try except * osparser: sleepseconds (tsSleep): more try except and more logging * osparser: winbatch: trim targetfilename * osparser: shellBatch: Parameter at Linux (wrong bash parameter) * osmain: User Profile Management (runloginscripts) is now free -- Detlef Oertel <d.oertel@uib.de> Thu, 22 Dec 2014 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.14) stable; urgency=low * less (only 512 chars) debug output: oswebservice: retrieveJSONObject: log ResultLines.Strings[0] if Result = nil * oswebservice: retrieveJSONObject: FillChar(buffer^, 655360,' '); before read to buffer * manifest extended for win 10: <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> -- Detlef Oertel <d.oertel@uib.de> Thu, 04 Dec 2014 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.13) stable; urgency=low * more debug output: oswebservice: retrieveJSONObject: log ResultLines.Strings[0] if Result = nil -- Detlef Oertel <d.oertel@uib.de> Wed, 12 Nov 2014 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.12) stable; urgency=low * fix: osmain: StartProgramModes: correct Path to the opsiclientd.conf in batch mode * Logdevel while writing log to Service decreased * fix: command typo: ErrorsOccuredSinceMark is wrong, now also allowed: ErrorsOccurredSinceMark fixes #1121 * bakup files of log now are opsi-script.log.x where x is 0 - 8 * do not run login scripts if user is 'opsisetupadmin' -- Detlef Oertel <d.oertel@uib.de> Fri, 24 Oct 2014 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.11) stable; urgency=low * new unit: SystemCriticalU * osmain: in StartprogramModes set SystemCritical.IsCritical := true; * osmain: in BuildPC set SystemCritical.IsCritical := true; * osmain: in Terminateapp set SystemCritical.IsCritical := false; * osmain: in different execept set SystemCritical.IsCritical := false; -- Detlef Oertel <d.oertel@uib.de> Wed, 09 Oct 2014 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.10) stable; urgency=low * osparser: doAktionen: tsIncludeInsert: debug outputs for 'index out of range' bug * osparser: LoadValidLinesFromFile : fix add loaded sub lines to FLinesOriginList to fix 'index out of range' at tsIncludeInsert * osparser: new bool function: LineContaining_ExistsIn(<string>, <file name>) -- Detlef Oertel <d.oertel@uib.de> Wed, 01 Oct 2014 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.9) stable; urgency=low * osfunc: StartProcess_cp: remove wrong setProgress which may lead to division by zero * osbatchgui: new var SavedBatchWindowMode * osparser: on NormalizeWinst and IconizeWinst save BatchWindowMode to SavedBatchWindowMode and set BatchWindowMode to new value. on RestoreWinst set to BatchWindowMode and mode to SavedBatchWindowMode Fixes changing the window mode by every sub section call (do_actions) -- Detlef Oertel <d.oertel@uib.de> Wed, 20 Aug 2014 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.8) stable; urgency=low * osparser: more loggin on LLDebug2 in fileActionsMain: used source and target * osparser: more loggin on LLDebug2 in fileActionsMain: additional trim() an target -- Detlef Oertel <d.oertel@uib.de> Thu, 07 Aug 2014 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.7) stable; urgency=low * osfunc: StartProcess_cp: if timeout is given: use Progressbar to show time progess until Timeout * new unit cCPUusage * skin.ini; new section [Activitybar] * osparser : Line 'Looping through' append trailing '''' fixes # 1116 * osparser: typo double instead of doubble fixes #1117 * new switch: AutoActivityDisplay = (true/false) default=false; if true shows marquee while winbatch/dosbatch * osfuncwin: RunCommandAndCaptureOut: non blocking readfile with PeekNamedPipe (so Activitybar may run in Background) * new manifest: with assemblyIdentity (needed for maquee style in Activitybar -- Detlef Oertel <d.oertel@uib.de> Wed, 23 Jul 2014 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.6) stable; urgency=low * osmain: typo (dependenproducts) fixes #1078 * osparser: typo (Windowds) fixes #1078 * osconf: changed version to 4.11.4.6 * osparser: fix: RegDeleteKey (https://forum.opsi.org/viewtopic.php?p=27061#p27061) #1086 * osparser: set Fatal if shellbatch/execwith could not be executed. fixes #1074 * osparser/oslog: new log file .history which always appends just the timestamp, name and version of the installed product. * osparser: PatchTextFile: new command: searchAndReplace <search str> <replace str> (works global and not case sensitive) * The temporary file names have now a random component in order to prevent conflicts between different instances of opsi-script. fixes #774 * subsub bug fix: help to find sub sections in external sub section files (calling section as additional parameter in doAktionen) * osparser: getsublist: trim parameters before strtoint * osparser: getsublist: adjustBounds: fix for negative second parameter. -- Detlef Oertel <d.oertel@uib.de> Thu, 27 May 2014 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.5) stable; urgency=low * unquote fix: * osparser: 'unquote' function details moved to osfunc: 'opsiunquotestr' function (because synautil.unquotestr is buggy: "tes't" gives "test" * osfunc: new function opsiunquotestr * osfunc: use of opsiunquotestr in fileexists, chmod * osparser: use of opsiunquotestr in fileactionsmain * osmain: use of opsiunquotestr in getparameter * osparser: doRegistryAllNtUserDats: additional check if we can patch via HKU -- Detlef Oertel <d.oertel@uib.de> Thu, 19 May 2014 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.4) stable; urgency=low * osfunclin: RunCommandAndCaptureOut: Log exitcode on Loglevel LLInfo * osparser: linkActionsMain: fix for index out of bound (while (i <= Sektion.count)) fixes: #958 * osfunc: StartProcess_cp: log error if time out is reached (inc's error counter) fixes #506 * new commands in PatchTextFile (osparser:doTextpatchMain): 'setKeyValueSeparator char' sets Separator for key value pairs (default is '=') 'setValueByKey keystr valuestr' search exitsing key and sets the given value. If the key not exists, the key/value pair will be created below the line cursor. * osparser: scriptstopped := true on ExitWindows /ImmediateReboot and /ImmediateLogout * new function: getValueFromFile (<key string>,<file name> ) : string * new function: getValueFromFileBySeparator (<key string>,<separator string>,<file name> ) : string * new function: saveTextFile(<list>, < filename>) : bool * osparser: TuibInstScript.doAktionen: output initalized (created) fixes #974 * osfunc: enhanced: TXStringList.getStringValue * osparser: produceStringlist: fix in emptylist() function -- Detlef Oertel <d.oertel@uib.de> Thu, 20 Mar 2014 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.3) stable; urgency=low * opsparser: doFileActions: fix for mixed File section modifiers * osfunc: TuibRegistry.WriteEntry: fix logging if regtype is changed: fixes #780 * osfunc: wait for parent ending also if waitforprocessending is true * osfunc: FileCopyWin: use of windows.copyFile instead of fileutils.copyFile * osparser: Stingreplace with IgnoreCase for %userprofiledir% * osparser: new constant %opsiTmpDir% (c:\opsi.org\tmp ; /tmp ) * osparser: new constant %opsiLogDir% (c:\opsi.org\log ; /var/log/opsi-client-agent/opsi-script ) * osparser: new command: FatalOnRuntimeError (default = false) * osparser: takeString: LogError if index out of bounds; Fatal if FatalOnSyntaxError * oslog: escape control chars * osfunc: allcopy/execdelete: handle directories with additional attributes (e.g. hidden) * osparser: new function doRegistryNTUserDat * new Registry Parameter /NTuserDat: <path to ntuser.dat> * osmain: ProcessProduct: looks before processing a product if there is still a action request * osparser: for fileExists: replace GetFileInfo by "FileExists() or DirectoryExists()" * fixes to really stop the script interpretation after isfatalerror, issuccess, issuspended * new unit opsihwbiosinfo based on tsmbios * new infomap getHWBiosInfoMap * new bool function runningOnUefi * doFileActions: disable windows critical Error Message boxes (SetErrorMode(SEM_FAILCRITICALERRORS)) -- Detlef Oertel <d.oertel@uib.de> Mon, 9 Dec 2013 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.2) stable; urgency=low * make 4.11.4 working under windows * osencoding: searchencoding: new methode to read encoding * osinteractivegui: opendialog knows now *.ins and *.opsiscript * new string function reencodestr(str, from, to) * new stringlist function reencodestrlist(strlist, from, to) * new stringlist function shellCall( cmd ) ; returns the output of (sysnative) shell with cmd * getipByName now uses resolveip at linux * manifest extended for win 8.1: <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>: http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074%28v=vs.85%29.aspx * fix: use of sysnative with winbatch -- Detlef Oertel <d.oertel@uib.de> Mon, 23 Sep 2013 15:00:00 +0200 opsi-winst/opsi-script (4.11.4.1) stable; urgency=low * splitted project to opsi-script and opsi-script-nogui * splitted unit osmain to osmain and osinteractivegui * changed unit names: * wi* -> os* * fixed: Feature 491 : real origin file and line number on syntax error (also on included parts) * new unit osencode which contain encoding functions known encodings are UTF-8 utf8 UTF-8BOM utf8bom Ansi ansi CP1250 cp1250 CP1251 cp1251 CP1252 cp1252 CP1253 cp1253 CP1254 cp1254 CP1255 cp1255 CP1256 cp1256 CP1257 cp1257 CP1258 cp1258 CP437 cp437 CP850 cp850 CP852 cp852 CP866 cp866 CP874 cp874 CP932 cp932 CP936 cp936 CP949 cp949 CP950 cp950 ISO-8859-1 iso8859-1 ISO-8859-2 iso8859-2 KOI-8 koi8 UCS-2LE ucs2le UCS-2BE ucs2be * fixed: Bug 554 : includelogtail calls reencode * command IncludeLog has now an optional 3rd parameter sourceEncoding which may be 'auto', 'system' or a valid encoding. * nearly all loadfromfile now with reencode * script encoding can now be given with for example encoding=utf8 * loglevel of if/else/endif changed to LLinfo (6) fixes 539 * loglevel of setLoglevel changed to LLinfo (6) fixes 535 * new command 'IsSuspended' interupts script execution and leave productOnClient unchanged * shellbatch output is now captured * fix in linux getprocesslist: output now: short binary name;pid;user;full command line -- Detlef Oertel <d.oertel@uib.de> Tue, 30 Jul 2013 15:00:00 +0200 opsi-winst/opsi-script (4.11.4) stable; urgency=low * port to Linux * removed logginig via syslog * %opsiDepotId% * changed unit names: * wisynth -> osparser * wibatch -> osbatchgui * wimain -> osmain * wifunc -> osfunc * wiwin32 -> osfuncwin2 -- Detlef Oertel <d.oertel@uib.de> Tue, 30 Apr 2012 15:00:00 +0200