標籤:
1.修改Apache設定檔
因為我在安裝和配置SVN的時候,對Apache的設定檔進行過最佳化,將所有關於SVN的配置都寫在了/opt/apache2/conf/extra/httpd-svn.conf中,然後再通過主設定檔/opt/apache2/conf/httpd.conf中Include conf/extra/httpd-svn.conf方式來調用。
因此,我這裡需要修改的就是/opt/apache2/conf/extra/httpd-svn.conf檔案,加入以下內容(其中第1,2,6行請根據實際情況進行修改):
Alias /svntools "/opt/apache2/htdocs/svntools"<Directory "/opt/apache2/htdocs/svntools">Require valid-userAuthType BasicAuthName "GridTeam`s subversion tools"AuthUserFile "/opt/subversion/conf/svn_passwdfile"</Directory>
2.建立修改自身密碼的php頁面
mkdir /opt/apache2/htdocs/svntools
cd /opt/apache2/htdocs/svntools
vim svnpass.php
輸入以下內容(其中第135,136行請根據實際情況進行修改):
<?$username = $_SERVER["PHP_AUTH_USER"]; //經過 AuthType Basic 認證的使用者名稱$authed_pass = $_SERVER["PHP_AUTH_PW"]; //經過 AuthType Basic 認證的密碼$input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : ""); //從介面上輸入的原密碼$newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : ""); //介面上輸入的新密碼$repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : ""); //介面上輸入的重複密碼$action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : ""); //以hide方式提交到伺服器的actionif($action!="modify"){$action = "view";}else if($authed_pass!=$input_oldpass){$action = "oldpasswrong";}else if(empty($newpass)){$action = "passempty";}else if($newpass!=$repeatpass){$action = "passnotsame";}else{$action = "modify";}?><html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK"><title>Subversion 線上自助密碼修改</title></head><body><?//action=view 顯示普通的輸入資訊if ($action == "view"){?><script language = "javaScript"><!--function loginIn(myform){var newpass=myform.newpass.value;var repeatpass=myform.repeatpass.value;if(newpass==""){alert("請輸入密碼!");return false;}if(repeatpass==""){alert("請重複輸入密碼!");return false;}if(newpass!=repeatpass){alert("兩次輸入密碼不一致,請重新輸入!");return false;}return true;}//--></script><style type="text/css"><!--table {border: 1px solid #CCCCCC;background-color: #f9f9f9;text-align: center;vertical-align: middle;font-size: 9pt;line-height: 15px;}th {font-weight: bold;line-height: 20px;border-top-width: 1px;border-right-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-bottom-style: solid;color: #333333;background-color: f6f6f6;}input{height: 18px;}.button {height: 20px;}--></style><br><br><br><form method="post"><input type="hidden" name="action" value="modify"/><table width="220" cellpadding="3" cellspacing="8" align="center"><tr><th colspan=2>Subversion 密碼修改</th></tr><tr><td>使用者名稱:</td><td align="left"> <?=$username?></td></tr><tr><td>原密碼:</td><td><input type=password size=12 name=oldpass></td></tr><tr><td>使用者密碼:</td><td><input type=password size=12 name=newpass></td></tr><tr><td>確認密碼:</td><td><input type=password size=12 name=repeatpass></td></tr><tr><td colspan=2><input onclick="return loginIn(this.form)" class="button" type=submit value="修 改"><input name="reset" type=reset class="button" value="取 消"></td></tr></table></form><?}else if($action == "oldpasswrong"){$msg="原密碼錯誤!";}else if($action == "passempty"){$msg="請輸入新密碼!";}else if($action == "passnotsame"){$msg="兩次輸入密碼不一致,請重新輸入!";}else{$passwdfile="/opt/subversion/conf/svn_passwdfile";$command=‘"/opt/apache2/bin/htpasswd" -b ‘.$passwdfile." ".$username." ".$newpass;system($command, $result);if($result==0){$msg="使用者[".$username."]密碼修改成功,請用新密碼登陸.";}else{$msg="使用者[".$username."]密碼修改失敗,傳回值為".$result.",請和管理員聯絡!";}}if (isset($msg)){?><script language="javaScript"><!--alert("<?=$msg?>");window.location.href="<?=$_SERVER["PHP_SELF"]?>"//--></script><?}?></body></html>
修改許可權
chown -R apache:apache /opt/apache2/htdocs/svntools
3.登陸頁面
3.1 開啟頁面http://192.168.116.128/svntools/svnpass.php(具體IP請根據實際情況填寫)
<轉>讓SVN使用者能夠修改自身密碼的PHP頁面