{"id":44457985,"url":"https://github.com/laincloud/entry","last_synced_at":"2026-02-12T18:08:42.536Z","repository":{"id":57585663,"uuid":"59558676","full_name":"laincloud/entry","owner":"laincloud","description":"Attach to LAIN app container via `lain enter`","archived":false,"fork":false,"pushed_at":"2019-04-25T08:36:48.000Z","size":4897,"stargazers_count":75,"open_issues_count":0,"forks_count":33,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-06-20T12:40:35.972Z","etag":null,"topics":["layer2"],"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/laincloud.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}},"created_at":"2016-05-24T09:18:03.000Z","updated_at":"2024-04-09T19:14:11.000Z","dependencies_parsed_at":"2022-09-10T15:52:06.030Z","dependency_job_id":null,"html_url":"https://github.com/laincloud/entry","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/laincloud/entry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laincloud%2Fentry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laincloud%2Fentry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laincloud%2Fentry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laincloud%2Fentry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/laincloud","download_url":"https://codeload.github.com/laincloud/entry/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laincloud%2Fentry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29375740,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T08:51:36.827Z","status":"ssl_error","status_checked_at":"2026-02-12T08:51:26.849Z","response_time":55,"last_error":"SSL_read: 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":["layer2"],"created_at":"2026-02-12T18:08:41.738Z","updated_at":"2026-02-12T18:08:42.529Z","avatar_url":"https://github.com/laincloud.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Entry\n\n[![Build Status](https://travis-ci.org/laincloud/entry.svg?branch=master)](https://travis-ci.org/laincloud/entry)\n[![MIT license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://opensource.org/licenses/MIT)\n\n## Documentation\n\n相关文档见 [Entry 应用文档](https://laincloud.gitbooks.io/white-paper/content/outofbox/entry.html)\n\n## 架构\n\n### 整体架构\n\n整体架构如下图所示：\n\n![整体架构](docs/figures/entry.png)\n\n- LAIN 应用所有者可以通过 `lain-cli` 或者 `console` 进入除 entry 之外的 LAIN 应用\n- 系统管理员可以在 https://entry.${LAIN_DOMAIN}/web 搜索、回放用户会话或者搜索用户命令\n\n### 审计\n\n`Entry` 设计了完善的审计框架：\n\n- `Entry` 审计所有经自己建立的用户会话\n- 系统管理员还可以从 LAIN 节点进入所有的 LAIN 应用（包括 entry），这时由堡垒机负责审计\n\n如下图所示：\n\n![审计框架](docs/figures/audit.png)\n\n### 数据库\n\n`Entry` 将用户会话和命令存储于数据库，数据表如下图所示：\n\n![数据表](docs/figures/database.png)\n\n\u003e - 请根据 [server/sql/bootstrap.sql](server/sql/bootstrap.sql) 创建表\n\u003e - 请根据 [server/sql/create_db_and_user.sql](server/sql/create_db_and_user.sql) 创建数据库和用户\n\n## 部署\n\n### 配置\n\n请参考 [example.json](example.json) 编写配置文件，并上传到 lvault：\n\n```\nlain secret add ${LAIN-Domain} web /lain/app/prod.json -f example.json\n```\n\n\u003e - `smtp.address` 需要包含端口，如：${mail-address}:25\n\u003e - `smtp.password` 可选，为空时不使用 auth\n\n## 开发\n\n- `server/gen` 下除 `server/gen/restapi/configure_entry.go` 外均由 [go-swagger](https://github.com/go-swagger/go-swagger) 生成，请不要手动修改\n- `server/gen/restapi/configure_entry.go` 包含初始化逻辑以及后端 API 配置\n- `server/handler` 包含后端 API 的实际逻辑\n\n\u003e 由 `swagger.yml` 生成代码：\n\u003e\n\u003e ```\n\u003e go get -u github.com/go-swagger/go-swagger/cmd/swagger  # 安装 swagger\n\u003e swagger generate server -f ./swagger.yml -t server/gen  # 生成代码\n\u003e ```\n\n## Licensing\n\nEntry is released under [MIT](https://github.com/laincloud/entry/blob/master/LICENSE) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaincloud%2Fentry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flaincloud%2Fentry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaincloud%2Fentry/lists"}