From bc1806c0e5c44c78863d11b8e589faa9954e9eed Mon Sep 17 00:00:00 2001 From: Timothy Noel Date: Fri, 20 Sep 2024 14:59:29 -0400 Subject: [PATCH] automated builds for linux, mac and windows wireshark plugins (#170) --- .github/workflows/ja4-wireshark-release.yml | 112 ++++++++++++++++++++ wireshark/build-scripts/macos_build.sh | 7 +- 2 files changed, 116 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/ja4-wireshark-release.yml diff --git a/.github/workflows/ja4-wireshark-release.yml b/.github/workflows/ja4-wireshark-release.yml new file mode 100644 index 0000000..8d132bd --- /dev/null +++ b/.github/workflows/ja4-wireshark-release.yml @@ -0,0 +1,112 @@ +name: ja4-wireshark-release +on: + push: + branches: [main] + paths: [wireshark/*, wireshark/source/*, wireshark/build-scripts/*] + workflow_dispatch: + +jobs: + wireshark-linux: + runs-on: ubuntu-latest + steps: + - name: checkout + uses: actions/checkout@v4 + - name: build + run: cd wireshark/build-scripts && sudo apt update -y && sudo apt install ninja-build -y && sudo ./linux_build.sh 4.4.0 + - name: rename artifact + run: cp ./wireshark/build-scripts/wireshark-4.4.0/build/run/plugins/4.4/epan/ja4.so ja4.so.linux + - name: upload-linux-ja4 + uses: actions/upload-artifact@v4 + with: + name: linux-ja4 + path: ja4.so.linux + + wireshark-macos: + runs-on: macOS-latest + steps: + - name: checkout + uses: actions/checkout@v4 + - name: build + run: cd wireshark/build-scripts && ./macos_build.sh 4.4.0 + - name: rename artifact + run: cp ./wireshark/build-scripts/wireshark-4.4.0/build/run/Wireshark.app/Contents/PlugIns/wireshark/4-4/epan/ja4.so ja4.so.macos + - name: upload-macos-ja4 + uses: actions/upload-artifact@v4 + with: + name: macos-ja4 + path: ja4.so.macos + + wireshark-windows: + runs-on: windows-2022 + env: + PLATFORM: x64 + WIRESHARK_BASE_DIR: C:\Development + CMAKE_PREFIX_PATH: D:\a\ja4\Qt\6.2.3\msvc2019_64 + WIRESHARK_VERSION_EXTRA: -GithubActionBuild + steps: + - name: checkout + uses: actions/checkout@v4 + - name: create wireshark directory + run: mkdir wireshark/build-scripts/wireshark + - name: checkout wireshark + uses: actions/checkout@v4 + with: + repository: wireshark/wireshark + ref: release-4.4 + path: wireshark/build-scripts/wireshark + - name: add ja4 plugin + run: copy -r wireshark/source wireshark/build-scripts/wireshark/plugins/epan/ja4 + - name: Choco install dependencies + run: choco install -y asciidoctorj xsltproc docbook-bundle nsis winflexbison3 cmake + - name: Install strawberryperl + uses: shogo82148/actions-setup-perl@v1 + with: + perl-version: '5.30' + distribution: strawberry + - name: Install Qt + uses: jurplel/install-qt-action@v3 + with: + arch: win64_msvc2019_64 + version: 6.2.3 + modules: 'qt5compat' + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + with: + vs-version: 16.8 + - name: Set MSVC command prompt + uses: ilammy/msvc-dev-cmd@v1 + - name: Mkdir build directory and copy sources + run: mkdir wireshark/build-scripts/wireshark/build + - name: Cmake + run: cd wireshark/build-scripts/wireshark/build && cmake -DCUSTOM_PLUGIN_SRC_DIR=plugins/epan/ja4 -DCMAKE_SYSTEM_VERSION="10.0.20348.0" -A x64 .. + env: + PLATFORM: x64 + WIRESHARK_BASE_DIR: C:/wireshark-libs + QT5_BASE_DIR: C:/Qt/5.12.3/msvc2017_64 + working-directory: wireshark/build-scripts/wireshark/build + - name: Build + run: cmake --build . --config RelWithDebInfo + working-directory: wireshark/build-scripts/wireshark/build + - name: rename artifact + run: cp wireshark/build-scripts/wireshark/build/run/RelWithDebInfo/plugins/4.4/epan/ja4.dll ja4.dll + - name: upload-windows-ja4 + uses: actions/upload-artifact@v4 + with: + name: windows-ja4 + path: ja4.dll + + release-artifacts: + runs-on: ubuntu-latest + needs: [ wireshark-linux, wireshark-macos, wireshark-windows ] + steps: + - name: set env + run: echo "NOW=$(date +'%Y.%m.%d.%M')" >> $GITHUB_ENV + - name: download-artifacts + uses: actions/download-artifact@v4 + - name: list files + run: ls -al + - name: release + env: + GH_TOKEN: ${{ github.token }} + GH_REPO: ${{ github.repository }} + run: gh release create ja4-wireshark-plugins-${{ env.NOW }} linux-ja4/ja4.so.linux macos-ja4/ja4.so.macos windows-ja4/ja4.dll diff --git a/wireshark/build-scripts/macos_build.sh b/wireshark/build-scripts/macos_build.sh index 25a935d..972f0b3 100755 --- a/wireshark/build-scripts/macos_build.sh +++ b/wireshark/build-scripts/macos_build.sh @@ -26,14 +26,14 @@ if [ ! -d wireshark-$VER ] cd wireshark-$VER fi - +rm -rf ./plugins/epan/ja4 cp -r ../../source ./plugins/epan/ja4 if [ ! -d build ]; then mkdir build fi -cd build && cmake -DCUSTOM_PLUGIN_SRC_DIR=plugins/epan/ja4 ../ +cd build && cmake -DCUSTOM_PLUGIN_SRC_DIR=plugins/epan/ja4 -DBUILD_wireshark=off ../ echo 'building using make...' make -j8 @@ -42,5 +42,6 @@ if [ ! -d ../../../../ja4-plugin ]; then fi cp `find . -name ja4.so` ../../../../ja4-plugin/ -echo "Your JA4 Plugin is ready at `pwd`/../../../../ja4-plugin/ja4.so" +echo "Your JA4 Plugin is ready at" `find . -name ja4.so` +