====== 6.1 Skupna raba datotek ======
Najenostavnejši način distribucije: omrežni disk.
----
===== Zakaj skupna raba datotek? =====
**Prednosti:**
* ✓ Dodaten strežnik ni potreben
* ✓ Hitro nastavljeno
* ✓ Dovoljenja preko Windows ACL
* ✓ Vsi poznajo mape
**Slabosti:**
* ✗ Brez samodejnega verzioniranja
* ✗ Brez upravljanja odvisnosti
* ✗ Potrebno ročno kopiranje
----
===== Struktura imenikov =====
Priporočena struktura za skupno rabo:
\\server\builds\openssl\
├── 3.6.0\
│ ├── win-x64\
│ │ ├── bin\
│ │ │ ├── libcrypto-3-x64.dll
│ │ │ ├── libssl-3-x64.dll
│ │ │ └── openssl.exe
│ │ ├── ssl\
│ │ │ └── openssl.cnf
│ │ └── README.txt
│ ├── win-x64-fips\
│ │ └── ... (s FIPS Provider)
│ ├── linux-x64\
│ │ └── ... (Shared Objects)
│ └── wasm\
│ └── ... (JS + WASM)
├── 3.5.0\
│ └── ... (starejša različica)
└── latest -> 3.6.0\
----
===== Nastavitev skupne rabe =====
==== 1. Ustvarjanje mape ====
# Na strežniku
mkdir D:\Builds\OpenSSL
mkdir D:\Builds\OpenSSL\3.6.0
mkdir D:\Builds\OpenSSL\3.6.0\win-x64
==== 2. Kopiranje datotek ====
# Kopiranje rezultata gradnje
Copy-Item -Recurse "D:\Projects\openssl-3.6.0\bin\*" "D:\Builds\OpenSSL\3.6.0\win-x64\"
==== 3. Ustvarjanje skupne rabe ====
# Kot administrator
New-SmbShare -Name "OpenSSL" -Path "D:\Builds\OpenSSL" -ReadAccess "Domain Users"
Ali preko GUI:
- Desni klik na mapo
- Lastnosti → Skupna raba
- Napredna skupna raba → Dovoljenja
----
===== Uporaba =====
==== Z razvojnega računalnika ====
# Dostop do skupne rabe
dir \\server\openssl\3.6.0\win-x64\bin\
# Kopiranje v projekt
copy "\\server\openssl\3.6.0\win-x64\bin\*.dll" C:\MojProjekt\
==== Priklop kot disk ====
# Trajno kot O: (za OpenSSL)
net use O: \\server\openssl /persistent:yes
# Nato enostavno:
copy O:\3.6.0\win-x64\bin\*.dll C:\MojProjekt\
----
===== Dovoljenja =====
| Skupina | Dovoljenje |
|---------|------------|
| Build strežnik | Poln dostop (piše nove gradnje) |
| Razvijalci | Branje (kopiranje DLL-jev) |
| CI/CD agenti | Branje |
==== PowerShell ====
# Nastavitev dovoljenj (NTFS)
$acl = Get-Acl "D:\Builds\OpenSSL"
# Razvijalci: samo branje
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"DOMAIN\Developers", "ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
# Build račun: poln dostop
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"DOMAIN\BuildService", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl "D:\Builds\OpenSSL" $acl
----
===== "latest" Symlink =====
Za enostaven dostop do trenutne različice:
# Ustvarjanje junction (kot symlink)
cmd /c mklink /J "D:\Builds\OpenSSL\latest" "D:\Builds\OpenSSL\3.6.0"
# Nato deluje:
# \\server\openssl\latest\win-x64\...
Pri novi različici posodobite symlink!
----
===== Avtomatizacija =====
PowerShell skripta za nove izdaje:
# publish-openssl.ps1
param(
[string]$Version = "3.6.0",
[string]$SourceDir = "D:\Projects\openssl-3.6.0\bin",
[string]$SharePath = "\\server\openssl"
)
$TargetDir = "$SharePath\$Version\win-x64"
# Ustvarjanje mape če ne obstaja
if (!(Test-Path $TargetDir)) {
New-Item -ItemType Directory -Path $TargetDir -Force
}
# Kopiranje datotek
Copy-Item -Recurse -Force "$SourceDir\*" $TargetDir
# Dodajanje README
@"
OpenSSL $Version
================
Datum gradnje: $(Get-Date -Format 'yyyy-MM-dd HH:mm')
Platforma: Windows x64 (VC-WIN64A)
Vsebuje:
- libcrypto-3-x64.dll
- libssl-3-x64.dll
- openssl.exe
Post-Quantum: ML-DSA, ML-KEM
"@ | Out-File "$TargetDir\README.txt"
Write-Host "Objavljeno: $TargetDir"
----
===== Naprej na =====
* [[.:nuget-paket|Ustvarjanje NuGet paketa]]
* [[.:versionierung|Verzioniranje]]
* [[wvds:sl:openssl:automatisierung:start|7. CI/CD]]
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//