Nodejs 使用IcedCoffeeScript制作的一个svn管理webui:svnpod

Nodejs 使用IcedCoffeeScript制作的一个svn管理webui:svnpod

IcedCoffeeScript俺用了挺长一段时间了,感觉把它用在nodejs里还真是优雅啊啊啊啊!

svnpod

xxx, 帮我开个svn账号。

这货有啥功能?

  • 让用户自己登陆后自己改密码
  • 帮他/她开(重置/删除)个svn账号
  • 支持svnserve和apache_svndav(因为它俩格式不一样,svnserve用的passwd不加密,而apache_svndav用的passwd加密)

这货长啥样?

undefined undefined undefined

咋用?

  • 安装nodejs
  • 安装这货: sudo npm install svnpod
  • 跑起来↓
PORT=8000 TITLE=有标题的svnpod ADMIN=admin PASSWD_SVNSERVE=/path/to/your/svnserve/passwd PASSWD_APACHE=/path/to/your/apache/passwd svnpod

这货看起来不错,赏个star!


6 回复

Nodejs 使用IcedCoffeeScript制作的一个svn管理webui:svnpod

IcedCoffeeScript 简介

IcedCoffeeScript 是 CoffeeScript 的一个扩展,它增加了协程的支持,使得异步编程变得更加直观。使用 IcedCoffeeScript 可以让 Node.js 代码更简洁、更易读。

svnpod 介绍

svnpod 是一个基于 Node.js 和 IcedCoffeeScript 开发的 SVN 管理 Web UI。它允许用户自行管理 SVN 账户,包括修改密码、创建新账户等操作。

功能列表

  • 让用户登录后自行更改密码
  • 创建、重置或删除 SVN 账户
  • 支持两种 SVN 服务器配置:
    • svnserve (使用未加密的密码文件)
    • Apache mod_dav_svn (使用加密的密码文件)

界面展示

界面展示 界面展示 界面展示

如何使用

  1. 安装 Node.js 首先确保你已经安装了 Node.js。

  2. 安装 svnpod

    sudo npm install svnpod
    
  3. 启动服务 运行以下命令来启动 svnpod

    PORT=8000 TITLE=有标题的svnpod ADMIN=admin PASSWD_SVNSERVE=/path/to/your/svnserve/passwd PASSWD_APACHE=/path/to/your/apache/passwd svnpod
    

    其中:

    • PORT: 设置监听端口。
    • TITLE: 设置页面标题。
    • ADMIN: 设置管理员用户名。
    • PASSWD_SVNSERVE: 设置 svnserve 密码文件路径。
    • PASSWD_APACHE: 设置 Apache mod_dav_svn 密码文件路径。

示例代码

以下是一个简单的示例代码片段,展示了如何使用 IcedCoffeeScript 来处理一个简单的 SVN 账户管理请求:

# 引入必要的模块
fs = require 'fs'
iced = require 'iced-coffee-script'

# 定义一个处理函数
handleSvnAccount = (username, password) ->
  # 检查是否为管理员
  if username == process.env.ADMIN
    # 写入新的密码到 svnserve 密码文件
    fs.writeFileSync process.env.PASSWD_SVNSERVE, "#{username}:#{password}\n", 'utf8'
    return "Password for #{username} has been updated."
  else
    return "Access denied."

# 启动服务器
iced.run """
server = require('http').createServer (req, res) ->
  switch req.url
    when '/update-password'
      body = ''
      req.on 'data', (chunk) -> body += chunk
      req.on 'end', ->
        [username, password] = body.split('&')
        res.writeHead 200, {'Content-Type': 'text/plain'}
        res.end handleSvnAccount(username, password)
server.listen process.env.PORT, () ->
  console.log "SVNPod running on port #{process.env.PORT}"
"""

以上代码定义了一个简单的 HTTP 服务器,处理 /update-password 路径的 POST 请求,并更新 SVN 用户密码。请注意,这只是一个简化的示例,实际应用中需要更多的错误处理和安全措施。

结语

如果你觉得这个项目有用,请不要吝啬你的 star!

GitHub 地址


这个 IcedCoffeeScript 运行时 是编译成 CoffeeScript,再编译成 Javascript?

http://maxtaco.github.io/coffee-script/

界面做的不错,挺简洁的。

和 CoffeeScript 一样的吧, 想不出什么必要编译成 CoffeeScript

感谢关注,IcedCoffeeScript和CoffeeScript一样,直接编译成JavaScript,(它的源代码都是从CoffeeScript里fork出来再加上自己的特性的,所以用法、命令行、githubPage都和CoffeeScript类似),IcedCoffeeScript加了两个关键字await 和defer ,和CoffeeScript的简介风格配合在一起简直是天造之和

关于“Nodejs 使用IcedCoffeeScript制作的一个svn管理webui:svnpod”这个帖子的内容,svnpod 是一个基于 Node.js 和 IcedCoffeeScript 开发的 SVN 管理 Web UI。它允许用户自行登录后修改密码,并提供创建、重置和删除 SVN 账户的功能。

svnpod 支持两种 SVN 服务的配置文件:svnserveapache_svndavsvnserve 使用的密码文件是明文存储的,而 apache_svndav 使用的密码文件则需要经过加密处理。

如何使用 svnpod

  1. 安装 Node.js
  2. 安装 svnpod
    sudo npm install svnpod
    
  3. 运行 svnpod
    PORT=8000 TITLE="有标题的svnpod" ADMIN=admin PASSWD_SVNSERVE=/path/to/your/svnserve/passwd PASSWD_APACHE=/path/to/your/apache/passwd svnpod
    

示例代码片段

虽然具体的实现细节可能较为复杂,但我们可以简要展示如何使用 IcedCoffeeScript 和 Node.js 来创建一个简单的 HTTP 服务器:

iced = require 'iced-runtime'
http = require 'http'

port = process.env.PORT || 8000
title = process.env.TITLE || "默认标题"

server = http.createServer (req, res) ->
    res.writeHead 200, {'Content-Type': 'text/html'}
    res.end """
    <!DOCTYPE html>
    <html>
        <head>
            <title>#{title}</title>
        </head>
        <body>
            <h1>欢迎来到 #{title}</h1>
            <form action="/login" method="post">
                用户名: <input type="text" name="username"><br>
                密码: <input type="password" name="password"><br>
                <button type="submit">登录</button>
            </form>
        </body>
    </html>
    """

server.listen port, () ->
    console.log "Server running at http://localhost:#{port}/"

以上代码展示了如何使用 IcedCoffeeScript 创建一个基本的 HTTP 服务器,并返回一个包含登录表单的 HTML 页面。实际的 svnpod 项目会更为复杂,包括数据库操作、权限验证等。

更多详细信息和完整代码可以查看 GitHub 仓库

回到顶部