lumberg 2.0.0.pre12 → 2.0.0.pre15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/lumberg/cpanel.rb +1 -0
- data/lib/lumberg/cpanel/mysql_db.rb +190 -0
- data/lib/lumberg/version.rb +1 -1
- data/lib/lumberg/whm/server.rb +21 -1
- data/spec/cpanel/contact_spec.rb +1 -1
- data/spec/cpanel/mysql_db_spec.rb +119 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/vcr_cassettes/cpanel/contact/update.yml +21 -21
- data/spec/vcr_cassettes/cpanel/file_manager/disk_usage.yml +20 -20
- data/spec/vcr_cassettes/cpanel/file_manager/list.yml +21 -21
- data/spec/vcr_cassettes/cpanel/file_manager/operate.yml +40 -40
- data/spec/vcr_cassettes/cpanel/file_manager/show.yml +21 -21
- data/spec/vcr_cassettes/cpanel/file_manager/stat.yml +21 -21
- data/spec/vcr_cassettes/cpanel/mysql_db/add_db.yml +42 -0
- data/spec/vcr_cassettes/cpanel/mysql_db/add_host.yml +42 -0
- data/spec/vcr_cassettes/cpanel/mysql_db/add_user.yml +42 -0
- data/spec/vcr_cassettes/cpanel/mysql_db/add_user_db.yml +42 -0
- data/spec/vcr_cassettes/cpanel/mysql_db/check_db.yml +42 -0
- data/spec/vcr_cassettes/cpanel/mysql_db/del_db.yml +42 -0
- data/spec/vcr_cassettes/cpanel/mysql_db/del_host.yml +42 -0
- data/spec/vcr_cassettes/cpanel/mysql_db/del_user.yml +42 -0
- data/spec/vcr_cassettes/cpanel/mysql_db/del_user_db.yml +42 -0
- data/spec/vcr_cassettes/cpanel/mysql_db/init_cache.yml +42 -0
- data/spec/vcr_cassettes/cpanel/mysql_db/number_of_dbs.yml +42 -0
- data/spec/vcr_cassettes/cpanel/mysql_db/repair_db.yml +42 -0
- data/spec/vcr_cassettes/cpanel/mysql_db/update_privs.yml +42 -0
- data/spec/vcr_cassettes/whm/server/edit_hook.yml +44 -0
- data/spec/vcr_cassettes/whm/server/list_hooks.yml +44 -0
- data/spec/whm/server_spec.rb +18 -0
- metadata +246 -213
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1058732139bcd1b3944f3db58e83fd31fe20ae6
|
4
|
+
data.tar.gz: b2c22aa8a40684b4c94bd3fe05b1567f77dc8133
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b059b3b57831808727e710316de9e3c9207a75cab47f7d31ce495383f165f30de1bca88e0aba73010fe7c4120a8b24abc0a8a79deb6959dc0ff90f0348a4ce6a
|
7
|
+
data.tar.gz: 232cec8379afc5d0aba63577d538a2aeec35fd647db9fda07898d703b13d0e780dfcab3c4ce63a0c73413379a5206621b4b384100f5e3acf6585816e37be3ff3
|
data/README.md
CHANGED
@@ -321,6 +321,7 @@ email.add_forwarder(
|
|
321
321
|
end
|
322
322
|
end
|
323
323
|
```
|
324
|
+
|
324
325
|
- In many cases, you'll name your methods to match up
|
325
326
|
with the documented cPanel API methods. However, the documented method
|
326
327
|
names are sometimes a bit lengthy, confusing, or otherwise unwiedly; feel
|
data/lib/lumberg/cpanel.rb
CHANGED
@@ -0,0 +1,190 @@
|
|
1
|
+
module Lumberg
|
2
|
+
module Cpanel
|
3
|
+
# Public: Allows you to manage MySQL Databases, users and other related settings.
|
4
|
+
class MysqlDb < Base
|
5
|
+
def self.api_module; "Mysql"; end
|
6
|
+
|
7
|
+
# Public: Add a new MySQL database to a cPanel account.
|
8
|
+
#
|
9
|
+
# options - Hash options for API call params (default: {}).
|
10
|
+
# :dbname - String name of the MySQL database to add.
|
11
|
+
#
|
12
|
+
# Returns Hash API response.
|
13
|
+
def add_db(options = {})
|
14
|
+
perform_request({
|
15
|
+
api_function: 'adddb',
|
16
|
+
'arg-0' => options.delete(:dbname)
|
17
|
+
}.merge(default_options(options)))
|
18
|
+
end
|
19
|
+
|
20
|
+
# Public: Create a new MySQL user.
|
21
|
+
#
|
22
|
+
# options - Hash options for API call params (default: {}).
|
23
|
+
# :username - String MySQL user to create.
|
24
|
+
# :password - String password for the new MySQL user.
|
25
|
+
#
|
26
|
+
# Returns Hash API respone.
|
27
|
+
def add_user(options = {})
|
28
|
+
perform_request({
|
29
|
+
api_function: 'adduser',
|
30
|
+
'arg-0' => options.delete(:username),
|
31
|
+
'arg-1' => options.delete(:password)
|
32
|
+
}.merge(default_options(options)))
|
33
|
+
end
|
34
|
+
|
35
|
+
# Public: Grant a user permission to access a cPanel account's database.
|
36
|
+
#
|
37
|
+
# options - Hash options for API call params (default: {})
|
38
|
+
# :dbname - String name of the database to allow the user to access.
|
39
|
+
# :dbuser - String MySQL user who should be given access to the database.
|
40
|
+
# :perms_list - A space-separated String containing a list of permissions
|
41
|
+
# to grant to the user
|
42
|
+
# (e.g. "all" or "alter drop create delete insert update lock" )
|
43
|
+
#
|
44
|
+
# Returns Hash API respone.
|
45
|
+
def add_user_db(options = {})
|
46
|
+
perform_request({
|
47
|
+
api_function: 'adduserdb',
|
48
|
+
'arg-0' => options.delete(:dbname),
|
49
|
+
'arg-1' => options.delete(:dbuser),
|
50
|
+
'arg-2' => options.delete(:perms_list)
|
51
|
+
}.merge(default_options(options)))
|
52
|
+
end
|
53
|
+
|
54
|
+
# Public: Retrieve the number of database users an account has created.
|
55
|
+
#
|
56
|
+
# Returns Hash API response.
|
57
|
+
def number_of_dbs(options = {})
|
58
|
+
perform_request({
|
59
|
+
api_function: 'number_of_dbs'
|
60
|
+
}.merge(default_options(options)))
|
61
|
+
end
|
62
|
+
|
63
|
+
# Public: Run a MySQL database check.
|
64
|
+
#
|
65
|
+
# options - Hash options for API call params (default: {}).
|
66
|
+
# :dbname - String name of the MySQL database to check.
|
67
|
+
#
|
68
|
+
# Returns Hash API response.
|
69
|
+
def check_db(options = {})
|
70
|
+
perform_request({
|
71
|
+
api_function: 'checkdb',
|
72
|
+
'arg-0' => options.delete(:dbname)
|
73
|
+
}.merge(default_options(options)))
|
74
|
+
end
|
75
|
+
|
76
|
+
# Public: Run a MySQL database repair.
|
77
|
+
#
|
78
|
+
# options - Hash options for API call params (default: {}).
|
79
|
+
# :dbname - String name of the MySQL database to repair.
|
80
|
+
#
|
81
|
+
# Returns Hash API response.
|
82
|
+
def repair_db(options = {})
|
83
|
+
perform_request({
|
84
|
+
api_function: 'repairdb',
|
85
|
+
'arg-0' => options.delete(:dbname)
|
86
|
+
}.merge(default_options(options)))
|
87
|
+
end
|
88
|
+
|
89
|
+
# Public: Force an update of MySQL privileges and passwords.
|
90
|
+
#
|
91
|
+
# options - Hash options for API call params (default: {})
|
92
|
+
#
|
93
|
+
# Returns Hash API response.
|
94
|
+
def update_privs(options = {})
|
95
|
+
perform_request({
|
96
|
+
api_function: 'updateprivs'
|
97
|
+
}.merge(default_options(options)))
|
98
|
+
end
|
99
|
+
|
100
|
+
# Public: Refresh the cache of MySQL information. This includes users,
|
101
|
+
# databases, routines and other related information.
|
102
|
+
#
|
103
|
+
# options - Hash options for API call params (default: {})
|
104
|
+
#
|
105
|
+
# Returns Hash API response.
|
106
|
+
def init_cache(options = {})
|
107
|
+
perform_request({
|
108
|
+
api_function: 'initcache'
|
109
|
+
}.merge(default_options(options)))
|
110
|
+
end
|
111
|
+
|
112
|
+
# Public: Disallow a MySQL user from accessing a database.
|
113
|
+
#
|
114
|
+
# options - Hash options for API call params (default: {})
|
115
|
+
# :dbname - String MySQL database from which to remove the user's permissions.
|
116
|
+
# :dbuser - String name of the MySQL user to remove.
|
117
|
+
#
|
118
|
+
# Returns Hash API response.
|
119
|
+
def del_user_db(options = {})
|
120
|
+
perform_request({
|
121
|
+
api_function: 'deluserdb',
|
122
|
+
'arg-0' => options.delete(:dbname),
|
123
|
+
'arg-1' => options.delete(:dbuser)
|
124
|
+
}.merge(default_options(options)))
|
125
|
+
end
|
126
|
+
|
127
|
+
# Public: Remove a user from MySQL.
|
128
|
+
#
|
129
|
+
# options - Hash options for API call params (default: {})
|
130
|
+
# :dbuser - String name of the MySQL user to remove.
|
131
|
+
# This value must be prefixed with the cPanel username.
|
132
|
+
# (e.g. cpuser_dbuser)
|
133
|
+
#
|
134
|
+
# Returns Hash API response.
|
135
|
+
def del_user(options = {})
|
136
|
+
perform_request({
|
137
|
+
api_function: 'deluser',
|
138
|
+
'arg-0' => options.delete(:dbuser)
|
139
|
+
}.merge(default_options(options)))
|
140
|
+
end
|
141
|
+
|
142
|
+
# Public: Remove a database from MySQL.
|
143
|
+
#
|
144
|
+
# options - Hash options for API call params (default: {}).
|
145
|
+
# :dbname - String name of the MySQL database to remove.
|
146
|
+
# This value must be prefixed with the cPanel username
|
147
|
+
# (e.g., cpuser_dbname).
|
148
|
+
#
|
149
|
+
# Returns Hash API response.
|
150
|
+
def del_db(options = {})
|
151
|
+
perform_request({
|
152
|
+
api_function: 'deldb',
|
153
|
+
'arg-0' => options.delete(:dbname)
|
154
|
+
}.merge(default_options(options)))
|
155
|
+
end
|
156
|
+
|
157
|
+
# Public: Authorize a remote host to access a cPanel account's MySQL users.
|
158
|
+
#
|
159
|
+
# options - Hash options for API call params (default: {})
|
160
|
+
# :hostname - String IP address or hostname that should be provided access.
|
161
|
+
#
|
162
|
+
# Returns Hash API response.
|
163
|
+
def add_host(options = {})
|
164
|
+
perform_request({
|
165
|
+
api_function: 'addhost',
|
166
|
+
'arg-0' => options.delete(:hostname)
|
167
|
+
}.merge(default_options(options)))
|
168
|
+
end
|
169
|
+
|
170
|
+
# Public: Remove host access permissions from MySQL.
|
171
|
+
#
|
172
|
+
# options - Hash options for API call params (default: {})
|
173
|
+
# :host - String IP address or hostname that should be provided access.
|
174
|
+
#
|
175
|
+
# Returns Hash API response.
|
176
|
+
def del_host(options = {})
|
177
|
+
perform_request({
|
178
|
+
api_function: 'delhost',
|
179
|
+
'arg-0' => options.delete(:host)
|
180
|
+
}.merge(default_options(options)))
|
181
|
+
end
|
182
|
+
|
183
|
+
private
|
184
|
+
|
185
|
+
def default_options(options)
|
186
|
+
{ api_version: 1, response_key: 'data' }.merge(options)
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
data/lib/lumberg/version.rb
CHANGED
data/lib/lumberg/whm/server.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Faraday.register_middleware
|
1
|
+
Faraday::Response.register_middleware format_whm: Lumberg::FormatWhm
|
2
2
|
|
3
3
|
module Lumberg
|
4
4
|
module Whm
|
@@ -170,6 +170,26 @@ module Lumberg
|
|
170
170
|
perform_request('reboot', {response_key: "reboot"})
|
171
171
|
end
|
172
172
|
|
173
|
+
def list_hooks
|
174
|
+
request = perform_request('list_hooks',
|
175
|
+
response_key: 'data',
|
176
|
+
:'api.version' => 1)
|
177
|
+
|
178
|
+
request[:success] = request.has_key?(:params)
|
179
|
+
|
180
|
+
request
|
181
|
+
end
|
182
|
+
|
183
|
+
def edit_hook(options = {})
|
184
|
+
request = perform_request('edit_hook',
|
185
|
+
options.merge(:'api.version' => 1,
|
186
|
+
response_key: 'metadata'))
|
187
|
+
|
188
|
+
request[:success] = request[:params][:reason] == 'OK'
|
189
|
+
|
190
|
+
request
|
191
|
+
end
|
192
|
+
|
173
193
|
def account
|
174
194
|
@account ||= Account.new(server: self)
|
175
195
|
end
|
data/spec/cpanel/contact_spec.rb
CHANGED
@@ -29,7 +29,7 @@ module Lumberg
|
|
29
29
|
let(:email_address) { "testing@lumberg-test.com" }
|
30
30
|
let(:result) { Hash.new }
|
31
31
|
|
32
|
-
use_vcr_cassette("cpanel/contact/update"
|
32
|
+
use_vcr_cassette("cpanel/contact/update")
|
33
33
|
|
34
34
|
context "configure contact email address and enables notifications" do
|
35
35
|
it "should setup email address and bandwidth limit notification" do
|
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Lumberg
|
4
|
+
describe Cpanel::MysqlDb do
|
5
|
+
let(:server) { Whm::Server.new(host: @whm_host, hash: @whm_hash) }
|
6
|
+
let(:api_username) { "lumberg" }
|
7
|
+
let(:mysql_db) do
|
8
|
+
described_class.new(
|
9
|
+
server: server,
|
10
|
+
api_username: api_username
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#add_db" do
|
15
|
+
use_vcr_cassette("cpanel/mysql_db/add_db")
|
16
|
+
|
17
|
+
it "adds a db" do
|
18
|
+
mysql_db.add_db(dbname: 'cpanel')[:params][:result].should_not be_nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#add_user" do
|
23
|
+
use_vcr_cassette("cpanel/mysql_db/add_user")
|
24
|
+
|
25
|
+
it "adds a user" do
|
26
|
+
mysql_db.add_user(username: 'first', password: 'first_pass')[:params][:result].should_not be_nil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#add_user_db" do
|
31
|
+
use_vcr_cassette("cpanel/mysql_db/add_user_db")
|
32
|
+
|
33
|
+
it "adds a user to a db" do
|
34
|
+
mysql_db.add_user_db(dbname: 'lumberg_cpanel', dbuser: 'lumberg_first',
|
35
|
+
perms_list: 'all')[:params][:result].should_not be_nil
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "#number_of_dbs" do
|
40
|
+
use_vcr_cassette("cpanel/mysql_db/number_of_dbs")
|
41
|
+
|
42
|
+
it "gets number of dbs" do
|
43
|
+
mysql_db.number_of_dbs[:params][:result].should eq("1")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "#check_db" do
|
48
|
+
use_vcr_cassette("cpanel/mysql_db/check_db")
|
49
|
+
|
50
|
+
it "checks db" do
|
51
|
+
mysql_db.check_db(dbname: 'lumberg_cpanel')[:params][:result].should_not be_nil
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "#repair_db" do
|
56
|
+
use_vcr_cassette("cpanel/mysql_db/repair_db")
|
57
|
+
|
58
|
+
it "repairs the db" do
|
59
|
+
mysql_db.repair_db(dbname: 'lumberg_cpanel')[:params][:result].should_not be_nil
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "#update_privs" do
|
64
|
+
use_vcr_cassette("cpanel/mysql_db/update_privs")
|
65
|
+
|
66
|
+
it "updates privileges" do
|
67
|
+
mysql_db.update_privs[:params][:result].should_not be_nil
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "#init_cache" do
|
72
|
+
use_vcr_cassette("cpanel/mysql_db/init_cache")
|
73
|
+
|
74
|
+
it "refreshes the cache of MySQL information" do
|
75
|
+
mysql_db.init_cache[:params][:result].should_not be_nil
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "#del_user_db" do
|
80
|
+
use_vcr_cassette("cpanel/mysql_db/del_user_db")
|
81
|
+
|
82
|
+
it "disallows a user from accessing a db" do
|
83
|
+
mysql_db.del_user_db(dbname: 'lumberg_cpanel', dbuser: 'lumberg_first')[:params][:result].should_not be_nil
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe "#del_user" do
|
88
|
+
use_vcr_cassette("cpanel/mysql_db/del_user")
|
89
|
+
|
90
|
+
it "deletes a user" do
|
91
|
+
mysql_db.del_user(dbuser: 'lumberg_first')[:params][:result].should_not be_nil
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe "#del_db" do
|
96
|
+
use_vcr_cassette("cpanel/mysql_db/del_db")
|
97
|
+
|
98
|
+
it "deletes a db" do
|
99
|
+
mysql_db.del_db(dbname: 'lumberg_cpanel')[:params][:result].should_not be_nil
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe "#add_host" do
|
104
|
+
use_vcr_cassette("cpanel/mysql_db/add_host")
|
105
|
+
|
106
|
+
it "adds a host" do
|
107
|
+
mysql_db.add_host(hostname: 'cpanel_test.com')[:params][:result].should_not be_nil
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "#del_host" do
|
112
|
+
use_vcr_cassette("cpanel/mysql_db/del_host")
|
113
|
+
|
114
|
+
it "deletes a host" do
|
115
|
+
mysql_db.del_host(host: 'cpanel_test.com')[:params][:result].should_not be_nil
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,40 +1,40 @@
|
|
1
|
-
---
|
2
|
-
http_interactions:
|
3
|
-
- request:
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
4
|
method: get
|
5
|
-
uri: https://myhost.com:2087/json-api/cpanel?cpanel_jsonapi_apiversion=2&cpanel_jsonapi_func=savecontactinfo&cpanel_jsonapi_module=CustInfo&cpanel_jsonapi_user=lumberg&email=testing@lumberg-test.com¬ify_bandwidth_limit=1¬ify_disk_limit
|
6
|
-
body:
|
5
|
+
uri: https://myhost.com:2087/json-api/cpanel?cpanel_jsonapi_apiversion=2&cpanel_jsonapi_func=savecontactinfo&cpanel_jsonapi_module=CustInfo&cpanel_jsonapi_user=lumberg&email=testing@lumberg-test.com¬ify_bandwidth_limit=1¬ify_disk_limit=¬ify_email_quota_limit=
|
6
|
+
body:
|
7
7
|
string: ""
|
8
|
-
headers:
|
9
|
-
Authorization:
|
8
|
+
headers:
|
9
|
+
Authorization:
|
10
10
|
- WHM root:iscool
|
11
|
-
Accept:
|
11
|
+
Accept:
|
12
12
|
- "*/*"
|
13
|
-
User-Agent:
|
13
|
+
User-Agent:
|
14
14
|
- Faraday v0.8.7
|
15
|
-
response:
|
16
|
-
status:
|
15
|
+
response:
|
16
|
+
status:
|
17
17
|
code: 200
|
18
18
|
message: OK
|
19
|
-
headers:
|
20
|
-
Date:
|
19
|
+
headers:
|
20
|
+
Date:
|
21
21
|
- Thu, 16 May 2013 06:22:30 GMT
|
22
|
-
Server:
|
22
|
+
Server:
|
23
23
|
- cpsrvd/11.36.0.4
|
24
|
-
Content-Length:
|
24
|
+
Content-Length:
|
25
25
|
- "1008"
|
26
|
-
Connection:
|
26
|
+
Connection:
|
27
27
|
- Keep-Alive
|
28
|
-
X-Keep-Alive-Count:
|
28
|
+
X-Keep-Alive-Count:
|
29
29
|
- "1"
|
30
|
-
Keep-Alive:
|
30
|
+
Keep-Alive:
|
31
31
|
- timeout=70, max=200
|
32
|
-
Content-Type:
|
32
|
+
Content-Type:
|
33
33
|
- application/json; charset="utf-8"
|
34
|
-
body:
|
34
|
+
body:
|
35
35
|
string: |
|
36
36
|
{"cpanelresult":{"event":{"result":1},"module":"CustInfo","apiversion":2,"data":[{"display_value":"off","descp":"Send notifications to your contact email address when you are reaching your disk quota.","value":0,"name":"notify_disk_limit"},{"display_value":"testing@lumberg-test.com","descp":"Email address that you can be contacted at. This should be an email address that is not on your account if you have one.","value":"testing@lumberg-test.com","name":"email"},{"display_value":"off","descp":"Send notifications to your contact email address when one of your email accounts approaches or is over quota.","value":0,"name":"notify_email_quota_limit"},{"display_value":"","descp":"If you wish to provide a second email address to receive notifications, enter it here.","value":"","name":"second_email"},{"display_value":"on","descp":"Send notifications to your contact email address when you are reaching your bandwidth usage limit.","value":1,"name":"notify_bandwidth_limit"}],"func":"savecontactinfo"}}
|
37
37
|
|
38
|
-
http_version:
|
38
|
+
http_version:
|
39
39
|
recorded_at: Thu, 16 May 2013 06:17:43 GMT
|
40
40
|
recorded_with: VCR 2.0.1
|