From 65d2172ede83cd32d8b940b812a76bd0cbb6a3d9 Mon Sep 17 00:00:00 2001 From: Shish Date: Wed, 7 Nov 2018 16:06:10 +0000 Subject: [PATCH 1/4] move images and thumbs to data/ --- .htaccess | 4 ++-- core/_install.php | 19 ++++++------------- core/util.php | 4 ++-- index.php | 4 ++++ 4 files changed, 14 insertions(+), 17 deletions(-) diff --git a/.htaccess b/.htaccess index d6a43797..3050e2e7 100644 --- a/.htaccess +++ b/.htaccess @@ -17,8 +17,8 @@ # rather than link to images/ha/hash and have an ugly filename, # we link to images/hash/tags.ext; mod_rewrite splits things so # that shimmie sees hash and the user sees tags.ext - RewriteRule ^_images/([0-9a-f]{2})([0-9a-f]{30}).*$ images/$1/$1$2 [L] - RewriteRule ^_thumbs/([0-9a-f]{2})([0-9a-f]{30}).*$ thumbs/$1/$1$2 [L] + RewriteRule ^_images/([0-9a-f]{2})([0-9a-f]{30}).*$ data/images/$1/$1$2 [L] + RewriteRule ^_thumbs/([0-9a-f]{2})([0-9a-f]{30}).*$ data/thumbs/$1/$1$2 [L] # any requests for files which don't physically exist should be handled by index.php RewriteCond %{REQUEST_FILENAME} !-f diff --git a/core/_install.php b/core/_install.php index d8971fc0..e7a07243 100644 --- a/core/_install.php +++ b/core/_install.php @@ -360,29 +360,22 @@ function insert_defaults() { // {{{ function build_dirs() { // {{{ // *try* and make default dirs. Ignore any errors -- // if something is amiss, we'll tell the user later - if(!file_exists("images")) @mkdir("images"); - if(!file_exists("thumbs")) @mkdir("thumbs"); - if(!file_exists("data") ) @mkdir("data"); - if(!is_writable("images")) @chmod("images", 0755); - if(!is_writable("thumbs")) @chmod("thumbs", 0755); - if(!is_writable("data") ) @chmod("data", 0755); + if(!file_exists("data")) @mkdir("data"); + if(!is_writable("data")) @chmod("data", 0755); // Clear file status cache before checking again. clearstatcache(); - if( - !file_exists("images") || !file_exists("thumbs") || !file_exists("data") || - !is_writable("images") || !is_writable("thumbs") || !is_writable("data") - ) { + if(!file_exists("data") || !is_writable("data")) { print "

Shimmie Installer

Directory Permissions Error:

-

Shimmie needs to make three folders in it's directory, 'images', 'thumbs', and 'data', and they need to be writable by the PHP user.

-

If you see this error, if probably means the folders are owned by you, and they need to be writable by the web server.

+

Shimmie needs to have a 'data' folder in its directory, writable by the PHP user.

+

If you see this error, if probably means the folder is owned by you, and it needs to be writable by the web server.

PHP reports that it is currently running as user: ".$_ENV["USER"]." (". $_SERVER["USER"] .")

-

Once you have created these folders and / or changed the ownership of the shimmie folder, hit 'refresh' to continue.

+

Once you have created this folder and / or changed the ownership of the shimmie folder, hit 'refresh' to continue.



diff --git a/core/util.php b/core/util.php index d611aa88..cd06b8d9 100644 --- a/core/util.php +++ b/core/util.php @@ -182,10 +182,10 @@ function warehouse_path(string $base, string $hash, bool $create=true): string { $ab = substr($hash, 0, 2); $cd = substr($hash, 2, 2); if(WH_SPLITS == 2) { - $pa = $base.'/'.$ab.'/'.$cd.'/'.$hash; + $pa = 'data/'.$base.'/'.$ab.'/'.$cd.'/'.$hash; } else { - $pa = $base.'/'.$ab.'/'.$hash; + $pa = 'data/'.$base.'/'.$ab.'/'.$hash; } if($create && !file_exists(dirname($pa))) mkdir(dirname($pa), 0755, true); return $pa; diff --git a/index.php b/index.php index b944e3eb..4aedff09 100644 --- a/index.php +++ b/index.php @@ -48,6 +48,10 @@ if(!file_exists("data/config/shimmie.conf.php")) { exit; } +if(file_exists("images") && !file_exists("data/images")) { + die("As of Shimmie 2.7 images and thumbs should be moved to data/images and data/thumbs"); +} + if(!file_exists("vendor/")) { //CHECK: Should we just point to install.php instead? Seems unsafe though. print << Date: Wed, 7 Nov 2018 16:48:07 +0000 Subject: [PATCH 2/4] automatic sqlite name --- core/_install.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/_install.php b/core/_install.php index e7a07243..2b0a4eb3 100644 --- a/core/_install.php +++ b/core/_install.php @@ -108,8 +108,9 @@ function do_install() { // {{{ if(file_exists("data/config/auto_install.conf.php")) { require_once "data/config/auto_install.conf.php"; } - else if(@$_POST["database_type"] == "sqlite" && isset($_POST["database_name"])) { - define('DATABASE_DSN', "sqlite:{$_POST["database_name"]}"); + else if(@$_POST["database_type"] == "sqlite") { + $id = bin2hex(random_bytes(5)); + define('DATABASE_DSN', "sqlite:data/shimmie.{$id}.sqlite"); } else if(isset($_POST['database_type']) && isset($_POST['database_host']) && isset($_POST['database_user']) && isset($_POST['database_name'])) { define('DATABASE_DSN', "{$_POST['database_type']}:user={$_POST['database_user']};password={$_POST['database_password']};host={$_POST['database_host']};dbname={$_POST['database_name']}"); @@ -153,7 +154,6 @@ function ask_questions() { // {{{ if( !in_array("mysql", $drivers) && !in_array("pgsql", $drivers) && - !in_array("sqlite", $drivers) ) { $errors[] = " @@ -201,7 +201,7 @@ function ask_questions() { // {{{ Password: - + DB Name: From 379fcdfd20fd2354185570912e831946e54e8ac2 Mon Sep 17 00:00:00 2001 From: Shish Date: Sat, 10 Nov 2018 11:19:56 +0000 Subject: [PATCH 3/4] docker instructions --- README.markdown | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.markdown b/README.markdown index 4b60f8ad..46910d96 100644 --- a/README.markdown +++ b/README.markdown @@ -50,6 +50,24 @@ check out one of the versioned branches. 4. Run `composer install` in the shimmie folder. 5. Follow instructions noted in "Installation" starting from step 3. +# Docker + +Useful for testing in a known-good environment, this command will build a simple debian image and run all the unit tests inside it: + +``` +docker build -t shimmie . +``` + +Once you have an image which has passed all tests, you can then run it to get a live system: + +``` +docker run -p 0.0.0.0:8123:8000 shimmie +``` + +Then you can visit your server on port 8123 to see the site. + +Note that the docker image is entirely self-contained and has no persistence (assuming you use the sqlite database); each `docker run` will give a clean un-installed image. + ### Upgrade from earlier versions I very much recommend going via each major release in turn (eg, 2.0.6 From 5c49b3631d805e9bdcaa6ad0eade639b43699cf1 Mon Sep 17 00:00:00 2001 From: Shish Date: Sat, 10 Nov 2018 12:01:26 +0000 Subject: [PATCH 4/4] un-bump php back to 7.0, because debian stable... --- .travis.yml | 3 +-- README.markdown | 2 +- composer.json | 2 +- core/sys_config.php | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index db087aa9..4d7dea99 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: php php: - - 7.1 - - 7.2 + - 7.0 sudo: false diff --git a/README.markdown b/README.markdown index 46910d96..e8271f0f 100644 --- a/README.markdown +++ b/README.markdown @@ -29,7 +29,7 @@ check out one of the versioned branches. # Requirements - MySQL/MariaDB 5.1+ (with experimental support for PostgreSQL 9+ and SQLite 3) -- [Stable PHP](https://en.wikipedia.org/wiki/PHP#Release_history) (7.1+ as of writing) +- [Stable PHP](https://en.wikipedia.org/wiki/PHP#Release_history) (7.0+ as of writing) - GD or ImageMagick # Installation diff --git a/composer.json b/composer.json index 509164c6..5b91691f 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,7 @@ ], "require" : { - "php" : ">=7.1", + "php" : ">=7.0", "ext-pdo": "*", "flexihash/flexihash" : "^2.0.0", diff --git a/core/sys_config.php b/core/sys_config.php index 6ae38347..891840db 100644 --- a/core/sys_config.php +++ b/core/sys_config.php @@ -40,7 +40,7 @@ _d("TIMEZONE", null); // string timezone _d("CORE_EXTS", "bbcode,user,mail,upload,image,view,handle_pixel,ext_manager,setup,upgrade,handle_404,comment,tag_list,index,tag_edit,alias_editor"); // extensions to always enable _d("EXTRA_EXTS", ""); // string optional extra extensions _d("BASE_URL", null); // string force a specific base URL (default is auto-detect) -_d("MIN_PHP_VERSION", '7.1');// string minimum supported PHP version +_d("MIN_PHP_VERSION", '7.0');// string minimum supported PHP version _d("ENABLED_MODS", "imageboard"); /*