vs-stun
STUN protocol implementation in NodeJS
Installation
npm install vs-stun
Quick Start
Create a datagram socket, discover its host, port, and topology:
var stun = ; var socket server = host: 'stun.l.google.com' port: 19302 var { if !error socket = value; console; socket; else console;} stun;
Or discover host, port, and topology of an existing socket:
var stun = ; // socket is created and opened here... var server = host: 'stun.l.google.com' port: 19302 var { if !error console; socket; else console;} stun;
Create Packet
var packet = stun;
Binding Request
var packet = stuncreate;
Binding Response
var packet = stuncreate;
Binding Error
var packet = stuncreate;
Shared Secret Request
var packet = stuncreate;
Shared Secret Response
var packet = stuncreate;
Shared Secret Error
var packet = stuncreate;
Append Attributes
RFC 3489 (STUN)
Response-Address
var error address = host: '192.168.0.1' port: 8080 family: 'IPv4' if error = packetappend console;
Changed-Address
var error address = host: '192.168.0.1' port: 8080 family: 'IPv4' if error = packetappend console;
Source-Address
var error address = host: '192.168.0.1' port: 8080 family: 'IPv4' if error = packetappend console;
Password
var error password = "secret"; if error = packetappend console;
Reflected-From
var error address = host: '192.168.0.1' port: 8080 family: 'IPv4' if error = packetappend console;
RFC 5245 (ICE)
Priority
var error level = 12345; if error = packetappend console;
Use-Candidate
var error = null; if error = packetappend console;
Ice-Controlled
var error tieBreaker = '08192a3b4c5e6d7f'; if error = packetappend console;
Ice-Controlling
var error tieBreaker = '08192a3b4c5e6d7f'; if error = packetappend console;
RFC 5389 (STUN)
Mapped-Address
var error address = host: '192.168.0.1' port: 8080 family: 'IPv4' if error = packetappend console;
XOR-Mapped-Address
var error address = host: '192.168.0.1' port: 8080 family: 'IPv4' if error = packetappend console;
Username
var error name = 'Joe'; if error = packetappend console;
Message-Integrity
var error = null; if error = packetappend console;
Fingerprint
var error = null; if error = packetappend console;
Error-Code
var error errorCode = code: 300 reason: 'Try Alternate' if error = packetappend console;
Realm
var error name = 'realm'; if error = packetappend console;
Nonce
var error name = 'nonce'; if error = packetappend console;
Unknown-Attributes
var error attributes = 0x02 0x04 0x05 ; if error = packetappend console;
Software
var error name = 'soft'; if error = packetappend console;
Alternate-Server
var error address = host: '192.168.0.1' port: 8080 family: 'IPv4' if error = packetappend console;
RFC 5780 (NAT)
Change-Request
var error flags = host: true port: true if error = packetappend console;
Response-Origin
var error address = host: '192.168.0.1' port: 8080 family: 'IPv4' if error = packetappend console;
Other-Address
var error address = host: '192.168.0.1' port: 8080 family: 'IPv4' if error = packetappend console;
Response-Port
var error port = 8080; if error = packetappend console;
Padding
var error padding = 'some string for padding....'; if error = packetappend console;
Error Codes and Reasons
RFC 5389 (STUN)
300
- Try Alternate400
- Bad Request401
- Unauthorized420
- Unknown Attribute438
- Stale Nonce500
- Server Error
License
MIT