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'

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).

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines