etcweb 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. checksums.yaml +7 -0
  2. data/.bowerrc +3 -0
  3. data/.gitignore +9 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +19 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +36 -0
  9. data/Rakefile +1 -0
  10. data/app/bower_components/jquery/.bower.json +37 -0
  11. data/app/bower_components/jquery/MIT-LICENSE.txt +21 -0
  12. data/app/bower_components/jquery/bower.json +27 -0
  13. data/app/bower_components/jquery/dist/jquery.js +9205 -0
  14. data/app/bower_components/jquery/dist/jquery.min.js +5 -0
  15. data/app/bower_components/jquery/dist/jquery.min.map +1 -0
  16. data/app/bower_components/jquery/src/ajax.js +786 -0
  17. data/app/bower_components/jquery/src/ajax/jsonp.js +89 -0
  18. data/app/bower_components/jquery/src/ajax/load.js +75 -0
  19. data/app/bower_components/jquery/src/ajax/parseJSON.js +13 -0
  20. data/app/bower_components/jquery/src/ajax/parseXML.js +28 -0
  21. data/app/bower_components/jquery/src/ajax/script.js +64 -0
  22. data/app/bower_components/jquery/src/ajax/var/nonce.js +5 -0
  23. data/app/bower_components/jquery/src/ajax/var/rquery.js +3 -0
  24. data/app/bower_components/jquery/src/ajax/xhr.js +136 -0
  25. data/app/bower_components/jquery/src/attributes.js +11 -0
  26. data/app/bower_components/jquery/src/attributes/attr.js +141 -0
  27. data/app/bower_components/jquery/src/attributes/classes.js +158 -0
  28. data/app/bower_components/jquery/src/attributes/prop.js +94 -0
  29. data/app/bower_components/jquery/src/attributes/support.js +35 -0
  30. data/app/bower_components/jquery/src/attributes/val.js +161 -0
  31. data/app/bower_components/jquery/src/callbacks.js +205 -0
  32. data/app/bower_components/jquery/src/core.js +497 -0
  33. data/app/bower_components/jquery/src/core/access.js +60 -0
  34. data/app/bower_components/jquery/src/core/init.js +123 -0
  35. data/app/bower_components/jquery/src/core/parseHTML.js +39 -0
  36. data/app/bower_components/jquery/src/core/ready.js +97 -0
  37. data/app/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
  38. data/app/bower_components/jquery/src/css.js +450 -0
  39. data/app/bower_components/jquery/src/css/addGetHookIf.js +22 -0
  40. data/app/bower_components/jquery/src/css/curCSS.js +57 -0
  41. data/app/bower_components/jquery/src/css/defaultDisplay.js +70 -0
  42. data/app/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  43. data/app/bower_components/jquery/src/css/support.js +96 -0
  44. data/app/bower_components/jquery/src/css/swap.js +28 -0
  45. data/app/bower_components/jquery/src/css/var/cssExpand.js +3 -0
  46. data/app/bower_components/jquery/src/css/var/getStyles.js +12 -0
  47. data/app/bower_components/jquery/src/css/var/isHidden.js +13 -0
  48. data/app/bower_components/jquery/src/css/var/rmargin.js +3 -0
  49. data/app/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
  50. data/app/bower_components/jquery/src/data.js +178 -0
  51. data/app/bower_components/jquery/src/data/Data.js +181 -0
  52. data/app/bower_components/jquery/src/data/accepts.js +20 -0
  53. data/app/bower_components/jquery/src/data/var/data_priv.js +5 -0
  54. data/app/bower_components/jquery/src/data/var/data_user.js +5 -0
  55. data/app/bower_components/jquery/src/deferred.js +149 -0
  56. data/app/bower_components/jquery/src/deprecated.js +13 -0
  57. data/app/bower_components/jquery/src/dimensions.js +50 -0
  58. data/app/bower_components/jquery/src/effects.js +648 -0
  59. data/app/bower_components/jquery/src/effects/Tween.js +114 -0
  60. data/app/bower_components/jquery/src/effects/animatedSelector.js +13 -0
  61. data/app/bower_components/jquery/src/event.js +868 -0
  62. data/app/bower_components/jquery/src/event/ajax.js +13 -0
  63. data/app/bower_components/jquery/src/event/alias.js +39 -0
  64. data/app/bower_components/jquery/src/event/support.js +9 -0
  65. data/app/bower_components/jquery/src/exports/amd.js +24 -0
  66. data/app/bower_components/jquery/src/exports/global.js +32 -0
  67. data/app/bower_components/jquery/src/intro.js +44 -0
  68. data/app/bower_components/jquery/src/jquery.js +37 -0
  69. data/app/bower_components/jquery/src/manipulation.js +580 -0
  70. data/app/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
  71. data/app/bower_components/jquery/src/manipulation/support.js +32 -0
  72. data/app/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  73. data/app/bower_components/jquery/src/offset.js +207 -0
  74. data/app/bower_components/jquery/src/outro.js +1 -0
  75. data/app/bower_components/jquery/src/queue.js +142 -0
  76. data/app/bower_components/jquery/src/queue/delay.js +22 -0
  77. data/app/bower_components/jquery/src/selector-native.js +172 -0
  78. data/app/bower_components/jquery/src/selector-sizzle.js +14 -0
  79. data/app/bower_components/jquery/src/selector.js +1 -0
  80. data/app/bower_components/jquery/src/serialize.js +111 -0
  81. data/app/bower_components/jquery/src/sizzle/dist/sizzle.js +2067 -0
  82. data/app/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  83. data/app/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  84. data/app/bower_components/jquery/src/traversing.js +199 -0
  85. data/app/bower_components/jquery/src/traversing/findFilter.js +100 -0
  86. data/app/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
  87. data/app/bower_components/jquery/src/var/arr.js +3 -0
  88. data/app/bower_components/jquery/src/var/class2type.js +4 -0
  89. data/app/bower_components/jquery/src/var/concat.js +5 -0
  90. data/app/bower_components/jquery/src/var/hasOwn.js +5 -0
  91. data/app/bower_components/jquery/src/var/indexOf.js +5 -0
  92. data/app/bower_components/jquery/src/var/pnum.js +3 -0
  93. data/app/bower_components/jquery/src/var/push.js +5 -0
  94. data/app/bower_components/jquery/src/var/rnotwhite.js +3 -0
  95. data/app/bower_components/jquery/src/var/slice.js +5 -0
  96. data/app/bower_components/jquery/src/var/strundefined.js +3 -0
  97. data/app/bower_components/jquery/src/var/support.js +4 -0
  98. data/app/bower_components/jquery/src/var/toString.js +5 -0
  99. data/app/bower_components/jquery/src/wrap.js +79 -0
  100. data/app/stylesheets/application.scss +31 -0
  101. data/app/views/dir.haml +95 -0
  102. data/app/views/etcd_error.haml +5 -0
  103. data/app/views/etcvault_keys_select.haml +6 -0
  104. data/app/views/index.haml +1 -0
  105. data/app/views/key.haml +68 -0
  106. data/app/views/keys.haml +30 -0
  107. data/app/views/layout.haml +20 -0
  108. data/bin/console +14 -0
  109. data/bin/setup +7 -0
  110. data/config.ru +19 -0
  111. data/etcweb.gemspec +37 -0
  112. data/lib/etcweb.rb +6 -0
  113. data/lib/etcweb/app.rb +230 -0
  114. data/lib/etcweb/version.rb +3 -0
  115. metadata +331 -0
@@ -0,0 +1,158 @@
1
+ define([
2
+ "../core",
3
+ "../var/rnotwhite",
4
+ "../var/strundefined",
5
+ "../data/var/data_priv",
6
+ "../core/init"
7
+ ], function( jQuery, rnotwhite, strundefined, data_priv ) {
8
+
9
+ var rclass = /[\t\r\n\f]/g;
10
+
11
+ jQuery.fn.extend({
12
+ addClass: function( value ) {
13
+ var classes, elem, cur, clazz, j, finalValue,
14
+ proceed = typeof value === "string" && value,
15
+ i = 0,
16
+ len = this.length;
17
+
18
+ if ( jQuery.isFunction( value ) ) {
19
+ return this.each(function( j ) {
20
+ jQuery( this ).addClass( value.call( this, j, this.className ) );
21
+ });
22
+ }
23
+
24
+ if ( proceed ) {
25
+ // The disjunction here is for better compressibility (see removeClass)
26
+ classes = ( value || "" ).match( rnotwhite ) || [];
27
+
28
+ for ( ; i < len; i++ ) {
29
+ elem = this[ i ];
30
+ cur = elem.nodeType === 1 && ( elem.className ?
31
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
32
+ " "
33
+ );
34
+
35
+ if ( cur ) {
36
+ j = 0;
37
+ while ( (clazz = classes[j++]) ) {
38
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
39
+ cur += clazz + " ";
40
+ }
41
+ }
42
+
43
+ // only assign if different to avoid unneeded rendering.
44
+ finalValue = jQuery.trim( cur );
45
+ if ( elem.className !== finalValue ) {
46
+ elem.className = finalValue;
47
+ }
48
+ }
49
+ }
50
+ }
51
+
52
+ return this;
53
+ },
54
+
55
+ removeClass: function( value ) {
56
+ var classes, elem, cur, clazz, j, finalValue,
57
+ proceed = arguments.length === 0 || typeof value === "string" && value,
58
+ i = 0,
59
+ len = this.length;
60
+
61
+ if ( jQuery.isFunction( value ) ) {
62
+ return this.each(function( j ) {
63
+ jQuery( this ).removeClass( value.call( this, j, this.className ) );
64
+ });
65
+ }
66
+ if ( proceed ) {
67
+ classes = ( value || "" ).match( rnotwhite ) || [];
68
+
69
+ for ( ; i < len; i++ ) {
70
+ elem = this[ i ];
71
+ // This expression is here for better compressibility (see addClass)
72
+ cur = elem.nodeType === 1 && ( elem.className ?
73
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
74
+ ""
75
+ );
76
+
77
+ if ( cur ) {
78
+ j = 0;
79
+ while ( (clazz = classes[j++]) ) {
80
+ // Remove *all* instances
81
+ while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
82
+ cur = cur.replace( " " + clazz + " ", " " );
83
+ }
84
+ }
85
+
86
+ // Only assign if different to avoid unneeded rendering.
87
+ finalValue = value ? jQuery.trim( cur ) : "";
88
+ if ( elem.className !== finalValue ) {
89
+ elem.className = finalValue;
90
+ }
91
+ }
92
+ }
93
+ }
94
+
95
+ return this;
96
+ },
97
+
98
+ toggleClass: function( value, stateVal ) {
99
+ var type = typeof value;
100
+
101
+ if ( typeof stateVal === "boolean" && type === "string" ) {
102
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
103
+ }
104
+
105
+ if ( jQuery.isFunction( value ) ) {
106
+ return this.each(function( i ) {
107
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
108
+ });
109
+ }
110
+
111
+ return this.each(function() {
112
+ if ( type === "string" ) {
113
+ // Toggle individual class names
114
+ var className,
115
+ i = 0,
116
+ self = jQuery( this ),
117
+ classNames = value.match( rnotwhite ) || [];
118
+
119
+ while ( (className = classNames[ i++ ]) ) {
120
+ // Check each className given, space separated list
121
+ if ( self.hasClass( className ) ) {
122
+ self.removeClass( className );
123
+ } else {
124
+ self.addClass( className );
125
+ }
126
+ }
127
+
128
+ // Toggle whole class name
129
+ } else if ( type === strundefined || type === "boolean" ) {
130
+ if ( this.className ) {
131
+ // store className if set
132
+ data_priv.set( this, "__className__", this.className );
133
+ }
134
+
135
+ // If the element has a class name or if we're passed `false`,
136
+ // then remove the whole classname (if there was one, the above saved it).
137
+ // Otherwise bring back whatever was previously saved (if anything),
138
+ // falling back to the empty string if nothing was stored.
139
+ this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
140
+ }
141
+ });
142
+ },
143
+
144
+ hasClass: function( selector ) {
145
+ var className = " " + selector + " ",
146
+ i = 0,
147
+ l = this.length;
148
+ for ( ; i < l; i++ ) {
149
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
150
+ return true;
151
+ }
152
+ }
153
+
154
+ return false;
155
+ }
156
+ });
157
+
158
+ });
@@ -0,0 +1,94 @@
1
+ define([
2
+ "../core",
3
+ "../core/access",
4
+ "./support"
5
+ ], function( jQuery, access, support ) {
6
+
7
+ var rfocusable = /^(?:input|select|textarea|button)$/i;
8
+
9
+ jQuery.fn.extend({
10
+ prop: function( name, value ) {
11
+ return access( this, jQuery.prop, name, value, arguments.length > 1 );
12
+ },
13
+
14
+ removeProp: function( name ) {
15
+ return this.each(function() {
16
+ delete this[ jQuery.propFix[ name ] || name ];
17
+ });
18
+ }
19
+ });
20
+
21
+ jQuery.extend({
22
+ propFix: {
23
+ "for": "htmlFor",
24
+ "class": "className"
25
+ },
26
+
27
+ prop: function( elem, name, value ) {
28
+ var ret, hooks, notxml,
29
+ nType = elem.nodeType;
30
+
31
+ // Don't get/set properties on text, comment and attribute nodes
32
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
33
+ return;
34
+ }
35
+
36
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
37
+
38
+ if ( notxml ) {
39
+ // Fix name and attach hooks
40
+ name = jQuery.propFix[ name ] || name;
41
+ hooks = jQuery.propHooks[ name ];
42
+ }
43
+
44
+ if ( value !== undefined ) {
45
+ return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
46
+ ret :
47
+ ( elem[ name ] = value );
48
+
49
+ } else {
50
+ return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
51
+ ret :
52
+ elem[ name ];
53
+ }
54
+ },
55
+
56
+ propHooks: {
57
+ tabIndex: {
58
+ get: function( elem ) {
59
+ return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
60
+ elem.tabIndex :
61
+ -1;
62
+ }
63
+ }
64
+ }
65
+ });
66
+
67
+ if ( !support.optSelected ) {
68
+ jQuery.propHooks.selected = {
69
+ get: function( elem ) {
70
+ var parent = elem.parentNode;
71
+ if ( parent && parent.parentNode ) {
72
+ parent.parentNode.selectedIndex;
73
+ }
74
+ return null;
75
+ }
76
+ };
77
+ }
78
+
79
+ jQuery.each([
80
+ "tabIndex",
81
+ "readOnly",
82
+ "maxLength",
83
+ "cellSpacing",
84
+ "cellPadding",
85
+ "rowSpan",
86
+ "colSpan",
87
+ "useMap",
88
+ "frameBorder",
89
+ "contentEditable"
90
+ ], function() {
91
+ jQuery.propFix[ this.toLowerCase() ] = this;
92
+ });
93
+
94
+ });
@@ -0,0 +1,35 @@
1
+ define([
2
+ "../var/support"
3
+ ], function( support ) {
4
+
5
+ (function() {
6
+ var input = document.createElement( "input" ),
7
+ select = document.createElement( "select" ),
8
+ opt = select.appendChild( document.createElement( "option" ) );
9
+
10
+ input.type = "checkbox";
11
+
12
+ // Support: iOS<=5.1, Android<=4.2+
13
+ // Default value for a checkbox should be "on"
14
+ support.checkOn = input.value !== "";
15
+
16
+ // Support: IE<=11+
17
+ // Must access selectedIndex to make default options select
18
+ support.optSelected = opt.selected;
19
+
20
+ // Support: Android<=2.3
21
+ // Options inside disabled selects are incorrectly marked as disabled
22
+ select.disabled = true;
23
+ support.optDisabled = !opt.disabled;
24
+
25
+ // Support: IE<=11+
26
+ // An input loses its value after becoming a radio
27
+ input = document.createElement( "input" );
28
+ input.value = "t";
29
+ input.type = "radio";
30
+ support.radioValue = input.value === "t";
31
+ })();
32
+
33
+ return support;
34
+
35
+ });
@@ -0,0 +1,161 @@
1
+ define([
2
+ "../core",
3
+ "./support",
4
+ "../core/init"
5
+ ], function( jQuery, support ) {
6
+
7
+ var rreturn = /\r/g;
8
+
9
+ jQuery.fn.extend({
10
+ val: function( value ) {
11
+ var hooks, ret, isFunction,
12
+ elem = this[0];
13
+
14
+ if ( !arguments.length ) {
15
+ if ( elem ) {
16
+ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
17
+
18
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
19
+ return ret;
20
+ }
21
+
22
+ ret = elem.value;
23
+
24
+ return typeof ret === "string" ?
25
+ // Handle most common string cases
26
+ ret.replace(rreturn, "") :
27
+ // Handle cases where value is null/undef or number
28
+ ret == null ? "" : ret;
29
+ }
30
+
31
+ return;
32
+ }
33
+
34
+ isFunction = jQuery.isFunction( value );
35
+
36
+ return this.each(function( i ) {
37
+ var val;
38
+
39
+ if ( this.nodeType !== 1 ) {
40
+ return;
41
+ }
42
+
43
+ if ( isFunction ) {
44
+ val = value.call( this, i, jQuery( this ).val() );
45
+ } else {
46
+ val = value;
47
+ }
48
+
49
+ // Treat null/undefined as ""; convert numbers to string
50
+ if ( val == null ) {
51
+ val = "";
52
+
53
+ } else if ( typeof val === "number" ) {
54
+ val += "";
55
+
56
+ } else if ( jQuery.isArray( val ) ) {
57
+ val = jQuery.map( val, function( value ) {
58
+ return value == null ? "" : value + "";
59
+ });
60
+ }
61
+
62
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
63
+
64
+ // If set returns undefined, fall back to normal setting
65
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
66
+ this.value = val;
67
+ }
68
+ });
69
+ }
70
+ });
71
+
72
+ jQuery.extend({
73
+ valHooks: {
74
+ option: {
75
+ get: function( elem ) {
76
+ var val = jQuery.find.attr( elem, "value" );
77
+ return val != null ?
78
+ val :
79
+ // Support: IE10-11+
80
+ // option.text throws exceptions (#14686, #14858)
81
+ jQuery.trim( jQuery.text( elem ) );
82
+ }
83
+ },
84
+ select: {
85
+ get: function( elem ) {
86
+ var value, option,
87
+ options = elem.options,
88
+ index = elem.selectedIndex,
89
+ one = elem.type === "select-one" || index < 0,
90
+ values = one ? null : [],
91
+ max = one ? index + 1 : options.length,
92
+ i = index < 0 ?
93
+ max :
94
+ one ? index : 0;
95
+
96
+ // Loop through all the selected options
97
+ for ( ; i < max; i++ ) {
98
+ option = options[ i ];
99
+
100
+ // IE6-9 doesn't update selected after form reset (#2551)
101
+ if ( ( option.selected || i === index ) &&
102
+ // Don't return options that are disabled or in a disabled optgroup
103
+ ( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
104
+ ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
105
+
106
+ // Get the specific value for the option
107
+ value = jQuery( option ).val();
108
+
109
+ // We don't need an array for one selects
110
+ if ( one ) {
111
+ return value;
112
+ }
113
+
114
+ // Multi-Selects return an array
115
+ values.push( value );
116
+ }
117
+ }
118
+
119
+ return values;
120
+ },
121
+
122
+ set: function( elem, value ) {
123
+ var optionSet, option,
124
+ options = elem.options,
125
+ values = jQuery.makeArray( value ),
126
+ i = options.length;
127
+
128
+ while ( i-- ) {
129
+ option = options[ i ];
130
+ if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
131
+ optionSet = true;
132
+ }
133
+ }
134
+
135
+ // Force browsers to behave consistently when non-matching value is set
136
+ if ( !optionSet ) {
137
+ elem.selectedIndex = -1;
138
+ }
139
+ return values;
140
+ }
141
+ }
142
+ }
143
+ });
144
+
145
+ // Radios and checkboxes getter/setter
146
+ jQuery.each([ "radio", "checkbox" ], function() {
147
+ jQuery.valHooks[ this ] = {
148
+ set: function( elem, value ) {
149
+ if ( jQuery.isArray( value ) ) {
150
+ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
151
+ }
152
+ }
153
+ };
154
+ if ( !support.checkOn ) {
155
+ jQuery.valHooks[ this ].get = function( elem ) {
156
+ return elem.getAttribute("value") === null ? "on" : elem.value;
157
+ };
158
+ }
159
+ });
160
+
161
+ });