panos-response-pages
Modern, responsive response pages for PAN-OS. Generate response pages to delight users while protecting them from threats.
Table of Contents
Preview
Full Preview available via Github Pages pages.
Features
Use panos-response-pages to generate response pages that
- Provide responsive design for desktop and mobile
- Automatically serve light or dark mode depending on OS settings
- Automatically redirect users to sanctioned apps based on URL category match
- Link to the IT service desk via mail or link
- Support 7 themes across 4 colour palettes
Quickstart
Install it:
pip install panos-response-pages
Or, with uv:
uv tool install panos-response-pages
uvx panos-response-pages build # or run it without installing
Build the pages:
panos-response-pages build # every style, into ./out
panos-response-pages themes # what styles exist
panos-response-pages palettes # what colour palettes exist
out/deploy/<style>/<palette>/ is what you import into PAN-OS.
out/preview/index.html is a clickthrough gallery for review — style, palette,
page, viewport and colour scheme — built with sample data standing in for the
PAN-OS tokens.
Seven styles ship, all supporting both colour schemes. Six wear any of the three
brand palettes: assist, record, banner, glass, beacon, mesh. nyan
pins a palette of its own. See [Styles].
Customise
Copy the shipped shells, palettes, themes and config out, then edit them:
panos-response-pages init # into ~/.panos_response_pages, which build finds on its own
Put your own settings in config/<customer>.json. It is deep-merged over
config/_defaults.json, so list only what differs:
{
"company": "Example Corp",
"supportUrl": "https://servicedesk.example.com/new-ticket",
"supportEmail": "",
"supportLabel": "the Service Desk",
"redirect": {
"enabled": true,
"categories": {
"online-storage-and-backup": {
"app": "Company Drive",
"url": "https://drive.example.com/",
"seconds": 5,
"message": "Work files belong on {app}. Taking you there."
}
}
}
}
companyis the wordmark on every page.supportUrlpoints "Report to IT" at a ticket system instead of a mailbox. It must be an absolutehttps://URL — a response page is served as the blocked site, so a relative path resolves against whatever host refused the user.supportEmailandsupportUrlare mutually exclusive: set one and blank the other, or the build stops.supportLabelnames the queue for the places that print the contact inline — in email mode those print the address itself, so it applies tosupportUrlmode only.redirecthands a user over to a sanctioned app after a countdown when the blocked category has an approved equivalent. It applies to the URL block page only. A category needs no entry incategoriesto redirect — that map lists only the ones whose tone or wording differs, and anything absent from it is calm — but a category listed there aswarnorcriticalis refused, because a user must never be forwarded off a security block. Make sure your security policy actually permits the target, or the redirect lands on another block page.
Then build against it:
panos-response-pages build --customer <name>
Development
uv sync --all-groups
uv run pre-commit install
uv run nox # lint, type-check, tests, docs
nox -s tests runs the suite with coverage; the gate is 93%. Commit uv.lock.
License
MIT. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file panos_response_pages-0.1.1.tar.gz.
File metadata
- Download URL: panos_response_pages-0.1.1.tar.gz
- Upload date:
- Size: 244.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f903c33f8f2e7669a5ed06a426f514cc1219e3f99c7f1aacd0488dea73fe05f6
|
|
| MD5 |
385d91d5528fbec2068596b5f437c2df
|
|
| BLAKE2b-256 |
2e6cad0405bb2e1a4dd7089ee49b45025b255e1c13a869d05ff2ecfe08baf097
|
Provenance
The following attestation bundles were made for panos_response_pages-0.1.1.tar.gz:
Publisher:
release.yml on kaisero/panos-response-pages
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
panos_response_pages-0.1.1.tar.gz -
Subject digest:
f903c33f8f2e7669a5ed06a426f514cc1219e3f99c7f1aacd0488dea73fe05f6 - Sigstore transparency entry: 2340994599
- Sigstore integration time:
-
Permalink:
kaisero/panos-response-pages@20579f3f83bb8bc4876bf9c809c5f89b671ad478 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/kaisero
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@20579f3f83bb8bc4876bf9c809c5f89b671ad478 -
Trigger Event:
push
-
Statement type:
File details
Details for the file panos_response_pages-0.1.1-py3-none-any.whl.
File metadata
- Download URL: panos_response_pages-0.1.1-py3-none-any.whl
- Upload date:
- Size: 243.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aebccff007d5eaf2cd1d9a14973d18ac05d7539efd520dae00aba381e7a42224
|
|
| MD5 |
bb30c72afc0d9e75e5b0196a6f1eae8d
|
|
| BLAKE2b-256 |
1550088b2e75124f66e96a35df2aac59fd2e16ab09a48f233afe2242e1be3a25
|
Provenance
The following attestation bundles were made for panos_response_pages-0.1.1-py3-none-any.whl:
Publisher:
release.yml on kaisero/panos-response-pages
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
panos_response_pages-0.1.1-py3-none-any.whl -
Subject digest:
aebccff007d5eaf2cd1d9a14973d18ac05d7539efd520dae00aba381e7a42224 - Sigstore transparency entry: 2340994613
- Sigstore integration time:
-
Permalink:
kaisero/panos-response-pages@20579f3f83bb8bc4876bf9c809c5f89b671ad478 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/kaisero
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@20579f3f83bb8bc4876bf9c809c5f89b671ad478 -
Trigger Event:
push
-
Statement type: