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.
 
 
 
 
 
 

703 lines
22 KiB

<% '-------------------------------------------------------------------------
' share_gennew.asp: Serves in creating a new share with general properties
' (name,path,description)
'
' Copyright (c) Microsoft Corporation. All rights reserved.
'
' Date Description
' 9 March 2001 Creation Date
'-------------------------------------------------------------------------
%>
<!--#include file="share_gennew.js" -->
<%
'------------------------------------------------------------------------
' Form Variables
'------------------------------------------------------------------------
Dim F_strNewSharename 'Modified share name
Dim F_strNewSharePath 'Modified share path
Dim F_strSharesChecked 'Type of shares selected
Dim F_strCreatePathChecked 'status for the checkbox to create path
'-------------------------------------------------------------------------
' Global Variables
'-------------------------------------------------------------------------
Dim G_objConnection 'gets the WMI connection
Dim G_strErrorinShareType 'gets the type of share which is not created
Dim G_blnFlag
Dim G_ErrFlag
Const CONST_WINDOWSSHARES="W"
Const CONST_NFSSHARES="U"
Const CONST_FTPSHARES="F"
Const CONST_HTTPSHARES="H"
Const CONST_APPLETALKSHARES="A"
G_ErrFlag = 0
G_blnFlag = 0
G_strErrorinShareType =""
'-------------------------------------------------------------------------
'Function name: ServeGenPage
'Description: Serves in getting the general properties(tab) sheet
' for shares
'Input Variables: None
'Output Variables: None
'Returns: (True / Flase )
'Global Variables: G_strChecktheShareMsg,G_strErrorinShareType
'--------------------------------------------------------------------------
Function ServeGenPage()
%>
<table width="518" valign="middle" align="left" border="0" cellspacing="0" cellpadding="2" >
<tr>
<td class="TasksBody" nowrap>
<%=L_SHARENAME_TEXT%>
</td>
<td class="TasksBody">
<input type="text" class="FormField" name="txtShareName" maxlength="80" size="20"
onfocus="this.select()" onkeyup="makeDisable(this)" onMouseOut="makeDisable(this)"
value="<%=server.HTMLEncode(F_strNewSharename)%>">
</td>
</tr>
<tr>
<td class="TasksBody">
<%=L_SHAREDPATH_TEXT%>
</td>
<td class="TasksBody" nowrap>
<input type="text" class="FormField" name="txtSharePath" size="20" onFocus="this.select()"
value="<%=server.HTMLEncode(F_strNewSharePath)%>">
&nbsp;&nbsp;
<%If lcase(F_strCreatePathChecked) = lcase("true") Then%>
<input type="checkbox" class="FormCheckBox" name="chkCreatePath" checked>
<%Else%>
<input type="checkbox" class="FormCheckBox" name="chkCreatePath">
<%End If%>
<%=L_CREATEPATH_TEXT%>
</td>
</tr>
<tr>
<td colspan="2" class="TasksBody">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" class="TasksBody">
<%=L_CLIENTSLIST_TEXT%>
</td>
</tr>
<tr>
<td colspan="2" class="TasksBody">
<table border=0>
<tr>
<td class="TasksBody">
&nbsp;
<%
'checkbox selected/unselected
If instr(F_strSharesChecked,CONST_WINDOWSSHARES) > 0 Then
SelectCheckBox CONST_WINDOWSSHARES,true,false
Else
SelectCheckBox CONST_WINDOWSSHARES,false ,false
End If
'to dispaly as error
If instr(G_strErrorinShareType,CONST_WINDOWSSHARES) > 0 Then
ShowErrorinRed L_CHK_WINDOWS_TEXT
Else
response.write L_CHK_WINDOWS_TEXT
End If
%>
</td>
</tr>
<%Set G_objConnection = getWMIConnection(CONST_WMI_WIN32_NAMESPACE)
'to make the checkbox disable if the service is not installed
If isServiceInstalled(G_objConnection,"nfssvc") Then
%>
<tr>
<td class="TasksBody">
&nbsp;
<%
'checkbox selected/unselected
If instr(F_strSharesChecked,CONST_NFSSHARES) > 0 Then
SelectCheckBox CONST_NFSSHARES,true,false
Else
SelectCheckBox CONST_NFSSHARES,false,false
End If
'to dispaly as error
If instr(G_strErrorinShareType,CONST_NFSSHARES) > 0 Then
ShowErrorinRed L_CHK_UNIX_TEXT
Else
response.write L_CHK_UNIX_TEXT
End If
%>
</td>
</tr>
<%
End If
%>
<%
'to make the checkbox disable if the service is not installed
If isServiceInstalled(G_objConnection,"msftpsvc") Then
%>
<tr>
<td class="TasksBody">
&nbsp;
<%'checkbox selected/unselected
If instr(F_strSharesChecked,CONST_FTPSHARES) > 0 Then
SelectCheckBox CONST_FTPSHARES,true,false
Else
SelectCheckBox CONST_FTPSHARES,false ,false
End If
'to dispaly as error
If instr(G_strErrorinShareType,CONST_FTPSHARES) > 0 Then
ShowErrorinRed L_CHK_FTP_TEXT
Else
response.write L_CHK_FTP_TEXT
End If
%>
</td>
</tr>
<%
End If
%>
<tr>
<td colspan="0" class="TasksBody">
&nbsp;
<%
'checkbox selected/unselected
If instr(F_strSharesChecked,CONST_HTTPSHARES) > 0 Then
SelectCheckBox CONST_HTTPSHARES,true,false
Else
SelectCheckBox CONST_HTTPSHARES,false ,false
End If
'to dispaly as error
If instr(G_strErrorinShareType,CONST_HTTPSHARES) > 0 Then
ShowErrorinRed L_CHK_HTTP_TEXT
Else
response.write L_CHK_HTTP_TEXT
End If
%>
</td>
</tr>
<%
If isServiceInstalled(G_objConnection,"MacFile") Then
%>
<tr>
<td class="TasksBody">
&nbsp;
<%
'checkbox selected/unselected
If instr(F_strSharesChecked,CONST_APPLETALKSHARES) > 0 Then
SelectCheckBox CONST_APPLETALKSHARES,true,false
Else
SelectCheckBox CONST_APPLETALKSHARES,false ,false
End If
'to dispaly as error
If instr(G_strErrorinShareType,CONST_APPLETALKSHARES) > 0 Then
ShowErrorinRed L_CHK_APPLETALK_TEXT
Else
response.write L_CHK_APPLETALK_TEXT
End If
%>
</td>
</tr>
<%End if %>
</table>
</tr>
</table>
<% 'check for the error message of shares
If G_strChecktheShareMsg <> "" Then
SA_SetErrMsg G_strChecktheShareMsg
End If
ServeGenHiddenValues
'clean the object
Set G_objConnection = nothing
End Function
'-------------------------------------------------------------------------
'Function name: CreatePath()
'Description: Creates the given Path
'Input Variables: strDirectoryPath
'Output Variables: None
'Returns: (True / Flase )
'Global Variables: None
'--------------------------------------------------------------------------
Function CreatePath(strCreatePath)
Err.Clear
On Error Resume Next
CreatePath = false
Dim objFsonew, strDir, strIndx, strDriveName, strDirStruct, strDirList, strMain
Dim strCount, strEachDir, strCreateDir
Set objFsonew = server.CreateObject("Scripting.FileSystemObject")
if Err.number <> 0 then
Call SA_ServeFailurepageEx(L_FILESYSTEMOBJECTFAIL_ERRORMESSAGE,mstrReturnURL)
Err.Clear
Exit Function
end if
strDir = strCreatePath
strIndx = instr(1,strDir,":\")
strDriveName = left(strDir,strIndx)
strDirStruct = mid(strDir,strIndx+1)
strDirList = split(strDirStruct,"\")
if objFsonew.DriveExists(ucase(strDriveName)) then
for strCount = 0 to UBound(strDirList)
if strCount>=UBound(strDirList) then exit for
if strCount=0 then
strMain = strDriveName & "\" & strDirList(strCount+1)
if objFsonew.FolderExists(strMain)=false then
objFsonew.CreateFolder(strMain)
end if
else
strEachDir = strEachDir & "\" & strDirList(strCount+1)
strCreateDir = strMain & strEachDir
if objFsonew.FolderExists(strCreateDir)=false then
objFsonew.CreateFolder(strCreateDir)
end if
end if
next
if Err.number <> 0 then
Err.Clear
Exit Function
end if
CreatePath = true
else
Exit Function
end if
'clean the object
Set objFsonew = nothing
End Function
'-------------------------------------------------------------------------
'Function name: GenShareProperties
'Description: serves in doing share create,delete,update functions
'Input Variables: None
'Output Variables: None
'Returns: (True / Flase )
'Global Variables: G_objConnection
' in: L_*
' in: F_*
'--------------------------------------------------------------------------
Function GenShareProperties()
Err.Clear
On Error Resume Next
Dim nReturnVar 'return var for the function
Dim arrStrErrorNum(2) 'array to store the errors types
Dim oValidator
Set oValidator = new CSAValidator
If ( FALSE = oValidator.IsValidFileName(F_strNewSharename)) Then
Call SA_SetErrMsg(L_INVALIDNAME_ERRORMESSAGE)
Call SA_TraceOut(SA_GetScriptFileName(), "Invalid share name specified: " & F_strNewSharename)
Exit Function
End If
Set oValidator = Nothing
GenShareProperties=true
'check for the existence of drive
If isDriveExists(F_strNewSharePath) then
'check for the existence of the given path
If not isPathExisting(F_strNewSharePath) Then
'check for the checkbox "create path if does not exits" checked/
'unchecked.
IF F_strCreatePathChecked = "true" then
'create path
If NOT CreatePath(F_strNewSharePath) Then
SA_SetErrMsg L_CREATEPATH_ERRORMESSAGE & " " & " (" & Hex(Err.Number) & ") "
GenShareProperties=false
Exit Function
End if
else
SA_SetErrMsg L_DIR_ERRORMESSAGE & " " & " (" & Hex(Err.Number) & ") "
G_blnFlag = 1
GenShareProperties=false
Exit Function
End if
End if
else
SA_SetErrMsg L_DRIVENOTEXISTS_ERRORMESSAGE & " " & " (" & Hex(Err.Number) & ") "
GenShareProperties=false
Exit Function
end if
'Creates the CIFS share
if instr(F_strShareTypes,CONST_WINDOWSSHARES)= 0 and instr(F_strSharesChecked,CONST_WINDOWSSHARES) >0 then
'Get the WMI connection
Set G_objConnection = GetWMIConnection(CONST_WMI_WIN32_NAMESPACE)
'Create the CIFS share
nReturnVar = cifsnewshare(G_objConnection, F_strNewSharename,F_strNewSharePath,"")
'to frame the error messages with return variable
if nReturnVar =0 then
F_strShareTypes = F_strShareTypes& "W "
else
GenShareProperties=false
FrameErrorMessage arrStrErrorNum,nReturnVar," "& L_CIFS_TEXT
G_strErrorinShareType = G_strErrorinShareType & CONST_WINDOWSSHARES
end if
'clean the object
Set G_objConnection = nothing
end if
'Creates the NFS share
if instr(F_strShareTypes,CONST_NFSSHARES) =0 and instr(F_strSharesChecked,CONST_NFSSHARES) >0 then
'Create the NFS share
nReturnVar =CreateNFSShare(F_strNewSharename,F_strNewSharePath, "")
G_ErrFlag = nReturnVar
'To frame the error messages with return variable
if G_ErrFlag = True then
F_strShareTypes = F_strShareTypes & "U "
else
if not G_ErrFlag then
FrameErrorMessage arrStrErrorNum,nReturnVar, " "&L_NFS_TEXT
G_strErrorinShareType = G_strErrorinShareType & CONST_NFSSHARES
GenShareProperties=false
end if
end if
'clean the object
Set G_objConnection = nothing
end if
'Creates the FTP share
if instr(F_strShareTypes,CONST_FTPSHARES) =0 and instr(F_strSharesChecked,CONST_FTPSHARES) >0 then
'Get the WMI connection
Set G_objConnection = GetWMIConnection(CONST_WMI_IIS_NAMESPACE)
'Create the FTP share
nReturnVar =ftpnewshare(G_objConnection, F_strNewSharename,F_strNewSharePath)
'to frame the error messages with return variable
if nReturnVar =0 then
F_strShareTypes = F_strShareTypes& "F "
else
GenShareProperties=false
FrameErrorMessage arrStrErrorNum,nReturnVar," "&L_FTP_TEXT
G_strErrorinShareType = G_strErrorinShareType & CONST_FTPSHARES
end if
'clean the object
Set G_objConnection = nothing
end if
'Create the HTTP share
if instr(F_strShareTypes,CONST_HTTPSHARES) =0 and instr(F_strSharesChecked,CONST_HTTPSHARES) >0 then
'Get the WMI connection
Set G_objConnection = GetWMIConnection(CONST_WMI_IIS_NAMESPACE)
'Create the HTTP share
nReturnVar = httpnewshare(G_objConnection, F_strNewSharename,F_strNewSharePath)
'to frame the error messages with return variable
if nReturnVar= 0 then
F_strShareTypes = F_strShareTypes& "H "
else
GenShareProperties=false
FrameErrorMessage arrStrErrorNum,nReturnVar," " &L_HTTP_TEXT
G_strErrorinShareType = G_strErrorinShareType & CONST_HTTPSHARES
end if
'clean the object
Set G_objConnection = nothing
end if
'Create the APPLETALK share
if instr(F_strShareTypes,CONST_APPLETALKSHARES) =0 and instr(F_strSharesChecked,CONST_APPLETALKSHARES) >0 then
Dim strQueryForCmd
'Query to create Apple Talk share
strQueryForCmd = "VOLUME /ADD /NAME:" & chr(34) & F_strNewSharename & chr(34) & " /PATH:" & chr(34) & F_strNewSharePath & chr(34)
nReturnVar = CreateAppleTalkShare(F_strNewSharename,F_strNewSharePath,strQueryForCmd)
'to frame the error messages with return variable
if nReturnVar= True then
F_strShareTypes = F_strShareTypes& "A "
else
GenShareProperties=false
FrameErrorMessage arrStrErrorNum,nReturnVar," " & L_APPLETALK_TEXT
G_strErrorinShareType = G_strErrorinShareType & CONST_APPLETALKSHARES
end if
end if
'check for error in creating shares,if there is any error delete all the shares created.
if G_strErrorinShareType <> "" then
'windows share if created to be deleted
if instr(F_strShareTypes,"W") > 0 then
'Get the WMI connection
Set G_objConnection = GetWMIConnection(CONST_WMI_WIN32_NAMESPACE)
if not deleteShareCIFS(G_objConnection, F_strSharename) then
Call SA_ServeFailurepageEx( L_UPDATION_FAIL_ERRORMESSAGE,mstrReturnURL)
else
F_strShareTypes = replace(F_strShareTypes,"W","")
end if
'clean the object
Set G_objConnection = nothing
end if
'unix share if created to be deleted
if instr(F_strShareTypes,"U") > 0 then
'Get the WMI connection
Set G_objConnection = RegConnection()
if not deleteShareNFS(F_strShareName) then
Call SA_ServeFailurepageEx(L_UPDATION_FAIL_ERRORMESSAGE,mstrReturnURL)
else
F_strShareTypes = replace(F_strShareTypes,"U","")
end if
'clean the object
Set G_objConnection = nothing
end if
'FTP share if created to be deleted
if instr(F_strShareTypes,"F") > 0 then
'Get the WMI connection
Set G_objConnection = GetWMIConnection(CONST_WMI_IIS_NAMESPACE)
if not deleteShareFTP(G_objConnection, F_strSharename) then
Call SA_ServeFailurepageEx(L_UPDATION_FAIL_ERRORMESSAGE,mstrReturnURL)
else
F_strShareTypes = replace(F_strShareTypes,"F","")
end if
'clean the object
Set G_objConnection = nothing
end if
'HTTP share if created to be deleted
if instr(F_strShareTypes,"H") > 0 then
'Get the WMI connection
Set G_objConnection = GetWMIConnection(CONST_WMI_IIS_NAMESPACE)
'Delete the HTTP share
if not deleteShareHTTP(G_objConnection, F_strSharename) then
Call SA_ServeFailurepageEx (L_UPDATION_FAIL_ERRORMESSAGE, mstrReturnURL)
else
F_strShareTypes = replace(F_strShareTypes,"H","")
end if
end if
'Delete the APPLETALK share
if instr(F_strShareTypes,CONST_APPLETALKSHARES) >0 and instr(F_strSharesChecked,CONST_APPLETALKSHARES) =0 then
if not deleteShareAppleTalk(F_strSharename) then
Call SA_ServeFailurepageEx(L_UPDATION_FAIL_ERRORMESSAGE,mstrReturnURL)
else
F_strShareTypes = replace(F_strShareTypes,"A","")
end if
end if
G_strChecktheShareMsg = ShowErrorMessage(arrStrErrorNum) & " " &ShowUNIXError(G_ErrFlag)& " (" & Hex(Err.Number) & ") "
GenShareProperties=false
exit function
end if
End function
'-------------------------------------------------------------------------
'Function name: ShowUNIXError
'Description: to frame error messages to display error messages
' accordingly(either duplicate share name/share name not valid)
'Input Variables: strMsg
'Output Variables: None
'Returns: (True / Flase )
'Global Variables: None
'--------------------------------------------------------------------------
Function ShowUNIXError(nErrFlag)
Err.Clear
On Error Resume Next
Dim strError
Select case nErrFlag
case -4
strError = L_SUB_PATH_ALREADY_SHARED_ERRORMESSAGE& " <I>" &L_NFS_TEXT&"</I>"
case -8
strError = L_PARENT_PATH_ALREADY_SHARED_ERRORMESSAGE& " <I>" &L_NFS_TEXT&"</I>"
End Select
ShowUNIXError = strError
End Function
'-------------------------------------------------------------------------
'Function name: GeneralOnInitPage
'Description: Serves in Getting the varibales from the system
'Input Variables: None
'Output Variables: None
'Returns: (True / Flase )
'Global Variables: None
' in: F_(*)
'--------------------------------------------------------------------------
Function GeneralOnInitPage
Err.Clear
On Error Resume Next
F_strSharesChecked = F_strShareTypes
End Function
'-------------------------------------------------------------------------
'Function name: GeneralOnPostBackPage
'Description: Serves in Getting the varibales from the Form
'Input Variables: None
'Output Variables: None
'Returns: (True / Flase )
'Global Variables: None
' in: F_(*)
'--------------------------------------------------------------------------
Function GeneralOnPostBackPage
Err.Clear
On Error Resume Next
F_strNewShareName = Request.Form("hidSharename")
F_strNewSharePath = Request.Form("hidSharePath")
F_strSharesChecked = Request.Form("hidSharesChecked")
F_strCreatePathChecked = Request.Form("hidCreatePathChecked")
F_strConfirmed = Request.Form("hidConfirmation")
F_strShareTypes = Request.form("hidShareTypes")
End Function
'-------------------------------------------------------------------------
'Function name: isDriveExists
'Description: Checks for existence of the given path
'Input Variables: strDirectoryPath
'Output Variables: None
'Returns: (True / Flase )
'Global Variables: None
'--------------------------------------------------------------------------
Function isDriveExists(strDirPath)
Err.Clear
On Error Resume Next
isDriveExists=true
Dim objFso, strDir, strIndx, strDriveName
Set objFso = server.CreateObject("Scripting.FileSystemObject")
if Err.number <> 0 then
Call SA_ServeFailurepageEx(L_FILESYSTEMOBJECTFAIL_ERRORMESSAGE,mstrReturnURL)
Exit Function
end if
strDir = strDirPath
strIndx = instr(1,strDir,":\")
strDriveName = left(strDir,strIndx)
if not objFso.DriveExists(ucase(strDriveName)) then
isDriveExists=false
Err.Clear
Exit Function
end if
'clean the object
Set objFso = nothing
End Function
'-------------------------------------------------------------------------
'Function name: isPathExisting
'Description: Checks for existence of the given path
'Input Variables: strDirectoryPath
'Output Variables: None
'Returns: (True / Flase )
'Global Variables: None
'--------------------------------------------------------------------------
Function isPathExisting(strDirectoryPath)
Err.Clear
On Error Resume Next
Dim objFSO 'to create filesystemobject instance
isPathExisting = true
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
if Err.number <> 0 then
Call SA_ServeFailurepageEx(L_FILESYSTEMOBJECTFAIL_ERRORMESSAGE,mstrReturnURL)
Exit Function
end if
'Checks for existence of the given path
If NOT objFSO.FolderExists(strDirectoryPath) Then
isPathExisting = false
Exit Function
End If
'clean the object
Set objFSO = nothing
End Function
'-------------------------------------------------------------------------
'Function name: ServeGenHiddenValues
'Description: footer function
'Input Variables: None
'Output Variables: None
'Returns: (True / Flase )
'Global Variables: None
'
'--------------------------------------------------------------------------
Function ServeGenHiddenValues
%>
<input type="hidden" name="hidSharename" value="<%=server.HTMLEncode(F_strNewSharename)%>">
<input type="hidden" name="hidSharePath" value="<%=server.HTMLEncode(F_strNewSharePath)%>">
<input type="hidden" name="hidCreatePathChecked" value="<%=server.HTMLEncode(F_strCreatePathChecked)%>">
<input type="hidden" name="hidSharesChecked" value ="<%=F_strSharesChecked%>" >
<input type="hidden" name="hidErrFlag" value ="<%=G_blnFlag%>" >
<input type="hidden" name="hidShareTypes" value ="<%=F_strShareTypes%>">
<%
End Function
%>