// set_addr.go package main import ( "crypto/md5" "database/sql" "encoding/hex" "flag" "fmt" "log" "time" _ "github.com/go-sql-driver/mysql" ) func main() { paddr := flag.String("addr", "", "The mining address (string)") pserver := flag.String("server", "", "The db host and port (string)") pcoin := flag.String("coin", "", "The coin name (string)") puser := flag.String("user", "", "The db user (string)") ppassword := flag.String("password", "", "The db user's password (string)") pdbn := flag.String("db", "", "The db name (string)") flag.Parse() if len(*paddr) <= 0 /* || len(*pdb) <= 0 || len(*puser) <= 0 || len(*ppassword) <= 0*/ { log.Fatalf("Failed to param") return } addr := *paddr user := *puser password := *ppassword dbserver := *pserver coin := *pcoin dbn := *pdbn if len(user) <= 0 { user = "m2pool" } if len(password) <= 0 { password = "pMJzgwrg@Frt8aDXkQAsTGhG!zy!H8Jd" } if len(dbserver) <= 0 { dbserver = "127.0.0.1:3306" } if len(coin) <= 0 { coin = "nexa" } if len(dbn) <= 0 { dbn = "m2pooldb" } dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s", user, password, dbserver, dbn) //log.Println("dsn", dsn) db, err := sql.Open("mysql", dsn) if err != nil { log.Fatalf("Error opening database: %v", err) return } defer db.Close() table_name := coin + "_address" var count int querySQL := fmt.Sprintf("SELECT COUNT(*) FROM %s WHERE addr = ?", table_name) err = db.QueryRow(querySQL, addr).Scan(&count) if err != nil { log.Fatalf("Error checking if address exists: %v", err) return } hash := md5.Sum([]byte(addr + "m2pool_alias")) alias := hex.EncodeToString(hash[:]) if count > 0 { updateSQL := fmt.Sprintf("UPDATE %s SET date =?, addr = ?, alias= ?, valid = 1 WHERE addr = ?", table_name) _, err := db.Exec(updateSQL, time.Now().Format("2006-01-02 15:04:05"), addr, alias, addr) if err != nil { log.Fatalf("Error updating address: %v", err) return } fmt.Printf("Address updated: %s\n", addr) } else { insertSQL := fmt.Sprintf("INSERT INTO %s (date, addr, alias, valid) VALUES (?, ?, ?, ?)", table_name) _, err := db.Exec(insertSQL, time.Now().Format("2006-01-02 15:04:05"), addr, alias, 1) if err != nil { log.Fatalf("Error inserting address: %v", err) } fmt.Printf("Address inserted: %s\n", addr) } }