octo-deno/lib/make/network.js

110 lines
3.5 KiB
JavaScript
Raw Normal View History

2017-04-22 22:49:49 +00:00
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
make.network = {
sdp: function () {
// session description protocol template
return [
'v=0',
'o=Mozilla-SIPUA 23597 0 IN IP4 0.0.0.0',
's=SIP Call',
't=0 0',
'a=ice-ufrag:f5fda439',
'a=ice-pwd:d0df8e2904bdbd29587966e797655970',
'a=fingerprint:sha-256 DF:69:78:20:8D:2E:08:CE:49:82:A3:11:79:1D:BF:B5:49:49:2D:32:82:2F:0D:88:84:A7:C6:63:23:63:A9:0F',
'm=audio 52757 RTP/SAVPF 109 0 8 101',
'c=IN IP4 192.168.129.33',
'a=rtpmap:109 opus/48000/2',
'a=ptime:20',
'a=rtpmap:0 PCMU/8000',
'a=rtpmap:8 PCMA/8000',
'a=rtpmap:101 telephone-event/8000',
'a=fmtp:101 0-15',
'a=sendrecv',
'a=candidate:0 1 UDP 2113601791 192.168.129.33 52757 typ host',
'a=candidate:0 2 UDP 2113601790 192.168.129.33 59738 typ host',
'm=video 63901 RTP/SAVPF 120',
'c=IN IP4 192.168.129.33',
'a=rtpmap:120 VP8/90000',
'a=sendrecv',
'a=candidate:0 1 UDP 2113601791 192.168.129.33 63901 typ host',
'a=candidate:0 2 UDP 2113601790 192.168.129.33 54165 typ host',
'm=application 65080 SCTP/DTLS 5000',
'c=IN IP4 192.168.129.33',
'a=fmtp:5000 protocol=webrtc-datachannel;streams=16',
'a=sendrecv',
'a=candidate:0 1 UDP 2113601791 192.168.129.33 65080 typ host',
'a=candidate:0 2 UDP 2113601790 192.168.129.33 62658 typ host'
].join('\n')
2017-04-22 22:49:49 +00:00
},
PeerConnectionProtocols: function () {
return ['turn', 'turns', 'stun', 'stuns']
2017-04-22 22:49:49 +00:00
},
randomIPv4: function () {
return random.pick([random.number(255), make.number.any]) + '.' +
random.pick([random.number(255), make.number.any]) + '.' +
random.pick([random.number(255), make.number.any]) + '.' +
random.pick([random.number(255), make.number.any])
2017-04-22 22:49:49 +00:00
},
randomIPv6: function () {
let parts = []
2017-06-01 17:30:04 +00:00
for (let i = 0; i < 8; i++) {
parts.push(random.hex(4))
}
return parts.join(':')
2017-04-22 22:49:49 +00:00
},
goodHostnames: function () {
return [
'0.0.0.0',
'127.0.0.1:8080'
]
2017-04-22 22:49:49 +00:00
},
badHostnames: function () {
return [
'google.org:8080',
'::1',
'[::192.9.5.5]:42',
'2001:db8:85a3::8a2e:370:3478',
'2001:db8:85a3:0:0:8a2e:370:3478',
'::ffff:192.0.2.1',
'0000:0000:0000:0000:0000:0000:0000:0001',
'::192.0.2.128',
'::ffff:192.0.2.128',
'2001:db8::1:2',
'2001:db8::1:1:1:1:1'
]
2017-04-22 22:49:49 +00:00
},
2017-06-30 20:21:23 +00:00
hostname: function () {
return random.pick([this.randomIPv4, this.randomIPv6, this.goodHostnames, this.badHostnames])
},
2017-06-30 20:21:23 +00:00
port: function () {
return random.pick([80, 443, 21, 23, 9310])
},
2017-06-30 20:21:23 +00:00
hash: function () {
return random.pick(['', '#', '#main-content', function () { return '#' + make.text.any() }])
},
2017-06-30 20:21:23 +00:00
path: function () {
return random.pick(['', '/', '/index.html', function () { return '/' + make.text.any() }])
},
2017-06-30 20:21:23 +00:00
protocol: function () {
return random.pick(['http:', 'https:', 'ftp:', 'telnet:', 'chrome:', 'resource:'])
},
2017-06-30 20:21:23 +00:00
search: function () {
return random.pick(['', '?', '?foo=bar', function () { return '?' + make.text.any() }])
},
2017-04-22 22:49:49 +00:00
randomBitmask: function (list) {
if (list.length <= 1) {
return list.join('')
2017-04-22 22:49:49 +00:00
}
let max = random.range(2, list.length)
let mask = random.pick(list)
2017-04-22 22:49:49 +00:00
for (let i = 1; i < max; i++) {
mask += '|' + random.pick(list)
2017-04-22 22:49:49 +00:00
}
return mask
}
}