update
This commit is contained in:
@@ -1,33 +0,0 @@
|
||||
# Codebase Map — cmsPRO
|
||||
|
||||
> Generated: 2026-04-26 | Auto-generated by /paul:map-codebase
|
||||
|
||||
## Documents
|
||||
|
||||
| File | Contents |
|
||||
|------|---------|
|
||||
| [overview.md](overview.md) | Project summary, modules, entry points, refactoring status |
|
||||
| [stack.md](stack.md) | PHP runtime, database, frontend libs, server config, external services |
|
||||
| [architecture.md](architecture.md) | Directory map, patterns, routing, caching, namespaces |
|
||||
| [conventions.md](conventions.md) | Naming, class patterns, PHPDoc, return types, DB access |
|
||||
| [testing.md](testing.md) | PHPUnit setup, test structure, stubs, adding new tests |
|
||||
| [integrations.md](integrations.md) | Email, geolocation, analytics, update server, file manager |
|
||||
| [concerns.md](concerns.md) | Technical debt prioritized CRITICAL → HIGH → MEDIUM → LOW |
|
||||
|
||||
## Quick Reference
|
||||
|
||||
- **Architecture**: Controls → (deprecated) Factories → Domain Repositories → Medoo/MySQL
|
||||
- **New code goes in**: `autoload/Domain/{Entity}/{Entity}Repository.php`
|
||||
- **Tests go in**: `tests/Unit/Domain/{Entity}/{Entity}RepositoryTest.php`
|
||||
- **Global helper**: `\S::method()` (legacy) or `\Shared\Helpers\Helpers::method()` (preferred)
|
||||
- **Templates**: `templates/{module}/template.php` (user override: `templates_user/`)
|
||||
- **CSRF**: `\Shared\Security\CsrfToken::getToken()` / `::validate($token)`
|
||||
- **Cache**: `\Shared\Cache\CacheHandler::store($key, $data, $ttl)` / `::fetch($key)`
|
||||
|
||||
## Top Issues to Fix
|
||||
|
||||
1. **CRITICAL**: `unserialize()` on cookie — `admin/ajax/pages.php:36,49`
|
||||
2. **CRITICAL**: Path traversal in updates — `autoload/admin/factory/class.Update.php:76-80`
|
||||
3. **HIGH**: Missing input validation everywhere
|
||||
4. **HIGH**: Password hash in auto-login cookie — `admin/index.php:59-61`
|
||||
5. **MEDIUM**: God class Helpers.php (1220 lines) — needs splitting
|
||||
12
.paul/codebase/db_schema.md
Normal file
12
.paul/codebase/db_schema.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# Database Schema
|
||||
|
||||
> Schemat bazy danych — tabele, kolumny, FK, indeksy.
|
||||
> Generowany automatycznie przez /paul:map-codebase, aktualizowany przez apply-phase.
|
||||
|
||||
## Engine
|
||||
|
||||
MySQL — konfiguracja w `config.php`, abstrakcja Medoo 1.7.3 (`libraries/medoo/medoo.php`), prefix tabel: `pp_`
|
||||
|
||||
## Tables
|
||||
|
||||
> Uruchom `/paul:map-codebase` aby wypełnić ten plik szczegółowym schematem tabel.
|
||||
@@ -1,54 +0,0 @@
|
||||
# cmsPRO — Project Overview
|
||||
|
||||
> Generated: 2026-04-26 | Milestone: v0.1 Refaktoryzacja
|
||||
|
||||
## What is cmsPRO?
|
||||
|
||||
cmsPRO is a Polish-language PHP CMS with a **hybrid transitional architecture**. The codebase is actively being refactored from a legacy procedural/OOP mixed approach toward a clean Domain-Driven Design structure with Repository pattern.
|
||||
|
||||
## Core Capabilities
|
||||
|
||||
| Module | Description |
|
||||
|--------|-------------|
|
||||
| Articles | CRUD, multi-language, versioning, scheduling, galleries, tags, SEO |
|
||||
| Pages | Static pages with layouts, caching, inline editing |
|
||||
| Newsletter | Subscription, templates, cron-based batch sending |
|
||||
| Layouts | HTML/CSS template system with Savant3 rendering |
|
||||
| Users | Admin users, privileges matrix, 2FA support |
|
||||
| Languages | Multi-language content, URL routing, session caching |
|
||||
| Banners | Homepage banners with multi-language support |
|
||||
| Scontainers | Reusable content blocks/widgets |
|
||||
| Authors | Author management for articles |
|
||||
| SEO | Meta tags, slugs, noindex, robots.txt, sitemap |
|
||||
| File Manager | Upload, browse, thumbnail generation |
|
||||
| Settings | DB-stored site config, WebP toggle, lazy loading |
|
||||
| Updates | Versioned ZIP updates with license validation |
|
||||
| Backups | DB backup/restore utilities |
|
||||
|
||||
## Entry Points
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| `index.php` | Frontend entry point and router |
|
||||
| `admin/index.php` | Admin panel entry point |
|
||||
| `ajax.php` | Frontend AJAX handler |
|
||||
| `admin/ajax.php` | Admin AJAX handler (routes to `admin/ajax/*.php`) |
|
||||
| `api.php` | API endpoint |
|
||||
| `cron.php` | Scheduled tasks (newsletter batch sending) |
|
||||
| `download.php` | File download handler |
|
||||
|
||||
## Current Refactoring Status
|
||||
|
||||
The project is in **Phase 5 of Milestone v0.1 Refaktoryzacja**.
|
||||
|
||||
Migration pattern:
|
||||
- **Done**: Domain repositories created for all 10 main entities
|
||||
- **Done**: Factory classes converted to deprecated wrappers delegating to repositories
|
||||
- **In progress**: SeoAdditional, Cron, Releases domains
|
||||
- **Pending**: Remove factory layer, inject repositories directly into controls
|
||||
|
||||
## Version
|
||||
|
||||
- Current app version: **1.695**
|
||||
- Update channel: stable/beta via `updates/` ZIP packages
|
||||
- License validation via `pp_update_licenses` table
|
||||
4
.paul/codebase/todo.md
Normal file
4
.paul/codebase/todo.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# TODO
|
||||
|
||||
> Luźny parking pomysłów, rzeczy do sprawdzenia, rzeczy które mogą nigdy nie być wdrożone.
|
||||
> Nie wymaga formalności — wrzucaj co chcesz.
|
||||
3
.paul/docs/API.md
Normal file
3
.paul/docs/API.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# API
|
||||
|
||||
> Endpointy, kontrakty request/response, autentykacja.
|
||||
3
.paul/docs/ARCHITECTURE.md
Normal file
3
.paul/docs/ARCHITECTURE.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# ARCHITECTURE
|
||||
|
||||
> Struktura klas, modulow, przeplywow i zaleznosci w projekcie.
|
||||
3
.paul/docs/DB_SCHEMA.md
Normal file
3
.paul/docs/DB_SCHEMA.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# DB_SCHEMA
|
||||
|
||||
> Schemat bazy danych — tabele, kolumny, FK, indeksy.
|
||||
3
.paul/docs/DECISIONS.md
Normal file
3
.paul/docs/DECISIONS.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# DECISIONS
|
||||
|
||||
> Kluczowe decyzje techniczne i ich uzasadnienia.
|
||||
3
.paul/docs/STACK.md
Normal file
3
.paul/docs/STACK.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# STACK
|
||||
|
||||
> Stack technologiczny, wersje, zaleznosci, srodowisko.
|
||||
3
.paul/docs/TECH_CHANGELOG.md
Normal file
3
.paul/docs/TECH_CHANGELOG.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# TECH_CHANGELOG
|
||||
|
||||
> Chronologiczny log zmian technicznych — co i dlaczego.
|
||||
3
.paul/docs/TODO.md
Normal file
3
.paul/docs/TODO.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# TODO
|
||||
|
||||
> Luzny parking pomyslow, rzeczy do sprawdzenia.
|
||||
2
.paul/governance/governance_2026-04-25.jsonl
Normal file
2
.paul/governance/governance_2026-04-25.jsonl
Normal file
@@ -0,0 +1,2 @@
|
||||
{"ts":"2026-04-25T21:59:21Z","tool":"Bash","cmd":"diff -q \"C:/visual studio code/projekty/cmsPRO/autoload/admin/controls/class.Update.php\" \"C:/visual studio code/projekty/cmstest.pagedev.pl/autoload/admin/controls/class.Update.php\" 2>&1; echo \"-","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T21:59:48Z","tool":"Bash","cmd":"diff -q \"C:/visual studio code/projekty/cmsPRO/autoload/Shared/Helpers/Helpers.php\" \"C:/visual studio code/projekty/cmstest.pagedev.pl/autoload/Shared/Helpers/Helpers.php\" 2>&1; echo \"---\"; diff","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
84
.paul/governance/governance_2026-04-26.jsonl
Normal file
84
.paul/governance/governance_2026-04-26.jsonl
Normal file
@@ -0,0 +1,84 @@
|
||||
{"ts":"2026-04-25T22:00:08Z","tool":"Bash","cmd":"curl -sS \"http://www.cmspro.project-dc.pl/updates/versions.php\" 2>&1 | head -20; echo \"===NO KEY===\"; curl -sS \"http://www.cmspro.project-dc.pl/updates/versions.php?key=test123\" 2>&1 | head -20\","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:00:20Z","tool":"Bash","cmd":"curl -sSI \"http://www.cmspro.project-dc.pl/updates/versions.php?key=test\" 2>&1 | grep -i -E \"location|HTTP/\"; echo \"---FOLLOW---\"; curl -sSL \"http://www.cmspro.project-dc.pl/updates/versions.ph","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:39:39Z","tool":"Bash","cmd":"wc -l \"C:\\\\visual studio code\\\\projekty\\\\cmsPRO/autoload/Domain/Articles/ArticlesRepository.php\" \"C:\\\\visual studio code\\\\projekty\\\\cmsPRO/autoload/Domain/Pages/PagesRepository.php\" \"","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:40:05Z","tool":"Bash","cmd":"for file in /c/visual\\\\ studio\\\\ code/projekty/cmsPRO/autoload/Domain/*/*.php; do wc -l \"$file\"; done\"},\"tool_response\":{\"stdout\":\"648 /c/visual studio code/projekty/cmsPRO/autoload/Domain","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:40:27Z","tool":"Bash","cmd":"wc -l \"C:\\\\visual studio code\\\\projekty\\\\cmsPRO/admin/ajax.php\" \"C:\\\\visual studio code\\\\projekty\\\\cmsPRO/admin/ajax/articles.php\" \"C:\\\\visual studio code\\\\projekty\\\\cmsPRO/admi","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:42:47Z","tool":"Bash","cmd":"mkdir -p \"C:/visual studio code/projekty/cmsPRO/.paul/codebase\"\",\"description\":\"Create .paul/codebase directory\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\"\",\"interrupted\":false,\"isIm","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:43:05Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\codebase\\\\overview.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:43:22Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\codebase\\\\stack.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:43:51Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\codebase\\\\architecture.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:44:20Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\codebase\\\\conventions.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:44:39Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\codebase\\\\testing.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:44:55Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\codebase\\\\integrations.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:45:39Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\codebase\\\\concerns.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:45:56Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\codebase\\\\README.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:46:01Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/cmsPRO\" && git add .paul/codebase/ && git commit -m \"$(cat <<'EOF'\\ndocs(codebase): mapa kodu wygenerowana przez /paul:map-codebase\\n\\n7 dokumentów w .paul/co","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:49:08Z","tool":"Bash","cmd":"mkdir -p \"/c/visual studio code/projekty/cmsPRO/.paul/phases/05-domain-seoadditional-cron-releases\"\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\"\",\"interrupted\":false,\"isImage\":false,\"no","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:50:01Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\phases\\\\05-domain-seoadditional-cron-releases\\\\05-01-PLAN.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:50:13Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:50:23Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:50:27Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:51:44Z","tool":"Bash","cmd":"mkdir -p \"/c/visual studio code/projekty/cmsPRO/autoload/Domain/SeoAdditional\"\",\"description\":\"Create SeoAdditional domain directory\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\"\",\"inter","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:51:54Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\autoload\\\\Domain\\\\SeoAdditional\\\\SeoAdditionalRepository.php","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:51:59Z","tool":"Bash","cmd":"mkdir -p \"C:/visual studio code/projekty/cmsPRO/autoload/Domain/Cron\"\",\"description\":\"Create Domain/Cron directory\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\"\",\"interrupted\":false,\"i","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:52:04Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\autoload\\\\admin\\\\factory\\\\class.SeoAdditional.php","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:52:11Z","tool":"Bash","cmd":"php -l \"/c/visual studio code/projekty/cmsPRO/autoload/Domain/SeoAdditional/SeoAdditionalRepository.php\" && php -l \"/c/visual studio code/projekty/cmsPRO/autoload/admin/factory/class.SeoAdditional.","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:52:31Z","tool":"Bash","cmd":"mkdir -p '/c/visual studio code/projekty/cmsPRO/autoload/Domain/Releases'\",\"description\":\"Create Domain\\\\Releases directory\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\"\",\"interrupted\":","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:52:47Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\autoload\\\\Domain\\\\Releases\\\\ReleasesRepository.php","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:53:04Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\autoload\\\\Domain\\\\Cron\\\\CronRepository.php","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:53:10Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\autoload\\\\class.Cron.php","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:53:11Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\autoload\\\\Domain\\\\Releases\\\\UpdateRepository.php","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:53:16Z","tool":"Bash","cmd":"php -l \"C:/visual studio code/projekty/cmsPRO/autoload/Domain/Cron/CronRepository.php\" && php -l \"C:/visual studio code/projekty/cmsPRO/autoload/class.Cron.php\"\",\"description\":\"PHP syntax chec","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:53:20Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\autoload\\\\admin\\\\factory\\\\class.Releases.php","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:53:24Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\autoload\\\\admin\\\\factory\\\\class.Update.php","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:53:31Z","tool":"Bash","cmd":"php -l '/c/visual studio code/projekty/cmsPRO/autoload/Domain/Releases/ReleasesRepository.php' && php -l '/c/visual studio code/projekty/cmsPRO/autoload/Domain/Releases/UpdateRepository.php' && php -l","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:54:02Z","tool":"Bash","cmd":"php -l \"C:/visual studio code/projekty/cmsPRO/autoload/Domain/SeoAdditional/SeoAdditionalRepository.php\" && php -l \"C:/visual studio code/projekty/cmsPRO/autoload/Domain/Cron/CronRepository.php\" &","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:54:10Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:54:16Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:55:41Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\phases\\\\05-domain-seoadditional-cron-releases\\\\05-01-SUMMARY.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:56:02Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\changelog\\\\2026-04-26.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:56:08Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\changelog\\\\2026-04-26.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:56:17Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\PROJECT.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:56:23Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\PROJECT.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:56:28Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\PROJECT.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:56:34Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:56:39Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:56:58Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:57:05Z","tool":"Bash","cmd":"cd \"/c/visual studio code/projekty/cmsPRO\" && git add autoload/Domain/SeoAdditional/SeoAdditionalRepository.php autoload/Domain/Cron/CronRepository.php autoload/Domain/Releases/ReleasesRepository.ph","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:57:14Z","tool":"Bash","cmd":"cd \"/c/visual studio code/projekty/cmsPRO\" && git commit -m \"$(cat <<'EOF'\\nfeat(05-domain-seoadditional-cron-releases): Domain layer kompletny — SeoAdditional + Cron + Releases\\n\\nPhase 5 com","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:57:45Z","tool":"Bash","cmd":"cd \"/c/visual studio code/projekty/cmsPRO\" && php vendor/bin/phpunit 2>&1\",\"description\":\"Run PHPUnit tests\"},\"tool_response\":{\"stdout\":\"PHPUnit 10.5.63 by Sebastian Bergmann and contribut","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:57:47Z","tool":"Bash","cmd":"cd \"/c/visual studio code/projekty/cmsPRO\" && git log --oneline -5\",\"description\":\"Recent commits for convention reference\"},\"tool_response\":{\"stdout\":\"f7c7c0b feat(05-domain-seoadditional","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:57:56Z","tool":"Bash","cmd":"cd \"/c/visual studio code/projekty/cmsPRO\" && head -60 docs/PROJECT_STRUCTURE.md\",\"description\":\"Check PROJECT_STRUCTURE.md for Domain repos section\"},\"tool_response\":{\"stdout\":\"# Struktur","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:58:03Z","tool":"Bash","cmd":"cd \"/c/visual studio code/projekty/cmsPRO\" && grep -n \"Domain\\\\|Faza\\\\|fase\\\\|Phase\" docs/PROJECT_STRUCTURE.md | head -40\",\"description\":\"Find Domain repos section in PROJECT_STRUCTURE.m","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:58:19Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\docs\\\\PROJECT_STRUCTURE.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:58:27Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\updates\\\\versions.php","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:58:35Z","tool":"Bash","cmd":"cd \"/c/visual studio code/projekty/cmsPRO\" && git add docs/PROJECT_STRUCTURE.md updates/versions.php && git commit -m \"$(cat <<'EOF'\\nbuild(update): paczka 1.696 — Domain layer kompletny (Phase ","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:58:43Z","tool":"Bash","cmd":"cd \"/c/visual studio code/projekty/cmsPRO\" && git tag v1.696\",\"description\":\"Create version tag\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\"\",\"interrupted\":false,\"isImage\":false,\"no","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:58:51Z","tool":"Bash","cmd":"cd \"/c/visual studio code/projekty/cmsPRO\" && powershell -ExecutionPolicy Bypass -File ./build-update.ps1 -FromTag v1.695 -ToTag v1.696 -ChangelogEntry \"NEW - Domain layer kompletny: SeoAdditional,","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:59:00Z","tool":"Bash","cmd":"cd \"/c/visual studio code/projekty/cmsPRO\" && git add \"updates/1.60/ver_1.696.zip\" \"updates/1.60/ver_1.696_manifest.json\" && git commit --amend --no-edit\",\"description\":\"Amend commit to incl","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T22:59:10Z","tool":"Bash","cmd":"cd \"/c/visual studio code/projekty/cmsPRO\" && git push && git push --tags 2>&1\",\"timeout\":30000,\"description\":\"Push commits and tags\"},\"tool_response\":{\"stdout\":\"remote: . Processing 1 r","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:13:47Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\init-project.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:13:53Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\init-project.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:13:59Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\map-codebase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:14:14Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\map-codebase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:14:23Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\map-codebase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:14:27Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\map-codebase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:14:38Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\map-codebase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:15:07Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\map-codebase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:15:19Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\map-codebase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:15:26Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\map-codebase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:15:44Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\map-codebase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:15:49Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\map-codebase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:16:01Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\map-codebase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:16:12Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\map-codebase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:16:25Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\apply-phase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:16:39Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\apply-phase.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:16:44Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\templates\\\\CLAUDE-TEMPLATE.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:16:49Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\templates\\\\CLAUDE-TEMPLATE.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:16:59Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\codebase\\\\todo.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:17:03Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\.paul\\\\codebase\\\\db_schema.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:17:08Z","tool":"Bash","cmd":"rm -rf \"C:/visual studio code/projekty/cmsPRO/.paul/docs\" && rm -f \"C:/visual studio code/projekty/cmsPRO/.paul/codebase/overview.md\" \"C:/visual studio code/projekty/cmsPRO/.paul/codebase/README.","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:17:27Z","tool":"Edit","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\paul-framework\\\\workflows\\\\init-project.md","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:24:30Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\autoload\\\\Domain\\\\Releases\\\\UpdateRepository.php","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:33:15Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\updates\\\\1.60\\\\ver_1.696_manifest.json","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
{"ts":"2026-04-25T23:43:51Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\cmsPRO\\\\build-update.ps1","cwd":"/c/visual studio code/projekty/cmsPRO"}
|
||||
379
.paul/phases/04h-hotfix-https-updates/04h-01-PLAN.md
Normal file
379
.paul/phases/04h-hotfix-https-updates/04h-01-PLAN.md
Normal file
@@ -0,0 +1,379 @@
|
||||
---
|
||||
phase: 04h-hotfix-https-updates
|
||||
plan: 01
|
||||
type: execute
|
||||
wave: 1
|
||||
depends_on: []
|
||||
files_modified:
|
||||
- autoload/Shared/Helpers/Helpers.php
|
||||
- autoload/admin/factory/class.Update.php
|
||||
- C:/visual studio code/projekty/cmstest.pagedev.pl/autoload/class.S.php
|
||||
- C:/visual studio code/projekty/cmstest.pagedev.pl/autoload/admin/factory/class.Update.php
|
||||
- updates/cmsPro.zip
|
||||
- updates/1.50/ver_1.519.zip
|
||||
- updates/**/ver_*.zip (audit + warunkowy patch)
|
||||
- updates/**/ver_*_manifest.json (regeneracja checksum_zip jeśli paczka patchowana)
|
||||
autonomous: false
|
||||
delegation: off
|
||||
---
|
||||
|
||||
<objective>
|
||||
## Goal
|
||||
Naprawić mechanizm wykrywania nowych wersji aktualizacji (HTTP 301 → HTTPS bug) w trzech warstwach:
|
||||
1. Bieżący kod cmsPRO (źródło)
|
||||
2. Instancja testowa cmstest.pagedev.pl (działający bug)
|
||||
3. Wszystkie dystrybuowane paczki (cmsPro.zip baseline + ver_*.zip), aby nowe instalacje cmsPRO nigdy nie utknęły z tym samym problemem
|
||||
|
||||
## Purpose
|
||||
Serwer cmspro.project-dc.pl został przeniesiony z HTTP na HTTPS i odpowiada `301 Moved Permanently`.
|
||||
PHP-owy `file_get_contents()` bez kontekstu nie podąża za redirectem, więc zwraca HTML 301 zamiast listy wersji.
|
||||
Skutkiem `(float)max($html_lines)` daje 0 i `S::get_new_version()` nigdy nie pokazuje nowszej wersji niż zainstalowana.
|
||||
Aktualnie WSZYSTKIE instancje cmsPRO zainstalowane przed migracją serwera są zablokowane.
|
||||
|
||||
## Output
|
||||
- Patch HTTP→HTTPS w kodzie źródłowym i w instancji testowej
|
||||
- Audit-report listujący każdą paczkę aktualizacji zawierającą `http://www.cmspro.project-dc.pl`
|
||||
- Patchowane paczki ZIP + zaktualizowane manifesty (SHA256)
|
||||
- ver_1.519.zip rozszerzony o poprawione class.S.php i class.Update.php — "kotwica fixa" dla instancji przechodzących przez tę wersję
|
||||
- Lista plików do uploadu na cmspro.project-dc.pl (dla użytkownika)
|
||||
</objective>
|
||||
|
||||
<context>
|
||||
## Project Context
|
||||
@.paul/PROJECT.md
|
||||
@.paul/STATE.md
|
||||
@.paul/ROADMAP.md
|
||||
|
||||
## Source Files
|
||||
@autoload/Shared/Helpers/Helpers.php
|
||||
@autoload/admin/factory/class.Update.php
|
||||
@build-update.ps1
|
||||
</context>
|
||||
|
||||
<acceptance_criteria>
|
||||
|
||||
## AC-1: Kod źródłowy cmsPRO używa HTTPS
|
||||
```gherkin
|
||||
Given pliki autoload/Shared/Helpers/Helpers.php oraz autoload/admin/factory/class.Update.php
|
||||
When zostają zaktualizowane
|
||||
Then nie zawierają już ciągu "http://www.cmspro.project-dc.pl"
|
||||
And zawierają "https://www.cmspro.project-dc.pl"
|
||||
```
|
||||
|
||||
## AC-2: Instancja testowa jest odblokowana
|
||||
```gherkin
|
||||
Given instancja w C:\visual studio code\projekty\cmstest.pagedev.pl\ na wersji 1.519
|
||||
When pliki autoload/class.S.php i autoload/admin/factory/class.Update.php zostają poprawione (http→https)
|
||||
And sesja "new-version" zostaje wyczyszczona (przez wylogowanie/restart sesji)
|
||||
Then panel admina pokazuje nową wersję > 1.519
|
||||
And klik "Aktualizuj" pobiera kolejną paczkę bez błędu
|
||||
```
|
||||
|
||||
## AC-3: Wszystkie paczki dystrybucyjne wolne od bug-a
|
||||
```gherkin
|
||||
Given katalog updates/ z plikami cmsPro.zip oraz updates/**/ver_*.zip
|
||||
When skrypt audit przeskanuje każdą paczkę
|
||||
Then żadna paczka nie zawiera pliku z ciągiem "http://www.cmspro.project-dc.pl"
|
||||
And paczki które zawierały bug zostały sparowane z patched-wersjami
|
||||
And manifesty (jeśli istnieją) mają zaktualizowane checksum_zip (SHA256) zgodne z nowym ZIP
|
||||
```
|
||||
|
||||
## AC-4: ver_1.519.zip jest "kotwicą fixa"
|
||||
```gherkin
|
||||
Given oryginalny ver_1.519.zip zawiera tylko class.Articles.php
|
||||
When zostaje rozszerzony o poprawione autoload/class.S.php i autoload/admin/factory/class.Update.php
|
||||
Then każda nowa instancja cmsPRO przechodząca update do 1.519 dostaje plik z https://
|
||||
And tym samym może wykryć i pobrać kolejne aktualizacje
|
||||
```
|
||||
|
||||
## AC-5: Audit report dostarczony
|
||||
```gherkin
|
||||
Given wykonany skrypt audit
|
||||
When skanowanie się kończy
|
||||
Then powstaje plik .paul/phases/04h-hotfix-https-updates/audit-report.md
|
||||
Z listą: każda paczka, jakie zawiera podejrzane pliki, czy zawiera http://, akcja podjęta (patched|skipped|N/A)
|
||||
```
|
||||
|
||||
</acceptance_criteria>
|
||||
|
||||
<tasks>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 1: Patch kodu źródłowego cmsPRO (HTTP → HTTPS)</name>
|
||||
<files>
|
||||
autoload/Shared/Helpers/Helpers.php,
|
||||
autoload/admin/factory/class.Update.php
|
||||
</files>
|
||||
<action>
|
||||
Zamień wszystkie wystąpienia `http://www.cmspro.project-dc.pl` → `https://www.cmspro.project-dc.pl`
|
||||
w obu plikach (Edit replace_all).
|
||||
|
||||
Plików łącznie ~6 wystąpień:
|
||||
- Helpers.php:456 (versions.php)
|
||||
- factory/class.Update.php: versions.php, .zip, _manifest.json, _sql.txt, _files.txt
|
||||
|
||||
NIE dodawaj kontekstu stream (follow_location=1) — wystarczy zmiana protokołu, bo
|
||||
serwer obsługuje HTTPS bezpośrednio i bez redirectu.
|
||||
NIE zmieniaj logiki parsowania, kontroli wersji, manifestów — tylko URL.
|
||||
NIE ruszaj index.php:92 (`\S::get( 'hash' ) == $settings['update_key']`) — to inna sprawa.
|
||||
</action>
|
||||
<verify>
|
||||
grep -c "http://www.cmspro.project-dc.pl" autoload/Shared/Helpers/Helpers.php autoload/admin/factory/class.Update.php
|
||||
→ wynik 0:0 (zero wystąpień)
|
||||
grep -c "https://www.cmspro.project-dc.pl" → wynik >=1:>=4
|
||||
</verify>
|
||||
<done>AC-1 satisfied</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 2: Hotfix instancji testowej cmstest.pagedev.pl</name>
|
||||
<files>
|
||||
C:/visual studio code/projekty/cmstest.pagedev.pl/autoload/class.S.php,
|
||||
C:/visual studio code/projekty/cmstest.pagedev.pl/autoload/admin/factory/class.Update.php
|
||||
</files>
|
||||
<action>
|
||||
W instancji testowej zamień `http://www.cmspro.project-dc.pl` → `https://www.cmspro.project-dc.pl`
|
||||
w obu plikach (Edit replace_all).
|
||||
|
||||
Pliki w instancji testowej mają STARSZĄ strukturę (przed refaktoringiem) — class.S.php
|
||||
zawiera get_new_version(), class.Update.php (factory) zawiera 4 wystąpienia URL
|
||||
(versions.php, .zip, _sql.txt, _files.txt — bez manifest, bez SHA256).
|
||||
|
||||
Po patchu trzeba poinstruować użytkownika, żeby:
|
||||
- wylogował się z panelu (wyczyści sesję `new-version`),
|
||||
- lub w przeglądarce otworzył dowolny link admina po wylogowaniu i ponownym zalogowaniu.
|
||||
|
||||
NIE modyfikuj innych plików w instancji testowej — to środowisko UAT, ma odzwierciedlać
|
||||
stan produkcyjny.
|
||||
</action>
|
||||
<verify>
|
||||
grep -c "http://www.cmspro.project-dc.pl" w obu plikach → 0:0
|
||||
</verify>
|
||||
<done>AC-2 satisfied (część kodowa, weryfikacja UAT w Task 8)</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 3: Skrypt audit paczek aktualizacji</name>
|
||||
<files>
|
||||
.paul/phases/04h-hotfix-https-updates/scripts/audit-packages.ps1,
|
||||
.paul/phases/04h-hotfix-https-updates/audit-report.md
|
||||
</files>
|
||||
<action>
|
||||
Napisz PowerShell-owy skrypt audytujący wszystkie ZIP-y w `updates/` (rekurencyjnie),
|
||||
który dla każdego ZIP:
|
||||
1. Wymienia pliki kandydujące: `autoload/class.S.php`, `autoload/Shared/Helpers/Helpers.php`,
|
||||
`autoload/admin/factory/class.Update.php` (i ich starsze warianty jak `class.Update.php`).
|
||||
2. Jeśli któryś istnieje — rozpakowuje go do tempu, sprawdza zawartość `Select-String -Pattern 'http://www\.cmspro\.project-dc\.pl'`.
|
||||
3. Wynik dla każdej paczki: { package, files_present, has_buggy_url, action }.
|
||||
|
||||
Skrypt MUSI obsłużyć też `updates/cmsPro.zip` (base install).
|
||||
Skrypt NIE patchuje paczek — tylko raportuje. Patch w Task 4.
|
||||
|
||||
Output do `audit-report.md` jako tabela markdown sortowana wersjami.
|
||||
Skrypt nie wymaga uprawnień do zapisu w paczkach.
|
||||
</action>
|
||||
<verify>
|
||||
pwsh -File .paul/phases/04h-hotfix-https-updates/scripts/audit-packages.ps1
|
||||
→ audit-report.md powstaje i zawiera wpis dla cmsPro.zip + co najmniej ver_1.518, ver_1.620
|
||||
</verify>
|
||||
<done>AC-5 satisfied: pełna lista dotkniętych paczek</done>
|
||||
</task>
|
||||
|
||||
<task type="checkpoint:decision" gate="blocking">
|
||||
<decision>
|
||||
Czy patchować WSZYSTKIE paczki z bugiem, czy tylko baseline cmsPro.zip + ver_1.519 jako kotwica?
|
||||
</decision>
|
||||
<context>
|
||||
Po audycie znamy listę dotkniętych paczek. Możliwe strategie:
|
||||
- Patch wszystkich (pełna sanityzacja, ale każda zmieniona paczka wymaga regeneracji manifestu+checksum
|
||||
i upload na serwer).
|
||||
- Patch minimum (cmsPro.zip + ver_1.519 jako kotwica) — nowe instalacje od zera są OK,
|
||||
a każdy upgrade dochodząc do 1.519 dostaje fix.
|
||||
|
||||
Decyzja zależy od liczby dotkniętych paczek z audit-report.md.
|
||||
</context>
|
||||
<options>
|
||||
<option id="full-patch">
|
||||
<name>Patch wszystkich dotkniętych paczek</name>
|
||||
<pros>Spójność, brak buggy artefaktów na serwerze, każda ścieżka aktualizacji bezpieczna</pros>
|
||||
<cons>Więcej pracy + uploadu, ryzyko zepsucia checksum jeśli manifesty istnieją</cons>
|
||||
</option>
|
||||
<option id="minimal-patch">
|
||||
<name>Patch tylko cmsPro.zip + ver_1.519 (kotwica)</name>
|
||||
<pros>Najmniejsza ingerencja, jasny "punkt zaczepienia"</pros>
|
||||
<cons>Stare paczki nadal zawierają zepsuty kod — ryzyko regresji jeśli ktoś użyje pojedynczej paczki ręcznie</cons>
|
||||
</option>
|
||||
</options>
|
||||
<resume-signal>Select: full-patch lub minimal-patch</resume-signal>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 4: Patch dotkniętych paczek (zgodnie z decyzją z Task 3.5)</name>
|
||||
<files>
|
||||
updates/cmsPro.zip,
|
||||
updates/1.50/ver_1.518.zip (jeśli buggy),
|
||||
updates/1.60/ver_1.620.zip (jeśli buggy),
|
||||
updates/**/ver_*.zip (każda inna z audit-report.md jeśli wybrano full-patch),
|
||||
updates/**/ver_*_manifest.json (regeneracja checksum_zip dla patched paczek z manifestem)
|
||||
</files>
|
||||
<action>
|
||||
Dla każdej paczki do patcha:
|
||||
1. Skopiuj ZIP do tempu (backup)
|
||||
2. Wyciągnij plik(i) zawierające http://www.cmspro.project-dc.pl
|
||||
3. Zamień http:// → https:// (zachowaj BOM, encoding UTF-8 bez BOM zgodnie z konwencją projektu)
|
||||
4. Wsadź spowrotem do ZIP-a (Compress-Archive -Update lub System.IO.Compression.ZipArchive)
|
||||
5. Jeśli istnieje `ver_X.YYY_manifest.json` w tym samym katalogu — przelicz SHA256 całego ZIP
|
||||
i zaktualizuj `checksum_zip` w manifeście (format: `sha256:HEX`)
|
||||
6. Zachowaj oryginał jako `.bak` w tym samym katalogu
|
||||
|
||||
Dla cmsPro.zip nie ma manifestu (to base install) — sam ZIP wystarczy.
|
||||
|
||||
NIE ruszaj paczek, które audit zaznaczył jako N/A (brak buggy plików).
|
||||
NIE zmieniaj struktury katalogów wewnątrz ZIP-ów.
|
||||
</action>
|
||||
<verify>
|
||||
Powtórz audit z Task 3 — każda zmieniona paczka pokazuje `has_buggy_url: false`.
|
||||
Dla każdej paczki z manifestem: `(Get-FileHash -Algorithm SHA256 paczka.zip).Hash.ToLower()`
|
||||
równe wartości checksum_zip w manifeście.
|
||||
</verify>
|
||||
<done>AC-3 satisfied</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 5: Wstrzyknięcie kotwicy fixa do ver_1.519.zip</name>
|
||||
<files>
|
||||
updates/1.50/ver_1.519.zip
|
||||
</files>
|
||||
<action>
|
||||
ver_1.519.zip oryginalnie zawiera tylko `autoload/admin/controls/class.Articles.php`.
|
||||
Dodać do niego (Compress-Archive -Update lub równoważne):
|
||||
- `autoload/class.S.php` — wersja z https:// (taka sama jaka ląduje w cmsPro.zip post-patch)
|
||||
- `autoload/admin/factory/class.Update.php` — wersja z https://
|
||||
- `autoload/admin/controls/class.Update.php` — bez zmian (kontrola, nie ma URL)
|
||||
- `autoload/admin/view/class.Update.php` — bez zmian
|
||||
|
||||
Pliki muszą mieć strukturę pasującą do legacy układu (PRZED refaktoringiem do Shared\Helpers),
|
||||
czyli class.S.php zawiera get_new_version() inline. Skopiuj odpowiednie wersje z post-patched
|
||||
`cmsPro.zip` lub z wcześniejszej paczki (np. patched ver_1.518.zip jeśli była buggy).
|
||||
|
||||
Cel: każda instancja cmsPRO doczołgająca się do 1.519 dostaje WORKING klient HTTPS,
|
||||
nawet jeśli wcześniejsze paczki były buggy.
|
||||
|
||||
Jeśli istnieje ver_1.519_manifest.json — dodaj wpisy `files.added` z nowo wstrzykniętymi
|
||||
plikami i przelicz checksum_zip.
|
||||
Jeśli nie istnieje — opcjonalnie wygeneruj go (zgodnie ze schematem z build-update.ps1).
|
||||
</action>
|
||||
<verify>
|
||||
unzip -l updates/1.50/ver_1.519.zip → zawiera autoload/class.S.php oraz autoload/admin/factory/class.Update.php
|
||||
unzip -p updates/1.50/ver_1.519.zip autoload/class.S.php | grep -c "https://" → >=1
|
||||
unzip -p updates/1.50/ver_1.519.zip autoload/class.S.php | grep -c "http://www.cmspro" → 0
|
||||
</verify>
|
||||
<done>AC-4 satisfied</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 6: Generacja listy plików do uploadu na serwer</name>
|
||||
<files>
|
||||
.paul/phases/04h-hotfix-https-updates/upload-checklist.md
|
||||
</files>
|
||||
<action>
|
||||
Wygeneruj plik z listą paczek wymagających uploadu na cmspro.project-dc.pl/updates/:
|
||||
- cmsPro.zip (jeśli zmieniony)
|
||||
- każda zmieniona ver_*.zip wraz ze swoim manifestem (jeśli istnieje)
|
||||
- ver_1.519.zip + ewentualny nowy ver_1.519_manifest.json
|
||||
|
||||
Format: tabela markdown { plik, ścieżka źródłowa, ścieżka docelowa na serwerze, SHA256 }.
|
||||
Dodaj sekcję "Po uploadzie" z krokami: smoke-test (curl https://.../updates/versions.php?key=KLUCZ),
|
||||
weryfikacja że versions.php nadal zwraca poprawną listę.
|
||||
</action>
|
||||
<verify>
|
||||
Plik istnieje i zawiera co najmniej cmsPro.zip + ver_1.519.zip + smoke-test command
|
||||
</verify>
|
||||
<done>Dostarczona instrukcja uploadu dla użytkownika</done>
|
||||
</task>
|
||||
|
||||
<task type="checkpoint:human-action" gate="blocking">
|
||||
<what-built>
|
||||
Zestaw spatchowanych paczek + cmsPro.zip + ver_1.519.zip kotwica fixa, gotowe do uploadu.
|
||||
</what-built>
|
||||
<how-to-verify>
|
||||
1. Otwórz `.paul/phases/04h-hotfix-https-updates/upload-checklist.md`
|
||||
2. Wgraj wskazane pliki na serwer cmspro.project-dc.pl do katalogu updates/
|
||||
(FTP/SSH/panel hostingu — wedle Twojej procedury)
|
||||
3. Uruchom smoke-test:
|
||||
curl -sS "https://www.cmspro.project-dc.pl/updates/versions.php?key=DOWOLNY_VALID_KEY"
|
||||
→ powinno zwrócić listę wersji bez 301
|
||||
4. Pobierz testowo jedną z paczek:
|
||||
curl -sS -o /tmp/test.zip "https://www.cmspro.project-dc.pl/updates/1.50/ver_1.519.zip"
|
||||
file /tmp/test.zip → powinno być "Zip archive"
|
||||
</how-to-verify>
|
||||
<resume-signal>Wpisz "uploaded" gdy paczki są na serwerze, lub opisz problem</resume-signal>
|
||||
</task>
|
||||
|
||||
<task type="checkpoint:human-verify" gate="blocking">
|
||||
<what-built>
|
||||
Hotfix instancji testowej: pliki zaktualizowane lokalnie + paczki na serwerze.
|
||||
</what-built>
|
||||
<how-to-verify>
|
||||
1. W instancji testowej (cmstest.pagedev.pl) wyloguj się i zaloguj ponownie do panelu
|
||||
(czyści sesję `new-version`).
|
||||
2. Wejdź w sekcję aktualizacji (admin → Aktualizacja).
|
||||
3. Sprawdź:
|
||||
- Pokazuje wersję 1.519 jako bieżącą
|
||||
- Pokazuje "Dostępna nowa wersja: X.YYY" gdzie X.YYY > 1.519
|
||||
- Klik "Aktualizuj" przebiega bez błędu i zwiększa wersję
|
||||
4. Powtórz update kilka razy aż dojdziesz do najnowszej dostępnej wersji.
|
||||
5. Sprawdź `libraries/version.ini` w instancji — odzwierciedla najnowszą wersję.
|
||||
</how-to-verify>
|
||||
<resume-signal>Wpisz "approved" gdy aktualizacje działają, lub opisz problem</resume-signal>
|
||||
</task>
|
||||
|
||||
</tasks>
|
||||
|
||||
<boundaries>
|
||||
|
||||
## DO NOT CHANGE
|
||||
- index.php:92 (`\S::get('hash') == $settings['update_key']`) — to oddzielna funkcja (front-devel mode), nie URL
|
||||
- Logika parsowania wersji, manifestów, SQL — tylko URL ma się zmienić
|
||||
- Struktura katalogowa updates/ na serwerze — tylko zawartość plików
|
||||
- Inne pliki w instancji testowej cmstest.pagedev.pl — to UAT, ma odzwierciedlać prod
|
||||
- Roadmap Phase 5+ — to hotfix poza roadmapą, nie blokuje Phase 5
|
||||
|
||||
## SCOPE LIMITS
|
||||
- Plan NIE refaktoryzuje update systemu do nowej architektury (to robota dla Phase 5/13)
|
||||
- Plan NIE wprowadza retry/cURL/stream-context — wystarczy zmiana protokołu, serwer wspiera HTTPS bezpośrednio
|
||||
- Plan NIE patchuje pojedynczych instancji produkcyjnych poza testową — użytkownicy końcowi dostaną fix przez kotwicę 1.519 lub baseline cmsPro.zip
|
||||
- Plan NIE rozwiązuje problemu "stare instancje na <1.519 zablokowane przed migracją serwera" — wymagałyby manualnego patcha (out of scope)
|
||||
|
||||
</boundaries>
|
||||
|
||||
<verification>
|
||||
Przed zamknięciem planu:
|
||||
- [ ] Task 1 verify (grep w kodzie cmsPRO)
|
||||
- [ ] Task 2 verify (grep w instancji testowej)
|
||||
- [ ] Task 3: audit-report.md istnieje i jest kompletny
|
||||
- [ ] Task 4: powtórzony audit pokazuje 0 buggy paczek (dla full-patch) lub tylko nie-patched paczki świadomie pominięte
|
||||
- [ ] Task 5: ver_1.519.zip zawiera fix files
|
||||
- [ ] Task 6: upload-checklist.md istnieje
|
||||
- [ ] Checkpoint upload: użytkownik potwierdził upload + smoke-test OK
|
||||
- [ ] Checkpoint UAT: instancja testowa aktualizuje się do najnowszej wersji bez błędu
|
||||
- [ ] Wszystkie AC spełnione
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
- Bieżąca instancja testowa odblokowana — widzi i instaluje aktualizacje > 1.519
|
||||
- Bazowy install (cmsPro.zip) na serwerze nie zawiera buggy http://
|
||||
- ver_1.519.zip jest "kotwicą fixa" dla każdej nowej instalacji
|
||||
- Audit report dokumentuje stan wszystkich paczek
|
||||
- Brak regresji w innych modułach (URL change to jedyna ingerencja)
|
||||
</success_criteria>
|
||||
|
||||
<output>
|
||||
Po zamknięciu utwórz `.paul/phases/04h-hotfix-https-updates/04h-01-SUMMARY.md`
|
||||
zawierający:
|
||||
- Co zmieniono (kod + paczki)
|
||||
- Listę paczek patched z SHA256 przed/po
|
||||
- Decyzję checkpoint (full-patch vs minimal-patch) i uzasadnienie
|
||||
- Lessons learned (np. "zawsze używać HTTPS w endpointach update", "rozważyć stream context z follow_location jako defense-in-depth")
|
||||
- Sugestię dla Phase 5/13 Releases+Update: rozważyć cURL z verify SSL i obsługą redirectów jako trwałe rozwiązanie
|
||||
</output>
|
||||
170
.paul/phases/04h-hotfix-https-updates/04h-01-SUMMARY.md
Normal file
170
.paul/phases/04h-hotfix-https-updates/04h-01-SUMMARY.md
Normal file
@@ -0,0 +1,170 @@
|
||||
---
|
||||
phase: 04h-hotfix-https-updates
|
||||
plan: 01
|
||||
subsystem: infra
|
||||
tags: [https, urlencode, ftp-cleanup, update-mechanism, license-key]
|
||||
|
||||
requires:
|
||||
- phase: pre-paul (legacy update mechanism)
|
||||
provides: file_get_contents-based update polling
|
||||
provides:
|
||||
- HTTPS-only update endpoint (kod + 121 paczek + cmsPro.zip + kotwica 1.519)
|
||||
- urlencode($settings['update_key']) wrap (kod + 64 paczek + kotwica)
|
||||
- Audit/patcher PowerShell scripts dla updates/ ZIP-ow
|
||||
- FTP cleanup script (.bak removal lokalnie + zdalnie)
|
||||
affects: [phase-5 (Releases+Update Domain repo), phase-13 (Admin: Update controller)]
|
||||
|
||||
tech-stack:
|
||||
added: []
|
||||
patterns:
|
||||
- "Audit-then-patch script pair: oddzielne audyt vs mutating skrypty (idempotent verify)"
|
||||
- "Anchor-package strategy: wstrzykniecie fixa w istniejaca paczke aktualizacji jako ratunkowy punkt zaczepienia"
|
||||
|
||||
key-files:
|
||||
created:
|
||||
- .paul/phases/04h-hotfix-https-updates/scripts/audit-packages.ps1
|
||||
- .paul/phases/04h-hotfix-https-updates/scripts/patch-packages.ps1
|
||||
- .paul/phases/04h-hotfix-https-updates/scripts/patch-urlencode.ps1
|
||||
- .paul/phases/04h-hotfix-https-updates/scripts/inject-anchor-1519.ps1
|
||||
- .paul/phases/04h-hotfix-https-updates/scripts/cleanup-baks.ps1
|
||||
- .paul/phases/04h-hotfix-https-updates/audit-report.md
|
||||
- .paul/phases/04h-hotfix-https-updates/patch-log.md
|
||||
- .paul/phases/04h-hotfix-https-updates/patch-urlencode-log.md
|
||||
- .paul/phases/04h-hotfix-https-updates/upload-checklist.md
|
||||
modified:
|
||||
- autoload/Shared/Helpers/Helpers.php
|
||||
- autoload/admin/factory/class.Update.php
|
||||
- updates/cmsPro.zip
|
||||
- updates/**/ver_*.zip (121 paczek http->https + 64 urlencode)
|
||||
- 2x ver_*_manifest.json (przeliczone checksum_zip SHA256)
|
||||
|
||||
key-decisions:
|
||||
- "full-patch zamiast minimal-patch: 121 paczek > ryzyko regresji przy chain-update"
|
||||
- "urlencode jako oddzielny patch po wykryciu bug-a #2 podczas UAT (klucz licencji z #)"
|
||||
- ".NET FtpWebRequest zamiast curl --quote dla cleanup (PowerShell 5.1 traktuje stderr curl jako fatal)"
|
||||
|
||||
patterns-established:
|
||||
- "Reverse-engineering bug w produkcji: curl probe serwera wyzwolil odkrycie HTTP 301 redirect"
|
||||
- "Bug discovery podczas UAT: drugi bug (urlencode) ujawniony dopiero po naprawieniu pierwszego"
|
||||
|
||||
duration: ~90min
|
||||
started: 2026-04-25T22:00:00Z
|
||||
completed: 2026-04-26T00:35:00Z
|
||||
---
|
||||
|
||||
# Phase 04h Plan 01: Hotfix HTTPS Update Endpoint Summary
|
||||
|
||||
**Naprawa zablokowanego mechanizmu aktualizacji w cmsPRO: HTTP->HTTPS w kodzie + 121 paczkach, urlencode klucza licencji w 64 paczkach, kotwica fixa w ver_1.519.zip, cleanup 1085 backupow z FTP+lokalnie. Test instance odblokowana i potwierdzona przez user-a.**
|
||||
|
||||
## Performance
|
||||
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Duration | ~90min |
|
||||
| Started | 2026-04-25 22:00 |
|
||||
| Completed | 2026-04-26 00:35 |
|
||||
| Tasks | 8 zaplanowane + 3 dodatkowe (urlencode patch, urlencode w paczkach, cleanup .bak) |
|
||||
| Files modified | 4 PHP source + 124 paczki (cmsPro + 121 ZIP + 2 manifest) + 1085 .bak removed |
|
||||
|
||||
## Acceptance Criteria Results
|
||||
|
||||
| Criterion | Status | Notes |
|
||||
|-----------|--------|-------|
|
||||
| AC-1: Kod cmsPRO uzywa HTTPS | Pass | Helpers.php + factory/Update.php; 0 wystapien http:// |
|
||||
| AC-2: Instancja testowa odblokowana | Pass | User potwierdzil "Zadzialalo" po dodaniu urlencode |
|
||||
| AC-3: Wszystkie paczki wolne od bug-a | Pass | Audit po patchu: 0 paczek z http://, 0 paczek z raw $settings['update_key'] w URL |
|
||||
| AC-4: ver_1.519.zip jako kotwica fixa | Pass | Zawiera class.S.php (37958B) + class.Update.php (2886B), oba z https + urlencode. SHA256: 14e5754c75884fcc... |
|
||||
| AC-5: Audit report dostarczony | Pass | audit-report.md + patch-log.md + patch-urlencode-log.md |
|
||||
|
||||
## Accomplishments
|
||||
|
||||
- **Odblokowanie WSZYSTKICH instancji cmsPRO**: kazda instancja ktora dotrze do 1.519 dostaje wbudowana kotwice z dzialajacym klientem update (https + urlencode)
|
||||
- **Identyfikacja DWOCH bugow** (HTTP 301 redirect i URL fragment-cutting na #) podczas jednej sesji
|
||||
- **Idempotentne skrypty audit+patch+cleanup** mozliwe do reuse gdyby pojawila sie kolejna fala buggy paczek
|
||||
- **Zero regresji**: zachowane oryginalne backupy podczas patcha (.bak), usuniete dopiero po UAT confirmation
|
||||
|
||||
## Files Created/Modified
|
||||
|
||||
| File | Change | Purpose |
|
||||
|------|--------|---------|
|
||||
| `autoload/Shared/Helpers/Helpers.php` | Modified | http->https + urlencode w get_new_version() |
|
||||
| `autoload/admin/factory/class.Update.php` | Modified | http->https + urlencode w update() |
|
||||
| `cmstest.../autoload/class.S.php` | Modified | UAT instance hotfix |
|
||||
| `cmstest.../autoload/admin/factory/class.Update.php` | Modified | UAT instance hotfix |
|
||||
| `updates/cmsPro.zip` | Modified | Base install patched (legacy nie uzywal klucza, tylko http->https) |
|
||||
| `updates/**/ver_*.zip` (121) | Modified | http->https w autoload/class.S.php / Helpers.php / factory/Update.php |
|
||||
| `updates/**/ver_*.zip` (64) | Modified | urlencode wrap (subset 121) |
|
||||
| `updates/1.50/ver_1.519.zip` | Modified | + anchor injection: class.S.php + factory/Update.php |
|
||||
| `updates/**/ver_*_manifest.json` (2) | Modified | Przeliczony checksum_zip SHA256 |
|
||||
| `.paul/phases/04h-hotfix-https-updates/scripts/*.ps1` (5) | Created | Audit, patch, anchor inject, urlencode patch, FTP cleanup |
|
||||
| `.paul/phases/04h-hotfix-https-updates/*.md` (4) | Created | audit-report, patch-log, patch-urlencode-log, upload-checklist |
|
||||
|
||||
## Decisions Made
|
||||
|
||||
| Decision | Rationale | Impact |
|
||||
|----------|-----------|--------|
|
||||
| full-patch wszystkich 121 paczek | Czesciowy patch ryzykowal regresje gdy stara buggy paczka nadpisywala swiezo zaktualizowany class.S.php | 124 pliki do uploadu (vs 3 minimum), ale kazda chain-update sciezka bezpieczna |
|
||||
| Anchor injection do ver_1.519.zip | Oryginalna paczka (class.Articles.php only) jest "darmowa" wersja na granicy licencji - idealny punkt by gwarantowac dzialajacy klient HTTPS dla wszystkich nowych instancji | Wszystkie nowe instancje od zera dostaja fix przy upgrade do 1.519 |
|
||||
| .NET FtpWebRequest zamiast curl dla cleanup | curl stderr w PowerShell 5.1 wyrzuca NativeCommandError przy 550, blokujac batch | Cleanup ukonczony bez bledow (1085 .bak) |
|
||||
| urlencode jako oddzielny etap | Bug ujawniony dopiero podczas UAT (user dodal klucz z #) - zorganizowany jako "rozszerzenie planu" zamiast restart | Czysta sciezka audytowa, oba bugi udokumentowane oddzielnie |
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
### Summary
|
||||
|
||||
| Type | Count | Impact |
|
||||
|------|-------|--------|
|
||||
| Auto-fixed | 1 | urlencode bug discovered during UAT, dodatkowe 3 zadania (patch kodu, patch paczek, cleanup) |
|
||||
| Scope additions | 1 | FTP cleanup (.bak files na serwerze) - nie planowane, user zlecil po UAT |
|
||||
| Deferred | 0 | - |
|
||||
|
||||
**Total impact:** Plan ukonczony + 2 niezbedne rozszerzenia odkryte podczas wykonania.
|
||||
|
||||
### Auto-fixed Issues
|
||||
|
||||
**1. URL encoding klucza licencji (krytyczny bug #2)**
|
||||
- **Found during:** UAT post-Task 8 (user testowal z kluczem `#e@1tUVvZDP:$7dL`)
|
||||
- **Issue:** Klucz licencji wstrzykiwany raw w URL, znak `#` w kluczu byl traktowany jako fragment delimiter -> serwer dostawal pusty klucz -> zwracal wersje tylko do 1.519 (free tier)
|
||||
- **Fix:** `urlencode($settings['update_key'])` w kodzie + 64 paczkach + kotwicy
|
||||
- **Files:** Helpers.php, factory/Update.php (cmsPRO + test instance), 64x ver_*.zip, ver_1.519.zip
|
||||
- **Verification:** PowerShell scan wszystkich plikow w paczkach: 0/165 bez urlencode wrap
|
||||
|
||||
### Scope Additions
|
||||
|
||||
**1. FTP cleanup .bak files**
|
||||
- **Trigger:** User polecil usuniecie backupow po UAT confirmation
|
||||
- **Discovered:** Auto-deploy ftp-kr.json (autoUpload=true, autoDelete=false) wyslal 1085 .bak na serwer
|
||||
- **Action:** Skrypt cleanup-baks.ps1 (.NET FtpWebRequest) - 355 zdalnych usuniec + lokalne removal
|
||||
- **Verification:** sample listing /updates/1.50/ - 0 .bak remote, 0 .bak lokalnie
|
||||
|
||||
### Deferred Items
|
||||
|
||||
None.
|
||||
|
||||
## Issues Encountered
|
||||
|
||||
| Issue | Resolution |
|
||||
|-------|------------|
|
||||
| PowerShell 5.1 mis-reads UTF-8 file bez BOM (audit-packages.ps1 z em-dash) | Zamieniono "—" na "--", plik czysto ASCII |
|
||||
| `Substring(0,12)` na "(dry-run)" string (length 9) | Dodany length-guard if |
|
||||
| curl -Q "DELE name" w katalogu wymaga CWD; bez CWD szuka w root (550) | Zmiana na pelna sciezka w DELE + URL ftp://host/ |
|
||||
| curl stderr w PowerShell 5.1 = NativeCommandError przy 550 -> ErrorActionPreference Stop blokuje batch | Przepisanie na .NET FtpWebRequest z try/catch na 550 |
|
||||
|
||||
## Next Phase Readiness
|
||||
|
||||
**Ready:**
|
||||
- Phase 5 (Domain: SeoAdditional + Cron + Releases) moze ruszyc bez zaleznosci od 04h
|
||||
- Mechanizm update na produkcji odblokowany - nowe wersje moga byc dystrybuowane normalnie
|
||||
- Skrypty audit/patch w `.paul/phases/04h-hotfix-https-updates/scripts/` dostepne jako template przy podobnych operacjach
|
||||
|
||||
**Concerns:**
|
||||
- Mechanizm update nadal uzywa `file_get_contents()` bez stream context z verify_peer/follow_location - rekomendacja: w Phase 5 lub Phase 13 przepisac na cURL z proper error handling i SSL verification
|
||||
- Klucze licencji powinny byc walidowane przy zapisie w settings (max length, allowed chars) - obecnie polegamy na urlencode jako fix
|
||||
- Brak retry logic przy chwilowym network failure podczas update - obecny kod silnie failuje
|
||||
|
||||
**Blockers:**
|
||||
- None. Phase 5 moze ruszyc.
|
||||
|
||||
---
|
||||
*Phase: 04h-hotfix-https-updates, Plan: 01*
|
||||
*Completed: 2026-04-26*
|
||||
722
.paul/phases/04h-hotfix-https-updates/audit-report.md
Normal file
722
.paul/phases/04h-hotfix-https-updates/audit-report.md
Normal file
@@ -0,0 +1,722 @@
|
||||
# Audit Report: paczki aktualizacji cmsPRO (HTTP -> HTTPS bug)
|
||||
|
||||
**Data:** 2026-04-26 00:14
|
||||
**Katalog:** `C:\visual studio code\projekty\cmsPRO\updates`
|
||||
**Wzorzec buggy:** `http://www.cmspro.project-dc.pl`
|
||||
|
||||
## Podsumowanie
|
||||
|
||||
| Kategoria | Liczba |
|
||||
|-----------|--------|
|
||||
| Paczek przeskanowanych | 542 |
|
||||
| **PATCH (buggy http://)** | **0** |
|
||||
| OK (juz https albo brak URL) | 147 |
|
||||
| N/A (brak plikow podejrzanych) | 395 |
|
||||
| Bledy | 0 |
|
||||
|
||||
## Paczki wymagajace patcha (HasBuggyUrl=true)
|
||||
|
||||
_Brak paczek do patcha._
|
||||
|
||||
## Paczki zawierajace pliki ale juz na https (OK)
|
||||
|
||||
| # | Paczka | Pliki obecne |
|
||||
|---|--------|--------------|
|
||||
| 1 | `cmsPro.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 2 | `0.00\ver_0.03.zip` | autoload/admin/factory/class.Update.php |
|
||||
| 3 | `0.00\ver_0.07.zip` | autoload/class.S.php |
|
||||
| 4 | `0.10\ver_0.17.zip` | autoload/class.S.php |
|
||||
| 5 | `0.10\ver_0.19.zip` | autoload/class.S.php |
|
||||
| 6 | `0.20\ver_0.22.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 7 | `0.20\ver_0.26.zip` | autoload/admin/factory/class.Update.php |
|
||||
| 8 | `0.30\ver_0.38.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 9 | `0.40\ver_0.47.zip` | autoload/class.S.php |
|
||||
| 10 | `0.50\ver_0.54.zip` | autoload/class.S.php |
|
||||
| 11 | `0.50\ver_0.55.zip` | autoload/class.S.php |
|
||||
| 12 | `0.50\ver_0.59.zip` | autoload/class.S.php |
|
||||
| 13 | `0.70\ver_0.71.zip` | autoload/class.S.php |
|
||||
| 14 | `0.70\ver_0.73.zip` | autoload/class.S.php |
|
||||
| 15 | `0.70\ver_0.77.zip` | autoload/class.S.php |
|
||||
| 16 | `0.80\ver_0.82.zip` | autoload/class.S.php |
|
||||
| 17 | `0.80\ver_0.83.zip` | autoload/class.S.php |
|
||||
| 18 | `0.80\ver_0.84.zip` | autoload/class.S.php |
|
||||
| 19 | `0.80\ver_0.86.zip` | autoload/class.S.php |
|
||||
| 20 | `0.90\ver_0.90.zip` | autoload/class.S.php |
|
||||
| 21 | `0.90\ver_0.93.zip` | autoload/admin/factory/class.Update.php |
|
||||
| 22 | `0.90\ver_0.94.zip` | autoload/class.S.php |
|
||||
| 23 | `1.00\ver_1.09.zip` | autoload/class.S.php |
|
||||
| 24 | `1.10\ver_1.12.zip` | autoload/class.S.php |
|
||||
| 25 | `1.20\ver_1.27.zip` | autoload/admin/factory/class.Update.php |
|
||||
| 26 | `1.20\ver_1.271.zip` | autoload/admin/factory/class.Update.php |
|
||||
| 27 | `1.20\ver_1.274.zip` | autoload/class.S.php |
|
||||
| 28 | `1.20\ver_1.279.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 29 | `1.20\ver_1.280.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 30 | `1.20\ver_1.284.zip` | autoload/class.S.php |
|
||||
| 31 | `1.20\ver_1.285.zip` | autoload/class.S.php |
|
||||
| 32 | `1.20\ver_1.288.zip` | autoload/class.S.php |
|
||||
| 33 | `1.20\ver_1.293.zip` | autoload/admin/factory/class.Update.php |
|
||||
| 34 | `1.20\ver_1.294.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 35 | `1.20\ver_1.295.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 36 | `1.20\ver_1.297.zip` | autoload/class.S.php |
|
||||
| 37 | `1.20\ver_1.298.zip` | autoload/class.S.php |
|
||||
| 38 | `1.30\ver_1.300.zip` | autoload/class.S.php |
|
||||
| 39 | `1.30\ver_1.306.zip` | autoload/class.S.php |
|
||||
| 40 | `1.30\ver_1.308.zip` | autoload/class.S.php |
|
||||
| 41 | `1.30\ver_1.318.zip` | autoload/class.S.php |
|
||||
| 42 | `1.30\ver_1.323.zip` | autoload/class.S.php |
|
||||
| 43 | `1.30\ver_1.326.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 44 | `1.30\ver_1.334.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 45 | `1.30\ver_1.335.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 46 | `1.30\ver_1.339.zip` | autoload/class.S.php |
|
||||
| 47 | `1.30\ver_1.346.zip` | autoload/class.S.php |
|
||||
| 48 | `1.30\ver_1.350.zip` | autoload/class.S.php |
|
||||
| 49 | `1.30\ver_1.352.zip` | autoload/class.S.php |
|
||||
| 50 | `1.30\ver_1.354.zip` | autoload/class.S.php |
|
||||
| 51 | `1.30\ver_1.355.zip` | autoload/class.S.php |
|
||||
| 52 | `1.30\ver_1.356.zip` | autoload/class.S.php |
|
||||
| 53 | `1.30\ver_1.357.zip` | autoload/class.S.php |
|
||||
| 54 | `1.30\ver_1.359.zip` | autoload/class.S.php |
|
||||
| 55 | `1.30\ver_1.360.zip` | autoload/class.S.php |
|
||||
| 56 | `1.30\ver_1.370.zip` | autoload/class.S.php |
|
||||
| 57 | `1.30\ver_1.371.zip` | autoload/class.S.php |
|
||||
| 58 | `1.30\ver_1.372.zip` | autoload/class.S.php |
|
||||
| 59 | `1.30\ver_1.375.zip` | autoload/class.S.php |
|
||||
| 60 | `1.30\ver_1.387.zip` | autoload/class.S.php |
|
||||
| 61 | `1.30\ver_1.396.zip` | autoload/class.S.php |
|
||||
| 62 | `1.30\ver_1.397.zip` | autoload/class.S.php |
|
||||
| 63 | `1.40\ver_1.402.zip` | autoload/class.S.php |
|
||||
| 64 | `1.40\ver_1.406.zip` | autoload/class.S.php |
|
||||
| 65 | `1.40\ver_1.408.zip` | autoload/class.S.php |
|
||||
| 66 | `1.40\ver_1.409.zip` | autoload/class.S.php |
|
||||
| 67 | `1.40\ver_1.410.zip` | autoload/class.S.php |
|
||||
| 68 | `1.40\ver_1.411.zip` | autoload/class.S.php |
|
||||
| 69 | `1.40\ver_1.412.zip` | autoload/class.S.php |
|
||||
| 70 | `1.40\ver_1.426.zip` | autoload/class.S.php |
|
||||
| 71 | `1.40\ver_1.432.zip` | autoload/class.S.php |
|
||||
| 72 | `1.40\ver_1.449.zip` | autoload/class.S.php |
|
||||
| 73 | `1.40\ver_1.456.zip` | autoload/class.S.php |
|
||||
| 74 | `1.40\ver_1.462.zip` | autoload/class.S.php |
|
||||
| 75 | `1.40\ver_1.463.zip` | autoload/class.S.php |
|
||||
| 76 | `1.40\ver_1.464.zip` | autoload/class.S.php |
|
||||
| 77 | `1.40\ver_1.482.zip` | autoload/class.S.php |
|
||||
| 78 | `1.40\ver_1.485.zip` | autoload/class.S.php |
|
||||
| 79 | `1.40\ver_1.490.zip` | autoload/class.S.php |
|
||||
| 80 | `1.40\ver_1.496.zip` | autoload/class.S.php |
|
||||
| 81 | `1.40\ver_1.498.zip` | autoload/class.S.php |
|
||||
| 82 | `1.50\ver_1.504.zip` | autoload/class.S.php |
|
||||
| 83 | `1.50\ver_1.507.zip` | autoload/class.S.php |
|
||||
| 84 | `1.50\ver_1.511.zip` | autoload/class.S.php |
|
||||
| 85 | `1.50\ver_1.513.zip` | autoload/class.S.php |
|
||||
| 86 | `1.50\ver_1.515.zip` | autoload/admin/factory/class.Update.php |
|
||||
| 87 | `1.50\ver_1.517.zip` | autoload/admin/factory/class.Update.php |
|
||||
| 88 | `1.50\ver_1.518.zip` | autoload/class.S.php |
|
||||
| 89 | `1.50\ver_1.529.zip` | autoload/class.S.php |
|
||||
| 90 | `1.50\ver_1.532.zip` | autoload/class.S.php |
|
||||
| 91 | `1.50\ver_1.533.zip` | autoload/class.S.php |
|
||||
| 92 | `1.50\ver_1.534.zip` | autoload/class.S.php |
|
||||
| 93 | `1.50\ver_1.535.zip` | autoload/class.S.php |
|
||||
| 94 | `1.50\ver_1.536.zip` | autoload/class.S.php |
|
||||
| 95 | `1.50\ver_1.539.zip` | autoload/class.S.php |
|
||||
| 96 | `1.50\ver_1.541.zip` | autoload/class.S.php |
|
||||
| 97 | `1.50\ver_1.546.zip` | autoload/class.S.php |
|
||||
| 98 | `1.50\ver_1.551.zip` | autoload/class.S.php |
|
||||
| 99 | `1.50\ver_1.552.zip` | autoload/class.S.php |
|
||||
| 100 | `1.50\ver_1.554.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 101 | `1.50\ver_1.555.zip` | autoload/class.S.php |
|
||||
| 102 | `1.50\ver_1.556.zip` | autoload/class.S.php |
|
||||
| 103 | `1.50\ver_1.557.zip` | autoload/class.S.php |
|
||||
| 104 | `1.50\ver_1.561.zip` | autoload/class.S.php |
|
||||
| 105 | `1.50\ver_1.568.zip` | autoload/class.S.php |
|
||||
| 106 | `1.50\ver_1.572.zip` | autoload/class.S.php |
|
||||
| 107 | `1.50\ver_1.583.zip` | autoload/class.S.php |
|
||||
| 108 | `1.50\ver_1.587.zip` | autoload/class.S.php |
|
||||
| 109 | `1.50\ver_1.589.zip` | autoload/class.S.php |
|
||||
| 110 | `1.50\ver_1.591.zip` | autoload/class.S.php |
|
||||
| 111 | `1.60\ver_1.602.zip` | autoload/class.S.php |
|
||||
| 112 | `1.60\ver_1.610.zip` | autoload/class.S.php |
|
||||
| 113 | `1.60\ver_1.613.zip` | autoload/class.S.php |
|
||||
| 114 | `1.60\ver_1.617.zip` | autoload/class.S.php |
|
||||
| 115 | `1.60\ver_1.618.zip` | autoload/class.S.php |
|
||||
| 116 | `1.60\ver_1.620.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 117 | `1.60\ver_1.625.zip` | autoload/class.S.php |
|
||||
| 118 | `1.60\ver_1.626.zip` | autoload/class.S.php |
|
||||
| 119 | `1.60\ver_1.627.zip` | autoload/class.S.php |
|
||||
| 120 | `1.60\ver_1.628.zip` | autoload/class.S.php |
|
||||
| 121 | `1.60\ver_1.633.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 122 | `1.60\ver_1.634.zip` | autoload/class.S.php |
|
||||
| 123 | `1.60\ver_1.638.zip` | autoload/class.S.php |
|
||||
| 124 | `1.60\ver_1.642.zip` | autoload/class.S.php |
|
||||
| 125 | `1.60\ver_1.643.zip` | autoload/class.S.php |
|
||||
| 126 | `1.60\ver_1.644.zip` | autoload/class.S.php |
|
||||
| 127 | `1.60\ver_1.645.zip` | autoload/class.S.php |
|
||||
| 128 | `1.60\ver_1.649.zip` | autoload/class.S.php |
|
||||
| 129 | `1.60\ver_1.650.zip` | autoload/class.S.php |
|
||||
| 130 | `1.60\ver_1.651.zip` | autoload/class.S.php |
|
||||
| 131 | `1.60\ver_1.654.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 132 | `1.60\ver_1.656.zip` | autoload/class.S.php |
|
||||
| 133 | `1.60\ver_1.660.zip` | autoload/class.S.php |
|
||||
| 134 | `1.60\ver_1.665.zip` | autoload/class.S.php |
|
||||
| 135 | `1.60\ver_1.666.zip` | autoload/class.S.php |
|
||||
| 136 | `1.60\ver_1.669.zip` | autoload/admin/factory/class.Update.php |
|
||||
| 137 | `1.60\ver_1.674.zip` | autoload/class.S.php |
|
||||
| 138 | `1.60\ver_1.675.zip` | autoload/class.S.php |
|
||||
| 139 | `1.60\ver_1.678.zip` | autoload/class.S.php |
|
||||
| 140 | `1.60\ver_1.680.zip` | autoload/class.S.php |
|
||||
| 141 | `1.60\ver_1.681.zip` | autoload/class.S.php |
|
||||
| 142 | `1.60\ver_1.684.zip` | autoload/class.S.php |
|
||||
| 143 | `1.60\ver_1.687.zip` | autoload/admin/factory/class.Update.php, autoload/class.S.php |
|
||||
| 144 | `1.60\ver_1.688.zip` | autoload/admin/factory/class.Update.php |
|
||||
| 145 | `1.60\ver_1.690.zip` | autoload/admin/factory/class.Update.php |
|
||||
| 146 | `1.60\ver_1.691.zip` | autoload/class.S.php, autoload/Shared/Helpers/Helpers.php |
|
||||
| 147 | `1.60\ver_1.694.zip` | autoload/Shared/Helpers/Helpers.php |
|
||||
|
||||
## Bledy odczytu
|
||||
|
||||
_Brak._
|
||||
|
||||
## Pelna lista (raw)
|
||||
|
||||
| Paczka | FilesPresent | HasBuggyUrl | Action |
|
||||
|--------|--------------|-------------|--------|
|
||||
| `cmsPro.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `0.00\ver_0.01.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.00\ver_0.02.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.00\ver_0.03.zip` | autoload/admin/factory/class.Update.php | False | OK (already https) |
|
||||
| `0.00\ver_0.04.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.00\ver_0.05.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.00\ver_0.06.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.00\ver_0.07.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.00\ver_0.08.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.00\ver_0.09.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.10\ver_0.10.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.10\ver_0.11.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.10\ver_0.12.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.10\ver_0.13.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.10\ver_0.14.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.10\ver_0.15.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.10\ver_0.16.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.10\ver_0.17.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.10\ver_0.18.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.10\ver_0.19.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.20\ver_0.20.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.20\ver_0.21.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.20\ver_0.22.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `0.20\ver_0.23.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.20\ver_0.24.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.20\ver_0.25.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.20\ver_0.26.zip` | autoload/admin/factory/class.Update.php | False | OK (already https) |
|
||||
| `0.30\ver_0.38.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `0.30\ver_0.39.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.40\ver_0.40.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.40\ver_0.41.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.40\ver_0.42.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.40\ver_0.43.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.40\ver_0.44.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.40\ver_0.45.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.40\ver_0.46.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.40\ver_0.47.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.40\ver_0.48.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.40\ver_0.49.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.50\ver_0.50.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.50\ver_0.51.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.50\ver_0.52.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.50\ver_0.53.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.50\ver_0.54.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.50\ver_0.55.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.50\ver_0.56.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.50\ver_0.57.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.50\ver_0.58.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.50\ver_0.59.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.60\ver_0.60.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.60\ver_0.61.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.60\ver_0.62.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.60\ver_0.63.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.60\ver_0.64.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.60\ver_0.65.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.60\ver_0.66.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.60\ver_0.67.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.60\ver_0.68.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.60\ver_0.69.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.70\ver_0.70.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.70\ver_0.71.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.70\ver_0.72.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.70\ver_0.73.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.70\ver_0.74.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.70\ver_0.75.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.70\ver_0.76.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.70\ver_0.77.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.70\ver_0.78.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.70\ver_0.79.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.80\ver_0.80.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.80\ver_0.81.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.80\ver_0.82.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.80\ver_0.83.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.80\ver_0.84.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.80\ver_0.85.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.80\ver_0.86.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.80\ver_0.87.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.80\ver_0.88.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.80\ver_0.89.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.90\ver_0.90.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.90\ver_0.91.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.90\ver_0.92.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.90\ver_0.93.zip` | autoload/admin/factory/class.Update.php | False | OK (already https) |
|
||||
| `0.90\ver_0.94.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `0.90\ver_0.95.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.90\ver_0.96.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.90\ver_0.97.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.90\ver_0.98.zip` | - | False | N/A (no suspect files) |
|
||||
| `0.90\ver_0.99.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.00\ver_1.00.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.00\ver_1.01.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.00\ver_1.02.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.00\ver_1.03.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.00\ver_1.04.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.00\ver_1.05.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.00\ver_1.06.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.00\ver_1.07.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.00\ver_1.08.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.00\ver_1.09.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.10\ver_1.10.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.10\ver_1.11.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.10\ver_1.12.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.10\ver_1.13.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.10\ver_1.14.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.10\ver_1.15.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.10\ver_1.16.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.10\ver_1.17.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.10\ver_1.18.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.10\ver_1.19.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.20.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.21.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.22.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.23.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.24.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.25.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.26.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.27.zip` | autoload/admin/factory/class.Update.php | False | OK (already https) |
|
||||
| `1.20\ver_1.271.zip` | autoload/admin/factory/class.Update.php | False | OK (already https) |
|
||||
| `1.20\ver_1.272.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.273.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.274.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.20\ver_1.275.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.276.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.277.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.278.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.279.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `1.20\ver_1.280.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `1.20\ver_1.281.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.282.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.283.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.284.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.20\ver_1.285.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.20\ver_1.286.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.287.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.288.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.20\ver_1.289.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.290.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.291.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.292.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.293.zip` | autoload/admin/factory/class.Update.php | False | OK (already https) |
|
||||
| `1.20\ver_1.294.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `1.20\ver_1.295.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `1.20\ver_1.296.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.20\ver_1.297.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.20\ver_1.298.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.20\ver_1.299.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.300.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.301.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.302.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.303.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.304.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.305.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.306.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.307.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.308.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.309.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.310.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.311.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.312.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.313.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.314.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.315.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.316.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.317.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.318.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.319.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.320.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.321.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.322.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.323.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.324.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.325.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.326.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.327.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.328.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.329.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.330.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.331.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.332.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.333.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.334.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.335.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.336.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.337.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.338.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.339.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.340.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.341.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.342.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.343.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.344.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.345.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.346.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.347.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.348.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.349.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.350.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.351.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.352.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.353.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.354.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.355.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.356.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.357.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.358.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.359.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.360.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.361.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.362.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.363.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.364.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.365.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.366.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.367.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.368.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.369.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.370.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.371.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.372.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.373.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.374.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.375.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.376.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.377.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.378.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.379.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.380.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.381.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.382.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.383.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.384.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.385.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.386.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.387.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.388.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.389.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.390.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.391.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.392.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.393.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.394.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.395.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.396.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.397.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.30\ver_1.398.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.30\ver_1.399.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.400.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.401.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.402.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.403.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.404.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.405.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.406.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.407.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.408.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.409.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.410.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.411.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.412.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.413.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.414.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.415.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.416.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.417.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.418.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.419.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.420.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.421.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.422.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.423.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.424.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.425.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.426.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.427.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.428.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.429.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.430.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.431.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.432.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.433.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.434.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.435.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.436.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.437.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.438.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.439.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.440.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.441.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.442.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.443.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.444.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.445.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.446.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.447.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.448.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.449.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.450.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.451.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.452.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.453.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.454.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.455.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.456.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.457.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.458.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.459.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.460.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.461.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.462.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.463.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.464.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.465.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.466.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.467.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.468.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.469.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.470.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.471.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.472.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.473.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.474.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.475.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.476.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.477.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.478.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.479.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.480.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.481.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.482.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.483.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.484.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.485.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.486.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.487.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.488.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.489.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.490.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.491.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.492.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.493.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.494.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.495.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.496.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.497.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.40\ver_1.498.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.40\ver_1.499.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.500.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.501.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.502.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.503.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.504.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.505.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.506.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.507.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.508.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.509.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.510.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.511.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.512.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.513.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.514.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.515.zip` | autoload/admin/factory/class.Update.php | False | OK (already https) |
|
||||
| `1.50\ver_1.516.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.517.zip` | autoload/admin/factory/class.Update.php | False | OK (already https) |
|
||||
| `1.50\ver_1.518.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.519.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.520.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.521.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.522.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.523.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.524.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.525.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.526.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.527.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.528.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.529.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.530.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.531.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.532.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.533.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.534.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.535.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.536.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.537.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.538.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.539.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.540.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.541.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.542.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.543.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.544.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.545.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.546.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.547.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.548.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.549.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.550.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.551.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.552.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.553.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.554.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.555.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.556.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.557.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.558.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.559.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.560.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.561.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.562.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.563.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.564.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.565.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.566.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.567.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.568.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.569.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.570.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.571.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.572.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.573.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.574.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.575.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.576.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.577.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.578.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.579.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.580.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.581.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.582.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.583.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.584.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.585.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.586.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.587.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.588.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.589.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.590.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.591.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.50\ver_1.592.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.593.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.594.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.595.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.596.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.597.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.598.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.50\ver_1.599.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.600.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.601.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.602.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.603.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.604.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.605.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.606.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.607.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.608.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.609.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.610.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.611.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.612.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.613.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.614.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.615.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.616.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.617.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.618.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.619.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.620.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.621.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.622.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.623.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.624.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.625.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.626.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.627.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.628.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.629.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.630.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.631.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.632.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.633.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.634.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.635.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.636.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.637.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.638.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.639.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.640.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.641.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.642.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.643.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.644.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.645.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.646.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.647.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.648.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.649.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.650.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.651.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.652.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.653.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.654.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.655.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.656.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.657.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.658.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.659.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.660.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.661.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.662.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.663.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.664.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.665.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.666.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.667.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.668.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.669.zip` | autoload/admin/factory/class.Update.php | False | OK (already https) |
|
||||
| `1.60\ver_1.670.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.671.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.672.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.673.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.674.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.675.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.676.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.677.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.678.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.679.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.680.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.681.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.682.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.683.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.684.zip` | autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.685.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.686.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.687.zip` | autoload/admin/factory/class.Update.php; autoload/class.S.php | False | OK (already https) |
|
||||
| `1.60\ver_1.688.zip` | autoload/admin/factory/class.Update.php | False | OK (already https) |
|
||||
| `1.60\ver_1.689.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.690.zip` | autoload/admin/factory/class.Update.php | False | OK (already https) |
|
||||
| `1.60\ver_1.691.zip` | autoload/class.S.php; autoload/Shared/Helpers/Helpers.php | False | OK (already https) |
|
||||
| `1.60\ver_1.692.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.693.zip` | - | False | N/A (no suspect files) |
|
||||
| `1.60\ver_1.694.zip` | autoload/Shared/Helpers/Helpers.php | False | OK (already https) |
|
||||
| `1.60\ver_1.695.zip` | - | False | N/A (no suspect files) |
|
||||
144
.paul/phases/04h-hotfix-https-updates/patch-log.md
Normal file
144
.paul/phases/04h-hotfix-https-updates/patch-log.md
Normal file
@@ -0,0 +1,144 @@
|
||||
# Patch Log: paczki aktualizacji cmsPRO (HTTP -> HTTPS)
|
||||
|
||||
**Data:** 2026-04-26 00:14
|
||||
**DryRun:** False
|
||||
|
||||
## Podsumowanie
|
||||
|
||||
| Kategoria | Liczba |
|
||||
|-----------|--------|
|
||||
| Paczek przeskanowanych | 542 |
|
||||
| **Spatchowanych** | **121** |
|
||||
| Pominietych (juz OK / brak buggy) | 421 |
|
||||
| Manifestow zaktualizowanych | 2 |
|
||||
| Bledow | 0 |
|
||||
|
||||
## Spatchowane paczki
|
||||
|
||||
| # | Paczka | Pliki | SHA256 (przed) | SHA256 (po) | Manifest |
|
||||
|---|--------|-------|----------------|-------------|----------|
|
||||
| 1 | `cmsPro.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `04bae6b928e3` | `34f3efaee333` | - |
|
||||
| 2 | `1.20\ver_1.279.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `383c5ffa3d54` | `4b2fb3dfc445` | - |
|
||||
| 3 | `1.20\ver_1.280.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `383c5ffa3d54` | `4b2fb3dfc445` | - |
|
||||
| 4 | `1.20\ver_1.284.zip` | autoload/class.S.php | `341663d2657e` | `bec02c70641f` | - |
|
||||
| 5 | `1.20\ver_1.285.zip` | autoload/class.S.php | `ec1a21ebe839` | `bd3d14f0db85` | - |
|
||||
| 6 | `1.20\ver_1.288.zip` | autoload/class.S.php | `f436e004c786` | `b1e5485ce02b` | - |
|
||||
| 7 | `1.20\ver_1.293.zip` | autoload/admin/factory/class.Update.php | `5d252576ec2b` | `a90a58d4eac0` | - |
|
||||
| 8 | `1.20\ver_1.294.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `6ca587ed550b` | `dcbfc2f89315` | - |
|
||||
| 9 | `1.20\ver_1.295.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `6ca587ed550b` | `dcbfc2f89315` | - |
|
||||
| 10 | `1.20\ver_1.297.zip` | autoload/class.S.php | `a16402bfd885` | `9adf6ec503b6` | - |
|
||||
| 11 | `1.20\ver_1.298.zip` | autoload/class.S.php | `30a2c3850523` | `dafec72f64cc` | - |
|
||||
| 12 | `1.30\ver_1.300.zip` | autoload/class.S.php | `c2244b07f69b` | `59bafbe0d389` | - |
|
||||
| 13 | `1.30\ver_1.306.zip` | autoload/class.S.php | `1c2278ca6c69` | `ff5978122aae` | - |
|
||||
| 14 | `1.30\ver_1.308.zip` | autoload/class.S.php | `a50998bb71ac` | `20c441d164fc` | - |
|
||||
| 15 | `1.30\ver_1.318.zip` | autoload/class.S.php | `1563bb506a27` | `9497bf555b14` | - |
|
||||
| 16 | `1.30\ver_1.323.zip` | autoload/class.S.php | `3066c4d5bbc4` | `068f67dae09b` | - |
|
||||
| 17 | `1.30\ver_1.326.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `87a17ea013b8` | `24e06f56613d` | - |
|
||||
| 18 | `1.30\ver_1.334.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `739aa23ec849` | `a7beadc4e1f5` | - |
|
||||
| 19 | `1.30\ver_1.335.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `6ce01894f1ad` | `d7fdcd6ac697` | - |
|
||||
| 20 | `1.30\ver_1.339.zip` | autoload/class.S.php | `04fbfdc032bc` | `afb31fa769a6` | - |
|
||||
| 21 | `1.30\ver_1.346.zip` | autoload/class.S.php | `de601e22fd37` | `9cb19d96f645` | - |
|
||||
| 22 | `1.30\ver_1.350.zip` | autoload/class.S.php | `957051eaa2e8` | `4c10a14b2765` | - |
|
||||
| 23 | `1.30\ver_1.352.zip` | autoload/class.S.php | `18c85499de9f` | `a6a675bb9df9` | - |
|
||||
| 24 | `1.30\ver_1.354.zip` | autoload/class.S.php | `10636d8b1a5d` | `4871da20d1a4` | - |
|
||||
| 25 | `1.30\ver_1.355.zip` | autoload/class.S.php | `c20d8850537e` | `778996580d18` | - |
|
||||
| 26 | `1.30\ver_1.356.zip` | autoload/class.S.php | `f046ae370ae7` | `2b18edb393c3` | - |
|
||||
| 27 | `1.30\ver_1.357.zip` | autoload/class.S.php | `6a64787b2145` | `8119cc274771` | - |
|
||||
| 28 | `1.30\ver_1.359.zip` | autoload/class.S.php | `4fad5c6aabf7` | `a279ab6d1d01` | - |
|
||||
| 29 | `1.30\ver_1.360.zip` | autoload/class.S.php | `4fad5c6aabf7` | `a279ab6d1d01` | - |
|
||||
| 30 | `1.30\ver_1.370.zip` | autoload/class.S.php | `d0352704b455` | `f0495f6a5bb2` | - |
|
||||
| 31 | `1.30\ver_1.371.zip` | autoload/class.S.php | `9fa1a7d972dc` | `40acbb4d8daa` | - |
|
||||
| 32 | `1.30\ver_1.372.zip` | autoload/class.S.php | `daa6036ab2f0` | `f67eb93cd71e` | - |
|
||||
| 33 | `1.30\ver_1.375.zip` | autoload/class.S.php | `8166a9d6f04b` | `47664cb7b525` | - |
|
||||
| 34 | `1.30\ver_1.387.zip` | autoload/class.S.php | `61ee5812a27f` | `bd7e98161c4c` | - |
|
||||
| 35 | `1.30\ver_1.396.zip` | autoload/class.S.php | `6eb93b7df885` | `5fd970139fcf` | - |
|
||||
| 36 | `1.30\ver_1.397.zip` | autoload/class.S.php | `56127b22eca8` | `ceb27382c399` | - |
|
||||
| 37 | `1.40\ver_1.402.zip` | autoload/class.S.php | `d8b25871e93d` | `52b24d0bb654` | - |
|
||||
| 38 | `1.40\ver_1.406.zip` | autoload/class.S.php | `d7b27ca558b4` | `a56ab8fd41ca` | - |
|
||||
| 39 | `1.40\ver_1.408.zip` | autoload/class.S.php | `302fc65269a4` | `16f159ead1ec` | - |
|
||||
| 40 | `1.40\ver_1.409.zip` | autoload/class.S.php | `df802724890d` | `3e067a83eaa3` | - |
|
||||
| 41 | `1.40\ver_1.410.zip` | autoload/class.S.php | `f4be5e2e0999` | `f5b8263df2e0` | - |
|
||||
| 42 | `1.40\ver_1.411.zip` | autoload/class.S.php | `bd62c4c04ff4` | `6f7b3e395294` | - |
|
||||
| 43 | `1.40\ver_1.412.zip` | autoload/class.S.php | `167b2313fa75` | `f3afa5ff7b13` | - |
|
||||
| 44 | `1.40\ver_1.426.zip` | autoload/class.S.php | `c6a5ac5b6555` | `e37dfc765c9b` | - |
|
||||
| 45 | `1.40\ver_1.432.zip` | autoload/class.S.php | `4395bf30ba05` | `9b92326416e1` | - |
|
||||
| 46 | `1.40\ver_1.449.zip` | autoload/class.S.php | `b29b8684b667` | `c90420d409df` | - |
|
||||
| 47 | `1.40\ver_1.456.zip` | autoload/class.S.php | `b0ca8b1e84b2` | `6b571e185eff` | - |
|
||||
| 48 | `1.40\ver_1.462.zip` | autoload/class.S.php | `031403360a00` | `2a2aa3da9ca6` | - |
|
||||
| 49 | `1.40\ver_1.463.zip` | autoload/class.S.php | `01f728b96367` | `ce73866bc9ec` | - |
|
||||
| 50 | `1.40\ver_1.464.zip` | autoload/class.S.php | `d0bfa1257815` | `a63b24622550` | - |
|
||||
| 51 | `1.40\ver_1.482.zip` | autoload/class.S.php | `54257f3166e7` | `14d264b0b98d` | - |
|
||||
| 52 | `1.40\ver_1.485.zip` | autoload/class.S.php | `c038736f6415` | `e9deb7665bfe` | - |
|
||||
| 53 | `1.40\ver_1.490.zip` | autoload/class.S.php | `6d7d8dff3272` | `93b467cf6aba` | - |
|
||||
| 54 | `1.40\ver_1.496.zip` | autoload/class.S.php | `c8561f2bfc73` | `61d06089ad5a` | - |
|
||||
| 55 | `1.40\ver_1.498.zip` | autoload/class.S.php | `220174971e2a` | `cbe13607769e` | - |
|
||||
| 56 | `1.50\ver_1.504.zip` | autoload/class.S.php | `a136d6d17452` | `73d34dd29ec7` | - |
|
||||
| 57 | `1.50\ver_1.507.zip` | autoload/class.S.php | `92138e1cbf75` | `859b77852121` | - |
|
||||
| 58 | `1.50\ver_1.511.zip` | autoload/class.S.php | `404dc62348c5` | `9b7efaa0fc8a` | - |
|
||||
| 59 | `1.50\ver_1.513.zip` | autoload/class.S.php | `25aa0ad5b615` | `3adc785ae512` | - |
|
||||
| 60 | `1.50\ver_1.515.zip` | autoload/admin/factory/class.Update.php | `61031c1265d2` | `06b3ea74f6a6` | - |
|
||||
| 61 | `1.50\ver_1.517.zip` | autoload/admin/factory/class.Update.php | `f5d3ab1991a0` | `2c253235eb13` | - |
|
||||
| 62 | `1.50\ver_1.518.zip` | autoload/class.S.php | `edb21793a950` | `ea8f832ca9b8` | - |
|
||||
| 63 | `1.50\ver_1.529.zip` | autoload/class.S.php | `ef2ec535dc95` | `1bfc6ee162c0` | - |
|
||||
| 64 | `1.50\ver_1.532.zip` | autoload/class.S.php | `2254ab1050ea` | `b1f5a3400238` | - |
|
||||
| 65 | `1.50\ver_1.533.zip` | autoload/class.S.php | `6474410a3c98` | `50a8d5ab9f3e` | - |
|
||||
| 66 | `1.50\ver_1.534.zip` | autoload/class.S.php | `d0c5b337504d` | `615a96b461eb` | - |
|
||||
| 67 | `1.50\ver_1.535.zip` | autoload/class.S.php | `a8b92c86e805` | `9f0b57ca61e0` | - |
|
||||
| 68 | `1.50\ver_1.536.zip` | autoload/class.S.php | `41bf5f8732f0` | `dbb21c2ad437` | - |
|
||||
| 69 | `1.50\ver_1.539.zip` | autoload/class.S.php | `a3ebe014dfe0` | `f6e47e6e0222` | - |
|
||||
| 70 | `1.50\ver_1.541.zip` | autoload/class.S.php | `55e86b6ffc1d` | `339e6478b788` | - |
|
||||
| 71 | `1.50\ver_1.546.zip` | autoload/class.S.php | `8a9609fcfe06` | `a4004fc40564` | - |
|
||||
| 72 | `1.50\ver_1.551.zip` | autoload/class.S.php | `2fa830f98b5c` | `f2a194a21f6f` | - |
|
||||
| 73 | `1.50\ver_1.552.zip` | autoload/class.S.php | `8f5f0cb91f2c` | `02b36e5b9337` | - |
|
||||
| 74 | `1.50\ver_1.554.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `c891ab97735a` | `c1e8e006b29b` | - |
|
||||
| 75 | `1.50\ver_1.555.zip` | autoload/class.S.php | `90528256f87f` | `2e6766d04fe7` | - |
|
||||
| 76 | `1.50\ver_1.556.zip` | autoload/class.S.php | `09fe7fc6d4a2` | `575168eccdcf` | - |
|
||||
| 77 | `1.50\ver_1.557.zip` | autoload/class.S.php | `0fba22ceb174` | `e306fcd762bb` | - |
|
||||
| 78 | `1.50\ver_1.561.zip` | autoload/class.S.php | `c89b99f8baab` | `404e55549823` | - |
|
||||
| 79 | `1.50\ver_1.568.zip` | autoload/class.S.php | `19aef1df0e1d` | `d767239d552f` | - |
|
||||
| 80 | `1.50\ver_1.572.zip` | autoload/class.S.php | `c80d3cfeea79` | `bc3fcfab57a2` | - |
|
||||
| 81 | `1.50\ver_1.583.zip` | autoload/class.S.php | `24d62f53257e` | `c391e2ad9b33` | - |
|
||||
| 82 | `1.50\ver_1.587.zip` | autoload/class.S.php | `04d93d40b294` | `aa29c628ff35` | - |
|
||||
| 83 | `1.50\ver_1.589.zip` | autoload/class.S.php | `2c60a2500e99` | `7edb90603631` | - |
|
||||
| 84 | `1.50\ver_1.591.zip` | autoload/class.S.php | `05b8f2d1eac4` | `fb5efec03d4a` | - |
|
||||
| 85 | `1.60\ver_1.602.zip` | autoload/class.S.php | `30812c674805` | `1209aed9a2e6` | - |
|
||||
| 86 | `1.60\ver_1.610.zip` | autoload/class.S.php | `b0a1d536f259` | `a43d167c6e94` | - |
|
||||
| 87 | `1.60\ver_1.613.zip` | autoload/class.S.php | `722ed3ab1c42` | `6ed29eb56f96` | - |
|
||||
| 88 | `1.60\ver_1.617.zip` | autoload/class.S.php | `286f0ac05dd5` | `b9c84e970579` | - |
|
||||
| 89 | `1.60\ver_1.618.zip` | autoload/class.S.php | `c403d23083cd` | `2864ad9815ce` | - |
|
||||
| 90 | `1.60\ver_1.620.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `61552b13a991` | `e06a9ea5cf48` | - |
|
||||
| 91 | `1.60\ver_1.625.zip` | autoload/class.S.php | `a9d90461abbf` | `60ac3e95fe76` | - |
|
||||
| 92 | `1.60\ver_1.626.zip` | autoload/class.S.php | `ae75632e7acf` | `947e9bc3ec7d` | - |
|
||||
| 93 | `1.60\ver_1.627.zip` | autoload/class.S.php | `b4078fe9f7d9` | `222c2f3c0d00` | - |
|
||||
| 94 | `1.60\ver_1.628.zip` | autoload/class.S.php | `fb3bcb641657` | `4c8c937aa428` | - |
|
||||
| 95 | `1.60\ver_1.633.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `5fc3f3855729` | `f2820c8d647f` | - |
|
||||
| 96 | `1.60\ver_1.634.zip` | autoload/class.S.php | `2af4b2e2980c` | `3ec716159037` | - |
|
||||
| 97 | `1.60\ver_1.638.zip` | autoload/class.S.php | `38f87bb189f9` | `7679e1fdc953` | - |
|
||||
| 98 | `1.60\ver_1.642.zip` | autoload/class.S.php | `b2921f4dd4ab` | `b28d236d6074` | - |
|
||||
| 99 | `1.60\ver_1.643.zip` | autoload/class.S.php | `08f45c6fe81e` | `3dbcda086ed9` | - |
|
||||
| 100 | `1.60\ver_1.644.zip` | autoload/class.S.php | `6255d181f388` | `0ea76c426355` | - |
|
||||
| 101 | `1.60\ver_1.645.zip` | autoload/class.S.php | `6fd50691508f` | `e83b7996da93` | - |
|
||||
| 102 | `1.60\ver_1.649.zip` | autoload/class.S.php | `936220b76848` | `dc9ffe727576` | - |
|
||||
| 103 | `1.60\ver_1.650.zip` | autoload/class.S.php | `f4717adef625` | `99886a7c717f` | - |
|
||||
| 104 | `1.60\ver_1.651.zip` | autoload/class.S.php | `8f92a38ba890` | `93a8b5d3e364` | - |
|
||||
| 105 | `1.60\ver_1.654.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `d458e3940db5` | `a85ffcab6cda` | - |
|
||||
| 106 | `1.60\ver_1.656.zip` | autoload/class.S.php | `14c29245a067` | `429b2eee4eec` | - |
|
||||
| 107 | `1.60\ver_1.660.zip` | autoload/class.S.php | `17dedcc2f029` | `7dca670a5179` | - |
|
||||
| 108 | `1.60\ver_1.665.zip` | autoload/class.S.php | `2f955790e96b` | `624f1f30213b` | - |
|
||||
| 109 | `1.60\ver_1.666.zip` | autoload/class.S.php | `9eafa83e3310` | `3e40380c947c` | - |
|
||||
| 110 | `1.60\ver_1.669.zip` | autoload/admin/factory/class.Update.php | `d2e905b19371` | `b794aca0108b` | - |
|
||||
| 111 | `1.60\ver_1.674.zip` | autoload/class.S.php | `57e5907e2abc` | `d7c2d02ba4aa` | - |
|
||||
| 112 | `1.60\ver_1.675.zip` | autoload/class.S.php | `8bfff26ed53e` | `70ee0f5eb299` | - |
|
||||
| 113 | `1.60\ver_1.678.zip` | autoload/class.S.php | `393b70b31c29` | `445c5b6acf4a` | - |
|
||||
| 114 | `1.60\ver_1.680.zip` | autoload/class.S.php | `1e8b8e2fc307` | `e4213bf9cc5b` | - |
|
||||
| 115 | `1.60\ver_1.681.zip` | autoload/class.S.php | `882732e2a479` | `3040f999a7d6` | - |
|
||||
| 116 | `1.60\ver_1.684.zip` | autoload/class.S.php | `20d02da8a749` | `7232b2d5dc38` | - |
|
||||
| 117 | `1.60\ver_1.687.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `915dea5e4498` | `fcd36fb50246` | - |
|
||||
| 118 | `1.60\ver_1.688.zip` | autoload/admin/factory/class.Update.php | `97333e68443c` | `89c7a6cbcbd7` | - |
|
||||
| 119 | `1.60\ver_1.690.zip` | autoload/admin/factory/class.Update.php | `5852ca60388d` | `df006d6da6ce` | - |
|
||||
| 120 | `1.60\ver_1.691.zip` | autoload/Shared/Helpers/Helpers.php | `f53230f36d39` | `5a0087c09a5c` | YES |
|
||||
| 121 | `1.60\ver_1.694.zip` | autoload/Shared/Helpers/Helpers.php | `a21dc4a768bc` | `523351891882` | YES |
|
||||
|
||||
## Bledy
|
||||
|
||||
_Brak._
|
||||
76
.paul/phases/04h-hotfix-https-updates/patch-urlencode-log.md
Normal file
76
.paul/phases/04h-hotfix-https-updates/patch-urlencode-log.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# Patch Log: urlencode($settings[update_key])
|
||||
|
||||
**Data:** 2026-04-26 00:22
|
||||
|
||||
Spatchowanych: 64
|
||||
Pominietych: 478
|
||||
Manifestow zaktualizowanych: 2
|
||||
Bledow: 0
|
||||
|
||||
## Spatchowane
|
||||
| # | Paczka | Pliki | SHA256 (po) |
|
||||
|---|--------|-------|-------------|
|
||||
| 1 | `1.50\ver_1.513.zip` | autoload/class.S.php | `18ec985d1b29a945` |
|
||||
| 2 | `1.50\ver_1.515.zip` | autoload/admin/factory/class.Update.php | `7ff25bed81fe7767` |
|
||||
| 3 | `1.50\ver_1.517.zip` | autoload/admin/factory/class.Update.php | `6b448734200893a5` |
|
||||
| 4 | `1.50\ver_1.518.zip` | autoload/class.S.php | `d50e62f31c56384b` |
|
||||
| 5 | `1.50\ver_1.519.zip` | autoload/class.S.php<br>autoload/admin/factory/class.Update.php | `14e5754c75884fcc` |
|
||||
| 6 | `1.50\ver_1.529.zip` | autoload/class.S.php | `a5846aca666e0d5d` |
|
||||
| 7 | `1.50\ver_1.532.zip` | autoload/class.S.php | `e8dd85b2449f84c0` |
|
||||
| 8 | `1.50\ver_1.533.zip` | autoload/class.S.php | `f8a25cf6ba08f2be` |
|
||||
| 9 | `1.50\ver_1.534.zip` | autoload/class.S.php | `4dca134b68ee82a2` |
|
||||
| 10 | `1.50\ver_1.535.zip` | autoload/class.S.php | `b5365d4c100e37ab` |
|
||||
| 11 | `1.50\ver_1.536.zip` | autoload/class.S.php | `b70902dfb4060d7a` |
|
||||
| 12 | `1.50\ver_1.539.zip` | autoload/class.S.php | `6d29304b96132ebd` |
|
||||
| 13 | `1.50\ver_1.541.zip` | autoload/class.S.php | `cff7f6080a57ed66` |
|
||||
| 14 | `1.50\ver_1.546.zip` | autoload/class.S.php | `9b60fae7f31e5df2` |
|
||||
| 15 | `1.50\ver_1.551.zip` | autoload/class.S.php | `f8ee40fa330d68da` |
|
||||
| 16 | `1.50\ver_1.552.zip` | autoload/class.S.php | `ad203f8df17e2d10` |
|
||||
| 17 | `1.50\ver_1.554.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `18ebfa82dce8a823` |
|
||||
| 18 | `1.50\ver_1.555.zip` | autoload/class.S.php | `f61a10c36b50b36b` |
|
||||
| 19 | `1.50\ver_1.556.zip` | autoload/class.S.php | `e4b0d3cd835a3657` |
|
||||
| 20 | `1.50\ver_1.557.zip` | autoload/class.S.php | `8002b8508c1b9b14` |
|
||||
| 21 | `1.50\ver_1.561.zip` | autoload/class.S.php | `9be69833265da2c8` |
|
||||
| 22 | `1.50\ver_1.568.zip` | autoload/class.S.php | `dd90fc869058e5a7` |
|
||||
| 23 | `1.50\ver_1.572.zip` | autoload/class.S.php | `eb0071b94e6342b6` |
|
||||
| 24 | `1.50\ver_1.583.zip` | autoload/class.S.php | `faf7037812cb1345` |
|
||||
| 25 | `1.50\ver_1.587.zip` | autoload/class.S.php | `a000fc230209cad4` |
|
||||
| 26 | `1.50\ver_1.589.zip` | autoload/class.S.php | `23ec9d2ac905f868` |
|
||||
| 27 | `1.50\ver_1.591.zip` | autoload/class.S.php | `1a69cbc0d87d1f02` |
|
||||
| 28 | `1.60\ver_1.602.zip` | autoload/class.S.php | `b6bf83583aea4c1c` |
|
||||
| 29 | `1.60\ver_1.610.zip` | autoload/class.S.php | `a2eb640e5660e51e` |
|
||||
| 30 | `1.60\ver_1.613.zip` | autoload/class.S.php | `d580047296a40951` |
|
||||
| 31 | `1.60\ver_1.617.zip` | autoload/class.S.php | `e4b9d2ecd6b62101` |
|
||||
| 32 | `1.60\ver_1.618.zip` | autoload/class.S.php | `da0dccd5d8129f36` |
|
||||
| 33 | `1.60\ver_1.620.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `87388a9b597048e0` |
|
||||
| 34 | `1.60\ver_1.625.zip` | autoload/class.S.php | `af0005fea825b432` |
|
||||
| 35 | `1.60\ver_1.626.zip` | autoload/class.S.php | `cf084b0f8da8fb34` |
|
||||
| 36 | `1.60\ver_1.627.zip` | autoload/class.S.php | `2602fedd545a2b84` |
|
||||
| 37 | `1.60\ver_1.628.zip` | autoload/class.S.php | `33d618d0d5979394` |
|
||||
| 38 | `1.60\ver_1.633.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `6199f98c0153f2cb` |
|
||||
| 39 | `1.60\ver_1.634.zip` | autoload/class.S.php | `3356e9fdff7ee6fd` |
|
||||
| 40 | `1.60\ver_1.638.zip` | autoload/class.S.php | `e436f5498d9eac82` |
|
||||
| 41 | `1.60\ver_1.642.zip` | autoload/class.S.php | `73db0af058c4dd8e` |
|
||||
| 42 | `1.60\ver_1.643.zip` | autoload/class.S.php | `5dd7505e5e9b69f9` |
|
||||
| 43 | `1.60\ver_1.644.zip` | autoload/class.S.php | `3bbf16d10e6101a6` |
|
||||
| 44 | `1.60\ver_1.645.zip` | autoload/class.S.php | `dc7554805828db03` |
|
||||
| 45 | `1.60\ver_1.649.zip` | autoload/class.S.php | `a34f456bb22bb49a` |
|
||||
| 46 | `1.60\ver_1.650.zip` | autoload/class.S.php | `1fded4e332087edd` |
|
||||
| 47 | `1.60\ver_1.651.zip` | autoload/class.S.php | `974d9c1ed41db26c` |
|
||||
| 48 | `1.60\ver_1.654.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `23c1a14906b34e2c` |
|
||||
| 49 | `1.60\ver_1.656.zip` | autoload/class.S.php | `e249d78fedc6d3b2` |
|
||||
| 50 | `1.60\ver_1.660.zip` | autoload/class.S.php | `7068186d0fde2b1e` |
|
||||
| 51 | `1.60\ver_1.665.zip` | autoload/class.S.php | `aa1fb3977f5f941c` |
|
||||
| 52 | `1.60\ver_1.666.zip` | autoload/class.S.php | `437e09dfda4f3341` |
|
||||
| 53 | `1.60\ver_1.669.zip` | autoload/admin/factory/class.Update.php | `1885535d8ab2ce8c` |
|
||||
| 54 | `1.60\ver_1.674.zip` | autoload/class.S.php | `9fca9ce185a525b8` |
|
||||
| 55 | `1.60\ver_1.675.zip` | autoload/class.S.php | `4aad98f5cfb2aa45` |
|
||||
| 56 | `1.60\ver_1.678.zip` | autoload/class.S.php | `3541cf1cde4deeae` |
|
||||
| 57 | `1.60\ver_1.680.zip` | autoload/class.S.php | `9a26b92b885b6e9d` |
|
||||
| 58 | `1.60\ver_1.681.zip` | autoload/class.S.php | `8fb40bb9e3169797` |
|
||||
| 59 | `1.60\ver_1.684.zip` | autoload/class.S.php | `0ee052905077606a` |
|
||||
| 60 | `1.60\ver_1.687.zip` | autoload/admin/factory/class.Update.php<br>autoload/class.S.php | `106e9ac25acf7ed1` |
|
||||
| 61 | `1.60\ver_1.688.zip` | autoload/admin/factory/class.Update.php | `e77a529410dc519a` |
|
||||
| 62 | `1.60\ver_1.690.zip` | autoload/admin/factory/class.Update.php | `045d16e46da68af4` |
|
||||
| 63 | `1.60\ver_1.691.zip` | autoload/Shared/Helpers/Helpers.php | `5e53b1fbf6c5c923` |
|
||||
| 64 | `1.60\ver_1.694.zip` | autoload/Shared/Helpers/Helpers.php | `cbd51178b1caf4d8` |
|
||||
169
.paul/phases/04h-hotfix-https-updates/scripts/audit-packages.ps1
Normal file
169
.paul/phases/04h-hotfix-https-updates/scripts/audit-packages.ps1
Normal file
@@ -0,0 +1,169 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Audit wszystkich paczek aktualizacji cmsPRO pod katem buggy http:// URL.
|
||||
|
||||
.DESCRIPTION
|
||||
Skanuje rekursywnie kazdy ZIP w updates/ (cmsPro.zip oraz updates/**/ver_*.zip).
|
||||
Dla kazdego ZIP-a sprawdza czy zawiera pliki kandydujace
|
||||
(autoload/class.S.php, autoload/Shared/Helpers/Helpers.php,
|
||||
autoload/admin/factory/class.Update.php) i czy te pliki zawieraja
|
||||
ciag 'http://www.cmspro.project-dc.pl'.
|
||||
|
||||
Output: audit-report.md (tabela markdown sortowana po wersji).
|
||||
Skrypt NIE modyfikuje paczek.
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$UpdatesDir = "C:\visual studio code\projekty\cmsPRO\updates",
|
||||
[string]$ReportPath = "C:\visual studio code\projekty\cmsPRO\.paul\phases\04h-hotfix-https-updates\audit-report.md"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||
|
||||
$BuggyPattern = 'http://www.cmspro.project-dc.pl'
|
||||
$SuspectFiles = @(
|
||||
'autoload/class.S.php',
|
||||
'autoload/Shared/Helpers/Helpers.php',
|
||||
'autoload/admin/factory/class.Update.php'
|
||||
)
|
||||
|
||||
function Test-ZipForBug {
|
||||
param([string]$ZipPath)
|
||||
|
||||
$result = [PSCustomObject]@{
|
||||
Package = (Resolve-Path $ZipPath).Path.Substring($UpdatesDir.Length).TrimStart('\','/')
|
||||
FilesPresent = @()
|
||||
BuggyFiles = @()
|
||||
HasBuggyUrl = $false
|
||||
Action = 'N/A'
|
||||
Error = $null
|
||||
}
|
||||
|
||||
try {
|
||||
$zip = [System.IO.Compression.ZipFile]::OpenRead($ZipPath)
|
||||
foreach ($entry in $zip.Entries) {
|
||||
$name = $entry.FullName.Replace('\','/')
|
||||
if ($SuspectFiles -contains $name) {
|
||||
$result.FilesPresent += $name
|
||||
$reader = New-Object System.IO.StreamReader($entry.Open())
|
||||
$content = $reader.ReadToEnd()
|
||||
$reader.Close()
|
||||
if ($content -match [regex]::Escape($BuggyPattern)) {
|
||||
$result.BuggyFiles += $name
|
||||
$result.HasBuggyUrl = $true
|
||||
}
|
||||
}
|
||||
}
|
||||
$zip.Dispose()
|
||||
} catch {
|
||||
$result.Error = $_.Exception.Message
|
||||
}
|
||||
|
||||
if ($result.HasBuggyUrl) { $result.Action = 'PATCH' }
|
||||
elseif ($result.FilesPresent) { $result.Action = 'OK (already https)' }
|
||||
else { $result.Action = 'N/A (no suspect files)' }
|
||||
|
||||
return $result
|
||||
}
|
||||
|
||||
Write-Host "Skanuje $UpdatesDir ..." -ForegroundColor Cyan
|
||||
|
||||
$zips = @()
|
||||
$baseInstall = Join-Path $UpdatesDir 'cmsPro.zip'
|
||||
if (Test-Path $baseInstall) { $zips += $baseInstall }
|
||||
$zips += Get-ChildItem -Path $UpdatesDir -Filter 'ver_*.zip' -Recurse | Sort-Object FullName | ForEach-Object { $_.FullName }
|
||||
|
||||
Write-Host "Znaleziono $($zips.Count) paczek." -ForegroundColor Cyan
|
||||
|
||||
$results = @()
|
||||
$i = 0
|
||||
foreach ($zip in $zips) {
|
||||
$i++
|
||||
Write-Progress -Activity "Audit paczek" -Status "$i / $($zips.Count): $(Split-Path $zip -Leaf)" -PercentComplete (($i / $zips.Count) * 100)
|
||||
$results += Test-ZipForBug -ZipPath $zip
|
||||
}
|
||||
Write-Progress -Activity "Audit paczek" -Completed
|
||||
|
||||
# --- Raport ---
|
||||
$buggy = $results | Where-Object { $_.HasBuggyUrl }
|
||||
$ok = $results | Where-Object { $_.FilesPresent -and -not $_.HasBuggyUrl }
|
||||
$none = $results | Where-Object { -not $_.FilesPresent }
|
||||
$errored = $results | Where-Object { $_.Error }
|
||||
|
||||
$lines = @()
|
||||
$lines += '# Audit Report: paczki aktualizacji cmsPRO (HTTP -> HTTPS bug)'
|
||||
$lines += ''
|
||||
$lines += "**Data:** $(Get-Date -Format 'yyyy-MM-dd HH:mm')"
|
||||
$lines += "**Katalog:** ``$UpdatesDir``"
|
||||
$lines += "**Wzorzec buggy:** ``$BuggyPattern``"
|
||||
$lines += ''
|
||||
$lines += '## Podsumowanie'
|
||||
$lines += ''
|
||||
$lines += "| Kategoria | Liczba |"
|
||||
$lines += "|-----------|--------|"
|
||||
$lines += "| Paczek przeskanowanych | $($results.Count) |"
|
||||
$lines += "| **PATCH (buggy http://)** | **$($buggy.Count)** |"
|
||||
$lines += "| OK (juz https albo brak URL) | $($ok.Count) |"
|
||||
$lines += "| N/A (brak plikow podejrzanych) | $($none.Count) |"
|
||||
$lines += "| Bledy | $($errored.Count) |"
|
||||
$lines += ''
|
||||
$lines += '## Paczki wymagajace patcha (HasBuggyUrl=true)'
|
||||
$lines += ''
|
||||
if ($buggy) {
|
||||
$lines += '| # | Paczka | Buggy pliki |'
|
||||
$lines += '|---|--------|-------------|'
|
||||
$idx = 0
|
||||
foreach ($r in $buggy) {
|
||||
$idx++
|
||||
$lines += "| $idx | ``$($r.Package)`` | $($r.BuggyFiles -join ', ') |"
|
||||
}
|
||||
} else {
|
||||
$lines += '_Brak paczek do patcha._'
|
||||
}
|
||||
$lines += ''
|
||||
$lines += '## Paczki zawierajace pliki ale juz na https (OK)'
|
||||
$lines += ''
|
||||
if ($ok) {
|
||||
$lines += '| # | Paczka | Pliki obecne |'
|
||||
$lines += '|---|--------|--------------|'
|
||||
$idx = 0
|
||||
foreach ($r in $ok) {
|
||||
$idx++
|
||||
$lines += "| $idx | ``$($r.Package)`` | $($r.FilesPresent -join ', ') |"
|
||||
}
|
||||
} else {
|
||||
$lines += '_Brak._'
|
||||
}
|
||||
$lines += ''
|
||||
$lines += '## Bledy odczytu'
|
||||
$lines += ''
|
||||
if ($errored) {
|
||||
foreach ($r in $errored) {
|
||||
$lines += "- ``$($r.Package)`` -- $($r.Error)"
|
||||
}
|
||||
} else {
|
||||
$lines += '_Brak._'
|
||||
}
|
||||
$lines += ''
|
||||
$lines += '## Pelna lista (raw)'
|
||||
$lines += ''
|
||||
$lines += '| Paczka | FilesPresent | HasBuggyUrl | Action |'
|
||||
$lines += '|--------|--------------|-------------|--------|'
|
||||
foreach ($r in $results) {
|
||||
$files = if ($r.FilesPresent) { ($r.FilesPresent -join '; ') } else { '-' }
|
||||
$lines += "| ``$($r.Package)`` | $files | $($r.HasBuggyUrl) | $($r.Action) |"
|
||||
}
|
||||
|
||||
$utf8 = New-Object System.Text.UTF8Encoding $false
|
||||
[System.IO.File]::WriteAllText($ReportPath, ($lines -join "`r`n"), $utf8)
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Audit zakonczony." -ForegroundColor Green
|
||||
Write-Host " Paczek: $($results.Count)"
|
||||
Write-Host " Do patcha: $($buggy.Count)" -ForegroundColor Yellow
|
||||
Write-Host " OK: $($ok.Count)"
|
||||
Write-Host " N/A: $($none.Count)"
|
||||
Write-Host " Bledy: $($errored.Count)"
|
||||
Write-Host "Raport: $ReportPath" -ForegroundColor Cyan
|
||||
@@ -0,0 +1,88 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Usuniecie wszystkich .bak / .preurlencode.bak / .preanchor.bak z FTP serwera i lokalnie.
|
||||
Uzywa .NET FtpWebRequest (szybsze + lepsze error handling niz curl).
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$LocalDir = "C:\visual studio code\projekty\cmsPRO\updates",
|
||||
[string]$RemoteRoot = "/public_html/updates",
|
||||
[string]$FtpHost = "host117523.hostido.net.pl",
|
||||
[string]$FtpUser = "www@cmspro.project-dc.pl",
|
||||
[string]$FtpPass = "aNDCvhA6cnHSQfM24vUE",
|
||||
[switch]$DryRun
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Continue"
|
||||
$baks = Get-ChildItem $LocalDir -Recurse -File | Where-Object { $_.Name -like '*.bak' } | Sort-Object FullName
|
||||
|
||||
Write-Host "Plikow do skasowania: $($baks.Count)"
|
||||
if ($DryRun) { Write-Host "DRY-RUN" -ForegroundColor Yellow }
|
||||
|
||||
$cred = New-Object System.Net.NetworkCredential($FtpUser, $FtpPass)
|
||||
$deleted = 0
|
||||
$notFound = 0
|
||||
$failed = 0
|
||||
$failedList = @()
|
||||
$i = 0
|
||||
|
||||
function Delete-Ftp {
|
||||
param([string]$RemotePath)
|
||||
$url = "ftp://${FtpHost}${RemotePath}"
|
||||
$req = [System.Net.FtpWebRequest]::Create($url)
|
||||
$req.Method = [System.Net.WebRequestMethods+Ftp]::DeleteFile
|
||||
$req.Credentials = $cred
|
||||
$req.UsePassive = $true
|
||||
$req.UseBinary = $true
|
||||
$req.KeepAlive = $false
|
||||
$req.Timeout = 30000
|
||||
try {
|
||||
$resp = $req.GetResponse()
|
||||
$resp.Close()
|
||||
return @{ ok = $true; status = 'deleted' }
|
||||
} catch [System.Net.WebException] {
|
||||
$msg = $_.Exception.Message
|
||||
if ($msg -match '550' -or $msg -match 'No such file') {
|
||||
return @{ ok = $true; status = 'not-found' }
|
||||
}
|
||||
return @{ ok = $false; status = 'error'; msg = $msg }
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($f in $baks) {
|
||||
$i++
|
||||
$rel = $f.FullName.Substring($LocalDir.Length).TrimStart('\','/').Replace('\','/')
|
||||
$remoteFull = "$RemoteRoot/$rel"
|
||||
|
||||
if (($i % 50) -eq 0) {
|
||||
Write-Host " $i / $($baks.Count) ... (deleted=$deleted notFound=$notFound failed=$failed)"
|
||||
}
|
||||
|
||||
if ($DryRun) {
|
||||
Write-Host " [DRY] DELE $remoteFull"
|
||||
continue
|
||||
}
|
||||
|
||||
$r = Delete-Ftp -RemotePath $remoteFull
|
||||
if ($r.ok) {
|
||||
if ($r.status -eq 'deleted') { $deleted++ } else { $notFound++ }
|
||||
Remove-Item -LiteralPath $f.FullName -Force
|
||||
} else {
|
||||
$failed++
|
||||
$failedList += "$rel -- $($r.msg)"
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Zakonczono." -ForegroundColor Green
|
||||
Write-Host " Usuniete (FTP+lokal): $deleted"
|
||||
Write-Host " Brak na serwerze (lokal usuniete): $notFound"
|
||||
Write-Host " Bledy: $failed"
|
||||
if ($failedList) {
|
||||
Write-Host "Pierwsze 10 bledow:"
|
||||
$failedList | Select-Object -First 10 | ForEach-Object { Write-Host " $_" }
|
||||
$logPath = "C:\visual studio code\projekty\cmsPRO\.paul\phases\04h-hotfix-https-updates\cleanup-errors.log"
|
||||
$failedList | Out-File -FilePath $logPath -Encoding utf8
|
||||
Write-Host "Pelny log bledow: $logPath"
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Wstrzykuje "kotwice fixa" do ver_1.519.zip.
|
||||
|
||||
.DESCRIPTION
|
||||
ver_1.519.zip oryginalnie zawiera tylko class.Articles.php.
|
||||
Dodaje do niego:
|
||||
- autoload/class.S.php z ver_1.518.zip (juz patched, https://)
|
||||
- autoload/admin/factory/class.Update.php z ver_1.517.zip (juz patched, https://)
|
||||
|
||||
Cel: kazda nowa instalacja cmsPRO przechodzaca update do 1.519 dostaje
|
||||
klient HTTPS dla mechanizmu wykrywania nowych wersji.
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$UpdatesDir = "C:\visual studio code\projekty\cmsPRO\updates"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||
|
||||
$Target = Join-Path $UpdatesDir '1.50\ver_1.519.zip'
|
||||
$SrcS = Join-Path $UpdatesDir '1.50\ver_1.518.zip'
|
||||
$SrcUpd = Join-Path $UpdatesDir '1.50\ver_1.517.zip'
|
||||
|
||||
# Backup target (oddzielny od standardowego .bak po patch-packages.ps1)
|
||||
$bak = "$Target.preanchor.bak"
|
||||
if (-not (Test-Path $bak)) {
|
||||
Copy-Item -LiteralPath $Target -Destination $bak -Force
|
||||
Write-Host "Backup utworzony: $bak" -ForegroundColor Cyan
|
||||
}
|
||||
|
||||
function Read-EntryBytes {
|
||||
param([string]$ZipPath, [string]$EntryName)
|
||||
$zip = [System.IO.Compression.ZipFile]::OpenRead($ZipPath)
|
||||
try {
|
||||
$entry = $zip.Entries | Where-Object { $_.FullName.Replace('\','/') -eq $EntryName } | Select-Object -First 1
|
||||
if (-not $entry) { throw "Entry not found: $EntryName in $ZipPath" }
|
||||
$stream = $entry.Open()
|
||||
$ms = New-Object System.IO.MemoryStream
|
||||
$stream.CopyTo($ms)
|
||||
$stream.Close()
|
||||
return $ms.ToArray()
|
||||
} finally {
|
||||
$zip.Dispose()
|
||||
}
|
||||
}
|
||||
|
||||
function Add-EntryFromBytes {
|
||||
param([string]$ZipPath, [string]$EntryName, [byte[]]$Content)
|
||||
$zip = [System.IO.Compression.ZipFile]::Open($ZipPath, [System.IO.Compression.ZipArchiveMode]::Update)
|
||||
try {
|
||||
# remove existing if present
|
||||
$existing = $zip.Entries | Where-Object { $_.FullName.Replace('\','/') -eq $EntryName } | Select-Object -First 1
|
||||
if ($existing) { $existing.Delete() }
|
||||
$newEntry = $zip.CreateEntry($EntryName, [System.IO.Compression.CompressionLevel]::Optimal)
|
||||
$stream = $newEntry.Open()
|
||||
$stream.Write($Content, 0, $Content.Length)
|
||||
$stream.Close()
|
||||
} finally {
|
||||
$zip.Dispose()
|
||||
}
|
||||
}
|
||||
|
||||
# 1. Read source files
|
||||
Write-Host "Czytam autoload/class.S.php z ver_1.518.zip..." -ForegroundColor Cyan
|
||||
$bytesS = Read-EntryBytes -ZipPath $SrcS -EntryName 'autoload/class.S.php'
|
||||
Write-Host " -> $($bytesS.Length) bytes"
|
||||
|
||||
Write-Host "Czytam autoload/admin/factory/class.Update.php z ver_1.517.zip..." -ForegroundColor Cyan
|
||||
$bytesUpd = Read-EntryBytes -ZipPath $SrcUpd -EntryName 'autoload/admin/factory/class.Update.php'
|
||||
Write-Host " -> $($bytesUpd.Length) bytes"
|
||||
|
||||
# 2. Verify they contain https:// (sanity check)
|
||||
$strS = [System.Text.Encoding]::UTF8.GetString($bytesS)
|
||||
$strUpd = [System.Text.Encoding]::UTF8.GetString($bytesUpd)
|
||||
if ($strS -match 'http://www\.cmspro\.project-dc\.pl' -or $strS -notmatch 'https://www\.cmspro\.project-dc\.pl') {
|
||||
throw "class.S.php z ver_1.518.zip nie jest patched (nadal ma http:// lub brak URL)"
|
||||
}
|
||||
if ($strUpd -match 'http://www\.cmspro\.project-dc\.pl' -or $strUpd -notmatch 'https://www\.cmspro\.project-dc\.pl') {
|
||||
throw "class.Update.php z ver_1.517.zip nie jest patched"
|
||||
}
|
||||
Write-Host "Sanity check OK: oba pliki maja https://" -ForegroundColor Green
|
||||
|
||||
# 3. Inject into ver_1.519.zip
|
||||
Write-Host "Wstrzykuje do ver_1.519.zip..." -ForegroundColor Cyan
|
||||
Add-EntryFromBytes -ZipPath $Target -EntryName 'autoload/class.S.php' -Content $bytesS
|
||||
Add-EntryFromBytes -ZipPath $Target -EntryName 'autoload/admin/factory/class.Update.php' -Content $bytesUpd
|
||||
|
||||
# 4. Verify
|
||||
Write-Host "Weryfikacja..." -ForegroundColor Cyan
|
||||
$zip = [System.IO.Compression.ZipFile]::OpenRead($Target)
|
||||
$entries = $zip.Entries | ForEach-Object { $_.FullName.Replace('\','/') }
|
||||
$zip.Dispose()
|
||||
|
||||
$ok = $true
|
||||
foreach ($req in @('autoload/class.S.php', 'autoload/admin/factory/class.Update.php', 'autoload/admin/controls/class.Articles.php')) {
|
||||
if ($entries -contains $req) {
|
||||
Write-Host " [OK] $req"
|
||||
} else {
|
||||
Write-Host " [MISSING] $req" -ForegroundColor Red
|
||||
$ok = $false
|
||||
}
|
||||
}
|
||||
|
||||
# Re-check no http://
|
||||
$rezip = [System.IO.Compression.ZipFile]::OpenRead($Target)
|
||||
foreach ($e in $rezip.Entries) {
|
||||
$n = $e.FullName.Replace('\','/')
|
||||
if ($n -in @('autoload/class.S.php', 'autoload/admin/factory/class.Update.php')) {
|
||||
$r = New-Object System.IO.StreamReader($e.Open())
|
||||
$c = $r.ReadToEnd(); $r.Close()
|
||||
if ($c -match 'http://www\.cmspro\.project-dc\.pl') {
|
||||
Write-Host " [BUGGY] $n nadal ma http://" -ForegroundColor Red
|
||||
$ok = $false
|
||||
} else {
|
||||
Write-Host " [HTTPS] $n czyste" -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
}
|
||||
$rezip.Dispose()
|
||||
|
||||
if ($ok) {
|
||||
$sha = (Get-FileHash -Algorithm SHA256 -Path $Target).Hash.ToLower()
|
||||
Write-Host ""
|
||||
Write-Host "ver_1.519.zip jest teraz kotwica fixa." -ForegroundColor Green
|
||||
Write-Host " SHA256: $sha"
|
||||
} else {
|
||||
Write-Host "Wystapily problemy - sprawdz reczny." -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
237
.paul/phases/04h-hotfix-https-updates/scripts/patch-packages.ps1
Normal file
237
.paul/phases/04h-hotfix-https-updates/scripts/patch-packages.ps1
Normal file
@@ -0,0 +1,237 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Patch wszystkich paczek aktualizacji cmsPRO: zamiana http:// -> https:// w buggy plikach.
|
||||
|
||||
.DESCRIPTION
|
||||
Skanuje rekursywnie kazdy ZIP w updates/. Dla kazdego ZIP-a zawierajacego
|
||||
pliki kandydujace z buggy URL:
|
||||
1. Robi backup .bak (raz, nie nadpisuje istniejacego .bak)
|
||||
2. Otwiera ZIP w trybie Update
|
||||
3. Dla kazdego buggy pliku: czyta zawartosc, zamienia http -> https, zapisuje
|
||||
4. Jesli istnieje sasiadujacy manifest *_manifest.json: przelicza SHA256 i aktualizuje checksum_zip
|
||||
5. Loguje akcje
|
||||
|
||||
Output: patch-log.md (lista zmienionych paczek z SHA256 przed/po).
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$UpdatesDir = "C:\visual studio code\projekty\cmsPRO\updates",
|
||||
[string]$LogPath = "C:\visual studio code\projekty\cmsPRO\.paul\phases\04h-hotfix-https-updates\patch-log.md",
|
||||
[switch]$DryRun
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||
|
||||
$BuggyPattern = 'http://www.cmspro.project-dc.pl'
|
||||
$FixedPattern = 'https://www.cmspro.project-dc.pl'
|
||||
$SuspectFiles = @(
|
||||
'autoload/class.S.php',
|
||||
'autoload/Shared/Helpers/Helpers.php',
|
||||
'autoload/admin/factory/class.Update.php'
|
||||
)
|
||||
|
||||
function Get-Sha256 {
|
||||
param([string]$Path)
|
||||
return (Get-FileHash -Algorithm SHA256 -Path $Path).Hash.ToLower()
|
||||
}
|
||||
|
||||
function Patch-Zip {
|
||||
param([string]$ZipPath)
|
||||
|
||||
$log = [PSCustomObject]@{
|
||||
Package = (Resolve-Path $ZipPath).Path.Substring($UpdatesDir.Length).TrimStart('\','/')
|
||||
Sha256Before = $null
|
||||
Sha256After = $null
|
||||
PatchedFiles = @()
|
||||
ManifestUpd = $false
|
||||
Skipped = $false
|
||||
Error = $null
|
||||
}
|
||||
|
||||
# backup
|
||||
$bak = "$ZipPath.bak"
|
||||
if (-not (Test-Path $bak)) {
|
||||
Copy-Item -LiteralPath $ZipPath -Destination $bak -Force
|
||||
}
|
||||
$log.Sha256Before = Get-Sha256 -Path $ZipPath
|
||||
|
||||
# quick check: does any suspect file have buggy URL?
|
||||
$needsPatch = $false
|
||||
$entriesToPatch = @()
|
||||
try {
|
||||
$zip = [System.IO.Compression.ZipFile]::OpenRead($ZipPath)
|
||||
foreach ($entry in $zip.Entries) {
|
||||
$name = $entry.FullName.Replace('\','/')
|
||||
if ($SuspectFiles -contains $name) {
|
||||
$reader = New-Object System.IO.StreamReader($entry.Open())
|
||||
$content = $reader.ReadToEnd()
|
||||
$reader.Close()
|
||||
if ($content.Contains($BuggyPattern)) {
|
||||
$needsPatch = $true
|
||||
$entriesToPatch += $name
|
||||
}
|
||||
}
|
||||
}
|
||||
$zip.Dispose()
|
||||
} catch {
|
||||
$log.Error = "OpenRead: $($_.Exception.Message)"
|
||||
return $log
|
||||
}
|
||||
|
||||
if (-not $needsPatch) {
|
||||
$log.Skipped = $true
|
||||
$log.Sha256After = $log.Sha256Before
|
||||
return $log
|
||||
}
|
||||
|
||||
if ($DryRun) {
|
||||
$log.PatchedFiles = $entriesToPatch
|
||||
$log.Sha256After = '(dry-run)'
|
||||
return $log
|
||||
}
|
||||
|
||||
# Patch in-place
|
||||
try {
|
||||
$zipUpd = [System.IO.Compression.ZipFile]::Open($ZipPath, [System.IO.Compression.ZipArchiveMode]::Update)
|
||||
foreach ($name in $entriesToPatch) {
|
||||
$entry = $zipUpd.Entries | Where-Object { $_.FullName.Replace('\','/') -eq $name } | Select-Object -First 1
|
||||
if (-not $entry) { continue }
|
||||
|
||||
# Read
|
||||
$stream = $entry.Open()
|
||||
$reader = New-Object System.IO.StreamReader($stream)
|
||||
$content = $reader.ReadToEnd()
|
||||
$reader.Close()
|
||||
$stream.Close()
|
||||
|
||||
# Replace
|
||||
$newContent = $content.Replace($BuggyPattern, $FixedPattern)
|
||||
if ($newContent -eq $content) { continue }
|
||||
|
||||
# Write back: open writable stream and truncate
|
||||
$writeStream = $entry.Open()
|
||||
$writeStream.SetLength(0)
|
||||
$writer = New-Object System.IO.StreamWriter($writeStream, (New-Object System.Text.UTF8Encoding $false))
|
||||
$writer.Write($newContent)
|
||||
$writer.Flush()
|
||||
$writer.Close()
|
||||
$writeStream.Close()
|
||||
|
||||
$log.PatchedFiles += $name
|
||||
}
|
||||
$zipUpd.Dispose()
|
||||
} catch {
|
||||
$log.Error = "Patch: $($_.Exception.Message)"
|
||||
return $log
|
||||
}
|
||||
|
||||
$log.Sha256After = Get-Sha256 -Path $ZipPath
|
||||
|
||||
# Update manifest if exists
|
||||
$verBase = [System.IO.Path]::GetFileNameWithoutExtension($ZipPath) # e.g. ver_1.519
|
||||
$manifestPath = Join-Path (Split-Path $ZipPath -Parent) "${verBase}_manifest.json"
|
||||
if (Test-Path $manifestPath) {
|
||||
try {
|
||||
$jsonRaw = [System.IO.File]::ReadAllText($manifestPath)
|
||||
# Strip BOM
|
||||
if ($jsonRaw.Length -gt 0 -and $jsonRaw[0] -eq [char]0xFEFF) {
|
||||
$jsonRaw = $jsonRaw.Substring(1)
|
||||
}
|
||||
$manifest = $jsonRaw | ConvertFrom-Json
|
||||
if ($manifest.PSObject.Properties.Name -contains 'checksum_zip') {
|
||||
$manifest.checksum_zip = "sha256:$($log.Sha256After)"
|
||||
$newJson = $manifest | ConvertTo-Json -Depth 20
|
||||
$utf8 = New-Object System.Text.UTF8Encoding $false
|
||||
[System.IO.File]::WriteAllText($manifestPath, $newJson, $utf8)
|
||||
$log.ManifestUpd = $true
|
||||
}
|
||||
} catch {
|
||||
$log.Error = "Manifest: $($_.Exception.Message)"
|
||||
}
|
||||
}
|
||||
|
||||
return $log
|
||||
}
|
||||
|
||||
# --- Main ---
|
||||
Write-Host "Skanuje $UpdatesDir ..." -ForegroundColor Cyan
|
||||
|
||||
$zips = @()
|
||||
$baseInstall = Join-Path $UpdatesDir 'cmsPro.zip'
|
||||
if (Test-Path $baseInstall) { $zips += $baseInstall }
|
||||
$zips += Get-ChildItem -Path $UpdatesDir -Filter 'ver_*.zip' -Recurse | Sort-Object FullName | ForEach-Object { $_.FullName }
|
||||
|
||||
Write-Host "Paczek do sprawdzenia: $($zips.Count)" -ForegroundColor Cyan
|
||||
if ($DryRun) { Write-Host "DRY-RUN: nic nie bedzie zmienione" -ForegroundColor Yellow }
|
||||
|
||||
$results = @()
|
||||
$i = 0
|
||||
foreach ($zip in $zips) {
|
||||
$i++
|
||||
Write-Progress -Activity "Patch paczek" -Status "$i / $($zips.Count): $(Split-Path $zip -Leaf)" -PercentComplete (($i / $zips.Count) * 100)
|
||||
$results += Patch-Zip -ZipPath $zip
|
||||
}
|
||||
Write-Progress -Activity "Patch paczek" -Completed
|
||||
|
||||
$patched = $results | Where-Object { $_.PatchedFiles.Count -gt 0 -and -not $_.Error }
|
||||
$skipped = $results | Where-Object { $_.Skipped }
|
||||
$errored = $results | Where-Object { $_.Error }
|
||||
$manifUpd = $results | Where-Object { $_.ManifestUpd }
|
||||
|
||||
# Log report
|
||||
$lines = @()
|
||||
$lines += '# Patch Log: paczki aktualizacji cmsPRO (HTTP -> HTTPS)'
|
||||
$lines += ''
|
||||
$lines += "**Data:** $(Get-Date -Format 'yyyy-MM-dd HH:mm')"
|
||||
$lines += "**DryRun:** $DryRun"
|
||||
$lines += ''
|
||||
$lines += '## Podsumowanie'
|
||||
$lines += ''
|
||||
$lines += "| Kategoria | Liczba |"
|
||||
$lines += "|-----------|--------|"
|
||||
$lines += "| Paczek przeskanowanych | $($results.Count) |"
|
||||
$lines += "| **Spatchowanych** | **$($patched.Count)** |"
|
||||
$lines += "| Pominietych (juz OK / brak buggy) | $($skipped.Count) |"
|
||||
$lines += "| Manifestow zaktualizowanych | $($manifUpd.Count) |"
|
||||
$lines += "| Bledow | $($errored.Count) |"
|
||||
$lines += ''
|
||||
$lines += '## Spatchowane paczki'
|
||||
$lines += ''
|
||||
if ($patched) {
|
||||
$lines += '| # | Paczka | Pliki | SHA256 (przed) | SHA256 (po) | Manifest |'
|
||||
$lines += '|---|--------|-------|----------------|-------------|----------|'
|
||||
$idx = 0
|
||||
foreach ($r in $patched) {
|
||||
$idx++
|
||||
$files = ($r.PatchedFiles -join '<br>')
|
||||
$man = if ($r.ManifestUpd) { 'YES' } else { '-' }
|
||||
$shaBefore = if ($r.Sha256Before.Length -ge 12) { $r.Sha256Before.Substring(0,12) } else { $r.Sha256Before }
|
||||
$shaAfter = if ($r.Sha256After.Length -ge 12) { $r.Sha256After.Substring(0,12) } else { $r.Sha256After }
|
||||
$lines += "| $idx | ``$($r.Package)`` | $files | ``$shaBefore`` | ``$shaAfter`` | $man |"
|
||||
}
|
||||
} else {
|
||||
$lines += '_Brak._'
|
||||
}
|
||||
$lines += ''
|
||||
$lines += '## Bledy'
|
||||
$lines += ''
|
||||
if ($errored) {
|
||||
foreach ($r in $errored) {
|
||||
$lines += "- ``$($r.Package)`` -- $($r.Error)"
|
||||
}
|
||||
} else {
|
||||
$lines += '_Brak._'
|
||||
}
|
||||
|
||||
$utf8 = New-Object System.Text.UTF8Encoding $false
|
||||
[System.IO.File]::WriteAllText($LogPath, ($lines -join "`r`n"), $utf8)
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Patch zakonczony." -ForegroundColor Green
|
||||
Write-Host " Spatchowanych: $($patched.Count)" -ForegroundColor Yellow
|
||||
Write-Host " Manifestow updated: $($manifUpd.Count)"
|
||||
Write-Host " Pominietych: $($skipped.Count)"
|
||||
Write-Host " Bledow: $($errored.Count)"
|
||||
Write-Host "Log: $LogPath" -ForegroundColor Cyan
|
||||
@@ -0,0 +1,227 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Patch wszystkich paczek aktualizacji: dodanie urlencode() na update_key w URL.
|
||||
|
||||
.DESCRIPTION
|
||||
Po wczesniejszym patchu http->https, klucz licencji nadal wysylany jako raw string.
|
||||
Klucze zawierajace # @ : $ etc. lamia URL. Fix: urlencode($settings['update_key']).
|
||||
|
||||
Wzorce zamiany (oba warianty pliku class.S.php legacy oraz Helpers.php nowy):
|
||||
1. ?key=' . $settings['update_key']) -> ?key=' . urlencode($settings['update_key']))
|
||||
2. ?key=' . $settings['update_key'] ) -> ?key=' . urlencode( $settings['update_key'] ) )
|
||||
|
||||
Idempotentny: pomija pliki ktore juz maja urlencode().
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$UpdatesDir = "C:\visual studio code\projekty\cmsPRO\updates",
|
||||
[string]$LogPath = "C:\visual studio code\projekty\cmsPRO\.paul\phases\04h-hotfix-https-updates\patch-urlencode-log.md"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||
|
||||
$SuspectFiles = @(
|
||||
'autoload/class.S.php',
|
||||
'autoload/Shared/Helpers/Helpers.php',
|
||||
'autoload/admin/factory/class.Update.php'
|
||||
)
|
||||
|
||||
# Zwraca $true jesli content zawiera buggy pattern (raw $settings['update_key'] w URL)
|
||||
function Test-NeedsUrlencode {
|
||||
param([string]$Content)
|
||||
# already has urlencode wrapping update_key?
|
||||
if ($Content -match "urlencode\s*\(\s*\`$settings\[\s*'update_key'\s*\]\s*\)") {
|
||||
# check if there's still any RAW occurrence
|
||||
# Strategy: count raw vs encoded occurrences
|
||||
$raw = ([regex]::Matches($Content, "\`$settings\[\s*'update_key'\s*\]")).Count
|
||||
$enc = ([regex]::Matches($Content, "urlencode\s*\(\s*\`$settings\[\s*'update_key'\s*\]\s*\)")).Count
|
||||
return ($raw -gt $enc) # any raw not yet wrapped
|
||||
}
|
||||
return ($Content -match "key=['""]?\s*\.\s*\`$settings\[\s*'update_key'\s*\]")
|
||||
}
|
||||
|
||||
function Apply-UrlencodePatch {
|
||||
param([string]$Content)
|
||||
# Two flavors of whitespace: with and without spaces inside brackets
|
||||
# Replacement strategy: find $settings['update_key'] preceded by something containing ?key= and . and replace with urlencode wrap
|
||||
# Safest: match the full "?key=' . $settings['update_key']" with optional spaces/quotes/closing ).
|
||||
|
||||
# Variant A: ?key=' . $settings['update_key'] (no trailing space, may have ) or ; after)
|
||||
$newContent = [regex]::Replace($Content,
|
||||
"(\?key=['""]?\s*\.\s*)(\`$settings\[\s*'update_key'\s*\])",
|
||||
'$1urlencode($2)'
|
||||
)
|
||||
return $newContent
|
||||
}
|
||||
|
||||
function Patch-Zip {
|
||||
param([string]$ZipPath)
|
||||
|
||||
$log = [PSCustomObject]@{
|
||||
Package = (Resolve-Path $ZipPath).Path.Substring($UpdatesDir.Length).TrimStart('\','/')
|
||||
Sha256Before = $null
|
||||
Sha256After = $null
|
||||
PatchedFiles = @()
|
||||
ManifestUpd = $false
|
||||
Skipped = $false
|
||||
Error = $null
|
||||
}
|
||||
|
||||
# backup (separate from previous .bak)
|
||||
$bak = "$ZipPath.preurlencode.bak"
|
||||
if (-not (Test-Path $bak)) {
|
||||
Copy-Item -LiteralPath $ZipPath -Destination $bak -Force
|
||||
}
|
||||
$log.Sha256Before = (Get-FileHash -Algorithm SHA256 -Path $ZipPath).Hash.ToLower()
|
||||
|
||||
# Find entries needing patch
|
||||
$entriesToPatch = @()
|
||||
try {
|
||||
$zip = [System.IO.Compression.ZipFile]::OpenRead($ZipPath)
|
||||
foreach ($entry in $zip.Entries) {
|
||||
$name = $entry.FullName.Replace('\','/')
|
||||
if ($SuspectFiles -contains $name) {
|
||||
$reader = New-Object System.IO.StreamReader($entry.Open())
|
||||
$content = $reader.ReadToEnd()
|
||||
$reader.Close()
|
||||
if (Test-NeedsUrlencode -Content $content) {
|
||||
$entriesToPatch += $name
|
||||
}
|
||||
}
|
||||
}
|
||||
$zip.Dispose()
|
||||
} catch {
|
||||
$log.Error = "OpenRead: $($_.Exception.Message)"
|
||||
return $log
|
||||
}
|
||||
|
||||
if (-not $entriesToPatch) {
|
||||
$log.Skipped = $true
|
||||
$log.Sha256After = $log.Sha256Before
|
||||
return $log
|
||||
}
|
||||
|
||||
# Patch in-place
|
||||
try {
|
||||
$zipUpd = [System.IO.Compression.ZipFile]::Open($ZipPath, [System.IO.Compression.ZipArchiveMode]::Update)
|
||||
foreach ($name in $entriesToPatch) {
|
||||
$entry = $zipUpd.Entries | Where-Object { $_.FullName.Replace('\','/') -eq $name } | Select-Object -First 1
|
||||
if (-not $entry) { continue }
|
||||
|
||||
$stream = $entry.Open()
|
||||
$reader = New-Object System.IO.StreamReader($stream)
|
||||
$content = $reader.ReadToEnd()
|
||||
$reader.Close()
|
||||
$stream.Close()
|
||||
|
||||
$newContent = Apply-UrlencodePatch -Content $content
|
||||
if ($newContent -eq $content) { continue }
|
||||
|
||||
$writeStream = $entry.Open()
|
||||
$writeStream.SetLength(0)
|
||||
$writer = New-Object System.IO.StreamWriter($writeStream, (New-Object System.Text.UTF8Encoding $false))
|
||||
$writer.Write($newContent)
|
||||
$writer.Flush()
|
||||
$writer.Close()
|
||||
$writeStream.Close()
|
||||
|
||||
$log.PatchedFiles += $name
|
||||
}
|
||||
$zipUpd.Dispose()
|
||||
} catch {
|
||||
$log.Error = "Patch: $($_.Exception.Message)"
|
||||
return $log
|
||||
}
|
||||
|
||||
$log.Sha256After = (Get-FileHash -Algorithm SHA256 -Path $ZipPath).Hash.ToLower()
|
||||
|
||||
# Update manifest
|
||||
$verBase = [System.IO.Path]::GetFileNameWithoutExtension($ZipPath)
|
||||
$manifestPath = Join-Path (Split-Path $ZipPath -Parent) "${verBase}_manifest.json"
|
||||
if (Test-Path $manifestPath) {
|
||||
try {
|
||||
$jsonRaw = [System.IO.File]::ReadAllText($manifestPath)
|
||||
if ($jsonRaw.Length -gt 0 -and $jsonRaw[0] -eq [char]0xFEFF) {
|
||||
$jsonRaw = $jsonRaw.Substring(1)
|
||||
}
|
||||
$manifest = $jsonRaw | ConvertFrom-Json
|
||||
if ($manifest.PSObject.Properties.Name -contains 'checksum_zip') {
|
||||
$manifest.checksum_zip = "sha256:$($log.Sha256After)"
|
||||
$newJson = $manifest | ConvertTo-Json -Depth 20
|
||||
$utf8 = New-Object System.Text.UTF8Encoding $false
|
||||
[System.IO.File]::WriteAllText($manifestPath, $newJson, $utf8)
|
||||
$log.ManifestUpd = $true
|
||||
}
|
||||
} catch {
|
||||
$log.Error = "Manifest: $($_.Exception.Message)"
|
||||
}
|
||||
}
|
||||
|
||||
return $log
|
||||
}
|
||||
|
||||
# --- Main ---
|
||||
Write-Host "Skanuje $UpdatesDir ..." -ForegroundColor Cyan
|
||||
|
||||
$zips = @()
|
||||
$baseInstall = Join-Path $UpdatesDir 'cmsPro.zip'
|
||||
if (Test-Path $baseInstall) { $zips += $baseInstall }
|
||||
$zips += Get-ChildItem -Path $UpdatesDir -Filter 'ver_*.zip' -Recurse | Sort-Object FullName | ForEach-Object { $_.FullName }
|
||||
|
||||
Write-Host "Paczek do sprawdzenia: $($zips.Count)" -ForegroundColor Cyan
|
||||
|
||||
$results = @()
|
||||
$i = 0
|
||||
foreach ($zip in $zips) {
|
||||
$i++
|
||||
Write-Progress -Activity "Patch urlencode" -Status "$i / $($zips.Count)" -PercentComplete (($i / $zips.Count) * 100)
|
||||
$results += Patch-Zip -ZipPath $zip
|
||||
}
|
||||
Write-Progress -Activity "Patch urlencode" -Completed
|
||||
|
||||
$patched = $results | Where-Object { $_.PatchedFiles.Count -gt 0 -and -not $_.Error }
|
||||
$skipped = $results | Where-Object { $_.Skipped }
|
||||
$errored = $results | Where-Object { $_.Error }
|
||||
$manifUpd = $results | Where-Object { $_.ManifestUpd }
|
||||
|
||||
# Log
|
||||
$lines = @()
|
||||
$lines += '# Patch Log: urlencode($settings[update_key])'
|
||||
$lines += ''
|
||||
$lines += "**Data:** $(Get-Date -Format 'yyyy-MM-dd HH:mm')"
|
||||
$lines += ''
|
||||
$lines += "Spatchowanych: $($patched.Count)"
|
||||
$lines += "Pominietych: $($skipped.Count)"
|
||||
$lines += "Manifestow zaktualizowanych: $($manifUpd.Count)"
|
||||
$lines += "Bledow: $($errored.Count)"
|
||||
$lines += ''
|
||||
$lines += '## Spatchowane'
|
||||
if ($patched) {
|
||||
$lines += '| # | Paczka | Pliki | SHA256 (po) |'
|
||||
$lines += '|---|--------|-------|-------------|'
|
||||
$idx = 0
|
||||
foreach ($r in $patched) {
|
||||
$idx++
|
||||
$files = ($r.PatchedFiles -join '<br>')
|
||||
$sha = if ($r.Sha256After.Length -ge 16) { $r.Sha256After.Substring(0,16) } else { $r.Sha256After }
|
||||
$lines += "| $idx | ``$($r.Package)`` | $files | ``$sha`` |"
|
||||
}
|
||||
}
|
||||
$lines += ''
|
||||
if ($errored) {
|
||||
$lines += '## Bledy'
|
||||
foreach ($r in $errored) { $lines += "- ``$($r.Package)`` -- $($r.Error)" }
|
||||
}
|
||||
|
||||
$utf8 = New-Object System.Text.UTF8Encoding $false
|
||||
[System.IO.File]::WriteAllText($LogPath, ($lines -join "`r`n"), $utf8)
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Patch urlencode zakonczony." -ForegroundColor Green
|
||||
Write-Host " Spatchowanych: $($patched.Count)" -ForegroundColor Yellow
|
||||
Write-Host " Manifestow updated: $($manifUpd.Count)"
|
||||
Write-Host " Pominietych: $($skipped.Count)"
|
||||
Write-Host " Bledow: $($errored.Count)"
|
||||
Write-Host "Log: $LogPath" -ForegroundColor Cyan
|
||||
158
.paul/phases/04h-hotfix-https-updates/upload-checklist.md
Normal file
158
.paul/phases/04h-hotfix-https-updates/upload-checklist.md
Normal file
@@ -0,0 +1,158 @@
|
||||
# Upload Checklist v2: paczki cmsPRO po hotfixie HTTPS + urlencode
|
||||
|
||||
**Data:** 2026-04-26 00:24
|
||||
**Liczba plikow:** 124
|
||||
|
||||
## Co zostalo zmienione w stosunku do checklist v1
|
||||
|
||||
- Dodatkowy patch: `urlencode($settings[update_key])` we wszystkich plikach uzywajacych klucza w URL
|
||||
- Powod: klucze licencji moga zawierac znaki specjalne (#, @, :, $, &), ktore lamia URL bez encodingu
|
||||
- 64 paczki dotalismy ponownie w tym etapie (oprocz 121 z etapu http->https)
|
||||
- Niektore paczki maja podwojny patch -> nowy SHA256 -> upload ponowny
|
||||
- ver_1.519.zip (kotwica) tez zostal zaktualizowany (urlencode w wstrzyknietych plikach)
|
||||
|
||||
## Pliki do uploadu na cmspro.project-dc.pl
|
||||
|
||||
| # | Plik | Sciezka docelowa | SHA256 | Powod |
|
||||
|---|------|------------------|--------|-------|
|
||||
| 1 | `cmsPro.zip` | `/updates/cmsPro.zip` | `34f3efaee3333e04...` | http->https |
|
||||
| 2 | `ver_1.279.zip` | `/updates/1.20/ver_1.279.zip` | `4b2fb3dfc4452621...` | urlencode |
|
||||
| 3 | `ver_1.280.zip` | `/updates/1.20/ver_1.280.zip` | `4b2fb3dfc4452621...` | urlencode |
|
||||
| 4 | `ver_1.284.zip` | `/updates/1.20/ver_1.284.zip` | `bec02c70641fd188...` | urlencode |
|
||||
| 5 | `ver_1.285.zip` | `/updates/1.20/ver_1.285.zip` | `bd3d14f0db85f06a...` | urlencode |
|
||||
| 6 | `ver_1.288.zip` | `/updates/1.20/ver_1.288.zip` | `b1e5485ce02b074c...` | urlencode |
|
||||
| 7 | `ver_1.293.zip` | `/updates/1.20/ver_1.293.zip` | `a90a58d4eac0e466...` | urlencode |
|
||||
| 8 | `ver_1.294.zip` | `/updates/1.20/ver_1.294.zip` | `dcbfc2f893151138...` | urlencode |
|
||||
| 9 | `ver_1.295.zip` | `/updates/1.20/ver_1.295.zip` | `dcbfc2f893151138...` | urlencode |
|
||||
| 10 | `ver_1.297.zip` | `/updates/1.20/ver_1.297.zip` | `9adf6ec503b6051f...` | urlencode |
|
||||
| 11 | `ver_1.298.zip` | `/updates/1.20/ver_1.298.zip` | `dafec72f64cc9eed...` | urlencode |
|
||||
| 12 | `ver_1.300.zip` | `/updates/1.30/ver_1.300.zip` | `59bafbe0d3891a7d...` | urlencode |
|
||||
| 13 | `ver_1.306.zip` | `/updates/1.30/ver_1.306.zip` | `ff5978122aaee370...` | urlencode |
|
||||
| 14 | `ver_1.308.zip` | `/updates/1.30/ver_1.308.zip` | `20c441d164fcd036...` | urlencode |
|
||||
| 15 | `ver_1.318.zip` | `/updates/1.30/ver_1.318.zip` | `9497bf555b14003a...` | urlencode |
|
||||
| 16 | `ver_1.323.zip` | `/updates/1.30/ver_1.323.zip` | `068f67dae09b458a...` | urlencode |
|
||||
| 17 | `ver_1.326.zip` | `/updates/1.30/ver_1.326.zip` | `24e06f56613dd17d...` | urlencode |
|
||||
| 18 | `ver_1.334.zip` | `/updates/1.30/ver_1.334.zip` | `a7beadc4e1f5d390...` | urlencode |
|
||||
| 19 | `ver_1.335.zip` | `/updates/1.30/ver_1.335.zip` | `d7fdcd6ac69768b0...` | urlencode |
|
||||
| 20 | `ver_1.339.zip` | `/updates/1.30/ver_1.339.zip` | `afb31fa769a6da47...` | urlencode |
|
||||
| 21 | `ver_1.346.zip` | `/updates/1.30/ver_1.346.zip` | `9cb19d96f645d88d...` | urlencode |
|
||||
| 22 | `ver_1.350.zip` | `/updates/1.30/ver_1.350.zip` | `4c10a14b2765c807...` | urlencode |
|
||||
| 23 | `ver_1.352.zip` | `/updates/1.30/ver_1.352.zip` | `a6a675bb9df92408...` | urlencode |
|
||||
| 24 | `ver_1.354.zip` | `/updates/1.30/ver_1.354.zip` | `4871da20d1a44ef8...` | urlencode |
|
||||
| 25 | `ver_1.355.zip` | `/updates/1.30/ver_1.355.zip` | `778996580d1869a0...` | urlencode |
|
||||
| 26 | `ver_1.356.zip` | `/updates/1.30/ver_1.356.zip` | `2b18edb393c32869...` | urlencode |
|
||||
| 27 | `ver_1.357.zip` | `/updates/1.30/ver_1.357.zip` | `8119cc274771a7bd...` | urlencode |
|
||||
| 28 | `ver_1.359.zip` | `/updates/1.30/ver_1.359.zip` | `a279ab6d1d016c58...` | urlencode |
|
||||
| 29 | `ver_1.360.zip` | `/updates/1.30/ver_1.360.zip` | `a279ab6d1d016c58...` | urlencode |
|
||||
| 30 | `ver_1.370.zip` | `/updates/1.30/ver_1.370.zip` | `f0495f6a5bb2ab4d...` | urlencode |
|
||||
| 31 | `ver_1.371.zip` | `/updates/1.30/ver_1.371.zip` | `40acbb4d8daa54b6...` | urlencode |
|
||||
| 32 | `ver_1.372.zip` | `/updates/1.30/ver_1.372.zip` | `f67eb93cd71e49a4...` | urlencode |
|
||||
| 33 | `ver_1.375.zip` | `/updates/1.30/ver_1.375.zip` | `47664cb7b525a885...` | urlencode |
|
||||
| 34 | `ver_1.387.zip` | `/updates/1.30/ver_1.387.zip` | `bd7e98161c4ca652...` | urlencode |
|
||||
| 35 | `ver_1.396.zip` | `/updates/1.30/ver_1.396.zip` | `5fd970139fcfb13a...` | urlencode |
|
||||
| 36 | `ver_1.397.zip` | `/updates/1.30/ver_1.397.zip` | `ceb27382c39935c9...` | urlencode |
|
||||
| 37 | `ver_1.402.zip` | `/updates/1.40/ver_1.402.zip` | `52b24d0bb654b130...` | urlencode |
|
||||
| 38 | `ver_1.406.zip` | `/updates/1.40/ver_1.406.zip` | `a56ab8fd41ca825b...` | urlencode |
|
||||
| 39 | `ver_1.408.zip` | `/updates/1.40/ver_1.408.zip` | `16f159ead1ec925b...` | urlencode |
|
||||
| 40 | `ver_1.409.zip` | `/updates/1.40/ver_1.409.zip` | `3e067a83eaa30f12...` | urlencode |
|
||||
| 41 | `ver_1.410.zip` | `/updates/1.40/ver_1.410.zip` | `f5b8263df2e067ff...` | urlencode |
|
||||
| 42 | `ver_1.411.zip` | `/updates/1.40/ver_1.411.zip` | `6f7b3e39529430b1...` | urlencode |
|
||||
| 43 | `ver_1.412.zip` | `/updates/1.40/ver_1.412.zip` | `f3afa5ff7b13cc18...` | urlencode |
|
||||
| 44 | `ver_1.426.zip` | `/updates/1.40/ver_1.426.zip` | `e37dfc765c9b107e...` | urlencode |
|
||||
| 45 | `ver_1.432.zip` | `/updates/1.40/ver_1.432.zip` | `9b92326416e1f2cd...` | urlencode |
|
||||
| 46 | `ver_1.449.zip` | `/updates/1.40/ver_1.449.zip` | `c90420d409df98e3...` | urlencode |
|
||||
| 47 | `ver_1.456.zip` | `/updates/1.40/ver_1.456.zip` | `6b571e185effd8c6...` | urlencode |
|
||||
| 48 | `ver_1.462.zip` | `/updates/1.40/ver_1.462.zip` | `2a2aa3da9ca66359...` | urlencode |
|
||||
| 49 | `ver_1.463.zip` | `/updates/1.40/ver_1.463.zip` | `ce73866bc9ec8168...` | urlencode |
|
||||
| 50 | `ver_1.464.zip` | `/updates/1.40/ver_1.464.zip` | `a63b24622550f942...` | urlencode |
|
||||
| 51 | `ver_1.482.zip` | `/updates/1.40/ver_1.482.zip` | `14d264b0b98d1369...` | urlencode |
|
||||
| 52 | `ver_1.485.zip` | `/updates/1.40/ver_1.485.zip` | `e9deb7665bfeec3f...` | urlencode |
|
||||
| 53 | `ver_1.490.zip` | `/updates/1.40/ver_1.490.zip` | `93b467cf6aba1301...` | urlencode |
|
||||
| 54 | `ver_1.496.zip` | `/updates/1.40/ver_1.496.zip` | `61d06089ad5a67ae...` | urlencode |
|
||||
| 55 | `ver_1.498.zip` | `/updates/1.40/ver_1.498.zip` | `cbe13607769ed2fa...` | urlencode |
|
||||
| 56 | `ver_1.504.zip` | `/updates/1.50/ver_1.504.zip` | `73d34dd29ec72245...` | urlencode |
|
||||
| 57 | `ver_1.507.zip` | `/updates/1.50/ver_1.507.zip` | `859b77852121bec8...` | urlencode |
|
||||
| 58 | `ver_1.511.zip` | `/updates/1.50/ver_1.511.zip` | `9b7efaa0fc8acede...` | urlencode |
|
||||
| 59 | `ver_1.513.zip` | `/updates/1.50/ver_1.513.zip` | `18ec985d1b29a945...` | urlencode |
|
||||
| 60 | `ver_1.515.zip` | `/updates/1.50/ver_1.515.zip` | `7ff25bed81fe7767...` | urlencode |
|
||||
| 61 | `ver_1.517.zip` | `/updates/1.50/ver_1.517.zip` | `6b448734200893a5...` | urlencode |
|
||||
| 62 | `ver_1.518.zip` | `/updates/1.50/ver_1.518.zip` | `d50e62f31c56384b...` | urlencode |
|
||||
| 63 | `ver_1.519.zip` | `/updates/1.50/ver_1.519.zip` | `14e5754c75884fcc...` | urlencode+anchor-injection |
|
||||
| 64 | `ver_1.529.zip` | `/updates/1.50/ver_1.529.zip` | `a5846aca666e0d5d...` | urlencode |
|
||||
| 65 | `ver_1.532.zip` | `/updates/1.50/ver_1.532.zip` | `e8dd85b2449f84c0...` | urlencode |
|
||||
| 66 | `ver_1.533.zip` | `/updates/1.50/ver_1.533.zip` | `f8a25cf6ba08f2be...` | urlencode |
|
||||
| 67 | `ver_1.534.zip` | `/updates/1.50/ver_1.534.zip` | `4dca134b68ee82a2...` | urlencode |
|
||||
| 68 | `ver_1.535.zip` | `/updates/1.50/ver_1.535.zip` | `b5365d4c100e37ab...` | urlencode |
|
||||
| 69 | `ver_1.536.zip` | `/updates/1.50/ver_1.536.zip` | `b70902dfb4060d7a...` | urlencode |
|
||||
| 70 | `ver_1.539.zip` | `/updates/1.50/ver_1.539.zip` | `6d29304b96132ebd...` | urlencode |
|
||||
| 71 | `ver_1.541.zip` | `/updates/1.50/ver_1.541.zip` | `cff7f6080a57ed66...` | urlencode |
|
||||
| 72 | `ver_1.546.zip` | `/updates/1.50/ver_1.546.zip` | `9b60fae7f31e5df2...` | urlencode |
|
||||
| 73 | `ver_1.551.zip` | `/updates/1.50/ver_1.551.zip` | `f8ee40fa330d68da...` | urlencode |
|
||||
| 74 | `ver_1.552.zip` | `/updates/1.50/ver_1.552.zip` | `ad203f8df17e2d10...` | urlencode |
|
||||
| 75 | `ver_1.554.zip` | `/updates/1.50/ver_1.554.zip` | `18ebfa82dce8a823...` | urlencode |
|
||||
| 76 | `ver_1.555.zip` | `/updates/1.50/ver_1.555.zip` | `f61a10c36b50b36b...` | urlencode |
|
||||
| 77 | `ver_1.556.zip` | `/updates/1.50/ver_1.556.zip` | `e4b0d3cd835a3657...` | urlencode |
|
||||
| 78 | `ver_1.557.zip` | `/updates/1.50/ver_1.557.zip` | `8002b8508c1b9b14...` | urlencode |
|
||||
| 79 | `ver_1.561.zip` | `/updates/1.50/ver_1.561.zip` | `9be69833265da2c8...` | urlencode |
|
||||
| 80 | `ver_1.568.zip` | `/updates/1.50/ver_1.568.zip` | `dd90fc869058e5a7...` | urlencode |
|
||||
| 81 | `ver_1.572.zip` | `/updates/1.50/ver_1.572.zip` | `eb0071b94e6342b6...` | urlencode |
|
||||
| 82 | `ver_1.583.zip` | `/updates/1.50/ver_1.583.zip` | `faf7037812cb1345...` | urlencode |
|
||||
| 83 | `ver_1.587.zip` | `/updates/1.50/ver_1.587.zip` | `a000fc230209cad4...` | urlencode |
|
||||
| 84 | `ver_1.589.zip` | `/updates/1.50/ver_1.589.zip` | `23ec9d2ac905f868...` | urlencode |
|
||||
| 85 | `ver_1.591.zip` | `/updates/1.50/ver_1.591.zip` | `1a69cbc0d87d1f02...` | urlencode |
|
||||
| 86 | `ver_1.602.zip` | `/updates/1.60/ver_1.602.zip` | `b6bf83583aea4c1c...` | urlencode |
|
||||
| 87 | `ver_1.610.zip` | `/updates/1.60/ver_1.610.zip` | `a2eb640e5660e51e...` | urlencode |
|
||||
| 88 | `ver_1.613.zip` | `/updates/1.60/ver_1.613.zip` | `d580047296a40951...` | urlencode |
|
||||
| 89 | `ver_1.617.zip` | `/updates/1.60/ver_1.617.zip` | `e4b9d2ecd6b62101...` | urlencode |
|
||||
| 90 | `ver_1.618.zip` | `/updates/1.60/ver_1.618.zip` | `da0dccd5d8129f36...` | urlencode |
|
||||
| 91 | `ver_1.620.zip` | `/updates/1.60/ver_1.620.zip` | `87388a9b597048e0...` | urlencode |
|
||||
| 92 | `ver_1.625.zip` | `/updates/1.60/ver_1.625.zip` | `af0005fea825b432...` | urlencode |
|
||||
| 93 | `ver_1.626.zip` | `/updates/1.60/ver_1.626.zip` | `cf084b0f8da8fb34...` | urlencode |
|
||||
| 94 | `ver_1.627.zip` | `/updates/1.60/ver_1.627.zip` | `2602fedd545a2b84...` | urlencode |
|
||||
| 95 | `ver_1.628.zip` | `/updates/1.60/ver_1.628.zip` | `33d618d0d5979394...` | urlencode |
|
||||
| 96 | `ver_1.633.zip` | `/updates/1.60/ver_1.633.zip` | `6199f98c0153f2cb...` | urlencode |
|
||||
| 97 | `ver_1.634.zip` | `/updates/1.60/ver_1.634.zip` | `3356e9fdff7ee6fd...` | urlencode |
|
||||
| 98 | `ver_1.638.zip` | `/updates/1.60/ver_1.638.zip` | `e436f5498d9eac82...` | urlencode |
|
||||
| 99 | `ver_1.642.zip` | `/updates/1.60/ver_1.642.zip` | `73db0af058c4dd8e...` | urlencode |
|
||||
| 100 | `ver_1.643.zip` | `/updates/1.60/ver_1.643.zip` | `5dd7505e5e9b69f9...` | urlencode |
|
||||
| 101 | `ver_1.644.zip` | `/updates/1.60/ver_1.644.zip` | `3bbf16d10e6101a6...` | urlencode |
|
||||
| 102 | `ver_1.645.zip` | `/updates/1.60/ver_1.645.zip` | `dc7554805828db03...` | urlencode |
|
||||
| 103 | `ver_1.649.zip` | `/updates/1.60/ver_1.649.zip` | `a34f456bb22bb49a...` | urlencode |
|
||||
| 104 | `ver_1.650.zip` | `/updates/1.60/ver_1.650.zip` | `1fded4e332087edd...` | urlencode |
|
||||
| 105 | `ver_1.651.zip` | `/updates/1.60/ver_1.651.zip` | `974d9c1ed41db26c...` | urlencode |
|
||||
| 106 | `ver_1.654.zip` | `/updates/1.60/ver_1.654.zip` | `23c1a14906b34e2c...` | urlencode |
|
||||
| 107 | `ver_1.656.zip` | `/updates/1.60/ver_1.656.zip` | `e249d78fedc6d3b2...` | urlencode |
|
||||
| 108 | `ver_1.660.zip` | `/updates/1.60/ver_1.660.zip` | `7068186d0fde2b1e...` | urlencode |
|
||||
| 109 | `ver_1.665.zip` | `/updates/1.60/ver_1.665.zip` | `aa1fb3977f5f941c...` | urlencode |
|
||||
| 110 | `ver_1.666.zip` | `/updates/1.60/ver_1.666.zip` | `437e09dfda4f3341...` | urlencode |
|
||||
| 111 | `ver_1.669.zip` | `/updates/1.60/ver_1.669.zip` | `1885535d8ab2ce8c...` | urlencode |
|
||||
| 112 | `ver_1.674.zip` | `/updates/1.60/ver_1.674.zip` | `9fca9ce185a525b8...` | urlencode |
|
||||
| 113 | `ver_1.675.zip` | `/updates/1.60/ver_1.675.zip` | `4aad98f5cfb2aa45...` | urlencode |
|
||||
| 114 | `ver_1.678.zip` | `/updates/1.60/ver_1.678.zip` | `3541cf1cde4deeae...` | urlencode |
|
||||
| 115 | `ver_1.680.zip` | `/updates/1.60/ver_1.680.zip` | `9a26b92b885b6e9d...` | urlencode |
|
||||
| 116 | `ver_1.681.zip` | `/updates/1.60/ver_1.681.zip` | `8fb40bb9e3169797...` | urlencode |
|
||||
| 117 | `ver_1.684.zip` | `/updates/1.60/ver_1.684.zip` | `0ee052905077606a...` | urlencode |
|
||||
| 118 | `ver_1.687.zip` | `/updates/1.60/ver_1.687.zip` | `106e9ac25acf7ed1...` | urlencode |
|
||||
| 119 | `ver_1.688.zip` | `/updates/1.60/ver_1.688.zip` | `e77a529410dc519a...` | urlencode |
|
||||
| 120 | `ver_1.690.zip` | `/updates/1.60/ver_1.690.zip` | `045d16e46da68af4...` | urlencode |
|
||||
| 121 | `ver_1.691.zip` | `/updates/1.60/ver_1.691.zip` | `5e53b1fbf6c5c923...` | urlencode |
|
||||
| 122 | `ver_1.691_manifest.json` | `/updates/1.60/ver_1.691_manifest.json` | `f56b36e719dff5ca...` | manifest checksum updated |
|
||||
| 123 | `ver_1.694.zip` | `/updates/1.60/ver_1.694.zip` | `cbd51178b1caf4d8...` | urlencode |
|
||||
| 124 | `ver_1.694_manifest.json` | `/updates/1.60/ver_1.694_manifest.json` | `54914a2960f020ac...` | manifest checksum updated |
|
||||
|
||||
## Smoke-test po uploadzie
|
||||
|
||||
```bash
|
||||
curl -sSI "https://www.cmspro.project-dc.pl/updates/versions.php" | head -3
|
||||
# oczekiwane: HTTP/1.1 200 OK
|
||||
|
||||
curl -sS -o /tmp/t.zip "https://www.cmspro.project-dc.pl/updates/1.50/ver_1.519.zip"
|
||||
sha256sum /tmp/t.zip
|
||||
# oczekiwane: 14e5754c75884fcc9d59ba3ef3670d85461a80f5d37a3cc88fa09672b73786a7
|
||||
```
|
||||
|
||||
## Po smoke-test
|
||||
|
||||
1. **Wyloguj i zaloguj sie ponownie** w panelu instancji testowej (czyszczenie sesji new-version)
|
||||
2. Aktualizacja -> powinna pokazac wersje > 1.519 (klucz licencji teraz dotrze do serwera)
|
||||
3. Aktualizuj kolejno do najnowszej dostepnej wersji
|
||||
Reference in New Issue
Block a user