diff options
Diffstat (limited to 'telebot/telebot.go')
-rw-r--r-- | telebot/telebot.go | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/telebot/telebot.go b/telebot/telebot.go deleted file mode 100644 index 91eebcb..0000000 --- a/telebot/telebot.go +++ /dev/null @@ -1,167 +0,0 @@ -package main - -import ( - "context" - "flag" - "fmt" - "net" - "net/http" - "os" - "strconv" - "time" - - tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api" - "github.com/rs/zerolog/log" - pb "github.com/terminaldweller/grpc/telebot/v1" - "golang.org/x/net/proxy" - "google.golang.org/grpc" -) - -var botChannelID = flag.Int64( - "botchannelid", - 146328407, //nolint: mnd,gomnd - "determines the channel id the telgram bot should send messages to") - -const ( - telegramBotTokenEnvVar = "TELEGRAM_BOT_TOKEN" //nolint: gosec - httpClientTimeout = 5 -) - -type server struct { - pb.UnimplementedNotificationServiceServer -} - -func GetProxiedClient() (*http.Client, error) { - var isProxied bool - - proxyURL := os.Getenv("ALL_PROXY") - if proxyURL == "" { - proxyURL = os.Getenv("HTTPS_PROXY") - } - - if proxyURL == "" { - isProxied = false - } - - var dialerProxy proxy.Dialer - - var dialer net.Dialer - - var err error - - if isProxied { - dialerProxy, err = proxy.SOCKS5("tcp", proxyURL, nil, proxy.Direct) - if err != nil { - return nil, fmt.Errorf("[GetProxiedClient] : %w", err) - } - } else { - dialer = net.Dialer{ - Timeout: 5 * time.Second, //nolint: mnd,gomnd - } - - if err != nil { - return nil, fmt.Errorf("[GetProxiedClient] : %w", err) - } - } - - dialContext := func(ctx context.Context, network, address string) (net.Conn, error) { - if isProxied { - netConn, err := dialerProxy.Dial(network, address) - if err == nil { - return netConn, nil - } - - return netConn, fmt.Errorf("[dialContext] : %w", err) - } else { - netConn, err := dialer.Dial(network, address) - if err == nil { - return netConn, nil - } - - return netConn, fmt.Errorf("[dialContext] : %w", err) - } - } - - transport := &http.Transport{ - DialContext: dialContext, - DisableKeepAlives: true, - } - client := &http.Client{ - Transport: transport, - Timeout: httpClientTimeout * time.Second, - CheckRedirect: nil, - Jar: nil, - } - - return client, nil -} - -func getTGBot() *tgbotapi.BotAPI { - token := os.Getenv(telegramBotTokenEnvVar) - - // client, err := GetProxiedClient() - // if err != nil { - // log.Fatal().Err(err) - // } - - // bot, err := tgbotapi.NewBotAPIWithClient(token[1:len(token)-1], client) - bot, err := tgbotapi.NewBotAPI(token[1 : len(token)-1]) - if err != nil { - log.Fatal().Err(err).Send() - } - - return bot -} - -func sendMessage(bot *tgbotapi.BotAPI, msgText string, channelID int64) error { - msg := tgbotapi.NewMessage(channelID, msgText) - _, err := bot.Send(msg) - - return err -} - -func (s *server) Notify( - ctx context.Context, - NotificationRequest *pb.NotificationRequest, -) (*pb.NotificationResponse, error) { - var err error - - tgbotapi := getTGBot() - - if NotificationRequest.ChannelId == 0 { - err = sendMessage(tgbotapi, NotificationRequest.NotificationText, *botChannelID) - } else { - err = sendMessage(tgbotapi, NotificationRequest.NotificationText, NotificationRequest.ChannelId) - } - - if err != nil { - return &pb.NotificationResponse{Error: err.Error(), IsOK: false}, err - } - - return &pb.NotificationResponse{Error: "", IsOK: true}, nil -} - -func startServer(port uint16) { - listener, err := net.Listen("tcp", fmt.Sprintf("0.0.0.0:%d", port)) - if err != nil { - log.Fatal().Err(err).Send() - } - - var opts []grpc.ServerOption - - grpcServer := grpc.NewServer(opts...) - pb.RegisterNotificationServiceServer(grpcServer, &server{}) - - if err := grpcServer.Serve(listener); err != nil { - log.Fatal().Err(err).Send() - } -} - -func main() { - flagPort := flag.String("port", "8000", "determines the port the service runs on") - flag.Parse() - - port, _ := strconv.Atoi(*flagPort) - - startServer(uint16(port)) -} |