summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-11-17 02:56:30 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-11-17 02:56:30 +0100
commit9c5c023e36a24b58baeab108012cd9eb42ccda60 (patch)
tree9fbb3cdf8780ea02c37ee44898a3b3838b972142
parentb8c4afadf4bff7ac282ac5933eedccb1c666d873 (diff)
Réorganisation des fichiers utilisateur
Implémente https://github.com/marienfressinaud/FreshRSS/issues/248
-rw-r--r--README.md2
-rwxr-xr-xactualize_script.php2
-rw-r--r--app/configuration/.gitignore1
-rwxr-xr-xapp/controllers/entryController.php2
-rwxr-xr-xapp/controllers/indexController.php4
-rw-r--r--app/i18n/en.php2
-rw-r--r--app/i18n/fr.php2
-rw-r--r--app/layout/layout.phtml2
-rw-r--r--app/models/Feed.php2
-rwxr-xr-xapp/models/RSSConfiguration.php2
-rw-r--r--cache/.gitignore1
-rw-r--r--constants.php13
-rw-r--r--data/.gitignore6
-rw-r--r--lib/lib_rss.php6
-rwxr-xr-xlib/minz/Configuration.php10
-rwxr-xr-xlib/minz/dao/Model_pdo.php6
-rw-r--r--log/.gitignore1
-rw-r--r--public/data/.gitignore4
-rwxr-xr-xpublic/index.php8
-rw-r--r--public/install.php47
-rw-r--r--public/themes/icons/grey.gif (renamed from public/data/grey.gif)bin56 -> 56 bytes
21 files changed, 61 insertions, 62 deletions
diff --git a/README.md b/README.md
index 00df693e6..fb0b9e61e 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,7 @@ Privilégiez pour cela des demandes sur GitHub
# Sécurité et conseils
1. Pour une meilleure sécurité, faites en sorte que seul le répertoire `./public` soit accessible par le navigateur. Faites pointer un sous-domaine sur le répertoire `./public` par exemple
-2. Dans tous les cas, assurez-vous que `./app/configuration/application.ini` ne puisse pas être téléchargé !
+2. Dans tous les cas, assurez-vous que `./data/application.ini` ne puisse pas être téléchargé !
3. Le fichier de log peut être utile à lire si vous avez des soucis
4. Le fichier `./public/index.php` défini les chemins d'accès aux répertoires clés de l'application. Si vous les bougez, tout se passe ici.
5. Vous pouvez ajouter une tâche CRON sur le script d'actualisation des flux. Il s'agit d'un script PHP à exécuter avec la commande `php`. Par exemple, pour exécuter le script toutes les heures :
diff --git a/actualize_script.php b/actualize_script.php
index 65f9360a0..bc1d108bd 100755
--- a/actualize_script.php
+++ b/actualize_script.php
@@ -20,4 +20,4 @@ $front_controller = new App_FrontController ();
$front_controller->init ();
Session::_param('mail', true); // permet de se passer de la phase de connexion
$front_controller->run ();
-touch(PUBLIC_PATH . '/data/touch.txt');
+touch(DATA_PATH . '/touch.txt');
diff --git a/app/configuration/.gitignore b/app/configuration/.gitignore
deleted file mode 100644
index 72e8ffc0d..000000000
--- a/app/configuration/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/app/controllers/entryController.php b/app/controllers/entryController.php
index 4d2d92c1b..8016d719f 100755
--- a/app/controllers/entryController.php
+++ b/app/controllers/entryController.php
@@ -84,7 +84,7 @@ class entryController extends ActionController {
$entryDAO = new EntryDAO();
$entryDAO->optimizeTable();
- touch(PUBLIC_PATH . '/data/touch.txt');
+ touch(DATA_PATH . '/touch.txt');
$notif = array (
'type' => 'good',
diff --git a/app/controllers/indexController.php b/app/controllers/indexController.php
index 224d6fb9e..392abd3e1 100755
--- a/app/controllers/indexController.php
+++ b/app/controllers/indexController.php
@@ -277,7 +277,7 @@ class indexController extends ActionController {
$res = json_decode ($result, true);
if ($res['status'] == 'okay' && $res['email'] == $this->view->conf->mailLogin ()) {
Session::_param ('mail', $res['email']);
- touch(PUBLIC_PATH . '/data/touch.txt');
+ touch(DATA_PATH . '/touch.txt');
} else {
$res = array ();
$res['status'] = 'failure';
@@ -290,6 +290,6 @@ class indexController extends ActionController {
public function logoutAction () {
$this->view->_useLayout (false);
Session::_param ('mail');
- touch(PUBLIC_PATH . '/data/touch.txt');
+ touch(DATA_PATH . '/touch.txt');
}
}
diff --git a/app/i18n/en.php b/app/i18n/en.php
index eca1dd6d5..8243756bd 100644
--- a/app/i18n/en.php
+++ b/app/i18n/en.php
@@ -283,7 +283,7 @@ return array (
'dom_is_nok' => 'You haven’t the necessary to browse the DOM (php-xml package can be useful)',
'cache_is_ok' => 'Permissions on cache directory are good',
'log_is_ok' => 'Permissions on logs directory are good',
- 'conf_is_ok' => 'Permissions on configuration directory are good',
+ 'favicons_is_ok' => 'Permissions on favicons directory are good',
'data_is_ok' => 'Permissions on data directory are good',
'file_is_nok' => 'Check permissions on <em>%s</em> directory. HTTP server must have rights to write into',
'fix_errors_before' => 'Fix errors before skip to the next step.',
diff --git a/app/i18n/fr.php b/app/i18n/fr.php
index 2cddd4083..8040a6a44 100644
--- a/app/i18n/fr.php
+++ b/app/i18n/fr.php
@@ -283,7 +283,7 @@ return array (
'dom_is_nok' => 'Vous ne disposez pas du nécessaire pour parcourir le DOM (voir du côté du paquet php-xml ?)',
'cache_is_ok' => 'Les droits sur le répertoire de cache sont bons',
'log_is_ok' => 'Les droits sur le répertoire des logs sont bons',
- 'conf_is_ok' => 'Les droits sur le répertoire de configuration sont bons',
+ 'favicons_is_ok' => 'Les droits sur le répertoire des favicons sont bons',
'data_is_ok' => 'Les droits sur le répertoire de data sont bons',
'file_is_nok' => 'Veuillez vérifier les droits sur le répertoire <em>%s</em>. Le serveur HTTP doit être capable d’écrire dedans',
'fix_errors_before' => 'Veuillez corriger les erreurs avant de passer à l’étape suivante.',
diff --git a/app/layout/layout.phtml b/app/layout/layout.phtml
index ba4df4834..4232b714d 100644
--- a/app/layout/layout.phtml
+++ b/app/layout/layout.phtml
@@ -32,7 +32,7 @@
<?php
if (isset ($this->notification)) {
- touch(PUBLIC_PATH . '/data/touch.txt', time() + 1);
+ touch(DATA_PATH . '/touch.txt', time() + 1);
?>
<div class="notification <?php echo $this->notification['type']; ?>">
<?php echo $this->notification['content']; ?>
diff --git a/app/models/Feed.php b/app/models/Feed.php
index 2618d023f..adc8e1677 100644
--- a/app/models/Feed.php
+++ b/app/models/Feed.php
@@ -100,7 +100,7 @@ class Feed extends Model {
return $this->nbNotRead;
}
public function favicon () {
- $file = '/data/favicons/' . $this->id () . '.ico';
+ $file = '/favicons/' . $this->id () . '.ico';
$favicon_url = Url::display ($file);
if (!file_exists (PUBLIC_PATH . $file)) {
diff --git a/app/models/RSSConfiguration.php b/app/models/RSSConfiguration.php
index e79fd933b..f8379a625 100755
--- a/app/models/RSSConfiguration.php
+++ b/app/models/RSSConfiguration.php
@@ -348,7 +348,7 @@ class RSSConfigurationDAO extends Model_array {
public $bottomline_link = 'yes';
public function __construct () {
- parent::__construct (PUBLIC_PATH . '/data/Configuration.array.php');
+ parent::__construct (DATA_PATH . '/Configuration.array.php');
// TODO : simplifier ce code, une boucle for() devrait suffir !
if (isset ($this->array['language'])) {
diff --git a/cache/.gitignore b/cache/.gitignore
deleted file mode 100644
index 72e8ffc0d..000000000
--- a/cache/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/constants.php b/constants.php
index 260f01986..05d60b242 100644
--- a/constants.php
+++ b/constants.php
@@ -3,8 +3,11 @@ define('FRESHRSS_VERSION', '0.7-dev');
define('FRESHRSS_WEBSITE', 'http://marienfressinaud.github.io/FreshRSS/');
// Constantes de chemins
-define ('PUBLIC_PATH', realpath (dirname (__FILE__) . '/public'));
-define ('LIB_PATH', realpath (dirname (__FILE__) . '/lib'));
-define ('APP_PATH', realpath (dirname (__FILE__) . '/app'));
-define ('LOG_PATH', realpath (dirname (__FILE__) . '/log'));
-define ('CACHE_PATH', realpath (dirname (__FILE__) . '/cache'));
+define ('FRESHRSS_PATH', realpath (dirname (__FILE__)));
+define ('PUBLIC_PATH', FRESHRSS_PATH . '/public');
+define ('DATA_PATH', FRESHRSS_PATH . '/data');
+define ('LIB_PATH', FRESHRSS_PATH . '/lib');
+define ('APP_PATH', FRESHRSS_PATH . '/app');
+
+define ('LOG_PATH', DATA_PATH . '/log');
+define ('CACHE_PATH', DATA_PATH . '/cache');
diff --git a/data/.gitignore b/data/.gitignore
new file mode 100644
index 000000000..0e407f099
--- /dev/null
+++ b/data/.gitignore
@@ -0,0 +1,6 @@
+cache
+log
+application.ini
+Configuration.array.php
+*.sqlite
+touch.txt \ No newline at end of file
diff --git a/lib/lib_rss.php b/lib/lib_rss.php
index e4518ab4b..33f8641e1 100644
--- a/lib/lib_rss.php
+++ b/lib/lib_rss.php
@@ -168,9 +168,9 @@ function get_content_by_parsing ($url, $path) {
/* Télécharge le favicon d'un site, le place sur le serveur et retourne l'URL */
function dowload_favicon ($website, $id) {
$url = 'http://g.etfv.co/' . $website;
- $favicons_dir = PUBLIC_PATH . '/data/favicons';
+ $favicons_dir = PUBLIC_PATH . '/favicons';
$dest = $favicons_dir . '/' . $id . '.ico';
- $favicon_url = '/data/favicons/' . $id . '.ico';
+ $favicon_url = '/favicons/' . $id . '.ico';
if (!is_dir ($favicons_dir)) {
if (!mkdir ($favicons_dir, 0755, true)) {
@@ -211,7 +211,7 @@ function dowload_favicon ($website, $id) {
function lazyimg($content) {
return preg_replace(
'/<img([^>]+?)src=[\'"]([^"\']+)[\'"]([^>]*)>/i',
- '<img$1src="' . Url::display('/data/grey.gif') . '" data-original="$2"$3>',
+ '<img$1src="' . Url::display('/themes/icons/grey.gif') . '" data-original="$2"$3>',
$content
);
}
diff --git a/lib/minz/Configuration.php b/lib/minz/Configuration.php
index b296ec378..bdd6af0fb 100755
--- a/lib/minz/Configuration.php
+++ b/lib/minz/Configuration.php
@@ -8,7 +8,7 @@
* La classe Configuration permet de gérer la configuration de l'application
*/
class Configuration {
- const CONF_PATH_NAME = '/configuration/application.ini';
+ const CONF_PATH_NAME = '/application.ini';
/**
* VERSION est la version actuelle de MINZ
@@ -111,21 +111,21 @@ class Configuration {
* @exception BadConfigurationException si CONF_PATH_NAME mal formaté
*/
private static function parseFile () {
- if (!file_exists (APP_PATH . self::CONF_PATH_NAME)) {
+ if (!file_exists (DATA_PATH . self::CONF_PATH_NAME)) {
throw new FileNotExistException (
- APP_PATH . self::CONF_PATH_NAME,
+ DATA_PATH . self::CONF_PATH_NAME,
MinzException::ERROR
);
}
$ini_array = parse_ini_file (
- APP_PATH . self::CONF_PATH_NAME,
+ DATA_PATH . self::CONF_PATH_NAME,
true
);
if (!$ini_array) {
throw new PermissionDeniedException (
- APP_PATH . self::CONF_PATH_NAME,
+ DATA_PATH . self::CONF_PATH_NAME,
MinzException::ERROR
);
}
diff --git a/lib/minz/dao/Model_pdo.php b/lib/minz/dao/Model_pdo.php
index dd75153be..beeb65ea8 100755
--- a/lib/minz/dao/Model_pdo.php
+++ b/lib/minz/dao/Model_pdo.php
@@ -49,9 +49,7 @@ class Model_pdo {
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
);
} elseif($type == 'sqlite') {
- $string = $type
- . ':/' . PUBLIC_PATH
- . '/data/' . $db['base'] . '.sqlite'; //TODO: DEBUG UTF-8 http://www.siteduzero.com/forum/sujet/sqlite-connexion-utf-8-18797
+ $string = $type . ':/' . DATA_PATH . $db['base'] . '.sqlite'; //TODO: DEBUG UTF-8 http://www.siteduzero.com/forum/sujet/sqlite-connexion-utf-8-18797
}
$this->bd = new FreshPDO (
@@ -86,7 +84,7 @@ class Model_pdo {
class FreshPDO extends PDO {
private static function check($statement) {
if (preg_match('/^(?:UPDATE|INSERT|DELETE)/i', $statement)) {
- touch(PUBLIC_PATH . '/data/touch.txt');
+ touch(DATA_PATH . '/touch.txt');
}
}
diff --git a/log/.gitignore b/log/.gitignore
deleted file mode 100644
index 72e8ffc0d..000000000
--- a/log/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/public/data/.gitignore b/public/data/.gitignore
deleted file mode 100644
index 8498bc17e..000000000
--- a/public/data/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-favicons
-Configuration.array.php
-*.sqlite
-touch.txt \ No newline at end of file
diff --git a/public/index.php b/public/index.php
index bda585592..d989bc11d 100755
--- a/public/index.php
+++ b/public/index.php
@@ -20,16 +20,16 @@
require('../constants.php');
-if (file_exists (PUBLIC_PATH . '/install.php')) {
+if (file_exists ('install.php')) {
include ('install.php');
} else {
session_cache_limiter('');
require (LIB_PATH . '/http-conditional.php');
$dateLastModification = max(
- @filemtime(PUBLIC_PATH . '/data/touch.txt'),
+ @filemtime(DATA_PATH . '/touch.txt'),
@filemtime(LOG_PATH . '/application.log'),
- @filemtime(PUBLIC_PATH . '/data/Configuration.array.php'),
- @filemtime(APP_PATH . '/configuration/application.ini')
+ @filemtime(DATA_PATH . '/Configuration.array.php'),
+ @filemtime(DATA_PATH . '/application.ini')
);
if (httpConditional($dateLastModification, 0, 0, false, false, true)) {
exit(); //No need to send anything
diff --git a/public/install.php b/public/install.php
index 4c0da0ce5..085a412ff 100644
--- a/public/install.php
+++ b/public/install.php
@@ -166,7 +166,7 @@ function saveStep2 () {
. small_hash ($_SESSION['base_url'] . $_SESSION['sel']);
}
- $file_data = PUBLIC_PATH . '/data/Configuration.array.php';
+ $file_data = DATA_PATH . '/Configuration.array.php';
$f = fopen ($file_data, 'w');
writeLine ($f, '<?php');
@@ -199,7 +199,7 @@ function saveStep3 () {
$_SESSION['bd_name'] = addslashes ($_POST['base']);
$_SESSION['bd_prefix'] = addslashes ($_POST['prefix']);
- $file_conf = APP_PATH . '/configuration/application.ini';
+ $file_conf = DATA_PATH . '/application.ini';
$f = fopen ($file_conf, 'w');
writeLine ($f, '[general]');
writeLine ($f, 'environment = "production"');
@@ -265,10 +265,10 @@ function checkStep1 () {
$curl = extension_loaded ('curl');
$pdo = extension_loaded ('pdo_mysql');
$dom = class_exists('DOMDocument');
+ $data = DATA_PATH && is_writable (DATA_PATH);
$cache = CACHE_PATH && is_writable (CACHE_PATH);
$log = LOG_PATH && is_writable (LOG_PATH);
- $conf = APP_PATH && is_writable (APP_PATH . '/configuration');
- $data = is_writable (PUBLIC_PATH . '/data');
+ $favicons = is_writable (PUBLIC_PATH . '/favicons');
return array (
'php' => $php ? 'ok' : 'ko',
@@ -276,11 +276,11 @@ function checkStep1 () {
'curl' => $curl ? 'ok' : 'ko',
'pdo-mysql' => $pdo ? 'ok' : 'ko',
'dom' => $dom ? 'ok' : 'ko',
+ 'data' => $data ? 'ok' : 'ko',
'cache' => $cache ? 'ok' : 'ko',
'log' => $log ? 'ok' : 'ko',
- 'configuration' => $conf ? 'ok' : 'ko',
- 'data' => $data ? 'ok' : 'ko',
- 'all' => $php && $minz && $curl && $pdo && $dom && $cache && $log && $conf && $data ? 'ok' : 'ko'
+ 'favicons' => $favicons ? 'ok' : 'ko',
+ 'all' => $php && $minz && $curl && $pdo && $dom && $data && $cache && $log && $favicons ? 'ok' : 'ko'
);
}
function checkStep2 () {
@@ -289,7 +289,7 @@ function checkStep2 () {
isset ($_SESSION['title']) &&
isset ($_SESSION['old_entries']) &&
isset ($_SESSION['mail_login']);
- $data = file_exists (PUBLIC_PATH . '/data/Configuration.array.php');
+ $data = file_exists (DATA_PATH . '/Configuration.array.php');
return array (
'conf' => $conf ? 'ok' : 'ko',
@@ -298,7 +298,7 @@ function checkStep2 () {
);
}
function checkStep3 () {
- $conf = file_exists (APP_PATH . '/configuration/application.ini');
+ $conf = file_exists (DATA_PATH . '/application.ini');
$bd = isset ($_SESSION['bd_type']) &&
isset ($_SESSION['bd_host']) &&
isset ($_SESSION['bd_user']) &&
@@ -337,8 +337,7 @@ function checkBD () {
// on écrase la précédente connexion en sélectionnant la nouvelle BDD
$str = 'mysql:host=' . $_SESSION['bd_host'] . ';dbname=' . $_SESSION['bd_name'];
} elseif($_SESSION['bd_type'] == 'sqlite') {
- $str = 'sqlite:' . PUBLIC_PATH
- . '/data/' . $_SESSION['bd_name'] . '.sqlite';
+ $str = 'sqlite:' . DATA_PATH . $_SESSION['bd_name'] . '.sqlite';
}
$c = new PDO ($str,
@@ -370,8 +369,8 @@ function checkBD () {
$error = true;
}
- if ($error && file_exists (APP_PATH . '/configuration/application.ini')) {
- unlink (APP_PATH . '/configuration/application.ini');
+ if ($error && file_exists (DATA_PATH . '/application.ini')) {
+ unlink (DATA_PATH . '/application.ini');
}
return !$error;
@@ -448,28 +447,28 @@ function printStep1 () {
<p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('dom_is_nok'); ?></p>
<?php } ?>
+ <?php if ($res['data'] == 'ok') { ?>
+ <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('data_is_ok'); ?></p>
+ <?php } else { ?>
+ <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('file_is_nok', DATA_PATH); ?></p>
+ <?php } ?>
+
<?php if ($res['cache'] == 'ok') { ?>
<p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('cache_is_ok'); ?></p>
<?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('file_is_nok', PUBLIC_PATH . '/../cache'); ?></p>
+ <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('file_is_nok', CACHE_PATH); ?></p>
<?php } ?>
<?php if ($res['log'] == 'ok') { ?>
<p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('log_is_ok'); ?></p>
<?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('file_is_nok', PUBLIC_PATH . '/../log'); ?></p>
- <?php } ?>
-
- <?php if ($res['configuration'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('conf_is_ok'); ?></p>
- <?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('file_is_nok', APP_PATH . '/configuration'); ?></p>
+ <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('file_is_nok', LOG_PATH); ?></p>
<?php } ?>
- <?php if ($res['data'] == 'ok') { ?>
- <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('data_is_ok'); ?></p>
+ <?php if ($res['favicons'] == 'ok') { ?>
+ <p class="alert alert-success"><span class="alert-head"><?php echo _t ('ok'); ?></span> <?php echo _t ('favicons_is_ok'); ?></p>
<?php } else { ?>
- <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('file_is_nok', PUBLIC_PATH . '/data'); ?></p>
+ <p class="alert alert-error"><span class="alert-head"><?php echo _t ('damn'); ?></span> <?php echo _t ('file_is_nok', PUBLIC_PATH . '/favicons'); ?></p>
<?php } ?>
<?php if ($res['all'] == 'ok') { ?>
diff --git a/public/data/grey.gif b/public/themes/icons/grey.gif
index c7212bc1f..c7212bc1f 100644
--- a/public/data/grey.gif
+++ b/public/themes/icons/grey.gif
Binary files differ