Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
mf
go-multiaddr
Commits
0e7ae0d2
Commit
0e7ae0d2
authored
Aug 31, 2015
by
David Stainton
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Renamed tor to onion and added embedded port field
parent
ed310561
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
35 additions
and
15 deletions
+35
-15
codec.go
codec.go
+27
-7
multiaddr_test.go
multiaddr_test.go
+5
-5
protocols.csv
protocols.csv
+1
-1
protocols.go
protocols.go
+2
-2
No files found.
codec.go
View file @
0e7ae0d2
...
...
@@ -166,16 +166,36 @@ func addressStringToBytes(p Protocol, s string) ([]byte, error) {
binary
.
BigEndian
.
PutUint16
(
b
,
uint16
(
i
))
return
b
,
nil
case
P_
TOR
:
fields
:=
strings
.
Split
(
s
,
"
.onion
"
)
if
len
(
fields
)
!=
2
{
return
nil
,
fmt
.
Errorf
(
"failed to parse
ipf
s addr: %s
not a Tor .onion address."
,
s
)
case
P_
ONION
:
addr
:=
strings
.
Split
(
s
,
"
:
"
)
if
len
(
addr
)
!=
2
{
return
nil
,
fmt
.
Errorf
(
"failed to parse
%
s addr: %s
does not contain a port number."
,
p
.
Name
,
s
)
}
b
,
err
:=
base32
.
StdEncoding
.
DecodeString
(
strings
.
ToUpper
(
fields
[
0
]))
// onion address without the ".onion" substring
if
len
(
addr
[
0
])
!=
16
{
return
nil
,
fmt
.
Errorf
(
"failed to parse %s addr: %s not a Tor onion address."
,
p
.
Name
,
s
)
}
onionHostBytes
,
err
:=
base32
.
StdEncoding
.
DecodeString
(
strings
.
ToUpper
(
addr
[
0
]))
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to
parse ipf
s addr: %s %s"
,
s
,
err
)
return
nil
,
fmt
.
Errorf
(
"failed to
decode base32 %
s addr: %s %s"
,
p
.
Name
,
s
,
err
)
}
return
b
,
nil
// onion port number
i
,
err
:=
strconv
.
Atoi
(
addr
[
1
])
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to parse %s addr: %s"
,
p
.
Name
,
err
)
}
if
i
>=
65536
{
return
nil
,
fmt
.
Errorf
(
"failed to parse %s addr: %s"
,
p
.
Name
,
"greater than 65536"
)
}
onionPortBytes
:=
make
([]
byte
,
2
)
binary
.
BigEndian
.
PutUint16
(
onionPortBytes
,
uint16
(
i
))
bytes
:=
[]
byte
{}
bytes
=
append
(
bytes
,
onionHostBytes
...
)
bytes
=
append
(
bytes
,
onionPortBytes
...
)
return
bytes
,
nil
case
P_IPFS
:
// ipfs
// the address is a varint prefixed multihash string representation
m
,
err
:=
mh
.
FromB58String
(
s
)
...
...
multiaddr_test.go
View file @
0e7ae0d2
...
...
@@ -25,8 +25,9 @@ func TestConstructFails(t *testing.T) {
"/sctp"
,
"/udp/65536"
,
"/tcp/65536"
,
"/tor/9imaq4ygg2iegci7.onion"
,
"/tor/aaimaq4ygg2iegci7.onion"
,
"/onion/9imaq4ygg2iegci7:80"
,
"/onion/aaimaq4ygg2iegci7:80"
,
"/onion/timaq4ygg2iegci7"
,
"/udp/1234/sctp"
,
"/udp/1234/udt/1234"
,
"/udp/1234/utp/1234"
,
...
...
@@ -51,9 +52,8 @@ func TestConstructSucceeds(t *testing.T) {
"/ip4/0.0.0.0"
,
"/ip6/::1"
,
"/ip6/2601:9:4f81:9700:803e:ca65:66e8:c21"
,
"/tor/timaq4ygg2iegci7.onion"
,
"/tor/timaq4ygg2iegci7.onion/tcp/1234"
,
"/tor/timaq4ygg2iegci7.onion/tcp/80/http"
,
"/onion/timaq4ygg2iegci7:1234"
,
"/onion/timaq4ygg2iegci7:80/http"
,
"/udp/0"
,
"/tcp/0"
,
"/sctp/0"
,
...
...
protocols.csv
View file @
0e7ae0d2
...
...
@@ -5,9 +5,9 @@ code size name
33 16 dccp
41 128 ip6
132 16 sctp
133 10 tor
301 0 udt
302 0 utp
421 V ipfs
480 0 http
443 0 https
444 10 onion
\ No newline at end of file
protocols.go
View file @
0e7ae0d2
...
...
@@ -25,12 +25,12 @@ const (
P_DCCP
=
33
P_IP6
=
41
P_SCTP
=
132
P_TOR
=
133
P_UTP
=
301
P_UDT
=
302
P_IPFS
=
421
P_HTTP
=
480
P_HTTPS
=
443
P_ONION
=
444
)
// These are special sizes
...
...
@@ -47,7 +47,7 @@ var Protocols = []Protocol{
Protocol
{
P_IP6
,
128
,
"ip6"
,
CodeToVarint
(
P_IP6
)},
// these require varint:
Protocol
{
P_SCTP
,
16
,
"sctp"
,
CodeToVarint
(
P_SCTP
)},
Protocol
{
P_
TOR
,
10
,
"
tor
"
,
CodeToVarint
(
P_
TOR
)},
Protocol
{
P_
ONION
,
10
,
"
onion
"
,
CodeToVarint
(
P_
ONION
)},
Protocol
{
P_UTP
,
0
,
"utp"
,
CodeToVarint
(
P_UTP
)},
Protocol
{
P_UDT
,
0
,
"udt"
,
CodeToVarint
(
P_UDT
)},
Protocol
{
P_HTTP
,
0
,
"http"
,
CodeToVarint
(
P_HTTP
)},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment