refactor config and add allowed_hosts
This commit is contained in:
parent
b4bb02cee3
commit
cec4fb7ede
12 changed files with 77 additions and 56 deletions
|
@ -48,9 +48,11 @@ class _meta_controller extends Controller {
|
||||||
|
|
||||||
public function manifest(): void
|
public function manifest(): void
|
||||||
{
|
{
|
||||||
|
$domain = CONFIG['domain'];
|
||||||
|
$theme_color = CONFIG['theme_color'];
|
||||||
$json = array(
|
$json = array(
|
||||||
'short_name' => lang('domain'),
|
'short_name' => $domain,
|
||||||
'name' => lang('domain'),
|
'name' => $domain,
|
||||||
'icons' => [
|
'icons' => [
|
||||||
array(
|
array(
|
||||||
'src' => $this->get_url('public/icons/logo512.png'),
|
'src' => $this->get_url('public/icons/logo512.png'),
|
||||||
|
@ -61,10 +63,10 @@ class _meta_controller extends Controller {
|
||||||
],
|
],
|
||||||
'id' => $this->get_url('home'),
|
'id' => $this->get_url('home'),
|
||||||
'start_url' => $this->get_url('home'),
|
'start_url' => $this->get_url('home'),
|
||||||
'background_color' => lang('theme_color'),
|
'background_color' => $theme_color,
|
||||||
'display' => 'standalone',
|
'display' => 'standalone',
|
||||||
'scope' => lang('base_path'),
|
'scope' => CONFIG['base_path'],
|
||||||
'theme_color' => lang('theme_color'),
|
'theme_color' => $theme_color,
|
||||||
'shortcuts' => [],
|
'shortcuts' => [],
|
||||||
'description' => lang('default_short_desc'),
|
'description' => lang('default_short_desc'),
|
||||||
'screenshots' => []
|
'screenshots' => []
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<rss version="2.0">
|
<rss version="2.0">
|
||||||
<channel>
|
<channel>
|
||||||
<title><?=lang('title')?></title>
|
<title><?=lang('title')?></title>
|
||||||
<link><?=lang('root_url') . '/blog'?></link>
|
<link><?=$this->get_url('blog')?></link>
|
||||||
<description><?=lang('blog_short_desc')?></description>
|
<description><?=lang('blog_short_desc')?></description>
|
||||||
<language><?=lang('lang_short')?></language>
|
<language><?=lang('lang_short')?></language>
|
||||||
<?php
|
<?php
|
||||||
|
@ -12,8 +12,8 @@
|
||||||
echo '<title>' . $post['meta']['name'] . '</title>';
|
echo '<title>' . $post['meta']['name'] . '</title>';
|
||||||
echo '<description>' . $post['meta']['desc'] . '</description>';
|
echo '<description>' . $post['meta']['desc'] . '</description>';
|
||||||
echo '<pubDate>' . $post['meta']['date'] . '</pubDate>';
|
echo '<pubDate>' . $post['meta']['date'] . '</pubDate>';
|
||||||
echo '<link>' . lang('root_url') . 'blog/post/' . $name . '</link>';
|
echo '<link>' . $this->get_url('blog/post/' . $name) . '</link>';
|
||||||
echo '<guid>' . lang('root_url') . 'blog/post/' . $name . '</guid>';
|
echo '<guid>' . $this->get_url('blog/post/' . $name) . '</guid>';
|
||||||
echo '</item>';
|
echo '</item>';
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
?>
|
?>
|
||||||
<div class="new">
|
<div class="new">
|
||||||
<h3><?=lang('new_comment_title')?></h3>
|
<h3><?=lang('new_comment_title')?></h3>
|
||||||
<form id="new_comment" method="get" action="<?=lang('base_path') . '_comments/post'?>">
|
<form id="new_comment" method="get" action="<?=$this->get_url('_comments/post')?>">
|
||||||
<div><input
|
<div><input
|
||||||
type="text"
|
type="text"
|
||||||
name="author"
|
name="author"
|
||||||
|
|
|
@ -6,12 +6,12 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta name="author" content="freya">
|
<meta name="author" content="freya">
|
||||||
<meta name="description" content="<?=$desc?>">
|
<meta name="description" content="<?=$desc?>">
|
||||||
<meta name="theme-color" content="<?=lang('theme_color')?>">
|
<meta name="theme-color" content="<?=CONFIG['theme_color']?>">
|
||||||
<meta name="referrer" content="origin">
|
<meta name="referrer" content="origin">
|
||||||
<meta name="color-scheme" content="none">
|
<meta name="color-scheme" content="none">
|
||||||
<meta property="og:description" content="<?=$desc?>">
|
<meta property="og:description" content="<?=$desc?>">
|
||||||
<meta property="og:title" content="<?=$title?>">
|
<meta property="og:title" content="<?=$title?>">
|
||||||
<meta property="og:site_name" content="<?=lang('domain')?>">
|
<meta property="og:site_name" content="<?=CONFIG['domain']?>">
|
||||||
<meta property="og:image" content="<?=$this->get_url('public/icons/logo640.png', TRUE)?>">
|
<meta property="og:image" content="<?=$this->get_url('public/icons/logo640.png', TRUE)?>">
|
||||||
<title><?=$title?></title>
|
<title><?=$title?></title>
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="<?=$this->get_url("public/icons/logo16.png", TRUE)?>">
|
<link rel="icon" type="image/png" sizes="16x16" href="<?=$this->get_url("public/icons/logo16.png", TRUE)?>">
|
||||||
|
|
42
src/web/config.php
Normal file
42
src/web/config.php
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<?php /* Copyright (c) 2024 Freya Murphy */
|
||||||
|
|
||||||
|
// ENVIRONMENT
|
||||||
|
//
|
||||||
|
// devlopment - do not cache any assets
|
||||||
|
// - use http host provided by user
|
||||||
|
//
|
||||||
|
// production - use generated timestamps for each file
|
||||||
|
// - hard code http host to 'domain' lang string
|
||||||
|
//
|
||||||
|
define('ENVIRONMENT', 'devlopment');
|
||||||
|
|
||||||
|
// CONFIG
|
||||||
|
//
|
||||||
|
// config values needed across the website
|
||||||
|
|
||||||
|
define('CONFIG', array(
|
||||||
|
/* core config settings */
|
||||||
|
'domain' => 'freya.cat',
|
||||||
|
'allowed_hosts' => ['freya.cat', 'www.freya.cat'],
|
||||||
|
'base_path' => '/',
|
||||||
|
'theme_color' => '#181818',
|
||||||
|
'git_url' => 'https://g.freya.cat/freya',
|
||||||
|
/* route overides */
|
||||||
|
'routes' => array(
|
||||||
|
'' => 'home',
|
||||||
|
'robots.txt' => '_meta/robots',
|
||||||
|
'sitemap.xml' => '_meta/sitemap',
|
||||||
|
'manifest.json' => '_meta/manifest',
|
||||||
|
'rss.xml' => 'blog/rss',
|
||||||
|
),
|
||||||
|
/* css to load on each route */
|
||||||
|
'style' => array(
|
||||||
|
'home' => 'css/home.css',
|
||||||
|
'blog' => ['css/blog.css', 'css/prism.css'],
|
||||||
|
'error' => 'css/error.css',
|
||||||
|
),
|
||||||
|
/* js to load on each route */
|
||||||
|
'js' => array(
|
||||||
|
'blog' => 'js/prism.js',
|
||||||
|
),
|
||||||
|
));
|
|
@ -1,7 +0,0 @@
|
||||||
<?php /* Copyright (c) 2024 Freya Murphy */
|
|
||||||
$routes = array();
|
|
||||||
$routes[''] = 'home';
|
|
||||||
$routes['robots.txt'] = '_meta/robots';
|
|
||||||
$routes['sitemap.xml'] = '_meta/sitemap';
|
|
||||||
$routes['manifest.json'] = '_meta/manifest';
|
|
||||||
$routes['rss.xml'] = 'blog/rss';
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?php /* Copyright (c) 2024 Freya Murphy */
|
|
||||||
$style = array();
|
|
||||||
$style['home'] = 'css/home.css';
|
|
||||||
$style['blog'] = ['css/blog.css', 'css/prism.css'];
|
|
||||||
$style['error'] = 'css/error.css';
|
|
||||||
$style['prism'] = 'css/prism.css';
|
|
||||||
|
|
||||||
$js = array();
|
|
||||||
$js['blog'] = 'js/prism.js';
|
|
|
@ -43,10 +43,16 @@ abstract class Core {
|
||||||
|
|
||||||
$host = $_SERVER['HTTP_HOST'];
|
$host = $_SERVER['HTTP_HOST'];
|
||||||
|
|
||||||
if (ENVIRONMENT == 'production')
|
if (ENVIRONMENT == 'production') {
|
||||||
$host = lang('domain');
|
$default = CONFIG['domain'];
|
||||||
|
$allowed = CONFIG['allowed_hosts'];
|
||||||
|
if (!is_array($allowed))
|
||||||
|
$allowed = [$allowed];
|
||||||
|
if (!in_array($host, $allowed))
|
||||||
|
$host = $default;
|
||||||
|
}
|
||||||
|
|
||||||
$base = lang('base_path');
|
$base = CONFIG['base_path'];
|
||||||
$url = "{$scheme}://{$host}{$base}{$path}";
|
$url = "{$scheme}://{$host}{$base}{$path}";
|
||||||
if ($timestamp) {
|
if ($timestamp) {
|
||||||
$time = Core::asset_stamp($path);
|
$time = Core::asset_stamp($path);
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
abstract class Model extends Component {
|
abstract class Model extends Component {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<string,mixed>
|
||||||
|
*/
|
||||||
public static function get_base_data(?string $app = NULL): array
|
public static function get_base_data(?string $app = NULL): array
|
||||||
{
|
{
|
||||||
$data = array();
|
$data = array();
|
||||||
|
@ -10,8 +13,8 @@ abstract class Model extends Component {
|
||||||
$data['css'] = array();
|
$data['css'] = array();
|
||||||
$data['js'] = array();
|
$data['js'] = array();
|
||||||
|
|
||||||
$style = $GLOBALS['style'];
|
$style = CONFIG['style'];
|
||||||
$js = $GLOBALS['js'];
|
$js = CONFIG['js'];
|
||||||
|
|
||||||
if (!$app)
|
if (!$app)
|
||||||
$app = CONTEXT['app'];
|
$app = CONTEXT['app'];
|
||||||
|
|
|
@ -30,7 +30,8 @@ class Router extends Component {
|
||||||
$path = substr($path, 1);
|
$path = substr($path, 1);
|
||||||
|
|
||||||
// get modified route
|
// get modified route
|
||||||
foreach ($GLOBALS['routes'] as $key => $value) {
|
$routes = CONFIG['routes'];
|
||||||
|
foreach ($routes as $key => $value) {
|
||||||
$key = "/^{$key}$/";
|
$key = "/^{$key}$/";
|
||||||
if (!preg_match($key, $path, $matches))
|
if (!preg_match($key, $path, $matches))
|
||||||
continue;
|
continue;
|
||||||
|
@ -83,7 +84,6 @@ class Router extends Component {
|
||||||
'args' => array_slice($parts, 2),
|
'args' => array_slice($parts, 2),
|
||||||
);
|
);
|
||||||
|
|
||||||
$routes = $GLOBALS['routes'];
|
|
||||||
if (isset($routes[$path])) {
|
if (isset($routes[$path])) {
|
||||||
$parts = explode('/', $routes[$path]);
|
$parts = explode('/', $routes[$path]);
|
||||||
if (count($parts) == 1) {
|
if (count($parts) == 1) {
|
||||||
|
|
|
@ -6,16 +6,6 @@ ini_set('html_errors', '1');
|
||||||
ini_set('browscap', 'browscap.ini');
|
ini_set('browscap', 'browscap.ini');
|
||||||
date_default_timezone_set('America/New_York');
|
date_default_timezone_set('America/New_York');
|
||||||
|
|
||||||
// ENVIRONMENT
|
|
||||||
//
|
|
||||||
// devlopment - do not cache any assets
|
|
||||||
// - use http host provided by user
|
|
||||||
//
|
|
||||||
// production - use generated timestamps for each file
|
|
||||||
// - hard code http host to 'domain' lang string
|
|
||||||
//
|
|
||||||
define('ENVIRONMENT', 'devlopment');
|
|
||||||
|
|
||||||
// FOLDER_ROOT
|
// FOLDER_ROOT
|
||||||
//
|
//
|
||||||
// define folder directiroy paths based on this file
|
// define folder directiroy paths based on this file
|
||||||
|
@ -26,14 +16,13 @@ define('PUBLIC_ROOT', PHP_ROOT . '/public');
|
||||||
|
|
||||||
// ========================== BOOTSTRAP ==
|
// ========================== BOOTSTRAP ==
|
||||||
|
|
||||||
|
// load the config
|
||||||
|
require(WEB_ROOT . '/config.php');
|
||||||
|
|
||||||
// load all third party
|
// load all third party
|
||||||
require(WEB_ROOT . '/third_party/parsedown.php');
|
require(WEB_ROOT . '/third_party/parsedown.php');
|
||||||
require(WEB_ROOT . '/third_party/parsedown_extra.php');
|
require(WEB_ROOT . '/third_party/parsedown_extra.php');
|
||||||
|
|
||||||
// load all the config files
|
|
||||||
require(WEB_ROOT . '/config/routes.php');
|
|
||||||
require(WEB_ROOT . '/config/style.php');
|
|
||||||
|
|
||||||
// load all the helpers
|
// load all the helpers
|
||||||
require(WEB_ROOT . '/helpers/ie.php');
|
require(WEB_ROOT . '/helpers/ie.php');
|
||||||
require(WEB_ROOT . '/helpers/lang.php');
|
require(WEB_ROOT . '/helpers/lang.php');
|
||||||
|
@ -50,6 +39,7 @@ require(WEB_ROOT . '/core/controller.php');
|
||||||
require(WEB_ROOT . '/core/model.php');
|
require(WEB_ROOT . '/core/model.php');
|
||||||
require(WEB_ROOT . '/core/router.php');
|
require(WEB_ROOT . '/core/router.php');
|
||||||
|
|
||||||
|
|
||||||
// load file stamps
|
// load file stamps
|
||||||
require(WEB_ROOT . '/stamp.php');
|
require(WEB_ROOT . '/stamp.php');
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,9 @@
|
||||||
<?php /* Copyright (c) 2024 Freya Murphy */
|
<?php /* Copyright (c) 2024 Freya Murphy */
|
||||||
|
|
||||||
# things
|
# lang
|
||||||
$lang['lang_short'] = 'en';
|
$lang['lang_short'] = 'en';
|
||||||
$lang['lang_full'] = 'en_US';
|
$lang['lang_full'] = 'en_US';
|
||||||
|
|
||||||
$lang['domain'] = 'freya.cat';
|
|
||||||
$lang['base_path'] = '/';
|
|
||||||
$lang['root_url'] = sprintf("https://%s%s", $lang['domain'], $lang['base_path']);
|
|
||||||
$lang['git_url'] = 'https://g.freya.cat/freya';
|
|
||||||
$lang['theme_color'] = '#181818';
|
|
||||||
|
|
||||||
# names
|
# names
|
||||||
$lang['first_name'] = 'Freya';
|
$lang['first_name'] = 'Freya';
|
||||||
$lang['last_name'] = 'Murphy';
|
$lang['last_name'] = 'Murphy';
|
||||||
|
|
Loading…
Reference in a new issue