если возможно создать соединение с базой данных в том же файле, где учетные данные хранятся. Встройте учетные данные в операторе подключения.
mysql_connect("localhost", "me", "mypass");
Иначе лучше сбрасывать учетные данные после оператора подключения, потому что учетные данные, которые не находятся в памяти, не могут быть чтение из памяти ;)
include("/outside-webroot/db_settings.php");
mysql_connect("localhost", $db_user, $db_pass);
unset ($db_user, $db_pass);
Мы будем использовать комбинацию Iptables, Bash Scripting и Cron для достижения этой цели.
Команда Iptables для блокировки домена выглядит следующим образом:
iptables -I INPUT -p tcp --dport 80 -m string --string "Host: yourdomain.com" --algo bm -j DROP
Аналогично, команда разблокировки выглядит так:
iptables -I INPUT -p tcp --dport 80 -m string --string "Host: yourdomain.com" --algo bm -j ACCEPT
Создайте файл, скажем, block.sh
, в котором вы определяете правила Iptables для блокировки исходящих соединений, домены, которые вы хотите заблокировать, и обратный сценарий, чтобы разблокировать их.
#! /usr/bin/env bash
iptables -I INPUT -p tcp --dport 80 -m string --string "Host: yourdomain.com" --algo bm -j DROP
# other stuff you want to do when you block a domain
# add blocking commands for each domain here
Запустите chmod +x block.sh
, чтобы сделать сценарий исполняемым. Теперь вы можете запустить его как /path/to/file/block.sh
.
Таким образом, у вас будет два сценария, например:
/path/to/block.sh
/path/to/unblock.sh
Теперь добавьте запись в crontab для запуска ваших сценариев следующим образом:
Run crontab-e
. При первом запуске он попросит вас настроить текстовый редактор. Используйте nano, если вы не уверены.
Добавьте эти строки в конец файла:
0 9 * * * /path/to/block.sh
0 17 * * * /path/to/unblock.sh
Сохраните файл с помощью CTRL+O
, нажмите ENTER
, а затем, CTRL+X
, чтобы выйти.
Теперь, каждый день в 9 часов утра первый скрипт блокирует все домены, а в 5 часов вечера второй скрипт разблокирует их обратно.