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.

503 lines
17 KiB

  1. <%@ Language=VBScript %>
  2. <% Option Explicit %>
  3. <%
  4. '-------------------------------------------------------------------------
  5. ' adminpw_prop.asp: Change Administrator Password
  6. '
  7. ' Copyright (c) Microsoft Corporation. All rights reserved.
  8. '
  9. ' Date Description
  10. ' 25-7-2000 Created date
  11. ' 28-2-2001 Modify date
  12. '-------------------------------------------------------------------------
  13. %>
  14. <!-- #include virtual="/admin/inc_framework.asp" -->
  15. <!-- #include file="loc_adminpw.asp" -->
  16. <%
  17. '-------------------------------------------------------------------------
  18. ' Global Variables
  19. '-------------------------------------------------------------------------
  20. Dim rc 'framework variables
  21. Dim page 'framework variables
  22. '-------------------------------------------------------------------------
  23. ' Form Variables
  24. '-------------------------------------------------------------------------
  25. Dim F_strUserName 'Username for the form
  26. Dim F_strCurrentPassword 'Current Password
  27. Dim F_strNewPassword 'New password
  28. Dim F_strConfirmNewPassword 'Confirm New Password
  29. Dim F_strAdminUserName 'Admin username
  30. '-------------------------------------------------------------------------
  31. '-------------------------------------------------------------------------
  32. ' Global Variables
  33. '-------------------------------------------------------------------------
  34. Dim G_strDomainName 'Domain name from system
  35. Dim G_strUserName 'User name from system
  36. Dim G_PwdFlag
  37. Dim G_NameFlag
  38. Dim G_bPwdChangeReq
  39. G_bPwdChangeReq = TRUE
  40. Const CONST_REGKEY ="Name"
  41. Const CONST_HTTPS_OFF="OFF"
  42. ' Create a Property Page
  43. rc = SA_CreatePage(L_TASKTITLE_TEXT, "",PT_PROPERTY, page )
  44. '
  45. ' Serve the page
  46. rc = SA_ShowPage( page )
  47. '-------------------------------------------------------------------------
  48. 'Function: OnInitPage()
  49. 'Description: Called to signal first time processing for this page.
  50. ' Use this method to do first time initialization tasks
  51. 'Input Variables: PageIn,EventArg
  52. 'Output Variables: PageIn,EventArg
  53. 'Returns: True/False
  54. 'Global Variables: None
  55. '-------------------------------------------------------------------------
  56. Public Function OnInitPage(ByRef PageIn, ByRef EventArg)
  57. SA_TraceOut "TEMPLATE_PROPERTY", "OnInitPage"
  58. 'Getting values from system
  59. If Request.Form("hdnAdminUserName")="" then
  60. GetDomainandUsername()
  61. End if
  62. If Request.Form("hdnAdminUserName")<>"" then
  63. G_strUserName= Request.Form("hdnAdminUserName")
  64. End if
  65. OnInitPage = TRUE
  66. End Function
  67. '-------------------------------------------------------------------------
  68. 'Function: OnServePropertyPage()
  69. 'Description: Called when the page needs to be served.Use this
  70. ' method to serve content
  71. 'Input Variables: PageIn,EventArg
  72. 'Output Variables: PageIn,EventArg
  73. 'Returns: True/False
  74. 'Global Variables: In:G_strUserName,G_strDomainName
  75. '-------------------------------------------------------------------------
  76. Public Function OnServePropertyPage(ByRef PageIn, ByRef EventArg)
  77. 'return url modification
  78. SA_TraceOut "TEMPLATE_PROPERTY", "OnServePropertyPage"
  79. If Request.Form("hdnAdminUserName")<>"" then
  80. G_strUserName= Request.Form("hdnAdminUserName")
  81. End if
  82. ' Emit Functions required by Web Framework
  83. Call ServeCommonJavaScript()%>
  84. <table>
  85. <tr>
  86. <td>
  87. <table width=60%>
  88. <tr>
  89. <td class="TasksBody" >
  90. <%CheckForSecureSite()%>
  91. <br>
  92. </td>
  93. </tr>
  94. </table>
  95. </td>
  96. </tr>
  97. <tr>
  98. <td class="TasksBody">
  99. <TABLE ALIGN=left BORDER=0 >
  100. <TR>
  101. <TD class="TasksBody" nowrap>
  102. <%=L_USERNAME_TEXT %>
  103. </TD>
  104. <TD class="TasksBody">
  105. <INPUT TYPE=TEXT NAME=txtUSERNAME VALUE="<%=Server.HTMLEncode(G_strUserName)%>" TABINDEX=1 onkeypress="ClearErr()">
  106. </TD>
  107. </TR>
  108. <TR>
  109. <TD class="TasksBody" nowrap>
  110. <%=L_CURRENTPASSWORD_TEXT %>
  111. </TD>
  112. <TD class="TasksBody">
  113. <INPUT TYPE=PASSWORD onChange='SetPageChanged(true);' NAME=pwdCURRENTPASSWORD TABINDEX=2 MAXLENGTH=128 onkeypress="ClearErr()">
  114. </TD>
  115. </TR>
  116. <TR>
  117. <TD class="TasksBody" nowrap>
  118. <%=L_NEWPASSWORD_TEXT %>
  119. </TD>
  120. <TD class="TasksBody">
  121. <INPUT TYPE=PASSWORD onChange='SetPageChanged(true);' NAME=pwdNEWPASSWORD TABINDEX=3 MAXLENGTH=128 onkeypress="ClearErr()">
  122. </TD>
  123. </TR>
  124. <TR>
  125. <TD class="TasksBody" nowrap>
  126. <%=L_CONFIRMNEWPASSWORD_TEXT %>
  127. </TD>
  128. <TD class="TasksBody">
  129. <INPUT TYPE=PASSWORD onChange='SetPageChanged(true);' NAME=pwdCONFIRMNEWPASSWORD TABINDEX=4 MAXLENGTH=128 onkeypress="ClearErr()">
  130. </TD>
  131. </TR>
  132. </TABLE>
  133. </td>
  134. </tr>
  135. </table>
  136. <INPUT type=hidden name="hdnDomainName" value="<%=Server.HTMLEncode(UCASE(TRIM(G_strDomainName)))%>">
  137. <INPUT type=hidden name="hdnSystemName" value="<%=Server.HTMLEncode(UCASE(TRIM(GetComputerName)))%>">
  138. <INPUT type=hidden name="hdnoldadminUserName" value="<%=Server.HTMLEncode(TRIM(G_strUserName))%>">
  139. <INPUT type=hidden name="hdnPwdChanged" value="<%=G_bPwdChangeReq%>">
  140. <INPUT type=hidden name="hdnAdminUserName" >
  141. <%
  142. OnServePropertyPage = TRUE
  143. End Function
  144. '-------------------------------------------------------------------------
  145. 'Function: OnPostBackPage()
  146. 'Description: Called to signal that the page has been posted-back.
  147. 'Input Variables: PageIn,EventArg
  148. 'Output Variables: PageIn,EventArg
  149. 'Returns: True/False
  150. 'Global Variables: Out:F_strAdminUserName 'admin user name
  151. ' Out:F_strCurrentPassword 'Current password
  152. ' out:F_strConfirmNewPassword 'Confirm password
  153. '-------------------------------------------------------------------------
  154. Public Function OnPostBackPage(ByRef PageIn, ByRef EventArg)
  155. Err.Clear
  156. F_strAdminUserName = Request.Form("txtUSERNAME")
  157. F_strCurrentPassword = Request.Form("pwdCURRENTPASSWORD")
  158. F_strNewPassword = Request.Form("pwdNEWPASSWORD")
  159. F_strConfirmNewPassword = Request.Form("pwdCONFIRMNEWPASSWORD")
  160. 'Getting values from system
  161. If Request.Form("hdnAdminUserName")="" then
  162. GetDomainandUsername()
  163. End if
  164. If Request.Form("hdnAdminUserName")<>"" then
  165. G_strUserName= Request.Form("hdnAdminUserName")
  166. End if
  167. G_bPwdChangeReq = Request.Form("hdnPwdChanged")
  168. OnPostBackPage = TRUE
  169. End Function
  170. '-------------------------------------------------------------------------
  171. 'Function: OnSubmitPage()
  172. 'Description: Called when the page has been submitted for processing.
  173. ' Use this method to process the submit request.
  174. 'Input Variables: PageIn,EventArg
  175. 'Output Variables: None
  176. 'Returns: True/False
  177. 'Global Variables: Out:G_PwdFlag
  178. ' Out:F_strAdminUserName 'admin user name
  179. ' Out:F_strCurrentPassword 'Current password
  180. ' Out:F_strConfirmNewPassword 'Confirm password
  181. ' Out:F_strNewPassword
  182. '-------------------------------------------------------------------------
  183. Public Function OnSubmitPage(ByRef PageIn, ByRef EventArg)
  184. SA_TraceOut "TEMPLATE_PROPERTY", "OnSubmitPage"
  185. Err.Clear
  186. Dim nflag
  187. Const strChange="Change"
  188. F_strAdminUserName = Request.Form("txtUSERNAME")
  189. F_strCurrentPassword = Request.Form("pwdCURRENTPASSWORD")
  190. F_strNewPassword = Request.Form("pwdNEWPASSWORD")
  191. F_strConfirmNewPassword = Request.Form("pwdCONFIRMNEWPASSWORD")
  192. 'Getting values from system
  193. GetDomainandUsername()
  194. 'Updating the values.
  195. If SetChangepassword()Then
  196. If G_PwdFlag=strChange or G_NameFlag=strChange Then
  197. If G_PwdFlag=strChange and G_NameFlag=strChange Then
  198. nflag=3
  199. Elseif G_PwdFlag=strChange Then
  200. nflag=1
  201. Elseif G_NameFlag=strChange Then
  202. nflag=2
  203. End If
  204. Response.Redirect "adminpw_changeConfirm.asp?flag=" & nflag & _
  205. "&tab1=TabsNetwork" & _
  206. "&tab2=TabsNetworkChangeAdminPW" & _
  207. "&" & SAI_FLD_PAGEKEY & "=" & SAI_GetPageKey()
  208. Else
  209. OnSubmitPage=True
  210. End if
  211. End If
  212. End Function
  213. '-------------------------------------------------------------------------
  214. 'Function: OnClosePage()
  215. 'Description: Called when the page is about closed.Use this method
  216. ' to perform clean-up processing
  217. 'Input Variables: PageIn,EventArg
  218. 'Output Variables: PageIn,EventArg
  219. 'Returns: True/False
  220. 'Global Variables: None
  221. '-------------------------------------------------------------------------
  222. Public Function OnClosePage(ByRef PageIn, ByRef EventArg)
  223. SA_TraceOut "TEMPLATE_PROPERTY", "OnClosePage"
  224. OnClosePage = TRUE
  225. End Function
  226. '-------------------------------------------------------------------------
  227. 'Function: GetDomainandUsername
  228. 'Description: Serves in Getting the data from Client
  229. 'Input Variables: None
  230. 'Output Variables: None
  231. 'Returns: None
  232. 'Global Variables: Out:G_strDomainName 'Domain Name
  233. ' Out:G_strUserName 'Username
  234. ' Out:F_strUserName 'Getting Username from server
  235. ' In :L_UNABLETOCREATELOCALIZATIONOBJECT_ERRORMESSAGE
  236. '
  237. ' Unable to get remoteuser using servervariables, calls Sa_SetErrMsg with the error string
  238. ' L_UNABLETOCREATELOCALIZATIONOBJECT_ERRORMESSAGE and never returns.
  239. '---------------------------------------------------------------------------------------------------------------------------------------------------
  240. Function GetDomainandUsername
  241. on error resume next
  242. Err.Clear
  243. Dim strTemp
  244. F_strUserName = Request.ServerVariables("REMOTE_USER")
  245. If Err.Number <> 0 Then
  246. Sa_SetErrMsg L_UNABLETOCREATELOCALIZATIONOBJECT_ERRORMESSAGE
  247. SA_TraceOut "ADMINPW_PROP", L_UNABLETOCREATELOCALIZATIONOBJECT & "("& Hex(Err.number ) & ")"
  248. GetDomainandUsername = FALSE
  249. Exit Function
  250. End if
  251. If InStr(F_strUserName, "\") Then
  252. strTemp = Split(F_strUserName,"\")
  253. G_strDomainName = strTemp(0)
  254. G_strUserName = strTemp(1)
  255. Else
  256. G_strDomainName = GetComputerName
  257. G_strUserName = F_strUserName
  258. End If
  259. GetDomainandUsername=True
  260. End Function
  261. '-------------------------------------------------------------------------
  262. 'Function name: SetChangepassword
  263. 'Description: Changes the administrator password
  264. 'Input Variables: None
  265. 'Output Variables: None
  266. 'Returns: None
  267. 'Global Variables:
  268. ' In:G_strDomainName 'ADSI Domain name
  269. ' In:G_strUserName 'ADSI User name
  270. ' In:L_ADSI_ERRORMESSAGE 'ADSI Error Message
  271. ' In:L_PASSWORDCOMPLEXITY_ERRORMESSAGE
  272. ' 'Complexity Error Message
  273. ' In:L_OLDPASSWORDNOTMATCH_ERRORMESSAGE
  274. ' 'Old Password not match Error
  275. '
  276. ' If ADSI Error, calls Sa_SetErrMsg with the error string
  277. ' L_ADSI_ERRORMESSAGE and never returns.
  278. ' If Password Complexity error, calls Sa_SetErrMsg with the error string
  279. ' L_PASSWORDCOMPLEXITY_ERRORMESSAGE and never returns.
  280. ' If old password not match, calls Sa_SetErrMsg with the error string
  281. ' L_OLDPASSWORDNOTMATCH_ERRORMESSAGE and never returns.
  282. '--------------------------------------------------------------------------
  283. Function SetChangepassword()
  284. on error resume next
  285. Err.Clear
  286. Dim objUser ' for user object
  287. Dim strADSIPath ' for adsi path
  288. Dim objComputer ' for computer object
  289. Dim objUser1 ' for user object
  290. Dim objRegistry
  291. Dim retVal
  292. Const strChange="Change"
  293. Set objComputer = GetObject("WinNT://" & GetComputerName())
  294. Set objUser1 = objComputer.GetObject("User",G_strUserName)
  295. strADSIPath = "WinNT://" & G_strDomainName & "/" & G_strUserName & ",user"
  296. Set objUser = GetObject(strADSIPath)
  297. 'ADSI Error Message
  298. If Err.Number <> 0 Then
  299. Sa_SetErrMsg L_ADSI_ERRORMESSAGE
  300. SA_TraceOut "ADMINPW_PROP", L_ADSI_ERRORMESSAGE & "("& Hex(Err.number ) & ")"
  301. SetChangepassword= FALSE
  302. Exit Function
  303. End if
  304. if G_bPwdChangeReq then
  305. objUser.ChangePassword F_strCurrentPassword, F_strNewPassword
  306. 'Method calling to change the Password
  307. If F_strCurrentPassword <> F_strNewPassword then
  308. G_PwdFlag = strChange
  309. End if
  310. 'Password Complexity Error Message
  311. If Err.Number = -2147022651 Then
  312. Sa_SetErrMsg L_PASSWORDCOMPLEXITY_ERRORMESSAGE
  313. SA_TraceOut "ADMINPW_PROP", L_PASSWORDCOMPLEXITY_ERRORMESSAGE & "("& Hex(Err.number ) & ")"
  314. SetChangepassword= FALSE
  315. Exit Function
  316. End if
  317. 'Old Password Not Match Error Message
  318. If Err.Number= -2147024810 Then
  319. Sa_SetErrMsg L_OLDPASSWORDNOTMATCH_ERRORMESSAGE
  320. SA_TraceOut "ADMINPW_PROP", L_OLDPASSWORDNOTMATCH_ERRORMESSAGE & "("& Hex(Err.number ) & ")"
  321. SetChangepassword= FALSE
  322. Exit Function
  323. End if
  324. 'If it fails for other reasons, the error message
  325. If Err.Number<> 0 Then
  326. Sa_SetErrMsg L_PASSWORDCOULDNOTCHANGE_ERRORMESSAGE
  327. SA_TraceOut "ADMINPW_PROP", L_PASSWORDCOULDNOTCHANGE_ERRORMESSAGE & "("& Hex(Err.number ) & ")"
  328. SetChangepassword= FALSE
  329. Exit Function
  330. End if
  331. End if
  332. If Ucase(F_strAdminUserName) <> Ucase(G_strUserName) Then
  333. objComputer.MoveHere objUser1.AdsPath,F_strAdminUserName
  334. G_NameFlag=strChange
  335. If Err.number = -2147022672 then
  336. Sa_SetErrMsg L_THEACCOUNTALREADYEXISTS__ERRORMESSAGE
  337. SetChangepassword= FALSE
  338. Exit Function
  339. End if
  340. End if
  341. Set objComputer =Nothing
  342. Set objUser1=Nothing
  343. Set objUser=Nothing
  344. Set objRegistry =Nothing
  345. SetChangepassword= TRUE
  346. End Function
  347. '-------------------------------------------------------------------------
  348. 'Function: ServeCommonJavaScript
  349. 'Description: Serves in initialiging the values,setting the form
  350. ' data and validating the form values
  351. 'Input Variables: None
  352. 'Output Variables: None
  353. 'Returns: None
  354. 'Global Variables: L_(*)
  355. '-------------------------------------------------------------------------
  356. Function ServeCommonJavaScript()
  357. %>
  358. <script language="JavaScript" src="<%=m_VirtualRoot%>inc_global.js">
  359. </script>
  360. <script language="JavaScript">
  361. //Validates user input and display "New passwords do not match" error
  362. function ValidatePage()
  363. {
  364. document.frmTask.hdnAdminUserName.value=document.frmTask.txtUSERNAME.value
  365. if(document.frmTask.hdnDomainName.value!= document.frmTask.hdnSystemName.value && document.frmTask.hdnoldadminUserName.value!=document.frmTask.txtUSERNAME.value)
  366. {
  367. SA_DisplayErr('<%=Server.HTMLEncode(SA_EscapeQuotes(L_ACCOUNTNAMECANNOTCHANGEBECAUSEDOMAINACCOUNT_ERRORMESSAGE))%>');
  368. document.frmTask.pwdNEWPASSWORD.focus();
  369. document.frmTask.pwdNEWPASSWORD.select();
  370. return false;
  371. }
  372. //if (document.frmTask.hdnDomainName != document.frmTask.hdnSystemName.value)
  373. //{
  374. //DisplayErr("<%= L_PASSWORDCANNOTCHANGEBECAUSEDOMAINACCOUNT_ERRORMESSAGE %>");
  375. //document.frmTask.pwdNEWPASSWORD.focus();
  376. //document.frmTask.pwdNEWPASSWORD.select();
  377. // return false;
  378. //}*/
  379. if (document.frmTask.pwdNEWPASSWORD.value != document.frmTask.pwdCONFIRMNEWPASSWORD.value)
  380. {
  381. SA_DisplayErr('<%=Server.HTMLEncode(SA_EscapeQuotes(L_PASSWORDNOTMATCH_ERRORMESSAGE ))%>');
  382. document.frmTask.pwdNEWPASSWORD.value="";
  383. document.frmTask.pwdCONFIRMNEWPASSWORD.value="";
  384. document.frmTask.pwdNEWPASSWORD.focus();
  385. document.frmTask.pwdNEWPASSWORD.select();
  386. return false;
  387. }
  388. // Prevent blank password (because XP prevents you from remote access if the admin
  389. // pwd is blank)
  390. if (document.frmTask.hdnoldadminUserName.value == document.frmTask.txtUSERNAME.value &&
  391. document.frmTask.pwdNEWPASSWORD.value == "" )
  392. {
  393. SA_DisplayErr('<%=Server.HTMLEncode(SA_EscapeQuotes(L_PASSWORDCOMPLEXITY_ERRORMESSAGE ))%>');
  394. document.frmTask.pwdNEWPASSWORD.value="";
  395. document.frmTask.pwdCONFIRMNEWPASSWORD.value="";
  396. document.frmTask.pwdNEWPASSWORD.focus();
  397. document.frmTask.pwdNEWPASSWORD.select();
  398. return false;
  399. }
  400. return true;
  401. }
  402. //init function
  403. function Init()
  404. {
  405. if(document.frmTask.hdnDomainName.value != document.frmTask.hdnSystemName.value)
  406. {
  407. document.frmTask.txtUSERNAME.style.backgroundColor = "lightgrey"
  408. document.frmTask.pwdCURRENTPASSWORD.style.backgroundColor = "lightgrey"
  409. document.frmTask.pwdCONFIRMNEWPASSWORD.style.backgroundColor = "lightgrey"
  410. document.frmTask.pwdNEWPASSWORD.style.backgroundColor = "lightgrey"
  411. document.frmTask.txtUSERNAME.readOnly = "true"
  412. document.frmTask.pwdCURRENTPASSWORD.disabled=true
  413. document.frmTask.pwdCONFIRMNEWPASSWORD.disabled=true
  414. document.frmTask.pwdNEWPASSWORD.disabled=true
  415. }
  416. SetPageChanged(false);
  417. }
  418. //Dummy function for Framework
  419. function SetData()
  420. {
  421. if(blnOkayToLeavePage)
  422. {
  423. //user is not intended to change the password
  424. document.frmTask.hdnPwdChanged.value = false;
  425. }
  426. }
  427. </script>
  428. <%
  429. End Function
  430. %>