From fceccf4b66525eb0cfeaa44d308aabbd186aa20c Mon Sep 17 00:00:00 2001 From: Carlos Polop Date: Sun, 8 Nov 2026 12:09:19 +0100 Subject: [PATCH] Show Black Friday training promotion throughout November 2026 --- .github/workflows/deploy_promotion.yml | 66 +++++++++++ .github/workflows/translate_all.yml | 6 + scripts/test_discount.js | 110 ++++++++++++++++++ scripts/upload_immutable_images.sh | 1 + .../hacktricks-black-friday-2026-v1.webp | Bin 0 -> 175506 bytes theme/discount.css | 3 +- theme/discount.js | 19 +-- 7 files changed, 195 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/deploy_promotion.yml create mode 100644 scripts/test_discount.js create mode 100644 src/images/hacktricks-black-friday-2026-v1.webp diff --git a/.github/workflows/deploy_promotion.yml b/.github/workflows/deploy_promotion.yml new file mode 100644 index 0000000000..17f55b80f3 --- /dev/null +++ b/.github/workflows/deploy_promotion.yml @@ -0,0 +1,66 @@ +name: Deploy promotion banner + +on: + workflow_dispatch: + +permissions: + contents: read + id-token: write + +concurrency: + group: deploy-promotion-banner + cancel-in-progress: false + +jobs: + deploy: + runs-on: ubuntu-latest + environment: prod + steps: + - uses: actions/checkout@v4 + - name: Validate campaign + run: | + node --check theme/discount.js + node --test scripts/test_discount.js + - name: Configure AWS credentials using OIDC + uses: aws-actions/configure-aws-credentials@v6 + with: + role-to-assume: ${{ secrets.AWS_ROLE_ARN }} + aws-region: us-east-1 + - name: Update promotion on every deployed language + shell: bash + env: + BUCKET: hacktricks-cloud + DISTRIBUTION_ID: ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} + run: | + set -euo pipefail + # Discover only existing language roots; leave book content untouched. + aws s3api list-objects-v2 --bucket "$BUCKET" --delimiter / \ + --query 'CommonPrefixes[].Prefix' --output json > /tmp/prefixes.json + python3 - <<'PYCODE' + import json, re + prefixes = [p for p in json.load(open('/tmp/prefixes.json')) if re.fullmatch(r'[a-z]{2}/', p)] + if 'en/' not in prefixes: + raise SystemExit('Expected the deployed English book') + with open('/tmp/languages.txt', 'w') as output: + output.write('\n'.join(prefixes) + '\n') + PYCODE + while IFS= read -r prefix; do + aws s3 cp src/images/hacktricks-black-friday-2026-v1.webp \ + "s3://${BUCKET}/${prefix}images/hacktricks-black-friday-2026-v1.webp" \ + --content-type image/webp --cache-control 'public,max-age=31536000,immutable' --only-show-errors + # mdBook versions have emitted both paths. Cover both existing page layouts. + for script in theme/discount.js discount.js; do + aws s3 cp theme/discount.js "s3://${BUCKET}/${prefix}${script}" \ + --content-type application/javascript --cache-control 'public,max-age=300' --only-show-errors + done + for stylesheet in theme/discount.css discount.css; do + aws s3 cp theme/discount.css "s3://${BUCKET}/${prefix}${stylesheet}" \ + --content-type text/css --cache-control 'public,max-age=300' --only-show-errors + done + done < /tmp/languages.txt + invalidation_id=$(aws cloudfront create-invalidation \ + --distribution-id "$DISTRIBUTION_ID" \ + --paths '/*/theme/discount.js' '/*/discount.js' '/*/theme/discount.css' '/*/discount.css' \ + --query Invalidation.Id --output text) + aws cloudfront wait invalidation-completed \ + --distribution-id "$DISTRIBUTION_ID" --id "$invalidation_id" diff --git a/.github/workflows/translate_all.yml b/.github/workflows/translate_all.yml index dbcc892c9f..e30d542951 100644 --- a/.github/workflows/translate_all.yml +++ b/.github/workflows/translate_all.yml @@ -110,6 +110,7 @@ jobs: mkdir -p /tmp/immutable-images cp \ src/images/hacktricks-summer-discount-2026-v1.webp \ + src/images/hacktricks-black-friday-2026-v1.webp \ src/images/arte-badge-v1.webp \ src/images/grte-badge-v1.webp \ src/images/azrte-badge-v1.webp \ @@ -120,6 +121,7 @@ jobs: src/images/arte-sponsor-v1.webp \ /tmp/immutable-images/ cp theme/discount.js /tmp/discount.js + cp theme/discount.css /tmp/discount.css - name: Run get_and_save_refs.py run: | @@ -213,6 +215,10 @@ jobs: MDBOOK_BOOK__LANGUAGE=$BRANCH mdbook build || (echo "Error logs" && cat hacktricks-preprocessor-error.log && echo "" && echo "" && echo "Debug logs" && (cat hacktricks-preprocessor.log | tail -n 20) && exit 1) cp /tmp/immutable-images/* ./book/images/ cp /tmp/discount.js ./book/discount.js + mkdir -p ./book/theme + cp /tmp/discount.js ./book/theme/discount.js + cp /tmp/discount.css ./book/discount.css + cp /tmp/discount.css ./book/theme/discount.css cp /tmp/ht_searcher.js ./book/theme/ht_searcher.js - name: Push search index to hacktricks-searchindex repo diff --git a/scripts/test_discount.js b/scripts/test_discount.js new file mode 100644 index 0000000000..9c917c0e18 --- /dev/null +++ b/scripts/test_discount.js @@ -0,0 +1,110 @@ +const assert = require('node:assert/strict') +const { readFileSync } = require('node:fs') +const { test } = require('node:test') +const vm = require('node:vm') + +const source = readFileSync(require('node:path').join(__dirname, '../theme/discount.js'), 'utf8') +const KEY = 'htDiscountDismissedUntil:black-friday-2026' +const TEN_DAYS = 10 * 24 * 60 * 60 * 1000 + +function load(date, { storage = new Map(), blocked = false, search = '', loading = false } = {}) { + const now = Date.parse(date) + const nodes = [] + const listeners = new Map() + function element() { + const node = { + style: { setProperty() {} }, + children: [], attributes: {}, handlers: {}, isConnected: false, + classList: { contains: () => false, add() {}, remove() {} }, + setAttribute(name, value) { this.attributes[name] = value }, + append(...children) { children.forEach(child => this.appendChild(child)) }, + appendChild(child) { this.children.push(child); child.isConnected = true }, + addEventListener(name, fn) { this.handlers[name] = fn }, + remove() { this.isConnected = false }, + } + nodes.push(node) + return node + } + const document = { + readyState: loading ? 'loading' : 'complete', + baseURI: 'https://cloud.hacktricks.wiki/es/nested/page.html', + documentElement: element(), body: element(), createElement: element, + querySelector: () => nodes.find(n => n.className === 'ht-discount-overlay' && n.isConnected), + addEventListener: (name, fn) => listeners.set(name, fn), + removeEventListener: name => listeners.delete(name), + } + const window = { + path_to_root: '../', location: { search, href: document.baseURI }, + matchMedia: () => ({ matches: true }), setTimeout: fn => fn(), + localStorage: { + getItem(key) { if (blocked) throw Error('blocked'); return storage.get(key) ?? null }, + setItem(key, value) { if (blocked) throw Error('blocked'); storage.set(key, value) }, + }, + } + class Clock extends Date { static now() { return now } } + vm.runInNewContext(source, { window, document, Date: Clock, URL, URLSearchParams }) + return { nodes, storage, listeners, overlay: () => document.querySelector(), find: name => nodes.find(n => n.className === name) } +} + +test('campaign appears only throughout November 2026, including UTC boundaries', () => { + for (const date of ['2026-11-01T00:00:00Z', '2026-11-30T23:59:59.999Z']) { + assert.ok(load(date).overlay(), date) + } + for (const date of ['2026-10-31T23:59:59.999Z', '2026-12-01T00:00:00Z', '2026-07-15T12:00:00Z', '2027-11-08T12:00:00Z']) { + const page = load(date) + assert.equal(page.overlay(), undefined, date) + assert.equal(page.find('ht-discount-image'), undefined, 'inactive campaigns must not download the image') + } +}) + +test('translated nested pages use their language root and the training courses link', () => { + const page = load('2026-11-08T12:00:00Z') + assert.equal(page.find('ht-discount-image').src, 'https://cloud.hacktricks.wiki/es/images/hacktricks-black-friday-2026-v1.webp') + assert.match(page.find('ht-discount-image').alt, /20% off courses, 15% off labs and exams/) + assert.equal(page.find('ht-discount-primary').href, 'https://hacktricks-training.com/courses') +}) + +test('hide persists across navigation and expires exactly after ten days', () => { + const page = load('2026-11-08T12:00:00Z') + page.find('ht-discount-delay').handlers.click() + assert.equal(page.overlay(), undefined) + assert.equal(Number(page.storage.get(KEY)), Date.parse('2026-11-08T12:00:00Z') + TEN_DAYS) + assert.equal(load('2026-11-18T11:59:59.999Z', page).overlay(), undefined) + assert.ok(load('2026-11-18T12:00:00Z', page).overlay()) +}) + +test('summer dismissal does not hide Black Friday and preview overrides its dismissal', () => { + const storage = new Map([['htDiscountDismissedUntil:summer-2026', String(Date.parse('2026-12-01T00:00:00Z'))]]) + assert.ok(load('2026-11-08T12:00:00Z', { storage }).overlay()) + storage.set(KEY, String(Date.parse('2026-11-20T12:00:00Z'))) + assert.equal(load('2026-11-08T12:00:00Z', { storage }).overlay(), undefined) + assert.ok(load('2026-11-08T12:00:00Z', { storage, search: '?discount=show' }).overlay()) + assert.equal(load('2026-12-01T00:00:00Z', { storage, search: '?discount=show' }).overlay(), undefined) +}) + +test('close, Escape and outside click close only the current page', () => { + for (const method of ['close', 'escape', 'outside']) { + const page = load('2026-11-08T12:00:00Z') + if (method === 'close') page.find('ht-discount-close').handlers.click() + if (method === 'escape') page.listeners.get('keydown')({ key: 'Escape' }) + if (method === 'outside') page.overlay().handlers.click({ target: page.overlay() }) + assert.equal(page.overlay(), undefined) + assert.equal(page.listeners.has('keydown'), false) + assert.equal(page.storage.size, 0) + assert.ok(load('2026-11-08T12:00:01Z', page).overlay()) + } +}) + +test('blocked storage keeps the page and close controls working', () => { + const page = load('2026-11-08T12:00:00Z', { blocked: true }) + assert.ok(page.overlay()) + assert.doesNotThrow(() => page.find('ht-discount-delay').handlers.click()) + assert.equal(page.overlay(), undefined) +}) + +test('initial page load waits for the DOM', () => { + const page = load('2026-11-08T12:00:00Z', { loading: true }) + assert.equal(page.overlay(), undefined) + page.listeners.get('DOMContentLoaded')() + assert.ok(page.overlay()) +}) diff --git a/scripts/upload_immutable_images.sh b/scripts/upload_immutable_images.sh index 84c569cda6..14e26d5348 100644 --- a/scripts/upload_immutable_images.sh +++ b/scripts/upload_immutable_images.sh @@ -13,6 +13,7 @@ cache_control="public,max-age=31536000,immutable" for image in \ hacktricks-summer-discount-2026-v1.webp \ + hacktricks-black-friday-2026-v1.webp \ arte-badge-v1.webp \ grte-badge-v1.webp \ azrte-badge-v1.webp \ diff --git a/src/images/hacktricks-black-friday-2026-v1.webp b/src/images/hacktricks-black-friday-2026-v1.webp new file mode 100644 index 0000000000000000000000000000000000000000..09e7557c16ae72d793faca4d385c16580a3b9351 GIT binary patch literal 175506 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

~a9iPF$S!@2i8)JN_{8^QNgcm0X_I)^s!?KSZd zEeH0zKKWG+UyU1&T#A{7gp3*k8Avz_M0gqoVxzT`dzt`DgJXGqDHor#meyzthxco}3u zCP?<^Ohb(M^`+eS>0WrEaRwXGlNSk?Lbh79pnnE&FMCH)?XWZr?yhXzQUI5!5=&mskmWs=s7Nj_m2cV7dX)mY{Q0!P zD_mZI#uT{Jk;^d3+!~X*=GyL01}f__B&rTt;CmA@|KTL9I{_qzSoe`pAoE3w%(OO@ zPWaT^k=@TweMyyqi%mWp1?y&~zcT7|M+sCGB_QD>NL(d(k8KOw!4*p0Jw#p1`@?Sf z5=UV&`Iy!ceh6`y_OjCwp@$OX?$~gy@&JXjlJI1JjEnE>Exr$_3t-y84@Jte*HpzA zM_QWE3%?)_b1#)gJgzO64sGz6XW+tAFp!2ozuPsJji3O{;|Oar2=NM*9x@5HO%naa zIy?Cu4`OPtngdwkKWHNKK8(}`6}A&>FwnFavn@_03=omdpI!6_NLDphz!gt9fJpp9 zz|SJ^0CFZrPce)V!YC0g%$~_nA2hk?lzWJ25;&1@rJ{mF=hLP>Jkzg(Q#-^@!eA#F zs(#nwuFq7`;`gm+B<;HzWF;6guF~7+&Qg340>?ujaRWisYl7m5X3&XKpj>fJ>3wYs zoLp=8g67zKuzv8jRDed={zjII2OThvg+||>P%wOW1BDr%k078PrNq!~mU{QC-8r2%EKhZIzNa_*%s3U!ZCfAbUWz4yni>3W-P5QJrqtYAW3ATmmHsnH-KgB^ zGL1xVAr<_u-z3tp=aY1%e@^*saaih9PC9q2LX!GV95>ow_mXTX4B$AR#c7XhE*<{6 zkH6J?+C*+v-qXfj<=SqmPSWg-bMi*dA&}^B#`P`!EJehb9m+f?>ee`30Kp~m_TJ5S7nsjt0&5D~>B*oa-u}D!ISEHkx|i!3@zlc%BhQKj%VdypWy=+BBKY3B z6T3hr?5Z18a_eV|Hx=WZ*p#!Q9QB##`cU_s_09!^CC$SZr|Dt(*`v+Ro8HzDqFt&B z)DRi`9uc@q=mAo#0k2$5#SZlNejX-?b5Ia)hhu6dGe|Lx%AcV_%O