{"id":21418440,"url":"https://github.com/nightflyza/ophanimflow","last_synced_at":"2025-08-13T17:08:57.621Z","repository":{"id":212828881,"uuid":"732400532","full_name":"nightflyza/OphanimFlow","owner":"nightflyza","description":"OphanimFlow is a NetFlow aggregation and graphing toolkit that collects, classifies, and visualizes traffic data for each host in specified networks, providing detailed bandwidth usage and traffic accounting.","archived":false,"fork":false,"pushed_at":"2025-08-09T10:26:26.000Z","size":9530,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-09T12:18:59.278Z","etag":null,"topics":["ipfix","isp-management","netflow","netflow-collector","netflow-v5","netflow-v9","traffic-analysis","traffic-classification","traffic-counter","traffic-graphs","traffic-monitoring"],"latest_commit_sha":null,"homepage":"","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nightflyza.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null}},"created_at":"2023-12-16T14:54:07.000Z","updated_at":"2025-08-09T10:26:30.000Z","dependencies_parsed_at":"2024-01-26T14:44:57.267Z","dependency_job_id":"6d1cd565-e9cc-49d5-aefe-2faefe23c25e","html_url":"https://github.com/nightflyza/OphanimFlow","commit_stats":null,"previous_names":["nightflyza/ophanimflow"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/nightflyza/OphanimFlow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightflyza%2FOphanimFlow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightflyza%2FOphanimFlow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightflyza%2FOphanimFlow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightflyza%2FOphanimFlow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nightflyza","download_url":"https://codeload.github.com/nightflyza/OphanimFlow/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightflyza%2FOphanimFlow/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270278381,"owners_count":24557176,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"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":["ipfix","isp-management","netflow","netflow-collector","netflow-v5","netflow-v9","traffic-analysis","traffic-classification","traffic-counter","traffic-graphs","traffic-monitoring"],"created_at":"2024-11-22T19:21:29.780Z","updated_at":"2025-08-13T17:08:57.597Z","avatar_url":"https://github.com/nightflyza.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OphanimFlow\nNetFlow aggregation and graph toolkit. \n\nBasic idea is replacement of bandwidthd and Stargazer cap_nf module in one solution, which performs NetFlow data collecting, classification, preprocessing and performing network bandwidth utilization graphs rendering per each host in your network and basic traffic accounting of it, somewhere on some dedicated host.\n\n# FreeBSD 13.5/14.2/14.3 batch setup\n\nninja way\n\n```\n# fetch https://raw.githubusercontent.com/nightflyza/OphanimFlow/main/dist/batchfreebsd.sh \u0026\u0026 sh batchfreebsd.sh\n```\n\n# Debian 12.5 bookworm batch setup\n```\n$ su -\n# wget https://raw.githubusercontent.com/nightflyza/OphanimFlow/main/dist/batchdebian12.sh \u0026\u0026 sh batchdebian12.sh\n```\n\nAfter that, a simple web interface will be available to you at a link like http://yourhost/of/, which will allow you to make the minimum necessary settings, such as specifying your networks, and start using OphanimFlow. The default login is \"admin\", the default password is \"demo\". Don't forget to change it in the user profile settings.\n\n![ofdashboard](https://github.com/nightflyza/OphanimFlow/assets/1496954/df650ff6-1113-4c92-93d6-6f6371799e2f)\n\n# Upgrade OphanimFlow to latest build\n\nJust run the script\n\n```\n# /bin/autoofupdate.sh\n```\n\nand stay tuned! ;)\n\n# NetFlow software sensor usage example\n\nDefault NetFlow collector UDP port is 42112 and default sampling rate is 100. Flows data dumps to database every 5 minutes, and preprocesses every 5 minutes for charts and every 10 minutes for summary traffic counters, so \n\n```\n# softflowd -i bridge0 -s 100 -t udp=60 -t tcp=60 -t icmp=60 -t general=60 -t maxlife=60 -t tcp.rst=60 -t tcp.fin=60 -n 192.168.0.220:42112\n```\n\n\n# REST API\n\nThe REST API has several endpoints for getting preprocessed data as well as graphs. So you can use OphanimFlow data in your external apps, somethink like that:\n\n![opharchabstract](https://github.com/nightflyza/OphanimFlow/assets/1496954/0115ecc1-7d6f-473c-885a-169d01f5f04e)\n\nDetails of the payloads and endpoints are below.\nAll API requests performs as GET requests with some parameters to base URL like http://yourhost/of/ \n\n## graph\n\nThis API call returns traffic graph, with distribution by traffic classes as PNG image for some specified IP address. Parameter \"ip\" - is mandatory. All other is optional.\n\nAll endpoint parameters:\n\n- ip - IP address in format x.x.x.x\n- dir - traffic direction. Possible values: R, S that points to \"received\" and \"sent\". Default: R.\n- period - possible values: hour, day, week, month, year, 24h, 48h, explict. Default: day.\n- w - width of graph image in pixels. Default : 1540.\n- h - heigth of graph image in pixels. Default: 400.\n\nMinimal example:\n```\n?module=graph\u0026ip=172.30.73.247\n```\n\nReturns something like this for a current day\n\n![day](https://github.com/nightflyza/OphanimFlow/assets/1496954/54296af6-9e7a-4145-b301-37c243df87d7)\n\n\nor \n\n```\n?module=graph\u0026ip=172.30.73.247\u0026period=week\n```\n\nlike this for a week\n\n![week](https://github.com/nightflyza/OphanimFlow/assets/1496954/9eaf8f1f-7bd6-43f5-a165-d38ae37ad141)\n\nor \n\n```\n?module=graph\u0026ip=172.30.73.247\u0026period=hour\n```\n![hour](https://github.com/nightflyza/OphanimFlow/assets/1496954/5c5b4c0a-5cea-4114-aaab-ae16f729b411)\n\nlike this for a past hour\n\nexplict period requires set of two UNIX timestamp GET variables - \"from\" and \"to\"\n\nExplict period usage:\n```\n?module=graph\u0026dir=R\u0026ip=0.0.0.0\u0026period=explict\u0026from=1115779033\u0026to=1715782633\n```\n\nFull example with custom dimensions:\n```\n?module=graph\u0026dir=R\u0026period=week\u0026ip=172.16.68.173\u0026w=1300\u0026h=400\n```\n\nIP 0.0.0.0 returns summary bandwidth chart for all tracked hosts.\n\n## gettraff\n\nThis API call returns JSON array of all traffic summary collected by some period for all or specified IP address.\n\nOptional endpoint parameters:\n\n- year - year of summary.\n- month - month number to return traffic summary without leading zero.\n- ip - IP address in format x.x.x.x\n\nMinimal example:\n```\n?module=gettraff\n```\n\nReturns something like\n\n```\n{\n\n    \"172.16.1.175\":{\n        \"dl\":\"66912063800\",\n        \"ul\":\"2691439300\"\n    },\n    \"172.16.25.75\":{\n        \"dl\":\"145398529200\",\n        \"ul\":\"10223157100\"\n    },\n    \"172.16.60.149\":{\n        \"dl\":\"49337740100\",\n        \"ul\":\"7548407400\"\n    },\n    ....\n```\nwith data for current month \"dl\" - bytes downloaded, ul - bytes uploaded.\n\nFull example:\n```\n?module=gettraff\u0026year=2023\u0026month=12\u0026ip=172.16.1.33\n```\nReturns:\n\n```\n{\n    \"172.16.1.33\":{\n        \"dl\":\"190673220400\",\n        \"ul\":\"9911547100\"\n    }\n\n}\n```\n\nas just data for specified IP 172.16.1.33 for december 2023.\n\n# More configuration\n\nWhile the API endpoints is currently accessible without any authorization, you may want to limit the list of hosts IPs that can receive data from them. This is done using the ENDPOINTS_HOSTS option in the of/config/alter.ini configuration file. Something like:\n\n```\nENDPOINTS_HOSTS=\"192.168.0.8,192.168.42.56\"\n```\n\nAlso you may want to change NetFlow collector port or sampling rate, you also can do this in the same alter.ini config file using following options:\n\n```\n;NetFlow collector default options\nCOLLECTOR_PORT=42112\nSAMPLING_RATE=100\n```\n\ndont forget regenerate configuration and restart collector after this\n\nAlso OphanimFlow from release 0.0.5 automatically rotates and flushes old data to keep some storage space reserved and prevent it from exhausting. Its 10% of total storage size by default. This behaviour is controlled by following options:\n\n```\n;Reserved storage free space percent\nSTORAGE_RESERVED_SPACE=10\n;write data rotator debug log into exports/rotator.log?\nROTATOR_DEBUG=0\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnightflyza%2Fophanimflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnightflyza%2Fophanimflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnightflyza%2Fophanimflow/lists"}