Skip to content

Commit ba43bbe

Browse files
committed
Merge branch 'master' into dev
# Conflicts: # src/main/java/com/ghostchu/peerbanhelper/gui/PBHGuiBridge.java
2 parents bf45576 + 1f6c0d4 commit ba43bbe

98 files changed

Lines changed: 694 additions & 508 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build_fe.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
run: pnpm run build
4444
env:
4545
GIT_HASH: ${{ github.sha }}
46-
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
46+
SENTRY_DSN: ${{ secrets.WEBUI_SENTRY_DSN }}
4747

4848
- name: Upload artifact
4949
uses: actions/upload-artifact@v6

.github/workflows/build_installers.yml

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
path: ~/.cache/install4j/v11
2828
key: install4j-11-${{ hashFiles('**/*.install4j') }}
2929
restore-keys: |
30-
install4j-11-
30+
install4j-11-${{ hashFiles('**/*.install4j') }}
3131
- name: Make installers
3232
run: |
3333
/opt/install4j/bin/install4jc -L ${{ secrets.INSTALL4J_LICENSE }} -r ${{ steps.java_info.outputs.x_version }} -g -d build/media -D librariesPath=$(pwd)/build/libraries install4j/project.install4j
@@ -42,9 +42,20 @@ jobs:
4242
path: |
4343
build/media/*
4444
id: project
45-
- name: Upload generated jres
45+
- name: Copy JBR Bundles
46+
id: jbr_bundles
47+
run: |
48+
dir="${1:-$HOME/.cache/install4j/v11/cached_jres/generated}"
49+
find "$dir" -type f -name 'windows-amd64-*.tar.gz' -printf '%T@ %p\n' \
50+
| sort -nr | cut -d' ' -f2- \
51+
| while IFS= read -r f; do
52+
if tar -xOzf "$f" lib/classlist 2>/dev/null | grep -q 'com/jetbrains/exported/JBRApi'; then
53+
echo "jbr_path=$(realpath "$f")" >> $GITHUB_OUTPUT
54+
break
55+
fi
56+
done
57+
- name: Upload JBR Bundles
4658
uses: actions/upload-artifact@v6
4759
with:
48-
name: jre-dist
49-
path: |
50-
~/.cache/install4j/v11/cached_jres/generated/**/*.tar.gz
60+
name: jbr-dist
61+
path: ${{ steps.jbr_bundles.outputs.jbr_path }}

.github/workflows/build_portable.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ jobs:
1515
path: build/
1616
- uses: actions/download-artifact@v7
1717
with:
18-
name: jre-dist
19-
path: jre-dist/
18+
name: jbr-dist
19+
path: jbr-dist/
2020
- name: Build Portable package
2121
id: build-portable
2222
run: |
@@ -29,7 +29,7 @@ jobs:
2929
mv pkg/portable/*.bat pkg/portable/PeerBanHelper/
3030
(cd pkg/portable && zip -r PeerBanHelper_Windows_${{ env.PBH_VERSION }}_Portable_nojava.zip PeerBanHelper)
3131
mkdir -p jre
32-
mv jre-dist/*/windows-amd64-25.0.2.tar.gz jre/jre.tar.gz
32+
mv jbr-dist/windows-amd64-*.tar.gz jre/jre.tar.gz
3333
(cd jre && tar -zxvf jre.tar.gz && rm jre.tar.gz)
3434
mv jre pkg/portable/PeerBanHelper/
3535
(cd pkg/portable && zip -r PeerBanHelper_Windows_${{ env.PBH_VERSION }}_Portable.zip PeerBanHelper)

.github/workflows/jvm-release.yml

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,97 @@ jobs:
200200
with:
201201
asset_paths: '["build/media/PeerBanHelper_*", "build/media/peerbanhelper_*", "build/media/peerbanhelper-*", "build/media/_____UNSUPPORTED_PeerBanHelper_*", "peerbanhelper.torrent", "PeerBanHelper_Installers.tar.gz"]'
202202

203+
Publish_Changelog:
204+
name: Publish Changelog to Forum
205+
continue-on-error: true
206+
if: github.event_name == 'release'
207+
needs: Upload_Artifacts
208+
runs-on: ubuntu-latest
209+
steps:
210+
- name: Check if release body is empty
211+
id: check_body
212+
run: |
213+
BODY=$(cat <<'EOFBODY'
214+
${{ github.event.release.body }}
215+
EOFBODY
216+
)
217+
if [[ -z "$(echo "$BODY" | tr -d '[:space:]')" ]]; then
218+
echo "Release body is empty, skipping changelog publication"
219+
echo "skip=true" >> $GITHUB_OUTPUT
220+
else
221+
echo "Release body found, will publish changelog"
222+
echo "skip=false" >> $GITHUB_OUTPUT
223+
fi
224+
- name: Ensure jq is installed
225+
if: steps.check_body.outputs.skip != 'true'
226+
run: which jq || (sudo apt-get update && sudo apt-get install -y jq)
227+
- name: Prepare and send changelog to forum
228+
if: steps.check_body.outputs.skip != 'true'
229+
run: |
230+
# Escape title and body for JSON using jq with heredoc to avoid shell expansion
231+
TITLE=$(cat <<'EOFTITLE' | jq -Rs .
232+
${{ github.event.release.name }}
233+
EOFTITLE
234+
)
235+
BODY=$(cat <<'EOFBODY' | jq -Rs .
236+
${{ github.event.release.body }}
237+
EOFBODY
238+
)
239+
240+
# Build JSON payload
241+
JSON_PAYLOAD=$(cat <<EOF
242+
{
243+
"data": {
244+
"type": "discussions",
245+
"attributes": {
246+
"title": $TITLE,
247+
"content": $BODY
248+
},
249+
"relationships": {
250+
"tags": {
251+
"data": [
252+
{
253+
"type": "tags",
254+
"id": "5"
255+
},
256+
{
257+
"type": "tags",
258+
"id": "25"
259+
}
260+
]
261+
}
262+
}
263+
}
264+
}
265+
EOF
266+
)
267+
268+
echo "Sending changelog to forum API..."
269+
echo "JSON Payload:"
270+
echo "$JSON_PAYLOAD" | jq .
271+
272+
# Send POST request with retry
273+
RESPONSE=$(curl --retry 3 --retry-delay 2 --retry-connrefused \
274+
-i -X POST \
275+
-H "Content-Type: application/json" \
276+
-H "Authorization: Token ${{ secrets.FLARUM_BBS_API_KEY }}" \
277+
-d "$JSON_PAYLOAD" \
278+
https://bbs.pbh-btn.com/api/discussions)
279+
280+
echo "API Response:"
281+
echo "$RESPONSE"
282+
283+
# Extract and check HTTP status code
284+
HTTP_CODE=$(echo "$RESPONSE" | grep -i "^HTTP" | tail -1 | awk '{print $2}')
285+
echo "HTTP Status Code: $HTTP_CODE"
286+
287+
if [[ "$HTTP_CODE" =~ ^2[0-9]{2}$ ]]; then
288+
echo "✓ Changelog published successfully"
289+
else
290+
echo "⚠ API returned non-2xx status code: $HTTP_CODE"
291+
echo "This is a warning only, workflow will continue"
292+
fi
293+
203294
Build_Docker:
204295
name: Build Docker Image
205296
if: github.event_name != 'workflow_dispatch'

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ VOLUME /tmp
2222
COPY --from=build build/build/libraries /app/libraries
2323
COPY --from=build build/build/libs/PeerBanHelper.jar /app/PeerBanHelper.jar
2424
ENV PATH="/usr/lib/jvm/liberica25-container-jre/bin:${PATH}"
25-
ENTRYPOINT ["sh", "-c", "java -XX:+UseCompactObjectHeaders -XX:ZCollectionInterval=60 --enable-native-access=ALL-UNNAMED -Djdk.attach.allowAttachSelf=true -Dsun.net.useExclusiveBind=false -Dpbh.release=docker -Djava.awt.headless=true -XX:+UseZGC -XX:ZUncommitDelay=1 -Xss512k -XX:+UseStringDeduplication -XX:-ShrinkHeapInSteps -XX:MaxRAMPercentage=85.0 -jar PeerBanHelper.jar"]
25+
ENTRYPOINT ["sh", "-c", "java -XX:+UseCompactObjectHeaders -XX:SoftMaxHeapSize=386M --enable-native-access=ALL-UNNAMED -Djdk.attach.allowAttachSelf=true -Dsun.net.useExclusiveBind=false -Dpbh.release=docker -Djava.awt.headless=true -XX:+UseG1GC -XX:G1PeriodicGCInterval=60000 -XX:MaxHeapFreeRatio=15 -XX:MinHeapFreeRatio=5 -Xss512k -XX:+UseStringDeduplication -XX:-ShrinkHeapInSteps -XX:MaxRAMPercentage=85.0 -jar PeerBanHelper.jar"]

Dockerfile-Release

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ WORKDIR /app
77
VOLUME /tmp
88
COPY build/libraries /app/libraries
99
COPY build/libs/PeerBanHelper.jar /app/PeerBanHelper.jar
10-
ENTRYPOINT ["sh", "-c", "java -XX:+UseCompactObjectHeaders -XX:ZCollectionInterval=60 --enable-native-access=ALL-UNNAMED -Djdk.attach.allowAttachSelf=true -Dsun.net.useExclusiveBind=false -Dpbh.release=docker -Djava.awt.headless=true -XX:+UseZGC -XX:ZUncommitDelay=1 -Xss512k -XX:+UseStringDeduplication -XX:-ShrinkHeapInSteps -XX:MaxRAMPercentage=85.0 -jar PeerBanHelper.jar"]
10+
ENTRYPOINT ["sh", "-c", "java -XX:+UseCompactObjectHeaders -XX:SoftMaxHeapSize=386M --enable-native-access=ALL-UNNAMED -Djdk.attach.allowAttachSelf=true -Dsun.net.useExclusiveBind=false -Dpbh.release=docker -Djava.awt.headless=true -XX:+UseG1GC -XX:G1PeriodicGCInterval=60000 -XX:MaxHeapFreeRatio=15 -XX:MinHeapFreeRatio=5 -Xss512k -XX:+UseStringDeduplication -XX:-ShrinkHeapInSteps -XX:MaxRAMPercentage=85.0 -jar PeerBanHelper.jar"]

build.gradle.kts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ plugins {
1010
}
1111

1212
group = "com.ghostchu.peerbanhelper"
13-
version = "9.3.3"
13+
version = "9.3.7"
1414

1515
java {
1616
sourceCompatibility = JavaVersion.VERSION_25
@@ -184,6 +184,8 @@ dependencies {
184184
implementation(platform("io.sentry:sentry-bom:8.33.0")) //import bom
185185
implementation("io.sentry:sentry")
186186
implementation("io.sentry:sentry-logback")
187+
implementation("io.sentry:sentry-jdbc")
188+
187189
implementation(kotlin("stdlib-jdk8"))
188190
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2")
189191
implementation("p6spy:p6spy:3.9.1")
@@ -193,6 +195,7 @@ dependencies {
193195
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
194196
testImplementation("org.mockito:mockito-core:5.21.0")
195197
testImplementation("org.mockito.kotlin:mockito-kotlin:6.2.3")
198+
196199
}
197200

198201
tasks.test {

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
org.gradle.jvmargs=-Xmx2G -XX:MaxMetaspaceSize=512m
33
org.gradle.parallel=true
44
org.gradle.caching=true
5-
org.gradle.configuration-cache=true
5+
org.gradle.configuration-cache=false
66
# Java version
77
javaVersion=25
88

install4j/project.install4j

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,19 @@
1313
<variables>
1414
<variable name="jarPath" value="../build/libs/PeerBanHelper.jar" />
1515
<variable name="librariesPath" value="../build/libraries" />
16-
<variable name="startupFlagPlatform" value="-XX:+UseCompactObjectHeaders -XX:ZCollectionInterval=60 -Djdk.attach.allowAttachSelf=true -XX:MaxRAMPercentage=85.0 -XX:+UseZGC -XX:ZUncommitDelay=1 -Xss512k -XX:+UseStringDeduplication -XX:-ShrinkHeapInSteps -Dfile.encoding=UTF-8 -Dpbh.usePlatformConfigLocation=true -Dpbh.release=install4j" overrideWindows="true" valueWindows="-Dsun.net.useExclusiveBind=false -XX:OnError=&quot;scripts\win-error-handler.bat %p&quot; ${compiler:startupFlagPlatform}" overrideMacos="true" valueMacos="-XX:OnError=&quot;scripts/macos-error-handler.sh %p&quot; ${compiler:startupFlagPlatform}" overrideUnix="true" valueUnix="-XX:OnError=&quot;scripts/linux-error-handler.sh %p&quot; ${compiler:startupFlagPlatform}" />
17-
<variable name="startupFlagPlatformNoGUI" value="-XX:+UseCompactObjectHeaders -XX:ZCollectionInterval=60 -Djdk.attach.allowAttachSelf=true -XX:MaxRAMPercentage=85.0 -XX:+UseZGC -XX:ZUncommitDelay=1 -Xss512k -XX:+UseStringDeduplication -XX:-ShrinkHeapInSteps -Dfile.encoding=UTF-8 -Dpbh.usePlatformConfigLocation=true -Dpbh.release=install4j" overrideWindows="true" valueWindows="-Dsun.net.useExclusiveBind=false -XX:OnError=&quot;scripts\win-error-handler.bat %p&quot; ${compiler:startupFlagPlatformNoGUI}" overrideMacos="true" valueMacos="-XX:OnError=&quot;scripts/macos-error-handler.sh %p&quot; ${compiler:startupFlagPlatformNoGUI}" overrideUnix="true" valueUnix="-XX:OnError=&quot;scripts/linux-error-handler.sh %p&quot; ${compiler:startupFlagPlatformNoGUI}" />
16+
<variable name="startupFlagPlatform" value="-XX:+UseCompactObjectHeaders -XX:SoftMaxHeapSize=386M -Djdk.attach.allowAttachSelf=true -XX:MaxRAMPercentage=85.0 -XX:+UseG1GC -XX:G1PeriodicGCInterval=60000 -XX:MaxHeapFreeRatio=15 -XX:MinHeapFreeRatio=5 -Xss512k -XX:+UseStringDeduplication -XX:-ShrinkHeapInSteps -Dfile.encoding=UTF-8 -Dpbh.usePlatformConfigLocation=true -Dpbh.release=install4j" overrideWindows="true" valueWindows="-Dsun.net.useExclusiveBind=false -XX:OnError=&quot;scripts\win-error-handler.bat %p&quot; ${compiler:startupFlagPlatform}" overrideMacos="true" valueMacos="-XX:OnError=&quot;scripts/macos-error-handler.sh %p&quot; ${compiler:startupFlagPlatform}" overrideUnix="true" valueUnix="-XX:OnError=&quot;scripts/linux-error-handler.sh %p&quot; ${compiler:startupFlagPlatform}" />
17+
<variable name="startupFlagPlatformNoGUI" value="-XX:+UseCompactObjectHeaders -XX:SoftMaxHeapSize=386M -Djdk.attach.allowAttachSelf=true -XX:MaxRAMPercentage=85.0 -XX:+UseG1GC -XX:G1PeriodicGCInterval=60000 -XX:MaxHeapFreeRatio=15 -XX:MinHeapFreeRatio=5 -Xss512k -XX:+UseStringDeduplication -XX:-ShrinkHeapInSteps -Dfile.encoding=UTF-8 -Dpbh.usePlatformConfigLocation=true -Dpbh.release=install4j" overrideWindows="true" valueWindows="-Dsun.net.useExclusiveBind=false -XX:OnError=&quot;scripts\win-error-handler.bat %p&quot; ${compiler:startupFlagPlatformNoGUI}" overrideMacos="true" valueMacos="-XX:OnError=&quot;scripts/macos-error-handler.sh %p&quot; ${compiler:startupFlagPlatformNoGUI}" overrideUnix="true" valueUnix="-XX:OnError=&quot;scripts/linux-error-handler.sh %p&quot; ${compiler:startupFlagPlatformNoGUI}" />
1818
<variable name="jvmOptionsFile" value="${LOCALAPPDATA}\PeerBanHelper\java.vmoptions" overrideWindows="true" valueWindows="${LOCALAPPDATA}\PeerBanHelper\java.vmoptions" overrideMacos="true" valueMacos="${user.home}/Library/Application Support/PeerBanHelper" overrideUnix="true" valueUnix="${user.home}/.config/PeerBanHelper" />
1919
</variables>
20-
<jreBundles jdkProviderId="JBR" release="25/25.0.2-b300.57">
20+
<jreBundles jdkProviderId="JBR" release="25/25.0.2-b329.66">
2121
<modules>
2222
<module name="java.base" />
2323
<module name="java.desktop" />
2424
<module name="java.sql.rowset" />
2525
<module name="jdk.unsupported" />
2626
<module name="java.net.http" />
2727
<module name="java.management" />
28+
<module name="jdk.management" />
2829
</modules>
2930
</jreBundles>
3031
</application>
@@ -235,7 +236,7 @@ return console.askOkCancel(message, true);
235236
</formComponent>
236237
</formComponents>
237238
</screen>
238-
<screen name="Unsupport platform check" id="338" beanClass="com.install4j.runtime.beans.screens.DefaultInfoScreen" rollbackBarrierExitCode="0" backButton="hidden" finishScreen="true">
239+
<screen name="Unsupport platform check" id="338" beanClass="com.install4j.runtime.beans.screens.DefaultInfoScreen" enabled="false" rollbackBarrierExitCode="0" backButton="hidden" finishScreen="true">
239240
<condition>List&lt;String&gt; unsupportedWindows = List.of("Windows 95","Windows 98","Windows 2000", "Windows ME", "Windows XP", "Windows Vista", "Windows 7", "Windows 8", "Windows 8.1");
240241

241242
String osName = System.getProperty("os.name");
@@ -261,9 +262,9 @@ ${i18n:unsupported-os}</property>
261262
<property name="textSource" type="enum" class="com.install4j.runtime.beans.screens.components.TextSource" value="DIRECT" />
262263
</serializedBean>
263264
<externalParametrizationPropertyNames>
264-
<propertyName>textSource</propertyName>
265265
<propertyName>displayedText</propertyName>
266266
<propertyName>displayedTextFile</propertyName>
267+
<propertyName>textSource</propertyName>
267268
<propertyName>variableName</propertyName>
268269
</externalParametrizationPropertyNames>
269270
</formComponent>
@@ -1910,6 +1911,13 @@ return true;</property>
19101911
</exclude>
19111912
<jreBundle jreBundleSource="none" />
19121913
</windows>
1914+
<windows name="Windows x64 (Win7 Compatible)" id="344" mediaFileName="${compiler:sys.shortName}_${compiler:sys.platform}_win7_${compiler:sys.version}" architecture="64">
1915+
<excludedComponents>
1916+
<component id="326" />
1917+
<component id="327" />
1918+
</excludedComponents>
1919+
<jreBundle jdkProviderId="Liberica" release="25/25.0.2+12" overrideJdkRelease="true" />
1920+
</windows>
19131921
<macosFolder name="macOS Folder" id="98" mediaFileName="${compiler:sys.shortName}_macos_${compiler:sys.jreBundleArch}_${compiler:sys.version}">
19141922
<exclude>
19151923
<entry filesetId="306" />

pkg/deb/usr/lib/systemd/system/peerbanhelper.service

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ After=network.target
55
[Service]
66
User=peerbanhelper
77
WorkingDirectory=/usr/lib/peerbanhelper
8-
ExecStart=/usr/bin/java -XX:ZCollectionInterval=60 --enable-native-access=ALL-UNNAMED -XX:+UseCompactObjectHeaders -Dpbh.release=debian -Dpbh.datadir=/var/lib/peerbanhelper -Dpbh.configdir=/etc/peerbanhelper -Dpbh.logsdir=/var/log/peerbanhelper -Dpbh.log.level=WARN -Djdk.attach.allowAttachSelf=true -XX:MaxRAMPercentage=85.0 -XX:+UseZGC -XX:ZUncommitDelay=1 -Xss512k -XX:+UseStringDeduplication -XX:-ShrinkHeapInSteps -jar PeerBanHelper.jar
8+
ExecStart=/usr/bin/java -XX:SoftMaxHeapSize=386M --enable-native-access=ALL-UNNAMED -XX:+UseCompactObjectHeaders -Dpbh.release=debian -Dpbh.datadir=/var/lib/peerbanhelper -Dpbh.configdir=/etc/peerbanhelper -Dpbh.logsdir=/var/log/peerbanhelper -Dpbh.log.level=WARN -Djdk.attach.allowAttachSelf=true -XX:MaxRAMPercentage=85.0 -XX:+UseG1GC -XX:G1PeriodicGCInterval=60000 -XX:MaxHeapFreeRatio=15 -XX:MinHeapFreeRatio=5 -Xss512k -XX:+UseStringDeduplication -XX:-ShrinkHeapInSteps -jar PeerBanHelper.jar
99
SuccessExitStatus=143
1010
AmbientCapabilities=CAP_NET_ADMIN
1111
Restart=on-failure

0 commit comments

Comments
 (0)