miiwu / sspanel.soulsign

May a happy script, based on Soul Sign.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SSPANEL - Soul Sign Script

功能

  • 多个 类似站点签到

  • 基本普适 SSPANELPowered by SSPANEL 搭建的站点

  • 可扩展为 Discuz!Powered by Discuz! 等的 其他类型站点 签到

介绍

  • 引用 mmc

    var mmc = await require(site_config.core);
    var res = await mmc(site_config, param_config, config = {});
  • mmc 传入参数

    • site_config: 网站配置

      • site_config 成员

        1. .corestring:地址

        2. .domainstring[]:域名

          i.cat(https://)http(s)://i.dog 均支持

        3. .pathobject:路径

          i/cat(/)/i/dog 均支持,且多个之间为 逻辑或 关系

          • .log_instring[]:登录网址的
          • .sign_instring[]:签到网址的
        4. .keywordobject:关键字

          多个之间为 逻辑或 关系,且优先级低于 param_config 中对应的选项

          • .onlinestring[] -> regexp[]:在线的
          • .signedstring[] -> regexp[] + optional:已签到的
          • .signingstring[] -> regexp[] + optional:正签到的
        5. .hookobject:钩子

          • .get_log_inasync function (site, param){}:获取网址登录信息的
            1. siteobject:当前网站
            2. paramobject:脚本头中定义的参数
          • .post_sign_inasync function (site, param, data){}:推送网址签到信息的
            1. siteobject:当前网站
            2. paramobject:脚本头中定义的参数
            3. datastring.get_log_in 中的返回值
          • .notify_signedasync function (array){} + optional:自定义已经签到信息的
            1. arraystring[].keyword.signed 中与 .get_log_in 中的返回值 正则匹配成功 后的数组
          • .notify_signingasync function (array){} + optional:自定义正在签到信息的
            1. arraystring[].keyword.signing 中与 .post_sign_in 中的返回值 正则匹配成功 后的数组
          • .filter_unbefittingasync function (data){} + optional:过滤不适配的
            1. datastring:同 .post_sign_in
        • site 成员

          1. schemestring:协议
          2. domainstring:域名
          3. urlobject:URL
            • getstring:配合 axios.get() 使用
            • poststring:配合 axios.post() 使用
        • optional

          表示 可选的

        • x -> y

          表示 xy支持,且 x默认转换y

        • (x)

          表示 x 为省略的部分

      • 例子

        var sspanel = {
            core: "https://soulsign.inu1255.cn/script/Miao-Mico/mmc.js", // 地址
            domain: [], // 域名
            path: {
                log_in: ["auth/login"], // 登录网址主机的
                sign_in: ["/user/checkin"], // 签到网址主机的
            }, // 路径
            keyword: {
                online: ["我的", "节点"], // 在线的
                signed: [/明日再来/], // 已经签到的
            }, // 关键词
            hook: {
                get_log_in: async function (site, param) {
                    /* 获取登录信息 */
                    return { code: 0, data: await axios.get(site.url.get) };
                }, // 获取网址登录信息
                post_sign_in: async function (site, param) {
                    /* 推送签到信息 */
                    let data_psi = await axios.post(site.url.post);
        
                    /* 返回信息 */
                    return { code: 0, data: data_psi.data.msg };
                }, // 推送网址签到信息
                notify_sign_in: async function (array) {
                    /* 自定义 已签到 通知消息 */
                    return { code: 0, data: array };
                }, // 通知网址签到信息
            }, // 钩子
        };
    • param_config: 调用者的脚本参数

      • param_config 可选成员

        1. domain:域名

          格式同 site_config.domain

        2. path_log_in:登录路径

        3. path_sign_in:签到路径

          格式同 site_config.path 中对应的选项

        4. keyword_online:在线的关键字

        5. keyword_signed:已签到的关键字

        6. keyword_signing:正签到的关键字

          格式同 site_config.keyword 中对应的选项

        均使用 , 分隔

      • 例子

        
        // ==UserScript==
        // ...
        // @grant             require
        // @param             domain 域名,<i.cat>,<http(s)://i.dog>
        // @param             path_log_in 登录路径,<i/cat>,</i/dog>
        // @param             path_sign_in 签到路径,<i/cat>,</i/dog>
        // @param             keyword_online 在线关键字,</cat/>,<dog>
        // @param             keyword_signed 已签到关键字,</cat/>,<dog>
        // @param             keyword_filter 过滤正常消息关键字,</cat/>,<dog>
        // ...
        // ==/UserScript==
        
        
    • config= {}:配置

      • dben = falsebool:是否开启 debug 模式

        dben = debug_enable

        此时会记录和输出一些日志

      • ssvs = falsefunction:引入 soulsign 版本

        ssvs = soulsign_version

        兼容旧版本

  • res 成员

    1. res.about:关于

      • 返回 关于
    2. res.debug(level = 0):调试信息

      • 返回 根据 level 决定的部分或全部内部变量值
    3. res.record_log(site, code, message):记录日志

      • 返回 参数 message
    4. res.update_config(site_config, param_config)dev:更新配置

    5. res.publish_pipe(site, message):发布管道信息

      • 返回 message
    6. res.subscribe_pipe(site):订阅管道信息

      • 返回 res.publish_pipe(site, message) 中的 message
    7. res.sign_in(full_log = false):登录

      以下所列均为 soulsigh v2.1.0 以下适用

      • full_log = true
        • 成功:❤️ mmc ❤️ < [ ✔ 网站: 提示语] >
        • 失败:❤️ mmc ❤️ < [ ❗ 网站: 问题] / [ ✔ 网站: 提示语] >
      • full_log = false
        • 成功:❤️ mmc ❤️
        • 失败:❤️ mmc ❤️ < [ ❗ 网站: 问题] >

      <...>,意为里面的内容是一个单元

    8. res.check_online():检测是否在线

      • 成功:true
      • 失败:false
  • 例子

愿景

  • SSPANEL 等的普适签到脚本
  • 管理多个站点,需配置 @param domain.domain
  • 管理检测关键词,需配置 @param keyword_xxx.keyword.xxx
  • 分离核心脚本,应用脚本轻量化
  • 多种网站签到方式,需配置 .hook.xxx
  • 每种网站签到方式可以自动匹配多个不同网址,需配置 @param path_xxx.path.xxx
  • 每次调用脚本均刷新配置
  • 多个网站域名设置,已支持泛域名 *,兼容考虑,仍未移除 *.* & *.*.* & *.*.*.*
  • 自定义 已签到 通知文字,需配置 .hook.notify_sign_in.keyword.signed均有效
  • 渲染、格式化 执行结果
  • 处理 未登录 时的多网站登录问题,需 自行分别登录,点击 执行结果 进入 日志 页面,即可看到 域名列表,点击 域名栏 可跳转登录
  • 支持过滤是否未适配的网站,需配置 hook.filter_unbefitting
  • 筛选每种网站的 非敏感信息,用作反馈
  • 完全使用 表驱动法 重构 ,减少相似的表,缩减代码体积小声哔哔

更新

1.2.15

  1. 增加 return.detail.log,会记录每次网络请求的响应数据

    每个域名下一般有 2 条响应数据,即 .hook.get_log_in().hook.post_sign_in() 中的两次 axios;

    我并不会收集你的数据;

    如果需复制反馈,请 务必脱敏处理,里面会包含你的 个人信息

  2. 适配 *,泛域名

  3. 对于 关键字,优先匹配用户配置

  4. 增加 hook.notify_signing,个性化正在签到消息提示,使用关键字 keyword.signing,可选

  5. 增加 hook.filter_unbefitting,过滤不适配的网站

  6. 修改 hook.post_sign_in,仅用于推送配置,然后返回响应数据

  7. 重命名,filter -> signingnotify_sign_in -> notify_signed

  8. 支持兼容不同 soulsign 版本

  9. 修复异常无法抛出的问题

变更日志

1.2.14

  1. 重构 assert(),使用 operate_table()
  2. 改良 discuz.?.js,获取哈希值的办法
  3. 修改 match_keyword(),支持 正/反性关键词
  4. 增加 .keyword.filter,可以过滤消息并设置为 非警告 级别
  5. 修复 discuz.k.js,消息提示问题

1.2.13

  1. 修复 网络连接中断时 的异常情况

1.2.12

  1. 增加 discuz.dc & discuz.k
  2. 支持 param_config.path_xxx & param_config.keyword_signed
  3. 重写 config_path(),用到了 operate_table()
  4. 默认 param_config 可选项均加入应用脚本
  5. 修复 param_config.keyword_signed 读取问题
  6. 修复 method_site() 中多个 path 自动更新的规则问题,梅开二度?
  7. 修复 notify_sign_in() 的参数问题

1.2.11

  1. 支持 hook.notify_sign_in,可自定义已签到的通知消息
  2. 增加 operate_table() & operate_item(),表驱动
  3. 重写 config_xxx(),用到了 operate_xxx()
  4. 增加 时间戳,在 system_log_core()
  5. 修复 method_site() 中多个 path 不自动轮转的问题
  6. 修复 nexusphp.js
  7. 修改 match_keyword_list()match_keyword()

1.2.10

  1. 增加 eval 权限,便于模块化
  2. 增加 online / signed 关键字,去除 positive / negaitive 关键字
  3. 增加 system_xxx(),一系列
  4. 增加 nexusphp.js
  5. 重写 hook 部分,用 eval
  6. 清空 site_config.domain,由于更新会覆写个人的配置,现需手动配置
  7. 增加 persistence_log(),读取持久化的消息,就是另一个缓存,很少更新
  8. 修改 record_log(),可选消息持久化
  9. 修复 method_site() 中的 error,现改为 message,无法作用
  10. 修复 #1,判断是否已经签到关键词问题
  11. 增加 readme,在 application 目录中
  12. 增加 gitignore

1.2.9

  1. 移除 mmc.js 内部对 sspanel.js 的集成,hook
  2. 配置 sspanel.jshook
  3. 修复当 debugs.enable != true 时,没有错误抛出

1.2.8

  1. 修复 @domain 配置问题
  2. 修改 natfrp.js 的提示信息,这个脚本可能暂时或永久失效,因为有了 hCaptcha 验证
  3. 修复部分变量名

1.2.7

  1. 修复多个脚本调用不会刷新配置,取消缓存的特性

1.2.6

  1. 修改了 site_config 的格式
  2. 支持多个 path,即支持一种签到方式下的多种网址
  3. 修改文件目录

1.2.5

  1. 增加 about
  2. 修改 assert_type()
  3. 修改 view_log() & sign_in(),支持结果全输出
  4. 增加更多 system_log(),在 debug 运行时记录日志

1.2.4

  1. 增加 飘云阁.js
  2. 增加 natfrp领流量.js
  3. 证明可以 hook 为其他类型签到,决定签到方式

1.2.3

  1. 修改了 site_config 的格式
  2. 修复了更新 domain 时,sites 内索引不对的情况
  3. 改变部分 varlet,主要是函数内地局部变量
  4. 增加 update_config()dev,用来自动更新配置参数

1.2.2

  1. 支持在 hook 中引入 param
  2. 支持 pipehook 间相互通信
  3. 增加 asserts,支持适应不同参数列表,主要是有无 @param
  4. 支持 configs,存储传入的参数,site_config & param_config
  5. 增加 debugs
  6. 增加 system_log(),方便调试,record_log() 也会调用它
  7. 增加 debug(),支持根据等级输出

1.2.1

  1. 支持 hook,可能能支持其他网站类型了

1.2.0

  1. 形成模板

1.1.3

  1. 修改‘域名’文本框提示的文本
  2. 修改‘登录后应该有的关键字’文本框提示的文本

1.1.2

  1. 支持配置多个域名

1.1.1

  1. 支持配置检查在线的关键字

1.1.0stable

  1. 修复检测在线的问题

1.0.0

  1. 发布脚本

鸣谢

所有给予灵感和帮助的人儿们

About

May a happy script, based on Soul Sign.

License:Apache License 2.0


Languages

Language:JavaScript 100.0%