ayuda plesk : error al borrar un dominio

Un error que sigue apareciendo aunque pasen versiones y versiones de Plesk ( desde la 7.4 a la 9.2 ) es la perdida de integridad referencial en algunas tablas. Esto provoca que a la hora de ejectuar algunas herramientas y falten datos se generen errores. En ese caso al borrar el dominio ‘delete.me’ nos aparece este mensaje :

0: class.MailManager.php:242
        MailManager::execWithException(string 'smart_exec', string 'mailmng', array, array, string 'lst')
1: class.MailManager.php:274
        MailManager->callMailManager(string 'remove-mailname', array)
2: class.MailManager.php:354
        MailManager->removeMailname(string 'sharoj.com', string 'delete')
3: cmd_mail.php3:1357
        mn_del(string '490')
4: class.DSMail.php:211
        DSMail->delete(boolean false)
5: class.PhDomain.php:358
        PhDomain->reset(integer '0', boolean true, boolean false)
6: class.BsDomain.php:330
        BsDomain->reset(integer '0')
7: class.BsDomain.php:302
      BsDomain->delete(integer '0')
8: class.BsDomain.php:536
        mdeleteDomains(array)
9: removeDomains.php3:42
        require(string '/opt/psa/admin/htdocs/domains/removeDomains.php3')
10: plesk.php:51

Tendremos que buscar manualmente donde está el problema y repararlo , directamente a la base de datos.

Comenzamos a buscar relaciones rotas entre objetos:

# mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 152938
Server version: 5.0.32-Debian_7etch10-log Debian etch distribution

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
  

mysql> select id, name from domains where name = "delete.me";
+------+------------+
| id   | name       |
+------+------------+
| 1241 | delete.me  | 
+------+------------+
1 row in set (0.00 sec)

Ya tenemos el ID del dominio, nos centramos en las cuentas de correo ya que el error se genera al borrar cuentas de correo. Vamos a ver que tablas hay en esta version de Plesk ( 9.2.3 )

mysql> show tables like '%mail%' ;
+------------------------+
| Tables_in_psa (%mail%) |
+------------------------+
| Webmails               | 
| badmailfrom            | 
| mail                   | 
| mail_aliases           | 
| mail_redir             | 
| mail_resp              | 
| mass_mail              | 
| mass_mail_clients      | 
| mass_mail_domains      | 
+------------------------+
9 rows in set (0.00 sec)

La tabla que nos interesa es mail vamos a ver que esctructura tiene y vamos sacando datos:

mysql> desc mail ;
+---------------+------------------------------------------+------+-----+---------+----------------+
| Field         | Type                                     | Null | Key | Default | Extra          |
+---------------+------------------------------------------+------+-----+---------+----------------+
| id            | int(10) unsigned                         | NO   | PRI | NULL    | auto_increment | 
| mail_name     | varchar(245)                             | NO   |     |         |                | 
| perm_id       | int(10) unsigned                         | NO   | MUL |         |                | 
| postbox       | enum('false','true')                     | NO   |     | false   |                | 
| account_id    | int(10) unsigned                         | NO   | MUL |         |                | 
| redirect      | enum('false','true')                     | NO   |     | false   |                | 
| redir_addr    | varchar(255)                             | YES  |     | NULL    |                | 
| mail_group    | enum('false','true')                     | NO   |     | false   |                | 
| autoresponder | enum('false','true')                     | NO   |     | false   |                | 
| spamfilter    | enum('false','true')                     | NO   |     | true    |                | 
| virusfilter   | enum('none','incoming','outgoing','any') | NO   |     | none    |                | 
| mbox_quota    | bigint(20)                               | NO   |     | -1      |                | 
| dom_id        | int(10) unsigned                         | NO   | MUL |         |                | 
+---------------+------------------------------------------+------+-----+---------+----------------+
13 rows in set (0.01 sec)

mysql> select * from mail where dom_id = 1241; 
+-----+-----------+---------+---------+------------+----------+------------+------------+---------------+------------+-------------+------------+--------+
| id  | mail_name | perm_id | postbox | account_id | redirect | redir_addr | mail_group | autoresponder | spamfilter | virusfilter | mbox_quota | dom_id |
+-----+-----------+---------+---------+------------+----------+------------+------------+---------------+------------+-------------+------------+--------+
| 490 | delete.me |    2202 | true    |       2204 | false    |            | false      | false         | false      | incoming    |         -1 |   1241 | 
+-----+-----------+---------+---------+------------+----------+------------+------------+---------------+------------+-------------+------------+--------+
1 row in set (0.00 sec)

Vemos que tiene al menos una cuenta de correo para el usuario 2204, vamos a buscar este usuario en la tabla accounts, ya que el id es accounts_id

mysql> show tables like '%acco%'
    -> ;
+------------------------+
| Tables_in_psa (%acco%) |
+------------------------+
| accounts               | 
+------------------------+
1 row in set (0.00 sec)

mysql> select * from accounts where id = 2204 ;
Empty set (0.01 sec)

Pues no está, aquí tenemos el problema, no existe la información del usuario pero sí el buzón.
lo más comodo es borar la entrada en la base de datos de la cuenta de correo. Dado que vamos a borrar el dominio nos es indiferente conservarlo.

mysql> delete from mail where id =490 limit 1 ;
Query OK, 1 row affected (0.03 sec)

De otra forma , habíamos dado de alta una fila en accounts con el id 2204 .

Notas sobre ALSA

# cat /proc/asound/cards
0 [CX8811         ]: CX88x – Conexant CX8811
Conexant CX8811 at 0xeb000000
1 [ICH5           ]: ICH4 – Intel ICH5
Intel ICH5 with ALC850 at irq 21

pcm.!default {
type hw
card ICH5
}
ctl.!default {
type hw
card ICH5
}

Instalar 3com usb 3cp4218 con Linux

Instalar 3com usb 3cp4218 con Linux

/* version del doc: 1.0 25 de noviembre de 2002 */
/* autor : jorge senin */

*Como Instalar mi modem 3Com ADSL USB cp4218:

1.- Mi sistema a la hora de realizar la instalación:

Procesador AMD K6-2 450 Mhz :
uname -p
i586

Kernel :
uname -r
2.4.19-16mdk

Chip USB :
lspci -v | grep USB
USB Controller: Acer Laboratories Inc. [ALi] USB 1.1 Controller (rev 03) (prog-if 10 [OHCI])
( es una placa IWILL XA 100+ PLUS)

Version del compilador GCC :
gcc –version
gcc (GCC) 3.2 (Mandrake Linux 9.0 3.2-1mdk)

Proveedor : Retevision ( PPPoATM ) / splitter

Sistema opertivo : Mandrake 9.0

2.- Ficheros necesarios :

driver : www.soureforge.net/projects/cp4218
el ultimo es :
3cp4218-2002-09-16-src.tgz -> codigo fuente
3cp4218-2002-09-16-bin.tgz -> plataformas i686
3cp4218-2002-09-16-bin-586.tgz -> plataformas i586 (k6 y pentium viejos )

linux-atm :
www.sourceforge.net/linux-atm

el ultimo es :
linux-atm-2.4.0-1.i386.rpm

y por ultimo el ppp:
Si quieres de la misma pagina del driver lo puedes bajar el :
ppp-2.4.1.pppoe2-pppoatm.tar.gz

y si no de algun mirror de plf Pinguin Liberation Front.
te bajas el ppp-2.4.1 y vale solo hay que modificar el nombre del directorio
por que lo ponen como /usr/lib/pppd/2.4.1/ en vez de /usr/lib/pppd/plugins.

Luego es optativo el fichero options.
Lo puedes encontrar en la pagina de davidlazaro.eresmas.net
O lo puedes crear a mano leyendo la documentación que acompaña al driver.

3.- Pasos a seguir :

Copiamos los ficheros necesarios en nuestro caso los correspondientes a las fuentes ppp y
al driver :

cp 3cp4218-2002-09-16-src.tgz /usr
cp options.ppp /usr
cp ppp-2.4.1.pppoe2-pppoatm.tar.gz /usr

descomprimimos

cd /usr
tar zxvf 3cp4218-2002-09-16-src.tgz
tar ppp-2.4.1.pppoe2-pppoatm.tar.gz
( el options.ppp luego lo usaremos )

deberemos haber ejecutado al menos una vez el menu de configuración
del kernel para poder compilar bien el driver.
Basta con:

cd /usr/src/linux
make menuconfig

darle a guardar y salir

ahora compilamos el driver
cd /usr/3cp428
make
make install

Aqui si no tenemos instaladas las librerias libglade0-devel y sus
correspondientes paquetes necesarios nos dara
un monton de errores de gtk eso es por que construlle un panel
de configuracion y otro de monitor de estado.

No pasa nada si falla este punto por que si llega hasta aqui nos
habró compilado el driver.

Vale ya tenemos el driver instalado ahora el ppp.

Deinstalamos el ppp que tengamos
rpm –erase –nodeps ppp-2.4.1
esto en mi caso

Hacemos lo mismo con el ppp.

cd /usr/ppp-2.4.1.pppoe2-pppoatm
./configure
make
make install

Si aparece un error como este :

gcc -o pppoatm.so -shared -g -O2 -I.. -I../../include -D_linux_=1 -fPIC pppoatm.c
pppoatm.c:33:17: atm.h: No such file or directory
In file included from /usr/include/linux/atmdev.h:12,
from pppoatm.c:34:
/usr/include/linux/atm.h:211: parse error before “uint32_t”
/usr/include/linux/atm.h:213: parse error before ‘}’ token
/usr/include/linux/atm.h:217: parameter `addr’ has incomplete type
pppoatm.c: In function `setdevname_pppoatm’:
pppoatm.c:196: `T2A_PVC’ undeclared (first use in this function)
pppoatm.c:196: (Each undeclared identifier is reported only once
pppoatm.c:196: for each function it appears in.)
pppoatm.c:196: `T2A_NAME’ undeclared (first use in this function)
make: *** [pppoatm.so] Error 1

Es por que falta instalar el linux-atm.
Lo podemos obtener de :

http://sourceforge.net/project/showfiles.phpógroup_id=7812

cp linux-atm-2.4.0-1.i386.rpm /usr
cd /usr
rpm –install linux-atm-2.4.0-1.i386.rpm

y volvemos a hacer el make

cd /usr/ppp-2.4.1.pppoe2-pppoatm
make

Si queremos instalar esto en Mandrake 8.2 ver otro post del foro
del driver en el cual se comenta como instalarlo con Mandrake 8.2 ( ppp-2.4.1)

Ya tenemos instalado el ppp ahora lo configuramosEditamos el fichero options
vi /usr/options
en donde pone user ponemos el usuario
que tenemos nostros sin comillas ni nada
y si no tenemos usuario ponemos any.

Lo copiamos a su ubicación
cp /usr/ppp/options /etc/ppp/options

Solo falta por ahora el fichero donde pondremos
la password de la conexion.

vamos y editamos el chap, y el pap si considera necesario
para mi caso solo es necesario el chap:

cd /etc/ppp
vi chap-secrets

ponemos dentro
rtXXXXXXX * contraseña *
donde rtXXXXXXX el usuario que tengamos y si no hay poner any.
y contraseóa la contraseóa, si tampoco tenemos poner any.

Si hemos compilado el panel pondremos:
3cconfig
y aparecera un panel facilmente configurable.
Si no debermos editar el fichero /etc/cp4218
y seleccionar las opciones correctas.

Las dns hay que introducirlas si no es con el 3cconfig
las pondremos a mano introduciendo en el fichero /etc/resolv.conf
lo siguiente:

nameserver 62.81.16.129
nameserver 62.81.0.33

que son las dns primaria y secundaria de Retevisión (ojo).

a continuacion y como root escribimos
3cstart.sh y cargaró todo.
Se puede cargar tambien con 3cload.sh y luego 3cnet2up.sh

Si al cargar te sale algo como esto :

Nov 24 13:39:10 localhost pppd[1383]: Couldn’t load plugin /usr/lib/pppd/2.4.1/pppoatm.so
Nov 24 13:39:26 localhost pppd[1386]: Plugin /usr/lib/pppd/2.4.1/pppoatm.so loaded.

Es por que no esta cargando bien la libreria ppp.
Para solucionarlo :

editar el /etc/ld.so.conf
aóadir la linea /usr/local/lib
y dentro del directorio /etc
ejecutar : ldconfig

y funciona.

Si no todo estó cargado correctamente y no funciona lo imprescidible son dos cosas:
– poner el driver en modo debug
– poner en /etc/ppp/options una lina al principio que ponga debug

Con estas dos cosas luego hay que mirar el /var/log/messages y /var/log/syslog
póstead eso en el foro del driver junto con los pasos que habeis seguido.

Si todo esta bien y no funciona ningón ping
hacer un ifconfig y si aparece algo como esto :

ppp0 Link encap:Point-to-Point Protocol
inet addr:80.224.97.232 P-t-P:62.81.124.194 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:406 errors:0 dropped:0 overruns:0 frame:0
TX packets:353 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:199887 (195.2 Kb) TX bytes:39881 (38.9 Kb)

Donde ppp0 puede ser ppp1,ppp2….
y no funciona poned :
route add default ppp0
( o el ppp que salga en ifconfig)

Si apararece en /var/log/syslog habiendo puesto debug en /etc/ppp/options :

Nov 25 03:12:12 senin pppd[2234]: Plugin /usr/lib/pppd/2.4.1/pppoatm.so loaded.
Nov 25 03:12:12 senin pppd[2234]: PPPoATM plugin_init
Nov 25 03:12:12 senin pppd[2234]: PPPoATM setdevname – remove unwanted options
Nov 25 03:12:12 senin pppd[2234]: PPPoATM setdevname_pppoatm – SUCCESS:8.35
Nov 25 03:12:13 senin pppd[2235]: pppd 2.4.1 started by root, uid 0
Nov 25 03:12:13 senin pppd[2235]: using channel 4
Nov 25 03:12:13 senin kernel: atm_connect (TX: cl 1,bw 0-0,sdu 16386; RX: cl 1,bw 0-0,sdu 1502,AAL 5)
Nov 25 03:12:13 senin pppd[2235]: Using interface ppp0
Nov 25 03:12:13 senin pppd[2235]: Connect: ppp0 <–> 8.35
Nov 25 03:12:13 senin pppd[2235]: sent [LCP ConfReq id=0x1 ]
Nov 25 03:12:13 senin pppd[2235]: rcvd [LCP ConfReq id=0xf1 ]
Nov 25 03:12:13 senin pppd[2235]: sent [LCP ConfRej id=0xf1 ]
Nov 25 03:12:13 senin pppd[2235]: rcvd [LCP ConfAck id=0x1 ]
Nov 25 03:12:13 senin pppd[2235]: rcvd [LCP ConfReq id=0xf2 ]
Nov 25 03:12:13 senin pppd[2235]: sent [LCP ConfRej id=0xf2 ]
Nov 25 03:12:13 senin /etc/hotplug/net.agent: assuming ppp0 is already up
Nov 25 03:12:13 senin pppd[2235]: rcvd [LCP ConfReq id=0xf3 ]
Nov 25 03:12:13 senin pppd[2235]: sent [LCP ConfRej id=0xf3 ]
Nov 25 03:12:13 senin pppd[2235]: rcvd [LCP ConfReq id=0xf4 ]
Nov 25 03:12:13 senin pppd[2235]: sent [LCP ConfRej id=0xf4 ]
Nov 25 03:12:13 senin pppd[2235]: rcvd [LCP ConfReq id=0xf5 ]
Nov 25 03:12:13 senin pppd[2235]: sent [LCP ConfRej id=0xf5 ]
Nov 25 03:12:13 senin pppd[2235]: rcvd [LCP ConfReq id=0xf6 ]
Nov 25 03:12:13 senin pppd[2235]: sent [LCP ConfRej id=0xf6 ]
Nov 25 03:12:13 senin pppd[2235]: rcvd [LCP ConfReq id=0xf7 ]
Nov 25 03:12:13 senin pppd[2235]: sent [LCP ConfRej id=0xf7 ]
Nov 25 03:12:13 senin pppd[2235]: rcvd [LCP ConfReq id=0xf8 ]
Nov 25 03:12:13 senin pppd[2235]: sent [LCP ConfRej id=0xf8 ]
Nov 25 03:12:13 senin pppd[2235]: rcvd [LCP ConfReq id=0xf9 ]
Nov 25 03:12:13 senin pppd[2235]: sent [LCP ConfRej id=0xf9 ]
Nov 25 03:12:13 senin pppd[2235]: rcvd [LCP ConfReq id=0xfa ]
Nov 25 03:12:13 senin pppd[2235]: sent [LCP ConfRej id=0xfa ]
Nov 25 03:12:13 senin pppd[2235]: rcvd [LCP TermReq id=0xfb]
Nov 25 03:12:13 senin pppd[2235]: sent [LCP TermAck id=0xfb]

Todo esto y se repite hasta el fin….
Es debido a que en el fichero options no has puesto bien el nombre de usuario
en el apartado user o name , recuerda que estos dos apartados va el nombre
de usuario y no usuario y contraseóa.
La contraseóa la busca en /etc/ppp/chap-secrets o /etc/ppp/pap-secrets.
En mi caso es el primero y recuerda que debe de ser
usuario * contraseóa *

Como nota explico este fallo del ppp.
El ppp intenta conectarse como no encuentra usuario en el /etc/options o no
encuentra correspondencia en los ficheros secrets, intenta identificarse
con otro protocolo que no sea ni pap ni chap por lo cual esta rechazando
la conexion todo el rato y a la vez pidiendo conexion.

Un error de core dumped es debido a que los ficheros bin que has intalado
no son compatibles con tu procesador, por lo cual deberas bajarte los fuentes u otros
compilados con tu mismo tipo de procesador.

El error de ioctl -1 es debido a que no carga el modem o el driver
con las ultimas versiones del driver no deberóa de dar problemas al instalarlo.

Al cargar el driver da un ‘tainted kernel’ da igual no pasa nada, solo te
esta avisando de que estó compilado con una versión diferente a la de tu kernel
pero carga igual y funciona.

Creo que hasta aquó esta comentado todo lo que me ha sucedido.

/* un saludo */

error resolving source: libnet_get_ipaddr4(): ioctl(): Cannot assign requested address

Traceando protocolo aparece este error :

[shell]
traceproto -p tcp 192.168.1.1
error resolving source: libnet_get_ipaddr4(): ioctl(): Cannot assign requested address
[/shell]

Es debido a que no hay ip o que no hemos especificado el interface que debe tracear. Por defecto elige el primer interface disponible.

En mi caso saliendo por wifi habría que definir el trace por ‘wlan0’
[shell]
# traceproto -p tcp -F wlan0 192.168.1.1
traceproto: trace to 192.168.1.1 (192.168.1.1), port 80
using interface wlan0
ttl 1: TCP Syn Ack from 192.168.1.1 (192.168.1.1)
8.3820 ms 0.95900 ms 0.72100 ms

hop : min / ave / max : # packets : # lost
——————————————————-
1 : 0.72100 / 3.3540 / 8.3820 : 3 packets : 0 lost
————————Total————————–
total 0.72100 / 2.5155 / 8.3820 : 3 packets : 0 lost
[/shell]

He migrado mi web y ahora no me salen los acentos !!!

Suele ocurrir cuando migramos de un sistema a otro que el juego de caracteres del sistema no es el mismo. Esto unido a que la mayoría de los no profesionales ni saben ni les interesa codificar sus webs correctamente genera horror y caos tras una migración.

Frases célebres :

  • me han hackeado la web, las eñes (ñ) no salen
  • no salen los acentos, arreglamelo
  • algo pasa con el office que me salen símbolos en vez de tildes , eñes y exclamaciones.
  • y la mítica de no me funciona internet…

Para evitar que esta tortura se dilate en el tiempo tengo un copy paste bastante elegante que ahorra tiempo:

cd /var/www/vhosts/tudominio.ext/httpdocs
alias cp='cp'

for file in $( find -name "*.htm*" ); do echo "convirtiendo $file.."; cat $file |iconv -flatin1 -t utf8> ../tmp.htm; cp ../tmp.htm $file ; done ;

rm -f ../tmp.htm

Basicamente convertimos todos los ficheros de latin1 a utf8 usando un fichero temporal fuera del httpdocs para que no nos convierta el propio fichero temporal.

RECOMENDACIÓN:
Elegir un fichero, hacer el iconv a mano y ver que aparece correctamente en el explorador ya que apache también puede estar configurado para usar por defecto un juego de caracteres u otro. O que el cambio no sea de latin1 a utf8 sino al revés. Eso ya es cosa vuestra.

install: cannot stat `nls/af.gmo’: No such file or directory

Estoy generando un rpm para sysstats desde el codigo fuente en http://pagesperso-orange.fr/sebastien.godard/sysstat-9.0.6.tar.gz . El caso es que CentOS no dispone de ‘pidstat'( muy útil para analizar post-morten o in-morten que proceso nos está molestando).

El caso es que he seguido estos pasos:
[shell]
yum install gcc make rpm-build
cd /usr/src
wget http://pagesperso-orange.fr/sebastien.godard/sysstat-9.0.6.tar.gz
tar zxvf sysstat-9.0.6.tar.gz sysstat-9.0.6/sysstat-9.0.6.spec
cp sysstat-9.0.6.tar.gz /usr/src/redhat/SOURCES/sysstat-9.0.6.tar.gz
rpmbuild -bb sysstat-9.0.6/sysstat-9.0.6.spec
[/shell]

y la compilación fallaba con estas últimas lineas:
[shell]
install -m 644 nls/af.gmo /var/tmp/sysstat-9.0.6-root-root/usr/share/locale/af/LC_MESSAGES/sysstat.mo
install: cannot stat `nls/af.gmo’: No such file or directory
make: *** [install_nls] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.94933 (%install)
[/shell]

Algo fallaba, y algo me faltaba por instalar… asi echando un vistazo al log del configure encontré esto:

[shell]
WARNING: msgfmt command not found!
WARNING: xgettext command not found!
WARNING: msgmerge command not found!
[/shell]

Pues ahí lo llevas primo, eso va a ser, vamos a ver en que paquete está:
[shell]
# yum provides */msgfmt
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: ftp.cica.es
* base: ftp.cica.es
* updates: ftp.cica.es
Excluding Packages from CentOS-Plesk – Base
Finished
gettext-0.14.6-4.el5.i386 : GNU libraries and utilities for producing multi-lingual messages.
Repo : base
Matched from:
Filename : /usr/bin/msgfmt

gettext-0.14.6-4.el5.x86_64 : GNU libraries and utilities for producing multi-lingual messages.
Repo : base
Matched from:
Filename : /usr/bin/msgfmt

gettext-0.14.6-4.el5.x86_64 : GNU libraries and utilities for producing multi-lingual messages.
Repo : installed
Matched from:
Filename : /usr/bin/msgfmt

gettext-0.14.6-4.el5.i386 : GNU libraries and utilities for producing multi-lingual messages.
Repo : installed
Matched from:
Filename : /usr/bin/msgfmt
[/shell]

Pues nada, vamos a instalarlo
[shell]
yum install gettext
[/shell]

Le damos otra vez a generar el rpm
[shell]
rpmbuild -bb sysstat-9.0.6/sysstat-9.0.6.spec
[/shell]

y ahora si tenemos ya nuestro rpm listo para instalar
[shell]
rpm -ivh /usr/src/redhat/RPMS/x86_64/sysstat-9.0.6-1.x86_64.rpm
[/shell]

captcha

Despues de muchos años con los comentarios en los posts bloqueados, he decidido a poner un captcha y dejar los comentarios abiertos. El captcha es feo pero esperemos que funcione

Agrengando lenguaje Vasco al webmail de Plesk: Horde

Un requisito relativamente fácil como puede ser agregar un idioma a Horde ( gestor de mail vía web y software libre ) puede complicarse al tener que realizarlo en un entorno paquetizado y cerrdado como es Plesk. El problema de modificar este componente ( u otros de Plesk ) es que futuras versiones o parches de Plesk puedes modificar o machacar nuestros cambios. Además de no conocer el impacto real de nuestras modificaciones.

Desde el soporte de Parallels nos han indicado que no existe problema en agregar un nuevo lenguaje a Plesk y nos indican la guia de instalacion de idiomas en Horde http://www.horde.org/horde/docs/?f=po_README.html

Primero verificamos que version tenemos de Horde instalada. Vamos a intentar siempre usar las mismas versiones para quitarnos de problemas

# rpm -qa | grep horde
psa-horde-3.1.7-cos5.build92090714.19

Creamos el directorio para preparar la compilacion de los idiomas ( hay que generar los .mo a partir de ficheros .po )

mkdir -p /usr/src/horde
cd /usr/src/horde

Nos bajamos nuestra versión de horde:

wget http://ftp.horde.org/pub/horde/horde-3.1.7.tar.gz
tar zxvf horde-3.1.7.tar.gz

Ahora nos bajamos por separado los ficheros .po del cvs y que no están en la distribucion 3.1.7.
Es muy importante no mezclar ficheros de distribuciones para evitar problemas. La estructura de directorios se almacenará en el directorio ‘horde’

export CVSROOT=:pserver:cvsread@anoncvs.horde.org:/repository
cvs login
# password: horde
# cvs co horde/po/ horde/locale horde/lib/core.php
cvs co horde/po/ horde/locale 

Como solo queremos los ficheros de cadenas, mezclar phps de distinas versiones nos dará errores de clases no encontradas

cp -r horde/po/*_* horde-3.1.7/po/
cp -r horde/locale/*_* horde-3.1.7/locale/

Tenemos algunos requistios que se pueden leer en el fichero REAME.

cd /usr/src/horde-po
wget http://download.pear.php.net/package/File_Find-1.3.0.tgz
wget http://download.pear.php.net/package/Console_Table-1.1.3.tgz

mkdir -p pear/Console
mkdir -p pear/File

tar zxvf File_Find-1.3.0.tgz -C pear/File/ *Find.php
mv pear/File/File_Find-1.3.0/Find.php pear/File/

tar zxvf Console_Table-1.1.3.tgz -C pear/Console/ *Table.php
mv pear/Console/Console_Table-1.1.3/* pear/Console/

También necesitamos la herramienta gettext al menos la version 0.12

yum install gettext

Dado que ejecutamos php con la configuracion de Plesk estamos limitados a la ejecución de comandos bajo safe_mode. En la cabecera de translator.php, agregamos las rutas necesarias ( include_path ) y con php -n hacemos que no cargue el /etc/php.ini para saltarnos el safe_mode

#!/usr/bin/php -qn

Ahora generamos los ficheros:

./translator.php make 

Copiamos los ficheros de cadenas a nuestra ubicación de la instalación de Plesk. Cuidado, no copiar ningún php de la rama del cvs a nuestra rama estable.

cp /usr/src/horde/horde-3.1.7/locale/* /usr/share/psa-horde/locale/

Por último editar la configuracón de horde de plesk para que aparezca el nuevo idioma disponible:

/etc/psa/webmail/horde/horde/nls.php
$nls['languages']['eu_ES'] = 'Euskera';

Aún no he tenido la oportunidad de problarlo pero casi seguro que con alguna alguna actualización, machaca este fichero y hay que volver a editarlo para agregar el idioma.

phpBB 3.x forums config.php sample file

Hoy he necesitado este ejemplo de fichero de configuración para un foro phpBB3. Me ha ahorrado tiempo y espero que ayude a alguien más.

El caso practico ha sido restarurar un foro phpBB 2 con solo un volcado de mysql y migrarlo a phpBB 3, despues de actualizar a la ultima version me cargué el fichero config.php