From 785cf6332b56b502cc976e36e755f61881ee0edd Mon Sep 17 00:00:00 2001 From: Exodus4D Date: Fri, 12 May 2017 17:35:04 +0200 Subject: [PATCH] - added new map option for auto-delete expired WHs, closed #219 --- app/cron.ini | 7 ++- app/main/cron/mapupdate.php | 54 +++++++++++++++++-- app/main/model/mapmodel.php | 6 +++ app/pathfinder.ini | 2 + js/app/ui/dialog/map_settings.js | 10 +++- .../js/v1.2.3/app/ui/dialog/map_settings.js | 10 +++- public/templates/dialog/map.html | 15 ++++-- 7 files changed, 92 insertions(+), 12 deletions(-) diff --git a/app/cron.ini b/app/cron.ini index b37b9aaf..8e411446 100644 --- a/app/cron.ini +++ b/app/cron.ini @@ -20,8 +20,11 @@ halfHour = */30 * * * * downtime = 0 11 * * * [CRON.jobs] -; delete expired connections (e.g. EOL) -deleteConnections = Cron\MapUpdate->deleteConnections, @fiveMinutes +; delete EOL connections +deleteEolConnections = Cron\MapUpdate->deleteEolConnections, @fiveMinutes + +; delete expired wh connections +deleteExpiredConnections = Cron\MapUpdate->deleteExpiredConnections, @hourly ; disable character log data deactivateLogData = Cron\CharacterUpdate->deactivateLogData, @instant diff --git a/app/main/cron/mapupdate.php b/app/main/cron/mapupdate.php index 39dc5cfd..3882ce3d 100644 --- a/app/main/cron/mapupdate.php +++ b/app/main/cron/mapupdate.php @@ -64,11 +64,11 @@ class MapUpdate { } /** - * delete expired connections (EOL connections) - * >> php index.php "/cron/deleteConnections" + * delete expired EOL connections + * >> php index.php "/cron/deleteEolConnections" * @param \Base $f3 */ - function deleteConnections(\Base $f3){ + function deleteEolConnections(\Base $f3){ $eolExpire = (int)$f3->get('PATHFINDER.CACHE.EXPIRE_CONNECTIONS_EOL'); if($eolExpire > 0){ @@ -81,12 +81,12 @@ class MapUpdate { `map` ON `map`.`id` = `con`.`mapId` WHERE - `map`.`deleteExpiredConnections` = :deleteExpiredConnections AND + `map`.`deleteEolConnections` = :deleteEolConnections AND TIMESTAMPDIFF(SECOND, `con`.`eolUpdated`, NOW() ) > :expire_time "; $connectionsData = $pfDB->exec($sql, [ - 'deleteExpiredConnections' => 1, + 'deleteEolConnections' => 1, 'expire_time' => $eolExpire ]); @@ -105,6 +105,50 @@ class MapUpdate { } } + /** + * delete expired WH connections after max lifetime for wormholes is reached + * >> php index.php "/cron/deleteExpiredConnections" + * @param \Base $f3 + */ + function deleteExpiredConnections(\Base $f3){ + $whExpire = (int)$f3->get('PATHFINDER.CACHE.EXPIRE_CONNECTIONS_WH'); + + if($whExpire > 0){ + $pfDB = DB\Database::instance()->getDB('PF'); + + $sql = "SELECT + `con`.`id` + FROM + `connection` `con` INNER JOIN + `map` ON + `map`.`id` = `con`.`mapId` + WHERE + `map`.`deleteExpiredConnections` = :deleteExpiredConnections AND + `con`.`scope` = :scope AND + TIMESTAMPDIFF(SECOND, `con`.`created`, NOW() ) > :expire_time + "; + + $connectionsData = $pfDB->exec($sql, [ + 'deleteExpiredConnections' => 1, + 'scope' => 'wh', + 'expire_time' => $whExpire + ]); + + if($connectionsData){ + /** + * @var $connection Model\ConnectionModel + */ + $connection = Model\BasicModel::getNew('ConnectionModel'); + foreach($connectionsData as $data){ + $connection->getById( (int)$data['id'] ); + if( !$connection->dry() ){ + $connection->erase(); + } + } + } + } + } + /** * delete all expired signatures on "inactive" systems * >> php index.php "/cron/deleteSignatures" diff --git a/app/main/model/mapmodel.php b/app/main/model/mapmodel.php index 2640418b..281f94a3 100644 --- a/app/main/model/mapmodel.php +++ b/app/main/model/mapmodel.php @@ -70,6 +70,11 @@ class MapModel extends BasicModel { 'nullable' => false, 'default' => 1 ], + 'deleteEolConnections' => [ + 'type' => Schema::DT_BOOL, + 'nullable' => false, + 'default' => 1 + ], 'systems' => [ 'has-many' => ['Model\SystemModel', 'mapId'] ], @@ -150,6 +155,7 @@ class MapModel extends BasicModel { $mapData->name = $this->name; $mapData->icon = $this->icon; $mapData->deleteExpiredConnections = $this->deleteExpiredConnections; + $mapData->deleteEolConnections = $this->deleteEolConnections; $mapData->created = strtotime($this->created); $mapData->updated = strtotime($this->updated); diff --git a/app/pathfinder.ini b/app/pathfinder.ini index 0bc0b92a..14a9dd0d 100644 --- a/app/pathfinder.ini +++ b/app/pathfinder.ini @@ -137,6 +137,8 @@ CONSTELLATION_SYSTEMS = 1728000 EXPIRE_MAX = 864000 ; expire time for EOL (end of life) connections (seconds) (default: 4h + 15min) EXPIRE_CONNECTIONS_EOL = 15300 +; expire time for WH connections (seconds) (default: 2d) +EXPIRE_CONNECTIONS_WH = 172800 ; expire time for signatures (inactive systems) (seconds) (default 3d) EXPIRE_SIGNATURES = 259200 diff --git a/js/app/ui/dialog/map_settings.js b/js/app/ui/dialog/map_settings.js index 344e6abd..b4316aed 100644 --- a/js/app/ui/dialog/map_settings.js +++ b/js/app/ui/dialog/map_settings.js @@ -20,7 +20,8 @@ define([ dialogMapSettingsContainerId: 'pf-map-dialog-settings', // id for the "settings" container dialogMapDownloadContainerId: 'pf-map-dialog-download', // id for the "download" container - deleteExpiredConnectionsId: 'pf-map-dialog-delete-connections', // id for "deleteExpiredConnections" checkbox + deleteExpiredConnectionsId: 'pf-map-dialog-delete-connections-expired', // id for "deleteExpiredConnections" checkbox + deleteEolConnectionsId: 'pf-map-dialog-delete-connections-eol', // id for "deleteEOLConnections" checkbox characterSelectId: 'pf-map-dialog-character-select', // id for "character" select corporationSelectId: 'pf-map-dialog-corporation-select', // id for "corporation" select @@ -106,6 +107,7 @@ define([ let accessCorporation = []; let accessAlliance = []; let deleteExpiredConnections = true; + let deleteEolConnections = true; if(mapData !== false){ // set current map information @@ -120,6 +122,7 @@ define([ accessAlliance = mapData.config.access.alliance; deleteExpiredConnections = mapData.config.deleteExpiredConnections; + deleteEolConnections = mapData.config.deleteEolConnections; } // render main dialog ----------------------------------------------------- @@ -150,7 +153,9 @@ define([ // settings tab -------------- deleteExpiredConnectionsId : config.deleteExpiredConnectionsId, + deleteEolConnectionsId : config.deleteEolConnectionsId, deleteExpiredConnections: deleteExpiredConnections, + deleteEolConnections: deleteEolConnections, characterSelectId: config.characterSelectId, corporationSelectId: config.corporationSelectId, @@ -238,6 +243,9 @@ define([ if( form.find('#' + config.deleteExpiredConnectionsId).length ){ formData.deleteExpiredConnections = formData.hasOwnProperty('deleteExpiredConnections') ? parseInt( formData.deleteExpiredConnections ) : 0; } + if( form.find('#' + config.deleteEolConnectionsId).length ){ + formData.deleteEolConnections = formData.hasOwnProperty('deleteEolConnections') ? parseInt( formData.deleteEolConnections ) : 0; + } let requestData = {formData: formData}; diff --git a/public/js/v1.2.3/app/ui/dialog/map_settings.js b/public/js/v1.2.3/app/ui/dialog/map_settings.js index 344e6abd..b4316aed 100644 --- a/public/js/v1.2.3/app/ui/dialog/map_settings.js +++ b/public/js/v1.2.3/app/ui/dialog/map_settings.js @@ -20,7 +20,8 @@ define([ dialogMapSettingsContainerId: 'pf-map-dialog-settings', // id for the "settings" container dialogMapDownloadContainerId: 'pf-map-dialog-download', // id for the "download" container - deleteExpiredConnectionsId: 'pf-map-dialog-delete-connections', // id for "deleteExpiredConnections" checkbox + deleteExpiredConnectionsId: 'pf-map-dialog-delete-connections-expired', // id for "deleteExpiredConnections" checkbox + deleteEolConnectionsId: 'pf-map-dialog-delete-connections-eol', // id for "deleteEOLConnections" checkbox characterSelectId: 'pf-map-dialog-character-select', // id for "character" select corporationSelectId: 'pf-map-dialog-corporation-select', // id for "corporation" select @@ -106,6 +107,7 @@ define([ let accessCorporation = []; let accessAlliance = []; let deleteExpiredConnections = true; + let deleteEolConnections = true; if(mapData !== false){ // set current map information @@ -120,6 +122,7 @@ define([ accessAlliance = mapData.config.access.alliance; deleteExpiredConnections = mapData.config.deleteExpiredConnections; + deleteEolConnections = mapData.config.deleteEolConnections; } // render main dialog ----------------------------------------------------- @@ -150,7 +153,9 @@ define([ // settings tab -------------- deleteExpiredConnectionsId : config.deleteExpiredConnectionsId, + deleteEolConnectionsId : config.deleteEolConnectionsId, deleteExpiredConnections: deleteExpiredConnections, + deleteEolConnections: deleteEolConnections, characterSelectId: config.characterSelectId, corporationSelectId: config.corporationSelectId, @@ -238,6 +243,9 @@ define([ if( form.find('#' + config.deleteExpiredConnectionsId).length ){ formData.deleteExpiredConnections = formData.hasOwnProperty('deleteExpiredConnections') ? parseInt( formData.deleteExpiredConnections ) : 0; } + if( form.find('#' + config.deleteEolConnectionsId).length ){ + formData.deleteEolConnections = formData.hasOwnProperty('deleteEolConnections') ? parseInt( formData.deleteEolConnections ) : 0; + } let requestData = {formData: formData}; diff --git a/public/templates/dialog/map.html b/public/templates/dialog/map.html index 4818c041..fa6369d7 100644 --- a/public/templates/dialog/map.html +++ b/public/templates/dialog/map.html @@ -47,14 +47,23 @@
-
+
- + +
+
+
+
+
+
+
+
+ +
-

Share settings