基于密码+TOTP保护的云端点名表

写在前面：

我实在想不明白一个点名表为什么要用密码保护，让用户输入名单不就行了，不建议看本篇，太降智了，参见：本地点名表，基于 HTML，可作为 APK 安装

这是什么

这是一个托管在 Cloudflare Workers 的云端点名表，对于某些职位非常有用。点名表显示了当前时间，点击一个名字后会将它划除并置底，同时也有全选、取消全选和切换主题

登录页：

点名表页：

为什么要做这个奇怪的项目？

因为笔者发现市面上大多数 TODO 软件都无法实现类似点名表的效果，一怒之下便拜师 AI，历经 20 天做出这坨史（代码确实是依托
但是能用，后面的计划是解耦合（比如将 HTML 使用 KV 变量存储）

正式开始

创建 Cloudflare Workers并粘贴代码，GIthub 仓库为：https://github.com/afoim/name_cf_workers

添加环境变量

NAMES 为名单，一行一个

PASSWORD 为你设置的密码

TOTP_SECRET 为你设置的 TOTP 密钥，可以通过以下 Python 代码生成

Copy
import pyotp
import qrcode

def generate_totp(secret, account_name, issuer_name):
# 生成一个TOTP对象
totp = pyotp.TOTP(secret)

# 打印当前的TOTP值
print(f"当前 TOTP：{totp.now()}")

# 生成适合二维码扫描的URI (适用于Google Authenticator等)
uri = totp.provisioning_uri(name=account_name, issuer_name=issuer_name)
print(f"TOTP URI: {uri}")

# 生成二维码
img = qrcode.make(uri)
img.show() # 显示二维码

if __name__ == "__main__":
# 自定义名称、账号和密钥
account_name = input("请输入账号名称: ")
issuer_name = input("请输入应用名称: ")

# 生成一个随机密钥，或者你可以使用自己预定义的密钥
secret = pyotp.random_base32()
print(f"密钥: {secret}")

generate_totp(secret, account_name, issuer_name)