You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ol...@apache.org on 2017/09/05 19:38:07 UTC
[51/51] [partial] ambari git commit: AMBARI-21870. Integrate
LogSearch new UI with the server and get rid of the old one (oleewere)
AMBARI-21870. Integrate LogSearch new UI with the server and get rid of the old one (oleewere)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/02360dd5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/02360dd5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/02360dd5
Branch: refs/heads/trunk
Commit: 02360dd5d788fd2ad7b0edd2f706051c1cc690e8
Parents: 93011b2
Author: oleewere <ol...@gmail.com>
Authored: Fri Sep 1 16:55:25 2017 +0200
Committer: oleewere <ol...@gmail.com>
Committed: Tue Sep 5 21:32:02 2017 +0200
----------------------------------------------------------------------
.../ambari-logsearch-server/build.xml | 3 +
.../ambari-logsearch-server/pom.xml | 7 +-
.../auth/filter/AbstractJWTFilter.java | 193 +
.../auth/model/JWTAuthenticationToken.java | 47 +
.../ambari/logsearch/conf/SecurityConfig.java | 38 +-
.../LogsearchLogoutSuccessHandler.java | 1 -
.../web/filters/LogsearchJWTFilter.java | 150 +-
.../web/model/JWTAuthenticationToken.java | 53 -
.../ambari-logsearch-web-new/.angular-cli.json | 64 -
.../ambari-logsearch-web-new/.editorconfig | 13 -
.../ambari-logsearch-web-new/.gitignore | 42 -
.../ambari-logsearch-web-new/README.md | 28 -
.../e2e/app.e2e-spec.ts | 32 -
.../ambari-logsearch-web-new/e2e/app.po.ts | 29 -
.../e2e/tsconfig.e2e.json | 12 -
.../ambari-logsearch-web-new/karma.conf.js | 62 -
.../ambari-logsearch-web-new/package.json | 64 -
.../ambari-logsearch-web-new/pom.xml | 171 -
.../ambari-logsearch-web-new/protractor.conf.js | 48 -
.../src/app/app.module.ts | 169 -
.../queries/audit-logs-query-params.class.ts | 50 -
.../app/classes/queries/query-params.class.ts | 23 -
...ce-logs-histogram-query-params.class.spec.ts | 203 -
...service-logs-histogram-query-params.class.ts | 69 -
.../queries/service-logs-query-params.class.ts | 31 -
.../accordion-panel.component.html | 25 -
.../accordion-panel.component.less | 42 -
.../accordion-panel.component.spec.ts | 42 -
.../accordion-panel.component.ts | 33 -
.../src/app/components/app.component.html | 34 -
.../src/app/components/app.component.less | 51 -
.../src/app/components/app.component.spec.ts | 71 -
.../src/app/components/app.component.ts | 45 -
.../dropdown-button.component.html | 25 -
.../dropdown-button.component.less | 32 -
.../dropdown-button.component.spec.ts | 79 -
.../dropdown-button.component.ts | 96 -
.../dropdown-list/dropdown-list.component.html | 31 -
.../dropdown-list/dropdown-list.component.less | 41 -
.../dropdown-list.component.spec.ts | 130 -
.../dropdown-list/dropdown-list.component.ts | 63 -
.../filter-button.component.spec.ts | 78 -
.../filter-button/filter-button.component.ts | 80 -
.../filter-dropdown.component.spec.ts | 92 -
.../filter-dropdown.component.ts | 63 -
.../filter-text-field.component.html | 21 -
.../filter-text-field.component.less | 33 -
.../filter-text-field.component.spec.ts | 82 -
.../filter-text-field.component.ts | 87 -
.../filters-panel/filters-panel.component.html | 46 -
.../filters-panel/filters-panel.component.less | 51 -
.../filters-panel.component.spec.ts | 93 -
.../filters-panel/filters-panel.component.ts | 44 -
.../login-form/login-form.component.html | 33 -
.../login-form/login-form.component.less | 22 -
.../login-form/login-form.component.spec.ts | 122 -
.../login-form/login-form.component.ts | 59 -
.../logs-container.component.html | 22 -
.../logs-container.component.less | 25 -
.../logs-container.component.spec.ts | 102 -
.../logs-container/logs-container.component.ts | 105 -
.../logs-list/logs-list.component.html | 54 -
.../logs-list/logs-list.component.less | 138 -
.../logs-list/logs-list.component.spec.ts | 102 -
.../components/logs-list/logs-list.component.ts | 62 -
.../main-container.component.html | 24 -
.../main-container.component.less | 24 -
.../main-container.component.spec.ts | 65 -
.../main-container/main-container.component.ts | 66 -
.../menu-button/menu-button.component.html | 28 -
.../menu-button/menu-button.component.less | 33 -
.../menu-button/menu-button.component.spec.ts | 133 -
.../menu-button/menu-button.component.ts | 97 -
.../app/components/modal/modal.component.html | 40 -
.../components/modal/modal.component.spec.ts | 57 -
.../src/app/components/modal/modal.component.ts | 122 -
.../components/node-bar/node-bar.component.html | 19 -
.../components/node-bar/node-bar.component.less | 39 -
.../node-bar/node-bar.component.spec.ts | 43 -
.../components/node-bar/node-bar.component.ts | 35 -
.../pagination-controls.component.html | 23 -
.../pagination-controls.component.less | 23 -
.../pagination-controls.component.spec.ts | 43 -
.../pagination-controls.component.ts | 73 -
.../pagination/pagination.component.html | 24 -
.../pagination/pagination.component.less | 28 -
.../pagination/pagination.component.spec.ts | 69 -
.../pagination/pagination.component.ts | 72 -
.../time-histogram.component.html | 18 -
.../time-histogram.component.less | 29 -
.../time-histogram.component.spec.ts | 53 -
.../time-histogram/time-histogram.component.ts | 161 -
.../timezone-picker.component.html | 26 -
.../timezone-picker.component.less | 45 -
.../timezone-picker.component.spec.ts | 73 -
.../timezone-picker.component.ts | 77 -
.../components/top-menu/top-menu.component.html | 21 -
.../components/top-menu/top-menu.component.less | 22 -
.../top-menu/top-menu.component.spec.ts | 45 -
.../components/top-menu/top-menu.component.ts | 122 -
.../src/app/components/variables.less | 118 -
.../src/app/mock-data.ts | 1067 ---
.../src/app/models/app-settings.model.ts | 27 -
.../src/app/models/app-state.model.ts | 33 -
.../src/app/models/audit-log-field.model.ts | 225 -
.../src/app/models/audit-log.model.ts | 46 -
.../src/app/models/bar-graph.model.ts | 24 -
.../src/app/models/common-entry.model.ts | 22 -
.../src/app/models/count.model.ts | 22 -
.../src/app/models/filter.model.ts | 25 -
.../src/app/models/graph.model.ts | 23 -
.../src/app/models/log-field.model.ts | 27 -
.../src/app/models/log.model.ts | 37 -
.../src/app/models/node.model.ts | 29 -
.../src/app/models/service-log-field.model.ts | 107 -
.../src/app/models/service-log.model.ts | 27 -
.../app/models/solr-collection-state.model.ts | 23 -
.../src/app/models/store.model.ts | 169 -
.../src/app/models/user-config.model.ts | 26 -
.../src/app/pipes/timezone-abbr.pipe.spec.ts | 26 -
.../src/app/pipes/timezone-abbr.pipe.ts | 31 -
.../services/component-actions.service.spec.ts | 43 -
.../app/services/component-actions.service.ts | 53 -
.../component-generator.service.spec.ts | 84 -
.../app/services/component-generator.service.ts | 57 -
.../src/app/services/filtering.service.spec.ts | 67 -
.../src/app/services/filtering.service.ts | 352 -
.../app/services/http-client.service.spec.ts | 67 -
.../src/app/services/http-client.service.ts | 138 -
.../app/services/logs-container.service.spec.ts | 82 -
.../src/app/services/logs-container.service.ts | 148 -
.../app/services/mock-api-data.service.spec.ts | 81 -
.../src/app/services/mock-api-data.service.ts | 178 -
.../services/storage/app-settings.service.ts | 33 -
.../app/services/storage/app-state.service.ts | 33 -
.../storage/audit-logs-fields.service.ts | 32 -
.../app/services/storage/audit-logs.service.ts | 32 -
.../app/services/storage/clusters.service.ts | 32 -
.../app/services/storage/components.service.ts | 32 -
.../src/app/services/storage/filters.service.ts | 33 -
.../src/app/services/storage/graphs.service.ts | 33 -
.../src/app/services/storage/hosts.service.ts | 32 -
.../app/services/storage/reducers.service.ts | 52 -
.../storage/service-logs-fields.service.ts | 32 -
.../service-logs-histogram-data.service.ts | 32 -
.../services/storage/service-logs.service.ts | 32 -
.../services/storage/user-configs.service.ts | 33 -
.../src/app/services/utils.service.spec.ts | 86 -
.../src/app/services/utils.service.ts | 46 -
.../src/assets/i18n/en.json | 124 -
.../src/environments/environment.prod.ts | 21 -
.../src/environments/environment.ts | 21 -
.../ambari-logsearch-web-new/src/favicon.ico | Bin 1150 -> 0 bytes
.../ambari-logsearch-web-new/src/index.html | 31 -
.../ambari-logsearch-web-new/src/main.ts | 29 -
.../ambari-logsearch-web-new/src/polyfills.ts | 86 -
.../ambari-logsearch-web-new/src/styles.less | 17 -
.../ambari-logsearch-web-new/src/test.ts | 50 -
.../src/tsconfig.app.json | 13 -
.../src/tsconfig.spec.json | 20 -
.../ambari-logsearch-web-new/src/typings.d.ts | 23 -
.../src/vendor/css/bootstrap-logsearch.min.css | 18 -
.../vendor/css/fonts/Roboto-Regular-webfont.eot | Bin 79547 -> 0 bytes
.../vendor/css/fonts/Roboto-Regular-webfont.svg | 7606 ---------------
.../vendor/css/fonts/Roboto-Regular-webfont.ttf | Bin 234464 -> 0 bytes
.../css/fonts/Roboto-Regular-webfont.woff | Bin 105700 -> 0 bytes
.../src/vendor/js/WorldMapGenerator.min.js | 11 -
.../src/vendor/js/bootstrap-logsearch.min.js | 19 -
.../ambari-logsearch-web-new/tsconfig.json | 31 -
.../ambari-logsearch-web-new/tslint.json | 116 -
.../ambari-logsearch-web-new/yarn.lock | 5766 ------------
.../ambari-logsearch-web/.angular-cli.json | 64 +
ambari-logsearch/ambari-logsearch-web/.bowerrc | 3 -
.../ambari-logsearch-web/.editorconfig | 13 +
.../ambari-logsearch-web/.gitignore | 43 +-
.../ambari-logsearch-web/Gruntfile.js | 139 -
.../ambari-logsearch-web/LICENSE.txt | 339 -
ambari-logsearch/ambari-logsearch-web/README.md | 28 +
.../ambari-logsearch-web/bower.json | 39 -
.../ambari-logsearch-web/build.properties | 12 -
ambari-logsearch/ambari-logsearch-web/build.xml | 37 -
.../ambari-logsearch-web/e2e/app.e2e-spec.ts | 32 +
.../ambari-logsearch-web/e2e/app.po.ts | 29 +
.../ambari-logsearch-web/e2e/tsconfig.e2e.json | 12 +
.../ambari-logsearch-web/karma.conf.js | 62 +
.../ambari-logsearch-web/package.json | 75 +-
ambari-logsearch/ambari-logsearch-web/pom.xml | 143 +-
.../ambari-logsearch-web/protractor.conf.js | 48 +
.../ambari-logsearch-web/src/app/app.module.ts | 169 +
.../queries/audit-logs-query-params.class.ts | 50 +
.../app/classes/queries/query-params.class.ts | 23 +
...ce-logs-histogram-query-params.class.spec.ts | 203 +
...service-logs-histogram-query-params.class.ts | 69 +
.../queries/service-logs-query-params.class.ts | 31 +
.../accordion-panel.component.html | 25 +
.../accordion-panel.component.less | 42 +
.../accordion-panel.component.spec.ts | 42 +
.../accordion-panel.component.ts | 33 +
.../src/app/components/app.component.html | 34 +
.../src/app/components/app.component.less | 51 +
.../src/app/components/app.component.spec.ts | 71 +
.../src/app/components/app.component.ts | 45 +
.../dropdown-button.component.html | 25 +
.../dropdown-button.component.less | 32 +
.../dropdown-button.component.spec.ts | 79 +
.../dropdown-button.component.ts | 96 +
.../dropdown-list/dropdown-list.component.html | 31 +
.../dropdown-list/dropdown-list.component.less | 41 +
.../dropdown-list.component.spec.ts | 130 +
.../dropdown-list/dropdown-list.component.ts | 63 +
.../filter-button.component.spec.ts | 78 +
.../filter-button/filter-button.component.ts | 80 +
.../filter-dropdown.component.spec.ts | 92 +
.../filter-dropdown.component.ts | 63 +
.../filter-text-field.component.html | 21 +
.../filter-text-field.component.less | 33 +
.../filter-text-field.component.spec.ts | 82 +
.../filter-text-field.component.ts | 87 +
.../filters-panel/filters-panel.component.html | 46 +
.../filters-panel/filters-panel.component.less | 51 +
.../filters-panel.component.spec.ts | 93 +
.../filters-panel/filters-panel.component.ts | 44 +
.../login-form/login-form.component.html | 33 +
.../login-form/login-form.component.less | 22 +
.../login-form/login-form.component.spec.ts | 122 +
.../login-form/login-form.component.ts | 59 +
.../logs-container.component.html | 22 +
.../logs-container.component.less | 25 +
.../logs-container.component.spec.ts | 102 +
.../logs-container/logs-container.component.ts | 105 +
.../logs-list/logs-list.component.html | 54 +
.../logs-list/logs-list.component.less | 138 +
.../logs-list/logs-list.component.spec.ts | 102 +
.../components/logs-list/logs-list.component.ts | 62 +
.../main-container.component.html | 24 +
.../main-container.component.less | 24 +
.../main-container.component.spec.ts | 65 +
.../main-container/main-container.component.ts | 66 +
.../menu-button/menu-button.component.html | 28 +
.../menu-button/menu-button.component.less | 33 +
.../menu-button/menu-button.component.spec.ts | 133 +
.../menu-button/menu-button.component.ts | 97 +
.../app/components/modal/modal.component.html | 40 +
.../components/modal/modal.component.spec.ts | 57 +
.../src/app/components/modal/modal.component.ts | 122 +
.../components/node-bar/node-bar.component.html | 19 +
.../components/node-bar/node-bar.component.less | 39 +
.../node-bar/node-bar.component.spec.ts | 43 +
.../components/node-bar/node-bar.component.ts | 35 +
.../pagination-controls.component.html | 23 +
.../pagination-controls.component.less | 23 +
.../pagination-controls.component.spec.ts | 43 +
.../pagination-controls.component.ts | 73 +
.../pagination/pagination.component.html | 24 +
.../pagination/pagination.component.less | 28 +
.../pagination/pagination.component.spec.ts | 69 +
.../pagination/pagination.component.ts | 72 +
.../time-histogram.component.html | 18 +
.../time-histogram.component.less | 29 +
.../time-histogram.component.spec.ts | 53 +
.../time-histogram/time-histogram.component.ts | 161 +
.../timezone-picker.component.html | 26 +
.../timezone-picker.component.less | 45 +
.../timezone-picker.component.spec.ts | 73 +
.../timezone-picker.component.ts | 77 +
.../components/top-menu/top-menu.component.html | 21 +
.../components/top-menu/top-menu.component.less | 22 +
.../top-menu/top-menu.component.spec.ts | 45 +
.../components/top-menu/top-menu.component.ts | 122 +
.../src/app/components/variables.less | 118 +
.../ambari-logsearch-web/src/app/mock-data.ts | 1067 +++
.../src/app/models/app-settings.model.ts | 27 +
.../src/app/models/app-state.model.ts | 33 +
.../src/app/models/audit-log-field.model.ts | 225 +
.../src/app/models/audit-log.model.ts | 46 +
.../src/app/models/bar-graph.model.ts | 24 +
.../src/app/models/common-entry.model.ts | 22 +
.../src/app/models/count.model.ts | 22 +
.../src/app/models/filter.model.ts | 25 +
.../src/app/models/graph.model.ts | 23 +
.../src/app/models/log-field.model.ts | 27 +
.../src/app/models/log.model.ts | 37 +
.../src/app/models/node.model.ts | 29 +
.../src/app/models/service-log-field.model.ts | 107 +
.../src/app/models/service-log.model.ts | 27 +
.../app/models/solr-collection-state.model.ts | 23 +
.../src/app/models/store.model.ts | 169 +
.../src/app/models/user-config.model.ts | 26 +
.../src/app/pipes/timezone-abbr.pipe.spec.ts | 26 +
.../src/app/pipes/timezone-abbr.pipe.ts | 31 +
.../services/component-actions.service.spec.ts | 43 +
.../app/services/component-actions.service.ts | 53 +
.../component-generator.service.spec.ts | 84 +
.../app/services/component-generator.service.ts | 57 +
.../src/app/services/filtering.service.spec.ts | 67 +
.../src/app/services/filtering.service.ts | 352 +
.../app/services/http-client.service.spec.ts | 67 +
.../src/app/services/http-client.service.ts | 138 +
.../app/services/logs-container.service.spec.ts | 82 +
.../src/app/services/logs-container.service.ts | 148 +
.../app/services/mock-api-data.service.spec.ts | 81 +
.../src/app/services/mock-api-data.service.ts | 178 +
.../services/storage/app-settings.service.ts | 33 +
.../app/services/storage/app-state.service.ts | 33 +
.../storage/audit-logs-fields.service.ts | 32 +
.../app/services/storage/audit-logs.service.ts | 32 +
.../app/services/storage/clusters.service.ts | 32 +
.../app/services/storage/components.service.ts | 32 +
.../src/app/services/storage/filters.service.ts | 33 +
.../src/app/services/storage/graphs.service.ts | 33 +
.../src/app/services/storage/hosts.service.ts | 32 +
.../app/services/storage/reducers.service.ts | 52 +
.../storage/service-logs-fields.service.ts | 32 +
.../service-logs-histogram-data.service.ts | 32 +
.../services/storage/service-logs.service.ts | 32 +
.../services/storage/user-configs.service.ts | 33 +
.../src/app/services/utils.service.spec.ts | 86 +
.../src/app/services/utils.service.ts | 46 +
.../src/assets/i18n/en.json | 124 +
.../src/environments/environment.prod.ts | 21 +
.../src/environments/environment.ts | 21 +
.../ambari-logsearch-web/src/favicon.ico | Bin 0 -> 1150 bytes
.../ambari-logsearch-web/src/index.html | 31 +
.../ambari-logsearch-web/src/main.ts | 29 +
.../src/main/webapp/404.html | 170 -
.../src/main/webapp/ajax_failure.jsp | 31 -
.../src/main/webapp/ajax_success.html | 26 -
.../src/main/webapp/favicon.ico | Bin 1150 -> 0 bytes
.../webapp/fonts/fontawesome/FontAwesome.otf | Bin 61896 -> 0 bytes
.../fonts/fontawesome/fontawesome-webfont.eot | Bin 37405 -> 0 bytes
.../fonts/fontawesome/fontawesome-webfont.svg | 415 -
.../fonts/fontawesome/fontawesome-webfont.ttf | Bin 79076 -> 0 bytes
.../fonts/fontawesome/fontawesome-webfont.woff | Bin 43572 -> 0 bytes
.../fonts/fontopensans/open-sans-300.woff | Bin 22656 -> 0 bytes
.../fonts/fontopensans/open-sans-300i.woff | Bin 21524 -> 0 bytes
.../fonts/fontopensans/open-sans-400.woff | Bin 21956 -> 0 bytes
.../fonts/fontopensans/open-sans-400i.woff | Bin 21092 -> 0 bytes
.../fonts/fontopensans/open-sans-600.woff | Bin 22604 -> 0 bytes
.../fonts/fontopensans/open-sans-600i.woff | Bin 21252 -> 0 bytes
.../fonts/fontopensans/open-sans-700.woff | Bin 22748 -> 0 bytes
.../fonts/fontopensans/open-sans-700i.woff | Bin 21184 -> 0 bytes
.../main/webapp/images/System-Settings-icon.png | Bin 17540 -> 0 bytes
.../src/main/webapp/images/avatar.png | Bin 761 -> 0 bytes
.../src/main/webapp/images/blank.gif | Bin 43 -> 0 bytes
.../src/main/webapp/images/blockLoading.gif | Bin 3209 -> 0 bytes
.../src/main/webapp/images/body-bg.png | Bin 3375 -> 0 bytes
.../src/main/webapp/images/cancel_search.png | Bin 541 -> 0 bytes
.../src/main/webapp/images/clear.png | Bin 509 -> 0 bytes
.../src/main/webapp/images/comp.png | Bin 1603 -> 0 bytes
.../src/main/webapp/images/data-grey.png | Bin 1468 -> 0 bytes
.../main/webapp/images/database_table_32.png | Bin 1329 -> 0 bytes
.../src/main/webapp/images/error-404-icon.png | Bin 2529 -> 0 bytes
.../src/main/webapp/images/error-500-icon.png | Bin 2986 -> 0 bytes
.../src/main/webapp/images/folder-grey.png | Bin 1372 -> 0 bytes
.../src/main/webapp/images/folder.png | Bin 920 -> 0 bytes
.../src/main/webapp/images/folder2.png | Bin 946 -> 0 bytes
.../src/main/webapp/images/form.png | Bin 3329 -> 0 bytes
.../src/main/webapp/images/hbase.jpg | Bin 4575 -> 0 bytes
.../src/main/webapp/images/hdfs.jpg | Bin 5232 -> 0 bytes
.../src/main/webapp/images/hive.png | Bin 20483 -> 0 bytes
.../src/main/webapp/images/hline.png | Bin 99 -> 0 bytes
.../src/main/webapp/images/icon-collapse.png | Bin 18815 -> 0 bytes
.../src/main/webapp/images/icon-expand.png | Bin 20092 -> 0 bytes
.../src/main/webapp/images/knox.gif | Bin 2347 -> 0 bytes
.../src/main/webapp/images/knox1.png | Bin 34126 -> 0 bytes
.../src/main/webapp/images/loading.gif | Bin 1849 -> 0 bytes
.../src/main/webapp/images/loading_game.gif | Bin 16098 -> 0 bytes
.../src/main/webapp/images/logo-white.png | Bin 4538 -> 0 bytes
.../src/main/webapp/images/logo.png | Bin 1168 -> 0 bytes
.../src/main/webapp/images/router-grey.png | Bin 1533 -> 0 bytes
.../src/main/webapp/images/search_glyph.png | Bin 420 -> 0 bytes
.../src/main/webapp/images/sortingCollapse.png | Bin 13320 -> 0 bytes
.../src/main/webapp/images/sortingExpand.png | Bin 13283 -> 0 bytes
.../src/main/webapp/images/storm.png | Bin 6174 -> 0 bytes
.../src/main/webapp/images/storm1.png | Bin 19620 -> 0 bytes
.../src/main/webapp/images/task-grey.png | Bin 1187 -> 0 bytes
.../src/main/webapp/images/timezone.png | Bin 353544 -> 0 bytes
.../src/main/webapp/index.html | 108 -
.../backbone-pageable/backbone-pageable.min.js | 8 -
.../webapp/libs/bower/backbone.fetch-cache.js | 326 -
.../src/main/webapp/libs/bower/d3/d3.tip.js | 293 -
.../webapp/libs/bower/dashboard/dashboard.js | 393 -
.../bower/font-awesome/css/font-awesome.css | 1801 ----
.../bower/font-awesome/css/font-awesome.min.css | 4 -
.../bower/font-awesome/fonts/FontAwesome.otf | Bin 61896 -> 0 bytes
.../font-awesome/fonts/fontawesome-webfont.eot | Bin 37405 -> 0 bytes
.../font-awesome/fonts/fontawesome-webfont.svg | 415 -
.../font-awesome/fonts/fontawesome-webfont.ttf | Bin 79076 -> 0 bytes
.../font-awesome/fonts/fontawesome-webfont.woff | Bin 43572 -> 0 bytes
.../fonts/fontawesome-webfont.woff2 | Bin 56780 -> 0 bytes
.../libs/bower/font-awesome/less/animated.less | 34 -
.../font-awesome/less/bordered-pulled.less | 16 -
.../libs/bower/font-awesome/less/core.less | 13 -
.../bower/font-awesome/less/fixed-width.less | 6 -
.../bower/font-awesome/less/font-awesome.less | 17 -
.../libs/bower/font-awesome/less/icons.less | 596 --
.../libs/bower/font-awesome/less/larger.less | 13 -
.../libs/bower/font-awesome/less/list.less | 19 -
.../libs/bower/font-awesome/less/mixins.less | 27 -
.../libs/bower/font-awesome/less/path.less | 15 -
.../font-awesome/less/rotated-flipped.less | 20 -
.../libs/bower/font-awesome/less/stacked.less | 20 -
.../libs/bower/font-awesome/less/variables.less | 606 --
.../libs/bower/font-awesome/scss/_animated.scss | 34 -
.../font-awesome/scss/_bordered-pulled.scss | 16 -
.../libs/bower/font-awesome/scss/_core.scss | 13 -
.../bower/font-awesome/scss/_fixed-width.scss | 6 -
.../libs/bower/font-awesome/scss/_icons.scss | 596 --
.../libs/bower/font-awesome/scss/_larger.scss | 13 -
.../libs/bower/font-awesome/scss/_list.scss | 19 -
.../libs/bower/font-awesome/scss/_mixins.scss | 27 -
.../libs/bower/font-awesome/scss/_path.scss | 15 -
.../font-awesome/scss/_rotated-flipped.scss | 20 -
.../libs/bower/font-awesome/scss/_stacked.scss | 20 -
.../bower/font-awesome/scss/_variables.scss | 606 --
.../bower/font-awesome/scss/font-awesome.scss | 17 -
.../jquery-ui/css/images/animated-overlay.gif | Bin 1738 -> 0 bytes
.../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 418 -> 0 bytes
.../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 312 -> 0 bytes
.../css/images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 180 -> 0 bytes
.../css/images/ui-bg_flat_10_000000_40x100.png | Bin 205 -> 0 bytes
.../css/images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 262 -> 0 bytes
.../css/images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 348 -> 0 bytes
.../css/images/ui-bg_glass_65_ffffff_1x400.png | Bin 207 -> 0 bytes
.../ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 5815 -> 0 bytes
.../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 278 -> 0 bytes
.../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 328 -> 0 bytes
.../css/images/ui-icons_222222_256x240.png | Bin 6922 -> 0 bytes
.../css/images/ui-icons_228ef1_256x240.png | Bin 4549 -> 0 bytes
.../css/images/ui-icons_454545_256x240.png | Bin 4369 -> 0 bytes
.../css/images/ui-icons_888888_256x240.png | Bin 4369 -> 0 bytes
.../css/images/ui-icons_ef8c08_256x240.png | Bin 4549 -> 0 bytes
.../css/images/ui-icons_ffd27a_256x240.png | Bin 4549 -> 0 bytes
.../css/images/ui-icons_ffffff_256x240.png | Bin 6299 -> 0 bytes
.../bower/jquery-ui/css/jquery-ui-1.11.4.css | 850 --
.../jquery-ui/css/jquery-ui-1.11.4.min.css | 7 -
.../bower/jquery-ui/css/jquery-ui-bootstrap.css | 2549 -----
.../libs/bower/jquery-ui/js/jquery-ui-1.11.4.js | 8772 ------------------
.../bower/jquery-ui/js/jquery-ui-1.11.4.min.js | 10 -
.../src/main/webapp/libs/bower/loadCSS.js | 73 -
.../require-handlebars-plugin/Handlebars.js | 2752 ------
.../webapp/libs/bower/select2/select2x2.png | Bin 845 -> 0 bytes
.../libs/bower/sparkline/jquery.sparkline.js | 3054 ------
.../Backgrid.ColumnManager.css | 114 -
.../Backgrid.ColumnManager.js | 1045 ---
.../daterangepicker/css/daterangepicker.css | 415 -
.../daterangepicker/js/daterangepicker.js | 1560 ----
.../libs/custom/timezone/WorldMapGenerator.js | 3474 -------
.../libs/custom/timezone/jstz-1.0.4.min.js | 2 -
.../webapp/libs/custom/visualsearch/.bower.json | 45 -
.../custom/visualsearch/models/search_facets.js | 67 -
.../custom/visualsearch/models/search_query.js | 70 -
.../visualsearch/templates/search_box.jst | 8 -
.../visualsearch/templates/search_facet.jst | 9 -
.../visualsearch/templates/search_input.jst | 1 -
.../custom/visualsearch/templates/templates.js | 7 -
.../visualsearch/utils/backbone_extensions.js | 17 -
.../libs/custom/visualsearch/utils/hotkeys.js | 99 -
.../libs/custom/visualsearch/utils/inflector.js | 21 -
.../visualsearch/utils/jquery_extensions.js | 197 -
.../custom/visualsearch/utils/search_parser.js | 87 -
.../custom/visualsearch/views/search_box.js | 458 -
.../custom/visualsearch/views/search_facet.js | 442 -
.../custom/visualsearch/views/search_input.js | 418 -
.../libs/custom/visualsearch/visualsearch.js | 1984 ----
.../src/main/webapp/login.html | 154 -
.../src/main/webapp/robots.txt | 3 -
.../src/main/webapp/scripts/App.js | 86 -
.../src/main/webapp/scripts/Init.js | 196 -
.../src/main/webapp/scripts/Main.js | 35 -
.../src/main/webapp/scripts/RegionManager.js | 83 -
.../collection_bases/VAuditLogListBase.js | 73 -
.../collection_bases/VEventHistoryListBase.js | 87 -
.../scripts/collection_bases/VGroupListBase.js | 82 -
.../collection_bases/VLogLevelListBase.js | 96 -
.../scripts/collection_bases/VLogListBase.js | 127 -
.../collection_bases/VNameValueListBase.js | 57 -
.../scripts/collection_bases/VNodeListBase.js | 74 -
.../scripts/collections/BaseCollection.js | 172 -
.../scripts/collections/SchemaFieldList.js | 29 -
.../webapp/scripts/collections/VAuditLogList.js | 36 -
.../scripts/collections/VEventHistoryList.js | 33 -
.../webapp/scripts/collections/VGroupList.js | 36 -
.../webapp/scripts/collections/VLogLevelList.js | 36 -
.../main/webapp/scripts/collections/VLogList.js | 36 -
.../scripts/collections/VNameValueList.js | 36 -
.../webapp/scripts/collections/VNodeList.js | 36 -
.../src/main/webapp/scripts/communicator.js | 61 -
.../webapp/scripts/controllers/Controller.js | 240 -
.../webapp/scripts/model_bases/VAuditLogBase.js | 61 -
.../scripts/model_bases/VCommonModelBase.js | 51 -
.../scripts/model_bases/VEventHistoryBase.js | 51 -
.../scripts/model_bases/VGraphInfoBase.js | 62 -
.../webapp/scripts/model_bases/VGroupBase.js | 51 -
.../main/webapp/scripts/model_bases/VLogBase.js | 51 -
.../webapp/scripts/model_bases/VLogLevelBase.js | 51 -
.../scripts/model_bases/VNameValueBase.js | 51 -
.../webapp/scripts/model_bases/VNodeBase.js | 51 -
.../scripts/model_bases/VUserFilterBase.js | 51 -
.../src/main/webapp/scripts/models/BaseModel.js | 110 -
.../src/main/webapp/scripts/models/VAppState.js | 44 -
.../src/main/webapp/scripts/models/VAuditLog.js | 47 -
.../main/webapp/scripts/models/VCommonModel.js | 48 -
.../main/webapp/scripts/models/VEventHistory.js | 48 -
.../main/webapp/scripts/models/VGraphInfo.js | 53 -
.../src/main/webapp/scripts/models/VGroup.js | 53 -
.../src/main/webapp/scripts/models/VLog.js | 66 -
.../src/main/webapp/scripts/models/VLogLevel.js | 47 -
.../main/webapp/scripts/models/VNameValue.js | 47 -
.../src/main/webapp/scripts/models/VNode.js | 48 -
.../main/webapp/scripts/models/VUserFilter.js | 51 -
.../main/webapp/scripts/modules/Overrides.js | 234 -
.../src/main/webapp/scripts/modules/Vent.js | 26 -
.../scripts/modules/globalize/message/en.js | 79 -
.../main/webapp/scripts/prelogin/Prelogin.js | 130 -
.../src/main/webapp/scripts/utils/Enums.js | 32 -
.../src/main/webapp/scripts/utils/Globals.js | 91 -
.../main/webapp/scripts/utils/LangSupport.js | 151 -
.../src/main/webapp/scripts/utils/Tour.js | 461 -
.../src/main/webapp/scripts/utils/Utils.js | 1241 ---
.../src/main/webapp/scripts/utils/ViewUtils.js | 266 -
.../webapp/scripts/utils/XATemplateHelpers.js | 170 -
.../scripts/views/audit/AuditAggregatedView.js | 416 -
.../scripts/views/audit/AuditTabLayoutView.js | 429 -
.../scripts/views/common/AdvanceSearchLayout.js | 146 -
.../webapp/scripts/views/common/BreadCrumbs.js | 83 -
.../scripts/views/common/CustomBackgrid.js | 284 -
.../scripts/views/common/DatePickerLayout.js | 228 -
.../webapp/scripts/views/common/ErrorView.js | 100 -
.../scripts/views/common/EventHistoryLayout.js | 486 -
.../main/webapp/scripts/views/common/Footer.js | 80 -
.../main/webapp/scripts/views/common/Header.js | 481 -
.../webapp/scripts/views/common/JBDialog.js | 211 -
.../scripts/views/common/LogSnapShotLayout.js | 141 -
.../webapp/scripts/views/common/ProfileBar.js | 105 -
.../main/webapp/scripts/views/common/Spinner.js | 85 -
.../webapp/scripts/views/common/TableLayout.js | 405 -
.../webapp/scripts/views/common/TimerView.js | 126 -
.../main/webapp/scripts/views/common/TopNav.js | 93 -
.../dashboard/BubbleGraphTableLayoutView.js | 716 --
.../views/dashboard/ComponentListView.js | 319 -
.../scripts/views/dashboard/ComponentsView.js | 98 -
.../scripts/views/dashboard/DashboardView.js | 184 -
.../views/dashboard/GridTableLayoutView.js | 219 -
.../scripts/views/dashboard/HostListView.js | 356 -
.../webapp/scripts/views/dashboard/HostsView.js | 98 -
.../scripts/views/dashboard/LogDetailView.js | 249 -
.../scripts/views/dashboard/LogLevelBoxView.js | 155 -
.../scripts/views/dashboard/LogLevelView.js | 118 -
.../scripts/views/dashboard/MainLayoutView.js | 670 --
.../views/dialog/ApplySearchFilterView.js | 214 -
.../scripts/views/dialog/DetailLogFileView.js | 167 -
.../dialog/GlobalExclusionCompositeView.js | 141 -
.../views/dialog/GlobalExclusionItemView.js | 84 -
.../views/dialog/GridGraphSettingView.js | 476 -
.../views/dialog/SaveSearchFilterView.js | 120 -
.../scripts/views/dialog/TimeZoneChangeView.js | 101 -
.../views/filter/CreateLogfeederFilterView.js | 383 -
.../scripts/views/graphs/GraphLayoutView.js | 559 --
.../scripts/views/graphs/GridGraphLayoutView.js | 594 --
.../scripts/views/tabs/ComparisonLayoutView.js | 93 -
.../webapp/scripts/views/tabs/ComparisonView.js | 242 -
.../views/tabs/EventHistoryLayoutView.js | 506 -
.../scripts/views/tabs/ExportLogFileView.js | 50 -
.../views/tabs/HierarchyTabLayoutView.js | 429 -
.../scripts/views/tabs/HostInfoTabLayoutView.js | 178 -
.../webapp/scripts/views/tabs/LogFileView.js | 864 --
.../main/webapp/scripts/views/tabs/TreeView.js | 365 -
.../scripts/views/tabs/VisualSearchView.js | 202 -
.../troubleshoot/TroubleShootLayoutView.js | 553 --
.../src/main/webapp/static/schema_fields.json | 90 -
.../src/main/webapp/styles/animate.css | 3272 -------
.../src/main/webapp/styles/app-font.css | 64 -
.../src/main/webapp/styles/bootstrap.css | 6422 -------------
.../src/main/webapp/styles/bootstrap.min.css | 6422 -------------
.../main/webapp/styles/custom/visualsearch.css | 369 -
.../src/main/webapp/styles/style.css | 2964 ------
.../src/main/webapp/styles/style_v2.css | 2596 ------
.../audit/AuditAggregatedView_tmpl.html | 54 -
.../audit/AuditTabLayoutView_tmpl.html | 100 -
.../common/AdvanceSearchLayout_tmpl.html | 30 -
.../templates/common/DatePickerLayout_tmpl.html | 29 -
.../webapp/templates/common/ErrorView_tmpl.html | 28 -
.../common/EventHistoryItemView_tmpl.html | 32 -
.../common/EventHistoryLayout_tmpl.html | 44 -
.../webapp/templates/common/Footer_tmpl.html | 42 -
.../webapp/templates/common/Header_tmpl.html | 98 -
.../common/LogSnapShotLayout_tmpl.html | 23 -
.../templates/common/TableLayout_tmpl.html | 37 -
.../webapp/templates/common/TimerView_tmpl.html | 25 -
.../webapp/templates/common/TopNav_tmpl.html | 52 -
.../webapp/templates/common/breadcrumbs.html | 46 -
.../webapp/templates/common/formInputItem.html | 54 -
.../templates/common/formInputItemList.html | 42 -
.../webapp/templates/common/loading_tmpl.html | 45 -
.../BubbleGraphTableLayoutView_tmpl.html | 79 -
.../dashboard/ComponentListView_tmpl.html | 35 -
.../dashboard/ComponentsView_tmpl.html | 57 -
.../templates/dashboard/DashboardView_tmpl.html | 122 -
.../dashboard/GridTableLayoutView_tmpl.html | 28 -
.../templates/dashboard/HostListView_tmpl.html | 48 -
.../templates/dashboard/HostsView_tmpl.html | 56 -
.../templates/dashboard/LogDetailView_tmpl.html | 75 -
.../dashboard/LogLevelBoxView_tmpl.html | 49 -
.../templates/dashboard/LogLevelView_tmpl.html | 110 -
.../dashboard/MainLayoutView_tmpl.html | 111 -
.../dialog/ApplySearchFilterView_tmpl.html | 30 -
.../dialog/DetailLogFileView_tmpl.html | 22 -
.../GlobalExclusionCompositeView_tmpl.html | 32 -
.../dialog/GlobalExclusionItemView_tmpl.html | 26 -
.../dialog/GridGraphSettingView_tmpl.html | 284 -
.../dialog/SaveSearchFilterView_tmpl.html | 70 -
.../dialog/TimeZoneChangeView_tmpl.html | 475 -
.../filter/CreateLogfeederFilter_tmpl.html | 53 -
.../templates/graphs/GraphLayoutView_tmpl.html | 50 -
.../graphs/GridGraphLayoutView_tmpl.html | 28 -
.../src/main/webapp/templates/graphs/backup.js | 586 --
.../main/webapp/templates/helpers/Helpers.js | 520 --
.../tabs/ComparisonLayoutView_tmpl.html | 20 -
.../templates/tabs/ComparisonView_tmpl.html | 56 -
.../tabs/EventHistoryLayoutView_tmpl.html | 45 -
.../templates/tabs/ExportLogFileView_tmpl.html | 46 -
.../tabs/HierarchyTabLayoutView_tmpl.html | 124 -
.../tabs/HostInfoTabLayoutView_tmpl.html | 46 -
.../webapp/templates/tabs/LogFileView_tmpl.html | 122 -
.../webapp/templates/tabs/TreeView_tmpl.html | 54 -
.../templates/tabs/VisualSearchView_tmpl.html | 20 -
.../TroubleShootLayoutView_tmpl.html | 150 -
.../main/webapp/themejs/1.3.0/bootstrap.min.js | 19 -
.../ambari-logsearch-web/src/polyfills.ts | 86 +
.../ambari-logsearch-web/src/styles.less | 17 +
.../ambari-logsearch-web/src/test.ts | 50 +
.../ambari-logsearch-web/src/tsconfig.app.json | 13 +
.../ambari-logsearch-web/src/tsconfig.spec.json | 20 +
.../ambari-logsearch-web/src/typings.d.ts | 23 +
.../src/vendor/css/bootstrap-logsearch.min.css | 18 +
.../vendor/css/fonts/Roboto-Regular-webfont.eot | Bin 0 -> 79547 bytes
.../vendor/css/fonts/Roboto-Regular-webfont.svg | 7606 +++++++++++++++
.../vendor/css/fonts/Roboto-Regular-webfont.ttf | Bin 0 -> 234464 bytes
.../css/fonts/Roboto-Regular-webfont.woff | Bin 0 -> 105700 bytes
.../src/vendor/js/WorldMapGenerator.min.js | 11 +
.../src/vendor/js/bootstrap-logsearch.min.js | 19 +
.../ambari-logsearch-web/tsconfig.json | 31 +
.../ambari-logsearch-web/tslint.json | 116 +
ambari-logsearch/ambari-logsearch-web/yarn.lock | 5766 ++++++++++++
ambari-logsearch/docker/bin/start.sh | 1 -
ambari-logsearch/docker/logsearch-docker.sh | 4 +-
.../LOGSEARCH/0.5.0/package/scripts/params.py | 2 +-
648 files changed, 23709 insertions(+), 105810 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-server/build.xml
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-server/build.xml b/ambari-logsearch/ambari-logsearch-server/build.xml
index aadacd7..5c50485 100644
--- a/ambari-logsearch/ambari-logsearch-server/build.xml
+++ b/ambari-logsearch/ambari-logsearch-server/build.xml
@@ -32,6 +32,9 @@
<copy todir="target/package/libs" includeEmptyDirs="no">
<fileset dir="target/libs"/>
</copy>
+ <copy todir="target/classes/static" includeEmptyDirs="no">
+ <fileset dir="target/dist"/>
+ </copy>
<copy todir="target/package/classes" includeEmptyDirs="no">
<fileset dir="target/classes"/>
</copy>
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-server/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-server/pom.xml b/ambari-logsearch/ambari-logsearch-server/pom.xml
index e60cc14..e90c58d 100755
--- a/ambari-logsearch/ambari-logsearch-server/pom.xml
+++ b/ambari-logsearch/ambari-logsearch-server/pom.xml
@@ -77,6 +77,9 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
+ <configuration>
+ <classifier>exec</classifier>
+ </configuration>
<executions>
<execution>
<goals>
@@ -102,8 +105,8 @@
<groupId>org.apache.ambari</groupId>
<artifactId>ambari-logsearch-web</artifactId>
<version>${project.version}</version>
- <outputDirectory>${project.build.outputDirectory}/</outputDirectory>
- <includes>static/**</includes>
+ <outputDirectory>${project.build.directory}/</outputDirectory>
+ <includes>dist/**</includes>
</artifactItem>
</artifactItems>
</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/auth/filter/AbstractJWTFilter.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/auth/filter/AbstractJWTFilter.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/auth/filter/AbstractJWTFilter.java
new file mode 100644
index 0000000..80fbf6b
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/auth/filter/AbstractJWTFilter.java
@@ -0,0 +1,193 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.ambari.logsearch.auth.filter;
+
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.ExpiredJwtException;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.MalformedJwtException;
+import io.jsonwebtoken.SignatureException;
+import org.apache.ambari.logsearch.auth.model.JWTAuthenticationToken;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.security.authentication.AnonymousAuthenticationToken;
+import org.springframework.security.authentication.BadCredentialsException;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
+import org.springframework.security.web.util.matcher.RequestMatcher;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import java.security.interfaces.RSAPublicKey;
+import java.util.Collection;
+import java.util.List;
+
+public abstract class AbstractJWTFilter extends AbstractAuthenticationProcessingFilter {
+
+ private static final Logger LOG = LoggerFactory.getLogger(AbstractJWTFilter.class);
+
+ private static final String PEM_HEADER = "-----BEGIN CERTIFICATE-----\n";
+ private static final String PEM_FOOTER = "\n-----END CERTIFICATE-----";
+
+ protected AbstractJWTFilter(RequestMatcher requestMatcher) {
+ super(requestMatcher);
+ }
+
+ @Override
+ public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException, IOException, ServletException {
+ if (StringUtils.isEmpty(getProvidedUrl())) {
+ throw new BadCredentialsException("Authentication provider URL must not be null or empty.");
+ }
+ if (StringUtils.isEmpty(getPublicKey())) {
+ throw new BadCredentialsException("Public key for signature validation must be provisioned.");
+ }
+
+ try {
+ Claims claims = Jwts
+ .parser()
+ .setSigningKey(parseRSAPublicKey(getPublicKey()))
+ .parseClaimsJws(getJWTFromCookie(request))
+ .getBody();
+
+ String userName = claims.getSubject();
+ LOG.info("USERNAME: " + userName);
+ LOG.info("URL = " + request.getRequestURL());
+ if (StringUtils.isNotEmpty(claims.getAudience()) && !getAudiences().contains(claims.getAudience())) {
+ throw new IllegalArgumentException(String.format("Audience validation failed. (Not found: %s)", claims.getAudience()));
+ }
+ Authentication authentication = new JWTAuthenticationToken(userName, getPublicKey(), getAuthorities());
+ authentication.setAuthenticated(true);
+ SecurityContextHolder.getContext().setAuthentication(authentication);
+ return authentication;
+ } catch (ExpiredJwtException | MalformedJwtException | SignatureException | IllegalArgumentException e) {
+ LOG.info("URL = " + request.getRequestURL());
+ LOG.warn("Error during JWT authentication: ", e.getMessage());
+ throw new BadCredentialsException(e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
+ Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+ if (!isAuthJwtEnabled() || isAuthenticated(authentication)) {
+ chain.doFilter(req, res);
+ return;
+ }
+ super.doFilter(req, res, chain);
+ }
+
+ @Override
+ protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException {
+ super.successfulAuthentication(request, response, chain, authResult);
+ response.sendRedirect(request.getRequestURL().toString() + getOriginalQueryString(request));
+ }
+
+ @Override
+ protected void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, AuthenticationException failed) throws IOException, ServletException {
+ super.unsuccessfulAuthentication(request, response, failed);
+ String loginUrl = constructLoginURL(request);
+ response.sendRedirect(loginUrl);
+ }
+
+ private String getJWTFromCookie(HttpServletRequest req) {
+ String serializedJWT = null;
+ Cookie[] cookies = req.getCookies();
+ if (cookies != null) {
+ for (Cookie cookie : cookies) {
+ if (getCookieName().equals(cookie.getName())) {
+ LOG.info(getCookieName() + " cookie has been found and is being processed");
+ serializedJWT = cookie.getValue();
+ break;
+ }
+ }
+ }
+ return serializedJWT;
+ }
+
+ private RSAPublicKey parseRSAPublicKey(String pem) throws ServletException {
+ String fullPem = PEM_HEADER + pem + PEM_FOOTER;
+ try {
+ CertificateFactory fact = CertificateFactory.getInstance("X.509");
+ ByteArrayInputStream is = new ByteArrayInputStream(fullPem.getBytes("UTF8"));
+
+ X509Certificate cer = (X509Certificate) fact.generateCertificate(is);
+ return (RSAPublicKey) cer.getPublicKey();
+ } catch (CertificateException ce) {
+ String message;
+ if (pem.startsWith(PEM_HEADER)) {
+ message = "CertificateException - be sure not to include PEM header "
+ + "and footer in the PEM configuration element.";
+ } else {
+ message = "CertificateException - PEM may be corrupt";
+ }
+ throw new ServletException(message, ce);
+ } catch (UnsupportedEncodingException uee) {
+ throw new ServletException(uee);
+ }
+ }
+
+ private String constructLoginURL(HttpServletRequest request) {
+ String delimiter = "?";
+ if (getProvidedUrl().contains("?")) {
+ delimiter = "&";
+ }
+ return getProvidedUrl() + delimiter
+ + getOriginalUrlQueryParam() + "="
+ + request.getRequestURL().toString() + getOriginalQueryString(request);
+ }
+
+ private String getOriginalQueryString(HttpServletRequest request) {
+ String originalQueryString = request.getQueryString();
+ return (originalQueryString == null) ? "" : "?" + originalQueryString;
+ }
+
+ private boolean isAuthenticated(Authentication authentication) {
+ return authentication != null && !(authentication instanceof AnonymousAuthenticationToken) && authentication.isAuthenticated();
+ }
+
+ protected abstract String getPublicKey();
+
+ protected abstract String getProvidedUrl();
+
+ protected abstract boolean isAuthJwtEnabled();
+
+ protected abstract String getCookieName();
+
+ protected abstract String getOriginalUrlQueryParam();
+
+ protected abstract List<String> getAudiences();
+
+ protected abstract Collection<? extends GrantedAuthority> getAuthorities();
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/auth/model/JWTAuthenticationToken.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/auth/model/JWTAuthenticationToken.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/auth/model/JWTAuthenticationToken.java
new file mode 100644
index 0000000..5fb9f05
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/auth/model/JWTAuthenticationToken.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.ambari.logsearch.auth.model;
+
+import org.springframework.security.authentication.AbstractAuthenticationToken;
+import org.springframework.security.core.GrantedAuthority;
+
+import java.util.Collection;
+
+public class JWTAuthenticationToken extends AbstractAuthenticationToken {
+
+ private String credential;
+
+ private String principal;
+
+ public JWTAuthenticationToken(String principal, String credential, Collection<? extends GrantedAuthority> authorities) {
+ super(authorities);
+ this.principal = principal;
+ this.credential = credential;
+ }
+
+ @Override
+ public Object getCredentials() {
+ return credential;
+ }
+
+ @Override
+ public Object getPrincipal() {
+ return principal;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/SecurityConfig.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/SecurityConfig.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/SecurityConfig.java
index 038ba5c..5ba0ac0 100644
--- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/SecurityConfig.java
+++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/SecurityConfig.java
@@ -6,9 +6,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -102,9 +102,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/**").authenticated()
.and()
.authenticationProvider(logsearchAuthenticationProvider())
- .formLogin()
- .loginPage("/login.html")
- .and()
.httpBasic()
.authenticationEntryPoint(logsearchAuthenticationEntryPoint())
.and()
@@ -118,7 +115,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
.addFilterBefore(logsearchCorsFilter(), LogsearchSecurityContextFormationFilter.class)
.addFilterBefore(logsearchJwtFilter(), LogsearchSecurityContextFormationFilter.class)
.logout()
- .logoutUrl("/logout.html")
+ .logoutUrl("/logout")
.deleteCookies(LOGSEARCH_SESSION_ID)
.logoutSuccessHandler(new LogsearchLogoutSuccessHandler());
}
@@ -154,7 +151,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
public LogsearchAuthenticationEntryPoint logsearchAuthenticationEntryPoint() {
- LogsearchAuthenticationEntryPoint entryPoint = new LogsearchAuthenticationEntryPoint("/login.html");
+ LogsearchAuthenticationEntryPoint entryPoint = new LogsearchAuthenticationEntryPoint("/login");
entryPoint.setForceHttps(false);
return entryPoint;
}
@@ -182,7 +179,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
public LogsearchEventHistoryStateFilter logsearchEventHistoryFilter() {
return new LogsearchEventHistoryStateFilter(eventHistoryRequestMatcher(), solrEventHistoryState, solrEventHistoryPropsConfig);
}
-
+
+ @Bean
public LogSearchConfigStateFilter logSearchConfigStateFilter() {
return new LogSearchConfigStateFilter(logsearchConfigRequestMatcher(), logSearchConfigState);
}
@@ -193,15 +191,23 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
matchers.add(new AntPathRequestMatcher("/docs/**"));
matchers.add(new AntPathRequestMatcher("/swagger-ui/**"));
matchers.add(new AntPathRequestMatcher("/swagger.html"));
- matchers.add(new AntPathRequestMatcher("/login.html"));
- matchers.add(new AntPathRequestMatcher("/logout.html"));
- matchers.add(new AntPathRequestMatcher("/styles/**"));
- matchers.add(new AntPathRequestMatcher("/fonts/**"));
- matchers.add(new AntPathRequestMatcher("/scripts/**"));
- matchers.add(new AntPathRequestMatcher("/libs/**"));
- matchers.add(new AntPathRequestMatcher("/templates/**"));
- matchers.add(new AntPathRequestMatcher("/images/**"));
+ matchers.add(new AntPathRequestMatcher("/"));
+ matchers.add(new AntPathRequestMatcher("/login"));
+ matchers.add(new AntPathRequestMatcher("/logout"));
+ matchers.add(new AntPathRequestMatcher("/resources/**"));
+ matchers.add(new AntPathRequestMatcher("/index.html"));
matchers.add(new AntPathRequestMatcher("/favicon.ico"));
+ matchers.add(new AntPathRequestMatcher("/styles*"));
+ matchers.add(new AntPathRequestMatcher("/scripts*"));
+ matchers.add(new AntPathRequestMatcher("/assets/**"));
+ matchers.add(new AntPathRequestMatcher("/vendor*"));
+ matchers.add(new AntPathRequestMatcher("/main*"));
+ matchers.add(new AntPathRequestMatcher("/inline*"));
+ matchers.add(new AntPathRequestMatcher("/polyfills*"));
+ matchers.add(new AntPathRequestMatcher("/glyphicons*"));
+ matchers.add(new AntPathRequestMatcher("/fontawsome*"));
+ matchers.add(new AntPathRequestMatcher("/Roboto*"));
+ matchers.add(new AntPathRequestMatcher("/templates/**"));
matchers.add(new AntPathRequestMatcher("/api/v1/info/**"));
matchers.add(new AntPathRequestMatcher("/api/v1/public/**"));
matchers.add(new AntPathRequestMatcher("/api/v1/swagger.json"));
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/authenticate/LogsearchLogoutSuccessHandler.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/authenticate/LogsearchLogoutSuccessHandler.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/authenticate/LogsearchLogoutSuccessHandler.java
index c20e383..2439828 100644
--- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/authenticate/LogsearchLogoutSuccessHandler.java
+++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/authenticate/LogsearchLogoutSuccessHandler.java
@@ -36,6 +36,5 @@ public class LogsearchLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
throws IOException, ServletException {
logger.debug("LogsearchLogoutSuccessHandler ::: onLogoutSuccess");
- response.sendRedirect("/index.html");
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchJWTFilter.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchJWTFilter.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchJWTFilter.java
index 1bc7231..164f646 100644
--- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchJWTFilter.java
+++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchJWTFilter.java
@@ -18,46 +18,16 @@
*/
package org.apache.ambari.logsearch.web.filters;
-import io.jsonwebtoken.Claims;
-import io.jsonwebtoken.ExpiredJwtException;
-import io.jsonwebtoken.Jwts;
-import io.jsonwebtoken.MalformedJwtException;
-import io.jsonwebtoken.SignatureException;
+import org.apache.ambari.logsearch.auth.filter.AbstractJWTFilter;
import org.apache.ambari.logsearch.conf.AuthPropsConfig;
-import org.apache.ambari.logsearch.web.model.JWTAuthenticationToken;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.security.authentication.AnonymousAuthenticationToken;
-import org.springframework.security.authentication.BadCredentialsException;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.AuthenticationException;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
+import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.web.util.matcher.NegatedRequestMatcher;
import org.springframework.security.web.util.matcher.RequestMatcher;
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.security.cert.CertificateException;
-import java.security.cert.CertificateFactory;
-import java.security.cert.X509Certificate;
-import java.security.interfaces.RSAPublicKey;
+import java.util.Collection;
+import java.util.List;
-public class LogsearchJWTFilter extends AbstractAuthenticationProcessingFilter {
-
- private static final Logger LOG = LoggerFactory.getLogger(LogsearchJWTFilter.class);
-
- private static final String PEM_HEADER = "-----BEGIN CERTIFICATE-----\n";
- private static final String PEM_FOOTER = "\n-----END CERTIFICATE-----";
+public class LogsearchJWTFilter extends AbstractJWTFilter {
private AuthPropsConfig authPropsConfig;
@@ -67,115 +37,39 @@ public class LogsearchJWTFilter extends AbstractAuthenticationProcessingFilter {
}
@Override
- public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException, IOException, ServletException {
- if (StringUtils.isEmpty(authPropsConfig.getProvidedUrl())) {
- throw new BadCredentialsException("Authentication provider URL must not be null or empty.");
- }
- if (StringUtils.isEmpty(authPropsConfig.getPublicKey())) {
- throw new BadCredentialsException("Public key for signature validation must be provisioned.");
- }
-
- try {
- Claims claims = Jwts
- .parser()
- .setSigningKey(parseRSAPublicKey(authPropsConfig.getPublicKey()))
- .parseClaimsJws(getJWTFromCookie(request))
- .getBody();
-
- String userName = claims.getSubject();
- LOG.info("USERNAME: " + userName);
- LOG.info("URL = " + request.getRequestURL());
- if (StringUtils.isNotEmpty(claims.getAudience()) && !authPropsConfig.getAudiences().contains(claims.getAudience())) {
- throw new IllegalArgumentException(String.format("Audience validation failed. (Not found: %s)", claims.getAudience()));
- }
- Authentication authentication = new JWTAuthenticationToken(userName, authPropsConfig.getPublicKey());
- authentication.setAuthenticated(true);
- SecurityContextHolder.getContext().setAuthentication(authentication);
- return authentication;
- } catch (ExpiredJwtException | MalformedJwtException | SignatureException | IllegalArgumentException e) {
- LOG.info("URL = " + request.getRequestURL());
- LOG.warn("Error during JWT authentication: ", e.getMessage());
- throw new BadCredentialsException(e.getMessage(), e);
- }
+ protected String getPublicKey() {
+ return authPropsConfig.getPublicKey();
}
@Override
- public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
- Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
- if (!authPropsConfig.isAuthJwtEnabled() || isAuthenticated(authentication)) {
- chain.doFilter(req, res);
- return;
- }
- super.doFilter(req, res, chain);
+ protected String getProvidedUrl() {
+ return authPropsConfig.getProvidedUrl();
}
@Override
- protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException {
- super.successfulAuthentication(request, response, chain, authResult);
- response.sendRedirect(request.getRequestURL().toString() + getOriginalQueryString(request));
+ protected boolean isAuthJwtEnabled() {
+ return authPropsConfig.isAuthJwtEnabled();
}
@Override
- protected void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, AuthenticationException failed) throws IOException, ServletException {
- super.unsuccessfulAuthentication(request, response, failed);
- String loginUrl = constructLoginURL(request);
- response.sendRedirect(loginUrl);
- }
-
- private String getJWTFromCookie(HttpServletRequest req) {
- String serializedJWT = null;
- Cookie[] cookies = req.getCookies();
- if (cookies != null) {
- for (Cookie cookie : cookies) {
- if (authPropsConfig.getCookieName().equals(cookie.getName())) {
- LOG.info(authPropsConfig.getCookieName() + " cookie has been found and is being processed");
- serializedJWT = cookie.getValue();
- break;
- }
- }
- }
- return serializedJWT;
+ protected String getCookieName() {
+ return authPropsConfig.getCookieName();
}
- private RSAPublicKey parseRSAPublicKey(String pem) throws ServletException {
- String fullPem = PEM_HEADER + pem + PEM_FOOTER;
- try {
- CertificateFactory fact = CertificateFactory.getInstance("X.509");
- ByteArrayInputStream is = new ByteArrayInputStream(fullPem.getBytes("UTF8"));
-
- X509Certificate cer = (X509Certificate) fact.generateCertificate(is);
- return (RSAPublicKey) cer.getPublicKey();
- } catch (CertificateException ce) {
- String message;
- if (pem.startsWith(PEM_HEADER)) {
- message = "CertificateException - be sure not to include PEM header "
- + "and footer in the PEM configuration element.";
- } else {
- message = "CertificateException - PEM may be corrupt";
- }
- throw new ServletException(message, ce);
- } catch (UnsupportedEncodingException uee) {
- throw new ServletException(uee);
- }
+ @Override
+ protected String getOriginalUrlQueryParam() {
+ return authPropsConfig.getOriginalUrlQueryParam();
}
- private String constructLoginURL(HttpServletRequest request) {
- String delimiter = "?";
- if (authPropsConfig.getProvidedUrl().contains("?")) {
- delimiter = "&";
- }
- return authPropsConfig.getProvidedUrl() + delimiter
- + authPropsConfig.getOriginalUrlQueryParam() + "="
- + request.getRequestURL().toString() + getOriginalQueryString(request);
+ @Override
+ protected List<String> getAudiences() {
+ return authPropsConfig.getAudiences();
}
- private String getOriginalQueryString(HttpServletRequest request) {
- String originalQueryString = request.getQueryString();
- return (originalQueryString == null) ? "" : "?" + originalQueryString;
+ @Override
+ protected Collection<? extends GrantedAuthority> getAuthorities() {
+ return null; // TODO
}
- private boolean isAuthenticated(Authentication authentication) {
- return authentication != null && !(authentication instanceof AnonymousAuthenticationToken) && authentication.isAuthenticated();
- }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/model/JWTAuthenticationToken.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/model/JWTAuthenticationToken.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/model/JWTAuthenticationToken.java
deleted file mode 100644
index dfac191..0000000
--- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/model/JWTAuthenticationToken.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.ambari.logsearch.web.model;
-
-import org.springframework.security.authentication.AbstractAuthenticationToken;
-import org.springframework.security.core.GrantedAuthority;
-
-import java.util.Collection;
-
-public class JWTAuthenticationToken extends AbstractAuthenticationToken {
-
- private String credential;
-
- private String principal;
-
- public JWTAuthenticationToken(String principal, String credential) {
- super((Collection<? extends GrantedAuthority>)null);
- this.principal = principal;
- this.credential = credential;
- }
-
- public JWTAuthenticationToken(String principal, String credential, Collection<? extends GrantedAuthority> authorities) {
- super(authorities);
- this.principal = principal;
- this.credential = credential;
- }
-
- @Override
- public Object getCredentials() {
- return credential;
- }
-
- @Override
- public Object getPrincipal() {
- return principal;
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-web-new/.angular-cli.json
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web-new/.angular-cli.json b/ambari-logsearch/ambari-logsearch-web-new/.angular-cli.json
deleted file mode 100644
index cc74739..0000000
--- a/ambari-logsearch/ambari-logsearch-web-new/.angular-cli.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
- "project": {
- "name": "ambari-logsearch-web-new"
- },
- "apps": [
- {
- "root": "src",
- "outDir": "dist",
- "assets": [
- "assets",
- "favicon.ico"
- ],
- "index": "index.html",
- "main": "main.ts",
- "polyfills": "polyfills.ts",
- "test": "test.ts",
- "tsconfig": "tsconfig.app.json",
- "testTsconfig": "tsconfig.spec.json",
- "prefix": "app",
- "styles": [
- "styles.less",
- "../node_modules/bootstrap/dist/css/bootstrap.min.css",
- "../node_modules/font-awesome/css/font-awesome.min.css",
- "../src/vendor/css/bootstrap-logsearch.min.css"
- ],
- "scripts": [
- "../node_modules/jquery/dist/jquery.min.js",
- "../node_modules/bootstrap/dist/js/bootstrap.min.js",
- "../src/vendor/js/bootstrap-logsearch.min.js"
- ],
- "environmentSource": "environments/environment.ts",
- "environments": {
- "dev": "environments/environment.ts",
- "prod": "environments/environment.prod.ts"
- }
- }
- ],
- "e2e": {
- "protractor": {
- "config": "./protractor.conf.js"
- }
- },
- "lint": [
- {
- "project": "src/tsconfig.app.json"
- },
- {
- "project": "src/tsconfig.spec.json"
- },
- {
- "project": "e2e/tsconfig.e2e.json"
- }
- ],
- "test": {
- "karma": {
- "config": "./karma.conf.js"
- }
- },
- "defaults": {
- "styleExt": "less",
- "component": {}
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-web-new/.editorconfig
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web-new/.editorconfig b/ambari-logsearch/ambari-logsearch-web-new/.editorconfig
deleted file mode 100644
index 6e87a00..0000000
--- a/ambari-logsearch/ambari-logsearch-web-new/.editorconfig
+++ /dev/null
@@ -1,13 +0,0 @@
-# Editor configuration, see http://editorconfig.org
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.md]
-max_line_length = off
-trim_trailing_whitespace = false
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-web-new/.gitignore
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web-new/.gitignore b/ambari-logsearch/ambari-logsearch-web-new/.gitignore
deleted file mode 100644
index 54bfd20..0000000
--- a/ambari-logsearch/ambari-logsearch-web-new/.gitignore
+++ /dev/null
@@ -1,42 +0,0 @@
-# See http://help.github.com/ignore-files/ for more about ignoring files.
-
-# compiled output
-/dist
-/tmp
-/out-tsc
-
-# dependencies
-/node_modules
-
-# IDEs and editors
-/.idea
-.project
-.classpath
-.c9/
-*.launch
-.settings/
-*.sublime-workspace
-
-# IDE - VSCode
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
-
-# misc
-/.sass-cache
-/connect.lock
-/coverage
-/libpeerconnection.log
-npm-debug.log
-testem.log
-/typings
-
-# e2e
-/e2e/*.js
-/e2e/*.map
-
-# System Files
-.DS_Store
-Thumbs.db
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-web-new/README.md
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web-new/README.md b/ambari-logsearch/ambari-logsearch-web-new/README.md
deleted file mode 100644
index 2fb07fb..0000000
--- a/ambari-logsearch/ambari-logsearch-web-new/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# AmbariLogsearchWebNew
-
-This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.0.0.
-
-## Development server
-
-Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
-
-## Code scaffolding
-
-Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive/pipe/service/class/module`.
-
-## Build
-
-Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.
-
-## Running unit tests
-
-Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
-
-## Running end-to-end tests
-
-Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
-Before running the tests make sure you are serving the app via `ng serve`.
-
-## Further help
-
-To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-web-new/e2e/app.e2e-spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web-new/e2e/app.e2e-spec.ts b/ambari-logsearch/ambari-logsearch-web-new/e2e/app.e2e-spec.ts
deleted file mode 100644
index ebfdcb9..0000000
--- a/ambari-logsearch/ambari-logsearch-web-new/e2e/app.e2e-spec.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import {AmbariLogsearchWebNewPage} from './app.po';
-
-describe('ambari-logsearch-web-new App', () => {
- let page: AmbariLogsearchWebNewPage;
-
- beforeEach(() => {
- page = new AmbariLogsearchWebNewPage();
- });
-
- it('should display title', () => {
- page.navigateTo();
- expect(page.getParagraphText()).toEqual('Ambari Log Search');
- });
-});
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-web-new/e2e/app.po.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web-new/e2e/app.po.ts b/ambari-logsearch/ambari-logsearch-web-new/e2e/app.po.ts
deleted file mode 100644
index c446bfb..0000000
--- a/ambari-logsearch/ambari-logsearch-web-new/e2e/app.po.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import { browser, element, by } from 'protractor';
-
-export class AmbariLogsearchWebNewPage {
- navigateTo() {
- return browser.get('/');
- }
-
- getParagraphText() {
- return element(by.css('app-root h1')).getText();
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-web-new/e2e/tsconfig.e2e.json
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web-new/e2e/tsconfig.e2e.json b/ambari-logsearch/ambari-logsearch-web-new/e2e/tsconfig.e2e.json
deleted file mode 100644
index ac7a373..0000000
--- a/ambari-logsearch/ambari-logsearch-web-new/e2e/tsconfig.e2e.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "outDir": "../out-tsc/e2e",
- "module": "commonjs",
- "target": "es5",
- "types":[
- "jasmine",
- "node"
- ]
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-web-new/karma.conf.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web-new/karma.conf.js b/ambari-logsearch/ambari-logsearch-web-new/karma.conf.js
deleted file mode 100644
index 0512808..0000000
--- a/ambari-logsearch/ambari-logsearch-web-new/karma.conf.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Karma configuration file, see link for more information
-// https://karma-runner.github.io/0.13/config/configuration-file.html
-
-module.exports = function (config) {
- config.set({
- basePath: '',
- frameworks: ['jasmine', '@angular/cli'],
- plugins: [
- require('karma-jasmine'),
- require('karma-chrome-launcher'),
- require('karma-jasmine-html-reporter'),
- require('karma-coverage-istanbul-reporter'),
- require('@angular/cli/plugins/karma')
- ],
- client:{
- clearContext: false // leave Jasmine Spec Runner output visible in browser
- },
- files: [
- { pattern: './src/test.ts', watched: false }
- ],
- preprocessors: {
- './src/test.ts': ['@angular/cli']
- },
- mime: {
- 'text/x-typescript': ['ts','tsx']
- },
- coverageIstanbulReporter: {
- reports: [ 'html', 'lcovonly' ],
- fixWebpackSourcePaths: true
- },
- angularCli: {
- environment: 'dev'
- },
- reporters: config.angularCli && config.angularCli.codeCoverage
- ? ['progress', 'coverage-istanbul']
- : ['progress', 'kjhtml'],
- port: 9876,
- colors: true,
- logLevel: config.LOG_INFO,
- autoWatch: true,
- browsers: ['Chrome'],
- singleRun: false
- });
-};
http://git-wip-us.apache.org/repos/asf/ambari/blob/02360dd5/ambari-logsearch/ambari-logsearch-web-new/package.json
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web-new/package.json b/ambari-logsearch/ambari-logsearch-web-new/package.json
deleted file mode 100644
index 96733eb..0000000
--- a/ambari-logsearch/ambari-logsearch-web-new/package.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "name": "ambari-logsearch-web",
- "version": "3.0.0",
- "license": "Apache 2.0",
- "scripts": {
- "ng": "ng",
- "start": "ng serve",
- "build": "ng build",
- "build-prod": "ng build -prod",
- "test": "ng test",
- "lint": "ng lint",
- "e2e": "ng e2e"
- },
- "dependencies": {
- "@angular/common": "^4.0.0",
- "@angular/compiler": "^4.0.0",
- "@angular/core": "^4.0.0",
- "@angular/forms": "^4.0.0",
- "@angular/http": "^4.0.0",
- "@angular/platform-browser": "^4.0.0",
- "@angular/platform-browser-dynamic": "^4.0.0",
- "@angular/router": "^4.0.0",
- "@ngrx/core": "^1.2.0",
- "@ngrx/store": "^2.2.2",
- "@ngx-translate/core": "^6.0.1",
- "@ngx-translate/http-loader": "^0.0.3",
- "angular-moment-timezone": "^0.2.1",
- "angular2-moment": "^1.4.0",
- "bootstrap": "^3.3.7",
- "core-js": "^2.4.1",
- "d3": "^4.10.0",
- "font-awesome": "^4.7.0",
- "jquery": "^1.12.4",
- "moment": "^2.18.1",
- "moment-timezone": "^0.5.13",
- "ngx-bootstrap": "^1.6.6",
- "rxjs": "^5.1.0",
- "zone.js": "^0.8.4"
- },
- "devDependencies": {
- "@angular/cli": "1.0.0",
- "@angular/compiler-cli": "^4.0.0",
- "@types/d3": "^4.10.0",
- "@types/jasmine": "2.5.38",
- "@types/jquery": "^1.10.33",
- "@types/moment": "^2.13.0",
- "@types/moment-timezone": "^0.2.34",
- "@types/node": "~6.0.60",
- "angular-in-memory-web-api": "^0.3.1",
- "codelyzer": "~2.0.0",
- "jasmine-core": "~2.5.2",
- "jasmine-spec-reporter": "~3.2.0",
- "karma": "~1.4.1",
- "karma-chrome-launcher": "~2.0.0",
- "karma-cli": "~1.0.1",
- "karma-coverage-istanbul-reporter": "^0.2.0",
- "karma-jasmine": "~1.1.0",
- "karma-jasmine-html-reporter": "^0.2.2",
- "protractor": "~5.1.0",
- "ts-node": "~2.0.0",
- "tslint": "~4.5.0",
- "typescript": "~2.2.0"
- }
-}