用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中去。
转载于:https://www.cnblogs.com/wendao/p/4952503.html
用nodejs做一个svn密码修改页面相关推荐
- 使用有道词典API做一个简单的翻译页面 HTML+JS+有道词典API(代码可直接运行)
使用有道词典API做一个简单的翻译页面 HTML+JS+有道词典API(代码可直接运行) 代码很简单,适合初学者学习借鉴.可以当成一个小工具使用. 注意: 1.代码应联网使用. 2.在输入密钥和id时 ...
- DWZ 用dialog调用MVC自动生成的密码修改页面一直出现“数据加载中,请稍等...”和去掉“数据加载中,请稍等”的方法
在MVC框架中调用JS框架<DWZ富客户端框架>在用dialog调用自动MVC系统自动生成的密码修改页面一直出现"数据加载中,请稍等..."的问题. <a tit ...
- vue 做一个定点地图的页面(定位到你想要的地点)
实例:如何用vue做一个定点地图的页面,进入一个地图,并且定位到你想要的地点. 这里举一个定点医院的例子. 在pages中添加一个vue页面为Hospital_map.vue,将该网页注册到路由src ...
- [Js插件]使用JqueryUI的弹出框做一个“炫”的登录页面
引言 查看项目代码的时候,发现项目中用到JqueryUi的弹出框,可拖拽,可设置模式对话框,就想着使用它弄一个登录页面. 弹出框 在Jquery Ui官网可定制下载弹出框,下载和弹出框下载相关的js文 ...
- 新手怎么做一个免费的单页面响应式网站?
单页面网站近年来受到很多企业青睐,一个干干净净的单页面,不仅能直观地传达企业信息,在展示上也给了企业更多的可能性.部分企业做单页面网站是为了做营销活动,不仅能为主站引流,更能让单页网站的转化更为直观, ...
- 游戏测试 | 游戏工具:做一个可以即时修改卡牌属性的工具方便测试
本文由特尔斯特发表于TesterHome论坛,点击原文链接可查看作者的更多文章并与ta在线交流. 场景: 在测试战斗的过程中经常需要调数值来方便测试.比如要测某张卡牌的法术技能,直接测要等这张卡牌满蓝 ...
- [electron 工具] 使用 electron、vue 和 nodejs 做一个网件路由器 SOAP API 测试工具之一 ( 简介 )...
(简介直接将主页的介绍复制过来好了) Soap-Sender 主页 1.0.1 更新记录 优化基本设置页面判断 IP 和密码的响应时间 保存基本设置页面的设置 历史记录添加 Response Time ...
- 游戏测试 | 测试工具:做一个可以即时修改卡牌属性的工具方便测试
01 场景 在测试战斗的过程中经常需要调数值来方便测试.比如要测某张卡牌的法术技能,直接测要等这张卡牌满蓝了放法术看效果,这样不是很方便,因为它可能在放法术之前被杀了,又或者放法术的时机不是自己想要的 ...
- 用NodeJs做一个小爬虫
作者:北京起步科技前端研究员,专注分享HTML5 App快速开发工具 WeX5 的黑魔法以及相应的前端技术. 前言 利用爬虫可以做很多事情,单身汉子们可以用爬虫来收集各种妹子情报,撩妹族们可以用爬虫收 ...
最新文章
- 三步走——带你打造一份完美的数据科学家简历|(附件有PPT福利)
- ASP3.0给我们带来的新技术之一---DataShaping技术
- python3 request模块 post请求四种方式
- mongodb小结(转)
- 马鞍山职业计算机考试,2020年职业适应性(技能)测试纲要
- NET问答:Select 和 SelectMany 的区别
- RabbitMQ MQTT协议和AMQP协议
- Qt 字符串QString arg()用法总结
- 开发一个最简单的Cardboard虚拟现实应用(四)做一个Cardboard第一人称控制器
- java 中super_Java中的super
- 动环监控系统服务器维护,机房动环设备维护与检测的13个具体内容
- openGL之API学习(一二七)dFdx、dFdy偏导数
- leetcode 1723.完成所有工作的最短时间 - 二分+递归
- python批量检索文献pubmed_PubMed快速检索文献,学学这些技巧!
- 微信公众号和微信小程序进程名获取及配置
- 【嵌入式操作系统-2】Cortex-M7处理器编程者模型
- Linux下磁盘挂载
- 日志分析---携来百侣曾游,忆往昔峥嵘岁月稠
- ssm基于Java的微小企业人事管理系统的设计与实现毕业设计源码231012
- [转] C++ STL详解