mirror of
https://github.com/Icinga/icinga-powershell-framework.git
synced 2025-12-20 23:00:35 -05:00
Ensure config.json is opened as read-only
This commit is contained in:
parent
9a1c187e90
commit
80051d6732
4 changed files with 50 additions and 3 deletions
|
|
@ -17,6 +17,7 @@ Released closed milestones can be found on [GitHub](https://github.com/Icinga/ic
|
||||||
* [#193](https://github.com/Icinga/icinga-powershell-framework/pull/193) Adds optional support for adding milliseconds to `Get-IcingaUnixTime` with the `-Milliseconds` argument for more detailed time comparison
|
* [#193](https://github.com/Icinga/icinga-powershell-framework/pull/193) Adds optional support for adding milliseconds to `Get-IcingaUnixTime` with the `-Milliseconds` argument for more detailed time comparison
|
||||||
* [#198](https://github.com/Icinga/icinga-powershell-framework/pull/198) Adds support to flush the content of the Icinga Agent API directory with a single Cmdlet `Clear-IcingaAgentApiDirectory`
|
* [#198](https://github.com/Icinga/icinga-powershell-framework/pull/198) Adds support to flush the content of the Icinga Agent API directory with a single Cmdlet `Clear-IcingaAgentApiDirectory`
|
||||||
* [#203](https://github.com/Icinga/icinga-powershell-framework/pull/203) Removes experimental state of the Icinga PowerShell Framework code caching and adds docs on how to use the feature
|
* [#203](https://github.com/Icinga/icinga-powershell-framework/pull/203) Removes experimental state of the Icinga PowerShell Framework code caching and adds docs on how to use the feature
|
||||||
|
* [#205](https://github.com/Icinga/icinga-powershell-framework/pull/205) Ensure Icinga for Windows configuration file is opened as read-only for every single task besides actually modifying configuration content
|
||||||
|
|
||||||
## 1.3.1 (2021-02-04)
|
## 1.3.1 (2021-02-04)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,8 @@
|
||||||
'.\lib\config\Test-IcingaPowerShellConfigItem.psm1',
|
'.\lib\config\Test-IcingaPowerShellConfigItem.psm1',
|
||||||
'.\lib\core\logging\Write-IcingaConsoleOutput.psm1',
|
'.\lib\core\logging\Write-IcingaConsoleOutput.psm1',
|
||||||
'.\lib\core\logging\Write-IcingaConsoleNotice.psm1',
|
'.\lib\core\logging\Write-IcingaConsoleNotice.psm1',
|
||||||
'.\lib\core\logging\Write-IcingaConsoleWarning.psm1'
|
'.\lib\core\logging\Write-IcingaConsoleWarning.psm1',
|
||||||
|
'.\lib\core\tools\Read-IcingaFileContent.psm1'
|
||||||
)
|
)
|
||||||
FunctionsToExport = @(
|
FunctionsToExport = @(
|
||||||
'Use-Icinga',
|
'Use-Icinga',
|
||||||
|
|
@ -37,7 +38,8 @@
|
||||||
'Test-IcingaPowerShellConfigItem',
|
'Test-IcingaPowerShellConfigItem',
|
||||||
'Write-IcingaConsoleOutput',
|
'Write-IcingaConsoleOutput',
|
||||||
'Write-IcingaConsoleNotice',
|
'Write-IcingaConsoleNotice',
|
||||||
'Write-IcingaConsoleWarning'
|
'Write-IcingaConsoleWarning',
|
||||||
|
'Read-IcingaFileContent'
|
||||||
)
|
)
|
||||||
CmdletsToExport = @('*')
|
CmdletsToExport = @('*')
|
||||||
VariablesToExport = '*'
|
VariablesToExport = '*'
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ function Read-IcingaPowerShellConfig()
|
||||||
return (New-Object -TypeName PSObject);
|
return (New-Object -TypeName PSObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
[string]$Content = Get-Content -Path $ConfigFile;
|
[string]$Content = Read-IcingaFileContent -File $ConfigFile;
|
||||||
|
|
||||||
if ([string]::IsNullOrEmpty($Content)) {
|
if ([string]::IsNullOrEmpty($Content)) {
|
||||||
return (New-Object -TypeName PSObject);
|
return (New-Object -TypeName PSObject);
|
||||||
|
|
|
||||||
44
lib/core/tools/Read-IcingaFileContent.psm1
Normal file
44
lib/core/tools/Read-IcingaFileContent.psm1
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Reads content of a file in read-only mode, ensuring no data corruption is happening
|
||||||
|
.DESCRIPTION
|
||||||
|
Reads content of a file in read-only mode, ensuring no data corruption is happening
|
||||||
|
.FUNCTIONALITY
|
||||||
|
Reads content of a file in read-only mode, ensuring no data corruption is happening
|
||||||
|
.EXAMPLE
|
||||||
|
PS>Read-IcingaFileContent -File 'config.json';
|
||||||
|
.OUTPUTS
|
||||||
|
System.Object
|
||||||
|
.LINK
|
||||||
|
https://github.com/Icinga/icinga-powershell-framework
|
||||||
|
#>
|
||||||
|
|
||||||
|
function Read-IcingaFileContent()
|
||||||
|
{
|
||||||
|
param (
|
||||||
|
[string]$File
|
||||||
|
);
|
||||||
|
|
||||||
|
if ((Test-Path $File) -eq $FALSE) {
|
||||||
|
return $null;
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.IO.FileStream]$FileStream = [System.IO.File]::Open(
|
||||||
|
$File,
|
||||||
|
[System.IO.FileMode]::Open,
|
||||||
|
[System.IO.FileAccess]::Read,
|
||||||
|
[System.IO.FileShare]::Read
|
||||||
|
);
|
||||||
|
|
||||||
|
$ReadArray = New-Object Byte[] $FileStream.Length;
|
||||||
|
$UTF8Encoding = New-Object System.Text.UTF8Encoding $TRUE;
|
||||||
|
$FileContent = '';
|
||||||
|
|
||||||
|
while ($FileStream.Read($ReadArray, 0 , $ReadArray.Length)) {
|
||||||
|
$FileContent = [System.String]::Concat($FileContent, $UTF8Encoding.GetString($ReadArray));
|
||||||
|
}
|
||||||
|
|
||||||
|
$FileStream.Dispose();
|
||||||
|
|
||||||
|
return $FileContent;
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue