Commit Graph
71 Commits
Author SHA1 Message Date
SatoshiQaziMuhammedandClaude Opus 5 d2c8bdefb0 Let the Deno build reach its dependencies, and let its check fail (#8)
The build rewrites every @pezkuwi import into a deno.land URL, so @pezkuwi/util
becomes https://deno.land/x/pezkuwi/util/mod.ts. Upstream can do that because
deno.land/x/polkadot is published. Our fork renamed the prefix to x/pezkuwi and
never published there: deno.land/x/pezkuwi answers 404, and `deno check` has
failed on three modules ever since. Reproduced locally with the same Deno the
workflow installs, 2.9.7:

    TS2307 Cannot find module 'https://deno.land/x/pezkuwi/util/mod.ts'
    TS2307 Cannot find module 'https://deno.land/x/pezkuwi/util-crypto/mod.ts'
    TS2307 Cannot find module 'https://deno.land/x/pezkuwi/x-fetch/mod.ts'

import_map.in.json is the tooling's own hook for exactly this —
pezkuwi-dev-deno-map merges its entries into the generated import_map.json. All
three are mapped to npm: specifiers, which Deno resolves natively, at the same
version ranges the node build uses. The three packages are already on npm, so
nothing new is published and the Deno build now checks against the very code we
ship. `yarn deno` exits 0.

This deliberately does not decide whether we ever claim deno.land/x/pezkuwi. If
we do, the mappings come out again; until then the build works with what we have.

The reason none of this was noticed is the second half of the change. The PR job
carried continue-on-error from upstream, so its four steps could never turn a
pull request red: build had been failing since 2026-09-13 and deno for far
longer, and the job reported success throughout. All four pass now — verified
locally, lint included, on a clean tree — so the flag is gone and they are gates
again.

deno.lock joins mod.ts and import_map.json in .gitignore: same check, same kind
of generated artifact. package.json carries the key order its own build:before
step produces.

Gate: scripts/checkDenoMap.mjs, in the Lists workflow so it runs even when the
toolchain cannot be installed. Nails: removing the map, bumping a dependency
without the map, adding a @pezkuwi dependency with no mapping, and leaving a
mapping behind after its dependency goes — each turns it red.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 17:16:47 +04:00
SatoshiQaziMuhammedandClaude Opus 5 31b40114a7 Say where this repository actually is (#7)
* Say where this repository actually is

On 2026-04-21 a commit pointed repository, homepage and bugs at our Gitea
instance — "migrate git dependencies to Gitea mirror". Nothing else moved.
origin is still GitHub, the published @pezkuwi/phishing still says GitHub, and
git.pezkuwichain.io/pezkuwichain/phishing answers 500, so everyone who installs
the package has been given a dead homepage and a dead bug tracker.

It also broke the Master build on 2026-09-13, when the toolchain began reading
the field. @pezkuwi/dev, which is ours, does this:

    const repoPath = pkg.repository.url
      .split('https://github.com/')[1]
      .split('.git')[0];

A URL from any other host makes [1] undefined and the build dies with "Cannot
read properties of undefined (reading 'split')" — a message that names neither
the field nor the file. Three runs failed that way and master has had no green
build since.

The metadata now says what is true today. This is not a decision about where
the project should live: it is an alignment with where the code already is and
with what we already publish.

That migration is still worth finishing, and this is the sequencing it needs.
Moving the repository to Gitea for real means fixing @pezkuwi/dev first, so a
toolchain built for a state that hosts its own git stops assuming github.com.
scripts/checkRepoMeta.mjs is the tripwire: it fails the metadata here rather
than letting it surface as an unreadable stack trace or ship as a dead link.

The check runs in the Lists workflow, which has no toolchain to install and so
still runs when the build does not. Nails: restoring the April commit turns
three cases red, migrating only half the repository turns two red, and leaving
homepage behind on the old host turns one red.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* Hold the new check to the repository's own lint rules

The file I added failed all seven of them and lint had been green: the licence
header every file here carries, import order, an optional chain, object keys in
ascending order and an argument on its own line. Verified with eslint run the
way CI runs it, without --fix.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 16:44:00 +04:00
SatoshiQaziMuhammed b52dd1d3c5 Open an issue when the daily sync fails at any step (#6)
* fix(sync): open an issue when any step fails, not only when the sync refuses

A failed check, commit or push used to end the job red and nothing else. A
sync that stops without anyone told is how these lists went eight months
stale, so any failure now opens (or comments on) the same issue a refusal
does.

* fix(sync): use the committed GitHub host keys as they are

pezkuwi/github_host_keys already names github.com on every line. The push
step prefixed it again, ssh read "github.com github.com ssh-ed25519 ..." as a
parse error, found no host key, and would have refused every push the sync
made.
2026-09-13 17:42:57 +04:00
SatoshiQaziMuhammed 093f6a15dc fix(host,sync): publish lists readable by nginx, and push the sync over a deploy key (#5)
The first publish on phishing.pezkuwichain.io copied the stage directory's
0700 mode onto the web root with rsync -a, and every list answered 403 until
the modes were put back by hand, about three minutes later. The publish script
now sets modes (--chmod=D755,F644), and test-publish.sh checks the web root's
directories are 755 and the lists 644; without --chmod it fails.

master is now protected by a ruleset (pull request, "lists" required). GitHub
refuses the Actions app as a bypass actor, so the sync's github.token push
would have been rejected. The sync now pushes over a write deploy key, the
repository's only one, kept as a secret of a "sync" environment that runs for
master only; the ruleset exempts deploy keys. GitHub's host keys are pinned
in pezkuwi/github_host_keys, and the job's token drops to contents: read.
2026-09-13 17:39:09 +04:00
SatoshiQaziMuhammed 767a92904d Sync the lists with polkadot-js/phishing every day, and publish them with checks (#4)
* feat: sync the lists with polkadot-js/phishing daily, and check them before publishing

The lists had not moved since January 2026, the site that serves them was
copied by hand, and the rebrand had turned five real phishing domains into
pezkuwichain.* names, unblocking them.

- scripts/syncUpstream.mjs and sync-upstream.yml take upstream's lists every
  day, lay pezkuwi/overlay.json over them, and commit to master. A day out of
  bounds (too many sites unblocked or added, scam addresses dropped, one of our
  domains blocked, one of our entries lost) writes nothing and opens an issue.
- pezkuwi/overlay.json holds our own entries with their reasons: the five
  pezkuwichain.* names stay blocked on purpose, and our domains are protected.
- scripts/lists.mjs holds the rules; scripts/lists.test.mjs tests them and the
  sync end to end; scripts/checkLists.mjs checks the committed files, including
  that they are what sortAll writes. lists.yml runs all three.
- pezkuwi/host/ is what phishing.pezkuwichain.io runs: it pulls master hourly
  and refuses a rewritten history, a blocked own domain, a shrink over 2%, or
  shards that disagree, with a sandbox test of each refusal.
- sortAll strips a trailing dot. Upstream's 817 "scam.xyz." entries were filed
  under an empty top-level domain in all/all.json, where checkIfDenied never
  looks; 816 repeated a listed name, and prenads.xyz was blocked nowhere else.
- sortAll uses Node's own directory functions instead of @pezkuwi/dev, so the
  sync and the checks run without installing the build toolchain.
- The auto-approve, auto-merge and crosscheck workflows, and the IPFS job,
  depended on tokens and secrets this repository does not have; removed. The
  remaining workflows are pinned to commits, with no default permissions and
  a timeout on every job.

* chore(lists): first sync with polkadot-js/phishing

Written by scripts/syncUpstream.mjs from upstream bf5e7c6:
658 sites added; nodelinkapp.xyz, org.in and terra-claim.com unblocked by
upstream; the five polkadot-js domains the rebrand had renamed blocked again;
816 duplicate "scam.xyz." entries folded into their names and the stray
all/all.json gone. 54,051 blocked sites, 279 scam addresses.

* fix(lists): commit the .build shard, and refuse a shard git ignores

.gitignore held "build/", which also matched all/build/all.json, the shard of
the .build top-level domain. Every sort wrote it and no commit held it, so the
eight .build scam sites were never published; upstream has the same gap. The
directory is excluded from the ignore rule, the shard is committed, and
checkLists.mjs now fails on any shard git would ignore (with the old rule
restored it does).

Also clears the repository's lint on lists.test.mjs: imports sorted, and
node:test's describe and it calls marked void.

* test(lists): await describe and it, as the repository's lint requires

no-floating-promises requires the promises node:test's describe and it return
to be handled, and no-void forbids handling them with void. Awaited, the 25
cases run as before.
2026-09-13 17:34:51 +04:00
Kurdistan Tech Ministry c0bd03bb7c Remove immutable flag from yarn install 2026-01-18 01:19:40 +03:00
Kurdistan Tech Ministry ec5dd60ab1 Fix Master workflow to use simple build 2026-01-18 01:16:34 +03:00
Kurdistan Tech Ministry d7a0164f6c Fix GitHub Actions token configuration 2026-01-18 00:46:37 +03:00
Kurdistan Tech Ministry a4bb93cb33 feat: complete Pezkuwi rebrand
- Update phishing URL to phishing.pezkuwichain.io
- Update author to Dijital Kurdistan Tech Inst
- Update README with Pezkuwi project references
- Update IPFS reference to pezkuwichain.io
- Rebrand all package references from @polkadot to @pezkuwi
2026-01-09 04:11:37 +03:00
Tarik Gul b73a13140a Update CI checkout and setup_node to v4 (#4369) 2024-04-08 20:17:48 +03:00
Tarik Gul 3280098593 ci: add user (TarikGul) to auto-approve (#4269) 2024-02-17 03:58:22 +02:00
Jaco 80c71a5938 Bump dev deps (#3371) 2023-05-18 11:21:13 +03:00
Jaco 2e6d21ea86 Update lock wf (#3222) 2023-04-04 08:24:44 +03:00
Jaco 887bc701f1 Remove stale workflow (#3123) 2023-03-14 12:57:51 +02:00
Jaco e168a4ad3a Adjust autocheck-on-ci labels (#3121) 2023-03-14 11:31:10 +02:00
Jaco 118fb9e263 Update GH actions (#3105) 2023-03-10 08:23:03 +02:00
Jaco 718f06101a Bump dev & update gh workflows (#3075) 2023-03-03 11:21:46 +02:00
Jaco 6cb2041ef3 Ensure all wf steps are run (#3062) 2023-03-01 13:36:45 +02:00
Jaco 9126ff6149 Fix CI release workflow (#2968) 2023-02-15 09:11:33 +02:00
Jaco c9bcab40bf Use latest LTS for CI scripts (#2964) 2023-02-14 10:46:26 +02:00
Jaco 5047c14576 Pin GH create-issue action (#2893) 2023-02-02 08:23:43 +02:00
Jaco 4a0d389ff4 Bump GH actions refs (#2861) 2023-01-25 09:30:30 +02:00
Jaco 47dc14da2a Remove unused actions (#2653) 2022-12-08 09:00:58 +02:00
Jaco 1c511d65c3 Adjust token retrieval (#2647) 2022-12-07 15:08:30 +02:00
Jaco bd41170d6c Pin Github actions (#2126) 2022-08-26 17:56:43 +03:00
Jaco 3dd66ff0f5 Additional CI checks (#1754)
* Additional CI checks

* if: always()
2022-07-06 00:15:33 +03:00
Jaco 204ba9a0c4 Adjust merge labels (#1210) 2022-03-04 09:41:38 +02:00
Jaco 22e06780dd Adjust auto actions (#1209) 2022-03-04 09:35:20 +02:00
Jaco 36f0a5666f Remove checkout from auto-{approve, merge} actions (#1197) 2022-03-03 11:26:59 +02:00
Jaco 21bfc64561 Replace mergify with action (#1190) 2022-03-02 07:19:12 +02:00
Jaco b229da690e Adjust approve workflow (#1181) 2022-02-28 07:04:05 +00:00
Jaco a64ea58c55 Skip uniques test on master branch (to be deduped) (#1179) 2022-02-27 12:41:44 +02:00
Jaco 145c679de5 Skip job on non-local repo 2022-02-23 12:33:45 +02:00
Jaco c03583c09b Use jacogr/action-approve (#1163) 2022-02-23 11:56:59 +02:00
Jaco e9c5285a09 Adjust mergify label (#1109) 2022-02-15 08:50:32 +02:00
Jaco 3914adf2ba Add mergify rules (#1108) 2022-02-15 08:37:17 +02:00
Jaco 3fb56e40f9 Disable yarn scripts on CI (#1100) 2022-02-13 10:36:52 +02:00
Jaco 0ce5bb1c5a fetch-depth 0 (#895) 2022-01-04 12:15:07 +02:00
Jaco 009a0f42b7 Bump common (#750) 2021-12-01 10:07:08 +02:00
Jaco 40c3e1c8db Adjust stale schedule (#723) 2021-11-24 16:57:34 +02:00
Jaco Greeff a74fa0554f Adjust cron locks 2021-06-07 16:59:49 +03:00
Jaco Greeff 7b8105954e Adjust semgrep check 2021-06-06 22:25:03 +03:00
Jaco Greeff 344b78b4f4 No semgrep on forks 2021-06-05 14:04:48 +03:00
Jaco Greeff ab7da59fba Don't include ci in stale 2021-06-05 10:23:30 +03:00
Jaco Greeff 2a688eb13d push-master.yml adjust skip 2021-06-05 09:38:14 +03:00
Jaco Greeff 2423d7a89a semgrep.yml on PR 2021-06-05 09:19:53 +03:00
Jaco Greeff 4ef7bbc102 semgrep.yml update 2021-06-04 17:58:16 +03:00
Jaco Greeff 33e505e30d semgrep ci skip 2021-06-04 14:00:50 +03:00
Jaco Greeff 7b5f6a9e4b semgrep on master only 2021-06-04 11:38:26 +03:00
Jaco Greeff 9a4de9b557 semgrep only for non-forked 2021-06-04 08:35:54 +03:00