├── code ├── rabbitMqTest │ ├── .idea │ │ ├── .name │ │ ├── encodings.xml │ │ ├── vcs.xml │ │ ├── modules.xml │ │ ├── code.iml │ │ └── misc.xml │ ├── package.json │ ├── send.js │ ├── receive.js │ ├── .gitignore │ ├── rpc_server.js │ └── rpc_client.js ├── Frontend │ ├── cliProject │ │ ├── src │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ └── images │ │ │ │ │ ├── team.png │ │ │ │ │ ├── user.png │ │ │ │ │ ├── dropbox.png │ │ │ │ │ ├── github.png │ │ │ │ │ ├── slack.png │ │ │ │ │ ├── bitbucket.png │ │ │ │ │ ├── owncloud.png │ │ │ │ │ ├── fileStorage.png │ │ │ │ │ └── googleDrive.png │ │ │ ├── app │ │ │ │ ├── login │ │ │ │ │ ├── login.component.scss │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── index.js.map │ │ │ │ │ ├── index.js │ │ │ │ │ ├── login.component.js.map │ │ │ │ │ └── login.component.html │ │ │ │ ├── join-team │ │ │ │ │ ├── join-team.component.scss │ │ │ │ │ ├── join-team.component.ts │ │ │ │ │ └── join-team.component.html │ │ │ │ ├── change-team │ │ │ │ │ ├── change-team.component.scss │ │ │ │ │ └── change-team.component.html │ │ │ │ ├── create-team │ │ │ │ │ ├── create-team.component.scss │ │ │ │ │ ├── create-team.component.spec.ts │ │ │ │ │ ├── create-team.component.ts │ │ │ │ │ └── create-team.component.html │ │ │ │ ├── _guards │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── index.js.map │ │ │ │ │ ├── index.js │ │ │ │ │ ├── auth.guard.js.map │ │ │ │ │ ├── auth.guard.ts │ │ │ │ │ └── auth.guard.js │ │ │ │ ├── auth-settings │ │ │ │ │ ├── auth-settings.component.scss │ │ │ │ │ └── auth-settings.component.spec.ts │ │ │ │ ├── home │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── index.js.map │ │ │ │ │ ├── index.js │ │ │ │ │ ├── home.component.html │ │ │ │ │ ├── home.component.ts │ │ │ │ │ ├── home.component.js.map │ │ │ │ │ └── home.component.js │ │ │ │ ├── register │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── index.js.map │ │ │ │ │ ├── index.js │ │ │ │ │ └── register.component.js.map │ │ │ │ ├── teamArea │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── index.js.map │ │ │ │ │ ├── index.js │ │ │ │ │ ├── teamArea.component.js.map │ │ │ │ │ ├── teamArea.component.html │ │ │ │ │ └── teamArea.component.js │ │ │ │ ├── userArea │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── index.js.map │ │ │ │ │ ├── index.js │ │ │ │ │ ├── userArea.component.js.map │ │ │ │ │ ├── userArea.component.html │ │ │ │ │ ├── userArea.component.ts │ │ │ │ │ └── userArea.component.js │ │ │ │ ├── fileStorage │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── index.js.map │ │ │ │ │ ├── index.js │ │ │ │ │ └── fileStorage.component.js.map │ │ │ │ ├── serviceSelection │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── serviceSelection.component.css │ │ │ │ │ ├── index.js.map │ │ │ │ │ ├── index.js │ │ │ │ │ ├── serviceSelection.component.ts │ │ │ │ │ └── serviceSelection.component.js.map │ │ │ │ ├── _models │ │ │ │ │ ├── service.js │ │ │ │ │ ├── repo.ts │ │ │ │ │ ├── service.js.map │ │ │ │ │ ├── service.ts │ │ │ │ │ ├── fsProvider.ts │ │ │ │ │ ├── slackChannel.ts │ │ │ │ │ ├── shareService.ts │ │ │ │ │ ├── index.js.map │ │ │ │ │ ├── slackChannelMessage.ts │ │ │ │ │ ├── fileMetaData.js.map │ │ │ │ │ ├── serviceAuth.ts │ │ │ │ │ ├── fileMetaData.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── user.js.map │ │ │ │ │ ├── fileMetaData.ts │ │ │ │ │ ├── user.js │ │ │ │ │ ├── user.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── team.ts │ │ │ │ │ ├── xhrProgress.ts │ │ │ │ │ └── app.config.ts │ │ │ │ ├── index.ts │ │ │ │ ├── abstractFileStorage │ │ │ │ │ └── index.ts │ │ │ │ ├── slack │ │ │ │ │ ├── slack.component.scss │ │ │ │ │ └── slack.component.spec.ts │ │ │ │ ├── _directives │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── index.js.map │ │ │ │ │ ├── index.js │ │ │ │ │ ├── scrollintoView.directive.ts │ │ │ │ │ ├── ChangeBgColor.directive.js.map │ │ │ │ │ └── ChangeBgColor.directive.ts │ │ │ │ ├── versionControl │ │ │ │ │ └── index.ts │ │ │ │ ├── _services │ │ │ │ │ ├── index.js.map │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── active-tab.service.ts │ │ │ │ │ ├── inform-new-team.service.ts │ │ │ │ │ ├── fileStorage.service.js.map │ │ │ │ │ ├── user.service.ts │ │ │ │ │ └── user.service.js.map │ │ │ │ ├── app.component.css │ │ │ │ ├── _animations │ │ │ │ │ └── animations.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.routing.ts │ │ │ │ ├── _pipes │ │ │ │ │ └── fileSize.pipe.ts │ │ │ │ ├── app.component.html │ │ │ │ └── app.component.spec.ts │ │ │ ├── environments │ │ │ │ ├── environment.prod.ts │ │ │ │ └── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── MaterialIcons-Regular.eot │ │ │ ├── MaterialIcons-Regular.ttf │ │ │ ├── MaterialIcons-Regular.woff │ │ │ ├── MaterialIcons-Regular.woff2 │ │ │ ├── typings.d.ts │ │ │ ├── main.ts │ │ │ ├── tsconfig.json │ │ │ ├── index.html │ │ │ ├── polyfills.ts │ │ │ ├── test.ts │ │ │ ├── styles.css │ │ │ ├── material2-app-theme.scss │ │ │ └── font.css │ │ ├── e2e │ │ │ ├── testFiles │ │ │ │ └── test.html │ │ │ ├── globalConfig.ts │ │ │ ├── helper.ts │ │ │ ├── tsconfig.json │ │ │ ├── login │ │ │ │ ├── login.spec.ts │ │ │ │ └── login.pageObject.ts │ │ │ ├── register │ │ │ │ ├── register.spec.ts │ │ │ │ └── register.pageObject.ts │ │ │ └── app.e2e-spec.ts │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── protractor.conf.js │ │ ├── README.md │ │ ├── karma.conf.js │ │ └── angular-cli.json │ └── .gitignore ├── Owncloud │ ├── communication │ │ ├── RabbitMq.js │ │ ├── RpcPublisherType.js │ │ └── RpcPublisher.js │ ├── .DS_Store │ ├── slack.png │ ├── test.pdf │ ├── test │ │ ├── .DS_Store │ │ └── Vortrag.pptx │ ├── config │ │ └── config.json │ ├── proto │ │ └── fileTransfer.proto │ ├── owncloudStart.js │ ├── .gitignore │ ├── package.json │ └── test.js ├── Google │ ├── test.pdf │ ├── test5.pdf │ ├── config │ │ └── config.json │ ├── proto │ │ └── fileTransfer.proto │ ├── package.json │ ├── googleStart.js │ └── .gitignore ├── Slack │ ├── config │ │ └── config.json │ ├── package.json │ ├── slackStart.js │ ├── .gitignore │ ├── proto │ │ └── slackMessaging.proto │ └── test │ │ └── slackTest.js ├── Bitbucket │ ├── config │ │ └── config.json │ ├── package.json │ ├── bitbucketStart.js │ ├── .gitignore │ └── proto │ │ └── versionControl.proto ├── Github │ ├── config │ │ └── config.json │ ├── package.json │ ├── githubStart.js │ ├── .gitignore │ └── proto │ │ └── versionControl.proto ├── Dropbox │ ├── test │ │ └── test.pdf │ ├── config │ │ └── config.json │ ├── proto │ │ └── fileTransfer.proto │ ├── dropboxStart.js │ ├── package.json │ └── .gitignore ├── TeamManagement │ ├── .DS_Store │ ├── config │ │ └── config.json │ ├── package.json │ ├── teamManagementStart.js │ ├── test │ │ └── dbTest │ ├── .gitignore │ ├── proto │ │ └── teamManagement.proto │ └── db │ │ └── models │ │ └── Team.js ├── SeCoFileStorage │ ├── Projektplan.pdf │ ├── config │ │ └── config.json │ ├── package.json │ ├── seCoFileStorageStart.js │ ├── db │ │ └── models │ │ │ └── TeamStorage.js │ ├── .gitignore │ ├── pathParser.js │ └── proto │ │ ├── authentication.proto │ │ └── seCoFileStorage.proto ├── TransferService │ ├── Projektplan.pdf │ ├── config │ │ └── config.json │ ├── package.json │ ├── proto │ │ ├── fileTransfer.proto │ │ └── authentication.proto │ ├── transferServiceStart.js │ ├── .gitignore │ └── grpc │ │ ├── server.js │ │ └── grpcFileStreamer.js ├── SeCoApi │ ├── exampleCalls │ │ └── curl │ ├── MsgBroker │ │ ├── MsgBrokerType.js │ │ └── MsgBroker.js │ ├── config │ │ └── config.json │ ├── utility │ │ ├── rpcJsonResponseBuilder.js │ │ ├── headerChecker.js │ │ ├── paramChecker.js │ │ └── secoBasicAuth.js │ ├── .gitignore │ ├── proto │ │ ├── authService.proto │ │ ├── notification.proto │ │ ├── authentication.proto │ │ ├── seCoFileStorage.proto │ │ ├── teamManagement.proto │ │ ├── versionControl.proto │ │ └── slackMessaging.proto │ ├── package.json │ ├── json │ │ ├── githubRoutes.json │ │ ├── bitBucketRoutes.json │ │ ├── slackRoutes.json │ │ ├── seCoFileStorage.json │ │ ├── googleDriveRoutes.json │ │ └── owncloudRoutes.json │ ├── cert.pem │ ├── chain.pem │ ├── key.pem │ └── privkey.pem ├── .idea │ ├── watcherTasks.xml │ ├── encodings.xml │ ├── misc.xml │ ├── vcs.xml │ ├── typescript-compiler.xml │ ├── modules.xml │ ├── code.iml │ └── jsLibraryMappings.xml ├── NotificationService │ ├── config │ │ └── config.json │ ├── db │ │ └── models │ │ │ └── Notification.js │ ├── package.json │ ├── notificationServiceStart.js │ ├── .gitignore │ └── proto │ │ └── notification.proto ├── AuthenticationService │ ├── config │ │ └── config.json │ ├── oauth2 │ │ └── services │ │ │ ├── dropbox.json │ │ │ ├── slack.json │ │ │ ├── github.json │ │ │ ├── bitbucket.json │ │ │ └── google.json │ ├── package.json │ ├── .gitignore │ ├── proto │ │ ├── authentication.proto │ │ └── authService.proto │ ├── cert.pem │ ├── chain.pem │ └── key.pem ├── UserManagement │ ├── config │ │ └── config.json │ ├── package.json │ ├── userManagementStart.js │ ├── .gitignore │ ├── proto │ │ ├── authService.proto │ │ └── authentication.proto │ └── db │ │ └── models │ │ └── User.js ├── installNodeModules.sh ├── RestTest │ ├── package.json │ ├── .gitignore │ └── restTest.js ├── JSON │ └── RPC.JSON └── connectorDescriptionPrototype.rtf └── .gitignore /code/rabbitMqTest/.idea/.name: -------------------------------------------------------------------------------- 1 | code -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/login/login.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/join-team/join-team.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/change-team/change-team.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/create-team/create-team.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_guards/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth.guard'; -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/auth-settings/auth-settings.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/home/index.ts: -------------------------------------------------------------------------------- 1 | export * from './home.component'; -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/login/index.ts: -------------------------------------------------------------------------------- 1 | export * from './login.component'; -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/register/index.ts: -------------------------------------------------------------------------------- 1 | export * from './register.component'; -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/teamArea/index.ts: -------------------------------------------------------------------------------- 1 | export * from './teamArea.component'; -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/userArea/index.ts: -------------------------------------------------------------------------------- 1 | export * from './userArea.component'; -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/fileStorage/index.ts: -------------------------------------------------------------------------------- 1 | export * from './fileStorage.component'; -------------------------------------------------------------------------------- /code/Owncloud/communication/RabbitMq.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by phili on 01.08.2016. 3 | */ 4 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/serviceSelection/index.ts: -------------------------------------------------------------------------------- 1 | export * from './serviceSelection.component'; -------------------------------------------------------------------------------- /code/Google/test.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Google/test.pdf -------------------------------------------------------------------------------- /code/Google/test5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Google/test5.pdf -------------------------------------------------------------------------------- /code/Slack/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "grpcServerPort" : 50048, 3 | "grpcServerIp" : "localhost" 4 | } -------------------------------------------------------------------------------- /code/Bitbucket/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "grpcServerPort" : 50071, 3 | "grpcServerIp" : "localhost" 4 | } -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/service.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | //# sourceMappingURL=service.js.map -------------------------------------------------------------------------------- /code/Github/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "grpcServerPort" : 50056, 3 | "grpcServerIp" : "localhost" 4 | } -------------------------------------------------------------------------------- /code/Owncloud/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Owncloud/.DS_Store -------------------------------------------------------------------------------- /code/Owncloud/slack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Owncloud/slack.png -------------------------------------------------------------------------------- /code/Owncloud/test.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Owncloud/test.pdf -------------------------------------------------------------------------------- /code/Dropbox/test/test.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Dropbox/test/test.pdf -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/index.ts: -------------------------------------------------------------------------------- 1 | export * from './app.component'; 2 | export * from './app.module'; 3 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/abstractFileStorage/index.ts: -------------------------------------------------------------------------------- 1 | export * from './abstractFileStorage.component'; 2 | -------------------------------------------------------------------------------- /code/Owncloud/test/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Owncloud/test/.DS_Store -------------------------------------------------------------------------------- /code/TeamManagement/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/TeamManagement/.DS_Store -------------------------------------------------------------------------------- /code/Owncloud/test/Vortrag.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Owncloud/test/Vortrag.pptx -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/slack/slack.component.scss: -------------------------------------------------------------------------------- 1 | .scrollable{ 2 | overflow-y: scroll; 3 | max-height: 700px; 4 | } 5 | -------------------------------------------------------------------------------- /code/SeCoFileStorage/Projektplan.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/SeCoFileStorage/Projektplan.pdf -------------------------------------------------------------------------------- /code/TransferService/Projektplan.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/TransferService/Projektplan.pdf -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/serviceSelection/serviceSelection.component.css: -------------------------------------------------------------------------------- 1 | .dropboxTab{ 2 | background-color: #303f9f; 3 | } 4 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/favicon.ico -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_directives/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ChangeBgColor.directive'; 2 | export * from './scrollintoView.directive'; 3 | -------------------------------------------------------------------------------- /code/SeCoApi/exampleCalls/curl: -------------------------------------------------------------------------------- 1 | curl --form "fileupload=@npm-debug.log" "localhost:8080/api/dropbox?oauth2Token=adasd&path=adasdas" 2 | 3 | 4 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/repo.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 12.12.16. 3 | */ 4 | export class Repo { 5 | repo: string; 6 | } 7 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/service.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"service.js","sourceRoot":"","sources":["service.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/versionControl/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 12.12.16. 3 | */ 4 | export * from './versionControl.component'; 5 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/assets/images/team.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/assets/images/team.png -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/assets/images/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/assets/images/user.png -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/MaterialIcons-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/MaterialIcons-Regular.eot -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/MaterialIcons-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/MaterialIcons-Regular.ttf -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/assets/images/dropbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/assets/images/dropbox.png -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/assets/images/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/assets/images/github.png -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/assets/images/slack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/assets/images/slack.png -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/MaterialIcons-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/MaterialIcons-Regular.woff -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/MaterialIcons-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/MaterialIcons-Regular.woff2 -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/assets/images/bitbucket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/assets/images/bitbucket.png -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/assets/images/owncloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/assets/images/owncloud.png -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_guards/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;AAAA,iBAAc,cAAc,CAAC,EAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/home/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;AAAA,iBAAc,kBAAkB,CAAC,EAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/login/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;AAAA,iBAAc,mBAAmB,CAAC,EAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/assets/images/fileStorage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/assets/images/fileStorage.png -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/assets/images/googleDrive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/SPF/master/code/Frontend/cliProject/src/assets/images/googleDrive.png -------------------------------------------------------------------------------- /code/.idea/watcherTasks.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/fileStorage/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;AAAA,iBAAc,yBAAyB,CAAC,EAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/register/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;AAAA,iBAAc,sBAAsB,CAAC,EAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/teamArea/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;AAAA,iBAAc,sBAAsB,CAAC,EAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/userArea/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;AAAA,iBAAc,sBAAsB,CAAC,EAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/service.ts: -------------------------------------------------------------------------------- 1 | export interface Service{ 2 | name: string; 3 | imgPath: string; 4 | disabled: boolean; 5 | content: string; 6 | } 7 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/serviceSelection/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;AAAA,iBAAc,8BAA8B,CAAC,EAAA"} -------------------------------------------------------------------------------- /code/Google/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "grpcServerPort" : 50049, 3 | "grpcServerIp" : "localhost", 4 | "grpcFileTransferIp" : "localhost", 5 | "grpcFileTransferPort" : 50029 6 | } -------------------------------------------------------------------------------- /code/Owncloud/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "grpcServerPort" : 50051, 3 | "grpcServerIp" : "localhost", 4 | "grpcFileTransferIp" : "localhost", 5 | "grpcFileTransferPort" : 50029 6 | } -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/fsProvider.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 19.12.16. 3 | */ 4 | export class FsProvider { 5 | name: string; 6 | imgPath: string; 7 | } 8 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/slackChannel.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 15.12.16. 3 | */ 4 | export class SlackChannel { 5 | name: string; 6 | id: string; 7 | } 8 | -------------------------------------------------------------------------------- /code/NotificationService/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbPath":"mongodb://127.0.0.1/secoNotification", 3 | "dbPoolSize":10, 4 | "grpcServerIp":"localhost", 5 | "grpcServerPort":50039 6 | } -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/shareService.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 11.01.17. 3 | */ 4 | export interface ShareService{ 5 | name:string; 6 | imgPath:string; 7 | } 8 | -------------------------------------------------------------------------------- /code/SeCoApi/MsgBroker/MsgBrokerType.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 21.07.16. 3 | */ 4 | var msgBrokerTypes = { 5 | RABBITMQ : 'RabbitMQ' 6 | }; 7 | 8 | module.exports = msgBrokerTypes; -------------------------------------------------------------------------------- /code/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/Owncloud/communication/RpcPublisherType.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by phili on 01.08.2016. 3 | */ 4 | var rpcPublisherType = { 5 | RABBITMQ : 'RabbitMQ' 6 | }; 7 | 8 | module.exports = rpcPublisherType; -------------------------------------------------------------------------------- /code/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_directives/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;AAAA,iBAAc,mBAAmB,CAAC,EAAA;AAClC,iBAAc,2BAA2B,CAAC,EAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;AAAA,iBAAc,QAAQ,CAAC,EAAA;AACvB,iBAAc,gBAAgB,CAAC,EAAA;AACL"} -------------------------------------------------------------------------------- /code/rabbitMqTest/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/e2e/testFiles/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Test 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /code/AuthenticationService/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "httpPort" : 8081, 3 | "grpcServerIp":"localhost", 4 | "grpcServerPort":50061, 5 | "userManagementServiceIp":"localhost", 6 | "userManagementServicePort":50054 7 | } -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/slackChannelMessage.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 16.12.16. 3 | */ 4 | export class SlackChannelMessage { 5 | message : string; 6 | name : string; 7 | ts : number; 8 | } 9 | -------------------------------------------------------------------------------- /code/TeamManagement/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbPath":"mongodb://127.0.0.1/secoTeam", 3 | "dbPoolSize":10, 4 | "grpcServerIp":"localhost", 5 | "grpcServerPort":50045, 6 | "teamNameMinLength":4, 7 | "passwordMinLength":6 8 | } -------------------------------------------------------------------------------- /code/rabbitMqTest/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/fileMetaData.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"fileMetaData.js","sourceRoot":"","sources":["fileMetaData.ts"],"names":[],"mappings":";AAAA;IAAA;IAGA,CAAC;IAAD,mBAAC;AAAD,CAAC,AAHD,IAGC;AAHY,oBAAY,eAGxB,CAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_guards/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | function __export(m) { 3 | for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; 4 | } 5 | __export(require('./auth.guard')); 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /code/Frontend/cliProject/e2e/globalConfig.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 29.12.16. 3 | */ 4 | 5 | //let baseUrl: string = 'https://philipphaw.github.io/Service-Composition/#/'; 6 | export var baseUrl: string = 'http://localhost:4200/#/'; 7 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/home/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | function __export(m) { 3 | for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; 4 | } 5 | __export(require('./home.component')); 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/login/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | function __export(m) { 3 | for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; 4 | } 5 | __export(require('./login.component')); 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/register/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | function __export(m) { 3 | for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; 4 | } 5 | __export(require('./register.component')); 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/teamArea/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | function __export(m) { 3 | for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; 4 | } 5 | __export(require('./teamArea.component')); 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/userArea/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | function __export(m) { 3 | for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; 4 | } 5 | __export(require('./userArea.component')); 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/fileStorage/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | function __export(m) { 3 | for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; 4 | } 5 | __export(require('./fileStorage.component')); 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | // Typings reference file, you can add your own global typings here 2 | // https://www.typescriptlang.org/docs/handbook/writing-declaration-files.html 3 | declare var require: any; 4 | declare module "file-saver"; 5 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_services/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;AAAA,iBAAc,iBAAiB,CAAC,EAAA;AAChC,iBAAc,0BAA0B,CAAC,EAAA;AACzC,iBAAc,gBAAgB,CAAC,EAAA;AAC/B,iBAAc,uBAAuB,CAAC,EAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/serviceAuth.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 19.12.16. 3 | */ 4 | export class ServiceAuth { 5 | name: string; 6 | type: string; 7 | status: boolean; 8 | loading: boolean; 9 | authUrl: string; 10 | } 11 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/serviceSelection/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | function __export(m) { 3 | for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; 4 | } 5 | __export(require('./serviceSelection.component')); 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /code/Dropbox/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "dropboxToken":"8pFZZrjCIREAAAAAAABz-8Num_Z274v4hmJzxtqNLmTAtXsSS_mac1FXszTyUqY7", 3 | "grpcServerPort" : 50052, 4 | "grpcServerIp" : "localhost", 5 | "grpcFileTransferIp" : "localhost", 6 | "grpcFileTransferPort" : 50029 7 | } -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/fileMetaData.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var FileMetaData = (function () { 3 | function FileMetaData() { 4 | } 5 | return FileMetaData; 6 | }()); 7 | exports.FileMetaData = FileMetaData; 8 | //# sourceMappingURL=fileMetaData.js.map -------------------------------------------------------------------------------- /code/.idea/typescript-compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | function __export(m) { 3 | for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; 4 | } 5 | __export(require('./user')); 6 | __export(require('./fileMetaData')); 7 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | .app-toolbar-filler { 2 | flex: 1 1 auto; 3 | } 4 | 5 | div.m2app-dark { 6 | background: black; 7 | } 8 | 9 | div.m2app-light { 10 | background: #fafafa; 11 | } 12 | 13 | .content-container { 14 | padding: 20px; 15 | } 16 | -------------------------------------------------------------------------------- /code/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_directives/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | function __export(m) { 3 | for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; 4 | } 5 | __export(require('./alert.component')); 6 | __export(require('./ChangeBgColor.directive')); 7 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/user.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"user.js","sourceRoot":"","sources":["user.ts"],"names":[],"mappings":";AAAA;IAKI,cAAY,QAAgB,EAAC,SAAiB;QAC1C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IACL,WAAC;AAAD,CAAC,AATD,IASC;AATY,YAAI,OAShB,CAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/home/home.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/fileMetaData.ts: -------------------------------------------------------------------------------- 1 | export class FileMetaData{ 2 | name: string; 3 | tag: string; 4 | contentLength: number = 0; 5 | progressInPercent: number = 0; 6 | isDownloading: boolean; 7 | isTransfering: boolean; 8 | shareClicked: boolean; 9 | } 10 | -------------------------------------------------------------------------------- /code/rabbitMqTest/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/.idea/code.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/user.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var User = (function () { 3 | function User(username, basicAuth) { 4 | this.username = username; 5 | this.basicAuth = basicAuth; 6 | } 7 | return User; 8 | }()); 9 | exports.User = User; 10 | //# sourceMappingURL=user.js.map -------------------------------------------------------------------------------- /code/UserManagement/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbPath": "mongodb://127.0.0.1/secoUser", 3 | "dbPoolSize": 10, 4 | "grpcServerIp": "localhost", 5 | "grpcServerPort": 50054, 6 | "authServiceIp": "localhost", 7 | "authServicePort": 50061, 8 | "userNameMinLength": 4, 9 | "passwordMinLength": 6 10 | } 11 | -------------------------------------------------------------------------------- /code/SeCoApi/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "httpPort" : 8080, 3 | "rpcTimeoutMS" : 5000, 4 | "userServiceIp" : "localhost", 5 | "userServicePort" : 50054, 6 | "teamServiceIp" : "localhost", 7 | "teamServicePort" : 50045, 8 | "authServiceIp" : "localhost", 9 | "authServicePort" : 50061 10 | } 11 | 12 | 13 | -------------------------------------------------------------------------------- /code/rabbitMqTest/.idea/code.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/user.ts: -------------------------------------------------------------------------------- 1 | export class User { 2 | username: string; 3 | basicAuth: string; 4 | password: string; 5 | password2: string; 6 | 7 | constructor(username: string,basicAuth: string) { 8 | this.username = username; 9 | this.basicAuth = basicAuth; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/e2e/helper.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 29.12.16. 3 | */ 4 | import {browser, element, by, ElementFinder} from 'protractor'; 5 | 6 | export function sendKeysToElement(element: ElementFinder, keys: string) { 7 | browser.actions().click(element.getWebElement()).sendKeys(keys).perform(); 8 | } 9 | 10 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user'; 2 | export * from './fileMetaData'; 3 | export * from './service'; 4 | export * from './team'; 5 | export * from './repo'; 6 | export * from './serviceAuth'; 7 | export * from './fsProvider'; 8 | export * from './shareService'; 9 | export * from './xhrProgress'; 10 | -------------------------------------------------------------------------------- /code/installNodeModules.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | declare -a arr=("AuthenticationService" "Bitbucket" "Dropbox" "Google" "Github" "NotificationService" "Owncloud" "SeCoApi" "SeCoFileStorage" "Slack" "TeamManagement" "TransferService" "UserManagement" "Frontend/cliProject") 4 | 5 | for i in "${arr[@]}" 6 | do 7 | cd "$i" 8 | npm install 9 | cd .. 10 | done 11 | -------------------------------------------------------------------------------- /code/rabbitMqTest/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rabbitmq", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "receive.js", 6 | "dependencies": { 7 | "amqplib": "^0.4.2" 8 | }, 9 | "devDependencies": {}, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | }, 13 | "author": "", 14 | "license": "ISC" 15 | } 16 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_services/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | function __export(m) { 3 | for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; 4 | } 5 | __export(require('./alert.service')); 6 | __export(require('./authentication.service')); 7 | __export(require('./user.service')); 8 | __export(require('./fileStorage.service')); 9 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /code/RestTest/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "resttestserver", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "TestRestServer.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "express": "^4.14.0", 13 | "body-parser": "~1.0.1" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/team.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 08.12.16. 3 | */ 4 | export class Team { 5 | teamName: string; 6 | password: string; 7 | teamCreator: string; 8 | members: string [] = []; 9 | services: string [] = []; 10 | 11 | constructor(teamName: string,password: string) { 12 | this.teamName = teamName; 13 | this.password = password; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | import { User } from '../_models/index'; 4 | 5 | @Component({ 6 | templateUrl: 'home.component.html' 7 | }) 8 | 9 | export class HomeComponent { 10 | currentUser: User; 11 | 12 | constructor() { 13 | this.currentUser = JSON.parse(localStorage.getItem('currentUser')); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /code/TransferService/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "grpcServerIp": "localhost", 3 | "grpcServerPort": 50029, 4 | "authServiceIp": "localhost", 5 | "authServicePort": 50054, 6 | "owncloudServiceIp": "localhost", 7 | "owncloudServicePort": 50051, 8 | "dropboxServiceIp": "localhost", 9 | "dropboxServicePort": 50052, 10 | "googleServiceIp": "localhost", 11 | "googleServicePort": 50049 12 | } 13 | 14 | 15 | -------------------------------------------------------------------------------- /code/AuthenticationService/oauth2/services/dropbox.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": "DROPBOX", 3 | "auth_url": "https://www.dropbox.com/1/oauth2/authorize", 4 | "access_token_url": "https://api.dropboxapi.com/1/oauth2/token", 5 | "client_id": "krqnhrofayxzazq", 6 | "client_secret": "oxyodpb0l4hlxmo", 7 | "redirect_uri": "https://servicecompo.ddns.net:8081/dropbox/oauth/callback", 8 | "redirect_route": "/dropbox/oauth/callback" 9 | } -------------------------------------------------------------------------------- /code/AuthenticationService/oauth2/services/slack.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": "SLACK", 3 | "auth_url": "https://slack.com/oauth/authorize", 4 | "access_token_url": "https://slack.com/api/oauth.access", 5 | "client_id": "79533239492.79558641106", 6 | "client_secret": "a338f2ebb190af09359f86b5e10e3f07", 7 | "redirect_uri": "https://servicecompo.ddns.net:8081/slack/oauth/callback", 8 | "redirect_route": "/slack/oauth/callback" 9 | } -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_services/index.ts: -------------------------------------------------------------------------------- 1 | export * from './authentication.service'; 2 | export * from './user.service'; 3 | export * from './fileStorage.service'; 4 | export * from './active-tab.service' 5 | export * from './team.service'; 6 | export * from './versionControl.service'; 7 | export * from './inform-new-team.service'; 8 | export * from './slack.service'; 9 | export * from './abstractFileStorageService'; 10 | -------------------------------------------------------------------------------- /code/JSON/RPC.JSON: -------------------------------------------------------------------------------- 1 | { 2 | "functionName" : "createFile", 3 | "queueName" : "q1", 4 | 5 | "name": "rabbitmq", 6 | "version": "1.0.0", 7 | "description": "", 8 | "main": "receive.js", 9 | "dependencies": { 10 | "amqplib": "^0.4.2" 11 | }, 12 | "devDependencies": {}, 13 | "scripts": { 14 | "test": "echo \"Error: no test specified\" && exit 1" 15 | }, 16 | "author": "", 17 | "license": "ISC" 18 | } -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/main.ts: -------------------------------------------------------------------------------- 1 | import './polyfills.ts'; 2 | 3 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 4 | import { enableProdMode } from '@angular/core'; 5 | import { environment } from './environments/environment'; 6 | import { AppModule } from './app/'; 7 | 8 | if (environment.production) { 9 | enableProdMode(); 10 | } 11 | 12 | platformBrowserDynamic().bootstrapModule(AppModule); 13 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_animations/animations.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 09.12.16. 3 | */ 4 | import { trigger, state, style, transition, animate } from '@angular/core'; 5 | 6 | export const slideIn = trigger('slideIn', [ 7 | state('in', style({transform: 'translateX(0)'})), 8 | transition('void => *', [ 9 | style({transform: 'translateX(-100%)'}), 10 | animate('400ms ease-in') 11 | ]) 12 | ]); 13 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/xhrProgress.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 19.01.17. 3 | */ 4 | export class XhrProgress { 5 | 6 | bytes: number; 7 | total: number; 8 | 9 | constructor(bytes: number, total: number) { 10 | this.bytes = bytes; 11 | this.total = total; 12 | } 13 | 14 | public toString = () : string => { 15 | return `bytes: ` + this.bytes + ' total: ' + this.total; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /code/AuthenticationService/oauth2/services/github.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": "GITHUB", 3 | "auth_url": "https://github.com/login/oauth/authorize", 4 | "access_token_url": "https://github.com/login/oauth/access_token", 5 | "client_id": "e7703193a0cc139aae74", 6 | "client_secret": "18419c2f87f2ccc146ce8e9d37d7e126f7ee32d9", 7 | "redirect_uri": "https://servicecompo.ddns.net:8081/github/oauth/callback", 8 | "redirect_route": "/github/oauth/callback" 9 | } -------------------------------------------------------------------------------- /code/AuthenticationService/oauth2/services/bitbucket.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": "BITBUCKET", 3 | "auth_url": "https://bitbucket.org/site/oauth2/authorize", 4 | "access_token_url": "https://bitbucket.org/site/oauth2/access_token", 5 | "client_id": "hdYA8D9vE9QeGVjBvz", 6 | "client_secret": "yG7y7qubEuEWhR487BaHMcgaQ85DgPpA", 7 | "redirect_uri": "https://servicecompo.ddns.net:8081/bitbucket/oauth/callback", 8 | "redirect_route": "/bitbucket/oauth/callback" 9 | } -------------------------------------------------------------------------------- /code/Frontend/cliProject/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "declaration": false, 5 | "emitDecoratorMetadata": true, 6 | "experimentalDecorators": true, 7 | "module": "commonjs", 8 | "moduleResolution": "node", 9 | "outDir": "../dist/out-tsc-e2e", 10 | "sourceMap": true, 11 | "target": "es5", 12 | "typeRoots": [ 13 | "../node_modules/@types" 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // The file contents for the current environment will overwrite these during build. 2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do 3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead. 4 | // The list of which env maps to which file can be found in `angular-cli.json`. 5 | 6 | export const environment = { 7 | production: false 8 | }; 9 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_models/app.config.ts: -------------------------------------------------------------------------------- 1 | import { OpaqueToken } from "@angular/core"; 2 | 3 | export let APP_CONFIG = new OpaqueToken("app.config"); 4 | 5 | export interface IAppConfig { 6 | apiEndpoint: string; 7 | } 8 | 9 | export const AppConfig: IAppConfig = { 10 | //apiEndpoint: "https://ec2-54-93-97-126.eu-central-1.compute.amazonaws.com:8080/api/" 11 | //apiEndpoint: "http://localhost:8080/api/" 12 | apiEndpoint: "https://servicecompo.ddns.net:8080/api/" 13 | }; 14 | -------------------------------------------------------------------------------- /code/SeCoFileStorage/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbPath": "mongodb://127.0.0.1/secoFileStorage", 3 | "dbPoolSize": 10, 4 | "grpcServerIp": "localhost", 5 | "grpcServerPort": 50040, 6 | "authServiceIp": "localhost", 7 | "authServicePort": 50054, 8 | "owncloudServiceIp": "localhost", 9 | "owncloudServicePort": 50051, 10 | "dropboxServiceIp": "localhost", 11 | "dropboxServicePort": 50052, 12 | "googleServiceIp": "localhost", 13 | "googleServicePort": 50049 14 | } 15 | 16 | 17 | -------------------------------------------------------------------------------- /code/AuthenticationService/oauth2/services/google.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": "GOOGLE", 3 | "auth_url": "https://accounts.google.com/o/oauth2/v2/auth", 4 | "access_token_url": "https://www.googleapis.com/oauth2/v4/token", 5 | "client_id": "991755779041-2pkhh9e2o4tjpfic4hc4gj83j3msq7bm.apps.googleusercontent.com", 6 | "client_secret": "nzXGBQmH94MSk-f3fUwOaCwb", 7 | "redirect_uri": "https://servicecompo.ddns.net:8081/google/oauth/callback", 8 | "redirect_route": "/google/oauth/callback" 9 | } 10 | -------------------------------------------------------------------------------- /code/Dropbox/proto/fileTransfer.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package fileTransfer; 4 | 5 | // The rpc FileStorage service definition. 6 | service FileTransfer { 7 | rpc TransferTo (stream TransferToRequest) returns (TransferToReply) {} 8 | } 9 | 10 | // The request message 11 | message TransferToRequest { 12 | bytes chunk = 1; 13 | } 14 | 15 | // The response message 16 | message TransferToReply { 17 | string status = 1; 18 | uint32 errStatusCode = 3; 19 | string err = 2; 20 | } 21 | -------------------------------------------------------------------------------- /code/Owncloud/proto/fileTransfer.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package fileTransfer; 4 | 5 | // The rpc FileStorage service definition. 6 | service FileTransfer { 7 | rpc TransferTo (stream TransferToRequest) returns (TransferToReply) {} 8 | } 9 | 10 | // The request message 11 | message TransferToRequest { 12 | bytes chunk = 1; 13 | } 14 | 15 | // The response message 16 | message TransferToReply { 17 | string status = 1; 18 | uint32 errStatusCode = 3; 19 | string err = 2; 20 | } 21 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_directives/scrollintoView.directive.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 17.12.16. 3 | */ 4 | import { Directive, ElementRef, Renderer} from "@angular/core"; 5 | @Directive({ 6 | selector: "[MyFocus]" 7 | }) 8 | 9 | export class ScrollIntoViewDirective { 10 | constructor(private _el: ElementRef, private renderer: Renderer) { 11 | } 12 | 13 | ngAfterViewInit(){ 14 | this.renderer.invokeElementMethod(this._el.nativeElement, 'scrollIntoView'); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "", 4 | "declaration": false, 5 | "emitDecoratorMetadata": true, 6 | "experimentalDecorators": true, 7 | "mapRoot": "./", 8 | "module": "es6", 9 | "moduleResolution": "node", 10 | "outDir": "../dist/out-tsc", 11 | "sourceMap": true, 12 | "target": "es5", 13 | "types": [ 14 | "hammerjs" 15 | ], 16 | "typeRoots": [ 17 | "../node_modules/@types" 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | isDarkTheme: boolean = false; 10 | 11 | 12 | /** 13 | * Notification options 14 | */ 15 | public options = { 16 | position: ["top", "left"], 17 | timeOut: 2000, 18 | animate: "fromRight", 19 | clickToClose: true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Service Composition 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | Loading... 15 | 16 | 17 | -------------------------------------------------------------------------------- /code/rabbitMqTest/send.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by phili on 11.07.2016. 3 | */ 4 | var amqp = require('amqplib/callback_api'); 5 | 6 | amqp.connect('amqp://localhost', function(err, conn) { 7 | conn.createChannel(function(err, ch) { 8 | var q = 'hello'; 9 | var msg = 'Hello World!'; 10 | 11 | ch.assertQueue(q, {durable: false}); 12 | ch.sendToQueue(q, new Buffer(msg)); 13 | console.log(" [x] Sent %s", msg); 14 | }); 15 | setTimeout(function() { conn.close(); process.exit(0) }, 500); 16 | }); -------------------------------------------------------------------------------- /code/TransferService/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "transferFilestorage", 3 | "version": "1.0.0", 4 | "description": "Enables transfer to an filestorage service", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "./node_modules/.bin/mocha --reporter spec" 8 | }, 9 | "author": "philipp prögel", 10 | "license": "ISC", 11 | "dependencies": { 12 | "chai": "^3.5.0", 13 | "chunk": "0.0.2", 14 | "grpc": "^1.0.1", 15 | "mocha": "^3.1.0", 16 | "nconf": "^0.8.4", 17 | "winston": "^2.2.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /code/SeCoFileStorage/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "teammanagement", 3 | "version": "1.0.0", 4 | "description": "Enables crud on team and populates it over grpc", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "./node_modules/.bin/mocha --reporter spec" 8 | }, 9 | "author": "philipp prögel", 10 | "license": "ISC", 11 | "dependencies": { 12 | "chai": "^3.5.0", 13 | "grpc": "^1.0.0", 14 | "mocha": "^3.1.0", 15 | "mongoose": "^4.5.10", 16 | "nconf": "^0.8.4", 17 | "winston": "^2.2.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /code/Google/proto/fileTransfer.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package fileTransfer; 4 | 5 | // The rpc FileStorage service definition. 6 | service FileTransfer { 7 | rpc TransferTo (stream TransferToRequest) returns (TransferToReply) {} 8 | } 9 | 10 | // The request message 11 | message TransferToRequest { 12 | bytes chunk = 1; 13 | } 14 | 15 | message Error { 16 | string msg = 1; 17 | int32 code = 2; 18 | } 19 | 20 | // The response message 21 | message TransferToReply { 22 | string status = 1; 23 | Error err = 2; 24 | } 25 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/teamArea/teamArea.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"teamArea.component.js","sourceRoot":"","sources":["teamArea.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAkC,eAAe,CAAC,CAAA;AAUlD;IAGI;QACI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QACnE,wBAAwB;IAC5B,CAAC;IAED,oCAAQ,GAAR;QACI,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAC1D,CAAC;IAhBL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,WAAW,EAAE,yBAAyB;SACzC,CAAC;;yBAAA;IAaF,wBAAC;AAAD,CAAC,AAXD,IAWC;AAXY,yBAAiB,oBAW7B,CAAA"} -------------------------------------------------------------------------------- /code/Owncloud/communication/RpcPublisher.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by phili on 01.08.2016. 3 | */ 4 | var winston = require('winston'); 5 | nconf = require('nconf'); 6 | 7 | function MsgBroker(msgBrokerType,serverIp,serverPort){ 8 | this.msgBrokerType = msgBrokerType; 9 | 10 | switch(this.msgBrokerType){ 11 | case msgBrokerType.RABBITMQ: 12 | this.implementation = new RabbitMq(serverIp,serverPort); 13 | break; 14 | default: 15 | this.implementation = new RabbitMq(serverIp,serverPort); 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /code/TransferService/proto/fileTransfer.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package fileTransfer; 4 | 5 | // The rpc FileStorage service definition. 6 | service FileTransfer { 7 | rpc TransferTo (stream TransferToRequest) returns (TransferToReply) {} 8 | } 9 | 10 | // The request message 11 | message TransferToRequest { 12 | bytes chunk = 1; 13 | } 14 | 15 | message Error { 16 | string msg = 1; 17 | int32 code = 2; 18 | } 19 | 20 | // The response message 21 | message TransferToReply { 22 | string status = 1; 23 | Error err = 2; 24 | } 25 | -------------------------------------------------------------------------------- /code/NotificationService/db/models/Notification.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 24.08.16. 3 | */ 4 | // Load mongoose package 5 | var mongoose = require('mongoose'); 6 | 7 | // Create a schema 8 | var NotificationSchema = new mongoose.Schema({ 9 | username: {type: String, required: true}, 10 | teamName: {type: String, required: true}, 11 | message: {type: String, required: true}, 12 | service: {type: String, required: true} 13 | }, { 14 | timestamps: true 15 | }); 16 | 17 | module.exports = mongoose.model('Notification', NotificationSchema); -------------------------------------------------------------------------------- /code/Frontend/cliProject/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | 7 | # dependencies 8 | /node_modules 9 | /bower_components 10 | 11 | # IDEs and editors 12 | /.idea 13 | /.vscode 14 | .project 15 | .classpath 16 | .c9/ 17 | *.launch 18 | .settings/ 19 | 20 | # misc 21 | /.sass-cache 22 | /connect.lock 23 | /coverage/* 24 | /libpeerconnection.log 25 | npm-debug.log 26 | testem.log 27 | /typings 28 | 29 | # e2e 30 | /e2e/*.js 31 | /e2e/*.map 32 | 33 | #System Files 34 | .DS_Store 35 | Thumbs.db 36 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_guards/auth.guard.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA2B,eAAe,CAAC,CAAA;AAC3C,uBAAoC,iBAAiB,CAAC,CAAA;AAGtD;IAEI,mBAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAI,CAAC;IAEvC,+BAAW,GAAX;QACI,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACtC,2BAA2B;YAC3B,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC;IACjB,CAAC;IAdL;QAAC,iBAAU,EAAE;;iBAAA;IAeb,gBAAC;AAAD,CAAC,AAdD,IAcC;AAdY,iBAAS,YAcrB,CAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_guards/auth.guard.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { Router, CanActivate } from '@angular/router'; 3 | 4 | @Injectable() 5 | export class AuthGuard implements CanActivate { 6 | 7 | constructor(private router: Router) { } 8 | 9 | canActivate() { 10 | if (localStorage.getItem('currentUser')) { 11 | // logged in so return true 12 | return true; 13 | } 14 | 15 | // not logged in so redirect to login page 16 | this.router.navigate(['/login']); 17 | return false; 18 | } 19 | } -------------------------------------------------------------------------------- /code/SeCoApi/utility/rpcJsonResponseBuilder.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 28.11.16. 3 | */ 4 | "use strict"; 5 | 6 | function buildError(errMsg) { 7 | return { 8 | "ok": false, 9 | "errorMsg": errMsg 10 | }; 11 | } 12 | 13 | function buildParams(params, values) { 14 | var response = { 15 | "ok": true 16 | }; 17 | for (var i = 0; i < params.length; i++) { 18 | response[params[i]] = values[i]; 19 | } 20 | return response; 21 | } 22 | 23 | module.exports = { 24 | buildError: buildError, 25 | buildParams: buildParams 26 | }; 27 | -------------------------------------------------------------------------------- /code/TeamManagement/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "teammanagement", 3 | "version": "1.0.0", 4 | "description": "Enables crud on team and populates it over grpc", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "./node_modules/.bin/mocha --reporter spec" 8 | }, 9 | "author": "philipp prögel", 10 | "license": "ISC", 11 | "dependencies": { 12 | "async": "^2.0.1", 13 | "bcrypt": "^0.8.7", 14 | "chai": "^3.5.0", 15 | "grpc": "^1.0.0", 16 | "mocha": "^3.0.2", 17 | "mongoose": "^4.5.10", 18 | "nconf": "^0.8.4", 19 | "winston": "^2.2.0" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /code/connectorDescriptionPrototype.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 2 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 5 | \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 6 | 7 | \f0\fs24 \cf0 Connector Description\ 8 | \ 9 | Name\ 10 | grpcIp\ 11 | grpcPort\ 12 | requests[\ 13 | method\ 14 | route\ 15 | queryParameter\ 16 | headerParameter\ 17 | grpcFunctionName\ 18 | ]\ 19 | grpcProtoFile} -------------------------------------------------------------------------------- /code/TransferService/transferServiceStart.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | process.chdir(__dirname); //set working directory to path of file that is being executed 3 | var winston = require('winston'), 4 | fs = require('fs'), 5 | server = require('./grpc/server'), 6 | nconf = require('nconf'); 7 | 8 | function init() { 9 | nconf.file({file: './config/config.json'}); 10 | server.init(nconf.get('grpcServerIp'), nconf.get('grpcServerPort')); 11 | server.start(); 12 | winston.log('info', 'transfer service init succesful'); 13 | } 14 | 15 | function main() { 16 | init(); 17 | } 18 | 19 | main(); -------------------------------------------------------------------------------- /code/rabbitMqTest/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/change-team/change-team.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | Select Team 4 | 5 | 6 | {{team.teamName}} 7 | 8 | 9 | 10 | 11 | 12 |
13 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/userArea/userArea.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"userArea.component.js","sourceRoot":"","sources":["userArea.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAkC,eAAe,CAAC,CAAA;AAElD,sBAA4B,oBAAoB,CAAC,CAAA;AASjD;IAGI,2BAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,oCAAQ,GAAR;QACI,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAC1D,CAAC;IAfL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,WAAW,EAAE,yBAAyB;SACzC,CAAC;;yBAAA;IAYF,wBAAC;AAAD,CAAC,AAVD,IAUC;AAVY,yBAAiB,oBAU7B,CAAA"} -------------------------------------------------------------------------------- /code/NotificationService/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "notificationservice", 3 | "version": "1.0.0", 4 | "description": "provides a service for setting and getting notifications inside a team", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "./node_modules/.bin/mocha --reporter spec" 8 | }, 9 | "author": "philipp prögel", 10 | "license": "ISC", 11 | "dependencies": { 12 | "async": "^2.0.1", 13 | "bcrypt": "^0.8.7", 14 | "chai": "^3.5.0", 15 | "grpc": "^1.0.0", 16 | "mocha": "^3.0.2", 17 | "mongoose": "^4.5.10", 18 | "nconf": "^0.8.4", 19 | "winston": "^2.2.0" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /code/UserManagement/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "usermanagement", 3 | "version": "1.0.0", 4 | "description": "Enables crud on user and populates over grpc", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "./node_modules/.bin/mocha --reporter spec" 8 | }, 9 | "author": "philipp prögel", 10 | "license": "ISC", 11 | "dependencies": { 12 | "async": "^2.0.1", 13 | "bcrypt": "^0.8.7", 14 | "chai": "^3.5.0", 15 | "grpc": "^1.0.0", 16 | "mocha": "^3.0.2", 17 | "mongoose": "^4.5.10", 18 | "nconf": "^0.8.4", 19 | "node-uuid": "^1.4.7", 20 | "winston": "^2.2.0" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_services/active-tab.service.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 07.12.16. 3 | */ 4 | import { Injectable } from '@angular/core'; 5 | import { Subject } from 'rxjs/Subject'; 6 | import { Observable } from 'rxjs/Observable'; 7 | @Injectable() 8 | export class ActiveTabService { 9 | // Observable string sources 10 | private wentActiveSource = new Subject(); 11 | // Observable string streams 12 | wentActive$ = this.wentActiveSource.asObservable(); 13 | // Service message commands 14 | wentActive(tabId: number) { 15 | this.wentActiveSource.next(tabId); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_services/inform-new-team.service.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 14.12.16. 3 | */ 4 | import { Injectable } from '@angular/core'; 5 | import { Subject } from 'rxjs/Subject'; 6 | import { Observable } from 'rxjs/Observable'; 7 | @Injectable() 8 | export class InformNewTeamService { 9 | // Observable string sources 10 | private newTeamSource = new Subject(); 11 | // Observable string streams 12 | newTeam$ = this.newTeamSource.asObservable(); 13 | // Service message commands 14 | newTeam(hasTeam: boolean) { 15 | this.newTeamSource.next(hasTeam); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/e2e/login/login.spec.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 29.12.16. 3 | */ 4 | import {LoginPage} from './login.pageObject'; 5 | import {browser} from 'protractor'; 6 | import * as config from '../globalConfig'; 7 | 8 | describe('Login page', function () { 9 | let page: LoginPage; 10 | 11 | beforeEach(() => { 12 | page = new LoginPage(); 13 | }); 14 | 15 | it('should login user', () => { 16 | page.navigateToLoginPage(); 17 | page.login('philipp', 'philipp'); 18 | expect(browser.getCurrentUrl()).toEqual(config.baseUrl); //if redirect worked,test passed 19 | }); 20 | 21 | }); 22 | 23 | 24 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/fileStorage/fileStorage.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"fileStorage.component.js","sourceRoot":"","sources":["fileStorage.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAwB,eAAe,CAAC,CAAA;AAExC,sBAA+C,oBAAoB,CAAC,CAAA;AASpE;IAKI,8BAAoB,YAA0B,EAAU,kBAAsC;QAA1E,iBAAY,GAAZ,YAAY,CAAc;QAAU,uBAAkB,GAAlB,kBAAkB,CAAoB;QAJtF,SAAI,GAAW,SAAS,CAAC;QACzB,SAAI,GAAmB,EAAE,CAAC;QAI9B,oEAAoE;QACpE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;IAC7F,CAAC;IAdL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,aAAa;YACvB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,WAAW,EAAE,4BAA4B;SAC5C,CAAC;;4BAAA;IAYF,2BAAC;AAAD,CAAC,AAVD,IAUC;AAVY,4BAAoB,uBAUhC,CAAA"} -------------------------------------------------------------------------------- /code/SeCoFileStorage/seCoFileStorageStart.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 28.09.16. 3 | */ 4 | 'use strict'; 5 | process.chdir(__dirname); //set working directory to path of file that is being executed 6 | var winston = require('winston'), 7 | fs = require('fs'), 8 | server = require('./grpc/server'), 9 | nconf = require('nconf'); 10 | 11 | function init() { 12 | nconf.file({file: './config/config.json'}); 13 | server.init(nconf.get('grpcServerIp'), nconf.get('grpcServerPort')); 14 | server.start(); 15 | winston.log('info', 'SeCoFileStorage service init succesful'); 16 | } 17 | 18 | function main() { 19 | init(); 20 | } 21 | 22 | main(); -------------------------------------------------------------------------------- /code/AuthenticationService/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "authenticationservice", 3 | "version": "1.0.0", 4 | "description": "Enables oauth2 authentication for different services", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "./node_modules/.bin/mocha --reporter spec" 8 | }, 9 | "author": "philipp prögel", 10 | "license": "ISC", 11 | "dependencies": { 12 | "async": "^2.0.1", 13 | "chai": "^3.5.0", 14 | "cors": "^2.8.1", 15 | "express": "^4.14.0", 16 | "express-list-routes": "^0.1.4", 17 | "grpc": "^1.0.0", 18 | "mocha": "^3.0.2", 19 | "nconf": "^0.8.4", 20 | "request": "^2.74.0", 21 | "winston": "^2.2.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/home/home.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"home.component.js","sourceRoot":"","sources":["home.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAkC,eAAe,CAAC,CAAA;AAGlD,sBAA4B,oBAAoB,CAAC,CAAA;AAOjD;IAGI,uBAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,gCAAQ,GAAR;QACI,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IACnD,CAAC;IAhBL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,WAAW,EAAE,qBAAqB;SACrC,CAAC;;qBAAA;IAcF,oBAAC;AAAD,CAAC,AAZD,IAYC;AAZY,qBAAa,gBAYzB,CAAA"} -------------------------------------------------------------------------------- /code/Dropbox/dropboxStart.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 01.08.16. 3 | */ 4 | 'use strict'; 5 | process.chdir(__dirname); //set working directory to path of file that is being executed 6 | var winston = require('winston'), 7 | fs = require('fs'), 8 | nconf = require('nconf'), 9 | server = require('./grpc/server'); 10 | 11 | 12 | function init() { 13 | nconf.argv() 14 | .env() 15 | .file({file: './config/config.json'}); 16 | winston.log('info', 'Dropbox service init succesful'); 17 | } 18 | 19 | 20 | function main() { 21 | init(); 22 | server.init(nconf.get('grpcServerIp'), nconf.get('grpcServerPort')); 23 | server.start(); 24 | } 25 | 26 | 27 | main(); -------------------------------------------------------------------------------- /code/rabbitMqTest/receive.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by phili on 11.07.2016. 3 | */ 4 | var amqp = require('amqplib/callback_api'); 5 | 6 | amqp.connect('amqp://localhost:5673', function(err, conn) { 7 | if(err){ 8 | console.log('rabbitmq _server not reachable'); 9 | } else { 10 | conn.createChannel(function (err, ch) { 11 | var q = 'hello'; 12 | 13 | ch.assertQueue(q, {durable: false}); 14 | console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", q); 15 | ch.consume(q, function (msg) { 16 | console.log(" [x] Received %s", msg.content.toString()); 17 | }, {noAck: true}); 18 | }); 19 | } 20 | }); -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/app.routing.ts: -------------------------------------------------------------------------------- 1 | import { Routes, RouterModule } from '@angular/router'; 2 | 3 | import { HomeComponent } from './home/index'; 4 | import { LoginComponent } from './login/index'; 5 | import { RegisterComponent } from './register/index'; 6 | import { AuthGuard } from './_guards/index'; 7 | 8 | const appRoutes: Routes = [ 9 | { path: '', component: HomeComponent, canActivate: [AuthGuard] }, 10 | { path: 'login', component: LoginComponent }, 11 | { path: 'register', component: RegisterComponent }, 12 | 13 | // otherwise redirect to home 14 | { path: '**', redirectTo: '' } 15 | ]; 16 | 17 | export const routing = RouterModule.forRoot(appRoutes, { useHash: true }); 18 | -------------------------------------------------------------------------------- /code/Owncloud/owncloudStart.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 25.07.16. 3 | */ 4 | 'use strict'; 5 | process.chdir(__dirname); //set working directory to path of file that is being executed 6 | var winston = require('winston'), 7 | fs = require('fs'), 8 | nconf = require('nconf'), 9 | server = require('./grpc/server'); 10 | 11 | 12 | function init() { 13 | nconf.argv() 14 | .env() 15 | .file({file: './config/config.json'}); 16 | winston.log('info', 'Owncloud service init succesful'); 17 | } 18 | 19 | 20 | function main() { 21 | init(); 22 | server.init(nconf.get('grpcServerIp'), nconf.get('grpcServerPort')); 23 | server.start(); 24 | } 25 | 26 | 27 | main(); -------------------------------------------------------------------------------- /code/Dropbox/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dropbox", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "start.js", 6 | "scripts": { 7 | "test": "./node_modules/.bin/mocha --reporter spec" 8 | }, 9 | "author": "Philipp Prögel", 10 | "repository": { 11 | "type": "git", 12 | "url": "https://bitbucket.org/philippBB/ba.git" 13 | }, 14 | "license": "ISC", 15 | "dependencies": { 16 | "amqplib": "^0.4.2", 17 | "chai": "^3.5.0", 18 | "chunk": "0.0.2", 19 | "grpc": "^1.0.1", 20 | "mocha": "^2.5.3", 21 | "nconf": "^0.8.4", 22 | "request": "^2.74.0", 23 | "winston": "^2.2.0" 24 | }, 25 | "devDependencies": { 26 | "istanbul": "^0.4.4" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/e2e/register/register.spec.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 29.12.16. 3 | */ 4 | import {RegisterPage} from './register.pageObject'; 5 | import {browser} from 'protractor'; 6 | import * as config from '../globalConfig'; 7 | 8 | xdescribe('Register page', function () { 9 | let page: RegisterPage; 10 | 11 | beforeEach(() => { 12 | page = new RegisterPage(); 13 | }); 14 | 15 | it('should register user', () => { 16 | page.navigateToRegisterPage(); 17 | page.register('username' + Math.random(), '123456', '123456'); 18 | expect(browser.getCurrentUrl()).toEqual(config.baseUrl + 'login'); //if redirect to login worked,test passed 19 | }); 20 | 21 | }); 22 | 23 | 24 | -------------------------------------------------------------------------------- /code/TeamManagement/teamManagementStart.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 24.08.16. 3 | */ 4 | 'use strict'; 5 | process.chdir(__dirname); //set working directory to path of file that is being executed 6 | var winston = require('winston'), 7 | fs = require('fs'), 8 | nconf = require('nconf'), 9 | server = require('./grpc/server'); 10 | 11 | 12 | function init() { 13 | nconf.argv() 14 | .env() 15 | .file({file: './config/config.json'}); 16 | server.init(nconf.get('grpcServerIp'), nconf.get('grpcServerPort')); 17 | winston.log('info', 'Team management service init succesful'); 18 | } 19 | 20 | 21 | function main() { 22 | init(); 23 | server.start(); 24 | } 25 | 26 | 27 | main(); -------------------------------------------------------------------------------- /code/UserManagement/userManagementStart.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 24.08.16. 3 | */ 4 | 'use strict'; 5 | process.chdir(__dirname); //set working directory to path of file that is being executed 6 | var winston = require('winston'), 7 | fs = require('fs'), 8 | nconf = require('nconf'), 9 | server = require('./grpc/server'); 10 | 11 | 12 | function init() { 13 | nconf.argv() 14 | .env() 15 | .file({file: './config/config.json'}); 16 | winston.log('info', 'User management service init succesful'); 17 | } 18 | 19 | 20 | function main() { 21 | init(); 22 | server.init(nconf.get('grpcServerIp'), nconf.get('grpcServerPort')); 23 | server.start(); 24 | } 25 | 26 | 27 | main(); -------------------------------------------------------------------------------- /code/Google/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "google", 3 | "version": "1.0.0", 4 | "description": "google api gateway", 5 | "main": "start.js", 6 | "scripts": { 7 | "test": "./node_modules/.bin/mocha --reporter spec" 8 | }, 9 | "author": "Philipp Prögel", 10 | "repository": { 11 | "type": "git", 12 | "url": "https://bitbucket.org/philippBB/ba.git" 13 | }, 14 | "license": "ISC", 15 | "dependencies": { 16 | "amqplib": "^0.4.2", 17 | "chai": "^3.5.0", 18 | "chunk": "0.0.2", 19 | "grpc": "^1.0.1", 20 | "mocha": "^2.5.3", 21 | "nconf": "^0.8.4", 22 | "request": "^2.74.0", 23 | "winston": "^2.2.0" 24 | }, 25 | "devDependencies": { 26 | "istanbul": "^0.4.4" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /code/Github/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "github", 3 | "version": "1.0.0", 4 | "description": "gateway to some functions of the github api", 5 | "main": "start.js", 6 | "scripts": { 7 | "test": "./node_modules/.bin/mocha --reporter spec" 8 | }, 9 | "author": "Philipp Prögel", 10 | "repository" : 11 | { "type" : "git" 12 | , "url" : "https://bitbucket.org/philippBB/ba.git" 13 | }, 14 | "license": "ISC", 15 | "dependencies": { 16 | "amqplib": "^0.4.2", 17 | "chai": "^3.5.0", 18 | "grpc": "^1.0.0-pre1", 19 | "mocha": "^2.5.3", 20 | "nconf": "^0.8.4", 21 | "request": "^2.74.0", 22 | "winston": "^2.2.0" 23 | }, 24 | "devDependencies": { 25 | "istanbul": "^0.4.4" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /code/NotificationService/notificationServiceStart.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 24.08.16. 3 | */ 4 | 'use strict'; 5 | process.chdir(__dirname); //set working directory to path of file that is being executed 6 | var winston = require('winston'), 7 | fs = require('fs'), 8 | nconf = require('nconf'), 9 | server = require('./grpc/server'); 10 | 11 | 12 | function init() { 13 | nconf.argv() 14 | .env() 15 | .file({file: './config/config.json'}); 16 | server.init(nconf.get('grpcServerIp'), nconf.get('grpcServerPort')); 17 | winston.log('info', 'Notification service init succesful'); 18 | } 19 | 20 | 21 | function main() { 22 | init(); 23 | server.start(); 24 | } 25 | 26 | 27 | main(); -------------------------------------------------------------------------------- /code/Slack/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "slack", 3 | "version": "1.0.0", 4 | "description": "slack api gateway", 5 | "main": "start.js", 6 | "scripts": { 7 | "test": "./node_modules/.bin/mocha --reporter spec" 8 | }, 9 | "author": "Philipp Prögel", 10 | "repository": { 11 | "type": "git", 12 | "url": "https://bitbucket.org/philippBB/ba.git" 13 | }, 14 | "license": "ISC", 15 | "dependencies": { 16 | "amqplib": "^0.4.2", 17 | "chai": "^3.5.0", 18 | "grpc": "^1.0.0-pre1", 19 | "hashmap": "^2.0.6", 20 | "mocha": "^2.5.3", 21 | "nconf": "^0.8.4", 22 | "request": "^2.74.0", 23 | "winston": "^2.2.0" 24 | }, 25 | "devDependencies": { 26 | "istanbul": "^0.4.4" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /code/Slack/slackStart.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 01.08.16. 3 | */ 4 | 'use strict'; 5 | process.chdir(__dirname); //set working directory to path of file that is being executed 6 | var winston = require('winston'), 7 | fs = require('fs'), 8 | nconf = require('nconf'), 9 | slack = require('./slack'), 10 | server = require('./grpc/server'); 11 | 12 | 13 | function init() { 14 | nconf.argv() 15 | .env() 16 | .file({file: './config/config.json'}); 17 | winston.log('info', 'Google service init succesful'); 18 | } 19 | 20 | 21 | function main() { 22 | init(); 23 | server.init(nconf.get('grpcServerIp'), nconf.get('grpcServerPort')); 24 | server.start(); 25 | } 26 | 27 | 28 | main(); -------------------------------------------------------------------------------- /code/Bitbucket/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bitbucket", 3 | "version": "1.0.0", 4 | "description": "gateway to some functions of the bitbucket api", 5 | "main": "start.js", 6 | "scripts": { 7 | "test": "./node_modules/.bin/mocha --reporter spec" 8 | }, 9 | "author": "Philipp Prögel", 10 | "repository" : 11 | { "type" : "git" 12 | , "url" : "https://bitbucket.org/philippBB/ba.git" 13 | }, 14 | "license": "ISC", 15 | "dependencies": { 16 | "amqplib": "^0.4.2", 17 | "chai": "^3.5.0", 18 | "grpc": "^1.0.0-pre1", 19 | "mocha": "^2.5.3", 20 | "nconf": "^0.8.4", 21 | "request": "^2.74.0", 22 | "winston": "^2.2.0" 23 | }, 24 | "devDependencies": { 25 | "istanbul": "^0.4.4" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /code/Github/githubStart.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 01.08.16. 3 | */ 4 | 'use strict'; 5 | process.chdir(__dirname); //set working directory to path of file that is being executed 6 | var winston = require('winston'), 7 | fs = require('fs'), 8 | nconf = require('nconf'), 9 | server = require('./grpc/server'), 10 | github = require('./github'); 11 | 12 | 13 | function init() { 14 | nconf.argv() 15 | .env() 16 | .file({file: './config/config.json'}); 17 | winston.log('info', 'Github service init succesful'); 18 | } 19 | 20 | 21 | function main() { 22 | init(); 23 | server.init(nconf.get('grpcServerIp'), nconf.get('grpcServerPort')); 24 | server.start(); 25 | } 26 | 27 | 28 | main(); -------------------------------------------------------------------------------- /code/Google/googleStart.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 01.08.16. 3 | */ 4 | 'use strict'; 5 | process.chdir(__dirname); //set working directory to path of file that is being executed 6 | var winston = require('winston'), 7 | fs = require('fs'), 8 | nconf = require('nconf'), 9 | google = require('./google'), 10 | server = require('./grpc/server'); 11 | 12 | 13 | function init() { 14 | nconf.argv() 15 | .env() 16 | .file({file: './config/config.json'}); 17 | winston.log('info', 'Google service init succesful'); 18 | } 19 | 20 | 21 | function main() { 22 | init(); 23 | server.init(nconf.get('grpcServerIp'), nconf.get('grpcServerPort')); 24 | server.start(); 25 | } 26 | 27 | 28 | main(); -------------------------------------------------------------------------------- /code/Bitbucket/bitbucketStart.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 01.08.16. 3 | */ 4 | 'use strict'; 5 | process.chdir(__dirname); //set working directory to path of file that is being executed 6 | var winston = require('winston'), 7 | fs = require('fs'), 8 | nconf = require('nconf'), 9 | server = require('./grpc/server'), 10 | bitbucket = require('./bitbucket'); 11 | 12 | 13 | function init() { 14 | nconf.argv() 15 | .env() 16 | .file({file: './config/config.json'}); 17 | winston.log('info', 'Bitbucket service init succesful'); 18 | } 19 | 20 | 21 | function main() { 22 | init(); 23 | server.init(nconf.get('grpcServerIp'), nconf.get('grpcServerPort')); 24 | server.start(); 25 | } 26 | 27 | 28 | main(); -------------------------------------------------------------------------------- /code/SeCoFileStorage/db/models/TeamStorage.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 29.09.16. 3 | */ 4 | // Load mongoose package 5 | var mongoose = require('mongoose'); 6 | 7 | 8 | // Create a schema 9 | var FileStorageSchema = new mongoose.Schema({ 10 | seCoFilePath: {type: String, required: true}, 11 | serviceFilePath: {type: String, required: true}, 12 | fileName: {type: String, required: true}, 13 | username: {type: String, required: true}, 14 | serviceName: {type: String, required: true} 15 | }); 16 | 17 | // Create a schema 18 | var TeamStorageSchema = new mongoose.Schema({ 19 | teamName: {type: String, required: true}, 20 | files:[FileStorageSchema] 21 | }); 22 | 23 | module.exports = mongoose.model('TeamStorage', TeamStorageSchema); -------------------------------------------------------------------------------- /code/Dropbox/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/Github/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/Google/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/Owncloud/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/RestTest/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/SeCoApi/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/Slack/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/Bitbucket/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/Owncloud/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "owncloud", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "start.js", 6 | "scripts": { 7 | "test": "./node_modules/.bin/mocha --reporter spec" 8 | }, 9 | "author": "Philipp Prögel", 10 | "repository": { 11 | "type": "git", 12 | "url": "https://bitbucket.org/philippBB/ba.git" 13 | }, 14 | "license": "ISC", 15 | "dependencies": { 16 | "amqplib": "^0.4.2", 17 | "chai": "^3.5.0", 18 | "chunk": "0.0.2", 19 | "grpc": "^1.0.1", 20 | "mocha": "^2.5.3", 21 | "nconf": "^0.8.4", 22 | "request": "^2.79.0", 23 | "winston": "^2.2.0", 24 | "xml2js": "^0.4.17", 25 | "xmldoc": "^1.0.0" 26 | }, 27 | "devDependencies": { 28 | "istanbul": "^0.4.4" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /code/TeamManagement/test/dbTest: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 26.09.16. 3 | */ 4 | 'use strict'; 5 | 6 | var expect = require('chai').expect, 7 | assert = require('chai').assert, 8 | db = require('../db/db') 9 | 10 | 11 | function init(){ 12 | db.connect(10,'mongodb://127.0.0.1/secoTeam'); 13 | } 14 | 15 | var client = {}; 16 | 17 | describe('TeamManagement', function () { 18 | before(function() { 19 | init(); 20 | }); 21 | describe('list', function () { 22 | it('all Teams a user is part of', function (done) { 23 | db.listTeams('test',function(err,teams){ 24 | console.log(err); 25 | console.log(teams); 26 | done(); 27 | }); 28 | }); 29 | }); 30 | }); -------------------------------------------------------------------------------- /code/rabbitMqTest/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/SeCoFileStorage/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/TeamManagement/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/TransferService/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/UserManagement/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/AuthenticationService/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /code/NotificationService/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Mac 2 | .DS_Store 3 | 4 | # Logs 5 | logs 6 | *.log 7 | npm-debug.log* 8 | 9 | # Runtime data 10 | pids 11 | *.pid 12 | *.seed 13 | *.pid.lock 14 | 15 | # Directory for instrumented libs generated by jscoverage/JSCover 16 | lib-cov 17 | 18 | # Coverage directory used by tools like istanbul 19 | coverage 20 | 21 | # nyc test coverage 22 | .nyc_output 23 | 24 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 25 | .grunt 26 | 27 | # node-waf configuration 28 | .lock-wscript 29 | 30 | # Compiled binary addons (http://nodejs.org/api/addons.html) 31 | build/Release 32 | 33 | # Dependency directories 34 | node_modules 35 | jspm_packages 36 | 37 | # Optional npm cache directory 38 | .npm 39 | 40 | # Optional REPL history 41 | .node_repl_history -------------------------------------------------------------------------------- /code/AuthenticationService/proto/authentication.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package authentication; 4 | 5 | //interface between auth service and user service to insert auth credentials to database 6 | service Authentication { 7 | 8 | rpc SetAuthentication (AuthenticationRequest) returns (AuthenticationReply) { 9 | } 10 | 11 | } 12 | 13 | //service types enum 14 | enum ServiceType { 15 | GITHUB = 0; 16 | DROPBOX = 1; 17 | BITBUCKET = 2; 18 | GOOGLE = 3; 19 | SLACK = 4; 20 | } 21 | 22 | message AuthenticationRequest { 23 | ServiceType service = 1; 24 | string username = 2; 25 | string access_token = 3; 26 | string refresh_token = 4; 27 | } 28 | 29 | 30 | message AuthenticationReply { 31 | string status = 1; 32 | string err = 2; 33 | } 34 | 35 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/e2e/login/login.pageObject.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 29.12.16. 3 | */ 4 | import {browser, element, by, ElementFinder} from 'protractor'; 5 | import * as helper from '../helper'; 6 | import * as config from '../globalConfig'; 7 | 8 | export class LoginPage { 9 | 10 | private loginUrl: string = config.baseUrl + 'login'; 11 | 12 | private loginButton = element(by.buttonText('login')); 13 | 14 | 15 | login(name: string, password: string) { 16 | helper.sendKeysToElement(element(by.className('loginUsernameInput')),name); 17 | helper.sendKeysToElement(element(by.className('loginPasswordInput')),password); 18 | this.loginButton.click(); 19 | } 20 | 21 | navigateToLoginPage() { 22 | return browser.get(this.loginUrl); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_directives/ChangeBgColor.directive.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"ChangeBgColor.directive.js","sourceRoot":"","sources":["ChangeBgColor.directive.ts"],"names":[],"mappings":";;;;;;;;;;AAAA;;GAEG;AACH,qBAA6C,eAAe,CAAC,CAAA;AAS7D;IAII,gCAAY,EAAc;QAHlB,kBAAa,GAAG,MAAM,CAAC;QAGD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC;IAAC,CAAC;IAI3D,6CAAY,GAAZ,cAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC7E,6CAAY,GAAZ,cAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEhC,0CAAS,GAAjB,UAAkB,KAAY;QAC1B,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;IAC1C,CAAC;IAPD;QAAC,YAAK,CAAC,aAAa,CAAC;;kEAAA;IAbzB;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,mBAAmB;YAC7B,IAAI,EAAE;gBACF,cAAc,EAAE,gBAAgB;gBAChC,cAAc,EAAE,gBAAgB;aACnC;SACJ,CAAC;;8BAAA;IAgBF,6BAAC;AAAD,CAAC,AAfD,IAeC;AAfY,8BAAsB,yBAelC,CAAA"} -------------------------------------------------------------------------------- /code/.idea/jsLibraryMappings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /code/Frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # nyc test coverage 18 | .nyc_output 19 | 20 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 21 | .grunt 22 | 23 | # node-waf configuration 24 | .lock-wscript 25 | 26 | # Compiled binary addons (http://nodejs.org/api/addons.html) 27 | build/Release 28 | 29 | # Dependency directories 30 | node_modules 31 | jspm_packages 32 | typings 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history 39 | 40 | # Generated files 41 | app/**/*.js 42 | app/**/*.js.map -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/polyfills.ts: -------------------------------------------------------------------------------- 1 | // This file includes polyfills needed by Angular 2 and is loaded before 2 | // the app. You can add your own extra polyfills to this file. 3 | import 'core-js/es6/symbol'; 4 | import 'core-js/es6/object'; 5 | import 'core-js/es6/function'; 6 | import 'core-js/es6/parse-int'; 7 | import 'core-js/es6/parse-float'; 8 | import 'core-js/es6/number'; 9 | import 'core-js/es6/math'; 10 | import 'core-js/es6/string'; 11 | import 'core-js/es6/date'; 12 | import 'core-js/es6/array'; 13 | import 'core-js/es6/regexp'; 14 | import 'core-js/es6/map'; 15 | import 'core-js/es6/set'; 16 | import 'core-js/es6/reflect'; 17 | 18 | import 'core-js/es7/reflect'; 19 | import 'zone.js/dist/zone'; 20 | import 'hammerjs'; 21 | 22 | //for animations in unsupported browsers 23 | import 'web-animations-js/web-animations.min'; 24 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/e2e/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | /* 2 | import {LoginPage} from './loginPage.po'; 3 | import {browser, element, by, ElementFinder} from 'protractor'; 4 | 5 | describe('cli-project App', function () { 6 | let page: LoginPage; 7 | //let baseUrl: string = 'https://philipphaw.github.io/Service-Composition/#/'; 8 | let baseUrl: string = 'http://localhost:4200/#/'; 9 | 10 | it('should create team', () => { 11 | page.clickCreateTeamButton(); 12 | page.sendKeysToElement(page.getElementByClass('createTeamInputName'),'Team' + Math.random()); 13 | page.sendKeysToElement(page.getElementByClass('createTeamInputPassword'),'123456'); 14 | page.clickCreateButton(); 15 | var createTeamInputNameElement = page.getElementByClass('createTeamInputName'); 16 | expect(createTeamInputNameElement.isPresent()).toBeFalsy(); 17 | }); 18 | 19 | }); 20 | */ 21 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_directives/ChangeBgColor.directive.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 01.12.16. 3 | */ 4 | import {Directive, ElementRef, Input} from '@angular/core'; 5 | 6 | @Directive({ 7 | selector: '[app-MyChangeBgColor]', 8 | host: { 9 | '(mouseenter)': 'onMouseEnter()', 10 | '(mouseleave)': 'onMouseLeave()' 11 | } 12 | }) 13 | export class ChangeBgColorDirective { 14 | @Input() highlightColor: string; 15 | private _defaultColor = 'blue'; 16 | private el: HTMLElement; 17 | 18 | constructor(el: ElementRef) { 19 | this.el = el.nativeElement; 20 | } 21 | 22 | 23 | onMouseEnter() { 24 | this.highlight(this.highlightColor || this._defaultColor); 25 | } 26 | 27 | onMouseLeave() { 28 | this.highlight(null); 29 | } 30 | 31 | private highlight(color: string) { 32 | this.el.style.backgroundColor = color; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_services/fileStorage.service.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"fileStorage.service.js","sourceRoot":"","sources":["fileStorage.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAyB,eAAe,CAAC,CAAA;AACzC,qBAAsD,eAAe,CAAC,CAAA;AAEtE,QAAO,yBAAyB,CAAC,CAAA;AACjC,QAAO,2BAA2B,CAAC,CAAA;AAGnC;IAEI,4BAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;IAC9B,CAAC;IAED,gDAAmB,GAAnB,UAAoB,GAAW,EAAE,WAAmB;QAChD,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,WAAW,CAAC,CAAC;QAC3C,IAAI,IAAI,GAAG;YACP;gBACI,IAAI,EAAE,YAAY;gBAClB,GAAG,EAAE,MAAM;aACd;YACD;gBACI,IAAI,EAAE,YAAY;gBAClB,GAAG,EAAE,MAAM;aACd;YACD;gBACI,IAAI,EAAE,YAAY;gBAClB,GAAG,EAAE,MAAM;aACd;YACD;gBACI,IAAI,EAAE,YAAY;gBAClB,GAAG,EAAE,MAAM;aACd;YACD;gBACI,IAAI,EAAE,YAAY;gBAClB,GAAG,EAAE,MAAM;aACd;SACJ,CAAC;QACF,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC;IAhCL;QAAC,iBAAU,EAAE;;0BAAA;IAkCb,yBAAC;AAAD,CAAC,AAjCD,IAiCC;AAjCY,0BAAkB,qBAiC9B,CAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/slack/slack.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | import { By } from '@angular/platform-browser'; 4 | import { DebugElement } from '@angular/core'; 5 | 6 | import { SlackComponent } from './slack.component'; 7 | 8 | describe('SlackComponent', () => { 9 | let component: SlackComponent; 10 | let fixture: ComponentFixture; 11 | 12 | beforeEach(async(() => { 13 | TestBed.configureTestingModule({ 14 | declarations: [ SlackComponent ] 15 | }) 16 | .compileComponents(); 17 | })); 18 | 19 | beforeEach(() => { 20 | fixture = TestBed.createComponent(SlackComponent); 21 | component = fixture.componentInstance; 22 | fixture.detectChanges(); 23 | }); 24 | 25 | it('should create', () => { 26 | expect(component).toBeTruthy(); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /code/RestTest/restTest.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by phili on 12.07.2016. 3 | */ 4 | var http = require('http'); 5 | var options = { 6 | host: 'www.random.org', 7 | path: '/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new' 8 | }; 9 | 10 | var req = http.get(options, function(res) { 11 | console.log('STATUS: ' + res.statusCode); 12 | console.log('HEADERS: ' + JSON.stringify(res.headers)); 13 | 14 | // Buffer the body entirely for processing as a whole. 15 | var bodyChunks = []; 16 | res.on('data', function(chunk) { 17 | // You can process streamed parts here... 18 | bodyChunks.push(chunk); 19 | }).on('end', function() { 20 | var body = Buffer.concat(bodyChunks); 21 | console.log('BODY: ' + body); 22 | // ...and/or process the entire body here. 23 | }) 24 | }); 25 | 26 | req.on('error', function(e) { 27 | console.log('ERROR: ' + e.message); 28 | }); -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/serviceSelection/serviceSelection.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, ViewEncapsulation} from '@angular/core'; 2 | import {Router} from '@angular/router'; 3 | 4 | import {Service} from '../_models/service'; 5 | import {ActiveTabService} from '../_services/index'; 6 | 7 | @Component({ 8 | selector: 'serviceSelection', 9 | templateUrl: 'serviceSelection.component.html', 10 | styleUrls: ['serviceSelection.component.css'], 11 | encapsulation: ViewEncapsulation.None, 12 | providers: [ActiveTabService] 13 | }) 14 | 15 | export class ServiceSelectionComponent { 16 | private current: number = 0; 17 | private tabStarted: boolean[]= [false,false,false,false,false,false]; 18 | 19 | constructor(private router: Router, private activeTabService: ActiveTabService) { 20 | activeTabService.wentActive$.subscribe( 21 | tabId => { 22 | this.tabStarted[tabId] = true; 23 | }); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /code/SeCoFileStorage/pathParser.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 01.10.16. 3 | */ 4 | 5 | 6 | /** 7 | * 8 | * @param path 9 | * @returns {path and fileName} 10 | */ 11 | function parsePath(path){ 12 | if(!path || path === undefined) return null; 13 | var splitted = path.split('/'); 14 | if(splitted.length === 0){ 15 | //no '/' found, root directory 16 | return { 17 | path: 'root', 18 | fileName: path 19 | } 20 | } 21 | var filePath = 'root'; 22 | for(var i = 0;i { 9 | let component: CreateTeamComponent; 10 | let fixture: ComponentFixture; 11 | 12 | beforeEach(async(() => { 13 | TestBed.configureTestingModule({ 14 | declarations: [ CreateTeamComponent ] 15 | }) 16 | .compileComponents(); 17 | })); 18 | 19 | beforeEach(() => { 20 | fixture = TestBed.createComponent(CreateTeamComponent); 21 | component = fixture.componentInstance; 22 | fixture.detectChanges(); 23 | }); 24 | 25 | it('should create', () => { 26 | expect(component).toBeTruthy(); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/userArea/userArea.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | User Area 4 | Logged in as: {{currentUser.username}}! 5 | 6 | 7 | 8 | content area 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/auth-settings/auth-settings.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | import { By } from '@angular/platform-browser'; 4 | import { DebugElement } from '@angular/core'; 5 | 6 | import { AuthSettingsComponent } from './auth-settings.component'; 7 | 8 | describe('AuthSettingsComponent', () => { 9 | let component: AuthSettingsComponent; 10 | let fixture: ComponentFixture; 11 | 12 | beforeEach(async(() => { 13 | TestBed.configureTestingModule({ 14 | declarations: [ AuthSettingsComponent ] 15 | }) 16 | .compileComponents(); 17 | })); 18 | 19 | beforeEach(() => { 20 | fixture = TestBed.createComponent(AuthSettingsComponent); 21 | component = fixture.componentInstance; 22 | fixture.detectChanges(); 23 | }); 24 | 25 | it('should create', () => { 26 | expect(component).toBeTruthy(); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /code/SeCoApi/proto/notification.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package notification; 4 | 5 | // The rpc FileStorage service definition. 6 | service Notification { 7 | rpc Create (CreateRequest) returns (CreateReply) { 8 | } 9 | 10 | rpc List (ListRequest) returns (ListReply) { 11 | } 12 | } 13 | 14 | //service types enum 15 | enum ServiceType { 16 | GITHUB = 0; 17 | DROPBOX = 1; 18 | BITBUCKET = 2; 19 | GOOGLE = 3; 20 | SLACK = 4; 21 | OWNCLOUD = 5; 22 | SECOFILESTORAGE = 6; 23 | } 24 | 25 | message CreateRequest { 26 | string username = 1; 27 | string team = 2; 28 | string message = 3; 29 | ServiceType service = 4; 30 | } 31 | 32 | message CreateReply { 33 | string status = 1; 34 | string err = 2; 35 | } 36 | 37 | message ListRequest { 38 | string team = 1; 39 | string username = 2; 40 | int32 timeStamp = 3; 41 | } 42 | 43 | message ListReply { 44 | string notifications = 1; 45 | string err = 2; 46 | } 47 | 48 | -------------------------------------------------------------------------------- /code/NotificationService/proto/notification.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package notification; 4 | 5 | // The rpc FileStorage service definition. 6 | service Notification { 7 | rpc Create (CreateRequest) returns (CreateReply) { 8 | } 9 | 10 | rpc List (ListRequest) returns (ListReply) { 11 | } 12 | } 13 | 14 | //service types enum 15 | enum ServiceType { 16 | GITHUB = 0; 17 | DROPBOX = 1; 18 | BITBUCKET = 2; 19 | GOOGLE = 3; 20 | SLACK = 4; 21 | OWNCLOUD = 5; 22 | SECOFILESTORAGE = 6; 23 | } 24 | 25 | message CreateRequest { 26 | string username = 1; 27 | string team = 2; 28 | string message = 3; 29 | ServiceType service = 4; 30 | } 31 | 32 | message CreateReply { 33 | string status = 1; 34 | string err = 2; 35 | } 36 | 37 | message ListRequest { 38 | string team = 1; 39 | string username = 2; 40 | int32 timeStamp = 3; 41 | } 42 | 43 | message ListReply { 44 | string notifications = 1; 45 | string err = 2; 46 | } 47 | 48 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/protractor.conf.js: -------------------------------------------------------------------------------- 1 | // Protractor configuration file, see link for more information 2 | // https://github.com/angular/protractor/blob/master/docs/referenceConf.js 3 | 4 | /*global jasmine */ 5 | var SpecReporter = require('jasmine-spec-reporter'); 6 | 7 | exports.config = { 8 | allScriptsTimeout: 11000, 9 | ignoreUncaughtExceptions: true, 10 | specs: [ 11 | './e2e/register/*.spec.ts', 12 | './e2e/login/*.spec.ts', 13 | './e2e/home/*.spec.ts' 14 | ], 15 | capabilities: { 16 | 'browserName': 'chrome' 17 | }, 18 | directConnect: true, 19 | baseUrl: 'http://localhost:4200/', 20 | framework: 'jasmine', 21 | jasmineNodeOpts: { 22 | showColors: true, 23 | defaultTimeoutInterval: 30000, 24 | print: function() {} 25 | }, 26 | useAllAngular2AppRoots: true, 27 | beforeLaunch: function() { 28 | require('ts-node').register({ 29 | project: 'e2e' 30 | }); 31 | }, 32 | onPrepare: function() { 33 | jasmine.getEnv().addReporter(new SpecReporter()); 34 | } 35 | }; 36 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/teamArea/teamArea.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Team Area 4 | Active Team: 5 | {{currentTeam.teamName}} 6 | none 7 | 8 | 9 | 10 | 11 | content area 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/e2e/register/register.pageObject.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 29.12.16. 3 | */ 4 | import {browser, element, by, ElementFinder} from 'protractor'; 5 | import * as helper from '../helper'; 6 | import * as config from '../globalConfig'; 7 | 8 | export class RegisterPage { 9 | 10 | private registerUrl = config.baseUrl + 'register'; 11 | private username = element.all(by.css('.md-input-element')).get(0); 12 | private password1 = element.all(by.css('.md-input-element')).get(1); 13 | private password2 = element.all(by.css('.md-input-element')).get(2); 14 | private registerButton = element(by.buttonText('submit')); 15 | 16 | register(username: string, password1: string, password2: string) { 17 | helper.sendKeysToElement(this.username, username); 18 | helper.sendKeysToElement(this.password1, password1); 19 | helper.sendKeysToElement(this.password2, password2); 20 | this.registerButton.click(); 21 | } 22 | 23 | 24 | navigateToRegisterPage() { 25 | return browser.get(this.registerUrl); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /code/rabbitMqTest/rpc_server.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by phili on 11.07.2016. 3 | */ 4 | 5 | var amqp = require('amqplib/callback_api'); 6 | 7 | amqp.connect('amqp://localhost', function(err, conn) { 8 | conn.createChannel(function(err, ch) { 9 | var q = 'rpc_queue'; 10 | 11 | ch.assertQueue(q, {durable: false}); 12 | ch.prefetch(1); 13 | console.log(' [x] Awaiting RPC requests'); 14 | ch.consume(q, function reply(msg) { 15 | var jsonContent = JSON.parse(msg.content); 16 | var n = parseInt(jsonContent.num); 17 | 18 | console.log(" [.] fib(%d)", n); 19 | var r = fibonacci(n); 20 | 21 | ch.sendToQueue(msg.properties.replyTo, 22 | new Buffer(r.toString()), 23 | {correlationId: msg.properties.correlationId}); 24 | 25 | ch.ack(msg); 26 | }); 27 | }); 28 | }); 29 | 30 | function fibonacci(n) { 31 | if (n == 0 || n == 1) 32 | return n; 33 | else 34 | return fibonacci(n - 1) + fibonacci(n - 2); 35 | } -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_pipes/fileSize.pipe.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 19.01.17. 3 | */ 4 | import { Pipe, PipeTransform } from '@angular/core'; 5 | 6 | /* 7 | * Convert bytes into largest possible unit. 8 | * Takes an precision argument that defaults to 2. 9 | * Usage: 10 | * bytes | fileSize:precision 11 | * Example: 12 | * {{ 1024 | fileSize}} 13 | * formats to: 1 KB 14 | */ 15 | @Pipe({name: 'fileSize'}) 16 | export class FileSizePipe implements PipeTransform { 17 | 18 | private units = [ 19 | 'bytes', 20 | 'KB', 21 | 'MB', 22 | 'GB', 23 | 'TB', 24 | 'PB' 25 | ]; 26 | 27 | transform(bytes: number = 0, precision: number = 2 ) : string { 28 | if ( isNaN( parseFloat( String(bytes) )) || ! isFinite( bytes ) ) return '?'; 29 | let unit = 0; 30 | 31 | if(bytes < 1024){ 32 | return bytes + ' bytes'; 33 | } 34 | 35 | while ( bytes >= 1024 ) { 36 | bytes /= 1024; 37 | unit ++; 38 | } 39 | return bytes.toFixed( + precision ) + ' ' + this.units[ unit ]; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /code/SeCoApi/utility/headerChecker.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 19.07.16. 3 | */ 4 | var RpcJsonResponseBuilder = require('./rpcJsonResponseBuilder'); 5 | 6 | function HeaderChecker(){ 7 | } 8 | 9 | HeaderChecker.prototype.containsParameter = function (params, req, res){ 10 | if(params === undefined){ 11 | return true; 12 | } 13 | var allParamsOk = true; 14 | for(var i = 0;i { 21 | return response; 22 | }) 23 | .catch(this.handleError); 24 | } 25 | 26 | private handleError(error: Response | any) { 27 | return Observable.throw(error || 'Server error'); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /code/Owncloud/test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 15.01.17. 3 | */ 4 | var request = require('request'); 5 | 6 | 7 | var options = { 8 | method: 'Get', 9 | uri: 'https://owncloud.informatik.haw-hamburg.de/remote.php/webdav/REAME.pdf', 10 | auth: { 11 | user: 'abi515', 12 | password: 'Injection1', 13 | sendImmediately: false 14 | } 15 | }; 16 | var call = request(options); 17 | 18 | 19 | call.on('response', function (response) { 20 | var body = ''; 21 | response.on('data', function (chunk) { 22 | body += chunk; 23 | }); 24 | response.on('end', function () { 25 | console.log('BODY: ' + body); 26 | }); 27 | }); 28 | 29 | if (err) { 30 | winston.log('error', 'application error: ', err); 31 | return callback(err); 32 | } 33 | if (response.statusCode >= 400 && response.statusCode <= 499) { 34 | winston.log('error', 'http error: ', err); 35 | return callback(new Error(response.statusCode + ': ' + response.statusMessage)); 36 | } 37 | winston.log('info', 'succesfully got file from dropbox'); 38 | return callback(null, fileName, body); -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 9 | Service Composition 10 | 11 | 12 | 13 | 14 | 15 | Login 16 | 17 | 18 | Register 19 | 20 | 21 | Home 22 | 23 | 24 |
25 | 26 |
27 |
28 |
29 | -------------------------------------------------------------------------------- /code/SeCoApi/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "secoapi", 3 | "version": "1.0.0", 4 | "description": "REST conform gateway to various webservices", 5 | "main": "server.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "prestart": "mongod --dbpath /Users/PhilippMac/Desktop/mongodb/db/data --fork --logpath /dev/null", 9 | "start": "node secoApiStart.js" 10 | }, 11 | "author": "Philipp Prögel", 12 | "repository": { 13 | "type": "git", 14 | "url": "https://bitbucket.org/philippBB/ba.git" 15 | }, 16 | "license": "ISC", 17 | "dependencies": { 18 | "amqplib": "^0.4.2", 19 | "basic-auth": "^1.0.4", 20 | "body-parser": "^1.15.2", 21 | "chunk": "0.0.2", 22 | "cookie-parser": "^1.4.3", 23 | "cors": "^2.8.1", 24 | "express": "^4.14.0", 25 | "express-fileupload": "0.0.5", 26 | "express-list-routes": "^0.1.4", 27 | "express-session": "^1.14.1", 28 | "grpc": "^1.0.1", 29 | "hashmap": "^2.0.6", 30 | "heapdump": "^0.3.7", 31 | "letsencrypt-express": "^2.0.5", 32 | "nconf": "^0.8.4", 33 | "winston": "^2.2.0" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /code/SeCoApi/proto/authentication.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package authentication; 4 | 5 | //interface between auth service and user service to insert auth credentials to database 6 | service Authentication { 7 | 8 | rpc SetAuthentication (SetAuthenticationRequest) returns (SetAuthenticationReply) { 9 | } 10 | 11 | rpc GetAuthentication (GetAuthenticationRequest) returns (GetAuthenticationReply) { 12 | } 13 | 14 | } 15 | 16 | //service types enum 17 | enum ServiceType { 18 | GITHUB = 0; 19 | DROPBOX = 1; 20 | BITBUCKET = 2; 21 | GOOGLE = 3; 22 | SLACK = 4; 23 | OWNCLOUD = 5; 24 | } 25 | 26 | message SetAuthenticationRequest { 27 | ServiceType service = 1; 28 | string username = 2; 29 | string access_token = 3; 30 | string refresh_token = 4; 31 | } 32 | 33 | 34 | message SetAuthenticationReply { 35 | string status = 1; 36 | string err = 2; 37 | } 38 | 39 | message GetAuthenticationRequest { 40 | ServiceType service = 1; 41 | string username = 2; 42 | } 43 | 44 | 45 | message GetAuthenticationReply { 46 | string token = 1; 47 | string err = 2; 48 | } 49 | -------------------------------------------------------------------------------- /code/SeCoFileStorage/proto/authentication.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package authentication; 4 | 5 | //interface between auth service and user service to insert auth credentials to database 6 | service Authentication { 7 | 8 | rpc SetAuthentication (SetAuthenticationRequest) returns (SetAuthenticationReply) { 9 | } 10 | 11 | rpc GetAuthentication (GetAuthenticationRequest) returns (GetAuthenticationReply) { 12 | } 13 | 14 | } 15 | 16 | //service types enum 17 | enum ServiceType { 18 | GITHUB = 0; 19 | DROPBOX = 1; 20 | BITBUCKET = 2; 21 | GOOGLE = 3; 22 | SLACK = 4; 23 | OWNCLOUD = 5; 24 | } 25 | 26 | message SetAuthenticationRequest { 27 | ServiceType service = 1; 28 | string username = 2; 29 | string access_token = 3; 30 | string refresh_token = 4; 31 | } 32 | 33 | 34 | message SetAuthenticationReply { 35 | string status = 1; 36 | string err = 2; 37 | } 38 | 39 | message GetAuthenticationRequest { 40 | ServiceType service = 1; 41 | string username = 2; 42 | } 43 | 44 | 45 | message GetAuthenticationReply { 46 | string token = 1; 47 | string err = 2; 48 | } 49 | -------------------------------------------------------------------------------- /code/TransferService/proto/authentication.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package authentication; 4 | 5 | //interface between auth service and user service to insert auth credentials to database 6 | service Authentication { 7 | 8 | rpc SetAuthentication (SetAuthenticationRequest) returns (SetAuthenticationReply) { 9 | } 10 | 11 | rpc GetAuthentication (GetAuthenticationRequest) returns (GetAuthenticationReply) { 12 | } 13 | 14 | } 15 | 16 | //service types enum 17 | enum ServiceType { 18 | GITHUB = 0; 19 | DROPBOX = 1; 20 | BITBUCKET = 2; 21 | GOOGLE = 3; 22 | SLACK = 4; 23 | OWNCLOUD = 5; 24 | } 25 | 26 | message SetAuthenticationRequest { 27 | ServiceType service = 1; 28 | string username = 2; 29 | string access_token = 3; 30 | string refresh_token = 4; 31 | } 32 | 33 | 34 | message SetAuthenticationReply { 35 | string status = 1; 36 | string err = 2; 37 | } 38 | 39 | message GetAuthenticationRequest { 40 | ServiceType service = 1; 41 | string username = 2; 42 | } 43 | 44 | 45 | message GetAuthenticationReply { 46 | string token = 1; 47 | string err = 2; 48 | } 49 | -------------------------------------------------------------------------------- /code/UserManagement/proto/authentication.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package authentication; 4 | 5 | //interface between auth service and user service to insert auth credentials to database 6 | service Authentication { 7 | 8 | rpc SetAuthentication (SetAuthenticationRequest) returns (SetAuthenticationReply) { 9 | } 10 | 11 | rpc GetAuthentication (GetAuthenticationRequest) returns (GetAuthenticationReply) { 12 | } 13 | 14 | } 15 | 16 | //service types enum 17 | enum ServiceType { 18 | GITHUB = 0; 19 | DROPBOX = 1; 20 | BITBUCKET = 2; 21 | GOOGLE = 3; 22 | SLACK = 4; 23 | OWNCLOUD = 5; 24 | } 25 | 26 | message SetAuthenticationRequest { 27 | ServiceType service = 1; 28 | string username = 2; 29 | string access_token = 3; 30 | string refresh_token = 4; 31 | } 32 | 33 | 34 | message SetAuthenticationReply { 35 | string status = 1; 36 | string err = 2; 37 | } 38 | 39 | message GetAuthenticationRequest { 40 | ServiceType service = 1; 41 | string username = 2; 42 | } 43 | 44 | 45 | message GetAuthenticationReply { 46 | string token = 1; 47 | string err = 2; 48 | } 49 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/test.ts: -------------------------------------------------------------------------------- 1 | import './polyfills.ts'; 2 | 3 | import 'zone.js/dist/long-stack-trace-zone'; 4 | import 'zone.js/dist/proxy.js'; 5 | import 'zone.js/dist/sync-test'; 6 | import 'zone.js/dist/jasmine-patch'; 7 | import 'zone.js/dist/async-test'; 8 | import 'zone.js/dist/fake-async-test'; 9 | import { getTestBed } from '@angular/core/testing'; 10 | import { 11 | BrowserDynamicTestingModule, 12 | platformBrowserDynamicTesting 13 | } from '@angular/platform-browser-dynamic/testing'; 14 | 15 | // Unfortunately there's no typing for the `__karma__` variable. Just declare it as any. 16 | declare var __karma__: any; 17 | declare var require: any; 18 | 19 | // Prevent Karma from running prematurely. 20 | __karma__.loaded = function () {}; 21 | 22 | // First, initialize the Angular testing environment. 23 | getTestBed().initTestEnvironment( 24 | BrowserDynamicTestingModule, 25 | platformBrowserDynamicTesting() 26 | ); 27 | // Then we find all the tests. 28 | let context = require.context('./', true, /\.spec\.ts/); 29 | // And load the modules. 30 | context.keys().map(context); 31 | // Finally, start Karma to run the tests. 32 | __karma__.start(); 33 | -------------------------------------------------------------------------------- /code/SeCoApi/utility/paramChecker.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by phili on 18.07.2016. 3 | */ 4 | var RpcJsonResponseBuilder = require('./rpcJsonResponseBuilder'); 5 | 6 | function ParamChecker(){ 7 | } 8 | 9 | ParamChecker.prototype.containsParameter = function (params, req, res){ 10 | var allParamsOk = true; 11 | //if params empty no params required 12 | if(!params){ 13 | return allParamsOk; 14 | } 15 | for(var i = 0;i { 7 | beforeEach(() => { 8 | TestBed.configureTestingModule({ 9 | declarations: [ 10 | AppComponent 11 | ], 12 | }); 13 | }); 14 | 15 | it('should create the app', async(() => { 16 | let fixture = TestBed.createComponent(AppComponent); 17 | let app = fixture.debugElement.componentInstance; 18 | expect(app).toBeTruthy(); 19 | })); 20 | 21 | it(`should have as title 'app works!'`, async(() => { 22 | let fixture = TestBed.createComponent(AppComponent); 23 | let app = fixture.debugElement.componentInstance; 24 | expect(app.title).toEqual('app works!'); 25 | })); 26 | 27 | it('should render title in a h1 tag', async(() => { 28 | let fixture = TestBed.createComponent(AppComponent); 29 | fixture.detectChanges(); 30 | let compiled = fixture.debugElement.nativeElement; 31 | expect(compiled.querySelector('h1').textContent).toContain('app works!'); 32 | })); 33 | }); 34 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/serviceSelection/serviceSelection.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"serviceSelection.component.js","sourceRoot":"","sources":["serviceSelection.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAwB,eAAe,CAAC,CAAA;AACxC,uBAAqB,iBAAiB,CAAC,CAAA;AAEvC,sBAA2B,oBAAoB,CAAC,CAAA;AAShD;IAGI,mCAAoB,MAAc,EAAU,YAA0B;QAAlD,WAAM,GAAN,MAAM,CAAQ;QAAU,iBAAY,GAAZ,YAAY,CAAc;QAF9D,aAAQ,GAAc,EAAE,CAAC;QAG7B,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED,gDAAY,GAAZ;QACI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,oBAAoB;SAChC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;YACf,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,qBAAqB;SACjC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;YACf,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,wBAAwB;SACpC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,sBAAsB;SAClC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,oBAAoB;SAChC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;YACf,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,kBAAkB;SAC9B,CAAC;IACN,CAAC;IAtCL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,kBAAkB;YAC5B,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,WAAW,EAAE,iCAAiC;SACjD,CAAC;;iCAAA;IAmCF,gCAAC;AAAD,CAAC,AAjCD,IAiCC;AAjCY,iCAAyB,4BAiCrC,CAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/login/login.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"login.component.js","sourceRoot":"","sources":["login.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAkC,eAAe,CAAC,CAAA;AAClD,uBAAuB,iBAAiB,CAAC,CAAA;AAEzC,sBAAoD,oBAAoB,CAAC,CAAA;AAOzE;IAII,wBACY,MAAc,EACd,qBAA4C,EAC5C,YAA0B;QAF1B,WAAM,GAAN,MAAM,CAAQ;QACd,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,iBAAY,GAAZ,YAAY,CAAc;QANtC,UAAK,GAAQ,EAAE,CAAC;QAChB,YAAO,GAAG,KAAK,CAAC;IAK0B,CAAC;IAE3C,iCAAQ,GAAR;QACI,qBAAqB;QACrB,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC;IAED,8BAAK,GAAL;QAAA,iBAgBC;QAfG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;aACrE,SAAS,CACN,UAAA,IAAI;YACA,EAAE,CAAA,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACT,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACJ,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvC,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACzB,CAAC;QACL,CAAC,EACD,UAAA,KAAK;YACD,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC,CAAC;IACf,CAAC;IAnCL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,WAAW,EAAE,sBAAsB;SACtC,CAAC;;sBAAA;IAiCF,qBAAC;AAAD,CAAC,AA/BD,IA+BC;AA/BY,sBAAc,iBA+B1B,CAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | /*@import '~@angular/material/core/theming/prebuilt/deeppurple-amber.css';*/ 3 | body{ 4 | margin: 0px; 5 | } 6 | 7 | a { 8 | cursor: pointer; 9 | } 10 | 11 | .help-block { 12 | font-size: 12px; 13 | } 14 | 15 | .registerCard { 16 | max-width: 800px; 17 | } 18 | 19 | .alert { 20 | padding: 1rem; 21 | margin-bottom: 1rem; 22 | border: 1px solid transparent; 23 | border-radius: 5px; } 24 | 25 | .alert-heading { 26 | color: inherit; } 27 | 28 | .alert-link { 29 | font-weight: bold; } 30 | 31 | .alert-dismissible { 32 | padding-right: 2rem; } 33 | .alert-dismissible .close { 34 | position: relative; 35 | top: -.125rem; 36 | right: -1rem; 37 | color: inherit; } 38 | 39 | .alert-success { 40 | background-color: #dff0d8; 41 | border-color: #d0e9c6; 42 | color: #3c763d; } 43 | .alert-success hr { 44 | border-top-color: #c1e2b3; } 45 | .alert-success .alert-link { 46 | color: #2b542c; } 47 | 48 | .alert-info { 49 | background-color: #d9edf7; 50 | border-color: #bcdff1; 51 | color: #31708f; } 52 | .alert-info hr { 53 | border-top-color: #a6d5ec; } 54 | .alert-info .alert-link { 55 | color: #245269; } 56 | -------------------------------------------------------------------------------- /code/SeCoApi/json/githubRoutes.json: -------------------------------------------------------------------------------- 1 | { 2 | "service_name": "GITHUB", 3 | "grpc_ip": "localhost", 4 | "grpc_port": 50056, 5 | "grpc_service_name": "VersionControl", 6 | "grpc_package_name": "versionControl", 7 | "authentication_type": "OAUTH2", 8 | "requests": [ 9 | { 10 | "http-method": "get", 11 | "route": "/github/repositories", 12 | "grpc_function": "getRepositories", 13 | "response_parameter": [ 14 | "repos" 15 | ], 16 | "notification": false 17 | }, 18 | { 19 | "http-method": "get", 20 | "route": "/github/:repository/filetree", 21 | "query_parameter": [ 22 | "path", 23 | "repository" 24 | ], 25 | "grpc_function": "getRepositoryContent", 26 | "response_parameter": [ 27 | "dirs" 28 | ], 29 | "notification": false 30 | }, 31 | { 32 | "http-method": "post", 33 | "route": "/github/:repository/share", 34 | "query_parameter": [ 35 | "repository", 36 | "usernameToAdd" 37 | ], 38 | "grpc_function": "addUserToRepository", 39 | "response_parameter": [ 40 | "status" 41 | ], 42 | "notification": true, 43 | "message": "shared Repository" 44 | } 45 | ] 46 | } -------------------------------------------------------------------------------- /code/SeCoApi/json/bitBucketRoutes.json: -------------------------------------------------------------------------------- 1 | { 2 | "service_name": "BITBUCKET", 3 | "grpc_ip": "localhost", 4 | "grpc_port": 50071, 5 | "grpc_service_name": "VersionControl", 6 | "grpc_package_name": "versionControl", 7 | "authentication_type": "OAUTH2", 8 | "requests": [ 9 | { 10 | "http-method": "get", 11 | "route": "/bitbucket/repositories", 12 | "grpc_function": "getRepositories", 13 | "response_parameter": [ 14 | "repos" 15 | ], 16 | "notification": false 17 | }, 18 | { 19 | "http-method": "get", 20 | "route": "/bitbucket/:repository/filetree", 21 | "query_parameter": [ 22 | "path", 23 | "repository" 24 | ], 25 | "grpc_function": "getRepositoryContent", 26 | "response_parameter": [ 27 | "dirs" 28 | ], 29 | "notification": false 30 | }, 31 | { 32 | "http-method": "post", 33 | "route": "/bitbucket/:repository/share", 34 | "query_parameter": [ 35 | "repository", 36 | "usernameToAdd" 37 | ], 38 | "grpc_function": "addUserToRepository", 39 | "response_parameter": [ 40 | "status" 41 | ], 42 | "notification": true, 43 | "message": "shared Repository" 44 | } 45 | ] 46 | } -------------------------------------------------------------------------------- /code/SeCoApi/proto/seCoFileStorage.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package seCoFileStorage; 4 | 5 | // The rpc FileStorage service definition. 6 | service SeCoFileStorage { 7 | // Gets a file 8 | rpc GetFile (GetFileRequest) returns (stream GetFileReply) { 9 | } 10 | 11 | rpc GetFileTree (GetFileTreeRequest) returns (GetFileTreeReply) { 12 | } 13 | 14 | rpc UploadFile (stream UploadFileRequest) returns (UploadFileResponse) { 15 | } 16 | } 17 | 18 | message Error { 19 | string msg = 1; 20 | int32 code = 2; 21 | } 22 | 23 | // The request message 24 | message GetFileRequest { 25 | string teamName = 1; 26 | string filePath = 2; 27 | } 28 | 29 | // The response message 30 | message GetFileReply { 31 | bytes chunk = 1; 32 | Error err = 2; 33 | } 34 | 35 | // The request message 36 | message GetFileTreeRequest { 37 | string teamName = 1; 38 | string filePath = 2; 39 | } 40 | 41 | // The response message 42 | message GetFileTreeReply { 43 | string dirs = 1; 44 | Error err = 2; 45 | } 46 | 47 | // The request message 48 | message UploadFileRequest { 49 | bytes chunk = 1; 50 | Error err = 2; 51 | } 52 | 53 | // The response message 54 | message UploadFileResponse { 55 | string status = 1; 56 | Error err = 2; 57 | } 58 | -------------------------------------------------------------------------------- /code/SeCoApi/json/slackRoutes.json: -------------------------------------------------------------------------------- 1 | { 2 | "service_name": "SLACK", 3 | "grpc_ip": "localhost", 4 | "grpc_port": 50048, 5 | "grpc_service_name": "SlackMessaging", 6 | "grpc_package_name": "slackMessaging", 7 | "authentication_type": "OAUTH2", 8 | "requests": [ 9 | { 10 | "http-method": "get", 11 | "route": "/slack/channelList", 12 | "grpc_function": "getChannelList", 13 | "response_parameter": [ 14 | "channels" 15 | ], 16 | "notification": false 17 | }, 18 | { 19 | "http-method": "get", 20 | "route": "/slack/:channel/messages", 21 | "query_parameter": [ 22 | "channel", 23 | "oldest" 24 | ], 25 | "grpc_function": "getChannelMessages", 26 | "response_parameter": [ 27 | "messages", 28 | "timeStampOfLastMsg" 29 | ], 30 | "notification": false 31 | }, 32 | { 33 | "http-method": "post", 34 | "route": "/slack/:channel/message", 35 | "query_parameter": [ 36 | "channel", 37 | "message", 38 | "as_user" 39 | ], 40 | "grpc_function": "sendMessage", 41 | "response_parameter": [ 42 | "status" 43 | ], 44 | "notification": true, 45 | "message": "new message sent" 46 | } 47 | ] 48 | } -------------------------------------------------------------------------------- /code/SeCoFileStorage/proto/seCoFileStorage.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package seCoFileStorage; 4 | 5 | // The rpc FileStorage service definition. 6 | service SeCoFileStorage { 7 | // Gets a file 8 | rpc GetFile (GetFileRequest) returns (stream GetFileReply) { 9 | } 10 | 11 | rpc GetFileTree (GetFileTreeRequest) returns (GetFileTreeReply) { 12 | } 13 | 14 | rpc UploadFile (stream UploadFileRequest) returns (UploadFileResponse) { 15 | } 16 | } 17 | 18 | message Error { 19 | string msg = 1; 20 | int32 code = 2; 21 | } 22 | 23 | // The request message 24 | message GetFileRequest { 25 | string teamName = 1; 26 | string filePath = 2; 27 | } 28 | 29 | // The response message 30 | message GetFileReply { 31 | bytes chunk = 1; 32 | Error err = 2; 33 | } 34 | 35 | // The request message 36 | message GetFileTreeRequest { 37 | string teamName = 1; 38 | string filePath = 2; 39 | } 40 | 41 | // The response message 42 | message GetFileTreeReply { 43 | string dirs = 1; 44 | Error err = 2; 45 | } 46 | 47 | // The request message 48 | message UploadFileRequest { 49 | bytes chunk = 1; 50 | Error err = 2; 51 | } 52 | 53 | // The response message 54 | message UploadFileResponse { 55 | string status = 1; 56 | Error err = 2; 57 | } 58 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/userArea/userArea.component.ts: -------------------------------------------------------------------------------- 1 | import {Component} from '@angular/core'; 2 | 3 | import {UserService} from '../_services/index'; 4 | import {User} from '../_models/index'; 5 | import {AuthSettingsComponent} from "../auth-settings/auth-settings.component"; 6 | import {ViewContainerRef} from '@angular/core'; 7 | import {MdDialog, MdDialogRef, MdDialogConfig} from '@angular/material'; 8 | 9 | 10 | @Component({ 11 | selector: 'userArea', 12 | templateUrl: 'userArea.component.html' 13 | }) 14 | 15 | export class UserAreaComponent { 16 | currentUser: User; 17 | dialogRef: MdDialogRef; 18 | lastCloseResult: string; 19 | config: MdDialogConfig; 20 | 21 | constructor(private userService: UserService, public dialog: MdDialog, public viewContainerRef: ViewContainerRef) { 22 | this.currentUser = JSON.parse(localStorage.getItem('currentUser')); 23 | this.config = { 24 | role: 'dialog', 25 | viewContainerRef: this.viewContainerRef 26 | }; 27 | } 28 | 29 | openAuthSettingsDialog() { 30 | this.dialogRef = this.dialog.open(AuthSettingsComponent, this.config); 31 | this.dialogRef.afterClosed().subscribe(result => { 32 | this.lastCloseResult = result; 33 | this.dialogRef = null; 34 | }); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/register/register.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"register.component.js","sourceRoot":"","sources":["register.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAC1C,uBAAuB,iBAAiB,CAAC,CAAA;AAEzC,sBAA0C,oBAAoB,CAAC,CAAA;AAO/D;IAII,2BACY,MAAc,EACd,WAAwB,EACxB,YAA0B;QAF1B,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAa;QACxB,iBAAY,GAAZ,YAAY,CAAc;QANtC,UAAK,GAAQ,EAAE,CAAC;QAChB,YAAO,GAAG,KAAK,CAAC;IAK0B,CAAC;IAI3C,oCAAQ,GAAR;QAAA,iBAoBC;QAnBG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;aAC9B,SAAS,CACN,UAAA,IAAI;YACA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,IAAI,cAAc,GAAG,IAAI,CAAC;YAC1B,EAAE,CAAA,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA,CAAC;gBACnB,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACjD,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACzB,CAAC;YAAC,IAAI,CAAC,CAAC;gBACJ,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;gBAC3D,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrC,CAAC;QACL,CAAC,EACD,UAAA,KAAK;YACD,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC,CAAC;IACf,CAAC;IApCL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,WAAW,EAAE,yBAAyB;SACzC,CAAC;;yBAAA;IAkCF,wBAAC;AAAD,CAAC,AAhCD,IAgCC;AAhCY,yBAAiB,oBAgC7B,CAAA"} -------------------------------------------------------------------------------- /code/Frontend/cliProject/README.md: -------------------------------------------------------------------------------- 1 | # CliProject 2 | 3 | This project was generated with [angular-cli](https://github.com/angular/angular-cli) version 1.0.0-beta.21. 4 | 5 | ## Development server 6 | 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. 7 | 8 | ## Code scaffolding 9 | 10 | Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive/pipe/service/class`. 11 | 12 | ## Build 13 | 14 | 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. 15 | 16 | ## Running unit tests 17 | 18 | Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). 19 | 20 | ## Running end-to-end tests 21 | 22 | Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). 23 | Before running the tests make sure you are serving the app via `ng serve`. 24 | 25 | ## Deploying to Github Pages 26 | 27 | Run `ng github-pages:deploy` to deploy to Github Pages. 28 | 29 | ## Further help 30 | 31 | 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). 32 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/0.13/config/configuration-file.html 3 | 4 | module.exports = function (config) { 5 | config.set({ 6 | basePath: '', 7 | frameworks: ['jasmine', 'angular-cli'], 8 | plugins: [ 9 | require('karma-jasmine'), 10 | require('karma-chrome-launcher'), 11 | require('karma-remap-istanbul'), 12 | require('angular-cli/plugins/karma') 13 | ], 14 | files: [ 15 | { pattern: './src/test.ts', watched: false } 16 | ], 17 | preprocessors: { 18 | './src/test.ts': ['angular-cli'] 19 | }, 20 | mime: { 21 | 'text/x-typescript': ['ts','tsx'] 22 | }, 23 | remapIstanbulReporter: { 24 | reports: { 25 | html: 'coverage', 26 | lcovonly: './coverage/coverage.lcov' 27 | } 28 | }, 29 | angularCli: { 30 | config: './angular-cli.json', 31 | environment: 'dev' 32 | }, 33 | reporters: config.angularCli && config.angularCli.codeCoverage 34 | ? ['progress', 'karma-remap-istanbul'] 35 | : ['progress'], 36 | port: 9876, 37 | colors: true, 38 | logLevel: config.LOG_INFO, 39 | autoWatch: true, 40 | browsers: ['Chrome'], 41 | singleRun: false 42 | }); 43 | }; 44 | -------------------------------------------------------------------------------- /code/SeCoApi/proto/teamManagement.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package teamManagement; 4 | 5 | // The rpc FileStorage service definition. 6 | service TeamManagement { 7 | rpc Create (CreateRequest) returns (CreateReply) {} 8 | 9 | rpc Join (JoinRequest) returns (JoinReply) {} 10 | 11 | rpc AddServices (AddServicesRequest) returns (AddServicesReply) {} 12 | 13 | rpc List (ListRequest) returns (ListReply) {} 14 | } 15 | 16 | //service types enum 17 | enum ServiceType { 18 | GITHUB = 0; 19 | DROPBOX = 1; 20 | BITBUCKET = 2; 21 | GOOGLE = 3; 22 | SLACK = 4; 23 | } 24 | 25 | message CreateRequest { 26 | string team = 1; //as name 27 | string password = 2; 28 | string teamCreator = 3; 29 | } 30 | 31 | message CreateReply { 32 | string status = 1; 33 | string err = 2; 34 | } 35 | 36 | message JoinRequest { 37 | string team = 1; //as name 38 | string password = 2; 39 | string username = 3; 40 | } 41 | 42 | message JoinReply { 43 | string status = 1; 44 | string err = 2; 45 | } 46 | 47 | 48 | message ListRequest { 49 | string username = 1; 50 | } 51 | 52 | message ListReply { 53 | string teamList =1; 54 | string err = 2; 55 | } 56 | 57 | message AddServicesRequest { 58 | string team = 1; //as name 59 | repeated ServiceType services = 2; 60 | } 61 | 62 | message AddServicesReply { 63 | string status =1; 64 | string err = 2; 65 | } 66 | 67 | -------------------------------------------------------------------------------- /code/Github/proto/versionControl.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package versionControl; 4 | 5 | // The rpc VersionControl service definition. 6 | service VersionControl { 7 | // Gets a file 8 | rpc GetRepositories (GetReposRequest) returns (GetReposReply) {} 9 | 10 | rpc GetRepositoryContent (GetRepoContenRequest) returns (GetRepoContentReply) {} 11 | 12 | rpc addUserToRepository (AddUserToRepoRequest) returns (AddUserToRepoResponse) {} 13 | } 14 | 15 | //Auth message 16 | message Authentication { 17 | string token = 1; //auth string,for example user:password or Bearer XXXXX 18 | AuthenticationType type = 2; 19 | } 20 | 21 | //Auth types enum 22 | enum AuthenticationType { 23 | BASIC = 0; 24 | OAUTH2 = 1; 25 | } 26 | 27 | 28 | message GetReposRequest { 29 | Authentication auth = 2; 30 | } 31 | 32 | 33 | message GetReposReply { 34 | string repos = 1; //JSON String 35 | string err = 2; 36 | } 37 | 38 | 39 | message GetRepoContenRequest { 40 | string path = 1; 41 | Authentication auth = 2; 42 | string repository = 3; 43 | } 44 | 45 | 46 | message GetRepoContentReply { 47 | string dirs = 1; 48 | string err = 2; 49 | } 50 | 51 | 52 | message AddUserToRepoRequest { 53 | string repository = 1; 54 | string usernameToAdd = 2; 55 | Authentication auth = 3; 56 | } 57 | 58 | 59 | message AddUserToRepoResponse { 60 | string status = 1; 61 | string err = 2; 62 | } 63 | -------------------------------------------------------------------------------- /code/SeCoApi/proto/versionControl.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package versionControl; 4 | 5 | // The rpc VersionControl service definition. 6 | service VersionControl { 7 | // Gets a file 8 | rpc GetRepositories (GetReposRequest) returns (GetReposReply) {} 9 | 10 | rpc GetRepositoryContent (GetRepoContenRequest) returns (GetRepoContentReply) {} 11 | 12 | rpc addUserToRepository (AddUserToRepoRequest) returns (AddUserToRepoResponse) {} 13 | } 14 | 15 | //Auth message 16 | message Authentication { 17 | string token = 1; //auth string,for example user:password or Bearer XXXXX 18 | AuthenticationType type = 2; 19 | } 20 | 21 | //Auth types enum 22 | enum AuthenticationType { 23 | BASIC = 0; 24 | OAUTH2 = 1; 25 | } 26 | 27 | 28 | message GetReposRequest { 29 | Authentication auth = 2; 30 | } 31 | 32 | 33 | message GetReposReply { 34 | string repos = 1; //JSON String 35 | string err = 2; 36 | } 37 | 38 | 39 | message GetRepoContenRequest { 40 | string path = 1; 41 | Authentication auth = 2; 42 | string repository = 3; 43 | } 44 | 45 | 46 | message GetRepoContentReply { 47 | string dirs = 1; 48 | string err = 2; 49 | } 50 | 51 | 52 | message AddUserToRepoRequest { 53 | string repository = 1; 54 | string usernameToAdd = 2; 55 | Authentication auth = 3; 56 | } 57 | 58 | 59 | message AddUserToRepoResponse { 60 | string status = 1; 61 | string err = 2; 62 | } 63 | -------------------------------------------------------------------------------- /code/Bitbucket/proto/versionControl.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package versionControl; 4 | 5 | // The rpc VersionControl service definition. 6 | service VersionControl { 7 | // Gets a file 8 | rpc GetRepositories (GetReposRequest) returns (GetReposReply) {} 9 | 10 | rpc GetRepositoryContent (GetRepoContenRequest) returns (GetRepoContentReply) {} 11 | 12 | rpc addUserToRepository (AddUserToRepoRequest) returns (AddUserToRepoResponse) {} 13 | } 14 | 15 | //Auth message 16 | message Authentication { 17 | string token = 1; //auth string,for example user:password or Bearer XXXXX 18 | AuthenticationType type = 2; 19 | } 20 | 21 | //Auth types enum 22 | enum AuthenticationType { 23 | BASIC = 0; 24 | OAUTH2 = 1; 25 | } 26 | 27 | 28 | message GetReposRequest { 29 | Authentication auth = 2; 30 | } 31 | 32 | 33 | message GetReposReply { 34 | string repos = 1; //JSON String 35 | string err = 2; 36 | } 37 | 38 | 39 | message GetRepoContenRequest { 40 | string path = 1; 41 | Authentication auth = 2; 42 | string repository = 3; 43 | } 44 | 45 | 46 | message GetRepoContentReply { 47 | string dirs = 1; 48 | string err = 2; 49 | } 50 | 51 | 52 | message AddUserToRepoRequest { 53 | string repository = 1; 54 | string usernameToAdd = 2; 55 | Authentication auth = 3; 56 | } 57 | 58 | 59 | message AddUserToRepoResponse { 60 | string status = 1; 61 | string err = 2; 62 | } 63 | -------------------------------------------------------------------------------- /code/rabbitMqTest/rpc_client.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by phili on 11.07.2016. 3 | */ 4 | 5 | var amqp = require('amqplib/callback_api'); 6 | 7 | var args = process.argv.slice(2); 8 | 9 | if (args.length == 0) { 10 | console.log("Usage: rpc_client.js num"); 11 | process.exit(1); 12 | } 13 | 14 | amqp.connect('amqp://localhost', function(err, conn) { 15 | conn.createChannel(function(err, ch) { 16 | ch.assertQueue('', {exclusive: true}, function(err, q) { 17 | var corr = generateUuid(); 18 | var num = parseInt(args[0]); 19 | var jsonMsg = { 20 | num: num,text: 'yolo' 21 | }; 22 | console.log(' [x] Requesting fib(%d)', num); 23 | 24 | ch.consume(q.queue, function(msg) { 25 | if (msg.properties.correlationId == corr) { 26 | console.log(' [.] Got %s', msg.content.toString()); 27 | setTimeout(function() { conn.close(); process.exit(0) }, 500); 28 | } 29 | }, {noAck: true}); 30 | 31 | ch.sendToQueue('rpc_queue', 32 | new Buffer(JSON.stringify(jsonMsg)), 33 | { correlationId: corr, replyTo: q.queue,yolo:'yolo' }); 34 | }); 35 | }); 36 | }); 37 | 38 | function generateUuid() { 39 | return Math.random().toString() + 40 | Math.random().toString() + 41 | Math.random().toString(); 42 | } -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_services/user.service.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"user.service.js","sourceRoot":"","sources":["user.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA2B,eAAe,CAAC,CAAA;AAC3C,qBAAwD,eAAe,CAAC,CAAA;AACxE,2BAA6B,iBAAiB,CAAC,CAAA;AAC/C,QAAO,yBAAyB,CAAC,CAAA;AACjC,QAAO,2BAA2B,CAAC,CAAA;AAKnC;IACI,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;IAAI,CAAC;IAEnC,4BAAM,GAAN,UAAO,IAAU;QACb,IAAI,OAAO,GAAG,IAAI,cAAO,EAAE,CAAC;QAE5B,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtF,uBAAuB;QAEvB,IAAI,OAAO,GAAG,IAAI,qBAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,yCAAyC,EAAC,EAAE,EAAE,OAAO,CAAC;aACvE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC;aACtB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAEO,iCAAW,GAAnB,UAAqB,KAAqB;QACtC,oEAAoE;QACpE,IAAI,MAAc,CAAC;QACnB,EAAE,CAAC,CAAC,KAAK,YAAY,eAAQ,CAAC,CAAC,CAAC;YAC5B,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;YAChC,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,GAAM,KAAK,CAAC,MAAM,YAAM,KAAK,CAAC,UAAU,IAAI,EAAE,UAAI,GAAK,CAAC;QAClE,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9D,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,CAAC,uBAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IA7BL;QAAC,iBAAU,EAAE;;mBAAA;IA8Bb,kBAAC;AAAD,CAAC,AA7BD,IA6BC;AA7BY,mBAAW,cA6BvB,CAAA"} -------------------------------------------------------------------------------- /code/TeamManagement/proto/teamManagement.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package teamManagement; 4 | 5 | // The rpc FileStorage service definition. 6 | service TeamManagement { 7 | rpc Create (CreateRequest) returns (CreateReply) {} 8 | 9 | rpc Join (JoinRequest) returns (JoinReply) {} 10 | 11 | rpc AddServices (AddServicesRequest) returns (AddServicesReply) {} 12 | 13 | rpc List (ListRequest) returns (ListReply) {} 14 | } 15 | 16 | //service types enum 17 | enum ServiceType { 18 | GITHUB = 0; 19 | DROPBOX = 1; 20 | BITBUCKET = 2; 21 | GOOGLE = 3; 22 | SLACK = 4; 23 | } 24 | 25 | message CreateRequest { 26 | string team = 1; //as name 27 | string password = 2; 28 | string teamCreator = 3; 29 | } 30 | 31 | message CreateReply { 32 | string status = 1; 33 | string err = 2; 34 | } 35 | 36 | message JoinRequest { 37 | string team = 1; //as name 38 | string password = 2; 39 | string username = 3; 40 | } 41 | 42 | message JoinReply { 43 | string status = 1; 44 | string err = 2; 45 | } 46 | 47 | 48 | message ListRequest { 49 | string username = 1; 50 | } 51 | 52 | message ListReply { 53 | string teamList =1; 54 | string err = 2; 55 | } 56 | 57 | message AddServicesRequest { 58 | string team = 1; //as name 59 | repeated ServiceType services = 2; 60 | } 61 | 62 | message AddServicesReply { 63 | string status =1; 64 | string err = 2; 65 | } 66 | 67 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/material2-app-theme.scss: -------------------------------------------------------------------------------- 1 | @import '~@angular/material/core/theming/all-theme'; 2 | 3 | // NOTE: Theming is currently experimental and not yet publically released! 4 | 5 | @include md-core(); 6 | 7 | 8 | /* 9 | $primary: md-palette($md-teal, 500, 100, 700); 10 | $accent: md-palette($md-purple, 500, 300,800); 11 | $warn: md-palette($md-red, 500, 300, 900); 12 | $background: md-palette($md-grey, 500, 0, 600); 13 | */ 14 | 15 | $primary: md-palette($md-indigo, 700, 100, 500); 16 | $primaryHue: md-palette($md-indigo, 100); 17 | $accent: md-palette($md-pink, A200, A100,A400); 18 | $warn: md-palette($md-red, 500, 300, 900); 19 | $background: md-palette($md-grey, 100, 50, 200); 20 | 21 | $theme: md-light-theme($primary, $accent); 22 | 23 | @include angular-material-theme($theme); 24 | 25 | .m2app-dark { 26 | $dark-primary: md-palette($md-pink, 700, 500, 900); 27 | $dark-accent: md-palette($md-blue-grey, A200, A100, A400); 28 | $dark-warn: md-palette($md-deep-orange); 29 | 30 | $dark-theme: md-dark-theme($dark-primary, $dark-accent, $dark-warn); 31 | 32 | @include angular-material-theme($dark-theme); 33 | } 34 | 35 | // Use md-color to extract individual colors from a palette as necessary. 36 | .register-toolbar{ 37 | background-color: md-color($primaryHue); 38 | } 39 | 40 | .bgEven{ 41 | background-color: md-color($background,50); 42 | } 43 | 44 | .bgUnEven{ 45 | background-color: md-color($background,200); 46 | } 47 | -------------------------------------------------------------------------------- /code/SeCoApi/json/seCoFileStorage.json: -------------------------------------------------------------------------------- 1 | { 2 | "service_name": "SECOFILESTORAGE", 3 | "grpc_ip": "localhost", 4 | "grpc_port": 50040, 5 | "grpc_service_name": "SeCoFileStorage", 6 | "grpc_package_name": "seCoFileStorage", 7 | "authentication_type": "", 8 | "requests": [ 9 | { 10 | "http-method": "get", 11 | "route": "/filestorage/file", 12 | "query_parameter": [ 13 | "filePath", 14 | "teamName" 15 | ], 16 | "grpc_function": "getFile", 17 | "response_parameter": [ 18 | "fileName", 19 | "fileBuffer" 20 | ], 21 | "notification": false 22 | }, 23 | { 24 | "http-method": "get", 25 | "route": "/filestorage/filetree", 26 | "query_parameter": [ 27 | "filePath", 28 | "teamName" 29 | ], 30 | "grpc_function": "getFileTree", 31 | "response_parameter": [ 32 | "dirs" 33 | ], 34 | "notification": false 35 | }, 36 | { 37 | "http-method": "put", 38 | "route": "/filestorage/file", 39 | "query_parameter": [ 40 | "filePath", 41 | "serviceName", 42 | "teamName" 43 | ], 44 | "grpc_function": "uploadFile", 45 | "reserved_parameter": [ 46 | "userName", 47 | "fileName", 48 | "fileBuffer" 49 | ], 50 | "response_parameter": [ 51 | "status" 52 | ], 53 | "notification": true, 54 | "message": "new file uploaded" 55 | } 56 | ] 57 | } -------------------------------------------------------------------------------- /code/SeCoApi/MsgBroker/MsgBroker.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 21.07.16. 3 | * Class serves as "interface" to be able to use different network communication 4 | * for possible future changes 5 | */ 6 | var winston = require('winston'); 7 | var RabbitMq = require('./rabbitMq'); 8 | nconf = require('nconf'); 9 | 10 | function MsgBroker(msgBrokerType,serverIp,serverPort){ 11 | this.msgBrokerType = msgBrokerType; 12 | 13 | switch(this.msgBrokerType){ 14 | case msgBrokerType.RABBITMQ: 15 | this.implementation = new RabbitMq(serverIp,serverPort); 16 | break; 17 | default: 18 | this.implementation = new RabbitMq(serverIp,serverPort); 19 | } 20 | 21 | } 22 | 23 | MsgBroker.prototype.sendData = function (sendOptions,data,callback){ 24 | if(!typeof this.implementation.sendData == 'function') { 25 | winston.log('error', 'sendData not implemented by super class'); 26 | return callback(null, null); 27 | } else { 28 | this.implementation.sendData(sendOptions,data,callback); 29 | } 30 | }; 31 | 32 | MsgBroker.prototype.getFile = function (options,path,auth,callback){ 33 | if(!typeof this.implementation.getFile == 'function') { 34 | winston.log('error', 'getFile not implemented by super class'); 35 | return callback(null, null); 36 | } else { 37 | this.implementation.getFile(options.queueName,path,auth,callback); 38 | } 39 | }; 40 | 41 | 42 | module.exports = MsgBroker; 43 | 44 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/join-team/join-team.component.ts: -------------------------------------------------------------------------------- 1 | import {Component} from '@angular/core'; 2 | import {TeamService} from '../_services/index'; 3 | import {Team} from "../_models/team"; 4 | import {MdDialog} from '@angular/material'; 5 | import {NotificationsService} from 'angular2-notifications/lib/notifications.service'; 6 | import {Response} from "@angular/http"; 7 | 8 | @Component({ 9 | selector: 'app-join-team', 10 | templateUrl: './join-team.component.html', 11 | styleUrls: ['./join-team.component.scss'] 12 | }) 13 | export class JoinTeamComponent { 14 | model: any = {}; 15 | loading: boolean; 16 | 17 | constructor(private teamService: TeamService, private notService: NotificationsService, public dialog: MdDialog) { 18 | } 19 | 20 | joinTeam() { 21 | var team = new Team(this.model.teamName, this.model.password); 22 | this.loading = true; 23 | this.teamService.joinTeam(team.teamName, team.password) 24 | .subscribe( 25 | data => { 26 | if (data instanceof Response) { 27 | data = data.json(); 28 | this.loading = false; 29 | if (data.ok) { 30 | this.notService.success('Team joined!', ''); 31 | this.dialog.closeAll(); 32 | } else { 33 | this.notService.error('Team join failed', data.errorMsg); 34 | } 35 | } 36 | }, 37 | error => { 38 | this.loading = false; 39 | this.notService.error('Team join error', error); 40 | }); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/join-team/join-team.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | Join Team 4 | 5 |
6 | account_circle 7 | 10 | 11 |
12 |
13 | lock 14 | 17 |
18 | 19 |
20 | 24 |
25 |
26 |
27 |
28 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/angular-cli.json: -------------------------------------------------------------------------------- 1 | { 2 | "project": { 3 | "version": "1.0.0-beta.21", 4 | "name": "Service-Compoisition" 5 | }, 6 | "apps": [ 7 | { 8 | "root": "src", 9 | "outDir": "dist", 10 | "assets": [ 11 | "assets", 12 | "favicon.ico" 13 | ], 14 | "index": "index.html", 15 | "main": "main.ts", 16 | "test": "test.ts", 17 | "tsconfig": "tsconfig.json", 18 | "prefix": "app", 19 | "mobile": false, 20 | "styles": [ 21 | "styles.css", 22 | "layout-attributes.scss", 23 | "material2-app-theme.scss", 24 | "ng2-material.css", 25 | "font.css" 26 | ], 27 | "scripts": [ 28 | ], 29 | "environments": { 30 | "source": "environments/environment.ts", 31 | "dev": "environments/environment.ts", 32 | "prod": "environments/environment.prod.ts" 33 | } 34 | } 35 | ], 36 | "addons": [ 37 | ], 38 | "packages": [ 39 | ], 40 | "e2e": { 41 | "protractor": { 42 | "config": "./protractor.conf.js" 43 | } 44 | }, 45 | "test": { 46 | "karma": { 47 | "config": "./karma.conf.js" 48 | } 49 | }, 50 | "defaults": { 51 | "styleExt": "scss", 52 | "prefixInterfaces": false, 53 | "inline": { 54 | "style": false, 55 | "template": false 56 | }, 57 | "spec": { 58 | "class": false, 59 | "component": true, 60 | "directive": true, 61 | "module": false, 62 | "pipe": true, 63 | "service": true 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /code/TeamManagement/db/models/Team.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 24.08.16. 3 | */ 4 | // Load mongoose package 5 | var mongoose = require('mongoose'), 6 | bcrypt = require('bcrypt'), 7 | SALT_WORK_FACTOR = 10; 8 | 9 | // Create a schema 10 | var TeamSchema = new mongoose.Schema({ 11 | teamName: {type: String, required: true, index: {unique: true}}, 12 | password: {type: String, required: true}, 13 | teamCreator: {type: String, required: true}, 14 | members: {type: Array}, 15 | services: {type: Array} // JSON String with service name 16 | }); 17 | 18 | TeamSchema.pre('save', function (next) { 19 | var team = this; 20 | 21 | // only hash the password if it has been modified (or is new) 22 | if (!team.isModified('password')) return next(); 23 | 24 | // generate a salt 25 | bcrypt.genSalt(SALT_WORK_FACTOR, function (err, salt) { 26 | if (err) return next(err); 27 | 28 | // hash the password using our new salt 29 | bcrypt.hash(team.password, salt, function (err, hash) { 30 | if (err) return next(err); 31 | 32 | // override the cleartext password with the hashed one 33 | team.password = hash; 34 | next(); 35 | }); 36 | }); 37 | }); 38 | 39 | TeamSchema.methods.comparePassword = function (candidatePassword, callback) { 40 | bcrypt.compare(candidatePassword, this.password, function (err, isMatch) { 41 | if (err) return callback(err); 42 | callback(null, isMatch); 43 | }); 44 | }; 45 | 46 | module.exports = mongoose.model('Team', TeamSchema); -------------------------------------------------------------------------------- /code/SeCoApi/proto/slackMessaging.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package slackMessaging; 4 | 5 | service SlackMessaging { 6 | rpc GetChannelList (GetChannelListRequest) returns (GetChannelListReply) {} 7 | 8 | rpc GetChannelMessages (GetChannelMessagesRequest) returns (GetChannelMessagesReply) {} 9 | 10 | rpc SendMessage (SendMessageRequest) returns (SendMessageReply) {} 11 | } 12 | 13 | //Auth message 14 | message Authentication { 15 | string token = 1; //auth string,for example user:password or Bearer XXXXX 16 | AuthenticationType type = 2; 17 | } 18 | 19 | //Auth types enum 20 | enum AuthenticationType { 21 | BASIC = 0; 22 | OAUTH2 = 1; 23 | } 24 | 25 | // The request message 26 | message GetChannelListRequest { 27 | Authentication auth = 2; 28 | } 29 | 30 | // The response message 31 | message GetChannelListReply { 32 | string channels = 1; 33 | string err = 3; 34 | } 35 | 36 | // The request message 37 | message GetChannelMessagesRequest { 38 | string channel = 1; //as Id 39 | string oldest = 2; //timestamp of oldest msg 40 | Authentication auth = 3; 41 | } 42 | 43 | // The response message 44 | message GetChannelMessagesReply { 45 | string messages = 1; 46 | string timeStampOfLastMsg = 2; 47 | string err = 3; 48 | } 49 | 50 | // The request message 51 | message SendMessageRequest { 52 | string channel = 1; //as Id 53 | string message = 2; 54 | string as_user = 3; //if false,message sender is bot 55 | Authentication auth = 4; 56 | } 57 | 58 | // The response message 59 | message SendMessageReply { 60 | string status = 1; 61 | string err = 2; 62 | } 63 | -------------------------------------------------------------------------------- /code/SeCoApi/utility/secoBasicAuth.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 28.09.16. 3 | */ 4 | var auth = require('basic-auth'), 5 | grpc = require('grpc'), 6 | nconf = require('nconf'), 7 | winston = require('winston'); 8 | 9 | 10 | 11 | 12 | function verifyBasicAuth(req,callback){ 13 | var user = auth(req); 14 | if(typeof user === 'undefined'){ 15 | return callback(new Error('invalid or missing basic authentication')); 16 | } 17 | winston.log('info','username: %s password: %s',user.name,user.pass); 18 | var url = nconf.get('userServiceIp') + ':' + nconf.get('userServicePort'); 19 | winston.log('info', 'grpc url: %s', url); 20 | var proto = grpc.load('./proto/userManagement.proto').userManagement; 21 | var client = new proto.UserManagement(url, 22 | grpc.credentials.createInsecure()); 23 | client.isLoginCorrect({ 24 | name: user.name, 25 | password: user.pass 26 | }, function (err, response) { 27 | if (err) { 28 | return callback(new Error('userservice offline')); 29 | } else { 30 | if (response.err) { 31 | winston.log('error', 'couldnt check seco authentication',response.err); 32 | return callback(response.err); 33 | } else { 34 | winston.log('info', 'successfully checked seco authentication. isMatch: ', response.isCorrect); 35 | return callback(null,response.isCorrect,user.name); 36 | } 37 | } 38 | }); 39 | } 40 | 41 | module.exports = { 42 | verifyBasicAuth : verifyBasicAuth 43 | }; -------------------------------------------------------------------------------- /code/Slack/proto/slackMessaging.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package slackMessaging; 4 | 5 | service SlackMessaging { 6 | rpc GetChannelList (GetChannelListRequest) returns (GetChannelListReply) {} 7 | 8 | rpc GetChannelMessages (GetChannelMessagesRequest) returns (GetChannelMessagesReply) {} 9 | 10 | rpc SendMessage (SendMessageRequest) returns (SendMessageReply) {} 11 | } 12 | 13 | //Auth message 14 | message Authentication { 15 | string token = 1; //auth string,for example user:password or Bearer XXXXX 16 | AuthenticationType type = 2; 17 | } 18 | 19 | //Auth types enum 20 | enum AuthenticationType { 21 | BASIC = 0; 22 | OAUTH2 = 1; 23 | } 24 | 25 | // The request message 26 | message GetChannelListRequest { 27 | Authentication auth = 2; 28 | } 29 | 30 | // The response message 31 | message GetChannelListReply { 32 | string channels = 1; 33 | string err = 3; 34 | } 35 | 36 | // The request message 37 | message GetChannelMessagesRequest { 38 | string channel = 1; //as Id 39 | string oldest = 2; //timestamp of oldest msg 40 | Authentication auth = 3; 41 | } 42 | 43 | // The response message 44 | message GetChannelMessagesReply { 45 | string messages = 1; 46 | string timeStampOfLastMsg = 2; 47 | string err = 3; 48 | } 49 | 50 | // The request message 51 | message SendMessageRequest { 52 | string channel = 1; //as Id 53 | string message = 2; 54 | string as_user = 3; //if false,message sender is bot 55 | Authentication auth = 4; 56 | } 57 | 58 | // The response message 59 | message SendMessageReply { 60 | string status = 1; 61 | string err = 2; 62 | } 63 | -------------------------------------------------------------------------------- /code/UserManagement/db/models/User.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 24.08.16. 3 | */ 4 | // Load mongoose package 5 | var mongoose = require('mongoose'), 6 | bcrypt = require('bcrypt'), 7 | SALT_WORK_FACTOR = 10; 8 | 9 | // Create a schema 10 | var UserSchema = new mongoose.Schema({ 11 | username: { type: String, required: true, index: { unique: true } }, 12 | password: { type: String, required: true }, 13 | auth: {type: Array}, // JSON String with service authentication tokens and service name {service : example,token : example} 14 | sessionId : {type: String} 15 | }); 16 | 17 | UserSchema.pre('save', function(next) { 18 | var user = this; 19 | 20 | // only hash the password if it has been modified (or is new) 21 | if (!user.isModified('password')) return next(); 22 | 23 | // generate a salt 24 | bcrypt.genSalt(SALT_WORK_FACTOR, function(err, salt) { 25 | if (err) return next(err); 26 | 27 | // hash the password using our new salt 28 | bcrypt.hash(user.password, salt, function(err, hash) { 29 | if (err) return next(err); 30 | 31 | // override the cleartext password with the hashed one 32 | user.password = hash; 33 | next(); 34 | }); 35 | }); 36 | }); 37 | 38 | UserSchema.methods.comparePassword = function(candidatePassword, callback) { 39 | bcrypt.compare(candidatePassword, this.password, function(err, isMatch) { 40 | if (err) return callback(err); 41 | callback(null, isMatch); 42 | }); 43 | }; 44 | 45 | module.exports = mongoose.model('User', UserSchema); -------------------------------------------------------------------------------- /code/TransferService/grpc/server.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by phili on 02.08.2016. 3 | */ 4 | 'use strict'; 5 | 6 | var grpc = require('grpc'), 7 | winston = require('winston'), 8 | grpcFileStreamer = require('./grpcFileStreamer'), 9 | transfer = require('.././transfer'); 10 | 11 | 12 | var exports = module.exports = {}; 13 | 14 | //global var 15 | var _server; 16 | 17 | exports.init = function (serverIp, serverPort) { 18 | var fileTransferProto = grpc.load('./proto/fileTransfer.proto').fileTransfer; 19 | _server = new grpc.Server(); 20 | _server.addProtoService(fileTransferProto.FileTransfer.service, { 21 | transferTo: transferTo 22 | }); 23 | var serverUri = serverIp + ':' + serverPort; 24 | _server.bind(serverUri, grpc.ServerCredentials.createInsecure()); 25 | transfer.init(); 26 | winston.log('info', 'RPC init succesful on: ' + serverUri); 27 | }; 28 | 29 | exports.start = function () { 30 | _server.start(); 31 | winston.log('info', 'RPC server started'); 32 | }; 33 | 34 | /** 35 | * Implements the TransferTo RPC method. 36 | */ 37 | function transferTo(call, callback) { 38 | winston.log('info', 'transferTo rpc method request'); 39 | winston.log('info', 'encrypted basic auth'); 40 | transfer.toFileStorage(call.metadata.get('service')[0], call.metadata.get('username')[0], call.metadata.get('filename')[0], call.metadata.get('path')[0], call, function (err, status) { 41 | if (err) { 42 | callback(null, {err: err}); 43 | } else { 44 | callback(null, {status: status}); 45 | } 46 | }); 47 | } 48 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/create-team/create-team.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, OnInit} from '@angular/core'; 2 | import {TeamService} from '../_services/index'; 3 | import {Team} from "../_models/team"; 4 | import {MdDialog} from '@angular/material'; 5 | import {NotificationsService} from 'angular2-notifications/lib/notifications.service'; 6 | import {Response} from "@angular/http"; 7 | 8 | @Component({ 9 | selector: 'app-create-team', 10 | templateUrl: './create-team.component.html', 11 | styleUrls: ['./create-team.component.scss'] 12 | }) 13 | export class CreateTeamComponent implements OnInit { 14 | model: any = {}; 15 | loading: boolean; 16 | 17 | constructor(private teamService: TeamService, private notService: NotificationsService, public dialog: MdDialog) { 18 | } 19 | 20 | ngOnInit() { 21 | } 22 | 23 | createTeam() { 24 | var team = new Team(this.model.teamName, this.model.password); 25 | this.loading = true; 26 | this.teamService.createTeam(team) 27 | .subscribe( 28 | data => { 29 | if (data instanceof Response) { 30 | data = data.json(); 31 | this.loading = false; 32 | if (data.ok) { 33 | this.notService.success('Team created!', ''); 34 | this.dialog.closeAll(); 35 | } else { 36 | this.notService.error('Team creation failed', data.errorMsg); 37 | } 38 | } 39 | }, 40 | error => { 41 | this.loading = false; 42 | this.notService.error('Team creation error', error); 43 | }); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/create-team/create-team.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | Create Team 4 | 5 |
6 | account_circle 7 | 10 | 11 |
12 |
13 | lock 14 | 17 |
18 | 19 |
20 | 24 |
25 |
26 |
27 |
28 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/_guards/auth.guard.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | var router_1 = require('@angular/router'); 13 | var AuthGuard = (function () { 14 | function AuthGuard(router) { 15 | this.router = router; 16 | } 17 | AuthGuard.prototype.canActivate = function () { 18 | if (localStorage.getItem('currentUser')) { 19 | // logged in so return true 20 | return true; 21 | } 22 | // not logged in so redirect to login page 23 | this.router.navigate(['/login']); 24 | return false; 25 | }; 26 | AuthGuard = __decorate([ 27 | core_1.Injectable(), 28 | __metadata('design:paramtypes', [router_1.Router]) 29 | ], AuthGuard); 30 | return AuthGuard; 31 | }()); 32 | exports.AuthGuard = AuthGuard; 33 | //# sourceMappingURL=auth.guard.js.map -------------------------------------------------------------------------------- /code/SeCoApi/cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIETjCCAzagAwIBAgIJAJlVse+SJfhNMA0GCSqGSIb3DQEBBQUAMHcxCzAJBgNV 3 | BAYTAkRFMQ4wDAYDVQQIEwVhc2RhczEPMA0GA1UEBxMGYXNkYXNkMQ8wDQYDVQQK 4 | EwZhc2Rhc2QxDjAMBgNVBAsTBWFkYXNkMQ8wDQYDVQQDEwZhc2Rhc2QxFTATBgkq 5 | hkiG9w0BCQEWBmFzZGFzZDAeFw0xNjEyMjExMjE2MzdaFw0xNzEyMjExMjE2Mzda 6 | MHcxCzAJBgNVBAYTAkRFMQ4wDAYDVQQIEwVhc2RhczEPMA0GA1UEBxMGYXNkYXNk 7 | MQ8wDQYDVQQKEwZhc2Rhc2QxDjAMBgNVBAsTBWFkYXNkMQ8wDQYDVQQDEwZhc2Rh 8 | c2QxFTATBgkqhkiG9w0BCQEWBmFzZGFzZDCCASIwDQYJKoZIhvcNAQEBBQADggEP 9 | ADCCAQoCggEBAJ+eIf08u1QVFK38Lm3S2+aiL+q6N6ATk7FrjBGpy+TSwWzebBY5 10 | bR33Gt7tjOffkcct1Z8PXOWfnCtspEro4FnYL6WeXtAr/aAse+dz0yBFdjV5K0WT 11 | q+LXt3h/uQ8O89pey7morf0q+2CnWy/6sZsUBxP5fgrHhx64PETYCBmovHGR40m7 12 | 7c7Xac1tDCQqyj+T1OdllwaqVYyEp9e4CIoFvXTffqISX2AjhiQzj+MRThgaNTSJ 13 | jRBDakH2488e6c+5tBh4fFJvA9s8AWjfutlYzuF1QEWJn71IOyjCm45iHvl5Xf5+ 14 | JNFEK/wJuPbqxFanphkjbYjRSWKBpw7ivpECAwEAAaOB3DCB2TAdBgNVHQ4EFgQU 15 | cmUYiBa2ikVqnpy9+Ut7XjH4h5MwgakGA1UdIwSBoTCBnoAUcmUYiBa2ikVqnpy9 16 | +Ut7XjH4h5Ohe6R5MHcxCzAJBgNVBAYTAkRFMQ4wDAYDVQQIEwVhc2RhczEPMA0G 17 | A1UEBxMGYXNkYXNkMQ8wDQYDVQQKEwZhc2Rhc2QxDjAMBgNVBAsTBWFkYXNkMQ8w 18 | DQYDVQQDEwZhc2Rhc2QxFTATBgkqhkiG9w0BCQEWBmFzZGFzZIIJAJlVse+SJfhN 19 | MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAI4lIWUyDDV+lQ/PFD+/ 20 | k/i1NV12aT3OTVXu955CVC/qYITF8Cdx3a3mJv6VmerZMptbwSvnD/DcpRd8+OHR 21 | vdeKs/LBNe42SUW2b+qciuTke7stx9zNP+OuD7EN0WcFBJeGcAhkGFjzbVeXLMgX 22 | 3FMD1oPJAYj/5bKjlOxMscN5n2q2RcfR1VTH18hWiYvzLi4K+Wq4qY7V5bpD280P 23 | /UGjh4m+RnwtwFO9CnWnKpgRcBpsHqygNUlMnQtl4J3DBuu5qsTECH6iZWHf/Vcf 24 | Iy9pPNimEGbctA0nPlbRHKRiE9b8KpCKr8TlMBsRot1pmaXRy1WMNJzMuMQE1rxX 25 | T/k= 26 | -----END CERTIFICATE----- 27 | -------------------------------------------------------------------------------- /code/AuthenticationService/cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIETjCCAzagAwIBAgIJAJlVse+SJfhNMA0GCSqGSIb3DQEBBQUAMHcxCzAJBgNV 3 | BAYTAkRFMQ4wDAYDVQQIEwVhc2RhczEPMA0GA1UEBxMGYXNkYXNkMQ8wDQYDVQQK 4 | EwZhc2Rhc2QxDjAMBgNVBAsTBWFkYXNkMQ8wDQYDVQQDEwZhc2Rhc2QxFTATBgkq 5 | hkiG9w0BCQEWBmFzZGFzZDAeFw0xNjEyMjExMjE2MzdaFw0xNzEyMjExMjE2Mzda 6 | MHcxCzAJBgNVBAYTAkRFMQ4wDAYDVQQIEwVhc2RhczEPMA0GA1UEBxMGYXNkYXNk 7 | MQ8wDQYDVQQKEwZhc2Rhc2QxDjAMBgNVBAsTBWFkYXNkMQ8wDQYDVQQDEwZhc2Rh 8 | c2QxFTATBgkqhkiG9w0BCQEWBmFzZGFzZDCCASIwDQYJKoZIhvcNAQEBBQADggEP 9 | ADCCAQoCggEBAJ+eIf08u1QVFK38Lm3S2+aiL+q6N6ATk7FrjBGpy+TSwWzebBY5 10 | bR33Gt7tjOffkcct1Z8PXOWfnCtspEro4FnYL6WeXtAr/aAse+dz0yBFdjV5K0WT 11 | q+LXt3h/uQ8O89pey7morf0q+2CnWy/6sZsUBxP5fgrHhx64PETYCBmovHGR40m7 12 | 7c7Xac1tDCQqyj+T1OdllwaqVYyEp9e4CIoFvXTffqISX2AjhiQzj+MRThgaNTSJ 13 | jRBDakH2488e6c+5tBh4fFJvA9s8AWjfutlYzuF1QEWJn71IOyjCm45iHvl5Xf5+ 14 | JNFEK/wJuPbqxFanphkjbYjRSWKBpw7ivpECAwEAAaOB3DCB2TAdBgNVHQ4EFgQU 15 | cmUYiBa2ikVqnpy9+Ut7XjH4h5MwgakGA1UdIwSBoTCBnoAUcmUYiBa2ikVqnpy9 16 | +Ut7XjH4h5Ohe6R5MHcxCzAJBgNVBAYTAkRFMQ4wDAYDVQQIEwVhc2RhczEPMA0G 17 | A1UEBxMGYXNkYXNkMQ8wDQYDVQQKEwZhc2Rhc2QxDjAMBgNVBAsTBWFkYXNkMQ8w 18 | DQYDVQQDEwZhc2Rhc2QxFTATBgkqhkiG9w0BCQEWBmFzZGFzZIIJAJlVse+SJfhN 19 | MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAI4lIWUyDDV+lQ/PFD+/ 20 | k/i1NV12aT3OTVXu955CVC/qYITF8Cdx3a3mJv6VmerZMptbwSvnD/DcpRd8+OHR 21 | vdeKs/LBNe42SUW2b+qciuTke7stx9zNP+OuD7EN0WcFBJeGcAhkGFjzbVeXLMgX 22 | 3FMD1oPJAYj/5bKjlOxMscN5n2q2RcfR1VTH18hWiYvzLi4K+Wq4qY7V5bpD280P 23 | /UGjh4m+RnwtwFO9CnWnKpgRcBpsHqygNUlMnQtl4J3DBuu5qsTECH6iZWHf/Vcf 24 | Iy9pPNimEGbctA0nPlbRHKRiE9b8KpCKr8TlMBsRot1pmaXRy1WMNJzMuMQE1rxX 25 | T/k= 26 | -----END CERTIFICATE----- 27 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/teamArea/teamArea.component.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | var TeamAreaComponent = (function () { 13 | function TeamAreaComponent() { 14 | this.currentUser = JSON.parse(localStorage.getItem('currentUser')); 15 | //TODO init current Team 16 | } 17 | TeamAreaComponent.prototype.ngOnInit = function () { 18 | console.log('ng on init of TeamAreaComponent called'); 19 | }; 20 | TeamAreaComponent = __decorate([ 21 | core_1.Component({ 22 | selector: 'teamArea', 23 | moduleId: module.id, 24 | templateUrl: 'teamArea.component.html' 25 | }), 26 | __metadata('design:paramtypes', []) 27 | ], TeamAreaComponent); 28 | return TeamAreaComponent; 29 | }()); 30 | exports.TeamAreaComponent = TeamAreaComponent; 31 | //# sourceMappingURL=teamArea.component.js.map -------------------------------------------------------------------------------- /code/TransferService/grpc/grpcFileStreamer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PhilippMac on 12.01.17. 3 | */ 4 | "use strict"; 5 | 6 | function receiveFileStream(grpcCall,metadataParams,errParam,chunkParameter,cb){ 7 | var metadataResult = {}; 8 | var err; 9 | var fileBuffer = []; 10 | grpcCall.on('data', function (msgReceived) { 11 | console.log('got data'); 12 | _handleChunk(msgReceived[chunkParameter],fileBuffer); 13 | _updateMetadata(msgReceived,metadataParams,metadataResult); 14 | err = _checkError(msgReceived,errParam,err); 15 | }); 16 | grpcCall.on('end', function () { 17 | console.log('end'); 18 | if (err) { 19 | return cb(err); 20 | } else { 21 | return cb(null,metadataResult,fileBuffer); 22 | } 23 | }); 24 | } 25 | 26 | function _handleChunk(chunk,fileBuffer){ 27 | if(chunk.length > 0){ 28 | for(let i = 0;i 2 | 3 | Login 4 | 5 |
6 | account_circle 7 | 10 | 11 |
12 |
13 | lock 14 | 17 |
18 | 19 |
20 | 24 | 25 |
26 |
27 |
28 | 29 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/userArea/userArea.component.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | var index_1 = require('../_services/index'); 13 | var UserAreaComponent = (function () { 14 | function UserAreaComponent(userService) { 15 | this.userService = userService; 16 | this.currentUser = JSON.parse(localStorage.getItem('currentUser')); 17 | } 18 | UserAreaComponent.prototype.ngOnInit = function () { 19 | console.log('ng on init of TeamAreaComponent called'); 20 | }; 21 | UserAreaComponent = __decorate([ 22 | core_1.Component({ 23 | selector: 'userArea', 24 | moduleId: module.id, 25 | templateUrl: 'userArea.component.html' 26 | }), 27 | __metadata('design:paramtypes', [index_1.UserService]) 28 | ], UserAreaComponent); 29 | return UserAreaComponent; 30 | }()); 31 | exports.UserAreaComponent = UserAreaComponent; 32 | //# sourceMappingURL=userArea.component.js.map -------------------------------------------------------------------------------- /code/AuthenticationService/chain.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/ 3 | MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT 4 | DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow 5 | SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT 6 | GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC 7 | AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF 8 | q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8 9 | SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0 10 | Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA 11 | a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj 12 | /PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T 13 | AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG 14 | CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv 15 | bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k 16 | c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw 17 | VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC 18 | ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz 19 | MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu 20 | Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF 21 | AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo 22 | uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/ 23 | wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu 24 | X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG 25 | PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6 26 | KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg== 27 | -----END CERTIFICATE----- 28 | -------------------------------------------------------------------------------- /code/Frontend/cliProject/src/app/home/home.component.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | var index_1 = require('../_services/index'); 13 | var HomeComponent = (function () { 14 | function HomeComponent(userService) { 15 | this.userService = userService; 16 | this.currentUser = JSON.parse(localStorage.getItem('currentUser')); 17 | console.log(this.currentUser.username); 18 | console.log(this.currentUser.basicAuth); 19 | } 20 | HomeComponent.prototype.ngOnInit = function () { 21 | console.log('ng on init HomeComponent called'); 22 | }; 23 | HomeComponent = __decorate([ 24 | core_1.Component({ 25 | moduleId: module.id, 26 | templateUrl: 'home.component.html' 27 | }), 28 | __metadata('design:paramtypes', [index_1.UserService]) 29 | ], HomeComponent); 30 | return HomeComponent; 31 | }()); 32 | exports.HomeComponent = HomeComponent; 33 | //# sourceMappingURL=home.component.js.map -------------------------------------------------------------------------------- /code/Slack/test/slackTest.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var expect = require('chai').expect, 4 | assert = require('chai').assert, 5 | fs = require('fs'), 6 | slack = require("../slack"); 7 | 8 | 9 | var access_token = {}; 10 | 11 | function init() { 12 | access_token = 'xoxp-11952872597-11961057271-79718090480-c8f859272a'; 13 | } 14 | 15 | 16 | describe('Slack', function () { 17 | before(function () { 18 | init(); 19 | }); 20 | describe('getChannelList', function () { 21 | it('returns all channels in slack team corresponding to access_token', function (done) { 22 | this.timeout(10000); 23 | slack.getChannelList(access_token, function (err, dirs) { 24 | expect(err).to.be.a('null'); 25 | expect(dirs).to.be.not.a('null'); 26 | done(); 27 | }); 28 | }); 29 | }); 30 | describe('getChannelMessages', function () { 31 | it('returns messages in channel with their text and sender', function (done) { 32 | this.timeout(10000); 33 | slack.getChannelMessages(access_token, 'C0BU2EU4Q', function (err, messages) { 34 | expect(err).to.be.a('null'); 35 | expect(messages).to.be.not.a('null'); 36 | done(); 37 | }); 38 | }); 39 | }); 40 | describe('sendMessage', function () { 41 | it('sends a message to a channel', function (done) { 42 | this.timeout(10000); 43 | slack.sendMessage(access_token, 'C0BU2EU4Q', 'testMessage', true, function (err, msg) { 44 | expect(err).to.be.a('null'); 45 | assert.equal(msg, 'ok'); 46 | done(); 47 | }); 48 | }); 49 | }); 50 | }); -------------------------------------------------------------------------------- /code/SeCoApi/key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAn54h/Ty7VBUUrfwubdLb5qIv6ro3oBOTsWuMEanL5NLBbN5s 3 | FjltHfca3u2M59+Rxy3Vnw9c5Z+cK2ykSujgWdgvpZ5e0Cv9oCx753PTIEV2NXkr 4 | RZOr4te3eH+5Dw7z2l7Luait/Sr7YKdbL/qxmxQHE/l+CseHHrg8RNgIGai8cZHj 5 | SbvtztdpzW0MJCrKP5PU52WXBqpVjISn17gIigW9dN9+ohJfYCOGJDOP4xFOGBo1 6 | NImNEENqQfbjzx7pz7m0GHh8Um8D2zwBaN+62VjO4XVARYmfvUg7KMKbjmIe+Xld 7 | /n4k0UQr/Am49urEVqemGSNtiNFJYoGnDuK+kQIDAQABAoIBAFtawS9UBA9CpXxS 8 | uiwHI+6jYvNgMxf+PGiuGhO978F+UlBCGPC7W1VsKUfwA9ZuIdwywnHv9AZETLiZ 9 | zIpHMKibT+Hle3R/yQBUlXHJ28s7lkVSnU6MDzOcrRhdWYhh0XVpDgaroTEl2Yvf 10 | HRSf0ejlFIv9HoOC4TXW0j/AuRodjp+2ePuEdN5xyWsHdSonXnETJiRIir2DCvJI 11 | f19zwc8qbZuH0/hAWRUGNKy/RnHab45ZQ3gvcwK6SqLnBVw0Oa0WQgrBwBsYn2Rw 12 | fSHieL5wDNhe1JlGW/vi/u2xjiegzk6mN5nKDkUatrBDpLumfZsIK9GvAox2Hdab 13 | cA4kgbUCgYEAy4TK4mLcALMd5JEP7wO6cUzqNtRPqydAuX3NDTlam8Kajk4va7vw 14 | wnfZVBcUvoKNiJNXw7/Gv/m2dRNdwzRWxmxWcPZdW9n9q+TZ+EriquMCHkNCc4Vu 15 | nN86/qnVfFHYhdrisGXEnPsaA/fG6Uzsr4IsMKe8CE4OMQg/FBaUrJ8CgYEAyMc7 16 | conk9CAG3NRYJNI4a0phcPqIBaTF+7VCLoRvjqbxjpC37Q95o84Q7ANcZhfwLXHc 17 | vcOAeWJ9mxOgw0VUFFZAANW1QCWAAduBvaS3oIYYelQtJ90jtFt+8Ur9xq/y8WCt 18 | t7tQ+kOQK+L3WotmtRJAE0CV64k7UqIlbTy6ls8CgYEAtLWksH+3eaeR03I7A6/7 19 | zL7O+QBr/T1Na2cYu7VBjyysr88crDyk+wgQIWqdMMwbgDnUpCuU/sFsEWiwyLOg 20 | mW95EbSwEO7vH8KFCML1oWcQam6ugoToQsK0T4vd1BWYfMJuptK2Ue1knEFWjbGQ 21 | OAcN1eYaQAWO9FquJ9glC2ECgYBPO8irB94RtT3gEfCC/28CcEUJ9+SMDZ2QGtT2 22 | VI9NxXYYY+YhqHTBfwXQjfb91z6SQJfzT165CHQ3KcTMquRmbi8t5Sh1GxdsJDsM 23 | Ix/QOnsYc3WqgKuhdmYfRQ/nQ/Jk7VlA46wuR1Fy8EvbMJ4koQImVtuTKwH9Nz37 24 | 4PZlowKBgHO1pAIjhT8gv5HRPGdPHBZlAZd2BvYCHqI//455h1dVc0bJS1Ykohkj 25 | fw+pi/lh0irynDlzhNPLxqamwu92Ny5NCXvIL81pyFTsmDf6V52xkMd7JICQ4VxG 26 | cD7KNteyCqxIZ4eGkRuVToAoEBF93n45ou+pykoLICNVnIlksjeW 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /code/SeCoApi/json/googleDriveRoutes.json: -------------------------------------------------------------------------------- 1 | { 2 | "service_name": "GOOGLE", 3 | "grpc_ip": "localhost", 4 | "grpc_port": 50049, 5 | "grpc_service_name": "FileStorage", 6 | "grpc_package_name": "fileStorage", 7 | "authentication_type": "OAUTH2", 8 | "requests": [ 9 | { 10 | "http-method": "get", 11 | "route": "/google/file", 12 | "query_parameter": [ 13 | "path" 14 | ], 15 | "grpc_function": "getFile", 16 | "response_parameter": [ 17 | "fileName", 18 | "fileBuffer" 19 | ], 20 | "notification": false 21 | }, 22 | { 23 | "http-method": "get", 24 | "route": "/google/filetree", 25 | "query_parameter": [ 26 | "path" 27 | ], 28 | "grpc_function": "getFileTree", 29 | "response_parameter": [ 30 | "dirs" 31 | ], 32 | "notification": false 33 | }, 34 | { 35 | "http-method": "put", 36 | "route": "/google/file", 37 | "query_parameter": [ 38 | "path" 39 | ], 40 | "grpc_function": "uploadFile", 41 | "reserved_parameter": [ 42 | "fileName", 43 | "fileBuffer" 44 | ], 45 | "response_parameter": [ 46 | "status" 47 | ], 48 | "notification": true, 49 | "message": "new file uploaded" 50 | }, 51 | { 52 | "http-method": "post", 53 | "route": "/google/file/transfer", 54 | "query_parameter": [ 55 | "path", 56 | "targetService" 57 | ], 58 | "grpc_function": "fileTransfer", 59 | "reserved_parameter": [ 60 | "userName" 61 | ], 62 | "response_parameter": [ 63 | "status" 64 | ], 65 | "notification": true, 66 | "message": "new file transfer" 67 | } 68 | ] 69 | } -------------------------------------------------------------------------------- /code/AuthenticationService/key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAn54h/Ty7VBUUrfwubdLb5qIv6ro3oBOTsWuMEanL5NLBbN5s 3 | FjltHfca3u2M59+Rxy3Vnw9c5Z+cK2ykSujgWdgvpZ5e0Cv9oCx753PTIEV2NXkr 4 | RZOr4te3eH+5Dw7z2l7Luait/Sr7YKdbL/qxmxQHE/l+CseHHrg8RNgIGai8cZHj 5 | SbvtztdpzW0MJCrKP5PU52WXBqpVjISn17gIigW9dN9+ohJfYCOGJDOP4xFOGBo1 6 | NImNEENqQfbjzx7pz7m0GHh8Um8D2zwBaN+62VjO4XVARYmfvUg7KMKbjmIe+Xld 7 | /n4k0UQr/Am49urEVqemGSNtiNFJYoGnDuK+kQIDAQABAoIBAFtawS9UBA9CpXxS 8 | uiwHI+6jYvNgMxf+PGiuGhO978F+UlBCGPC7W1VsKUfwA9ZuIdwywnHv9AZETLiZ 9 | zIpHMKibT+Hle3R/yQBUlXHJ28s7lkVSnU6MDzOcrRhdWYhh0XVpDgaroTEl2Yvf 10 | HRSf0ejlFIv9HoOC4TXW0j/AuRodjp+2ePuEdN5xyWsHdSonXnETJiRIir2DCvJI 11 | f19zwc8qbZuH0/hAWRUGNKy/RnHab45ZQ3gvcwK6SqLnBVw0Oa0WQgrBwBsYn2Rw 12 | fSHieL5wDNhe1JlGW/vi/u2xjiegzk6mN5nKDkUatrBDpLumfZsIK9GvAox2Hdab 13 | cA4kgbUCgYEAy4TK4mLcALMd5JEP7wO6cUzqNtRPqydAuX3NDTlam8Kajk4va7vw 14 | wnfZVBcUvoKNiJNXw7/Gv/m2dRNdwzRWxmxWcPZdW9n9q+TZ+EriquMCHkNCc4Vu 15 | nN86/qnVfFHYhdrisGXEnPsaA/fG6Uzsr4IsMKe8CE4OMQg/FBaUrJ8CgYEAyMc7 16 | conk9CAG3NRYJNI4a0phcPqIBaTF+7VCLoRvjqbxjpC37Q95o84Q7ANcZhfwLXHc 17 | vcOAeWJ9mxOgw0VUFFZAANW1QCWAAduBvaS3oIYYelQtJ90jtFt+8Ur9xq/y8WCt 18 | t7tQ+kOQK+L3WotmtRJAE0CV64k7UqIlbTy6ls8CgYEAtLWksH+3eaeR03I7A6/7 19 | zL7O+QBr/T1Na2cYu7VBjyysr88crDyk+wgQIWqdMMwbgDnUpCuU/sFsEWiwyLOg 20 | mW95EbSwEO7vH8KFCML1oWcQam6ugoToQsK0T4vd1BWYfMJuptK2Ue1knEFWjbGQ 21 | OAcN1eYaQAWO9FquJ9glC2ECgYBPO8irB94RtT3gEfCC/28CcEUJ9+SMDZ2QGtT2 22 | VI9NxXYYY+YhqHTBfwXQjfb91z6SQJfzT165CHQ3KcTMquRmbi8t5Sh1GxdsJDsM 23 | Ix/QOnsYc3WqgKuhdmYfRQ/nQ/Jk7VlA46wuR1Fy8EvbMJ4koQImVtuTKwH9Nz37 24 | 4PZlowKBgHO1pAIjhT8gv5HRPGdPHBZlAZd2BvYCHqI//455h1dVc0bJS1Ykohkj 25 | fw+pi/lh0irynDlzhNPLxqamwu92Ny5NCXvIL81pyFTsmDf6V52xkMd7JICQ4VxG 26 | cD7KNteyCqxIZ4eGkRuVToAoEBF93n45ou+pykoLICNVnIlksjeW 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /code/SeCoApi/json/owncloudRoutes.json: -------------------------------------------------------------------------------- 1 | { 2 | "service_name": "OWNCLOUD", 3 | "grpc_ip": "localhost", 4 | "grpc_port": 50051, 5 | "grpc_service_name": "FileStorage", 6 | "grpc_package_name": "fileStorage", 7 | "authentication_type": "BASIC", 8 | "requests": [ 9 | { 10 | "http-method": "get", 11 | "route": "/owncloud/file", 12 | "query_parameter": [ 13 | "path" 14 | ], 15 | "grpc_function": "getFile", 16 | "response_parameter": [ 17 | "fileName", 18 | "fileBuffer" 19 | ], 20 | "notification": false 21 | }, 22 | { 23 | "http-method": "get", 24 | "route": "/owncloud/filetree", 25 | "query_parameter": [ 26 | "path" 27 | ], 28 | "grpc_function": "getFileTree", 29 | "response_parameter": [ 30 | "dirs" 31 | ], 32 | "notification": false 33 | }, 34 | { 35 | "http-method": "put", 36 | "route": "/owncloud/file", 37 | "query_parameter": [ 38 | "path" 39 | ], 40 | "grpc_function": "uploadFile", 41 | "reserved_parameter": [ 42 | "fileName", 43 | "fileBuffer" 44 | ], 45 | "response_parameter": [ 46 | "status" 47 | ], 48 | "notification": true, 49 | "message": "new file uploaded" 50 | }, 51 | { 52 | "http-method": "post", 53 | "route": "/owncloud/file/transfer", 54 | "query_parameter": [ 55 | "path", 56 | "targetService" 57 | ], 58 | "grpc_function": "fileTransfer", 59 | "reserved_parameter": [ 60 | "userName" 61 | ], 62 | "response_parameter": [ 63 | "status" 64 | ], 65 | "notification": true, 66 | "message": "new file transfer" 67 | } 68 | ] 69 | } 70 | -------------------------------------------------------------------------------- /code/SeCoApi/privkey.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDdV5oGXw4TCIAr 3 | njct4eKXaFWkv08LIeFNunZaLYeB9WdxQ/bukLhdwloyGUMiLCJ6iz3TKXzolot7 4 | QtI/IF4F8KaGLTzyBSu2gmRQ7gFtUNhRyd9d9UTUuxpD/RicZgSOUEa6zNs5DGXc 5 | 3G2BSYofqRvelta1VAsS4XMTVen8PIqzYB9olr12XX4ysT+8enklRNjF2UXnH62K 6 | ocGWSz3uL6wMqsWzoi+LfLlA4KN54AM0IDPGz1pyr2gAtQ79jfVQ8LsRVxFn759C 7 | 9hFqxhWEXAWUk79qrjAWvQI4QArAE61t5P05bBgbXVyfX7zgncqInDc81ZnRYdzA 8 | sIaYWi9vAgMBAAECggEAS1XfpL+BqNTB2xa0rTcuyl3GmJZMrvtPFgea9MJ+VqtS 9 | E+kQCM7VEYRu8pJKmTzwV0lBN7ftPbTPsJpjuPypQ9hOtWh8T9uWrz3eKvV3It/b 10 | YKsXDYHHdahhHjbsw36tmkqUaEwFaXtgyDV2SAThsDj8tVwdpAYA5uI5KqGZTDIk 11 | 2FCsUjWcXCUDu/UGQkHUm1bsyPCn7QF3GBhh0YPhP4UhuFPajJsQItTMvYLAuUAA 12 | FwTtGUV+i6FwWF+FxVDbl7WZVGyYXl78sW0wd8GY22r0Eb9bzy42Pem724mKAuSt 13 | gl8qEUK18zxhp26T63OvZHMGG/AVdUzYZnJRdyHaMQKBgQD2XnIEBn4c96xw4EMx 14 | SQ+0qh9TBaQtm/23pee6Y2dJIv+vDmKxEoVvwCkLfoKXa00g8BoeRtge9yLbmti0 15 | FgKM6BOkNgANT6NYlbd9XhkzdKAKOL2qoYGHF94vGNavm8B+GPRYEZZyMyrmDLZ9 16 | yYX8MohUxaHJ0CqCbRg+TdpnWwKBgQDl/rMQN7mR8fiZcRZHqLyn0lonQMDTXjyn 17 | fU3rFPxNFGG21Kv8qSCkjLjW7yfITFsu8QkLKyVZFGV1fhQD/jcin+RyBxcO/Jm7 18 | WC4lFORU4tEJPM9KxCW8HUi2L86npA2V2lZ8EGPgdkCXoMZb35522+ogOO1r0efY 19 | cOXvWkaofQKBgAJTtAn7sbc+U5+hTqEpin9vV+pl1D4mCghxBbZJ+BDFxtp1bVM0 20 | 1JPQodKc+EjL16em/OgqTSJFvUuLs95HkvCXxI+5ftihVu6gQ2JowB4vTM+r54a0 21 | DdAj1pJlTqnL8859F9m5GM2tVAtmNVcMzzoplAYQ880/LRecRi1YeOafAoGAYlYt 22 | T5DT6h/QUCL3CLqPtx2MaF4aVAVl36MGzq2RVo+RW+/AfW3+w/xbB6MHmm9zSTXL 23 | zResh1LeMocunapy/n3o2gxIAqNkQ6LnT/mHyveTsuRqKSiGjdDjhuoX7LuLB3hs 24 | I+2KFq3Y3jvis+N/yIgsqYxNjx0XiQZ0eYtazK0CgYEA2sT61WwSiJBBgtfKDIly 25 | xCK/Y2BBordDsfwBok0Of58H/oLiqMeLy8em/OUfVb27iH8MMx1bvgsY4XycztgR 26 | QkRMEMtiq2255JL8FoIcZA5PZM2UWcDWYNAx8lCG3W7tcgDZ1X7x/JjuIzyHp92r 27 | qaOKy61iv/KT/RrN/xXymCw= 28 | -----END PRIVATE KEY----- 29 | --------------------------------------------------------------------------------