models/main.go
2024-01-18 15:52:30 +03:00

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)
}
}
}
}