Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
3a152ef
remove submodule travis-lazarus
GerryFerdinandus Nov 10, 2023
0872c81
add support for openSSL 3.x
GerryFerdinandus Nov 10, 2023
012d85b
Update Lazarus project file
GerryFerdinandus Nov 10, 2023
dffb838
Add: GitHub Action
GerryFerdinandus Nov 10, 2023
ab20219
Fix compiler warning
GerryFerdinandus Nov 10, 2023
92ad634
Show in form caption the LCL and FPC version
GerryFerdinandus Nov 10, 2023
7b78cc8
remove openSSL dll file
GerryFerdinandus Nov 10, 2023
8c95f4c
add: snap.yml
GerryFerdinandus Nov 14, 2023
ad43862
Add GitHub actions badges
GerryFerdinandus Nov 14, 2023
80d2d4b
Upgrade snap core 18 to 22
GerryFerdinandus Nov 14, 2023
1711e3e
macOS: Do not switch to the dark theme
GerryFerdinandus Nov 15, 2023
c9843eb
Add: GitHub commits since latest release badge
GerryFerdinandus Nov 15, 2023
24b6714
undo: macOS Do not switch to the dark theme
GerryFerdinandus Nov 16, 2023
82a30f8
fix: TStringGrid dark theme
GerryFerdinandus Nov 16, 2023
b332440
Move pictures to release download
GerryFerdinandus Nov 16, 2023
c1af989
Add macOS Codesign and notarization.
GerryFerdinandus Nov 17, 2023
92f9927
Remove Travis-CI build files
GerryFerdinandus Nov 17, 2023
2627a0b
Update version (1.32.0.Beta.6) -> (1.33.0)
GerryFerdinandus Nov 17, 2023
25d88b5
Remove notarization.zip during the build process.
GerryFerdinandus Nov 18, 2023
ff234eb
Test OpenSSL works on Linux CI
GerryFerdinandus Nov 19, 2023
f803916
Snap: Skip dummy widget on startup.
GerryFerdinandus Nov 21, 2023
f42631c
Fix: Text doesn't fit
GerryFerdinandus Dec 7, 2023
637593e
Add: flatpak program uses different data folder
GerryFerdinandus Dec 7, 2023
2dba1e7
snap: use kde-neon
GerryFerdinandus Dec 7, 2023
d7f4810
Fix: Text doesn't fit
GerryFerdinandus Dec 12, 2023
a6ee202
Add freedesktop-metainfo
GerryFerdinandus Dec 12, 2023
af12590
fix: appstream-util validate error
GerryFerdinandus Dec 13, 2023
4c99819
Add Flathub download link
GerryFerdinandus Dec 21, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
207 changes: 207 additions & 0 deletions .github/workflows/cicd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
name: CI/CD with Lazarus IDE on multiple operating systems.

permissions:
contents: write

on:
push:
pull_request:
workflow_dispatch:
# Automatic cron build every 6 months to check if everything still works.
schedule:
- cron: "0 0 1 1/6 *"

jobs:
build:
runs-on: ${{ matrix.os }}

strategy:
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
fail-fast: false

# Set up an array to perform the following three build configurations.
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
include:
- os: windows-latest
LAZBUILD_WITH_PATH: c:/lazarus/lazbuild
RELEASE_ZIP_FILE: trackereditor_windows_amd64.zip
LAZ_OPT:
- os: ubuntu-latest
LAZBUILD_WITH_PATH: lazbuild
RELEASE_ZIP_FILE: trackereditor_linux_amd64.zip
LAZ_OPT:
- os: macos-latest
LAZBUILD_WITH_PATH: /Applications/Lazarus/lazbuild
RELEASE_ZIP_FILE: trackereditor_macOS_amd64.zip
LAZ_OPT: --widgetset=cocoa

steps:
- uses: actions/checkout@v4

- name: Install Lazarus IDE
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
sudo apt install -y lazarus zip xvfb
elif [ "$RUNNER_OS" == "Windows" ]; then
choco install lazarus zip
# https://wiki.overbyte.eu/wiki/index.php/ICS_Download#Download_OpenSSL_Binaries
curl -L -O --output-dir enduser https://github.com/GerryFerdinandus/bittorrent-tracker-editor/releases/download/V1.32.0/libssl-3-x64.dll
curl -L -O --output-dir enduser https://github.com/GerryFerdinandus/bittorrent-tracker-editor/releases/download/V1.32.0/libcrypto-3-x64.dll
elif [ "$RUNNER_OS" == "macOS" ]; then
brew install --cask lazarus
else
echo "$RUNNER_OS not supported"
exit 1
fi
shell: bash

- name: Build Release version
# Build trackereditor project (Release mode)
run: ${{ matrix.LAZBUILD_WITH_PATH }} --build-mode=Release ${{ matrix.LAZ_OPT }} source/project/tracker_editor/trackereditor.lpi
shell: bash

- name: Build Unit Test on Windows
if: matrix.os == 'windows-latest'
# Build unit test project (Debug mode)
run: ${{ matrix.LAZBUILD_WITH_PATH }} --build-mode=Debug ${{ matrix.LAZ_OPT }} source/project/unit_test/tracker_editor_test.lpi
shell: bash

- name: Run Unit Test on Windows
if: matrix.os == 'windows-latest'
# Also remove all the extra file created by test.
# We do not what it in the ZIP release files.
# Undo all changes made by testing.
run: |
set -e
enduser/test_trackereditor -a --format=plain
set +e

# remove file created by unit test
rm -f enduser/console_log.txt
rm -f enduser/export_trackers.txt
git reset --hard
shell: bash

- name: Test OpenSSL works on Linux CI
if: matrix.os == 'ubuntu-latest'
run: xvfb-run --auto-servernum enduser/trackereditor -TEST_SSL

- name: Create a zip file for Linux release.
if: matrix.os == 'ubuntu-latest'
run: zip -j ${{ matrix.RELEASE_ZIP_FILE }} enduser/*.txt enduser/trackereditor
shell: bash

- name: Create a zip file for Windows release.
if: matrix.os == 'windows-latest'
run: |
zip -j ${{ matrix.RELEASE_ZIP_FILE }} enduser/*.txt enduser/trackereditor.exe enduser/*.dll
shell: bash

- name: Move file into macOS .app
if: matrix.os == 'macos-latest'
run: |
# copy everything into enduser/macos/app folder
#
# Move the executable to the application bundle
mv enduser/trackereditor enduser/macos/app/trackereditor.app/Contents/MacOS

# Move the trackers list to application bundle
mv enduser/add_trackers.txt enduser/macos/app/trackereditor.app/Contents/MacOS
mv enduser/remove_trackers.txt enduser/macos/app/trackereditor.app/Contents/MacOS

# move all the *.txt file
mv enduser/*.txt enduser/macos/app

# zip only the app folder with extra text file.
# /usr/bin/ditto -c -k "enduser/macos/app" "${{ matrix.RELEASE_ZIP_FILE }}"
shell: bash

- name: Codesign macOS app bundle
# This macOS Codesign step is copied from:
# https://federicoterzi.com/blog/automatic-code-signing-and-notarization-for-macos-apps-using-github-actions/
# This is a bit different from the previous version for Travis-CI build system to build bittorrent tracker editor
if: matrix.os == 'macos-latest'
env:
MACOS_CERTIFICATE: ${{ secrets.PROD_MACOS_CERTIFICATE }}
MACOS_CERTIFICATE_PWD: ${{ secrets.PROD_MACOS_CERTIFICATE_PWD }}
MACOS_CERTIFICATE_NAME: ${{ secrets.PROD_MACOS_CERTIFICATE_NAME }}
MACOS_CI_KEYCHAIN_PWD: ${{ secrets.PROD_MACOS_CI_KEYCHAIN_PWD }}
run: |
# Turn our base64-encoded certificate back to a regular .p12 file
echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12

# We need to create a new keychain, otherwise using the certificate will prompt
# with a UI dialog asking for the certificate password, which we can't
# use in a headless CI environment

security create-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
security import certificate.p12 -k build.keychain -P "$MACOS_CERTIFICATE_PWD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$MACOS_CI_KEYCHAIN_PWD" build.keychain

# We finally codesign our app bundle, specifying the Hardened runtime option.
#/usr/bin/codesign --force -s "$MACOS_CERTIFICATE_NAME" --options runtime enduser/macos/app/trackereditor.app -v

# sign the app. -sign is the developer cetificate ID
# entitlements does not work at this moment
#codesign --timestamp --entitlements enduser/macos/entitlements.plist --force --options runtime --deep --sign $CERTIFICATE_ID $FILE_APP

# Please note: this is the same code version used in Travis-CI
/usr/bin/codesign --timestamp --force --options runtime --deep --sign "$MACOS_CERTIFICATE_NAME" enduser/macos/app/trackereditor.app
shell: bash

- name: Notarize macOS app bundle
if: matrix.os == 'macos-latest'
env:
PROD_MACOS_NOTARIZATION_APPLE_ID: ${{ secrets.PROD_MACOS_NOTARIZATION_APPLE_ID }}
PROD_MACOS_NOTARIZATION_TEAM_ID: ${{ secrets.PROD_MACOS_NOTARIZATION_TEAM_ID }}
PROD_MACOS_NOTARIZATION_PWD: ${{ secrets.PROD_MACOS_NOTARIZATION_PWD }}
run: |
# Store the notarization credentials so that we can prevent a UI password dialog
# from blocking the CI

echo "Create keychain profile"
xcrun notarytool store-credentials "notarytool-profile" --apple-id "$PROD_MACOS_NOTARIZATION_APPLE_ID" --team-id "$PROD_MACOS_NOTARIZATION_TEAM_ID" --password "$PROD_MACOS_NOTARIZATION_PWD"

# We can't notarize an app bundle directly, but we need to compress it as an archive.
# Therefore, we create a zip file containing our app bundle, so that we can send it to the
# notarization service

echo "Creating temp notarization archive"
ditto -c -k --keepParent "enduser/macos/app/trackereditor.app" "notarization.zip"

# Here we send the notarization request to the Apple's Notarization service, waiting for the result.
# This typically takes a few seconds inside a CI environment, but it might take more depending on the App
# characteristics. Visit the Notarization docs for more information and strategies on how to optimize it if
# you're curious

echo "Notarize app"
xcrun notarytool submit "notarization.zip" --keychain-profile "notarytool-profile" --wait

# Finally, we need to "attach the staple" to our executable, which will allow our app to be
# validated by macOS even when an internet connection is not available.
echo "Attach staple"
xcrun stapler staple "enduser/macos/app/trackereditor.app"

# Remove notarization.zip, otherwise it will also be 'released' to the end user
rm -f "notarization.zip"

# zip only the app folder with extra text file.
echo "Zip macOS app file"
/usr/bin/ditto -c -k "enduser/macos/app" "${{ matrix.RELEASE_ZIP_FILE }}"
shell: bash

- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
path: ${{ matrix.RELEASE_ZIP_FILE }}
if-no-files-found: error

- name: Zip file release to end user
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
*.zip
16 changes: 16 additions & 0 deletions .github/workflows/snap.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Test build Ubuntu snap on Linux amd64

on:
push:
pull_request:
workflow_dispatch:
# Automatic cron build every 6 months to check if everything still works.
schedule:
- cron: "0 0 1 1/6 *"

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: snapcore/action-build@v1
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

87 changes: 0 additions & 87 deletions .travis.yml

This file was deleted.

33 changes: 13 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
**bittorrent-tracker-editor** will add/remove bittorrent tracker from the torrent file(s).
This software works on Windows XP SP3, Windows 7+, macOS and Linux.
This software works on Windows 7+, macOS and Linux.

---

## Software latest release: ##
[![GitHub Latest release](https://img.shields.io/github/release/GerryFerdinandus/bittorrent-tracker-editor/all.svg)](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/releases)

[![GitHub commits since latest release (by SemVer including pre-releases)](https://img.shields.io/github/commits-since/gerryferdinandus/bittorrent-tracker-editor/latest)](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/commits/main)
---

## Code Status: ##
Continuous integration|Status| Build operating system
------------|---------|---------
Travis-CI |[![Build Status](https://travis-ci.com/GerryFerdinandus/bittorrent-tracker-editor.svg?branch=master)](https://travis-ci.com/GerryFerdinandus/bittorrent-tracker-editor) |Linux, macOS and Windows
Snapcraft-CI |[![Snap Status](https://build.snapcraft.io/badge/GerryFerdinandus/bittorrent-tracker-editor.svg)](https://build.snapcraft.io/user/GerryFerdinandus/bittorrent-tracker-editor)|Linux
## Build Status: ##
Continuous integration|Status| Generate an executable file for the operating system| Download link
------------|---------|---------|----------
GitHub Actions |[![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/gerryferdinandus/bittorrent-tracker-editor/cicd.yml)](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/actions/workflows/cicd.yml)|Linux(amd64), macOS(Intel processors) and Windows|[![GitHub Latest release](https://img.shields.io/github/release/GerryFerdinandus/bittorrent-tracker-editor/all.svg)](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/releases)
GitHub Actions (Ubuntu snap) |[![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/gerryferdinandus/bittorrent-tracker-editor/snap.yml)](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/actions/workflows/snap.yml)|Linux (amd64 and arm64)|[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-white.svg)](https://snapcraft.io/bittorrent-tracker-editor)
Flathub build server||Linux (amd64 and arm64)|<a href='https://flathub.org/apps/io.github.gerryferdinandus.bittorrent-tracker-editor'><img width='180' alt='Download on Flathub' src='https://flathub.org/assets/badges/flathub-badge-i-en.svg'/></a>
---

## Warning: ##
Expand Down Expand Up @@ -48,28 +49,20 @@ There is no backup function in this software. Use it at your own risk. Bittorren

## Software history: ##

### 1.33.0.beta.6 ###
### 1.33.0 ###
* ADD: Support for OpenSSL 3
* FIX: Handle dark theme on MacOS. ([Issue 49](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/issues/49))
* ADD: Direct download support for ngosang via menu.
* ADD: Extra tabpage 'private torrent'. For issue 31 and 34
* ADD: Check box 'Skip Announce Check in the URL' ([Issue 31](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/issues/31))
* ADD: Command parameter '-SAC' -> 'Skip Announce Check' in the URL ([Issue 31](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/issues/31))
* ADD: Support 'Info Source' tag for private trackers ([Issue 34](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/issues/34))
* ADD: Command parameter '-SOURCE' -> info Source tag for private trackers. See readme.txt file ([Issue 34](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/issues/34))

### 1.33.0.beta.5 ###
* FiX: support for '/announce.php'([Issue 27](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/issues/27))

### 1.33.0.beta.4 ###
* FIX: There was an issue with uploading tracker list to newTrackon.

### 1.33.0.beta.3 ###
* FIX: WebTorrent do not have '/announce' ([Issue 24](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/issues/24))

### 1.33.0.beta.2 ###
* ADD: Wrong tracker URL format from torrent files should be unselected by default ([Issue 22](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/issues/22))
* ADD: Upload trackers to newTrackon ([Issue 23](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/issues/23))

### 1.33.0.beta.1 ###
* ADD: Verify the working status of public trackers. (Data from newTrackon) ([Issue 21](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/issues/21))

### 1.32.0 ###
Expand Down Expand Up @@ -113,13 +106,13 @@ There is no backup function in this software. Use it at your own risk. Bittorren

---

![](pictures/trackereditor.png?raw=true "Trackers List")
![](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/releases/download/V1.32.0/trackereditor_list_windows.png "Trackers List")

This screen shot show the program, after a folder is selected with torrent files inside. The normal procedure is to deselect the trackers that are no longer working. Optionally add your own trackers. And select the 'Update torrent' menu.

---

![](pictures/filestrackersinfo.png?raw=true "Files/Trackers/Info")
![](https://github.com/GerryFerdinandus/bittorrent-tracker-editor/releases/download/V1.32.0/trackereditor_info_windows.png "Files/Trackers/Info")

---

Expand Down
Binary file removed enduser/libeay32.dll
Binary file not shown.
Binary file removed enduser/ssleay32.dll
Binary file not shown.
Loading