large refactor, fixes #2

This commit is contained in:
Craig
2020-01-18 23:30:09 +00:00
parent 2729c66ccc
commit 7aa034f3ba
59 changed files with 2766 additions and 1345 deletions

View File

@ -5,4 +5,4 @@ import "github.com/spf13/cobra"
type Config interface {
Init(cmd *cobra.Command) error
Set()
}
}

View File

@ -5,16 +5,14 @@ import (
"github.com/spf13/viper"
)
type Serve struct {
Cert string
Key string
Bind string
Password string
type Server struct {
Cert string
Key string
Bind string
Static string
}
func (Serve) Init(cmd *cobra.Command) error {
func (Server) Init(cmd *cobra.Command) error {
cmd.PersistentFlags().String("bind", "127.0.0.1:8080", "Address/port/socket to serve neko")
if err := viper.BindPFlag("bind", cmd.PersistentFlags().Lookup("bind")); err != nil {
return err
@ -30,12 +28,7 @@ func (Serve) Init(cmd *cobra.Command) error {
return err
}
cmd.PersistentFlags().String("password", "neko", "Password for connecting to stream")
if err := viper.BindPFlag("password", cmd.PersistentFlags().Lookup("password")); err != nil {
return err
}
cmd.PersistentFlags().String("static", "./www", "Static files to serve")
cmd.PersistentFlags().String("static", "./www", "Neko client files to serve")
if err := viper.BindPFlag("static", cmd.PersistentFlags().Lookup("static")); err != nil {
return err
}
@ -43,10 +36,9 @@ func (Serve) Init(cmd *cobra.Command) error {
return nil
}
func (s *Serve) Set() {
func (s *Server) Set() {
s.Cert = viper.GetString("cert")
s.Key = viper.GetString("key")
s.Bind = viper.GetString("bind")
s.Password = viper.GetString("password")
s.Static = viper.GetString("static")
}

View File

@ -0,0 +1,60 @@
package config
import (
"strings"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
type WebRTC struct {
Device string
AudioCodec string
AudioParams string
Display string
VideoCodec string
VideoParams string
}
func (WebRTC) Init(cmd *cobra.Command) error {
cmd.PersistentFlags().String("device", "auto_null.monitor", "Audio device to capture")
if err := viper.BindPFlag("device", cmd.PersistentFlags().Lookup("device")); err != nil {
return err
}
cmd.PersistentFlags().String("ac", "opus", "Audio codec to use for streaming")
if err := viper.BindPFlag("acodec", cmd.PersistentFlags().Lookup("ac")); err != nil {
return err
}
cmd.PersistentFlags().String("ap", "", "Audio codec parameters to use for streaming")
if err := viper.BindPFlag("aparams", cmd.PersistentFlags().Lookup("ap")); err != nil {
return err
}
cmd.PersistentFlags().String("display", ":0.0", "XDisplay to capture")
if err := viper.BindPFlag("display", cmd.PersistentFlags().Lookup("display")); err != nil {
return err
}
cmd.PersistentFlags().String("vc", "vp8", "Video codec to use for streaming")
if err := viper.BindPFlag("vcodec", cmd.PersistentFlags().Lookup("vc")); err != nil {
return err
}
cmd.PersistentFlags().String("vp", "", "Video codec parameters to use for streaming")
if err := viper.BindPFlag("vparams", cmd.PersistentFlags().Lookup("vp")); err != nil {
return err
}
return nil
}
func (s *WebRTC) Set() {
s.Device = strings.ToLower(viper.GetString("device"))
s.AudioCodec = strings.ToLower(viper.GetString("acodec"))
s.AudioParams = strings.ToLower(viper.GetString("aparams"))
s.Display = strings.ToLower(viper.GetString("display"))
s.VideoCodec = strings.ToLower(viper.GetString("vcodec"))
s.VideoParams = strings.ToLower(viper.GetString("vparams"))
}

View File

@ -0,0 +1,30 @@
package config
import (
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
type WebSocket struct {
Password string
AdminPassword string
}
func (WebSocket) Init(cmd *cobra.Command) error {
cmd.PersistentFlags().String("password", "neko", "Password for connecting to stream")
if err := viper.BindPFlag("password", cmd.PersistentFlags().Lookup("password")); err != nil {
return err
}
cmd.PersistentFlags().String("admin", "admin", "Admin password for connecting to stream")
if err := viper.BindPFlag("admin", cmd.PersistentFlags().Lookup("admin")); err != nil {
return err
}
return nil
}
func (s *WebSocket) Set() {
s.Password = viper.GetString("password")
s.AdminPassword = viper.GetString("admin")
}