package main import ( "fmt" "log" "models/internals/app/conc" "models/internals/app/dbs" "os" ) const ( yealinkLink = "http://%s/servlet?m=mod_listener&p=login&q=loginForm&jumpto=status" ciscoLink = "http://%s/admin/spacfg.xml" ) func main() { db := dbs.GetPG() defer db.Close() mac := "" if len(os.Args) > 1 { mac = os.Args[1] } sql := "" if mac != "" { sql = fmt.Sprintf("SELECT id,ip FROM phones WHERE mac = '%s' AND status = 0", mac) } else { sql = "SELECT id,ip FROM phones WHERE status = 0 AND ip !='0.0.0.0'" } rows, err := db.Query(sql) if err != nil { log.Println(err) return } var results []*dbs.PHONE for rows.Next() { phone := &dbs.PHONE{} err := rows.Scan( &phone.ID, &phone.IP, ) if err != nil { log.Println(err) } results = append(results, phone) } var items []*conc.Item for _, row := range results { item := &conc.Item{ ID: row.ID, YeaLinkLink: fmt.Sprintf(yealinkLink, row.IP), CiscoLink: fmt.Sprintf(ciscoLink, row.IP), } items = append(items, item) } items = conc.Concurency(items) log.Println(len(items)) for _, item := range items { if item.Model != "" && item.Firmware != "" { _, err := db.Exec(`UPDATE phones SET model = $1, firmware = $2, lang = $3 WHERE id = $4`, item.Model, item.Firmware, item.Lang, item.ID) if err != nil { log.Println(err) } } } }