Gotify-一个用于发送通知并将消息发送到服务器的开源项目



对于那些管理服务器和/或Web项目的人来说,存在一个敏锐的问题,那就是他们的“病房”正在发生什么。 市场上有很多有关故障,连接状态和其他参数(包括通过SMS)的警报的决策。 我们正在谈论MRTG,Twilio,F-Droid,Google服务以及许多其他服务。 唯一的问题是,这些解决方案中的大多数都非常狭specialized地专门化,并且不可能影响其功能。 MRTG将提供有关流量和连接的信息,Google将发送短信。 Twilio在编写满足您需要的JavaScript脚本方面提供了一些自由,但是很抱歉,这是一个商业项目。 也就是说,“来吧,交赃或逃之go。”

因此,在这一系列工具中,我们提供了开源补充:Gotify是一个简单的客户端-服务器项目,用于接收和发送推送通知和命令(包括通过Android应用程序)。 而且绝对值得多讲一点,我认为它对那些正在寻找相似但又免费的东西但最终开始自己的宠物项目的人来说非常有用。 该出版物可能会为您节省数百小时的时间。

Gotify提供了什么


该项目已经存在并在GitHub上和平发展了几年,在此期间,该项目获得了服务器,Web客户端,Android应用程序,API,当然还有文档。 我决定谈论Gotrify的原因有两个:它是开源的,不仅可以在“接收”上使用,而且可以在“返回”上使用,各种形式都在GitHub上,并且使用bash脚本进行配置。 当然,它是免费的。

大多数现有解决方案专门针对从目标服务器/设备接收通知,而不是针对客户端和服务器之间的完全交互。 也就是说,您可能会收到服务器崩溃或Internet消失的通知。 问自己“另一端”到底发生什么并不总是很方便,并且可以在同一应用程序/窗口中完成。 为了获得此类信息,您通常必须切断VPN或(上帝禁止)某些TeamViever,然后“用手”观看。 我在上面提到,Twilio通过自行编写的JS脚本提供了一定的作用域,但是它是有偿的。

实际上,整个Gotify项目分为三个部分:服务器,客户端和应用程序。 服务器可以理解如何工作-发送和接收消息,客户端-仅接收消息,以及应用程序-仅发送消息。



此外,该项目还有一个API客户端(和文档),一个API模板,一个插件模板,自己的网站,支持JSON,YAML,TOML和环境变量的Go配置库,以及一个服务器版本,客户端以及实际上的,Android应用程序。 唯一可能麻烦的是Android应用程序。 世界上没有什么比通过手机监控基础设施更加无助,不负责任和不道德的了。 但是技术在进步,我们知道早晚我们将继续处理这种垃圾。 并不是说它是与服务器远程通信的最低必需设置,而是当开源社区开始削减自己的工具时,很难停止它。

另外,值得一提的是,与服务器通信只需要身份验证和应用程序令牌,这些令牌和服务器将通过REST请求返回该令牌。 将来,使用此令牌,您可以通过任何http客户端接收消息,例如,通过curlHTTPie

$ curl -X POST "https://push.example.de/message?token=<apptoken>" -F "title=my title" -F "message=my message" -F "priority=5" $ http -f POST "https://push.example.de/message?token=<apptoken>" title="my title" message="my message" priority="5" 

根据该项目官方网站上的手册,可以将具有不同优先级的服务器推送发送到Golang和Python:

高朗

 package main import ( "net/http" "net/url" ) func main() { http.PostForm("http://localhost:8008/message?<apptoken>", url.Values{"message": {"My Message"}, "title": {"My Title"}}) } 

巨蟒

 import requests #pip install requests resp = requests.post('http://localhost:8008/message?token=<apptoken>', json={ "message": "Well hello there.", "priority": 2, "title": "This is my title" }) 

同样对于Linux和Mac,也可以编写自己的插件。 以下是其可用功能,在项目网站上列出了这些功能:

  • 每个用户各自的插件;
  • 注册自定义http处理程序;
  • 作为应用程序发送消息;
  • WebUI中基于YAML的配置系统;
  • 每个用户插件的持久存储;
  • 为用户显示动态生成的指令。

Gotify插件系统基于标准的Go插件系统,在此进行了介绍 。 为什么要在Gotify中使用它们? 开发人员列举了以下示例:从GitHub,Travis CI和其他站点接收Webhooks,通过RSS,Atom源轮询提要,扩展WebUI的标准功能以及当然提供有关崩溃的警报。 在此页面上,您可以找到插件的模板和代码说明。 为了使插件正常工作,开发人员建议使用Docker,但是即使没有它,也可以配置Gotify,尽管不能保证在这种情况下消息的正确发送和接收。

我在这里没有提供该项目基本文档的全文-您可以自己阅读所有内容。 根据评论判断,该项目相当周到,至少在另一方面,未使用SMS通知(如果您在国外或在地下室,这是不方便的),并积极尝试忽略Android 6-7中引入的电源安全模式。 即使开源,Gotify也很好奇,也就是说,免费并且没有什么可以阻止派生,提取文件并将此工具置于适合某些人/团队需求的状态。



参考文献


  1. GitHub存储库。
  2. 项目的官方网站。
  3. API文档。

Source: https://habr.com/ru/post/zh-CN443258/


All Articles