Use temp filename when creating 'all' OPDS feed

This commit is contained in:
Alex Cabal 2020-06-01 20:27:03 -05:00
parent 98d98d5c24
commit 6b2a9ed655

View file

@ -117,15 +117,17 @@ print("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
$feed = ob_get_contents(); $feed = ob_get_contents();
ob_end_clean(); ob_end_clean();
file_put_contents('/tmp/all.xml', $feed); $tempFilename = tempnam('/tmp/', 'se-opds-');
exec('se clean /tmp/all.xml');
file_put_contents($tempFilename, $feed);
exec('se clean ' . escapeshellarg($tempFilename));
// If the feed has changed compared to the version currently on disk, copy our new version over // If the feed has changed compared to the version currently on disk, copy our new version over
// and update the updated timestamp in the master opds index. // and update the updated timestamp in the master opds index.
try{ try{
if(filesize($webRoot . '/www/opds/all.xml') !== filesize('/tmp/all.xml')){ if(filesize($webRoot . '/www/opds/all.xml') !== filesize($tempFilename)){
$oldFeed = file_get_contents($webRoot . '/www/opds/all.xml'); $oldFeed = file_get_contents($webRoot . '/www/opds/all.xml');
$newFeed = file_get_contents('/tmp/all.xml'); $newFeed = file_get_contents($tempFilename);
if($oldFeed != $newFeed){ if($oldFeed != $newFeed){
file_put_contents($webRoot . '/www/opds/all.xml', $newFeed); file_put_contents($webRoot . '/www/opds/all.xml', $newFeed);
@ -142,7 +144,9 @@ try{
} }
} }
catch(Exception $ex){ catch(Exception $ex){
rename('/tmp/all.xml', $webRoot . '/www/opds/all.xml'); rename($tempFilename, $webRoot . '/www/opds/all.xml');
} }
unlink($tempFilename);
?> ?>