mirror of
https://github.com/oneclickvirt/ecs.git
synced 2025-10-04 15:02:49 +08:00
Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
194dee49fd | ||
![]() |
1e88513b8e | ||
![]() |
f84023d18b | ||
![]() |
2cfd5af3c0 | ||
![]() |
ed66e2804a | ||
![]() |
174bf303af | ||
![]() |
b75f42ffe5 | ||
![]() |
56b71ac53f | ||
![]() |
1045d3fab8 | ||
![]() |
7bd2b59d58 |
@@ -47,15 +47,14 @@ Shell 版本:[https://github.com/spiritLHLS/ecs](https://github.com/spiritLHLS
|
||||
|----------------|---------------------------|
|
||||
| Android(arm64) | 存在权限问题未修复,非安卓系统的ARM架构无问题 |
|
||||
| OpenBSD/NetBSD | 部分Goalng的官方库未支持本系统(尤其是net相关项目) |
|
||||
| Windows虚拟机 | 无Admin权限的mbw测试性能不准确(内存测试) |
|
||||
| Windows物理机(非Admin下) | 无Admin权限的mbw测试性能不准确(内存测试) |
|
||||
|
||||
---
|
||||
|
||||
## **功能**
|
||||
|
||||
- 系统基础信息查询,IP基础信息并发查询:[basics](https://github.com/oneclickvirt/basics)、[gostun](https://github.com/oneclickvirt/gostun)
|
||||
- CPU 测试:[cputest](https://github.com/oneclickvirt/cputest),支持 sysbench(lua/golang版本)、geekbench、winsat
|
||||
- 内存测试:[memorytest](https://github.com/oneclickvirt/memorytest),支持 sysbench、dd
|
||||
- 内存测试:[memorytest](https://github.com/oneclickvirt/memorytest),支持 sysbench、dd、winsat、mbw、stream
|
||||
- 硬盘测试:[disktest](https://github.com/oneclickvirt/disktest),支持 dd、fio、winsat
|
||||
- 流媒体解锁信息并发查询:[netflix-verify](https://github.com/sjlleo/netflix-verify) 等逻辑,开发至 [CommonMediaTests](https://github.com/oneclickvirt/CommonMediaTests)
|
||||
- 常见流媒体测试并发查询:[UnlockTests](https://github.com/oneclickvirt/UnlockTests),逻辑借鉴 [RegionRestrictionCheck](https://github.com/lmc999/RegionRestrictionCheck) 等
|
||||
@@ -65,7 +64,7 @@ Shell 版本:[https://github.com/spiritLHLS/ecs](https://github.com/spiritLHLS
|
||||
- 三网路由测试:基于 [NTrace-core](https://github.com/nxtrace/NTrace-core),二次开发至 [nt3](https://github.com/oneclickvirt/nt3)
|
||||
- 网速测试:基于 [speedtest.net](https://github.com/spiritLHLS/speedtest.net-CN-ID) 和 [speedtest.cn](https://github.com/spiritLHLS/speedtest.cn-CN-ID) 数据,开发至 [oneclickvirt/speedtest](https://github.com/oneclickvirt/speedtest)
|
||||
- 三网 Ping 值测试:借鉴 [ecsspeed](https://github.com/spiritLHLS/ecsspeed),二次开发至 [pingtest](https://github.com/oneclickvirt/pingtest)
|
||||
- 支持root或admin环境下测试,支持非root或非admin环境下测试,支持离线环境下进行测试,**暂未**支持无DNS环境下进行测试
|
||||
- 支持root或admin环境下测试,支持非root或非admin环境下测试,支持离线环境下进行测试,**暂未**支持无DNS的在线环境下进行测试
|
||||
|
||||
**本项目初次使用建议查看说明:[跳转](https://github.com/oneclickvirt/ecs/blob/master/README_NEW_USER.md)**
|
||||
|
||||
@@ -243,6 +242,8 @@ Usage: goecs [options]
|
||||
1. 下载带 exe 文件的压缩包:[Releases](https://github.com/oneclickvirt/ecs/releases)
|
||||
2. 解压后,右键以管理员模式运行。
|
||||
|
||||
PS:如果是虚拟机环境,不以管理员模式运行也行,因为虚拟机无原生的测试工具,将自动启用替代方法测试。
|
||||
|
||||
---
|
||||
|
||||
### **Docker**
|
||||
|
@@ -47,8 +47,6 @@ Shell version: [https://github.com/spiritLHLS/ecs/blob/main/README_EN.md](https:
|
||||
|--------|-------------------------------------------------------------------------------------------------|
|
||||
| Android(arm64) | Permission issues that are not fixed, no problems with ARM architecture for non-Android systems |
|
||||
| OpenBSD/NetBSD | Some of Goalng's official libraries do not support this system (especially net-related items) |
|
||||
| Windows(Virtual Machines) | Inaccurate mbw test performance without Admin rights (memory tests) |
|
||||
| Windows(Physical Machines)(not under Admin) | Inaccurate mbw test performance without Admin rights (memory tests) |
|
||||
|
||||
---
|
||||
|
||||
@@ -56,7 +54,7 @@ Shell version: [https://github.com/spiritLHLS/ecs/blob/main/README_EN.md](https:
|
||||
|
||||
- System basic information query and concurrent IP basic information query: Self-developed [basics](https://github.com/oneclickvirt/basics), [gostun](https://github.com/oneclickvirt/gostun)
|
||||
- CPU test: Self-developed [cputest](https://github.com/oneclickvirt/cputest) supporting sysbench(lua/golang version), geekbench, winsat
|
||||
- Memory test: Self-developed [memorytest](https://github.com/oneclickvirt/memorytest) supporting sysbench, dd
|
||||
- Memory test: Self-developed [memorytest](https://github.com/oneclickvirt/memorytest) supporting sysbench, dd, winsat, mbw, stream
|
||||
- Disk test: Self-developed [disktest](https://github.com/oneclickvirt/disktest) supporting dd, fio, winsat
|
||||
- Streaming media unlock information concurrent query: Modified from [netflix-verify](https://github.com/sjlleo/netflix-verify) and more to [CommonMediaTests](https://github.com/oneclickvirt/CommonMediaTests)
|
||||
- Common streaming media tests concurrent query: Self-developed to [UnlockTests](https://github.com/oneclickvirt/UnlockTests), logic modified from [RegionRestrictionCheck](https://github.com/lmc999/RegionRestrictionCheck) and others
|
||||
@@ -66,7 +64,7 @@ Shell version: [https://github.com/spiritLHLS/ecs/blob/main/README_EN.md](https:
|
||||
- Three-network route test: Modified from [NTrace-core](https://github.com/nxtrace/NTrace-core) to [nt3](https://github.com/oneclickvirt/nt3)
|
||||
- Speed test: Based on data from [speedtest.net](https://github.com/spiritLHLS/speedtest.net-CN-ID) and [speedtest.cn](https://github.com/spiritLHLS/speedtest.cn-CN-ID), developed to [oneclickvirt/speedtest](https://github.com/oneclickvirt/speedtest)
|
||||
- Three-network Ping test: Modified from [ecsspeed](https://github.com/spiritLHLS/ecsspeed) to [pingtest](https://github.com/oneclickvirt/pingtest)
|
||||
- Support root or admin environment testing, support non-root or non-admin environment testing, support offline environment for testing, not support no DNS environment for testing
|
||||
- Support root or admin environment testing, support non-root or non-admin environment testing, support offline environment for testing, **not yet** support no DNS online environment for testing
|
||||
|
||||
**For first-time users of this project, it is recommended to check the instructions: [Jump to](https://github.com/oneclickvirt/ecs/blob/master/README_NEW_USER.md)**
|
||||
|
||||
@@ -243,6 +241,8 @@ Usage: goecs [options]
|
||||
1. Download the compressed file with the .exe file: [Releases](https://github.com/oneclickvirt/ecs/releases)
|
||||
2. After unzipping, right-click and run as administrator.
|
||||
|
||||
PS: If it's a VM environment, it's OK not to run it in administrator mode, because VMs have no native testing tools and will automatically enable alternative methods for testing.
|
||||
|
||||
---
|
||||
|
||||
### **Docker**
|
||||
|
@@ -136,7 +136,8 @@ AMD的7950x单核满血性能得分在6500左右,AMD的5950x单核满血性能
|
||||
|
||||
依赖项目:[https://github.com/oneclickvirt/memorytest](https://github.com/oneclickvirt/memorytest)
|
||||
|
||||
一般来说,只需要判断 IO 速度是否低于 `10240 MB/s (≈10 GB/s)`,
|
||||
一般来说,只需要判断 IO 速度是否低于 `10240 MB/s (≈10 GB/s)`
|
||||
|
||||
如果低于这个值,那么证明内存性能不佳,极大概率存在超售超卖问题。
|
||||
|
||||
至于超开的原因可能是:
|
||||
@@ -160,6 +161,16 @@ AMD的7950x单核满血性能得分在6500左右,AMD的5950x单核满血性能
|
||||
* **20 \~ 40 GB/s (20480 \~ 40960 MB/s)** → 大概率 DDR4
|
||||
* **≈ 50 GB/s (≈ 51200 MB/s)** → 基本就是 DDR5
|
||||
|
||||
对于各种测试参数对应方法的比较:
|
||||
|
||||
| 参数方法 | 测试准确性 | 速度 | 适应架构 | 依赖情况 |
|
||||
|----------|------------|----------|----------|----------|
|
||||
| stream | 高, 结果稳定,更符合实际情况 | 快速 | 跨平台(Linux/Windows/Unix) | 自带依赖无需额外安装 |
|
||||
| sysbench | 高, 结果较可靠 | 中等 | 跨平台(Linux、Windows 部分支持) | 需环境额外安装 |
|
||||
| winsat | 中等偏高, Windows 内置工具 | 中等 | 仅限 Windows | 物理机器上自带,虚拟机不可用 |
|
||||
| mbw | 中等, 结果可能受缓存/调度影响 | 快速 | 跨平台(几乎所有类 Unix 系统) | 自带依赖无需额外安装 |
|
||||
| dd | 低, 结果受缓存影响 | 快速 | 跨平台(几乎所有类 Unix 系统) | 自带依赖无需额外安装 |
|
||||
|
||||
### **硬盘测试**
|
||||
|
||||
依赖项目:[https://github.com/oneclickvirt/disktest](https://github.com/oneclickvirt/disktest)
|
||||
@@ -214,27 +225,94 @@ AMD的7950x单核满血性能得分在6500左右,AMD的5950x单核满血性能
|
||||
|
||||
| DNS 类型 | 解锁方式判断是否必要 | DNS 对解锁影响 | 说明 |
|
||||
| ------------ | ---------- | --------- | --------------------------------------- |
|
||||
| 官方主流 DNS | 否 | 小 | 流媒体解锁主要依赖节点 IP,DNS 解析基本不会干扰解锁。 |
|
||||
| 非主流 / 自建 DNS | 是 | 大 | 流媒体解锁结果受 DNS 解析影响较大,需要判断是原生解锁还是 DNS 解锁。 |
|
||||
| 官方主流 DNS | 否 | 小 | 流媒体解锁主要依赖测试节点的 IP,DNS 解析基本不会干扰解锁。 |
|
||||
| 非主流 / 自建 DNS | 是 | 大 | 流媒体解锁结果受 DNS 解析影响较大,需要判断是原生解锁还是 DNS 解锁。|
|
||||
|
||||
所以测试过程中,如果宿主机当前使用的是官方主流的DNS,不会进行是否为原生解锁的判断。
|
||||
所以测试过程中,如果宿主机当前使用的是官方主流的DNS,不会进行是否为原生解锁的判断,解锁类型大部分受后面查询的IP质量的使用类型和公司类型的影响。
|
||||
|
||||
### **IP质量检测**
|
||||
|
||||
依赖项目:[https://github.com/oneclickvirt/securityCheck](https://github.com/oneclickvirt/securityCheck)
|
||||
|
||||
检测14个数据库的IP相关信息,一般来说看使用类型和公司类型还有安全信息的其他判别足矣,安全得分真的图一乐。多个平台比较对应检测项目都为对应值,证明当前IP确实如此,不要仅相信一个数据库源的信息。
|
||||
检测14个数据库的IP相关信息,多个平台比较对应检测项目都为对应值,证明当前IP确实如此,不要仅相信一个数据库源的信息。
|
||||
|
||||
* **使用类型 & 公司类型**:显示IP归属和使用场景,例如是否属于家庭用户、企业办公、托管服务或云/数据中心。
|
||||
* **云提供商 / 数据中心 / 移动设备**:判断IP是否来自云服务、数据中心或移动网络,帮助识别共享或高风险IP。
|
||||
* **代理 / VPN / Tor / Tor出口**:检测IP是否用于隐藏真实身份或位置,可能涉及匿名访问或滥用行为。
|
||||
* **网络爬虫 / 机器人**:识别自动化访问或采集程序,对安全风险评估有参考价值。
|
||||
* **匿名 / 滥用者 / 威胁 / 中继 / Bogon**:显示IP历史行为特征和是否属于保留/未分配IP,辅助判断IP可信度。
|
||||
* **安全得分、声誉、信任得分、威胁得分、欺诈得分、滥用得分**:各数据库对IP的量化安全评价,仅供参考。
|
||||
* **社区投票 & 黑名单记录**:展示用户反馈及公共黑名单信息,可快速识别潜在风险。
|
||||
* **Google搜索可行性**:检测IP访问Google搜索服务的可行性,间接反映网络限制或屏蔽情况。
|
||||
以下为每个字段的对应的含义
|
||||
|
||||
多平台对比更可靠,不同数据库算法和更新频率不同,单一来源可能存在误判。多个数据库显示相似结果,说明这个结果更可靠。
|
||||
| 字段类别 | 字段名称 | 字段说明 | 可能的值 | 评分规则 |
|
||||
|---------|---------|---------|---------|---------|
|
||||
| 安全得分 | 声誉(Reputation) | IP地址在安全社区中的信誉评分 | 0-100的数值 | 越高越好 |
|
||||
| | 信任得分(Trust Score) | IP地址的可信任程度评分 | 0-100的数值 | 越高越好 |
|
||||
| | VPN得分(VPN Score) | IP被识别为VPN的可能性评分 | 0-100的数值 | 越低越好 |
|
||||
| | 代理得分(Proxy Score) | IP被识别为代理的可能性评分 | 0-100的数值 | 越低越好 |
|
||||
| | 社区投票-无害 | 社区成员投票认为该IP无害的分数 | 非负整数 | 越高越好 |
|
||||
| | 社区投票-恶意 | 社区成员投票认为该IP恶意的分数 | 非负整数 | 越低越好 |
|
||||
| | 威胁得分(Threat Score) | IP地址的整体威胁程度评分 | 0-100的数值 | 越低越好 |
|
||||
| | 欺诈得分(Fraud Score) | IP地址涉及欺诈活动的可能性评分 | 0-100的数值 | 越低越好 |
|
||||
| | 滥用得分(Abuse Score) | IP地址被报告滥用行为的评分 | 0-100的数值 | 越低越好 |
|
||||
| | ASN滥用得分 | 该IP所属ASN(自治系统)的滥用评分 | 0-1的小数,可能带有风险等级标注(Low/Medium/High) | 越低越好 |
|
||||
| | 公司滥用得分 | 该IP所属公司的滥用评分 | 0-1的小数,可能带有风险等级标注(Low/Medium/High) | 越低越好 |
|
||||
| | 威胁级别(Threat Level) | IP地址的威胁等级分类 | low/medium/high/critical等文本描述 | low为最佳 |
|
||||
| 黑名单记录 | 无害记录数(Harmless) | 在各黑名单数据库中被标记为无害的次数 | 非负整数 | 数值本身无好坏 |
|
||||
| | 恶意记录数(Malicious) | 在各黑名单数据库中被标记为恶意的次数 | 非负整数 | 越低越好 |
|
||||
| | 可疑记录数(Suspicious) | 在各黑名单数据库中被标记为可疑的次数 | 非负整数 | 越低越好 |
|
||||
| | 无记录数(Undetected) | 在各黑名单数据库中无任何记录的次数 | 非负整数 | 数值本身无好坏 |
|
||||
| | DNS黑名单-总检查数 | 检查的DNS黑名单数据库总数量 | 正整数 | 数值本身无好坏 |
|
||||
| | DNS黑名单-干净 | 在DNS黑名单中显示为干净(未列入)的数量 | 非负整数 | 越高越好 |
|
||||
| | DNS黑名单-已列入 | 在DNS黑名单中已被列入的数量 | 非负整数 | 越低越好 |
|
||||
| | DNS黑名单-其他 | 在DNS黑名单检查中返回其他状态的数量 | 非负整数 | 数值本身无好坏 |
|
||||
|
||||
一般来说看下面的使用类型公司类型还有安全信息的判别足矣,上面的安全得分只有多个数据库确认一致才可信,不看也没啥问题。
|
||||
|
||||
| 字段类别 | 字段名称 | 字段说明 | 可能的值 | 评分规则 |
|
||||
|---------|---------|---------|---------|---------|
|
||||
| 使用类型 | 使用类型(Usage Type) | IP地址的主要使用用途分类 | hosting/residential/business/cellular/education/government/military/DataCenter/WebHosting/Transit/CDN等 | 无好坏之分,仅分类 |
|
||||
| 公司类型 | 公司类型(Company Type) | IP所属公司的业务类型 | business/hosting/FixedLineISP/education/government等 | 无好坏之分,仅分类 |
|
||||
| 云提供商 | 是否云提供商(Cloud Provider) | 该IP是否属于云服务提供商 | Yes/No | 无好坏之分,仅标识 |
|
||||
| 数据中心 | 是否数据中心(Data Center) | 该IP是否位于数据中心 | Yes/No | 如果关注解锁No为最佳 |
|
||||
| 移动设备 | 是否移动设备(Mobile) | 该IP是否来自移动设备网络 | Yes/No | 如果关注解锁Yes为最佳 |
|
||||
| 代理 | 是否代理(Proxy) | 该IP是否为代理服务器 | Yes/No | No为佳 |
|
||||
| VPN | 是否VPN | 该IP是否为VPN服务节点 | Yes/No | No为佳 |
|
||||
| Tor出口 | 是否TorExit(Tor Exit Node) | 该IP是否为Tor网络的出口节点 | Yes/No | No为佳 |
|
||||
| 网络爬虫 | 是否网络爬虫(Crawler) | 该IP是否被识别为网络爬虫 | Yes/No | No为佳 |
|
||||
| 匿名 | 是否匿名(Anonymous) | 该IP是否提供匿名服务(如VPN/Proxy/Tor) | Yes/No | No为佳 |
|
||||
| 攻击者 | 是否攻击者(Attacker) | 该IP是否被识别为攻击来源(如DDOS) | Yes/No | No为佳 |
|
||||
| 滥用者 | 是否滥用者(Abuser) | 该IP是否有主动滥用行为记录 | Yes/No | No为佳 |
|
||||
| 威胁 | 是否威胁(Threat) | 该IP是否被标记为威胁来源 | Yes/No | No为佳 |
|
||||
| 中继 | 是否中继(Relay) | 该IP是否为中继节点 | Yes/No | No为佳 |
|
||||
| Bogon | 是否Bogon(Bogon IP) | 该IP是否为伪造/未分配的IP地址 | Yes/No | No为佳 |
|
||||
| 机器人 | 是否机器人(Bot) | 该IP是否被识别为机器人流量 | Yes/No | No为佳 |
|
||||
| 搜索引擎 | Google搜索可行性 | 该IP能否正常使用Google搜索服务 | YES/NO | YES为正常 |
|
||||
|
||||
多平台对比更可靠,不同数据库算法和更新频率不同,单一来源可能存在误判,多个数据库显示相似结果,说明这个结果更可靠。
|
||||
|
||||
Abuser 或 Abuse 得分会直接影响机器的正常使用(中国境内运营商一般默认不处理,如果你的机器是中国IP无需理睬)。
|
||||
|
||||
如果 Abuse 记录存在且得分高,说明该 IP 过去可能存在以下行为:
|
||||
- 被用于 DDoS 攻击
|
||||
- 发起大规模洪流攻击
|
||||
- 进行端口扫描或全网扫描
|
||||
|
||||
这类历史记录会被举报并录入 Abuse 数据库。如果你接手的 IP 刚被他人滥用过,可能仍会有延迟的 Abuse 警告邮件发送至服务商。服务商可能会误判为你本人从事恶意行为,进而清退机器,且大多数情况下无法退款。对跨国流媒体服务而言,Abuse 得分还可能影响平台对该 IP 的信誉评分。本地流媒体受影响较小,但风险依然存在。
|
||||
|
||||
对于家宽流媒体解锁需求的用户,应关注「使用类型」与「公司类型」是否同时识别为 ISP。如果仅为单 ISP 或识别为非 ISP,则后续数据库更新后,IP 类型很可能被更正为 Hosting,从而影响解锁效果。大部分 IP 识别数据库按月更新。更新后,IP 属性可能被修改,出现由 ISP → Hosting 或少见的 Hosting → ISP 的情况。
|
||||
|
||||
对于 IP 类型分类有必要仔细说说
|
||||
|
||||
家宽 IP
|
||||
- 归属地与广播地一致,广播主体为当地电信运营商的 AS
|
||||
- 必须通过国际带宽线路广播,才能被识别为家宽属性
|
||||
|
||||
原生 IP
|
||||
- 归属地与持有人一致,但广播主体并非本地电信运营商
|
||||
- 常见于数据中心使用自有 AS 号进行广播,即便采购到家宽 IP,属性也会在一段时间后变更为原生
|
||||
|
||||
广播 IP
|
||||
- 由 A 地的 AS 将 IP 广播到 B 地使用
|
||||
- 广播传播需要时间,通常 1 周至 1 个月
|
||||
- 各大运营商的归属地数据库更新可能需 1 至数月
|
||||
- 若本地机房进行广播,家宽 IP 可能会被更正为原生或广播属性
|
||||
|
||||
说到这里,就必须说明凡是真家宽,那它访问目标站点的时候,肯定不会绕行回中国再到目标站点。真实的境外家庭宽带一定是就近出国、就近落地。
|
||||
|
||||
### **邮件端口检测**
|
||||
|
||||
@@ -264,12 +342,12 @@ AMD的7950x单核满血性能得分在6500左右,AMD的5950x单核满血性能
|
||||
|
||||
| 等级 | 描述 |
|
||||
|------|------|
|
||||
| **Tier 1 Global** | 全球顶级运营商(如 AT&T、Verizon、NTT、Telia 等),之间免费互联(Settlement-Free Peering),不依赖他人即可访问全球任意网络。 |
|
||||
| **Tier 1 Regional** | 区域性顶级运营商,在特定区域具有一级能力,但在全球范围互联性稍弱。 |
|
||||
| **Tier 1 Indirect** | 间接连接的 Tier 1(非直接购买),通过中间上游间接接入 Tier 1 网络。 |
|
||||
| **Tier 2** | 需要向 Tier 1 付费购买上网能力的二级运营商,通常是各国主流电信商或 ISP。 |
|
||||
| **CDN Provider** | 内容分发网络提供商,如 Cloudflare、Akamai、Fastly 等,主要用于内容加速而非传统上游。 |
|
||||
| **Direct/Indirect Others** | 其他类型的直接或间接连接,如 IX(Internet Exchange)成员、私有对等互联等。 |
|
||||
| **Tier 1 Global** | 全球顶级运营商(如 AT&T、Verizon、NTT、Telia 等),之间免费互联(Settlement-Free Peering),不依赖他人即可访问全球任意网络。|
|
||||
| **Tier 1 Regional** | 区域性顶级运营商,在特定区域具有一级能力,但在全球范围互联性稍弱。|
|
||||
| **Tier 1 Indirect** | 间接连接的 Tier 1(非直接购买),通过中间上游间接接入 Tier 1 网络。|
|
||||
| **Tier 2** | 需要向 Tier 1 付费购买上网能力的二级运营商,通常是各国主流电信商或 ISP。|
|
||||
| **CDN Provider** | 内容分发网络提供商,如 Cloudflare、Akamai、Fastly 等,主要用于内容加速而非传统上游。|
|
||||
| **Direct/Indirect Others** | 其他类型的直接或间接连接,如 IX(Internet Exchange)成员、私有对等互联等。|
|
||||
|
||||
上游质量判断:直接接入的高等级上游(特别是 Tier 1 Global)越多,通常网络连通性越好。但实际网络质量也受到以下因素影响:
|
||||
|
||||
@@ -412,6 +490,7 @@ Actually, CPU performance testing should be sufficient. Unless for scientific co
|
||||
Dependency project: [https://github.com/oneclickvirt/memorytest](https://github.com/oneclickvirt/memorytest)
|
||||
|
||||
Generally speaking, you only need to determine if IO speed is below `10240 MB/s (≈10 GB/s)`.
|
||||
|
||||
If below this value, it proves poor memory performance with high probability of overselling issues.
|
||||
|
||||
Possible reasons for overselling:
|
||||
@@ -435,6 +514,14 @@ Based on the above table, this project's rough judgment method:
|
||||
* **20 ~ 40 GB/s (20480 ~ 40960 MB/s)** → Most likely DDR4
|
||||
* **≈ 50 GB/s (≈ 51200 MB/s)** → Basically DDR5
|
||||
|
||||
| Parameter Method | Test Accuracy | Test Speed | Architecture Compatibility | Dependency Requirements |
|
||||
|----------|------------|----------|----------|----------|
|
||||
| stream | High — Stable results, more realistic | Fast | Cross-platform (Linux/Windows/Unix) | Built-in dependencies, no additional installation required |
|
||||
| sysbench | High — Reliable results | Medium | Cross-platform (Linux, partial Windows support) | Requires additional environment installation |
|
||||
| winsat | Medium-High — Windows built-in tool | Medium | Windows only | Built-in on physical machines, unavailable on virtual machines |
|
||||
| mbw | Medium — Results may be affected by cache/scheduling | Very Fast | Cross-platform (almost all Unix-like systems) | Built-in dependencies, no additional installation required |
|
||||
| dd | Low — Results affected by cache | Fast | Cross-platform (almost all Unix-like systems) | Built-in dependencies, no additional installation required |
|
||||
|
||||
### Disk Testing
|
||||
|
||||
Dependency project: [https://github.com/oneclickvirt/disktest](https://github.com/oneclickvirt/disktest)
|
||||
@@ -498,18 +585,65 @@ So during testing, if the host currently uses official mainstream DNS, no judgme
|
||||
|
||||
Dependency project: [https://github.com/oneclickvirt/securityCheck](https://github.com/oneclickvirt/securityCheck)
|
||||
|
||||
Detects IP-related information from 14 databases. Generally speaking, looking at usage type, company type, and security information's other discriminators is sufficient. Security scores are really just for fun. When multiple platforms show corresponding detection items all having corresponding values, it proves the current IP is indeed as such - don't trust information from just one database source.
|
||||
Detect IP-related information from 14 databases. Multiple platforms comparing corresponding detection items all show corresponding values, proving that the current IP is indeed as such. Do not only trust information from a single database source.
|
||||
|
||||
* **Usage Type & Company Type**: Shows IP attribution and usage scenarios, such as whether it belongs to home users, enterprise office, hosting services, or cloud/data centers.
|
||||
* **Cloud Provider / Data Center / Mobile Device**: Determines if IP comes from cloud services, data centers, or mobile networks, helping identify shared or high-risk IPs.
|
||||
* **Proxy / VPN / Tor / Tor Exit**: Detects if IP is used to hide real identity or location, possibly involving anonymous access or abuse behavior.
|
||||
* **Web Crawler / Bot**: Identifies automated access or collection programs, with reference value for security risk assessment.
|
||||
* **Anonymous / Abuser / Threat / Relay / Bogon**: Shows IP historical behavior characteristics and whether it belongs to reserved/unallocated IPs, assisting in judging IP credibility.
|
||||
* **Security Score, Reputation, Trust Score, Threat Score, Fraud Score, Abuse Score**: Various databases' quantified security evaluations of IPs, for reference only.
|
||||
* **Community Voting & Blacklist Records**: Shows user feedback and public blacklist information, can quickly identify potential risks.
|
||||
* **Google Search Feasibility**: Tests IP's feasibility for accessing Google search services, indirectly reflecting network restrictions or blocking situations.
|
||||
The following are the meanings corresponding to each field
|
||||
|
||||
Multi-platform comparison is more reliable. Different databases have different algorithms and update frequencies; single sources may misjudge. Similar results from multiple databases indicate higher reliability.
|
||||
| Field Category | Field Name | Field Description | Possible Values | Scoring Rules |
|
||||
|---------|---------|---------|---------|---------|
|
||||
| Security Score | Reputation | Reputation score of IP address in the security community | Numerical value from 0-100 | Higher is better |
|
||||
| | Trust Score | Trustworthiness score of IP address | Numerical value from 0-100 | Higher is better |
|
||||
| | VPN Score | Likelihood score of IP being identified as VPN | Numerical value from 0-100 | Lower is better |
|
||||
| | Proxy Score | Likelihood score of IP being identified as proxy | Numerical value from 0-100 | Lower is better |
|
||||
| | Community Votes-Harmless | Score of community members voting the IP as harmless | Non-negative integer | Higher is better |
|
||||
| | Community Votes-Malicious | Score of community members voting the IP as malicious | Non-negative integer | Lower is better |
|
||||
| | Threat Score | Overall threat level score of IP address | Numerical value from 0-100 | Lower is better |
|
||||
| | Fraud Score | Likelihood score of IP address being involved in fraudulent activities | Numerical value from 0-100 | Lower is better |
|
||||
| | Abuse Score | Score of IP address being reported for abusive behavior | Numerical value from 0-100 | Lower is better |
|
||||
| | ASN Abuse Score | Abuse score of the ASN (Autonomous System) to which this IP belongs | Decimal from 0-1, may include risk level notation (Low/Medium/High) | Lower is better |
|
||||
| | Company Abuse Score | Abuse score of the company to which this IP belongs | Decimal from 0-1, may include risk level notation (Low/Medium/High) | Lower is better |
|
||||
| | Threat Level | Threat level classification of IP address | Text descriptions such as low/medium/high/critical | low is best |
|
||||
| Blacklist Records | Harmless Count | Number of times marked as harmless in various blacklist databases | Non-negative integer | Value itself has no good or bad |
|
||||
| | Malicious Count | Number of times marked as malicious in various blacklist databases | Non-negative integer | Lower is better |
|
||||
| | Suspicious Count | Number of times marked as suspicious in various blacklist databases | Non-negative integer | Lower is better |
|
||||
| | Undetected Count | Number of times with no records in various blacklist databases | Non-negative integer | Value itself has no good or bad |
|
||||
| | DNS Blacklist-Total Checks | Total number of DNS blacklist databases checked | Positive integer | Value itself has no good or bad |
|
||||
| | DNS Blacklist-Clean | Number showing as clean (not listed) in DNS blacklists | Non-negative integer | Higher is better |
|
||||
| | DNS Blacklist-Listed | Number already listed in DNS blacklists | Non-negative integer | Lower is better |
|
||||
| | DNS Blacklist-Other | Number returning other statuses in DNS blacklist checks | Non-negative integer | Value itself has no good or bad |
|
||||
|
||||
Generally speaking, looking at the usage type, company type, and security information judgment below is sufficient. The security scores above are only credible when confirmed consistently by multiple databases; not looking at them is not a problem.
|
||||
|
||||
| Field Category | Field Name | Field Description | Possible Values | Scoring Rules |
|
||||
|---------|---------|---------|---------|---------|
|
||||
| Usage Type | Usage Type | Primary usage classification of IP address | hosting/residential/business/cellular/education/government/military/DataCenter/WebHosting/Transit/CDN, etc. | No good or bad, classification only |
|
||||
| Company Type | Company Type | Business type of the company to which the IP belongs | business/hosting/FixedLineISP/education/government, etc. | No good or bad, classification only |
|
||||
| Cloud Provider | Is Cloud Provider | Whether this IP belongs to a cloud service provider | Yes/No | No good or bad, identification only |
|
||||
| Data Center | Is Data Center | Whether this IP is located in a data center | Yes/No | If concerned about unblocking, No is best |
|
||||
| Mobile | Is Mobile | Whether this IP comes from a mobile device network | Yes/No | If concerned about unblocking, Yes is best |
|
||||
| Proxy | Is Proxy | Whether this IP is a proxy server | Yes/No | No is better |
|
||||
| VPN | Is VPN | Whether this IP is a VPN service node | Yes/No | No is better |
|
||||
| Tor Exit | Is TorExit (Tor Exit Node) | Whether this IP is an exit node of the Tor network | Yes/No | No is better |
|
||||
| Crawler | Is Crawler | Whether this IP is identified as a web crawler | Yes/No | No is better |
|
||||
| Anonymous | Is Anonymous | Whether this IP provides anonymity services (such as VPN/Proxy/Tor) | Yes/No | No is better |
|
||||
| Attacker | Is Attacker | Whether this IP is identified as an attack source (such as DDOS) | Yes/No | No is better |
|
||||
| Abuser | Is Abuser | Whether this IP has records of active abusive behavior | Yes/No | No is better |
|
||||
| Threat | Is Threat | Whether this IP is marked as a threat source | Yes/No | No is better |
|
||||
| Relay | Is Relay | Whether this IP is a relay node | Yes/No | No is better |
|
||||
| Bogon | Is Bogon (Bogon IP) | Whether this IP is a forged/unallocated IP address | Yes/No | No is better |
|
||||
| Bot | Is Bot | Whether this IP is identified as bot traffic | Yes/No | No is better |
|
||||
| Search Engine | Google Search Viability | Whether this IP can normally use Google search services | YES/NO | YES is normal |
|
||||
|
||||
Multi-platform comparison is more reliable. Different databases have different algorithms and update frequencies; a single source may have misjudgments. When multiple databases show similar results, it indicates that the result is more reliable.
|
||||
|
||||
Abuser or Abuse score will directly affect the normal use of the machine
|
||||
|
||||
If Abuse records exist and the score is high, it indicates that the IP may have had the following behaviors in the past:
|
||||
- Used for DDoS attacks
|
||||
- Initiated large-scale flood attacks
|
||||
- Conducted port scanning or network-wide scanning
|
||||
|
||||
Such historical records will be reported and recorded in the Abuse database. If the IP you take over has just been abused by others, there may still be delayed Abuse warning emails sent to the service provider. The service provider may misjudge that you yourself are engaging in malicious behavior, and then terminate the machine, and in most cases cannot refund. For cross-border streaming services, Abuse scores may also affect the platform's reputation scoring of that IP. Local streaming is less affected, but risks still exist.
|
||||
|
||||
### Email Port Detection
|
||||
|
||||
@@ -633,6 +767,7 @@ AMD 7950xシングルコアフル性能スコアは6500前後、AMD 5950xシン
|
||||
依存プロジェクト:[https://github.com/oneclickvirt/memorytest](https://github.com/oneclickvirt/memorytest)
|
||||
|
||||
一般的に、IO速度が`10240 MB/s (≈10 GB/s)`を下回るかどうかを判断するだけで十分です。
|
||||
|
||||
この値を下回る場合、メモリ性能が不良で、オーバーセリング問題が存在する可能性が極めて高いことを証明します。
|
||||
|
||||
オーバーセリングの原因は以下が考えられます:
|
||||
@@ -656,6 +791,14 @@ AMD 7950xシングルコアフル性能スコアは6500前後、AMD 5950xシン
|
||||
* **20 ~ 40 GB/s (20480 ~ 40960 MB/s)** → 高確率でDDR4
|
||||
* **≈ 50 GB/s (≈ 51200 MB/s)** → 基本的にDDR5
|
||||
|
||||
| パラメータ方法 | テスト精度 | テスト速度 | アーキテクチャ対応 | 依存関係 |
|
||||
|----------|------------|----------|----------|----------|
|
||||
| stream | 高 — 結果が安定し、実際の状況により適合 | 高速 | クロスプラットフォーム(Linux/Windows/Unix) | 内蔵依存関係、追加インストール不要 |
|
||||
| sysbench | 高 — 結果が信頼性高い | 中程度 | クロスプラットフォーム(Linux、Windows部分対応) | 環境への追加インストールが必要 |
|
||||
| winsat | 中程度やや高 — Windows内蔵ツール | 中程度 | Windows限定 | 物理マシンに内蔵、仮想マシンでは利用不可 |
|
||||
| mbw | 中程度 — 結果がキャッシュ/スケジューリングの影響を受ける可能性 | 非常に高速 | クロスプラットフォーム(ほぼ全てのUnix系システム) | 内蔵依存関係、追加インストール不要 |
|
||||
| dd | 低 — 結果がキャッシュの影響を受ける | 高速 | クロスプラットフォーム(ほぼ全てのUnix系システム) | 内蔵依存関係、追加インストール不要 |
|
||||
|
||||
### ディスクテスト
|
||||
|
||||
依存プロジェクト:[https://github.com/oneclickvirt/disktest](https://github.com/oneclickvirt/disktest)
|
||||
@@ -719,18 +862,67 @@ NVMe SSDの1M (IOPS)値 < 1GB/s の場合、深刻なリソースオーバーセ
|
||||
|
||||
依存プロジェクト:[https://github.com/oneclickvirt/securityCheck](https://github.com/oneclickvirt/securityCheck)
|
||||
|
||||
14のデータベースのIP関連情報を検出します。一般的に、使用タイプと会社タイプ、そしてセキュリティ情報のその他識別を見れば十分で、セキュリティスコアは本当にお遊びです。複数のプラットフォームで対応する検出項目がすべて対応する値になっている場合、現在のIPが確実にそうであることを証明します。一つのデータベースソースの情報のみを信じてはいけません。
|
||||
14個のデータベースのIP関連情報を検出し、複数のプラットフォームで対応する検出項目がすべて対応する値である場合、現在のIPが確かにそうであることを証明します。1つのデータベースソースの情報のみを信じないでください。
|
||||
|
||||
* **使用タイプ & 会社タイプ**: IP帰属と使用シナリオを表示し、例えば家庭ユーザー、企業オフィス、ホスティングサービス、またはクラウド/データセンターに属するかどうか。
|
||||
* **クラウドプロバイダー / データセンター / モバイルデバイス**: IPがクラウドサービス、データセンター、またはモバイルネットワークから来ているかを判断し、共有または高リスクIPの識別に役立つ。
|
||||
* **プロキシ / VPN / Tor / Tor出口**: IPが真の身元や位置を隠すために使用されているかを検出し、匿名アクセスや悪用行為に関与している可能性がある。
|
||||
* **ネットワーククローラー / ロボット**: 自動化されたアクセスまたは収集プログラムを識別し、セキュリティリスク評価に参考価値がある。
|
||||
* **匿名 / 悪用者 / 脅威 / 中継 / Bogon**: IP履歴行動特徴と予約/未割り当てIPに属するかどうかを表示し、IP信頼度判断を補助。
|
||||
* **セキュリティスコア、評判、信頼スコア、脅威スコア、詐欺スコア、悪用スコア**: 各データベースのIPに対する定量化されたセキュリティ評価、参考のみ。
|
||||
* **コミュニティ投票 & ブラックリスト記録**: ユーザーフィードバックと公共ブラックリスト情報を展示し、潜在的リスクを迅速に識別可能。
|
||||
* **Google検索実行可能性**: IPがGoogle検索サービスにアクセスする実行可能性を検出し、ネットワーク制限やブロック状況を間接的に反映。
|
||||
以下は各フィールドの対応する意味です
|
||||
|
||||
マルチプラットフォーム比較がより信頼性が高く、異なるデータベースのアルゴリズムと更新頻度が異なるため、単一ソースは誤判断の可能性があります。複数のデータベースが類似の結果を示す場合、その結果はより信頼性が高いことを説明します。
|
||||
| フィールドカテゴリ | フィールド名 | フィールド説明 | 可能な値 | スコアリングルール |
|
||||
|---------|---------|---------|---------|---------|
|
||||
| セキュリティスコア | レピュテーション(Reputation) | セキュリティコミュニティにおけるIPアドレスの評判スコア | 0-100の数値 | 高いほど良い |
|
||||
| | トラストスコア(Trust Score) | IPアドレスの信頼度スコア | 0-100の数値 | 高いほど良い |
|
||||
| | VPNスコア(VPN Score) | IPがVPNとして識別される可能性のスコア | 0-100の数値 | 低いほど良い |
|
||||
| | プロキシスコア(Proxy Score) | IPがプロキシとして識別される可能性のスコア | 0-100の数値 | 低いほど良い |
|
||||
| | コミュニティ投票-無害 | コミュニティメンバーがこのIPを無害と投票したスコア | 非負整数 | 高いほど良い |
|
||||
| | コミュニティ投票-悪意 | コミュニティメンバーがこのIPを悪意があると投票したスコア | 非負整数 | 低いほど良い |
|
||||
| | 脅威スコア(Threat Score) | IPアドレスの全体的な脅威レベルスコア | 0-100の数値 | 低いほど良い |
|
||||
| | 詐欺スコア(Fraud Score) | IPアドレスが詐欺行為に関与する可能性のスコア | 0-100の数値 | 低いほど良い |
|
||||
| | 不正使用スコア(Abuse Score) | IPアドレスの不正使用行為が報告されたスコア | 0-100の数値 | 低いほど良い |
|
||||
| | ASN不正使用スコア | このIPが属するASN(自律システム)の不正使用スコア | 0-1の小数、リスクレベル表記付き(Low/Medium/High)の場合あり | 低いほど良い |
|
||||
| | 企業不正使用スコア | このIPが属する企業の不正使用スコア | 0-1の小数、リスクレベル表記付き(Low/Medium/High)の場合あり | 低いほど良い |
|
||||
| | 脅威レベル(Threat Level) | IPアドレスの脅威レベル分類 | low/medium/high/criticalなどのテキスト記述 | lowが最良 |
|
||||
| ブラックリスト記録 | 無害記録数(Harmless) | 各ブラックリストデータベースで無害とマークされた回数 | 非負整数 | 数値自体に良し悪しなし |
|
||||
| | 悪意記録数(Malicious) | 各ブラックリストデータベースで悪意があるとマークされた回数 | 非負整数 | 低いほど良い |
|
||||
| | 疑わしい記録数(Suspicious) | 各ブラックリストデータベースで疑わしいとマークされた回数 | 非負整数 | 低いほど良い |
|
||||
| | 未検出数(Undetected) | 各ブラックリストデータベースで記録がない回数 | 非負整数 | 数値自体に良し悪しなし |
|
||||
| | DNSブラックリスト-総チェック数 | チェックしたDNSブラックリストデータベースの総数 | 正整数 | 数値自体に良し悪しなし |
|
||||
| | DNSブラックリスト-クリーン | DNSブラックリストでクリーン(未掲載)として表示された数 | 非負整数 | 高いほど良い |
|
||||
| | DNSブラックリスト-掲載済み | DNSブラックリストに既に掲載されている数 | 非負整数 | 低いほど良い |
|
||||
| | DNSブラックリスト-その他 | DNSブラックリストチェックで他のステータスを返した数 | 非負整数 | 数値自体に良し悪しなし |
|
||||
|
||||
一般的に、以下の使用タイプ、企業タイプ、およびセキュリティ情報の判別を見れば十分です。上記のセキュリティスコアは複数のデータベースが一致して確認された場合のみ信頼できます。見なくても特に問題ありません。
|
||||
|
||||
| フィールドカテゴリ | フィールド名 | フィールド説明 | 可能な値 | スコアリングルール |
|
||||
|---------|---------|---------|---------|---------|
|
||||
| 使用タイプ | 使用タイプ(Usage Type) | IPアドレスの主な使用用途分類 | hosting/residential/business/cellular/education/government/military/DataCenter/WebHosting/Transit/CDNなど | 良し悪しなし、分類のみ |
|
||||
| 企業タイプ | 企業タイプ(Company Type) | IPが属する企業のビジネスタイプ | business/hosting/FixedLineISP/education/governmentなど | 良し悪しなし、分類のみ |
|
||||
| クラウドプロバイダー | クラウドプロバイダーか(Cloud Provider) | このIPがクラウドサービスプロバイダーに属するか | Yes/No | 良し悪しなし、識別のみ |
|
||||
| データセンター | データセンターか(Data Center) | このIPがデータセンターに位置するか | Yes/No | アンブロックを重視する場合Noが最良 |
|
||||
| モバイルデバイス | モバイルデバイスか(Mobile) | このIPがモバイルデバイスネットワークからのものか | Yes/No | アンブロックを重視する場合Yesが最良 |
|
||||
| プロキシ | プロキシか(Proxy) | このIPがプロキシサーバーか | Yes/No | Noが良い |
|
||||
| VPN | VPNか | このIPがVPNサービスノードか | Yes/No | Noが良い |
|
||||
| Tor出口 | TorExit(Tor Exit Node)か | このIPがTorネットワークの出口ノードか | Yes/No | Noが良い |
|
||||
| ウェブクローラー | ウェブクローラーか(Crawler) | このIPがウェブクローラーとして識別されるか | Yes/No | Noが良い |
|
||||
| 匿名 | 匿名か(Anonymous) | このIPが匿名サービス(VPN/Proxy/Torなど)を提供するか | Yes/No | Noが良い |
|
||||
| 攻撃者 | 攻撃者か(Attacker) | このIPが攻撃元として識別されるか(DDoSなど) | Yes/No | Noが良い |
|
||||
| 不正使用者 | 不正使用者か(Abuser) | このIPに積極的な不正使用行為の記録があるか | Yes/No | Noが良い |
|
||||
| 脅威 | 脅威か(Threat) | このIPが脅威ソースとしてマークされているか | Yes/No | Noが良い |
|
||||
| リレー | リレーか(Relay) | このIPがリレーノードか | Yes/No | Noが良い |
|
||||
| Bogon | Bogon(Bogon IP)か | このIPが偽造/未割り当てのIPアドレスか | Yes/No | Noが良い |
|
||||
| ボット | ボットか(Bot) | このIPがボットトラフィックとして識別されるか | Yes/No | Noが良い |
|
||||
| 検索エンジン | Google検索実行可能性 | このIPでGoogle検索サービスを正常に使用できるか | YES/NO | YESが正常 |
|
||||
|
||||
複数プラットフォームの比較がより信頼できます。異なるデータベースはアルゴリズムと更新頻度が異なり、単一ソースでは誤判定の可能性があります。複数のデータベースで類似した結果が表示される場合、その結果はより信頼できます。
|
||||
|
||||
AbuserまたはAbuseスコアはマシンの正常な使用に直接影響します
|
||||
|
||||
Abuse記録が存在しスコアが高い場合、そのIPが過去に以下の行為を行った可能性があります:
|
||||
- DDoS攻撃に使用された
|
||||
- 大規模なフラッド攻撃を開始
|
||||
- ポートスキャンまたは全ネットワークスキャンを実行
|
||||
|
||||
このような履歴は報告されAbuseデータベースに記録されます。引き継いだIPが他人によって悪用されたばかりの場合、遅延したAbuse警告メールがサービスプロバイダーに送信される可能性があります。サービスプロバイダーはあなた自身が悪意のある行為を行っていると誤判断し、マシンを退出させる可能性があり、ほとんどの場合返金できません。国際的なストリーミングサービスにとって、AbuseスコアはプラットフォームがそのIPの信頼性スコアに影響を与える可能性があります。ローカルストリーミングメディアへの影響は小さいですが、リスクは依然として存在します。
|
||||
|
||||
家庭用ブロードバンドストリーミングアンブロックニーズのユーザーは、「使用タイプ」と「企業タイプ」が同時にISPとして識別されるかどうかに注意する必要があります。単一ISPまたは非ISPとして識別された場合、その後のデータベース更新後、IPタイプがHostingに修正される可能性が高く、アンブロック効果に影響します。ほとんどのIP識別データベースは月次で更新されます。更新後、IP属性が変更される可能性があり、ISP → Hostingまたはまれなケースとして Hosting → ISPの状況が発生します。
|
||||
|
||||
### メールポート検出
|
||||
|
||||
|
7
go.mod
7
go.mod
@@ -5,14 +5,14 @@ go 1.24.5
|
||||
require (
|
||||
github.com/imroc/req/v3 v3.54.0
|
||||
github.com/oneclickvirt/CommonMediaTests v0.0.4-20250329123841
|
||||
github.com/oneclickvirt/UnlockTests v0.0.28-20250727155204
|
||||
github.com/oneclickvirt/UnlockTests v0.0.28-20250924054500
|
||||
github.com/oneclickvirt/backtrace v0.0.7-20250811023541
|
||||
github.com/oneclickvirt/basics v0.0.15-20250812130523
|
||||
github.com/oneclickvirt/cputest v0.0.12-20250720122317
|
||||
github.com/oneclickvirt/defaultset v0.0.2-20240624082446
|
||||
github.com/oneclickvirt/disktest v0.0.10-20250808140407
|
||||
github.com/oneclickvirt/disktest v0.0.10-20250924030424
|
||||
github.com/oneclickvirt/gostun v0.0.5-20250727155022
|
||||
github.com/oneclickvirt/memorytest v0.0.9-20250808065154
|
||||
github.com/oneclickvirt/memorytest v0.0.10-20250924154648
|
||||
github.com/oneclickvirt/nt3 v0.0.8-20250811123903
|
||||
github.com/oneclickvirt/pingtest v0.0.8-20250728015259
|
||||
github.com/oneclickvirt/portchecker v0.0.3-20250728015900
|
||||
@@ -61,6 +61,7 @@ require (
|
||||
github.com/oneclickvirt/dd v0.0.2-20250808062818 // indirect
|
||||
github.com/oneclickvirt/fio v0.0.2-20250808045755 // indirect
|
||||
github.com/oneclickvirt/mbw v0.0.1-20250808061222 // indirect
|
||||
github.com/oneclickvirt/stream v0.0.2-20250924154001 // indirect
|
||||
github.com/oschwald/maxminddb-golang v1.13.1 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
|
||||
github.com/pion/dtls/v2 v2.2.7 // indirect
|
||||
|
14
go.sum
14
go.sum
@@ -96,8 +96,8 @@ github.com/nxtrace/NTrace-core v1.4.2 h1:dSRP18Bn3VGf5CZBzKt8gQWW9mDkq62Np9TCF9R
|
||||
github.com/nxtrace/NTrace-core v1.4.2/go.mod h1:wIDOlccuYzY3wBqU89pv2KGHT41i3JA0eRqJU/x9eX4=
|
||||
github.com/oneclickvirt/CommonMediaTests v0.0.4-20250329123841 h1:Zef93z9UiZQwRAKnnZYALmpBKvvuVaq34MEsuWwk6nc=
|
||||
github.com/oneclickvirt/CommonMediaTests v0.0.4-20250329123841/go.mod h1:DAmFPRjFV5p9fEzUUSml5jJGn2f1NZJQCzTxITHDjc4=
|
||||
github.com/oneclickvirt/UnlockTests v0.0.28-20250727155204 h1:apFaEbHGKflYMZzK17nXzEai4GG873mTd+d9hCO/KdY=
|
||||
github.com/oneclickvirt/UnlockTests v0.0.28-20250727155204/go.mod h1:oOa6wj/qECtRMxwBO6D7o0L0F0Q/5sQ747OCnFQqoGE=
|
||||
github.com/oneclickvirt/UnlockTests v0.0.28-20250924054500 h1:ERFoRBYhTPWJBYhEVFWr3hm6KtSTUHuWD21jK7DhKZw=
|
||||
github.com/oneclickvirt/UnlockTests v0.0.28-20250924054500/go.mod h1:oOa6wj/qECtRMxwBO6D7o0L0F0Q/5sQ747OCnFQqoGE=
|
||||
github.com/oneclickvirt/backtrace v0.0.7-20250811023541 h1:GzkzvUC6U9b6Dkz/Bl4JRPeQ7XBGoW7Qw1aWqzhF+MQ=
|
||||
github.com/oneclickvirt/backtrace v0.0.7-20250811023541/go.mod h1:/+KUtOWz48TyiTTbhVTsp3D6b5WY+4pCgvFBYtUGtns=
|
||||
github.com/oneclickvirt/basics v0.0.15-20250812130523 h1:nPNTVq8d9N1rdshkMAbnhZxTb7L2Yt7NlIg6rY10YRQ=
|
||||
@@ -108,16 +108,16 @@ github.com/oneclickvirt/dd v0.0.2-20250808062818 h1:0KHrKkdpL5oBE1OHsrRd2siRw4/2
|
||||
github.com/oneclickvirt/dd v0.0.2-20250808062818/go.mod h1:tImu9sPTkLWo2tf1dEN1xQzrylWKauj9hbU8PHfyAeU=
|
||||
github.com/oneclickvirt/defaultset v0.0.2-20240624082446 h1:5Pg3mK/u/vQvSz7anu0nxzrNdELi/AcDAU1mMsmPzyc=
|
||||
github.com/oneclickvirt/defaultset v0.0.2-20240624082446/go.mod h1:e9Jt4tf2sbemCtc84/XgKcHy9EZ2jkc5x2sW1NiJS+E=
|
||||
github.com/oneclickvirt/disktest v0.0.10-20250808140407 h1:oUfi5zF3htUTB1ZJuClmK0o74ufP7icbu8LYCnxEOxE=
|
||||
github.com/oneclickvirt/disktest v0.0.10-20250808140407/go.mod h1:Vp3iMVBD4ccReDJz5n5SlzUdq0kDuVhpRklQk21KT+8=
|
||||
github.com/oneclickvirt/disktest v0.0.10-20250924030424 h1:56Aq2xygO/vA/co5vJ7/MQTNijIDl8eYbVk8uCWN4mI=
|
||||
github.com/oneclickvirt/disktest v0.0.10-20250924030424/go.mod h1:Vp3iMVBD4ccReDJz5n5SlzUdq0kDuVhpRklQk21KT+8=
|
||||
github.com/oneclickvirt/fio v0.0.2-20250808045755 h1:eWihCRWcalJjPIdrF8dMe68ZiPnMkSfHC8ENvElp/xE=
|
||||
github.com/oneclickvirt/fio v0.0.2-20250808045755/go.mod h1:NIq+XYTey68KNERGIy/oRDlzpwLzBVoHOCiqX8didsE=
|
||||
github.com/oneclickvirt/gostun v0.0.5-20250727155022 h1:/e3gSUrOp1tg/1NTRx+P8B51OGcP26Q6//5EoSIjOvk=
|
||||
github.com/oneclickvirt/gostun v0.0.5-20250727155022/go.mod h1:pfp7MFZJK9n/KTLAVqqFcCAns4xqMykmjI+1UeF/vdE=
|
||||
github.com/oneclickvirt/mbw v0.0.1-20250808061222 h1:WGXOe6QvHiDRhPVMI0VcctjzW08kGvJf50yq5YeZCtw=
|
||||
github.com/oneclickvirt/mbw v0.0.1-20250808061222/go.mod h1:0Vq6NRpyLmGUdfHfL3uDcFsuZhi7KlG+OCs5ky2757Y=
|
||||
github.com/oneclickvirt/memorytest v0.0.9-20250808065154 h1:mjYOvpFz2mpDU9MNjj66oIDcc2r6+zoW8veP616/+4Q=
|
||||
github.com/oneclickvirt/memorytest v0.0.9-20250808065154/go.mod h1:DBxiVZX7mWCe0Fy+qu57ENheLo00sLfjKzvxiICrUtU=
|
||||
github.com/oneclickvirt/memorytest v0.0.10-20250924154648 h1:trk6oZ7xs1eVtr+6oIv5IX8LDVtEMG+E6GVzQ810BtU=
|
||||
github.com/oneclickvirt/memorytest v0.0.10-20250924154648/go.mod h1:4kiHsEWkW9r3/1ZcV5xIweU0smiKP0IRfQj74AUIiVI=
|
||||
github.com/oneclickvirt/nt3 v0.0.8-20250811123903 h1:ubSPLh/DSrXj+tOgmRABgi2vrVmbmjjSne+NrVFNmNc=
|
||||
github.com/oneclickvirt/nt3 v0.0.8-20250811123903/go.mod h1:F1v+6xInBKnbUa8gV1M40R1HOzxg+obtduNhx3CTnmA=
|
||||
github.com/oneclickvirt/pingtest v0.0.8-20250728015259 h1:egoxZRZBOWN3JqBwqEsULDyRo2/dpGMeWcmV3U87zig=
|
||||
@@ -128,6 +128,8 @@ github.com/oneclickvirt/security v0.0.6-20250823030124 h1:3RjpJNfKV7anN6GJs0ky2B
|
||||
github.com/oneclickvirt/security v0.0.6-20250823030124/go.mod h1:RSMooIlb4H/kLrGWNvUyOgdzQKgYKVv+LzWGlsPsLW4=
|
||||
github.com/oneclickvirt/speedtest v0.0.10-20250728015734 h1:HKO7/JQ74ueXA8Wo8NIvcK9DphbEG/YTfAAVz/akSiY=
|
||||
github.com/oneclickvirt/speedtest v0.0.10-20250728015734/go.mod h1:0W8vnMbA3iucXLXFdGfe9Ia6RPS0izRO7jvu/SnH1P8=
|
||||
github.com/oneclickvirt/stream v0.0.2-20250924154001 h1:GuJWdiPkoK84+y/+oHKr2Ghl3c/MzS9Z5m1nM+lMmy4=
|
||||
github.com/oneclickvirt/stream v0.0.2-20250924154001/go.mod h1:oWaizaHTC2VQciBC9RfaLbAOf8qeR6n20/gY7QxriDE=
|
||||
github.com/oschwald/maxminddb-golang v1.13.1 h1:G3wwjdN9JmIK2o/ermkHM+98oX5fS+k5MbwsmL4MRQE=
|
||||
github.com/oschwald/maxminddb-golang v1.13.1/go.mod h1:K4pgV9N/GcK694KSTmVSDTODk4IsCNThNdTmnaBZ/F8=
|
||||
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
|
||||
|
4
goecs.go
4
goecs.go
@@ -39,7 +39,7 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
ecsVersion = "v0.1.87"
|
||||
ecsVersion = "v0.1.89"
|
||||
menuMode bool
|
||||
onlyChinaTest bool
|
||||
input, choice string
|
||||
@@ -139,7 +139,7 @@ func parseFlags() {
|
||||
goecsFlag.BoolVar(&speedTestStatus, "speed", true, "Enable/Disable speed test")
|
||||
goecsFlag.StringVar(&cpuTestMethod, "cpum", "sysbench", "Set CPU test method (supported: sysbench, geekbench, winsat)")
|
||||
goecsFlag.StringVar(&cpuTestThreadMode, "cput", "multi", "Set CPU test thread mode (supported: single, multi)")
|
||||
goecsFlag.StringVar(&memoryTestMethod, "memorym", "sysbench", "Set memory test method (supported: sysbench, dd, winsat)")
|
||||
goecsFlag.StringVar(&memoryTestMethod, "memorym", "stream", "Set memory test method (supported: stream, sysbench, dd, winsat, auto)")
|
||||
goecsFlag.StringVar(&diskTestMethod, "diskm", "fio", "Set disk test method (supported: fio, dd, winsat)")
|
||||
goecsFlag.StringVar(&diskTestPath, "diskp", "", "Set disk test path, e.g., -diskp /root")
|
||||
goecsFlag.BoolVar(&diskMultiCheck, "diskmc", false, "Enable/Disable multiple disk checks, e.g., -diskmc=false")
|
||||
|
6
goecs.sh
6
goecs.sh
@@ -152,7 +152,7 @@ goecs_check() {
|
||||
os=$(uname -s 2>/dev/null || echo "Unknown")
|
||||
arch=$(uname -m 2>/dev/null || echo "Unknown")
|
||||
check_china
|
||||
ECS_VERSION="0.1.86"
|
||||
ECS_VERSION="0.1.89"
|
||||
for api in \
|
||||
"https://api.github.com/repos/oneclickvirt/ecs/releases/latest" \
|
||||
"https://githubapi.spiritlhl.workers.dev/repos/oneclickvirt/ecs/releases/latest" \
|
||||
@@ -164,8 +164,8 @@ goecs_check() {
|
||||
sleep 1
|
||||
done
|
||||
if [ -z "$ECS_VERSION" ]; then
|
||||
_yellow "Unable to get version info, using default version 0.1.86"
|
||||
ECS_VERSION="0.1.86"
|
||||
_yellow "Unable to get version info, using default version 0.1.89"
|
||||
ECS_VERSION="0.1.89"
|
||||
fi
|
||||
version_output=""
|
||||
for cmd_path in "goecs" "./goecs" "/usr/bin/goecs" "/usr/local/bin/goecs"; do
|
||||
|
@@ -8,27 +8,78 @@ import (
|
||||
)
|
||||
|
||||
func MemoryTest(language, testMethod string) (realTestMethod, res string) {
|
||||
testMethod = strings.ToLower(testMethod)
|
||||
if testMethod == "" {
|
||||
testMethod = "auto"
|
||||
}
|
||||
if runtime.GOOS == "windows" {
|
||||
if testMethod != "winsat" && testMethod != "" {
|
||||
switch testMethod {
|
||||
case "stream":
|
||||
res = memory.WinsatTest(language)
|
||||
realTestMethod = "winsat"
|
||||
case "dd":
|
||||
res = memory.WindowsDDTest(language)
|
||||
if res == "" || strings.TrimSpace(res) == "" {
|
||||
res += memory.WinsatTest(language)
|
||||
realTestMethod = "winsat"
|
||||
} else {
|
||||
realTestMethod = "dd"
|
||||
}
|
||||
case "sysbench":
|
||||
res = memory.WinsatTest(language)
|
||||
realTestMethod = "winsat"
|
||||
case "auto", "winsat":
|
||||
res = memory.WinsatTest(language)
|
||||
realTestMethod = "winsat"
|
||||
default:
|
||||
res = memory.WinsatTest(language)
|
||||
realTestMethod = "winsat"
|
||||
}
|
||||
res += memory.WinsatTest(language)
|
||||
} else {
|
||||
switch testMethod {
|
||||
case "stream":
|
||||
res = memory.StreamTest(language)
|
||||
if res == "" || strings.TrimSpace(res) == "" {
|
||||
res += memory.DDTest(language)
|
||||
realTestMethod = "dd"
|
||||
} else {
|
||||
realTestMethod = "stream"
|
||||
}
|
||||
case "dd":
|
||||
res = memory.DDTest(language)
|
||||
realTestMethod = "dd"
|
||||
case "sysbench":
|
||||
res = memory.SysBenchTest(language)
|
||||
if res == "" {
|
||||
if res == "" || strings.TrimSpace(res) == "" {
|
||||
res += memory.DDTest(language)
|
||||
realTestMethod = "dd"
|
||||
} else {
|
||||
realTestMethod = "sysbench"
|
||||
}
|
||||
case "dd":
|
||||
case "auto":
|
||||
res = memory.StreamTest(language)
|
||||
if res == "" || strings.TrimSpace(res) == "" {
|
||||
res = memory.DDTest(language)
|
||||
if res == "" || strings.TrimSpace(res) == "" {
|
||||
res = memory.SysBenchTest(language)
|
||||
if res == "" || strings.TrimSpace(res) == "" {
|
||||
realTestMethod = ""
|
||||
} else {
|
||||
realTestMethod = "sysbench"
|
||||
}
|
||||
} else {
|
||||
realTestMethod = "dd"
|
||||
}
|
||||
} else {
|
||||
realTestMethod = "stream"
|
||||
}
|
||||
case "winsat":
|
||||
// winsat 仅 Windows 支持,非 Windows fallback 到 dd
|
||||
res = memory.DDTest(language)
|
||||
realTestMethod = "dd"
|
||||
default:
|
||||
res += memory.DDTest(language)
|
||||
realTestMethod = "dd"
|
||||
res = "Unsupported test method"
|
||||
realTestMethod = ""
|
||||
}
|
||||
}
|
||||
if !strings.Contains(res, "\n") && res != "" {
|
||||
|
@@ -6,6 +6,6 @@ import (
|
||||
)
|
||||
|
||||
func Test(t *testing.T) {
|
||||
_, res := MemoryTest("zh", "sysbench")
|
||||
_, res := MemoryTest("zh", "stream")
|
||||
fmt.Print(res)
|
||||
}
|
||||
|
Reference in New Issue
Block a user