func (p *NTT) Ping() (string, error) {
	if p.Node == "NA" || len(p.Host) < 5 {
		print("Invalid node or host/ip address")
		return "", errors.New("error")
	}
	resp, err := http.PostForm("https://ssp.pme.gin.ntt.net/lg/lg.cgi",
		url.Values{"query": {"ping"}, "protocol": {p.IPv}, "addrFQDN": {p.Host}, "router": {p.Node}, "sourceIP": {"FQDN"}})
	if err != nil {
		return "", err
	}
	if resp.StatusCode != 200 {
		return "", errors.New("error: NTT looking glass is not available")
	}
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return "", err
	}
	r, _ := regexp.Compile(`<CODE>(?s)(.*?)</CODE>`)
	b := r.FindStringSubmatch(string(body))
	if len(b) > 0 {
		return b[1], nil
	}
	println(string(body))
	return "", errors.New("error")
}
Ping tries to connect NTT's ping looking glass through HTTP
Returns the result
package lg
import (
	"bufio"
	"errors"
	"io/ioutil"
	"net"
	"net/http"
	"net/url"
	"os"
	"os/signal"
	"regexp"
	"sort"
)
type NTT struct {
	Host  string
	IPv   string
	Node  string
	Nodes []string
}
var NTTDefaultNode = "Los Angeles, CA - US"
func (p *NTT) Set(host, version string) {
	p.Host = host
	p.IPv = version
	if p.Node == "" {
		p.Node = NTTDefaultNode
	}
}
func (p *NTT) GetNodes() []string {
	if len(p.Nodes) > 1 {
		return p.Nodes
	}
	var nodes []string
	for node := range p.FetchNodes() {
		nodes = append(nodes, node)
	}
	sort.Strings(nodes)
	p.Nodes = nodes
	return nodes
}
func (p *NTT) FetchNodes() map[string]string {
	var nodes = make(map[string]string, 100)
	resp, err := http.Get("http://ssp.pme.gin.ntt.net/lg/lg.cgi")
	if err != nil {
		println("error: NTT looking glass unreachable (1) ")
		return map[string]string{}
	}
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		println("error: NTT looking glass unreachable (2)" + err.Error())
		return map[string]string{}
	}
	r, _ := regexp.Compile(`(?i)<option value="(?s)([\w|\s|)(,._-]+)"> (?s)([\w|\s|)(,._-]+)`)
	b := r.FindAllStringSubmatch(string(body), -1)
	for _, v := range b {
		nodes[v[1]] = v[2]
	}
	return nodes
}
func (p *NTT) ChangeNode(node string) bool {
	for _, n := range p.Nodes {
		if node == n {
			p.Node = node
			return true
		}
	}
	return false
}
func (p *NTT) GetDefaultNode() string {
	println("please check NTT Com LG terms of use first at https://www.us.ntt.net/support/looking-glass/")
	return NTTDefaultNode
}