{"id":29356917,"url":"https://github.com/cesnet/exabgp-process","last_synced_at":"2026-02-15T03:31:32.931Z","repository":{"id":261463996,"uuid":"884287750","full_name":"CESNET/exabgp-process","owner":"CESNET","description":"Process for ExaBGP / source of pip package","archived":false,"fork":false,"pushed_at":"2025-02-26T10:57:18.000Z","size":12,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-10-30T01:58:08.654Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CESNET.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-06T13:37:34.000Z","updated_at":"2025-03-14T12:29:14.000Z","dependencies_parsed_at":"2024-11-06T18:08:39.995Z","dependency_job_id":null,"html_url":"https://github.com/CESNET/exabgp-process","commit_stats":null,"previous_names":["cesnet/exabgp-process"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CESNET/exabgp-process","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CESNET%2Fexabgp-process","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CESNET%2Fexabgp-process/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CESNET%2Fexabgp-process/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CESNET%2Fexabgp-process/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CESNET","download_url":"https://codeload.github.com/CESNET/exabgp-process/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CESNET%2Fexabgp-process/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29466929,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T01:01:38.065Z","status":"online","status_checked_at":"2026-02-15T02:00:07.449Z","response_time":118,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-09T05:40:54.840Z","updated_at":"2026-02-15T03:31:32.927Z","avatar_url":"https://github.com/CESNET.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ExaBGP Process Package\n\n[![PyPI version](https://badge.fury.io/py/exabgp-process.svg)](https://badge.fury.io/py/exabgp-process)\n[![PyPI](https://img.shields.io/pypi/v/exabgp-process.svg)](https://pypi.org/project/exabgp-process/)\n\nThis application is a simple API that interfaces with the [ExaBGP service](https://github.com/Exa-Networks/exabgp/tree/main).\n\nEach time this app receives a new command, it forwards the command to ExaBGP via stdout. The registered ExaBGP service monitors the stdout of this API application.\n\n## Installation\n\nInstall the package using pip:\n```bash\npip install exabgp-process\n```\n\nAlternative installation methods:\n```bash\n# Using uv\nuv pip install exabgp-process\n\n# Using Poetry (create a new project first)\npoetry new my-exabgp-project\ncd my-exabgp-project\npoetry add exabgp-process\n```\n\n## Configuration\n\n### 1. Generate Configuration File\nAfter installation, generate the configuration file:\n```bash\nexabgp-process --generate-config \u003e process.conf\n```\n\n### 2. Edit Configuration\nOpen `process.conf` and configure according to your needs:\n\n**For RabbitMQ (recommended for production):**\n```ini\n[api]\ntype = rabbitmq\n```\nDon't forged to set you rabbitmq host, username, password etc.\n\n**For HTTP (development/testing only - no security layer):**\n```ini\n[api]\ntype = http\n```\nYou can then configure the server IP and PORT if you need.\n\n### 3. Set Up Log Directory\nEnsure the log directory exists and is writable by the ExaBGP process:\n```bash\n# Create the log directory specified in your config\nsudo mkdir -p /var/log/myapp\nsudo chown exabgp:exabgp /var/log/myapp  # Adjust user/group as needed\n```\n\n### 4. Install Configuration\nCopy the configuration file to the appropriate location:\n```bash\nsudo mv process.conf /etc/exabgp/process.conf\n```\n\nThe application searches for configuration files in the following locations (in order):\n- `api.conf` (current directory)\n- `process.conf` (current directory)\n- `/etc/exabgp_process/process.conf`\n- `/etc/exabgp/process.conf`\n- `/usr/local/etc/exabgp_process/process.conf`\n\n## Integration with ExaBGP\n\nAdd the following to your ExaBGP configuration file:\n```\nprocess flowspec {\n    run /usr/local/bin/exabgp-process;\n    encoder json;\n}\n```\n\n**Note:** The exact path to `exabgp-process` may vary depending on your installation. You can find it using:\n```bash\nwhich exabgp-process\n```\n\n## Usage\n\n### Standalone Mode (for testing)\nYou can run the process directly for testing:\n```bash\nexabgp-process\n```\n\n### Message Format\nThe application expects JSON messages with the following structure:\n```json\n{\n    \"author\": \"username\",\n    \"source\": \"application_name\",\n    \"command\": \"announce route 192.0.2.1/32 next-hop 192.0.2.254\"\n}\n```\n\n- `author`: For logging purposes (who initiated the command)\n- `source`: For logging purposes (which application sent the command)\n- `command`: The actual ExaBGP command to execute\n\n### RabbitMQ Setup\nWhen using RabbitMQ, ensure your RabbitMQ server is running and accessible with the credentials specified in your configuration file.\n\n### HTTP Setup\n**Security Warning:** The HTTP version has no authentication or encryption. Only use it for development/testing, and restrict access to localhost only. It also uses only Flask development server, that is also not recomended for production usage. \n\n## Development and Testing\n\nFor development and testing, the HTTP version is available. However, please note that this web app lacks any security layer. Therefore, it's recommended to:\n- Restrict access to localhost only\n- Use RabbitMQ for production environments\n- Never expose the HTTP API to public networks\n\nFor more information, refer to the [ExaBGP documentation](https://github.com/Exa-Networks/exabgp/wiki/Controlling-ExaBGP-:-possible-options-for-process).\n\n## Troubleshooting\n\n### Package Not Found\nIf `exabgp-process` command is not found after installation:\n```bash\n# Verify installation\npip show exabgp-process\n\n# Find the executable\nwhich exabgp-process\n\n# If using a virtual environment, make sure it's activated\nsource venv/bin/activate\n```\n\n### Permission Errors\nEnsure the log directory has proper permissions:\n```bash\nsudo chown -R \u003cexabgp-user\u003e:\u003cexabgp-group\u003e /var/log/myapp\n```\n\n### Connection Issues with RabbitMQ\n- Verify RabbitMQ is running: `sudo systemctl status rabbitmq-server`\n- Check credentials and vhost configuration\n- Ensure the queue exists or the user has permissions to create it\n\n## Changelog\n\n- **1.0.4** - Fixed template for config file\n- **1.0.3** - New format of message from server - JSON with keys: `author`, `source`, `command`. Author and source are for logging purposes, command is sent to the process\n- **1.0.2** - Switch to pyproject.toml for better description\n\n## License\n\nSee [LICENSE](LICENSE) file for details.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcesnet%2Fexabgp-process","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcesnet%2Fexabgp-process","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcesnet%2Fexabgp-process/lists"}