Skip to content

Add secure single-port HTTP proxy transport - #1594

Open
BenCodez wants to merge 41 commits into
masterfrom
codex/http-transport
Open

Add secure single-port HTTP proxy transport#1594
BenCodez wants to merge 41 commits into
masterfrom
codex/http-transport

Conversation

@BenCodez

@BenCodez BenCodez commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Summary

  • add BungeeMethod: HTTP as a bidirectional, outbound-backend transport using one proxy HTTPS port
  • automate a private CA, proxy TLS identity, node-bound one-time enrollment codes, per-backend client certificates, persistence, revocation, and certificate pinning
  • integrate the transport across Bungee/Velocity config, backend lifecycle, proxy routing, Control validation, vote handling, commands, and cleanup
  • add bounded long polling, persistent HTTP/1.1 connections, acknowledgements/deduplication, byte-budgeted batching, bounded queues/executors, admission/rate limits, and strict protocol parsing
  • document the quick setup and Internet-facing threat model in docs/http-transport.md

Easy setup

  1. Select HTTP on the proxy and set HTTP.PublicEndpoint.
  2. Open only the configured proxy port.
  3. Run /votingpluginbungee httpcode <server>.
  4. Paste the code into that backend's HTTP.ConnectionCode and restart it.
  5. Remove the temporary code after enrollment. The generated client identity is reused automatically.

Compromised or replaced nodes can be revoked with /votingpluginbungee httprevoke <server>.

Security

  • TLS 1.3 only, exact proxy/CA pins, hostname verification, certificate validity/signature/CA checks
  • client certificates bound to canonical backend identities and revalidated at the application boundary
  • 256-bit, 15-minute, single-use enrollment capabilities bound to one requested backend
  • owner-only atomic key, profile, binding, and revocation persistence where supported
  • fixed, bounded request bodies with request/response deadlines; no chunked uploads or redirects
  • exact endpoints/methods/content types, replay sequences, deduplication, and authenticated identity normalization
  • bounded connections, concurrent polls, worker queues, message queues, batches, packet bytes, and per-node request rates

The application cannot by itself prevent volumetric link/TCP floods; the documentation recommends host/provider firewall protection for Internet exposure and requires direct TLS pass-through.

Performance

  • all network and certificate work is off the game thread
  • reused HTTP/1.1 TLS connections
  • two-second bounded long polls for predictable backend-origin latency
  • message/ACK batching that splits on the fully serialized 256 KiB packet budget

Verification

  • GitHub Actions run 709: mvn -B -f VotingPlugin/pom.xml package passed
  • 546 tests passing with 0 failures/errors
  • focused Java 21 callback/backpressure/restart-dedup harness: passing
  • git diff --check: passing
  • independent concurrency/security/durability audit: clean after remediation

Delivery semantics

  • proxy-to-backend messages are durable on the proxy until a confirmed ACK
  • backends fsync bounded RESERVED, RUNNING, and COMPLETED delivery states around callbacks
  • reserved work resumes after restart; completed work is ACKed without replay; ambiguous running work remains quarantined and unacknowledged
  • completed states are removed only after a matching authenticated 200 proves durable proxy deletion
  • FIFO callback lanes remain bounded and apply backpressure at capacity
  • interrupted non-atomic state transitions recover conservatively without silently acknowledging unfinished work
  • backend-to-proxy delivery retains bounded in-process retry semantics

@BenCodez
BenCodez marked this pull request as ready for review August 31, 2026 22:33
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Aug 31, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-05T22:47:38.703937Z 48841b8 Manual request
🔒 Security Review Completed 2026-09-01T00:12:47.280936Z 63e8f9d Manual request

Security findings

Advisory findings (1)

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1fd3be90b5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d27636bdcf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1d30c94201

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e9bbe03612

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown
Owner Author

@codex review

Copy link
Copy Markdown
Owner Author

@codex security review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 38a37ddb1b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown
Owner Author

@codex security review

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 57226856ab

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown
Owner Author

@codex security review

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: aa0f8d8ba5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

BenCodez commented Sep 1, 2026

Copy link
Copy Markdown
Owner Author

@codex review

BenCodez commented Sep 1, 2026

Copy link
Copy Markdown
Owner Author

@codex security review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 63e8f9ddd9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Security Review

Here are some automated security review suggestions for this pull request.

Reviewed commit: 63e8f9ddd9

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

Comment thread VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/VotingPluginProxy.java Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 67e9d1262a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 57517d7593

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9b9232b110

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7fec7976a4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f8113897b2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7495519d61

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread VotingPlugin/src/main/java/com/bencodez/votingplugin/VotingPluginMain.java Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e23a9691d0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fa1296ea07

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bfea6f1b63

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b6d0f774bd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@BenCodez

BenCodez commented Sep 5, 2026

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 48841b80d8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/http-transport.md
```

2. Allow TCP port `1297` to the proxy. `PublicEndpoint` must resolve directly to this VotingPlugin listener.
3. Restart the proxy and run `/votingpluginbungee httpcode <server>`. The name must exactly identify the intended backend; generate a separate code for each backend.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use the registered command name in the HTTP setup

Following this quick setup always invokes an unregistered command: Bungee registers only votingpluginproxy in VotingPluginBungeeCommand.java:14, and Velocity registers votingpluginproxy with the vpp alias in VotingPluginVelocity.java:352. The same incorrect /votingpluginbungee name is printed after listener startup and repeated for revocation, so administrators following the new instructions cannot generate the connection code needed to enroll any backend; document /votingpluginproxy or register the advertised alias.

Useful? React with 👍 / 👎.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The new restart/rollback plumbing appears to leave non-HTTP transports closed after a failed replacement, and plugin-message relay registration may duplicate when the underlying PluginMessage instance changes.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Adds a new BungeeMethod: HTTP transport that allows backends to communicate with a proxy over a single outbound HTTPS connection, including automated enrollment (private CA + per-backend client certs), pinned TLS, bounded long-polling, and durable delivery/ack semantics. This fits into VotingPlugin’s proxy/backends communication layer as an additional transport option alongside plugin messaging, sockets, Redis, MQTT, and MySQL.

Changes:

  • Introduces the secure HTTP transport implementation (proxy enrollment authority + backend connector + strict protocol framing + credential stores).
  • Extends proxy vote-party durability to journal and safely retry proxy-side effects/reward deliveries under HTTP.
  • Updates Control/config validation, default configs, commands, and adds extensive unit/integration/security tests plus documentation.
File summaries
File Description
VotingPlugin/src/test/java/com/bencodez/votingplugin/tests/VotingPluginProxyTestImpl.java Extends proxy test harness to simulate HTTP vote envelope delivery and vote-party durability behaviors.
VotingPlugin/src/test/java/com/bencodez/votingplugin/tests/VotingPluginProxyTest.java Adds tests for HTTP vote-party durability, authenticated backend envelope checks, and queue behavior.
VotingPlugin/src/test/java/com/bencodez/votingplugin/tests/BungeeMethodTest.java Adds assertions for the new HTTP method behavior and name lookup.
VotingPlugin/src/test/java/com/bencodez/votingplugin/proxy/control/ProxyMethodConfigurationServiceTest.java Adds validation coverage for required HTTP proxy settings and endpoint constraints.
VotingPlugin/src/test/java/com/bencodez/votingplugin/proxy/cache/VotePartyCacheDurabilityTest.java Tests vote-party cache “save actually persisted” verification behavior.
VotingPlugin/src/test/java/com/bencodez/votingplugin/control/BackendConfigurationServiceTest.java Adds quick-setup coverage for HTTP, redaction for ConnectionCode, and preflight validation cases.
VotingPlugin/src/test/java/com/bencodez/votingplugin/backendproxy/transport/HttpBackendProxyTransportTest.java Verifies backend HTTP transport validation, replacement behavior, and non-blocking close semantics.
VotingPlugin/src/test/java/com/bencodez/votingplugin/backendproxy/http/HttpTransportSecurityTest.java Tests protocol bounds, pins, code parsing, identity durability, enrollment/renewal/revocation invariants.
VotingPlugin/src/test/java/com/bencodez/votingplugin/backendproxy/BackendProxyHandlerLifecycleTest.java Adds lifecycle tests for staged publication/rollback of plugin messaging and presence activation.
VotingPlugin/src/main/resources/BungeeSettings.yml Documents HTTP as a backend method and adds HTTP.ConnectionCode placeholder.
VotingPlugin/src/main/resources/bungeeconfig.yml Adds proxy-side HTTP listener settings and documents the required public endpoint.
VotingPlugin/src/main/java/com/bencodez/votingplugin/VotingPluginMain.java Refactors backend proxy handler restart into prepare/validate/publish/abort phases; adjusts plugin message relay ownership handling.
VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/VotingPluginProxyConfig.java Adds HTTP listener/public-endpoint config accessors for proxy implementations.
VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/VotingPluginProxyCommand.java Adds /votingplugin httpcode and /votingplugin httprevoke proxy commands.
VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/velocity/VotingPluginVelocity.java Implements new vote-party durability methods and durable save for Velocity.
VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/velocity/VelocityJsonVoteCache.java Persists/loads pending vote-party rewards and proxy effects with encoded server keys.
VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/velocity/VelocityConfig.java Reads proxy HTTP settings from Velocity config.
VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/control/ProxyMethodConfigurationService.java Validates HTTP host/port and HTTPS public endpoint shape.
VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/cache/VotePartyCacheDurability.java Adds post-save verification to ensure vote-party transactional state is actually persisted.
VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/cache/PendingVotePartyProxyEffects.java Introduces a bounded durable representation of ordered proxy-side vote-party effects.
VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/cache/IVoteCache.java Extends vote cache interface for pending vote-party rewards/effects persistence.
VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/BungeeMethod.java Adds the new HTTP enum value and description.
VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/bungee/VotingPluginBungee.java Implements new vote-party durability methods and durable save for Bungee.
VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/bungee/BungeeJsonVoteCache.java Persists/loads pending vote-party rewards and proxy effects with encoded server keys.
VotingPlugin/src/main/java/com/bencodez/votingplugin/proxy/bungee/BungeeConfig.java Reads proxy HTTP settings from Bungee config.
VotingPlugin/src/main/java/com/bencodez/votingplugin/listeners/VotiferEvent.java Updates backend-side votifier bypass message/logic to include HTTP.
VotingPlugin/src/main/java/com/bencodez/votingplugin/control/BackendControlConnector.java Refactors Control reload flow to validate HTTP enrollment off-thread and support abort/rollback sequencing.
VotingPlugin/src/main/java/com/bencodez/votingplugin/control/BackendConfigurationService.java Adds HTTP method validation and redaction support for ConnectionCode.
VotingPlugin/src/main/java/com/bencodez/votingplugin/config/BungeeSettings.java Adds managed config field for backend HTTP.ConnectionCode.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/transport/PluginMessagingBackendProxyTransport.java Stages plugin messaging publication so shared state isn’t swapped before handler publication.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/transport/HttpBackendProxyTransport.java Implements backend-side HTTP transport setup, enrollment, readiness validation, and bounded shutdown flushing.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/transport/BackendProxyTransportManager.java Adds support for HTTP transport, publication staging, and HTTP-specific validate/rollback hooks.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/transport/BackendProxyTransport.java Adds a publication boundary hook (activateAfterPublication).
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/presence/BackendPresenceManager.java Ensures presence activation can fail atomically without partially publishing state.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/http/HttpTransportSecrets.java Adds minimal crypto helpers (random, SHA-256, HMAC) used by transport/enrollment.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/http/HttpTransportProtocol.java Defines strict, bounded, versioned JSON envelope/batch format for the HTTP transport.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/http/HttpTlsIdentity.java Implements durable proxy-side private CA and rotating server TLS identity generation.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/http/HttpPinnedTls.java Builds pinned TLS contexts for enrollment and normal mTLS operation.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/http/HttpInboundDeliveryStore.java Adds backend-side crash-durable inbound delivery fencing across callbacks.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/http/HttpEnrollmentAuthority.java Implements proxy-side enrollment tokens, certificate binding, renewal, and revocation persistence.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/http/HttpConnectionCode.java Implements the copy/paste connection code format, validation, and legacy compatibility.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/http/HttpClientCredentialStore.java Implements owner-only client credential persistence with generation staging/activation/rollback.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/http/HttpBackendTransportConnector.java Implements backend long-poll client with bounded queues, acks, delivery journaling, and renewal.
VotingPlugin/src/main/java/com/bencodez/votingplugin/backendproxy/BackendProxyHandler.java Stages presence + transport publication and adds replacement/rollback hooks.
VotingPlugin/pom.xml Adds and shades BouncyCastle dependencies used for certificate issuance.
docs/http-transport.md Documents quick setup, threat model, durability semantics, and operational guidance for HTTP transport.
Review details
  • Files reviewed: 49/49 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +1360 to +1364
com.bencodez.simpleapi.servercomm.pluginmessage.PluginMessage current = getPluginMessaging();
if (backendPluginMessageRelayOwner != current) {
current.add(backendPluginMessageRelay);
backendPluginMessageRelayOwner = current;
}
Comment on lines +125 to +128
public boolean prepareForReplacement(BungeeMethod replacementMethod) {
if (method == replacementMethod && method != BungeeMethod.PLUGINMESSAGING && method != BungeeMethod.REDIS) {
transportManager.prepareForReplacement();
return method == BungeeMethod.HTTP;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants