[iptv-checker]: Bump to 1.26.2171636 and switch to external source - #216
Conversation
This comment has been minimized.
This comment has been minimized.
Updates the listing from 1.26.1741204 to 1.26.2171636 and converts it from a
standard (full source) plugin to an external one.
WHY EXTERNAL. The plugin now ships five Python modules rather than one, so a
standard listing means copying and re-syncing all of them on every release. It
also vendors a notification client that is hash-pinned in its own repository,
and a copied version here would be a second copy with nothing gating it against
drift. External mode reuses the release archive that is already built, checksummed
and audited upstream, which is also what CONTRIBUTING recommends.
source_url contains {version} twice, because this project's tags carry a v
prefix and the asset name embeds the version. Verified before submitting: the
resolved URL returns HTTP 200, and six external plugins already listed here use
the same two-placeholder shape.
WHAT CHANGED IN THE PLUGIN SINCE 1.26.1741204
- A channel is now judged by ALL of its streams. Results are recorded per
stream while rename, move and delete act per channel, and the previous
selection matched if any single stream failed. A channel whose primary timed
out but whose backup played was therefore eligible for renaming, moving and
permanent deletion. On the install this was measured against, that affected
21 of the 22 channels the old rule called dead.
- Group selection replaced by one list plus a mode, matching how other plugins
present it. Old values are read automatically until the new setting is saved.
- Three new opt-in detectors: frozen video, silent audio, and placeholder files,
the last of which costs no extra probe time.
- An HTML report written to /config/iptv_checker/, grouped by what the operator
should do about each finding, optionally emailed through Newsflasharr.
- The webhook feature is removed, replaced by that report delivery.
- Validate Settings now reports how many groups will be checked and fits inside
the toast, which previously clipped its own contents.
- The README is now a short overview with the detail moved to a user guide.
Fields and actions are no longer duplicated in this manifest; they come from the
plugin's own manifest inside the archive.
NOTE ON THE LEFTOVER SOURCE FILES. plugin.py and __init__.py are left in place
rather than deleted in this pull request. External mode ignores them, so they are
inert, and removing them put .py paths in the diff, which made the CodeQL job
select Python and then fail with nothing to extract. Every plugin-specific check
passed in that run: title, manifest validation, antivirus and authorisation.
Happy to remove them in a follow-up, or in this one if you would rather the
CodeQL result be handled a different way.
f426299 to
f8f25bf
Compare
This comment has been minimized.
This comment has been minimized.
1 similar comment
This comment has been minimized.
This comment has been minimized.
|
@sethwv What the PR does: bumps iptv-checker from 1.26.1741204 to 1.26.2171636 and converts it from a standard listing to an external one. It touches exactly two files, plugins/iptv-checker/plugin.json and plugins/iptv-checker/README.md. It adds and changes no Python at all. Every plugin-specific check passes: validate-title, validate-plugin (iptv-checker), clamav-scan, detect-changes and report. close-unauthorized is skipped, so authorship is fine. The only failure is codeql-analyze, and Plugin PR Check then fails because it gates on that result. Why I think it is not this PR:
I cannot see the Security tab on this repo, so I cannot tell which file or rule is producing the findings. If they are in another plugin's existing code, is there anything I should do on my side, or is this something to be cleared centrally? |
|
Correcting myself: the CodeQL failure is caused by this pull request, and the two findings are in my own plugin. Sorry for the noise, @sethwv. The validation comment above names them and I read past it:
What threw me is that the path carries an Both findings are the same construct in two places, the scheduler election lock and its reclaim guard: os.open(lock_path, os.O_CREAT | os.O_EXCL | os.O_WRONLY, 0o644)
I will change both, cut a new release and point |
The two py/overly-permissive-file results reported on this pull request are in the plugin's own source, which CodeQL now sees because external mode extracts the release archive before scanning. Both are fixed upstream: the scheduler election lock files are created 0o600 instead of world readable. A third creation site that used the builtin open(), and so took the process umask, was switched to os.open at the same mode.
|
Very welcome to use this existing PR or a new one. Just let me know, or close this one out if you choose to proceed with a new one. |
The two py/overly-permissive-file results reported on this pull request are in the plugin's own source, which CodeQL sees because external mode extracts the release archive before scanning. Both are fixed upstream: the scheduler election lock files are now created 0o600 rather than world readable. A third creation site that used the builtin open(), and so took the process umask, was switched to os.open at the same mode. The previous commit on this branch, b641290, is empty. Its message claims this bump but the upload sent the file back unchanged.
This comment has been minimized.
This comment has been minimized.
Plugin Validation ResultsModified plugins: 1 Plugin:
|
| Check | Status | Details |
|---|---|---|
| Required fields | ✅ | All required fields present |
| Release artifact | ✅ | Artifact reachable at resolved URL |
| Maintainers | ✅ | PiratesIRC |
| License | ✅ | MIT - MIT License |
| Permission | ✅ | You have permission to modify this plugin |
| Version | ✅ | 1.26.2181303 |
| Version bump | ✅ | 1.26.1741204 → 1.26.2181303 |
View release v1.26.2181303 on GitHub
🎉 All validation checks passed!
This PR modifies 1 plugin(s) and all checks have passed.
Other plugins by PiratesIRC in this repository (6)
| Plugin | Slug | Version |
|---|---|---|
| Channel Mapparr | channel-mapparr |
1.26.2170831 |
| EPG Janitor | epg-janitor |
1.26.1791309 |
| Event Channel Managarr | event-channel-managarr |
1.26.1711720 |
| Lineuparr | lineuparr |
1.26.2171315 |
| Newsflasharr | newsflasharr |
1.26.2171427 |
| Stream-Mapparr | stream-mapparr |
1.26.2141957 |
b4efca1
into
Dispatcharr:main
|
Fixed and green. All validation checks pass, including Upstream release v1.26.2181303 creates every scheduler election lock file with mode Two notes for the record:
|
[iptv-checker]: Bump to 1.26.2171636 and switch to external source
Updates the listing from 1.26.1741204 to 1.26.2171636 and converts it from a
standard (full source) plugin to an external one.
WHY EXTERNAL. The plugin now ships five Python modules rather than one, so a
standard listing means copying and re-syncing all of them on every release. It
also vendors a notification client that is hash-pinned in its own repository,
and a copied version here would be a second copy with nothing gating it against
drift. External mode reuses the release archive that is already built, checksummed
and audited upstream, which is also what CONTRIBUTING recommends.
source_url contains {version} twice, because this project's tags carry a v
prefix and the asset name embeds the version. Verified before submitting: the
resolved URL returns HTTP 200, and six external plugins already listed here use
the same two-placeholder shape.
WHAT CHANGED IN THE PLUGIN SINCE 1.26.1741204
stream while rename, move and delete act per channel, and the previous
selection matched if any single stream failed. A channel whose primary timed
out but whose backup played was therefore eligible for renaming, moving and
permanent deletion. On the install this was measured against, that affected
21 of the 22 channels the old rule called dead.
present it. Old values are read automatically until the new setting is saved.
the last of which costs no extra probe time.
should do about each finding, optionally emailed through Newsflasharr.
the toast, which previously clipped its own contents.
Fields and actions are no longer duplicated in this manifest; they come from the
plugin's own manifest inside the archive.
NOTE ON THE LEFTOVER SOURCE FILES. plugin.py and init.py are left in place
rather than deleted. External mode ignores them, so they are inert, and this
keeps the change minimal. Happy to remove them here or in a follow-up, whichever
you prefer.
ON THE CODEQL RESULT. It fails on this pull request, and I do not believe it is
caused by this change. This pull request touches no Python at all, only
plugin.json and README.md, while the codeql-analyze job runs
find plugins -name '*.py'and analyses the whole plugins tree rather than thechanged folder. PR #207, a different plugin from a different author, is failing
the same check right now. Every plugin-specific check here passed: validate-title,
validate-plugin, clamav-scan and close-unauthorized.
I first assumed the failure came from deleting the .py files in the original
version of this pull request, restored them, and the check failed again, so that
explanation was wrong and is not the cause.