{"id":22012732,"url":"https://github.com/joybiswas007/remote-wv-go","last_synced_at":"2025-06-28T01:02:06.538Z","repository":{"id":261965698,"uuid":"885862160","full_name":"joybiswas007/remote-wv-go","owner":"joybiswas007","description":"Serve your local Widevine CDM as remote API.","archived":false,"fork":false,"pushed_at":"2025-01-07T04:54:52.000Z","size":56,"stargazers_count":5,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-06T21:49:08.838Z","etag":null,"topics":["api","cdm","golang","rest-api","widevine"],"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/joybiswas007.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,"zenodo":null}},"created_at":"2024-11-09T15:36:43.000Z","updated_at":"2025-04-08T13:36:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"56b57c11-ce3f-4221-aa40-673489bfa843","html_url":"https://github.com/joybiswas007/remote-wv-go","commit_stats":null,"previous_names":["joybiswas007/remote-wv-go"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/joybiswas007/remote-wv-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joybiswas007%2Fremote-wv-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joybiswas007%2Fremote-wv-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joybiswas007%2Fremote-wv-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joybiswas007%2Fremote-wv-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joybiswas007","download_url":"https://codeload.github.com/joybiswas007/remote-wv-go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joybiswas007%2Fremote-wv-go/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262357430,"owners_count":23298454,"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":["api","cdm","golang","rest-api","widevine"],"created_at":"2024-11-30T03:14:15.346Z","updated_at":"2025-06-28T01:02:06.123Z","avatar_url":"https://github.com/joybiswas007.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# remote-wv-go\n\nServe your local Widevine CDM as remote API.\n\n## Note\nThis repository does not promote piracy of any kind. This project was created for educational purpose ONLY. This repository does not provide any CDM (Content Decryption Module). You will need your own Widevine CDM to serve it as remote API.\n\n## Getting Started\n\nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.\n\nFirst: `cp env.example .env`\n\n## MakeFile\n\nRun build make command with tests\n```bash\nmake all\n```\n\nBuild the application\n```bash\nmake build\n```\n\nAfter running the api for first time a default super_user is created\nIt's not good practice to loggin the passkey\nfetch the passkey of that user via the cli app\n\nBuild the cli app\n```bash\nmake cli\n```\n\nRun the application\n```bash\nmake run\n```\n\nLive reload the application:\n```bash\nmake watch\n```\n\nRun the test suite:\n```bash\nmake test\n```\n\nClean up binary from the last build:\n```bash\nmake clean\n```\n\n## Authentication\n\nAll routes are protected to prevent unauthorized access.\n\nA default super_user with a passkey will be created in the database when the API runs\nfor the first time. Check db for passkey.\n\n### User Types\nOwner: Set both super_user and sudoer to 1.\u003cbr/\u003e\nRegular User: Only sudoer permission is needed (super_user can be 0).\n\n### Permissions\n0: False\n1: True\n\n### Fields:\nsuper_user: 0 (no super user access) or 1 (super user access)\u003cbr/\u003e\nsudoer: 0 (no sudo access) or 1 (sudo access)\n\nBy default both `super_user` and `sudoer` field is set to 0.\n\n## Routes\n\ncheck whether user is authenticated or not:\n```\ncurl --location --request POST 'localhost:4000/v1/auth' \\\n--header 'passkey: passkey'\n```\n\nget callenge:\n```\ncurl --location 'localhost:4000/v1/challenge' \\\n--header 'passkey: passkey' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"pssh\": \"pass the pssh\"\n}'\n```\n\nget decryption key:\n```\ncurl --location 'localhost:4000/v1/key' \\\n--header 'passkey: passkey' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"license\": \"CAIS+license you get back from any site\",\n    \"challenge\": \"CAES+ you received from the challenge route\",\n    \"pssh\": \"pass the pssh again\"\n}'\n```\n\nget cached key:\n```\ncurl --location 'localhost:4000/v1/arsenal' \\\n--header 'passkey: passkey' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"pssh\": \"pass the pssh\"\n}'\n```\n\n## Super User routes\n### passkey\n\ngenerate:\n```\ncurl --location 'http://localhost:8080/su/passkey' \\\n--header 'Content-Type: application/json' \\\n--header 'passkey: super_user_passkey' \\\n--data '{\n    \"sudoer\": 1, // Default: 0\n    \"super_user\": 0, // Default: 0 (Super User is only for owner. Give permission wisely!)\n    \"quantity\": 5 // Default: 1\n}`\n```\nreturns an array of passkeys\n\nrevoke:\n\n```\ncurl --location 'http://localhost:8080/su/revoke' \\\n--header 'Content-Type: application/json' \\\n--header 'passkey: super_user passkey' \\\n--data '{\n    \"passkey\": \"pass key to be revoked\"\n}'\n```\n\n## Credits\nThe bulk of the Widevine related code was taken from `chris124567/hulu`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoybiswas007%2Fremote-wv-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoybiswas007%2Fremote-wv-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoybiswas007%2Fremote-wv-go/lists"}