Protegir automaticament les pàgines - hack mediawiki
L'objectiu és protegir les pàgines de forma automàtica per tal que ningú excepte els usuaris registrats les puguin editar. La manera de procedir normal és anar una per una, i s'ha de buscar un mètode automàtic.
mysql -uroot -pxxxx wikidb
mysql>show tables mysql> desc user; mysql> select * from user; taules: | archive | | categorylinks | | externallinks | | filearchive | | hitcounter | | image | | imagelinks | | interwiki | | ipblocks | | job | | langlinks | | logging | | math | | objectcache | | oldimage | | page | | pagelinks | | querycache | | querycache_info | | querycachetwo | | recentchanges | | redirect | | revision | | searchindex | | site_stats | | templatelinks | | text | | trackbacks | | transcache | | user | | user_groups | | user_newtalk | | watchlist |
per protegir una pàgina, m'he de logar com a joan/xxxx (log_user=1) protegeixo una pàgina (Instal.lació_Java), i puc veure el resultat en diferents taules:
mysql> select * from logging; log_type: protect log_action: protect log_timestamp: 20081028101227 log_user: 1 log_namespace: 0 log_title: Instal.lació_Java log_comment: [edit=autoconfirmed:move=autoconfirmed] log_params:
mysql> select * from page; -> aquí també es pot veure informació sobre les pàgines protegides- page_id: 16 page_namespace: 0 page_title: Instal.lació_Java page_restrictions: edit=autoconfirmed:move=autoconfirmed -> pàgina protegida page_counter: 6 page_is_redirect: 0 page_is_new: 0 page_random: 0.600156931534 page_touched: 20081028101227 page_latest: 136 page_len: 1397
A la taula recentchages també veiem que s'ha protegit una pàgina:
mysql> select * from recentchanges; rc_id: 134 (autoincrement) rc_timestamp: 20081028101227 rc_cur_time: 20081028101227 rc_user: 1 rc_user_text: Joan rc_namespace: -1 rc_title: Log/protect rc_comment: protected "[[Instal.lació Java]]": [edit=autoconfirmed:move=autoconfirmed] rc_minor: 0 rc_bot: 0 rc_new: 0 rc_cur_id: 0 rc_this_oldid: 0 rc_last_oldid: 0 rc_type: 3 rc_moved_to_ns: 0 rc_moved_to_title: rc_patrolled: 1 rc_ip: 127.0.0.1 rc_old_len: NULL rc_new_len: NULL
mysql> select * from revision; -> aquí també queda registrat el canvi, però no crec que sigui crític mysql> select * from text; -> aquí és on hi ha tots els textos
Ara creem una pàgina de prova, i la puc veure amb
mysql> select * from page; page_id: 21 page_namespace: 0 page_title: Prova page_restrictions: page_counter: 1 page_is_redirect: 0 page_is_new: 1 page_random: 0.861754024984 page_touched: 20081028104402 page_latest: 138 page_len: 19
Si la vull protegir faig:
mysql> update page set page_restrictions='edit=autoconfirmed:move=autoconfirmed' where page_id=21;
i ara si em connecto com un usuari anònim i vaig a la pàgina, efectivament no es mostra la pestanya 'Editar' en principi no toco la taula logging.
Resumint: si vull protegir totes les pàgines de cop:
mysql> update page set page_restrictions='edit=autoconfirmed:move=autoconfirmed'
[comprovar-ho en una base wiki que no sigui de producció]
Un script que executi aquesta ordre es pot integrar dins del script que fa backups automàtics setmanalment.
L'ordre que s'ha d'executar és:
mysql -u root -pxxxx wikidb < /home/joan/update_wiki.sql
i el contingut del fitxer /home/joan/update_wiki.sql és senzillament:
update page set page_restrictions='edit=autoconfirmed:move=autoconfirmed'
NOTA. Això en la versió 1.17 no s'hauria de fer així o s'hauria de fer d'una altra manera. (Potser ja ho tinc ben configurat per defecte).