Skip to content

Add ReferenceVerify plugin (OJS 3.3, 3.4, 3.5) - #558

Open
cuneytozdemir wants to merge 1 commit into
pkp:mainfrom
cuneytozdemir:add-referenceverify
Open

cuneytozdemir wants to merge 1 commit into
pkp:mainfrom
cuneytozdemir:add-referenceverify

Conversation

@cuneytozdemir

Copy link
Copy Markdown

This adds ReferenceVerify, a generic plugin that lets editors check the references and in-text citations of a submission file from the editorial workflow (fabricated or mismatched references, retracted works, citations missing from the reference list).

  • Code: https://github.com/cuneytozdemir/referenceverify-ojs (GPL v3)
  • 1.2.1.0 for OJS 3.3 — branch stable-3_3_0, release v1_2_1-0
  • 1.2.1.1 for OJS 3.4 and 3.5 — branch main, release v1_2_1-1
  • Tested on OJS 3.3.0.18, 3.4.0.11, 3.5.0.4 and 3.5.0.5 (clean install, Upgrade from earlier versions, disable/uninstall).

External service and data. The plugin talks to referenceverify.com only when an editor clicks one of its buttons; opening the workflow sends nothing. The data sent for each action (the chosen file; the submission ID for "Get results"; title, abstract and author names for reviewer suggestions) is listed in the plugin description, the settings screen and the README. Nothing is written to OJS automatically, and the server address cannot be changed by journal managers (only via config.inc.php for testing). A ReferenceVerify account and a per-journal plugin key are required.

The XML validates against plugins.xsd, and both package URLs resolve with the listed MD5 sums. Happy to make any changes the review asks for.

…3.5)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
jardakotesovec added a commit to jardakotesovec/pkp-e2e that referenced this pull request Oct 12, 2026
…am can ask the bot to review a third-party plugin submitted to PKP's Plugin Gallery (a pkp/plugin-gallery PR) to the bar of the other reviews: it works, it is secure, nothing in it is dodgy. MAINTENANCE "Plugin review": the request (hosts the plugin may reach only when it names them), integrity (bin/plugin-fetch.js: MD5, a listed-before-unpacked archive, the package against its tagged source and the previous gallery release, composer audit on the lock file, a hot-spot map; nothing from the package runs), the read as the gate (briefs/plugin-read.md, the security questions by reference to regression-read step 3), the drive in the sandbox (briefs/plugin-drive.md: install through the app's own gallery path, settings, the main flow, the read's suspicions, the core with it on, removal, snapshots, egress and logs), a private report in pkp-e2e-sec/plugin-reviews posted in the thread, tear-down. harness.md "The plugin sandbox": a rootless Podman pod owned by the credential-less user e2e-plugin (OJS stable-3_5_0 without the overlays, PKP's dataset, Postgres, Mailpit, a resolver that logs and answers no name), every outbound packet of that user logged and dropped by the nft table plugin_sandbox unless plugin-egress allowed the host for a few hours; sandbox/vm/setup.sh is the idempotent root setup (installed on the VM 2026-10-12), sandbox/pod.sh the pod, bin/plugin-sandbox.js the bot's side (stage, allow, up, snapshot, diff, egress, logs, down, purge, canary). The canary plugin tried the bot's files, /etc/shadow, DNS, HTTP by name and address, the host's Postgres, SSH and Mailpit, and a write outside its folder: every wall held. Dry run on the VM with pkp/plugin-gallery#558: integrity clean, installed through the gallery from the pod, the diff showed the plugin's files and versions row, an allowed host reached and another dropped, down withdrew the allowance. dataset.js: cleanDump() split out of loadDump() for the sandbox's load. CLAUDE.md, RUNBOOK "What goes where" and the briefs README point at it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant