一个用于连接外部应用程序与opencore的函数库
项目描述
一个对与opencore集成有用的函数小型库。
内容
libopencore.auth
get_secret(filename)
获取用于在cookie解析和构造中使用的共享密钥。
generate_cookie_value(username, shared_secret)
使用此方法设置cookie,以便opencore能够识别用户已登录。
authenticate_from_cookie(cookie_string, shared_secret)
返回由cookie识别的用户的用户名和散列值。如果cookie格式不正确,则抛出BadCookie异常;如果cookie格式正确但未使用正确的共享密钥,则抛出NotAuthenticated异常。
libopencore.deliverance_middleware
filter_factory / CustomDeliveranceMiddleware
Deliverance中间件(v0.3)的子类,在执行外部子请求时携带原始请求的HTTP_X_OPENPLANS_*标题和cookie。这允许外部应用程序正确尊重登录和上下文信息。
它还硬编码了必要的Deliverance规则集和主题uri。
主题由opencore本身在门户上注册的@@theme.html视图中提供。在这里,它通过对外部请求OpenCore堆栈的前端进行请求来获取,以确保主题中的链接正确。
libopencore.wsgi
composite_factory / URLDispatcher
paste.composite_factory,它将根据URL将请求分发给opencore和其他应用程序(tasktracker和wordpress)。
它将在执行子请求之前添加必要的请求头。
libopencore.http_proxy
app_factory / RemoteProxy
paste.app_factory,它将代理请求到外部HTTP调用。传递一个包含应用基础href的remote_uri。
如果设置了is_opencore,它将重写请求以告诉Zope的VirtualHostMonster响应中的链接应如何显示。
更改
0.7
新模块libopencore.import_utils
在 libopencore.import_utils 中新增了新功能 parse_listen_settings
0.6
在 http_proxy 应用中添加了新的配置变量 site_root,用于代理到 opencore (zope) 后端。默认值是 /openplans/。如果您代理到的 opencore 后端中 plone 站点根目录安装在别处,或者您正在使用 ++skin++ 层进行定制,您可以将其设置为不同的值。
应使用此变量而不是将 remote_uri 设置为类似 http://localhost:10001/++skin++avata/ 的值。而不是
remote_uri = http://localhost:10001/++skin++avata/
您应该使用
remote_uri = http://localhost:10001 site_root = /++skin++avata/openplans/
以确保正确的 URL 生成。
在 Deliverance 子请求中添加了保留头 X-Forwarded-Server。
0.5
新增功能
http 代理的负载均衡器现在可以将机器人发送到特定的后端。
要为特定后端使用它,传递 robots_uri 的 URL,并且如果请求的 User-Agent 字符串匹配一组已知机器人,则将选择此 URL。
为了将机器人与其他所有用户隔离,可以将此 URL 从 remote_uri 参数中省略。
当页面中有 <div class="opencore_wysiwyg"> 时,deliverance.xml 规则现在会尝试获取 /openplans/xinha-config。这用于将一致的 Xinha 编辑器应用到 WordPress 页面上。更多详情和上下文请见:http://www.coactivate.org/projects/opencore/lists/opencore-dev/archive/2010/09/1283636838104/forum_view
已修复的 Bug
非 Zope opencore 组件的根 URL 必须有尾部斜杠;如果没有,则会发出永久重定向到正确 URL。我注意到的具体症状是项目博客首页上“撰写新文章”链接(当以项目管理员身份登录且尚未发表任何文章时)的 URL 错误地缺少 /blog/ 组件。这种行为以前存在于 DeliveranceVHoster 中的某个地方。
Ajax 请求的响应(X-Requested-With: XMLHttpRequest)即使它们有 Content-Type: text/html,也不会由 Deliverance 主题化。这修复了 TaskTracker Ajax 请求在任务上发布新评论的行为。
deliverance.xml 规则不再尝试获取 /openplans/oc-footer 或 /openplans/oc-header;这些很久以前就没有使用了,因此没有必要对 Zope 进行额外的子请求。
在 wsgi.py 中的复合 WSGI 应用程序现在在将请求导向 opencore 时添加了请求头 X-Openplans-Application: zope。这种行为以前存在于 DeliveranceVHoster 中。它修复了 http://trac.socialplanning.org/opencore/ticket/2943
0.4
在 http 代理中添加了一个简单的随机选择负载均衡器。
要为特定后端使用它,请将 URL 作为 remote_uri 的空格分隔列表传递,而不是单个 URL。假设您在每个 URL 上都有相同的应用程序监听,代理请求将分布在这些 URL 上。
(预期用途是多个 Zope 实例与同一 ZEO 服务器通信,尽管我认为它也可以用于其他任何应用程序,如果存在这种原因的话。)
0.3
已修复的 Bug
解决深层堆栈中一个 Bug,导致响应 HTML 中的链接(如 /foo/my.domain.com/bar/)被重写为 /foo/my.domain.com:80/bar/,如果 HTTP_HOST 是 my.domain.com:80。
以前一些代理的 WordPress URL 不正确,导致 404 错误。现在已修复。
新增功能
添加了 transcluder_middleware 模块和 paste.filter_factory 的 libopencore#transcluder 入口点。
如果使用 transcluder 中间件,则必须安装 Transcluder。
如果使用transcluder中间件,它应该是您堆栈中最外层的WSGI过滤器。这是因为Transcluder有时会发出内部WSGI子请求而不是HTTP调用,并调用其内部应用。因此,如果您在Transcluder外部有路由、安全或其他重要内容,可能会得到奇怪的结果。
增加了对代理到Twirlip服务器的支持。Twirlip必须通过常规paste#urlmap安装在/notifications上(此时/映射到主libopencore复合应用),并且必须由transcluder中间件包装。
要使用Twirlip代理,请安装libopencore的twirlip额外要求(在setup.py的extras_require中列出)。
要使用Twirlip代理,请使用设置is_twirlip=true的libopencore#proxy应用,以及一个指向用于身份验证的共享密钥的绝对路径的设置topp_secret_filename。您的Twirlip代理将被Eyvind中间件包装,该中间件将REMOTE_USER转换为带有共享密钥签名的特殊HTTP头,然后由Twirlip服务器解码。
Twirlip和Transcluder目前在一个OpenCore堆栈中使用,为wikipage编辑和任务更改提供基于订阅的电子邮件通知。但除非您绝对需要,否则不要尝试使用这些功能 - 我很快将用更简单的替代Twirlip。
0.2
增加了deliverance_middleware、wsgi和http_proxy模块。
增加了一个paste.ini示例文件,展示了如何将这些模块组合成一个前端应用,该应用代理到opencore、tasktracker和wordpress,并在必要时使用deliverance进行主题化。
0.1
初始发布。增加了auth模块。
项目详情
libopencore-0.7.1.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 7c4c579680ce57a1a6bfa95923f80d7a48fe822bb7ce470adbd17c16d428df3f |
|
MD5 | 9ca57cbedc3b20350b59e9f903c82fff |
|
BLAKE2b-256 | e4d2450e96de2501e3c8d0d88cd93f42e6e27b2ebba96a3026ac9e93ce9e1b96 |