Beispiel #1
0
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)
	}
}
Beispiel #2
0
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
}
Beispiel #3
0
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
}
Beispiel #4
0
func PromptPassword(pass *string) error {
	var err error
	*pass, err = gopass.GetPass("LDAP Password: ")
	return err
}
Beispiel #5
0
func getpasswd(prompt string) (string, error) {
	return gopass.GetPass(prompt)
}