Преглед на файлове

update due to gumble API changes

master
Tim Cooper преди 8 години
родител
ревизия
4d141b6131
променени са 5 файла, в които са добавени 50 реда и са изтрити 48 реда
  1. +5
    -0
      barnard.go
  2. +29
    -18
      client.go
  3. +10
    -30
      cmd/barnard/main.go
  4. +2
    -0
      ui.go
  5. +4
    -0
      ui_tree.go

+ 5
- 0
barnard.go Целия файл

@@ -1,6 +1,8 @@
package barnard package barnard


import ( import (
"crypto/tls"

"github.com/layeh/barnard/uiterm" "github.com/layeh/barnard/uiterm"
"github.com/layeh/gumble/gumble" "github.com/layeh/gumble/gumble"
"github.com/layeh/gumble/gumbleopenal" "github.com/layeh/gumble/gumbleopenal"
@@ -10,6 +12,9 @@ type Barnard struct {
Config *gumble.Config Config *gumble.Config
Client *gumble.Client Client *gumble.Client


Address string
TLSConfig tls.Config

Stream *gumbleopenal.Stream Stream *gumbleopenal.Stream


Ui *uiterm.Ui Ui *uiterm.Ui


+ 29
- 18
client.go Целия файл

@@ -2,11 +2,40 @@ package barnard


import ( import (
"fmt" "fmt"
"net"
"os"


"github.com/layeh/gumble/gumble" "github.com/layeh/gumble/gumble"
"github.com/layeh/gumble/gumbleopenal"
"github.com/layeh/gumble/gumbleutil"
) )


func (b *Barnard) start() {
b.Config.Attach(gumbleutil.AutoBitrate)
b.Config.Attach(b)

var err error
_, err = gumble.DialWithDialer(new(net.Dialer), b.Address, b.Config, &b.TLSConfig)
if err != nil {
fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(1)
}

// Audio
if os.Getenv("ALSOFT_LOGLEVEL") == "" {
os.Setenv("ALSOFT_LOGLEVEL", "0")
}
if stream, err := gumbleopenal.New(b.Client); err != nil {
fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(1)
} else {
b.Stream = stream
}
}

func (b *Barnard) OnConnect(e *gumble.ConnectEvent) { func (b *Barnard) OnConnect(e *gumble.ConnectEvent) {
b.Client = e.Client

b.Ui.SetActive(uiViewInput) b.Ui.SetActive(uiViewInput)
b.UiTree.Rebuild() b.UiTree.Rebuild()
b.Ui.Refresh() b.Ui.Refresh()
@@ -23,24 +52,6 @@ func (b *Barnard) OnDisconnect(e *gumble.DisconnectEvent) {
switch e.Type { switch e.Type {
case gumble.DisconnectError: case gumble.DisconnectError:
reason = "connection error" reason = "connection error"
case gumble.DisconnectOther:
reason = e.String
case gumble.DisconnectVersion:
reason = "invalid version number"
case gumble.DisconnectUserName:
reason = "invalid user name"
case gumble.DisconnectUserCredentials:
reason = "incorrect user password/certificate"
case gumble.DisconnectServerPassword:
reason = "incorrect server password"
case gumble.DisconnectUsernameInUse:
reason = "user name in use"
case gumble.DisconnectServerFull:
reason = "server full"
case gumble.DisconnectNoCertificate:
reason = "missing certificate"
case gumble.DisconnectAuthenticatorFail:
reason = "authenticator verification failed"
} }
if reason == "" { if reason == "" {
b.AddOutputLine("Disconnected") b.AddOutputLine("Disconnected")


+ 10
- 30
cmd/barnard/main.go Целия файл

@@ -9,8 +9,6 @@ import (
"github.com/layeh/barnard" "github.com/layeh/barnard"
"github.com/layeh/barnard/uiterm" "github.com/layeh/barnard/uiterm"
"github.com/layeh/gumble/gumble" "github.com/layeh/gumble/gumble"
"github.com/layeh/gumble/gumbleutil"
"github.com/layeh/gumble/gumbleopenal"
_ "github.com/layeh/gumble/opus" _ "github.com/layeh/gumble/opus"
) )


@@ -24,43 +22,25 @@ func main() {
flag.Parse() flag.Parse()


// Initialize // Initialize
b := barnard.Barnard{}
b.Ui = uiterm.New(&b)
b := barnard.Barnard{
Config: gumble.NewConfig(),
Address: *server,
}


// Gumble
b.Config = gumble.NewConfig()
b.Config.Username = *username b.Config.Username = *username
b.Config.Address = *server

if *insecure { if *insecure {
b.Config.TLSConfig.InsecureSkipVerify = true
b.TLSConfig.InsecureSkipVerify = true
} }
if *certificate != "" { if *certificate != "" {
if cert, err := tls.LoadX509KeyPair(*certificate, *certificate); err != nil {
cert, err := tls.LoadX509KeyPair(*certificate, *certificate)
if err != nil {
fmt.Fprintf(os.Stderr, "%s\n", err) fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(1) os.Exit(1)
} else {
b.Config.TLSConfig.Certificates = []tls.Certificate{cert}
} }
b.TLSConfig.Certificates = append(b.TLSConfig.Certificates, cert)
} }


b.Client = gumble.NewClient(b.Config)
b.Client.Attach(gumbleutil.AutoBitrate)
b.Client.Attach(&b)
// Audio
if os.Getenv("ALSOFT_LOGLEVEL") == "" {
os.Setenv("ALSOFT_LOGLEVEL", "0")
}
if stream, err := gumbleopenal.New(b.Client); err != nil {
fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(1)
} else {
b.Stream = stream
}

if err := b.Client.Connect(); err != nil {
fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(1)
}

b.Ui = uiterm.New(&b)
b.Ui.Run() b.Ui.Run()
} }

+ 2
- 0
ui.go Целия файл

@@ -156,6 +156,8 @@ func (b *Barnard) OnUiInitialize(ui *uiterm.Ui) {
b.Ui.AddKeyListener(b.OnScrollOutputDown, uiterm.KeyPgdn) b.Ui.AddKeyListener(b.OnScrollOutputDown, uiterm.KeyPgdn)
b.Ui.AddKeyListener(b.OnScrollOutputTop, uiterm.KeyHome) b.Ui.AddKeyListener(b.OnScrollOutputTop, uiterm.KeyHome)
b.Ui.AddKeyListener(b.OnScrollOutputBottom, uiterm.KeyEnd) b.Ui.AddKeyListener(b.OnScrollOutputBottom, uiterm.KeyEnd)

b.start()
} }


func (b *Barnard) OnUiResize(ui *uiterm.Ui, width, height int) { func (b *Barnard) OnUiResize(ui *uiterm.Ui, width, height int) {


+ 4
- 0
ui_tree.go Целия файл

@@ -38,6 +38,10 @@ func (b *Barnard) TreeItemSelect(ui *uiterm.Ui, tree *uiterm.Tree, item uiterm.T
} }


func (b *Barnard) TreeItem(item uiterm.TreeItem) []uiterm.TreeItem { func (b *Barnard) TreeItem(item uiterm.TreeItem) []uiterm.TreeItem {
if b.Client == nil {
return nil
}

var treeItem TreeItem var treeItem TreeItem
if ti, ok := item.(TreeItem); !ok { if ti, ok := item.(TreeItem); !ok {
root := b.Client.Channels[0] root := b.Client.Channels[0]


Loading…
Отказ
Запис