gortc / stun Goto Github PK
View Code? Open in Web Editor NEWFast RFC 5389 STUN implementation in go
License: BSD 3-Clause "New" or "Revised" License
Fast RFC 5389 STUN implementation in go
License: BSD 3-Clause "New" or "Revised" License
CLI should print firewall type and (optionally) discovered ip address.
Like:
# stun-cli
Firewalled, Port-restricted code NAT, ip: 212.224.21.4
Openvpn
Implement padding handling for attribute values as specified in RFC.
The place for calling them internally is obvious.
At least the example should be provided.
Maybe some auxilary API.
stun-decode, stund, stun-client and others should land in separate project.
stun repo should be only for STUN RFC implementation.
any long-term credential mechanism like coturn?
(stun/WARNING) Illegal message size: 26
(stun/WARNING) STUN-CLIENT(srflx(IP4:192.168.1.52:33549/UDP|IP4:127.0.0.1:3478/UDP)): error decoding response
(stun/WARNING) Illegal message size: 26
(stun/WARNING) STUN-CLIENT(srflx(IP4:192.168.1.52:33549/UDP|IP4:127.0.0.1:3478/UDP)): error decoding response
(stun/WARNING) Illegal message size: 26
(stun/WARNING) STUN-CLIENT(srflx(IP4:192.168.1.52:33549/UDP|IP4:127.0.0.1:3478/UDP)): error decoding response
(stun/WARNING) Illegal message size: 26
(stun/WARNING) STUN-CLIENT(srflx(IP4:192.168.1.52:33549/UDP|IP4:127.0.0.1:3478/UDP)): error decoding response
Probably padding issue.
clientTransaction.h can be called multiple times in some cases
For examle
AlternateServer represents ALTERNATE-SERVER attribute.
https://tools.ietf.org/html/rfc5389#section-15.4
Correct link is https://tools.ietf.org/html/rfc5389#section-15.11
As discovered in #38 an open connection should be reused. The aim is to better support this use-case by refactoring stun.Client around a subset of the net.PacketConn interface.
Sometimes it is useful to debug in such way
Support the TCP protocol while communicating to server.
It seems we should wait to try this until golang/go#9661 lands in Go 1.11.
Should be implemented:
This line is error:
if err := c.Do(message, deadline, func(res stun.AgentEvent) {
stun.AgentEvent
should be stun.Event
?
Ideal test coverage for stun package is 95% or more. It is pretty easy to achieve that.
Provide a way to use discovered external address to receive actual udp packets from another agent.
MVP:
client1 discover
1> ip:port
client2 ip:port
ok
1> ok from ip:port2
Currently NewLongtermIntegrity expects that arguments are already after sasl-prep, but it should not.
Add destructor to release resources even on api misuse.
Split input random byte slice into TLV-s, try to achieve better fuzzing coverage.
Quick status update:
API is stable (with exception for Client/Agent implementations in this package), so it is safe
to use it, if you only need STUN decoding/encoding. That part is blackbox and unit-tested and should
contain minimum to no bugs.
I'm currently have no time to actively develop golang webrtc stack, but that will change shortly.
Maybe as "nat" subpackage.
Current draft:
https://tools.ietf.org/html/draft-ietf-tram-stunbis
Tracking issue for STUN-bis implementation.
I think our README section could be corrected in some way.
Please use following commit message:
readme: fixed grammar, etc, bla-bla-bla (fixes #31)
With such postfix it will automatically close that issue (see https://help.github.com/articles/closing-issues-via-commit-messages/)
When using the UDP transport packets may be dropped. The stun client SHOULD (but it seems more like a MUST with exceptions of LAN usage) implement retransmissions.
One thing to note is that the ICE spec has it's own specification for RTO. It will therefore have to be exported if we want to reuse stun.Client and/or stun.Agent in package ice.
Fixes #12
Most of methods should not allocate, and memory allocation it considered as bug.
Tests will automate that checks.
Currently the coturn is in basic STUN server without any authentication.
Basic server with no auth.
Introduce new compile flag and implement zero
allocation even for error cases via constructor functions.
Seems like we can just add needed constants, most work should be done in gortc/turn.
i am happy to do some test
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.