vines-services 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/LICENSE +19 -0
  2. data/README +40 -0
  3. data/Rakefile +130 -0
  4. data/bin/vines-services +95 -0
  5. data/conf/config.rb +25 -0
  6. data/lib/vines/services/command/init.rb +209 -0
  7. data/lib/vines/services/command/restart.rb +14 -0
  8. data/lib/vines/services/command/start.rb +30 -0
  9. data/lib/vines/services/command/stop.rb +20 -0
  10. data/lib/vines/services/command/views.rb +26 -0
  11. data/lib/vines/services/component.rb +26 -0
  12. data/lib/vines/services/config.rb +105 -0
  13. data/lib/vines/services/connection.rb +120 -0
  14. data/lib/vines/services/controller/attributes_controller.rb +19 -0
  15. data/lib/vines/services/controller/base_controller.rb +99 -0
  16. data/lib/vines/services/controller/disco_info_controller.rb +61 -0
  17. data/lib/vines/services/controller/labels_controller.rb +17 -0
  18. data/lib/vines/services/controller/members_controller.rb +44 -0
  19. data/lib/vines/services/controller/messages_controller.rb +66 -0
  20. data/lib/vines/services/controller/probes_controller.rb +45 -0
  21. data/lib/vines/services/controller/services_controller.rb +81 -0
  22. data/lib/vines/services/controller/subscriptions_controller.rb +39 -0
  23. data/lib/vines/services/controller/systems_controller.rb +45 -0
  24. data/lib/vines/services/controller/transfers_controller.rb +58 -0
  25. data/lib/vines/services/controller/uploads_controller.rb +62 -0
  26. data/lib/vines/services/controller/users_controller.rb +127 -0
  27. data/lib/vines/services/core_ext/blather.rb +46 -0
  28. data/lib/vines/services/core_ext/couchrest.rb +33 -0
  29. data/lib/vines/services/indexer.rb +195 -0
  30. data/lib/vines/services/priority_queue.rb +94 -0
  31. data/lib/vines/services/roster.rb +70 -0
  32. data/lib/vines/services/storage/couchdb/fragment.rb +23 -0
  33. data/lib/vines/services/storage/couchdb/service.rb +170 -0
  34. data/lib/vines/services/storage/couchdb/system.rb +141 -0
  35. data/lib/vines/services/storage/couchdb/upload.rb +66 -0
  36. data/lib/vines/services/storage/couchdb/user.rb +137 -0
  37. data/lib/vines/services/storage/couchdb/vcard.rb +13 -0
  38. data/lib/vines/services/storage/couchdb.rb +157 -0
  39. data/lib/vines/services/storage.rb +33 -0
  40. data/lib/vines/services/throttle.rb +26 -0
  41. data/lib/vines/services/version.rb +7 -0
  42. data/lib/vines/services/vql/compiler.rb +94 -0
  43. data/lib/vines/services/vql/vql.citrus +115 -0
  44. data/lib/vines/services/vql/vql.rb +186 -0
  45. data/lib/vines/services.rb +71 -0
  46. data/test/config_test.rb +242 -0
  47. data/test/priority_queue_test.rb +23 -0
  48. data/test/storage/couchdb_test.rb +30 -0
  49. data/test/vql/compiler_test.rb +96 -0
  50. data/test/vql/vql_test.rb +233 -0
  51. data/web/coffeescripts/api.coffee +51 -0
  52. data/web/coffeescripts/commands.coffee +18 -0
  53. data/web/coffeescripts/files.coffee +315 -0
  54. data/web/coffeescripts/init.coffee +21 -0
  55. data/web/coffeescripts/services.coffee +356 -0
  56. data/web/coffeescripts/setup.coffee +503 -0
  57. data/web/coffeescripts/systems.coffee +371 -0
  58. data/web/images/default-service.png +0 -0
  59. data/web/images/linux.png +0 -0
  60. data/web/images/mac.png +0 -0
  61. data/web/images/run.png +0 -0
  62. data/web/images/windows.png +0 -0
  63. data/web/index.html +17 -0
  64. data/web/stylesheets/common.css +52 -0
  65. data/web/stylesheets/files.css +218 -0
  66. data/web/stylesheets/services.css +181 -0
  67. data/web/stylesheets/setup.css +117 -0
  68. data/web/stylesheets/systems.css +142 -0
  69. metadata +230 -0
@@ -0,0 +1,181 @@
1
+ #services-page #container {
2
+ height: 100%;
3
+ }
4
+ #services-page #beta {
5
+ background: #fff;
6
+ }
7
+ #services-page #services {
8
+ height: 100%;
9
+ list-style: none;
10
+ text-shadow: 0 1px 1px #fff;
11
+ width: 260px;
12
+ }
13
+ #services-page #services li {
14
+ cursor: pointer;
15
+ border-bottom: 1px solid #ddd;
16
+ font-weight: bold;
17
+ min-height: 42px;
18
+ padding: 0 10px;
19
+ position: relative;
20
+ -moz-transition: background 0.3s;
21
+ -o-transition: background 0.3s;
22
+ -webkit-transition: background 0.3s;
23
+ transition: background 0.3s;
24
+ }
25
+ #services-page #services li #status{
26
+ margin-left:100px;
27
+ }
28
+ #services-page #services li:hover:not(.selected) {
29
+ background: rgba(255, 255, 255, 1.0);
30
+ }
31
+ #services-page #services li.selected .count {
32
+ color: rgba(255, 255, 255, 0.85);
33
+ }
34
+ #services-page #operators {
35
+ margin-bottom: 10px;
36
+ }
37
+ #services-page #operators li {
38
+ cursor: pointer;
39
+ position: relative;
40
+ -moz-transition: background 0.3s;
41
+ -o-transition: background 0.3s;
42
+ -webkit-transition: background 0.3s;
43
+ transition: background 0.3s;
44
+ display: inline-block;
45
+ border: 1px solid #DDD;
46
+ border-radius: 30px;
47
+ width: 60px;
48
+ height: 15px;
49
+ line-height: 15px;
50
+ text-align: center;
51
+ font-size: 8pt;
52
+ margin-left: 10px;
53
+ }
54
+ #services-page #operators li:hover:not(.selected) {
55
+ color: rgba(23, 51, 88, 1.0);
56
+ background: rgba(255, 255, 255, 1.0);
57
+ }
58
+ #services-page #attributes li {
59
+ cursor: pointer;
60
+ border-bottom: 1px solid #ddd;
61
+ padding: 0 10px;
62
+ position: relative;
63
+ color: rgba(23, 51, 88, 0.85);
64
+ -moz-transition: background 0.3s;
65
+ -o-transition: background 0.3s;
66
+ -webkit-transition: background 0.3s;
67
+ transition: background 0.3s;
68
+ }
69
+ #services-page #attributes li:hover:not(.selected) {
70
+ color: rgba(23, 51, 88, 1.0);
71
+ background: rgba(255, 255, 255, 1.0);
72
+ }
73
+ #services-page #services .count {
74
+ display: block;
75
+ font-size: 11px;
76
+ font-weight: normal;
77
+ line-height: 11px;
78
+ }
79
+ #services-page #charlie-controls {
80
+ text-align: right;
81
+ }
82
+ #services-page #search-services-form {
83
+ background: #f8f8f8;
84
+ }
85
+ #services-page #syntax {
86
+ height: 45px;
87
+ }
88
+ #services-page #syntax-status {
89
+ font-size: 8pt;
90
+ height: 12px;
91
+ line-height: 1;
92
+ margin: -5px 0 10px 0;
93
+ width: 93%;
94
+ }
95
+ #services-page #service-preview {
96
+ margin-top: -15px;
97
+ }
98
+ #services-page #members {
99
+ height: 200px;
100
+ margin-bottom: 20px;
101
+ }
102
+ #services-page #members li {
103
+ display: inline-block;
104
+ background-color: #fff;
105
+ font-size: 8pt;
106
+ width: 150px;
107
+ max-width: 150px;
108
+ height: 25px;
109
+ max-height: 25px;
110
+ text-overflow: ellipsis;
111
+ overflow: hidden;
112
+ white-space:nowrap;
113
+ float: left;
114
+ margin-bottom: 10px;
115
+ margin-right: 10px;
116
+ -webkit-border-radius: 3px;
117
+ -moz-border-radius: 3px;
118
+ border-radius: 3px;
119
+ border: 1px solid #ccc;
120
+ }
121
+ #services-page #members li span.text {
122
+ margin-left: 5px;
123
+ }
124
+ #services-page #members li span.icon {
125
+ width: 15px;
126
+ height: 15px;
127
+ display: inline-block;
128
+ position: relative;
129
+ top: 2px;
130
+ left: 3px;
131
+ }
132
+ #services-page #members li span.icon svg {
133
+ width: 15px;
134
+ height: 15px;
135
+ }
136
+ #services-page #members li span.server-name {
137
+ max-width:65px;display:inline-block; vertical-align:middle;text-overflow: ellipsis;
138
+ overflow: hidden;
139
+ white-space:nowrap;
140
+ }
141
+ #services-page #members li:hover:not(.selected) {
142
+ background-color: #ededed;
143
+ background: -webkit-gradient(linear, left top, left bottom, from(#ededed), to(#e0e0e0));
144
+ background: -moz-linear-gradient(#ededed, #e0e0e0);
145
+ cursor: pointer;
146
+ }
147
+ #services-page #members li.selected {
148
+ background: #4693FF;
149
+ background: -moz-linear-gradient(#4693FF, #015de6);
150
+ background: -o-linear-gradient(#4693FF, #015de6);
151
+ background: -webkit-gradient(linear, left top, left bottom, from(#4693FF), to(#015de6));
152
+ border-bottom: 1px solid #fff;
153
+ color: #fff;
154
+ text-shadow: 0 -1px 1px #1b3a65;
155
+ }
156
+ #services-page #users {
157
+ max-height: 140px;
158
+ list-style: none;
159
+ }
160
+ #services-page #users label {
161
+ color: inherit;
162
+ display: inline;
163
+ font-size: inherit;
164
+ font-weight: normal;
165
+ margin-left: 2px;
166
+ }
167
+ #services-page #blank-slate {
168
+ margin-top: -65px;
169
+ margin-left: -225px;
170
+ text-align: center;
171
+ width: 450px;
172
+ position: absolute;
173
+ top: 50%;
174
+ left: 50%;
175
+ }
176
+ #services-page #blank-slate p {
177
+ color: rgba(0,0,0,0.4);
178
+ font-size: 12pt;
179
+ font-weight: bold;
180
+ margin-bottom: 20px;
181
+ }
@@ -0,0 +1,117 @@
1
+ #setup-page #container {
2
+ height: 100%;
3
+ }
4
+ #setup-page #alpha {
5
+ width: 200px;
6
+ }
7
+ #setup-page #beta {
8
+ background: #fff;
9
+ border-left: 1px solid #ddd;
10
+ left: 200px;
11
+ }
12
+ #setup-page #charlie {
13
+ background: #fff;
14
+ }
15
+ #setup-page #setup-title {
16
+ background: #f8f8f8;
17
+ }
18
+ #services-page #search-users-form {
19
+ background: #f8f8f8;
20
+ }
21
+ #setup-page #setup {
22
+ height: 100%;
23
+ list-style: none;
24
+ text-shadow: 0 1px 1px #fff;
25
+ width: 200px;
26
+ }
27
+ #setup-page #setup li {
28
+ cursor: pointer;
29
+ font-weight: bold;
30
+ min-height: 22px;
31
+ padding: 0 10px;
32
+ position: relative;
33
+ }
34
+ #setup-page #users {
35
+ height: 100%;
36
+ list-style: none;
37
+ text-shadow: 0 1px 1px #fff;
38
+ width: 260px;
39
+ }
40
+ #setup-page #users li {
41
+ cursor: pointer;
42
+ border-bottom: 1px solid #ddd;
43
+ font-weight: bold;
44
+ min-height: 42px;
45
+ padding: 0 10px;
46
+ position: relative;
47
+ -moz-transition: background 0.3s;
48
+ -o-transition: background 0.3s;
49
+ -webkit-transition: background 0.3s;
50
+ transition: background 0.3s;
51
+ }
52
+ #setup-page #users li:hover:not(.selected) {
53
+ background: rgba(255, 255, 255, 1.0);
54
+ }
55
+ #setup-page #users li.selected .jid {
56
+ color: rgba(255, 255, 255, 0.85);
57
+ }
58
+ #setup-page #users .jid {
59
+ display: block;
60
+ font-size: 11px;
61
+ font-weight: normal;
62
+ line-height: 11px;
63
+ }
64
+ #setup-page #search-users-form {
65
+ background: #f8f8f8;
66
+ }
67
+ #setup-page #blank-slate {
68
+ margin-top: -65px;
69
+ margin-left: -225px;
70
+ text-align: center;
71
+ width: 450px;
72
+ position: absolute;
73
+ top: 50%;
74
+ left: 50%;
75
+ }
76
+ #setup-page #blank-slate p {
77
+ color: rgba(0,0,0,0.4);
78
+ font-size: 12pt;
79
+ font-weight: bold;
80
+ margin-bottom: 20px;
81
+ }
82
+ #setup-page #permissions {
83
+ list-style: none;
84
+ }
85
+ #setup-page #services {
86
+ max-height: 140px;
87
+ list-style: none;
88
+ }
89
+ #setup-page #services label,
90
+ #setup-page #permissions label {
91
+ color: inherit;
92
+ display: inline;
93
+ font-size: inherit;
94
+ font-weight: normal;
95
+ margin-left: 2px;
96
+ }
97
+ #setup-page #token-container {
98
+ position: relative;
99
+ width: 92%;
100
+ }
101
+ #setup-page #token-container #password1 {
102
+ width: inherit;
103
+ }
104
+ #setup-page #new-token {
105
+ display: inline;
106
+ height: 27px;
107
+ margin: 0;
108
+ padding: 0 10px;
109
+ position: absolute;
110
+ right: 0;
111
+ top: 0;
112
+ border-top-left-radius: 0;
113
+ border-bottom-left-radius: 0;
114
+ }
115
+ #setup-page #info p {
116
+ line-height: 1;
117
+ }
@@ -0,0 +1,142 @@
1
+ #servers-page #container {
2
+ height: 100%;
3
+ }
4
+ #servers-page #chat-title {
5
+ background: #f8f8f8;
6
+ }
7
+ #servers-page #messages {
8
+ background: #fff;
9
+ height: 100%;
10
+ list-style: none;
11
+ text-shadow: 0 1px 1px #ddd;
12
+ width: 100%;
13
+ }
14
+ #servers-page #messages li {
15
+ border-bottom: 1px solid #f0f0f0;
16
+ min-height: 40px;
17
+ padding: 10px;
18
+ position: relative;
19
+ }
20
+ #servers-page #messages li:hover > span .time {
21
+ opacity: 0.3;
22
+ }
23
+ #servers-page #messages li img {
24
+ border: 3px solid #fff;
25
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 40px rgba(0, 0, 0, 0.06) inset;
26
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 40px rgba(0, 0, 0, 0.06) inset;
27
+ position: absolute;
28
+ top: 7px;
29
+ right: 7px;
30
+ height: 40px;
31
+ width: 40px;
32
+ }
33
+ #servers-page #messages li p {
34
+ line-height: 1.5;
35
+ width: 90%;
36
+ }
37
+ #servers-page #messages li footer {
38
+ font-size: 9pt;
39
+ padding-right: 50px;
40
+ text-align: right;
41
+ }
42
+ #servers-page #messages li footer span {
43
+ color: #d8d8d8;
44
+ margin-right: 0.5em;
45
+ text-shadow: none;
46
+ }
47
+ #servers-page #messages li footer .author::before {
48
+ content: '\2014 ';
49
+ }
50
+ #servers-page #message-form {
51
+ background: #f8f8f8;
52
+ border-top: 1px solid #dfdfdf;
53
+ height: 50px;
54
+ position: absolute;
55
+ bottom: 0;
56
+ width: 100%;
57
+ }
58
+ #servers-page #message {
59
+ display: block;
60
+ position: relative;
61
+ left: 10px;
62
+ top: 10px;
63
+ width: 428px;
64
+ }
65
+ #servers-page #roster,
66
+ #servers-page #notifications {
67
+ height: 100%;
68
+ list-style: none;
69
+ text-shadow: 0 1px 1px #fff;
70
+ width: 260px;
71
+ }
72
+ #servers-page #roster li,
73
+ #servers-page #notifications li {
74
+ cursor: pointer;
75
+ border-bottom: 1px solid #ddd;
76
+ font-weight: bold;
77
+ min-height: 42px;
78
+ padding: 0 10px;
79
+ position: relative;
80
+ -moz-transition: background 0.3s;
81
+ -o-transition: background 0.3s;
82
+ -webkit-transition: background 0.3s;
83
+ transition: background 0.3s;
84
+ }
85
+ #servers-page #notifications li {
86
+ font-weight: normal;
87
+ padding: 10px 0 0 0;
88
+ }
89
+ #servers-page #roster li:hover:not(.selected),
90
+ #servers-page #notifications li:hover {
91
+ background: rgba(255, 255, 255, 1.0);
92
+ }
93
+ #servers-page #roster li.offline > * {
94
+ opacity: 0.4;
95
+ }
96
+ #servers-page #roster li.selected > * {
97
+ opacity: 1.0;
98
+ }
99
+ #servers-page #roster li.selected .status-msg {
100
+ color: rgba(255, 255, 255, 0.85);
101
+ }
102
+ #servers-page #roster .status-msg {
103
+ display: block;
104
+ font-size: 11px;
105
+ font-weight: normal;
106
+ line-height: 11px;
107
+ }
108
+ #servers-page #roster .unread {
109
+ background: #4693FF;
110
+ background: -moz-linear-gradient(#4693FF, #015de6);
111
+ background: -o-linear-gradient(#4693FF, #015de6);
112
+ background: -webkit-gradient(linear, left top, left bottom, from(#4693FF), to(#015de6));
113
+ border-radius: 30px;
114
+ color: #fff;
115
+ display: inline-block;
116
+ font-size: 11px;
117
+ font-weight: normal;
118
+ line-height: 15px;
119
+ padding: 0px 6px;
120
+ position: absolute;
121
+ right: 50px;
122
+ top: 14px;
123
+ text-shadow: none;
124
+ }
125
+ #servers-page #roster .vcard-img {
126
+ background: #fff;
127
+ border: 1px solid #fff;
128
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 40px rgba(0, 0, 0, 0.06) inset;
129
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 40px rgba(0, 0, 0, 0.06) inset;
130
+ height: 32px;
131
+ width: 32px;
132
+ position: absolute;
133
+ top: 4px;
134
+ right: 10px;
135
+ }
136
+ #servers-page #charlie-controls {
137
+ text-align: right;
138
+ }
139
+ #servers-page #edit-contact-jid {
140
+ color: #444;
141
+ margin-top: -5px;
142
+ }
metadata ADDED
@@ -0,0 +1,230 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vines-services
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - David Graham
9
+ - Chris Johnson
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2011-09-28 00:00:00 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: bcrypt-ruby
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: 3.0.0
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: blather
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: 0.5.4
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: citrus
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 2.4.0
47
+ type: :runtime
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: couchrest_model
51
+ prerelease: false
52
+ requirement: &id004 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ~>
56
+ - !ruby/object:Gem::Version
57
+ version: 1.1.2
58
+ type: :runtime
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: em-http-request
62
+ prerelease: false
63
+ requirement: &id005 !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 0.3.0
69
+ type: :runtime
70
+ version_requirements: *id005
71
+ - !ruby/object:Gem::Dependency
72
+ name: sqlite3
73
+ prerelease: false
74
+ requirement: &id006 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ~>
78
+ - !ruby/object:Gem::Version
79
+ version: 1.3.4
80
+ type: :runtime
81
+ version_requirements: *id006
82
+ - !ruby/object:Gem::Dependency
83
+ name: vines
84
+ prerelease: false
85
+ requirement: &id007 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: "0.3"
91
+ type: :runtime
92
+ version_requirements: *id007
93
+ - !ruby/object:Gem::Dependency
94
+ name: minitest
95
+ prerelease: false
96
+ requirement: &id008 !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: "0"
102
+ type: :development
103
+ version_requirements: *id008
104
+ - !ruby/object:Gem::Dependency
105
+ name: rake
106
+ prerelease: false
107
+ requirement: &id009 !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: "0"
113
+ type: :development
114
+ version_requirements: *id009
115
+ description: |-
116
+ Vines Services are dynamically updated groups of systems based
117
+ on criteria like hostname, installed software, operating system, etc. Send a
118
+ command to the service and it runs on every system in the group. Services, files
119
+ and permissions are managed via the bundled web application.
120
+ email:
121
+ - david@negativecode.com
122
+ - chris@negativecode.com
123
+ executables:
124
+ - vines-services
125
+ extensions: []
126
+
127
+ extra_rdoc_files: []
128
+
129
+ files:
130
+ - LICENSE
131
+ - Rakefile
132
+ - README
133
+ - bin/vines-services
134
+ - lib/vines/services/command/init.rb
135
+ - lib/vines/services/command/restart.rb
136
+ - lib/vines/services/command/start.rb
137
+ - lib/vines/services/command/stop.rb
138
+ - lib/vines/services/command/views.rb
139
+ - lib/vines/services/component.rb
140
+ - lib/vines/services/config.rb
141
+ - lib/vines/services/connection.rb
142
+ - lib/vines/services/controller/attributes_controller.rb
143
+ - lib/vines/services/controller/base_controller.rb
144
+ - lib/vines/services/controller/disco_info_controller.rb
145
+ - lib/vines/services/controller/labels_controller.rb
146
+ - lib/vines/services/controller/members_controller.rb
147
+ - lib/vines/services/controller/messages_controller.rb
148
+ - lib/vines/services/controller/probes_controller.rb
149
+ - lib/vines/services/controller/services_controller.rb
150
+ - lib/vines/services/controller/subscriptions_controller.rb
151
+ - lib/vines/services/controller/systems_controller.rb
152
+ - lib/vines/services/controller/transfers_controller.rb
153
+ - lib/vines/services/controller/uploads_controller.rb
154
+ - lib/vines/services/controller/users_controller.rb
155
+ - lib/vines/services/core_ext/blather.rb
156
+ - lib/vines/services/core_ext/couchrest.rb
157
+ - lib/vines/services/indexer.rb
158
+ - lib/vines/services/priority_queue.rb
159
+ - lib/vines/services/roster.rb
160
+ - lib/vines/services/storage/couchdb/fragment.rb
161
+ - lib/vines/services/storage/couchdb/service.rb
162
+ - lib/vines/services/storage/couchdb/system.rb
163
+ - lib/vines/services/storage/couchdb/upload.rb
164
+ - lib/vines/services/storage/couchdb/user.rb
165
+ - lib/vines/services/storage/couchdb/vcard.rb
166
+ - lib/vines/services/storage/couchdb.rb
167
+ - lib/vines/services/storage.rb
168
+ - lib/vines/services/throttle.rb
169
+ - lib/vines/services/version.rb
170
+ - lib/vines/services/vql/compiler.rb
171
+ - lib/vines/services/vql/vql.citrus
172
+ - lib/vines/services/vql/vql.rb
173
+ - lib/vines/services.rb
174
+ - conf/config.rb
175
+ - web/coffeescripts/api.coffee
176
+ - web/coffeescripts/commands.coffee
177
+ - web/coffeescripts/files.coffee
178
+ - web/coffeescripts/init.coffee
179
+ - web/coffeescripts/services.coffee
180
+ - web/coffeescripts/setup.coffee
181
+ - web/coffeescripts/systems.coffee
182
+ - web/images/default-service.png
183
+ - web/images/linux.png
184
+ - web/images/mac.png
185
+ - web/images/run.png
186
+ - web/images/windows.png
187
+ - web/index.html
188
+ - web/stylesheets/common.css
189
+ - web/stylesheets/files.css
190
+ - web/stylesheets/services.css
191
+ - web/stylesheets/setup.css
192
+ - web/stylesheets/systems.css
193
+ - test/config_test.rb
194
+ - test/priority_queue_test.rb
195
+ - test/storage/couchdb_test.rb
196
+ - test/vql/compiler_test.rb
197
+ - test/vql/vql_test.rb
198
+ homepage: http://www.getvines.com
199
+ licenses: []
200
+
201
+ post_install_message:
202
+ rdoc_options: []
203
+
204
+ require_paths:
205
+ - lib
206
+ required_ruby_version: !ruby/object:Gem::Requirement
207
+ none: false
208
+ requirements:
209
+ - - ">="
210
+ - !ruby/object:Gem::Version
211
+ version: 1.9.2
212
+ required_rubygems_version: !ruby/object:Gem::Requirement
213
+ none: false
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: "0"
218
+ requirements: []
219
+
220
+ rubyforge_project:
221
+ rubygems_version: 1.8.10
222
+ signing_key:
223
+ specification_version: 3
224
+ summary: An XMPP component that broadcasts shell commands to many agents.
225
+ test_files:
226
+ - test/config_test.rb
227
+ - test/priority_queue_test.rb
228
+ - test/storage/couchdb_test.rb
229
+ - test/vql/compiler_test.rb
230
+ - test/vql/vql_test.rb