divendres, de desembre 29, 2006

L'IIS, el "ASPMaxRequestEntityAllowed" i les modificacions a la MetaBase

L'IIS per defecte només permet POSTS en ASP de 200 Kbytes... si es supera aquest tamany dóna l'error "Request object error 'ASP 0104 : 80004005' Operación no Permitida". La solució és augmentar el Paràmetre de configuració ASPMaxRequestEntityAllowed del IIS, augmentant-ne el valor fins al tamany desitjat, a dins de la metabase.xml (arxiu situat en el meu cas a c:\windows\system32\inetsrv) .
Per exemple, un valor de 134217728 serien 128 Megues...

Quan cal tocar la MetaBase del IIS es pot fer de vàries maneres, o bé directament o com la solució que proposen als Kb de Microsoft tot fent servir els "Adminscripts". (en aquest cas seria algo com x:\>script adsutil.vbs set w3svc/ASPMaxRequestEntityAllowed 134217728 )

El problema pot venir si es toca la Metabase directament, i no s'ha marcat primer al IIS "Habilitar la modificación directa de archivos de metabase"...


El procediment per la modificació directa seria habilitar això i parar els Serveis del IIS, tal i com s'explica aquí.

Si pel contrari ens deixem el 1er per pas... els serveis de IIS no tornaran a arrancar, i es comencen a veure errors al visor de successos com aquest:


i també l'error Id 7025 del "Service Control Manager" idicant que "El servicio Servicio de administración IIS terminó con el error específico de servicio 2149648394 (0x8021080A)."

¿ Socorro?

No necessariament és un desastre, ja que la "salvació" no és díficil...
Normalment dins de "c:\windows\system32\inetsrv\history" s'hi trobaràn còpies de seguretat i restaurant-ne la més recent se soluciona el problema... (és a dir canviant-li el nom per MetaBase.xml i copiant-ho un directori per sobre)

En fi... cal anar en compte al tocar la Metabase directament...

dimecres, de desembre 27, 2006

Phishing poc creïble

L'altre dia vaig rebre quasi 20 correus Phishing seguits... la cosa és que 20 correus idèntics seguits fan sospitar no? sobretot si el tema hi diu "Es muy importante y obligatorio leer"... és a dir que "t'obliguin" a llegir 20 vegades un correu igual que a dins hi frases com "el problema está resuelta". Tot i que aquests intents són un cúmul de despropòsits, deu haver-hi qui "pica", sinó no ho farien.
En fi, sense comentaris... es tractava d'aquesta onada de Phishing

dimarts, de desembre 26, 2006

Curiós Missatge d'error

Potser no és res d'extraodinari, però fent un Copia-Enganxa (en un Windows XP SP2 en català) de Fitxers m'ha sortit aquest (no vist mai per mi) missatge d'error...

dimecres, d’octubre 18, 2006

Les Coses de l'Exchange 2000

Un servidor Exchange 2K que s'ha apagat malament (el SAI no ha aguantat)

I al reiniciar.... Els "Almacenes de Información" no es monten malgrat que els serveis MsExchangeSA i MsExchangeIS estan funcionant....
mooolt mala senyal :( els usuaris malgrat poder-se connectar per pop3 (els servies pop3, imap estàn en marxa) no poden accedir a la bústia...


Després de mirar a no sé quin lloc web (búsqueda ràpida al google) faig el que recomanen, activar el registre al servidor per MsExchangeSA i MsExchangeIS... me'ls miro i són realment críptics... però efectivament veig a l'intentar montar el Almacen, que MsExchangeIS i ESE donen errors (id 454,id 494 etc aquest últim) així com el MSExchangeSA, que també en dóna un reguitzell amb d'ids...

a tall t'exemple aquest:
Id 9175 MsExchangeSA
Se produjo el siguiente error en la llamada MAPI 'OpenMsgStore': El servidor de Microsoft Exchange no está disponible. Puede que haya problemas de red o que el servidor de Microsoft Exchange esté fuera de servicio por mantenimiento. Error en el proveedor MAPI. Almacén de información de Microsoft Exchange Server Núm. Id.: 8004011d-0526-00000000





o també el críptic error 9518 del MSExchangeIS:



















Després de mirar a can microsoft, aquí , també aquí i aquí (en aquest m'expliquen les diferències entre una Hard i una Soft recovery... ) , m'he fet un mapa de com anava la cosa de recuperar/txequejar/desfragmentar BBDDs d'exchange (els EDBs).

faig les comprovacións que recomanen (amb la eina ESEUTIL):

D:\Exchsrv\mdbdata>C:\Archiv~1\Exchsrvr\BIN\eseutil /k priv1.edb /sg:\exchsrv\mdbdata\priv1.stm

Microsoft(R) Exchange Server(TM) Database Utilities Version 6.0 Copyright (C) Microsoft Corporation 1991-2000. All Rights Reserved. Initiating CHECKSUM mode... Database: priv1.edb
Streaming File: g:\exchsrv\mdbdata\priv1.stm
Temp.
Database: TEMPCHKSUM2080.EDB

File: priv1.edb

Checksum Status (% complete)
0 10 20 30 40 50 60 70 80 90 100
|----|----|----|----|----|----|----|----|----|----|
...................................................
236882 pages seen

0 bad checksums

289 uninitialized pages

0 wrong page numbers
File: g:\exchsrv\mdbdata\priv1.stm
ERROR: database was not shutdown cleanly (dirty shutdown)

Operation terminated with error -550 (JET_errDatabaseDirtyShutdown, Database was not shutdown cleanly. Recovery must fir
st be run to properly complete database operations for the previous shutdown.)
after 33.919 seconds.



o sigui que es tractava d'això!! la BBDD de l'exchange està "bruta"! asseguram-nos'en amb la comanda "eseutil /mh"


D:\Exchsrv\mdbdata>C:\Archiv~1\Exchsrvr\BIN\eseutil /mh priv1.edb

Microsoft(R) Exchange Server(TM) Database Utilities
Version 6.0
Copyright (C) Microsoft Corporation 1991-2000. All Rights Reserved.

Initiating FILE DUMP mode...
Database: priv1.edb

File Type: Database
Format ulMagic: 0x89abcdef
Engine ulMagic: 0x89abcdef
Format ulVersion: 0x620,9
Engine ulVersion: 0x620,9
Created ulVersion: 0x620,9
DB Signature: Create time:03/13/2005 01:15:09 Rand:2596713 Computer:
cbDbPage: 4096
dbtime: 385461673 (0-385461673)
State: Dirty Shutdown
Log Required: 67482-67484
Streaming File: Yes
Shadowed: Yes
Last Objid: 149756
Scrub Dbtime: 0 (0-0)
Scrub Date: 00/00/1900 00:00:00
Repair Count: 0
Repair Date: 00/00/1900 00:00:00
Last Consistent: (0x1079A,1789,100) 10/18/2006 03:20:11
Last Attach: (0x1079A,178A,171) 10/18/2006 05:42:26
Last Detach: (0x0,0,0) 00/00/1900 00:00:00
Dbid: 2
Log Signature: Create time:04/26/2002 15:55:27 Rand:175697309 Computer:
OS Version: (5.0.2195 SP 4)

Previous Full Backup:
Log Gen: 67204-67208 (0x10684-0x10688)
Mark: (0x10686,13A7,4F)
Mark: 10/16/2006 01:50:51

Current Incremental Backup:
Log Gen: 0-0 (0x0-0x0)
Mark: (0x0,0,0)
Mark: 00/00/1900 00:00:00

Current Full Backup:
Log Gen: 0-0 (0x0-0x0)
Mark: (0x0,0,0)
Mark: 00/00/1900 00:00:00

Current snapshot backup:
Log Gen: 0-0 (0x0-0x0)
Mark: (0x0,0,0)
Mark: 00/00/1900 00:00:00

cpgUpgrade55Format: 0
cpgUpgradeFreePages: 0
cpgUpgradeSpaceMapPages: 0

Operation completed successfully in 1.31 seconds.



D'acord doncs..... només cal executar l'ESEUtil per fer un record a partir dels logs de transaccions que estan a mitjes!


D:\Exchsrv\mdbdata>C:\Archiv~1\Exchsrvr\BIN\eseutil /r E00
Microsoft(R) Exchange Server(TM) Database Utilities
Version 6.0 Copyright (C) Microsoft Corporation 1991-2000. All Rights Reserved. Initiating RECOVERY mode... Logfile base name: E00
Log files:

System files:

Performing soft recovery...

Operation terminated with error -1216 (JET_errAttachedDatabaseMismatch, An outstanding database attachment has been dete
cted at the start or end of recovery, but database is missing or does not match attachment info)
after 113.824 seconds.



Oooops! no va.... :(
segueixo llegint la pàgina de microsoft i veig que ho tenen tot previst ! (encara sort....) falta el "/i" per "passar" dels attachment que s'han quedat a mig camí en el moment en que ha petat el server però que ja estaven apuntats al log de transacció (sembla ser...)


D:\Exchsrv\mdbdata>C:\Archiv~1\Exchsrvr\BIN\eseutil /r E00 /i

Microsoft(R) Exchange Server(TM) Database Utilities
Version 6.0
Copyright (C) Microsoft Corporation 1991-2000. All Rights Reserved.

Initiating RECOVERY mode...
Logfile base name: E00
Log files:
System files:

Performing soft recovery...

Operation completed successfully in 124.219 seconds.



i efectivament fa el RECOVERY!!! a veure si el /mh diu que ja no està "bruta"....



D:\Exchsrv\mdbdata>C:\Archiv~1\Exchsrvr\BIN\eseutil /mh priv1.edb

Microsoft(R) Exchange Server(TM) Database Utilities
Version 6.0
Copyright (C) Microsoft Corporation 1991-2000. All Rights Reserved.

Initiating FILE DUMP mode...
Database: priv1.edb

File Type: Database
Format ulMagic: 0x89abcdef
Engine ulMagic: 0x89abcdef
Format ulVersion: 0x620,9
Engine ulVersion: 0x620,9
Created ulVersion: 0x620,9
DB Signature: Create time:03/13/2005 01:15:09 Rand:2596713 Computer:
cbDbPage: 4096
dbtime: 385491527 (0-385491527)
State: Clean Shutdown
Log Required: 0-0
Streaming File: Yes
Shadowed: Yes
Last Objid: 149756
Scrub Dbtime: 0 (0-0)
Scrub Date: 00/00/1900 00:00:00
Repair Count: 0
Repair Date: 00/00/1900 00:00:00
Last Consistent: (0x1079C,1908,1E) 10/18/2006 06:39:58
Last Attach: (0x1079A,178A,171) 10/18/2006 06:37:56
Last Detach: (0x1079C,1908,1E) 10/18/2006 06:39:58
Dbid: 2
Log Signature: Create time:04/26/2002 15:55:27 Rand:175697309 Computer:
OS Version: (5.0.2195 SP 4)

Previous Full Backup:
Log Gen: 67204-67208 (0x10684-0x10688)
Mark: (0x10686,13A7,4F)
Mark: 10/16/2006 01:50:51

Current Incremental Backup:
Log Gen: 0-0 (0x0-0x0)
Mark: (0x0,0,0)
Mark: 00/00/1900 00:00:00

Current Full Backup:
Log Gen: 0-0 (0x0-0x0)
Mark: (0x0,0,0)
Mark: 00/00/1900 00:00:00

Current snapshot backup:
Log Gen: 0-0 (0x0-0x0)
Mark: (0x0,0,0)
Mark: 00/00/1900 00:00:00

cpgUpgrade55Format: 0
cpgUpgradeFreePages: 0
cpgUpgradeSpaceMapPages: 0

Operation completed successfully in 1.32 seconds.



Yepes! victòria de l'hom sobre la màquina!...

2 minuts més tard, el Exchange ja és capaç de montar de nou els "Almacenes de informacion" i aquí no ha passat res.

dijous, de juliol 20, 2006

Coses de l'Apache

Fent un canvi de cinfiguració de l'apache (a /etc/httpd/conf/httpd.conf) que l'he volgut otrnar a posar en marxa (amb , per exemple #apachectl start)

Em donava l'error
"[emerg] (28)No space left on device: Couldn't create accept lock
or
[crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock Configuration Failed"

i esclar al primer moment he sintit un lleuger esglai...
però res.. la cosa deu ser menor... 1er cal assegurar-me de que els canvis al httpd.conf eren correctes....
#apachectl configtest
retrona "Syntax OK"... d'acord no és això...

deu ser que falta espai, tal com diu?
#df -h
retorna moooolt d'epai lliure per totes les unitats....

o sigui que després de buscar una mica (no massa tampoc) pel google he trobat la solució:

es tracta de la matrius d'estructures ipc (de semàfors) que s'ha deixar l'apache a l'apagar-se... amb:
#ipcs -s | grep usuari_httpd
llista algo:
"------ Matrices semáforo -------
key semid propietario perms nsems
0x00000000 65536 apache 600 1
0x00000000 98305 apache 600 1 "
.... amb unes 200 linees més...

o sigui que sí... només cal eliminarles:
#ipcs -s | grep usuari_httpd| perl -e 'while () { @a=split(/\s+/); print `ipcrm sem $a[1]`}'



i efectivament, l'apache arrenca!
# /etc/init.d/httpd start
" [ OK ]"

divendres, de juny 09, 2006

Exemple de Codi Javascript AJAX

Exemple de funció java que aniria al ONCLICK per fer una consulta AJAX:

function consulta_select(URLBASE,TAULA,CAMPTORNA,
CNTRLPOSA,WHERE,CONTROLINFORMA,TXTINFORMA)
{

//Descomentar la següent per veure l'XML que retorna la consulta
//document.location.href=_
URLBASE+'lib/consulta_select_xml.asp?pTAULA='_
+TAULA+'&pCAMPTORNA='_
+CAMPTORNA+'&pCONTROLPOSA='+CONTROLPOSA+'&pWHERE='+WHERE_


ct2=CONTROLINFORMA;
html_ct2=document.getElementById(ct2).innerHTML;
document.getElementById(ct2).innerHTML="[ Calculando "+TXTINFORMA+" ]";

//Firefox

if (window.XMLHttpRequest)
{
xmlhttp2=new XMLHttpRequest();
xmlhttp2.onreadystatechange=xmlhttpChange_SELECT;
try {
var URL_TMP=
'lib/consulta_select_xml.asp';

var URL_PARAMS='?pTAULA='+TAULA+'&pCAMPTORNA='+CAMPTORNA+_
'&pCNTRLPOSA='+CONTROLPOSA+'&pWHERE='+WHERE;


xmlhttp2.open("GET",URLBASE+URL_TMP+
URL_PARAMS,true); } catch (e) {
alert(e);
}
xmlhttp2.send(null);
}
//IE
else if (window.ActiveXObject)
{
xmlhttp2=new ActiveXObject("Microsoft.XMLHTTP")
if (xmlhttp2)
{
var URL_TMP='lib/consulta_select_xml.asp';
var URL_PARAMS='?pTAULA='+TAULA+'&pCAMPTORNA='+CAMPTORNA+_
'&pCNTRLPOSA='+CONTROLPOSA+'&pWHERE='+WHERE;

xmlhttp2.onreadystatechange=xmlhttpChange_SELECT;
xmlhttp2.open("GET",URLBASE+
URL_TMP+URL_PARAMS,true);
xmlhttp2.send();
}
}
}

Faltaria xmlhttpChange_SELECT i acabar d'expliar aquesta...