39 lines
1.3 KiB
Go
39 lines
1.3 KiB
Go
package hydra
|
|
|
|
import(
|
|
"fmt"
|
|
"github.com/jessevdk/go-flags"
|
|
"os"
|
|
"ur.gs/go-iscsi/common"
|
|
)
|
|
|
|
type Config struct {
|
|
TargetName string `short:"n" long:"name" required:"true" description:"Name of the iSCSI target we present."`
|
|
TargetListen string `short:"L" long:"listen" required:"true" description:"Address to listen on for incoming connections."`
|
|
|
|
InitiatorBind string `short:"b" long:"bind" description:"Address connections to the real targets will come from."`
|
|
InitiatorAddresses []string `short:"t" long:"target" required:"true" description:"A real target to keep in sync."`
|
|
|
|
Verbosity []bool `short:"v" long:"verbose" description:"Verbosity. Repeat multiple times to increase."`
|
|
Syslog bool `short:"s" long:"syslog" description:"Should we log to syslog? If not, logs go to stdout."`
|
|
|
|
Logger *common.Logger
|
|
}
|
|
|
|
func ParseCommandLine(argv []string) (*Config, error) {
|
|
var config Config
|
|
_, err := flags.ParseArgs(&config, argv) ; if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
logPrefix := fmt.Sprintf("iscsi-hydra:%s", config.TargetName)
|
|
logger, err := common.NewLogger(logPrefix, config.Syslog, os.Stdout, len(config.Verbosity)) ; if err != nil {
|
|
fmt.Fprintln(os.Stderr, "Setting up logging failed: %s", err.Error())
|
|
return nil, err
|
|
}
|
|
|
|
config.Logger = logger
|
|
return &config, err
|
|
}
|
|
|