ftp upload

master
Bel LaPointe 2019-04-14 17:16:58 -06:00
parent 8c5a4efd94
commit 47413f618d
2 changed files with 33 additions and 2 deletions

29
main.go
View File

@ -9,6 +9,7 @@ package main
import ( import (
"flag" "flag"
"log" "log"
"os/exec"
filedriver "github.com/goftp/file-driver" filedriver "github.com/goftp/file-driver"
"github.com/goftp/server" "github.com/goftp/server"
@ -16,7 +17,7 @@ import (
func main() { func main() {
var ( var (
root = flag.String("root", "", "Root directory to serve") root = flag.String("root", "./tmp", "Root directory to serve")
user = flag.String("user", "admin", "Username for login") user = flag.String("user", "admin", "Username for login")
pass = flag.String("pass", "123456", "Password for login") pass = flag.String("pass", "123456", "Password for login")
port = flag.Int("port", 2121, "Port") port = flag.Int("port", 2121, "Port")
@ -36,7 +37,15 @@ func main() {
Factory: factory, Factory: factory,
Port: *port, Port: *port,
Hostname: *host, Hostname: *host,
Auth: &server.SimpleAuth{Name: *user, Password: *pass}, Auth: &callbackAuth{
realAuth: &server.SimpleAuth{
Name: *user,
Password: *pass,
},
callback: func() {
log.Printf("callback: %v", exec.Command("sh", "-c", "cd /wiki; git add -A :/; git commit -m \"ftp upload\"").Run())
},
},
} }
log.Printf("Starting ftp server on %v:%v", opts.Hostname, opts.Port) log.Printf("Starting ftp server on %v:%v", opts.Hostname, opts.Port)
@ -47,3 +56,19 @@ func main() {
log.Fatal("Error starting server:", err) log.Fatal("Error starting server:", err)
} }
} }
type callbackAuth struct {
realAuth server.Auth
callback func()
}
func (ca *callbackAuth) CheckPasswd(u, p string) (bool, error) {
ok, err := ca.realAuth.CheckPasswd(u, p)
if !ok || err != nil {
return ok, err
}
if ca.callback != nil {
ca.callback()
}
return ok, err
}

6
test.sh Normal file
View File

@ -0,0 +1,6 @@
echo "
user admin 123456
ascii
put Dockerfile
bye
" | ftp -n 127.0.0.1 2121