149 lines
4.1 KiB
PHP
149 lines
4.1 KiB
PHP
<?php
|
|
|
|
/***************************\
|
|
|***DO NOT EDIT THIS FILE***|
|
|
|**EDIT sitemap.config.php**|
|
|
\***************************/
|
|
|
|
error_reporting(E_ALL);
|
|
|
|
//Read global variables from config file
|
|
require_once( 'sitemap.config.php' );
|
|
|
|
// Include all functions
|
|
require_once('sitemap.functions.php');
|
|
|
|
|
|
//Default html header makes browsers ignore \n
|
|
header("Content-Type: text/plain");
|
|
|
|
$color = false;
|
|
|
|
$version_script = 2;
|
|
|
|
if ($version_script != $version_functions || $version_functions != $version_config){
|
|
logger("Script versions mismatch!",3);
|
|
logger("Update necessary",3);
|
|
logger("Version of sitemap.functions.php " .$version_functions ,3);
|
|
logger("Version of sitemap.config.php " .$version_config ,3);
|
|
logger("Version of sitemap.php " .$version_script ,3);
|
|
logger("Download new files here: https://www.github.com/knyzorg/sitemap-generator-crawler" ,3);
|
|
die("Stopped.");
|
|
}
|
|
|
|
// Add PHP CLI support
|
|
if (php_sapi_name() === 'cli' && PHP_OS != 'WINNT') {
|
|
parse_str(implode('&', array_slice($argv, 1)), $args);
|
|
$color = true;
|
|
}
|
|
|
|
//Allow variable overloading with CLI
|
|
if (isset($args['file'])) {
|
|
$file = $args['file'];
|
|
}
|
|
if (isset($args['site'])) {
|
|
$site = $args['site'];
|
|
}
|
|
if (isset($args['max_depth'])) {
|
|
global $max_depth;
|
|
$max_depth = $args['max_depth'];
|
|
}
|
|
if (isset($args['enable_frequency'])) {
|
|
global $enable_frequency;
|
|
$enable_frequency = $args['enable_frequency'];
|
|
}
|
|
if (isset($args['enable_priority'])) {
|
|
global $enable_priority;
|
|
$enable_priority = $args['enable_priority'];
|
|
}
|
|
if (isset($args['enable_modified'])) {
|
|
global $enable_modified;
|
|
$enable_modified = $args['enable_modified'];
|
|
}
|
|
if (isset($args['freq'])) {
|
|
global $freq;
|
|
$freq = $args['freq'];
|
|
}
|
|
if (isset($args['priority'])) {
|
|
global $priority;
|
|
$priority = $args['priority'];
|
|
}
|
|
if (isset($args['blacklist'])) {
|
|
global $blacklist;
|
|
$blacklist = $args['blacklist'];
|
|
}
|
|
if (isset($args['debug'])) {
|
|
global $debug;
|
|
$debug = $args['debug'];
|
|
}
|
|
if (isset($args['ignore_arguments'])) {
|
|
global $ignore_arguments;
|
|
$ignore_arguments = !!$args['ignore_arguments'];
|
|
}
|
|
if (isset($args['pdf_index'])) {
|
|
$pdf_index = $args['pdf_index'];
|
|
}
|
|
|
|
//Begin stopwatch for statistics
|
|
$start = microtime(true);
|
|
|
|
//Setup file stream
|
|
$tempfile = tempnam(sys_get_temp_dir(), 'sitemap.xml.');
|
|
|
|
global $file_stream;
|
|
$file_stream = fopen($tempfile, "w") or die("Error: Could not create temporary file $tempfile" . "\n");
|
|
|
|
fwrite($file_stream, $xmlheader);
|
|
|
|
// Global variable, non-user defined
|
|
global $depth;
|
|
global $scanned;
|
|
global $indexed;
|
|
global $deferredLinks;
|
|
|
|
$depth = 0;
|
|
$indexed = 0;
|
|
$scanned = array();
|
|
$deferredLinks = array();
|
|
|
|
// Reduce domain to root in case of monkey
|
|
global $real_site;
|
|
$real_site = domain_root($site);
|
|
|
|
if ($real_site != $site){
|
|
logger("Reformatted site from $site to $real_site", 2);
|
|
}
|
|
|
|
// Begin by crawling the original url
|
|
|
|
scan_url($real_site);
|
|
|
|
// Finalize sitemap
|
|
fwrite($file_stream, "</urlset>\n");
|
|
fclose($file_stream);
|
|
|
|
// Pretty-print sitemap
|
|
if ((PHP_OS == 'WINNT') ? `where xmllint` : `which xmllint`) {
|
|
logger("Found xmllint, pretty-printing sitemap", 0);
|
|
$responsevalue = exec('xmllint --format ' . $tempfile . ' -o ' . $tempfile . ' 2>&1', $discardedoutputvalue, $returnvalue);
|
|
if ($returnvalue) {
|
|
die("Error: " . $responsevalue . "\n");
|
|
}
|
|
}
|
|
|
|
// Generate and print out statistics
|
|
$time_elapsed_secs = round(microtime(true) - $start, 2);
|
|
logger("Sitemap has been generated in " . $time_elapsed_secs . " second" . (($time_elapsed_secs >= 1 ? 's' : '') . "and saved to $file"), 0);
|
|
$size = sizeof($scanned);
|
|
logger("Scanned a total of $size pages and indexed $indexed pages.", 0);
|
|
|
|
// Rename partial file to the real file name. `rename()` overwrites any existing files
|
|
rename($tempfile, $_SERVER['DOCUMENT_ROOT'].'/'.$file);
|
|
|
|
// Apply permissions
|
|
chmod($_SERVER['DOCUMENT_ROOT'].'/'.$file, $permissions);
|
|
|
|
|
|
// Declare that the script has finished executing and exit
|
|
logger("Operation Completed", 0);
|