UNPKG

1.4 kBJavaScriptView Raw
1
2const koaRouter = require('koa-router');
3const koaBody = require('koa-body');
4const controller = {
5 ws: require('./controller/ws'),
6 site: require('./controller/site'),
7 devtools: require('./controller/devtools'),
8};
9const middleware = {
10 inspect: require('./middleware/inspect'),
11 inspectWebsocket: require('./middleware/inspectWebsocket'),
12 proxy: require('./middleware/proxy'),
13};
14
15module.exports = app => {
16 const router = koaRouter();
17 const routes = router.routes();
18
19 router.all(/^\w+:\/\/.*/, async (ctx, next) => {
20 // console.log(ctx.url);
21 await next();
22 });
23
24 // ------ proxy ----------
25 // proxy url start with protocol: `(https|http|wss)://host/path`
26 const httpURL = /^https?:\/\/.*/i;
27 router.all(httpURL, middleware.inspect);
28 router.all(httpURL, middleware.proxy);
29
30 const wsURL = /^wss?:\/\/.*/i;
31 router.all(wsURL, middleware.inspectWebsocket);
32 router.all(wsURL, middleware.proxy);
33
34 // ------ site ----------
35 // site url is normal
36 router.get('/feproxy.crt', controller.site.crt);
37 router.get('/log', controller.site.log);
38 router.get('/getConfig', controller.site.getConfig);
39 router.post('/setConfig', koaBody(), controller.site.setConfig);
40
41 // chrome inspect websocket
42 router.get('/ws', controller.ws);
43 // devtools
44 router.get(/\/devtools\/(.+)/, controller.devtools);
45
46 // use routes to app
47 app.use(routes);
48 app.ws.use(routes);
49};