简单的vapid头生成库

py-vapid的Python项目详细描述


PyPI version py_vapid

轻松乏味的生成

这个最小库包含您需要的最小函数集 生成一个乏味的密钥集并获取需要在 webpush订阅更新。

vapid是webpush订阅提供商(站点)的自愿标准 向远程客户发送webpush更新)以进行自我识别 服务器(传递推送通知的服务器)。

乏味的“声明”是一组json键和值。有两个 必选字段,一个半可选字段和多个可选附加字段 领域。

至少一个乏味的索赔集应该是这样的:

{"sub":"mailto:YourEmail@YourSite.com","aud":"https://PushServer","exp":"ExpirationTimestamp"}

一些注释:

sub是您希望记录的电子邮件地址 请求,前缀为“mailto:”。如果出了问题,这是 将用于联系您(例如)的电子邮件。这可能是 一般传送地址,如“mailto:push_operations@example.com” 或者像“mailto:bob@example.com”这样的特定地址。

aud是乏味的听众。这就是你的计划 用于发送订阅终结点,通常与 endpoint在订阅信息块中指定。

例如,如果webpush订阅信息包含: {"endpoint": "https://push.example.com:8012/v1/push/...",...}

那么aud就是“https://push.example.com:8012

虽然有些推送服务认为这是一个可选字段,但其他可能是 更严格。

exp这是此vapid请求将 到期。最长周期为24小时。设置较短的周期可以 防止“重播”攻击。设置一个较长的周期允许您重复使用 多次发送的标题(例如,如果您发送了数百个更新 一个小时左右)如果不包括exp,则会过期 24小时后将为您自动生成。

声明应该存储在json兼容的文件中。在例子中 下面,我们将声明存储到名为claims.json的文件中。

py_vapid既可以作为库安装,也可以作为备用 应用程序,bin/vapid

应用程序安装

您需要python virtualenv在当前目录中运行它。

然后运行

bin/pip install -r requirements.txt

bin/python setup.py install

应用程序使用

自行运行,bin/vapid将检查并可选地创建 public_key.pem和private_key.pem文件。

bin/vapid --gen可用于生成一组新的public和 私钥PEM文件。这些将覆盖 private_key.pempublic_key.pem

bin/vapid --sign claims.json将生成一组http头 来自json格式的声明文件。包含样本claims.json。 有了这个分布。

bin/vapid --sign claims.json --json将以json格式输出头 格式,可能对其他程序有用。

bin/vapid --applicationServerKey将返回 applicationServerKey可以用来限制 端点。见 https://developer.mozilla.org/en-US/docs/Web/API/PushManager/subscribe 更多细节。请注意,此值与生成的 公钥/私钥。如果删除或生成新密钥,则 您以前生成的url需要重新分配。请注意 一些用户代理可能需要您to decode this string into a Uint8Array

有关所有选项和命令,请参见bin/vapid -h

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JPA。Eclipselink没有为mySQL提供密码,但它应该提供   我的Servlet和@FormDataParam存在java问题   java将什么作为上下文参数传递到文件I/O方法中?   如果两个值相同,java无法找到其中一个单选按钮   java在变量和方法名中使用下划线   JavaSpringMVC单线程安全?   klazz类的java Arraylist(反射Api)   java如何在数字字符串中查找最频繁的数字?   JavaAPI设计:使数据更易于阅读与强制更多API调用   JavaHadoopMapReduceforGoogleWebGraph   java无法启动gauge API:Runner意外退出   java如何在bluemix上使用ibm工作负载调度器?   拉取一年中某一周特定日期的所有日期   java为什么是我的角节点。js应用程序将图像上传到S3� 邮递员正确上传时的符号?   在不使用任何第三方jar的情况下将文件从本地传输到linux系统(java代码)   java将现有文件夹复制到Eclipse工作区中新创建的项目中   Java中的regex RegExp帮助   当使用“系统”外观时,Java组合框setSelectedItem会出现故障   JavaASM:在类的方法中获取局部变量名和值