Protegir automaticament les pàgines - hack mediawiki

De Wikijoan
Dreceres ràpides: navegació, cerca

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'
Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines