mirror of
https://github.com/mumble-voip/grumble.git
synced 2025-12-19 21:59:59 -08:00
Better defaults handling + better Windows compat.
This commit is contained in:
parent
2cf093160b
commit
fea87b0c13
2 changed files with 47 additions and 31 deletions
4
ctl.go
4
ctl.go
|
|
@ -6,8 +6,6 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"rpc"
|
"rpc"
|
||||||
"strconv"
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
@ -40,7 +38,7 @@ func GrumbleCtl(args []string) {
|
||||||
|
|
||||||
sid, _ := strconv.Atoi64(args[1])
|
sid, _ := strconv.Atoi64(args[1])
|
||||||
|
|
||||||
client, err := rpc.Dial("unix", filepath.Join(os.Getenv("HOME"), ".grumble", "ctl"))
|
client, err := rpc.Dial(*ctlnet, *ctladdr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Could not connect to control socket: %v", err)
|
log.Fatalf("Could not connect to control socket: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
74
grumble.go
74
grumble.go
|
|
@ -16,13 +16,45 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"rpc"
|
"rpc"
|
||||||
|
"runtime"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func defaultGrumbleDir() string {
|
||||||
|
dirname := ".grumble"
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
dirname = "grumble"
|
||||||
|
}
|
||||||
|
return filepath.Join(os.Getenv("HOME"), dirname)
|
||||||
|
}
|
||||||
|
|
||||||
|
func defaultDataDir() string {
|
||||||
|
return filepath.Join(defaultGrumbleDir(), "data")
|
||||||
|
}
|
||||||
|
|
||||||
|
func defaultBlobDir() string {
|
||||||
|
return filepath.Join(defaultGrumbleDir(), "blob")
|
||||||
|
}
|
||||||
|
|
||||||
|
func defaultCtlNet() string {
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
return "tcp"
|
||||||
|
}
|
||||||
|
return "unix"
|
||||||
|
}
|
||||||
|
|
||||||
|
func defaultCtlAddr() string {
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
return "localhost:5454"
|
||||||
|
}
|
||||||
|
return filepath.Join(defaultGrumbleDir(), ".ctl")
|
||||||
|
}
|
||||||
|
|
||||||
var help *bool = flag.Bool("help", false, "Show this help")
|
var help *bool = flag.Bool("help", false, "Show this help")
|
||||||
var datadir *string = flag.String("datadir", "", "Directory to use for server storage")
|
var datadir *string = flag.String("datadir", defaultDataDir(), "Directory to use for server storage")
|
||||||
var blobdir *string = flag.String("blobdir", "", "Directory to use for blob storage")
|
var blobdir *string = flag.String("blobdir", defaultBlobDir(), "Directory to use for blob storage")
|
||||||
var ctlpath *string = flag.String("ctlpath", "", "File to use for ctl socket")
|
var ctlnet *string = flag.String("ctlnet", defaultCtlNet(), "Network to use for ctl socket")
|
||||||
|
var ctladdr *string = flag.String("ctladdr", defaultCtlAddr(), "Address to use for ctl socket")
|
||||||
var sqlitedb *string = flag.String("murmurdb", "", "Path to murmur.sqlite to import server structure from")
|
var sqlitedb *string = flag.String("murmurdb", "", "Path to murmur.sqlite to import server structure from")
|
||||||
var cleanup *bool = flag.Bool("clean", false, "Clean up existing data dir content before importing Murmur data")
|
var cleanup *bool = flag.Bool("clean", false, "Clean up existing data dir content before importing Murmur data")
|
||||||
var gencert *bool = flag.Bool("gencert", false, "Generate a self-signed certificate for use with Grumble")
|
var gencert *bool = flag.Bool("gencert", false, "Generate a self-signed certificate for use with Grumble")
|
||||||
|
|
@ -31,6 +63,7 @@ var servers map[int64]*Server
|
||||||
|
|
||||||
func Usage() {
|
func Usage() {
|
||||||
fmt.Fprintf(os.Stderr, "usage: grumble [options]\n")
|
fmt.Fprintf(os.Stderr, "usage: grumble [options]\n")
|
||||||
|
fmt.Fprintf(os.Stderr, "remote control: grumble [options] ctl [ctlopts]\n")
|
||||||
flag.PrintDefaults()
|
flag.PrintDefaults()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -74,33 +107,22 @@ func MurmurImport(filename string) (err os.Error) {
|
||||||
func main() {
|
func main() {
|
||||||
var err os.Error
|
var err os.Error
|
||||||
|
|
||||||
if len(os.Args) >= 2 && os.Args[1] == "ctl" {
|
|
||||||
GrumbleCtl(os.Args[2:])
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
if *help == true {
|
if *help == true {
|
||||||
Usage()
|
Usage()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for i, str := range os.Args {
|
||||||
|
if str == "ctl" {
|
||||||
|
GrumbleCtl(os.Args[i+1:])
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
log.SetPrefix("[G] ")
|
log.SetPrefix("[G] ")
|
||||||
log.Printf("Grumble - Mumble server written in Go")
|
log.Printf("Grumble - Mumble server written in Go")
|
||||||
|
|
||||||
if len(*datadir) == 0 {
|
|
||||||
*datadir = filepath.Join(os.Getenv("HOME"), ".grumble", "data")
|
|
||||||
}
|
|
||||||
log.Printf("Using data directory: %s", *datadir)
|
|
||||||
|
|
||||||
if len(*blobdir) == 0 {
|
|
||||||
*blobdir = filepath.Join(os.Getenv("HOME"), ".grumble", "blob")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(*ctlpath) == 0 {
|
|
||||||
*ctlpath = filepath.Join(os.Getenv("HOME"), ".grumble", "ctl")
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Printf("Using blob directory: %s", *blobdir)
|
log.Printf("Using blob directory: %s", *blobdir)
|
||||||
err = blobstore.Open(*blobdir, true)
|
err = blobstore.Open(*blobdir, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -197,14 +219,10 @@ func main() {
|
||||||
go s.ListenAndMurmur()
|
go s.ListenAndMurmur()
|
||||||
}
|
}
|
||||||
|
|
||||||
os.Remove(*ctlpath)
|
if *ctlnet == "unix" {
|
||||||
|
os.Remove(*ctladdr)
|
||||||
addr, err := net.ResolveUnixAddr("unix", *ctlpath)
|
|
||||||
if err != nil {
|
|
||||||
log.Panicf("Unable to resolve ctl addr: %v", err)
|
|
||||||
}
|
}
|
||||||
|
lis, err := net.Listen(*ctlnet, *ctladdr)
|
||||||
lis, err := net.ListenUnix("unix", addr)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panicf("Unable to listen on ctl socket: %v", err)
|
log.Panicf("Unable to listen on ctl socket: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue