开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
Computer Science

Discourse 中可能使用的 HMAC 算法 Java 实现

在 DiscourseConnect 中,对数据的签名使用的是 HMAC 算法。 实际使用的算法为 HmacSHA256。 Java 生成签名的方法很简单。 String hmac = new HmacUtils(HmacAlgorithms.HMAC_SHA_256, "55619458534897682511405307018226").hmacHex(ssoPayload); HmacUtils 工具类是 Apache Commons Codec 提供的。     Python 和 其他语言都应该有类似的实现。   https://www.isharkfly.com/t/discourse-hmac-java/15789

2024年05月24日 0Comments 540Browse 0Like Read more
Computer Science

Discourse 使用 DiscourseConnect 调用接口 admin/users/sync_sso 422 错误

最近在调试 Java 代码的时候调用上面的 SSO 同步接口,Discourse 返回的错误信息为: {"failed":"FAILED","message":"The `external_id` is required but was blank"}     但是,在我们的代码中是设了值的。 URIBuilder builder = new URIBuilder(); builder.addParameter("external_id", "1"); builder.addParameter("email", "info@isharkfly.com"); builder.addParameter("username", "info.visafn.sso"); // builder.addParameter("add_groups", "bar"); builder.addParameter("require_activation", "false"); url = builder.build().toString(); 不知道为什么会出现上面的错误提示信息。 问题原因 上面的问题原因在于 URL Get 方法参数拼接时候的问题。 如果我们输出 url 字符串: ?external_id=1&email=info%40isharkfly.com&username=info.visafn.sso&require_activation=false Java 的 URL builder 代码会在前面添加一个 ? 号。 但是这个问好对 admin/users/sync_sso 的调用是不能接受的。     所以,为了解决上面的问题,我们需要调用一个 Java 的 API,把上面的问号从字符串中删除。 使用下面的一句话来替换掉上面的 url 直接 toString url = StringUtils.removeStart(builder.build().toString(),"?"); 随后直接运行测试代码,程序应该会返回 200 代码。   https://www.isharkfly.com/t/discourse-discourseconnect-admin-users-sync-sso-422/15787

2024年05月24日 0Comments 587Browse 0Like Read more
Computer Science

Discourse 使用 DiscourseConnect 调用接口 admin/users/sync_sso 404 错误

在对用户数据通过 SSO 同步的时候,调用提示 404 错误。 我们使用的是 Java 的代码。     如上图,返回显示的代码为 404。 问题原因 出现上面错误的原因是安装的 Discourse 实例的 discourse connect 没有启用。     当这个选项不启用的话,API 调用的同步就会显示 404 没有找到。 启用后的就会显示其他的信息。 下图是当上面的接口调用成功后显示的 200 代码。     API 也会返回一个完整的用户相关数据。 数据结构是 JSON 的。 其实内容还蛮多的,你可以用这个把数据同步回 SSO 单点登录服务器上。 { "id": 17, "username": "info.visafn.sso", "name": "Info Visafn Sso", "avatar_template": "/letter_avatar_proxy/v4/letter/i/7ba0ec/{size}.png", "active": true, "admin": false, "moderator": false, "last_seen_at": "2024-05-22T20:14:45.926Z", "last_emailed_at": "2024-05-22T20:32:54.369Z", "created_at": "2024-05-21T18:53:53.081Z", "last_seen_age": 87821.707032433, "last_emailed_age": 86733.264398046, "created_at_age": 179074.552034788, "trust_level": 1, "manual_locked_trust_level": null, "title": null, "time_read": 0, "staged": false, "days_visited": 1, "posts_read_count": 0, "topics_entered": 0, "post_count": 0, "can_send_activation_email": true, "can_activate": false, "can_deactivate": true, "ip_address": null, "registration_ip_address": null, "can_grant_admin": true, "can_revoke_admin": false, "can_grant_moderation": true, "can_revoke_moderation": false, "can_impersonate": true, "like_count": 0, "like_given_count": 0, "topic_count": 0, "post_edits_count": null, "flags_given_count": 0, "flags_received_count": 0, "private_topics_count": 1, "can_delete_all_posts": true, "can_be_deleted": true, "can_be_anonymized": true, "can_be_merged": true, "full_suspend_reason": null, "silence_reason": null, "penalty_counts": { "silenced": 0, "suspended": 0 }, "next_penalty": "2024-05-24T20:38:27.655Z", "primary_group_id": null, "badge_count": 1, "warnings_received_count": 0, "bounce_score": 0, "reset_bounce_score_after": null, "can_view_action_logs": true, "can_disable_second_factor": true, "can_delete_sso_record": true, "api_key_count": 0, "external_ids": {}, "single_sign_on_record": { "user_id": 17, "external_id": "1", "created_at": "2024-05-21T18:53:53.280Z", "updated_at": "2024-05-21T18:56:21.866Z", "external_username": "info.visafn.sso", "external_name": null, "external_avatar_url": null, "external_profile_background_url": null, "external_card_background_url": null }, "approved_by": null, "suspended_by": null, "silenced_by": null, "groups": [ { "id": 10, "automatic": true, "name": "trust_level_0", "display_name": "trust_level_0", "user_count": 14, "mentionable_level": 0, "messageable_level": 0, "visibility_level": 1, "primary_group": false, "title": null, "grant_trust_level": null, "incoming_email": null, "has_messages": false, "flair_url": null, "flair_bg_color": null, "flair_color": null, "bio_raw": null, "bio_cooked": null, "bio_excerpt": null, "public_admission": false, "public_exit": false, "allow_membership_requests": false, "full_name": null, "default_notification_level": 3, "membership_request_template": null, "members_visibility_level": 0, "can_see_members": true, "can_admin_group": true, "publish_read_state": false }, { "id": 11, "automatic": true, "name": "trust_level_1", "display_name": "trust_level_1", "user_count":…

2024年05月24日 0Comments 414Browse 0Like Read more
Computer Science

Discourse 使用 DiscourseConnect 来进行用户数据同步

我们都知道 Discourse 的用户管理和设置都高度依赖电子邮件。 如果 Discourse 没有设置电子邮件 SMTP 的话,作为管理员是没有办法对用户邮箱进行修改并且通过验证的。 可以采取的办法是通过 Discourse 的 DiscourseConnect 来进行用户同步。 根据官方的说法:使用 DiscourseConnect 对 用户邮箱进行修改是不会对邮箱的合法性进行校验的,默认的情况下是你已经对用户邮箱进行校验了。 这个 DiscourseConnect 有些配置是需要配置的,可以通过对 API 接口的调用来完成。 调用的方法为 POST。 Discourse 的配置 默认情况下 DiscourseConnect 是关闭的,所以需要在 Discourse 中启用 DiscourseConnect 才可以。 在配置中搜索:DiscourseConnect 关键字。     上面图片中的 3 个配置是需要进行配置的。 discourse connect url : 是 DiscourseConnect 的调用配置地址。这个地址通常是你网站的域名后添加 DiscourseConnect/start。 这个配置是必须要配置的。 discourse connect secret:这是用来在客户端对数据进行 hmac 算法加密时候使用的。如果这个地方修改了,后面的加密算法就会出现错误字符串,那么 API 调用就会失败。 这个字符串是随机的,你可以随便生成自己的字符串,然后告诉后面程序中这个字符串是什么。 enable discourse connect:启用 DiscourseConnect 接口连接。在完成上面的 2 个选项配置后,就可以启用接口了。这个时候 Discourse 实例就才可以接受 SSO 用户数据。 访问基本参数 要完成 API 调用,有下面的 4 个参数在访问之前必须获得。 参数名称 值 apiKey 4fe83002bb5fba8c9a61a65e5b4b0a3cf8233b0e4ccafc85ebd6607abab4651a apiUser system connectSecret jdhb19*Xh3!nu(#k url https://www.isharkfly.com/admin/users/sync_sso 在上面的 4 个参数中,需要注意的是 connectSecret,只有这个是在 DiscourseConnect 中设置的。 其他的参数为 Discourse API 调用的默认参数。 构建 POST 请求 在发送的 POST 中是一个 JSON 格式的数据。 这个数据为: body: JSON.stringify({ sso: ssoPayload, sig: signature, }) 上面的 JSON 格式是 2 个参数,一个为 SSO,另外一个 SIG。 SSO 是 Base64的数据,sig 是加密后的数据。 ssoPayload = Buffer.from(ssoRecord, 'utf8').toString('base64'); signature = crypto.createHmac('sha256', connectSecret).update(ssoPayload).digest('hex'); 加密算法使用的是 SHA256,摘要算法为 hex。 当上面的数据都准备完全后,就可以把数据发送到服务器上了。 数据结果 如果用户数据没有问题,那么将会创建一个 SSO 的数据。 在 Discourse 的后端将会看到下面的内容。     后端显示的 SSO 添加的用户数据。 上面有个最重要的 External ID。   https://www.isharkfly.com/t/discourse-discourseconnect/15776

2024年05月22日 0Comments 408Browse 0Like Read more
Computer Science

Discourse 编辑没有办法显示更多的 JS 错误

Priority/Severity: High Platform: 3.3.0.beta3-dev UI bugs Description: 昨天升级的时到最新版本的时候就发现有这个错误,是 JS 的错误。     发了一个帖子到官方的网站上,官方说可能是插件的问题。     但是我们实在是没有安装什么插件呀? 官方的 Bug report 连接为:When editing post, unable to open gear menu - support - Discourse Meta 安全模式 官方让我们试试安全模式,我们在安全模式下貌似 JS 没有什么问题。     插件 我们也禁用了所有的插件。     但是问题好像还是没有解决。 找到问题 找到了问题的地方还是在插件。 是这个插件 discourse-placeholder-theme-component 出现了问题。   把这个插件禁用即可。 再深入点讨论就是因为这个插件本身有问题:MD Composer extras - #64 by Arkshine - theme-component - Discourse Meta 但是在几个月之前已经更新了。 我们使用的代码库为 fork 的代码库,我们没有对上游的更新的代码更新到我们本地,这导致我们代码和上游代码有偏差。 这样,我们通过把上游的代码更新到我们的 Fork 代码中再更新安装的 Discourse 实例即可。   https://www.isharkfly.com/t/discourse-js/15777

2024年05月22日 0Comments 502Browse 0Like Read more
Computer Science

Unifi AP Mesh 组网

最近家里的 AP 总是自动调整为 Mash 组网。 因为有 AP 控制器,本来就设置为 AC+AP 方案,但是 AP 自己的默认配置为 Mesh 组网,结果就导致网络没有使用 AC。 AC+AP方案 AC+AP的方案,需要提前部署好网线,做好网络规划。网络工程,就像在装修时候的水电施工一样,需要提前进行设计,然后再进行施工,减少遗憾。后期再补救,是比较难受的。 网口就像家里的强电面板一样,多多益善。网线使用最低超五类,可以使用更好一些的六类网线。 AC+AP的拓扑如下。其中AC和AP必须是一个品牌。路由器负责上网的路由转发,NAT,DHCP分配等。可以是独立品牌。POE交换机负责给AP设备供电。可以与AP不是同一品牌,搭配的时候需要注意POE交换机的供电标准与AP相同,比较常见的问题是POE交换机的供电不足,引起AP的功能异常。AC负责管理AP,进行网络的配置。AP负责发出无线信号,用于终端连接。 MESH组网方案 MESH组网,目的是解决原来单一路由器的不足,即使使用了多个路由器,也无法实现无线的漫游,解决传统的无线中继的问题。 结果最后的情况就使用了 AP 的无线桥接情况。导致桥接的 AP 网络不好,网速也才 100 多 MB,实际上,网络速度应该超过 400MB。 调整 调整是在 AP 上调整的。 找到 AP 上的配置选项,然后选择取消 Mesh 组网方案。     需要注意的是,所有的 AP 都要修改。 被调整的 AP 就会自动和 AC 进行协商,采用 AC 直连。     上图可以看到,信号和网络状况明显会有些改善。 如选择的是 Unifi AC+AP 控制器的话,不要忘记把 AP 的 Mesh 取消选择,让后 AC 直接去控制 AP。   https://www.isharkfly.com/t/unifi-ap-mesh/15771

2024年05月21日 0Comments 507Browse 0Like Read more
Computer Science

Discourse 升级时候 500 错误

在对 Discourse 升级的时候,得到系统的错误:     这个错误比较诡异,直接就 500 错误了,没有办法查看其他的提示信息。 后来通过服务器上的日志,我们看到:     看这个情况应该是没有安装成功。 错误原因 针对上面的错误原因,官方的解释是可以到服务器上去运行 rebuild 命令。 cd /var/discourse ./launcher rebuild app 随后我们看到 Discourse 在从服务器上获取 Docker 相关的容器和代码。     随后还是提示升级失败,失败的原因是服务器上的磁盘空间不足。 这次升级需要至少 5G 的磁盘空间。 解决办法就是删除老的 Docker 镜像。 从此,我们了解到,Discourse 在每次升级的时候,老的 Docker 镜像都没有删除,随着升级次数的增加,则会增加大量的磁盘空间使用。 最简单的办法就是使用 :./launcher cleanup 命令来删除。 https://www.isharkfly.com/t/discourse-500/15753

2024年05月17日 0Comments 531Browse 0Like Read more
Computer Science

Roboto 替代:Helvetica Neue

最近公司在对网站进行改版的时候,要求使用 Roboto 字体来替换 Gotham 字体。 Roboto 由 Google的Christian Robertson设计,是一种新怪诞的无衬线字体家族,具有某种程度的双重性。 它的机械骨架和大量的几何形式是平衡友好和开放的曲线,字母自然地安置在他们的宽度。 因此,这款字体可以使文本具有自然的阅读节奏。 通常我们对网站的字体并不会有太多的关注,基本上就是看着舒服就用那个。 后来才知道, Gotham 这个字体是商业授权字体,如果没有拿到商业授权的话,这个字体是不可以随便在网站上使用的。 尤其对大的集团公司来说,这个事情都被仔细盯着的,所以上层就要求把网站使用的字体全部换成开源可以使用的。 在某乎上有人问过,这个字体可以免费商用吗?上面的得到的回答是 Gotham 出自 Hoefler 字体公司,现在已被蒙纳收购。国内需要找[蒙纳]授权。   基于这个原因,也可以理解公司层面着急要求把字体给换了,因为实在是不想缴纳巨额的罚款。   https://www.isharkfly.com/t/roboto-helvetica-neue/15754

2024年05月17日 0Comments 437Browse 0Like Read more
Computer Science

Docker 的 RHEL 操作系统镜像

CentOS 和 Fedora 都是和 RHEL 同源衍生版本的 Linux,因为 CentOS 不需要向 RHEL 支付企业级的版权和费用,但是又具有和 RHEL 相同的稳定性和资源库。 所以 CentOS 在服务器上被广泛的部署和使用,但是 CentOS 目前已经停止技术支持和结束了生命周期,如果想使用 RHEL 的衍生产品,目前的选择就是 fedora。 CentOS 系统简介 CentOS 和 Fedora 都是基于 Redhat 的常见 Linux 分支。CentOS 是目前企业级服务器的常用操作系统。 Fedora 则主要面向个人桌面用户。 CentOS是Community ENTerprise Operating System的简称,我们有很多人叫它社区企业操作系统,不管你怎么叫它,它都是linux的一个发行版本。 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统),它是基于 Red Hat Enterprise Linux 源代码编译而成。由于 CentOS 与 Redhat Linux 源于相同的代码基础,所以很多成本敏感且需要高稳定性的公司就使用 CentOS 来替代商业版 Red Hat Enterprise Linux。 CentOS 自身不包含闭源软件。 在众多的操作系统中,CentOS无疑是一个广泛被认知和被选择的操作系统,这和CentOS自身的特性以及国内运维团队发展有着不可分割的关系。 在国内互联网IT技术发展的初期,更轻量级的开发语言与中间件开始逐渐被IT人员选择,所以更适合运行这种环境的Linux操作系统被大家广泛用于服务端操作系统,在那个时期,国内的运维团队基本以Redhat为主,Redhat作为针对企业应用的Linux为了将性能最大化留给应用系统,基本是基于命令行进行管理,同时当时构建网站主流的apache、mysql等都有基于Redhat的优化版本。 2020年12月08日,CentOS官方宣布了停止维护CentOS Linux 8的计划,并推出了CentOS Stream项目。具体信息,请阅读CentOS官方公告。其具体规划如下: CentOS Linux 8作为RHEL 8的复刻版本,生命周期缩短,于2021年12月31日停止更新并停止维护(EOL)。 基于以上官方变更计划,CentOS Linux 8用户将无法获得包括问题修复和功能更新在内的任何软件维护和支持。CentOS官方建议停止维护后:对于开发或测试环境,可以将环境迁移至CentOS Stream版本; 对于生产环境或部署关键业务的系统,建议使用稳定的Red Hat Enterprise Linux。对此,用户需评估以下问题: CentOS Stream是一个滚动发行的版本,仅为RHEL前置测试版,运用于生产环境时,可能存在一定风险。 使用 CentOS 官方镜像 使用 docker run 直接运行 CentOS 7 镜像,并登录 bash。 C:\Users\yhu>docker run -it centos:centos7 bash Unable to find image 'centos:centos7' locally centos7: Pulling from library/centos 2d473b07cdd5: Pull complete Digest: sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 Status: Downloaded newer image for centos:centos7 [root@3ceb808f5a6c /]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@3ceb808f5a6c /]#     从镜像的发布日期来看,CentOS 的版本已经有多年没有更新了。 对于操作系统来看,这可能会导致很多潜在的安全性问题。     针对上面的情况,不建议在服务器生产环境中继续使用了。 Fedora 系统简介 Fedora 由 Fedora Project 社区开发,红帽公司赞助的 Linux 发行版。它的目标是创建一套新颖、多功能并且自由和开源的操作系统。 Fedora 的功能对于用户而言,它是一套功能完备的,可以更新的免费操作系统,而对赞助商 Red Hat 而言,它是许多新技术的测试平台。 被认为可用的技术最终会加入到 Red Hat Enterprise Linux 中。 Fedora Linux(第七版以前为Fedora Core)是较具知名度的Linux发行包之一,由Fedora项目社群开发、红帽公司赞助,目标是建立一套新颖、多功能并且自由(开放源代码)的操作系统。Fedora是商业化的Red Hat Enterprise Linux发行版的上游源码。 Fedora对于用户而言,是一套功能完备、更新快速的免费操作系统;而对赞助者Red Hat公司而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到Red Hat Enterprise Linux中。 Fedora有三种正式版本,包括工作站版、服务器版、用于物连网设备和机器人的物连网版,另外还有CoreOs和Silverblue两个非正式版本和社群维护的 Spin。 Docker 使用 Fedora 镜像 Fedora 在 Docker 中的使用也非常简单,直接使用命令 docker run -it fedora:latest bash 就可以 pull 到本地的容器中并且运行。 C:\Users\yhu>docker run -it fedora:latest bash Unable to find image 'fedora:latest' locally latest: Pulling from library/fedora d4df0db66c89: Pull complete Digest: sha256:5ce8497aeea599bf6b54ab3979133923d82aaa4f6ca5ced1812611b197c79eb0 Status: Downloaded newer image for fedora:latest [root@eba5d114176c /]# cat /etc/redhat-release Fedora release 40 (Forty) [root@eba5d114176c /]#     因为 CentOS 的版本已经不再提供支持了,如果还想使用 RHEL 的版本的话,Fedora 可能目前可以选择的一个版本部署到服务器上。     当前操作系统的 Docker 镜像版本在 221 MB 左右。   https://www.isharkfly.com/t/docker-rhel/15745

2024年05月15日 0Comments 467Browse 0Like Read more
Computer Science

Docker 使用 CentOS 镜像

使用 docker run 直接运行 CentOS 7 镜像,并登录 bash。 C:\Users\yhu>docker run -it centos:centos7 bash Unable to find image 'centos:centos7' locally centos7: Pulling from library/centos 2d473b07cdd5: Pull complete Digest: sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 Status: Downloaded newer image for centos:centos7 [root@3ceb808f5a6c /]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@3ceb808f5a6c /]#     从镜像的发布日期来看,CentOS 的版本已经有多年没有更新了。 对于操作系统来看,这可能会导致很多潜在的安全性问题。     针对上面的情况,不建议在服务器生产环境中继续使用了。   https://www.isharkfly.com/t/docker-centos/15741

2024年05月14日 0Comments 518Browse 0Like Read more
1…4748495051…303
Archives
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,367)
    • Confluence (663)
    • Gradle (12)
  • U.S. (517)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1