29 |
30 | @js_EMBEDDED@
31 |
32 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/backend/flask/src/db_migrate.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import imp
3 | from migrate.versioning import api
4 | from clipperz import db
5 | from config import SQLALCHEMY_DATABASE_URI
6 | from config import SQLALCHEMY_MIGRATE_REPO
7 | v = api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
8 | migration = SQLALCHEMY_MIGRATE_REPO + ('/versions/%03d_migration.py' % (v+1))
9 | tmp_module = imp.new_module('old_model')
10 | old_model = api.create_model(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
11 | exec(old_model, tmp_module.__dict__)
12 | script = api.make_update_script_for_model(SQLALCHEMY_DATABASE_URI,
13 | SQLALCHEMY_MIGRATE_REPO,
14 | tmp_module.meta,
15 | db.metadata)
16 | open(migration, "wt").write(script)
17 | api.upgrade(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
18 | v = api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
19 | print('New migration saved as ' + migration)
20 | print('Current database version: ' + str(v))
21 |
--------------------------------------------------------------------------------
/backend/flask/src/config.py:
--------------------------------------------------------------------------------
1 | import datetime
2 | import os
3 | basedir = os.path.abspath(os.path.dirname(__file__))
4 |
5 |
6 | if os.environ.get('DATABASE_URL') is None:
7 | SQLALCHEMY_DATABASE_URI = ('sqlite:///' + os.path.join(basedir, 'app.db') +
8 | '?check_same_thread=False')
9 | else:
10 | SQLALCHEMY_DATABASE_URI = os.environ['DATABASE_URL']
11 | SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, 'db_repository')
12 | SQLALCHEMY_RECORD_QUERIES = True
13 |
14 | ADMINS = ['you@example.com']
15 |
16 |
17 | class Config(object):
18 | DEBUG = False
19 | TESTING = False
20 | CSRF_ENABLED = True
21 | WTF_CSRF_ENABLED = True
22 | SECRET_KEY = 'you-will-never-guess'
23 | sessionTimeout = datetime.timedelta(minutes=-2)
24 |
25 | SQLALCHEMY_ECHO = False
26 | SQLALCHEMY_DATABASE_URI = SQLALCHEMY_DATABASE_URI
27 | SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, 'db_repository')
28 |
29 |
30 | class DevelopmentConfig(Config):
31 | DEBUG = True
32 | SQLALCHEMY_ECHO = True
33 | SQLALCHEMY_RECORD_QUERIES = True
34 |
35 |
36 | class TestingConfig(Config):
37 | TESTING = True
38 |
--------------------------------------------------------------------------------
/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/WizardController.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | // Still empty, but here it should be reasonable to factor in code duplicated between
25 | // - DirectLoginWizardController
26 | // - NewUserWizardController
--------------------------------------------------------------------------------
/frontend/delta/js/MouseTrap/mousetrap-bind-dictionary.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Overwrites default Mousetrap.bind method to optionally accept
3 | * an object to bind multiple key events in a single call
4 | *
5 | * You can pass it in like:
6 | *
7 | * Mousetrap.bind({
8 | * 'a': function() { console.log('a'); },
9 | * 'b': function() { console.log('b'); }
10 | * });
11 | *
12 | * And can optionally pass in 'keypress', 'keydown', or 'keyup'
13 | * as a second argument
14 | *
15 | */
16 | /* global Mousetrap:true */
17 | Mousetrap = (function(Mousetrap) {
18 | var self = Mousetrap,
19 | _oldBind = self.bind,
20 | args;
21 |
22 | self.bind = function() {
23 | args = arguments;
24 |
25 | // normal call
26 | if (typeof args[0] == 'string' || args[0] instanceof Array) {
27 | return _oldBind(args[0], args[1], args[2]);
28 | }
29 |
30 | // object passed in
31 | for (var key in args[0]) {
32 | if (args[0].hasOwnProperty(key)) {
33 | _oldBind(key, args[0][key], args[1]);
34 | }
35 | }
36 | };
37 |
38 | return self;
39 | }) (Mousetrap);
40 |
--------------------------------------------------------------------------------
/frontend/delta/js/MouseTrap/mousetrap-global-bind.js:
--------------------------------------------------------------------------------
1 | /**
2 | * adds a bindGlobal method to Mousetrap that allows you to
3 | * bind specific keyboard shortcuts that will still work
4 | * inside a text input field
5 | *
6 | * usage:
7 | * Mousetrap.bindGlobal('ctrl+s', _saveChanges);
8 | */
9 | /* global Mousetrap:true */
10 | Mousetrap = (function(Mousetrap) {
11 | var _globalCallbacks = {},
12 | _originalStopCallback = Mousetrap.stopCallback;
13 |
14 | Mousetrap.stopCallback = function(e, element, combo, sequence) {
15 | if (_globalCallbacks[combo] || _globalCallbacks[sequence]) {
16 | return false;
17 | }
18 |
19 | return _originalStopCallback(e, element, combo);
20 | };
21 |
22 | Mousetrap.bindGlobal = function(keys, callback, action) {
23 | Mousetrap.bind(keys, callback, action);
24 |
25 | if (keys instanceof Array) {
26 | for (var i = 0; i < keys.length; i++) {
27 | _globalCallbacks[keys[i]] = true;
28 | }
29 | return;
30 | }
31 |
32 | _globalCallbacks[keys] = true;
33 | };
34 |
35 | return Mousetrap;
36 | }) (Mousetrap);
37 |
--------------------------------------------------------------------------------
/backend/php/src/plugins/IPlugin.php:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/frontend/delta/js/Clipperz/Logging.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2018 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | Clipperz.Base.module('Clipperz');
25 |
26 | Clipperz.log = function () {
27 | console.log.apply(console, arguments);
28 | }
29 |
30 | Clipperz.logError = Clipperz.log;
31 | Clipperz.logWarning = Clipperz.log;
32 | Clipperz.logDebug = Clipperz.log;
--------------------------------------------------------------------------------
/frontend/gamma/js/Clipperz/Logging.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | Clipperz.Base.module('Clipperz');
25 |
26 | Clipperz.log = function () {
27 | console.log.apply(console, arguments);
28 | }
29 |
30 | Clipperz.logError = Clipperz.log;
31 | Clipperz.logWarning = Clipperz.log;
32 | Clipperz.logDebug = Clipperz.log;
--------------------------------------------------------------------------------
/frontend/beta/css/yui-extensions/qtips.css:
--------------------------------------------------------------------------------
1 | .ytip{
2 | position: absolute;
3 | top: 0;
4 | visibility: hidden;
5 | z-index: 11000;
6 | }
7 | .ytip .ytip-bd{
8 | background: #e0e8f3 url(./images/default/qtip/bg.gif) repeat-x;
9 | border: 1px solid #a3bad9;
10 | font: normal 11px arial,helvetica,sans-serif;
11 | padding: 5px;
12 | }
13 | .ytip .ytip-close{
14 | background-image: url(./images/default/basic-dialog/close.gif);
15 | height: 15px;
16 | position: absolute;
17 | right: 3px;
18 | top: 3px;
19 | width: 15px;
20 | }
21 | .ytip .ytip-hd {
22 | background: url(./images/default/basic-dialog/hd-sprite.gif) repeat-x 0px -82px;
23 | background-color: navy;
24 | color: #FFF;
25 | display: block;
26 | font: bold 11px tahoma, arial, verdana, helvetica;
27 | padding: 4px;
28 | }
29 | .ytip .ytip-hd-left {
30 | background: url(./images/default/basic-dialog/hd-sprite.gif) no-repeat 0px -41px;
31 | display: block;
32 | margin: 0px;
33 | padding-left: 3px;
34 | }
35 | .ytip .ytip-hd-right {
36 | background: url(./images/default/basic-dialog/hd-sprite.gif) no-repeat right 0px;
37 | display: block;
38 | padding-right: 3px;
39 | }
40 | y\:qtip, qtip{
41 | display: none;
42 | }
43 |
--------------------------------------------------------------------------------
/frontend/beta/js/YUI-extensions/Bench.js:
--------------------------------------------------------------------------------
1 | // @deprecated
2 | // Use YAHOO.timer() instead
3 | YAHOO.ext.util.Bench = function(){
4 | this.timers = {};
5 | this.lastKey = null;
6 | };
7 | YAHOO.ext.util.Bench.prototype = {
8 | start : function(key){
9 | this.lastKey = key;
10 | this.timers[key] = {};
11 | this.timers[key].startTime = new Date().getTime();
12 | },
13 |
14 | stop : function(key){
15 | key = key || this.lastKey;
16 | this.timers[key].endTime = new Date().getTime();
17 | },
18 |
19 | getElapsed : function(key){
20 | key = key || this.lastKey;
21 | return this.timers[key].endTime - this.timers[key].startTime;
22 | },
23 |
24 | toString : function(html){
25 | var results = "";
26 | for(var key in this.timers){
27 | if(typeof this.timers[key] != 'function'){
28 | results += key + ":\t" + (this.getElapsed(key) / 1000) + " seconds\n";
29 | }
30 | }
31 | if(html){
32 | results = results.replace("\n", ' ');
33 | }
34 | return results;
35 | },
36 |
37 | show : function(){
38 | alert(this.toString());
39 | }
40 | };
41 |
--------------------------------------------------------------------------------
/frontend/gamma/tests/tests/Components/GridLayout/test.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | ul.testTabs {
25 | list-style-type: none;
26 | padding: 0px;
27 | padding-bottom: 30px;
28 | }
29 |
30 | ul.testTabs li {
31 | display: inline-table;
32 | padding: 0px 10px;
33 | }
34 |
35 | ul.testPanels {
36 | list-style-type: none;
37 | padding: 0px;
38 | }
--------------------------------------------------------------------------------
/doc/Vulnerabilities/CLP-01-016.txt:
--------------------------------------------------------------------------------
1 | CLP-01-016 SRP implementation vulnerable to known attacks (High)
2 |
3 | The Clipperz application implements the Secure Remote Password protocol
4 | for authentication. The implementation adheres to the original protocol
5 | specification from 1998 and is not standardized. The third revision
6 | (SRP-3) is described in RFC2459, and has since revised several times to
7 | prevent against attacks. Two attacks, ?two-for-one? guessing attack and
8 | message ordering attack, are detailed in the paper ?SRP-6 Improvements
9 | and Refinements of the Secure Remote Password Protocol?. The latest
10 | revision of the protocol SRP-6 is being standardized in IEEE P1363 and
11 | ISO/IEC 11770-4.
12 |
13 | Specifically, the implementation is missing the k value introduced in
14 | SRP-6 to prevent the ?two-for-one? attack. The k value is used on the
15 | server side to compute B=kv+gb and on the client side to compute
16 | S=(B-kgx)(a+ux). Also, the exchange of messages follows the SRP-3
17 | optimized ordering, not the standard or optimized message ordering of
18 | SRP-6, which was introduced to prevent a message ordering attack. Note
19 | also that the computation of M1=H(A | B | K) does not adhere to
20 | M1=H(H(N) XOR H(g) | H(I) | s | A | B | K) as specified by the standard.
--------------------------------------------------------------------------------
/scripts/builder/backends/devBuilder.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: UTF-8 -*-
3 |
4 | import os
5 | import shutil
6 | import subprocess
7 | import main
8 |
9 | from backendBuilder import BackendBuilder
10 |
11 | class DevBuilder(BackendBuilder):
12 |
13 | def name(self):
14 | return "Dev builder"
15 |
16 |
17 | def relativePath(self):
18 | return 'dev'
19 |
20 |
21 | def compileCode (self):
22 | pass
23 |
24 |
25 | def createPackage (self):
26 | src = self.tempFolder()
27 | dst = self.targetFolder()
28 |
29 | shutil.copytree(src, dst)
30 |
31 |
32 | def run (self):
33 | print self.name() + " - RUN (dev)"
34 |
35 | for frontend in self.frontends:
36 | if (frontend.module == frontend.submodule):
37 | submoduleExtension = ''
38 | else:
39 | submoduleExtension = '.' + frontend.submodule
40 |
41 | main.createFolder(os.path.join(self.frontEndTempFolder(), frontend.module))
42 | frontend.copyResourcesToFolder(self.frontEndTempFolder(), self.settings)
43 |
44 | index = self.configureIndexContent(frontend.assemble(assemblyMode='DEBUG', versionType='DEBUG'))
45 | self.writeToFolder(self.frontEndTempFolder(), os.path.join(frontend.module, 'index' + submoduleExtension + '.html'), index)
46 |
47 | self.createPackage()
48 |
49 |
50 |
--------------------------------------------------------------------------------
/frontend/delta/scss/core/parameters.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2018 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | //$selectionPanelWidth: 200px;
25 | //$cardListWidth: 200px;
26 |
27 | $selectionPanelFlexWidth: 1;
28 | $cardContentPanelFlexWidth: 4;
29 |
30 | $mainCardToolbarHeight: 48px;
31 |
32 | $cardListPadding: 100px;
33 | $cardListWidth: 1;
34 | $cardDetailWidth: 2;
35 |
36 | $selectionPanelWidth: 250px;
37 | $settingsPanelWidth: 300px;
38 |
39 |
--------------------------------------------------------------------------------
/frontend/gamma/tests/tests/Bookmarklet/index.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 | Complete TEST suite
27 |
28 |
29 |
30 |
31 |
36 |
37 |
--------------------------------------------------------------------------------
/backend/php/src/setup/setup_library/authentication.php:
--------------------------------------------------------------------------------
1 | 0 && $GLOBALS['configuration']['setup_password'] != "" && (!isset($_SESSION['authenticated']) || !$_SESSION['authenticated']))
3 | {
4 | if ($_POST['setup_password'] == $GLOBALS['configuration']['setup_password'])
5 | {
6 | $_SESSION['authenticated'] = true;
7 | }
8 | $_POST = null;
9 | }
10 | if ((!isset($_SESSION['authenticated']) || !$_SESSION['authenticated']) && $GLOBALS['configuration']['setup_password'] != "")
11 | {
12 | ?>
13 |
14 |
15 |
16 | Php Object Generator Setup =$GLOBALS['configuration']['versionNumber'].$GLOBALS['configuration']['revisionNumber']?>
17 |
18 |
19 |
20 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/backend/php/src/setup/setup_library/xPandMenu.css:
--------------------------------------------------------------------------------
1 | #container {
2 | width:500px;
3 | background-color:#E7E9EE;
4 | }
5 | .Xtree, .XtreeRoot {
6 | list-style-type:none;
7 | margin:15px 20px;
8 | }
9 | .Xtree {
10 | /* Indentation of a sub-item compared to its parent */
11 | padding-left:25px;
12 | margin-left:3px;
13 | border-left:1px dotted #998D05;
14 | width:100%;
15 | }
16 | .Xnode {
17 | /* Top and bottom space for a node item */
18 | margin-top:-3px;margin-bottom:3px;
19 | /* Height of the node item */
20 | height:20px;
21 | /* Node background color */
22 | background:#E7E9EE;
23 | /* Font specifications for a node */
24 | font-weight:bold;
25 | font-size:10px;
26 | cursor:pointer;
27 | vertical-align:middle;
28 | width:100%;
29 | }
30 | .Xnode img{ vertical-align:middle; }
31 | .Xleaf {
32 | /* Top and bottom space for a leaf item */
33 | margin-top:-10px;margin-bottom:1px;
34 | /* Height of the leag item */
35 | /* Leaf background color */
36 | /* Font specifications for a leaf */
37 | font-weight:normal;
38 | font-size:10px;
39 | padding:2px;
40 | }
41 | .Xnode a {
42 | text-decoration:none;
43 | }
44 | .Xnode a:hover {
45 | color:red;
46 | text-decoration:underline;
47 | }
48 | .Xleaf a {
49 | text-decoration:none;
50 | }
51 | .Xleaf a:hover {
52 | color:red;
53 | text-decoration:none;
54 | background:#eee;
55 | }
--------------------------------------------------------------------------------
/frontend/beta/js/YUI-extensions/dd/DropTarget.js:
--------------------------------------------------------------------------------
1 | // kill drag drop dependency
2 | if(YAHOO.util.DragDrop){
3 |
4 | YAHOO.ext.dd.DropTarget = function(el, config){
5 | this.el = getEl(el);
6 |
7 | YAHOO.ext.util.Config.apply(this, config);
8 |
9 | if(this.containerScroll){
10 | YAHOO.ext.dd.ScrollManager.register(this.el);
11 | }
12 |
13 | YAHOO.ext.dd.DropTarget.superclass.constructor.call(this, this.el.dom, this.ddGroup || this.group,
14 | {isTarget: true});
15 |
16 | };
17 |
18 | YAHOO.extendX(YAHOO.ext.dd.DropTarget, YAHOO.util.DDTarget, {
19 | isTarget : true,
20 | isNotifyTarget : true,
21 | dropAllowed : 'ydd-drop-ok',
22 | dropNotAllowed : 'ydd-drop-nodrop',
23 |
24 | notifyEnter : function(dd, e, data){
25 | if(this.overClass){
26 | this.el.addClass(this.overClass);
27 | }
28 | return this.dropAllowed;
29 | },
30 |
31 | notifyOver : function(dd, e, data){
32 | return this.dropAllowed;
33 | },
34 |
35 | notifyOut : function(dd, e, data){
36 | if(this.overClass){
37 | this.el.removeClass(this.overClass);
38 | }
39 | },
40 |
41 | notifyDrop : function(dd, e, data){
42 | return false;
43 | }
44 | });
45 | }
46 |
--------------------------------------------------------------------------------
/backend/flask/src/db_repository/migrate.cfg:
--------------------------------------------------------------------------------
1 | [db_settings]
2 | # Used to identify which repository this database is versioned under.
3 | # You can use the name of your project.
4 | repository_id=clpperz
5 |
6 | # The name of the database table used to track the schema version.
7 | # This name shouldn't already be used by your project.
8 | # If this is changed once a database is under version control, you'll need to
9 | # change the table name in each database too.
10 | version_table=migrate_version
11 |
12 | # When committing a change script, Migrate will attempt to generate the
13 | # sql for all supported databases; normally, if one of them fails - probably
14 | # because you don't have that database installed - it is ignored and the
15 | # commit continues, perhaps ending successfully.
16 | # Databases in this list MUST compile successfully during a commit, or the
17 | # entire commit will fail. List the databases your application will actually
18 | # be using to ensure your updates to that database work properly.
19 | # This must be a list; example: ['postgres','sqlite']
20 | required_dbs=[]
21 |
22 | # When creating new change scripts, Migrate will stamp the new script with
23 | # a version number. By default this is latest_version + 1. You can set this
24 | # to 'true' to tell Migrate to use the UTC timestamp instead.
25 | use_timestamp_numbering=False
26 |
--------------------------------------------------------------------------------
/frontend/delta/scss/core/reset.scss:
--------------------------------------------------------------------------------
1 | // Downloaded on June 11, 2014 from: https://gist.github.com/hcatlin/1027867
2 |
3 | /* http://meyerweb.com/eric/tools/css/reset/
4 | v2.0 | 20110126
5 | License: none (public domain)
6 | */
7 |
8 | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
9 | margin: 0;
10 | padding: 0;
11 | border: 0;
12 | font-size: 100%;
13 | font: inherit;
14 | vertical-align: baseline;
15 | }
16 |
17 | /* HTML5 display-role reset for older browsers */
18 |
19 | article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
20 | display: block;
21 | }
22 |
23 | body {
24 | line-height: 1;
25 | }
26 |
27 | ol, ul {
28 | list-style: none;
29 | }
30 |
31 | blockquote, q {
32 | quotes: none;
33 |
34 | &:before, &:after, {
35 | content: '';
36 | content: none;
37 | }
38 | }
39 |
40 | table {
41 | border-collapse: collapse;
42 | border-spacing: 0;
43 | }
--------------------------------------------------------------------------------
/frontend/beta/staticResources/clipperz_directLogin.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 | Clipperz DirectLogin
27 |
28 |
29 |
34 |
35 |
--------------------------------------------------------------------------------
/scripts/builder/frontends/gammaBuilder.py:
--------------------------------------------------------------------------------
1 | from frontendBuilder import FrontendBuilder
2 | import shutil
3 |
4 | class GammaBuilder(FrontendBuilder):
5 |
6 | def name(self):
7 | return "/gamma builder"
8 |
9 | def projectResourceTypes (self):
10 | return ['js', 'css', 'images']
11 |
12 | # def copyStaticResources (self, targetFolder):
13 | def copyResourcesToFolder (self, targetFolder, backendSettings):
14 | self.copyResources(self.projectDir, targetFolder, 'images')
15 |
16 | resourcesToCopy = [
17 | {'folder': 'html', 'source': 'exit_template.html', 'target': 'exit.html'},
18 | # {'folder': 'html', 'source': 'exit_template.html', 'target': 'logout.html'},
19 | {'folder': 'css', 'source': 'static.css', 'target': 'static.css'}
20 | ]
21 |
22 | for resource in resourcesToCopy:
23 | src = self.absolutePathForSourceFile(resource['folder'], resource['source'])
24 | dst = self.absolutePathForTargetFile(targetFolder, '', resource['target'])
25 | shutil.copy2(src, dst)
26 |
27 | # src = self.absolutePathForSourceFile('html', 'exit_template.html')
28 | # dst = self.absolutePathForTargetFile(targetFolder, '', 'exit.html')
29 | # shutil.copy2(src, dst)
30 |
31 | # src = self.absolutePathForSourceFile('css', 'static.css')
32 | # dst = self.absolutePathForTargetFile(targetFolder, '', 'static.css')
33 | # shutil.copy2(src, dst)
34 |
--------------------------------------------------------------------------------
/frontend/delta/js/React/react-dom-0.14.7.js:
--------------------------------------------------------------------------------
1 | /**
2 | * ReactDOM v0.14.7
3 | *
4 | * Copyright 2013-2015, Facebook, Inc.
5 | * All rights reserved.
6 | *
7 | * This source code is licensed under the BSD-style license found in the
8 | * LICENSE file in the root directory of this source tree. An additional grant
9 | * of patent rights can be found in the PATENTS file in the same directory.
10 | *
11 | */
12 | // Based off https://github.com/ForbesLindesay/umd/blob/master/template.js
13 | ;(function(f) {
14 | // CommonJS
15 | if (typeof exports === "object" && typeof module !== "undefined") {
16 | module.exports = f(require('react'));
17 |
18 | // RequireJS
19 | } else if (typeof define === "function" && define.amd) {
20 | define(['react'], f);
21 |
22 | //
29 |
30 |
31 |
32 |
39 |
40 |
--------------------------------------------------------------------------------
/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/index.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 | Clipperz.PM.UI.Web* - tests
27 |
28 |
29 |
30 |
31 |
32 |
39 |
40 |
--------------------------------------------------------------------------------
/scripts/builder/backends/checksumBuilder.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: UTF-8 -*-
3 |
4 | import os
5 | import shutil
6 | import subprocess
7 | import main
8 |
9 | from backendBuilder import BackendBuilder
10 |
11 | class ChecksumBuilder(BackendBuilder):
12 |
13 | def name(self):
14 | return "Checksum builder"
15 |
16 |
17 | def relativePath(self):
18 | return 'checksum'
19 |
20 |
21 | def compileCode (self):
22 | pass
23 |
24 |
25 | def createPackage (self):
26 | src = self.tempFolder()
27 | dst = self.targetFolder()
28 |
29 | shutil.copytree(src, dst)
30 |
31 |
32 | def run (self):
33 | print self.name() + " - RUN (checksum)"
34 |
35 | for frontend in self.frontends:
36 | if (frontend.module == frontend.submodule):
37 | submoduleExtension = ''
38 | else:
39 | submoduleExtension = '.' + frontend.submodule
40 |
41 | main.createFolder(os.path.join(self.frontEndTempFolder(), frontend.module))
42 |
43 | index = self.configureIndexContent(frontend.assemble())
44 | self.writeToFolder(self.frontEndTempFolder(), os.path.join(frontend.module, 'index' + submoduleExtension + '.html'), index)
45 | frontend.copyResourcesToFolder(self.frontEndTempFolder(), self.settings)
46 | self.logChecksums(index, "[" + self.name() + " - " + frontend.module + "] index" + submoduleExtension + ".html checksum")
47 | print ""
48 |
49 | self.createPackage()
50 |
51 |
52 |
--------------------------------------------------------------------------------
/backend/php/src/configuration.php:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/backend/php/src/setup/setup_library/inc.header.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Php Object Generator Setup =$GLOBALS['configuration']['versionNumber'].$GLOBALS['configuration']['revisionNumber']?>
5 |
6 |
7 |
8 |
9 |
10 |
11 |
25 |
28 |
36 |
--------------------------------------------------------------------------------
/frontend/beta/js/Clipperz/PM/Strings/Strings_he-IL.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | //=============================================================================
25 | //
26 | // H E B R E W (he_IL)
27 | //
28 | //=============================================================================
29 |
30 | Clipperz.PM.Strings.Languages['he-il'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
31 |
32 | //-------------------------------------------------------------------------
33 | __syntaxFix__: "syntax fix"
34 | });
35 |
36 |
--------------------------------------------------------------------------------
/frontend/beta/css/yui-extensions/dd.css:
--------------------------------------------------------------------------------
1 | .ydd-drag-proxy{
2 | position:absolute;
3 | left:0;top:0;
4 | visibility:hidden;
5 | z-index:15000;
6 | }
7 | .ydd-drag-ghost{
8 | color: black;
9 | font: normal 11px arial, helvetica, sans-serif;
10 | -moz-opacity: 0.85;
11 | opacity:.85;
12 | filter: alpha(opacity=85);
13 | border-top:1px solid #dddddd;
14 | border-left:1px solid #dddddd;
15 | border-right:1px solid #bbbbbb;
16 | border-bottom:1px solid #bbbbbb;
17 | padding:3px;
18 | padding-left:20px;
19 | background-color:white;
20 | white-space:nowrap;
21 | }
22 | .ydd-drag-repair .ydd-drag-ghost{
23 | -moz-opacity: 0.4;
24 | opacity:.4;
25 | filter: alpha(opacity=40);
26 | border:0 none;
27 | padding:0;
28 | background-color:transparent;
29 | }
30 | .ydd-drag-repair .ydd-drop-icon{
31 | visibility:hidden;
32 | }
33 | .ydd-drop-icon{
34 | position:absolute;
35 | top:3px;
36 | left:3px;
37 | display:block;
38 | width:16px;
39 | height:16px;
40 | background-color:transparent;
41 | background-position: center;
42 | background-repeat: no-repeat;
43 | z-index:1;
44 | }
45 | .ydd-drop-nodrop .ydd-drop-icon{
46 | background-image: url(./images/default/dd/drop-no.gif);
47 | }
48 | .ydd-drop-ok .ydd-drop-icon{
49 | background-image: url(./images/default/dd/drop-yes.gif);
50 | }
51 | .ydd-drop-ok-add .ydd-drop-icon{
52 | background-image: url(./images/default/dd/drop-add.gif);
53 | }
54 |
--------------------------------------------------------------------------------
/frontend/beta/js/Clipperz/PM/Strings/Strings_pt-PT.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | //=============================================================================
25 | //
26 | // P O R T U G U Ê S ( pt_PT )
27 | //
28 | //=============================================================================
29 |
30 | Clipperz.PM.Strings.Languages['pt-pt'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['pt-br'], {
31 |
32 |
33 |
34 | //-------------------------------------------------------------------------
35 | __syntaxFix__: "syntax fix"
36 | });
37 |
38 |
--------------------------------------------------------------------------------
/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/index.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 | Clipperz.PM.UI.Web.Controllers.* - tests
27 |
28 |
29 |
30 |
31 |
32 |
40 |
41 |
--------------------------------------------------------------------------------
/frontend/beta/js/BookmarkletHash.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | // 18f820faffcdb5e847d4c5d5c4a1de6743baa1a0
25 | // 9b30434c73fb009b15fecaa904b44f9ced807577
26 | // 9b30434c73fb009b15fecaa904b44f9ced807577
27 | var xh;
28 | var documentText;
29 |
30 | try {
31 | xh=new XMLHttpRequest();
32 | } catch(e) {
33 | xh=new ActiveXObject("Msxml2.XMLHTTP");
34 | }
35 |
36 | xh.open("GET", window.location, false);
37 | xh.send(null);
38 |
39 | documentText = "#####" + xh.responseText + "####";
40 | //documentText = document.body.innerHTML;
41 |
42 | console.log(documentText);
--------------------------------------------------------------------------------
/frontend/delta/tests/SimpleTest/test.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2018 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | .test_ok {
25 | color: green;
26 | display: none;
27 | }
28 | .test_not_ok {
29 | color: red;
30 | display: block;
31 | }
32 |
33 | .test_ok, .test_not_ok {
34 | border-bottom-width: 2px;
35 | border-bottom-style: solid;
36 | border-bottom-color: black;
37 | }
38 |
39 | .all_pass {
40 | background-color: lime;
41 | }
42 |
43 | .some_fail {
44 | background-color: red;
45 | }
46 |
47 | .tests_report {
48 | border-width: 2px;
49 | border-style: solid;
50 | width: 20em;
51 | }
52 |
--------------------------------------------------------------------------------
/frontend/gamma/js/BookmarkletHash.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | // 18f820faffcdb5e847d4c5d5c4a1de6743baa1a0
25 | // 9b30434c73fb009b15fecaa904b44f9ced807577
26 | // 9b30434c73fb009b15fecaa904b44f9ced807577
27 | var xh;
28 | var documentText;
29 |
30 | try {
31 | xh=new XMLHttpRequest();
32 | } catch(e) {
33 | xh=new ActiveXObject("Msxml2.XMLHTTP");
34 | }
35 |
36 | xh.open("GET", window.location, false);
37 | xh.send(null);
38 |
39 | documentText = "#####" + xh.responseText + "####";
40 | //documentText = document.body.innerHTML;
41 |
42 | //console.log(documentText);
--------------------------------------------------------------------------------
/frontend/delta/tests/tests/Clipperz/PM/DataModel/index.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 | Clipperz.PM.DataModel.* - tests
27 |
28 |
29 |
30 |
31 |
32 |
41 |
42 |
--------------------------------------------------------------------------------
/frontend/gamma/tests/tests/Clipperz/PM/DataModel/index.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 | Clipperz.PM.DataModel.* - tests
27 |
28 |
29 |
30 |
31 |
32 |
41 |
42 |
--------------------------------------------------------------------------------
/frontend/gamma/tests/tests/Clipperz/index.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 | Clipperz.* - tests
27 |
28 |
29 |
30 |
31 |
43 |
44 |
--------------------------------------------------------------------------------
/frontend/delta/js/Clipperz/PM/DataModel/Feature.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2018 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | "use strict";
25 | Clipperz.Base.module('Clipperz.PM.DataModel');
26 |
27 | Clipperz.PM.DataModel.Feature = {
28 | 'featureSets': {
29 | 'TRIAL': 'Trial',
30 | 'FULL': 'All features',
31 | 'EXPIRED': 'Expired'
32 | },
33 | 'features': {
34 | 'OFFLINE_COPY': 'Offline copy',
35 | 'LIST_CARDS': 'List cards',
36 | 'CARD_DETAILS': 'Card details',
37 | 'EDIT_CARD': 'Edit card',
38 | 'ADD_CARD': 'Add card',
39 | 'DELETE_CARD': 'Delete card',
40 | 'UPDATE_CREDENTIALS': 'Update credentials',
41 | }
42 | }
43 |
44 |
--------------------------------------------------------------------------------
/frontend/delta/js/Clipperz/PM/UI/Components/Pages/CardDetailPage.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2018 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | Clipperz.Base.module('Clipperz.PM.UI.Components.Pages');
25 |
26 | Clipperz.PM.UI.Components.Pages.CardDetailPageClass = React.createClass({
27 |
28 | displayName: 'Clipperz.PM.UI.Components.Pages.CardDetailPage',
29 |
30 | propTypes: {
31 | 'allTags': React.PropTypes.array,
32 | },
33 |
34 | render: function () {
35 | return Clipperz.PM.UI.Components.Cards.Detail(this.props);
36 | }
37 | });
38 |
39 | Clipperz.PM.UI.Components.Pages.CardDetailPage = React.createFactory(Clipperz.PM.UI.Components.Pages.CardDetailPageClass);
--------------------------------------------------------------------------------
/backend/flask/src/clipperz/__init__.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | from flask import Flask
4 | from flask.ext.login import LoginManager
5 | from flask.ext.sqlalchemy import SQLAlchemy
6 | from simplekv.db.sql import SQLAlchemyStore
7 | from flask.ext.kvsession import KVSessionExtension
8 | from config import *
9 |
10 | APP_ROOT = os.path.dirname(os.path.abspath(__file__))
11 | app = Flask(__name__, static_url_path='')
12 | lm = LoginManager()
13 | lm.init_app(app)
14 | app.config.from_object(DevelopmentConfig)
15 | db = SQLAlchemy(app)
16 | store = SQLAlchemyStore(db.engine, db.metadata, 'sessions')
17 | kvsession = KVSessionExtension(store, app)
18 |
19 | if not app.debug and os.environ.get('HEROKU') is None:
20 | import logging
21 | from logging.handlers import RotatingFileHandler
22 | file_handler = RotatingFileHandler('tmp/microblog.log', 'a',
23 | 1 * 1024 * 1024, 10)
24 | file_handler.setLevel(logging.INFO)
25 | file_handler.setFormatter(logging.Formatter(
26 | '%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]'))
27 | app.logger.addHandler(file_handler)
28 | app.logger.setLevel(logging.INFO)
29 | app.logger.info('microblog startup')
30 |
31 | if os.environ.get('HEROKU') is not None:
32 | import logging
33 | stream_handler = logging.StreamHandler()
34 | app.logger.addHandler(stream_handler)
35 | app.logger.setLevel(logging.INFO)
36 | app.logger.info('microblog startup')
37 |
38 | from clipperz import views, models, api
39 |
--------------------------------------------------------------------------------
/frontend/gamma/tests/tests/Clipperz/index_googleCode.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
44 |
45 |
--------------------------------------------------------------------------------
/properties/license.txt:
--------------------------------------------------------------------------------
1 |
2 | GNU AFFERO GENERAL PUBLIC LICENSE
3 |
4 | Copyright 2008-2018 Clipperz Srl
5 |
6 | This file is part of Clipperz, a web application for encrypting texts and
7 | documents, store them in the cloud, share them securely.
8 | Built on web cryptography and powered by blockchain technology.
9 |
10 | For further information about Clipperz: https://clipperz.is
11 |
12 | # Clipperz is free software: you can redistribute it and/or modify it under
13 | the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by the Free
14 | Software Foundation, either version 3 of the License, or (at your option) any
15 | later version.
16 |
17 | # Clipperz is distributed in the hope that it will be useful, but WITHOUT ANY
18 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
19 | A PARTICULAR PURPOSE. See the Affero GNU General Public License for more
20 | details.
21 |
22 | # You should have received a copy of the GNU Affero General Public License
23 | along with Clipperz. If not, see .
24 |
25 | ===============================================================================
26 |
27 | # PLEASE NOTE
28 | The code in this page has been processed with a JavaScript compressor and is
29 | thus difficult to read. To get the exact version of the code used to build
30 | this application refer to this page:
31 |
32 |
33 | ===============================================================================
--------------------------------------------------------------------------------
/frontend/beta/js/Clipperz/PM/Strings/Strings_en-CA.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | //=============================================================================
25 | //
26 | // E N G L I S H C A N A D I A N ( en_CA )
27 | //
28 | //=============================================================================
29 |
30 | Clipperz.PM.Strings.Languages['en-ca'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
31 |
32 | // 'forumHeaderLinkLabel': "forum-CA",
33 |
34 | // 'recordMenuLabel': "cards-CA",
35 |
36 | //-------------------------------------------------------------------------
37 | __syntaxFix__: "syntax fix"
38 | });
--------------------------------------------------------------------------------
/frontend/beta/js/Clipperz/PM/Strings/Strings_en-GB.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | //=============================================================================
25 | //
26 | // E N G L I S H B R I T I S H ( en_GB )
27 | //
28 | //=============================================================================
29 |
30 | Clipperz.PM.Strings.Languages['en-gb'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
31 |
32 | // 'forumHeaderLinkLabel': "forum-GB",
33 |
34 | // 'recordMenuLabel': "cards-GB",
35 |
36 | //-------------------------------------------------------------------------
37 | __syntaxFix__: "syntax fix"
38 | });
--------------------------------------------------------------------------------
/frontend/beta/css/yui-extensions/button.css:
--------------------------------------------------------------------------------
1 | .ybtn{
2 | font:normal 11px arial, tahoma, verdana, helvetica;
3 | cursor:pointer;
4 | white-space: nowrap;
5 | }
6 | .ybtn-left, .ybtn-right{
7 | font-size:1px;
8 | line-height:1px;
9 | }
10 | .ybtn-left{
11 | width:3px;
12 | height:21px;
13 | background:url(./images/default/basic-dialog/btn-sprite.gif) no-repeat 0 0;
14 | }
15 | .ybtn-right{
16 | width:3px;
17 | height:21px;
18 | background:url(./images/default/basic-dialog/btn-sprite.gif) no-repeat 0 -21px;
19 | }
20 | .ybtn-focus{
21 | text-decoration:none !important;
22 | color:black !important;
23 | display: -moz-inline-block;
24 | display:inline-block;
25 | width:auto;
26 | position:relative;
27 | white-space: nowrap;
28 | }
29 | .ybtn-center{
30 | background:url(./images/default/basic-dialog/btn-sprite.gif) repeat-x 0 -42px;
31 | font:normal 11px "san serif",tahoma,verdana,helvetica;
32 | vertical-align: middle;
33 | text-align:center;
34 | padding:0 5px;
35 | cursor:pointer;
36 | white-space:nowrap;
37 | -moz-user-select: none;
38 | -khtml-user-select: none;
39 | }
40 | .ybtn-over .ybtn-left{
41 | background-position:0 -63px;
42 | }
43 | .ybtn-over .ybtn-right{
44 | background-position:0 -84px;
45 | }
46 | .ybtn-over .ybtn-center{
47 | background-position:0 -105px;
48 | }
49 | .ybtn-click .ybtn-center{
50 | background-position:0 -126px;
51 | }
52 | .ybtn-disabled{
53 | cursor:default;
54 | }
55 | .ybtn-disabled .ybtn-center{
56 | color:gray;
57 | cursor:default;
58 | }
59 |
--------------------------------------------------------------------------------
/frontend/gamma/tests/tests/index.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 | Complete TEST suite
27 |
28 |
29 |
30 |
31 |
42 |
43 |
--------------------------------------------------------------------------------
/frontend/beta/css/yui/logger.css:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2006, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt Version: 0.11.3 */
2 | /* logger default styles */
3 | /* font size is controlled here: default 77% */
4 | #yui-log {position:absolute;top:1em;right:1em;font-size:77%;text-align:left;}
5 | /* width is controlled here: default 31em */
6 | .yui-log {padding:1em;width:31em;background-color:#AAA;border:1px solid black;font-family:monospace;z-index:9000;}
7 | .yui-log p {margin:1px;padding:.1em;}
8 | .yui-log button {font-family:monospace;}
9 | .yui-log .yui-log-hd {margin-top:1em;padding:.5em;background-color:#575757;color:#FFF;}
10 | /* height is controlled here: default 20em*/
11 | .yui-log .yui-log-bd {width:100%;height:20em;background-color:#FFF;border:1px solid gray;overflow:auto;}
12 | .yui-log .yui-log-ft {margin-top:.5em;margin-bottom:1em;}
13 | .yui-log .yui-log-ft .yui-log-categoryfilters {}
14 | .yui-log .yui-log-ft .yui-log-sourcefilters {width:100%;border-top:1px solid #575757;margin-top:.75em;padding-top:.75em;}
15 | .yui-log .yui-log-btns {position:relative;float:right;bottom:.25em;}
16 | .yui-log .yui-log-filtergrp {margin-right:.5em;}
17 | .yui-log .info {background-color:#A7CC25;} /* A7CC25 green */
18 | .yui-log .warn {background-color:#F58516;} /* F58516 orange */
19 | .yui-log .error {background-color:#E32F0B;} /* E32F0B red */
20 | .yui-log .time {background-color:#A6C9D7;} /* A6C9D7 blue */
21 | .yui-log .window {background-color:#F2E886;} /* F2E886 tan */
22 |
--------------------------------------------------------------------------------
/frontend/gamma/tests/tests/Clipperz/index_testECC.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
44 |
45 |
--------------------------------------------------------------------------------
/frontend/beta/js/YUI-extensions/tree/TreeDragZone.js:
--------------------------------------------------------------------------------
1 | YAHOO.ext.tree.TreeDragZone = function(tree, config){
2 | YAHOO.ext.tree.TreeDragZone.superclass.constructor.call(this, tree.getEl(), config);
3 | this.tree = tree;
4 | };
5 |
6 | YAHOO.extendX(YAHOO.ext.tree.TreeDragZone, YAHOO.ext.dd.DragZone, {
7 | ddGroup : 'TreeDD',
8 |
9 | onBeforeDrag : function(data, e){
10 | var n = data.node;
11 | return n && n.draggable && !n.disabled;
12 | },
13 |
14 | onInitDrag : function(e){
15 | var data = this.dragData;
16 | this.tree.getSelectionModel().select(data.node);
17 | this.proxy.update('');
18 | data.node.ui.appendDDGhost(this.proxy.ghost.dom);
19 | this.tree.fireEvent('startdrag', this.tree, data.node, e);
20 | },
21 |
22 | getRepairXY : function(e, data){
23 | return data.node.ui.getDDRepairXY();
24 | },
25 |
26 | onEndDrag : function(data, e){
27 | this.tree.fireEvent('enddrag', this.tree, data.node, e);
28 | },
29 |
30 | onValidDrop : function(dd, e, id){
31 | this.tree.fireEvent('dragdrop', this.tree, this.dragData.node, dd, e);
32 | this.hideProxy();
33 | },
34 |
35 | beforeInvalidDrop : function(e, id){
36 | if(YAHOO.util.Anim){
37 | // this scrolls the original position back into view
38 | var sm = this.tree.getSelectionModel();
39 | sm.clearSelections();
40 | sm.select(this.dragData.node);
41 | }
42 | }
43 | });
44 |
--------------------------------------------------------------------------------
/frontend/beta/js/YUI-extensions/CustomTagReader.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @class YAHOO.ext.CustomTagReader
3 | * Utility class to normalize reading of custom tags across browsers.
4 | */
5 | YAHOO.ext.CustomTagReader = function(namespace){
6 | this.namespace = namespace;
7 | };
8 | YAHOO.ext.CustomTagReader.prototype = {
9 | getAttribute : function(el, name, defaultValue){
10 | return (this.useNS ?
11 | v = el.getAttributeNS(this.namespace, name) : null) ||
12 | el.getAttribute(this.namespace+':'+name) ||
13 | el.getAttribute(name);
14 | },
15 |
16 | getElements : function(tagName, targetEl){
17 | targetEl = targetEl || document.body;
18 | var els;
19 | if(this.useNS){ // no namespaces in IE
20 | els = targetEl.getElementsByTagNameNS(this.namespace, tagName);
21 | }
22 | if(!els || els.length < 1){ // ie6, firefox 1.5, firefox 2 depending on doc type
23 | els = targetEl.getElementsByTagName(this.namespace+':'+tagName);
24 | }
25 | if(!els || els.length < 1){ // everyone else
26 | els = targetEl.getElementsByTagName(tagName);
27 | }
28 | return els;
29 | },
30 |
31 | eachElement : function(tagName, targetEl, fn, scope){
32 | var els = this.getElements(tagName, targetEl);
33 | for(var i = 0, len = els.length; i < len; i++) {
34 | var el = els[i];
35 | fn.call(scope || el, el);
36 | }
37 | },
38 |
39 | useNS : (!YAHOO.ext.util.Browser.isIE && document.getElementsByTagNameNS) ? true : false
40 | };
41 |
--------------------------------------------------------------------------------
/frontend/beta/js/YUI-extensions/tree/TreeSorter.js:
--------------------------------------------------------------------------------
1 | YAHOO.ext.tree.TreeSorter = function(tree, config){
2 | YAHOO.ext.util.Config.apply(this, config);
3 | tree.on('beforechildrenrendered', this.doSort, this, true);
4 | tree.on('append', this.updateSort, this, true);
5 | tree.on('insert', this.updateSort, this, true);
6 |
7 | var dsc = this.dir && this.dir.toLowerCase() == 'desc';
8 | var p = this.property || 'text';
9 | var sortType = this.sortType;
10 | var fs = this.folderSort;
11 | var cs = this.caseSensitive === true;
12 |
13 | this.sortFn = function(n1, n2){
14 | if(fs){
15 | if(n1.leaf && !n2.leaf){
16 | return 1;
17 | }
18 | if(!n1.leaf && n2.leaf){
19 | return -1;
20 | }
21 | }
22 | var v1 = sortType ? sortType(n1) : (cs ? n1[p] : n1[p].toUpperCase());
23 | var v2 = sortType ? sortType(n2) : (cs ? n2[p] : n2[p].toUpperCase());
24 | if(v1 < v2){
25 | return dsc ? +1 : -1;
26 | }else if(v1 > v2){
27 | return dsc ? -1 : +1;
28 | }else{
29 | return 0;
30 | }
31 | };
32 | };
33 |
34 | YAHOO.ext.tree.TreeSorter.prototype = {
35 | doSort : function(node){
36 | node.sort(this.sortFn);
37 | },
38 |
39 | compareNodes : function(n1, n2){
40 |
41 | return (n1.text.toUpperCase() > n2.text.toUpperCase() ? 1 : -1);
42 | },
43 |
44 | updateSort : function(tree, node){
45 | if(node.childrenRendered){
46 | this.doSort.defer(1, this, [node]);
47 | }
48 | }
49 | };
50 |
--------------------------------------------------------------------------------
/frontend/gamma/tests/index.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
50 |
51 |
--------------------------------------------------------------------------------
/frontend/gamma/tests/tests/Clipperz/Crypto/index.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 | Clipperz.Crypto.* - tests
27 |
28 |
29 |
30 |
31 |
32 |
53 |
54 |
--------------------------------------------------------------------------------
/frontend/delta/js/Clipperz/PM/UI/Components/ExpiredPanel.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2018 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | Clipperz.Base.module('Clipperz.PM.UI.Components');
25 |
26 | Clipperz.PM.UI.Components.ExpiredPanelClass = React.createClass({
27 |
28 | displayName: 'Clipperz.PM.UI.Components.ExpiredPanel',
29 |
30 | propTypes: {
31 | // featureSet: React.PropTypes.oneOf(['FULL', 'EXPIRED', 'TRIAL']).isRequired,
32 | // 'level': React.PropTypes.oneOf(['hide', 'info', 'warning', 'error']).isRequired
33 | },
34 |
35 | //=========================================================================
36 |
37 | render: function () {
38 | return React.DOM.div({className:'expiredPanel'}, "EXPIRED PANEL");
39 | },
40 |
41 | //=========================================================================
42 | });
43 |
44 | Clipperz.PM.UI.Components.ExpiredPanel = React.createFactory(Clipperz.PM.UI.Components.ExpiredPanelClass);
45 |
--------------------------------------------------------------------------------
/frontend/gamma/tests/tests/Clipperz/PM/index.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 | Clipperz.PM.* - tests
27 |
28 |
29 |
30 |
31 |
32 |
52 |
53 |
--------------------------------------------------------------------------------
/frontend/beta/js/YUI-extensions/grid/editor/SelectEditor.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @class YAHOO.ext.grid.SelectEditor
3 | * @extends YAHOO.ext.grid.CellEditor
4 | Creates an editor out of an existing select field. You can create the select element through DOM in Javascript and pass it to the SelectEditor's constructor or an easier way is like this:
5 |
6 | Define the select field in your document, giving it the ygrid-editor class.
7 |
16 | Create the SelectEditor object, passing in the id of your select field.
17 |
18 | var editor = new YAHOO.ext.grid.SelectEditor('light');
19 |
20 | For more information on using this editor, see this blog post.
21 | * @constructor
22 | * Create a new SelectEditor
23 | * @param {HTMLElement/String} element
24 | */
25 | YAHOO.ext.grid.SelectEditor = function(element){
26 | element.hideFocus = true;
27 | YAHOO.ext.grid.SelectEditor.superclass.constructor.call(this, element);
28 | this.element.swallowEvent('click');
29 | };
30 | YAHOO.extendX(YAHOO.ext.grid.SelectEditor, YAHOO.ext.grid.CellEditor);
31 |
32 | YAHOO.ext.grid.SelectEditor.prototype.fitToCell = function(box){
33 | if(YAHOO.ext.util.Browser.isGecko){
34 | box.height -= 3;
35 | }
36 | this.element.setBox(box, true);
37 | };
38 |
--------------------------------------------------------------------------------
/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TextColumnManager.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
25 |
26 | //#############################################################################
27 |
28 | Clipperz.PM.UI.Web.Components.TextColumnManager = function(args) {
29 | args = args || {};
30 | Clipperz.PM.UI.Web.Components.TextColumnManager.superclass.constructor.call(this, args);
31 |
32 | return this;
33 | }
34 |
35 | //=============================================================================
36 |
37 | Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.TextColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
38 |
39 | 'toString': function () {
40 | return "Clipperz.PM.UI.Web.Components.TextColumnManager component";
41 | },
42 |
43 | //-----------------------------------------------------
44 |
45 | '__syntax_fix__' : 'syntax fix'
46 |
47 | });
48 |
49 |
--------------------------------------------------------------------------------
/frontend/delta/scss/style/errorPage.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2018 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | #errorPage {
25 |
26 | header {
27 | background-color: $clipperz-orange;
28 | color: white;
29 | height: 48px;
30 | text-align: center;
31 | @include icon-font();
32 |
33 | h2 {
34 | font-size: 24pt;
35 | padding-top: 8px;
36 | }
37 | }
38 |
39 | .error-box {
40 | @include border-radius(16px);
41 | background-color: #000;
42 | color: white;
43 |
44 | width: 300px;
45 | height: 300px;
46 | margin-left: auto;
47 | margin-right: auto;
48 | margin-top: 50px;
49 |
50 | div {
51 | padding: 20px;
52 | padding-bottom: 0px;
53 | p {
54 | font-size: 20pt;
55 | line-height: 1.5em;
56 | text-align: center;
57 | padding-bottom: 8px;
58 | }
59 |
60 | &.error-message {
61 | padding-top: 0px;
62 | p {
63 | font-size: 14pt;
64 | color: #333;
65 | }
66 | }
67 | }
68 | }
69 |
70 |
71 | }
--------------------------------------------------------------------------------
/frontend/delta/scss/style/loadingPage.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2018 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | // $Loading_outer_color: $main-color;
25 | // $Loading_inner-color: lighten($Loading_outer-color, 30%);
26 | //
27 | // $Loading_h1-color: lighten($Loading_inner-color, 70%);
28 | // $Loading_h3-color: darken($Loading_outer-color, 20%);
29 |
30 | #loadingPage {
31 | // @include radial-gradient($Loading_inner-color, $Loading_outer-color);
32 | background-color: $main-color;
33 |
34 | div {
35 | vertical-align: middle;
36 | width: 100%;
37 | text-align: center;
38 |
39 | h1 {
40 | font-size: 40pt;
41 | font-weight: bold;
42 | // color: $Loading_h1-color;
43 | color: $main-alternate-text-color;
44 | margin-top: 10%;
45 | margin-bottom: 5px;
46 | }
47 |
48 | h3 {
49 | font-size: 18pt;
50 | // color: $Loading_h3-color;
51 | // color: $main-text-color;
52 | color: $main-alternate-text-color;
53 | margin: 0px;
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/frontend/delta/js/Clipperz/PM/UI/Components/MessageBox.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2018 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | Clipperz.Base.module('Clipperz.PM.UI.Components');
25 |
26 | Clipperz.PM.UI.Components.MessageBoxClass = React.createClass({
27 |
28 | displayName: 'Clipperz.PM.UI.Components.MessageBox',
29 |
30 | propTypes: {
31 | 'level': React.PropTypes.oneOf(['HIDE', 'INFO', 'WARNING', 'ERROR']).isRequired,
32 | 'message': React.PropTypes.string.isRequired
33 | },
34 |
35 | getDefaultProps: function () {
36 | return {
37 | level: 'HIDE',
38 | message: ''
39 | };
40 | },
41 |
42 | //=========================================================================
43 |
44 | render: function () {
45 | return React.DOM.div({className:'messageBox ' + this.props['level']}, this.props['message']);
46 | }
47 |
48 | //=========================================================================
49 | });
50 |
51 | Clipperz.PM.UI.Components.MessageBox = React.createFactory(Clipperz.PM.UI.Components.MessageBoxClass);
52 |
--------------------------------------------------------------------------------
/frontend/gamma/js/Clipperz/PM/UI/Mobile/CustomizeJQueryMobile.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | $(document).on("mobileinit", function() {
25 | $.extend($.mobile, {
26 | // activeBtnClass: 'ui-btn-active',
27 | // activePageClass: 'ui-page-active',
28 | ajaxEnabled: false,
29 | // allowCrossDomainPages: false,
30 | // autoInitializePage: true,
31 | // buttonMarkup.hoverDelay: 200,
32 | // defaultDialogTransition: 'pop',
33 | // defaultPageTransition: 'fade,
34 | // getMaxScrollForTransition: 3,
35 | // gradeA: …,
36 | // hashListeningEnabled: true,
37 | ignoreContentEnabled: true,
38 | // linkBindingEnabled: true,
39 | // maxTransitionWidth: false,
40 | // minScrollBack: 250,
41 | // ns: '',
42 | // pageLoadErrorMessage: "Error Loading Page",
43 | // pageLoadErrorMessageTheme: 'e',
44 | // phonegapNavigationEnabled: false,
45 | // pushStateEnabled: true,
46 | // subPageUrlKey: 'ui-page',
47 | // transitionFallbacks.[transition]: 'fade',
48 | __syntaxFix__: "syntax fix"
49 | })
50 | });
51 |
--------------------------------------------------------------------------------
/frontend/delta/scss/style/dialogBox.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2018 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | div.dialogBox {
25 | div.dialog {
26 | @include box-shadow(0px, 2px, 5px, rgba(50, 50, 50, 0.75));
27 | @include border-radius(8px);
28 |
29 | max-width: 70%;
30 | background-color: white;
31 | padding: 30px;
32 | box-shadow: 4px 4px 6px 5px rgba(0,0,0, 0.3);
33 |
34 | h3.message {
35 | font-size: 18pt;
36 | font-weight: bold;
37 | padding-bottom: 20px;
38 | white-space: pre-wrap;
39 | word-wrap: break-word;
40 | }
41 |
42 | div.answers {
43 |
44 | div.button {
45 | @include border-radius(4);
46 | // border: 1px solid black;
47 | margin-left: 10px;
48 | font-size: 16pt;
49 | padding: 15px 25px;
50 | background-color: #ddd;
51 |
52 | &.isDefault {
53 | font-weight: bold;
54 | color: white;
55 | background-color: #666;
56 | }
57 |
58 | &.disabled {
59 | cursor: default;
60 | color: #aaa;
61 | background-color: #ddd;
62 | font-weight: normal;
63 | }
64 | }
65 | }
66 | }
67 | }
--------------------------------------------------------------------------------
/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Preferences.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | try { if (typeof(Clipperz.PM.DataModel.User) == 'undefined') { throw ""; }} catch (e) {
25 | throw "Clipperz.PM.DataModel.User.Header.Preferences depends on Clipperz.PM.DataModel.User!";
26 | }
27 |
28 | if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; }
29 |
30 | Clipperz.PM.DataModel.User.Header.Preferences = function(args) {
31 | Clipperz.PM.DataModel.User.Header.Preferences.superclass.constructor.apply(this, arguments);
32 |
33 | return this;
34 | }
35 |
36 |
37 | Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.Preferences, Clipperz.PM.DataModel.EncryptedRemoteObject, {
38 |
39 | 'toString': function() {
40 | return "Clipperz.PM.DataModel.User.Header.Preferences";
41 | },
42 |
43 | //-------------------------------------------------------------------------
44 | //=========================================================================
45 | __syntaxFix__: "syntax fix"
46 | });
47 |
48 |
49 |
--------------------------------------------------------------------------------
/frontend/delta/js/Clipperz/PM/UI/Components/Pages/ErrorPage.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2018 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | Clipperz.Base.module('Clipperz.PM.UI.Components.Pages');
25 |
26 | Clipperz.PM.UI.Components.Pages.ErrorPageClass = React.createClass({
27 |
28 | displayName: 'Clipperz.PM.UI.Components.Pages.ErrorPage',
29 |
30 | render: function () {
31 | //console.log("ERROR PAGE", this.props);
32 | return React.DOM.div({}, [
33 | React.DOM.header({}, [
34 | React.DOM.h2({}, 'clipperz')
35 | ]),
36 | React.DOM.div({}, [
37 | React.DOM.div({'className':'error-box'}, [
38 | React.DOM.div({}, [
39 | React.DOM.p({}, "Ops!"),
40 | React.DOM.p({}, "Sorry, something went wrong."),
41 | React.DOM.p({}, "Please reload."),
42 | ]),
43 | React.DOM.div({'className':'error-message'}, [
44 | React.DOM.p({}, this.props['error'] ? this.props['error']['message'] : '')
45 | ])
46 | ])
47 | ])
48 | ])
49 | }
50 | });
51 |
52 | Clipperz.PM.UI.Components.Pages.ErrorPage = React.createFactory(Clipperz.PM.UI.Components.Pages.ErrorPageClass);
53 |
--------------------------------------------------------------------------------
/frontend/gamma/js/Clipperz/PM/UI/Canvas/Logo/normal.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | //
25 | // normal.js
26 | // New Image
27 | //
28 | // Created by Giulio Cesare Solaroli on 2/13/12
29 | // Copyright 2012 Clipperz
30 | // This code was generated by Opacity. You may use or modify it in any way.
31 | //
32 |
33 | var kClipperz_PM_UI_Canvas_Logo_normalWidth = 150.0;
34 | var kClipperz_PM_UI_Canvas_Logo_normalHeight = 39.0;
35 |
36 | function Clipperz_PM_UI_Canvas_Logo_normal(canvas, logo, fontSize, text_color)
37 | {
38 | var context = canvas.getContext("2d");
39 |
40 | canvas.width = kClipperz_PM_UI_Canvas_Logo_normalWidth;
41 | canvas.height = kClipperz_PM_UI_Canvas_Logo_normalHeight;
42 |
43 | context.save();
44 | context.scale(canvas.width / kClipperz_PM_UI_Canvas_Logo_normalWidth, canvas.height / kClipperz_PM_UI_Canvas_Logo_normalHeight);
45 | context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Logo_normalWidth, kClipperz_PM_UI_Canvas_Logo_normalHeight);
46 |
47 | context.font = fontSize + " HelveticaNeue-Bold";
48 | context.fillStyle = text_color;
49 | context.fillText(logo, 3, 30);
50 |
51 | context.restore();
52 | }
53 |
--------------------------------------------------------------------------------
/frontend/delta/js/Clipperz/PM/UI/Components.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2018 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | "use strict";
25 | Clipperz.Base.module('Clipperz.PM.UI');
26 |
27 | // code snippet taken on March 23, 2015 from here: https://github.com/JedWatson/classnames/blob/master/index.js
28 | // This code is licensed with the The MIT License (MIT) - Copyright (c) 2015 Jed Watson
29 | // https://github.com/JedWatson/classnames/blob/master/LICENSE
30 |
31 | Clipperz.PM.UI.Components = {
32 | 'classNames': function () {
33 | var classes = '';
34 | var arg;
35 |
36 | for (var i = 0; i < arguments.length; i++) {
37 | arg = arguments[i];
38 | if (!arg) {
39 | continue;
40 | }
41 |
42 | if ('string' === typeof arg || 'number' === typeof arg) {
43 | classes += ' ' + arg;
44 | } else if (Object.prototype.toString.call(arg) === '[object Array]') {
45 | classes += ' ' + classNames.apply(null, arg);
46 | } else if ('object' === typeof arg) {
47 | for (var key in arg) {
48 | if (!arg.hasOwnProperty(key) || !arg[key]) {
49 | continue;
50 | }
51 | classes += ' ' + key;
52 | }
53 | }
54 | }
55 | return classes.substr(1);
56 | }
57 | }
--------------------------------------------------------------------------------
/frontend/gamma/js/Clipperz/PM/UI/Compact/MainController.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2008-2015 Clipperz Srl
4 |
5 | This file is part of Clipperz, the online password manager.
6 | For further information about its features and functionalities please
7 | refer to http://www.clipperz.com.
8 |
9 | * Clipperz is free software: you can redistribute it and/or modify it
10 | under the terms of the GNU Affero General Public License as published
11 | by the Free Software Foundation, either version 3 of the License, or
12 | (at your option) any later version.
13 |
14 | * Clipperz is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 | See the GNU Affero General Public License for more details.
18 |
19 | * You should have received a copy of the GNU Affero General Public
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 |
22 | */
23 |
24 | Clipperz.Base.module('Clipperz.PM.UI.Compact');
25 |
26 | Clipperz.PM.UI.Compact.MainController = function() {
27 | // this._loginPanel = null;
28 | // this._user = null;
29 | //
30 | // this._isRunningCompact = false;
31 | //
32 | // Clipperz.NotificationCenter.register(null, 'userConnected', this, 'userConnectedCallback');
33 | // Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler');
34 | //
35 | // Clipperz.NotificationCenter.register(null, 'EXCEPTION', this, 'reportException');
36 |
37 | return this;
38 | }
39 |
40 | MochiKit.Base.update(Clipperz.PM.UI.Compact.MainController.prototype, {
41 |
42 | 'toString': function() {
43 | return "Clipperz.PM.UI.Compact.MainController";
44 | },
45 |
46 | //-----------------------------------------------------------------------------
47 |
48 | 'run': function(shouldShowRegistrationForm) {
49 | Clipperz.logDebug("running " + this.toString());
50 | },
51 |
52 | //-----------------------------------------------------------------------------
53 | __syntaxFix__: "syntax fix"
54 | });
--------------------------------------------------------------------------------
/frontend/gamma/tests/tests/Clipperz/Set.html:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 | Clipperz.Set - test
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/doc/Vulnerabilities/CLP-01-002.txt:
--------------------------------------------------------------------------------
1 | CLP-01-002 Remote Code Execution in PHP Backend (Critical)
2 |
3 | The PHP backend is vulnerable to Remote Code Execution attacks. In the
4 | file setup/rpc.php, the name of a class can be specified in the
5 | parameter objectname of which an object is later instantiated within an
6 | eval() statement.
7 |
8 | $objectName = isset($_REQUEST['objectname']) ? $_REQUEST['objectname'] : '';
9 | [...]
10 | eval ('$instance = new '.$objectName.'();');
11 | [...]
12 | switch($action)
13 | {
14 | case 'Add':
15 | eval ('$instance = new '.$objectName.'();');
16 | [...]
17 | case 'Delete':
18 | eval ('$instance = new '.$objectName.'();');
19 | [...]
20 | case 'Update':
21 | eval ('$instance = new '.$objectName.'();');
22 |
23 | function RefreshTree($objectName, $root, $offset = '', $limit = '')
24 | {
25 | [...]
26 | eval ('$instance = new '.$objectName.'();');
27 |
28 | An attacker can add arbitrary PHP code to the objectname parameter that
29 | is then executed on the web server. This allows to fully compromise the
30 | web server and its data.
31 |
32 | /setup/rpc.php?objectname=stdClass();system(?whoami?);phpinfo
33 |
34 | Note that the setup routine can be protected by a password (empty by
35 | default) but the affected file setup/rpc.php does not include the file
36 | setup_library/authentication.php that performs the actual authentication
37 | check. Thus, the attack can be executed by any user as long as the setup
38 | directory exists.
39 |
40 | PHP allows to dynamically call methods and constructors without using
41 | the eval() operator by using reflection. Here, no execution of arbitrary
42 | PHP code is possible.
43 |
44 | $instance = new $objectName();
45 |
46 | However, arbitrary constructors can be accessed that can lead to
47 | unwanted behavior. Thus, the objectName parameter should be validated
48 | against a whitelist which is already available in the $objects array
49 | filled in line 28. Other names should be rejected by the application.
50 |
51 | if(!in_array($objectName, $objects))
52 | exit;
53 |
--------------------------------------------------------------------------------