分类: 源码/模板

  • Lagom WHMCS 主题的紧急安全更新通知

    重要通知!Lagom WHMCS 客户主题的安全更新

    我们遗憾地通知您,我们在 Lagom WHMCS 客户主题中发现了一个严重的漏洞,这可能会对您的 WHMCS 系统构成潜在的安全风险。我们为给您带来的任何不便表示歉意,并将系统的安全作为我们的首要任务。

    需要立即采取行动

    为解决此问题,我们已为所有产品版本开发了补丁。这些补丁也将包含在 Lagom WHMCS 客户主题包中,从版本 1.5.0 开始。

    迅速安装这些补丁对您系统的保护至关重要。请按照下面的步骤进行指导:

    下载补丁

    1. 访问 RS Studio 客户门户网站并登录您的账户。

    2. 导航至您的 Lagom WHMCS 客户主题产品的管理页面。

    3. 在左侧边栏选择“补丁”。

    4. 下载与您版本相对应的补丁(例如,对于 Lagom 客户主题 v2.1.4,请下载 v2.1.4 – security fix)。

    安装补丁

    1. 解压下载的文件夹。

    2. 通过 FTP 将 /php71+/ 文件夹的内容上传至您的 WHMCS 安装目录。

    3. 确保所有文件正确无误地上传。

    检查是否被感染

    要验证您的安装是否已被感染,请按照以下步骤操作:

    1. 在您的服务器上,导航至 /templates/lagom2/assets/img/clients/。注意,如果没有 /clients/ 文件夹,则表示没有上传任何 PHP 文件,因此您的安装应该是安全的。
    2. 检查目录中是否有任何 PHP 文件。请注意,任何 PHP 文件的存在都可能对您的系统构成安全风险,因此您应该按照下面描述的步骤进行操作。

    发现未授权文件的即时行动

    如果发现有未授权的 PHP 文件,请立即采取行动:

    1. 从您的服务器下载可疑的 PHP 文件。
    2. 从您的服务器中移除这个可疑文件。
    3. 压缩该文件并为分析做好准备。
    4. 将该文件提交给我们的团队进行进一步的调查 – 报告代码。

    关于安全问题

    该问题涉及到一个特定的功能,该功能允许客户在登录 WHMCS 客户区域时上传图片文件(PNG、JPG、SVG 和 GIF)。该功能使用 PHP MIME 类型检查来确保只能上传这些图片格式。然而,我们发现 MIME 功能的安全措施并不完全可靠。

    我们注意到,熟练的黑客可能利用这个功能。他们可以通过执行特定的 URL 来绕过预期的限制,从而上传 PHP 文件。这个漏洞构成了重大的安全风险。

    我们想向您保证,Lagom 客户主题从未使用过此功能。作为预防措施,我们已完全从插件文件中移除了这个功能,以消除任何潜在风险。

    我们的团队已对所有插件文件进行了彻底的调查,以寻找其他任何漏洞。我们很高兴地报告,没有发现其他重大安全问题。然而,作为我们持续增强产品安全性和完整性的承诺的一部分,我们计划在即将发布的 2.2.4 版本中发布更多的安全改进,该版本计划于 2 月份发布。

    您的安全和对我们产品的信任对我们至关重要。我们致力于为您提供最安全、最可靠的体验。如果您有任何问题或疑虑,请随时通过我们的联系表格联系我们的支持团队。

    感谢您对此事的关注以及您持续的支持。

  • python所写的m3u8去广告下载工具(只针对m3u8链接下载) 

    python所写的m3u8去广告下载工具(只针对m3u8链接下载)

    1.由于平时喜欢看动漫,在线播放网络太快,正好最近在学 python 就写了这个工具

    2.因为不满意所以重写了很多遍,到现在相对来说能满足使用需求了,感觉还是写的不好,下载速度不稳定无法像 GitHub 上大神所写 m3u8 下载工具下载快

    3.打算后续python水平提升后再重写,不足之处请大伙指出

    4.对广告的过滤效果应该可达到90%以上吧

    5.win 用户可通过点击 bat 脚本下载,linux的用户可通过data文件内大脚本运行

    5.1 由于前面打包多次失败就没有打包成exe程序,是以python便捷版的方式运行

    6.需要特别注意的是文件格式编码是 UTF-8,编码错误无法正常使用

    7.需要使用其他设置可看说明文档(建议第一次使用看一下)

  • Premium URL Shortener 7.3.1 破解版开心版 – 强大的短网址程序

    Premium URL Shortener 是一个包含许多独特功能的链接缩短程序。它是您可以将一个长链接缩短为一个简短且智能的短网址,您可以用来监视点击并优化营销活动。它为您提供了许多独特的工具,其中一些功能包括地理定位、设备定位、高级会员套餐、功能强大的仪表盘和管理面板以及一系列 CMS 工具,以帮助您快速搭建一个短网址网站,从而协助您完成梦想。此程序已积极开发了 10年以上,且定期保持更新,这意味着本程序将来会不断变得越来越好。

    Premium URL Shortener is a PHP URL shortener script packed with many unique features. It has been built from scratch with performance in mind. Some of the features include geotargetingpremium membershippowerful dashboard and admin panel and a series of CMS tools to help you build your dream. Furthermore, it will keep getting better with each update!

    本站提供的版本是最新的v7.3.1(2024年1月9日)

    新版本概要:

    特色功能

    个性单页/单页生成器

    生成美观且可定制外观的单页,在其中共享单个或多个链接并监控流量、添加各种小部件和各个社交网络的主页链接。

    高级二维码生成器

    生成独特的二维码并与公众分享。可使用不同类型的二维码、自定义颜色、添加您自己的标志,选择不同形状的二维码方块,可生成动态二维码以跟踪扫描。

    软件即服务 (SaaS)

    使用高级扩展版本,本程序即可变成一个 SaaS 平台,并通过 Stripe、PayPal 和银行转账自动管理所有付款。

    团队功能

    团队功能允许你邀请成员加入你的小组,并作为一个团队操作同一个账户。这对团队协作来说是完美的!

    自定义域名

    本程序支持用户和管理员的自定义域名。如果您的用户想使用自己的域名,他们可以直接添加并开始使用它。管理员也可以添加额外的域名供用户使用。如果您不希望用户使用您的主域名,此功能就很实用。 营销 & 链接跳转器 营销功能允许您重新组合一些网址,并将为您生成一个特殊链接,您可以将其发送给您的受众客户。该特殊链接将允许您的客户查看营销中的所有链接并随机跳转到其中的一个网址,营销则会汇总所有网址的统计数据。

  • Lagom Email Template v1.1.2

    和Lagom主题搭配的邮件模板,默认的邮件模板实在是太难看了,推荐使用。

    Send Beautiful Emails with Lagom Style via WHMCS
    Improve your client experience with beautifully designed WHMCS email template. Choose between 3 different styles to make it fit to your brand.

  • 漫城小说漫画系统 无错优化版 去除了远程通信增加了自定义S3存储

    漫城小说漫画系统 无错优化版 去除了远程通信增加了自定义S3存储

    MJJ们新年快乐!

    本站2024年第一弹姗姗来迟。

    之前写过一个文章,是说如何低成本架设小说站+漫画站的,传送门如下

    [b2_insert_post id=”7356″]

    当时说如果存储使用大厂的OSS那个价格就太美丽了,所以要自建云存储。自建云存储教程如下

    那么硬件准备好了,软件上场。

    漫城的默认版本是不支持自定义云存储的,本站增加了适配。另外,本站代码去除了远程通信等,能让你更后顾无忧。

    如果有问题请直接在本主题下回复。

    本源码仅可用于交流学习,禁止用于任何不法用途。

  • WHMCS 加密货币支付模块

    WHMCS 加密货币支付模块

    简介

    一款WHMCS的加密货币支付解决方案,实现多种加密货币收款至自己的加密货币钱包内,
    不依赖网关服务商, 也无需像任何三方支付网关手续费

    没有中间商赚差价
    没有中间商赚差价
    没有中间商赚差价
    没有中间商赚差价
    没有中间商赚差价

    结构

    1. 监控端 (三方)
    2. 插件端 (原创)

    支持的区块链

    • TRON 波场
    • ETH 以太坊
    • 以及任意基于ETH以太网络的变体,例如 币安智能链(BSC)、Polygon等

    支持的原生币 (就是你转账交易需要扣矿工/能量费的币种)

    • TRX
    • ETH
    • BNB
    • MATIC

    支持的代币

    演示截图预览

    截图预览

    插件配置

    订单页面

    支付页面

    支付成功

    这里成功的时候 流水号就是区块哈希

    监控端部署

    准备工作

    加密货币查询接口

    申请API是为了提交交易查询的频率限制
    需要用到的加密货币接口API,请先申请保存好

    区块链申请地址
    TRON 波场https://www.trongrid.io/dashboard/keys
    ETH 以太https://etherscan.io/myapikey
    BSC 币安智能链https://bscscan.com/myapikey
    Polyonhttps://polygonscan.com/myapikey

    Telegram 机器人通知

    • TG的账号ID,如不知道ID,可给 https://t.me/EShopFakaBot 发送 /me 获取用户ID 格式为纯数字 1111111
    • TG的机器人Token 从https://t.me/BotFather 创建机器人时,会给你 BotToken, 格式为 数字:字符串

    安装监控端

    本项目依赖于TOKENPAY, 先安装这个

    
    # 加密货币监控端部署
    APPDIR=/www/wwwroot/tokenpay
    [[ ! -d "${APPDIR}" ]] && mkdir -p ${APPDIR}
    cd ${APPDIR}
    wget -c -4 "http://doc.whmcscn.com/server/index.php?s=/api/attachment/visitFile&sign=61fbc4dbde6f4e1afa042ce54c9434ce" -O release-linux-x64.zip
    unzip -d ./ release-linux-x64.zip
    chmod +x TokenPay
    cp -Rp appsettings.Example.json appsettings.json
    cp -Rp EVMChains.Example.json EVMChains.json
    

    编辑 appsettings.json 配置文件

    {
      "Serilog": {
        "MinimumLevel": {
          "Default": "Information",
          "Override": {
            "Microsoft": "Warning",
            "Microsoft.Hosting.Lifetime": "Information"
          }
        }
      },
      "AllowedHosts": "*",
      "ConnectionStrings": {
        "DB": "Data Source=|DataDirectory|TokenPay.db; Pooling=true;Min Pool Size=1"
      },
      "TRON-PRO-API-KEY": "xxxxxx-xxxx-xxxx-xxxxxxxxxxxx", // 避免接口请求频繁被限制,此处申请 https://www.trongrid.io/dashboard/keys
      "BaseCurrency": "CNY", //默认货币,支持 CNY、USD、EUR、GBP、AUD、HKD、TWD、SGD
      "Rate": { //汇率 设置0将使用自动汇率
        "BNB": 0,
        "USDT": 0,
        "TRX": 0,
        "ETH": 0,
        "USDC": 0,
        "MATIC": 0,
      },
      "ExpireTime": 1800, //单位秒
      "UseDynamicAddress": false, //是否使用动态地址,设为false时,与EPUSDT表现类似;设为true时,为每个下单用户分配单独的收款地址
      "Address": { // UseDynamicAddress设为false时在此配置TRON收款地址,EVM可以替代所有ETH系列的收款地址,支持单独配置某条链的收款地址
        "TRON": [ "Txxxx1" ], // 这里写你的钱包地址, TRON网络的 就是你接收用户付款的地址
        "EVM": [ "0x111" ]  // 这里是ETH地址 一般0x开头
      },
      "OnlyConfirmed": true, //默认仅查询已确认的数据,如果想要回调更快,可以设置为false
      "NotifyTimeOut": 3, //异步通知超时时间
      "ApiToken": "666666", //异步通知密钥,请务必修改此密钥为随机字符串,脸滚键盘即可
      "WebSiteUrl": "http://token-pay.xxxxx.com", //配置服务器外网域名
      "Telegram": {
        "AdminUserId": 12345678, // 你的账号ID,如不知道ID,可给https://t.me/EShopFakaBot 发送 /me 获取用户ID
        "BotToken": "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" //从https://t.me/BotFather 创建机器人时,会给你BotToken
      }
    }
    

    特别注意

    • UseDynamicAddress 不要改,如果开启会自动生成钱包地址对应的密匙会存储在SQLITE数据库里, 并不安全
      如果别人下载了你的SQLite数据库读取到密匙 就可以导入钱包发起转账了……
    • BaseCurrency基础货币 配置为你WHMCS的默认货币,如果是USD这里也设置为USD
    • “ApiToken”: “666666”, // 这个密匙 需要记住, WHMCS配置需要
    • “WebSiteUrl”: “http://localhost“, // 这里配置为内网即可,不建议对外公开
    • 资料来源 https://github.com/LightCountry/TokenPay/blob/master/Wiki/appsettings.md

    编辑 EVMChains.json 配置文件

    {
      "EVMChains": [
        {
          "Enable": false,
          "ChainName": "以太坊",
          "ChainNameEN": "ETH",
          "BaseCoin": "ETH",
          "Decimals": 18,
          "ScanHost": "https://etherscan.io",
          "ApiHost": "https://api.etherscan.io",
          "ApiKey": "", // 此处申请 https://etherscan.io/myapikey
          "ERC20Name": "ERC20",
          "ERC20": [
            {
              "Name": "USDT",
              "ContractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
            },
            {
              "Name": "USDC",
              "ContractAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
            }
          ]
        },
        {
          "Enable": false,
          "ChainName": "币安智能链",
          "ChainNameEN": "BSC",
          "BaseCoin": "BNB",
          "Decimals": 18,
          "ScanHost": "https://www.bscscan.com",
          "ApiHost": "https://api.bscscan.com",
          "ApiKey": "", // 此处申请 https://bscscan.com/myapikey
          "ERC20Name": "BEP20",
          "ERC20": [
            {
              "Name": "USDT",
              "ContractAddress": "0x55d398326f99059ff775485246999027b3197955"
            },
            {
              "Name": "USDC",
              "ContractAddress": "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"
            }
          ]
        },
        {
          "Enable": false,
          "ChainName": "Polygon",
          "ChainNameEN": "Polygon",
          "BaseCoin": "MATIC",
          "Decimals": 18,
          "ScanHost": "https://polygonscan.com",
          "ApiHost": "https://api.polygonscan.com",
          "ApiKey": "", // 此处申请 https://polygonscan.com/myapikey
          "ERC20Name": "ERC20",
          "ERC20": [
            {
              "Name": "USDT",
              "ContractAddress": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"
            },
            {
              "Name": "USDC",
              "ContractAddress": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"
            }
          ]
        }
      ]
    }
    

    特别注意

    运行测试

    配置文件改完成, 验证JSON格式有效
    上传到服务器上
    接着运行起来,没错误的话 , 先去配置WHMCS插件

    配完了 在来看最下面的以守护进程运行

    
    # 运行
    APPDIR=/www/wwwroot/tokenpay
    cd ${APPDIR}
    ./TokenPay
    
    # 返回信息
    
    root@localhost:/www/wwwroot/tokenpay# ./TokenPay
    ϵͳ��Linux
    ϵͳ����X64
    ϵͳ���ƣ�Linux 5.19.2-x86_64-linode156 #1 SMP PREEMPT_DYNAMIC Thu Aug 18 15:51:13 EDT 2022
    ������X64
    �Ƿ�64λ����ϵͳ��True
    CPU CORE:1
    HostName:localhost
    Version:Unix 5.19.2.86
    [03:57:47 INF] Starting web host
    [03:57:49 INF] 机器人启动成功!我是TG客服通知机器人。
    [03:57:49 INF] 机器人消息发送结果:True
    [03:57:50 INF] Service 订单过期 is starting.
    [03:57:50 INF] Service 更新汇率 is starting.
    [03:57:50 INF] Service 订单通知 is starting.
    [03:57:50 INF] Background Service 发送订单通知 is starting.
    [03:57:50 INF] Service TRC20订单检测 is starting.
    [03:57:50 INF] Service TRX订单检测 is starting.
    [03:57:50 INF] Service ETH订单检测 is starting.
    [03:57:50 INF] Service ERC20订单检测 is starting.
    [03:57:50 INF] Now listening on: http://localhost:5000
    [03:57:50 INF] Application started. Press Ctrl+C to shut down.
    [03:57:50 INF] Hosting environment: Production
    [03:57:50 INF] Content root path: /www/wwwroot/tokenpay/
    [03:57:53 INF] ------------------开始更新汇率------------------
    [03:57:54 INF] 更新汇率,TRX=>CNY = 0.4943
    [03:57:55 INF] 更新汇率,USDT=>CNY = 6.93
    [03:57:55 INF] 更新汇率,ETH=>CNY = 12688.38
    [03:57:55 INF] 更新汇率,USDC=>CNY = 6.99
    [03:57:55 INF] 更新汇率,BNB=>CNY = 2183.67
    [03:57:55 INF] 更新汇率,MATIC=>CNY = 6.01
    [03:57:55 INF] ------------------结束更新汇率------------------
    

    这样就代表配置OK了

    下一步我们可以配置WHMCS插件了

    WHMCS插件安装

    插件安装

    1. 把对应的插件ZIP文件解压 或者 git clone
    2. 上传到 WHMCS目录/modules/gateways/ 下

    插件激活

    1. 登录WHMCS后台
    2. Payment Gateways 下面找到 TokenPay
    3. 点击 Active 激活它

    插件配置

    1. API URL 同服务器配置为 http://localhost:5000
    2. API KEY 就是 appsettings.json 结尾配置的 66666 改为你自己的
    3. 币种列表, 默认支持4种, 你可以添加更多(需先在监控端配好) TRX|TRX (波场) EVM_ETH_ETH|ETH (以太坊) USDT_TRC20|USDT-TRC20 (波场链) EVM_ETH_USDT_ERC20|USDT-ERC20 (以太链)
    4. 如果
      1. WHMCS默认货币为USD, 监控端货币配置为CNY 货币转换选择 USD
      2. WHMCS默认货币为CNY, 监控端货币配置为CNY 货币转换选择 None
      3. WHMCS默认货币为CNY, 监控端货币配置为CNY 货币转换选择 None
      4. WHMCS默认货币为CNY, 监控端货币配置为USD 货币转换选择 CNY

    这样就配置完成了, 下一步生成订单测试下

    监控端的守护进程运行

    到这一步骤的时候,你应该已经对接和调试都完成了
    现在以守护进程启动TokenPay来监控加密货币的订单和支付状态了

    下面是通用的,可能系统版本不同有略微区别,我尽量把安装和路径都统一了

    Redhat/CentOS/AlmaLinux 系统部署

    
    # 安装软件包
    sudo yum install epel-release -y
    sudo yum install pip python3 -y
    sudo yum install supervisor -y
    
    # 替换后缀
    sed -i 's|\*.ini|\*.conf|g'  /etc/supervisord.conf 
    
    # 生成配置 (注意这里,如果你部署路径不是这个,改为你自己的)
    cat >/etc/supervisord.d/tokenpay.conf <<EOF
    

    [program:tokenpay]

    directory=/www/wwwroot/tokenpay # 改为你的目录 command=/www/wwwroot/tokenpay/TokenPay user=root startsecs=10 autostart=true autorestart=true stderr_logfile=/var/log/supervisor/%(program_name)s.err.log stdout_logfile=/var/log/supervisor/%(program_name)s.out.log loglevel=info EOF # 更新下文件 sudo systemctl daemon-reload # 开机启动 sudo systemctl enable supervisord # 启动 sudo systemctl start supervisord # 验证状态 sudo supervisorctl status 返回 tokenpay RUNNING pid 284452, uptime 0:11:21 代表正常运行了

    Debian/Ubuntu 系统

    # 安装软件包
    sudo apt update && sudo apt install supervisor
    sudo systemctl status supervisor
    
    cat >/etc/supervisor/conf.d/tokenpay.conf <<EOF
    

    [program:tokenpay]

    directory=/www/wwwroot/tokenpay # 改为你的目录 command=/www/wwwroot/tokenpay/TokenPay user=root autostart=true autorestart=true stderr_logfile=/var/log/supervisor/%(program_name)s.err.log stdout_logfile=/var/log/supervisor/%(program_name)s.out.log loglevel=info EOF sudo supervisorctl reread sudo supervisorctl update # 这时候你的TG应该收到消息了,代表启动成功 # 设置为开机启动 sudo systemctl enable supervisor # 验证状态 sudo supervisorctl status # 返回 tokenpay RUNNING pid 284452, uptime 0:11:21 # 代表正常运行了

    通用命令

    
    # 不需要运行,偶尔调试的时候需要,方便复制黏贴
    sudo systemctl stop supervisord
    sudo systemctl start supervisord
    sudo supervisorctl status
    sudo supervisorctl reload
    sudo supervisorctl reread
    sudo supervisorctl update
    
    
    # 如果需要单项目管理
    
    # 停止
    sudo supervisorctl stop tokenpay
    # 启动
    sudo supervisorctl start tokenpay
    # 重启
    sudo supervisorctl restart tokenpay
    
    

    常见问题

    同时请求同金额的订单会出现 A支付入账至B订单吗?

    不会,监控端会生成UUID订单号做识别了

    为什么不是实时更新订单状态?

    通常用户发起加密货币的支付到完成支付
    有一个时间段,需要一些时间来处理交易

    TRON网络 通常较快处理 1-5分钟
    ETH网络 取决整体网络状况和矿工费高低 1-30分钟

    用户发起支付=> 确认支付 => 区块链网络确认区块 => 确认完成
    耗的时间大部分都在 区块链网络确认区块 这个过程中 , 通过交易HASH可以看到 会显示 “确认中” 的提示

    一般交易完成都小于30分钟,所以监控端的超时间设置为30分钟最佳

    守护进程一直重启

    如果守护进程一直 STARTING RUNNING的循环, 这个是进程或管道文件问题
    删除 supervisor.sock 或者 pid文件 重启下即可
    这个问题应该是偶发的, 一般出现在喜欢pkill -f 干掉进程的方式,例如我
    这样的话pid或sock文件还记录了异常, 然后子进程不能获得进程返回的代码
    导致死循环……

    扩展ETH链币种教程

    基础知识

    把ETH链理解为银行总行
    把代币理解为银行提供的多币种账户,例如USD,HKD

    当您注册ETH钱包的时候会分配一个地址,相当于银行总行账户
    别人给你转不同代币例如USDT-ERC20, 相当于别人转USD给你

    扩展币种

    基于TokenPAY监控端扩展币种
    首先 打开 https://etherscan.io/tokens
    找到你要扩展的币种,我们以 扩展 True USD 为例
    点击 True USD
    https://etherscan.io/token/0x0000000000085d4780B73119b644AE5ecd22b376

    首先找到合约地址 在右边的OTHER INFO里面
    Other Info
    TOKEN CONTRACT (WITH 18 DECIMALS) # 这个18 就是精度
    0x0000000000085d4780B73119b644AE5ecd22b376 # 这个就是合约地址

    更新合约地址

    打开 EVMChains.json , 在ETH的配置段,添加
    注意逗号问题 具体见JSON代码格式标准

    ,
            {
              "Name": "TUSD", // 代币名称
              "ContractAddress": "0x0000000000085d4780B73119b644AE5ecd22b376" //合约地址
            }
    

    完成后的ETH段完整内容为

        {
          "Enable": true,
          "ChainName": "以太坊",
          "ChainNameEN": "ETH",
          "BaseCoin": "ETH",  //简单理解为 你交易代币扣矿工费的币种
          "Decimals": 18,
          "ScanHost": "https://etherscan.io",
          "ApiHost": "https://api.etherscan.io",
          "ApiKey": "你的KEY", // 此处申请 https://etherscan.io/myapikey
          "ERC20Name": "ERC20",
          "ERC20": [
            {
              "Name": "USDT",
              "ContractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
            },
            {
              "Name": "USDC",
              "ContractAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
            },
            {
              "Name": "TUSD", // 代币名称
              "ContractAddress": "0x0000000000085d4780B73119b644AE5ecd22b376" //合约地址
            }
          ]
        },
    

    更新币种支持

    继续更新 appsettings.json 文件, 添加币种名称

    重启生效

    这样就添加了TUSD支持
    注意验证下JSON格式, 格式错误会导致无法启动

    然后重新启动下守护进程

    sudo supervisorctl reload

    插件配置

    接着WHMCS后台支付插件的配置, 币种列表下面 加入
    EVM_ETH_TUSD_ERC20|TUSD-ERC20(TrueUSD)
    如图

    效果演示

    用户就可以在前台使用TUSD中支付了
    会显示这个币种

    然后点击支付
    会显示ETH链的TUSD了

    如果点击错了

  • 2024新版租卡租号平台源码支持账号合租也可以用于卡密分发

    2024新版租卡租号平台源码支持账号合租也可以用于卡密分发

    2024新版租卡租号平台源码,支持账号合租,也可以用于卡密分发,这是一个租号平台的源码,使用的是常见的租卡模式,目前在网络上很少看到这种类型的源码,该系统采用LayuiAdmin+php开发,小编测试源码正常使用,支付对接易支付接口,各项功能正常,源码开源的没啥可说的,有需要的朋友自行下载学习研究,源码免费分享。

    功能概述:

    1. 支持分租或合租模式,卡密分发模式
    2. 使用易支付的通用接口进行支付
    3. 增加邀请返利功能,方便站长更好的推广
    4. 为用户提供提现功能,添加工单系统
    5. 前台UI适应移动端和PC端,显示效果不同
    6. 支持邮箱登录(即注册模式),目前只增加了一个
    7. 站长可以自己在后台添加不同类型的优惠券
    8. 增加了公告系统,管理员可以在后台发布相关文章

    系统演示:

  • ShotShare 一个极简的个人图床程序

    ShotShare 一个极简的个人图床程序

    ShotShare banner image

    一个非常简洁的图床程序,适合自己个人使用。

    界面也是极简的。

    An open-source self hosted image sharing platform.


    About

    ShotShare is an open source, self hosted, bare bones image posting/sharing platform, it was built to allow friends to upload screenshots and send links to their friends without the constant barrage of ads/extraneous features.

    Demo

    A demo may be found here. This environment is strictly for trialing the application; images added here are automatically after a few minutes.

    Installation, Configuration, & Local Development

    ShotShare is meant to be extremely easy to self host. Below is a sample deployment using Docker.

    Example Deployment with Docker

    1. Create a directory for ShotShare: sudo mkdir /shotshare
    2. Create a .env file that will manage ShotShare generated environment variables (ex. your application key): sudo touch /shotshare/.env
    3. Ensure the user/group 82 (www-data user in docker container) own the .env file: sudo chown 82:82 /shotshare/.env
    4. Start the ShotShare container

    You may wish to customize environment variables (such as the HOST) before running this command, see below for a list of environment variables.docker run \ -p 80:80 \ -p 443:443 \ -e HOST=localhost \ -v shotshare_caddy_data:/data \ -v shotshare_caddy_config:/config \ -v shotshare_database:/app/database \ -v shotshare_data:/app/storage \ –mount type=bind,source=/shotshare/.env,target=/app/.env \ -d \ –restart unless-stopped \ –name shotshare \ mdshack/shotshare:latest

    Configuration Options

    Note: These are not all of the configuration options, only the most used ones, feel free to open a PR if you see any missing. For a more in-depth look at all the available options check out here.

    Environment VariableDefaultOptionsDescription
    DB_CONNECTIONsqlitesqlite,mysql,pgsql,sqlsrvIndicates what database connection will be used
    DB_HOST127.0.0.1N/ANot required if using sqlite, indicates the database host
    DB_PORT3306N/ANot required if using sqlite, indicates the database port
    DB_DATABASEshotshareN/ANot required if using sqlite, indicates the database database
    DB_USERNAMEshotshareN/ANot required if using sqlite, indicates the database username
    DB_PASSWORDnoneN/ANot required if using sqlite, indicates the database password
    HOSTlocalhostN/APublic host used by Caddy, thanks to caddy, this host will automatically be issued a SSL certificate

    Local Development

    Local development is done using docker compose

    1. Pull the repo: git clone git@github.com:mdshack/shotshare.git
    2. Change to the ShotShare directory: cd shotshare
    3. Install dependencies: composer install; npm install
    4. Build frontend: npm run build
    5. Start docker compose: docker compose up

    Contributing

    There is currently no established pattern for contributing, if you see something missing or feel like something could be better feel free to pop open an issue and/or PR.

    License

    ShotShare is open-sourced and licensed under the MIT License.

  • 多个wordpress共享同一用户数据库

    多个wordpress共享同一用户数据库

    有朋友在问wordpress是不是可以实现多个wordpress共享同一用户数据库。

    思路

    1.两个wordpress站共享用户数据,其他(文章、主题、设置等)数据不共享。

    2.共享cookie,即登录A站后切换为B站后仍为登录状态。

    教程

    前提:A、B两站为同顶级域名(a.abc.com与b.abc.com)或同根目录(abc.com/a与abc.com/b)

    A为主站,B共享A的用户数据,新建B,安装时数据库选择和A同一数据库下,A的数据库表头为wp_,B的改为和A的不一样,如:wp2_,安装B站时管理员任意填写,反正用不到(B站的管理员账户从A站)。

    打开B站的wp-config.php文件,添加:

    define('CUSTOM_USER_TABLE', 'wp_users');
    define('CUSTOM_USER_META_TABLE', 'wp_usermeta');
    
    

    这时候,用A的用户数据去登录B,可以登录但无后台权限。

    然后在A的functions.php添加:

    add_action( 'user_register', 'dup_capabilities' );
    add_action('profile_update', 'dup_capabilities');
    function dup_capabilities( $user_id ){
    //在这里设置数据表前缀,所有站的数据库表前缀全部写上即可。
    $prefixs = array('wp_','wp2_');
    global $table_prefix;
    $cap_val = get_user_meta( $user_id, $table_prefix.'capabilities',true);
    if( !empty( $cap_val ) ) {
    foreach( $prefixs as $prefix ){
    if( $prefix != $table_prefix )
    update_user_meta( $user_id, $prefix.'capabilities', $cap_val );
    }
    }
    }
    

    然后回头管理员身份登录A站,后台用户编辑功能里把每个用户重新编辑一下,不修改任何信息即可。编辑过后,就可以用A站的账户登录B站了。

    所以如果要做类似数据共享的站,最好是在一开始主站用户数量很少的时候就开始操作,不然一个个用户编辑下去也很麻烦。

    A作为主站,操作用户数据或注册新用户就在A站上操作,然后同步给B。

    <span style="color: #ff0000;">(以下没测试,请自行测试:</span>
    
    <span style="color: #ff0000;">如果在B站上注册新用户是否能同步给A,可以在B的functions.php里也添加以上代码)</span>

    这时候A站B站不同cookie,无法免登陆自由切换,接下来实现同步cookie。

    打开A站的wp-config.php文件,复制身份认证密钥,共8行。

    把B站的身份认证密钥替换为A的,保证A、B一模一样。

    在A、B两站的wp-config.php文件里同时添加:

    define('COOKIEPATH', '/');
    define('COOKIE_DOMAIN', '这里填写A、B两站的顶级域名');
    define('SECRET_SALT', '这里任意自定义一串字符串或密码');
    define('ADMIN_COOKIE_PATH', '/');
    define('SITECOOKIEPATH', '/');
    define('COOKIEHASH', md5('这里任意自定义一串字符串或密码'));
  • Cloudreve Client For Windows 类似百度网盘Windows客户端源码

    Cloudreve Client For Windows 类似百度网盘Windows客户端源码

    该项目是一个用VS2022(C# Win Form .Net Framework 4.8)编写的基于Cloudreve 3.8.X云盘服务的客户端程序。

    实现了:

    1、登录(包括验证码登录)
    2、保存密码,自动登录功能
    3、从保存的Cloudreve服务器列表中选择此次所要登录的Cloudreve服务器地址,该信息保存在system.db(SQLite)数据库中
    4、跟网页端一样,主页面左边显示的菜单,可以隐藏/显示
    5、文件列表
    6、路径显示/选择/跳转
    7、跟网页端一样,可以按类别显示文件列表,比如图片,视频,文档等等
    8、创建/删除目录
    9、文件的上传/下载列表,是分开的,上传是上传的文件列表,下载是下载的文件列表。
    10、删除文件/目录
    10、跟网页端一样,可以对当前文件列表进行排序,比如按字母排序,修改时间排序,文件大小排序等等
    11、显示文件/目录的属性
    12、创建分享,跟网页端一样,可以密码分享,并选择过期时间等等
    13、分享的文件/目录列表显示,及删除分享
    14、登录百度网盘(这里使用的是WebView2控件,登录后,就基本上用不着了,除非你点击进入网盘按钮,会在程序中显示百度网盘的页面),并从百度网盘中导入文件至Cloudreve网盘中指定的的目录里。(注:这里不包含破除百度网盘传输限速功能,具体传输速度根据你在百度网盘的会员等级而定)

    未完成功能:

    1、百度网盘登录后,不知道怎么退出登录,所以现在如果想推出的话,只能点击进入网盘按钮,然后在那个页面中退出
    2、还没有实现目录的上传(包括从百度网盘中导入一个文件夹到Cloudreve云盘),等我有时间了,我加上这个功能
    3、设置页面(包括管理员设置页面)的功能
    4、文件在线预览

    开源这个项目是想通过这个项目广交志同道合的朋友。
    可能大神看了我的代码,会觉得写的不好,在此也希望各位大神们能提出你们宝贵的意见,也让我能进步的更快!谢谢!

    如果大家知道如何让这个项目仓库代码变的像Linux一样,大家都可以修改,请告诉我如何设置!我想让感兴趣的朋友都能修改这个代码,但前提是保证运行没问题。谢谢!

    以下是程序的界面,我就不一一放出来了,基本上和网页端的一样。

    login.png
    mainscreen.png