commit
7697298d76
17 changed files with 1267 additions and 0 deletions
-
2.gitignore
-
23Install.js
-
19Uninstall.js
-
56app.js
-
90bin/www
-
76index.html
-
79lib/RequestManager.js
-
783package-lock.json
-
18package.json
-
8public/stylesheets/style.css
-
24routes/cameras.js
-
45routes/imgs.js
-
16routes/index.js
-
10routes/users.js
-
6views/error.jade
-
5views/index.jade
-
7views/layout.jade
@ -0,0 +1,2 @@ |
|||
#忽略 node_modules |
|||
/node_modules/* |
@ -0,0 +1,23 @@ |
|||
let path = require('path'); |
|||
|
|||
let Service = require('node-windows').Service; |
|||
|
|||
// Create a new service object
|
|||
let svc = new Service({ |
|||
name:'node windows server test', //名称
|
|||
description: 'The socket.io nodejs server test ',//描述
|
|||
script: './bin/www',//node执行入口
|
|||
execPath:'C:\\Program Files\\nodejs\\node.exe', |
|||
nodeOptions: [ |
|||
'--harmony', |
|||
'--max_old_space_size=4096' |
|||
] |
|||
}); |
|||
|
|||
// Listen for the "install" event, which indicates the
|
|||
// process is available as a service.
|
|||
svc.on('install',function(){ |
|||
svc.start(); |
|||
}); |
|||
|
|||
svc.install(); |
@ -0,0 +1,19 @@ |
|||
let Service = require('node-windows').Service; |
|||
|
|||
let svc = new Service({ |
|||
name:'node windows server test', //名称
|
|||
description: 'The socket.io nodejs server test ',//描述
|
|||
script: './bin/www',//node执行入口
|
|||
execPath:'C:\\Program Files\\nodejs\\node.exe', |
|||
nodeOptions: [ |
|||
'--harmony', |
|||
'--max_old_space_size=4096' |
|||
] |
|||
}); |
|||
|
|||
svc.on('uninstall',function(){ |
|||
console.log('Uninstall complete.'); |
|||
console.log('The service exists: ',svc.exists); |
|||
}); |
|||
|
|||
svc.uninstall() |
@ -0,0 +1,56 @@ |
|||
var createError = require('http-errors'); |
|||
var express = require('express'); |
|||
var path = require('path'); |
|||
var cookieParser = require('cookie-parser'); |
|||
var logger = require('morgan'); |
|||
|
|||
var indexRouter = require('./routes/index'); |
|||
var usersRouter = require('./routes/users'); |
|||
var camerasRouter = require('./routes/cameras'); |
|||
var imgRouter = require('./routes/imgs'); |
|||
|
|||
var app = express(); |
|||
|
|||
// view engine setup
|
|||
app.set('views', path.join(__dirname, 'views')); |
|||
app.set('view engine', 'jade'); |
|||
|
|||
//设置跨域访问
|
|||
app.all('*', (req, res, next) => { |
|||
res.header("Access-Control-Allow-Origin", "*"); |
|||
res.header("Access-Control-Allow-Headers", "X-Requested-With"); |
|||
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); |
|||
res.header("X-Powered-By",' 3.2.1') |
|||
res.header("Content-Type", "application/json;charset=utf-8"); |
|||
next(); |
|||
}); |
|||
|
|||
app.use(logger('dev')); |
|||
app.use(express.json()); |
|||
app.use(express.urlencoded({ extended: false })); |
|||
app.use(cookieParser()); |
|||
app.use(express.static(path.join(__dirname, 'public'))); |
|||
|
|||
app.use('/', indexRouter); |
|||
app.use('/users', usersRouter); |
|||
app.use('/cameras', camerasRouter); |
|||
app.use('/imgs', imgRouter); |
|||
|
|||
// catch 404 and forward to error handler
|
|||
app.use(function(req, res, next) { |
|||
next(createError(404)); |
|||
}); |
|||
|
|||
|
|||
// error handler
|
|||
app.use(function(err, req, res, next) { |
|||
// set locals, only providing error in development
|
|||
res.locals.message = err.message; |
|||
res.locals.error = req.app.get('env') === 'development' ? err : {}; |
|||
|
|||
// render the error page
|
|||
res.status(err.status || 500); |
|||
res.render('error'); |
|||
}); |
|||
|
|||
module.exports = app; |
@ -0,0 +1,90 @@ |
|||
#!/usr/bin/env node |
|||
|
|||
/** |
|||
* Module dependencies. |
|||
*/ |
|||
|
|||
var app = require('../app'); |
|||
var debug = require('debug')('server:server'); |
|||
var http = require('http'); |
|||
|
|||
/** |
|||
* Get port from environment and store in Express. |
|||
*/ |
|||
|
|||
var port = normalizePort(process.env.PORT || '3000'); |
|||
app.set('port', port); |
|||
|
|||
/** |
|||
* Create HTTP server. |
|||
*/ |
|||
|
|||
var server = http.createServer(app); |
|||
|
|||
/** |
|||
* Listen on provided port, on all network interfaces. |
|||
*/ |
|||
|
|||
server.listen(port); |
|||
server.on('error', onError); |
|||
server.on('listening', onListening); |
|||
|
|||
/** |
|||
* Normalize a port into a number, string, or false. |
|||
*/ |
|||
|
|||
function normalizePort(val) { |
|||
var port = parseInt(val, 10); |
|||
|
|||
if (isNaN(port)) { |
|||
// named pipe |
|||
return val; |
|||
} |
|||
|
|||
if (port >= 0) { |
|||
// port number |
|||
return port; |
|||
} |
|||
|
|||
return false; |
|||
} |
|||
|
|||
/** |
|||
* Event listener for HTTP server "error" event. |
|||
*/ |
|||
|
|||
function onError(error) { |
|||
if (error.syscall !== 'listen') { |
|||
throw error; |
|||
} |
|||
|
|||
var bind = typeof port === 'string' |
|||
? 'Pipe ' + port |
|||
: 'Port ' + port; |
|||
|
|||
// handle specific listen errors with friendly messages |
|||
switch (error.code) { |
|||
case 'EACCES': |
|||
console.error(bind + ' requires elevated privileges'); |
|||
process.exit(1); |
|||
break; |
|||
case 'EADDRINUSE': |
|||
console.error(bind + ' is already in use'); |
|||
process.exit(1); |
|||
break; |
|||
default: |
|||
throw error; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* Event listener for HTTP server "listening" event. |
|||
*/ |
|||
|
|||
function onListening() { |
|||
var addr = server.address(); |
|||
var bind = typeof addr === 'string' |
|||
? 'pipe ' + addr |
|||
: 'port ' + addr.port; |
|||
debug('Listening on ' + bind); |
|||
} |
@ -0,0 +1,76 @@ |
|||
<!DOCTYPE html> |
|||
|
|||
<head> |
|||
<meta charset="utf-8"> |
|||
<meta name="viewport" content="width=device-width"> |
|||
<title>DEMO node-rtsp-stream-jsmpeg</title> |
|||
<script src="https://jsmpeg.com/jsmpeg.min.js"></script> |
|||
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> |
|||
|
|||
<style type="text/css"> |
|||
html, |
|||
body { |
|||
|
|||
text-align: center; |
|||
} |
|||
|
|||
input[type='text'] { |
|||
width: 450px; |
|||
} |
|||
</style> |
|||
</head> |
|||
|
|||
<body> |
|||
<div> |
|||
<!-- <span>rtsp : <input type="text" name="rtsp" id="rtsp" value="rtsp://admin:xcs123456@192.168.3.11:554/h264/ch1/main/av_stream"></span><br /> --> |
|||
<span>rtsp : <input type="text" name="rtsp" id="rtsp" value="rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov"></span><br /> |
|||
|
|||
<span>rtsp : <input type="text" name="size" id="size" value="1024*768"></span><br /> |
|||
<canvas id="video-canvas"> |
|||
</canvas><br /> |
|||
|
|||
<input type="button" value="Start Stream" onclick="start()"> |
|||
<input type="button" value="Close Stream" onclick="closeStream()"> |
|||
</div> |
|||
|
|||
|
|||
<script type="text/javascript"> |
|||
var player |
|||
|
|||
function closeStream() { |
|||
$.post("http://127.0.0.1:3000/cameras/close/", { rtspUrl: $('#rtsp').val() }, function (result) { |
|||
player.destroy() |
|||
}) |
|||
} |
|||
|
|||
|
|||
function start() { |
|||
var rstp = $('#rtsp').val() |
|||
var size = $('#size').val() |
|||
$.post("http://127.0.0.1:3000/cameras/", { rtspUrl:rstp, size: size }, function (result) { |
|||
var url = "ws://127.0.0.1:" + result.port; |
|||
var canvas = document.getElementById('video-canvas'); |
|||
let opt = { |
|||
canvas: canvas, |
|||
poster: "0.jpg", |
|||
} |
|||
player = new JSMpeg.Player(url, opt); |
|||
}) |
|||
|
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
</script> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
</body> |
@ -0,0 +1,79 @@ |
|||
const Stream = require('node-rtsp-stream') |
|||
const args = [] |
|||
const requestManager = function () { } |
|||
requestManager.prototype = { |
|||
Open: function (arg) { |
|||
let result = {} |
|||
if (args.length == 0) { |
|||
result = this._create(arg) |
|||
result = this._openVideo(result) |
|||
} else { |
|||
args.forEach(a => { |
|||
if (a.rtspUrl == arg.rtspUrl) { |
|||
result = a |
|||
} |
|||
}) |
|||
if (result.port === undefined || result.rtspUrl === undefined) { |
|||
result = this._create(arg) |
|||
result = this._openVideo(result) |
|||
} |
|||
} |
|||
|
|||
return result; |
|||
}, |
|||
Close: function (arg) { |
|||
let result = {} |
|||
let idx = -1 |
|||
idx = args.findIndex(a => a.rtspUrl == arg.rtspUrl) |
|||
if (idx !== -1) { |
|||
args[idx].stream.stop() |
|||
result = args.splice(idx, 1) |
|||
} else { |
|||
|
|||
} |
|||
console.log(args) |
|||
return result |
|||
}, |
|||
_randomPort: function () { |
|||
let port = Math.floor(Math.random() * (4001 - 3001) + 3001) |
|||
return port |
|||
}, |
|||
_openVideo: function (arg) { |
|||
arg.stream = new Stream({ |
|||
name: 'name', |
|||
//streamUrl: 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov',
|
|||
streamUrl: arg.rtspUrl, |
|||
wsPort: arg.port, |
|||
ffmpegOptions: { // options ffmpeg flags
|
|||
'-stats': '', // an option with no neccessary value uses a blank string
|
|||
'-r': 30, // options with required values specify the value after the key
|
|||
'-s': arg.size, |
|||
'-codec:a': 'mp2', |
|||
'-ar': 44100, |
|||
'-ac': 1, |
|||
'-b:a': '128k' |
|||
} |
|||
}) |
|||
return arg |
|||
}, |
|||
_create: function (arg) { |
|||
let target = { |
|||
rtspUrl: 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov', |
|||
port: this._randomPort(), |
|||
size: '1024*768', |
|||
stream: null |
|||
} |
|||
let source = { |
|||
rtspUrl: arg.rtspUrl, |
|||
port: this._randomPort(), |
|||
size: arg.size, |
|||
stream: null |
|||
} |
|||
Object.assign(target, source) |
|||
args.push(target) |
|||
return target |
|||
} |
|||
|
|||
} |
|||
|
|||
module.exports = requestManager |
@ -0,0 +1,783 @@ |
|||
{ |
|||
"name": "server", |
|||
"version": "0.0.0", |
|||
"lockfileVersion": 1, |
|||
"requires": true, |
|||
"dependencies": { |
|||
"accepts": { |
|||
"version": "1.3.7", |
|||
"resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", |
|||
"integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", |
|||
"requires": { |
|||
"mime-types": "~2.1.24", |
|||
"negotiator": "0.6.2" |
|||
} |
|||
}, |
|||
"acorn": { |
|||
"version": "2.7.0", |
|||
"resolved": "https://registry.nlark.com/acorn/download/acorn-2.7.0.tgz", |
|||
"integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=" |
|||
}, |
|||
"acorn-globals": { |
|||
"version": "1.0.9", |
|||
"resolved": "https://registry.npm.taobao.org/acorn-globals/download/acorn-globals-1.0.9.tgz", |
|||
"integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", |
|||
"requires": { |
|||
"acorn": "^2.1.0" |
|||
} |
|||
}, |
|||
"align-text": { |
|||
"version": "0.1.4", |
|||
"resolved": "https://registry.npm.taobao.org/align-text/download/align-text-0.1.4.tgz", |
|||
"integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", |
|||
"requires": { |
|||
"kind-of": "^3.0.2", |
|||
"longest": "^1.0.1", |
|||
"repeat-string": "^1.5.2" |
|||
} |
|||
}, |
|||
"amdefine": { |
|||
"version": "1.0.1", |
|||
"resolved": "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz", |
|||
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" |
|||
}, |
|||
"array-flatten": { |
|||
"version": "1.1.1", |
|||
"resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz", |
|||
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" |
|||
}, |
|||
"asap": { |
|||
"version": "1.0.0", |
|||
"resolved": "https://registry.npm.taobao.org/asap/download/asap-1.0.0.tgz", |
|||
"integrity": "sha1-sqRdpf36ILBJb8N2jMJ8EvqRan0=" |
|||
}, |
|||
"basic-auth": { |
|||
"version": "2.0.1", |
|||
"resolved": "https://registry.npm.taobao.org/basic-auth/download/basic-auth-2.0.1.tgz", |
|||
"integrity": "sha1-uZgnm/R844NEtPPPkW1Gebv1Hjo=", |
|||
"requires": { |
|||
"safe-buffer": "5.1.2" |
|||
} |
|||
}, |
|||
"body-parser": { |
|||
"version": "1.18.3", |
|||
"resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.18.3.tgz", |
|||
"integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", |
|||
"requires": { |
|||
"bytes": "3.0.0", |
|||
"content-type": "~1.0.4", |
|||
"debug": "2.6.9", |
|||
"depd": "~1.1.2", |
|||
"http-errors": "~1.6.3", |
|||
"iconv-lite": "0.4.23", |
|||
"on-finished": "~2.3.0", |
|||
"qs": "6.5.2", |
|||
"raw-body": "2.3.3", |
|||
"type-is": "~1.6.16" |
|||
} |
|||
}, |
|||
"bytes": { |
|||
"version": "3.0.0", |
|||
"resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz", |
|||
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" |
|||
}, |
|||
"camelcase": { |
|||
"version": "1.2.1", |
|||
"resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-1.2.1.tgz?cache=0&sync_timestamp=1603921884289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-1.2.1.tgz", |
|||
"integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" |
|||
}, |
|||
"center-align": { |
|||
"version": "0.1.3", |
|||
"resolved": "https://registry.npm.taobao.org/center-align/download/center-align-0.1.3.tgz", |
|||
"integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", |
|||
"requires": { |
|||
"align-text": "^0.1.3", |
|||
"lazy-cache": "^1.0.3" |
|||
} |
|||
}, |
|||
"character-parser": { |
|||
"version": "1.2.1", |
|||
"resolved": "https://registry.npm.taobao.org/character-parser/download/character-parser-1.2.1.tgz", |
|||
"integrity": "sha1-wN3kqxgnE7kZuXCVmhI+zBow/NY=" |
|||
}, |
|||
"clean-css": { |
|||
"version": "3.4.28", |
|||
"resolved": "https://registry.nlark.com/clean-css/download/clean-css-3.4.28.tgz", |
|||
"integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", |
|||
"requires": { |
|||
"commander": "2.8.x", |
|||
"source-map": "0.4.x" |
|||
}, |
|||
"dependencies": { |
|||
"commander": { |
|||
"version": "2.8.1", |
|||
"resolved": "https://registry.nlark.com/commander/download/commander-2.8.1.tgz?cache=0&sync_timestamp=1624609539421&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.8.1.tgz", |
|||
"integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", |
|||
"requires": { |
|||
"graceful-readlink": ">= 1.0.0" |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
"cliui": { |
|||
"version": "2.1.0", |
|||
"resolved": "https://registry.npm.taobao.org/cliui/download/cliui-2.1.0.tgz", |
|||
"integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", |
|||
"requires": { |
|||
"center-align": "^0.1.1", |
|||
"right-align": "^0.1.1", |
|||
"wordwrap": "0.0.2" |
|||
}, |
|||
"dependencies": { |
|||
"wordwrap": { |
|||
"version": "0.0.2", |
|||
"resolved": "https://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.2.tgz", |
|||
"integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" |
|||
} |
|||
} |
|||
}, |
|||
"commander": { |
|||
"version": "2.6.0", |
|||
"resolved": "https://registry.nlark.com/commander/download/commander-2.6.0.tgz?cache=0&sync_timestamp=1624609539421&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.6.0.tgz", |
|||
"integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=" |
|||
}, |
|||
"constantinople": { |
|||
"version": "3.0.2", |
|||
"resolved": "https://registry.npm.taobao.org/constantinople/download/constantinople-3.0.2.tgz", |
|||
"integrity": "sha1-S5RdmTeQe82Y7ldRIsOBdRZUQUE=", |
|||
"requires": { |
|||
"acorn": "^2.1.0" |
|||
} |
|||
}, |
|||
"content-disposition": { |
|||
"version": "0.5.2", |
|||
"resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcontent-disposition%2Fdownload%2Fcontent-disposition-0.5.2.tgz", |
|||
"integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" |
|||
}, |
|||
"content-type": { |
|||
"version": "1.0.4", |
|||
"resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", |
|||
"integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" |
|||
}, |
|||
"cookie": { |
|||
"version": "0.4.0", |
|||
"resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz", |
|||
"integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=" |
|||
}, |
|||
"cookie-parser": { |
|||
"version": "1.4.5", |
|||
"resolved": "https://registry.npm.taobao.org/cookie-parser/download/cookie-parser-1.4.5.tgz", |
|||
"integrity": "sha1-PlctS3wMgPnGHa9gTkM2gxtdHUk=", |
|||
"requires": { |
|||
"cookie": "0.4.0", |
|||
"cookie-signature": "1.0.6" |
|||
} |
|||
}, |
|||
"cookie-signature": { |
|||
"version": "1.0.6", |
|||
"resolved": "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz", |
|||
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" |
|||
}, |
|||
"css": { |
|||
"version": "1.0.8", |
|||
"resolved": "https://registry.nlark.com/css/download/css-1.0.8.tgz", |
|||
"integrity": "sha1-k4aBHKgrzMnuf7WnMrHioxfIo+c=", |
|||
"requires": { |
|||
"css-parse": "1.0.4", |
|||
"css-stringify": "1.0.5" |
|||
} |
|||
}, |
|||
"css-parse": { |
|||
"version": "1.0.4", |
|||
"resolved": "https://registry.nlark.com/css-parse/download/css-parse-1.0.4.tgz", |
|||
"integrity": "sha1-OLBQP7+dqfVOnB29pg4UXHcRe90=" |
|||
}, |
|||
"css-stringify": { |
|||
"version": "1.0.5", |
|||
"resolved": "https://registry.npm.taobao.org/css-stringify/download/css-stringify-1.0.5.tgz", |
|||
"integrity": "sha1-sNBClG2ylTu50pKQCmy19tASIDE=" |
|||
}, |
|||
"debug": { |
|||
"version": "2.6.9", |
|||
"resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", |
|||
"integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", |
|||
"requires": { |
|||
"ms": "2.0.0" |
|||
} |
|||
}, |
|||
"decamelize": { |
|||
"version": "1.2.0", |
|||
"resolved": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz?cache=0&sync_timestamp=1610348638646&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdecamelize%2Fdownload%2Fdecamelize-1.2.0.tgz", |
|||
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" |
|||
}, |
|||
"depd": { |
|||
"version": "1.1.2", |
|||
"resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", |
|||
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" |
|||
}, |
|||
"destroy": { |
|||
"version": "1.0.4", |
|||
"resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", |
|||
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" |
|||
}, |
|||
"ee-first": { |
|||
"version": "1.1.1", |
|||
"resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", |
|||
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" |
|||
}, |
|||
"encodeurl": { |
|||
"version": "1.0.2", |
|||
"resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz", |
|||
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" |
|||
}, |
|||
"escape-html": { |
|||
"version": "1.0.3", |
|||
"resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", |
|||
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" |
|||
}, |
|||
"etag": { |
|||
"version": "1.8.1", |
|||
"resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz", |
|||
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" |
|||
}, |
|||
"express": { |
|||
"version": "4.16.4", |
|||
"resolved": "https://registry.npm.taobao.org/express/download/express-4.16.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpress%2Fdownload%2Fexpress-4.16.4.tgz", |
|||
"integrity": "sha1-/d72GSYQniTFFeqX/S8b2/Yt8S4=", |
|||
"requires": { |
|||
"accepts": "~1.3.5", |
|||
"array-flatten": "1.1.1", |
|||
"body-parser": "1.18.3", |
|||
"content-disposition": "0.5.2", |
|||
"content-type": "~1.0.4", |
|||
"cookie": "0.3.1", |
|||
"cookie-signature": "1.0.6", |
|||
"debug": "2.6.9", |
|||
"depd": "~1.1.2", |
|||
"encodeurl": "~1.0.2", |
|||
"escape-html": "~1.0.3", |
|||
"etag": "~1.8.1", |
|||
"finalhandler": "1.1.1", |
|||
"fresh": "0.5.2", |
|||
"merge-descriptors": "1.0.1", |
|||
"methods": "~1.1.2", |
|||
"on-finished": "~2.3.0", |
|||
"parseurl": "~1.3.2", |
|||
"path-to-regexp": "0.1.7", |
|||
"proxy-addr": "~2.0.4", |
|||
"qs": "6.5.2", |
|||
"range-parser": "~1.2.0", |
|||
"safe-buffer": "5.1.2", |
|||
"send": "0.16.2", |
|||
"serve-static": "1.13.2", |
|||
"setprototypeof": "1.1.0", |
|||
"statuses": "~1.4.0", |
|||
"type-is": "~1.6.16", |
|||
"utils-merge": "1.0.1", |
|||
"vary": "~1.1.2" |
|||
}, |
|||
"dependencies": { |
|||
"cookie": { |
|||
"version": "0.3.1", |
|||
"resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.3.1.tgz", |
|||
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" |
|||
} |
|||
} |
|||
}, |
|||
"finalhandler": { |
|||
"version": "1.1.1", |
|||
"resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.1.tgz", |
|||
"integrity": "sha1-7r9O2EAHnIP0JJA4ydcDAIMBsQU=", |
|||
"requires": { |
|||
"debug": "2.6.9", |
|||
"encodeurl": "~1.0.2", |
|||
"escape-html": "~1.0.3", |
|||
"on-finished": "~2.3.0", |
|||
"parseurl": "~1.3.2", |
|||
"statuses": "~1.4.0", |
|||
"unpipe": "~1.0.0" |
|||
} |
|||
}, |
|||
"forwarded": { |
|||
"version": "0.2.0", |
|||
"resolved": "https://registry.nlark.com/forwarded/download/forwarded-0.2.0.tgz?cache=0&sync_timestamp=1622503451002&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fforwarded%2Fdownload%2Fforwarded-0.2.0.tgz", |
|||
"integrity": "sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE=" |
|||
}, |
|||
"fresh": { |
|||
"version": "0.5.2", |
|||
"resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", |
|||
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" |
|||
}, |
|||
"graceful-readlink": { |
|||
"version": "1.0.1", |
|||
"resolved": "https://registry.npm.taobao.org/graceful-readlink/download/graceful-readlink-1.0.1.tgz", |
|||
"integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" |
|||
}, |
|||
"http-errors": { |
|||
"version": "1.6.3", |
|||
"resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz?cache=0&sync_timestamp=1593407647372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.6.3.tgz", |
|||
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", |
|||
"requires": { |
|||
"depd": "~1.1.2", |
|||
"inherits": "2.0.3", |
|||
"setprototypeof": "1.1.0", |
|||
"statuses": ">= 1.4.0 < 2" |
|||
} |
|||
}, |
|||
"iconv-lite": { |
|||
"version": "0.4.23", |
|||
"resolved": "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.23.tgz", |
|||
"integrity": "sha1-KXhx9jvlB63Pv8pxXQzQ7thOmmM=", |
|||
"requires": { |
|||
"safer-buffer": ">= 2.1.2 < 3" |
|||
} |
|||
}, |
|||
"inherits": { |
|||
"version": "2.0.3", |
|||
"resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", |
|||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" |
|||
}, |
|||
"ipaddr.js": { |
|||
"version": "1.9.1", |
|||
"resolved": "https://registry.nlark.com/ipaddr.js/download/ipaddr.js-1.9.1.tgz", |
|||
"integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=" |
|||
}, |
|||
"is-buffer": { |
|||
"version": "1.1.6", |
|||
"resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz?cache=0&sync_timestamp=1604432378894&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-buffer%2Fdownload%2Fis-buffer-1.1.6.tgz", |
|||
"integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" |
|||
}, |
|||
"is-promise": { |
|||
"version": "2.2.2", |
|||
"resolved": "https://registry.npm.taobao.org/is-promise/download/is-promise-2.2.2.tgz", |
|||
"integrity": "sha1-OauVnMv5p3TPB597QMeib3YxNfE=" |
|||
}, |
|||
"jade": { |
|||
"version": "1.11.0", |
|||
"resolved": "https://registry.npm.taobao.org/jade/download/jade-1.11.0.tgz", |
|||
"integrity": "sha1-nIDlOMEtP7lcjZu5VZ+gzAQEBf0=", |
|||
"requires": { |
|||
"character-parser": "1.2.1", |
|||
"clean-css": "^3.1.9", |
|||
"commander": "~2.6.0", |
|||
"constantinople": "~3.0.1", |
|||
"jstransformer": "0.0.2", |
|||
"mkdirp": "~0.5.0", |
|||
"transformers": "2.1.0", |
|||
"uglify-js": "^2.4.19", |
|||
"void-elements": "~2.0.1", |
|||
"with": "~4.0.0" |
|||
} |
|||
}, |
|||
"jstransformer": { |
|||
"version": "0.0.2", |
|||
"resolved": "https://registry.npm.taobao.org/jstransformer/download/jstransformer-0.0.2.tgz", |
|||
"integrity": "sha1-eq4pqQPRls+glz2IXT5HlH7Ndqs=", |
|||
"requires": { |
|||
"is-promise": "^2.0.0", |
|||
"promise": "^6.0.1" |
|||
} |
|||
}, |
|||
"kind-of": { |
|||
"version": "3.2.2", |
|||
"resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", |
|||
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", |
|||
"requires": { |
|||
"is-buffer": "^1.1.5" |
|||
} |
|||
}, |
|||
"lazy-cache": { |
|||
"version": "1.0.4", |
|||
"resolved": "https://registry.npm.taobao.org/lazy-cache/download/lazy-cache-1.0.4.tgz", |
|||
"integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" |
|||
}, |
|||
"longest": { |
|||
"version": "1.0.1", |
|||
"resolved": "https://registry.npm.taobao.org/longest/download/longest-1.0.1.tgz", |
|||
"integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" |
|||
}, |
|||
"media-typer": { |
|||
"version": "0.3.0", |
|||
"resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", |
|||
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" |
|||
}, |
|||
"merge-descriptors": { |
|||
"version": "1.0.1", |
|||
"resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz", |
|||
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" |
|||
}, |
|||
"methods": { |
|||
"version": "1.1.2", |
|||
"resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz", |
|||
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" |
|||
}, |
|||
"mime": { |
|||
"version": "1.4.1", |
|||
"resolved": "https://registry.npm.taobao.org/mime/download/mime-1.4.1.tgz", |
|||
"integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=" |
|||
}, |
|||
"mime-db": { |
|||
"version": "1.48.0", |
|||
"resolved": "https://registry.nlark.com/mime-db/download/mime-db-1.48.0.tgz?cache=0&sync_timestamp=1622433556078&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmime-db%2Fdownload%2Fmime-db-1.48.0.tgz", |
|||
"integrity": "sha1-41sxBF3X6to6qtU37YijOvvvLR0=" |
|||
}, |
|||
"mime-types": { |
|||
"version": "2.1.31", |
|||
"resolved": "https://registry.nlark.com/mime-types/download/mime-types-2.1.31.tgz?cache=0&sync_timestamp=1622569162264&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmime-types%2Fdownload%2Fmime-types-2.1.31.tgz", |
|||
"integrity": "sha1-oA12t0MXxh+cLbIhi46fjpxcnms=", |
|||
"requires": { |
|||
"mime-db": "1.48.0" |
|||
} |
|||
}, |
|||
"minimist": { |
|||
"version": "1.2.5", |
|||
"resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz", |
|||
"integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" |
|||
}, |
|||
"mkdirp": { |
|||
"version": "0.5.5", |
|||
"resolved": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz?cache=0&sync_timestamp=1587535418745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmkdirp%2Fdownload%2Fmkdirp-0.5.5.tgz", |
|||
"integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=", |
|||
"requires": { |
|||
"minimist": "^1.2.5" |
|||
} |
|||
}, |
|||
"morgan": { |
|||
"version": "1.9.1", |
|||
"resolved": "https://registry.npm.taobao.org/morgan/download/morgan-1.9.1.tgz", |
|||
"integrity": "sha1-Co0Wc0odmvvIJLmd+H5zjlji2lk=", |
|||
"requires": { |
|||
"basic-auth": "~2.0.0", |
|||
"debug": "2.6.9", |
|||
"depd": "~1.1.2", |
|||
"on-finished": "~2.3.0", |
|||
"on-headers": "~1.0.1" |
|||
} |
|||
}, |
|||
"ms": { |
|||
"version": "2.0.0", |
|||
"resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", |
|||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" |
|||
}, |
|||
"negotiator": { |
|||
"version": "0.6.2", |
|||
"resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", |
|||
"integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=" |
|||
}, |
|||
"node-rtsp-stream": { |
|||
"version": "0.0.9", |
|||
"resolved": "https://registry.npm.taobao.org/node-rtsp-stream/download/node-rtsp-stream-0.0.9.tgz", |
|||
"integrity": "sha1-95q9J/cu7uRHE8/EO42TmrJwC4s=", |
|||
"requires": { |
|||
"ws": "^7.0.0" |
|||
} |
|||
}, |
|||
"node-windows": { |
|||
"version": "1.0.0-beta.5", |
|||
"resolved": "https://registry.npm.taobao.org/node-windows/download/node-windows-1.0.0-beta.5.tgz", |
|||
"integrity": "sha1-95KIscpvH0Gm0xIpkCxhGiGrudY=", |
|||
"requires": { |
|||
"optimist": "~0.6.0", |
|||
"xml": "0.0.12" |
|||
}, |
|||
"dependencies": { |
|||
"minimist": { |
|||
"version": "0.0.10", |
|||
"resolved": "https://registry.npm.taobao.org/minimist/download/minimist-0.0.10.tgz", |
|||
"integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" |
|||
}, |
|||
"optimist": { |
|||
"version": "0.6.1", |
|||
"resolved": "https://registry.npm.taobao.org/optimist/download/optimist-0.6.1.tgz", |
|||
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", |
|||
"requires": { |
|||
"minimist": "~0.0.1", |
|||
"wordwrap": "~0.0.2" |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
"on-finished": { |
|||
"version": "2.3.0", |
|||
"resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", |
|||
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", |
|||
"requires": { |
|||
"ee-first": "1.1.1" |
|||
} |
|||
}, |
|||
"on-headers": { |
|||
"version": "1.0.2", |
|||
"resolved": "https://registry.npm.taobao.org/on-headers/download/on-headers-1.0.2.tgz", |
|||
"integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=" |
|||
}, |
|||
"optimist": { |
|||
"version": "0.3.7", |
|||
"resolved": "https://registry.npm.taobao.org/optimist/download/optimist-0.3.7.tgz", |
|||
"integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", |
|||
"requires": { |
|||
"wordwrap": "~0.0.2" |
|||
} |
|||
}, |
|||
"parseurl": { |
|||
"version": "1.3.3", |
|||
"resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", |
|||
"integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=" |
|||
}, |
|||
"path-to-regexp": { |
|||
"version": "0.1.7", |
|||
"resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz?cache=0&sync_timestamp=1601400247487&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-to-regexp%2Fdownload%2Fpath-to-regexp-0.1.7.tgz", |
|||
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" |
|||
}, |
|||
"promise": { |
|||
"version": "6.1.0", |
|||
"resolved": "https://registry.npm.taobao.org/promise/download/promise-6.1.0.tgz", |
|||
"integrity": "sha1-LOcp9rlLRcJoka0GAsXJDgTG7vY=", |
|||
"requires": { |
|||
"asap": "~1.0.0" |
|||
} |
|||
}, |
|||
"proxy-addr": { |
|||
"version": "2.0.7", |
|||
"resolved": "https://registry.nlark.com/proxy-addr/download/proxy-addr-2.0.7.tgz", |
|||
"integrity": "sha1-8Z/mnOqzEe65S0LnDowgcPm6ECU=", |
|||
"requires": { |
|||
"forwarded": "0.2.0", |
|||
"ipaddr.js": "1.9.1" |
|||
} |
|||
}, |
|||
"qs": { |
|||
"version": "6.5.2", |
|||
"resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&sync_timestamp=1616385248556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz", |
|||
"integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=" |
|||
}, |
|||
"range-parser": { |
|||
"version": "1.2.1", |
|||
"resolved": "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz", |
|||
"integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=" |
|||
}, |
|||
"raw-body": { |
|||
"version": "2.3.3", |
|||
"resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.3.3.tgz", |
|||
"integrity": "sha1-GzJOzmtXBuFThVvBFIxlu39uoMM=", |
|||
"requires": { |
|||
"bytes": "3.0.0", |
|||
"http-errors": "1.6.3", |
|||
"iconv-lite": "0.4.23", |
|||
"unpipe": "1.0.0" |
|||
} |
|||
}, |
|||
"repeat-string": { |
|||
"version": "1.6.1", |
|||
"resolved": "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz", |
|||
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" |
|||
}, |
|||
"right-align": { |
|||
"version": "0.1.3", |
|||
"resolved": "https://registry.npm.taobao.org/right-align/download/right-align-0.1.3.tgz", |
|||
"integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", |
|||
"requires": { |
|||
"align-text": "^0.1.1" |
|||
} |
|||
}, |
|||
"safe-buffer": { |
|||
"version": "5.1.2", |
|||
"resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz", |
|||
"integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" |
|||
}, |
|||
"safer-buffer": { |
|||
"version": "2.1.2", |
|||
"resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafer-buffer%2Fdownload%2Fsafer-buffer-2.1.2.tgz", |
|||
"integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" |
|||
}, |
|||
"send": { |
|||
"version": "0.16.2", |
|||
"resolved": "https://registry.npm.taobao.org/send/download/send-0.16.2.tgz", |
|||
"integrity": "sha1-bsyh4PjBVtFBWXVZhI32RzCmu8E=", |
|||
"requires": { |
|||
"debug": "2.6.9", |
|||
"depd": "~1.1.2", |
|||
"destroy": "~1.0.4", |
|||
"encodeurl": "~1.0.2", |
|||
"escape-html": "~1.0.3", |
|||
"etag": "~1.8.1", |
|||
"fresh": "0.5.2", |
|||
"http-errors": "~1.6.2", |
|||
"mime": "1.4.1", |
|||
"ms": "2.0.0", |
|||
"on-finished": "~2.3.0", |
|||
"range-parser": "~1.2.0", |
|||
"statuses": "~1.4.0" |
|||
} |
|||
}, |
|||
"serve-static": { |
|||
"version": "1.13.2", |
|||
"resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.13.2.tgz", |
|||
"integrity": "sha1-CV6Ecv1bRiN9tQzkhqQ/S4bGzsE=", |
|||
"requires": { |
|||
"encodeurl": "~1.0.2", |
|||
"escape-html": "~1.0.3", |
|||
"parseurl": "~1.3.2", |
|||
"send": "0.16.2" |
|||
} |
|||
}, |
|||
"setprototypeof": { |
|||
"version": "1.1.0", |
|||
"resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz?cache=0&sync_timestamp=1563425414995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsetprototypeof%2Fdownload%2Fsetprototypeof-1.1.0.tgz", |
|||
"integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=" |
|||
}, |
|||
"source-map": { |
|||
"version": "0.4.4", |
|||
"resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz", |
|||
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", |
|||
"requires": { |
|||
"amdefine": ">=0.0.4" |
|||
} |
|||
}, |
|||
"statuses": { |
|||
"version": "1.4.0", |
|||
"resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.4.0.tgz?cache=0&sync_timestamp=1609654060878&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.4.0.tgz", |
|||
"integrity": "sha1-u3PURtonlhBu/MG2AaJT1sRr0Ic=" |
|||
}, |
|||
"transformers": { |
|||
"version": "2.1.0", |
|||
"resolved": "https://registry.npm.taobao.org/transformers/download/transformers-2.1.0.tgz", |
|||
"integrity": "sha1-XSPLNVYd2F3Gf7hIIwm0fVPM6ac=", |
|||
"requires": { |
|||
"css": "~1.0.8", |
|||
"promise": "~2.0", |
|||
"uglify-js": "~2.2.5" |
|||
}, |
|||
"dependencies": { |
|||
"is-promise": { |
|||
"version": "1.0.1", |
|||
"resolved": "https://registry.npm.taobao.org/is-promise/download/is-promise-1.0.1.tgz", |
|||
"integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=" |
|||
}, |
|||
"promise": { |
|||
"version": "2.0.0", |
|||
"resolved": "https://registry.npm.taobao.org/promise/download/promise-2.0.0.tgz", |
|||
"integrity": "sha1-RmSKqdYFr10ucMMCS/WUNtoCuA4=", |
|||
"requires": { |
|||
"is-promise": "~1" |
|||
} |
|||
}, |
|||
"source-map": { |
|||
"version": "0.1.43", |
|||
"resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.1.43.tgz", |
|||
"integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", |
|||
"requires": { |
|||
"amdefine": ">=0.0.4" |
|||
} |
|||
}, |
|||
"uglify-js": { |
|||
"version": "2.2.5", |
|||
"resolved": "https://registry.nlark.com/uglify-js/download/uglify-js-2.2.5.tgz?cache=0&sync_timestamp=1624812318797&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fuglify-js%2Fdownload%2Fuglify-js-2.2.5.tgz", |
|||
"integrity": "sha1-puAqcNg5eSuXgEiLe4sYTAlcmcc=", |
|||
"requires": { |
|||
"optimist": "~0.3.5", |
|||
"source-map": "~0.1.7" |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
"type-is": { |
|||
"version": "1.6.18", |
|||
"resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz", |
|||
"integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", |
|||
"requires": { |
|||
"media-typer": "0.3.0", |
|||
"mime-types": "~2.1.24" |
|||
} |
|||
}, |
|||
"uglify-js": { |
|||
"version": "2.8.29", |
|||
"resolved": "https://registry.nlark.com/uglify-js/download/uglify-js-2.8.29.tgz?cache=0&sync_timestamp=1624812318797&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fuglify-js%2Fdownload%2Fuglify-js-2.8.29.tgz", |
|||
"integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", |
|||
"requires": { |
|||
"source-map": "~0.5.1", |
|||
"uglify-to-browserify": "~1.0.0", |
|||
"yargs": "~3.10.0" |
|||
}, |
|||
"dependencies": { |
|||
"source-map": { |
|||
"version": "0.5.7", |
|||
"resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", |
|||
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" |
|||
} |
|||
} |
|||
}, |
|||
"uglify-to-browserify": { |
|||
"version": "1.0.2", |
|||
"resolved": "https://registry.npm.taobao.org/uglify-to-browserify/download/uglify-to-browserify-1.0.2.tgz", |
|||
"integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", |
|||
"optional": true |
|||
}, |
|||
"unpipe": { |
|||
"version": "1.0.0", |
|||
"resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", |
|||
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" |
|||
}, |
|||
"utils-merge": { |
|||
"version": "1.0.1", |
|||
"resolved": "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz", |
|||
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" |
|||
}, |
|||
"vary": { |
|||
"version": "1.1.2", |
|||
"resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", |
|||
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" |
|||
}, |
|||
"void-elements": { |
|||
"version": "2.0.1", |
|||
"resolved": "https://registry.npm.taobao.org/void-elements/download/void-elements-2.0.1.tgz", |
|||
"integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" |
|||
}, |
|||
"window-size": { |
|||
"version": "0.1.0", |
|||
"resolved": "https://registry.npm.taobao.org/window-size/download/window-size-0.1.0.tgz", |
|||
"integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" |
|||
}, |
|||
"with": { |
|||
"version": "4.0.3", |
|||
"resolved": "https://registry.npm.taobao.org/with/download/with-4.0.3.tgz", |
|||
"integrity": "sha1-7v0VTp550sjTQXtkeo8U2f7M4U4=", |
|||
"requires": { |
|||
"acorn": "^1.0.1", |
|||
"acorn-globals": "^1.0.3" |
|||
}, |
|||
"dependencies": { |
|||
"acorn": { |
|||
"version": "1.2.2", |
|||
"resolved": "https://registry.nlark.com/acorn/download/acorn-1.2.2.tgz", |
|||
"integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=" |
|||
} |
|||
} |
|||
}, |
|||
"wordwrap": { |
|||
"version": "0.0.3", |
|||
"resolved": "https://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.3.tgz", |
|||
"integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" |
|||
}, |
|||
"ws": { |
|||
"version": "7.5.0", |
|||
"resolved": "https://registry.nlark.com/ws/download/ws-7.5.0.tgz", |
|||
"integrity": "sha1-ADO6/qAx+53wQbICb8cqVxykRpE=" |
|||
}, |
|||
"xml": { |
|||
"version": "0.0.12", |
|||
"resolved": "https://registry.npm.taobao.org/xml/download/xml-0.0.12.tgz", |
|||
"integrity": "sha1-8Is0cQmRK+AChXhfRvFa2OUKX2c=" |
|||
}, |
|||
"yargs": { |
|||
"version": "3.10.0", |
|||
"resolved": "https://registry.nlark.com/yargs/download/yargs-3.10.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-3.10.0.tgz", |
|||
"integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", |
|||
"requires": { |
|||
"camelcase": "^1.0.2", |
|||
"cliui": "^2.1.0", |
|||
"decamelize": "^1.0.0", |
|||
"window-size": "0.1.0" |
|||
} |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,18 @@ |
|||
{ |
|||
"name": "server", |
|||
"version": "0.0.0", |
|||
"private": true, |
|||
"scripts": { |
|||
"start": "node ./bin/www" |
|||
}, |
|||
"dependencies": { |
|||
"cookie-parser": "~1.4.4", |
|||
"debug": "~2.6.9", |
|||
"express": "~4.16.1", |
|||
"http-errors": "~1.6.3", |
|||
"jade": "~1.11.0", |
|||
"morgan": "~1.9.1", |
|||
"node-rtsp-stream": "0.0.9", |
|||
"node-windows": "^1.0.0-beta.5" |
|||
} |
|||
} |
@ -0,0 +1,8 @@ |
|||
body { |
|||
padding: 50px; |
|||
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; |
|||
} |
|||
|
|||
a { |
|||
color: #00B7FF; |
|||
} |
@ -0,0 +1,24 @@ |
|||
var express = require('express'); |
|||
const requestmanager = require('../lib/RequestManager') |
|||
var router = express.Router(); |
|||
|
|||
router.get('/', function (req, res) { |
|||
res.send('Carmeras Server is Runing...'); |
|||
}); |
|||
|
|||
/* GET users listing. */ |
|||
router.post('/', function (req, res) { |
|||
var cfg = req.body |
|||
let result = new requestmanager().Open(cfg) |
|||
res.json(result) |
|||
}); |
|||
|
|||
router.post('/close', function (req, res) { |
|||
var cfg = req.body |
|||
new requestmanager().Close(cfg) |
|||
res.json({ state: 'close the rtsp stream success.' }) |
|||
}) |
|||
|
|||
|
|||
|
|||
module.exports = router; |
@ -0,0 +1,45 @@ |
|||
var express = require('express'); |
|||
var router = express.Router(); |
|||
var path = require("path"); |
|||
var fs = require("fs"); |
|||
|
|||
/* GET home page. */ |
|||
router.get('/', function (req, res, next) { |
|||
var imgs = '' |
|||
var dirs = []; |
|||
var pathName = "./public/images/"; |
|||
res.setHeader("Content-Type", "text/html;charset=utf-8") |
|||
fs.readdir(pathName, function (err, files) { |
|||
|
|||
for (var i = 0; i < files.length; i++) { |
|||
|
|||
var img = `<div><img data-src="/imgs/${files[i]}" /></div>` |
|||
|
|||
imgs +=img |
|||
fs.writeFile('E:\\ht.txt', imgs, function (error) { |
|||
if (error) { |
|||
console.log('写入失败') |
|||
} else { |
|||
console.log('写入成功了') |
|||
} |
|||
}) |
|||
//console.log(imgs)
|
|||
fs.stat(path.join(pathName, files[i]), function (err, data) { |
|||
if (data.isFile()) { |
|||
dirs.push(files[i]); |
|||
} |
|||
}); |
|||
} |
|||
}) |
|||
res.end() |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
}); |
|||
|
|||
|
|||
|
|||
module.exports = router; |
@ -0,0 +1,16 @@ |
|||
var express = require('express'); |
|||
var router = express.Router(); |
|||
|
|||
/* GET home page. */ |
|||
router.get('/', function(req, res, next) { |
|||
|
|||
res.render('index', { title: 'Express' }); |
|||
}); |
|||
|
|||
router.post('/',function(req,res){ |
|||
|
|||
|
|||
|
|||
}) |
|||
|
|||
module.exports = router; |
@ -0,0 +1,10 @@ |
|||
var express = require('express'); |
|||
var router = express.Router(); |
|||
|
|||
/* GET users listing. */ |
|||
router.get('/', function(req, res, next) { |
|||
res.setHeader("Content-Type", "text/html;charset=utf-8") |
|||
res.send('<h1>Hello NOdejs</h1'); |
|||
}); |
|||
|
|||
module.exports = router; |
@ -0,0 +1,6 @@ |
|||
extends layout |
|||
|
|||
block content |
|||
h1= message |
|||
h2= error.status |
|||
pre #{error.stack} |
@ -0,0 +1,5 @@ |
|||
extends layout |
|||
|
|||
block content |
|||
h1= title |
|||
p Welcome to #{title} |
@ -0,0 +1,7 @@ |
|||
doctype html |
|||
html |
|||
head |
|||
title= title |
|||
link(rel='stylesheet', href='/stylesheets/style.css') |
|||
body |
|||
block content |
Write
Preview
Loading…
Cancel
Save
Reference in new issue