{"id":13399078,"url":"https://github.com/sipcapture/hep-js","last_synced_at":"2025-07-09T20:35:53.144Z","repository":{"id":33374710,"uuid":"37019614","full_name":"sipcapture/hep-js","owner":"sipcapture","description":"HEP: Javascript/Node implementation of HEP/EEP Encapsulation Protocol","archived":false,"fork":false,"pushed_at":"2025-06-09T12:22:13.000Z","size":141,"stargazers_count":12,"open_issues_count":5,"forks_count":9,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-06-19T23:48:30.920Z","etag":null,"topics":["decapsulation","decoder","eep-encapsulation-protocol","encapsulation","encoder","hep","hep-js","hepic","homer","javascript","rtc","sipcapture","voip"],"latest_commit_sha":null,"homepage":"http://sipcapture.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sipcapture.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":"2015-06-07T14:34:19.000Z","updated_at":"2025-06-09T12:22:10.000Z","dependencies_parsed_at":"2024-01-18T11:03:16.347Z","dependency_job_id":"aaf49192-acd8-400d-9d1f-0ef916ccd96c","html_url":"https://github.com/sipcapture/hep-js","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sipcapture/hep-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sipcapture%2Fhep-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sipcapture%2Fhep-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sipcapture%2Fhep-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sipcapture%2Fhep-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sipcapture","download_url":"https://codeload.github.com/sipcapture/hep-js/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sipcapture%2Fhep-js/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264502992,"owners_count":23618674,"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","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":["decapsulation","decoder","eep-encapsulation-protocol","encapsulation","encoder","hep","hep-js","hepic","homer","javascript","rtc","sipcapture","voip"],"created_at":"2024-07-30T19:00:33.959Z","updated_at":"2025-07-09T20:35:53.123Z","avatar_url":"https://github.com/sipcapture.png","language":"JavaScript","funding_links":[],"categories":["Contribution Guidelines"],"sub_categories":["Libraries and Code Examples"],"readme":"[![Dependency Status](https://david-dm.org/sipcapture/hep-js.svg)](https://david-dm.org/sipcapture/hep-js)\n![npm](https://img.shields.io/npm/dm/hep-js.svg)\n\n\u003cimg src=\"https://user-images.githubusercontent.com/1423657/55069501-8348c400-5084-11e9-9931-fefe0f9874a7.png\" width=200/\u003e\n\n# HEP-js\nHEP: Javascript/Node implementation of HEP/EEP Encapsulation Protocol\n\n\nThis module provides Node with [HEP/EEP](http://hep.sipcapture.org) packet encapsulation and decapsulation capabilities.\n\nFor more information about HEP and SIPCAPTURE Projects, please visit [http://sipcapture.org](http://sipcapture.org)\n\n### Install:\n```\nnpm install hep-js\n```\n\n\n### Example Usage:\n```\nconst HEPjs = require('hep-js');\nvar hep_encoder = HEPjs.encapsulate(payload,rcinfo); // returns data buffer\nvar hep_decoder = HEPjs.decapsulate(buffer); // returns JSON Object {payload,rcinfo}\n\n```\n\n#### Example: payload\n```\nACK sip:883510000000091@domain.net SIP/2.0\nVia: SIP/2.0/UDP 192.168.1.23:5060;rport;branch=z9hG4bK484759904 \nFrom: \u003csip:somebody@somewhere.net\u003e;tag=412285373 \nTo: \u003csip:883510000000091@domain.net\u003e;tag=1d24a28a0bded6c40d31e6db8aab9ac6.4679 \nCall-ID: 1003554701 \nCSeq: 20 ACK \nContent-Length: 0 \n```\n\n#### Example: rcinfo\n```\nrcinfo = { type: 'HEP',\n  version: 3,\n  payload_type: 'SIP',\n  captureId: '2001',\n  capturePass: 'myHep',\n  ip_family: 2,\n  time_sec: 1433719443,\n  time_usec: 979,\n  protocol: 17,\n  proto_type: 1,\n  srcIp: '192.168.100.1',\n  dstIp: '192.168.1.23',\n  srcPort: 5060,\n  dstPort: 5060 \n}\n```\n\n#### Example: Adding vendor extensions\n```js\nvar HEPjs = require('./index');\nHEPjs.addVendorExtensions({\n    0x0008: {\n        0x0080: {\n            keyName: \"conversationId\"\n        },\n        0x0081: {\n            keyName: \"organizationId\"\n        },\n        0x0082: {\n            keyName: \"siteId\"\n        },\n        0x0083: {\n            keyName: \"trunkBaseId\"\n        },\n        0x0084: {\n            keyName: \"edgeId\"\n        },\n        0x0085: {\n            keyName: \"testUInt8\",\n            type: \"UInt8\"\n        },\n        0x0086: {\n            keyName: \"testUInt16\",\n            type: \"UInt16\"\n        },\n        0x0087: {\n            keyName: \"testUInt32\",\n            type: \"UInt32\"\n        }\n    }\n});\n\nvar hepData = {\n    \"rcinfo\": {\n        \"protocolFamily\": 2,\n        \"protocol\": 6,\n        \"srcIp\": \"172.26.26.72\",\n        \"dstIp\": \"172.26.21.185\",\n        \"srcPort\": 64831,\n        \"dstPort\": 8060,\n        \"timeSeconds\": 1592975786,\n        \"timeUseconds\": 669278,\n        \"payloadType\": 1,\n        \"captureId\": 8,\n        \"organizationId\": \"3bac7742-243f-4af7-ba39-f4098b941eda\",\n        \"edgeId\": \"268c720e-b939-4484-966d-80a1123e3810\",\n        \"conversationId\": \"\",\n        \"siteId\": \"\",\n        \"trunkBaseId\": \"\",\n        \"testUInt8\": 5,\n        \"testUInt16\": 10,\n        \"testUInt32\": 20\n    },\n    \"payload\": \"INVITE sip:BellUser2@172.26.21.185:8060;transport=tls SIP/2.0\\r\\nTo:  \u003csip:BellUser2@172.26.21.185:8060\u003e\\r\\nFrom:  \u003csip:BellStation1@172.26.21.185:8060\u003e;tag=974329\\r\\ncall-id: 3935064a-294e-44d8-930d-1a87b90515bb\\r\\nCSeq: 1 INVITE\\r\\nallow-events: conference, talk, hold\\r\\nContact:  \u003csip:BellStation1@172.26.26.72:5061;transport=tls\u003e\\r\\nx-phonesim-proxy-type: primary\\r\\ncontent-type: application/sdp\\r\\nx-edge-id: 268c720e-b939-4484-966d-80a1123e3810\\r\\nx-edge-name: qf-bell\\r\\nx-test-id: Station2Station\\r\\nx-test-name: Station to Station Keyword Test\\r\\nUser-Agent: PolycomSoundPointIP-SPIP_450-UA/4.0.10.0689_000025CC0001\\r\\nx-phonesim: 1.0.0-534\\r\\ncontent-length: 567\\r\\nVia: SIP/2.0/TLS qf-lempel:5060;branch=z9hG4bK416647af6e43448b8fc9c8b804713a0e\\r\\n\\r\\nv=0\\r\\no=- 4056025290 3801964586 IN IP4 172.26.26.72\\r\\ns= \\r\\nt=0 0\\r\\na=group:ANAT 1 2\\r\\nm=audio 20522 RTP/SAVP 0 8 9 101\\r\\nc=IN IP4 172.26.26.72\\r\\na=mid:1\\r\\na=rtpmap:101 telephone-event/8000\\r\\na=fmtp:101 0-15\\r\\na=crypto:1 AES_CM_256_HMAC_SHA1_80 inline:ba6DaKfQLSQQbYNMtL1ng2xCVbJuihEgzeajdEWIHT4qGpfrPwuTMDIasyhSOA\\r\\na=sendrecv\\r\\nm=audio 23824 RTP/SAVP 0 8 9 101\\r\\nc=IN IP6 2620:102:c000:f10:d::6050\\r\\na=mid:2\\r\\na=rtpmap:101 telephone-event/8000\\r\\na=fmtp:101 0-15\\r\\na=crypto:1 AES_CM_256_HMAC_SHA1_80 inline:ba6DaKfQLSQQbYNMtL1ng2xCVbJuihEgzeajdEWIHT4qGpfrPwuTMDIasyhSOA\\r\\na=sendrecv\\r\\n\"\n};\n\nvar hepBuf = HEPjs.encapsulate(hepData.payload, hepData.rcinfo);\nconsole.log(JSON.stringify(HEPjs.decapsulate(hepBuf), undefined, 2));\n\n// Output:\n\n// {\n//   \"rcinfo\": {\n//     \"protocolFamily\": 2,\n//     \"protocol\": 6,\n//     \"srcIp\": \"172.26.26.72\",\n//     \"dstIp\": \"172.26.21.185\",\n//     \"srcPort\": 64831,\n//     \"dstPort\": 8060,\n//     \"timeSeconds\": 1592975786,\n//     \"timeUseconds\": 669278,\n//     \"payloadType\": 1,\n//     \"captureId\": 8,\n//     \"hepNodeName\": \"8\",\n//     \"conversationId\": \"\",\n//     \"organizationId\": \"3bac7742-243f-4af7-ba39-f4098b941eda\",\n//     \"siteId\": \"\",\n//     \"trunkBaseId\": \"\",\n//     \"edgeId\": \"268c720e-b939-4484-966d-80a1123e3810\",\n//     \"testUInt8\": 5,\n//     \"testUInt16\": 10,\n//     \"testUInt32\": 20\n//   },\n//   \"payload\": \"INVITE sip:BellUser2@172.26.21.185:8060;transport=tls SIP/2.0\\r\\nTo:  \u003csip:BellUser2@172.26.21.185:8060\u003e\\r\\nFrom:  \u003csip:BellStation1@172.26.21.185:8060\u003e;tag=974329\\r\\ncall-id: 3935064a-294e-44d8-930d-1a87b90515bb\\r\\nCSeq: 1 INVITE\\r\\nallow-events: conference, talk, hold\\r\\nContact:  \u003csip:BellStation1@172.26.26.72:5061;transport=tls\u003e\\r\\nx-phonesim-proxy-type: primary\\r\\ncontent-type: application/sdp\\r\\nx-edge-id: 268c720e-b939-4484-966d-80a1123e3810\\r\\nx-edge-name: qf-bell\\r\\nx-test-id: Station2Station\\r\\nx-test-name: Station to Station Keyword Test\\r\\nUser-Agent: PolycomSoundPointIP-SPIP_450-UA/4.0.10.0689_000025CC0001\\r\\nx-phonesim: 1.0.0-534\\r\\ncontent-length: 567\\r\\nVia: SIP/2.0/TLS qf-lempel:5060;branch=z9hG4bK416647af6e43448b8fc9c8b804713a0e\\r\\n\\r\\nv=0\\r\\no=- 4056025290 3801964586 IN IP4 172.26.26.72\\r\\ns= \\r\\nt=0 0\\r\\na=group:ANAT 1 2\\r\\nm=audio 20522 RTP/SAVP 0 8 9 101\\r\\nc=IN IP4 172.26.26.72\\r\\na=mid:1\\r\\na=rtpmap:101 telephone-event/8000\\r\\na=fmtp:101 0-15\\r\\na=crypto:1 AES_CM_256_HMAC_SHA1_80 inline:ba6DaKfQLSQQbYNMtL1ng2xCVbJuihEgzeajdEWIHT4qGpfrPwuTMDIasyhSOA\\r\\na=sendrecv\\r\\nm=audio 23824 RTP/SAVP 0 8 9 101\\r\\nc=IN IP6 2620:102:c000:f10:d::6050\\r\\na=mid:2\\r\\na=rtpmap:101 telephone-event/8000\\r\\na=fmtp:101 0-15\\r\\na=crypto:1 AES_CM_256_HMAC_SHA1_80 inline:ba6DaKfQLSQQbYNMtL1ng2xCVbJuihEgzeajdEWIHT4qGpfrPwuTMDIasyhSOA\\r\\na=sendrecv\\r\\n\"\n// }\n```\n\n#### HEP/EEP Specs:\n\nhttp://hep.sipcapture.org/\n\n\n###### This Project is sponsored by [QXIP BV](http://qxip.net)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsipcapture%2Fhep-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsipcapture%2Fhep-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsipcapture%2Fhep-js/lists"}