Browse Source

scriptapps misc

master
Julian Noble 2 weeks ago
parent
commit
551c993c22
  1. 111
      src/scriptapps/SELFSIGN.PS1
  2. 44
      src/scriptapps/fetchruntime.ps1
  3. 72
      src/scriptapps/fetchruntime_bits.ps1
  4. 42
      src/scriptapps/fetchruntime_old.ps1
  5. 42
      src/scriptapps/fetchruntime_wrap.toml
  6. 2
      src/scriptapps/punk.tcl
  7. 16
      src/scriptapps/selfsign_wrap.toml
  8. 15
      src/scriptapps/tcltm.tcl

111
src/scriptapps/SELFSIGN.PS1

@ -1,56 +1,61 @@
[cmdletbinding()]
param(
[Parameter(Mandatory=$true)]
[string] $filename
)
# ----------------------------------------------------------------------------------------------------------------------------------------------------------
if (($filename.length -eq 0) -or -not (test-path $filename)) {
write-host "file $filename not found"
exit 1
}
$cert = Get-ChildItem -path Cert:\LocalMachine\My -CodeSigningCert | where {$_.subject -eq "CN=punkshell local"} | Select-Object -First 1
if ($cert.length -eq 0) {
write-host "No self signing certificate found (Cert:\LocalMachine\My)"
exit 2
function ParameterDefinitions {
param(
[Parameter(Mandatory)][string] $filename,
[Parameter(ValueFromRemainingArguments)] $opts
)
}
# see also https://vcsjones.dev/subject-interface-packages/
# ----------------------------------------------------------------------------------------------------------------------------------------------------------
function psmain {
[CmdletBinding()]
#Empty param block (extra params can be added)
param()
dynamicparam { GetDynamicParamDictionary ParameterDefinitions }
process {
#Called once - we get a single item being our PSBoundParameters dictionary
write-host "Bound Parameters:$($PSBoundParameters)"
switch ($PSBoundParameters.keys) {
'filename' {
write-host "got filename " $PSBoundParameters.filename
Set-Variable -Name $_ -Value $PSBoundParameters."$_"
if (($filename.length -eq 0) -or -not (test-path $filename)) {
write-host "file $filename not found"
exit 1
}
}
'opts' {
write-warning "Unused parameters: $($PSBoundParameters.$_)"
}
Default {
write-warning "Unhandled parameter -> [$($_)]"
}
}
foreach ($boundparam in $PSBoundParameters.GetEnumerator()) {
}
}
end {
# PSBoundParameters
write-host "filename:'$filename'"
$cert = Get-ChildItem -path Cert:\LocalMachine\My -CodeSigningCert | Where-Object {$_.subject -eq "CN=punkshell local"} | Select-Object -First 1
if ($cert.length -eq 0) {
write-host "No self signing certificate found (Cert:\LocalMachine\My)"
exit 2
}
write-host "Using Certificate"
write-host $cert | Select-Object FriendlyName,Thumbprint,Subject,NotAfter
write-host "Processing '$filename' ..."
try {
Write-Host $(Set-AuthenticodeSignature -FilePath $filename -Certificate $cert)
} catch {
throw $_.Exception.Message
}
echo "Using Certificate"
echo $cert | select FriendlyName,Thumbprint,Subject,NotAfter
echo "Processing $filename ..."
Set-AuthenticodeSignature -FilePath $filename -Certificate $cert
echo "-done-"
# SIG # Begin signature block
# MIIFkgYJKoZIhvcNAQcCoIIFgzCCBX8CAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCfgqqTvE/X4m/K
# UC7uGTV6Lz+BDJQsjeZDk0vmylnQmaCCAwgwggMEMIIB7KADAgECAhBETzeKK6w7
# vkayhsNPPi+IMA0GCSqGSIb3DQEBBQUAMBoxGDAWBgNVBAMMD3B1bmtzaGVsbCBs
# b2NhbDAeFw0yNDAxMTIxMTE1MTBaFw0yOTAxMTIxMTI1MTBaMBoxGDAWBgNVBAMM
# D3B1bmtzaGVsbCBsb2NhbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
# AMoQ58xHVHwNmqM3hb6KsBAYYalFJliY189Y+oNMHtgPbDuUae0Tcd79yssV4hqp
# ZnK4f45Jbs7+SUyqoGtHyXrzhtHUFdFb8yC4T8ET2V46ddFB/JyPDUWdJikT2Erc
# Gw5/4Ag7X8P6TVMkGSaVM0T+h8kBHkzG5CTpwsOP+wMSGStcZTvyon67D3CKnY78
# JOmovfhj97eo8oU5AWGbYEPXBmaS+xqWJeU/eX/egMECbo9kT9Y0WQk+2axqZyeL
# p2+xsvmiNpLn1i0g+NzWUxNp5ibTr2rOm0jW3vh3NklCbjby2IvjukzuszeOU9sc
# qXK6+vdAMRMS/x2/whnrErUCAwEAAaNGMEQwDgYDVR0PAQH/BAQDAgeAMBMGA1Ud
# JQQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBQ4K5GVCXhCnD89VKgNQsGS8r6iiDAN
# BgkqhkiG9w0BAQUFAAOCAQEAgBTOVp+g96oaDjc+j9boUziG6aihKlVY3ic5uOcB
# Rqo6/kfSWzA/DisXWhPgwxrTq3ByPULLOpNNnzsQ8IDN6WH4psv5PvrT01jFcib7
# H+vDMYQl+7vDgLcqXczWjDHni56uABjM/1A4WdEJ8tpgP+XqwGkWPlKHHrp+bSgF
# 9aCw4h1HkgBzaFnsCHMNIQT7YkFW+CfBnp/b/irsGUj/Pp63GLfFrgkcgwCPRBvN
# LHI6rAX3iF8Yfpoka0lD1Ay/SEPWB8Oz8MEz2RQr+ELx9mKJHk/NBED+auKnInV1
# j7bOgw+xsmgtD0KSDJskk4YfZFwgLyrrbi+oIUAj3f3uGTGCAeAwggHcAgEBMC4w
# GjEYMBYGA1UEAwwPcHVua3NoZWxsIGxvY2FsAhBETzeKK6w7vkayhsNPPi+IMA0G
# CWCGSAFlAwQCAQUAoIGEMBgGCisGAQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJKoZI
# hvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcC
# ARUwLwYJKoZIhvcNAQkEMSIEICYgJa5n+ggz59/w10kxjaOomvLdZOkcbtudjrZZ
# KaZmMA0GCSqGSIb3DQEBAQUABIIBAMmaBSwgOjbUmp4NgCYONonMWrZuyX88AcEq
# 9MxbFLu+0OMpEYlK/AUWnWCeTDl8zN4Wcn8E44Rz15xgKjAoZVVnG3L6gGCcBqCd
# qDtgrifr7UZJ2gn0j9n9PyUXmHQ1ovWvNSQNOFF08Ul21HooFgGTRc67Ea90rFGN
# Bnz37c85AVSYpbvzEGx1SZ537CpfizQRyAiXJyTEyZNH8VPjaYvJPqL0qWak+hZV
# x2Kb1IUbpG/oKpzZk+dohlbYNtADz7JaPVLZXIoec6GxvvSbVNqiDly1F6L89dZ3
# TcjFEYK1LXUP+h0p4QJK0iZfWxrjtHhb2PCQECsw7rPDxlm4wlw=
# SIG # End signature block
write-host "-done-"
return $PSBoundParameters
}
}
write-host (psmain @args)

44
src/scriptapps/fetchruntime.ps1

@ -1,22 +1,22 @@
$url = "https://www.gitea1.intx.com.au/jn/punkbin/raw/branch/master/win32-x86_64/tclsh902z.exe"
$outbase = $PSScriptRoot
$outbase = Resolve-Path -Path $outbase
#expected script location is the bin folder of a punk project
$rtfolder = Join-Path -Path $outbase -ChildPath "runtime"
#$output = "$(join-path $PSScriptRoot "..\src\runtime\tclsh902z.exe")"
$output = "$(join-path $rtfolder "win32-x86_64\tclsh902z.exe")"
$container = split-path -Path $output -Parent
new-item -Path $container -ItemType Directory -force #create with intermediary folders if not already present
if (-not(Test-Path -Path $output -PathType Leaf)) {
Write-Host "Downloading from $url ..."
Invoke-WebRequest -Uri $url -OutFile $output
Write-Host "Runtime saved at $output"
} else {
Write-Host "Runtime already found at $output"
}
$url = "https://www.gitea1.intx.com.au/jn/punkbin/raw/branch/master/win32-x86_64/tclsh902z.exe"
$outbase = $PSScriptRoot
$outbase = Resolve-Path -Path $outbase
#expected script location is the bin folder of a punk project
$rtfolder = Join-Path -Path $outbase -ChildPath "runtime"
#$output = "$(join-path $PSScriptRoot "..\src\runtime\tclsh902z.exe")"
$output = "$(join-path $rtfolder "win32-x86_64\tclsh902z.exe")"
$container = split-path -Path $output -Parent
new-item -Path $container -ItemType Directory -force #create with intermediary folders if not already present
if (-not(Test-Path -Path $output -PathType Leaf)) {
Write-Host "Downloading from $url ..."
Invoke-WebRequest -Uri $url -OutFile $output
Write-Host "Runtime saved at $output"
} else {
Write-Host "Runtime already found at $output"
}

72
src/scriptapps/fetchruntime_bits.ps1

@ -1,37 +1,37 @@
$url = "https://www.gitea1.intx.com.au/jn/punkbin/raw/branch/master/win32-x86_64/tclsh901t.exe"
$output = "$(join-path $PSScriptRoot "..\src\runtime\tclsh901t.exe")"
if (-not(Test-Path -Path $output -PathType Leaf)) {
if ((Get-Service -name "BITS").Status -eq "Running") {
Write-Host "OK - BITS services is running"
} else {
#If not running we can get a misleading error such as 'MUI error'
Write-Host "WARNING - BITS service does not seem to be running"
$answer = Read-Host "Do you want to start the Background Intelligent Transfer Service (BITS)? (Type Yes to start service)"
if ($answer -match "yes") {
#restart requires admin - use script marked for admin
#Restart-Service BITS
#Start-Process -FilePath "cmd.exe" -ArgumentList "-NoExit -NoNewWindow -File bits.cmd"
Start-Process -FilePath "bits.cmd" -ArgumentList "-NoExit -NoNewWindow" -Wait
#cmd /c bits.cmd
} else {
write-host "Unable to download. Exiting script.."
exit 1
}
}
try {
#Invoke-WebRequest $url -OutFile
Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $output
Write-Host "Runtime saved at $output"
}
catch {
throw $_.Exception.Message
}
}
else {
Write-Host "Runtime already found at $output"
$url = "https://www.gitea1.intx.com.au/jn/punkbin/raw/branch/master/win32-x86_64/tclsh901t.exe"
$output = "$(join-path $PSScriptRoot "..\src\runtime\tclsh901t.exe")"
if (-not(Test-Path -Path $output -PathType Leaf)) {
if ((Get-Service -name "BITS").Status -eq "Running") {
Write-Host "OK - BITS services is running"
} else {
#If not running we can get a misleading error such as 'MUI error'
Write-Host "WARNING - BITS service does not seem to be running"
$answer = Read-Host "Do you want to start the Background Intelligent Transfer Service (BITS)? (Type Yes to start service)"
if ($answer -match "yes") {
#restart requires admin - use script marked for admin
#Restart-Service BITS
#Start-Process -FilePath "cmd.exe" -ArgumentList "-NoExit -NoNewWindow -File bits.cmd"
Start-Process -FilePath "bits.cmd" -ArgumentList "-NoExit -NoNewWindow" -Wait
#cmd /c bits.cmd
} else {
write-host "Unable to download. Exiting script.."
exit 1
}
}
try {
#Invoke-WebRequest $url -OutFile
Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $output
Write-Host "Runtime saved at $output"
}
catch {
throw $_.Exception.Message
}
}
else {
Write-Host "Runtime already found at $output"
}

42
src/scriptapps/fetchruntime_old.ps1

@ -1,22 +1,22 @@
$url = "https://www.gitea1.intx.com.au/jn/punkbin/raw/branch/master/win64/tclkit901t.exe"
$output = "$(join-path $PSScriptRoot "..\runtime\tclkit901t.exe")"
#padding
if (-not(Test-Path -Path $output -PathType Leaf)) {
try {
#Invoke-WebRequest $url -OutFile
Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $output
Write-Host "Runtime saved at $output"
}
catch {
throw $_.Exception.Message
}
}
else {
Write-Host "Runtime already found at $output"
$url = "https://www.gitea1.intx.com.au/jn/punkbin/raw/branch/master/win64/tclkit901t.exe"
$output = "$(join-path $PSScriptRoot "..\runtime\tclkit901t.exe")"
#padding
if (-not(Test-Path -Path $output -PathType Leaf)) {
try {
#Invoke-WebRequest $url -OutFile
Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $output
Write-Host "Runtime saved at $output"
}
catch {
throw $_.Exception.Message
}
}
else {
Write-Host "Runtime already found at $output"
}

42
src/scriptapps/fetchruntime_wrap.toml

@ -1,21 +1,21 @@
[application]
template="punk.multishell.cmd"
as_admin=false
scripts=[
"fetchruntime.ps1",
"fetchruntime.tcl",
"fetchruntime.bash"
]
default_outputfile="fetchruntime.cmd"
default_nextshellpath="/usr/bin/env bash"
default_nextshelltype="bash"
#valid nextshelltype entries are: tcl perl powershell bash.
#nextshellpath entries must be 64 characters or less.
win32.nextshellpath="powershell"
win32.nextshelltype="powershell"
win32.outputfile="fetchruntime.cmd"
[application]
template="punk.multishell.cmd"
as_admin=false
scripts=[
"fetchruntime.ps1",
"fetchruntime.tcl",
"fetchruntime.bash"
]
default_outputfile="fetchruntime.cmd"
default_nextshellpath="/usr/bin/env bash"
default_nextshelltype="bash"
#valid nextshelltype entries are: tcl perl powershell bash.
#nextshellpath entries must be 64 characters or less.
win32.nextshellpath="powershell"
win32.nextshelltype="powershell"
win32.outputfile="fetchruntime.cmd"

2
src/scriptapps/punk.tcl

@ -15,7 +15,7 @@ if {[file tail $dirname] eq "bin"} {
set vfsfolder [file normalize [file join $dirname "../src/_build/punk86${ext}.vfs"]]
}
9 {
set vfsfolder [file normalize [file join $dirname "../src/_build/punk9cook${ext}.vfs"]]
set vfsfolder [file normalize [file join $dirname "../src/_build/punk902z${ext}.vfs"]]
}
default {
error "no vfs available for tcl major version $tclmajorv"

16
src/scriptapps/selfsign_wrap.toml

@ -0,0 +1,16 @@
[application]
template="punk.multishell.cmd"
as_admin=true
scripts=[
"selfsign.ps1",
]
default_outputfile="selfsign.cmd"
default_nextshellpath="pwsh"
default_nextshelltype="powershell"
win32.nextshellpath="pwsh"
win32.nextshelltype="powershell"
win32.outputfile="selfsign.cmd"

15
src/scriptapps/tcltm.tcl

@ -1,13 +1,14 @@
if { ![package vsatisfies [package provide Tcl] 8.5] } {puts stdout "Tcl: >= 8.5 is required"; return}
if { ![package vsatisfies [package require sha1] 2.0.3] } {puts stdout "sha1: >= 2.0.3 is required"; return}
if { ![package vsatisfies [package require yaml] 0.3.6] } {puts stdout "yaml: >= 0.3.6 is required"; return}
if { ![package vsatisfies [package provide Tcl] 8.5-] } {puts stdout "Tcl: >= 8.5 is required"; return}
if { ![package vsatisfies [package require sha1] 2.0.3-] } {puts stdout "sha1: >= 2.0.3 is required"; return}
if { ![package vsatisfies [package require yaml] 0.3.6-] } {puts stdout "yaml: >= 0.3.6 is required"; return}
namespace eval ::tcltm::binary {
proc readfile { dir file } {
set b [open [file normalize [filename $dir $file]]]
fconfigure $b -translation binary
fconfigure $b -encoding binary
#fconfigure $b -encoding binary
fconfigure $b -encoding iso8859-1
set data [read $b]
close $b
return $data
@ -233,7 +234,8 @@ namespace eval ::tcltm::binary {
}
set fh [open $tmp w]
fconfigure $fh -translation binary
fconfigure $fh -encoding binary
#fconfigure $fh -encoding binary
fconfigure $fh -encoding iso8859-1
puts -nonewline $fh [string range $bindata $bindex [incr bindex [dict get $finfo SIZE]]-1]
flush $fh
close $fh
@ -668,7 +670,8 @@ namespace eval ::tcltm {
set res [dict create]
set b [open $f]
fconfigure $b -translation binary
fconfigure $b -encoding binary
#fconfigure $b -encoding binary
fconfigure $b -encoding iso8859-1
set data [read $b]
close $b
set pkgs [list]

Loading…
Cancel
Save