Skip to content

Commit

Permalink
Merge branch 'feat/ddns-over-bearychat'
Browse files Browse the repository at this point in the history
  • Loading branch information
bcho committed Jan 3, 2017
2 parents 78e8c90 + 50d36ba commit b7e4b9d
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 0 deletions.
7 changes: 7 additions & 0 deletions ddob/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# DDNS over BearyChat

## Usage

```
$ ./ddob
```
39 changes: 39 additions & 0 deletions ddob/cmd/ddob/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package main

import (
"context"
"fmt"
"log"
"regexp"

"github.com/bearyinnovative/radagast/bearychat"
"github.com/bearyinnovative/radagast/config"
"github.com/bearyinnovative/radagast/ddob"
)

func main() {
ctx := context.Background()
ctx = config.MustMakeContext(ctx, "./radagast.toml")
ctx = bearychat.MustMakeContext(ctx)

config := config.FromContext(ctx)

p := regexp.MustCompile(config.Get("ddob.pattern").String())
addrs, err := ddob.ListInterfaceAddrs(p)
if err != nil {
log.Fatal(err)
}

if len(addrs) < 1 {
log.Fatalf("no addrs returned")
}

bearychat.SendToVchannel(
ctx,
bearychat.RTMClientFromContext(ctx),
bearychat.RTMMessage{
Text: fmt.Sprintf("`ddob` 我的 IP 是 `%s`", addrs[0]),
VchannelId: config.Get("ddob.bearychat-vchannel-id").String(),
},
)
}
30 changes: 30 additions & 0 deletions ddob/interfaces.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package ddob

import (
"net"
"regexp"
)

func ListInterfaceAddrs(namePattern *regexp.Regexp) (addrs []net.Addr, err error) {
interfaces, err := net.Interfaces()
if err != nil {
return nil, err
}

for _, inter := range interfaces {
if !namePattern.MatchString(inter.Name) {
continue
}

interfaceAddrs, err := inter.Addrs()
if err != nil {
return nil, err
}

for _, addr := range interfaceAddrs {
addrs = append(addrs, addr)
}
}

return
}

0 comments on commit b7e4b9d

Please sign in to comment.