diff --git a/install-ssh-worker/src/index.js b/cf-worker/src/index.js similarity index 59% rename from install-ssh-worker/src/index.js rename to cf-worker/src/index.js index cddd733..d928960 100644 --- a/install-ssh-worker/src/index.js +++ b/cf-worker/src/index.js @@ -1,24 +1,38 @@ +// 改成你自己的 Github 用户名,注意是登录 Github 的那个用户名. const githubUserName = "LamGC"; +// 改成你 Fork 后的仓库名,记得要开启 Github Pages 功能. const githubInstSshProjectName = "quickly-conf-sshd"; +// 如果可以,建议在此设置备用的 SSH 公钥, 以防 Github 无法使用. +const backupSshKeys = ``; +// Worker 的访问地址, 如果不填的话默认为请求的地址, 填了就会用这里的地址(要去 Worker 的触发器那绑定, 否则无效). +const defaultBaseUrl = ""; +// Cron 表达式, 默认 1 天执行一次更新. +const cronExpression = "0 0 0 * * ?"; -// 一般不用改. -const baseUrl = `https://${githubUserName.toLowerCase()}.github.io/${githubInstSshProjectName}/`; -const installScriptUrl = `${baseUrl}/conf-sshd.sh`; +// 下面的东西一般不用改. +const baseRepoPageUrl = `https://${githubUserName.toLowerCase()}.github.io/${githubInstSshProjectName}/`; +const installScriptUrl = `${baseRepoPageUrl}/conf-sshd.sh`; // 如果出现 Github 无法使用的情况, 可以修改 sshKeyUrl 来变更位置. +// 也可以添加额外的 SSH 公钥地址(比如 KeyBase). const sshKeyUrls = [ `https://github.com/${githubUserName}.keys` ]; -// 建议在此设置备用的 SSH 公钥, 以防 Github 无法使用. -const backupSshKeys = ``; -function getUserAgent(request) { - return request.headers.get("User-Agent"); -} +// 下面是脚本的占位符. +const SCRIPT_PH_SSH_KEY_URL = "{{ SSH_KEY_URL }}" +const SCRIPT_PH_SCRIPT_URL = "{{ SCRIPT_URL }}" +const SCRIPT_PH_DEFAULT_CRON = "{{ DEFAULT_CRON }}" -async function sendScriptContent() { + +async function sendScriptContent(baseUrl) { let scriptResp = await fetch(new Request(installScriptUrl)); if (scriptResp.ok) { let scriptContent = await scriptResp.text(); + + scriptContent = scriptContent.replace(SCRIPT_PH_SSH_KEY_URL, `${baseUrl}/ssh.keys`) + .replace(SCRIPT_PH_SCRIPT_URL, `${baseUrl}/script.sh`) + .replace(SCRIPT_PH_DEFAULT_CRON, cronExpression) + return new Response(scriptContent, { headers: { "content-type": "text/plain; charset=utf-8" @@ -37,7 +51,8 @@ async function sendScriptContent() { export default { async fetch(request, env) { - const { pathname } = new URL(request.url); + const { pathname, host } = new URL(request.url); + const baseUrl = defaultBaseUrl || `https://${host}`; if (pathname === "/ssh.keys") { for (let url of sshKeyUrls) { let response = await fetch(new Request(url)); @@ -66,7 +81,7 @@ export default { }); } } else if (pathname === "/") { - const userAgent = getUserAgent(request); + const userAgent = request.headers.get("User-Agent"); if (userAgent != null && userAgent.match(/curl|libcurl/) !== null) { return await sendScriptContent(); } else { @@ -74,7 +89,7 @@ export default { status: 301, statusText: "Redirect", headers: { - "Location": baseUrl + "Location": baseRepoPageUrl } }); } diff --git a/install-ssh-worker/wrangler.toml b/cf-worker/wrangler.toml similarity index 100% rename from install-ssh-worker/wrangler.toml rename to cf-worker/wrangler.toml diff --git a/conf-sshd.sh b/conf-sshd.sh index 5e5391a..aa6669a 100644 --- a/conf-sshd.sh +++ b/conf-sshd.sh @@ -3,11 +3,11 @@ ########## 一些配置 ########## # 默认获取 SSH key 的地方,一般是 Github. -sshkey_url="https://q-ssh.lamgc.me/ssh.keys" +sshkey_url="{{ SSH_KEY_URL }}" # 默认的 Cron 执行计划, 每天凌晨 0 点执行 -default_cron="0 0 * * *" +default_cron="{{ DEFAULT_CRON }}" # 脚本 Url -script_url="https://q-ssh.lamgc.me/script.sh" +script_url="{{ SCRIPT_URL }}" ############ 脚本区 ##########