zoukankan      html  css  js  c++  java
  • 用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('
    ');
    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] + '
    ');
    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中去。

  • 相关阅读:
    Android Studio下载gradle失败
    【宁熙】回望四月又七天
    caffe crnn windows上编译多标签分类版本
    图像识别方案的选择思考
    使用SVM进行图像识别的一些思考
    安卓usb串口免root调试
    交叉编译opencv移植到海思3518
    【2021-10-24】连岳摘抄
    【2021-10-23】人间词话
    【2021-10-22】梅兰芳
  • 原文地址:https://www.cnblogs.com/wendao/p/4952503.html
Copyright © 2011-2022 走看看