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.
 
 
 
 
 
 

156 lines
4.8 KiB

<%@Language="VBScript"%>
<HTML>
<!--#include file = "text.asp"-->
<title><%=L_Title_Text%></title>
<STYLE>
</STYLE>
<head>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
</head>
<BODY BGCOLOR=#FFFFFF LINK=000000 VLINK=000000>
<%On Error goto 0%>
<%if Request.Form("cancel") <> "" then
if Request.Form("denyifcancel") <> "" then
Response.Status = "401 Unauthorized"
Response.End
else
Response.Redirect(Request.QueryString)
end if
Response.End
end if
%>
<!-- Windows NT Server with IIS -->
<%if Instr(1,Request.ServerVariables("SERVER_SOFTWARE"), "IIS") > 0 then%>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR VALIGN=CENTER>
<TD></TD>
<TD WIDTH=20> </TD>
<TD><FONT SIZE=+3 COLOR=#000000><B><%=L_ISM_Text%><BR> <FONT SIZE=-1><%=L_IIS6_Text%><FONT></B></FONT></TD>
</TR>
</Table>
<%end if%>
<!-- Windows NT Workstation with PWS -->
<%if Instr(1,Request.ServerVariables("SERVER_SOFTWARE"), "PWS") then%>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR VALIGN=CENTER>
<TD></TD>
<TD WIDTH=20> </TD>
<TD><FONT SIZE=+3 COLOR=#000000><B><%=L_ISM_Text%><BR> <FONT SIZE=-1><%=L_PWS_Text%><FONT></B></FONT></TD>
</TR>
</Table>
<%end if%>
<p>
<%if Request.Form("new") <> Request.Form("new2") then %>
<%=L_PWDM_Text%><p>
<%Response.End%>
<%end if%>
<%
On Error resume next
dim domain,posbs, posat, username, pUser, root
domain = Trim(Request.Form("domain"))
' if no domain is present we try to get the domain from the username,
' e.g. domainusername or [email protected]
if domain = "" then
posbs = Instr(1,Request.Form("acct"),"\" )
posat = Instr(1,Request.Form("acct"),"@" )
if posbs > 0 then
domain = Left(Request.Form("acct"),posbs-1)
username = Right(Request.Form("acct"),len(Request.Form("acct")) - posbs)
elseif posat > 0 then
domain = Right(Request.Form("acct"),len(Request.Form("acct")) - posat)
username = Left(Request.Form("acct"),posat-1)
else
username = Request.Form("acct")
set nw = Server.CreateObject("WScript.Network")
domain = nw.Computername
end if
else
username = Trim(Request.Form("acct"))
end if
' verify that the characters in the user name are valid
if IsInvalidUsername(username) = true then
Response.Write L_InvalidUsername_Text & "."
Response.Write "<br><H3><a href=" & Server.HTMLEncode(Request.ServerVariables("HTTP_REFERER")) & ">" & L_Back_Text & " </a></H3>"
Response.End
end if
' verify that the characters in the domain name are valid
if IsInvalidDomainname(domain) = true then
Response.Write L_InvalidDomainname_Text & "."
Response.Write "<br><H3><a href=" & Server.HTMLEncode(Request.ServerVariables("HTTP_REFERER")) & ">" & L_Back_Text & " </a></H3>"
Response.End
end if
set pUser = GetObject("WinNT://" & domain & "/" & username & ",user")
if Not IsObject(pUser) then
set root = GetObject("WinNT:")
set pUser = root.OpenDSObject("WinNT://" & domain & "/" & username & ",user", username, Request.Form("old"),1)
Response.Write "<!--OpenDSObject call-->"
end if
if Not IsObject(pUser) then
'Response.Write "domain <> null - OpenDSObject also failed"
if err.number = -2147024843 then
Response.Write L_NotExist_Text & "."
else
if err.description <> "" then
Response.Write L_Error_Text & ": " & err.description
else
Response.Write L_Errornumber_Text & ": " & err.number
end if
Response.Write "<br><H3><a href=" & Server.HTMLEncode(Request.ServerVariables("HTTP_REFERER")) & ">" & L_Back_Text & "</a></H3>"
end if
Response.End
end if
err.Clear
pUser.ChangePassword Request.Form("old"), Request.Form("new")
if err.number <> 0 then
if err.number = -2147024810 then
Response.Write "<p>" & L_Error_Text & ": " & L_Invalid_Text
elseif err.number = -2147022651 then
Response.Write L_PasswordToShort_Text
else
Response.Write L_Errornumber_Text & ": " & err.number
end if
Response.Write "<br><H3><a href=" & Server.HTMLEncode(Request.ServerVariables("HTTP_REFERER")) & ">" & L_Back_Text & "</a></H3>"
Response.End
else
Response.Write L_PasswordChanged_Text & ".<p>"
end if
%>
<br>
<a href="<%=Server.HTMLEncode(Request.QueryString)%>"> " <%=L_BackTo_Text%> "<%=Server.HTMLEncode(Request.QueryString)%></a>
</body></html>
<%
function IsInvalidUsername(username)
dim re
set re = new RegExp
' list of invalid characters in a user name.
re.Pattern = "[/\\""\[\]:<>\+=;,@]"
IsInvalidUsername = re.Test(username)
end function
function IsInvalidDomainname(domainname)
dim re
set re = new RegExp
' list of invalid characters in a domain name.
re.Pattern = "[/\\""\[\]:<>\+=;,@!#$%^&\(\)\{\}\|~]"
IsInvalidDomainName = re.Test(domainname)
end function
%>