mirror of
https://github.com/PrivateBin/PrivateBin.git
synced 2025-04-20 07:35:46 -04:00
[enh] Create .htaccess into data #222
This commit is contained in:
parent
8994a35f41
commit
f23b1222dd
@ -75,10 +75,6 @@ languageselection = false
|
||||
; sha256 in HMAC for the deletion token
|
||||
zerobincompatibility = false
|
||||
|
||||
; allows you to specify the name of the web server you are using to use PrivateBin.
|
||||
; if you use Nginx, uncomment and add nginx.
|
||||
; webserver = "Nginx"
|
||||
|
||||
[expire]
|
||||
; expire value that is selected per default
|
||||
; make sure the value exists in [expire_options]
|
||||
|
@ -53,8 +53,7 @@ class Configuration
|
||||
'urlshortener' => '',
|
||||
'icon' => 'identicon',
|
||||
'cspheader' => 'default-src \'none\'; manifest-src \'self\'; connect-src *; script-src \'self\'; style-src \'self\'; font-src \'self\'; img-src \'self\' data:; referrer no-referrer; sandbox allow-same-origin allow-scripts allow-forms allow-popups',
|
||||
'zerobincompatibility' => false,
|
||||
'webserver' => 'Apache',
|
||||
'zerobincompatibility' => false
|
||||
),
|
||||
'expire' => array(
|
||||
'default' => '1week',
|
||||
|
@ -14,6 +14,7 @@ namespace PrivateBin\Model;
|
||||
|
||||
use Exception;
|
||||
use PrivateBin\Persistence\ServerSalt;
|
||||
use PrivateBin\Persistence\WebServer;
|
||||
use PrivateBin\PrivateBin;
|
||||
use PrivateBin\Sjcl;
|
||||
|
||||
@ -90,6 +91,7 @@ class Paste extends AbstractModel
|
||||
|
||||
$this->_data->meta->postdate = time();
|
||||
$this->_data->meta->salt = serversalt::generate();
|
||||
$this->_data->webserver = WebServer::canHtaccess();
|
||||
|
||||
// store paste
|
||||
if (
|
||||
|
90
lib/Persistence/WebServer.php
Normal file
90
lib/Persistence/WebServer.php
Normal file
@ -0,0 +1,90 @@
|
||||
<?php
|
||||
/**
|
||||
* PrivateBin
|
||||
*
|
||||
* a zero-knowledge paste bin
|
||||
*
|
||||
* @link https://github.com/PrivateBin/PrivateBin
|
||||
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
||||
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
||||
* @version 1.1
|
||||
*/
|
||||
|
||||
namespace PrivateBin\Persistence;
|
||||
|
||||
/**
|
||||
* WebServer
|
||||
*
|
||||
* Provides detect webserver functions.
|
||||
*/
|
||||
class WebServer extends AbstractPersistence
|
||||
{
|
||||
/**
|
||||
* path in which to persist something
|
||||
*
|
||||
* @access private
|
||||
* @static
|
||||
* @var string
|
||||
*/
|
||||
private static $_path = 'data';
|
||||
|
||||
/**
|
||||
* key to detect server software
|
||||
*
|
||||
* @access private
|
||||
* @static
|
||||
* @var string
|
||||
*/
|
||||
private static $_serverKey = 'SERVER_SOFTWARE';
|
||||
|
||||
/**
|
||||
* get a webserver
|
||||
*
|
||||
* @access public
|
||||
* @static
|
||||
* @return array
|
||||
*/
|
||||
public static function getWebserver()
|
||||
{
|
||||
$regex = "/(?<software>\w+)\/(?<version>[0-9.a-z]*)/";
|
||||
|
||||
if(isset($_SERVER[self::$_serverKey]) && preg_match_all($regex, $_SERVER[self::$_serverKey], $arr))
|
||||
return array_merge(['software' => $arr['software'][0]], ['version' => $arr['version'][0]]);
|
||||
else
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a directive into .htacess
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @static
|
||||
* @throws Exception
|
||||
*/
|
||||
public static function canHtaccess()
|
||||
{
|
||||
$file = '.htaccess';
|
||||
if (is_dir(self::$_path) && !is_file($file)) {
|
||||
$server = self::getWebserver();
|
||||
if($server['software'] == "Apache") {
|
||||
$pattern = '/2.4/';
|
||||
$regex = preg_match($pattern, $server['version']);
|
||||
if($regex == false) {
|
||||
self::_store(
|
||||
$file,
|
||||
'Allow from none' . PHP_EOL .
|
||||
'Deny from all' . PHP_EOL,
|
||||
LOCK_EX
|
||||
);
|
||||
} else {
|
||||
self::_store(
|
||||
$file,
|
||||
'Require all denied' . PHP_EOL,
|
||||
LOCK_EX
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user