Update registration code to work on latest Go tip.

This commit is contained in:
Mikkel Krautz 2011-08-26 12:54:14 +02:00
parent 4ca0fd3c55
commit ceb3524b49

View file

@ -4,6 +4,8 @@
package main package main
// This file handles public server list registration
import ( import (
"bytes" "bytes"
"crypto/sha1" "crypto/sha1"
@ -13,35 +15,32 @@ import (
"io/ioutil" "io/ioutil"
"net" "net"
"os" "os"
"strconv" "url"
"template" "xml"
) )
// This file handles public server list registration type Register struct {
XMLName xml.Name `xml:"server"`
const registerTemplate = ` //MacHash string `xml:"machash"`
<server> Version string `xml:"version"`
{.section machash}<machash>{machash}</machash>{.end} Release string `xml:"release"`
{.section version}<version>{version}</version>{.end} //OS string `xml:"os"`
{.section release}<release>{release}</release>{.end} //OSVer string `xml:"osver"`
{.section os}<os>{os}</os>{.end} //Qt string `xml:"qt"`
{.section osver}<osver>{osver}</osver>{.end} //Is64Bit bool `xml:"is64bit"`
{.section qt}<qt>{qt}</qt>{.end} //CpuId string `xml:"cpuid"`
{.section is64bit}<is64bit>{is64bit}</is64bit>{.end} //CpuIdExt string `xml:"cpuidext"`
{.section cpuid}<cpu_id>{cpuid}</cpu_id>{.end} //CpuSSE2 bool `xml:"cpusse2"`
{.section cpuextid}<cpu_extid>{cpu_extid}</cpu_extid>{.end} Name string `xml:"name"`
{.section cpusse2}<cpu_sse2>{cpusse2}</cpu_sse2>{.end} Host string `xml:"host"`
{.section name}<name>{name}</name>{.end} Password string `xml:"password"`
{.section host}<host>{host}</host>{.end} Port int `xml:"port"`
{.section password}<password>{password}</password>{.end} Url string `xml:"url"`
{.section port}<port>{port}</port>{.end} Digest string `xml:"digest"`
{.section url}<url>{url}</url>{.end} Users int `xml:"users"`
{.section digest}<digest>{digest}</digest>{.end} Channels int `xml:"channels"`
{.section users}<users>{users}</users>{.end} Location string `xml:"location"`
{.section channels}<channels>{channels}</channels>{.end} }
{.section location}<location>{location}</location>{.end}
</server>
`
const ( const (
registerAddr = "mumble.hive.no:443" registerAddr = "mumble.hive.no:443"
@ -114,27 +113,23 @@ func (server *Server) RegisterPublicServer() {
digest := hex.EncodeToString(hasher.Sum()) digest := hex.EncodeToString(hasher.Sum())
// Render registration XML template // Render registration XML template
buf := bytes.NewBuffer(nil) reg := Register{
t, err := template.Parse(registerTemplate, nil) Name: server.cfg.StringValue("RegisterName"),
if err != nil { Host: server.cfg.StringValue("RegisterHost"),
server.Printf("register: unable to parse template: %v", err) Password: server.cfg.StringValue("RegisterPassword"),
return Url: server.cfg.StringValue("RegisterWebUrl"),
Location: server.cfg.StringValue("RegisterLocation"),
Port: server.port,
Digest: digest,
Users: len(server.clients),
Channels: len(server.Channels),
Version: "1.2.4",
Release: "Grumble Git",
} }
err = t.Execute(buf, map[string]string{ buf := bytes.NewBuffer(nil)
"name": server.cfg.StringValue("RegisterName"), err := xml.Marshal(buf, reg)
"host": server.cfg.StringValue("RegisterHost"),
"password": server.cfg.StringValue("RegisterPassword"),
"url": server.cfg.StringValue("RegisterWebUrl"),
"location": server.cfg.StringValue("RegisterLocation"),
"port": strconv.Itoa(server.port),
"digest": digest,
"users": strconv.Itoa(len(server.clients)),
"channels": strconv.Itoa(len(server.Channels)),
"version": "1.2.4",
"release": "Grumble git",
})
if err != nil { if err != nil {
server.Printf("register: unable to execute template: %v", err) server.Printf("register: unable to marshal xml: %v", err)
return return
} }
@ -163,7 +158,7 @@ func (server *Server) RegisterPublicServer() {
"Content-Type": {"text/xml"}, "Content-Type": {"text/xml"},
} }
req.URL, err = http.ParseURL(registerUrl) req.URL, err = url.Parse(registerUrl)
if err != nil { if err != nil {
server.Printf("register: error parsing url: %v", err) server.Printf("register: error parsing url: %v", err)
return return