Compare commits

..

2 Commits

Author SHA1 Message Date
Jackson K
4451fcd5be Change from beta tag to latest 2025-12-09 10:17:44 +13:00
Jackson K
d069f46bce Make all ps1 files CRLF in .gitattributes & Make Dockerfiles LF. 2025-12-09 09:28:52 +13:00
4 changed files with 133 additions and 132 deletions

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
*.ps1 text eol=crlf

256
build.ps1
View File

@@ -1,128 +1,128 @@
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Stop'
$PSNativeCommandUseErrorActionPreference = $true $PSNativeCommandUseErrorActionPreference = $true
# detect buildx, ErrorActionPreference will ensure the script stops execution if not found # detect buildx, ErrorActionPreference will ensure the script stops execution if not found
docker buildx version docker buildx version
# define temporary directory # define temporary directory
$tempdirectory = "$pwd\temp" $tempdirectory = "$pwd\temp"
# define services to patch # define services to patch
$components = "Api","Identity" $components = "Api","Identity"
# delete old directories / files if applicable # delete old directories / files if applicable
if (Test-Path "$tempdirectory" -PathType Container) { if (Test-Path "$tempdirectory" -PathType Container) {
Remove-Item "$tempdirectory" -Recurse -Force Remove-Item "$tempdirectory" -Recurse -Force
} }
if (Test-Path -Path "$pwd\src\licenseGen\Core.dll" -PathType Leaf) { if (Test-Path -Path "$pwd\src\licenseGen\Core.dll" -PathType Leaf) {
Remove-Item "$pwd\src\licenseGen\Core.dll" -Force Remove-Item "$pwd\src\licenseGen\Core.dll" -Force
} }
if (Test-Path -Path "$pwd\src\licenseGen\cert.pfx" -PathType Leaf) { if (Test-Path -Path "$pwd\src\licenseGen\cert.pfx" -PathType Leaf) {
Remove-Item "$pwd\src\licenseGen\cert.pfx" -Force Remove-Item "$pwd\src\licenseGen\cert.pfx" -Force
} }
if (Test-Path -Path "$pwd\src\bitBetter\cert.cer" -PathType Leaf) { if (Test-Path -Path "$pwd\src\bitBetter\cert.cer" -PathType Leaf) {
Remove-Item "$pwd\src\bitBetter\cert.cer" -Force Remove-Item "$pwd\src\bitBetter\cert.cer" -Force
} }
if (Test-Path "$pwd\.keys\cert.cert" -PathType Leaf) { if (Test-Path "$pwd\.keys\cert.cert" -PathType Leaf) {
Rename-Item -Path "$pwd\.keys\cert.cert" -NewName "$pwd\.keys\cert.cer" Rename-Item -Path "$pwd\.keys\cert.cert" -NewName "$pwd\.keys\cert.cer"
} }
# generate keys if none are available # generate keys if none are available
if (!(Test-Path "$pwd\.keys" -PathType Container)) { if (!(Test-Path "$pwd\.keys" -PathType Container)) {
.\generateKeys.ps1 .\generateKeys.ps1
} }
# copy the key to bitBetter # copy the key to bitBetter
Copy-Item "$pwd\.keys\cert.cer" -Destination "$pwd\src\bitBetter" Copy-Item "$pwd\.keys\cert.cer" -Destination "$pwd\src\bitBetter"
# build bitBetter and clean the source directory after # build bitBetter and clean the source directory after
docker build --no-cache -t bitbetter/bitbetter "$pwd\src\bitBetter" docker build --no-cache -t bitbetter/bitbetter "$pwd\src\bitBetter"
Remove-Item "$pwd\src\bitBetter\cert.cer" -Force 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* # 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}}' $oldinstances = docker container ps --all -f Name=bitwarden --format '{{.ID}}'
# stop and remove all running instances # stop and remove all running instances
foreach ($instance in $oldinstances) { foreach ($instance in $oldinstances) {
docker stop $instance docker stop $instance
docker rm $instance docker rm $instance
} }
# update bitwarden itself # update bitwarden itself
if ($args[0] -eq 'update') { if ($args[0] -eq 'update') {
docker pull ghcr.io/bitwarden/lite:beta docker pull ghcr.io/bitwarden/lite:latest
} else { } else {
$confirmation = Read-Host "Update (or get) bitwarden source container (y/n)" $confirmation = Read-Host "Update (or get) bitwarden source container (y/n)"
if ($confirmation -eq 'y') { if ($confirmation -eq 'y') {
docker pull ghcr.io/bitwarden/lite:beta docker pull ghcr.io/bitwarden/lite:latest
} }
} }
# stop and remove previous existing patch(ed) container # stop and remove previous existing patch(ed) container
$oldinstances = docker container ps --all -f Ancestor=bitwarden-patched --format '{{.ID}}' $oldinstances = docker container ps --all -f Ancestor=bitwarden-patched --format '{{.ID}}'
foreach ($instance in $oldinstances) { foreach ($instance in $oldinstances) {
docker stop $instance docker stop $instance
docker rm $instance docker rm $instance
} }
$oldinstances = docker image ls bitwarden-patched --format '{{.ID}}' $oldinstances = docker image ls bitwarden-patched --format '{{.ID}}'
foreach ($instance in $oldinstances) { foreach ($instance in $oldinstances) {
docker image rm $instance docker image rm $instance
} }
# remove old extract containers # remove old extract containers
$oldinstances = docker container ps --all -f Name=bitwarden-extract --format '{{.ID}}' $oldinstances = docker container ps --all -f Name=bitwarden-extract --format '{{.ID}}'
foreach ($instance in $oldinstances) { foreach ($instance in $oldinstances) {
docker stop $instance docker stop $instance
docker rm $instance docker rm $instance
} }
# start a new bitwarden instance so we can patch it # start a new bitwarden instance so we can patch it
$patchinstance = docker run -d --name bitwarden-extract ghcr.io/bitwarden/lite:beta $patchinstance = docker run -d --name bitwarden-extract ghcr.io/bitwarden/lite:latest
# create our temporary directory # create our temporary directory
New-item -ItemType Directory -Path $tempdirectory 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 # extract the files that need to be patched from the services that need to be patched into our temporary directory
foreach ($component in $components) { foreach ($component in $components) {
New-item -itemtype Directory -path "$tempdirectory\$component" New-item -itemtype Directory -path "$tempdirectory\$component"
docker cp $patchinstance`:/app/$component/Core.dll "$tempdirectory\$component\Core.dll" docker cp $patchinstance`:/app/$component/Core.dll "$tempdirectory\$component\Core.dll"
} }
# stop and remove our temporary container # stop and remove our temporary container
docker stop bitwarden-extract docker stop bitwarden-extract
docker rm bitwarden-extract docker rm bitwarden-extract
# run bitBetter, this applies our patches to the required files # run bitBetter, this applies our patches to the required files
docker run -v "$tempdirectory`:/app/mount" --rm bitbetter/bitbetter docker run -v "$tempdirectory`:/app/mount" --rm bitbetter/bitbetter
# create a new image with the patched files # create a new image with the patched files
docker build . --tag bitwarden-patched --file "$pwd\src\bitBetter\Dockerfile-bitwarden-patch" docker build . --tag bitwarden-patched --file "$pwd\src\bitBetter\Dockerfile-bitwarden-patch"
# start all user requested instances # start all user requested instances
if (Test-Path -Path "$pwd\.servers\serverlist.txt" -PathType Leaf) { if (Test-Path -Path "$pwd\.servers\serverlist.txt" -PathType Leaf) {
foreach($line in Get-Content "$pwd\.servers\serverlist.txt") { foreach($line in Get-Content "$pwd\.servers\serverlist.txt") {
if (!($line.StartsWith("#"))) { if (!($line.StartsWith("#"))) {
Invoke-Expression "& $line" Invoke-Expression "& $line"
} }
} }
} }
# remove our bitBetter image # remove our bitBetter image
docker image rm bitbetter/bitbetter docker image rm bitbetter/bitbetter
# copy our patched library to the licenseGen source directory # copy our patched library to the licenseGen source directory
Copy-Item "$tempdirectory\Identity\Core.dll" -Destination "$pwd\src\licenseGen" Copy-Item "$tempdirectory\Identity\Core.dll" -Destination "$pwd\src\licenseGen"
Copy-Item "$pwd\.keys\cert.pfx" -Destination "$pwd\src\licenseGen" Copy-Item "$pwd\.keys\cert.pfx" -Destination "$pwd\src\licenseGen"
# build the licenseGen # build the licenseGen
docker build -t bitbetter/licensegen "$pwd\src\licenseGen" docker build -t bitbetter/licensegen "$pwd\src\licenseGen"
# clean the licenseGen source directory # clean the licenseGen source directory
Remove-Item "$pwd\src\licenseGen\Core.dll" -Force Remove-Item "$pwd\src\licenseGen\Core.dll" -Force
Remove-Item "$pwd\src\licenseGen\cert.pfx" -Force Remove-Item "$pwd\src\licenseGen\cert.pfx" -Force
# remove our temporary directory # remove our temporary directory
Remove-Item "$tempdirectory" -Recurse -Force Remove-Item "$tempdirectory" -Recurse -Force

View File

@@ -54,11 +54,11 @@ done
# update bitwarden itself # update bitwarden itself
if [ "$1" = "update" ]; then if [ "$1" = "update" ]; then
docker pull ghcr.io/bitwarden/lite:beta docker pull ghcr.io/bitwarden/lite:latest
else else
read -p "Update (or get) bitwarden source container (y/n): " read -p "Update (or get) bitwarden source container (y/n): "
if [[ $REPLY =~ ^[Yy]$ ]]; then if [[ $REPLY =~ ^[Yy]$ ]]; then
docker pull ghcr.io/bitwarden/lite:beta docker pull ghcr.io/bitwarden/lite:latest
fi fi
fi fi
@@ -81,7 +81,7 @@ for INSTANCE in ${OLDINSTANCES[@]}; do
done done
# start a new bitwarden instance so we can patch it # start a new bitwarden instance so we can patch it
PATCHINSTANCE=$(docker run -d --name bitwarden-extract ghcr.io/bitwarden/lite:beta) PATCHINSTANCE=$(docker run -d --name bitwarden-extract ghcr.io/bitwarden/lite:latest)
# create our temporary directory # create our temporary directory
mkdir $TEMPDIRECTORY mkdir $TEMPDIRECTORY

View File

@@ -1,3 +1,3 @@
FROM ghcr.io/bitwarden/lite:beta FROM ghcr.io/bitwarden/lite:latest
COPY ./temp/ /app/ COPY ./temp/ /app/