1
0
mirror of https://github.com/typemill/typemill.git synced 2025-08-06 22:26:32 +02:00

added proxy support

This commit is contained in:
trendschau
2020-10-07 11:37:22 +02:00
parent 144871d95d
commit 5a5f44a4f4
8 changed files with 100 additions and 10 deletions

View File

@@ -23,7 +23,7 @@ class SettingsController extends Controller
$route = $request->getAttribute('route');
$navigation = $this->getNavigation();
$content = '<h1>Hello</h1>';
$content = '<h1>Hello</h1><p>I am the showBlank method from the settings controller</p><p>In most cases I have been called from a plugin. But if you see this content, then the plugin does not work or has forgotten to inject its own content.</p>';
return $this->render($response, 'settings/blank.twig', array(
'settings' => $settings,
@@ -40,7 +40,7 @@ class SettingsController extends Controller
*********************/
public function showSettings($request, $response, $args)
{
{
$user = new User();
$settings = $this->c->get('settings');
$defaultSettings = \Typemill\Settings::getDefaultSettings();
@@ -96,11 +96,13 @@ class SettingsController extends Controller
'language' => $newSettings['language'],
'langattr' => $newSettings['langattr'],
'editor' => $newSettings['editor'],
'access' => $newSettings['access'],
'access' => $newSettings['access'],
'formats' => $newSettings['formats'],
'headlineanchors' => isset($newSettings['headlineanchors']) ? $newSettings['headlineanchors'] : null,
'displayErrorDetails' => isset($newSettings['displayErrorDetails']) ? true : null,
'twigcache' => isset($newSettings['twigcache']) ? true : null
'twigcache' => isset($newSettings['twigcache']) ? true : null,
'proxy' => isset($newSettings['proxy']) ? true : null,
'trustedproxies' => $newSettings['trustedproxies']
);
# https://www.slimframework.com/docs/v3/cookbook/uploading-files.html;

View File

@@ -50,6 +50,19 @@ class Validation
return false;
}, 'does not exist');
Validator::addRule('iplist', function($field, $value, array $params, array $fields) use ($user)
{
$iplist = explode(",", $value);
foreach($iplist as $ip)
{
if( filter_var( trim($ip), \FILTER_VALIDATE_IP) === false)
{
return false;
}
}
return true;
}, 'contains one or more invalid ip-adress');
Validator::addRule('checkPassword', function($field, $value, array $params, array $fields) use ($user)
{
$userdata = $user->getUser($fields['username']);
@@ -218,6 +231,7 @@ class Validation
$v->rule('in', 'editor', ['raw', 'visual']);
$v->rule('values_allowed', 'formats', $formats);
$v->rule('in', 'copyright', $copyright);
$v->rule('iplist', 'trustedproxies');
return $this->validationResult($v, $name);
}

View File

@@ -174,7 +174,9 @@ class Settings
'latestVersion' => true,
'logo' => true,
'favicon' => true,
'twigcache' => true
'twigcache' => true,
'proxy' => true,
'trustedproxies' => true,
];
# cleanup the existing usersettings

View File

@@ -187,6 +187,20 @@
<span class="error">{{ errors.settings.images.live.height | first }}</span>
{% endif %}
</div>
<div class="medium{{ errors.settings.proxy ? ' error' : '' }}">
<label for="settings[proxy]">{{ __('Proxy') }}</label>
<label class="control-group">{{ __('Use X-Forwarded Headers') }}
<input name="settings[proxy]" type="checkbox" {% if (settings.proxy or old.settings.proxy) %} checked {% endif %}>
<span class="checkmark"></span>
</label>
</div>
<div class="medium{{ errors.settings.trustedproxies ? ' error' : '' }}">
<label for="trustedproxies">{{ __('Trusted IPs for proxy (comma separated)') }}</label>
<input type="text" name="settings[trustedproxies]" id="trustedproxies" value="{{ old.settings.trustedproxies ? old.settings.trustedproxies : settings.trustedproxies }}" title="{{ __('Comma separated list of IPs') }}" />
{% if errors.settings.trustedproxies %}
<span class="error">{{ errors.settings.trustedproxies | first }}</span>
{% endif %}
</div>
</fieldset>
</section>
<input type="submit" value="{{ __('Save All Settings') }}" />

View File

@@ -48,6 +48,12 @@ $app = new \Slim\App($settings);
$container = $app->getContainer();
if($settings['settings']['proxy'])
{
$trustedProxies = isset($settings['settings']['trustedproxies']) ? explode(",", $settings['settings']['trustedproxies']) : [];
$app->add(new RKA\Middleware\ProxyDetection($trustedProxies));
}
/************************
* LOAD & UPDATE PLUGINS *
************************/
@@ -242,9 +248,10 @@ $container['view'] = function ($container) use ($uri)
$view->addExtension(new Typemill\Extensions\TwigMarkdownExtension());
$view->addExtension(new Typemill\Extensions\TwigMetaExtension());
$view->addExtension(new Typemill\Extensions\TwigPagelistExtension());
# use {{ base_url() }} in twig templates
$view['base_url'] = $uri->getBaseUrl();
$view['base_url'] = $basePath;
$view['current_url'] = $uri->getPath();
/* if session route, add flash messages and csrf-protection */