44 lines
814 B
Go
44 lines
814 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"flag"
|
||
|
"net/http"
|
||
|
"os"
|
||
|
)
|
||
|
|
||
|
type Config struct {
|
||
|
BindServer string /* Address:Port to bind for Telegram */
|
||
|
BindClients string /* Address:Port to bind for clients */
|
||
|
Token string /* Telegram bot token */
|
||
|
WebhookURL string /* Webhook URL */
|
||
|
}
|
||
|
|
||
|
func assert(err error) {
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
cfgpath := flag.String("config", "config.json", "Path to configuration file")
|
||
|
flag.Parse()
|
||
|
|
||
|
file, err := os.Open(*cfgpath)
|
||
|
assert(err)
|
||
|
|
||
|
var config Config
|
||
|
err = json.NewDecoder(file).Decode(&config)
|
||
|
assert(err)
|
||
|
|
||
|
// Setup webhook handler
|
||
|
go func() {
|
||
|
http.HandlerFunc(config.Token, webhook)
|
||
|
err := http.ListenAndServe(config.BindServer, nil)
|
||
|
assert(err)
|
||
|
}()
|
||
|
|
||
|
// Create server for clients
|
||
|
startClientsServer(config.BindClients)
|
||
|
}
|