Commit Graph

95 Commits

Author SHA1 Message Date
siujamo 4e2da0debc feat: add expire time into login response 2026-06-04 14:47:45 +08:00
siujamo 0815d1d618 chore: optimise code style 2026-06-04 14:42:14 +08:00
zihluwang d323e4f8f7 chore: change traffic interceptor log level from info to debug 2026-06-02 01:46:49 +08:00
siujamo eb2d9b3369 fix: rename webhook filter bean to avoid name collision with WebhookFilter class 2026-06-01 17:18:42 +08:00
siujamo a0d54cc12d Merge pull request #2 from onixbyte/feature/github-webhook
feat: GitHub webhook — create modifications from labelled issues
2026-06-01 17:04:21 +08:00
siujamo 4eafb3ade7 Merge branch 'develop' into feature/github-webhook 2026-06-01 17:03:48 +08:00
siujamo 9594efe716 fix: use BizException instead of ResponseStatusException for firearmId validation 2026-06-01 17:01:50 +08:00
siujamo 5b5062aae9 fix: validate firearmId is present before constructing ModificationRequest 2026-06-01 17:00:03 +08:00
siujamo b0c41e08ea fix: use \R instead of \n in YAML fence regex for cross-platform linebreaks 2026-06-01 16:59:47 +08:00
siujamo ed2a0f4ae0 style: replace fully qualified type names and clean up imports 2026-06-01 16:59:40 +08:00
siujamo de61e1feb7 refactor: remove redundant @Transactional from delegated service methods 2026-06-01 16:59:12 +08:00
siujamo 3616ad9eab chore: remove unused imports in GitHubWebhookInterceptor 2026-06-01 16:59:08 +08:00
siujamo 20bc18d416 fix: rename misnamed loggingFilter bean to webhookFilter 2026-06-01 16:59:05 +08:00
siujamo 4ee741d307 feat: add firearm name lookup for webhook YAML parsing
When firearmId is absent from the YAML block, resolveFirearmId falls back
to firearmName lookup via FirearmRepository.findByName(). If both are
present, firearmId takes precedence.
2026-06-01 16:34:37 +08:00
siujamo 0530c1f633 feat: add allowed-users sender filtering for GitHub webhook
Only issues submitted by users in the allowed-users list are processed.
An empty or null list allows all senders (no filtering). Checks
sender.login from the webhook payload against the configured list.
2026-06-01 16:30:46 +08:00
siujamo 8a9cf110af chore: remove deprecated GitLab webhook code
GitLab webhook has been superseded by the GitHub webhook implementation.
Remove WebhookController (formerly GitLabWebhookController),
GitLabWebhookRequest DTO, and GitLabWebhookInterceptor.
2026-06-01 15:37:06 +08:00
siujamo c30b5701e4 feat: implement GitHub webhook controller and processing service
WebhookService parses YAML-fenced issue body, filters by "weapon-mod"
label, deduplicates via Redis SETNX with 12h TTL, and delegates to
ModificationManager for single/batch creation.

GitHubWebhookController verifies X-GitHub-Event=issues and action=opened
before delegating to the service.

Register GitHubWebhookInterceptor for /webhooks/github in AppConfig.
2026-06-01 15:30:30 +08:00
siujamo 7fafa0d903 refactor: extract ModificationManager for modification creation
Move create/batchCreate transactional logic from ModificationService into
a dedicated ModificationManager. Both ModificationService and WebhookService
delegate to the manager, respecting the Controller -> Service -> Manager
layering rule.
2026-06-01 15:30:14 +08:00
siujamo 8c8ca58b74 feat: implement GitHub webhook HMAC-SHA256 signature verification
Verify X-Hub-Signature-256 header using CryptoUtil.hmacSha256 from
onixbyte crypto-toolbox. Signature check is skipped when no secret is
configured. Uses MessageDigest.isEqual for constant-time comparison.
2026-06-01 15:29:32 +08:00
siujamo 12469f1b27 feat: replace GitLab webhook properties with GitHub webhook config
Replace GitLabWebhookProperties with GitHubWebhookProperties (secret, allowed-users).
Update WebhookProperties and WebhookManager to use GitHub-only configuration.
Add app.webhook.github defaults to application.yaml.
2026-06-01 15:29:19 +08:00
siujamo 44271eeec4 feat: add GitHub webhook DTOs with snake_case mapping and header constants
Replace GitHubIssueLabeledWebhookRequest with GitHubIssueRequest.
Add number and repository fields for dedup key construction.
Add Jackson @JsonNaming/@JsonIgnoreProperties for GitHub payload deserialisation.
Add GitHubWebhookHeader constants for webhook header names.
2026-06-01 15:27:35 +08:00
siujamo f9c210c8b3 chore: bump onixbyte toolbox to v3.4.0 2026-06-01 13:58:03 +08:00
siujamo ce330bca87 feat: create GitHub Webhook request object 2026-05-29 15:10:48 +08:00
zihluwang bd4fe65b03 Merge remote-tracking branch 'origin/develop' into develop 2026-05-29 00:42:34 +08:00
zihluwang eb22b3c4bb docs: add Javadocs 2026-05-29 00:42:27 +08:00
siujamo 7032343487 feat: update URI to match standard in GitLab issues 2026-05-28 15:35:22 +08:00
siujamo 243283b788 docs: reformatted javadocs 2026-05-28 15:28:53 +08:00
siujamo 4810ef2b1f refactor: migrate properties accessing to access via manager 2026-05-28 15:24:42 +08:00
siujamo 72ec875802 docs: add Javadoc for GitLabWebhookInterceptor 2026-05-28 15:22:36 +08:00
siujamo 6240ec1016 Merge branch 'develop' into feature/gitlab-webhook
# Conflicts:
#	src/main/java/com/onixbyte/deltaforceguide/config/AppConfig.java
2026-05-28 15:20:05 +08:00
siujamo 8d24b6082d feat: add gitlab webhook http entrypoint 2026-05-28 15:18:25 +08:00
siujamo 9bc70d5370 feat: add web traffic logger 2026-05-28 15:17:36 +08:00
siujamo d44f5f74fe chore: ignore frp client config 2026-05-28 13:55:22 +08:00
siujamo f866d93fb4 feat: add gitlab webhook verification 2026-05-28 13:54:30 +08:00
siujamo 66b37ec20d fix: add equals and hashCode to Accessory and Tuning entities 2026-05-28 13:51:24 +08:00
siujamo 0d70b27653 feat: add OpenAPI definition with title, contact, and licence 1.3.4 2026-05-26 14:24:56 +08:00
siujamo 673ba03f2b Merge remote-tracking branch 'origin/develop' into develop 2026-05-26 11:20:29 +08:00
siujamo f6255d396c Merge branch 'develop' into 'main'
fix: revert CI branch guard, keep --provenance removal

See merge request onixbyte/delta-force-guide-server!5
2026-05-26 11:00:16 +08:00
siujamo 26cea1db82 chore: add gradle.properties to .gitignore 2026-05-26 10:58:24 +08:00
siujamo 49f9b59b99 chore: add gradle.properties to .gitignore 1.3.3 2026-05-26 10:58:22 +08:00
siujamo 1f42921689 fix: revert CI branch guard, keep --provenance removal
Revert the main-branch-only rule since $CI_COMMIT_BRANCH is unset for tag
pipelines. The --provenance=false removal remains as the fix for legacy builder.
2026-05-26 10:56:51 +08:00
siujamo 8f102f54c7 Merge branch 'develop' into 'main'
fix: restrict GitLab CI to main branch and drop --provenance flag

See merge request onixbyte/delta-force-guide-server!4
2026-05-26 10:48:38 +08:00
siujamo 9fe292963c fix: restrict GitLab CI to main branch and drop --provenance flag
- Add main branch guard to pipeline rules
- Remove unsupported --provenance=false flag incompatible with legacy builder
1.3.2
2026-05-26 10:47:28 +08:00
siujamo d3681916b2 Merge branch 'develop' into 'main'
v1.3.1: Versioning and Daily Password

See merge request onixbyte/delta-force-guide-server!3
2026-05-26 10:43:12 +08:00
siujamo d27f6455d8 docs: add README, LICENCE, and production config template
- Add MIT LICENCE file
- Add comprehensive README with tech stack, API overview, and architecture docs
- Add example production configuration template
- Remove gradle.properties in favour of build-time version injection
@
2026-05-26 10:42:01 +08:00
siujamo 0671937ecd feat: add versioning entrypoint 1.3.1 2026-05-26 10:18:27 +08:00
siujamo e2a40795c5 chore: opt-in to Node.js 24 for GitHub Actions to clear deprecation warning
Set the environment variable FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 to true
to force the workflow and runner to execute all JavaScript actions using
Node.js 24. This resolves the future deprecation warning for Node.js 20.
2026-05-25 16:01:19 +08:00
siujamo a8ff1cabad chore: rewrite GitHub Actions to build, publish release JAR, and push image to GHCR
Update build-and-deploy.yml workflow to:
1. Run single job 'build-and-release' to bypass artifact transfers.
2. Build JAR with -PartefactVersion parameter.
3. Upload the compiled JAR asset directly into GitHub Releases.
4. Build and push the Docker image directly to GitHub Container Registry (ghcr.io).
2026-05-25 15:52:54 +08:00
siujamo e4dca61f98 chore: merge CI stages into a single release job to optimize speed
Merge build, package, and deploy stages into a single 'release' job. By building
the jar and running docker commands in the same container using local docker socket,
we completely bypass the need for GitLab artifact uploading/downloading. This significantly
reduces network overhead and speeds up release deployment.
2026-05-25 15:43:23 +08:00
siujamo e7da3a76b7 ci: recover artefact uploading 1.3.0.7 2026-05-25 14:45:26 +08:00