Archives For PHP

Ciao, articolo di servizio per dirti che – se mi stai leggendo per temponon devi aggiornare il plugin BackupWordPress allaneonataversione 3.9 rilasciata una manciata di ore fa (circa 16 a ora che sto scrivendo l’articolo), questa causa un errore fatale che manderà in crash il tuo blog e che ti costringerà a passare dalla porta di servizio per rimediare (la porta di servizio è quella offerta dal nuovo servizio di Recovery integrato in WordPress 5.2).

Non aggiornare BackupWordPress alla versione 3.9 (per il momento)

Il bug viene minuziosamente descritto qui su GitHub, segnalato da un utente che si è ritrovato nella medesima situazione del sottoscritto: github.com/xibodevelopment/backupwordpress/issues/1206. Come già successo in passato (vedi l’articolo Possibile problema in BackupWordPress 2.3) il modo di rimediare c’è e lo si può mettere in atto facilmente connettendoti in FTP al tuo spazio web e rinominando la cartella del plugin (wp-content/plugins/backupwordpress) in backupwordpress_ (per esempio, ma vale qualsiasi altro nome), questo non permetterà al tuo WordPress di trovare i file del plugin e di conseguenza disattiverà quest’ultimo consentendoti di far tornare operativo il sito web.

Rimanere con la vecchia versione fino a nuovo ordine

Se vuoi rimettere in pista la vecchia versione di BackupWordPress in attesa che ne venga rilasciata una nuova che corregge il bug puoi scaricarla direttamente dal repository ufficiale all’indirizzo downloads.wordpress.org/plugin/backupwordpress.3.8.zip. Scompatta il file ZIP, cancella la cartella attuale di BackupWordPress sul tuo spazio web e carica quella che hai appena scompattato, le impostazioni sono salvate nel tuo database e non verranno quindi perse.

Correggere il bug presente e rimanere con la 3.9

Un thread nel forum di supporto del plugin suggerisce una via alternativa per risolvere il problema generato dal nuovo BackupWordPress: wordpress.org/support/topic/how-i-fixed-3-9-crash.

Puoi lanciare l’aggiornamento alla versione 3.9 (quindi il tuo WordPress diventerà momentaneamente non funzionante), nel frattempo scarica e scompatta il contenuto della versione 3.8 (downloads.wordpress.org/plugin/backupwordpress.3.8.zip), quindi carica via FTP le cartelle backdrop e whitelist-html sovrascrivendo quelle presenti. Al contrario delle vecchie, le nuove cartelle sembrano infatti non contenere i file necessari per il funzionamento del plugin. Sovrascrivendole farai nuovamente funzionare BackupWordPress ottenendo un “ibrido” tra le versioni 3.8 e 3.9.

Sembra proprio che qualcuno abbia avuto un pelo troppa fretta nel preparare la nuova versione del plugin, il tutto senza accorgersi di nulla e senza dare il giusto peso alle numerose segnalazioni di malfunzionamento già pervenute tra GitHub e forum di supporto WordPress. A questo punto non resta che attendere il rilascio della nuova versione del plugin che correggerà questa anomalia.

12/6/19

Tutto come previsto: è stata da poco rilasciata la versione 3.10 che corregge il bug letale della sfortunata e ben poco duratura 3.9 😉
Puoi tornare ora ad aggiornare il plugin senza strani (ma perfettamente funzionanti) work-around.

BackUpWordPress
BackUpWordPress
Developer: XIBO Ltd
Price: Free
× Le pillole del Dr.Mario

Pillole

Le pillole sono articoli di veloce lettura dedicati a notizie, script o qualsiasi altra cosa possa essere "divorata e messa in pratica" con poco. Uno spazio del blog riservato ai post "a bruciapelo"!
Condividi l'articolo con i tuoi contatti:

Tutto parte da una segnalazione di bug arrivata tramite il mio bug bounty program (openbugbounty.org/reports/809068) e, seppur protetto da alcuni metodi di cui ti ho già parlato in passato, effettivamente il file XML-RPC di WordPress risultava raggiungibile dall’esterno, mostrando potenzialmente il fianco a un qualche attacco poco gradito. Per questo motivo ho voluto aggiungere un ulteriore strato di sicurezza che gli permette di continuare a rimanere disponibile per Jetpack e nulla più. Per farlo mi è bastato mettere mano al file .htaccess del dominio.

WordPress: 5 step per la sua (e tua) sicurezza

La documentazione a cui fare riferimento è quella ufficiale di Jetpack, disponibile all’indirizzo jetpack.com/support/hosting-faq. Nello specifico ciò che a te interessa è quel paragrafo relativo a “Whitelist all communications between WordPress.com and Jetpack“, utile per permettere al tuo sito e al servizio messo a disposizione da WordPress.com di parlare senza incontrare ostacoli, lasciando fuori tutto il resto.

Al solito, prima di cominciare, il consiglio resta sempre lo stesso:

ATTENZIONE: Prima di eseguire qualsiasi modifica ai tuoi file e/o dispositivi sei pregato/a di effettuare un backup di questi (o lavorare in ambiente di test e mai di produzione). Solo così sarai capace di tornare indietro ponendo rimedio a eventuali errori di distrazione.

Una questione di .htaccess

Pronto? Cominciamo. Il trucco è semplice e sta tutto nel file che può limitare l’accesso alle risorse contenute nel tuo sito web. Apri il file .htaccess con un editor di testo degno (Notepad++ o Atom), non toccare nulla che sia stato messo lì dal tuo WordPress o da qualsiasi altro plugin da te utilizzato (penso a iThemes Security o W3 Total Cache e simili), trova uno spazio nuovo da occupare con una porzione di codice che dovrebbe essere quanto più simile a questa proposta di seguito:

<Files xmlrpc.php>
    Order Allow,deny
    Allow from 122.248.245.244
    Allow from 54.217.201.243
    Allow from 54.232.116.4
    Allow from 192.0.64.1/192.0.127.254
    Allow from 192.0.80.0/20
    Allow from 192.0.96.0/20
    Allow from 192.0.112.0/20
    Allow from 195.234.108.0/22
    Deny from all
    Satisfy All
    ErrorDocument 403 https://gioxx.org/403.shtml
</Files>

Io ho inserito il codice subito prima del termine del “paragrafo” modificato da WordPress (per capirci, prima di “# END WordPress“). Una volta terminato il tuo lavoro, salva la modifica e sovrascrivi il file presente sul tuo spazio FTP. Ciò che hai appena fatto consiste nel bloccare ogni possibile comunicazione con il file xmlrpc.php a esclusione degli IP appartenenti a WordPress.com, come una sorta di Firewall che taglia fuori tutti tranne loro. Chiunque proverà a puntare a quel file php sul tuo spazio hosting, si troverà davanti a una pagina di errore (nel mio caso https://gioxx.org/403.shtml, nel tuo ti consiglio di modificarla con qualsiasi altro tipo di indirizzo).

La modifica è immediata e dovrebbe portare beneficio alla tua installazione WordPress – in termini di sicurezza, nda – che non risentirà così alcun problema nell’utilizzo del sempre troppo mastodontico JetPack, in attesa che quest’ultimo si decida a utilizzare un diverso metodo per comunicare con le installazioni del CMS in giro per il mondo.

Al solito: per qualsiasi ulteriore dubbio o informazione l’area commenti è a tua totale disposizione (anche per suggerire metodi alternativi a quello proposto poco sopra).


fonti:
namehero.com/startup/how-to-safely-disable-xmlrpc-in-wordpress-while-keeping-jetpack
jetpack.com/support/hosting-faq
Condividi l'articolo con i tuoi contatti:

In seguito all’aggiornamento del pacchetto PHP 7 su Synology, mi sono accorto che il bot di Telegram non mi informava più riguardo il cambiamento di stato dell’Home Mode di casa. Ho dato un’occhiata al problema e scoperto che i moduli .so non erano più al loro posto. Ho quindi rimesso in ordine e tutto è tornato a funzionare come riportato nel mio vecchio articolo, questo di seguito:

Synology Surveillance Station: Home Mode automatico tramite WiFi

Per questo motivo ho deciso di scrivere qualche riga di codice che rendesse l’operazione più semplice nel caso in cui mi ricapiti lo stesso scenario. Ho poi condiviso con tutti lo script, caricandolo nel mio spazio GitHub all’interno del progetto (github.com/gioxx/AVM-FRITZ-Box-Synology-Surveillance-Home-Mode-Automation). Lo script si chiama molto banalmente php7ModEnabler.sh e ti posso rapidamente dire che:

  • Verifica l’esistenza del pacchetto PHP 7 sul NAS Synology, quindi:
    • Se non esiste il file /usr/local/lib/php70/modules/openssl.so lo recupera dal pacchetto PHP 7 (/volume1/@appstore/PHP7.0/usr/local/lib/php70/modules).
    • Fa la stessa cosa con /usr/local/lib/php70/modules/curl.so e /usr/local/lib/php70/modules/soap.so (che utilizzo anche per altro, e male non fa).
    • Modifica il php.ini di PHP 7 (/usr/local/etc/php70/php.ini) e “inietta” l’uso dei 3 moduli se questo non è stato precedentemente fatto (baso il mio controllo sull’esistenza della riga extension=openssl.so generalmente sotto extension_dir = "/usr/local/lib/php70/modules".
    • Riavvio PHP 7 (synoservicecfg -restart pkgctl-PHP7.0) per poter caricare correttamente il file php.ini modificato.

Ti basterà copiare lo script all’interno della tua home sul NAS, quindi renderlo eseguibile (chmod +x php7ModEnabler.sh) e lanciarlo con privilegi elevati (sudo ./php7ModEnabler.sh).

È una logica molto banale ma funzionante e utile per accelerare i tempi di configurazione del PHP 7 e relativi moduli su Synology. Ho modificato l’articolo originale per poter includere anche questa nuova possibilità. Ringrazio tutte le fonti utilizzate (quindi i relativi utenti che hanno fornito l’aiuto), tutte riportate all’interno dello script bash. Sentiti libero di suggerire delle alternative nei commenti o – se preferisci – di forkare direttamente il mio codice GitHub e proporre così possibili miglioramenti, correzioni o ulteriori controlli.

Buon lavoro.

Condividi l'articolo con i tuoi contatti:

2009 e 2011, questi gli anni in cui ti ho parlato del Random Password Generator, un piccolo strumento web che permette di ottenere una password alfanumerica da 9 caratteri (senza segni di punteggiatura) e che in questi anni ha continuato a svolgere il suo lavoro per chiunque ne avesse la necessità, lì in attesa al solito posto, con quel pelo di manutenzione e nulla più. Ora però è arrivato il momento di dare una svecchiata a lui e al fratello minore “Random PIN Generator“, nato in seguito per differente esigenza.

Firefox Monitor ti avvisa in caso di furto credenziali

Un template più pulito e chiaro, lo stretto indispensabile per ciò che riguarda le informazioni, la funzione principale in bella vista. Il campo Password o PIN è seguito (subito sotto) da due pulsanti che ti permettono rispettivamente di copiare il codice negli appunti o generarne uno nuovo, così da renderti la vita decisamente più semplice.

L’ultimo restyling è di dicembre dello scorso anno, lo annuncio oggi (non che se ne sentisse il bisogno) così che tu possa approfittarne per darci un’occhiata e salvare nei tuoi preferiti i due indirizzi rapidi che possono tornarti utili: go.gioxx.org/password e go.gioxx.org/pin :-)

Buon fine settimana!

Condividi l'articolo con i tuoi contatti:

Ho voluto sperimentare un metodo alternativo di pubblicazione automatica su Twitter passando dal mio NAS anziché da IFTTT (che a dirla tutta non mi dava la possibilità di controllare una delle condizioni da me desiderate) o alternative già presenti sul mercato. Ho messo mano a PHP e Bash ancora una volta, lasciando che sia il NAS a fare il lavoro sporco programmato quotidianamente tramite utilità di pianificazione. Io ti racconto la mia esigenza e relativa esperienza, sta a te vederci un possibile utilizzo per qualcosa che ti riguarda.

Pubblicare su Twitter: farlo da Synology (e non solo)

L’esigenza

Dato un numero di giorni mancanti a una certa data (quindi in aggiornamento almeno una volta ogni 24h), ho bisogno di pubblicare un tweet quotidiano, come si trattasse di un conto alla rovescia. Scopro il servizio gratuito offerto da timercheck.io di Eric Hammond e decido di richiamarlo tramite PHP e l’aiuto della libreria twitteroauth di Abraham Williams, perché a vedere ciò che offre IFTTT e i trigger data/ora, Twitter e Webhooks non riesco a fare esattamente ciò che cerco.

Di cosa c’è bisogno

In realtà qualcosa è stato già dichiarato, ma ecco l’elenco della spesa:

  • Un NAS Synology o una qualsiasi macchina Linux-based (penso a un Raspberry, per dire), io comunque farò riferimento al primo citato.
  • PHP 7 (disponibile nel Synology Package Manager) con estensione openssl.
  • Te la ricordi l’utenza limitata che ho creato nell’articolo dedicato alla Surveillance Station? Ecco, ho riutilizzato la cartella del suo profilo (nell’esempio: /var/services/homes/api_user). Qui ho creato una cartella chiamata twitter-php-master all’interno della quale ho inserito gli script di cui ti parlerò dopo.
  • La libreria twitteroauth di Abraham Williams disponibile su GitHub.
  • Un account Twitter e relativa autorizzazione alla creazione / uso di applicazioni tramite apps.twitter.com (devi essere riconosciuto come sviluppatore).

Provo a dare per assodato che tu sappia ciò di cui stiamo parlando e salto a piè pari la creazione di un account Twitter e del profilo da sviluppatore, così come il modulo PHP 7 (ma ti parlerò dell’estensione relativa all’OpenSSL, tranquillo). Se qualcosa non ti è chiara o se non conosci un particolare passaggio non esitare a lasciare un commento in fondo all’articolo, proverò a darti una mano per quanto mi è possibile :-)

Detto ciò, partiamo.

Abilita il modulo OpenSSL su PHP 7

Collegati via SSH al tuo NAS (non sai come fare? Guarda qui), quindi passa all’utenza di root tramite un sudo -i seguito da invio, inserisci la password della tua utenza amministrativa e premi invio (non sai di cosa sto parlando? Guarda qui). Spostati ora in /usr/local/etc/php70 e modifica il file php.ini (esempio: vi php.ini). Ora:

  • cerca la stringa extension_dir = "/usr/local/lib/php70/modules"
  • Aggiungi subito sotto l’abilitazione di openssl:
    extension=openssl.so
  • Salva il file e chiudilo (tasto ESC, poi :wq seguito da invio).
  • Crea una copia del modulo openssl.so tramite un
cp /volume1/@appstore/PHP7.0/usr/local/lib/php70/modules/openssl.so /usr/local/lib/php70/modules/
  • Torna ora nel Gestore Pacchetti di Synology e riavvia PHP 7.

Tutto questo ti permetterà di evitare di incorrere nell’errore che qui di seguito ti mostro (da me ottenuto quando ho lanciato lo script di bash per la prima volta, dopo essermi dimenticato di abilitare SSL sul PHP del mio NAS):

Pubblicare su Twitter: farlo da Synology (e non solo) 1

Crea il conto alla rovescia tramite timercheck.io

Il funzionamento di questo semplicissimo servizio web è spiegato abbondantemente nell’articolo del suo stesso autore. Io sarò più breve: una giornata da 24 ore è composta da 86400 secondi (Google semplifica le cose), qui trovi un tool per il calcolo dei giorni tra due date, il gioco è praticamente fatto.

Trasforma il numero di giorni in secondi, quindi crea un URL univoco tramite timercheck.io che possa restituirti un output json contenente ciò che a te serve (il tempo che rimane) ogni volta che intendi visitare quell’URL tramite browser e non solo (nel mio caso lo richiamo proprio dallo script PHP di cui ti parlerò tra breve). Un esempio? timercheck.io/Test-Gioxx.org/60 crea un conto alla rovescia che dura un minuto, visitando semplicemente timercheck.io/Test-Gioxx.org e aggiornando la pagina noterai che il conto alla rovescia avanzerà portandosi sempre più verso lo zero (nel campo seconds_remaining), tutti i dati in json resteranno disponibili fino allo scadere di quel timer, e questo è proprio ciò che ti serve.

È caldamente consigliato creare un URL quanto più difficile da indovinare o replicare, questo perché in caso contrario chiunque potrà modificarlo o resettarlo al posto tuo, è un servizio totalmente aperto a tutti, senza gerarchie o complicati sistemi di autorizzazione. Accetti un’idea che credo possa tornarti utile? Genera un contatore nuovo con un nome qualsiasi e una durata di 10 secondi, copia il suo request_id e crea un nuovo contatore con il nome che ti interessa al quale farai seguire l’ID copiato (esempio: timercheck.io/Test-Gioxx.org-dc8a395c-10d7-11e9-b585-175833651ae5/60), questo è certamente un URL molto più univoco di quello da te precedentemente pensato.

Il tuo contatore è pronto, puoi procedere verso lo script PHP che si occuperà di lanciare il tuo tweet in rete.

post-tweets.php

Uno script PHP che troverà posto all’interno della cartella /var/services/homes/api_user/twitter-php-master e che conterrà le istruzioni necessarie per inviare il cinguettio sulla piattaforma. Prima però di dedicare la giusta attenzione a questo specifico script, devi scaricare una copia aggiornata della libreria twitteroauth di Abraham Williams, puoi farlo con un semplice clic qui. Scompatta il contenuto del file ZIP all’interno della cartella twitter-php-master (non ripeto la solita posizione completa, dai!), non toccare null’altro, non serve.

Torniamo a quello che per comodità chiamerò post-tweets.php, lo script che si occuperà di pubblicare il tweet. Ti mostro il contenuto del mio, rimuovendo i dettagli personali ma mantenendo l’esempio testuale:

Ciò che dovrai ritoccare riguarderà ovviamente i parametri personali e il testo da inviare online. Dovrai specificare CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN e ACCESS_TOKEN_SECRET dell’applicazione che potrà scrivere impersonando il tuo utente, aggiungere il timer da tenere d’occhio (nell’esempio ho mantenuto https://timercheck.io/Test-Gioxx.org/60, a te toccherà specificare qui il tuo timer) e modificare il testo da pubblicare in base alla condizione del countdown: se questo è attivo o se è terminato (lo posso fare monitorando uno dei valori output del json, in questo caso lo status).

Piccola nota di finezza è il round() applicato al calcolo dei giorni (numero dei secondi residui diviso 86400), così da evitare di far comparire dei decimali nel tweet.

Il risultato dovrebbe assomigliare a questo:

Programmare l’operazione

Hai terminato tutta la preparazione, non ti resta che automatizzare il processo tramite Utilità di pianificazione e un banalissimo script bash per rendere tutto più immediato:

Salva il file bash nella solita cartella (twitter-php-master), avvia l’utilità di pianificazione Synology e crea una nuova operazione programmata da far girare ogni giorno all’ora che preferisci (io ho scelto le 8:00):

Pubblicare su Twitter: farlo da NAS Synology (e non solo)

Ce l’hai fatta, salvo errori sei appena riuscito a programmare la pubblicazione di un tweet tramite il tuo account. Il mio è un esperimento per imparare qualcosa di nuovo, utile per arrivare a una data per me molto importante, e nel tuo caso qual è la giustificazione per aver avviato un nuovo contatore con pubblicazione su Twitter automatizzata? :-)

Buona giornata!


Credits: artisansweb.net/tweet-twitter-php

Condividi l'articolo con i tuoi contatti: