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
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
|
|
%>
|