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.
 
 
 
 
 
 

616 lines
17 KiB

<%@ Language=VBScript %>
<% Option Explicit %>
<%
'-------------------------------------------------------------------------
' POP3 Mail Add-in - Domains
' Copyright (C) Microsoft Corporation. All rights reserved.
'-------------------------------------------------------------------------
%>
<!-- #include virtual="/admin/inc_framework.asp" -->
<!-- #include virtual="/admin/ots_main.asp" -->
<!-- #include file="p3cminc.asp" -->
<%
'-------------------------------------------------------------------------
' Global Constants
'-------------------------------------------------------------------------
Dim SOURCE_FILE
SOURCE_FILE = SA_GetScriptFileName()
Const ROWS_PER_PAGE = 100
Const COL_LOCK_ID = 2
'-------------------------------------------------------------------------
' Global Variables
'-------------------------------------------------------------------------
' Sorting variables
Dim g_iSortCol
Dim g_sSortSequence
' Searching variables
Dim g_bSearchChanged
Dim g_iSearchCol
Dim g_sSearchColValue
g_sSearchColValue = ""
' Paging variables
Dim g_bPagingInitialized
Dim g_sPageAction
Dim g_iPageMin
Dim g_iPageMax
Dim g_iPageCurrent
' Other variables
Dim g_page
'----------------------------------------------------------------------
' Global Localized Strings
'----------------------------------------------------------------------
Dim l_strPageTitle
l_strPageTitle = GetLocString(RES_DLL_NAME, _
POP3_PAGETITLE_DOMAINS, _
"")
Dim l_strTableCaption
l_strTableCaption = GetLocString(RES_DLL_NAME, _
POP3_TABLECAPTION_DOMAINS, _
"")
Dim l_strTasks
l_strTasks = GetLocString(RES_DLL_NAME, _
POP3_TASKS, _
"")
' Tasks
Dim l_strTaskNew
l_strTaskNew = GetLocString(RES_DLL_NAME, _
POP3_TASK_DOMAINS_NEW, _
"")
Dim l_strTaskNewCaption
l_strTaskNewCaption = GetLocString(RES_DLL_NAME, _
POP3_TASKCAPTION_DOMAINS_NEW, _
"")
Dim l_strTaskDelete
l_strTaskDelete = GetLocString(RES_DLL_NAME, _
POP3_TASK_DOMAINS_DELETE, _
"")
Dim l_strTaskDeleteCaption
l_strTaskDeleteCaption = GetLocString(RES_DLL_NAME, _
POP3_TASKCAPTION_DOMAINS_DELETE, _
"")
Dim l_strTaskMailboxes
l_strTaskMailboxes = GetLocString(RES_DLL_NAME, _
POP3_TASK_DOMAINS_MAILBOXES, _
"")
Dim l_strTaskMailboxesCaption
l_strTaskMailboxesCaption = GetLocString(RES_DLL_NAME, _
POP3_TASKCAPTION_DOMAINS_MAILBOXES, _
"")
Dim l_strTaskLock
l_strTaskLock = GetLocString(RES_DLL_NAME, _
POP3_TASK_DOMAINS_LOCK, _
"")
Dim l_strTaskLockCaption
l_strTaskLockCaption = GetLocString(RES_DLL_NAME, _
POP3_TASKCAPTION_DOMAINS_LOCK, _
"")
Dim l_strTaskUnlock
l_strTaskUnlock = GetLocString(RES_DLL_NAME, _
POP3_TASK_DOMAINS_UNLOCK, _
"")
Dim l_strTaskUnlockCaption
l_strTaskUnlockCaption = GetLocString(RES_DLL_NAME, _
POP3_TASKCAPTION_DOMAINS_UNLOCK, _
"")
' Column headers
Dim l_strColName
l_strColName = GetLocString(RES_DLL_NAME, _
POP3_COL_DOMAIN_NAME, _
"")
Dim l_strColMailboxes
l_strColMailboxes = GetLocString(RES_DLL_NAME, _
POP3_COL_DOMAIN_MAILBOXES, _
"")
Dim l_strColSize
l_strColSize = GetLocString(RES_DLL_NAME, _
POP3_COL_DOMAIN_SIZE, _
"")
Dim l_strColMessages
l_strColMessages = GetLocString(RES_DLL_NAME, _
POP3_COL_DOMAIN_MESSAGES, _
"")
Dim l_strColLocked
l_strColLocked = GetLocString(RES_DLL_NAME, _
POP3_COL_DOMAIN_LOCKED, _
"")
Dim l_strLockedYes
l_strLockedYes = GetLocString(RES_DLL_NAME, _
POP3_DOMAIN_LOCKED_YES, _
"")
Dim l_strLockedNo
l_strLockedNo = GetLocString(RES_DLL_NAME, _
POP3_DOMAIN_LOCKED_NO, _
"")
Dim l_strUnitMB
l_strUnitMB = GetLocString(RES_DLL_NAME, _
POP3_FACTOR_MB, _
"")
Dim l_strUnitKB
l_strUnitKB = GetLocString(RES_DLL_NAME, _
POP3_FACTOR_KB, _
"")
'**********************************************************************
'* E N T R Y P O I N T
'**********************************************************************
Call SA_CreatePage(l_strPageTitle, "", PT_AREA, g_page)
Call SA_ShowPage (g_page)
'**********************************************************************
'* H E L P E R S U B R O U T I N E S
'**********************************************************************
'----------------------------------------------------------------------
' CreateTasks
'----------------------------------------------------------------------
Sub CreateTasks( _
ByRef table _
)
Call OTS_SetTableTasksTitle(table, l_strTasks)
'
' New
Dim strNewURL
strNewURL = "mail/p3dmnew.asp"
Call SA_MungeURL(strNewURL, "tab1", GetTab1())
Call SA_MungeURL(strNewURL, "tab2", GetTab2())
Call OTS_AddTableTask(table, OTS_CreateTaskEx(l_strTaskNew, _
l_strTaskNewCaption, _
strNewURL,_
OTS_PT_PROPERTY,_
"OTS_TaskAlways"))
'
' Delete
Dim strDeleteURL
strDeleteURL = "mail/p3dmdel.asp"
Call SA_MungeURL(strDeleteURL, "tab1", GetTab1())
Call SA_MungeURL(strDeleteURL, "tab2", GetTab2())
Call OTS_AddTableTask(table, OTS_CreateTaskEx(l_strTaskDelete, _
l_strTaskDeleteCaption, _
strDeleteURL,_
OTS_PT_PROPERTY,_
"OTS_TaskAny"))
'
' Mailboxes
Dim strMailboxesURL
strMailboxesURL = "mail/p3mbgoto.asp"
Call SA_MungeURL(strMailboxesURL, "tab1", GetTab1())
Call SA_MungeURL(strMailboxesURL, "tab2", GetTab2())
Call OTS_AddTableTask(table, OTS_CreateTaskEx(l_strTaskMailboxes, _
l_strTaskMailboxesCaption, _
strMailboxesURL,_
OTS_PT_AREA,_
"OTS_TaskOne"))
'
' Lock
Dim strLockURL
strLockURL = "mail/p3dmlock.asp"
Call SA_MungeURL(strLockURL, "tab1", GetTab1())
Call SA_MungeURL(strLockURL, "tab2", GetTab2())
Call SA_MungeURL(strLockURL, PARAM_LOCKFLAG, LOCKFLAG_LOCK)
Call OTS_AddTableTask(table, OTS_CreateTaskEx(l_strTaskLock, _
l_strTaskLockCaption, _
strLockURL,_
OTS_PT_PROPERTY,_
"SomeDomainsAreUnlocked"))
'
' Unlock
Dim strUnlockURL
strUnlockURL = "mail/p3dmlock.asp"
Call SA_MungeURL(strUnlockURL, "tab1", GetTab1())
Call SA_MungeURL(strUnlockURL, "tab2", GetTab2())
Call SA_MungeURL(strUnlockURL, PARAM_LOCKFLAG, LOCKFLAG_UNLOCK)
Call OTS_AddTableTask(table, OTS_CreateTaskEx(l_strTaskUnlock, _
l_strTaskUnlockCaption, _
strUnlockURL,_
OTS_PT_PROPERTY,_
"SomeDomainsAreLocked"))
End Sub
'---------------------------------------------------------------------
' CreateColumns
'---------------------------------------------------------------------
Sub CreateColumns( _
ByRef table _
)
Dim colFlags
'
' Add the columns
'
colFlags = (OTS_COL_SEARCH OR OTS_COL_SORT OR OTS_COL_KEY)
Call OTS_AddTableColumn(table, OTS_CreateColumnEx(l_strColName, "left", colFlags, 0))
colFlags = (OTS_COL_SORT)
Call OTS_AddTableColumn(table, OTS_CreateColumnEx(l_strColMailboxes, "left nowrap", colFlags, 0))
colFlags = (OTS_COL_SEARCH OR OTS_COL_SORT)
Call OTS_AddTableColumn(table, OTS_CreateColumnEx(l_strColLocked, "left nowrap", colFlags, 0))
colFlags = (OTS_COL_HIDDEN)
Call OTS_AddTableColumn(table, OTS_CreateColumnEx("colRawMailboxes", "", colFlags, 0))
End Sub
'---------------------------------------------------------------------
' FillTable
'---------------------------------------------------------------------
Sub FillTable( _
ByRef table _
)
On Error Resume Next
Err.Clear()
'
' Setup the paging variables
Dim nApplicableRows ' Number of rows we've seen so far that
' meet the search criteria.
nApplicableRows = 0
Dim nRowsAdded ' Number of applicable rows that have
' actually been added to the table.
nRowsAdded = 0
Dim iLowerLimit ' Exclusive
iLowerLimit = ( g_iPageCurrent - 1 ) * ROWS_PER_PAGE
'
' Get the POP3 Config object
Dim oConfig
Set oConfig = Server.CreateObject("P3Admin.P3Config")
If Err.Number <> 0 Then
Call OTS_EnablePaging(table, false)
Exit Sub
End If
'
' Add the domains to the table.
Dim oDomain
Dim row
For Each oDomain In oConfig.Domains
'
' Construct the row
row = ConstructRow(oDomain)
'
' Verify the row meets the search and paging criteria and add it to
' the table.
If (RowMeetsSearchCriteria(row)) Then
nApplicableRows = nApplicableRows + 1
If ( nApplicableRows > iLowerLimit And _
nRowsAdded < ROWS_PER_PAGE ) Then
nRowsAdded = nRowsAdded + 1
Call OTS_AddTableRow(table, row)
End If ' If: The row is on the current page.
End If ' If: The row meets the search criteria.
Next
'
' Configure paging if necessary
If (nApplicableRows > ROWS_PER_PAGE) Then
Call OTS_EnablePaging(table, true)
If (Not g_bPagingInitialized) Then
g_iPageMin = 1
g_iPageMax = Int(nApplicableRows / ROWS_PER_PAGE)
If ((nApplicableRows MOD ROWS_PER_PAGE) > 0) Then
g_iPageMax = g_iPageMax + 1
End If
g_iPageCurrent = 1
Call OTS_SetPagingRange(table, _
g_iPageMin, _
g_iPageMax, _
g_iPageCurrent)
End If
End If
End Sub
'---------------------------------------------------------------------
' RowMeetsSearchCriteria
'---------------------------------------------------------------------
Function RowMeetsSearchCriteria( _
row _
)
If ( g_sSearchColValue = "" ) Then
RowMeetsSearchCriteria = true
Else
Dim posMatch
posMatch = InStr(1, row(g_iSearchCol), g_sSearchColValue, 1)
If ( IsNull(posMatch) Or posMatch = 0 ) Then
RowMeetsSearchCriteria = false
Else
RowMeetsSearchCriteria = true
End If
End If
End Function
'---------------------------------------------------------------------
' ConstructRow
'---------------------------------------------------------------------
Function ConstructRow( _
oDomain _
)
Dim strLock
If (oDomain.Lock) Then
strLock = l_strLockedYes
Else
strLock = l_strLockedNo
End If
Dim nMailboxes
nMailboxes = oDomain.Users.Count
ConstructRow = Array(oDomain.Name, _
FormatNumber(nMailboxes, 0), _
strLock, _
GetSortableNumber(nMailboxes))
End Function
'---------------------------------------------------------------------
' ServeClientTableData
'---------------------------------------------------------------------
Function ServeClientTableData(rgRows)
'
' Output the beginning of the client script block that will contain
' the array to track which items can be deleted.
Response.Write("<SCRIPT LANGUAGE=""Javascript"">" & vbCrLf)
Response.Write("var g_rgDomainLocked = new Array();" & vbCrLf)
Dim nRows
nRows = UBound(rgRows)
Dim iRow
For iRow = 0 To nRows - 1
If (l_strLockedYes = rgRows(iRow)(COL_LOCK_ID)) Then
Response.Write("g_rgDomainLocked[" & iRow & "] = true;" & vbCrLf)
Else
Response.Write("g_rgDomainLocked[" & iRow & "] = false;" & vbCrLf)
End If
Next
'
' Close the client script block.
Response.Write("</SCRIPT>" & vbCrLf)
End Function
'**********************************************************************
'* E V E N T H A N D L E R S
'**********************************************************************
'----------------------------------------------------------------------
' OnInitPage
'----------------------------------------------------------------------
Public Function OnInitPage( _
ByRef PageIn, _
ByRef EventArg _
)
' Initially, sort by name
g_iSortCol = 0
g_sSortSequence = "A"
g_bPagingInitialized = FALSE
g_iPageCurrent = 1
OnInitPage = TRUE
End Function
'----------------------------------------------------------------------
' OnServeAreaPage
'----------------------------------------------------------------------
Public Function OnServeAreaPage( _
ByRef PageIn, _
ByRef EventArg _
)
Session("PKey_Count") = 0
Dim table
table = OTS_CreateTable("", l_strTableCaption)
Call OTS_SetTableMultiSelection(table, true)
'
' If the search criteria changed then we need to recompute the
' paging range
If ( TRUE = g_bSearchChanged ) Then
g_bPagingInitialized = FALSE
g_iPageCurrent = 1
End If
Call CreateColumns (table)
Call CreateTasks (table)
Call FillTable (table)
Call OTS_SortTable (table, g_iSortCol, g_sSortSequence, SA_RESERVED)
Call OTS_ServeTable(table)
Dim rgRows
Call OTS_GetTableRows(table, rgRows)
If (IsArray(rgRows)) Then
Call ServeClientTableData(rgRows)
End If
Call ServeClientTaskFunctions()
OnServeAreaPage = TRUE
End Function
'----------------------------------------------------------------------
' OnSortNotify()
'----------------------------------------------------------------------
Public Function OnSortNotify( _
ByRef PageIn, _
ByRef EventArg, _
ByVal sortCol, _
ByVal sortSeq _
)
g_iSortCol = sortCol
g_sSortSequence = sortSeq
If (g_iSortCol > 0 And g_iSortCol < 4) Then
g_iSortCol = g_iSortCol + 4
End If
OnSortNotify = TRUE
End Function
'----------------------------------------------------------------------
' OnSearchNotify()
'----------------------------------------------------------------------
Public Function OnSearchNotify( _
ByRef PageIn, _
ByRef EventArg, _
ByRef sItem, _
ByRef sValue _
)
OnSearchNotify = TRUE
If SA_IsChangeEvent(EventArg) Then
g_bSearchChanged = TRUE
ElseIf SA_IsPostBackEvent(EventArg) Then
g_bSearchChanged = FALSE
End If
g_iSearchCol = Int(sItem)
g_sSearchColValue = CStr(sValue)
End Function
'----------------------------------------------------------------------
' OnPagingNotify()
'----------------------------------------------------------------------
Public Function OnPagingNotify( _
ByRef PageIn, _
ByRef EventArg, _
ByVal sPageAction, _
ByVal iPageMin, _
ByVal iPageMax, _
ByVal iPageCurrent _
)
OnPagingNotify = TRUE
g_bPagingInitialized = true
g_iPageMin = iPageMin
g_iPageMax = iPageMax
g_iPageCurrent = iPageCurrent
End Function
'----------------------------------------------------------------------
' ServeClientTaskFunctions()
'----------------------------------------------------------------------
Public Sub ServeClientTaskFunctions()
%>
<SCRIPT LANGUAGE="Javascript">
var g_bSomeDomainsAreLocked = false;
function SomeDomainsAreLocked(sMessage, iTaskNo, iItemNo)
{
var rc = true;
if(sMessage.toLowerCase() == OTS_MESSAGE_BEGIN)
{
g_bSomeDomainsAreLocked = false;
}
else if(sMessage.toLowerCase() == OTS_MESSAGE_ITEM)
{
//
// See if this domain is locked.
//
if(g_rgDomainLocked[iItemNo])
{
g_bSomeDomainsAreLocked = true;
// No need to continue, because we have at least one locked domain.
rc = false;
}
}
else if(sMessage.toLowerCase() == OTS_MESSAGE_END)
{
if(g_bSomeDomainsAreLocked)
{
OTS_SetTaskEnabled(iTaskNo, true);
}
else
{
OTS_SetTaskEnabled(iTaskNo, false);
}
}
return rc;
}
var g_bSomeDomainsAreUnlocked = false;
function SomeDomainsAreUnlocked(sMessage, iTaskNo, iItemNo)
{
var rc = true;
if(sMessage.toLowerCase() == OTS_MESSAGE_BEGIN)
{
g_bSomeDomainsAreUnlocked = false;
}
else if(sMessage.toLowerCase() == OTS_MESSAGE_ITEM)
{
//
// See if this domain is locked.
//
if(!g_rgDomainLocked[iItemNo])
{
g_bSomeDomainsAreUnlocked = true;
// No need to continue, because we have at least one unlocked domain.
rc = false;
}
}
else if(sMessage.toLowerCase() == OTS_MESSAGE_END)
{
if(g_bSomeDomainsAreUnlocked)
{
OTS_SetTaskEnabled(iTaskNo, true);
}
else
{
OTS_SetTaskEnabled(iTaskNo, false);
}
}
return rc;
}
</SCRIPT>
<%
End Sub
%>