Объявления
Исправление некоторых ошибок шаблона. Сейчас на сайте ведется работа над исправлениями ошибок.
Просим посетить наш второй проект :3
Последние комментарии
Аватар

@Освободитель Рабов Legendary Weapons / Легендарное оружие (RU)

Это конечно все круто, но лучше бы Автор чуть порезал бы статы этого оружия, сделав что-то среднее между Мейто и Лезвие Тип 3. А так чит и анЛОР ИМХО.





Вчера, 23:52
Аватар

@Razilator Total War: Warhammer II: DLC Unlocker

Обращайтесь, рад, что всё получилось.

Вчера, 14:30
Аватар

@Сергей Киржатских Total War: Warhammer II: DLC Unlocker

Супер, бро!!! С 1.12.1 появились новые фракции. Спасибо огромное!!!

Вчера, 13:50
Аватар

@Razilator Total War: Warhammer II: DLC Unlocker

Попробуйте новую версию 1.12.1

27 сентября 2021 21:54
Аватар

@Razilator Total War: Warhammer II: DLC Unlocker

Не слежу за DLC сейчас, но анлокер обновил до 1.12.1

27 сентября 2021 21:53
Аватар

@Сергей Киржатских Total War: Warhammer II: DLC Unlocker

Ребята, а подскажите этот DLC анлокер работает с последним DLC The Silence & The Fury? Всё делал по инструкции, только не удалось установить бесплатный DLC regiments of renown, который требует первую часть игры. Не вижу две новых фракции из нового DLC при старте кампании.

27 сентября 2021 19:13
Аватар

@Оркедий Primitive Techs – Mud and Clay - Примитивные технологии - грязь и глина

Подойдет для рпешки или просто если нету ресурсов 

25 сентября 2021 16:26
Аватар

@Освободитель Рабов Rebalance Mercenaries/Ребаланс Наемников (RU)

Мод огонь, даже такой на обе ноги хромой как он сейчас.

Несколько идей, если позволите.... 


1. Пусть они конкурируют за контракты, не все а просто очаги из некоторых особо жадных.

2. Уменьшить город, оставь там только казармы и  ночлежку и бары, и население с Плохие Зубы не больше.

3. Одного, именно одного уникального рекрута, который либо слишком слаб либо считает себя каким-то крутым,, чтоб быть обычным наёмником.

4. Сделай не нанимаемым главного, он слишком тру чтоб за деньги кого-то охранять, пусть нагибает чузена если тот с фракцией поссорился.

5. В дальнейших изменениях даже не думай начинать трогать другие фракции, тема мода - наёмники. В этом его плюс. 

Я тебе как товарищ соратник мододел  говорю, лучше мало но очень качественно, чем много но винегрет не вкусный.

Мод крутой, обновляй его точечно. Но тут главное чтоб ТЫ радость от процесса получал, иначе это ни к чему. А мод и так крутой получился, не представляю уже Кенши без него. 

25 сентября 2021 05:35
Аватар

@Освободитель Рабов CMKillingTime

Как по мне, больше бы подобных модов на анимацию, (как и больше бы всяких модов на ремонт AI, игру делал один человек как никак) . А на переопределения и так моды есть. В топах тут их аж целых два, и они просто лучшие моды. ИМХО. 

Меня вот стало раздражать, что я изи могу убежать от врагов, в Стиме были где-то на это моды, поищу. 




25 сентября 2021 05:14
Аватар

@lupkovich Total War: Warhammer II: DLC Unlocker

Сейчас анлокер работает или нет?

24 сентября 2021 17:41

Получение сертификата SSL/HTTPS на DLE (CentOS 7 LEMP)

Изображения
Описание
После того, как мы установили DLE на наш VPS, нам потребуется SSL сертификат. Он необходим для защиты ваших данных и для продвижения сайта в Google, так как Google лучше относится к сайтам, которые имеют SSL сертификат. 

Установка DLE на CentOS 7 LEMP (Nginx 1.14, MariaDB 1.12, PHP-FPM 7.1) в этом блоге -> ссылка

Примечание: половина статьи взята из хабра и адаптирована под DLE.
Установка Letsencrypt
Первым делом мы устанавливаем Git, Bc.
sudo yum -y install git bc
Далее мы копируем проект Letsencrypt на наш VPS из GitHub.
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
После успешного копирования мы вводим команду для генерации сертификата:
letsencrypt-auto certonly
Так же вводим (вместо example.com ваш домен)
cd /opt/letsencrypt ./letsencrypt-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com -d www.example.c

После того, как letsencrypt инициализирует, нам необходимо будет вести дополнительные данные. Предложенные вопросы могут варьироваться в зависимости от того, как давно вы использовали letsencrypt раньше, но мы запускаем первый раз.

В командной строке введите адрес электронной почты, который будет использоваться для информативных сообщений, а также будет возможность восстановить ключи:
Соглашайтесь с условиями пользования Letsencrypt.
Если все прошло успешно, тогда в консоли вы должны увидеть примерно это:
Output:
IMPORTANT NOTES:
 - If you lose your account credentials, you can recover through
   e-mails sent to sammy@digitalocean.com
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your
   cert will expire on 2016-03-15. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let's
   Encrypt so making regular backups of this folder is ideal.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Мы видим, куда сохранились созданные сертификаты /etc/letsencrypt/live/example.com/ и дату истечения действия сертификата.

После получения сертификата, вы будете иметь следующие PEM-закодированных файлы:

cert.pem: сертификат для вашего домена
chain.pem: Let's Encrypt цепь сертификатов
fullchain.pem: cert.pem и chain.pem
privkey.pem: Сертификат с приватным ключом

В целях дальнейшего повышения уровня безопасности, мы сформируем ключ по алгоритму шифрования Диффи-Хеллмана. Чтобы создать 2048-битный ключ, используйте следующую команду:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Процесс может занять несколько минут, но когда ключ создастся, он будет помещен в каталог в /etc/ssl/certs/dhparam.pem.

Теперь перейдём к важному шагу, настройке конфига NGINX для работы SSL на DLE.


server {
    listen 80;
    server_name example.com;
    root /usr/share/nginx/html/;
    index index.php index.html index.htm;

    location / {
    return 301 https://example.com$request_uri;
    }

    location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
    return 301 https://example.com$request_uri;
    }

    location ~ \.php$ {
    return 301 https://example.com$request_uri;
    }

    location = /favicon.ico {
    log_not_found off;
    access_log off;
    }

    location = /robots.txt {
    rewrite ^ /robots.txt break;
    allow all;
    log_not_found off;
    access_log off;
    }

    location ~ /\.ht {
    deny all;
    }
}

server {
     listen  80;
     server_name  www.example.com;
     rewrite ^ https://example.com$request_uri? permanent;
}

server {
    listen 443 ssl http2;
    server_name example.com;
    root /usr/share/nginx/html/;
    index index.php index.html index.htm;

    keepalive_timeout        60;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    add_header Strict-Transport-Security max-age=15768000;
    
    location / {
    try_files $uri $uri/ /index.php?$args;
    }

    location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
    access_log off;
    expires max;
    }

    location ~ \.php$ {
    try_files  $uri =404;
    fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
    #fastcgi_pass    127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param DOCUMENT_ROOT /usr/share/nginx/html/;
    fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
    fastcgi_param PATH_TRANSLATED /usr/share/nginx/html$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
    fastcgi_param HTTPS on;
    fastcgi_intercept_errors on;
    fastcgi_ignore_client_abort off;
    fastcgi_connect_timeout 60;
    fastcgi_send_timeout 180;
    fastcgi_read_timeout 180;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    }

    location = /favicon.ico {
    log_not_found off;
    access_log off;
    }

    location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
    }

    location ~ /\.ht {
    deny all;
    }
    
    #DLE
    
    location ~* (uploads|uploads/fotos|uploads/files|templates)/.+\.php {
        deny all;
    }

    location ~* /templates/.+\.tpl {
        deny all;
    }

    location ~* ^/(engine/data|engine/cache|engine/cache/system|language).+\.(php|tmp) {
        deny all;
    }
    
    # Редиректы
    rewrite "^/page/([0-9]+)(/?)$" /index.php?cstart=$1 last;

    # Сам пост
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html(/?)+$" /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6&seourl=$6 last;
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html(/?)+$" /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 last;
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html(/?)+$" /index.php?mod=print&subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 last;
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html(/?)+$" /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4&seourl=$4 last;

    rewrite "^/([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1 last;
    rewrite "^/([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1 last;
    rewrite "^/([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?mod=print&news_page=$2&newsid=$3&seourl=$4&seocat=$1 last;
    rewrite "^/([^.]+)/([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$2&seourl=$3&seocat=$1 last;

    rewrite "^/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 last;
    rewrite "^/page,([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$2&news_page=$1&seourl=$3 last;
    rewrite "^/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?mod=print&news_page=$1&newsid=$2&seourl=$3 last;
    rewrite "^/([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$1&seourl=$2 last;

    # За день
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})(/?)+$" /index.php?year=$1&month=$2&day=$3 last;
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page/([0-9]+)(/?)+$" /index.php?year=$1&month=$2&day=$3&cstart=$4 last;

    # За весь месяц
    rewrite "^/([0-9]{4})/([0-9]{2})(/?)+$" /index.php?year=$1&month=$2 last;
    rewrite "^/([0-9]{4})/([0-9]{2})/page/([0-9]+)(/?)+$" /index.php?year=$1&month=$2&cstart=$3 last;

    # Вывод за весь год
    rewrite "^/([0-9]{4})(/?)+$" /index.php?year=$1 last;
    rewrite "^/([0-9]{4})/page/([0-9]+)(/?)+$" /index.php?year=$1&cstart=$2 last;

    # вывод отдельному тегу
    rewrite "^/tags/([^/]*)(/?)+$" /index.php?do=tags&tag=$1 last;
    rewrite "^/tags/([^/]*)/page/([0-9]+)(/?)+$" /index.php?do=tags&tag=$1&cstart=$2 last;

    # поиск по доп полям
    rewrite "^/xfsearch/(.*)/page/([0-9]+)(/?)+$" /index.php?do=xfsearch&xf=$1&cstart=$2 last;
    rewrite "^/xfsearch/(.*)(/?)+$" /index.php?do=xfsearch&xf=$1 last;

    # вывод для отдельного юзера
    rewrite "^/user/([^/]*)/rss.xml$" /index.php?mod=rss&subaction=allnews&user=$1 last;
    rewrite "^/user/([^/]*)(/?)+$" /index.php?subaction=userinfo&user=$1 last;
    rewrite "^/user/([^/]*)/page/([0-9]+)(/?)+$" /index.php?subaction=userinfo&user=$1&cstart=$2 last;
    rewrite "^/user/([^/]*)/news(/?)+$" /index.php?subaction=allnews&user=$1 last;
    rewrite "^/user/([^/]*)/news/page/([0-9]+)(/?)+$" /index.php?subaction=allnews&user=$1&cstart=$2 last;
    rewrite "^/user/([^/]*)/news/rss.xml(/?)+$" /index.php?mod=rss&subaction=allnews&user=$1 last;

    # вывод всех последних новостей
    rewrite "^/lastnews(/?)+$" /index.php?do=lastnews last;
    rewrite "^/lastnews/page/([0-9]+)(/?)+$" /index.php?do=lastnews&cstart=$1 last;

    # вывод в виде каталога
    rewrite "^/catalog/([^/]*)/rss.xml$" /index.php?mod=rss&catalog=$1 last;
    rewrite "^/catalog/([^/]*)(/?)+$" /index.php?catalog=$1 last;
    rewrite "^/catalog/([^/]*)/page/([0-9]+)(/?)+$" /index.php?catalog=$1&cstart=$2 last;

    # вывод непрочитанных статей
    rewrite "^/newposts(/?)+$" /index.php?subaction=newposts last;
    rewrite "^/newposts/page/([0-9]+)(/?)+$" /index.php?subaction=newposts&cstart=$1 last;

    # вывод избранных статей
    rewrite "^/favorites(/?)+$" /index.php?do=favorites last;
    rewrite "^/favorites/page/([0-9]+)(/?)+$" /index.php?do=favorites&cstart=$1 last;

    rewrite "^/rules.html$" /index.php?do=rules last;
    rewrite "^/statistics.html$" /index.php?do=stats last;
    rewrite "^/addnews.html$" /index.php?do=addnews last;
    rewrite "^/rss.xml$" /index.php?mod=rss last;
    rewrite "^/sitemap.xml$" /uploads/sitemap.xml last;

    if (!-d $request_filename) {
            rewrite "^/([^.]+)/page/([0-9]+)(/?)+$" /index.php?do=cat&category=$1&cstart=$2 last;
            rewrite "^/([^.]+)/?$" /index.php?do=cat&category=$1 last;
    }

    if (!-f $request_filename) {
            rewrite "^/([^.]+)/rss.xml$" /index.php?mod=rss&do=cat&category=$1 last;
            rewrite "^/page,([0-9]+),([^/]+).html$" /index.php?do=static&page=$2&news_page=$1 last;
            rewrite "^/print:([^/]+).html$" /index.php?mod=print&do=static&page=$1 last;
    }

    if (!-f $request_filename) {
            rewrite "^/([^/]+).html$" /index.php?do=static&page=$1 last;
        }        
}

server {
     listen  443 ssl http2;
     server_name  www.example.com;
     rewrite ^ https://example.com$request_uri? permanent;
}
Теперь необходимо перезапустить NGINX, но перед этим проверьте ваш конфиг на ошибки.
nginx -t
Если всё хорошо, значит вы сделали всё правильно. Помните, везде example.com нужно менять на свой домен!
Перезапускаем:
sudo systemctl reload nginx
Далее нам нужно настроить автообновление, для этого в консоль вводим:
/opt/letsencrypt/letsencrypt-auto renew
Так как недавно был получен сертификат, выйдет данное сообщение:
Checking for new version...
Requesting root privileges to run letsencrypt...
   /root/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/example.com.conf

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.
Нам необходимо войти через FTP менеджер и отредактировать файл /etc/crontab
Добавляем в данный файл следующие строки:
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
35 2 * * 1 /usr/bin/systemctl reload nginx

Эта команда создаст cron, который каждый понедельник будет выполнять автоматическое продление letsencrypt сертификатов в 2:30 и перезагружать Nginx в 2:35. Вся информация об обновлении будет логироваться в /var/log/le-renew.log.

Необязательно:
Всякий раз, когда новые обновления доступны для клиента Let’s Encrypt, вы можете обновить локальную копию, запустив git pull из каталога /opt/letsencrypt:
cd /opt/letsencrypt
sudo git pull
Комментарии
  1. Перейти к комментарию
    user
    @Rockstar

    0 поинтов • 5 октября 2018 16:34

    Спасибо получил!