├── .gitignore ├── README.md ├── app ├── HELP.md ├── HOW-TO-INSTALL.txt ├── README.md ├── mvnw ├── mvnw.cmd ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── web │ │ │ │ └── console │ │ │ │ └── app │ │ │ │ ├── AppContext.java │ │ │ │ ├── Application.java │ │ │ │ ├── SinglePageAppController.java │ │ │ │ ├── config │ │ │ │ └── ConfigManager.java │ │ │ │ ├── controllers │ │ │ │ ├── AppController.java │ │ │ │ ├── FilesApiController.java │ │ │ │ ├── HealthApiController.java │ │ │ │ └── SearchApiController.java │ │ │ │ ├── files │ │ │ │ ├── BinaryDataController.java │ │ │ │ ├── FileInfo.java │ │ │ │ ├── FileOperations.java │ │ │ │ ├── FileService.java │ │ │ │ ├── FileTransfer.java │ │ │ │ ├── FileTypeDetector.java │ │ │ │ ├── PosixPermission.java │ │ │ │ ├── SearchOperations.java │ │ │ │ ├── copy │ │ │ │ │ ├── FileCopyProgressResponse.java │ │ │ │ │ ├── FileCopyRequest.java │ │ │ │ │ └── FileCopyTask.java │ │ │ │ └── search │ │ │ │ │ ├── SearchResult.java │ │ │ │ │ └── SearchTask.java │ │ │ │ ├── health │ │ │ │ ├── ProcessInfo.java │ │ │ │ ├── SystemHealthMonitor.java │ │ │ │ └── SystemStats.java │ │ │ │ ├── security │ │ │ │ ├── CustomAuthEntryPoint.java │ │ │ │ ├── JwtAuthorizationFilter.java │ │ │ │ ├── JwtTokenController.java │ │ │ │ └── WebshellUserDetailsService.java │ │ │ │ └── terminal │ │ │ │ ├── PtyProcessPipe.java │ │ │ │ ├── PtySession.java │ │ │ │ ├── SshPtyProcess.java │ │ │ │ ├── SshPtyProcessPipe.java │ │ │ │ └── TerminalWebsocketHandler.java │ │ └── resources │ │ │ └── application.properties │ └── test │ │ └── java │ │ └── cloudshell │ │ └── app │ │ └── AppApplicationTests.java └── start-web-console.sh └── ui └── web-console ├── .editorconfig ├── .gitignore ├── README.md ├── angular.json ├── e2e ├── protractor.conf.js ├── src │ ├── app.e2e-spec.ts │ └── app.po.ts └── tsconfig.e2e.json ├── package-lock.json ├── package.json ├── src ├── app │ ├── app-routing.module.ts │ ├── app.component.css │ ├── app.component.html │ ├── app.component.spec.ts │ ├── app.component.ts │ ├── app.module.ts │ ├── data.service.spec.ts │ ├── data.service.ts │ ├── guards │ │ ├── auth-guard.guard.spec.ts │ │ └── auth-guard.guard.ts │ ├── home │ │ ├── editor │ │ │ ├── editor.component.css │ │ │ ├── editor.component.html │ │ │ ├── editor.component.spec.ts │ │ │ └── editor.component.ts │ │ ├── files │ │ │ ├── browser │ │ │ │ ├── browser.component.css │ │ │ │ ├── browser.component.html │ │ │ │ ├── browser.component.spec.ts │ │ │ │ ├── browser.component.ts │ │ │ │ ├── info │ │ │ │ │ ├── info.component.css │ │ │ │ │ ├── info.component.html │ │ │ │ │ ├── info.component.spec.ts │ │ │ │ │ └── info.component.ts │ │ │ │ ├── new-item │ │ │ │ │ ├── new-item.component.css │ │ │ │ │ ├── new-item.component.html │ │ │ │ │ ├── new-item.component.spec.ts │ │ │ │ │ └── new-item.component.ts │ │ │ │ └── rename │ │ │ │ │ ├── rename.component.css │ │ │ │ │ ├── rename.component.html │ │ │ │ │ ├── rename.component.spec.ts │ │ │ │ │ └── rename.component.ts │ │ │ ├── files.component.css │ │ │ ├── files.component.html │ │ │ ├── files.component.spec.ts │ │ │ ├── files.component.ts │ │ │ ├── tree │ │ │ │ ├── tree.component.css │ │ │ │ ├── tree.component.html │ │ │ │ ├── tree.component.spec.ts │ │ │ │ └── tree.component.ts │ │ │ └── viewer │ │ │ │ ├── image-viewer │ │ │ │ ├── image-viewer.component.css │ │ │ │ ├── image-viewer.component.html │ │ │ │ ├── image-viewer.component.spec.ts │ │ │ │ └── image-viewer.component.ts │ │ │ │ ├── media-player │ │ │ │ ├── media-player.component.css │ │ │ │ ├── media-player.component.html │ │ │ │ ├── media-player.component.spec.ts │ │ │ │ └── media-player.component.ts │ │ │ │ └── unsupported-content-viewer │ │ │ │ ├── unsupported-content-viewer.component.css │ │ │ │ ├── unsupported-content-viewer.component.html │ │ │ │ ├── unsupported-content-viewer.component.spec.ts │ │ │ │ └── unsupported-content-viewer.component.ts │ │ ├── home.component.css │ │ ├── home.component.html │ │ ├── home.component.spec.ts │ │ ├── home.component.ts │ │ ├── monitoring │ │ │ ├── monitoring.component.css │ │ │ ├── monitoring.component.html │ │ │ ├── monitoring.component.spec.ts │ │ │ └── monitoring.component.ts │ │ ├── search │ │ │ ├── search.component.css │ │ │ ├── search.component.html │ │ │ ├── search.component.spec.ts │ │ │ └── search.component.ts │ │ ├── settings │ │ │ ├── settings.component.css │ │ │ ├── settings.component.html │ │ │ ├── settings.component.spec.ts │ │ │ └── settings.component.ts │ │ ├── terminal │ │ │ ├── terminal.component.css │ │ │ ├── terminal.component.html │ │ │ ├── terminal.component.spec.ts │ │ │ └── terminal.component.ts │ │ └── uploader-progress │ │ │ ├── uploader-progress.component.css │ │ │ ├── uploader-progress.component.html │ │ │ ├── uploader-progress.component.spec.ts │ │ │ └── uploader-progress.component.ts │ ├── intercepters │ │ └── auth.ts │ ├── login │ │ ├── login.component.css │ │ ├── login.component.html │ │ ├── login.component.spec.ts │ │ └── login.component.ts │ ├── model │ │ ├── editor-context.ts │ │ ├── file-info.ts │ │ ├── file-item.ts │ │ ├── file-operation-item.ts │ │ ├── file-upload-item.ts │ │ ├── folder-tab.ts │ │ ├── folder-upload-item.ts │ │ ├── navigation-tree-node.ts │ │ ├── posix-permissions.ts │ │ ├── search-context.ts │ │ ├── tab-item.ts │ │ └── terminal-session.ts │ └── utility │ │ └── utils.ts ├── assets │ ├── .gitkeep │ ├── file.png │ ├── files.json │ ├── folder.png │ └── logo.png ├── browserslist ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── favicon.ico ├── index.html ├── karma.conf.js ├── main.ts ├── polyfills.ts ├── styles.css ├── test.ts ├── tsconfig.app.json ├── tsconfig.spec.json └── tslint.json ├── tsconfig.json └── tslint.json /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # See http://help.github.com/ignore-files/ for more about ignoring files. 3 | 4 | # compiled output 5 | ui/dist 6 | ui/tmp 7 | ui/out-tsc 8 | 9 | # dependencies 10 | ui/node_modules 11 | 12 | # profiling files 13 | ui/chrome-profiler-events.json 14 | ui/speed-measure-plugin.json 15 | 16 | # IDEs and editors 17 | ui/.idea 18 | ui.project 19 | ui.classpath 20 | ui.c9/ 21 | ui*.launch 22 | ui.settings/ 23 | ui*.sublime-workspace 24 | 25 | 26 | 27 | # misc 28 | ui/.sass-cache 29 | ui/connect.lock 30 | ui/coverage 31 | ui/libpeerconnection.log 32 | uinpm-debug.log 33 | uiyarn-error.log 34 | uitestem.log 35 | ui/typings 36 | 37 | # System Files 38 | .DS_Store 39 | Thumbs.db 40 | 41 | app/.mvn 42 | app/.settings/ 43 | app/.classpath 44 | app/.project 45 | app/target/ 46 | 47 | app/src/main/resources/static 48 | 49 | ui/package-lock.json 50 | app/cloud-shell-bin.tar 51 | app/cloud-shell-bin.tar.gz 52 | app/cloud-shell.jar 53 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Linux Web Console 2 | 3 | Easy to use web based file manager with built in text editor, terminal, image viewer and video player 4 | 5 |
7 | It is an web based file manager and terminal emulator, with some built in tools like tabbed text editor, search and image/video player. 8 | It can be useful to you if you want to access/manage/deploy apps on a remote linux server from your desktop and mobile browser. You can create/edit/manage/search files in multiple tabs, 9 | run commands using built in terminal, and view images and videos, all from your browser. Setting it up on server is also very easy, as it generates and configure itself to use self signed certificate for ssl. 10 |
11 | 12 |
13 |
14 |
15 |
16 |
17 |
18 |