Svn客户端自定义密码修改网页——PHP实现

概要

个人通过搭建SVN系统,记录一下自己走过的坑,以供他人后续不用再碰到相应的问题。

SVN版本:VisualSVN-Server-3.9.6(该版本及低版本可支持多个用户,高版本只支持15位用户)

资源

  • htpasswd.exe(网上有很多下载资源)

配置修改

1、PHP下载

由于需要PHP环境,在官网直接下载https://windows.php.net/download
在这里插入图片描述
将下载好的压缩文件复制到svn安装根目录中,名称命名为php,如下所示:
在这里插入图片描述

2、conf文件修改

打开SVN安装目录,C:\Program Files\VisualSVN Server\conf中的httpd-custom.conf文件
添加php运行环境。不同版本的dll文件名称会不一致,根据个人下载版本自定义选择。

LoadModule php_module "C:\Program Files\VisualSVN Server\php\php8apache2_4.dll"
<IfModule php_module>
    AddType application/x-httpd-php .php
    DirectoryIndex index.html index.php
</IfModule>
# 配置 php.ini 的路径
PHPIniDir "php"

在这里插入图片描述
为适应php不同版本,修改为php_module

3、conf文件修改

新建一个 php 文件(文件名:password.php)放到 C:\Program Files\VisualSVN Server\htdocs\password.phpphp文件是一个网页脚本,所以需要放在htdocs文件夹中
php文件代码如下:

<?php
/***************************************************************/
$passwdfile="C:\Repositories\htpasswd";
$htpasswdPath = "C:\Program Files\VisualSVN Server\bin\htpasswd.exe";
/***************************************************************/

$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方式提交到服务器的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=UTF-8">
    <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>

<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>SVN密码修改</th>
</tr>
<tr>
<td>用 户 名:</td>
<td align="left"> <?php echo $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="取 消">
<a href="/"><input name="return" type=button class="button" value="返 回"></a>
</td>
</tr>
</table>
</form>
<?php
} else if ($action == "oldpasswrong") {
    $msg="原密码错误!";
} else if ($action == "passempty") {
    $msg="请输入新密码!";
} else if ($action == "passnotsame") {
    $msg="两次输入密码不一致,请重新输入!";
} else {
//    $passwdfile="D:\SVN_Repositories\htpasswd";
//    $command='"d:\VisualSVN Server\bin\htpasswd.exe" -b '.$passwdfile." ".$username." ".$newpass;
    $command='"'. $htpasswdPath. '" -b '.$passwdfile." ".$username." ".$newpass;
    system($command, $result);
    if ($result==0) {
        $msg_succ="用户[".$username."]密码修改成功,请重新登陆.";
    } else {
        $msg="用户[".$username."]密码修改失败,返回值为".$result.",请和管理员联系!";
    }
}

if (isset($msg_succ)) {
?>
<script language="javaScript">
<!--
alert("<?php echo $msg_succ?>");
window.location.href="/"
//-->
</script>
<?php
} else if (isset($msg)) {
?>
<script language="javaScript">
<!--
alert("<?php echo $msg?>");
window.location.href="<?php echo $_SERVER["PHP_SELF"]?>"
//-->
</script>
<?php
}
?>
</body>
</html>


在这里插入图片描述
这2个文件,根据实际地址进行配置,尤其passwdfile配置错误,后续会一直提示修改失败。
passwdfile:svn用户文件
htpasswdPath:下载的exe文件

4、添加跳转链接

在这里插入图片描述
在network设置中,取消Use secure connections(HTTPS)勾选,在打开根目录文件,文件路径: C:\Program Files\VisualSVN Server\WebUI\index.html在页脚增加修改密码的链接,代码如下:

  <br /><br /><a style="font-size: 16px;" href="http://192.168.1.180:8080/password.php">自助修改密码</a>

4、测试

当你完成上述的所有步骤,直接在浏览器中访问服务器,下方出现修改密码链接,就可以进行密码修改了。
在这里插入图片描述

  先来说一下Squid for Windows的安装,需求:你要拥有一台可联网的、运行着Windows NT/2000/XP/Server 2003的计算机,还要有Squid   for windows的软件包。从网上下载的Squid for windows的二进制文件是压缩到zip文件里的,首先来解压缩这个文件,加压后会生成一个Squid的文件夹,将此文件夹拷贝到C:,至此Squid for Windows算是被“安装”到你的Windows计算机了。(备注:Squid for windows的默认安装是在C:squid下,当然,可以把Squid放到其他的路径,但是需要大量的配置squid配置文件中的路径信息,那样会比较麻烦)   Unix Like的操作系统下的大部分软件都是基于命令行的,使用文本文件进行配置,这样虽说对一些用惯了Windows下软件的朋友们会有些复杂的感觉,但是这样的软件还是有好处的,毕竟其没有Gui会有更高的性能,配置文件的编写更具灵活性,下面我们来看一下具体怎么配置   squid for windows。首先,单击[开始],选择“运行”,输入 cmd 打开Windows的“命令提示符” 窗口, 在命令提示符窗口内输入以下命令:   C:>cd c:squidetc   C:squidetc>copy squid.conf.default squid.conf  **将Squid的默认配置文件复制一份并起名为squid.conf   C:squidetc>copy mime.conf.default mime.conf   **将mime.conf.default复制一份并起名为mime.conf   下面,我们可以使用任意文本编辑器对squid.conf(配置文件)进行编辑,修改squid的配置语句,文件中的#后的文本表示注释。   首先,我们找到TAG: acl段,这里是定义访问Squid的IP地址及其对应的名称   我们在此段acl Safe_ports port 777 #multiling http后增加一个新行,写 “acl 名称 src IP地址”   示例:acl name1 src 192.168.100.0 #定义所有来自192.168.100.*的机器对应的名称为name1   然后我们找到TAG: http_access段,这里是定义允许访问squid的列表   我们在此段http_access deny CONNECT !SSL_ports后增加一个新行,写“http_access allow/deny 名称”,allow表示允许访问,deny表示拒   绝访问。   示例:http_access allow name1 #定义所有标识为name1(192.168.100.*)的机器允许访问squid代理服务器   并且在后面再增加一行 http_access deny all。   任何一个网络应用都会对应一个或N个端口,squid的默认端口是3128,如果要更改,找到 #http_port 3128 这里,删掉前面的#号,并且修改   后面的端口号。   示例:http_port 7777 #将squid的服务端口改为7777   由于Squid是基于Cache(缓存)的代理服务器,所以设置缓存的大小对优化服务器的性能是有必要的,下面来看一下如何设置cache的大小。   找到#cache_mem 8 MB这句 删掉前面的#号 将默认的8修改到需要的大小,这里的数值应视具体的机器可用内存而定,应在内存允许的情况下尽   量地设置的大一些以提高代理服务器性能,但不能让代理服务器的缓存大小影响本机器的性能。   示例:cache_mem 200 MB #设置squid使用200MB的内存当做代理服务器缓存   最后我们还要有一个步骤,否则在启动squid服务的时候会报错,那就是配置TAG: visible_hostname段,找到此段,再后面添加   visible_hostname 机器名(随便起) 这么一行,就搞定了。   示例:visible_hostname supersrv #将hostname设置为supersrv   至此,可以保存squid.conf并且退出文本编辑器了,简单的Squid for Windows的配置已经完成。   下面我们回到命令行,输入以下命令:   c:>cd c:squidsbin   C:squidsbin>squid -i  (注册Squid为Windows的服务,默认的服务名为SquidNT, 可以使用“管理工具”中的“服务”来启动/停用服务)   C:squidsbin>squid -z  (生成高速缓存的目录)   C:squidsbin>squid    (启动squid服务,另一种比较好的方法是在“管理工具”, “服务”中选择SquidNT,然后选择启动服务)  以上简明说明了squid for Windows的安装,配置,启动, 此文应用在Unix/Linux下的对Squid的简单配置也是可行的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值