Documentation ¶
Overview ¶
Package ftp is the entry for tfp service
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // Commands represent the ftp service start command Commands = []*cli.Command{ { Name: "ftp:start", Category: category, Usage: "start ftp service", UsageText: "ftp:start [command options]", Flags: []cli.Flag{ &cli.StringFlag{ Name: "host", Aliases: []string{"H"}, Usage: "ftp server host", Value: "::", }, &cli.UintFlag{ Name: "port", Aliases: []string{"P"}, Usage: "ftp server port", Value: 2121, }, &cli.StringFlag{ Name: "passive-ip", Usage: "ftp client connect to ftp server to transfer data in passive mode", Value: "", }, &cli.StringFlag{ Name: "passive-port-range", Usage: "ftp server will pick a port random in the range, open the data connection tunnel in passive mode", Value: "52013-52114", }, &cli.StringFlag{ Name: "welcome-message", Usage: "ftp server welcome message", Value: "welcome to bigfile ftp server", }, &cli.BoolFlag{ Name: "tls-enable", Usage: "determine whether enable tls", Value: false, }, &cli.StringFlag{ Name: "cert-file", Usage: "tls certificate file", Value: "", }, &cli.StringFlag{ Name: "key-file", Usage: "tls certificate key file", Value: "", }, }, Action: func(ctx *cli.Context) error { logger := &loggerAdapter{log.MustNewLogger(nil)} passivePortRange := ctx.String("passive-port-range") if len(passivePortRange) > 0 { portRange := strings.Split(passivePortRange, "-") if len(portRange) != 2 { return errors.New("wrong passive-port-range format, eg: 52013-52114") } if _, err := strconv.Atoi(portRange[0]); err != nil { return err } if _, err := strconv.Atoi(portRange[1]); err != nil { return err } if portRange[0] >= portRange[1] { return errors.New("port start should be less than port end") } } host := ctx.String("host") port := int(ctx.Uint("port")) options := &server.ServerOpts{ TLS: ctx.Bool("tls-enable"), Auth: &ftp.Auth{}, Port: port, Logger: logger, Factory: &ftp.Factory{}, KeyFile: ctx.String("key-file"), Hostname: host, CertFile: ctx.String("cert-file"), PublicIp: ctx.String("passive-ip"), PassivePorts: passivePortRange, ExplicitFTPS: ctx.Bool("tls-enable"), WelcomeMessage: ctx.String("welcome-message"), } return server.NewServer(options).ListenAndServe() }, Before: func(context *cli.Context) (err error) { db := databases.MustNewConnection(&config.DefaultConfig.Database) if err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", config.DefaultConfig.Database.DBName)).Error; err != nil { return } migrate.DefaultMC.SetConnection(db) migrate.DefaultMC.Upgrade() return nil }, }, } )
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.