From 62790069a9afc2274926ccbd4b699205d00c14d7 Mon Sep 17 00:00:00 2001 From: yukolonin Date: Fri, 17 Apr 2026 18:57:29 +0200 Subject: [PATCH 1/5] add failsafe mechanism for sync import --- SQLiteManager.php | 2 ++ SyncManager.php | 40 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/SQLiteManager.php b/SQLiteManager.php index 4e8b403..99a76c6 100644 --- a/SQLiteManager.php +++ b/SQLiteManager.php @@ -104,6 +104,8 @@ public static function createDb(string $path = ''): PDO ); SQL); $pdo->exec("INSERT OR IGNORE INTO kv(k, v) VALUES ('last_synchronization', '0');"); + $pdo->exec("INSERT OR IGNORE INTO kv(k, v) VALUES ('last_import_date', '0');"); + $pdo->exec("INSERT OR IGNORE INTO kv(k, v) VALUES ('last_import_fail_date', '0');"); $pdo->exec("INSERT OR IGNORE INTO kv(k, v) VALUES ('last_key_check', '0');"); $pdo->exec("INSERT OR IGNORE INTO kv(k, v) VALUES ('sync_in_process', '0');"); diff --git a/SyncManager.php b/SyncManager.php index c82e955..8e585a6 100644 --- a/SyncManager.php +++ b/SyncManager.php @@ -69,10 +69,23 @@ public function syncData(string $apiKey): void try { $this->declareAppVersion(); $this->cleanOldVisitorsData(); - $this->updateListsAndAgents($apiKey); + if ($this->importRecentlyFailed() === false) { + try { + $this->updateListsAndAgents($apiKey); + $this->setLastImportDate(); + } catch (Exception $e) { + $this->setLastImportFailDate(); + $foo = (int)( + $this->pdo + ->query("SELECT v FROM kv WHERE k = 'last_import_date'") + ->fetchColumn() ?? 0 + ); + error_log('AntiCrawler failed to update filtering lists. Last import date: ' . date("Y-m-d H:i:s", $foo)); + } + } $this->uploadRequestsToDB($apiKey); - $this->setLastSyncDate(); + $this->setLastExportDate(); } finally { $this->removeSyncLock(); } @@ -202,11 +215,32 @@ private function uploadRequestsToDB(string $apiKey): void $this->pdo->exec("UPDATE requests SET sync_state = 'sent' WHERE sync_state = 'sending'"); } - private function setLastSyncDate() + private function setLastExportDate() { $this->pdo->exec("UPDATE kv SET v = " . time() . " WHERE k = 'last_synchronization'"); } + private function setLastImportDate() + { + $this->pdo->exec("UPDATE kv SET v = " . time() . " WHERE k = 'last_import_date'"); + } + + private function setLastImportFailDate() + { + $this->pdo->exec("UPDATE kv SET v = " . time() . " WHERE k = 'last_import_fail_date'"); + } + + private function importRecentlyFailed(): bool + { + $lastImportFailUnixTime = (int)( + $this->pdo + ->query("SELECT v FROM kv WHERE k = 'last_import_fail_date'") + ->fetchColumn() ?? 0 + ); + + return (time() - $lastImportFailUnixTime) < 300; + } + public function updateListsAndAgents(string $apiKey) { $url = 'https://api.cleantalk.org/?method_name=2s_blacklists_db&version=3_1&auth_key=' . $apiKey; From 591f217bf7a413800a5328e9a1fe2ad931ef576d Mon Sep 17 00:00:00 2001 From: yukolonin Date: Fri, 17 Apr 2026 18:59:06 +0200 Subject: [PATCH 2/5] rename params --- SQLiteManager.php | 4 ++-- SyncManager.php | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/SQLiteManager.php b/SQLiteManager.php index 99a76c6..2122000 100644 --- a/SQLiteManager.php +++ b/SQLiteManager.php @@ -103,8 +103,8 @@ public static function createDb(string $path = ''): PDO v TEXT NOT NULL ); SQL); - $pdo->exec("INSERT OR IGNORE INTO kv(k, v) VALUES ('last_synchronization', '0');"); - $pdo->exec("INSERT OR IGNORE INTO kv(k, v) VALUES ('last_import_date', '0');"); + $pdo->exec("INSERT OR IGNORE INTO kv(k, v) VALUES ('last_export', '0');"); + $pdo->exec("INSERT OR IGNORE INTO kv(k, v) VALUES ('last_import', '0');"); $pdo->exec("INSERT OR IGNORE INTO kv(k, v) VALUES ('last_import_fail_date', '0');"); $pdo->exec("INSERT OR IGNORE INTO kv(k, v) VALUES ('last_key_check', '0');"); $pdo->exec("INSERT OR IGNORE INTO kv(k, v) VALUES ('sync_in_process', '0');"); diff --git a/SyncManager.php b/SyncManager.php index 8e585a6..19619f5 100644 --- a/SyncManager.php +++ b/SyncManager.php @@ -42,7 +42,7 @@ public function timeSinceLastSyncRequest(): int { $lastSyncUnixTime = (int)( $this->pdo - ->query("SELECT v FROM kv WHERE k = 'last_synchronization'") + ->query("SELECT v FROM kv WHERE k = 'last_export'") ->fetchColumn() ?? 0 ); return (time() - $lastSyncUnixTime); @@ -77,7 +77,7 @@ public function syncData(string $apiKey): void $this->setLastImportFailDate(); $foo = (int)( $this->pdo - ->query("SELECT v FROM kv WHERE k = 'last_import_date'") + ->query("SELECT v FROM kv WHERE k = 'last_import'") ->fetchColumn() ?? 0 ); error_log('AntiCrawler failed to update filtering lists. Last import date: ' . date("Y-m-d H:i:s", $foo)); @@ -217,12 +217,12 @@ private function uploadRequestsToDB(string $apiKey): void private function setLastExportDate() { - $this->pdo->exec("UPDATE kv SET v = " . time() . " WHERE k = 'last_synchronization'"); + $this->pdo->exec("UPDATE kv SET v = " . time() . " WHERE k = 'last_export'"); } private function setLastImportDate() { - $this->pdo->exec("UPDATE kv SET v = " . time() . " WHERE k = 'last_import_date'"); + $this->pdo->exec("UPDATE kv SET v = " . time() . " WHERE k = 'last_import'"); } private function setLastImportFailDate() From 09f6f9e1d3812813330dfc96ce5db286c837e055 Mon Sep 17 00:00:00 2001 From: yukolonin Date: Fri, 17 Apr 2026 19:28:56 +0200 Subject: [PATCH 3/5] edit time --- SyncManager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SyncManager.php b/SyncManager.php index 19619f5..b735773 100644 --- a/SyncManager.php +++ b/SyncManager.php @@ -238,7 +238,7 @@ private function importRecentlyFailed(): bool ->fetchColumn() ?? 0 ); - return (time() - $lastImportFailUnixTime) < 300; + return (time() - $lastImportFailUnixTime) < 30; } public function updateListsAndAgents(string $apiKey) From ce945c66913cc5d911637285e35b6717d15fb9b8 Mon Sep 17 00:00:00 2001 From: yukolonin Date: Fri, 17 Apr 2026 19:37:55 +0200 Subject: [PATCH 4/5] fix var --- SyncManager.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SyncManager.php b/SyncManager.php index b735773..c5ef787 100644 --- a/SyncManager.php +++ b/SyncManager.php @@ -75,12 +75,12 @@ public function syncData(string $apiKey): void $this->setLastImportDate(); } catch (Exception $e) { $this->setLastImportFailDate(); - $foo = (int)( + $lastImportTs = (int)( $this->pdo ->query("SELECT v FROM kv WHERE k = 'last_import'") ->fetchColumn() ?? 0 ); - error_log('AntiCrawler failed to update filtering lists. Last import date: ' . date("Y-m-d H:i:s", $foo)); + error_log('AntiCrawler failed to update filtering lists. Last import date: ' . date("Y-m-d H:i:s", $lastImportTs)); } } $this->uploadRequestsToDB($apiKey); From c210ce4794ce56b13e173efb9ebce8fab6132d18 Mon Sep 17 00:00:00 2001 From: yukolonin Date: Fri, 17 Apr 2026 19:38:58 +0200 Subject: [PATCH 5/5] fix var --- SyncManager.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SyncManager.php b/SyncManager.php index c5ef787..e9789b0 100644 --- a/SyncManager.php +++ b/SyncManager.php @@ -232,13 +232,13 @@ private function setLastImportFailDate() private function importRecentlyFailed(): bool { - $lastImportFailUnixTime = (int)( + $lastImportFailTs = (int)( $this->pdo ->query("SELECT v FROM kv WHERE k = 'last_import_fail_date'") ->fetchColumn() ?? 0 ); - return (time() - $lastImportFailUnixTime) < 30; + return (time() - $lastImportFailTs) < 30; } public function updateListsAndAgents(string $apiKey)