PBH-BTN / PeerBanHelper

BT 反吸血工具 - 自动封禁不受欢迎、吸血和异常的 BT 客户端,并支持自定义规则。PeerId黑名单/UserAgent黑名单/IP CIDR/假进度/超量下载/进度回退/多播追猎/连锁封禁/伪装检测 支持 qBittorrent/Transmission/Deluge/BiglyBT/Vuze(Azureus)/BitComet
GNU General Public License v3.0
1.51k stars 36 forks source link

添加多拨检测模块 #71

Closed CharlesChou73 closed 5 months ago

CharlesChou73 commented 5 months ago

通过子网内的ip下载同一种子检测多拨,进行封禁

Summary by CodeRabbit

coderabbitai[bot] commented 5 months ago

Walkthrough

The update introduces a new module MultiDialingBlocker in the PeerBanHelperServer, enhancing its capability to detect and prevent multiple downloads of the same torrent from a single network segment. This is complemented by utility enhancements and new language constants to support the functionality.

Changes

File Path Change Summary
.../PeerBanHelperServer.java Added registration for MultiDialingBlocker module.
.../module/impl/rule/MultiDialingBlocker.java New module to block simultaneous torrent downloads from the same network segment.
.../text/Lang.java & .../util/IpUtil.java Added string constants and IP conversion utilities.

🐰✨ In the code's burrow, deep and wide,
A clever module now resides.
It watches close with keenest eyes,
For sneaky peers in clever guise.
Oh, hop and code, let's block those tries!
🌟🐾


Recent Review Details **Configuration used: CodeRabbit UI** **Review profile: CHILL**
Commits Files that changed from the base of the PR and between e2979757fa793695eadce3354a579a71840fc7a5 and f3a4ac5d3c99090eea5536e2b5573069a1d4e0f8.
Files selected for processing (4) * src/main/java/com/ghostchu/peerbanhelper/PeerBanHelperServer.java (1 hunks) * src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/MultiDialingBlocker.java (1 hunks) * src/main/java/com/ghostchu/peerbanhelper/text/Lang.java (2 hunks) * src/main/java/com/ghostchu/peerbanhelper/util/IpUtil.java (1 hunks)
Additional comments not posted (8)
src/main/java/com/ghostchu/peerbanhelper/util/IpUtil.java (2)
`4-12`: The method `ipStr2Int` correctly handles IP string to integer conversion with appropriate error management. --- `15-17`: The method `int2IpStr` efficiently converts an integer IP address back to its string representation.
src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/MultiDialingBlocker.java (4)
`56-59`: Constructor initializes module settings correctly. Note the design change to not use direct database interactions (`this.db = db;` is commented out). --- `91-98`: The `reloadConfig` method correctly loads and calculates necessary configuration settings for the module. --- `101-164`: The `shouldBanPeer` method effectively implements the logic for detecting and handling peers that violate the multi-dialing rules, with appropriate use of concurrency and synchronization. --- `174-194`: Utility methods `recoverHuntingList` and the `HuntingTarget` record are correctly implemented to support the module's functionality.
src/main/java/com/ghostchu/peerbanhelper/text/Lang.java (1)
`40-43`: Newly added string constants in the `Lang` class are correctly formatted and relevant for the multi-dialing detection feature.
src/main/java/com/ghostchu/peerbanhelper/PeerBanHelperServer.java (1)
`262-262`: The registration of the `MultiDialingBlocker` module in the `registerModules` method is correctly implemented with appropriate parameters.
--- Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (invoked as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger a review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
Ghost-chu commented 5 months ago

打开 PR 时,请向最新的 btn-2 分支提交更改。并同时添加配置文件升级脚本和示例配置文件。

CharlesChou73 commented 5 months ago

抱歉不熟悉流程,整改中…

Ghost-chu commented 5 months ago

😂没事,没必要搞得这么严肃