话不多直接上代码
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
"io"
"log"
"math/rand"
"time"
"net/http"
)
const (
host = "127.0.0.2"
port = 5432
user = "postgres"
password = "00000000"
dbname = "postgres"
)
func connectDB() *sql.DB{
psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
"password=%s dbname=%s sslmode=disable",
host, port, user, password, dbname)
db, err := sql.Open("postgres", psqlInfo)
if err != nil {
panic(err)
}
err = db.Ping()
if err != nil {
panic(err)
}
return db
}
func randomtime() []int64 {
timestamp := time.Now().Unix()
fmt.Printf("时间戳(秒):%v\n", timestamp)
return nil
}
const form = `<html><body><form action="#" method="post" name="bar">
user: <input type="text" name="in"/>
email: <input type="text" name="in"/>
<input type="submit" value="Submit"/>
</form></body></html>`
func FormServer( w http.ResponseWriter, request *http.Request) {
db:=connectDB()
w.Header().Set("Content-Type", "text/html")
switch request.Method {
case "GET":
io.WriteString(w, form)
case "POST":
request.ParseForm()
io.WriteString(w, request.Form["in"][1])
var a = request.FormValue("in")
io.WriteString(w, "\n"+"\n")
fmt.Printf(a)
io.WriteString(w, request.FormValue("in"))
stmt,err := db.Prepare("insert into public.harbor_user(user_id,username,email,password,realname,comment,deleted,reset_uuid,salt,sysadmin_flag,creation_time,update_time,password_version) values($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13)")
if err != nil {
log.Fatal(err)
}
_,err = stmt.Exec(fmt.Sprintf("%03v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(1000)),a, a, "12345678AbC", "xx", "from LDAP", "f", "NULL", "NULL", "f", "2021-07-16 14:57:52.460499", "2021-07-16 14:57:52.460499", "sha256")
if err != nil {
log.Fatal(err)
}else {
fmt.Println("insert into user_tbl success")
}
}
}
func main() {
http.HandleFunc("/", FormServer)
if err := http.ListenAndServe(":80", nil); err != nil {
}
}