Commit Graph
273 Commits
Author SHA1 Message Date
wancat e16b328892 feat: refactor stage to multiple route design 2023-08-30 18:05:11 +08:00
wancat 1582d8c62a fix: change workflow name 2023-08-29 21:10:17 +08:00
wancat 2bc94a33e2 fix: remove unmaintained test 2023-08-29 15:56:23 +08:00
wancat 3dae9e8552 feat: store graph in session manager 2023-08-29 14:28:09 +08:00
wancat ee7cd083bd feat: handle discover in server 2023-08-29 13:28:18 +08:00
wancat 3b8264e39e refactor: refactor commandHandler to class 2023-08-29 12:08:36 +08:00
wancat c3683ddaea feat: import file-graph package
* Update Dockerfile structure, copy quests, packages to sub folder
2023-08-29 11:58:14 +08:00
wancat 54e0689d30 fix: remove mounting at production error 2023-08-26 11:11:13 +08:00
Lin, Hung-Shin 5da311d9a4 Merge pull request #14 from lancatlin/server-session-manage
* add `status` and `lastActivityAt` field to session
* automatically delete expiry container, mark session as inactive
* default retrieving only active session on `GET /sessions`
* create container on session creation, start container on socket connection
2023-08-24 11:38:02 +08:00
wancat 3f50b99d1a fix: not to use 'force' in container deletion 2023-08-24 11:36:24 +08:00
wancat 27f8525585 fix: add missing "error" field in command 2023-08-24 11:35:43 +08:00
Annie Huang 0d02b7e1d5 fix: dockerfile node access 2023-08-23 22:42:29 +08:00
wancat ad3dd2fb18 fix: default retrieve active session
+ typo 'deactive' -> 'inactive',
2023-08-23 12:27:20 +08:00
wancat 22060070b9 feat: add session expiry deletion script and scheduler 2023-08-23 12:22:15 +08:00
wancat 8e63284211 feat: seperate container creation and get 2023-08-23 11:51:16 +08:00
wancat 2c866d2e83 feat: add status, lastActivityAt column to session 2023-08-23 11:50:49 +08:00
wancat 4b3a80608c fix: remove hard coded project path
+ pass host_pwd using docker compose
+ mount it only when provided
2023-08-22 16:05:06 +08:00
wancat 9aa9367f9e refactor: move quests out of server
+ move quests from server/quests to ./quests
+ add frontend image in docker compose development
2023-08-22 11:48:44 +08:00
wancat c3e735b627 fix: unset variable after execution 2023-08-21 20:40:05 +08:00
wancat f08ee333a7 feat: push new pwd when 'cd' 2023-08-21 20:40:05 +08:00
wancat 096b7a7714 feat: push discover event to frontend 2023-08-21 20:40:05 +08:00
wancat f43fa1b5ef fix: limit 2 level to only 5 children 2023-08-21 20:40:05 +08:00
wancat 34d5ace664 feat: use minimist to refactor cli 2023-08-21 20:40:05 +08:00
wancat 6ace18475b refactor: move client to sperate packages, rename cli to container 2023-08-21 20:40:05 +08:00
wancat 41a12c9aa8 feat: collect 2 level files info when ls
* change cli dir to /usr/local/lib/cli
* refactor cli to multiple files
* add handleCommand and listeners pattern
2023-08-21 20:40:05 +08:00
wancat a151d2d667 feat: add type and color to response 2023-08-09 21:14:57 +08:00
wancat 5cad3ecc12 fix: mark progress to stage.next directly 2023-08-08 20:38:27 +08:00
wancat a73aa8b461 fix: prevent execute command twice 2023-08-08 20:38:27 +08:00
wancat 6f368f761e feat: add hints to session, update API 2023-08-08 20:38:27 +08:00
wancat 094332da53 feat: add commandHandler 2023-08-08 20:38:27 +08:00
wancat 0de4b6ac9d feat: design game file and parse it to mongo
* 取消用 README 來寫關卡說明
2023-08-08 20:38:27 +08:00
wancat 6204bd0b17 feat: change to use Zsh
* show message from server response
* send output and error to server
2023-08-08 20:38:27 +08:00
wancat 0153eae673 feat: new cli client to send and receive msg from api 2023-08-08 20:38:27 +08:00
wancat 12a42d117c feat: write story of the game 2023-08-08 20:38:27 +08:00
wancat 06ee53f194 fix: send string 2023-08-08 20:36:49 +08:00
wancat c3030b22be feat: add mongo init script, use root in app image 2023-07-31 17:19:03 +08:00
wancat ec90c484b4 feat: add parameters and subcommand to client.js
- Added `"commander": "^11.0.0"` as a dependency in the `package.json` file
- Added an `import { program } from 'commander'` statement in the `client.js` file
- Modified the `createdSession` function in the `client.js` file to use `program.opts().host` instead of `API_ENDPOINT`
- Added a `getSessionList` function in the `client.js` file to fetch the list of sessions
- Added a `lastSession` function in the `client.js` file to get the last session from the session list
- Added a `connect` function in the `client.js` file to establish a socket connection
- Modified the `main` function in the `client.js` file to use `program.opts().session` instead of `process.argv[2]` to get the session ID
- Modified the `main` function in the `client.js` file to use `program.opts().host` instead of `API_ENDPOINT` to initialize the socket connection
- Added a `program` object with options and actions in the `client.js` file
- Added `.bash_history` to the `.gitignore` file
- Added `.viminfo` to the `.gitignore` file
- Added `*.swp` to the `.gitignore` file

Signed-off-by: wancat <wancat@wancat.cc>
2023-07-31 15:42:58 +08:00
wancat b9643e7d5c feat: capture output and exit code of commands
+ ignore interactive commands like vim, top or nano
2023-07-27 17:56:32 +08:00
wancat d997a061a9 feat: send command typed in container to API
- Modify the Dockerfile in the `server/quests/helloworld` directory to add a user and change the working directory
- Rename the file `server/quests/helloworld/entrypoint.sh` to `server/quests/helloworld/home/.bashrc`
- Modify the `server/src/config.js` file to add the `isProduction` flag
- Modify the `server/src/utils/docker.js` file to add a `HostConfig` option and bind a directory if not in production mode
- Modify the Dockerfile to add an argument `DOCKER_GID` and create a group and user with the specified `DOCKER_GID`
- Add a new Dockerfile.dev file with the same modifications as the Dockerfile
- Add a new file `inspect.sh`
- Modify the `server/src/client.js` file to use the `API_ENDPOINT` variable instead of a hardcoded URL

Signed-off-by: wancat <wancat@wancat.cc>
2023-07-26 20:54:01 +08:00
wancat 9376e16f72 Success to send command to api
+ require sourcing entrypoint.sh manually
2023-07-26 00:12:10 +08:00
wancat 9f74a80551 feat: refactor session management and API usage
- Add an import statement for the `get` function from `./utils/env.js`
- Add a constant for `API_ENDPOINT` using the `get` function
- Remove the `sessionId` constant declaration
- Add an `async` function `getSessionId` for fetching session ID
- Add an `async` function `main` for the main program logic
- Initialize `sessionId` using the command line argument or by calling `getSessionId`
- Add a console log statement for the session ID
- Remove the `if` statement for checking `sessionId` existence
- Update the socket URL to use `API_ENDPOINT`
- Add a `socket.on` event listener for the `close` event
- Update the condition for checking the `key` value in `stdin.on` event listener
- Call the `main` function at the end of the file

Signed-off-by: wancat <wancat@wancat.cc>
2023-07-25 15:56:51 +08:00
wancat 88ed447573 fix: error handling
- Remove unnecessary try-catch block in createSession function
- Add error handling for missing session ID in socket.js
- Improve error handling in connectDB function
- Add error handling middleware for server errors
- Add default export for get function in env.js

Signed-off-by: wancat <wancat@wancat.cc>
2023-07-25 15:46:59 +08:00
wancat 943c11714c feat: connect containers to custom network
- Export the `get` function in `utils/env.js`
- Change the Docker image in `docker.js` from `ubuntu` to `lancatlin/quest-helloworld`
- Remove the `createContainer` and `getContainer` functions from `docker.js`
- Add a `network` constant in `docker.js` that gets the Docker network from the config
- Connect the container to the network in `getOrCreateContainer` function in `docker.js`
- Add `API_ENDPOINT` environment variable in the `attachContainer` function in `docker.js`

Signed-off-by: wancat <wancat@wancat.cc>
2023-07-25 15:42:07 +08:00
wancat 3cea54ce71 feat: add new API for recording executed commands
- Add the `jsonwebtoken` dependency to the server's `package.json`
- Add a new file `commandController.js` to the server's API controllers
- Add a new route `/commands` to the server's API routes
- Add a new file `commands.js` to the server's API routes
- Modify the `index.js` file in the server's API routes to import and use the `commands.js` route
- Add a `newCommand` function to the `commandController.js` file
- Add a `Command` model to the `command.js` file in the server's models
- Add the `genSessionJWT` and `verifySessionJWT` functions to the `auth.js` file in the server's utils
- Modify the `attachContainer` function in the `docker.js` file in the server's utils to include a `token` parameter
- Modify the `swagger.yaml` file to include a new route `/commands` for recording executed commands in a session

Signed-off-by: wancat <wancat@wancat.cc>
2023-07-24 16:39:04 +08:00
wancat 95fc25d0ad feat: connect to different container by sessions
Based on the file summaries provided, the best label for this commit would be "feat". This is because the commit introduces several new features to the codebase, such as adding a new ESLint rule, adding a new property to a function, adding authentication middleware, adding a query parameter, and adding a new function to handle user authentication.: update authentication and session handling

- Add `"camelcase"` rule to ESLint configuration
- Add `containerId` property to the `newSession` object in the `createSession` function
- Add authentication middleware to the socket.io connection
- Add a query parameter `session_id` to the socket.io connection in `client.js`
- Add `defaultUser` function to handle user authentication
- Update the `authMiddleware` function to use the `defaultUser` function
- Add `defaultUser` function to handle user authentication in `auth.js`
- Update `getOrCreateContainer` function to use the `id` parameter instead of `name` parameter
2023-07-24 12:21:05 +08:00
wancat c83ca750e1 Connect to different shell 2023-07-22 16:35:44 +08:00
wancat 2dffd2f74d Add config.js, dockerfile 2023-07-21 11:27:01 +08:00
wancat c4e14fa271 Update README, format script 2023-07-20 17:05:01 +08:00
wancat 5410254ee0 Finish get single and delete api for sessions 2023-07-20 16:30:58 +08:00
wancat 43f54b4f93 Create and get session list api 2023-07-20 16:25:54 +08:00