Skip to content

Latest commit

 

History

History
64 lines (47 loc) · 2.76 KB

File metadata and controls

64 lines (47 loc) · 2.76 KB

Contributing

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.

Before opening an issue

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.

Pull requests

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.php and implementation classes use Module.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.

Testing

At minimum, check:

  1. PHP syntax for every changed PHP file with php -l.
  2. JavaScript syntax with node --check when JavaScript changes.
  3. Application bootstrap on PHP 8.2 or newer.
  4. Loading of all bundled protocol modules and GeoLite2 Country.
  5. One-run/one-protocol output isolation.
  6. Parsing and serialization for each affected protocol.
  7. Deduplication and candidate scoring.
  8. Plain-text and Base64 input.
  9. URL and file-upload paths when affected.
  10. CAPTCHA, CSRF, cooldown and application limits when affected.
  11. No secrets or complete proxy configurations in logs, metadata or fixtures.
  12. Windows-safe module filenames: manifest.php and Module.php.

Use synthetic proxy configurations and non-sensitive URLs in tests, commits, issues and pull requests.

License

By contributing, you agree that your contribution may be distributed under the repository's MIT License.