├── api ├── models │ ├── .gitkeep │ ├── Session.js │ ├── AppGroup.js │ ├── UserGroup.js │ ├── ImageGroup.js │ ├── UserMachine.js │ ├── Client.js │ └── Property.js ├── responses │ └── .gitkeep ├── services │ └── .gitkeep ├── controllers │ ├── .gitkeep │ ├── TemplateController.js │ └── BrokerLogController.js ├── views │ ├── activation-email.hbs │ └── reset-password-email.hbs └── migrations │ ├── 029_add_ldapuser_column_in_user.js │ ├── 020_add_token_column_in_pendinguser.js │ ├── 031_add_ldappassword_column_in_user.js │ ├── 034_add_ldapusername_column_in_user.js │ ├── 021_add_status_machine.js │ └── 032_add_pool_size_per_image.js ├── assets ├── app │ ├── helpers │ │ ├── .gitkeep │ │ ├── reverse.js │ │ ├── is-equal.js │ │ ├── format-duration.js │ │ └── format-size.js │ ├── components │ │ ├── .gitkeep │ │ ├── draggable-item │ │ │ └── template.hbs │ │ ├── draggable-zone │ │ │ ├── template.hbs │ │ │ └── styles.scss │ │ ├── nano-tooltip │ │ │ └── template.hbs │ │ ├── text-component │ │ │ ├── styles.scss │ │ │ └── template.hbs │ │ ├── dim-background │ │ │ ├── template.hbs │ │ │ └── styles.scss │ │ ├── floating-sidebar-component │ │ │ ├── template.hbs │ │ │ ├── styles.scss │ │ │ └── component.js │ │ ├── icon-component │ │ │ ├── styles.scss │ │ │ └── template.hbs │ │ ├── text-editor │ │ │ └── template.hbs │ │ ├── popup-component │ │ │ ├── template.hbs │ │ │ └── styles.scss │ │ ├── light-bulb │ │ │ └── template.hbs │ │ ├── user-is-connected │ │ │ └── template.hbs │ │ ├── toggle-item-from-list │ │ │ └── template.hbs │ │ ├── container-block │ │ │ ├── template.hbs │ │ │ ├── styles.scss │ │ │ └── component.js │ │ ├── live-countdown │ │ │ └── template.hbs │ │ ├── remote-session │ │ │ └── template.hbs │ │ ├── nano-switch │ │ │ ├── styles.scss │ │ │ └── template.hbs │ │ ├── edit-text │ │ │ ├── styles.scss │ │ │ └── template.hbs │ │ ├── copy-clipboard │ │ │ └── template.hbs │ │ ├── upload-wrapper │ │ │ ├── styles.scss │ │ │ └── template.hbs │ │ ├── remove-user │ │ │ └── template.hbs │ │ ├── application-publisher │ │ │ └── styles.scss │ │ ├── loading-component │ │ │ └── template.hbs │ │ ├── window-component │ │ │ ├── styles.scss │ │ │ └── template.hbs │ │ ├── nano-input │ │ │ └── template.hbs │ │ ├── file-item │ │ │ ├── template.hbs │ │ │ └── component.js │ │ ├── vdi-progress-item │ │ │ └── template.hbs │ │ ├── card-component │ │ │ ├── template.hbs │ │ │ └── component.js │ │ └── input-confirm │ │ │ ├── template.hbs │ │ │ └── styles.scss │ ├── vdi │ │ ├── image │ │ │ └── template.hbs │ │ ├── template.hbs │ │ └── windows │ │ │ └── template.hbs │ ├── styles │ │ ├── modules │ │ │ ├── _color.scss │ │ │ ├── _input.scss │ │ │ ├── _text.scss │ │ │ ├── _animation.scss │ │ │ └── _icons.scss │ │ ├── override │ │ │ ├── bootstrap.scss │ │ │ ├── tooltipster.scss │ │ │ ├── ember-paper.scss │ │ │ ├── ember-modal-dialog.scss │ │ │ └── ember-model-table.scss │ │ ├── animations │ │ │ ├── _spin.scss │ │ │ ├── _heartbeat.scss │ │ │ ├── _top_bottom.scss │ │ │ ├── _bottom_top.scss │ │ │ └── _bounce.scss │ │ ├── pages │ │ │ ├── dashboard │ │ │ │ └── styles.scss │ │ │ ├── vdi │ │ │ │ └── clipboard.scss │ │ │ └── login │ │ │ │ └── styles.scss │ │ └── app.scss │ ├── application │ │ └── template.hbs │ ├── reset-password │ │ ├── template.hbs │ │ ├── token │ │ │ ├── template.hbs │ │ │ └── route.js │ │ ├── index │ │ │ ├── template.hbs │ │ │ └── route.js │ │ ├── route.js │ │ └── controller.js │ ├── activate │ │ ├── activate │ │ │ └── template.hbs │ │ ├── template.hbs │ │ └── route.js │ ├── protected │ │ ├── brokerlog │ │ │ ├── template.hbs │ │ │ └── index │ │ │ │ └── template.hbs │ │ ├── files │ │ │ ├── template.hbs │ │ │ ├── index │ │ │ │ └── table │ │ │ │ │ └── file-list │ │ │ │ │ ├── size │ │ │ │ │ └── template.hbs │ │ │ │ │ ├── file-type │ │ │ │ │ └── template.hbs │ │ │ │ │ └── download-button │ │ │ │ │ └── template.hbs │ │ │ ├── nowindows │ │ │ │ ├── template.hbs │ │ │ │ └── route.js │ │ │ ├── notactivated │ │ │ │ ├── template.hbs │ │ │ │ └── route.js │ │ │ └── route.js │ │ ├── histories │ │ │ ├── template.hbs │ │ │ └── index │ │ │ │ └── table │ │ │ │ └── history-list │ │ │ │ ├── end-date │ │ │ │ └── template.hbs │ │ │ │ ├── app-name │ │ │ │ └── template.hbs │ │ │ │ ├── user-name │ │ │ │ └── template.hbs │ │ │ │ └── duration │ │ │ │ └── template.hbs │ │ ├── images │ │ │ ├── template.hbs │ │ │ ├── route.js │ │ │ ├── app │ │ │ │ └── route.js │ │ │ └── image │ │ │ │ └── route.js │ │ ├── index │ │ │ ├── template.hbs │ │ │ └── controller.js │ │ ├── machines │ │ │ ├── template.hbs │ │ │ ├── index │ │ │ │ └── table │ │ │ │ │ └── machine-list │ │ │ │ │ ├── boot │ │ │ │ │ └── template.hbs │ │ │ │ │ ├── name │ │ │ │ │ └── template.hbs │ │ │ │ │ ├── status │ │ │ │ │ └── template.hbs │ │ │ │ │ ├── image │ │ │ │ │ └── template.hbs │ │ │ │ │ ├── assigned-to │ │ │ │ │ └── template.hbs │ │ │ │ │ └── expiration │ │ │ │ │ └── template.hbs │ │ │ ├── controller.js │ │ │ ├── machine │ │ │ │ └── route.js │ │ │ ├── user │ │ │ │ └── controller.js │ │ │ ├── route.js │ │ │ └── new │ │ │ │ └── route.js │ │ ├── users │ │ │ ├── groups │ │ │ │ ├── template.hbs │ │ │ │ ├── index │ │ │ │ │ ├── table │ │ │ │ │ │ └── group-list │ │ │ │ │ │ │ └── group-edit │ │ │ │ │ │ │ └── template.hbs │ │ │ │ │ ├── route.js │ │ │ │ │ └── template.hbs │ │ │ │ ├── group │ │ │ │ │ ├── members │ │ │ │ │ │ └── template.hbs │ │ │ │ │ ├── template.hbs │ │ │ │ │ ├── route.js │ │ │ │ │ └── index │ │ │ │ │ │ └── route.js │ │ │ │ ├── route.js │ │ │ │ └── new │ │ │ │ │ └── route.js │ │ │ ├── teams │ │ │ │ ├── template.hbs │ │ │ │ ├── index │ │ │ │ │ └── table │ │ │ │ │ │ └── user-name │ │ │ │ │ │ └── template.hbs │ │ │ │ └── controller.js │ │ │ ├── index │ │ │ │ ├── table │ │ │ │ │ └── user-list │ │ │ │ │ │ ├── is-online │ │ │ │ │ │ └── template.hbs │ │ │ │ │ │ └── user-edit │ │ │ │ │ │ └── template.hbs │ │ │ │ └── template.hbs │ │ │ └── template.hbs │ │ ├── loading │ │ │ └── template.hbs │ │ └── configs │ │ │ ├── email-configuration │ │ │ ├── sign-up │ │ │ │ └── template.hbs │ │ │ ├── forget-password │ │ │ │ └── template.hbs │ │ │ ├── template.hbs │ │ │ ├── index │ │ │ │ ├── route.js │ │ │ │ └── controller.js │ │ │ └── controller.js │ │ │ ├── template.hbs │ │ │ ├── look-and-feel │ │ │ └── route.js │ │ │ ├── other-setting │ │ │ ├── controller.js │ │ │ └── template.hbs │ │ │ └── index │ │ │ └── route.js │ ├── app │ │ └── reset-password │ │ │ └── token │ │ │ ├── template.hbs │ │ │ └── route.js │ ├── error │ │ └── template.hbs │ ├── loading │ │ └── template.hbs │ ├── window │ │ ├── download │ │ │ └── template.hbs │ │ └── upload │ │ │ └── template.hbs │ ├── direct-link │ │ └── template.hbs │ ├── index.html │ ├── login │ │ └── template.hbs │ ├── resolver.js │ ├── member │ │ └── model.js │ ├── pending-member │ │ └── model.js │ ├── authorizers │ │ └── oauth2.js │ ├── machines │ │ └── user │ │ │ └── model.js │ ├── config │ │ └── model.js │ ├── pendinguser │ │ └── model.js │ ├── vm │ │ └── model.js │ ├── utils │ │ └── get-key-from-value.js │ ├── group │ │ └── model.js │ ├── template │ │ └── model.js │ ├── sign-up │ │ └── route.js │ └── initializers │ │ └── session.js ├── tests │ ├── unit │ │ ├── .gitkeep │ │ ├── helpers │ │ │ ├── format-size-test.js │ │ │ ├── is-equal-test.js │ │ │ └── reverse-test.js │ │ └── utils │ │ │ └── format-size-test.js │ ├── integration │ │ └── .gitkeep │ ├── .jshintrc │ ├── test-helper.js │ ├── helpers │ │ ├── destroy-app.js │ │ └── resolver.js │ └── index.html ├── .watchmanconfig ├── .dockerignore ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-96x96.png │ ├── mstile-70x70.png │ ├── apple-touch-icon.png │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── assets │ │ ├── images │ │ │ └── logo.png │ │ └── fonts │ │ │ ├── MaterialIcons-Regular.eot │ │ │ ├── MaterialIcons-Regular.ttf │ │ │ ├── MaterialIcons-Regular.woff │ │ │ └── MaterialIcons-Regular.woff2 │ ├── android-chrome-36x36.png │ ├── android-chrome-48x48.png │ ├── android-chrome-72x72.png │ ├── android-chrome-96x96.png │ ├── android-chrome-144x144.png │ ├── android-chrome-192x192.png │ ├── apple-touch-icon-57x57.png │ ├── apple-touch-icon-60x60.png │ ├── apple-touch-icon-72x72.png │ ├── apple-touch-icon-76x76.png │ ├── apple-touch-icon-114x114.png │ ├── apple-touch-icon-120x120.png │ ├── apple-touch-icon-144x144.png │ ├── apple-touch-icon-152x152.png │ ├── apple-touch-icon-180x180.png │ ├── apple-touch-icon-precomposed.png │ ├── browserconfig.xml │ ├── crossdomain.xml │ └── manifest.json ├── .bowerrc ├── testem.json ├── .gitignore ├── Dockerfile-dev ├── .ember-cli ├── Dockerfile ├── bower.json ├── .jshintrc └── testem.js ├── photon ├── Targets │ ├── Test │ │ └── CMakeLists.txt │ └── CMakeLists.txt ├── CMakeModules │ ├── FindLibWebRTC.cmake │ └── FindDepotTools.cmake ├── packages.config ├── defaults.cc └── defaults.h ├── qemu ├── .dockerignore ├── Dockerfile ├── README.md └── package.json ├── plaza ├── .gitignore ├── Dockerfile ├── README.md ├── main_posix.go ├── routes │ └── shells │ │ └── shells_linux.go └── utils │ └── utils_posix.go ├── .coveralls.yml ├── deployments ├── roles │ ├── nanocloud │ │ ├── files │ │ │ └── nanocloud │ │ │ │ └── config.env │ │ └── tasks │ │ │ └── main.yml │ └── common │ │ └── tasks │ │ └── main.yml ├── ansible_hosts ├── group_vars │ └── all ├── requirements.yml ├── ansible.cfg └── nanocloud.yml ├── .sailsrc ├── vdiexperience ├── icon48.png ├── icon128.png └── manifest.json ├── config ├── locales │ ├── de.json │ ├── en.json │ ├── es.json │ ├── fr.json │ └── _README.md ├── app.js └── jsonapi.js ├── guacd ├── guacamole-server │ └── src │ │ └── protocols │ │ └── rdp │ │ └── rdp_disp.c.diff └── FreeRDP │ ├── include │ └── freerdp │ │ └── settings.h.diff │ └── channels │ └── disp │ ├── ChannelOptions.cmake │ └── CMakeLists.txt ├── packer ├── floppy │ └── drivers │ │ ├── virtio-win │ │ ├── viostor.cat │ │ ├── viostor.pdb │ │ └── viostor.sys │ │ └── virtio-win-0.1-81 │ │ └── WIN7 │ │ └── AMD64 │ │ ├── NETKVM.CAT │ │ ├── NETKVM.PDB │ │ ├── NETKVM.SYS │ │ ├── VIOSTOR.CAT │ │ ├── VIOSTOR.PDB │ │ └── VIOSTOR.SYS ├── scripts │ ├── install-chrome.ps1 │ ├── execute-ngen.ps1 │ └── install-plaza.ps1 ├── README.md └── compress-qcow2.sh ├── guacamole-client ├── noauth-logged │ ├── src │ │ └── main │ │ │ ├── resources │ │ │ ├── translations │ │ │ │ └── en.json │ │ │ └── guac-manifest.json │ │ │ ├── assembly │ │ │ └── dist.xml │ │ │ └── java │ │ │ └── com │ │ │ └── nanocloud │ │ │ └── auth │ │ │ └── noauthlogged │ │ │ └── connection │ │ │ └── ActiveConnectionRecord.java │ └── LICENSE ├── guac_home │ ├── guacamole.properties │ └── guacamole.dev.properties └── Dockerfile ├── .editorconfig ├── .istanbul.yml ├── .dockerignore ├── .eslintignore ├── proxy └── Dockerfile ├── .jshintignore ├── nodemon.json ├── docs └── Dockerfile ├── config.env ├── Dockerfile-dev ├── .codeclimate.yml ├── storage ├── Dockerfile └── smb.conf ├── tests ├── test-all.sh └── eslintrc.json ├── Dockerfile ├── Makefile ├── eslintrc.json └── docker-compose-extra.yml /api/models/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/responses/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/services/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/controllers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/app/helpers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/tests/unit/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/app/components/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/app/vdi/image/template.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/tests/integration/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/app/styles/modules/_color.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/app/styles/modules/_input.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /photon/Targets/Test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qemu/.dockerignore: -------------------------------------------------------------------------------- 1 | image.qcow2 2 | -------------------------------------------------------------------------------- /plaza/.gitignore: -------------------------------------------------------------------------------- 1 | plaza.exe 2 | vendor 3 | -------------------------------------------------------------------------------- /.coveralls.yml: -------------------------------------------------------------------------------- 1 | service_name: 'travis-ci' 2 | -------------------------------------------------------------------------------- /assets/app/application/template.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /assets/app/reset-password/template.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /assets/app/activate/activate/template.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /assets/app/protected/brokerlog/template.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /assets/app/protected/files/template.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /assets/app/protected/histories/template.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /assets/app/protected/images/template.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /assets/app/protected/index/template.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /assets/app/protected/machines/template.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /deployments/roles/nanocloud/files/nanocloud/config.env: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/app/app/reset-password/token/template.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /assets/app/components/draggable-item/template.hbs: -------------------------------------------------------------------------------- 1 | {{yield}} 2 | -------------------------------------------------------------------------------- /assets/app/components/draggable-zone/template.hbs: -------------------------------------------------------------------------------- 1 | {{yield}} 2 | -------------------------------------------------------------------------------- /assets/app/components/nano-tooltip/template.hbs: -------------------------------------------------------------------------------- 1 | {{yield}} 2 | -------------------------------------------------------------------------------- /assets/app/components/text-component/styles.scss: -------------------------------------------------------------------------------- 1 | & { 2 | } 3 | -------------------------------------------------------------------------------- /assets/app/components/text-component/template.hbs: -------------------------------------------------------------------------------- 1 | {{yield}} 2 | -------------------------------------------------------------------------------- /assets/app/protected/users/groups/template.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /assets/app/protected/users/teams/template.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | -------------------------------------------------------------------------------- /.sailsrc: -------------------------------------------------------------------------------- 1 | { 2 | "generators": { 3 | "modules": {} 4 | } 5 | } -------------------------------------------------------------------------------- /assets/.watchmanconfig: -------------------------------------------------------------------------------- 1 | { 2 | "ignore_dirs": ["tmp", "dist"] 3 | } 4 | -------------------------------------------------------------------------------- /assets/app/components/dim-background/template.hbs: -------------------------------------------------------------------------------- 1 | {{ yield }} 2 | 3 | -------------------------------------------------------------------------------- /assets/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | bower_components 3 | tmp 4 | dist 5 | -------------------------------------------------------------------------------- /assets/app/components/floating-sidebar-component/template.hbs: -------------------------------------------------------------------------------- 1 | {{yield}} 2 | -------------------------------------------------------------------------------- /assets/app/error/template.hbs: -------------------------------------------------------------------------------- 1 |

Error

2 | {{model.message}} 3 | -------------------------------------------------------------------------------- /assets/public/robots.txt: -------------------------------------------------------------------------------- 1 | # http://www.robotstxt.org 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /assets/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bower_components", 3 | "analytics": false 4 | } 5 | -------------------------------------------------------------------------------- /assets/app/components/icon-component/styles.scss: -------------------------------------------------------------------------------- 1 | & { 2 | display: inline-block; 3 | } 4 | -------------------------------------------------------------------------------- /assets/app/components/text-editor/template.hbs: -------------------------------------------------------------------------------- 1 | {{textarea value=value class="editor"}} 2 | -------------------------------------------------------------------------------- /assets/app/styles/override/bootstrap.scss: -------------------------------------------------------------------------------- 1 | .btn-primary { 2 | @extend .reset-btn; 3 | } 4 | -------------------------------------------------------------------------------- /deployments/ansible_hosts: -------------------------------------------------------------------------------- 1 | [nanocloud] 2 | api ansible_host=127.0.0.1 ansible_user=user 3 | -------------------------------------------------------------------------------- /assets/app/components/popup-component/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{yield}} 3 | -------------------------------------------------------------------------------- /assets/app/protected/files/index/table/file-list/size/template.hbs: -------------------------------------------------------------------------------- 1 | {{format-size record.size}} 2 | -------------------------------------------------------------------------------- /assets/app/styles/modules/_text.scss: -------------------------------------------------------------------------------- 1 | h1, h2, h3, h4, h5, h6 { 2 | font-weight: 200; 3 | } 4 | -------------------------------------------------------------------------------- /deployments/group_vars/all: -------------------------------------------------------------------------------- 1 | repository: Nanocloud 2 | branch: master 3 | #pull_request: XXX 4 | -------------------------------------------------------------------------------- /deployments/requirements.yml: -------------------------------------------------------------------------------- 1 | - src: franklinkim.docker 2 | - src: franklinkim.docker-compose 3 | -------------------------------------------------------------------------------- /assets/app/components/light-bulb/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 | -------------------------------------------------------------------------------- /deployments/roles/common/tasks/main.yml: -------------------------------------------------------------------------------- 1 | - name: Update APT repositories 2 | apt: update_cache=yes 3 | -------------------------------------------------------------------------------- /vdiexperience/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/vdiexperience/icon48.png -------------------------------------------------------------------------------- /assets/app/protected/loading/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{loading-component}} 3 |
4 | -------------------------------------------------------------------------------- /assets/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/favicon.ico -------------------------------------------------------------------------------- /config/locales/de.json: -------------------------------------------------------------------------------- 1 | { 2 | "Welcome": "Willkommen", 3 | "A brand new app.": "Eine neue App." 4 | } 5 | -------------------------------------------------------------------------------- /config/locales/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "Welcome": "Welcome", 3 | "A brand new app.": "A brand new app." 4 | } 5 | -------------------------------------------------------------------------------- /vdiexperience/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/vdiexperience/icon128.png -------------------------------------------------------------------------------- /assets/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/favicon-16x16.png -------------------------------------------------------------------------------- /assets/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/favicon-32x32.png -------------------------------------------------------------------------------- /assets/public/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/favicon-96x96.png -------------------------------------------------------------------------------- /assets/public/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/mstile-70x70.png -------------------------------------------------------------------------------- /config/locales/es.json: -------------------------------------------------------------------------------- 1 | { 2 | "Welcome": "Bienvenido", 3 | "A brand new app.": "Una nueva aplicación." 4 | } 5 | -------------------------------------------------------------------------------- /assets/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/apple-touch-icon.png -------------------------------------------------------------------------------- /assets/public/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/mstile-144x144.png -------------------------------------------------------------------------------- /assets/public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/mstile-150x150.png -------------------------------------------------------------------------------- /assets/public/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/mstile-310x150.png -------------------------------------------------------------------------------- /assets/public/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/mstile-310x310.png -------------------------------------------------------------------------------- /config/locales/fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "Welcome": "Bienvenue", 3 | "A brand new app.": "Une toute nouvelle application." 4 | } 5 | -------------------------------------------------------------------------------- /deployments/ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | hostfile = ansible_hosts 3 | remote_user = user 4 | host_key_checking = False 5 | -------------------------------------------------------------------------------- /assets/app/loading/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{ loading-component }} 3 |
4 | -------------------------------------------------------------------------------- /assets/public/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/assets/images/logo.png -------------------------------------------------------------------------------- /assets/public/android-chrome-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/android-chrome-36x36.png -------------------------------------------------------------------------------- /assets/public/android-chrome-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/android-chrome-48x48.png -------------------------------------------------------------------------------- /assets/public/android-chrome-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/android-chrome-72x72.png -------------------------------------------------------------------------------- /assets/public/android-chrome-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/android-chrome-96x96.png -------------------------------------------------------------------------------- /assets/app/protected/files/index/table/file-list/file-type/template.hbs: -------------------------------------------------------------------------------- 1 | {{record.type}} 2 | -------------------------------------------------------------------------------- /assets/app/styles/override/tooltipster.scss: -------------------------------------------------------------------------------- 1 | .tooltipster-default { 2 | display: block; 3 | border: 0; 4 | color: #fff; 5 | } 6 | -------------------------------------------------------------------------------- /assets/public/android-chrome-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/android-chrome-144x144.png -------------------------------------------------------------------------------- /assets/public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /assets/public/apple-touch-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/apple-touch-icon-57x57.png -------------------------------------------------------------------------------- /assets/public/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /assets/public/apple-touch-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/apple-touch-icon-72x72.png -------------------------------------------------------------------------------- /assets/public/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /photon/Targets/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(Fetch) 2 | add_subdirectory(Build) 3 | add_subdirectory(Test) 4 | add_subdirectory(Install) -------------------------------------------------------------------------------- /assets/public/apple-touch-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/apple-touch-icon-114x114.png -------------------------------------------------------------------------------- /assets/public/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /assets/public/apple-touch-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/apple-touch-icon-144x144.png -------------------------------------------------------------------------------- /assets/public/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /assets/public/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /guacd/guacamole-server/src/protocols/rdp/rdp_disp.c.diff: -------------------------------------------------------------------------------- 1 | 53d52 2 | < #ifdef HAVE_RDPSETTINGS_SUPPORTDISPLAYCONTROL 3 | 55d53 4 | < #endif 5 | -------------------------------------------------------------------------------- /packer/floppy/drivers/virtio-win/viostor.cat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/packer/floppy/drivers/virtio-win/viostor.cat -------------------------------------------------------------------------------- /packer/floppy/drivers/virtio-win/viostor.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/packer/floppy/drivers/virtio-win/viostor.pdb -------------------------------------------------------------------------------- /packer/floppy/drivers/virtio-win/viostor.sys: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/packer/floppy/drivers/virtio-win/viostor.sys -------------------------------------------------------------------------------- /assets/app/components/user-is-connected/template.hbs: -------------------------------------------------------------------------------- 1 | {{light-bulb currentStatus=userIsConnectedStatus position="right" content=tooltipMessage}} 2 | -------------------------------------------------------------------------------- /assets/public/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /assets/app/components/toggle-item-from-list/template.hbs: -------------------------------------------------------------------------------- 1 | {{nano-switch checked=(filterArrayByProperty list item property) on-switch-change="switchChange"}} 2 | -------------------------------------------------------------------------------- /assets/app/protected/histories/index/table/history-list/end-date/template.hbs: -------------------------------------------------------------------------------- 1 | {{#if record.isActive}} 2 | - 3 | {{else}} 4 | {{record.end}} 5 | {{/if}} 6 | -------------------------------------------------------------------------------- /assets/public/assets/fonts/MaterialIcons-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/assets/fonts/MaterialIcons-Regular.eot -------------------------------------------------------------------------------- /assets/public/assets/fonts/MaterialIcons-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/assets/fonts/MaterialIcons-Regular.ttf -------------------------------------------------------------------------------- /assets/public/assets/fonts/MaterialIcons-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/assets/fonts/MaterialIcons-Regular.woff -------------------------------------------------------------------------------- /assets/public/assets/fonts/MaterialIcons-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/assets/public/assets/fonts/MaterialIcons-Regular.woff2 -------------------------------------------------------------------------------- /assets/app/protected/machines/index/table/machine-list/boot/template.hbs: -------------------------------------------------------------------------------- 1 | {{light-bulb class='in-bl va-bottom px-l-5' content=record.status currentStatus=record.status}} 2 | -------------------------------------------------------------------------------- /guacamole-client/noauth-logged/src/main/resources/translations/en.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "DATA_SOURCE_NOAUTH" : { 4 | "NAME" : "NoAuthLogged" 5 | } 6 | 7 | } 8 | -------------------------------------------------------------------------------- /assets/app/protected/users/groups/index/table/group-list/group-edit/template.hbs: -------------------------------------------------------------------------------- 1 | {{#link-to 'protected.users.groups.group' record.id}} 2 | {{record.name}} 3 | {{/link-to}} 4 | -------------------------------------------------------------------------------- /packer/floppy/drivers/virtio-win-0.1-81/WIN7/AMD64/NETKVM.CAT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/packer/floppy/drivers/virtio-win-0.1-81/WIN7/AMD64/NETKVM.CAT -------------------------------------------------------------------------------- /packer/floppy/drivers/virtio-win-0.1-81/WIN7/AMD64/NETKVM.PDB: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/packer/floppy/drivers/virtio-win-0.1-81/WIN7/AMD64/NETKVM.PDB -------------------------------------------------------------------------------- /packer/floppy/drivers/virtio-win-0.1-81/WIN7/AMD64/NETKVM.SYS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/packer/floppy/drivers/virtio-win-0.1-81/WIN7/AMD64/NETKVM.SYS -------------------------------------------------------------------------------- /packer/floppy/drivers/virtio-win-0.1-81/WIN7/AMD64/VIOSTOR.CAT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/packer/floppy/drivers/virtio-win-0.1-81/WIN7/AMD64/VIOSTOR.CAT -------------------------------------------------------------------------------- /packer/floppy/drivers/virtio-win-0.1-81/WIN7/AMD64/VIOSTOR.PDB: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/packer/floppy/drivers/virtio-win-0.1-81/WIN7/AMD64/VIOSTOR.PDB -------------------------------------------------------------------------------- /packer/floppy/drivers/virtio-win-0.1-81/WIN7/AMD64/VIOSTOR.SYS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanocloud/nanocloud/HEAD/packer/floppy/drivers/virtio-win-0.1-81/WIN7/AMD64/VIOSTOR.SYS -------------------------------------------------------------------------------- /assets/app/styles/override/ember-paper.scss: -------------------------------------------------------------------------------- 1 | .md-checkbox { 2 | margin-bottom: 10px; 3 | } 4 | 5 | .md-checkbox.md-checked .md-icon:after { 6 | left: 7px; 7 | top: 2px; 8 | } 9 | -------------------------------------------------------------------------------- /assets/app/protected/files/index/table/file-list/download-button/template.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{icon-component materialIcon='file_download'}} 3 | 4 | -------------------------------------------------------------------------------- /assets/app/protected/histories/index/table/history-list/app-name/template.hbs: -------------------------------------------------------------------------------- 1 | {{#link-to 'protected.images.app' record.connectionId class="truncate"}} 2 | {{record.application}} 3 | {{/link-to}} 4 | -------------------------------------------------------------------------------- /packer/scripts/install-chrome.ps1: -------------------------------------------------------------------------------- 1 | Invoke-WebRequest http://dl.google.com/chrome/install/375.126/chrome_installer.exe -OutFile C:\chrome.exe 2 | C:/chrome.exe /silent /install 3 | rm C:/chrome.exe 4 | -------------------------------------------------------------------------------- /assets/app/components/container-block/template.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 | {{yield}} 6 |
7 |
8 |
9 | -------------------------------------------------------------------------------- /assets/app/protected/histories/index/table/history-list/user-name/template.hbs: -------------------------------------------------------------------------------- 1 | {{#text-component position="right" content=record.user}} 2 | {{record.userFirstname}} {{record.userLastname}} 3 | {{/text-component}} 4 | -------------------------------------------------------------------------------- /assets/app/protected/histories/index/table/history-list/duration/template.hbs: -------------------------------------------------------------------------------- 1 | {{#if record.isActive}} 2 | Active 3 | {{else}} 4 | {{format-duration record.duration}} 5 | {{/if}} 6 | -------------------------------------------------------------------------------- /guacamole-client/guac_home/guacamole.properties: -------------------------------------------------------------------------------- 1 | guacd-hostname: guacd 2 | guacd-port: 4822 3 | 4 | noauthlogged-server-url: backend 5 | noauthlogged-server-port: 1337 6 | noauthlogged-server-endpoint: api/histories 7 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | -------------------------------------------------------------------------------- /.istanbul.yml: -------------------------------------------------------------------------------- 1 | instrumentation: 2 | excludes: [ 3 | "assets/**", 4 | "postgres/**", 5 | "guacamole-client/**", 6 | "proxy/**", 7 | "qemu/**", 8 | "vdiexperience/**", 9 | "photon/**" 10 | ] 11 | -------------------------------------------------------------------------------- /guacamole-client/guac_home/guacamole.dev.properties: -------------------------------------------------------------------------------- 1 | guacd-hostname: localhost 2 | guacd-port: 4822 3 | 4 | noauthlogged-server-url: localhost 5 | noauthlogged-server-port: 1337 6 | noauthlogged-server-endpoint: api/histories 7 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | .gitignore 3 | .codeclimate.yml 4 | .tmp 5 | assets 6 | node_modules 7 | Dockerfile 8 | Dockerfile-dev 9 | docker-compose.yml 10 | docker-compose-dev.yml 11 | LICENSE 12 | README.md 13 | qemu 14 | photon 15 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | assets/tmp/** 2 | assets/dist/** 3 | assets/vendor/** 4 | assets/node_modules/** 5 | assets/bower_components/** 6 | node_modules/** 7 | plaza/vendor 8 | tests/** 9 | vdiexperience/** 10 | photon/client/static/libs/** 11 | -------------------------------------------------------------------------------- /assets/app/components/live-countdown/template.hbs: -------------------------------------------------------------------------------- 1 | {{#if decrementLoopEnabled}} 2 | {{#if isTime}} 3 | {{timeFormat}} 4 | {{else}} 5 | {{currentCountdown}} 6 | {{/if}} 7 | {{else}} 8 | {{currentCountdown}} 9 | {{/if}} 10 | -------------------------------------------------------------------------------- /assets/app/components/remote-session/template.hbs: -------------------------------------------------------------------------------- 1 | {{yield (hash 2 | retryConnection=(action 'retryConnection')) 3 | }} 4 | 5 |
6 | -------------------------------------------------------------------------------- /assets/app/protected/users/index/table/user-list/is-online/template.hbs: -------------------------------------------------------------------------------- 1 | {{#if targetObject.loadState}} 2 | {{fa-icon "spinner" spin=true}} 3 | {{else}} 4 | {{ user-is-connected userId=record.id sessions=targetObject.sessions }} 5 | {{/if}} 6 | -------------------------------------------------------------------------------- /proxy/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx:1.9.14-alpine 2 | MAINTAINER Olivier Berthonneau 3 | 4 | COPY ./nginx.conf /etc/nginx/conf.d/default.conf 5 | COPY ./certificates /etc/nginx/ssl/ 6 | 7 | EXPOSE 80 8 | EXPOSE 443 9 | -------------------------------------------------------------------------------- /.jshintignore: -------------------------------------------------------------------------------- 1 | assets/tmp/** 2 | assets/dist/** 3 | assets/vendor/** 4 | assets/node_modules/** 5 | assets/bower_components/** 6 | node_modules/** 7 | plaza/vendor 8 | qemu/node_modules/** 9 | vdiexperience/** 10 | photon/client/static/libs/** 11 | -------------------------------------------------------------------------------- /assets/app/components/nano-switch/styles.scss: -------------------------------------------------------------------------------- 1 | .nano-switch { 2 | text-align: center; 3 | width: 90px; 4 | height: 25px; 5 | padding-top: 1px; 6 | background: #f3f3f3; 7 | 8 | &.disabled { 9 | border: 1px solid #fff; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "verbose": true, 3 | "ignore": [ 4 | "assets/*", 5 | "postgres/*", 6 | "guacamole-client/*", 7 | "proxy/*", 8 | "qemu/*", 9 | "vdiexperience/*", 10 | "photon/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /assets/app/protected/machines/index/table/machine-list/name/template.hbs: -------------------------------------------------------------------------------- 1 | {{#link-to 'protected.machines.machine' record.id}} 2 | {{#text-component class='in-bl' content=record.id position="right"}} 3 | {{record.name}} 4 | {{/text-component}} 5 | {{/link-to}} 6 | -------------------------------------------------------------------------------- /assets/app/protected/machines/index/table/machine-list/status/template.hbs: -------------------------------------------------------------------------------- 1 | {{#if record.displayCountdown}} 2 | Shutdown in 3 | {{live-countdown class="in-bl" value=record.countdownTimeleft isTime=true}} 4 | {{else}} 5 | {{record.formattedTimeleft}} 6 | {{/if}} 7 | -------------------------------------------------------------------------------- /assets/app/styles/modules/_animation.scss: -------------------------------------------------------------------------------- 1 | @import '../animations/_spin'; 2 | @import '../animations/_cubes'; 3 | @import '../animations/_bottom_top'; 4 | @import '../animations/_top_bottom'; 5 | @import '../animations/_bounce'; 6 | @import '../animations/_heartbeat'; 7 | -------------------------------------------------------------------------------- /docs/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:5.6-slim 2 | MAINTAINER Romain Soufflet 3 | 4 | RUN npm install -g bootprint bootprint-openapi 5 | WORKDIR /opt 6 | 7 | COPY nanocloud-api.yml /opt/swagger.yml 8 | CMD bootprint openapi swagger.yml /opt/output 9 | -------------------------------------------------------------------------------- /api/views/activation-email.hbs: -------------------------------------------------------------------------------- 1 | Hello {{firstName}} {{lastName}},
2 |
3 | Thank you for signing up!
4 |
5 | Please, before using Nanocloud, click the following link to verify your email address: 6 | Activate my account. 7 | -------------------------------------------------------------------------------- /assets/testem.json: -------------------------------------------------------------------------------- 1 | { 2 | "framework": "qunit", 3 | "test_page": "tests/index.html?hidepassed", 4 | "disable_watching": true, 5 | "launch_in_ci": [ 6 | "PhantomJS" 7 | ], 8 | "launch_in_dev": [ 9 | "PhantomJS", 10 | "Chrome" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /guacd/FreeRDP/include/freerdp/settings.h.diff: -------------------------------------------------------------------------------- 1 | 735a736 2 | > #define FreeRDP_SupportDisplayControl 5059 3 | 1275c1276,1277 4 | < UINT64 padding5184[5184 - 5059]; /* 5059 */ 5 | --- 6 | > ALIGN64 BOOL SupportDisplayControl; 7 | > UINT64 padding5184[5185 - 5060]; /* 5059 */ 8 | -------------------------------------------------------------------------------- /assets/app/protected/machines/index/table/machine-list/image/template.hbs: -------------------------------------------------------------------------------- 1 | {{#link-to 'protected.images.image' record.image.id}} 2 | {{#text-component class='in-bl' content=record.image.id position="right"}} 3 | {{record.image.name}} 4 | {{/text-component}} 5 | {{/link-to}} 6 | -------------------------------------------------------------------------------- /assets/app/styles/override/ember-modal-dialog.scss: -------------------------------------------------------------------------------- 1 | .ember-modal-dialog { 2 | padding: 0 !important; 3 | } 4 | 5 | @media (max-width: 991px) { 6 | .ember-modal-dialog { 7 | width: 95%; 8 | left: auto !important; 9 | margin-left: auto !important; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /config.env: -------------------------------------------------------------------------------- 1 | # Configuration variables set in the environment will override configuration in 2 | # config/env/development.js or config/env/producion.js. 3 | # 4 | # Keys for variables are identical but are capitalized and in snake case 5 | # 6 | # Example: 7 | # IAAS=AWS 8 | # SESSION_DURATION=600 9 | -------------------------------------------------------------------------------- /assets/app/components/edit-text/styles.scss: -------------------------------------------------------------------------------- 1 | .editText { 2 | .edit-mode-icon, 3 | .controls-wrapper { 4 | display: inline-block; 5 | vertical-align: middle; 6 | } 7 | 8 | .edit { 9 | font-size: 17px; 10 | 11 | i { 12 | overflow: hidden; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /assets/app/window/download/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#each uploadData.queue as |file|}} 3 | {{#unless file.isDir}} 4 | {{ file-item file=file download="downloadFile" }} 5 | {{/unless}} 6 | {{else}} 7 | No data available 8 | {{/each}} 9 |
10 | -------------------------------------------------------------------------------- /Dockerfile-dev: -------------------------------------------------------------------------------- 1 | FROM nanocloud/backend 2 | MAINTAINER Olivier Berthonneau 3 | 4 | RUN npm install nodemon node-inspector -g 5 | 6 | EXPOSE 5858 7 | EXPOSE 8081 8 | 9 | CMD npm install && (node-inspector --hidden assets/ --web-port=8081 &) && nodemon --debug app.js 10 | -------------------------------------------------------------------------------- /assets/app/components/nano-switch/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#if checked}} 3 | {{icon-component class='va-sub' size=12 materialIcon="done"}} 4 | {{else}} 5 | {{icon-component class='va-sub' size=12 materialIcon="add"}} 6 | {{/if}} 7 |
8 | -------------------------------------------------------------------------------- /assets/app/components/copy-clipboard/template.hbs: -------------------------------------------------------------------------------- 1 | {{#nano-tooltip class='in-bl' content="Click here to copy to clipboard" position="right"}} 2 | 3 | {{icon-component materialIcon="content_copy" size=17 class="icon_link clickable"}} 4 | 5 | {{/nano-tooltip}} 6 | -------------------------------------------------------------------------------- /assets/app/protected/machines/index/table/machine-list/assigned-to/template.hbs: -------------------------------------------------------------------------------- 1 | {{#if record.users}} 2 | {{#each record.users as |user|}} 3 | {{#link-to 'protected.users.user' user.id class="truncate"}} 4 | {{user.fullName}} 5 | {{/link-to}} 6 | {{/each}} 7 | {{else}} 8 | - 9 | {{/if}} 10 | -------------------------------------------------------------------------------- /deployments/nanocloud.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - hosts: all 4 | remote_user: debian 5 | become: yes 6 | vars: 7 | repository: Nanocloud 8 | #pull_request: XX 9 | branch: master 10 | roles: 11 | - common 12 | - franklinkim.docker 13 | - franklinkim.docker-compose 14 | - nanocloud 15 | -------------------------------------------------------------------------------- /assets/app/components/icon-component/template.hbs: -------------------------------------------------------------------------------- 1 | {{#if materialIcon }} 2 | {{ materialIcon }} 3 | {{/if}} 4 | 5 | {{#if fontAwesome }} 6 | {{ fa-icon fontAwesome spin=fontAwesomeSpin}} 7 | {{/if}} 8 | {{yield}} 9 | -------------------------------------------------------------------------------- /api/views/reset-password-email.hbs: -------------------------------------------------------------------------------- 1 | Hello {{firstName}} {{lastName}},
2 |
3 | You have sent a request because you forgot your password.
4 |
5 | Click here to reset your password.
6 |
7 | If you are not {{firstName}} {{lastName}} or if this is an error, please ignore this email. 8 | -------------------------------------------------------------------------------- /assets/.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 | # misc 12 | /.sass-cache 13 | /connect.lock 14 | /coverage/* 15 | /libpeerconnection.log 16 | npm-debug.log 17 | testem.log 18 | -------------------------------------------------------------------------------- /assets/Dockerfile-dev: -------------------------------------------------------------------------------- 1 | FROM nanocloud/frontend 2 | MAINTAINER Olivier Berthonneau 3 | 4 | CMD npm install && \ 5 | bower install --allow-root && \ 6 | ember build --environment=development && \ 7 | ember serve --insecure-proxy true --ssl true --ssl-key /opt/ssl/nginx.key --ssl-cert /opt/ssl/nginx.crt 8 | -------------------------------------------------------------------------------- /assets/app/protected/users/index/table/user-list/user-edit/template.hbs: -------------------------------------------------------------------------------- 1 | {{#nano-tooltip class='in-bl maxWidth' content="Click here to modify this user profile" position="right"}} 2 | {{#link-to "protected.users.user" record.id class="truncate"}} 3 | {{record.firstName}} 4 | {{record.lastName}} 5 | {{/link-to}} 6 | {{/nano-tooltip}} 7 | -------------------------------------------------------------------------------- /packer/scripts/execute-ngen.ps1: -------------------------------------------------------------------------------- 1 | C:\Windows\microsoft.net\framework\v4.0.30319\ngen.exe update /force /queue 2 | C:\Windows\microsoft.net\framework64\v4.0.30319\ngen.exe update /force /queue 3 | C:\Windows\microsoft.net\framework\v4.0.30319\ngen.exe executequeueditems 4 | C:\Windows\microsoft.net\framework64\v4.0.30319\ngen.exe executequeueditems 5 | -------------------------------------------------------------------------------- /assets/app/styles/animations/_spin.scss: -------------------------------------------------------------------------------- 1 | @keyframes spin { 2 | 0% { 3 | transform: rotate(0deg); 4 | } 5 | 100% { 6 | transform: rotate(360deg); 7 | } 8 | } 9 | 10 | .spin { 11 | animation-name: spin; 12 | animation-duration: 1s; 13 | animation-iteration-count: infinite; 14 | animation-timing-function: linear; 15 | } 16 | -------------------------------------------------------------------------------- /.codeclimate.yml: -------------------------------------------------------------------------------- 1 | engines: 2 | eslint: 3 | enabled: true 4 | checks: 5 | comma-dangle: 6 | enabled: false 7 | enabled: true 8 | config: 9 | languages: 10 | - javascript 11 | ratings: 12 | paths: 13 | - "**.js" 14 | exclude_paths: 15 | - tests/** 16 | - assets/tests/** 17 | - assets/vendor/** 18 | -------------------------------------------------------------------------------- /assets/.ember-cli: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | Ember CLI sends analytics information by default. The data is completely 4 | anonymous, but there are times when you might want to disable this behavior. 5 | 6 | Setting `disableAnalytics` to true will prevent any data from being sent. 7 | */ 8 | "disableAnalytics": false, 9 | "usePods": true 10 | } 11 | -------------------------------------------------------------------------------- /assets/app/components/upload-wrapper/styles.scss: -------------------------------------------------------------------------------- 1 | & { 2 | height: 100%; 3 | 4 | .drag-n-drop-area { 5 | @extend .fullscreen; 6 | @extend .animated; 7 | z-index: 6; 8 | background-color: rgb(0, 144, 255); 9 | opacity:0.8; 10 | pointer-events: none; 11 | 12 | &.state-hide { 13 | opacity: 0; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /storage/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:8.3 2 | MAINTAINER Romain Soufflet 3 | 4 | RUN apt-get update && \ 5 | apt-get -y install samba 6 | 7 | COPY smb.conf /etc/samba/smb.conf 8 | 9 | EXPOSE 445 10 | EXPOSE 445/udp 11 | EXPOSE 9090 12 | 13 | RUN mkdir /opt/Users 14 | 15 | CMD ["sh", "-c", "smbd -D; nmbd -D; /opt/plaza/plaza"] 16 | -------------------------------------------------------------------------------- /assets/app/components/dim-background/styles.scss: -------------------------------------------------------------------------------- 1 | & { 2 | position: fixed; 3 | width: 100%; 4 | left: 0; 5 | height: 100%; 6 | background-color: #000; 7 | top: 0; 8 | z-index: 1; 9 | 10 | &.state-show { 11 | visibility: visible; 12 | opacity: 1; 13 | } 14 | 15 | &.state-hide { 16 | opacity: 0; 17 | visibility: hidden; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /plaza/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.6 2 | MAINTAINER \ 3 | Olivier Berthonneau 4 | 5 | COPY ./install.sh /go/src/github.com/Nanocloud/nanocloud/plaza/install.sh 6 | WORKDIR /go/src/github.com/Nanocloud/nanocloud/plaza 7 | 8 | RUN ./install.sh 9 | COPY ./ /go/src/github.com/Nanocloud/nanocloud/plaza 10 | 11 | CMD ["sh", "-c", "./build.sh"] 12 | -------------------------------------------------------------------------------- /assets/app/styles/animations/_heartbeat.scss: -------------------------------------------------------------------------------- 1 | @keyframes heartbeat { 2 | 0% { 3 | opacity: 0; 4 | } 5 | 80% { 6 | opacity: 1; 7 | } 8 | 100% { 9 | opacity: 0; 10 | } 11 | } 12 | 13 | .heartbeat { 14 | @extend .animated; 15 | animation-name: heartbeat; 16 | animation-duration: 2s; 17 | animation-iteration-count: infinite; 18 | margin: 0px 5px 0px 5px; 19 | } 20 | 21 | -------------------------------------------------------------------------------- /tests/test-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | EXIT_STATUS=0 4 | 5 | function check_command { 6 | "$@" 7 | local STATUS=$? 8 | if [ $STATUS -ne 0 ]; then 9 | echo "error with $1 ($STATUS)" >&2 10 | EXIT_STATUS=$STATUS 11 | fi 12 | } 13 | 14 | check_command make test-licenses 15 | check_command make test-linter 16 | check_command make test-coverage 17 | 18 | exit $EXIT_STATUS 19 | -------------------------------------------------------------------------------- /assets/app/components/remove-user/template.hbs: -------------------------------------------------------------------------------- 1 | {{#if removeConfirmation}} 2 |

Are you sure?

3 | 4 | 5 | {{else}} 6 | 7 | {{/if}} 8 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:6.3.0-slim 2 | MAINTAINER Olivier Berthonneau 3 | 4 | RUN npm install -g pm2 5 | 6 | RUN mkdir -p /opt/back 7 | WORKDIR /opt/back 8 | 9 | COPY package.json /tmp/package.json 10 | RUN cd /tmp && npm install 11 | RUN cp -a /tmp/node_modules /opt/back 12 | 13 | COPY ./ /opt/back 14 | 15 | EXPOSE 1337 16 | 17 | CMD pm2 start app.js -- --prod && pm2 logs 18 | -------------------------------------------------------------------------------- /assets/app/styles/animations/_top_bottom.scss: -------------------------------------------------------------------------------- 1 | @keyframes top-bottom { 2 | 0% { 3 | top: 0%; 4 | } 5 | 50.001% { 6 | top: 100%; 7 | } 8 | 50.002% { 9 | top: -100%; 10 | } 11 | 100% { 12 | top: 0%; 13 | } 14 | } 15 | 16 | .top-bottom { 17 | color: $blue-default; 18 | animation-name: top-bottom; 19 | animation-duration: 1.3s; 20 | animation-iteration-count: infinite; 21 | } 22 | -------------------------------------------------------------------------------- /assets/app/styles/animations/_bottom_top.scss: -------------------------------------------------------------------------------- 1 | @keyframes bottom-top { 2 | 0% { 3 | top: 0%; 4 | } 5 | 50.001% { 6 | top: -100%; 7 | } 8 | 50.002% { 9 | top: 100%; 10 | } 11 | 100% { 12 | top: 0%; 13 | } 14 | } 15 | 16 | .bottom-top { 17 | color: $blue-default; 18 | animation-name: bottom-top; 19 | animation-duration: 1.3s; 20 | animation-iteration-count: infinite; 21 | } 22 | 23 | -------------------------------------------------------------------------------- /guacamole-client/noauth-logged/src/main/resources/guac-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "guacamoleVersion" : "0.9.9", 4 | 5 | "name" : "Disabled Authentication with log", 6 | "namespace" : "guac-noauthlogged", 7 | 8 | "authProviders" : [ 9 | "com.nanocloud.auth.noauthlogged.NoAuthLoggedProvider" 10 | ], 11 | 12 | "translations" : [ 13 | "translations/en.json" 14 | ] 15 | 16 | } 17 | -------------------------------------------------------------------------------- /assets/app/components/application-publisher/styles.scss: -------------------------------------------------------------------------------- 1 | & { 2 | height: 100%; 3 | padding-bottom: 50px; 4 | 5 | .wrapper { 6 | height: inherit; 7 | } 8 | 9 | .item { 10 | margin-bottom: 5px; 11 | } 12 | 13 | .file-explorer-footer { 14 | position: absolute; 15 | bottom: 10px; 16 | } 17 | 18 | .file-list-wrapper { 19 | height: calc(100% - 130px); 20 | overflow: auto; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /photon/CMakeModules/FindLibWebRTC.cmake: -------------------------------------------------------------------------------- 1 | find_path(LIBWEBRTC_INCLUDE_DIR typedefs.h 2 | HINTS 3 | ENV LIBWEBRTCDIR 4 | PATH_SUFFIXES webrtc 5 | include/webrtc include) 6 | 7 | find_library(LIBWEBRTC_LIBRARY 8 | NAMES webrtc 9 | HINTS 10 | ENV LIBWEBRTCDIR 11 | PATH_SUFFIXES lib) 12 | 13 | mark_as_advanced(LIBWEBRTC_LIBRARY LIBWEBRTC_INCLUDE_DIR) -------------------------------------------------------------------------------- /packer/scripts/install-plaza.ps1: -------------------------------------------------------------------------------- 1 | REG.exe Add HKLM\Software\Microsoft\ServerManager /V DoNotOpenServerManagerAtLogon /t REG_DWORD /D 0x1 /F 2 | Set-ExecutionPolicy RemoteSigned -force 3 | Invoke-WebRequest https://s3-eu-west-1.amazonaws.com/nanocloud/plaza/1.0.1/windows/amd64/plaza.exe -OutFile C:\plaza.exe 4 | C:\plaza.exe install 5 | rm C:\plaza.exe 6 | New-NetFirewallRule -Protocol TCP -LocalPort 9090 -Direction Inbound -Action Allow -DisplayName PLAZA 7 | -------------------------------------------------------------------------------- /guacd/FreeRDP/channels/disp/ChannelOptions.cmake: -------------------------------------------------------------------------------- 1 | 2 | set(OPTION_DEFAULT OFF) 3 | set(OPTION_CLIENT_DEFAULT ON) 4 | set(OPTION_SERVER_DEFAULT OFF) 5 | 6 | define_channel_options(NAME "disp" TYPE "dynamic" 7 | DESCRIPTION "Display Update Virtual Channel Extension" 8 | SPECIFICATIONS "[MS-RDPEDISP]" 9 | DEFAULT ${OPTION_DEFAULT}) 10 | 11 | define_channel_client_options(${OPTION_CLIENT_DEFAULT}) 12 | define_channel_server_options(${OPTION_SERVER_DEFAULT}) 13 | -------------------------------------------------------------------------------- /assets/public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | #da532c 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /assets/app/components/loading-component/template.hbs: -------------------------------------------------------------------------------- 1 | {{#if square}} 2 |
3 |
4 |
5 |
6 |
7 |
8 | {{else}} 9 |
10 |
11 |
12 |
13 |
14 | {{/if}} 15 | -------------------------------------------------------------------------------- /assets/app/components/window-component/styles.scss: -------------------------------------------------------------------------------- 1 | & { 2 | width: 500px; 3 | min-height: 200px; 4 | position: absolute; 5 | z-index: 1; 6 | top: $vdi_topbar_height + 5; 7 | left: 0; 8 | background-color: #fff; 9 | box-shadow: 0px 0px 4px rgb(0, 15, 33); 10 | 11 | .head { 12 | display: flex; 13 | justify-content: space-between; 14 | } 15 | 16 | @media (max-width: 500px) { 17 | .window-component { 18 | width: 100%; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /photon/CMakeModules/FindDepotTools.cmake: -------------------------------------------------------------------------------- 1 | find_program(DEPOTTOOLS_GCLIENT_EXECUTABLE 2 | NAMES gclient gclient.bat 3 | PATHS ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/depot_tools) 4 | 5 | include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) 6 | find_package_handle_standard_args(DepotTools 7 | REQUIRED_VARS DEPOTTOOLS_GCLIENT_EXECUTABLE 8 | FAIL_MESSAGE "Could not find the gclient executable.") -------------------------------------------------------------------------------- /assets/app/activate/template.hbs: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /assets/app/components/nano-input/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{input class='form-control' focus-in="toggleFocus" focus-out="toggleFocus" type=type placeholder=placeholder value=value min=min max=max focusIn=(action "focusIn") focusOut=(action "focusOut") }} 3 | 4 | {{#if showMessage}} 5 |
6 | {{v-get model valuePath 'message'}} 7 |
8 | {{/if}} 9 |
10 | -------------------------------------------------------------------------------- /qemu/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:8.5 2 | MAINTAINER Romain Soufflet 3 | 4 | RUN apt-get update -y && \ 5 | apt-get install -y curl 6 | RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - 7 | RUN apt-get install -y git nodejs qemu-system-x86 8 | 9 | WORKDIR /opt 10 | 11 | COPY package.json /tmp/package.json 12 | RUN cd /tmp && npm install 13 | RUN cp -a /tmp/node_modules /opt/ 14 | 15 | COPY ./ /opt/ 16 | 17 | EXPOSE 3000 18 | 19 | CMD ["node", "index.js"] 20 | -------------------------------------------------------------------------------- /assets/app/components/file-item/template.hbs: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /assets/app/components/upload-wrapper/template.hbs: -------------------------------------------------------------------------------- 1 | {{yield (hash 2 | state=state 3 | stopUpload=(action 'cancelUpload') 4 | progress=progress 5 | uploading=uploading 6 | queue=queue 7 | flushHistory=(action 'flushHistory')) 8 | }} 9 |
11 |
12 | {{#text-component size=40 color='white'}} 13 | Drop your file 14 | {{/text-component}} 15 |
16 |
17 | -------------------------------------------------------------------------------- /assets/app/direct-link/template.hbs: -------------------------------------------------------------------------------- 1 | 5 | {{#single-tab 6 | disconnectBtn=true 7 | showState=true 8 | homeBtn=false 9 | isVisible=showSingleTab 10 | connectionName=app 11 | onClose="disconnectGuacamole" 12 | as |singleTabContext| 13 | }} 14 | {{remote-session autoload=true connectionName=app onError=singleTabContext.disconnectVDI}} 15 | {{/single-tab}} 16 | -------------------------------------------------------------------------------- /assets/app/components/floating-sidebar-component/styles.scss: -------------------------------------------------------------------------------- 1 | & { 2 | position: fixed; 3 | height: 100%; 4 | top: 0; 5 | right: 0; 6 | z-index: 1; 7 | background-color: #fff; 8 | } 9 | 10 | @media (max-width: 576px) { 11 | & { 12 | width: 100%; 13 | } 14 | } 15 | 16 | @media (max-width: 720px) and (min-width: 576px) { 17 | & { 18 | width: 70%; 19 | } 20 | } 21 | 22 | @media (min-width: 720px) { 23 | & { 24 | width: 40%; 25 | min-width: 400px; 26 | max-width: 500px; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /assets/app/components/vdi-progress-item/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{ file.name }} 3 | 4 | {{#if completed}} 5 | Completed 6 | {{else}} 7 | {{ vdi-progress-formater progress }} 8 | {{#if uploading }} 9 | {{ fa-icon "spinner" spin=true}} 10 | {{/if}} 11 | 12 | {{#if waitForCancel}} 13 | {{ fa-icon "spinner" spin=true}} 14 | {{else}} 15 | Cancel 16 | {{/if}} 17 | 18 | {{/if}} 19 |
20 | -------------------------------------------------------------------------------- /assets/app/components/window-component/template.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | {{#if materialIcon}} 5 | {{ materialIcon }} 6 | {{/if}} 7 | {{title}} 8 |
9 |
10 | {{ icon-component 11 | materialIcon="close" 12 | clickable=true 13 | hover-enabled=true 14 | click=close 15 | }} 16 |
17 |
18 | {{yield}} 19 |
20 | -------------------------------------------------------------------------------- /assets/app/protected/machines/index/table/machine-list/expiration/template.hbs: -------------------------------------------------------------------------------- 1 | {{#if record.isInUse}} 2 | Currently in use 3 | {{else if record.endDate}} 4 | {{#if record.expiration}} 5 | {{live-countdown class='color-primary' value=record.expiration isTime=true}} 6 | {{else}} 7 | {{#if record.neverTerminateMachine}} 8 | This machine will be stopped soon. 9 | {{else}} 10 | This machine will be terminated soon. 11 | {{/if}} 12 | {{/if}} 13 | {{else}} 14 | - 15 | {{/if}} 16 | -------------------------------------------------------------------------------- /assets/app/vdi/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#upload-wrapper onDrop=(action 'toggleWindow' 'upload') dragAndDropActive=dragAndDropActive as |uploadData|}} 3 | {{partial 'vdi/topbar'}} 4 | {{#remote-session class='canva-fullscreen fixed' machineId=machine_id isPhoton=isPhoton connectionName=connection_name as |remoteSessionData|}} 5 | {{partial 'vdi/load'}} 6 | {{/remote-session}} 7 | {{dim-background show=dimBackground action="closeAll"}} 8 | {{partial 'vdi/windows'}} 9 | {{/upload-wrapper}} 10 |
11 | -------------------------------------------------------------------------------- /vdiexperience/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 2, 3 | 4 | "name": "Nanocloud VDI Experience", 5 | "description": "This extension offers you a better experience with Nanocloud's VDI", 6 | "version": "1.0", 7 | 8 | "background": { 9 | "scripts": ["background.js"], 10 | "persistent": false 11 | }, 12 | 13 | "icons": { 14 | "48": "icon48.png", 15 | "128": "icon128.png" 16 | }, 17 | 18 | "permissions": [ 19 | "webNavigation", 20 | "clipboardWrite", 21 | "clipboardRead", 22 | "*://*/#/vdi*" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /photon/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /assets/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:6.1.0-slim 2 | MAINTAINER Olivier Berthonneau 3 | 4 | RUN apt-get update && \ 5 | apt-get install -y git && \ 6 | npm install -g bower ember-cli 7 | 8 | WORKDIR /opt 9 | 10 | COPY package.json /tmp/package.json 11 | RUN cd /tmp && npm install 12 | RUN cp -a /tmp/node_modules /opt/ 13 | 14 | COPY bower.json /tmp/bower.json 15 | RUN cd /tmp && bower install --allow-root 16 | RUN cp -a /tmp/bower_components /opt/ 17 | 18 | COPY ./ /opt/ 19 | 20 | CMD ./node_modules/ember-cli/bin/ember build --environment=production 21 | -------------------------------------------------------------------------------- /assets/app/styles/pages/dashboard/styles.scss: -------------------------------------------------------------------------------- 1 | 2 | .dashboard { 3 | 4 | width: 100%; 5 | 6 | .card-wrapper { 7 | 8 | width: 100%; 9 | display: flex; 10 | flex-wrap: wrap; 11 | justify-content: space-around; 12 | 13 | .card-component { 14 | width: 30%; 15 | text-align: center; 16 | 17 | .card { 18 | 19 | border: 0; 20 | 21 | footer { 22 | margin-top: 15px; 23 | } 24 | } 25 | 26 | h1 { 27 | font-size: 50px; 28 | display: inline; 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /storage/smb.conf: -------------------------------------------------------------------------------- 1 | [global] 2 | workgroup = NANOCLOUD 3 | server string = Users Storage 4 | printcap name = /etc/printcap 5 | load printers = no 6 | log file = /var/log/samba/log.%m 7 | max log size = 50 8 | security = user 9 | socket options = TCP_NODELAY 10 | dns proxy = no 11 | 12 | [homes] 13 | comment = Home Directories 14 | browseable = no 15 | writeable = yes 16 | valid users = %S 17 | 18 | [Shared] 19 | comment = Shared files 20 | path = /opt/shared 21 | valid users = @users 22 | force group = users 23 | create mask = 0660 24 | directory mask = 0771 25 | writable = yes 26 | -------------------------------------------------------------------------------- /assets/app/components/draggable-zone/styles.scss: -------------------------------------------------------------------------------- 1 | & { 2 | .dragging { 3 | .draggableDropzone { 4 | border-left: 2px solid #f1faff; 5 | } 6 | } 7 | 8 | .draggableDropzone { 9 | &.deactivated .container { 10 | background-color: none; 11 | } 12 | 13 | &.activated { 14 | background-color: #f1faff; 15 | font-weight: bold; 16 | } 17 | 18 | .draggableItem { 19 | padding: 5px; 20 | &:active { 21 | opacity: 0.4; 22 | } 23 | 24 | &:hover { 25 | background-color: #f7f7f7; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /assets/app/components/popup-component/styles.scss: -------------------------------------------------------------------------------- 1 | & { 2 | position: absolute; 3 | width: 160px; 4 | top: -13px; 5 | z-index: 10; 6 | margin-right: -180px; 7 | right: 0; 8 | 9 | &.left { 10 | margin-left: -180px; 11 | margin-right: auto; 12 | left: 0; 13 | right: auto; 14 | 15 | .arrow { 16 | left: auto; 17 | right: -7px; 18 | } 19 | } 20 | 21 | .arrow { 22 | width: 15px; 23 | height: 15px; 24 | position: absolute; 25 | left: -7px; 26 | top: 12px; 27 | z-index: 11; 28 | transform: rotate(45deg); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /qemu/README.md: -------------------------------------------------------------------------------- 1 | # QEMU Manager 2 | 3 | Manages local machines using Qemu. 4 | 5 | # Installation 6 | 7 | A qcow2 image is expected to be located in `./qemu/image.qcow2`. 8 | This image must be a Windows Server 2012 with plaza installed an RDP 9 | enabled. 10 | 11 | You can download a qcow2 image with this link: https://s3-eu-west-1.amazonaws.com/nanocloud/windows-server-2012-r2.qcow2 12 | 13 | You can also create a Windows Server 2012 qcow2 image with our packer script [packer/README.md](../packer/README.md) 14 | 15 | ``` 16 | docker-compose -f docker-compose-extra.yml up qemu-manager 17 | ``` 18 | -------------------------------------------------------------------------------- /assets/app/protected/files/nowindows/template.hbs: -------------------------------------------------------------------------------- 1 |
2 |

Files

3 |
4 | 9 | {{#link-to "protected.machines"}} 10 | 13 | {{/link-to}} 14 |
15 |
16 | -------------------------------------------------------------------------------- /assets/app/protected/users/teams/index/table/user-name/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{record.firstName}} {{record.lastName}} 3 | {{#if (is-equal targetObject.session.user.id record.id)}} 4 | verified_user 5 | (Team Admin) 6 | {{else}} 7 | {{#if record.isActivated}} 8 | {{#if record.isTeamAdmin}} 9 | verified_user 10 | (Team Admin) 11 | {{/if}} 12 | {{/if}} 13 | {{/if}} 14 |
15 | -------------------------------------------------------------------------------- /assets/app/protected/configs/email-configuration/sign-up/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{text-editor value=template on-change="textChanged"}} 3 |
4 | 5 |
6 |

7 | Available placeholders: 8 |

    9 |
  • firstName: user's first name
  • 10 |
  • lastName: user's last name
  • 11 |
  • activationLink: will resolve to the link to use to activate the account
  • 12 |
13 |

14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /assets/app/components/container-block/styles.scss: -------------------------------------------------------------------------------- 1 | & { 2 | position: relative; 3 | 4 | .content { 5 | padding: 20px 20px 10px 20px; 6 | border: 1px solid whitesmoke; 7 | border-radius: 3px; 8 | background-color: #fff; 9 | z-index: 1; 10 | position: relative; 11 | font-family: sans-serif; 12 | } 13 | 14 | .shadow { 15 | width: calc(100% - 50px); 16 | height: 35px; 17 | position: absolute; 18 | border-radius: 25px; 19 | bottom: 5px; 20 | left: 0; 21 | right: 0; 22 | margin: auto; 23 | z-index: 0; 24 | box-shadow: 0px 0px 15px #d8d8d8; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /assets/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nanocloud", 3 | "dependencies": { 4 | "ember": "2.4.4", 5 | "ember-cli-shims": "0.1.1", 6 | "ember-cli-test-loader": "0.2.2", 7 | "ember-qunit-notifications": "0.1.0", 8 | "bootstrap": "v4.0.0-alpha.2", 9 | "toastr": "^2.1.2", 10 | "font-awesome": "~4.5.0", 11 | "tooltipster": "^3.3.0", 12 | "humanize-duration": "^3.9.0", 13 | "ckeditor": "^4.5.11", 14 | "sweetalert": "~1.1.0", 15 | "spectrum": "^1.8.0", 16 | "masonry": "^4.1.1", 17 | "imagesloaded": "^4.1.1", 18 | "hammer.js": "^2.0.8", 19 | "matchMedia": "0.2.0" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /assets/app/protected/configs/email-configuration/forget-password/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{text-editor value=template on-change="textChanged"}} 3 |
4 | 5 |
6 |

7 | Available placeholders: 8 |

    9 |
  • firstName: user's first name
  • 10 |
  • lastName: user's last name
  • 11 |
  • resetLink: will resolve to the link to use to reset the account's password
  • 12 |
13 |

14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /assets/app/protected/configs/email-configuration/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | 13 | {{outlet}} 14 |
15 | -------------------------------------------------------------------------------- /assets/public/crossdomain.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /assets/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "predef": [ 3 | "document", 4 | "window", 5 | "-Promise" 6 | ], 7 | "browser": true, 8 | "boss": true, 9 | "curly": true, 10 | "debug": false, 11 | "devel": true, 12 | "eqeqeq": true, 13 | "evil": true, 14 | "forin": false, 15 | "immed": false, 16 | "laxbreak": false, 17 | "newcap": true, 18 | "noarg": true, 19 | "noempty": false, 20 | "nonew": false, 21 | "nomen": false, 22 | "onevar": false, 23 | "plusplus": false, 24 | "regexp": false, 25 | "undef": true, 26 | "sub": true, 27 | "strict": false, 28 | "white": false, 29 | "eqnull": true, 30 | "esnext": true, 31 | "unused": true 32 | } 33 | -------------------------------------------------------------------------------- /tests/eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "es6": true, 4 | "mocha": true, 5 | "node": true 6 | }, 7 | "extends": "eslint:recommended", 8 | "parserOptions": { 9 | "sourceType": "module" 10 | }, 11 | "rules": { 12 | "indent": [ 13 | "error", 14 | 2 15 | ], 16 | "no-trailing-spaces": [ 17 | "error" 18 | ], 19 | "linebreak-style": [ 20 | "error", 21 | "unix" 22 | ], 23 | "quotes": [ 24 | "error", 25 | "single" 26 | ], 27 | "semi": [ 28 | "error", 29 | "always" 30 | ], 31 | "quote-props": [ 32 | "error", 33 | "as-needed" 34 | ] 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /assets/app/reset-password/token/template.hbs: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /assets/app/components/card-component/template.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

5 | {{#if (is-equal wait 0)}} 6 | 7 | {{ content }} 8 | 9 | {{else}} 10 | {{#if (is-equal wait 1)}} 11 | {{ fa-icon "spinner" spin=true}} 12 | {{else}} 13 | {{ fa-icon "close"}} 14 | {{/if}} 15 | {{/if}} 16 |

17 |
{{ title }}
18 |

{{ yield }}

19 |
20 |
21 |
22 | -------------------------------------------------------------------------------- /assets/app/styles/pages/vdi/clipboard.scss: -------------------------------------------------------------------------------- 1 | .clipboard.content-wrapper { 2 | overflow: hidden; 3 | height: auto; 4 | width: 100%; 5 | margin: 0; 6 | 7 | .icon-wrapper { 8 | text-align: center; 9 | } 10 | 11 | .input-wrapper { 12 | margin-top: 5px; 13 | 14 | i { 15 | font-size: 14px; 16 | vertical-align: text-top; 17 | } 18 | 19 | .done-msg { 20 | opacity: 0; 21 | } 22 | } 23 | 24 | .textarea { 25 | flex-grow: 1; 26 | 27 | textarea { 28 | width: 100%; 29 | height: 50px; 30 | border-radius: 3px; 31 | border: 1px solid #C5C5C5; 32 | outline: 0; 33 | padding: 10px; 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /assets/app/protected/files/notactivated/template.hbs: -------------------------------------------------------------------------------- 1 |
2 |

Files

3 |
4 | 10 | {{#link-to "protected.images"}} 11 | 14 | {{/link-to}} 15 |
16 |
17 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | get-deps: 2 | npm install 3 | 4 | tests: 5 | ./tests/test-all.sh 6 | 7 | test-coverage: 8 | istanbul cover node_modules/mocha/bin/_mocha --report lcovonly tests/api/bootstrap.test.js tests/api/index.js ./tests/unit/**/*.js 9 | 10 | test-api: 11 | node_modules/mocha/bin/mocha tests/api/bootstrap.test.js tests/api/index.js 12 | 13 | test-units: 14 | node_modules/mocha/bin/mocha tests/api/bootstrap.test.js ./tests/unit/**/*.js 15 | 16 | test-linter: 17 | node_modules/jshint/bin/jshint . 18 | ./node_modules/eslint/bin/eslint.js -c eslintrc.json . 19 | ./node_modules/eslint/bin/eslint.js -c ./tests/eslintrc.json ./tests 20 | 21 | test-licenses: 22 | ./tests/test-licenses.sh 23 | 24 | .PHONY: tests 25 | -------------------------------------------------------------------------------- /eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true, 5 | "node": true 6 | }, 7 | "extends": "eslint:recommended", 8 | "parserOptions": { 9 | "sourceType": "module" 10 | }, 11 | "rules": { 12 | "indent": [ 13 | "error", 14 | 2 15 | ], 16 | "no-trailing-spaces": [ 17 | "error" 18 | ], 19 | "linebreak-style": [ 20 | "error", 21 | "unix" 22 | ], 23 | "quotes": [ 24 | "error", 25 | "single", 26 | { 27 | "allowTemplateLiterals": true 28 | } 29 | ], 30 | "semi": [ 31 | "error", 32 | "always" 33 | ], 34 | "quote-props": [ 35 | "error", 36 | "as-needed" 37 | ] 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /assets/app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Nanocloud 7 | 8 | 9 | 10 | {{content-for "head"}} 11 | 12 | 13 | 14 | 15 | {{content-for "head-footer"}} 16 | 17 | 18 | {{content-for "body"}} 19 | 20 | 21 | 22 | 23 | {{content-for "body-footer"}} 24 | 25 | 26 | -------------------------------------------------------------------------------- /assets/app/styles/app.scss: -------------------------------------------------------------------------------- 1 | @import 'variable'; 2 | @import 'ember-modal-dialog/ember-modal-structure'; 3 | @import 'ember-modal-dialog/ember-modal-appearance'; 4 | @import 'bower_components/bootstrap/scss/bootstrap'; 5 | @import 'pod-styles'; 6 | @import "ember-paper"; 7 | 8 | @import 'override/tooltipster'; 9 | @import 'override/bootstrap'; 10 | @import 'override/ember-modal-dialog'; 11 | @import 'override/ember-model-table'; 12 | @import 'override/ember-paper'; 13 | 14 | @import 'modules/icons'; 15 | @import 'modules/text'; 16 | @import 'modules/alias'; 17 | @import 'modules/color'; 18 | @import 'modules/animation'; 19 | 20 | @import 'layout'; 21 | @import 'pages/dashboard/styles'; 22 | @import 'pages/vdi/styles'; 23 | @import 'pages/login/styles'; 24 | -------------------------------------------------------------------------------- /qemu/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "qemuManager", 3 | "private": true, 4 | "version": "0.1.0", 5 | "description": "Manage Qemu", 6 | "keywords": [], 7 | "dependencies": { 8 | "bluebird": "^3.4.6", 9 | "body-parser": "^1.15.2", 10 | "express": "^4.14.0", 11 | "multer": "^1.2.0", 12 | "request": "^2.74.0", 13 | "request-promise": "^4.1.0", 14 | "uuid": "^2.0.2" 15 | }, 16 | "scripts": { 17 | "test": "make tests", 18 | "debug": "node debug app.js", 19 | "start": "node app.js" 20 | }, 21 | "main": "app.js", 22 | "repository": { 23 | "type": "git", 24 | "url": "https://github.com/Nanocloud/nanocloud" 25 | }, 26 | "author": "Romain Soufflet ", 27 | "license": "AGPL-3.0" 28 | } 29 | -------------------------------------------------------------------------------- /assets/app/window/upload/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#each uploadData.queue as |file|}} 3 |
4 |
5 | {{ file.name }} 6 | 7 | {{#if file.completed}} 8 | Completed 9 | {{else}} 10 | {{#if file.uploading }} 11 | {{ file.progress }}% 12 | {{ fa-icon "spinner" spin=true}} 13 | 14 | Cancel 15 | 16 | {{/if}} 17 | {{/if}} 18 |
19 |
20 | {{else}} 21 | No items 22 | {{/each}} 23 |
24 | 25 | -------------------------------------------------------------------------------- /plaza/README.md: -------------------------------------------------------------------------------- 1 | # Plaza 2 | 3 | Windows agent to provision and controle Nanocloud actions 4 | 5 | # Installation 6 | 7 | Run the following command to build Plaza: 8 | 9 | ``` 10 | ./install.sh 11 | ./build.sh 12 | ``` 13 | 14 | ## Installation via docker 15 | 16 | You can also build and compile it with docker with 17 | 18 | ``` 19 | ./build.sh docker 20 | ``` 21 | 22 | ## Configure your build 23 | 24 | By default, build script will generate a *plaza.exe* file for windows 25 | platforms. If you wish to build plaza for linux, run the following command 26 | 27 | ``` 28 | export GOOS=linux 29 | export GOARCH=amd64 30 | ./build.sh 31 | ``` 32 | 33 | You can also use docker to build *linux* version of plaza 34 | 35 | ``` 36 | export GOOS=linux 37 | export GOARCH=amd64 38 | ./build.sh docker 39 | ``` 40 | -------------------------------------------------------------------------------- /packer/README.md: -------------------------------------------------------------------------------- 1 | # Packer templates for Nanocloud 2 | 3 | Create a Windows Server 2012 qcow2 image able to use with Qemu driver. 4 | 5 | ## Quickstart 6 | 7 | Firstly, [install **packer**](http://www.packer.io/intro/getting-started/setup.html). 8 | 9 | Then run 10 | 11 | ``` 12 | packer build windows-2012-R2-standard-amd64.json 13 | ``` 14 | 15 | This will download an iso from Microsoft server and create a qcow2 image 16 | with Plaza, Google Chrome and all you need to use Nanocloud. 17 | 18 | When the build is finished you can compress your qcow2 image 19 | 20 | ``` 21 | ./compress-qcow2.sh output-windows-2012R2/windows-server-2012R2-amd64.qcow2 22 | ``` 23 | 24 | Finally rename and move your file in Qemu directory to be able to use it 25 | 26 | ``` 27 | mv output-windows-2012R2/windows-server-2012R2-amd64.qcow2 ../qemu/image.qcow2 28 | ``` 29 | -------------------------------------------------------------------------------- /docker-compose-extra.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | 3 | services: 4 | storage-team: 5 | build: ./storage 6 | image: nanocloud/storage 7 | environment: 8 | - PLAZA_PORT=9091 9 | ports: 10 | - 445/udp:445/udp 11 | - 445:445 12 | - 9091:9091 13 | networks: 14 | - nanocloud 15 | depends_on: 16 | - plaza 17 | volumes: 18 | - plaza:/opt/plaza 19 | restart: always 20 | 21 | plaza: 22 | extends: 23 | file: docker-compose.yml 24 | service: plaza 25 | 26 | qemu-manager: 27 | build: ./qemu 28 | image: nanocloud/qemu-manager 29 | volumes: 30 | - ./qemu/image.qcow2:/data/image.qcow2 31 | devices: 32 | - /dev/kvm 33 | network_mode: host 34 | container_name: "qemumanager" 35 | 36 | networks: 37 | nanocloud: 38 | driver: bridge 39 | 40 | volumes: 41 | plaza: 42 | driver: local 43 | -------------------------------------------------------------------------------- /assets/app/components/input-confirm/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{input 3 | autocapitalize=autocapitalize 4 | autocorrect=autocorrect 5 | autofocus=autofocus 6 | disabled=disabled 7 | form=form 8 | maxlength=maxlength 9 | placeholder=placeholder 10 | readonly=readonly 11 | required=required 12 | selectionDirection=selectionDirection 13 | spellcheck=spellcheck 14 | tabindex=tabindex 15 | title=title 16 | min=min 17 | max=max 18 | type=type 19 | value=tmpValue 20 | focusIn=(action "focusIn") 21 | focusOut=(action "focusOut") 22 | }} 23 | {{#if isModified}} 24 |
25 | 28 | 31 |
32 | {{/if}} 33 |
34 | -------------------------------------------------------------------------------- /assets/app/protected/users/groups/group/members/template.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |

Manage members

4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | {{#each users as |user|}} 13 | 14 | 19 | 22 | 23 | {{/each}} 24 | 25 |
Name
15 | {{#link-to 'protected.users.user' user}} 16 | {{user.fullName}} 17 | {{/link-to}} 18 | 20 | {{toggle-item-from-list list=group.members item=user property='id' addAction="addMember" removeAction="removeMember"}} 21 |
26 |
27 |
28 | 29 | {{outlet}} 30 | -------------------------------------------------------------------------------- /assets/app/protected/users/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#if session.user.isAdmin}} 3 |
4 | 17 | {{#if isLoading}} 18 | {{icon-component class='va-tt color-primary' size=19 materialIcon="autorenew" spin=true}} 19 | {{/if}} 20 |
21 | {{/if}} 22 | {{outlet}} 23 |
24 | -------------------------------------------------------------------------------- /assets/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Nanocloud", 3 | "icons": [ 4 | { 5 | "src": "\/android-chrome-36x36.png", 6 | "sizes": "36x36", 7 | "type": "image\/png", 8 | "density": 0.75 9 | }, 10 | { 11 | "src": "\/android-chrome-48x48.png", 12 | "sizes": "48x48", 13 | "type": "image\/png", 14 | "density": 1 15 | }, 16 | { 17 | "src": "\/android-chrome-72x72.png", 18 | "sizes": "72x72", 19 | "type": "image\/png", 20 | "density": 1.5 21 | }, 22 | { 23 | "src": "\/android-chrome-96x96.png", 24 | "sizes": "96x96", 25 | "type": "image\/png", 26 | "density": 2 27 | }, 28 | { 29 | "src": "\/android-chrome-144x144.png", 30 | "sizes": "144x144", 31 | "type": "image\/png", 32 | "density": 3 33 | }, 34 | { 35 | "src": "\/android-chrome-192x192.png", 36 | "sizes": "192x192", 37 | "type": "image\/png", 38 | "density": 4 39 | } 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /assets/app/styles/override/ember-model-table.scss: -------------------------------------------------------------------------------- 1 | .sortableTable { 2 | 3 | .btn { 4 | z-index: 0 !important; 5 | } 6 | 7 | .short { 8 | width: 40px; 9 | text-align: center; 10 | } 11 | 12 | .inner-table-wrapper { 13 | margin-top: 20px; 14 | } 15 | 16 | .table-bordered thead th { 17 | @extend .clickable; 18 | border: 1px solid $blue-lighter; 19 | } 20 | 21 | .table-header-no-filtering { 22 | display: none; 23 | } 24 | 25 | td { 26 | border: 1px solid $blue-lighter; 27 | vertical-align: middle; 28 | max-width: 200px; 29 | } 30 | 31 | tr { 32 | background-color: #fff !important; 33 | } 34 | 35 | .table-footer button { 36 | 37 | border: 1px solid #ECECEC; 38 | background-color: #fff; 39 | outline: 0; 40 | 41 | &:active { 42 | outline: 0; 43 | } 44 | } 45 | 46 | .pagination-number { 47 | display: none; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /guacd/FreeRDP/channels/disp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # FreeRDP: A Remote Desktop Protocol Implementation 2 | # FreeRDP cmake build script 3 | # 4 | # Copyright 2012 Marc-Andre Moreau 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | 18 | define_channel("disp") 19 | 20 | if(WITH_CLIENT_CHANNELS) 21 | add_channel_client(${MODULE_PREFIX} ${CHANNEL_NAME}) 22 | endif() 23 | -------------------------------------------------------------------------------- /assets/app/login/template.hbs: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /assets/app/reset-password/index/template.hbs: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /assets/app/styles/pages/login/styles.scss: -------------------------------------------------------------------------------- 1 | .login-container { 2 | width: 100%; 3 | height: 100%; 4 | background: $gray-lighter; 5 | display: flex; 6 | align-items: center; 7 | justify-content: center; 8 | } 9 | 10 | .login-form { 11 | background: $gray-lightest; 12 | box-shadow: 0px 0px 2px 0px rgba(0,0,0,0.12), 0px 2px 2px 0px rgba(0,0,0,0.24); 13 | width: 360px; 14 | 15 | form { 16 | margin-left: 50px; 17 | margin-right: 50px; 18 | margin-top: 50px; 19 | margin-bottom: 30px; 20 | } 21 | 22 | h3 { 23 | margin: 50px 0; 24 | } 25 | 26 | .version { 27 | font-size: 12px; 28 | color: #9B9B9B; 29 | margin: 6px; 30 | } 31 | } 32 | 33 | .login-logo { 34 | height: 160px; 35 | background-color: $brand-primary; 36 | background-image: url('/assets/images/logo.png'); 37 | background-repeat: no-repeat; 38 | background-position: center center; 39 | background-size: 65%; 40 | } 41 | -------------------------------------------------------------------------------- /assets/app/components/input-confirm/styles.scss: -------------------------------------------------------------------------------- 1 | & { 2 | 3 | form { 4 | display: flex; 5 | } 6 | button { 7 | display: flex; 8 | border: none; 9 | background: none; 10 | cursor: pointer; 11 | padding: 0; 12 | border: 0; 13 | } 14 | .controls-wrapper { 15 | margin-right: 7px; 16 | display: flex; 17 | } 18 | .done { 19 | &:hover, 20 | &:focus { 21 | transition-duration: .3s; 22 | } 23 | } 24 | .clear { 25 | &:hover, 26 | &:focus { 27 | transition-duration: .3s; 28 | } 29 | } 30 | .done { 31 | 32 | &:hover, 33 | &:target { 34 | transition-duration: .3s; 35 | } 36 | } 37 | .clear { 38 | &:hover, 39 | &:target { 40 | transition-duration: .3s; 41 | } 42 | } 43 | 44 | input { 45 | border: 1px solid #f3f3f3; 46 | border-radius: 3px; 47 | background: none; 48 | padding: 5px 10px; 49 | outline: 0; 50 | } 51 | 52 | .edit { 53 | font-size: 17px; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /assets/app/protected/users/groups/group/template.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |

4 | {{#link-to 'protected.users.groups'}}Groups{{/link-to}} 5 |
6 | {{icon-component class="va-sub" materialIcon="navigate_next" size=30}} 7 |
8 | {{#link-to 'protected.users.groups.group' model.id}}{{ model.name }}{{/link-to}} 9 |
10 | {{icon-component class="va-sub" materialIcon="navigate_next" size=30}} 11 |
{{selectedTab}} 12 |

13 | 24 |
25 |
26 | {{outlet}} 27 | -------------------------------------------------------------------------------- /assets/app/styles/animations/_bounce.scss: -------------------------------------------------------------------------------- 1 | .spinner-bounce-properties { 2 | background-color: $blue-default; 3 | border-radius: 100%; 4 | display: inline-block; 5 | -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both; 6 | animation: sk-bouncedelay 1.4s infinite ease-in-out both; 7 | } 8 | 9 | .spinner > div { 10 | @extend .spinner-bounce-properties; 11 | width: 18px; 12 | height: 18px; 13 | } 14 | 15 | .spinner .bounce1 { 16 | -webkit-animation-delay: -0.32s; 17 | animation-delay: -0.32s; 18 | } 19 | 20 | .spinner .bounce2 { 21 | -webkit-animation-delay: -0.16s; 22 | animation-delay: -0.16s; 23 | } 24 | 25 | 26 | @-webkit-keyframes sk-bouncedelay { 27 | 0%, 80%, 100% { -webkit-transform: scale(0) } 28 | 40% { -webkit-transform: scale(1.0) } 29 | } 30 | 31 | @keyframes sk-bouncedelay { 32 | 0%, 80%, 100% { 33 | -webkit-transform: scale(0); 34 | transform: scale(0); 35 | } 40% { 36 | -webkit-transform: scale(1.0); 37 | transform: scale(1.0); 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /assets/app/protected/brokerlog/index/template.hbs: -------------------------------------------------------------------------------- 1 |
2 |

3 | Broker log 4 |

5 | 6 | {{icon-component class='va-sub' size=26 materialIcon="autorenew" spin=loadState content="Refresh logs"}} 7 | 8 |
9 | {{#if modelIsEmpty}} 10 | No entries 11 | {{else}} 12 | {{models-table 13 | class="sortableTable" 14 | data=data 15 | columns=columns 16 | showColumnsDropdown=false 17 | filteringIgnoreCase=sortableTableConfig.filteringIgnoreCase 18 | customMessages=sortableTableConfig.messageConfig 19 | customIcons=sortableTableConfig.customIcons 20 | customClasses=sortableTableConfig.customClasses 21 | useNumericPagination=true 22 | multipleColumnsSorting=false 23 | }} 24 | {{/if}} 25 |
26 |
27 |
28 | -------------------------------------------------------------------------------- /assets/app/protected/configs/template.hbs: -------------------------------------------------------------------------------- 1 |
2 |

3 | Configuration 4 |

5 | 25 | {{outlet}} 26 |
27 | -------------------------------------------------------------------------------- /guacamole-client/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM tomcat:8.5.13-jre8 2 | MAINTAINER Olivier Berthonneau 3 | 4 | RUN apt-get update && apt-get -y install maven \ 5 | openjdk-8-jdk 6 | 7 | ENV GUAC_VERSION=0.9.9 8 | ENV GUACAMOLE_HOME="/etc/guacamole" 9 | 10 | RUN wget http://sourceforge.net/projects/guacamole/files/current/binary/guacamole-${GUAC_VERSION}.war/download -O /usr/local/tomcat/webapps/guacamole.war 11 | 12 | RUN mkdir -p /opt/noauth-logged 13 | COPY ./noauth-logged /opt/noauth-logged 14 | WORKDIR /opt/noauth-logged 15 | 16 | RUN mvn package && \ 17 | mkdir -p $GUACAMOLE_HOME/extensions/ && cp ./target/guacamole-auth-noauthlogged-${GUAC_VERSION}.jar $GUACAMOLE_HOME/extensions/ && \ 18 | mvn clean 19 | 20 | ENV JAVA_OPTS="-Djava.library.path=/usr/local/apr/lib -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Xmx1024m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC" 21 | 22 | COPY ./guac_home/guacamole.properties /etc/guacamole/guacamole.properties 23 | 24 | EXPOSE 8080 25 | 26 | CMD ["catalina.sh", "run"] 27 | -------------------------------------------------------------------------------- /api/models/Session.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | module.exports = { 26 | 27 | attributes: { 28 | 29 | } 30 | }; 31 | -------------------------------------------------------------------------------- /assets/app/resolver.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Resolver from 'ember-resolver'; 26 | 27 | export default Resolver; 28 | -------------------------------------------------------------------------------- /assets/tests/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "predef": [ 3 | "document", 4 | "window", 5 | "location", 6 | "setTimeout", 7 | "$", 8 | "-Promise", 9 | "define", 10 | "console", 11 | "visit", 12 | "exists", 13 | "fillIn", 14 | "click", 15 | "keyEvent", 16 | "triggerEvent", 17 | "find", 18 | "findWithAssert", 19 | "wait", 20 | "DS", 21 | "andThen", 22 | "currentURL", 23 | "currentPath", 24 | "currentRouteName" 25 | ], 26 | "node": false, 27 | "browser": false, 28 | "boss": true, 29 | "curly": true, 30 | "debug": false, 31 | "devel": false, 32 | "eqeqeq": true, 33 | "evil": true, 34 | "forin": false, 35 | "immed": false, 36 | "laxbreak": false, 37 | "newcap": true, 38 | "noarg": true, 39 | "noempty": false, 40 | "nonew": false, 41 | "nomen": false, 42 | "onevar": false, 43 | "plusplus": false, 44 | "regexp": false, 45 | "undef": true, 46 | "sub": true, 47 | "strict": false, 48 | "white": false, 49 | "eqnull": true, 50 | "esnext": true, 51 | "unused": true 52 | } 53 | -------------------------------------------------------------------------------- /assets/app/activate/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /config/app.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | module.exports = { 26 | oauth: { 27 | tokenLife: 3600 // Valide one hour 28 | } 29 | }; 30 | -------------------------------------------------------------------------------- /assets/app/protected/files/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/protected/images/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/reset-password/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/app/reset-password/token/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/protected/files/notactivated/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/protected/files/nowindows/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/protected/machines/controller.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Controller.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/protected/machines/machine/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/protected/users/groups/group/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/reset-password/controller.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Controller.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/reset-password/token/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | 26 | import Ember from 'ember'; 27 | 28 | export default Ember.Route.extend({ 29 | }); 30 | -------------------------------------------------------------------------------- /assets/app/member/model.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import UserModel from 'nanocloud/user/model'; 26 | 27 | export default UserModel.extend({ 28 | 29 | }); 30 | -------------------------------------------------------------------------------- /assets/app/protected/configs/look-and-feel/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/protected/users/teams/controller.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Controller.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/pending-member/model.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import UserModel from 'nanocloud/user/model'; 26 | 27 | export default UserModel.extend({ 28 | 29 | }); 30 | -------------------------------------------------------------------------------- /assets/app/protected/configs/email-configuration/index/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /guacamole-client/noauth-logged/src/main/assembly/dist.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | dist 7 | ${project.artifactId}-${project.version} 8 | 9 | 10 | 11 | tar.gz 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | doc 20 | 21 | 22 | 23 | 24 | target 25 | 26 | 27 | *.jar 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /assets/app/authorizers/oauth2.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import OAuth2Bearer from 'ember-simple-auth/authorizers/oauth2-bearer'; 26 | 27 | export default OAuth2Bearer.extend(); 28 | -------------------------------------------------------------------------------- /assets/app/machines/user/model.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import DS from 'ember-data'; 26 | 27 | export default DS.Model.extend({ 28 | 29 | machines: DS.belongsTo('machine'), 30 | }); 31 | -------------------------------------------------------------------------------- /assets/tests/test-helper.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import resolver from './helpers/resolver'; 26 | import { 27 | setResolver 28 | } from 'ember-qunit'; 29 | 30 | setResolver(resolver); 31 | -------------------------------------------------------------------------------- /packer/compress-qcow2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Nanocloud turns any traditional software into a cloud solution, without 4 | # changing or redeveloping existing source code. 5 | # 6 | # Copyright (C) 2016 Nanocloud Software 7 | # 8 | # This file is part of Nanocloud. 9 | # 10 | # Nanocloud is free software; you can redistribute it and/or modify 11 | # it under the terms of the GNU Affero General Public License as 12 | # published by the Free Software Foundation, either version 3 of the 13 | # License, or (at your option) any later version. 14 | # 15 | # Nanocloud is distributed in the hope that it will be useful, 16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | # GNU Affero General Public License for more details. 19 | # 20 | # You should have received a copy of the GNU Affero General Public License 21 | # along with this program. If not, see . 22 | 23 | QCOW2_FILENAME="${1}" 24 | 25 | qemu-img convert -c -f qcow2 -O qcow2 "${QCOW2_FILENAME}" "${QCOW2_FILENAME}.mini" 26 | mv "${QCOW2_FILENAME}.mini" "${QCOW2_FILENAME}" 27 | -------------------------------------------------------------------------------- /plaza/main_posix.go: -------------------------------------------------------------------------------- 1 | // +build !windows 2 | 3 | /* 4 | * Nanocloud Community, a comprehensive platform to turn any application 5 | * into a cloud solution. 6 | * 7 | * Copyright (C) 2015 Nanocloud Software 8 | * 9 | * This file is part of Nanocloud community. 10 | * 11 | * Nanocloud community is free software; you can redistribute it and/or modify 12 | * it under the terms of the GNU Affero General Public License as 13 | * published by the Free Software Foundation, either version 3 of the 14 | * License, or (at your option) any later version. 15 | * 16 | * Nanocloud community is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU Affero General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU Affero General Public License 22 | * along with this program. If not, see . 23 | */ 24 | 25 | package main 26 | 27 | import "github.com/Nanocloud/nanocloud/plaza/router" 28 | 29 | func main() { 30 | router.Start() 31 | } 32 | -------------------------------------------------------------------------------- /assets/tests/helpers/destroy-app.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default function destroyApp(application) { 28 | Ember.run(application, 'destroy'); 29 | } 30 | -------------------------------------------------------------------------------- /assets/app/components/container-block/component.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Component.extend({ 28 | classNames: ['container-blocks'], 29 | }); 30 | -------------------------------------------------------------------------------- /assets/app/config/model.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import DS from 'ember-data'; 26 | 27 | export default DS.Model.extend({ 28 | 29 | key: DS.attr('string'), 30 | value: DS.attr('string'), 31 | }); 32 | -------------------------------------------------------------------------------- /guacamole-client/noauth-logged/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2013 Glyptodon LLC 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /api/models/AppGroup.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | module.exports = { 26 | attributes: { 27 | app: { 28 | model: 'app' 29 | }, 30 | group: { 31 | model: 'group' 32 | } 33 | } 34 | }; 35 | -------------------------------------------------------------------------------- /api/models/UserGroup.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | module.exports = { 26 | attributes: { 27 | user: { 28 | model: 'user' 29 | }, 30 | group: { 31 | model: 'group' 32 | } 33 | } 34 | }; 35 | -------------------------------------------------------------------------------- /assets/app/protected/machines/user/controller.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import MachineController from 'nanocloud/protected/machines/index/controller'; 26 | 27 | export default MachineController.extend({ 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/protected/users/index/template.hbs: -------------------------------------------------------------------------------- 1 |
2 |

3 | Users 4 | {{#link-to 'protected.users.new'}} 5 | 8 | {{/link-to}} 9 |

10 |
11 | {{#if modelIsEmpty}} 12 | No entries 13 | {{else}} 14 | {{models-table 15 | class="sortableTable" 16 | data=model 17 | columns=columns 18 | showColumnsDropdown=false 19 | filteringIgnoreCase=sortableTableConfig.filteringIgnoreCase 20 | customMessages=sortableTableConfig.messageConfig 21 | customIcons=sortableTableConfig.customIcons 22 | customClasses=sortableTableConfig.customClasses 23 | useNumericPagination=true 24 | multipleColumnsSorting=false 25 | toggleUserSetting=(action 'toggleUserSetting') 26 | closePopup=(action 'closePopup') 27 | changeUserTeam=(action 'changeUserTeam') 28 | }} 29 | {{/if}} 30 |
31 |
32 |
33 | {{ outlet }} 34 | -------------------------------------------------------------------------------- /photon/defaults.cc: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | #include "defaults.h" 26 | 27 | const char kAudioLabel[] = "audio_label"; 28 | const char kVideoLabel[] = "video_label"; 29 | const char kStreamLabel[] = "stream_label"; 30 | -------------------------------------------------------------------------------- /api/models/ImageGroup.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | module.exports = { 26 | attributes: { 27 | image: { 28 | model: 'image' 29 | }, 30 | group: { 31 | model: 'group' 32 | } 33 | } 34 | }; 35 | -------------------------------------------------------------------------------- /api/models/UserMachine.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | module.exports = { 26 | attributes: { 27 | user: { 28 | model: 'user' 29 | }, 30 | machine: { 31 | model: 'machine' 32 | } 33 | } 34 | }; 35 | -------------------------------------------------------------------------------- /assets/app/pendinguser/model.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import DS from 'ember-data'; 26 | import userModel from 'nanocloud/user/model'; 27 | 28 | export default userModel.extend({ 29 | team: DS.belongsTo(), 30 | }); 31 | -------------------------------------------------------------------------------- /assets/app/components/floating-sidebar-component/component.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Component.extend({ 28 | classNames: ['floating-sidebar-component'], 29 | }); 30 | -------------------------------------------------------------------------------- /assets/app/helpers/reverse.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export function reverse([value]/*, hash*/) { 28 | return !value; 29 | } 30 | 31 | export default Ember.Helper.helper(reverse); 32 | -------------------------------------------------------------------------------- /assets/app/helpers/is-equal.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export function isEqual([left, right]) { 28 | return (left === right); 29 | } 30 | 31 | export default Ember.Helper.helper(isEqual); 32 | -------------------------------------------------------------------------------- /assets/app/protected/configs/other-setting/controller.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | export default Ember.Controller.extend({ 27 | configController: Ember.inject.controller('protected.configs'), 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/vm/model.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import DS from 'ember-data'; 26 | 27 | export default DS.Model.extend({ 28 | display_name: DS.attr('string'), 29 | status: DS.attr('string'), 30 | ico: DS.attr('string') 31 | }); 32 | -------------------------------------------------------------------------------- /assets/tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Nanocloud Tests 7 | 8 | 9 | 10 | {{content-for "head"}} 11 | {{content-for "test-head"}} 12 | 13 | 14 | 15 | 16 | 17 | {{content-for "head-footer"}} 18 | {{content-for "test-head-footer"}} 19 | 20 | 21 | {{content-for "body"}} 22 | {{content-for "test-body"}} 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | {{content-for "body-footer"}} 32 | {{content-for "test-body-footer"}} 33 | 34 | 35 | -------------------------------------------------------------------------------- /assets/app/protected/configs/email-configuration/controller.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | export default Ember.Controller.extend({ 27 | configController: Ember.inject.controller('protected.configs'), 28 | }); 29 | -------------------------------------------------------------------------------- /assets/app/protected/images/app/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | actions: { 29 | refreshModel() { 30 | this.refresh(); 31 | } 32 | } 33 | }); 34 | -------------------------------------------------------------------------------- /assets/app/protected/images/image/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | actions: { 29 | refreshModel() { 30 | this.refresh(); 31 | } 32 | } 33 | }); 34 | -------------------------------------------------------------------------------- /assets/app/protected/index/controller.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Controller.extend({ 28 | 29 | session: Ember.inject.service('session'), 30 | DirectLinkParams: null, 31 | }); 32 | -------------------------------------------------------------------------------- /assets/app/protected/users/groups/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | 29 | model() { 30 | return this.store.findAll('group', { reload: true }); 31 | } 32 | }); 33 | -------------------------------------------------------------------------------- /api/models/Client.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General Public License 20 | * along with this program. If not, see . 21 | */ 22 | 23 | module.exports = { 24 | 25 | attributes: { 26 | 27 | name: { 28 | type: 'string', 29 | required: true 30 | }, 31 | clientId: 'string', 32 | clientSecret: 'string' 33 | } 34 | 35 | }; 36 | -------------------------------------------------------------------------------- /assets/app/utils/get-key-from-value.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | export default function getKeyFromValue(map, value) { 26 | for(var key in map) { 27 | if(map[key] === value) { 28 | return key; 29 | } 30 | } 31 | return -1; 32 | } 33 | -------------------------------------------------------------------------------- /assets/app/protected/configs/email-configuration/index/controller.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Controller.extend({ 28 | configController: Ember.inject.controller('protected.configs'), 29 | }); 30 | -------------------------------------------------------------------------------- /assets/app/components/edit-text/template.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#if isEditing }} 3 |
4 | {{input class='edit-input-text' type=getInputType value=textInput placeholder=textInputPlaceholder enter="submit" }} 5 | {{#if confirmation}} 6 | {{input class='edit-input-text' type=getInputType value=confirmInput placeholder=confirmInputPlaceholder enter="submit" }} 7 | {{/if}} 8 |
9 | 10 | {{icon-component materialIcon="done"}} 11 | 12 | 13 | {{icon-component materialIcon="clear"}} 14 | 15 |
16 | {{errorMessage}} 17 |
18 | {{else}} 19 | 20 | {{ yield }} 21 | 22 | {{#unless disabledInput}} 23 | 24 | {{icon-component class='edit va-mid' materialIcon="editmode" size=14}} 25 | 26 | {{/unless}} 27 | {{/if}} 28 |
29 | -------------------------------------------------------------------------------- /assets/app/group/model.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import DS from 'ember-data'; 26 | 27 | export default DS.Model.extend({ 28 | name: DS.attr('string'), 29 | 30 | members: DS.hasMany('user'), 31 | images: DS.hasMany(), 32 | apps: DS.hasMany(), 33 | }); 34 | -------------------------------------------------------------------------------- /assets/app/protected/users/groups/new/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | setupController(controller) { 29 | this._super(...arguments); 30 | controller.reset(); 31 | } 32 | }); 33 | -------------------------------------------------------------------------------- /config/jsonapi.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | module.exports.jsonapi = { 26 | 27 | attributesSerializedCase: 'kebab-case', // Data comming from Ember is kebab-case 28 | attributesDeserializedCase: 'camelCase' // Attributes in sails Model are camel cases 29 | }; 30 | -------------------------------------------------------------------------------- /assets/app/protected/users/groups/group/index/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | setupController(controller) { 29 | this._super(...arguments); 30 | controller.reset(); 31 | } 32 | }); 33 | -------------------------------------------------------------------------------- /assets/app/reset-password/index/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | setupController(controller) { 29 | controller.set('model', this.store.createRecord('reset-password', {})); 30 | } 31 | }); 32 | -------------------------------------------------------------------------------- /assets/app/styles/modules/_icons.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Material Icons'; 3 | font-style: normal; 4 | font-weight: 400; 5 | 6 | // For IE6-8 7 | src: url('/assets/fonts/MaterialIcons-Regular.eot'); 8 | 9 | src: local('Material Icons'), local('MaterialIcons-Regular'), 10 | url(/assets/fonts/MaterialIcons-Regular.woff2) format('woff2'), 11 | url(/assets/fonts/MaterialIcons-Regular.woff) format('woff'), 12 | url(/assets/fonts/MaterialIcons-Regular.ttf) format('truetype'); 13 | } 14 | 15 | .material-icons { 16 | font-family: 'Material Icons'; 17 | font-weight: normal; 18 | font-style: normal; 19 | font-size: 24px; // Preferred icon size 20 | display: inline-block; 21 | width: 1em; 22 | height: 1em; 23 | line-height: 1; 24 | text-transform: none; 25 | letter-spacing: normal; 26 | word-wrap: normal; 27 | white-space: nowrap; 28 | direction: ltr; 29 | 30 | // Support for all WebKit browsers. 31 | -webkit-font-smoothing: antialiased; 32 | // Support for Safari and Chrome. 33 | text-rendering: optimizeLegibility; 34 | 35 | // Support for Firefox. 36 | -moz-osx-font-smoothing: grayscale; 37 | 38 | // Support for IE. 39 | font-feature-settings: 'liga'; 40 | } 41 | -------------------------------------------------------------------------------- /assets/app/protected/users/groups/index/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | 29 | setupController(controller, model) { 30 | controller.set('items', model); 31 | controller.setData(); 32 | }, 33 | }); 34 | -------------------------------------------------------------------------------- /assets/app/components/file-item/component.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Component.extend({ 28 | 29 | actions : { 30 | 31 | triggerDownload(filename) { 32 | this.sendAction('download', filename); 33 | } 34 | } 35 | }); 36 | -------------------------------------------------------------------------------- /assets/app/helpers/format-duration.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export function formatDuration([value]/*, hash*/) { 28 | return window.humanizeDuration(value * 1000, { round: true }); 29 | } 30 | 31 | export default Ember.Helper.helper(formatDuration); 32 | -------------------------------------------------------------------------------- /assets/app/protected/machines/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | 29 | session: Ember.inject.service('session'), 30 | setupContoller(controller, model) { 31 | controller.set('drivers', model); 32 | } 33 | }); 34 | -------------------------------------------------------------------------------- /api/controllers/TemplateController.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General Public License 20 | * along with this program. If not, see . 21 | * 22 | */ 23 | 24 | /** 25 | * TemplateController 26 | * 27 | * @description :: Server-side logic for managing email template 28 | * @help :: See http://sailsjs.org/#!/documentation/concepts/Controllers 29 | */ 30 | 31 | module.exports = { 32 | 33 | }; 34 | -------------------------------------------------------------------------------- /assets/app/template/model.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import DS from 'ember-data'; 26 | 27 | export default DS.Model.extend({ 28 | key: DS.attr('string'), 29 | content: DS.attr('string'), 30 | subject: DS.attr('string'), 31 | createdAt: DS.attr('date'), 32 | updatedAt: DS.attr('date'), 33 | }); 34 | -------------------------------------------------------------------------------- /assets/app/helpers/format-size.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | import formatSizeUtil from 'nanocloud/utils/format-size'; 27 | 28 | export function formatSize([value]/*, hash*/) { 29 | return formatSizeUtil(value); 30 | } 31 | 32 | export default Ember.Helper.helper(formatSize); 33 | -------------------------------------------------------------------------------- /plaza/routes/shells/shells_linux.go: -------------------------------------------------------------------------------- 1 | // +build !windows 2 | 3 | /* 4 | * Nanocloud Community, a comprehensive platform to turn any application 5 | * into a cloud solution. 6 | * 7 | * Copyright (C) 2016 Nanocloud Software 8 | * 9 | * This file is part of Nanocloud community. 10 | * 11 | * Nanocloud community is free software; you can redistribute it and/or modify 12 | * it under the terms of the GNU Affero General Public License as 13 | * published by the Free Software Foundation, either version 3 of the 14 | * License, or (at your option) any later version. 15 | * 16 | * Nanocloud community is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU Affero General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU Affero General Public License 22 | * along with this program. If not, see . 23 | */ 24 | 25 | package shells 26 | 27 | import ( 28 | "fmt" 29 | 30 | "github.com/labstack/echo" 31 | ) 32 | 33 | // Post is only used by the windows plaza 34 | func Post(c *echo.Context) error { 35 | return fmt.Errorf("Unimplemented") 36 | } 37 | -------------------------------------------------------------------------------- /assets/app/sign-up/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | setupController(controller) { 29 | controller.set('passwordConfirmation', ''); 30 | controller.set('model', this.store.createRecord('pendinguser', {})); 31 | } 32 | }); 33 | -------------------------------------------------------------------------------- /guacamole-client/noauth-logged/src/main/java/com/nanocloud/auth/noauthlogged/connection/ActiveConnectionRecord.java: -------------------------------------------------------------------------------- 1 | package com.nanocloud.auth.noauthlogged.connection; 2 | 3 | import java.util.Date; 4 | 5 | import org.glyptodon.guacamole.net.auth.ConnectionRecord; 6 | 7 | public class ActiveConnectionRecord implements ConnectionRecord { 8 | 9 | private final String name; 10 | /** 11 | * The time this connection record was created. 12 | */ 13 | private final Date startDate = new Date(); 14 | 15 | public ActiveConnectionRecord(String name) { 16 | this.name = name; 17 | } 18 | 19 | @Override 20 | public Date getEndDate() { 21 | return null; 22 | } 23 | 24 | @Override 25 | public String getRemoteHost() { 26 | return null; 27 | } 28 | 29 | @Override 30 | public String getConnectionIdentifier() { 31 | return null; 32 | } 33 | 34 | public String getConnectionName() { 35 | return this.name; 36 | } 37 | 38 | @Override 39 | public Date getStartDate() { 40 | return startDate; 41 | } 42 | 43 | @Override 44 | public String getUsername() { 45 | // Technically with no auth, user does not have is own ID 46 | return this.name; 47 | } 48 | 49 | @Override 50 | public boolean isActive() { 51 | return true; 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /assets/app/components/card-component/component.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Component.extend({ 28 | 29 | classNames: ['card-component'], 30 | 31 | actions: { 32 | clickOnContent() { 33 | this.sendAction('clickOnContent'); 34 | } 35 | } 36 | }); 37 | -------------------------------------------------------------------------------- /assets/app/initializers/session.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | export function initialize(application) { 26 | application.inject('route', 'session', 'service:session'); 27 | application.inject('controller', 'session', 'service:session'); 28 | } 29 | 30 | export default { 31 | name: 'session', 32 | initialize 33 | }; 34 | -------------------------------------------------------------------------------- /assets/app/protected/configs/index/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | 29 | model() { 30 | this.controllerFor('protected.configs.index').activator(); 31 | return Ember.RSVP.hash({ 32 | images: [], 33 | }); 34 | }, 35 | }); 36 | -------------------------------------------------------------------------------- /api/controllers/BrokerLogController.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General Public License 20 | * along with this program. If not, see . 21 | * 22 | * GroupController 23 | * 24 | * @description :: Server-side logic for managing groups 25 | * @help :: See http://sailsjs.org/#!/documentation/concepts/Controllers 26 | */ 27 | 28 | module.exports = { 29 | update(req, res) { 30 | return res.forbidden(); 31 | }, 32 | }; 33 | -------------------------------------------------------------------------------- /assets/app/protected/configs/other-setting/template.hbs: -------------------------------------------------------------------------------- 1 | {{#container-block}} 2 |

Host

3 |
4 |
5 |

Host (example: localhost)

6 |
7 |
{{input-confirm value=configController.host placeholder="http://127.0.0.1" type="text"}}
8 |
9 | {{/container-block}} 10 | 11 | {{#container-block}} 12 |

Machines

13 |
14 |
15 |

Machines name

16 |
17 |
18 | {{input-confirm placeholder=configController.machinesName value=configController.machinesName type="text"}} 19 |
20 |
21 | {{/container-block}} 22 | 23 | {{#container-block}} 24 |

Enable Photon

25 |
26 | {{#paper-checkbox class="bl" value=configController.photon onChange=(action (mut configController.photon))}} 27 | Activate Photon (experimental) 28 | {{/paper-checkbox}} 29 |
30 | {{/container-block}} 31 | -------------------------------------------------------------------------------- /assets/testem.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | /*jshint node:true*/ 26 | module.exports = { 27 | framework: 'qunit', 28 | test_page: 'tests/index.html?hidepassed', 29 | disable_watching: true, 30 | launch_in_ci: [ 31 | 'PhantomJS' 32 | ], 33 | launch_in_dev: [ 34 | 'PhantomJS', 35 | 'Chrome' 36 | ] 37 | }; 38 | -------------------------------------------------------------------------------- /api/migrations/029_add_ldapuser_column_in_user.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | function up(knex) { 26 | return knex.schema.table('user', (table) => { 27 | table.boolean('ldapUser'); 28 | }); 29 | } 30 | 31 | function down(knex) { 32 | return knex.schema.dropColumn('ldapUser'); 33 | } 34 | 35 | module.exports = { up, down }; 36 | 37 | -------------------------------------------------------------------------------- /photon/defaults.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | #ifndef PHOTON_DEFAULTS_H_ 26 | #define PHOTON_DEFAULTS_H_ 27 | 28 | #include 29 | 30 | #include "webrtc/base/basictypes.h" 31 | 32 | extern const char kAudioLabel[]; 33 | extern const char kVideoLabel[]; 34 | extern const char kStreamLabel[]; 35 | 36 | #endif // PHOTON_DEFAULTS_H_ 37 | -------------------------------------------------------------------------------- /api/migrations/020_add_token_column_in_pendinguser.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | function up(knex) { 26 | return knex.schema.table('pendinguser', (table) => { 27 | table.string('token'); 28 | }); 29 | } 30 | 31 | function down(knex) { 32 | return knex.schema.dropColumn('pendinguser'); 33 | } 34 | 35 | module.exports = { up, down }; 36 | -------------------------------------------------------------------------------- /api/migrations/031_add_ldappassword_column_in_user.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | function up(knex) { 26 | return knex.schema.table('user', (table) => { 27 | table.string('ldapPassword'); 28 | }); 29 | } 30 | 31 | function down(knex) { 32 | return knex.schema.dropColumn('ldapPassword'); 33 | } 34 | 35 | module.exports = { up, down }; 36 | -------------------------------------------------------------------------------- /api/migrations/034_add_ldapusername_column_in_user.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | function up(knex) { 26 | return knex.schema.table('user', (table) => { 27 | table.string('ldapUsername'); 28 | }); 29 | } 30 | 31 | function down(knex) { 32 | return knex.schema.dropColumn('ldapUsername'); 33 | } 34 | 35 | module.exports = { up, down }; 36 | -------------------------------------------------------------------------------- /api/models/Property.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General Public License 20 | * along with this program. If not, see . 21 | * 22 | * Property.js 23 | * 24 | * @description :: TODO: You might write a short summary of how this model works and what it represents here. 25 | * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models 26 | */ 27 | 28 | module.exports = { 29 | 30 | attributes: { 31 | 32 | } 33 | }; 34 | 35 | -------------------------------------------------------------------------------- /assets/tests/unit/helpers/format-size-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import { formatSize } from 'nanocloud/helpers/format-size'; 26 | import { module, test } from 'qunit'; 27 | 28 | module('Unit | Helper | format size'); 29 | 30 | test('it works', function(assert) { 31 | let result = formatSize([42]); 32 | assert.ok(result); 33 | }); 34 | -------------------------------------------------------------------------------- /assets/app/protected/users/groups/index/template.hbs: -------------------------------------------------------------------------------- 1 |
2 |

3 | Groups 4 | {{#link-to 'protected.users.groups.new'}} 5 | 8 | {{/link-to}} 9 |

10 |
11 | {{#if modelIsEmpty}} 12 |

13 | 14 | {{#link-to 'protected.users.groups.new'}} 15 | Looks like you haven’t created any group yet! Click here to create your first group! 16 | {{/link-to}} 17 | 18 |

19 | {{else}} 20 | {{models-table 21 | class="sortableTable" 22 | data=data 23 | columns=columns 24 | showColumnsDropdown=false 25 | filteringIgnoreCase=sortableTableConfig.filteringIgnoreCase 26 | customMessages=sortableTableConfig.messageConfig 27 | customIcons=sortableTableConfig.customIcons 28 | customClasses=sortableTableConfig.customClasses 29 | useNumericPagination=true 30 | multipleColumnsSorting=false 31 | }} 32 | {{/if}} 33 |
34 |
35 |
36 | -------------------------------------------------------------------------------- /deployments/roles/nanocloud/tasks/main.yml: -------------------------------------------------------------------------------- 1 | - name: Install git 2 | apt: name=git state=present 3 | 4 | - name: Clone nanocloud 5 | git: 6 | repo: git://github.com/{{repository}}/nanocloud 7 | dest: /nanocloud 8 | force: yes 9 | 10 | - name: Copy custom configuration 11 | copy: src=roles/nanocloud/files/nanocloud/config.env dest=/nanocloud/config.env owner=root group=root mode=0644 12 | 13 | - name: Deploy Pull Request {{pull_request}} 14 | command: /nanocloud/deployments/deploy-pr.sh {{pull_request}} 15 | when: pull_request is defined 16 | 17 | - name: Checkout specific branch 18 | command: git checkout {{branch|default(master)}} 19 | args: 20 | chdir: /nanocloud 21 | when: 22 | - pull_request is undefined 23 | 24 | - name: Docker compose build 25 | command: docker-compose build 26 | args: 27 | chdir: /nanocloud 28 | when: 29 | - pull_request is undefined 30 | 31 | - name: Docker compose build development containers 32 | command: docker-compose -f docker-compose-dev.yml up -d 33 | args: 34 | chdir: /nanocloud 35 | when: 36 | - pull_request is undefined 37 | 38 | - name: Docker compose up 39 | command: docker-compose -f docker-compose-dev.yml up -d 40 | args: 41 | chdir: /nanocloud 42 | when: 43 | - pull_request is undefined 44 | -------------------------------------------------------------------------------- /assets/app/protected/machines/new/route.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Ember from 'ember'; 26 | 27 | export default Ember.Route.extend({ 28 | setupContoller(controller, model) { 29 | controller.set('drivers', model); 30 | }, 31 | actions: { 32 | willTransition: function() { 33 | this.controller.reset(); 34 | } 35 | } 36 | }); 37 | -------------------------------------------------------------------------------- /config/locales/_README.md: -------------------------------------------------------------------------------- 1 | # Internationalization / Localization Settings 2 | 3 | > Also see the official docs on internationalization/localization: 4 | > http://links.sailsjs.org/docs/config/locales 5 | 6 | ## Locales 7 | All locale files live under `config/locales`. Here is where you can add translations 8 | as JSON key-value pairs. The name of the file should match the language that you are supporting, which allows for automatic language detection based on request headers. 9 | 10 | Here is an example locale stringfile for the Spanish language (`config/locales/es.json`): 11 | ```json 12 | { 13 | "Hello!": "Hola!", 14 | "Hello %s, how are you today?": "¿Hola %s, como estas?", 15 | } 16 | ``` 17 | ## Usage 18 | Locales can be accessed in controllers/policies through `res.i18n()`, or in views through the `__(key)` or `i18n(key)` functions. 19 | Remember that the keys are case sensitive and require exact key matches, e.g. 20 | 21 | ```ejs 22 |

<%= __('Welcome to PencilPals!') %>

23 |

<%= i18n('Hello %s, how are you today?', 'Pencil Maven') %>

24 |

<%= i18n('That\'s right-- you can use either i18n() or __()') %>

25 | ``` 26 | 27 | ## Configuration 28 | Localization/internationalization config can be found in `config/i18n.js`, from where you can set your supported locales. 29 | -------------------------------------------------------------------------------- /assets/tests/helpers/resolver.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import Resolver from '../../resolver'; 26 | import config from '../../config/environment'; 27 | 28 | const resolver = Resolver.create(); 29 | 30 | resolver.namespace = { 31 | modulePrefix: config.modulePrefix, 32 | podModulePrefix: config.podModulePrefix 33 | }; 34 | 35 | export default resolver; 36 | -------------------------------------------------------------------------------- /assets/app/vdi/windows/template.hbs: -------------------------------------------------------------------------------- 1 | {{#window-component 2 | connectionName=connection_name 3 | title='Upload' 4 | isOpen=windowCollector.upload 5 | close=(action 'toggleWindow' 'upload') data='upload'}} 6 | 7 | {{partial 'window/upload'}} 8 | {{/window-component}} 9 | 10 | {{#window-component 11 | connectionName=connection_name 12 | title='Download' 13 | isOpen=windowCollector.download 14 | close=(action 'toggleWindow' 'donwload') data='download'}} 15 | 16 | {{partial 'window/download'}} 17 | {{/window-component}} 18 | 19 | {{#window-component 20 | connectionName=connection_name 21 | title='Clipboard' 22 | isOpen=windowCollector.clipboard 23 | close=(action 'toggleWindow' 'clipboard') data='clipboard'}} 24 | 25 | {{partial 'window/clipboard'}} 26 | {{/window-component}} 27 | 28 |
29 | {{#floating-sidebar-component 30 | class='vdi-onboard-app-browser col-xs-12 col-sm-6 col-md-4 col-lg-3' 31 | isVisible=windowCollector.onboardApp 32 | }} 33 | {{#application-publisher 34 | connectionName=connection_name 35 | requestParams=(hash machine=machine_id image=image_id) 36 | api="file" 37 | target='machines' 38 | system='windows' 39 | action="closeAllWindow" 40 | }} 41 | {{/application-publisher}} 42 | {{/floating-sidebar-component}} 43 |
44 | -------------------------------------------------------------------------------- /assets/tests/unit/helpers/is-equal-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import { isEqual } from 'nanocloud/helpers/is-equal'; 26 | import { module, test } from 'qunit'; 27 | 28 | module('Unit | Helper | is equal'); 29 | 30 | // Replace this with your real tests. 31 | test('it works', function(assert) { 32 | let result = isEqual([42]); 33 | assert.ok(result); 34 | }); 35 | -------------------------------------------------------------------------------- /assets/tests/unit/helpers/reverse-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import { reverse } from 'nanocloud/helpers/reverse'; 26 | import { module, test } from 'qunit'; 27 | 28 | module('Unit | Helper | reverse'); 29 | 30 | // Replace this with your real tests. 31 | test('it works', function(assert) { 32 | let result = reverse([42]); 33 | assert.ok(result); 34 | }); 35 | -------------------------------------------------------------------------------- /plaza/utils/utils_posix.go: -------------------------------------------------------------------------------- 1 | // +build !windows 2 | 3 | /* 4 | * Nanocloud Community, a comprehensive platform to turn any application 5 | * into a cloud solution. 6 | * 7 | * Copyright (C) 2016 Nanocloud Software 8 | * 9 | * This file is part of Nanocloud community. 10 | * 11 | * Nanocloud community is free software; you can redistribute it and/or modify 12 | * it under the terms of the GNU Affero General Public License as 13 | * published by the Free Software Foundation, either version 3 of the 14 | * License, or (at your option) any later version. 15 | * 16 | * Nanocloud community is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU Affero General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU Affero General Public License 22 | * along with this program. If not, see . 23 | */ 24 | 25 | package utils 26 | 27 | import ( 28 | "os/exec" 29 | 30 | "github.com/labstack/gommon/log" 31 | ) 32 | 33 | func ExecuteCommandAsAdmin(cmd, username, pwd, domain string) { 34 | out, err := exec.Command(cmd).Output() 35 | if err != nil { 36 | log.Error(err) 37 | } 38 | log.Info(out) 39 | } 40 | -------------------------------------------------------------------------------- /assets/tests/unit/utils/format-size-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | import formatSize from 'nanocloud/utils/format-size'; 26 | import { module, test } from 'qunit'; 27 | 28 | module('Unit | Utility | format size'); 29 | 30 | // Replace this with your real tests. 31 | test('it works', function(assert) { 32 | let result = formatSize(); 33 | assert.ok(result); 34 | }); 35 | -------------------------------------------------------------------------------- /api/migrations/021_add_status_machine.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | function up(knex) { 26 | return knex.schema.table('machine', function(t) { 27 | t.string('status'); 28 | }); 29 | } 30 | 31 | function down(knex) { 32 | return knex.schema.table('machine', function(t) { 33 | t.dropColumn('status'); 34 | }); 35 | } 36 | 37 | module.exports = { up, down }; 38 | 39 | -------------------------------------------------------------------------------- /api/migrations/032_add_pool_size_per_image.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nanocloud turns any traditional software into a cloud solution, without 3 | * changing or redeveloping existing source code. 4 | * 5 | * Copyright (C) 2016 Nanocloud Software 6 | * 7 | * This file is part of Nanocloud. 8 | * 9 | * Nanocloud is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * Nanocloud is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General 20 | * Public License 21 | * along with this program. If not, see 22 | * . 23 | */ 24 | 25 | function up(knex) { 26 | return knex.schema.table('image', function(t) { 27 | t.integer('poolSize'); 28 | }); 29 | } 30 | 31 | function down(knex) { 32 | return knex.schema.table('image', function(t) { 33 | t.dropColumn('poolSize'); 34 | }); 35 | } 36 | 37 | module.exports = { up, down }; 38 | --------------------------------------------------------------------------------