diff --git a/bin/cronTask.sh b/bin/cronTask.sh new file mode 100644 index 0000000..b070ea2 --- /dev/null +++ b/bin/cronTask.sh @@ -0,0 +1,14 @@ +#!/bin/bash +queueDir="../cache/cronTask/" + +for file in $queueDir*.hash +do + if [ -f $file ]; + then + while read site hashUrl thumbSize sizeNameDir onlyThumb + do + bash thumb_server.sh "$site" "$hashUrl" "$thumbSize" "$sizeNameDir" "$onlyThumb" "0" + rm $file + done < $file + fi +done diff --git a/bin/thumb_server.sh b/bin/thumb_server.sh index 26e8561..b6e316f 100755 --- a/bin/thumb_server.sh +++ b/bin/thumb_server.sh @@ -9,9 +9,11 @@ thumbSize=$3 # size of thumb widthxheight ex : 190x90 sizeNameDir=$4 # name of size dir onlyThumb=$5 # make only thumbshot no full size image waitForResult=$6 # if true we try to make soon as possible or add to queue + ########################################## ##### DON'T EDIT THIS PARAM USE ##### ##### cache/config/serverOptions.php ##### +##### for overwrite options ##### ########################################## maxThread=1 # max parralle work. For me the best is nb core - 1 timeOut=60 # default time out, after this time the site are declared in error @@ -26,15 +28,15 @@ startPath=$sizeNameDir/$firstLevel/$secondLevel/ if [ $site == "manual" ] then - site=$(cat "cache/tmp/manual.txt") - echo '' > "cache/tmp/manual.txt" + site=$(cat "../cache/tmp/manual.txt") + echo '' > "../cache/tmp/manual.txt" fi -mkdir -p "cache/img/$startPath" +mkdir -p "../cache/img/$startPath" -if [ -f "cache/config/serverOptions.php" ] +if [ -f "../cache/config/serverOptions.php" ] then - source "cache/config/serverOptions.php" + source "../cache/config/serverOptions.php" fi if [ $currentProcess -gt $maxQueue ] @@ -52,9 +54,9 @@ then fi start_time=`date +%s` -timeout $timeOut ./bin/phantomjs --disk-cache=false --local-storage-path=/bin/ --ignore-ssl-errors=true /bin/rasterize.js "$site" "cache/tmp/$hashUrl.png" +timeout $timeOut ./phantomjs --disk-cache=false --local-storage-path=bin/ --ignore-ssl-errors=true rasterize.js "$site" "../cache/tmp/$hashUrl.png" -if [ ! -f "cache/tmp/$hashUrl.png" ] +if [ ! -f "../cache/tmp/$hashUrl.png" ] then echo 0 errorCode=`echo $(curl -k --write-out %{http_code} --silent -S --connect-timeout $timeOut \--no-keepalive --output /dev/null $site)` @@ -63,10 +65,10 @@ then errorCode='manual' fi case $errorCode in - 000) cp "bin/000.png" "cache/img/$startPath""$hashUrl""_thumb.png" && cp "bin/000.png" "cache/img/$startPath""$hashUrl.png" ;; - 200) cp "bin/error.png" "cache/img/$startPath""$hashUrl""_thumb.png" && cp "bin/error.png" "cache/img/$startPath""$hashUrl.png" ;; - 404) cp "bin/404.png" "cache/img/$startPath""$hashUrl""_thumb.png" && cp "bin/404.png" "cache/img/$startPath""$hashUrl.png" ;; - *) cp "bin/error.png" "cache/img/$startPath""$hashUrl""_thumb.png" && cp "bin/error.png" "cache/img/$startPath""$hashUrl.png" ;; + 000) cp "../bin/000.png" "../cache/img/$startPath""$hashUrl""_thumb.png" && cp "../bin/000.png" "../cache/img/$startPath""$hashUrl.png" ;; + 200) cp "../bin/error.png" "../cache/img/$startPath""$hashUrl""_thumb.png" && cp "../bin/error.png" "../cache/img/$startPath""$hashUrl.png" ;; + 404) cp "../bin/404.png" "../cache/img/$startPath""$hashUrl""_thumb.png" && cp "../bin/404.png" "../cache/img/$startPath""$hashUrl.png" ;; + *) cp "..bin/error.png" "../cache/img/$startPath""$hashUrl""_thumb.png" && cp "../bin/error.png" "../cache/img/$startPath""$hashUrl.png" ;; esac if $log then @@ -74,40 +76,40 @@ then logDate=`date +'[%a %d %b %Y] [%H:%M:%S]'` if [ $errorCode == 200 ] then - echo "none --- "$site" --- "$hashUrl" --- "$thumbSize" --- "$sizeNameDir" --- "$onlyThumb" --- true --- "$errorCode > "cache/logs/retry/"$hashUrl".log" + echo "none --- "$site" --- "$hashUrl" --- "$thumbSize" --- "$sizeNameDir" --- "$onlyThumb" --- true --- "$errorCode > "../cache/logs/retry/"$hashUrl".log" else - echo "none --- "$site" --- "$hashUrl" --- "$thumbSize" --- "$sizeNameDir" --- "$onlyThumb" --- true --- "$errorCode > "cache/logs/other/"$hashUrl".log" + echo "none --- "$site" --- "$hashUrl" --- "$thumbSize" --- "$sizeNameDir" --- "$onlyThumb" --- true --- "$errorCode > "../cache/logs/other/"$hashUrl".log" fi fi exit fi if [ $onlyThumb == 1 ] then - convert "cache/tmp/$hashUrl.png" -crop 1280x1024+0+0 -filter Lanczos -thumbnail "$thumbSize" "cache/img/$startPath""$hashUrl""_thumb.png" + convert "../cache/tmp/$hashUrl.png" -crop 1280x1024+0+0 -filter Lanczos -thumbnail "$thumbSize" "../cache/img/$startPath""$hashUrl""_thumb.png" if [ $optimizeTool ] then - eval $optimizeTool "cache/img/$startPath""$hashUrl""_thumb.png" + eval $optimizeTool "../cache/img/$startPath""$hashUrl""_thumb.png" fi else - convert "cache/tmp/$hashUrl.png" -crop 1280x1024+0+0 "cache/img/$startPath""$hashUrl.png" - convert "cache/img/$startPath""$hashUrl.png" -filter Lanczos -thumbnail "$thumbSize" "cache/img/$startPath""$hashUrl""_thumb.png" + convert "../cache/tmp/$hashUrl.png" -crop 1280x1024+0+0 "../cache/img/$startPath""$hashUrl.png" + convert "../cache/img/$startPath""$hashUrl.png" -filter Lanczos -thumbnail "$thumbSize" "../cache/img/$startPath""$hashUrl""_thumb.png" if [ $optimizeTool ] then - eval $optimizeTool "cache/img/$startPath""$hashUrl""_thumb.png" "cache/img/$startPath""$hashUrl.png" + eval $optimizeTool "../cache/img/$startPath""$hashUrl""_thumb.png" "../cache/img/$startPath""$hashUrl.png" fi fi -rm "cache/tmp/$hashUrl.png" +rm "../cache/tmp/$hashUrl.png" if [ $onlyThumb ] then - if [[ -f "cache/img/$startPath""$hashUrl""_thumb.png" ]] + if [[ -f "../cache/img/$startPath""$hashUrl""_thumb.png" ]] then echo 1 else echo 0 fi else - if [[ -f "cache/img/$startPath""$hashUrl""_thumb.png" && -f "cache/img/$startPath""$hashUrl.png" ]] + if [[ -f "../cache/img/$startPath""$hashUrl""_thumb.png" && -f "../cache/img/$startPath""$hashUrl.png" ]] then echo 1 else @@ -118,5 +120,5 @@ if $log then end_time=`date +%s` logDate=`date +'[%a %d %b %Y] [%H:%M:%S]'` - echo $logDate `expr $end_time - $start_time`s >> 'cache/logs/success.txt' + echo $logDate `expr $end_time - $start_time`s >> '../cache/logs/success.txt' fi diff --git a/inc/.htaccess b/inc/.htaccess new file mode 100644 index 0000000..b584d98 --- /dev/null +++ b/inc/.htaccess @@ -0,0 +1,2 @@ +Allow from none +Deny from all diff --git a/inc/admin.php b/inc/admin.php index 9541cb5..6daef1f 100644 --- a/inc/admin.php +++ b/inc/admin.php @@ -14,7 +14,7 @@ if (isset($ui['log']) && !in_array($ui['log'], $acceptParam['log']) || $_SESSION die('Tell me, Mr Anderson, what good is a phone call if you\'re unable to speak ?'); } -if (empty($ui['log'])) { +if (empty($ui['log']) && empty($ui['ac'])) { $ui['log'] = 'success'; } @@ -123,8 +123,16 @@ function keepThisThumb($hash, $log) { if (isset($ui['clear']) && (int)$ui['clear'] === 1) { clearLog($ui['log']); } -?> -
+if (isset($ui['ac']) && $ui['ac'] === 'delete' && isset($ui['thumb']) && !empty($ui['thumb'])) { + $imgUrl = pathForFile('m', $ui['thumb']); + if (file_exists($_SERVER['DOCUMENT_ROOT'].'/'.$imgUrl.'.png')) { + unlink($_SERVER['DOCUMENT_ROOT'].'/'.$imgUrl.'.png'); + } + if (file_exists($imgUrl.'_thumb.png')) { + unlink($_SERVER['DOCUMENT_ROOT'].'/'.$imgUrl.'_thumb.png'); + } +} +echo '
-
-'; +if ($ui['ac'] === 'delete') { + if (isset($ui['deleteUrl']) && testValidUrl($ui['deleteUrl']) !== true) { + unset($ui['deleteUrl']); + echo '
Not a valid url.
'; + } + echo ' +
+

+ '; + if (empty($ui['deleteUrl'])) { + echo ''; + } else { + echo ''; + } + echo '

+

+ + + +

+
'; + if (!empty($ui['deleteUrl'])) { + $ui['deleteUrl'] = trim(rawurldecode($ui['deleteUrl'])); + $ui['deleteUrl'] = rtrim($ui['deleteUrl'], '/'); + $hashUrl = sha1($GLOBALS['config']['salt'].$ui['deleteUrl']); + $imgUrl = pathForFile('m', $hashUrl); + echo '
+
+

+ +

+ Delete this thumb +
'; + } + +} +if (isset($ui['log']) && $ui['log'] === 'success') { $logs = parseSuccessLog(); if (!empty($logs)) { $nbThumb = 0; @@ -157,7 +203,7 @@ if ($ui['log'] === 'success') { } echo '

Clear success log

'; } -if ($ui['log'] === 'suspect' || $ui['log'] === 'retry' || $ui['log'] === 'other') { +if (isset($ui['log']) && ($ui['log'] === 'suspect' || $ui['log'] === 'retry' || $ui['log'] === 'other')) { if (isset($ui['hash']) && !empty($ui['hash'])) { $ui['hash'] = validHash($ui['hash']); if (isset($ui['root']) && (int)$ui['root'] === 1) { @@ -165,6 +211,9 @@ if ($ui['log'] === 'suspect' || $ui['log'] === 'retry' || $ui['log'] === 'other' } if (isset($ui['cache']) && (int)$ui['cache'] === 1) { $success['filePath'] = pathForFile($ui['s'], $ui['hash']).'.png'; + if (!file_exists($success['filePath'])) { + $success['filePath'] = 'data:image/png;base64,'.base64_encode(file_get_contents('bin/error.png')); + } } if (isset($ui['keep']) && (int)$ui['keep'] === 1) { keepThisThumb($ui['hash'], $ui['log']); @@ -176,7 +225,7 @@ if ($ui['log'] === 'suspect' || $ui['log'] === 'retry' || $ui['log'] === 'other' if (!empty($logs)) { echo ''; } else { @@ -184,10 +233,9 @@ if ($ui['log'] === 'suspect' || $ui['log'] === 'retry' || $ui['log'] === 'other' } } echo '
'; - if (!empty($success)) { echo '
'; - echo ''; + echo ''; echo '

'; echo 'Try with root domain / '; echo 'Keep this thumbshot'; diff --git a/index.php b/index.php index 9f3e61f..6dd6b0d 100644 --- a/index.php +++ b/index.php @@ -30,8 +30,8 @@ $GLOBALS['config']['thumbSize'] = array( ); // Remove image older than 12 hours $GLOBALS['config']['expireCache'] = 12; -// Disable exec command for launch script and use cron task -$GLOBALS['config']['disableExec'] = false; +// Disable exec command and use cron task +$GLOBALS['config']['disableExec'] = true; // Enable log for success, suspect, error $GLOBALS['config']['log'] = false; @@ -145,17 +145,30 @@ function launchScript($url, $hashUrl, $width, $size, $onlyThumb, $waitForResult } if ($GLOBALS['config']['disableExec'] === false) { + chdir('bin/'); if ($waitForResult === false) { - exec('bin/thumb_server.sh '.$url.' '.$hashUrl.' '.$width.' '.$size.' '.$onlyThumb.' > /dev/null &', $result); + exec('bash thumb_server.sh '.$url.' '.$hashUrl.' '.$width.' '.$size.' '.$onlyThumb.' > /dev/null &', $result); } else { - exec('bin/thumb_server.sh '.$url.' '.$hashUrl.' '.$width.' '.$size.' '.$onlyThumb.' 1', $result); + exec('bash thumb_server.sh '.$url.' '.$hashUrl.' '.$width.' '.$size.' '.$onlyThumb.' 1', $result); } + chdir('../'); } else { - return 0; + makeQueueFile($url, $hashUrl, $width, $size, $onlyThumb); + $result = 0; } return $result; } +function makeQueueFile($url, $hashUrl, $width, $size, $onlyThumb) { + $url = str_replace('\'', '', $url); + $hashUrl = str_replace('\'', '', $hashUrl); + $width = str_replace('\'', '', $width); + if (!file_exists('cache/cronTask/'.$hashUrl.'.hash')) { + $data = $url.' '.$hashUrl.' '.$width.' '.$size.' '.$onlyThumb. "\n"; + file_put_contents('cache/cronTask/'.$hashUrl.'.hash', $data); + } +} + function testValidUrl($url) { $url = trim($url); if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED | FILTER_FLAG_HOST_REQUIRED)) { @@ -168,7 +181,7 @@ function testValidUrl($url) { } return true; } else { - return array('msg' => 'Url are not valid.'); + return array('msg' => 'Not a valid url.'); } } @@ -244,6 +257,9 @@ function install() { if (!is_dir('cache/tmp') && !mkdir('cache/tmp', 0705)) { die('Error on create dir "cache/tmp".'); } + if (!is_dir('cache/cronTask') && !mkdir('cache/cronTask', 0705)) { + die('Error on create dir "cache/cronTask".'); + } $salt = sha1(uniqid(rand(), true).'_'.mt_rand()); $serverKey = substr(sha1(uniqid(rand(), true).'_'.mt_rand().$salt), 0, 12); $encryptServerKey = sha1($serverKey.$salt); @@ -279,6 +295,9 @@ function checkInstall() { if (!is_file('cache/config/.htaccess')) { file_put_contents('cache/config/.htaccess', "Allow from none\nDeny from all\n"); } + if (!is_file('cache/cronTask/.htaccess')) { + file_put_contents('cache/config/.htaccess', "Allow from none\nDeny from all\n"); + } if (!is_file('bin/.htaccess')) { file_put_contents('bin/.htaccess', "Allow from none\nDeny from all\n"); } @@ -367,9 +386,9 @@ function n_print($data, $name = '') { echo '

', $name, '

'; echo '
'; echo ' - ', basename($aBackTrace[0]['file']), ' ligne => ', $aBackTrace[0]['line'], ' + ', basename($aBackTrace[0]['file']), ' ligne => ', $aBackTrace[0]['line'], ' '; - echo '
',   htmlentities(print_r($data, 1)), '
'; + echo '
', htmlentities(print_r($data, 1)), '
'; echo '

@@ -552,7 +571,7 @@ if (!empty($ui['request']) && $ui['p'] !== 'install' && $ui['p'] !== 'login' && } if ((isset($ui['iw']) && (int)$ui['iw'] === 1 && $ui['request'] === 'api')) { $res = launchScript($defUrl, $hashUrl, $width, $ui['s'], $GLOBALS['config']['onlyThumb'], true); - } elseif ((isset($ui['iw']) && (int)$ui['iw'] === 1 && $ui['request'] === 'form')) { + } elseif (isset($ui['iw']) && (int)$ui['iw'] === 1 && $ui['request'] === 'form') { $res = launchScript($defUrl, $hashUrl, $width, 'shortLive', $GLOBALS['config']['onlyThumb'], true); } else { $res = launchScript($defUrl, $hashUrl, $width, $ui['s'], $GLOBALS['config']['onlyThumb'], false); @@ -561,6 +580,9 @@ if (!empty($ui['request']) && $ui['p'] !== 'install' && $ui['p'] !== 'login' && $file = 'bin/loadingGen'; printThumbShot($file); } else { + if ($GLOBALS['config']['disableExec'] === true) { + $file = 'bin/loadingGen'; + } $success = array( 'normal' => $file.'.png', 'thumb' => $file.'_thumb.png' @@ -576,11 +598,11 @@ if (!empty($ui['request']) && $ui['p'] !== 'install' && $ui['p'] !== 'login' && SoShot - + \ No newline at end of file diff --git a/inc/style.css b/style.css similarity index 99% rename from inc/style.css rename to style.css index 1546d98..c88d123 100644 --- a/inc/style.css +++ b/style.css @@ -22,7 +22,7 @@ a:visited { form, #result, #header, .message, .hMenu, #log { padding: 1em; text-align: center; - width: 50%; + width: 60%; margin: 1em auto; background-color: #ffffff; border-radius: 5px;