Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Comparing changes

Choose two branches to see what's changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base: f3ef0dac87
...
compare: 6caf0a49ef
Checking mergeability… Don't worry, you can still create the pull request.
  • 2 commits
  • 5 files changed
  • 0 commit comments
  • 1 contributor
Commits on Feb 20, 2013
deemstone 为第一次发布到npm做改动
配置目录只使用~/.dproxy弃用程序目录下的conf
setting中添加判断.dproxy是否存在,自动拷贝conf目录内容创建.dproxy
判断dproxy.conf文件是否存在,提示用户创建配置
修改package.json支持npm install -g
0160528
deemstone 为发布到npm修改部分文档
安装方法改为npm
声明其他平台未测试,node0.8下roll功能不正常
6caf0a4
View
52 README.md
@@ -1,45 +1,54 @@
Web调试代理 Dproxy
================
-按照配置的*规则列表*提供灵活的http代理服务.
+按照配置的 *规则列表* 提供灵活的http代理服务.
(暂时只支持普通http请求,后续添加websocket和https的支持)
-主要面向前端开发环境做的设计,由此省掉繁琐的*绑host*操作
+主要面向前端开发环境做的设计,由此省掉繁琐的“绑Host清DNS缓存”操作
>文档还需要完善,有问题可以直接联系我.
+>Mac下已经确认正常使用,其他平台功能正常,安装操作没有测试过
+
+>由于node0.8修改了tty相关接口,导致进入roll模式无法退出,稍后修复。
+
主要功能
-------
-普通的代理服务器功能:返回浏览器指定请求的结果
+普通的http代理服务器功能:代理浏览器的http请求,原样返回请求结果
-遵照一个*规则列表*,将特殊设置的地址用特殊的handler处理
+遵照 *规则列表* ,将匹配到的请求交给指定的handler处理,实现“偷梁换柱”的功能
作为一个简单的静态服务器:在前端开发的测试环境中替代nginx
使用方法
--------
-###下载安装
-不需要额外安装依赖模块,直接下载代码 > node cli.js
+###安装
+
+当然你得先安装node和npm
+
+``` bash
+ $ [sudo] npm install dproxy -g
+```
+
+第一次运行会自动创建~/.dproxy目录,内含几个配置样例,copy一下改个名就可以用了
-1. 首先,安装[Nodejs](http://www.nodejs.org)
-2. git clone git://github.com/deemstone/Dproxy.git /你的电脑/任意目录..
-3. 将工程下的./bin目录添加到系统环境变量$PATH中
-4. 在命令行中执行dproxy
-5. 根据需要编辑配置文件
+想要安装最新的代码,直接clone这个库,执行 ``` node cli.js ```
-###配置文件
-配置文件都放在./conf目录下,整体仿造nginx的设计
+###配置
-* ./conf/dproxy.conf 是代理服务器全局配置,可以更改端口号
+配置文件都放在~/.dproxy目录下,格式仿造nginx的配置文件风格
+
+* dproxy.conf 是代理服务器全局配置
工程下自带一个样例: dproxy.conf.sample
直接拷贝,修改使用
-* ./conf/rule 文件夹下的所有*.rule文件都是"代理规则"配置文件
+* rule 文件夹下的所有*.rule文件都是"代理规则"配置文件
也自带了一个样例: rule.sample
+ 直接拷贝,修改使用
###代理规则
@@ -48,9 +57,10 @@ Web调试代理 Dproxy
根据分组启用的先后顺序,后启用的分组,其中的规则会优先匹配
只能操作分组的"启用/停用"(不提供单条规则的操作)
-.rule文件主要由三大部分: handler定义块, oneline配置块, 分域名配置块
+.rule文件主要由三大部分: handler定义块, oneline配置块, 任意多个domain配置块
####handler定义块:
+
这里定义的handler仅可以在当前分组中引用,全局配置文件(dproxy.conf)中同名的handler会被忽略
handler的书写格式见.sample样例文件
@@ -61,17 +71,19 @@ handler的书写格式见.sample样例文件
* opm - 从opm服务获取文件
* online - 代理到线上环境
-其中,**opm**是一个前端的包管理工具,用python编写[项目地址](http://code.google.com/p/staticcompiler/)
+其中, **opm** 是一个前端的包管理工具,用python编写[项目地址](http://code.google.com/p/staticcompiler/)
####分域名配置块
+
每个域名写一个块(多个域名用逗号隔开)
rewrite 类似nginx的用法
default 如果没有找到匹配的规则,默认使用该条配置的handler处理该域名下的请求
-*匹配条件*只写除去域名剩下的路径部分,可以使用*作为通配符,用(xx|xxx)表示"或"操作
+*匹配条件* 只写除去域名剩下的路径部分,可以使用*作为通配符,用(xx|xxx)表示"或"操作
####oneline配置块
-意思是"单行配置",用一行配置添加一条规则,*匹配条件*需要写完整的url,也可以使用通配符
+
+意思是"单行配置",用一行配置添加一条规则, *匹配条件* 需要写完整的url,也可以使用通配符
###交互命令
@@ -90,7 +102,7 @@ proxy启动之后会进入一个简单的命令行模式,按一下Tab键列出
---------------
1. 接收到一个请求
-2. 查看该请求url是否与*规则列表*中某条规则匹配
+2. 查看该请求url是否与 *规则列表* 中某条规则匹配
3. 如果匹配,查询到该条规则指定的数据源(handler)
3. 根据handler的类型,把参数传递给相应的代理模块
4. 由代理模块发出请求,将处理结果返回浏览器
View
4 cli.js
@@ -1,6 +1,6 @@
+#!/usr/bin/env node
/*
* dproxy的一个命令行启动器
* 可以手动运行这个程序(./fun/dproxy-cli.js的一个替身)
*/
-
-require('./fun/dproxy-cli.js');
+require('./fun/dproxy-cli.js');
View
2  fun/dproxy-cli.js
@@ -44,7 +44,7 @@ try{
//把所有没处理的异常信息记录在文件里
var fs = require('fs');
var path = require('path');
-var dir_log = paths.base +'/log';
+var dir_log = paths.conf +'/log'; //如果全局安装--gloabl,普通用户运行权限无法操作basedir下的文件,所以改到.dproxy下存放log
if( !path.existsSync( dir_log ) ){
fs.mkdirSync( dir_log );
}
View
25 fun/settings.js
@@ -55,16 +55,25 @@ if(options.config){
}else{
//查看$HOME/.dproxy是否存在;从这里查找配置文件
var home_dproxy = path.resolve(process.env['HOME'] + '/.dproxy');
+ //如果还没有.dproxy就mkdir一个新的
+ if( !path.existsSync(home_dproxy) ){
+ require('child_process').exec('cp -R '+ paths.base +'/conf ~/.dproxy');
+ }
var filepath = path.resolve(home_dproxy +'/dproxy.conf');
- if(path.existsSync(filepath) ){ //path.existsSync( home_dproxy) &&
- paths.conf = home_dproxy;
- cfilepath = filepath;
- //接着判断这目录下面是否有个rule目录
- var home_rule = path.resolve(home_dproxy + '/rule');
- //if(path.existsSync( home_rule) ){
- paths.rule = home_rule;
- //}
+ if( !path.existsSync(filepath) ){
+ console.info();
+ console.info('第一次使用,先看一下~/.dproxy目录');
+ console.info('用sample创建一个dproxy.conf文件');
+ console.info();
+ console.info(' ^_^');
+ console.info();
+ process.exit(1);
}
+ paths.conf = home_dproxy;
+ cfilepath = filepath;
+ //接着判断这目录下面是否有个rule目录
+ var home_rule = path.resolve(home_dproxy + '/rule');
+ paths.rule = home_rule;
}
//读取指定配置文件的内容,解析成键值对象
View
13 package.json
@@ -6,7 +6,7 @@
"web debug",
"proxy"
],
- "version": "0.7",
+ "version": "0.7.1",
"homepage": "http://github.com/deemstone/Dproxy",
"author": "Deemstone Li <deemstone@gmail.com> (http://blog.cooer.net)",
"repository": {
@@ -22,8 +22,7 @@
"lib": "./lib",
"bin": "./bin"
},
- "main": "./fun/dproxy-cli.js",
- "bin": "./fun/dproxy-cli.js",
+ "bin": "./cli.js",
"dependencies": {
},
"bundleDependencies": [
@@ -32,11 +31,9 @@
"devDependencies": {
},
"engines": {
- "node": "0.6 || 0.7 || 0.8",
- "npm": "1"
+ "node": "0.6 || 0.7 || 0.8"
},
"scripts": {
- "test": "node ./test/run.js",
+ "test": "node ./test/run.js"
}
-}
-
+}

No commit comments for this range

Something went wrong with that request. Please try again.