Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

325 lines
10 KiB

var g_objFileSystem = null;
var g_nTotalDialog = 0;
var g_nTotalWeb = 0;
// The file is located in %Windir%\system32\LogFiles\W3SVC1\extend<xx>.log
function DebugSquirt(strText, fClear)
{
if (true == fClear)
{
document.all.idStatus2.innerText = "";
}
document.all.idStatus2.innerText += strText;
}
function MyOnLoad()
{
g_objFileSystem = new ActiveXObject("Scripting.FileSystemObject");
var objfolder = g_objFileSystem.GetSpecialFolder(1 /* %windir%\system32\ */);
var strPath = objfolder.Path;
strPath += "\\LogFiles\\W3SVC1\\extend";
var nExists = 1;
// Find the last
while (true == g_objFileSystem.FileExists(strPath + (1 + nExists) + ".log"))
{
// alert("CHecking for: " + strPath + (1 + nExists) + ".log");
nExists++;
}
strPath += (nExists + ".log");
// alert("strPath " + strPath);
document.all.idPath.value = strPath;
if (null != g_objFileSystem)
{
GetAllStatsFromPath(strPath);
}
}
function GetAllStatsFromPath(strIISLog)
{
g_nTotalDialog = 0;
g_nTotalWeb = 0;
document.all.idStatus.innerText = "Please wait while loading the statistics...";
GetStatsFromPath(strIISLog, "/fileassoc/fileassoc.asp", "fileassoc.dialog.log", true); // Generate Results for Dialog
GetStatsFromPath(strIISLog, "/fileassoc/0409/xml/redir.asp", "fileassoc.web.log", false); // Generate Results for Click Thru To Web
}
function GetStatsFromPath(strIISLog, strUrlPath, strLogFile, fDialog)
{
var objDictionary = new ActiveXObject("Scripting.Dictionary");
// alert("strIISLog: " + strIISLog + " strUrlPath: " + strUrlPath);
// try
{
if (g_objFileSystem.FileExists(strIISLog))
{
DebugSquirt("Opening " + strIISLog, false);
var objFile = g_objFileSystem.OpenTextFile(strIISLog, 1, false);
if (null != objFile)
{
var nFieldIndex = -1;
var strToFind = "#Fields:";
var strLine = "";
// Search for the "#Fields:" string
while (!objFile.AtEndOfStream)
{
strLine = objFile.ReadLine();
DebugSquirt("strLine: " + strLine, true);
if (strLine.substring(0, strToFind.length) == strToFind)
{
CalcResults(objFile, objDictionary, GetFieldIndex(strLine, "cs-uri-query"), GetFieldIndex(strLine, "cs-uri-stem"), strUrlPath, fDialog);
}
}
DebugSquirt("Displaying Results", true);
DisplayResults(strLogFile, objDictionary, fDialog);
objFile.Close();
}
}
}
if (0) //catch (objException)
{
alert("EXCEPTION 2: " + objException.description + " LINE: " + objException.line);
throw objException;
}
}
function GetFieldIndex(strLayout, strToken)
{
var nField = -1;
var nParts = strLayout.split(" ");
var nIndex;
// Find the index into strToken.
for (nIndex = 0; nIndex < strLayout.length; nIndex++)
{
if (strToken == nParts[nIndex])
{
nField = (nIndex - 1);
break;
}
}
return nField;
}
function CalcResults(objFile, objDictionary, nField, nFieldPath, strUrlPath, fDialog)
{
var strExtCached = null;
var nExtCountCached = 0;
var nTotal = ((true == fDialog) ? g_nTotalDialog : g_nTotalWeb);
if (-1 != nField)
{
while (!objFile.AtEndOfStream)
{
var strLine = objFile.ReadLine();
if (('#' != strLine.charAt(0)) && ("-" != strLine))
{
var strArray = strLine.split(" ");
if (null != strArray)
{
var strQuery = strArray[nField];
var strTheUrlPath = strArray[nFieldPath];
if ((null != strQuery) && (null != strTheUrlPath) &&
(strUrlPath == strTheUrlPath))
{
var arrayExt = strQuery.split("Ext=");
if ((null != arrayExt) && (0 < arrayExt.length))
{
var strExt = arrayExt[1];
if (null != strExt)
{
try
{
// alert("strExt: " + strExt);
strExt = (strExt.split("&"))[0];
}
catch (objException)
{
alert("Fat cow. strExt: " + strExt);
}
// alert("strQuery: " + strQuery + " strExt: " + strExt);
if ((null != strExt) && ("" != strExt))
{
nTotal++;
if (strExtCached == strExt)
{
nExtCountCached++;
}
else
{
// First save off the cached ext
if (null != strExtCached)
{
// alert("1");
if (objDictionary.Exists(strExtCached))
{
// alert("2a");
objDictionary.Item(strExtCached) = nExtCountCached;
}
else
{
// alert("2b");
objDictionary.Add(strExtCached, nExtCountCached);
}
// alert("3");
}
strExtCached = strExt;
if (objDictionary.Exists(strExt))
{
// alert("4a");
nExtCountCached = objDictionary.Item(strExt);
}
else
{
// alert("4b");
nExtCountCached = 0;
}
// alert("end");
nExtCountCached++;
}
}
}
}
}
} else alert("strArray is null");
}
else
{
// break if we hit a new batch of log entries.
var strToFind = "#Fields:";
if (strLine.substring(0, strToFind.length) == strToFind)
{
break;
}
}
}
// First save off the cached ext
if (null != strExtCached)
{
if (objDictionary.Exists(strExtCached))
{
objDictionary.Item(strExtCached) = nExtCountCached;
}
else
{
objDictionary.Add(strExtCached, nExtCountCached);
}
}
}
else
{
document.all.idStatus.innerText = "ERROR: You need to have IIS include the URI Query (cs-uri-query) in the log file.";
}
if (true == fDialog)
{
g_nTotalDialog = nTotal;
}
else
{
g_nTotalWeb = nTotal;
}
}
function DisplayResults(strLogFile, objDictionary, fDialog)
{
var strUI = "";
var nIndex;
var strKeyArray = (new VBArray(objDictionary.Keys())).toArray();
var strCount;
var objfolder = g_objFileSystem.GetSpecialFolder(1 /* %windir%\system32\ */);
var strPath = (objfolder.Path + "\\" + strLogFile);
var objDataBinding = null;
var objTotalUsers = null;
var nTotal;
if (true == fDialog)
{
objDataBinding = document.all.dsoResults;
objTotalUsers = document.all.idTotalDialogUsers;
nTotal = g_nTotalDialog;
}
else
{
objDataBinding = document.all.dsoResults2;
objTotalUsers = document.all.idTotalWebUsers;
nTotal = g_nTotalWeb;
}
try
{
g_objFileSystem.DeleteFile(strPath);
}
catch (objException)
{
// We don't care if we can't delete it.
}
var objFile = g_objFileSystem.CreateTextFile(strPath, true, false);
objFile.WriteLine("col_Extension:String, col_Number:Int, col_Percent:String");
var strPercent;
var fTotal = (nTotal * 1.0);
objTotalUsers.innerText = nTotal;
if (0 != strKeyArray.length)
{
for (nIndex = 0; nIndex < strKeyArray.length; nIndex++)
{
strCount = objDictionary.Item(strKeyArray[nIndex]);
strPercent = ((strCount / fTotal) * 100.0) + "";
strPercent = strPercent.substring(0, 5) + "%";
objFile.WriteLine(strKeyArray[nIndex] + ", " + strCount + ", " + strPercent);
}
}
else
{
objFile.WriteLine("None, 0, 100.00%");
}
objFile.Close();
objDataBinding.DataURL = strPath;
// document.all.idStatus.innerText = "";
// document.all.idStatus.innerText = objDataBinding.DataURL;
try
{
objDataBinding.Reset();
}
catch (objException)
{
// We don't care if we can't delete it.
document.all.idStatus.innerText += " objDataBinding.Reset() failed";
}
}