// // Created by vfs on 02.05.2024. // package main; import "fmt"; import "log"; import "flag"; import "net/http"; import _ "github.com/lib/pq"; import "database/sql"; import "github.com/gorilla/sessions"; import "regexp"; //import "golang.org/x/crypto/bcrypt"; import "github.com/stripe/stripe-go/v78"; //import "github.com/stripe/stripe-go/v78/customer"; var users *Usermodel; var key = []byte("super-secret-key"); var store = sessions.NewCookieStore(key); var emailrx = regexp.MustCompile("/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/"); func main() { addr := flag.String("addr", ":8080", "HTTP network address"); flag.Parse(); fmt.Println("Hello, Sailor!"); stripe.Key = "sk_test_51PGebgKUHKCjyTmc97rfDPcvew6EhqDz2qp3U7XoAMIilAU9IVo2NO4P7ylkTvbBafFVr94trha1VYY32jRWMw2K00Yq7YJXFf"; store.MaxAge(0); db, err := sql.Open("postgres", "postgres://elves_database:iK2SoVbDhdCki5n3LxGyP6zKpLspt4@80.240.25.87/elves_database"); if err != nil { log.Fatal(err); } defer db.Close(); users = &Usermodel{db}; mux := http.NewServeMux(); //rows, err := db.Query("SELECT * FROM accounts"); //if err != nil {; // log.Fatal(err); //}; //defer rows.Close(); //accounts := make([]*Account, 0); //for rows.Next() {; // acc := new(Account); // err := rows.Scan(&acc.id, &acc.Username, &acc.password, &acc.Color); // if err != nil {; // log.Fatal(err); // }; // accounts = append(accounts, acc); //}; //if err = rows.Err(); err != nil {; // log.Fatal(err); //}; //for _, acc := range accounts {; // fmt.Println(acc); //}; mux.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static")))); mux.HandleFunc("/favicon.ico", favicon); mux.HandleFunc("/", home); mux.HandleFunc("/login", login); mux.HandleFunc("/logout", logout); mux.HandleFunc("/register", register); mux.HandleFunc("/account", require_authenticated_user(account)); mux.HandleFunc("/deleteaccount", require_authenticated_user(deleteaccount)); mux.HandleFunc("/subscribe", require_authenticated_user(subscribe_stripe)); mux.HandleFunc("/managebilling", require_authenticated_user(managebilling)); mux.HandleFunc("/webhook", webhook); log.Fatal(http.ListenAndServe(*addr, secure_headers(mux))); }