{"id":13407651,"url":"https://github.com/use-go/onvif","last_synced_at":"2026-01-12T01:55:04.988Z","repository":{"id":39886658,"uuid":"220234163","full_name":"use-go/onvif","owner":"use-go","description":"full and enhanced onvif protocol stack in golang.","archived":false,"fork":false,"pushed_at":"2024-09-29T07:25:09.000Z","size":1659,"stargazers_count":451,"open_issues_count":25,"forks_count":213,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-06-16T10:13:38.675Z","etag":null,"topics":["getcapabilities","ip-cameras","library","onvif","onvif-protocol","onvif-services","ptz"],"latest_commit_sha":null,"homepage":"","language":"Go","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/use-go.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":"2019-11-07T12:39:54.000Z","updated_at":"2025-06-04T13:17:02.000Z","dependencies_parsed_at":"2023-01-29T20:10:14.102Z","dependency_job_id":"cab7274e-7f54-495e-a029-05c9305f3330","html_url":"https://github.com/use-go/onvif","commit_stats":{"total_commits":146,"total_committers":13,"mean_commits":11.23076923076923,"dds":0.7054794520547945,"last_synced_commit":"bc3226e9ec0c154b89f43cd7d9dedb25f70c108f"},"previous_names":["use-go/goonvif","use-go/go-onvif"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/use-go/onvif","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/use-go%2Fonvif","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/use-go%2Fonvif/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/use-go%2Fonvif/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/use-go%2Fonvif/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/use-go","download_url":"https://codeload.github.com/use-go/onvif/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/use-go%2Fonvif/sbom","scorecard":{"id":912311,"data":{"date":"2025-08-11","repo":{"name":"github.com/use-go/onvif","commit":"67386c9fecefd553a44b7696ffa43dba2ccccebe"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.8,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":8,"reason":"Found 8/10 approved changesets -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"14 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2021-0052 / GHSA-h395-qcrw-5vmq","Warn: Project is vulnerable to: GHSA-3vp4-m3rf-835h","Warn: Project is vulnerable to: GO-2023-1737 / GHSA-2c4m-59x9-fr2g","Warn: Project is vulnerable to: GO-2022-0288","Warn: Project is vulnerable to: GO-2022-0969 / GHSA-69cg-p879-7622","Warn: Project is vulnerable to: GO-2022-1144 / GHSA-xrjj-mj9h-534m","Warn: Project is vulnerable to: GO-2023-1571 / GHSA-vvpx-j8f3-3w6h","Warn: Project is vulnerable to: GO-2023-1988 / GHSA-2wrh-6pvc-2jm9","Warn: Project is vulnerable to: GO-2023-2102 / GHSA-4374-p667-p6c8","Warn: Project is vulnerable to: GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-24T19:40:51.968Z","repository_id":39886658,"created_at":"2025-08-24T19:40:51.969Z","updated_at":"2025-08-24T19:40:51.969Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28331305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"ssl_error","status_checked_at":"2026-01-12T00:36:15.229Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["getcapabilities","ip-cameras","library","onvif","onvif-protocol","onvif-services","ptz"],"created_at":"2024-07-30T20:00:46.196Z","updated_at":"2026-01-12T01:55:04.973Z","avatar_url":"https://github.com/use-go.png","language":"Go","funding_links":[],"categories":["Generic software","Go","Repos 仓库"],"sub_categories":["ONVIF","GB28181"],"readme":"# onvif protocol\n\nSimple management of onvif IP-devices cameras. onvif is an implementation of  ONVIF protocol for managing onvif IP devices. The purpose of this library is convenient and easy management of IP cameras and other devices that support ONVIF standard.\n\n## Installation\n\nTo install the library,  use **go get**:\n\n```go\ngo get github.com/use-go/onvif\n\n```\n\n## Supported services\n\nThe following services are implemented:\n\n- Device\n- Media\n- PTZ\n- Imaging\n- Event\n- Discovery\n- Auth(More Options)\n- Soap\n\n## Using\n\n### General concept\n\n1) Connecting to the device\n2) Authentication (if necessary)\n3) Defining Data Types\n4) Carrying out the required method\n\n#### Connecting to the device\n\nIf there is a device on the network at the address *192.168.13.42*, and its ONVIF services use the *1234* port, then you can connect to the device in the following way:\n\n```go\ndev, err := onvif.NewDevice(onvif.DeviceParams{Xaddr: \"192.168.13.42:1234\"})\n```\n\n*The ONVIF port may differ depending on the device , to find out which port to use, you can go to the web interface of the device. **Usually this is 80 port.***\n\n#### Authentication\n\nIf any function of the ONVIF services requires authentication, you must use the `Authenticate` method.\n\n```go\ndevice := onvif.NewDevice(onvif.DeviceParams{Xaddr: \"192.168.13.42:1234\", Username: \"username\", Password: password})\n```\n\n#### Defining Data Types\n\nEach ONVIF service in this library has its own package, in which all data types of this service are defined, and the package name is identical to the service name and begins with a capital letter. onvif defines the structures for each function of each ONVIF service supported by this library. Define the data type of the `GetCapabilities` function of the Device service. This is done as follows:\n\n```go\ncapabilities := device.GetCapabilities{Category:\"All\"}\n```\n\nWhy does the `GetCapabilities` structure have the Category field and why is the value of this field `All`?\n\nThe figure below shows the documentation for the [GetCapabilities](https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl). It can be seen that the function takes one Category parameter and its value should be one of the following: 'All', 'Analytics',' Device ',' Events', 'Imaging', 'Media' or 'PTZ'`.\n\n![Device GetCapabilities](docs/img/exmp_GetCapabilities.png)\n\nAn example of defining the data type of `GetServiceCapabilities` function in [PTZ](https://www.onvif.org/ver20/ptz/wsdl/ptz.wsdl):\n\n```go\nptzCapabilities := ptz.GetServiceCapabilities{}\n```\n\nThe figure below shows that `GetServiceCapabilities` does not accept any arguments.\n\n![PTZ GetServiceCapabilities](docs/img/GetServiceCapabilities.png)\n\n*Common data types are in the xsd/onvif package. The types of data (structures) that can be shared by all services are defined in the onvif package.*\n\nAn example of how to define the data type of the CreateUsers function in [Devicemgmt](https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl):\n\n```go\ncreateUsers := device.CreateUsers{User: onvif.User{Username:\"admin\", Password:\"qwerty\", UserLevel:\"User\"}}\n```\n\nThe figure below shows that ,in this example, the `CreateUsers` structure field must be a User whose data type is the User structure containing the Username, Password, UserLevel, and optional Extension fields. The User structure is in the onvif package.\n\n![Device CreateUsers](docs/img/exmp_CreateUsers.png)\n\n#### Carrying out the required method\n\nTo perform any function of one of the ONVIF services whose structure has been defined, you must use the `CallMethod` of the device object.\n\n```go\ncreateUsers := device.CreateUsers{User: onvif.User{Username:\"admin\", Password:\"qwerty\", UserLevel:\"User\"}}\ndevice := onvif.NewDevice(onvif.DeviceParams{Xaddr: \"192.168.13.42:1234\", Username: \"username\", Password: password})\ndevice.Authenticate(\"username\", \"password\")\nresp, err := dev.CallMethod(createUsers)\n```\n\n## Great Thanks\n\nEnhanced and Improved from: [goonvif](https://github.com/yakovlevdmv/goonvif)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuse-go%2Fonvif","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuse-go%2Fonvif","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuse-go%2Fonvif/lists"}