QIN2DIM/V2RSS

关于软件部署的问题

numberone0001 opened this issue · 25 comments

您好!
看了您的项目,很有帮助。有个问题想咨询啊您:
如果想在本地windows二次开发本项目的话,需要配置哪些地方呢?如何配置呢?也需要像https://shimo.im/docs/5bqnroJYDbU4rGqy/read
这里所写的,把所有服务安装一遍吗?
可以也写个配置教程吗?

想在自己的设备上跑下您的代码,但是部署不成功。。。目前没有搞明白哪部分代码应该放在服务器端,哪部分放在本地。希望您可以直到下!谢谢!

或者说,要是想在本地windows二次开发本项目的话,需要配置哪些地方呢?

另外,项目详情里写的“该项目基于Windows10环境开发”,可并无win10下如何配置开发环境的相应介绍。。。希望开发者予以指导。

Tos:该项目基于Windows10环境开发,Mac用户可能无法正常使用

Help: 环境配置说明

你好,我在服务器端按您写的配置方法搭建了环境,可是 https://shimo.im/docs/5bqnroJYDbU4rGqy/read 这里好像没有写出mysql的作用以及配置方法,运行后就出现了下面的错误。您可否指导下呢?

[root@instance-1 V2RaycSpider1125]# python3 main.py deploy &
[1] 18179
[root@instance-1 V2RaycSpider1125]# Traceback (most recent call last):
File "main.py", line 1, in
from BusinessCentralLayer.control import Interface as app
File "/root/qinse/V2RaycSpider1125/BusinessCentralLayer/control.py", line 11, in
from BusinessCentralLayer.middleware.subscribe_io import FlexibleDistribute
File "/root/qinse/V2RaycSpider1125/BusinessCentralLayer/middleware/subscribe_io.py", line 7, in
from BusinessCentralLayer.middleware.flow_io import FlowTransferStation
File "/root/qinse/V2RaycSpider1125/BusinessCentralLayer/middleware/flow_io.py", line 4, in
import pymysql
ModuleNotFoundError: No module named 'pymysql'

oh没想到真有小伙伴想跑一下代码。我一开始还没想着开源代码的(虽然代码是发在那了),因为讲清楚如何部署环境和写技术文档都挺耗时的 毕竟前文也说了是用来刻意练习的练手项目(主要是太懒了),如果想交流技术♂可以来Telegram Group

这个项目(开源在Github上的版本)暂时没有用到MySQL(测试代码忘记删了Orz)。

执行一下pip拉取相关依赖既可,应该是这个库我没有放在requirement.txt

# 当前目录下执行 pip install <PackageName>
pip install pymysql

同理,ModuleNotFoundError: No module named <ModuleName> 如果指的是缺少第三方依赖,执行上述命令既可,缺啥补啥,一般情况下模块名(ModuleName)和包名(PackageName)是一致的。

另外,项目详情里写的“该项目基于Windows环境开发”,可并无Windows下如何配置开发环境的相应介绍。。。希望开发者予以指导。

Tos:该项目基于Windows环境开发,Mac用户可能无法正常使用

Help: 环境配置说明

上文提到的无法可用的场景(目前已知)特指目录定位程序打包问题。

1. 不同操作系统的路径定位方案不同

对于python os库在不同操作系统中的路径定位实现方案不同,根据报错提示改就行。因为config.py中出现了C://XXX这样的写法……而Linux和Mac是没有这种东西的(但其实只有在某些特殊场景下才会报错)。

2. 关于panel客户端的打包问题

本人用的是Pyinstaller打包桌面程序,这个方案暂时没法(在Windows环境下)稳定地打包.app(也可能是我的打开方式有问题)。

如果跨平台的编译比较难,能不能搞个docker文件

如果跨平台的编译比较难,能不能搞个docker文件

emmm,是后端服务的docker吗

根据我的理解 mac上没有client 那我要用 就得自己部署一套后台?
mac上开发或者适配现有的windows client到mac上去 好像比较难?
我之前在windows上尝试部署过 因为redis的原因后来放弃了

根据我的理解 mac上没有client 那我要用 就得自己部署一套后台?

"client": 目前开源版本panel中的“获取订阅链接”功能指向某一确定的redis数据库。这个数据库可以是部署在云的也可以是本机跑的。

显然,如果需要建立自己的redis数据库,是需要“部署一套后台”的。

mac上开发或者适配现有的windows client到mac上去 好像比较难?

目前的开源版本的“client”是基于python第三方库easygui快速搭建的前端面板,理论上并不能实现类似electron高度抽象高度封装一套代码就能跨平台维护的需求。比如一些众所周知的“权限问题”以及“上下文目录检索”问题,python中同一处os.dirname()返回的结果不一定相同,这也许并不会影响核心功能的正常使用,但会使得系统的运行偏离设计构想,出现不可控的运行结果。

其实在mac上开发并不难(比如针对路径问题,panel的路径索引均由配置文件高度管控,只需要改一行代码就可以de了)- -主要是当初缺少mac的测试环境,也没人提issue就没做233- -

我之前在windows上尝试部署过 因为redis的原因后来放弃了

大概去年暑假整个微服务快速扩建的脚本就已经开发好了- -但随着对设计模式的学习逐渐加深,越发觉得当初设计的框架实在naive,就一直没发布- -我也放弃了233,主要是一个在用工具的分享~没人提issue我也没想着放入新的东西

client 和 server 是两个完全分离的项目(至少目前最新开源版本是这样的嗯)

我之前在windows上尝试部署过 因为redis的原因后来放弃了

啊刚才看了一下之前写的技术文档,确实需要更新了...

实在不行 client后面弄成bs这种怎么样 挂一个page 流量大还可以赚点ad

实在不行 client后面弄成bs这种怎么样 挂一个page 流量大还可以赚点ad

emmmm,当时在技术选型的时候当下比较流行的解决方案都考虑过了,选了一个性价比最高的方案了暂时。

一个是docker这块,因为项目架构实在是太简单了,很难想到哪些服务能切到docker里运行(或许可以制作一个具备所需运行依赖的最小体积镜像),再来是目前团队在用的服务和开源版本的差距还蛮大的,“开源服务”还不是一个完整的薅羊毛生态....“更新采集队列”得手动push仓库才行,还没法“自产自销”。这需要保持一个微妙的平衡...万一薅穿了以后再也不会有免费的policy可用了233

关于client,目前比较可靠的是用聊天机器人分发订阅,其他解决方案相对来说都不太安全;

最后本项目是不可盈利的~

话说 我不用client的话 能在mac上通过post请求后台得到sharelink吗
有api endpoint不

我现在要两台机都登录钉钉 然后通过聊天记录共享。。
@QIN2DIM

有呀,直接改viewerflask接口Admin Interface再部署就行。

虽然没有文档- -但是应该不难操作,接口都写好了,直接访问就能出结果。

话说 我不用client的话 能在mac上通过post请求后台得到sharelink吗
有api endpoint不

我现在要两台机都登录钉钉 然后通过聊天记录共享。。
@QIN2DIM

其实是有更加一劳永逸的解决方案的(强烈暗示)~
image

话说 我不用client的话 能在mac上通过post请求后台得到sharelink吗
有api endpoint不

我现在要两台机都登录钉钉 然后通过聊天记录共享。。
@wanghaisheng

昂刚去吃了波夜宵- -回来看了一下钉钉机器人的文档。

说实话这文档写的真是非常有水平了,而且平台生态十分健壮,搭建一个用于(群组内)分发订阅的机器人门槛非常低(几乎5行代码就能实现消息转发)于是一个demo已经写完了- -查看运行结果

然后是关于DingTalk相关代码暂时不会加入到master中,毕竟我也是入门5分钟的新手(此处省略若干字)

如果小伙伴感兴趣可以参考模板写自己的机器人,如果可以的话建议把交互安全以及异步性能写到顶(经验之谈)。

[注意] 本人对“钉钉开发者平台”的操作略为生疏,所以:

  • 以下代码可能仅对群组机器人有效?
  • 也许不是任何“身份”的“成员”都可以开发机器人?我所生成的webhook以及secret_key都是以“管理员”身份执行的。

参考代码

# -*- coding: utf-8 -*-
# Time       : 2021/8/31 2:19
# Author     : QIN2DIM
# Github     : https://github.com/QIN2DIM
# Description:DingTalk bot | V2RCS:分发云彩姬订阅的钉钉机器人

import base64
import hashlib
import hmac
import json
import time
import urllib.parse

import requests


def ding_to_group(subscribe: str = "这里是V2Ray云彩姬",
                  access_token: str = None, timestamp: str = None, sign_: str = None
                  ):
    """
    通过POST接口,传递必要参数,控制指定的机器人向指定的群组发送TEXT类型消息
    :param subscribe: 要发送的订阅
    :param access_token:
    :param timestamp:
    :param sign_:
    :return:
    """
    web_hook = "https://oapi.dingtalk.com/robot/send?"
    headers = {
        "Content-Type": "application/json",
    }
    params = {
        "access_token": access_token,
        "timestamp": timestamp,
        "sign": sign_
    }
    data = {
        "msgtype": "text",
        "text": {"content": subscribe},
    }
    session = requests.session()

    response = session.post(web_hook, headers=headers, params=params, data=json.dumps(data))

    print(response.json())


def calculate_the_signature(secret_key: str = None) -> dict:
    """
    实现机器人安全组接口策略,此处使用官方文档中的案例写法
    :param secret_key:
    :return:
    """
    # 机器人安全密钥
    secret = secret_key

    # 计算时间戳
    timestamp = str(round(time.time() * 1000))

    # 计算签名
    secret_enc = secret.encode('utf-8')
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    string_to_sign_enc = string_to_sign.encode('utf-8')
    hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
    sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))

    return {"timestamp": timestamp, "sign": sign}


def get_subscribe() -> str:
    """
    可通过内网访问已部署的项目接口获取订阅,返回字符串形式的明文订阅链接
    :return:
    """

    return "A shareLink of the V2RayCloudSpider server."


def quick_start(secret_key: str, access_token: str):
    """
    一个快速创建的demo
    :param secret_key: see https://developers.dingtalk.com/document/robots/customize-robot-security-settings
    :param access_token: see https://developers.dingtalk.com/document/robots/custom-robot-access
    :return:
    """
    # 获取订阅
    subscribe = get_subscribe()

    # 安全组:计算时间戳和应用签名
    security_group = calculate_the_signature(secret_key=secret_key)

    # 通过post机器人接口发送订阅
    ding_to_group(
        subscribe=subscribe,
        access_token=access_token,
        timestamp=security_group['timestamp'],
        sign_=security_group['sign']
    )


if __name__ == '__main__':
    quick_start(
        secret_key="",
        access_token=""
    )

运行结果

Snipaste_2021-08-31_02-07-19

image

nb 我基本上是个代码白痴
@QIN2DIM 似乎是在mac上跑起来了 满屏的timeout。这个难道是在这些网站注册小号 然后拿到免费时间内的sharelink 我本地的机器似乎网络就不行 还是说我chrome配置的有问题 因为我也没找到chromedriver到底放在哪个文件夹

python main.py deploy
2021-08-31 20:22:09.795 | WARNING  | src.BusinessCentralLayer.scaffold:check_config:120 - 您未正确配置<Redis-Slave> 本项目资源拷贝功能无法使用,但不影响系统正常运行。
[2021-08-31 20:22:10] [✓] [SystemEngineIO] CONFIG_COLLECTOR_PERMISSION:['v2ray', 'ssr']
[2021-08-31 20:22:10] [✓] [SystemEngineIO] CONFIG_ENABLE_DEPLOY:{'global': True, 'tasks': {'collector': True, 'ddt_overdue': True, 'ddt_decouple': True}}
[2021-08-31 20:22:10] [✓] [SystemEngineIO] CONFIG_COROUTINE:True
[2021-08-31 20:22:10] [✓] [SystemEngineIO] CONFIG_ACTIONS:['v2ray']ActionReCloud
[2021-08-31 20:22:10] [✓] [SystemEngineIO] CONFIG_ACTIONS:['v2ray']ActionJydCloud
[2021-08-31 20:22:10] [✓] [SystemEngineIO] CONFIG_ACTIONS:['v2ray']ActionJssForV2rayCloud
[2021-08-31 20:22:10] [✓] [SystemEngineIO] CONFIG_ACTIONS:['v2ray']ActionPPForV2rayCloud
[2021-08-31 20:22:10] [✓] [SystemEngineIO] CONFIG_ACTIONS:['ssr']ActionPPForSSRCloud
2021-08-31 20:22:10.204 | SUCCESS  | src.BusinessCentralLayer.middleware.interface_io:__init__:98 - <SystemEngineIO> System core initialized successfully.
2021-08-31 20:22:10.205 | SUCCESS  | src.BusinessCentralLayer.middleware.interface_io:startup:218 - <SystemProcess> Startup -- deploymentTimingTask
2021-08-31 20:22:10.208 | SUCCESS  | src.BusinessCentralLayer.middleware.interface_io:startup:218 - <SystemProcess> Startup -- deploymentFlaskAPI
 * Serving Flask app 'src.BusinessViewLayer.myapp.app' (lazy loading)
 * Environment: production
2021-08-31 20:22:10.213 | INFO     | src.BusinessCentralLayer.middleware.interface_io:run_deploy:130 - [Job] collector -- interval: 300s -- run: True
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
2021-08-31 20:22:10.216 | INFO     | src.BusinessCentralLayer.middleware.interface_io:run_deploy:130 - [Job] ddt_overdue -- interval: 3600s -- run: True
2021-08-31 20:22:10.217 | INFO     | src.BusinessCentralLayer.middleware.interface_io:run_deploy:130 - [Job] ddt_decouple -- interval: 60s -- run: True
2021-08-31 20:22:10.220 | SUCCESS  | src.BusinessLogicLayer.deploy:deploy_jobs:154 - <CollectorScheduler> The echo-monitor was created successfully.
 * Running on http://127.0.0.1:6500/ (Press CTRL+C to quit)
127.0.0.1 - - [31/Aug/2021 20:22:38] "GET / HTTP/1.1" 302 -
127.0.0.1 - - [31/Aug/2021 20:22:46] "GET / HTTP/1.1" 302 -
127.0.0.1 - - [31/Aug/2021 20:22:56] "GET / HTTP/1.1" 302 -
2021-08-31 20:23:10.249 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:24:10.250 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:25:10.238 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:26:10.239 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
127.0.0.1 - - [31/Aug/2021 20:26:37] "GET / HTTP/1.1" 302 -
2021-08-31 20:27:10.220 | DEBUG    | src.BusinessLogicLayer.deploy:monitor:188 - <CollectorScheduler> queue_size[0] running_jobs[0] is_running[None]
2021-08-31 20:27:10.521 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:27:12.272 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionPPForV2rayCloud> --> beat_sync[True] feature[General]
2021-08-31 20:27:12.287 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionPPForSSRCloud> --> beat_sync[True] feature[General]
2021-08-31 20:27:12.332 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionJydCloud> --> beat_sync[True] feature[General]
2021-08-31 20:27:12.473 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionReCloud> --> beat_sync[True] feature[General]
2021-08-31 20:27:12.590 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionJssForV2rayCloud> --> beat_sync[True] feature[General]
2021-08-31 20:27:33.045 | SUCCESS  | src.BusinessLogicLayer.cluster.master:load_any_subscribe:335 - >> GET <ActionReCloud> --> [v2ray] https://www.recear.xyz/link/oPSgvrBUrOJJaTJX?sub=3
2021-08-31 20:27:33.120 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionReCloud> --> [session_id] 88a45faf095ee433232082bb736b5515
2021-08-31 20:27:43.588 | ERROR    | src.BusinessLogicLayer.cluster.master:run:461 - >>> TimeoutException <ActionPPForV2rayCloud> -- https://www.ppyun.fun/auth/register
2021-08-31 20:27:43.608 | ERROR    | src.BusinessLogicLayer.cluster.master:run:461 - >>> TimeoutException <ActionPPForSSRCloud> -- https://www.ppyun.fun/auth/register
2021-08-31 20:27:43.655 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionPPForV2rayCloud> --> [session_id] 67930a4a2d95b59051aeb8b6721d2bdd
2021-08-31 20:27:43.679 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionPPForSSRCloud> --> [session_id] 46dba0b0753d735adaef5189398e5cec
2021-08-31 20:27:50.329 | SUCCESS  | src.BusinessLogicLayer.cluster.master:load_any_subscribe:335 - >> GET <ActionJydCloud> --> [v2ray] https://www.douluoyun.xyz/link/rdAaR70ebz0uAq7h?sub=3
2021-08-31 20:27:50.404 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionJydCloud> --> [session_id] c8f5330f4747f9287add60485ad83045
2021-08-31 20:28:12.464 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:29:11.542 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:29:45.536 | ERROR    | src.BusinessLogicLayer.cluster.master:run:461 - >>> TimeoutException <ActionJssForV2rayCloud> -- https://www.jssr.cc/auth/register
2021-08-31 20:29:45.600 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionJssForV2rayCloud> --> [session_id] d8b1ceaff0aab4ba0ecc471b9b2546ed
2021-08-31 20:30:11.624 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:31:11.537 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:32:10.223 | DEBUG    | src.BusinessLogicLayer.deploy:monitor:188 - <CollectorScheduler> queue_size[0] running_jobs[0] is_running[False]
2021-08-31 20:32:11.178 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionJydCloud> --> beat_sync[True] feature[General]
2021-08-31 20:32:11.222 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionJssForV2rayCloud> --> beat_sync[True] feature[General]
2021-08-31 20:32:11.262 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionReCloud> --> beat_sync[True] feature[General]
2021-08-31 20:32:11.284 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionPPForV2rayCloud> --> beat_sync[True] feature[General]
2021-08-31 20:32:11.747 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:32:11.797 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionPPForSSRCloud> --> beat_sync[True] feature[General]
2021-08-31 20:32:30.447 | SUCCESS  | src.BusinessLogicLayer.cluster.master:load_any_subscribe:335 - >> GET <ActionJydCloud> --> [v2ray] https://www.douluoyun.xyz/link/FzPsSVIu0SxSfORO?sub=3
2021-08-31 20:32:30.516 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionJydCloud> --> [session_id] 863b650a4719994be033045dd2a0b91b
2021-08-31 20:32:31.298 | SUCCESS  | src.BusinessLogicLayer.cluster.master:load_any_subscribe:335 - >> GET <ActionReCloud> --> [v2ray] https://www.recear.xyz/link/hzfkbJnLJLC39NZM?sub=3
2021-08-31 20:32:31.373 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionReCloud> --> [session_id] f901dfd52f31173d344c6272f97c6ed9
2021-08-31 20:32:42.270 | ERROR    | src.BusinessLogicLayer.cluster.master:run:461 - >>> TimeoutException <ActionPPForV2rayCloud> -- https://www.ppyun.fun/auth/register
2021-08-31 20:32:42.334 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionPPForV2rayCloud> --> [session_id] e0d028552f6bd2f45dfdfeffce461249
2021-08-31 20:32:42.755 | ERROR    | src.BusinessLogicLayer.cluster.master:run:461 - >>> TimeoutException <ActionPPForSSRCloud> -- https://www.ppyun.fun/auth/register
2021-08-31 20:32:42.820 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionPPForSSRCloud> --> [session_id] e46f15bd997116c447a42b01fda44a9f
2021-08-31 20:33:11.543 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:34:11.551 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:34:42.611 | ERROR    | src.BusinessLogicLayer.cluster.master:run:461 - >>> TimeoutException <ActionJssForV2rayCloud> -- https://www.jssr.cc/auth/register
2021-08-31 20:34:42.675 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionJssForV2rayCloud> --> [session_id] 5c5260156c8ca9a25031a0d616fbde3e
2021-08-31 20:35:11.540 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:36:11.578 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:37:10.223 | DEBUG    | src.BusinessLogicLayer.deploy:monitor:188 - <CollectorScheduler> queue_size[0] running_jobs[0] is_running[False]
2021-08-31 20:37:11.152 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionJydCloud> --> beat_sync[True] feature[General]
2021-08-31 20:37:11.199 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionPPForV2rayCloud> --> beat_sync[True] feature[General]
2021-08-31 20:37:11.337 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionReCloud> --> beat_sync[True] feature[General]
2021-08-31 20:37:11.353 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionJssForV2rayCloud> --> beat_sync[True] feature[General]
2021-08-31 20:37:11.518 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:37:11.883 | DEBUG    | src.BusinessLogicLayer.cluster.master:run:446 - >> RUN <ActionPPForSSRCloud> --> beat_sync[True] feature[General]
2021-08-31 20:37:30.153 | SUCCESS  | src.BusinessLogicLayer.cluster.master:load_any_subscribe:335 - >> GET <ActionReCloud> --> [v2ray] https://www.recear.xyz/link/OphTJSvI6jhNuPeS?sub=3
2021-08-31 20:37:30.230 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionReCloud> --> [session_id] 25e01249b65de9acd5a39f5664d5e568
2021-08-31 20:37:32.196 | ERROR    | src.BusinessLogicLayer.cluster.master:run:461 - >>> TimeoutException <ActionPPForV2rayCloud> -- https://www.ppyun.fun/auth/register
2021-08-31 20:37:32.261 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionPPForV2rayCloud> --> [session_id] a659dbc4ab94999c80308c88b4054dff
2021-08-31 20:37:42.932 | ERROR    | src.BusinessLogicLayer.cluster.master:run:461 - >>> TimeoutException <ActionPPForSSRCloud> -- https://www.ppyun.fun/auth/register
2021-08-31 20:37:42.998 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionPPForSSRCloud> --> [session_id] 7fd38842ca13745f482b63feafaa2715
2021-08-31 20:37:45.362 | SUCCESS  | src.BusinessLogicLayer.cluster.master:load_any_subscribe:335 - >> GET <ActionJydCloud> --> [v2ray] https://www.douluoyun.xyz/link/GSnMgJ0RBbeuiIZv?sub=3
2021-08-31 20:37:45.437 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionJydCloud> --> [session_id] 749201796521720e36ed5dfabb843cad
2021-08-31 20:38:11.641 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:39:11.575 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:39:53.287 | ERROR    | src.BusinessLogicLayer.cluster.master:run:461 - >>> TimeoutException <ActionJssForV2rayCloud> -- https://www.jssr.cc/auth/register
2021-08-31 20:39:53.360 | DEBUG    | src.BusinessLogicLayer.deploy:devil_king_armed:311 - >> Detach <ActionJssForV2rayCloud> --> [session_id] 6172d8deb6a726ebf6cb127d76406cb0
2021-08-31 20:40:11.539 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.
2021-08-31 20:41:13.090 | SUCCESS  | src.BusinessLogicLayer.plugins.accelerator.cleaner:killer:86 - <SubscribesCleaner> --> decouple compete.

@wanghaisheng 能出日志说明chromedriver配置是对的,系统读不到项目路径文件会根据环境变量找。

run 启动采集器
get 获取采集器输出(默认送到redis)
detach 分离采集器 (暂停实例,释放内存)

timeout error是因为部分采集器需要流量过墙,直接使用大陆ip访问会被拒绝(详见GeoIP)。挂个系统代理跑就没问题了。或者项目部署在国外实体上也行。

如果只用basic功能,的确只会是自动注册,目前的监控范围大概是暴露在公网上的所有SSPanel-uim站点,大概有300家mining

我昨晚突发奇想
@QIN2DIM
github不是有个action可以跑脚本吗 client的话 非window平台 是不是直接可以用这个action
1.fork本仓库
2.新建或者复制workflow的yml
3.手动或自动运行yml
当然频次你要控制 就跟windows一样 10s一次?最多
4.运行结果保存在repo目录下 txt/csv文件?
整个流程下来 就完全脱离了平台限制 还能充分利用github

我昨晚突发奇想
@QIN2DIM
github不是有个action可以跑脚本吗 client的话 非window平台 是不是直接可以用这个action
1.fork本仓库
2.新建或者复制workflow的yml
3.手动或自动运行yml
当然频次你要控制 就跟windows一样 10s一次?最多
4.运行结果保存在repo目录下 txt/csv文件?
整个流程下来 就完全脱离了平台限制 还能充分利用github

感谢建议昂,利用GithubActions优异的性能确实能解决一些繁琐的操作降低开发成本。

早在去年项目需求分析以及技术选型阶段- -本人认为本项目开源版本应是一个脚本项目而非工程项目,或者说应是一个低门槛的最小优化部署模型- -看.py去掉注释也才五六千行代码,代码覆盖率才~35%就知道问题的严重性了。

同时也有很多更加适合国内网络环境的比GithubActions更加便捷地CI/CD解决方案,但考虑种种原因最终都没挂载。

白嫖说难听点就是偷,如果还把“薅羊毛”做成全球流通人手一个还能一键上云的垂搜引擎那还得了,完整服务几乎每台虚拟机每秒钟都有几百个协程在运行,估计用不了多久就没有免费的节点可用了Orz。

@QIN2DIM 的确是
那我不是要自己去selenium注册帐号了 哭

@wanghaisheng
emmm,其实完全可以自己拉一个私有仓库部署Actions,但是配置文件的索引逻辑需要更改,弄成环境变量读取的方式,并把隐私信息存储到 SECRET KEY 环境变量中。

此外,不建议直接把采集结果写到repo仓库中...也许有更好的通信方式,比如钉钉机器人消息转发,或者邮件通信。