mirror of
https://github.com/andwati/pwnforfunandprofit.xyz.git
synced 2026-10-18 02:12:52 +00:00
feat: Enhance 404 page and templates with dynamic terminal identity and configurable options
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
--text-color: #1a1a1a;
|
||||
--text-muted: #6b7280;
|
||||
--accent-color: #10b981; // Emerald
|
||||
--accent-hover: #059669; // Emerald darker
|
||||
--surface-color: #ffffff;
|
||||
--border-color: rgba(0, 0, 0, 0.05);
|
||||
--shadow-color: rgba(0, 0, 0, 0.05);
|
||||
|
||||
+6
-3
@@ -4,7 +4,10 @@
|
||||
var body = document.getElementById('term-body');
|
||||
if (!body) return;
|
||||
|
||||
var path = window.location.pathname;
|
||||
var path = window.location.pathname;
|
||||
var promptUser = body.dataset.prompt || 'user@pwnbox';
|
||||
var hostname = body.dataset.hostname || 'pwnbox';
|
||||
var whoami = body.dataset.whoami || 'l0st_r3ader';
|
||||
|
||||
var links = [
|
||||
{ href: body.dataset.linkHome, label: '~/home' },
|
||||
@@ -16,7 +19,7 @@
|
||||
{ type: 'cmd', text: 'cd ' + path },
|
||||
{ type: 'out-error', text: 'bash: cd: ' + path + ': No such file or directory' },
|
||||
{ type: 'cmd', text: 'whoami' },
|
||||
{ type: 'out', text: 'l0st_r3ader' },
|
||||
{ type: 'out', text: whoami },
|
||||
{ type: 'cmd', text: 'ls ~/recovery/' },
|
||||
{ type: 'ls' }
|
||||
];
|
||||
@@ -27,7 +30,7 @@
|
||||
function ps1() {
|
||||
var s = document.createElement('span');
|
||||
s.className = 'term-ps1';
|
||||
s.textContent = 'user@blackout:~$ ';
|
||||
s.textContent = promptUser + '@' + hostname + ':~$ ';
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
+5
-2
@@ -13,13 +13,16 @@
|
||||
<span class="dot-yellow"></span>
|
||||
<span class="dot-green"></span>
|
||||
</div>
|
||||
<span class="term-titlebar-label">bash — pwnbox</span>
|
||||
<span class="term-titlebar-label">bash — {{ config.extra.terminal_hostname | default(value="pwnbox") }}</span>
|
||||
</div>
|
||||
|
||||
<div class="term-body" id="term-body"
|
||||
data-link-home="{{ get_url(path="") }}"
|
||||
data-link-posts="{{ get_url(path="/posts") }}"
|
||||
data-link-tags="{{ get_url(path="/tags") }}">
|
||||
data-link-tags="{{ get_url(path="/tags") }}"
|
||||
data-prompt="{{ config.extra.terminal_prompt_user | default(value="user@pwnbox") }}"
|
||||
data-hostname="{{ config.extra.terminal_hostname | default(value="pwnbox") }}"
|
||||
data-whoami="{{ config.extra.terminal_whoami | default(value="l0st_r3ader") }}">
|
||||
<!-- lines injected by 404.js -->
|
||||
</div>
|
||||
|
||||
|
||||
+15
-15
@@ -25,7 +25,7 @@
|
||||
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="@andwati">
|
||||
<meta name="twitter:site" content="{{ config.extra.twitter_handle | default(value="@andwati_") }}">
|
||||
<meta name="twitter:title" content="{% block twitter_title %}{{ config.title }}{% endblock twitter_title %}">
|
||||
<meta name="twitter:description" content="{% block twitter_description %}{{ config.description }}{% endblock twitter_description %}">
|
||||
<meta name="twitter:image" content="{% block twitter_image %}{{ config.base_url }}/images/og-image.png{% endblock twitter_image %}">
|
||||
@@ -180,16 +180,16 @@
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- CookieConsent: emerald accent for both light and dark modes -->
|
||||
<!-- CookieConsent: accent colors pulled from CSS custom properties -->
|
||||
<style>
|
||||
/* Light mode */
|
||||
#cc-main {
|
||||
--cc-btn-primary-bg: #10b981;
|
||||
--cc-btn-primary-bg: var(--accent-color);
|
||||
--cc-btn-primary-color: #ffffff;
|
||||
--cc-btn-primary-border-color: #10b981;
|
||||
--cc-btn-primary-hover-bg: #059669;
|
||||
--cc-btn-primary-hover-border-color: #059669;
|
||||
--cc-toggle-on-bg: #10b981;
|
||||
--cc-btn-primary-border-color: var(--accent-color);
|
||||
--cc-btn-primary-hover-bg: var(--accent-hover);
|
||||
--cc-btn-primary-hover-border-color: var(--accent-hover);
|
||||
--cc-toggle-on-bg: var(--accent-color);
|
||||
--cc-font-family: 'Outfit', sans-serif;
|
||||
--cc-btn-border-radius: 6px;
|
||||
--cc-modal-border-radius: 10px;
|
||||
@@ -200,11 +200,11 @@
|
||||
--cc-bg: #111111;
|
||||
--cc-primary-color: #f4f4f5;
|
||||
--cc-secondary-color: #a1a1aa;
|
||||
--cc-btn-primary-bg: #10b981;
|
||||
--cc-btn-primary-bg: var(--accent-color);
|
||||
--cc-btn-primary-color: #ffffff;
|
||||
--cc-btn-primary-border-color: #10b981;
|
||||
--cc-btn-primary-hover-bg: #059669;
|
||||
--cc-btn-primary-hover-border-color: #059669;
|
||||
--cc-btn-primary-border-color: var(--accent-color);
|
||||
--cc-btn-primary-hover-bg: var(--accent-hover);
|
||||
--cc-btn-primary-hover-border-color: var(--accent-hover);
|
||||
--cc-btn-secondary-bg: rgba(255,255,255,0.06);
|
||||
--cc-btn-secondary-color: #a1a1aa;
|
||||
--cc-btn-secondary-border-color: rgba(255,255,255,0.1);
|
||||
@@ -213,15 +213,15 @@
|
||||
--cc-separator-border-color: rgba(255,255,255,0.1);
|
||||
--cc-cookie-category-block-bg: rgba(255,255,255,0.04);
|
||||
--cc-cookie-category-block-border: rgba(255,255,255,0.08);
|
||||
--cc-toggle-on-bg: #10b981;
|
||||
--cc-toggle-on-bg: var(--accent-color);
|
||||
--cc-footer-bg: #0a0a0a;
|
||||
--cc-footer-border-color: rgba(255,255,255,0.08);
|
||||
}
|
||||
|
||||
/* Emerald top border, no default box-shadow */
|
||||
/* Accent top border, no default box-shadow */
|
||||
#cc-main .cm,
|
||||
#cc-main .pm { box-shadow: none !important; }
|
||||
#cc-main .cm { border-top: 2px solid #10b981 !important; }
|
||||
#cc-main .cm { border-top: 2px solid var(--accent-color) !important; }
|
||||
</style>
|
||||
|
||||
{% block head %}{% endblock head %}
|
||||
@@ -261,7 +261,7 @@
|
||||
<div class="search-modal" role="dialog" aria-modal="true" aria-label="Search posts">
|
||||
<div class="search-header">
|
||||
<svg viewBox="0 0 24 24" width="18" height="18" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg>
|
||||
<input type="text" id="search-input" placeholder="Search posts..." autocomplete="off">
|
||||
<input type="text" id="search-input" placeholder="{{ config.extra.search_placeholder | default(value="Search posts...") }}" autocomplete="off">
|
||||
</div>
|
||||
<div id="search-results" class="search-results"></div>
|
||||
<div class="search-footer">
|
||||
|
||||
@@ -34,11 +34,12 @@ block og_url %}{{ config.base_url }}/{% endblock og_url %} {% block head %}
|
||||
class="post-feed-list"
|
||||
style="max-width: 65ch; margin: 0 auto; display: flex; flex-direction: column; gap: 2.5rem"
|
||||
>
|
||||
{% set section = get_section(path="posts/_index.md") %} {% for page in section.pages | slice(end=3) %} {% include
|
||||
"partials/post-card.html" %} {% endfor %}
|
||||
{% set section = get_section(path="posts/_index.md") %}
|
||||
{% set post_limit = config.extra.homepage_post_limit | default(value=3) %}
|
||||
{% for page in section.pages | slice(end=post_limit) %} {% include "partials/post-card.html" %} {% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="view-all-posts">
|
||||
<a href="/posts" class="btn-view-all">View all posts</a>
|
||||
<a href="/posts" class="btn-view-all">{{ config.extra.view_all_posts_label | default(value="View all posts") }}</a>
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:site" content="@andwati">
|
||||
<meta name="twitter:site" content="{{ config.extra.twitter_handle | default(value="@andwati_") }}">
|
||||
<meta name="twitter:title" content="{% block twitter_title %}{{ config.title }}{% endblock twitter_title %}">
|
||||
<meta name="twitter:description" content="{% block twitter_description %}{{ config.description | default(value="Binary exploitation, reverse engineering, and offensive security blog.") }}{% endblock twitter_description %}">
|
||||
{% block twitter_extra %}{% endblock twitter_extra %}
|
||||
|
||||
@@ -21,12 +21,13 @@
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{# If we found any related pages, pick top 3 and display them #}
|
||||
{# If we found any related pages, pick top N and display them #}
|
||||
{% set related_limit = config.extra.related_posts_limit | default(value=3) %}
|
||||
{% if related_pages | length > 0 %}
|
||||
<div class="related-posts-section">
|
||||
<h3>Related Posts</h3>
|
||||
<h3>{{ config.extra.related_posts_title | default(value="Related Posts") }}</h3>
|
||||
<div class="related-posts-grid">
|
||||
{% for related_page in related_pages | slice(end=3) %}
|
||||
{% for related_page in related_pages | slice(end=related_limit) %}
|
||||
{# We can use a simplified card or the existing post-card.html #}
|
||||
{% set page = related_page %}
|
||||
{% include "partials/post-card.html" %}
|
||||
|
||||
@@ -60,3 +60,22 @@ url = "@/archive/_index.md"
|
||||
enable_search = true
|
||||
enable_theme_toggle = true
|
||||
show_rss_link = true
|
||||
|
||||
# Social meta
|
||||
twitter_handle = "@andwati_"
|
||||
|
||||
# Homepage
|
||||
homepage_post_limit = 3
|
||||
view_all_posts_label = "View all posts"
|
||||
|
||||
# Related posts
|
||||
related_posts_limit = 3
|
||||
related_posts_title = "Related Posts"
|
||||
|
||||
# Search
|
||||
search_placeholder = "Search posts..."
|
||||
|
||||
# 404 terminal identity
|
||||
terminal_hostname = "pwnbox"
|
||||
terminal_prompt_user = "user@blackout"
|
||||
terminal_whoami = "l0st_r3ader"
|
||||
|
||||
Reference in New Issue
Block a user