Browse Source

MySQL config functions

Vova Tkach 6 years ago
parent
commit
5b4071ce11
2 changed files with 68 additions and 0 deletions
  1. 59 0
      engine/wrapper/config_mysql.go
  2. 9 0
      frontend.go

+ 59 - 0
engine/wrapper/config_mysql.go

@@ -0,0 +1,59 @@
+package wrapper
+
+import (
+	"encoding/json"
+	"os"
+)
+
+type ConfigMySql struct {
+	Host     string
+	Name     string
+	User     string
+	Password string
+}
+
+func (e *Wrapper) IsMySqlConfigExists() bool {
+	f, err := os.Open(e.DirVhostHome + "/config/mysql.json")
+	if err == nil {
+		defer f.Close()
+		st, err := os.Stat(e.DirVhostHome + "/config/mysql.json")
+		if err == nil {
+			if !st.Mode().IsDir() {
+				return true
+			}
+		}
+	}
+	return false
+}
+
+func (e *Wrapper) MySqlConfigRead() (*ConfigMySql, error) {
+	f, err := os.Open(e.DirVhostHome + "/config/mysql.json")
+	if err == nil {
+		defer f.Close()
+		dec := json.NewDecoder(f)
+		conf := ConfigMySql{}
+		err = dec.Decode(&conf)
+		if err == nil {
+			return &conf, err
+		}
+	}
+	return nil, err
+}
+
+func (e *Wrapper) MySqlConfigWrite(host string, name string, user string, password string) error {
+	r, err := json.Marshal(&ConfigMySql{
+		Host:     host,
+		Name:     name,
+		User:     user,
+		Password: password,
+	})
+	if err == nil {
+		f, err := os.Create(e.DirVhostHome + "/config/mysql.json")
+		if err == nil {
+			defer f.Close()
+			_, err = f.WriteString(string(r))
+			return err
+		}
+	}
+	return err
+}

+ 9 - 0
frontend.go

@@ -2,6 +2,7 @@ package main
 
 import (
 	"golang-fave/engine/wrapper"
+	"net/http"
 )
 
 type MenuItem struct {
@@ -18,6 +19,14 @@ type TmplData struct {
 }
 
 func handleFrontEnd(e *wrapper.Wrapper) bool {
+	// Redirect to CP, if MySQL config file is not exists
+	if !e.IsMySqlConfigExists() {
+		(*e.W).Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
+		http.Redirect(*e.W, e.R, e.R.URL.Scheme+"://"+e.R.Host+"/cp/", 302)
+		return true
+	}
+
+	// Else logic here
 	if e.R.URL.Path == "/" {
 		return e.TmplFrontEnd("index", TmplData{
 			MetaTitle:       "Meta Title",