66 lines
2.2 KiB
PHP
66 lines
2.2 KiB
PHP
<?php
|
|
/*
|
|
* Plugin Name: LDC Web Admin Secure
|
|
* Description: Sécurisation des BO via LDC Web
|
|
* Version: 1.0
|
|
* Author: Vincent BRIDIER
|
|
* Author URI: mailto:vincent.bridier@ldc.fr
|
|
*/
|
|
|
|
add_filter( 'cron_schedules', function ( $schedules ) {
|
|
$schedules['everyday'] = array(
|
|
'interval' => DAY_IN_SECONDS,
|
|
'display' => __( 'Everyday' )
|
|
);
|
|
return $schedules;
|
|
} );
|
|
|
|
|
|
function cron_activate_lwas() {
|
|
if (!wp_next_scheduled ( 'update_admin_htaccess_lwas' )) {
|
|
wp_schedule_event(strtotime('4:30:00'), 'everyday', 'update_admin_htaccess_lwas');
|
|
}
|
|
}
|
|
register_activation_hook(__FILE__, 'cron_activate_lwas');
|
|
|
|
|
|
// ---- unschedule event upon plugin deactivation
|
|
function cron_deactivate_lwas() {
|
|
$timestamp = wp_next_scheduled ('update_admin_htaccess_lwas');
|
|
wp_unschedule_event ($timestamp, 'update_admin_htaccess_lwas');
|
|
}
|
|
register_deactivation_hook (__FILE__, 'cron_deactivate_lwas');
|
|
|
|
|
|
function UpdateAdminHtaccess_lwas(){
|
|
|
|
// Get by cURL
|
|
$url = 'https://ldc-web.ldc.fr/api/ldc-networks?token=CE8S52Qq7stf5k8frF4T';
|
|
$ch = curl_init($url);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
$result = curl_exec($ch);
|
|
curl_close($ch);
|
|
|
|
$ips = json_decode($result);
|
|
$filename = ABSPATH . 'wp-admin/.htaccess';
|
|
foreach ($ips as $k => $ip) {
|
|
if ($k === 0) {
|
|
file_put_contents($filename, "SetEnvIF X-Forwarded-For '$ip' AllowIP\n");
|
|
}else{
|
|
file_put_contents($filename, "SetEnvIF X-Forwarded-For '$ip' AllowIP\n", FILE_APPEND);
|
|
}
|
|
}
|
|
|
|
file_put_contents($filename, "<RequireAny>\n", FILE_APPEND);
|
|
file_put_contents($filename, "Require env AllowIP\n", FILE_APPEND);
|
|
file_put_contents($filename, "</RequireAny>\n", FILE_APPEND);
|
|
file_put_contents($filename, "<Files 'admin-ajax.php'>\n", FILE_APPEND);
|
|
file_put_contents($filename, "Require all granted\n", FILE_APPEND);
|
|
file_put_contents($filename, "</Files>\n", FILE_APPEND);
|
|
|
|
if (!wp_next_scheduled ( 'update_admin_htaccess_lwas' )) {
|
|
wp_schedule_event(time(), 'everyday', 'update_admin_htaccess_lwas');
|
|
}
|
|
}
|
|
|
|
add_action ('update_admin_htaccess_lwas', 'UpdateAdminHtaccess_lwas');
|