mirror of
https://github.com/fleschutz/PowerShell.git
synced 2024-12-27 17:19:16 +01:00
117 lines
3.4 KiB
Markdown
117 lines
3.4 KiB
Markdown
## The *publish-to-ipfs.ps1* Script
|
|
|
|
This script publishes the given files and folders to IPFS.
|
|
|
|
## Parameters
|
|
```powershell
|
|
/home/mf/Repos/PowerShell/Scripts/publish-to-ipfs.ps1 [[-FilePattern] <String>] [[-HashList] <String>] [[-DF_Hashes] <String>] [<CommonParameters>]
|
|
|
|
-FilePattern <String>
|
|
Specifies the file pattern
|
|
|
|
Required? false
|
|
Position? 1
|
|
Default value
|
|
Accept pipeline input? false
|
|
Accept wildcard characters? false
|
|
|
|
-HashList <String>
|
|
Specifies the path to the resulting hash list
|
|
|
|
Required? false
|
|
Position? 2
|
|
Default value IPFS_hashes.txt
|
|
Accept pipeline input? false
|
|
Accept wildcard characters? false
|
|
|
|
-DF_Hashes <String>
|
|
Specifies the path to the resulting digital forensic hashes
|
|
|
|
Required? false
|
|
Position? 3
|
|
Default value file_checksums.xml
|
|
Accept pipeline input? false
|
|
Accept wildcard characters? false
|
|
|
|
[<CommonParameters>]
|
|
This script supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction,
|
|
WarningVariable, OutBuffer, PipelineVariable, and OutVariable.
|
|
```
|
|
|
|
## Example
|
|
```powershell
|
|
PS> ./publish-to-ipfs C:\MyFile.txt
|
|
|
|
```
|
|
|
|
## Notes
|
|
Author: Markus Fleschutz | License: CC0
|
|
|
|
## Related Links
|
|
https://github.com/fleschutz/PowerShell
|
|
|
|
## Source Code
|
|
```powershell
|
|
<#
|
|
.SYNOPSIS
|
|
Publishes files & folders to IPFS
|
|
.DESCRIPTION
|
|
This script publishes the given files and folders to IPFS.
|
|
.PARAMETER FilePattern
|
|
Specifies the file pattern
|
|
.PARAMETER HashList
|
|
Specifies the path to the resulting hash list
|
|
.PARAMETER DF_Hashes
|
|
Specifies the path to the resulting digital forensic hashes
|
|
.EXAMPLE
|
|
PS> ./publish-to-ipfs C:\MyFile.txt
|
|
.LINK
|
|
https://github.com/fleschutz/PowerShell
|
|
.NOTES
|
|
Author: Markus Fleschutz | License: CC0
|
|
#>
|
|
|
|
param([string]$FilePattern = "", [string]$HashList = "IPFS_hashes.txt", [string]$DF_Hashes = "file_checksums.xml")
|
|
|
|
try {
|
|
if ($FilePattern -eq "") { $FilePattern = read-host "Enter file(s)/directories to publish" }
|
|
|
|
$StopWatch = [system.diagnostics.stopwatch]::startNew()
|
|
|
|
Write-Host "⏳ (1/3) Searching for IPFS executable..." -NoNewline
|
|
& ipfs --version
|
|
if ($lastExitCode -ne "0") { throw "Can't execute 'ipfs' - make sure IPFS is installed and available" }
|
|
|
|
if (test-path "$FilePattern" -pathType container) {
|
|
"⏳ (2/3) Publishing folder $FilePattern/..."
|
|
& ipfs add -r "$FilePattern" > $HashList
|
|
[int]$Count = 1
|
|
""
|
|
"⏳ (3/3) Calculating digital forensics hashes to $DF_HASHES ..."
|
|
& nice hashdeep -c md5,sha1,sha256 -r -d -l -j 1 "$FilePattern" > $DF_Hashes
|
|
} else {
|
|
$FileList = (get-childItem "$FilePattern")
|
|
foreach ($File in $FileList) {
|
|
if (test-path "$FilePattern" -pathType container) {
|
|
"⏳ (2/3) Publishing folder $File/..."
|
|
& ipfs add -r "$File" >> $HashList
|
|
} else {
|
|
"⏳ (3/3) Publishing file $File..."
|
|
& ipfs add "$File" >> $HashList
|
|
}
|
|
}
|
|
[int]$Count = $FileList.Count
|
|
}
|
|
|
|
[int]$Elapsed = $StopWatch.Elapsed.TotalSeconds
|
|
"✔️ published $Count file(s)/folder(s) to IPFS in $Elapsed sec"
|
|
" NOTE: to publish it to IPNS execute: ipfs name publish <HASH>"
|
|
exit 0 # success
|
|
} catch {
|
|
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
|
|
exit 1
|
|
}
|
|
```
|
|
|
|
*Generated by convert-ps2md.ps1 using the comment-based help of publish-to-ipfs.ps1*
|