一、SVN配置文件
1.1 修改SVN配置文件
[root@svnback172 svn]#vim /etc/httpd/conf.d/svn.conf
#之前安装SVN的时候,已经手动创建这个文件了,详细可以参考‘SVN安装篇’
添加如下代码:
<Directory "/var/www/html/sample"> Require valid-user AuthType Basic AuthName "svn tools" AuthUserFile /data/svn/sample/.htpasswd </Directory>
参数说明:
<Directory " ">:指定实现SVN密码修改功能的PHP页面路径,下面会手动创建
AuthUserFile :指定SVN账号密码的文件,重点就是针对该文件进行修改操作
二、配置PHP修改页面
2.1 创建存放PHP页面的目录,每个库一个单独目录,便于管理
[root@svnback172 svn]#mkdir /var/www/html/sample && cd /var/www/html/sample
注意:PHP页面需要放在http的根目录下,因为到时候修改SVN密码是用http页面进行在线修改的。
2.2 手动创建PHP页面,修改密码的功能就是这个页面实现的
[root@svnback172 svn]#vim index.php
<?php //经过 AuthType Basic 认证的用户名 $username = $_SERVER["PHP_AUTH_USER"]; //经过 AuthType Basic 认证的密码 $authed_pass = $_SERVER["PHP_AUTH_PW"]; //从界面上输入的原密码 $input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : ""); //界面上输入的新密码 $newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : ""); //界面上输入的重复密码 $repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : ""); //以hide方式提交到服务器的action $action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : ""); if($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> <?php //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> <?php } else if($action == "oldpasswrong"){ $msg="原密码错误!"; } else if($action == "passempty"){ $msg="请输入新密码!"; } else if($action == "passnotsame"){ $msg="两次输入密码不一致,请重新输入!"; } else{ $passwdfile="/data/svn/sample/.htpasswd"; $command='"/usr/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> <?php } ?> </body> </html>
重点:第134行,需要修改对应SVN库的账户密码文件。
$passwdfile="/data/svn/sample/.htpasswd";
其实,这里已经可以通过‘http://IP/sample/index.php’自主修改密码了,但是为了后面的管理和使用方便,我们再创建一个统一修改密码的链接页面;
三、配置密码修改页面
3.1 手动创建http页面,用于指定SVN库进行密码修改
[root@svnback172 svn]#vim svn.html
添加如下代码:
<html> <head> <title>SVN密码在线自主修改</title> <style type="text/css"> body{ text-align:center } div div{ text-align:center; padding: 2%; } .first_div { margin:2% auto; } </style> </head> <body> <div class="first_div"> <h2>XXXXXXXX----SVN密码修改</h2> <div> <a href="http://IP/sample/index.php">sample</a> </div> </div> </body> </html>
重点:第21行,需要修改对应SVN库的密码修改http路径
<a href="http://IP/sample/index.php">sample</a>
如果有多个,只需要添加<div> XXXXXXXXXXXXX </div>,20到22行之间的内容即可。
以上的SVN页面配置的非常简单,有需要修饰的自行美工,这里只提供最简单的功能。
四、验证效果
4.1 重启httpd服务
[root@svnback172 svn]#systemctl restart httpd
4.2 浏览器访问:http://IP/svn.html
选择需要修改密码的SVN库,每个SVN库的密码文件都是独立的。