用nodejs做一个svn密码修改页面

  linux上配置好svn后,管理修改密码还得去手工修改passwd这个文件,太麻烦,其实网上应该有配套的web管理修改界面。但我想自己用nodejs写一个,因为用node不用配置复杂的服务器。

  弄这种基于事件模型的语言,一定要小心,整个过程可能不是线性的。

 1 var http = require("http");
 2 var fs = require(‘fs‘);
 3 var url = require(‘url‘);
 4 var query = require(‘querystring‘);
 5
 6 var PASSWD_FILE = "/home/svn/conf/passwd";
 7
 8 http.createServer(function(request, reponse) {
 9     var params = url.parse(request.url);
10     var obj = query.parse(params.query);
11     var tm = new Date();
12     try {
13         console.log(tm.toLocaleString());
14         console.log(obj);
15         reponse.writeHead(200, {"Content-Type": "text/html"});
16         if(params.pathname == ‘/change‘) {
17             changePassword(obj.name.trim(), obj.password.trim(), obj.npassword.trim(), reponse);
18
19         } else {
20         fs.readFile("./main.html", "utf-8", function(err, data) {
21             reponse.write(data);
22             reponse.end();
23         });
24         }
25     } catch(err) {
26             console.log(err);
27     }
28 }).listen(8000);
29
30 function changePassword(name, password, npassword, reponse) {
31     var change = false;
32     fs.readFile(PASSWD_FILE, "utf-8", function(error, data) {
33         arr = data.split(‘\n‘);
34         for (var i = 0 ;i < arr.length; ++i) {
35             if(arr[i].indexOf("#") == -1 && arr[i].indexOf("[users]") == -1) {
36                 ap=arr[i].split("=");
37                 if(ap.length != 2) {
38                     continue;
39                 }
40                 var account = ap[0].trim();
41                 var passwd = ap[1].trim()
42                 if(name == account && password == passwd && npassword.length >= 3) {
43                     change = true;
44                     arr[i] = "";
45                     console.log("change account "+account + " password " + npassword);
46                     arr[i] = account + "=" + npassword;
47                 }
48             }
49         }
50
51         var outdata = "";
52         for (var i = 0; i < arr.length; i++) {
53             if(arr[i].replace(/(^s*)|(s*$)/g, "").length ==0) {
54                 continue;
55             }
56             outdata += (arr[i] + ‘\n‘);
57         };
58
59         fs.writeFile(PASSWD_FILE, outdata ,"utf-8", function(error) {
60             if(error || change == false) {
61                 fs.readFile("./error.html", "utf-8", function(err, data) {
62                 reponse.write(data);
63                 reponse.end();
64                 });
65             } else {
66                 fs.readFile("./success.html", "utf-8", function(err, data) {
67                 reponse.write(data);
68                 reponse.end();
69                 });
70             }
71         });
72     });
73 }

启动脚本命令:nohup node main.js > node.log &

nohup & 启动程序并后台执行,不会使程序跟着控制台的死掉而死掉;> node.log把控制台的日志重定向到node.log中去。

时间: 2024-07-29 10:08:51

用nodejs做一个svn密码修改页面的相关文章

做一个群组聊天页面

要做个群组聊天的页面,参考微信的web版本,大致就是分为左右两列,左边是群组列表,右边是群组中的对话 示例图如下: 这个页面风格是使用ACE做的,再次啧啧下,ACE真TMD强大,这个页面的风格很招人喜欢. 做这个页面刚开始的时候我走了弯路,初步想的是使用iframe,左侧群组聊天页面是页面加载的,右侧的群组对话框是个iframe.然后点击左侧的任意一个群组,右侧的对话iframe就修改src,然后更新对话的时候也超简单,直接iframe重新加载一下就ok了. 但是呢,后来发现,我这样需要写的co

[electron 工具] 使用 electron、vue 和 nodejs 做一个 SOAP 测试工具之一 ( 简介 )

(简介直接将主页的介绍复制过来好了) Soap-Sender 主页 1.0.1 更新记录 优化基本设置页面判断 IP 和密码的响应时间 保存基本设置页面的设置 历史记录添加 Response Time 的排序 历史记录添加删除按钮 历史记录添加导入数据到发送页面 历史记录添加 Response Code 0 和非 0 的颜色区分 添加检查新版本 使用说明: 下载和使用 1-1. 软件下载后 .zip 后缀,解压缩后得到一个 exe 自解压文件.双击 exe 文件解压后得到一个文件夹.运行文件夹里

用NodeJs做一个小爬虫

作者:北京起步科技前端研究员,专注分享HTML5 App快速开发工具 WeX5 的黑魔法以及相应的前端技术. 前言 利用爬虫可以做很多事情,单身汉子们可以用爬虫来收集各种妹子情报,撩妹族们可以用爬虫收集妹子想要的小东西,赚大钱的人可以用来分析微博言论与股票涨跌的关系诸如此类的,简直要上天了. 你们感受一下 点我点我: 蠢蠢欲动 抛开机器学习这种貌似很高大上的数据处理技术,单纯的做一个爬虫获取数据还是非常简单的.对于前段er们来说,生在有nodejs的年代真是不要太幸福了,下面就用nodejs来做

用C# Winform做一个文件名批量修改器

我是一名QA,我提bug以后有个习惯,就是将bug的jira地址保存为一个链接存在本地,如下: 每天都要手动的把日期“[XX.XX]”添加在里面,这个反复修改文件名的过程是比较枯燥的,于是我决定写一个窗体tool来实现,窗体如下: 点击选择后会跳出选择的folder路径的界面,这个地方用到了FolderBrowserDialog控件: 之后点击修改就可以修改选择的folder路径下所有的文件名了. 整个窗体的代码如下: using System; using System.Collections

做一个计时器示例 在页面上有一个文本框和一个普通按钮 在状态栏上显示,单击按钮,开始计时的提示信息 单击按钮时,在文本框显示计数的过程,同时要求按钮上的字,显示为“单击暂停” 此时单击按钮,暂停计时,同时按钮上的字显示为“继续计时”,要求这两种状态来回切换,来完成计数器的功能

2015-04-12 20:15:25 方法一; <script> var s=0; var timeout=0; status='点击按钮,开始计时'; function count(){ s++; time1.value=s; timeout=setTimeout('count();',100); } function onChange(){ if(timeout==0){ count(); time2.value='暂停计时'; status='点击按钮,暂停计时'; }else{ cl

【filter 页面重定向循环】写一个过滤器造成的页面重定向循环的问题

今天做一个过滤器,碰上页面重定向循环的情况: 浏览器的访问路径是:http://192.168.16.104:8080/biologyInfo/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login1.htmls 过滤器的类如下: 1 package com.agen.util;

Windows Server 2012 R2中通过IIS实现AD帐号密码修改功能

现在越来越多的企业会对AD帐号进行分类,例如将业务帐号.服务帐号同员工帐号分开管理,那么这类帐号也会因为业务应用特定类型而选择是否开启邮箱功能,再或者有些企业会采用腾讯企业邮箱或网易企业邮箱等等,这些平台本身同AD域是独立的,而且很多企业又使用MAC系统或计算机根本不加域,这时企业内网要搭建OA.WIKI.JIRA等一些需要调用AD中的LDAP让员工登录的系统时,则面临后期密码到期后用户没有入口去修改密码的问题.那么在今天我就要给大家介绍的是如何利用Windows Server 2012 R2中

Windows Server 2012 R2通过IIS实现AD帐号密码修改功能

最近好多客户问我,他们现在的AD仅仅用户OA\WIFI等一些业务系统的后台账号统一平台,一时半会还上不了Exchange,而且现在也没有客户端加域,现在面临了大面积的用户密码到期后没有修改的方法,问我有神马好的建议,那么今天我就给大家介绍下如何利用Windows Server 2012 R2中的远程桌面服务来实现密码修改以解决这些场景遇到的问题. 一.安装远程桌面服务及IIS服务角色 在任务栏中单击下图所示"服务器管理器"图标. 打开的"服务器管理器"窗口中,单击&

前端的小玩意(9.3)——做一个仿360工具箱的web页面(我的工具里的模板和样式)

前端的小玩意(9.1)--做一个仿360工具箱的web页面(Tab按钮切换) http://blog.csdn.net/qq20004604/article/details/52216203 前端的小玩意(9.2)--做一个仿360工具箱的web页面(全部工具里面的模板) http://blog.csdn.net/qq20004604/article/details/52226223 (三)我的工具页面布局 如图: 首先将其分为二部分: 第一部分是上方整体红色方框区域: 包含若干个独立按钮,按钮