Contributions, reproducible bug reports and focused improvement proposals are welcome.
Proxy List Processor is maintained as a self-contained PHP application with minimal dependencies. Changes should preserve the existing deployment model and avoid unnecessary architectural complexity.
Check the current documentation and existing issues first. Include enough information to reproduce the problem:
- project version;
- PHP version and web server;
- selected protocol module;
- source type: URL or uploaded file;
- whether the input is plain text or Base64;
- relevant configuration limits;
- minimal synthetic input;
- expected and actual behavior;
- relevant diagnostics with secrets and complete proxy URIs removed.
Issues may be written in English or Russian.
Keep pull requests focused on one problem or improvement. Large refactors and Module API changes should be discussed before implementation.
Preserve these project constraints:
- PHP 8.2+ compatibility;
- no mandatory Composer or npm dependencies;
- no database requirement;
- one selected protocol and one homogeneous result per run;
- protocol-specific logic remains inside protocol modules;
- module manifests use
manifest.phpand implementation classes useModule.php; - Module API 2 and Protocol Module API compatibility unless a migration is explicitly planned;
- no network reachability tests or proxy benchmarking in the processor core;
- SSRF, CSRF, CAPTCHA, size limits, sanitization and contextual escaping must remain intact;
- no complete proxy URI, UUID, password, subscription token or customer data in logs;
- English and Russian documentation must be updated together when behavior changes.
Do not change the project version or prepare release archives in a pull request unless explicitly requested. Versioning and packaging are handled by the maintainers.
At minimum, check:
- PHP syntax for every changed PHP file with
php -l. - JavaScript syntax with
node --checkwhen JavaScript changes. - Application bootstrap on PHP 8.2 or newer.
- Loading of all bundled protocol modules and GeoLite2 Country.
- One-run/one-protocol output isolation.
- Parsing and serialization for each affected protocol.
- Deduplication and candidate scoring.
- Plain-text and Base64 input.
- URL and file-upload paths when affected.
- CAPTCHA, CSRF, cooldown and application limits when affected.
- No secrets or complete proxy configurations in logs, metadata or fixtures.
- Windows-safe module filenames:
manifest.phpandModule.php.
Use synthetic proxy configurations and non-sensitive URLs in tests, commits, issues and pull requests.
By contributing, you agree that your contribution may be distributed under the repository's MIT License.