mirror of
https://github.com/mumble-voip/grumble.git
synced 2025-12-20 06:10:00 -08:00
Update registration code to work on latest Go tip.
This commit is contained in:
parent
4ca0fd3c55
commit
ceb3524b49
1 changed files with 42 additions and 47 deletions
89
register.go
89
register.go
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue