diff --git a/src/mibew/.htaccess b/src/mibew/.htaccess index 8a26f44f..1644ecb0 100644 --- a/src/mibew/.htaccess +++ b/src/mibew/.htaccess @@ -4,6 +4,11 @@ Options -Indexes # Follow symbolic links in the directory Options +FollowSymLinks +<IfModule mod_negotiation.c> + # Forbid apache to guess file extensions + Options -MultiViews +</IfModule> + # Disable mod_security for Apache 1.x <IfModule mod_security.c> SecFilterEngine Off @@ -51,3 +56,8 @@ Options +FollowSymLinks <FilesMatch "\.(yml|po|ini|handlebars|keep)$"> Deny from all </FilesMatch> + +# Deny access to CLI cron worker from the outside +<Files "cron.php"> + Deny from all +</Files> diff --git a/src/mibew/cron.php b/src/mibew/cron.php new file mode 100644 index 00000000..6793bcc8 --- /dev/null +++ b/src/mibew/cron.php @@ -0,0 +1,44 @@ +<?php +/* + * This file is a part of Mibew Messenger. + * + * Copyright 2005-2015 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Initialize libraries +require_once(dirname(__FILE__) . '/libs/init.php'); + +use Mibew\Cache\CacheFactory; +use Mibew\Maintenance\CronWorker; + +$configs = load_system_configs(); + +// Prepare the cache. It is initialized in the same way as in index.php +$cache_factory = new CacheFactory($configs['cache']); +// For now directory for cache files cannot be changed via the configs file. +$cache_factory->setOption('path', MIBEW_FS_ROOT . '/cache/stash'); + +// Do the job. +$worker = new CronWorker($cache_factory->getCache()); +$success = $worker->run(); + +if ($success) { + echo("All cron jobs done\n"); +} else { + echo("Cron job failed. Here are the errors:\n"); + foreach ($worker->getErrors() as $error) { + echo(' ' . $error . "\n"); + } +}