diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..15a00ca Binary files /dev/null and b/.DS_Store differ diff --git a/build.ps1 b/build.ps1 index 64b9de7..a43d971 100644 --- a/build.ps1 +++ b/build.ps1 @@ -1,128 +1,128 @@ -$ErrorActionPreference = 'Stop' -$PSNativeCommandUseErrorActionPreference = $true - -# detect buildx, ErrorActionPreference will ensure the script stops execution if not found -docker buildx version - -# define temporary directory -$tempdirectory = "$pwd\temp" -# define services to patch -$components = "Api","Identity" - -# delete old directories / files if applicable -if (Test-Path "$tempdirectory" -PathType Container) { - Remove-Item "$tempdirectory" -Recurse -Force -} - -if (Test-Path -Path "$pwd\src\licenseGen\Core.dll" -PathType Leaf) { - Remove-Item "$pwd\src\licenseGen\Core.dll" -Force -} - -if (Test-Path -Path "$pwd\src\licenseGen\cert.pfx" -PathType Leaf) { - Remove-Item "$pwd\src\licenseGen\cert.pfx" -Force -} - -if (Test-Path -Path "$pwd\src\bitBetter\cert.cer" -PathType Leaf) { - Remove-Item "$pwd\src\bitBetter\cert.cer" -Force -} - -if (Test-Path "$pwd\.keys\cert.cert" -PathType Leaf) { - Rename-Item -Path "$pwd\.keys\cert.cert" -NewName "$pwd\.keys\cert.cer" -} - -# generate keys if none are available -if (!(Test-Path "$pwd\.keys" -PathType Container)) { - .\generateKeys.ps1 -} - -# copy the key to bitBetter -Copy-Item "$pwd\.keys\cert.cer" -Destination "$pwd\src\bitBetter" - -# build bitBetter and clean the source directory after -docker build --no-cache -t bitbetter/bitbetter "$pwd\src\bitBetter" -Remove-Item "$pwd\src\bitBetter\cert.cer" -Force - -# gather all running instances, cannot run a wildcard filter on Ancestor= :(, does find all where name = *bitwarden* -$oldinstances = docker container ps --all -f Name=bitwarden --format '{{.ID}}' - -# stop and remove all running instances -foreach ($instance in $oldinstances) { - docker stop $instance - docker rm $instance -} - -# update bitwarden itself -if ($args[0] -eq 'update') { - docker pull ghcr.io/bitwarden/lite:beta -} else { - $confirmation = Read-Host "Update (or get) bitwarden source container (y/n)" - if ($confirmation -eq 'y') { - docker pull ghcr.io/bitwarden/lite:beta - } -} - -# stop and remove previous existing patch(ed) container -$oldinstances = docker container ps --all -f Ancestor=bitwarden-patched --format '{{.ID}}' -foreach ($instance in $oldinstances) { - docker stop $instance - docker rm $instance -} -$oldinstances = docker image ls bitwarden-patched --format '{{.ID}}' -foreach ($instance in $oldinstances) { - docker image rm $instance -} - -# remove old extract containers -$oldinstances = docker container ps --all -f Name=bitwarden-extract --format '{{.ID}}' -foreach ($instance in $oldinstances) { - docker stop $instance - docker rm $instance -} - -# start a new bitwarden instance so we can patch it -$patchinstance = docker run -d --name bitwarden-extract ghcr.io/bitwarden/lite:beta - -# create our temporary directory -New-item -ItemType Directory -Path $tempdirectory - -# extract the files that need to be patched from the services that need to be patched into our temporary directory -foreach ($component in $components) { - New-item -itemtype Directory -path "$tempdirectory\$component" - docker cp $patchinstance`:/app/$component/Core.dll "$tempdirectory\$component\Core.dll" -} - -# stop and remove our temporary container -docker stop bitwarden-extract -docker rm bitwarden-extract - -# run bitBetter, this applies our patches to the required files -docker run -v "$tempdirectory`:/app/mount" --rm bitbetter/bitbetter - -# create a new image with the patched files -docker build . --tag bitwarden-patched --file "$pwd\src\bitBetter\Dockerfile-bitwarden-patch" - -# start all user requested instances -if (Test-Path -Path "$pwd\.servers\serverlist.txt" -PathType Leaf) { - foreach($line in Get-Content "$pwd\.servers\serverlist.txt") { - if (!($line.StartsWith("#"))) { - Invoke-Expression "& $line" - } - } -} - -# remove our bitBetter image -docker image rm bitbetter/bitbetter - -# copy our patched library to the licenseGen source directory -Copy-Item "$tempdirectory\Identity\Core.dll" -Destination "$pwd\src\licenseGen" -Copy-Item "$pwd\.keys\cert.pfx" -Destination "$pwd\src\licenseGen" - -# build the licenseGen -docker build -t bitbetter/licensegen "$pwd\src\licenseGen" - -# clean the licenseGen source directory -Remove-Item "$pwd\src\licenseGen\Core.dll" -Force -Remove-Item "$pwd\src\licenseGen\cert.pfx" -Force - -# remove our temporary directory -Remove-Item "$tempdirectory" -Recurse -Force +$ErrorActionPreference = 'Stop' +$PSNativeCommandUseErrorActionPreference = $true + +# detect buildx, ErrorActionPreference will ensure the script stops execution if not found +docker buildx version + +# define temporary directory +$tempdirectory = "$pwd\temp" +# define services to patch +$components = "Api","Identity" + +# delete old directories / files if applicable +if (Test-Path "$tempdirectory" -PathType Container) { + Remove-Item "$tempdirectory" -Recurse -Force +} + +if (Test-Path -Path "$pwd\src\licenseGen\Core.dll" -PathType Leaf) { + Remove-Item "$pwd\src\licenseGen\Core.dll" -Force +} + +if (Test-Path -Path "$pwd\src\licenseGen\cert.pfx" -PathType Leaf) { + Remove-Item "$pwd\src\licenseGen\cert.pfx" -Force +} + +if (Test-Path -Path "$pwd\src\bitBetter\cert.cer" -PathType Leaf) { + Remove-Item "$pwd\src\bitBetter\cert.cer" -Force +} + +if (Test-Path "$pwd\.keys\cert.cert" -PathType Leaf) { + Rename-Item -Path "$pwd\.keys\cert.cert" -NewName "$pwd\.keys\cert.cer" +} + +# generate keys if none are available +if (!(Test-Path "$pwd\.keys" -PathType Container)) { + .\generateKeys.ps1 +} + +# copy the key to bitBetter +Copy-Item "$pwd\.keys\cert.cer" -Destination "$pwd\src\bitBetter" + +# build bitBetter and clean the source directory after +docker build --no-cache -t bitbetter/bitbetter "$pwd\src\bitBetter" +Remove-Item "$pwd\src\bitBetter\cert.cer" -Force + +# gather all running instances, cannot run a wildcard filter on Ancestor= :(, does find all where name = *bitwarden* +$oldinstances = docker container ps --all -f Name=bitwarden --format '{{.ID}}' + +# stop and remove all running instances +foreach ($instance in $oldinstances) { + docker stop $instance + docker rm $instance +} + +# update bitwarden itself +if ($args[0] -eq 'update') { + docker pull ghcr.io/bitwarden/lite:beta +} else { + $confirmation = Read-Host "Update (or get) bitwarden source container (y/n)" + if ($confirmation -eq 'y') { + docker pull ghcr.io/bitwarden/lite:beta + } +} + +# stop and remove previous existing patch(ed) container +$oldinstances = docker container ps --all -f Ancestor=bitwarden-patched --format '{{.ID}}' +foreach ($instance in $oldinstances) { + docker stop $instance + docker rm $instance +} +$oldinstances = docker image ls bitwarden-patched --format '{{.ID}}' +foreach ($instance in $oldinstances) { + docker image rm $instance +} + +# remove old extract containers +$oldinstances = docker container ps --all -f Name=bitwarden-extract --format '{{.ID}}' +foreach ($instance in $oldinstances) { + docker stop $instance + docker rm $instance +} + +# start a new bitwarden instance so we can patch it +$patchinstance = docker run -d --name bitwarden-extract ghcr.io/bitwarden/lite:beta + +# create our temporary directory +New-item -ItemType Directory -Path $tempdirectory + +# extract the files that need to be patched from the services that need to be patched into our temporary directory +foreach ($component in $components) { + New-item -itemtype Directory -path "$tempdirectory\$component" + docker cp $patchinstance`:/app/$component/Core.dll "$tempdirectory\$component\Core.dll" +} + +# stop and remove our temporary container +docker stop bitwarden-extract +docker rm bitwarden-extract + +# run bitBetter, this applies our patches to the required files +docker run -v "$tempdirectory`:/app/mount" --rm bitbetter/bitbetter + +# create a new image with the patched files +docker build . --tag bitwarden-patched --file "$pwd\src\bitBetter\Dockerfile-bitwarden-patch" + +# start all user requested instances +if (Test-Path -Path "$pwd\.servers\serverlist.txt" -PathType Leaf) { + foreach($line in Get-Content "$pwd\.servers\serverlist.txt") { + if (!($line.StartsWith("#"))) { + Invoke-Expression "& $line" + } + } +} + +# remove our bitBetter image +docker image rm bitbetter/bitbetter + +# copy our patched library to the licenseGen source directory +Copy-Item "$tempdirectory\Identity\Core.dll" -Destination "$pwd\src\licenseGen" +Copy-Item "$pwd\.keys\cert.pfx" -Destination "$pwd\src\licenseGen" + +# build the licenseGen +docker build -t bitbetter/licensegen "$pwd\src\licenseGen" + +# clean the licenseGen source directory +Remove-Item "$pwd\src\licenseGen\Core.dll" -Force +Remove-Item "$pwd\src\licenseGen\cert.pfx" -Force + +# remove our temporary directory +Remove-Item "$tempdirectory" -Recurse -Force diff --git a/licenseGen.ps1 b/licenseGen.ps1 index 7b69b43..c9477b2 100644 --- a/licenseGen.ps1 +++ b/licenseGen.ps1 @@ -1,17 +1,17 @@ -$ErrorActionPreference = 'Stop' -$PSNativeCommandUseErrorActionPreference = $true - -if ($($args.Count) -lt 1) { - echo "USAGE: [License Gen args...]" - echo "ACTIONS:" - echo " interactive" - echo " user" - echo " org" - Exit 1 -} - -if ($args[0] -eq "interactive") { - docker run -it --rm bitbetter/licensegen interactive -} else { - docker run bitbetter/licensegen $args -} +$ErrorActionPreference = 'Stop' +$PSNativeCommandUseErrorActionPreference = $true + +if ($($args.Count) -lt 1) { + echo "USAGE: [License Gen args...]" + echo "ACTIONS:" + echo " interactive" + echo " user" + echo " org" + Exit 1 +} + +if ($args[0] -eq "interactive") { + docker run -it --rm bitbetter/licensegen interactive +} else { + docker run bitbetter/licensegen $args +} diff --git a/src/bitBetter/Dockerfile-bitwarden-patch b/src/bitBetter/Dockerfile-bitwarden-patch index bfb44fa..deb72bb 100644 --- a/src/bitBetter/Dockerfile-bitwarden-patch +++ b/src/bitBetter/Dockerfile-bitwarden-patch @@ -1,3 +1,3 @@ -FROM ghcr.io/bitwarden/lite:beta - -COPY ./temp/ /app/ +FROM ghcr.io/bitwarden/lite:beta + +COPY ./temp/ /app/