Advertisement
Guest User

Untitled

a guest
Jan 15th, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.44 KB | None | 0 0
  1. // InitDB starts the DB
  2. func InitDB(config *model.Config) (*gorm.DB, error) {
  3.     log.Println("Connecting to database")
  4.  
  5.     fixieData := strings.Split(config.Socks, "@")
  6.     fixieAddr := fixieData[1]
  7.     authData := strings.Split(fixieData[0], ":")
  8.  
  9.     auth := proxy.Auth{
  10.         User:     authData[0],
  11.         Password: authData[1],
  12.     }
  13.  
  14.     dialer, err := proxy.SOCKS5("tcp", fixieAddr, &auth, proxy.Direct)
  15.    
  16.     if err != nil {
  17.         fmt.Fprintln(os.Stderr, "can't connect to the proxy:", err)
  18.         os.Exit(1)
  19.     }
  20.  
  21.     mysql.RegisterDial("fixieDial", func(addr string) (net.Conn, error) {
  22.         return dialer.Dial("tcp", addr)
  23.     })
  24.  
  25.     conn := fmt.Sprintf("%s:%s@fixieDial(%s:3306)/%s?parseTime=true", config.DBUser, config.DBPassword, config.DBHost, config.DBName)
  26.  
  27.     //conn := fmt.Sprintf("%s:%s@tcp(%s)/%s?parseTime=true", config.DBUser, config.DBPassword, config.DBHost, config.DBName)
  28.  
  29.     fmt.Println("Connection details:", conn)
  30.     var db *gorm.DB
  31.  
  32.     // Ping until connection comes alive.
  33.     var dbError error
  34.     maxAttempts := 5
  35.     fmt.Println("Starting connection attempts.")
  36.     for attempts := 1; attempts <= maxAttempts; attempts++ {
  37.         // dbError = db.DB().Ping()
  38.         db, dbError = gorm.Open("mysql", conn)
  39.         if dbError == nil {
  40.             break
  41.         }
  42.         log.Println(dbError)
  43.         time.Sleep(time.Duration(attempts) * time.Second)
  44.     }
  45.     if dbError != nil {
  46.         // log.Fatal(dbError)
  47.         return nil, dbError
  48.     }
  49.     //db.LogMode(true)
  50.     fmt.Println("Connected to db successfully!")
  51.  
  52.     return db, nil
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement