pull/151/merge
Vladimir 8 years ago committed by GitHub
commit 41f75d4915
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 61
      README.md

@ -72,12 +72,20 @@ you may use a slightly different method.
package main package main
import ( import (
"gopkg.in/telegram-bot-api.v4" "flag"
"log" "log"
"net/http" "net/http"
"gopkg.in/telegram-bot-api.v4"
)
var (
reverse_proxy = flag.Bool("reverse_proxy", false, "Used reverse proxy (e.g., nginx)")
) )
func main() { func main() {
flag.Parse()
bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken") bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
@ -93,7 +101,15 @@ func main() {
} }
updates := bot.ListenForWebhook("/" + bot.Token) updates := bot.ListenForWebhook("/" + bot.Token)
go http.ListenAndServeTLS("0.0.0.0:8443", "cert.pem", "key.pem", nil) go func() {
var err error
if *reverse_proxy {
err = http.ListenAndServe("127.0.0.1:8444", nil)
} else {
err = http.ListenAndServeTLS("0.0.0.0:8443", "cert.pem", "key.pem", nil)
}
log.Fatal(err)
}()
for update := range updates { for update := range updates {
log.Printf("%+v\n", update) log.Printf("%+v\n", update)
@ -101,6 +117,47 @@ func main() {
} }
``` ```
Example nginx config for multiple bots
```nginx
server {
listen 8443 ssl;
# listen [::]:80 default_server;
server_name _;
# ssl on;
ssl_certificate /etc/nginx/cert/cert.pem;
ssl_certificate_key /etc/nginx/cert/key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
root /usr/share/nginx/html;
index index.html;
# MyAwesomeBotToken
location ^~ /MyAwesomeBotToken {
proxy_pass http://127.0.0.1:8444;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# MyAwesomeBotToken2
location ^~ /MyAwesomeBotToken2 {
proxy_pass http://127.0.0.1:8445;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
```
If you need, you may generate a self signed certficate, as this requires If you need, you may generate a self signed certficate, as this requires
HTTPS / TLS. The above example tells Telegram that this is your HTTPS / TLS. The above example tells Telegram that this is your
certificate and that it should be trusted, even though it is not certificate and that it should be trusted, even though it is not