func main() { port := flag.Int("p", 80, "port number") directory := flag.String("d", "", "directory for uploaded files (default: create a temporary directory)") flag.Parse() password, err := gopass.GetPass("Please enter a password for file upload: ") if err != nil { log.Fatalln("Error:", err) } if p, err := gopass.GetPass("Please repeat the password: "******"Error:", err) } else if password != p { log.Fatalln("Passwords do not match.") } c := make(chan os.Signal) signal.Notify(c) go func() { sig := <-c log.Fatalf("Caught signal %v, exiting...\n", sig) }() st, err := storage.NewDirectory(*directory) if err != nil { log.Fatalln("Could not create storage:", err) } log.Printf("Starting go-share on port %d.\n%v\n", *port, st) if err := share.New(st, password).Start(*port); err != nil { log.Fatalln("Could not start server:", err) } }
func (i *Installer) getDSNFromUser(dsn *mysql.DSN) error { // Ask for username username, err := i.term.PromptString("MySQL username", dsn.Username) if err != nil { return err } dsn.Username = username // Ask for password var password string if i.flags.Bool["plain-passwords"] { password, err = i.term.PromptString("MySQL password", "") } else { password, err = gopass.GetPass("MySQL password: "******"MySQL host[:port] or socket file", dsn.To(), ) if err != nil { return err } if filepath.IsAbs(hostname) { dsn.Socket = hostname dsn.Hostname = "" } else { f := strings.Split(hostname, ":") dsn.Hostname = f[0] if len(f) > 1 { dsn.Port = f[1] } else { dsn.Port = "3306" } dsn.Socket = "" } return nil }
func (i *Installer) connectMySQL(def *mysql.DSN, creating bool) (mysql.DSN, error) { dsn := mysql.DSN{} if creating { fmt.Println("Specify a root/super MySQL user to create a user for the agent") } else if def != nil { fmt.Println("Verify the existing MySQL user to use for the agent") dsn = *def if dsn.Username == "" { user, _ := user.Current() if user != nil { dsn.Username = user.Username } } } else { fmt.Println("Specify an existing MySQL user to use for the agent") } CONNECT_MYSQL: for { username, err := i.term.PromptStringRequired("MySQL username", dsn.Username) if err != nil { return dsn, err } dsn.Username = username var password string if creating { password, err = gopass.GetPass("MySQL password: "******"MySQL password", dsn.Password) } if err != nil { return dsn, err } dsn.Password = password hostname, err := i.term.PromptStringRequired("MySQL host[:port] or socket file", dsn.To()) if err != nil { return dsn, err } if filepath.IsAbs(hostname) { dsn.Socket = hostname dsn.Hostname = "" } else { f := strings.Split(hostname, ":") dsn.Hostname = f[0] if len(f) > 1 { dsn.Port = f[1] } else { dsn.Port = "3306" } dsn.Socket = "" } if err := TestMySQLConnection(dsn); err != nil { fmt.Printf("Error connecting to MySQL %s: %s\n", dsn, err) again, err := i.term.PromptBool("Try again?", "Y") if err != nil { return dsn, err } if !again { return dsn, fmt.Errorf("Failed to connect to MySQL") } continue CONNECT_MYSQL } fmt.Printf("MySQL connection OK\n") break } return dsn, nil }
func PromptPassword(pass *string) error { var err error *pass, err = gopass.GetPass("LDAP Password: ") return err }
func getpasswd(prompt string) (string, error) { return gopass.GetPass(prompt) }