584 lines
22 KiB
PHP
584 lines
22 KiB
PHP
<?php
|
|
|
|
// Exit if accessed directly
|
|
if ( !defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
//add_action( 'login_init', 'send_frame_options_header', 10, 0 );
|
|
|
|
// Convenience function for translations in 'responsive' domain
|
|
function _r($text) {
|
|
return __($text, 'responsive');
|
|
}
|
|
|
|
function openmamba_breadcrumbs() {
|
|
$text['category'] = '';
|
|
}
|
|
|
|
// custom fonts
|
|
function add_custom_font() {
|
|
$url = get_stylesheet_directory_uri() . '/fonts/comfortaa-regular/stylesheet.css';
|
|
wp_register_style('comfortaaregular', $url);
|
|
wp_enqueue_style('comfortaaregular');
|
|
wp_register_style('comfortaalight', $url);
|
|
wp_enqueue_style('comfortaalight');
|
|
wp_register_style('comfortaabold', $url);
|
|
wp_enqueue_style('comfortaabold');
|
|
}
|
|
add_action('wp_print_styles', 'add_custom_font');
|
|
|
|
// add styles and scripts
|
|
function add_custom_scripts() {
|
|
wp_deregister_script('jquery');
|
|
$protocol = 'http:';
|
|
if($_SERVER['HTTPS']=='on') {
|
|
$protocol='https:';
|
|
}
|
|
//$output .= "<script type=\"text/javascript\" src=\"" . get_stylesheet_directory_uri() . "/scripts/jquery.cookiebar.js\"></script>\n";
|
|
wp_register_script('jquery', get_stylesheet_directory_uri() . "/scripts/jquery.min.js", false, '1.11.3');
|
|
wp_enqueue_script('jquery');
|
|
$JQUERY_LOADED = true;
|
|
wp_register_script('jquerymigrate', get_stylesheet_directory_uri() . "/scripts/jquery-migrate-1.2.1.min.js", false, '1.2.1');
|
|
wp_enqueue_script('jquerymigrate');
|
|
}
|
|
add_action('template_redirect', 'add_custom_scripts');
|
|
|
|
function add_mime_types($mime_types) {
|
|
$mime_types['txt'] = 'text/plain';
|
|
return $mime_types;
|
|
}
|
|
add_filter('upload_mimes', 'add_mime_types', 1, 1);
|
|
|
|
function add_search_box($items, $args) {
|
|
if($args->theme_location == 'header-menu') {
|
|
ob_start();
|
|
get_search_form();
|
|
$searchform = ob_get_contents();
|
|
ob_end_clean();
|
|
|
|
return $items .= '<li id="searchform-item">' . $searchform . '</li>';
|
|
}
|
|
return $items;
|
|
}
|
|
add_filter('wp_nav_menu_items','add_search_box', 10, 2);
|
|
|
|
function set_title($title) {
|
|
$url = $_SERVER['REQUEST_URI'];
|
|
$spliturl = explode('?', $url);
|
|
$splituri = explode('/', $spliturl[0]);
|
|
|
|
if (sizeof($splituri) > 2 && $splituri[2] == "rpms") {
|
|
// Set title for distroquery-api
|
|
if (sizeof($splituri) > 5) {
|
|
if ($splituri[5] == "")
|
|
return $splituri[4] . " (" . _r("Source RPM") . ") | ";
|
|
else
|
|
return $splituri[4] . " (" . $splituri[5] . ") | ";
|
|
} else if (sizeof($splituri) > 4) {
|
|
return _r("Repository") . " " . $splituri[3] . " | ";
|
|
}
|
|
return _r("Repositories") . " | ";
|
|
} else if (sizeof($spliturl) > 1) {
|
|
// Set title for obsolete packages pages
|
|
$urlargs = $spliturl[1];
|
|
parse_str($urlargs, $args);
|
|
$newtitle = $title;
|
|
if (array_key_exists('arch', $args)) {
|
|
if (preg_match('/^[a-zA-Z0-9._]*$/', $args['arch'])) {
|
|
$newtitle = urlencode($args['arch']) . " - " . $newtitle;
|
|
} else {
|
|
$newtitle = " Invalid request - " . $newtitle;
|
|
}
|
|
}
|
|
if (array_key_exists('tag', $args)) {
|
|
if (preg_match('/^[a-zA-Z0-9._-]*$/', $args['tag'])) {
|
|
$newtitle = urlencode($args['tag']) . " - " . $newtitle;
|
|
} else {
|
|
$newtitle = " Invalid request - " . $newtitle;
|
|
}
|
|
}
|
|
if (array_key_exists('pkg', $args)) {
|
|
if ($args['pkg'] == '_index')
|
|
$newtitle = 'Index - ' . $newtitle;
|
|
else {
|
|
if (preg_match('/^[a-zA-Z0-9._+-]*$/', $args['pkg'])) {
|
|
$e = explode('.', urlencode($args['pkg']));
|
|
$newtitle = $e[0] . " - " . $e[1] . " - " . $newtitle;
|
|
} else {
|
|
$newtitle = " Invalid request - " . $newtitle;
|
|
}
|
|
}
|
|
}
|
|
return $newtitle;
|
|
}
|
|
return $title;
|
|
}
|
|
add_filter('wp_title','set_title');
|
|
|
|
// openmamba downloads pages
|
|
function openmamba_download_link($milestone, $medium, $currarch, $ext, $mlword, $lang) {
|
|
$latest_file = "/var/ftp/pub/openmamba/media/".$milestone."/".$medium."/".$lang."/latest.inc.php";
|
|
if (!file_exists($latest_file)) return "";
|
|
eval(file_get_contents("/var/ftp/pub/openmamba/media/".$milestone."/".$medium."/".$lang."/latest.inc.php"));
|
|
if ("$milestone" == "devel") {
|
|
$displaymilestone = "rolling";
|
|
} else {
|
|
$displaymilestone = "$milestone";
|
|
}
|
|
$currreleasetag=$releaseTag[$medium.'-'.$milestone.'-'.$lang.'-'.$currarch];
|
|
$ret = '';
|
|
# if ($lang != "it") {
|
|
$downloadmirror = 'https://cdn.openmamba.org/pub/openmamba/media';
|
|
# } else {
|
|
# $downloadmirror = '/media';
|
|
# }
|
|
if ("$currreleasetag" != "") {
|
|
$ret .= "<table style='border:0;margin:0;margin-bottom:5px;'><tr><td style='vertical-align:middle;padding:4px;border:0;margin:0;width:20px;align:center;'><img src=/wp-content/themes/openmamba/download.png /></td>";
|
|
$ret .= "<td style='border:0;margin:0;padding:4px;'><h5 style='margin:1px;'><a href=\"" . $downloadmirror. "/$milestone/$medium/$lang/".
|
|
$nameMedium[$medium.'-'.$currreleasetag.'-'.$lang.'-'.$currarch]."\">";
|
|
$ret .= "openmamba $displaymilestone $medium ";
|
|
$ret .= __('for','responsive')." $currarch ($mlword)</a> </h5>";
|
|
$ret .= "<i>";
|
|
$ret .= __('File size:','responsive').' '.$sizeMedium[$medium.'-'.$currreleasetag.'-'.$lang.'-'.$currarch].'B; ';
|
|
$ret .= __('Date','responsive').': '.substr($builddateMedium[$medium.'-'.$currreleasetag.'-'.$lang.'-'.$currarch],
|
|
0, strpos($builddateMedium[$medium.'-'.$currreleasetag.'-'.$lang.'-'.$currarch], ' '));
|
|
$ret .= "; Md5: " . $md5Medium[$medium.'-'.$currreleasetag.'-'.$lang.'-'.$currarch];
|
|
$ret .= "</i></td></tr></table>";
|
|
} else {
|
|
$ret .= "<table style='border:0;margin:0;margin-bottom:5px;'><tr><td style='vertical-align:middle;padding:4px;border:0;margin:0;width:20px;align:center;'><img src=/wp-content/themes/openmamba/download.png /></td>";
|
|
$ret .= "<td style='border:0;margin:0;padding:4px;'><h5 style='margin:1px;'>";
|
|
$ret .= "openmamba $displaymilestone $medium ";
|
|
$ret .= __('for','responsive')." $currarch ($mlword) </h5>";
|
|
$ret .= "<i><font color=red>";
|
|
$ret .= __('Sorry, download is temporary unavailable. If the problem persists please report the problem.','responsive');
|
|
$ret .= "</font></i></td></tr></table>";
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
function openmamba_infofile($mediaprefix, $milestone, $fallbackmilestone, $medium, $outputlang, $filename) {
|
|
if (file_exists("$mediaprefix/$milestone/$medium/info/$filename.$outputlang.html.inc")) {
|
|
$script_file = "$mediaprefix/$milestone/$medium/info/$filename.$outputlang.html.inc";
|
|
} else if (file_exists("$mediaprefix/$fallbackmilestone/$medium/info/$filename.$outputlang.html.inc")) {
|
|
$script_file = "$mediaprefix/$fallbackmilestone/$medium/info/$filename.$outputlang.html.inc";
|
|
}
|
|
$ret = '';
|
|
if (isset($script_file)) {
|
|
$file = fopen($script_file, "r");
|
|
while (!feof($file)) {
|
|
$b=fread($file,1024);
|
|
$ret .= $b;
|
|
}
|
|
fclose($file);
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
function openmamba_download_func( $atts ) {
|
|
$a = shortcode_atts( array(
|
|
'milestone' => 'devel',
|
|
'medium' => 'livedvd',
|
|
'multilang' => '0',
|
|
'archs' => 'x86_64;i586;arm;aarch64', // bitmask: 1=x86_64 2=i586 3=arm
|
|
'ext' => '.iso'
|
|
), $atts );
|
|
$milestone = $a['milestone'];
|
|
$medium = $a['medium'];
|
|
$ext = $a['ext'];
|
|
$fallbackmilestone = 'milestone2';
|
|
if ("$milestone" == "devel") {
|
|
$displaymilestone = "rolling";
|
|
$suffixmilestone = "snapshot";
|
|
} else {
|
|
$displaymilestone = "$milestone";
|
|
$suffixmilestone = "$milestone";
|
|
}
|
|
$archname = array("x86_64", "aarch64", "i586", "arm");
|
|
$mediaprefix = '/var/ftp/pub/openmamba/media';
|
|
$mediafallbackprefix = '/var/ftp/pub/openmamba/media/milestone2';
|
|
$outputlang = get_bloginfo("language");
|
|
$outputlang = substr($outputlang,0,2);
|
|
if ("$outputlang" != "it") {
|
|
$outputlang = "en";
|
|
$mlword = "multilanguage";
|
|
} else {
|
|
$mlword = "multilingue";
|
|
}
|
|
$ret = "<h3>openmamba $medium $displaymilestone</h3>";
|
|
|
|
$ret .= do_shortcode(
|
|
openmamba_infofile($mediaprefix,$milestone,$fallbackmilestone,$medium,$outputlang,"description"));
|
|
|
|
$ret .= "<br><br>";
|
|
if ($a['multilang']) {
|
|
reset($archname);
|
|
foreach($archname as $ey => $currarch) {
|
|
if (strpos(";".$a['archs'].";",$currarch) == false) continue;
|
|
$ret .= openmamba_download_link($milestone,$medium,$currarch,$ext,$mlword,"en");
|
|
}
|
|
} else {
|
|
reset($archname);
|
|
$langs = array('it' => 'italiano','en' => 'english','es' => 'español');
|
|
foreach($archname as $ey => $currarch) {
|
|
if (strpos(";".$a['archs'].";",$currarch) == false) continue;
|
|
$ret .= openmamba_download_link($milestone,$medium,$currarch,$ext,$langs[$outputlang],$outputlang);
|
|
}
|
|
$out = "";
|
|
foreach ($langs as $l => $lang) {
|
|
if ($l == $outputlang) continue;
|
|
reset($archname);
|
|
foreach($archname as $ey => $currarch) {
|
|
if (strpos(";".$a['archs'].";",$currarch) == false) continue;
|
|
$out .= openmamba_download_link($milestone,$medium,$currarch,$ext,$lang,$l);
|
|
}
|
|
}
|
|
$ret .= do_shortcode("[expand title=\"". __("More languages...","responsive") . "\"]". $out ."[/expand]");
|
|
}
|
|
|
|
$ret .= do_shortcode(" [expand title=\"".__("Features","responsive")."\"]".
|
|
openmamba_infofile($mediaprefix,$milestone,$fallbackmilestone,$medium,$outputlang,"features").
|
|
"[/expand]");
|
|
|
|
$ret .= do_shortcode(" [expand title=\"".__("Requirements","responsive")."\"]".
|
|
openmamba_infofile($mediaprefix,$milestone,$fallbackmilestone,$medium,$outputlang,"requirements").
|
|
"[/expand]");
|
|
|
|
$ret .= do_shortcode(" [expand title=\"".__("Preparation","responsive")."\"]".
|
|
openmamba_infofile($mediaprefix,$milestone,$fallbackmilestone,$medium,$outputlang,"howto").
|
|
"[/expand]");
|
|
|
|
$ret .= "<hr>";
|
|
return $ret;
|
|
}
|
|
add_shortcode('openmamba_download', 'openmamba_download_func');
|
|
|
|
function openmamba_webbuild_func( $atts ) {
|
|
|
|
$urlargspos = strpos($_SERVER['REQUEST_URI'], '?');
|
|
if ($urlargspos > 0) {
|
|
$urlargs = substr($_SERVER['REQUEST_URI'], $urlargspos);
|
|
}
|
|
|
|
$a = shortcode_atts( array(
|
|
'host' => 'buildvm01.openmamba.org'
|
|
), $atts );
|
|
print '<script>host="' . $a['host'] . '"</script>';
|
|
|
|
$file = fopen(get_stylesheet_directory() . '/webbuild.html.inc', "r");
|
|
print fread($file, 20000);
|
|
flush();
|
|
fclose($file);
|
|
|
|
print "<script>$(document).ready(function(){ ajax_getvalues(\"" . $urlargs . "\",\"\");";
|
|
print "ajax_getvalues_refresh(\"\",user,user_email,encodeURIComponent(secret)); })</script>";
|
|
}
|
|
add_shortcode('openmamba_webbuild', 'openmamba_webbuild_func');
|
|
|
|
function openmamba_webbuild_status_func() {
|
|
|
|
$urlargspos = strpos($_SERVER['REQUEST_URI'], '?');
|
|
if ($urlargspos > 0) {
|
|
$urlargs = substr($_SERVER['REQUEST_URI'], $urlargspos);
|
|
}
|
|
// print "<table width=\"100%\" style=\"border:0;\"><tr><td>";
|
|
// print "<div id=\"noajax_msg\"><p>AJAX support is not enabled in your browser. Live page updates will not be available, press Reload to update.</p></div>";
|
|
print "<div id=\"noajax_msg\"></div>";
|
|
print "<span class=webbuild id=\"output\">" . __("Loading, please wait...", "responsive") . "</span>";
|
|
print "<script>$(document).ready(function(){ webbuild_status_getvalues(\"" . $urlargs . "\"); })</script>";//</td></tr></table>";
|
|
}
|
|
add_shortcode('openmamba_webbuild_status', 'openmamba_webbuild_status_func');
|
|
|
|
function openmamba_distroquery_func() {
|
|
|
|
$urlargspos = strpos($_SERVER['REQUEST_URI'], '?');
|
|
if ($urlargspos > 0) {
|
|
$urlargs = substr($_SERVER['REQUEST_URI'], $urlargspos + 1);
|
|
}
|
|
|
|
$outputlang = get_bloginfo("language");
|
|
if (substr($outputlang, 0, 2) == "it")
|
|
$outputlang = "it_IT.UTF-8";
|
|
else
|
|
$outputlang = "en_US.UTF-8";
|
|
|
|
if (preg_match('/^[a-zA-Z0-9._\=\-\+\/\.\&\:]*$/', $urlargs)) {
|
|
$ret = "<div id=\"noajax_msg\"></div>";
|
|
$ret .= "<span id=\"queryform\">Loading, please wait...</span><br>";
|
|
$ret .= "<span id=\"querystatus\"></span><br><span id=\"queryreply\"> </span>";
|
|
$ret .= "<script>$(document).ready(function(){ distroquery_request(\"" . $urlargs . "\"); })</script>";
|
|
} else {
|
|
$ret = "<span id=\"distromatic\">" . __("Invalid request.", "responsive") . "</span><br>";
|
|
}
|
|
|
|
return $ret;
|
|
}
|
|
add_shortcode('openmamba_distroquery', 'openmamba_distroquery_func');
|
|
|
|
function openmamba_distromatic_func() {
|
|
|
|
$urlargspos = strpos($_SERVER['REQUEST_URI'], '?');
|
|
if ($urlargspos > 0) {
|
|
$urlargs = substr($_SERVER['REQUEST_URI'], $urlargspos + 1);
|
|
}
|
|
|
|
$outputlang = get_bloginfo("language");
|
|
if (substr($outputlang, 0, 2) == "it")
|
|
$outputlang = "it_IT.UTF-8";
|
|
else
|
|
$outputlang = "en_US.UTF-8";
|
|
|
|
if (preg_match('/^[a-zA-Z0-9._\=\-\+\/\.\&\:]*$/', $urlargs)) {
|
|
$ret = "<span id=\"distromatic\">" . __("Loading, please wait...", "responsive") . "</span><br>";
|
|
$ret .= "<script>$(document).ready(function(){ $('#distromatic').load('/distribution/distromatic.naked.html?" . $urlargs . "'); })</script>";
|
|
} else {
|
|
$ret = "<span id=\"distromatic\">" . __("Invalid request.", "responsive") . "</span><br>";
|
|
}
|
|
|
|
return $ret;
|
|
}
|
|
add_shortcode('openmamba_distromatic', 'openmamba_distromatic_func');
|
|
|
|
function openmamba_showfile_func() {
|
|
|
|
$urlargspos = strpos($_SERVER['REQUEST_URI'], '?');
|
|
if ($urlargspos > 0) {
|
|
$urlargs = substr($_SERVER['REQUEST_URI'], $urlargspos + 1);
|
|
}
|
|
|
|
if (preg_match('/^[a-zA-Z0-9._\=\-\+\/\.\&\:]*$/', $urlargs)) {
|
|
$ret = "<span id=\"distromatic\">" . "Loading, please wait..." . "</span><br>";
|
|
$ret .= "<script>$(document).ready(function(){ $('#distromatic').load('/distribution/showfile.naked.html?" . $urlargs . "'); })</script>";
|
|
} else {
|
|
$ret = "<span id=\"distromatic\">" . __("Invalid request.", "responsive") . "</span><br>";
|
|
}
|
|
|
|
return $ret;
|
|
}
|
|
add_shortcode('openmamba_showfile', 'openmamba_showfile_func');
|
|
|
|
function openmamba_downloadfile_func() {
|
|
|
|
$urlargspos = strpos($_SERVER['REQUEST_URI'], '?');
|
|
if ($urlargspos > 0) {
|
|
$urlargs = substr($_SERVER['REQUEST_URI'], $urlargspos + 1);
|
|
parse_str($urlargs, $args);
|
|
if ($args['file']) {
|
|
$ret = "<span id=\"distromatic\">" . __("Starting download of", "responsive") . " <strong>" . basename($args['file']) . "</strong>, " . __("please wait...", "responsive") . "</span><br><br>";
|
|
$ret .= "<script>$(document).ready(function(){ window.location.href='" . $args['file'] . "'; })</script>";
|
|
}
|
|
}
|
|
|
|
return $ret;
|
|
}
|
|
add_shortcode('openmamba_downloadfile', 'openmamba_downloadfile_func');
|
|
|
|
// bbpress tag cloud
|
|
add_filter('widget_tag_cloud_args','set_number_tags');
|
|
function set_number_tags($args) {
|
|
$args = array('number' => 10, 'largest' => 20);
|
|
return $args;
|
|
}
|
|
|
|
// load_plugin_textdomain('user-registration' , get_site_url() . 'wp-content/themes/openmamba/languages/');
|
|
|
|
add_action('wp_head','hook_cookielaw');
|
|
|
|
function hook_cookielaw()
|
|
{
|
|
$outputlang = get_bloginfo("language");
|
|
$outputlang = substr($outputlang,0,2);
|
|
//$message = __("This website only uses first party technical cookies necessary for the correct functioning of it.","responsive");
|
|
if ("$outputlang" == "it") {
|
|
$message = "Questo sito usa esclusivamente cookie di prima parte di tipo tecnico necessari per il corretto funzionamento dello stesso.";
|
|
$policyurl = "/" . $outputlang . "/info/policy/";
|
|
} else {
|
|
$message = "This website only uses first party technical cookies necessary for the correct functioning of it.";
|
|
$policyurl = "/" . $outputlang . "/about/policy/";
|
|
}
|
|
|
|
$accepttext = __("I Understand","responsive");
|
|
$policytext = __("Cookie policy","responsive");
|
|
$policyurl = "/" . $outputlang . "/info/policy/";
|
|
$output = "<link rel=\"stylesheet\" type=\"text/css\" href=\"" . get_stylesheet_directory_uri() . "/styles/jquery.cookiebar.css\" />\n";
|
|
$output .= "<script type=\"text/javascript\" src=\"" . get_stylesheet_directory_uri() . "/scripts/jquery.cookiebar.js\"></script>\n";
|
|
$output .= "<script type=\"text/javascript\">$(document).ready(function(){ $.cookieBar({" .
|
|
"message: \"" . $message . "\",acceptText: '" . $accepttext . "',".
|
|
"policyText: '" . $policytext . "',policyURL: '" . $policyurl . "' }); });</script>\n";
|
|
$output .= "<script type=\"text/javascript\">document.domain='openmamba.org';</script>\n";
|
|
echo $output;
|
|
}
|
|
|
|
/*function responsive_get_social_icons() {
|
|
|
|
$responsive_options = responsive_get_options();
|
|
|
|
$sites = array (
|
|
'foursquare' => __( 'foursquare', 'responsive' ),
|
|
'twitter' => __( 'Twitter', 'responsive' ),
|
|
'facebook' => __( 'Facebook', 'responsive' ),
|
|
'linkedin' => __( 'LinkedIn', 'responsive' ),
|
|
'youtube' => __( 'YouTube', 'responsive' ),
|
|
'stumbleupon' => __( 'StumbleUpon', 'responsive' ),
|
|
'rss' => __( 'RSS Feed', 'responsive' ),
|
|
'googleplus' => __( 'Google+', 'responsive' ),
|
|
'instagram' => __( 'Instagram', 'responsive' ),
|
|
'pinterest' => __( 'Pinterest', 'responsive' ),
|
|
'yelp' => __( 'Yelp!', 'responsive' ),
|
|
'vimeo' => __( 'Vimeo', 'responsive' ),
|
|
);
|
|
|
|
$html = '<ul class="social-icons">';
|
|
foreach( $sites as $key => $value ) {
|
|
if ( !empty( $responsive_options[$key . '_uid'] ) ) {
|
|
$html .= '<li class="' . esc_attr( $key ) . '-icon"><a href="' . $responsive_options[$key . '_uid'] . '">' . '<img src="' . responsive_child_uri( '/core/icons/' . esc_attr( $key ) . '-icon.png' ) . '" width="24" height="24" alt="' . esc_html( $value ) . '">' . '</a></li>';
|
|
}
|
|
}
|
|
$html .= '</ul><!-- .social-icons -->';
|
|
|
|
return $html;
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
function wpb_imagelink_setup() {
|
|
$image_set = get_option( 'image_default_link_type' );
|
|
|
|
if ($image_set !== 'none') {
|
|
update_option('image_default_link_type', 'none');
|
|
}
|
|
}
|
|
add_action('admin_init', 'wpb_imagelink_setup', 10);
|
|
|
|
/* Security: restrict access to wp-json */
|
|
function restrict_rest_api_access() {
|
|
$whitelist = [ '127.0.0.1', "::1", '176.9.120.93', '2a01:4f8:151:7444::1:3' ];
|
|
|
|
// Allow whitelisted ip addresses
|
|
if (in_array($_SERVER['REMOTE_ADDR'], $whitelist) ){
|
|
return;
|
|
}
|
|
|
|
// List of allowed endpoint prefixes (adjust as needed)
|
|
$allowed_prefixes = [
|
|
'openid-connect', // Allow /wp-json/openid-connect/*
|
|
// Add other prefixes here if needed
|
|
];
|
|
|
|
// Get the current REST route
|
|
$request_uri = $_SERVER['REQUEST_URI'];
|
|
|
|
// Check if the request URI matches any allowed prefix
|
|
foreach ($allowed_prefixes as $prefix) {
|
|
if (strpos($request_uri, '/it/wp-json/' . $prefix) === 0) {
|
|
return; // Allow access
|
|
}
|
|
}
|
|
|
|
die( 'REST API is disabled.' );
|
|
}
|
|
add_action('rest_api_init', 'restrict_rest_api_access', 10, 3 );
|
|
|
|
/* Security: filter email domains frequently used for spam registrations */
|
|
function user_registration_filter($user_id, $email) {
|
|
if ($user_id == false) {
|
|
$e1 = explode("@", $email);
|
|
if (in_array($e1[1], array(
|
|
'xtra.ltd','tmobile.agency','btee.online','verizonconnect.online','proton.me',
|
|
'eduonline.digital','vofadonepro.online','tasktracker.in'))) {
|
|
error_log( "user_registration_filter: email=" . $email . " blacklisted domain=" . $e1[1] );
|
|
$user_id = 100;
|
|
} else {
|
|
//preg_match("/[0-9]{2}$/", $e1[0]) ||
|
|
if (preg_match("/[0-9]{3}$/", $e1[0]) || in_array($e1[0], array('astro_yoga'))) {
|
|
error_log( "user_registration_filter: email=" . $email . " blacklisted ([0-9]{2}$) domain=" . $e1[1] );
|
|
$user_id = 100;
|
|
} else {
|
|
error_log( "user_registration_filter: email=" . $email . " whitelisted domain=" . $e1[1] );
|
|
}
|
|
}
|
|
}
|
|
return $user_id;
|
|
}
|
|
add_filter('email_exists', 'user_registration_filter', 10, 2);
|
|
|
|
/* Security: prevent multisite signup */
|
|
function prevent_multisite_signup()
|
|
{
|
|
wp_redirect( site_url() );
|
|
die();
|
|
}
|
|
add_action( 'signup_header', 'prevent_multisite_signup' );
|
|
|
|
/* Fix for missing js support in bbpress editor */
|
|
add_filter ('bbp_body_class', 'rew_unset_no_js') ;
|
|
|
|
function rew_unset_no_js($classes) {
|
|
if (in_array ('single-forum', $classes) || in_array ('single-topic', $classes)) {
|
|
if (($key = array_search('no-js', $classes)) !== false) {
|
|
unset($classes[$key]);
|
|
}
|
|
}
|
|
return $classes ;
|
|
}
|
|
|
|
// Distroquery API management
|
|
add_filter( 'query_vars', function( $query_vars ) {
|
|
$query_vars[] = 'distroquery';
|
|
$query_vars[] = 'repo';
|
|
$query_vars[] = 'package';
|
|
$query_vars[] = 'arch';
|
|
return $query_vars;
|
|
} );
|
|
|
|
function distroquery_api_rewrite_rules ( ) {
|
|
add_rewrite_rule ( '^rpms/([^/]*)/([^/]*)/([^/]*)/?',
|
|
'index.php?distroquery=1&repo=$matches[1]&package=$matches[2]&arch=$matches[3]','top' );
|
|
add_rewrite_rule ( '^rpms/([^/]*)/([^/]*)/?',
|
|
'index.php?distroquery=1&repo=$matches[1]&package=$matches[2]','top' );
|
|
add_rewrite_rule ( '^rpms/([^/]*)/?',
|
|
'index.php?distroquery=1&repo=$matches[1]','top' );
|
|
add_rewrite_rule ( '^rpms/?',
|
|
'index.php?distroquery=1','top' );
|
|
}
|
|
add_action ( 'init', 'distroquery_api_rewrite_rules', 10, 0 ) ;
|
|
|
|
add_filter( 'template_include', function( $template ) {
|
|
if ( get_query_var( 'distroquery' ) == false || get_query_var( 'distroquery' ) == '' ) {
|
|
return $template;
|
|
}
|
|
|
|
return get_theme_file_path() . '/distroquery.php';
|
|
} );
|
|
|
|
// openid-connect filters
|
|
function my_oidc_clients() {
|
|
if ( ! defined( 'OIDC_CLIENT_ID' ) || ! defined( 'OIDC_CLIENT_KEY' ) ) {
|
|
// Please define client id and key in wp-config.php.
|
|
return;
|
|
}
|
|
|
|
return array(
|
|
OIDC_CLIENT_ID => array(
|
|
'name' => 'openmamba package sources',
|
|
'secret' => OIDC_CLIENT_KEY,
|
|
'redirect_uri' => 'https://src.openmamba.org/user/oauth2/openmamba/callback',
|
|
'grant_types' => array( 'authorization_code' ),
|
|
'scope' => 'openid profile',
|
|
),
|
|
);
|
|
}
|
|
add_filter( 'oidc_registered_clients', 'my_oidc_clients' );
|
|
|
|
function my_oidc_capability() {
|
|
return 'read';
|
|
}
|
|
add_filter( 'oidc_minimal_capability', 'my_oidc_capability' );
|
|
|
|
function my_user_claims($claims, $user) {
|
|
$claims['email'] = $user->user_email;
|
|
return $claims;
|
|
}
|
|
add_filter( 'oidc_user_claims', 'my_user_claims', 10, 2 );
|