73 lines
1.4 KiB
Go
73 lines
1.4 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|
|
}
|