package main import ( "encoding/xml" ) // myConfig прототип структурки с конфигом. type myConfig struct { Redis struct { Server string `json:"server,omitempty"` Port int `json:"port,omitempty"` Channel string `json:"channel,omitempty"` MyChannel string `json:"my_channel,omitempty"` } `json:"redis"` Jabber struct { Server string `json:"server,omitempty"` Port int `json:"port,omitempty"` Ssl bool `json:"ssl,omitempty"` StartTLS bool `json:"starttls,omitempty"` SslVerify bool `json:"ssl_verify,omitempty"` InsecureAllowUnencryptedAuth bool `json:"insecureallowunencryptedauth,omitempty"` ConnectionTimeout int64 `json:"connection_timeout,omitempty"` ReconnectDelay int64 `json:"reconnect_delay,omitempty"` ServerPingDelay int64 `json:"server_ping_delay,omitempty"` MucPingDelay int64 `json:"muc_ping_delay,omitempty"` MucRejoinDelay int64 `json:"muc_rejoin_delay,omitempty"` PingSplayDelay int64 `json:"ping_splay_delay,omitempty"` Nick string `json:"nick,omitempty"` Resource string `json:"resource,omitempty"` User string `json:"user,omitempty"` Password string `json:"password,omitempty"` BotMasters []string `json:"bot_masters"` Channels []struct { Name string `json:"name,omitempty"` Nick string `json:"nick,omitempty"` Password string `json:"password,omitempty"` } `json:"channels,omitempty"` StartupStatus []string `json:"startup_status,omitempty"` RuntimeStatus struct { Text []string `json:"text,omitempty"` RotationTime int64 `json:"rotation_time,omitempty"` RotationSplayTime int64 `json:"rotation_splay_time,omitempty"` } `json:"runtime_status,omitempty"` } `json:"jabber,omitempty"` DataDir string `json:"data_dir,omitempty"` ForwardsMax int64 `json:"forwards_max,omitempty"` CSign string `json:"csign,omitempty"` Loglevel string `json:"loglevel,omitempty"` Log string `json:"log,omitempty"` } // jabberSimpleIqGetQuery прототип структурки для разбора запросов xmpp discovery query, например, // https://xmpp.org/extensions/xep-0030.html#example-18 . type jabberSimpleIqGetQuery struct { XMLName xml.Name `xml:"query"` Text string `xml:",chardata"` Xmlns string `xml:"xmlns,attr"` Node string `xml:"node,attr,omitempty"` // для xmlns="http://jabber.org/protocol/disco#items" } // jabberPubsubIQGetQuery прототип структурки для разбора запросов xmpp pubsub. type jabberPubsubIQGetQuery struct { XMLName xml.Name `xml:"pubsub"` Text string `xml:",chardata"` Xmlns string `xml:"xmlns,attr"` Items struct { Text string `xml:",chardata"` Node string `xml:"node,attr"` MaxItems string `xml:"max_items,attr"` } `xml:"items"` } // jabberTimeIqGetQuery прототип структурки для разбора IQ запросов на локальное время клиента, // https://xmpp.org/extensions/xep-0202.html type jabberTimeIqGetQuery struct { //