{"id":19095180,"url":"https://github.com/eyedeekay/sam-forwarder","last_synced_at":"2025-10-10T08:09:13.977Z","repository":{"id":50701532,"uuid":"140782928","full_name":"eyedeekay/sam-forwarder","owner":"eyedeekay","description":"i2ptunnel for Go applications, using SAM instead of I2CP.","archived":false,"fork":false,"pushed_at":"2023-03-07T00:37:16.000Z","size":1851,"stargazers_count":25,"open_issues_count":4,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-08-09T21:37:36.163Z","etag":null,"topics":["anonymous","i2p","i2pd","proxy","sam-api","sam-forwarder","tcp","tunnel","udp","vpn"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eyedeekay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.html","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":"2018-07-13T01:46:41.000Z","updated_at":"2025-08-04T07:09:10.000Z","dependencies_parsed_at":"2024-06-18T21:53:12.069Z","dependency_job_id":null,"html_url":"https://github.com/eyedeekay/sam-forwarder","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/eyedeekay/sam-forwarder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eyedeekay%2Fsam-forwarder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eyedeekay%2Fsam-forwarder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eyedeekay%2Fsam-forwarder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eyedeekay%2Fsam-forwarder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eyedeekay","download_url":"https://codeload.github.com/eyedeekay/sam-forwarder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eyedeekay%2Fsam-forwarder/sbom","scorecard":{"id":388870,"data":{"date":"2025-08-11","repo":{"name":"github.com/eyedeekay/sam-forwarder","commit":"e0a5b3efe0e473f3a2d3bf2c58c1c19a61c38d72"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.3,"checks":[{"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":"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":"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":"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":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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":"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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.html:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating alpine:edge to alpine:edge@sha256:115729ec5cb049ba6359c3ab005ac742012d92bbaa5b8bc1a878f1e8f62c0cb8","Warn: goCommand not pinned by hash: Dockerfile:14","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   1 goCommand dependencies pinned"],"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":"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":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2025-3683 / GHSA-w9hf-35q4-vcjw","Warn: Project is vulnerable to: GO-2023-2402 / GHSA-45x7-px36-x8w8","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77"],"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-18T17:18:51.135Z","repository_id":50701532,"created_at":"2025-08-18T17:18:51.135Z","updated_at":"2025-08-18T17:18:51.135Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279003294,"owners_count":26083555,"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-10-10T02:00:06.843Z","response_time":62,"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":["anonymous","i2p","i2pd","proxy","sam-api","sam-forwarder","tcp","tunnel","udp","vpn"],"created_at":"2024-11-09T03:33:05.874Z","updated_at":"2025-10-10T08:09:13.960Z","avatar_url":"https://github.com/eyedeekay.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sam-forwarder\n\nForward a local port to i2p over the SAM API, or proxy a destination to a port\non the local host. This is no longer substantially a work-in-progress, it's a\nvery useful way of configuring applications in an i2ptunnel-like way. TCP and\nUDP are supported, but there may be some lingering bugs in UDP, please report\nthem if found.\n\n**STATUS:** This project is maintained. I will respond to issues, pull requests,\nand feature requests within a few days. I am not adding many new features to it\nat this time.\n\n## getting\n\n        go get -u github.com/eyedeekay/sam-forwarder/samcatd\n        # for now\n\n## building\n\nJust:\n\n        make deps build\n\nand it will be in the folder ./bin/\n\n[![Build Status](https://travis-ci.org/eyedeekay/sam-forwarder.svg?branch=master)](https://travis-ci.org/eyedeekay/sam-forwarder)\n\n## Usage:\n\nThere are a number of ways to use sam-forwarder:\n\n### [usage/configuration](docs/USAGE.md) as an application(Start here for samcatd)\n\n### [embedding](docs/EMBEDDING.md) in other applications\n\n### [encapsulate](docs/PACKAGECONF.md) configuration for i2p-enabled packages\n\n### [implement](interface/README.md) the interface for fine-grained control over SAM connections\n\n## binaries\n\nThe standalone application for configuring tunnels is named samcatd and it's\nmain package is in the directory ```./samcatd```. It works as a cli and is\ncapable of running a WebUI, which is currently view-only. In a future time, the\nWebUI will also be capable of configuring and editing tunnels.\n\nThe previous application ephsite has been fully retired. If you were using it,\nit can usually be replaced with ```samcatd -s``` and your existing arguments.\n\nCurrent limitations:\n====================\n\nI need samcatd to accept a configuration folder identical to\n/etc/i2pd/tunnels.conf.d, since part of the point of this is to be compatible\nwith i2pd's tunnels configuration. Once this is done, I'll resume turning it\ninto a .deb package.\n\nIt doesn't encrypt the .i2pkeys file by default, so if someone can steal them,\nthen they can use them to construct tunnels to impersonate you. Experimental\nsupport for encrypted saves has been added. The idea is that only the person\nwith the key will be able to decrypt and start the tunnels. It is up to the user\nto determine how to go about managing these keys. Right now this system is\npretty bad. I'll be addressing that soon too.\n\nExperimental support for KCP-based error correction and streaming-over-datagrams\nis in the works. Some kind of reverse-proxy or filter is also an obvious choice.\n\nI've only enabled the use of a subset of the i2cp and tunnel configuration\noptions, the ones I use the most and for no other real reason assume other\npeople use the most. They're pretty easy to add, it's just boring. *If you*\n*want an i2cp or tunnel option that isn't available, bring it to my attention*\n*please.* I'm pretty responsive when people actually contact me, it'll probably\nbe added within 24 hours. I intend to have configuration options for all\nrelevant i2cp and tunnel options, which I'm keeping track of\n[here](config/CHECKLIST.md).\n\nI need to just change how the configuration is done entirely. I want it to work\nwith the configuration formats used by each I2P router.\n\nTLS configuration is experimental. I have decided to implement optional,\nautomatically-configured self-signed TLS certificates. No CA support is planned\nas an alternative CA would have to be used and no apparent option exists which\nwould be usable. If you're working on anything like that, I would like very\nto know.\n\n## Stuff that's using it:\n\nMostly mine, but this is all Free-as-in-Freedom for anyone to use:\n\n  * [eephttpd](https://github.com/eyedeekay/eephttpd)\n  * [my fork of wikigopher](https://github.com/eyedeekay/wikigopher)\n  * [orangeforum](https://github.com/s-gv/orangeforum)\n\nDonate\n------\n\n### Monero Wallet Address\n\n  XMR:43V6cTZrUfAb9JD6Dmn3vjdT9XxLbiE27D1kaoehb359ACaHs8191mR4RsJH7hGjRTiAoSwFQAVdsCBToXXPAqTMDdP2bZB\n\n### Bitcoin Wallet Address\n\n  BTC:159M8MEUwhTzE9RXmcZxtigKaEjgfwRbHt\n\nIndex\n-----\n\n * [readme](index.html)\n * [usage](usage.html)\n * [configuration](packageconf.html)\n * [embedding](embedding.html)\n * [interface](interface.htnl)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feyedeekay%2Fsam-forwarder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feyedeekay%2Fsam-forwarder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feyedeekay%2Fsam-forwarder/lists"}