:::: MENU ::::

WordPress: tradurre stringhe dal file functions.php

Ecco un esempio veloce per tradurre stringhe senza accedere ai file gettext

add_filter('gettext', 'translate_italian_text');
add_filter('ngettext', 'translate_italian_text');

function translate_italian_text($translated) {
$translated = str_ireplace('Related Posts', 'Articoli correlati', $translated);
$translated = str_ireplace('About the Author: %s', 'Autore: %s', $translated);
$translated = str_ireplace('Comment', 'Commento', $translated);
return $translated;
}

Bloccare spider indesiderati con mod security

Creare un file sotto /usr/local/apache/conf/botblacklist.conf

creare una rule su modsecurity:

SecRule REQUEST_HEADERS:User-Agent "@pmFromFile /usr/local/apache/conf/botblacklist.conf" "deny,status:401,id:980001,msg:'spider in blacklist'"

aggiungi gli spider da bloccare nel file, una voce per ogni riga

Ecco una lista esaustiva dei principali spider

BOT for JCE
Aboundex
80legs
360Spider
Cogentbot
Alexibot
asterias
attach
BackDoorBot
BackWeb
Bandit
BatchFTP
Bigfoot
Black.Hole
BlackWidow
BlowFish
BotALot
Buddy
BuiltBotTough
Bullseye
BunnySlippers
Cegbfeieh
CheeseBot
CherryPicker
ChinaClaw
Collector
Copier
CopyRightCheck
cosmos
Crescent
Custo
AIBOT
DISCo
DIIbot
DittoSpyder
Download Demon
Download Devil
Download Wonder
dragonfly
Drip
eCatch
EasyDL
ebingbong
EirGrabber
EmailCollector
EmailSiphon
EmailWolf
EroCrawler
Exabot
Express WebPictures
Extractor
EyeNetIE
Foobot
flunky
FrontPage
Go-Ahead-Got-It
gotit
GrabNet
Grafula
Harvest
hloader
HMView
HTTrack
humanlinks
IlseBot
Image Stripper
Image Sucker
Indy Library
InfoNaviRobot
InfoTekies
Intelliseek
InterGET
Internet Ninja
Iria
JennyBot
JetCar
JOC
JustView
Jyxobot
Kenjin.Spider
Keyword.Density
larbin
LexiBot
lftp
libWeb/clsHTTP
likse
LinkextractorPro
LinkScan/8.1a.Unix” bad_bo
LNSpiderguyt
LinkWalker
lwp-trivial
LWP::Simple
Magnet
Mag-Net
MarkWatch
Mass Downloader
Mata.Hari
Memo
Microsoft.URL
Microsoft URL Control
MIDown tool
MIIxpc
Mirror
Missigua Locator
Mister PiX
moget
Mozilla/3.Mozilla/2.01
NAMEPROTECT
Navroad
NearSite
NetAnts
Netcraft
NetMechanic
NetSpider
Net Vampire
NetZIP
NextGenSearchBot
NICErsPRO
NimbleCrawler
Ninja
NPbot
Octopus
Offline Explorer
Offline Navigator
Openfind
OutfoxBot
PageGrabber
Papa Foto
pavuk
pcBrowser
PHP version tracker
Pockey
ProPowerBot/2.14
ProWebWalker
psbot
Pump
QueryN.Metasearch
RealDownload
Reaper
Recorder
ReGet
RepoMonkey
RMA
Siphon
SiteSnagger
SlySearch
SmartDownload
Snake
Snapbot
Snoopy
sogou
SpaceBison
SpankBot
spanner
Sqworm
Stripper
Sucker
SuperBot
SuperHTTP
Surfbot
suzuran
Szukacz/1.4
tAkeOut
Teleport
Telesoft
TurnitinBot/1.5
The.Intraformant
TheNomad
TightTwatBot
Titan
True_Robot
turingos
TurnitinBot
URLy.Warning
Vacuum
VCI
VoidEYE
Web Image Collector
Web Sucker
WebAuto
WebBandit
Webclipping.com
WebCopier
WebEMailExtrac
WebEnhancer
WebFetch
WebGo IS
Web.Image.Collector
WebLeacher
WebmasterWorldForumBot
WebReaper
WebSauger
Website eXtractor
Website Quester
Webster
WebStripper
WebWhacker
WebZIP
Whacker
Widow
WISENutbot
WWWOFFLE
WWW-Collector-E
Xaldon
Xenu
Zeus
ZmEu
Zyborg
DirBuster
BLEXBot
Ahrefs
Acunetix
FHscan
Baiduspider
Yandex


WordPress – Convertire tabelle da MyISAM a InnoDB

1 – Backup del database

2 – Backup delle tabelle wp_posts e wp_postmeta

CREATE TABLE wp_posts_BAK LIKE wp_posts ; 
INSERT wp_posts_BAK SELECT * FROM wp_posts;

CREATE TABLE wp_postmeta_BAK LIKE wp_postmeta ; 
INSERT wp_postmeta_BAK SELECT * FROM wp_postmeta;

3 – Se utilizziamo YARPP rimuoviamo il fulltext indice

ALTER TABLE wp_posts DROP INDEX yarpp_title;
ALTER TABLE wp_posts DROP INDEX yarpp_content;

4 – Cerchiamo i fulltext indici nel db

mysql -e "SELECT concat('ALTER TABLE ',TABLE_NAME,' DROP INDEX ', index_name, ' ;')
FROM information_Schema.STATISTICS
WHERE table_schema = 'db_wordpress'
AND index_type = 'FULLTEXT' ORDER BY index_name " | tail -n+2 > drop.sql

5 – Rimuoviamo tutti i fulltext

mysql -f db_wordpress < drop.sql

6 – Modifichiamo l’engine di wp_posts e wp_postmeta

ALTER TABLE wp_posts ENGINE=InnoDB;
ALTER TABLE wp_postmeta ENGINE=InnoDB;

7 – Cerchiamo tutte le tabelle MyISAM da convertire

mysql -e "SELECT concat('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;')
FROM Information_schema.TABLES
WHERE TABLE_SCHEMA = 'db_wordpress' AND ENGINE = 'MyISAM' AND TABLE_TYPE='BASE TABLE'" | tail -n+2 > alter.sql

8 – Convertiamo l’engine delle tabelle

mysql -f db_wordpress < alter.sql

Estrarre ip con filtro dal log

grep -iR “STRINGA1” maillog.txt | grep “STRINGA2” | grep -E -o ‘(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)’ > /home/file.txt


Prevenire Brute force con mod_security sul file wp-login.php e xmlrpc.php

Inserire queste regole dentro /usr/local/apache/conf/modsec2.user.conf


Include /usr/local/apache/conf/modsec2.whitelist.conf
#Block WP logins with no referring URL
<Locationmatch "/wp-login.php">
SecRule REQUEST_METHOD "POST" "deny,status:401,id:5000130,chain,msg:'wp-login request blocked, no referer'"
SecRule &HTTP_REFERER "@eq 0"
</Locationmatch>

#Wordpress Brute Force detection
SecAction phase:1,nolog,pass,initcol:ip=%{REMOTE_ADDR},id:5000134
<Locationmatch "/wp-login.php">
# Setup brute force detection.
# React if block flag has been set.
SecRule ip:bf_block "@gt 0" "deny,status:401,log,id:5000135,msg:'ip address blocked for 5 minutes, more than 10 login attempts in 3 minutes.'"
# Setup Tracking. On a successful login, a 302 redirect is performed, a 200 indicates login failed.
SecRule RESPONSE_STATUS "^302" "phase:5,t:none,nolog,pass,setvar:ip.bf_counter=0,id:5000136"
SecRule RESPONSE_STATUS "^200" "phase:5,chain,t:none,nolog,pass,setvar:ip.bf_counter=+1,deprecatevar:ip.bf_counter=1/180,id:5000137"
SecRule ip:bf_counter "@gt 10" "t:none,setvar:ip.bf_block=1,expirevar:ip.bf_block=300,setvar:ip.bf_counter=0"
</locationmatch>

#Block WP logins with no referring URL
<Locationmatch "/xmlrpc.php">
SecRule REQUEST_METHOD "POST" "deny,status:401,id:6000130,chain,msg:'xmlrpc request blocked, no referer'"
SecRule &HTTP_REFERER "@eq 0"
</Locationmatch>

#Wordpress Brute Force detection
SecAction phase:1,nolog,pass,initcol:ip=%{REMOTE_ADDR},id:6000134
<Locationmatch "/xmlrpc.php">
# Setup brute force detection.
# React if block flag has been set.
SecRule ip:bf_block "@gt 0" "deny,status:401,log,id:6000135,msg:'ip address blocked for 5 minutes, more than 10 login attempts in 3 minutes.'"
# Setup Tracking. On a successful login, a 302 redirect is performed, a 200 indicates login failed.
SecRule RESPONSE_STATUS "^302" "phase:5,t:none,nolog,pass,setvar:ip.bf_counter=0,id:6000136"
SecRule RESPONSE_STATUS "^200" "phase:5,chain,t:none,nolog,pass,setvar:ip.bf_counter=+1,deprecatevar:ip.bf_counter=1/180,id:6000137"
SecRule ip:bf_counter "@gt 10" "t:none,setvar:ip.bf_block=1,expirevar:ip.bf_block=300,setvar:ip.bf_counter=0"
</locationmatch>

Include /usr/local/apache/conf/modsec2.whitelist.conf

Escludere i referral spam da Google Analytics

Creare un segmento avanzato con le seguenti impostazioni, questa modalità agisce su tutte le statistiche, sia passate che future ma senza modificare i valori archiviati da GA. Il vantaggio di questa modalità è che nel caso abbiamo attivi molti siti da monitorare il segmento avanzato verrà applicato su tutti gli account.

ga-spam-1

Queste sono le stringhe regex di base ma ovviamente vanno personalizzate in base alle situazioni di statistiche

.*((darodar|priceg|semalt|buttons\-for(\-your)?\-website|makemoneyonline|blackhatworth|hulfingtonpost|o\-o\-6\-o\-o|(social|(simple|free)\-share)\-buttons)\.com)|(econom\.co)|(ilovevitaly(\.co(m)?))|(ilovevitaly(\.ru))|(humanorightswatch(\.org)).*
.*((best(websitesawards|\-seo\-(solution|offer))|Get\-Free\-Traffic\-Now|googlsucks|theguardlan)\.com|(domination|torture)\.ml|((rapidgator\-)?(general)?porn(hub(\-)?forum)?|4webmasters)\.(ga|tk|org)|(buy\-cheap\-online)\.info).*
.*(youporn\-forum\.uni\.me).*

Una volta attivato il segmento avanzato tutti i report delle statistiche saranno filtrate applicando queste regole.

Se invece vogliamo filtrare le statistiche prima che vengano salvate da GA dobbiamo creare dei filtri a livello di account, questo però ci costringe a dover inserire manualmente i filtri per ogni sito web che abbiamo attivo sul nostro account GA.

gaspam

Ci basterà creare i nostri filtri con questi valori (sempre da personalizzare a bisogno):

.*((darodar|priceg|semalt|buttons\-for(\-your)?\-website|makemoneyonline|blackhatworth|hulfingtonpost|o\-o\-6\-o\-o|(social|(simple|free)\-share)\-buttons)\.com)|(econom\.co)|(ilovevitaly(\.co(m)?))|(ilovevitaly(\.ru))|(humanorightswatch(\.org)).*
.*((best(websitesawards|\-seo\-(solution|offer))|Get\-Free\-Traffic\-Now|googlsucks|theguardlan)\.com|(domination|torture)\.ml|((rapidgator\-)?(general)?porn(hub(\-)?forum)?|4webmasters)\.(ga|tk|org)|(buy\-cheap\-online)\.info).*

Manutenzione e aggiornamento di wordpress da console con WP-CLI

Come procedere per l’installazione di wp-cli

accedere con permessi root e scaricare l’eseguibile:

1) curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

2) php wp-cli.phar –info –allow-root

3) chmod +x wp-cli.phar

4) mv wp-cli.phar /usr/local/bin/wp

adesso è possibile chiamare l’eseguibili lanciando # wp

passiamo all’utente con # su nomeutente

andiamo sulla root di installazione del wordpress

– Per aggiornare tutti i plugin: # wp plugin update nome-plugin

– Per aggiornare tutti i plugin: # wp plugin update –all

– Per aggiornare WordPress: # wp core update


Protezione hotlink da siti specifici

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} ^http://(www\.)?sitoesterno1\.it/.*$ [OR]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?sitoesterno2\.com/.*$
RewriteRule .*\.(php|gif|jpg)$ http://www.miosito.it/immagine-alternativa.png [R,NC,L]
</ifModule>

Rinnovare il certificato SSL per i servizi WHM, SMTP, MAIL, FTP

1) Reset dei certificati nella sezione Manage Service SSL Certificates

2) Rimuovere il vecchio certificato da Manage SSL Hosts e da SSL Storage Manager

3) Vai in Install an SSL Certificate on a Domain e installa il nuovo certificato ( Nelle impostazioni inserire il dominio dell’hostname del server e non il dominio con * )

4) Ultimo passaggio è tornare su Manage Service SSL Certificates, selezionare il nuovo certificato e seleziona tutti e 4 i servizi… attendere l’installazione


Configurare il record autodiscover per i client di posta

Se utilizzi cPanel disattivare prima la funzione “Thunderbird and Outlook autodiscover and autoconfig support” in Tweak Settings, successivamente modificare il Template DNS aggiungendo questa riga:

_autodiscover._tcp IN SRV 0 0 443 mail.%domain%.

naturalmente è possibile modificare i DNS manualmente creando il relativo record SRV