Ответить в теме

[QUOTE="moder, post: 1537, member: 1"]

Сама идея генератора зеркал возникла у сторонников Алексея Навального - они создали сайт navalny.me, который ведет на незаблокированное зеркало блога navalny.com (а по сути создает новое зеркало). Мы решили сделать свой, простой  в настройке генератор зеркал и поделиться им с общественностью.


Наш генератор зеркал предлагает пользователю сгенерировать ссылку для перехода на зеркало сайта, причем имя поддомена можно придумать самому.

[ATTACH]515[/ATTACH]


Ссылка живет ровно до полуночи, после чего пользователю предлагается сгенерировать новую (это нужно для того, чтобы цензоры не успевали заносить адреса в реестр).

[ATTACH=full]516[/ATTACH]


А если генератор зеркал заблокируют?

В рамках действующего законодательства генератор зеркал не могут заблокировать, ведь он не содержит никакой запрещенной информации и даже ссылок на запрещенный сайт. Чтобы блокировать генератор зеркал, депутатам придется придумать новый закон, запрещающий любые средства для обхода цензуры, а тогда запретят анонимайзерыТор, Впн, плагины для обхода цензуры и даже онлайн-переводчики.


Инструкция по установке.

Предположим, у нас есть заблокированный сайт mydomain.com, тогда для работы генератора зеркал нам понадобится отдельный домен, пусть будет mydomain.org. Прописываем в настройках DNS запись CNAME, которая будет перенаправлять все поддомены на главный домен. В вашем случае это будет домен mydomain.com.

[ATTACH=full]517[/ATTACH]

Для домена mydomain.org создаем отдельную папку на сервере, лучше с отдельным IP адресом, так как многие провайдеры до сих пор блокируют по IP.


Сам скрипт:

[PHP]// Функция для преобразования кириллицы в латиницу

function translit($str)

{

$FIND=explode(' ', 'й ц у к е н г ш щ з х ф ы в а п р о л д ж э я ч с м и т ь б ю Й Ц У К Е Н Г Ш Щ З Х Ф Ы В А П Р О Л Д Ж Э Я Ч С М И Т Б Ю');

$REPLACE=explode(' ', 'j c u k e n g sh w z h f y v a p r o l d zh je ja ch s m i t - b ju j c u k e n g sh w z h f y v a p r o l d zh je ja ch s m i t b ju');


return str_replace($FIND, $REPLACE, $str);

}


// Домен для перехода

$mydomain='roscenzura.com';


// Набор зеркал по-умолчанию

$mirrors=array('vatnik', 'roscomnadzor', 'rotenberg', 'churov', 'kiselev');


if (isset($_POST['mirror']))

{

  if ($_POST['mirror']==false)

  {

   $rand=mt_rand(0, sizeof($mirrors)-1);


   $_POST['mirror']=$mirrors[$rand].'-'.date("d");

  }

  else $_POST['mirror'].='-'.date("d");


  $mirror=translit(str_replace(' ','-',$_POST['mirror']));



  $fp = fopen($_SERVER['DOCUMENT_ROOT'].'/mirrors.txt',"a");

   if(!$fp){ echo("Ошибка открытия файла"); } else {  fputs($fp,  '|'.$mirror.'|' ); }

  fclose ($fp);

}

[/PHP]

Добавляем в cron задание, которое будет раз в сутки затирать файл с зеркалами: echo "" > _путь_/mydomain.com/mirrors.txt.


Теперь в исполняющем файле вашего сайта (index.php) сверху вставляете такой код:

[PHP]

list($mirror, $a, $b)=explode('.', $_SERVER['HTTP_HOST']);


if ($b && $mirror!='www')

{

       $file=file_get_contents($_SERVER['DOCUMENT_ROOT'].'/genmirror/mirrors.txt');


       list( , $b)=explode('-'.date("d"), $mirror.'.');


       if (strpos($file, '|'.$mirror.'|')==false || $b!='.')

       {

            echo 'Данное зеркало больше не активно, <a href="http://genmirror.rucensor.com"><b>сгенерируйте новое</b></a>. ';

            exit;

       }

}

[/PHP]


Полностью работающий скрипт можно скачать во вложении. Вам останется лишь назначить права для записи на файл mirrors.txt, добавить задание в cron и прописать везде свой домен в скрипте.


Если возникнут сложности с настройкой, пишите в теме или мне в ЛС. Если скрипт помог, просьба отписать пару строк в теме, чтобы мы понимали что это кому-то нужно и дальше старались для вас )

[/QUOTE]

Сверху