do not print a proxy's error page at somebody
first real test of the settings form returned openresty's 502 Bad Gateway document, markup and all, into the panel. installing this plugin restarts officer, and a request made inside that window reaches nginx proxy manager, finds nothing behind it, and gets a web page back. useClient throws the response body as the message, so the panel printed it. worth keeping the irony: this plugin manages the proxy whose error page it could not read. the check is the body's SHAPE, not the status, because there is no status that separates them — api/router.ts uses 502 for "NPM answered and refused", which is a real answer we must not swallow. ours arrives as a sentence, theirs as a document. gateway status AND html means the hop in front of officer answered; html on its own still is not a sentence and says so without the tags. all three panels go through it now. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043
This commit is contained in:
@@ -3,6 +3,7 @@ import { CheckCircle2, Loader2, Plug, ShieldAlert, Trash2, TriangleAlert } from
|
||||
import { useClient } from 'hooks/useClient';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Input } from '@/components/ui/input';
|
||||
import { readableError } from './errors';
|
||||
|
||||
/**
|
||||
* The connection to Nginx Proxy Manager — both the setup wizard and the permanent settings page.
|
||||
@@ -94,9 +95,10 @@ const isForbidden = (error: unknown): boolean => (error as { status?: number })?
|
||||
* `useClient` throws `ApiError(status, message)` and nothing else — there is no `.body` to read, which is
|
||||
* the bug `HostsPanel`'s `asFailure` documents at length. The message is already the server's own text:
|
||||
* since 2026-08-25 the platform answers `{ error }` and the client unwraps it before throwing.
|
||||
*
|
||||
* `readableError` guards the case where that text is not Officer's at all — see `errors.ts`.
|
||||
*/
|
||||
const errorText = (error: unknown): string =>
|
||||
error instanceof Error ? error.message : 'Something went wrong.';
|
||||
const errorText = (error: unknown): string => readableError(error);
|
||||
|
||||
export const ConnectionPanel = () => {
|
||||
const client = useClient();
|
||||
|
||||
Reference in New Issue
Block a user