plesk_kit 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.
- data/app/assets/javascripts/plesk_kit/application.js +15 -0
- data/app/assets/javascripts/plesk_kit/customer_accounts.js +2 -0
- data/app/assets/javascripts/plesk_kit/customers.js +2 -0
- data/app/assets/javascripts/plesk_kit/reseller_accounts.js +2 -0
- data/app/assets/javascripts/plesk_kit/servers.js +2 -0
- data/app/assets/javascripts/plesk_kit/subscriptions.js +2 -0
- data/app/assets/stylesheets/plesk_kit/application.css +13 -0
- data/app/assets/stylesheets/plesk_kit/customer_accounts.css +4 -0
- data/app/assets/stylesheets/plesk_kit/customers.css +4 -0
- data/app/assets/stylesheets/plesk_kit/reseller_accounts.css +4 -0
- data/app/assets/stylesheets/plesk_kit/servers.css +4 -0
- data/app/assets/stylesheets/plesk_kit/subscriptions.css +4 -0
- data/app/assets/stylesheets/scaffold.css +56 -0
- data/app/controllers/plesk_kit/application_controller.rb +4 -0
- data/app/controllers/plesk_kit/customer_accounts_controller.rb +87 -0
- data/app/controllers/plesk_kit/reseller_accounts_controller.rb +87 -0
- data/app/controllers/plesk_kit/servers_controller.rb +87 -0
- data/app/controllers/plesk_kit/subscriptions_controller.rb +87 -0
- data/app/helpers/plesk_kit/application_helper.rb +4 -0
- data/app/helpers/plesk_kit/customer_accounts_helper.rb +4 -0
- data/app/helpers/plesk_kit/reseller_accounts_helper.rb +4 -0
- data/app/helpers/plesk_kit/servers_helper.rb +4 -0
- data/app/helpers/plesk_kit/subscriptions_helper.rb +4 -0
- data/app/models/plesk_kit/client.rb +25 -0
- data/app/models/plesk_kit/communicator.rb +45 -0
- data/app/models/plesk_kit/customer_account.rb +69 -0
- data/app/models/plesk_kit/reseller_account.rb +72 -0
- data/app/models/plesk_kit/server.rb +30 -0
- data/app/models/plesk_kit/subscription.rb +86 -0
- data/app/views/layouts/plesk_kit/application.html.erb +14 -0
- data/app/views/plesk_kit/customer_accounts/_form.html.erb +33 -0
- data/app/views/plesk_kit/customer_accounts/edit.html.erb +6 -0
- data/app/views/plesk_kit/customer_accounts/index.html.erb +29 -0
- data/app/views/plesk_kit/customer_accounts/new.html.erb +5 -0
- data/app/views/plesk_kit/customer_accounts/show.html.erb +25 -0
- data/app/views/plesk_kit/reseller_accounts/_form.html.erb +33 -0
- data/app/views/plesk_kit/reseller_accounts/edit.html.erb +6 -0
- data/app/views/plesk_kit/reseller_accounts/index.html.erb +29 -0
- data/app/views/plesk_kit/reseller_accounts/new.html.erb +5 -0
- data/app/views/plesk_kit/reseller_accounts/show.html.erb +25 -0
- data/app/views/plesk_kit/servers/_form.html.erb +37 -0
- data/app/views/plesk_kit/servers/edit.html.erb +6 -0
- data/app/views/plesk_kit/servers/index.html.erb +31 -0
- data/app/views/plesk_kit/servers/new.html.erb +5 -0
- data/app/views/plesk_kit/servers/show.html.erb +30 -0
- data/app/views/plesk_kit/subscriptions/_form.html.erb +49 -0
- data/app/views/plesk_kit/subscriptions/edit.html.erb +6 -0
- data/app/views/plesk_kit/subscriptions/index.html.erb +33 -0
- data/app/views/plesk_kit/subscriptions/new.html.erb +5 -0
- data/app/views/plesk_kit/subscriptions/show.html.erb +35 -0
- data/config/routes.rb +8 -0
- data/db/migrate/20130906033658_create_plesk_kit_customer_accounts.rb +14 -0
- data/db/migrate/20130906033745_create_plesk_kit_reseller_accounts.rb +15 -0
- data/db/migrate/20130906034225_create_plesk_kit_subscriptions.rb +16 -0
- data/db/migrate/20130906040817_create_plesk_kit_servers.rb +13 -0
- data/lib/plesk_kit/engine.rb +23 -0
- data/lib/plesk_kit/version.rb +3 -0
- data/lib/plesk_kit.rb +4 -0
- data/lib/tasks/plesk_kit_tasks.rake +4 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20130906035255_create_plesk_kit_customer_accounts.plesk_kit.rb +13 -0
- data/test/dummy/db/migrate/20130906035256_create_plesk_kit_reseller_accounts.plesk_kit.rb +13 -0
- data/test/dummy/db/migrate/20130906035257_create_plesk_kit_subscriptions.plesk_kit.rb +17 -0
- data/test/dummy/db/migrate/20130906040830_create_plesk_kit_servers.plesk_kit.rb +14 -0
- data/test/dummy/db/schema.rb +72 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +9379 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/tmp/cache/assets/C5D/AF0/sprockets%2Faa100860897bd469c74972020e9d6966 +0 -0
- data/test/dummy/tmp/cache/assets/C83/800/sprockets%2F0892f1bdb69d260331b7b414298969c1 +0 -0
- data/test/dummy/tmp/cache/assets/C8A/850/sprockets%2F8729404d8f18dcc24e0523d37801589e +0 -0
- data/test/dummy/tmp/cache/assets/CC2/EF0/sprockets%2F756af5df20241589c464741d971fd7d8 +0 -0
- data/test/dummy/tmp/cache/assets/CC4/B50/sprockets%2F34e848818d05961fdc8c6c275e16629b +0 -0
- data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/CE0/340/sprockets%2F4b6f8f760b2a1789f60289271d20c0be +0 -0
- data/test/dummy/tmp/cache/assets/CED/DE0/sprockets%2F18595c4734c4d7582dee3ae35b079a49 +0 -0
- data/test/dummy/tmp/cache/assets/CEE/F00/sprockets%2F891ac2c44b3be23865e990924a995fe2 +0 -0
- data/test/dummy/tmp/cache/assets/D10/EC0/sprockets%2F73e40114523e8419fcd0efa71d597c5d +0 -0
- data/test/dummy/tmp/cache/assets/D11/AE0/sprockets%2Fa1a95d724723a8f11e9037e8d2b28a8f +0 -0
- data/test/dummy/tmp/cache/assets/D13/380/sprockets%2F354af7b9709615f6f10e77d7e1b2da15 +0 -0
- data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/D33/4D0/sprockets%2F14f2359cdf393c5e0b6401e233bb2ef5 +0 -0
- data/test/dummy/tmp/cache/assets/D3B/BF0/sprockets%2F3b7fb545a51edee1b772b818b2424d56 +0 -0
- data/test/dummy/tmp/cache/assets/D3C/B20/sprockets%2F1927fcaeaf1d200dab53e55b86526939 +0 -0
- data/test/dummy/tmp/cache/assets/D3F/2C0/sprockets%2F1ada6cc19aa84bf00164875127ef689e +0 -0
- data/test/dummy/tmp/cache/assets/D44/140/sprockets%2F341e589bb22dea2848665b989b2ba3ea +0 -0
- data/test/dummy/tmp/cache/assets/D4A/700/sprockets%2Fd56d83b8bbc98f0ce23f6263ff796020 +0 -0
- data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/D51/190/sprockets%2F2a28b96857a9e16a74ee9dde52903dc7 +0 -0
- data/test/dummy/tmp/cache/assets/D51/610/sprockets%2F34de6f511191ffa00431d50cb5b31eac +0 -0
- data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/D62/7B0/sprockets%2F39cdc1f2f8021136f2034ac5a9dab7f6 +0 -0
- data/test/dummy/tmp/cache/assets/D78/5D0/sprockets%2Feb7a1f999039a6136d9cfe25222fdcd5 +0 -0
- data/test/dummy/tmp/cache/assets/D7A/A30/sprockets%2F7e54a37cfb268f56b4c49b9f02029bff +0 -0
- data/test/dummy/tmp/cache/assets/D98/A30/sprockets%2Fd3cd57a8fade5aef376036123c5e11d6 +0 -0
- data/test/dummy/tmp/cache/assets/DA6/B80/sprockets%2F3fea63c0c7e19aae37d6037cd9d987e0 +0 -0
- data/test/dummy/tmp/cache/assets/DBA/730/sprockets%2F182cd97bf96da9ad7f037dcda77e8965 +0 -0
- data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/DF9/B80/sprockets%2Fe87d27fca0c65097c5b652becc1eec0b +0 -0
- data/test/dummy/tmp/cache/assets/DFA/E90/sprockets%2F1fc47d21f6a426ae1e5d7b1dc9b39dbf +0 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/E28/3B0/sprockets%2Fce7fac4e9b4c46afa942e091b54c6aab +0 -0
- data/test/dummy/tmp/cache/assets/E3D/360/sprockets%2F19c6fbcf6aaed23dce100b1c1b2b0b8c +0 -0
- data/test/dummy/tmp/cache/assets/E89/270/sprockets%2F1bf1ee2ecfe1c679faf4002f4ea8bece +0 -0
- data/test/fixtures/plesk_kit/customer_accounts.yml +13 -0
- data/test/fixtures/plesk_kit/customers.yml +7 -0
- data/test/fixtures/plesk_kit/reseller_accounts.yml +13 -0
- data/test/fixtures/plesk_kit/servers.yml +15 -0
- data/test/fixtures/plesk_kit/subscriptions.yml +17 -0
- data/test/fixtures/plesk_kit/webspaces.yml +11 -0
- data/test/functional/plesk_kit/customer_accounts_controller_test.rb +51 -0
- data/test/functional/plesk_kit/customers_controller_test.rb +51 -0
- data/test/functional/plesk_kit/reseller_accounts_controller_test.rb +51 -0
- data/test/functional/plesk_kit/servers_controller_test.rb +51 -0
- data/test/functional/plesk_kit/subscriptions_controller_test.rb +51 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/plesk_kit_test.rb +7 -0
- data/test/test_helper.rb +15 -0
- data/test/unit/helpers/plesk_kit/customer_accounts_helper_test.rb +6 -0
- data/test/unit/helpers/plesk_kit/customers_helper_test.rb +6 -0
- data/test/unit/helpers/plesk_kit/reseller_accounts_helper_test.rb +6 -0
- data/test/unit/helpers/plesk_kit/servers_helper_test.rb +6 -0
- data/test/unit/helpers/plesk_kit/subscriptions_helper_test.rb +6 -0
- data/test/unit/plesk_kit/customer_account_test.rb +9 -0
- data/test/unit/plesk_kit/customer_test.rb +9 -0
- data/test/unit/plesk_kit/reseller_account_test.rb +9 -0
- data/test/unit/plesk_kit/server_test.rb +9 -0
- data/test/unit/plesk_kit/subscription_test.rb +9 -0
- data/test/unit/plesk_kit/webspace_test.rb +9 -0
- metadata +331 -0
@@ -0,0 +1,15 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// the compiled file.
|
9
|
+
//
|
10
|
+
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
|
11
|
+
// GO AFTER THE REQUIRES BELOW.
|
12
|
+
//
|
13
|
+
//= require jquery
|
14
|
+
//= require jquery_ujs
|
15
|
+
//= require_tree .
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
+
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
9
|
+
* compiled file, but it's generally better to create a new file per style scope.
|
10
|
+
*
|
11
|
+
*= require_self
|
12
|
+
*= require_tree .
|
13
|
+
*/
|
@@ -0,0 +1,56 @@
|
|
1
|
+
body { background-color: #fff; color: #333; }
|
2
|
+
|
3
|
+
body, p, ol, ul, td {
|
4
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
5
|
+
font-size: 13px;
|
6
|
+
line-height: 18px;
|
7
|
+
}
|
8
|
+
|
9
|
+
pre {
|
10
|
+
background-color: #eee;
|
11
|
+
padding: 10px;
|
12
|
+
font-size: 11px;
|
13
|
+
}
|
14
|
+
|
15
|
+
a { color: #000; }
|
16
|
+
a:visited { color: #666; }
|
17
|
+
a:hover { color: #fff; background-color:#000; }
|
18
|
+
|
19
|
+
div.field, div.actions {
|
20
|
+
margin-bottom: 10px;
|
21
|
+
}
|
22
|
+
|
23
|
+
#notice {
|
24
|
+
color: green;
|
25
|
+
}
|
26
|
+
|
27
|
+
.field_with_errors {
|
28
|
+
padding: 2px;
|
29
|
+
background-color: red;
|
30
|
+
display: table;
|
31
|
+
}
|
32
|
+
|
33
|
+
#error_explanation {
|
34
|
+
width: 450px;
|
35
|
+
border: 2px solid red;
|
36
|
+
padding: 7px;
|
37
|
+
padding-bottom: 0;
|
38
|
+
margin-bottom: 20px;
|
39
|
+
background-color: #f0f0f0;
|
40
|
+
}
|
41
|
+
|
42
|
+
#error_explanation h2 {
|
43
|
+
text-align: left;
|
44
|
+
font-weight: bold;
|
45
|
+
padding: 5px 5px 5px 15px;
|
46
|
+
font-size: 12px;
|
47
|
+
margin: -7px;
|
48
|
+
margin-bottom: 0px;
|
49
|
+
background-color: #c00;
|
50
|
+
color: #fff;
|
51
|
+
}
|
52
|
+
|
53
|
+
#error_explanation ul li {
|
54
|
+
font-size: 12px;
|
55
|
+
list-style: square;
|
56
|
+
}
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require_dependency "plesk_kit/application_controller"
|
2
|
+
|
3
|
+
module PleskKit
|
4
|
+
class CustomerAccountsController < ApplicationController
|
5
|
+
# GET /customer_accounts
|
6
|
+
# GET /customer_accounts.json
|
7
|
+
def index
|
8
|
+
@customer_accounts = CustomerAccount.all
|
9
|
+
|
10
|
+
respond_to do |format|
|
11
|
+
format.html # index.html.erb
|
12
|
+
format.json { render json: @customer_accounts }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# GET /customer_accounts/1
|
17
|
+
# GET /customer_accounts/1.json
|
18
|
+
def show
|
19
|
+
@customer_account = CustomerAccount.find(params[:id])
|
20
|
+
|
21
|
+
respond_to do |format|
|
22
|
+
format.html # show.html.erb
|
23
|
+
format.json { render json: @customer_account }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# GET /customer_accounts/new
|
28
|
+
# GET /customer_accounts/new.json
|
29
|
+
def new
|
30
|
+
@customer_account = CustomerAccount.new
|
31
|
+
|
32
|
+
respond_to do |format|
|
33
|
+
format.html # new.html.erb
|
34
|
+
format.json { render json: @customer_account }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# GET /customer_accounts/1/edit
|
39
|
+
def edit
|
40
|
+
@customer_account = CustomerAccount.find(params[:id])
|
41
|
+
end
|
42
|
+
|
43
|
+
# POST /customer_accounts
|
44
|
+
# POST /customer_accounts.json
|
45
|
+
def create
|
46
|
+
@customer_account = CustomerAccount.new(params[:customer_account])
|
47
|
+
|
48
|
+
respond_to do |format|
|
49
|
+
if @customer_account.save
|
50
|
+
format.html { redirect_to @customer_account, notice: 'Customer account was successfully created.' }
|
51
|
+
format.json { render json: @customer_account, status: :created, location: @customer_account }
|
52
|
+
else
|
53
|
+
format.html { render action: "new" }
|
54
|
+
format.json { render json: @customer_account.errors, status: :unprocessable_entity }
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# PUT /customer_accounts/1
|
60
|
+
# PUT /customer_accounts/1.json
|
61
|
+
def update
|
62
|
+
@customer_account = CustomerAccount.find(params[:id])
|
63
|
+
|
64
|
+
respond_to do |format|
|
65
|
+
if @customer_account.update_attributes(params[:customer_account])
|
66
|
+
format.html { redirect_to @customer_account, notice: 'Customer account was successfully updated.' }
|
67
|
+
format.json { head :no_content }
|
68
|
+
else
|
69
|
+
format.html { render action: "edit" }
|
70
|
+
format.json { render json: @customer_account.errors, status: :unprocessable_entity }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# DELETE /customer_accounts/1
|
76
|
+
# DELETE /customer_accounts/1.json
|
77
|
+
def destroy
|
78
|
+
@customer_account = CustomerAccount.find(params[:id])
|
79
|
+
@customer_account.destroy
|
80
|
+
|
81
|
+
respond_to do |format|
|
82
|
+
format.html { redirect_to customer_accounts_url }
|
83
|
+
format.json { head :no_content }
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require_dependency "plesk_kit/application_controller"
|
2
|
+
|
3
|
+
module PleskKit
|
4
|
+
class ResellerAccountsController < ApplicationController
|
5
|
+
# GET /reseller_accounts
|
6
|
+
# GET /reseller_accounts.json
|
7
|
+
def index
|
8
|
+
@reseller_accounts = ResellerAccount.all
|
9
|
+
|
10
|
+
respond_to do |format|
|
11
|
+
format.html # index.html.erb
|
12
|
+
format.json { render json: @reseller_accounts }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# GET /reseller_accounts/1
|
17
|
+
# GET /reseller_accounts/1.json
|
18
|
+
def show
|
19
|
+
@reseller_account = ResellerAccount.find(params[:id])
|
20
|
+
|
21
|
+
respond_to do |format|
|
22
|
+
format.html # show.html.erb
|
23
|
+
format.json { render json: @reseller_account }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# GET /reseller_accounts/new
|
28
|
+
# GET /reseller_accounts/new.json
|
29
|
+
def new
|
30
|
+
@reseller_account = ResellerAccount.new
|
31
|
+
|
32
|
+
respond_to do |format|
|
33
|
+
format.html # new.html.erb
|
34
|
+
format.json { render json: @reseller_account }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# GET /reseller_accounts/1/edit
|
39
|
+
def edit
|
40
|
+
@reseller_account = ResellerAccount.find(params[:id])
|
41
|
+
end
|
42
|
+
|
43
|
+
# POST /reseller_accounts
|
44
|
+
# POST /reseller_accounts.json
|
45
|
+
def create
|
46
|
+
@reseller_account = ResellerAccount.new(params[:reseller_account])
|
47
|
+
|
48
|
+
respond_to do |format|
|
49
|
+
if @reseller_account.save
|
50
|
+
format.html { redirect_to @reseller_account, notice: 'Reseller account was successfully created.' }
|
51
|
+
format.json { render json: @reseller_account, status: :created, location: @reseller_account }
|
52
|
+
else
|
53
|
+
format.html { render action: "new" }
|
54
|
+
format.json { render json: @reseller_account.errors, status: :unprocessable_entity }
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# PUT /reseller_accounts/1
|
60
|
+
# PUT /reseller_accounts/1.json
|
61
|
+
def update
|
62
|
+
@reseller_account = ResellerAccount.find(params[:id])
|
63
|
+
|
64
|
+
respond_to do |format|
|
65
|
+
if @reseller_account.update_attributes(params[:reseller_account])
|
66
|
+
format.html { redirect_to @reseller_account, notice: 'Reseller account was successfully updated.' }
|
67
|
+
format.json { head :no_content }
|
68
|
+
else
|
69
|
+
format.html { render action: "edit" }
|
70
|
+
format.json { render json: @reseller_account.errors, status: :unprocessable_entity }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# DELETE /reseller_accounts/1
|
76
|
+
# DELETE /reseller_accounts/1.json
|
77
|
+
def destroy
|
78
|
+
@reseller_account = ResellerAccount.find(params[:id])
|
79
|
+
@reseller_account.destroy
|
80
|
+
|
81
|
+
respond_to do |format|
|
82
|
+
format.html { redirect_to reseller_accounts_url }
|
83
|
+
format.json { head :no_content }
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require_dependency "plesk_kit/application_controller"
|
2
|
+
|
3
|
+
module PleskKit
|
4
|
+
class ServersController < ApplicationController
|
5
|
+
# GET /servers
|
6
|
+
# GET /servers.json
|
7
|
+
def index
|
8
|
+
@servers = Server.all
|
9
|
+
|
10
|
+
respond_to do |format|
|
11
|
+
format.html # index.html.erb
|
12
|
+
format.json { render json: @servers }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# GET /servers/1
|
17
|
+
# GET /servers/1.json
|
18
|
+
def show
|
19
|
+
@server = Server.find(params[:id])
|
20
|
+
|
21
|
+
respond_to do |format|
|
22
|
+
format.html # show.html.erb
|
23
|
+
format.json { render json: @server }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# GET /servers/new
|
28
|
+
# GET /servers/new.json
|
29
|
+
def new
|
30
|
+
@server = Server.new
|
31
|
+
|
32
|
+
respond_to do |format|
|
33
|
+
format.html # new.html.erb
|
34
|
+
format.json { render json: @server }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# GET /servers/1/edit
|
39
|
+
def edit
|
40
|
+
@server = Server.find(params[:id])
|
41
|
+
end
|
42
|
+
|
43
|
+
# POST /servers
|
44
|
+
# POST /servers.json
|
45
|
+
def create
|
46
|
+
@server = Server.new(params[:server])
|
47
|
+
|
48
|
+
respond_to do |format|
|
49
|
+
if @server.save
|
50
|
+
format.html { redirect_to @server, notice: 'Server was successfully created.' }
|
51
|
+
format.json { render json: @server, status: :created, location: @server }
|
52
|
+
else
|
53
|
+
format.html { render action: "new" }
|
54
|
+
format.json { render json: @server.errors, status: :unprocessable_entity }
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# PUT /servers/1
|
60
|
+
# PUT /servers/1.json
|
61
|
+
def update
|
62
|
+
@server = Server.find(params[:id])
|
63
|
+
|
64
|
+
respond_to do |format|
|
65
|
+
if @server.update_attributes(params[:server])
|
66
|
+
format.html { redirect_to @server, notice: 'Server was successfully updated.' }
|
67
|
+
format.json { head :no_content }
|
68
|
+
else
|
69
|
+
format.html { render action: "edit" }
|
70
|
+
format.json { render json: @server.errors, status: :unprocessable_entity }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# DELETE /servers/1
|
76
|
+
# DELETE /servers/1.json
|
77
|
+
def destroy
|
78
|
+
@server = Server.find(params[:id])
|
79
|
+
@server.destroy
|
80
|
+
|
81
|
+
respond_to do |format|
|
82
|
+
format.html { redirect_to servers_url }
|
83
|
+
format.json { head :no_content }
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require_dependency "plesk_kit/application_controller"
|
2
|
+
|
3
|
+
module PleskKit
|
4
|
+
class SubscriptionsController < ApplicationController
|
5
|
+
# GET /subscriptions
|
6
|
+
# GET /subscriptions.json
|
7
|
+
def index
|
8
|
+
@subscriptions = Subscription.all
|
9
|
+
|
10
|
+
respond_to do |format|
|
11
|
+
format.html # index.html.erb
|
12
|
+
format.json { render json: @subscriptions }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# GET /subscriptions/1
|
17
|
+
# GET /subscriptions/1.json
|
18
|
+
def show
|
19
|
+
@subscription = Subscription.find(params[:id])
|
20
|
+
|
21
|
+
respond_to do |format|
|
22
|
+
format.html # show.html.erb
|
23
|
+
format.json { render json: @subscription }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# GET /subscriptions/new
|
28
|
+
# GET /subscriptions/new.json
|
29
|
+
def new
|
30
|
+
@subscription = Subscription.new
|
31
|
+
|
32
|
+
respond_to do |format|
|
33
|
+
format.html # new.html.erb
|
34
|
+
format.json { render json: @subscription }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# GET /subscriptions/1/edit
|
39
|
+
def edit
|
40
|
+
@subscription = Subscription.find(params[:id])
|
41
|
+
end
|
42
|
+
|
43
|
+
# POST /subscriptions
|
44
|
+
# POST /subscriptions.json
|
45
|
+
def create
|
46
|
+
@subscription = Subscription.new(params[:subscription])
|
47
|
+
|
48
|
+
respond_to do |format|
|
49
|
+
if @subscription.save
|
50
|
+
format.html { redirect_to @subscription, notice: 'Subscription was successfully created.' }
|
51
|
+
format.json { render json: @subscription, status: :created, location: @subscription }
|
52
|
+
else
|
53
|
+
format.html { render action: "new" }
|
54
|
+
format.json { render json: @subscription.errors, status: :unprocessable_entity }
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# PUT /subscriptions/1
|
60
|
+
# PUT /subscriptions/1.json
|
61
|
+
def update
|
62
|
+
@subscription = Subscription.find(params[:id])
|
63
|
+
|
64
|
+
respond_to do |format|
|
65
|
+
if @subscription.update_attributes(params[:subscription])
|
66
|
+
format.html { redirect_to @subscription, notice: 'Subscription was successfully updated.' }
|
67
|
+
format.json { head :no_content }
|
68
|
+
else
|
69
|
+
format.html { render action: "edit" }
|
70
|
+
format.json { render json: @subscription.errors, status: :unprocessable_entity }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# DELETE /subscriptions/1
|
76
|
+
# DELETE /subscriptions/1.json
|
77
|
+
def destroy
|
78
|
+
@subscription = Subscription.find(params[:id])
|
79
|
+
@subscription.destroy
|
80
|
+
|
81
|
+
respond_to do |format|
|
82
|
+
format.html { redirect_to subscriptions_url }
|
83
|
+
format.json { head :no_content }
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module PleskKit
|
2
|
+
class Client
|
3
|
+
attr_accessor :host, :user, :pass, :timeout, :rpc_version, :xml_response, :xml_target
|
4
|
+
def initialize(server)
|
5
|
+
@host, @user, @pass, @timeout = server.host, server.username, server.password, 30
|
6
|
+
end
|
7
|
+
|
8
|
+
def send_to_plesk(xml)
|
9
|
+
http = Net::HTTP.new(@host, 8443)
|
10
|
+
puts http.inspect
|
11
|
+
http.use_ssl = true
|
12
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
13
|
+
@headers = {
|
14
|
+
'HTTP_AUTH_LOGIN' => @user,
|
15
|
+
'HTTP_AUTH_PASSWD' => @pass,
|
16
|
+
'Content-Type' => 'text/xml',
|
17
|
+
}
|
18
|
+
puts @headers
|
19
|
+
path = "/enterprise/control/agent.php"
|
20
|
+
res, data = http.post2(path, xml, @headers)
|
21
|
+
puts res
|
22
|
+
return res.body, xml
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module PleskKit
|
2
|
+
class Communicator
|
3
|
+
|
4
|
+
require 'net/http'
|
5
|
+
require 'builder'
|
6
|
+
require "rexml/document"
|
7
|
+
|
8
|
+
# The shell for the XML
|
9
|
+
def self.shell
|
10
|
+
Builder::XmlMarkup.new
|
11
|
+
end
|
12
|
+
|
13
|
+
# Creates object and sends it in one go
|
14
|
+
# Code only written for Customer::Account so far
|
15
|
+
def self.pack_and_play_with s, customer_account = nil
|
16
|
+
server = PleskKit::Server.find_by_environment(Rails.env.to_s)
|
17
|
+
#TODO server = PleskKit::Server.most_suitable_for_new_customer
|
18
|
+
packet = nil
|
19
|
+
if customer_account.blank?
|
20
|
+
packet = s.pack_this shell
|
21
|
+
else
|
22
|
+
packet = s.pack_this shell, customer_account
|
23
|
+
end
|
24
|
+
response = transportation_for packet,server
|
25
|
+
if (s.class.to_s == 'PleskKit::CustomerAccount' || s.class.to_s == 'PleskKit::ResellerAccount')
|
26
|
+
s.analyse response[0], server.id
|
27
|
+
else
|
28
|
+
customer_account.blank? ? (s.analyse response[0]) : (s.analyse response[0],customer_account)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Sends packet to plesk
|
33
|
+
def self.transportation_for packet, server
|
34
|
+
c = PleskKit::Client.new(server)
|
35
|
+
c.send_to_plesk packet
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.sync_subscription sub, sub_guid
|
39
|
+
server = PleskKit::Server.first
|
40
|
+
packet = sub.sync_pack shell,sub_guid
|
41
|
+
response = transportation_for packet,server
|
42
|
+
sub.analyse response[0]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module PleskKit
|
2
|
+
class CustomerAccount < ActiveRecord::Base
|
3
|
+
attr_accessible :cname, :login, :passwd, :pname, :server_id # TODO add plesk_id
|
4
|
+
has_many :subscriptions
|
5
|
+
belongs_to :server
|
6
|
+
validate :uniqueness_of_login_across_accounts
|
7
|
+
before_create :provision_in_plesk
|
8
|
+
|
9
|
+
def provision_in_plesk
|
10
|
+
PleskKit::Communicator.pack_and_play_with self
|
11
|
+
end
|
12
|
+
|
13
|
+
# # #
|
14
|
+
# Methods for sending brand new customer account to Plesk
|
15
|
+
# # #
|
16
|
+
|
17
|
+
# Creates Object & Packet
|
18
|
+
def pack_this shell
|
19
|
+
xml = shell
|
20
|
+
xml.instruct!
|
21
|
+
xml.packet(:version => '1.6.3.5') {
|
22
|
+
xml.customer {
|
23
|
+
xml.add{
|
24
|
+
xml.gen_info{
|
25
|
+
xml.cname(self.cname)
|
26
|
+
xml.pname(self.pname)
|
27
|
+
xml.login(self.login)
|
28
|
+
xml.passwd(self.passwd)
|
29
|
+
#xml.status(status ? 0 : 1)
|
30
|
+
#xml.phone(phone)
|
31
|
+
#xml.fax(fax)
|
32
|
+
#xml.address(address)
|
33
|
+
#xml.city(city)
|
34
|
+
#xml.state(state)
|
35
|
+
#xml.pcode(pcode)
|
36
|
+
#xml.country(country)
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
}
|
41
|
+
return xml.target!
|
42
|
+
end
|
43
|
+
|
44
|
+
def analyse response_string, server_id
|
45
|
+
xml = REXML::Document.new(response_string)
|
46
|
+
status = xml.root.elements['//status'].text if xml.root.elements['//status'].present?
|
47
|
+
if status == "error"
|
48
|
+
code = xml.root.elements['//errcode'].text
|
49
|
+
message = xml.root.elements['//errtext'].text
|
50
|
+
raise "#{code}: #{message}"
|
51
|
+
else
|
52
|
+
plesk_id = xml.root.elements['//id'].text if xml.root.elements['//id'].present?
|
53
|
+
self.server_id = server_id
|
54
|
+
end
|
55
|
+
|
56
|
+
return plesk_id # TODO save plesk_id
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
def uniqueness_of_login_across_accounts
|
61
|
+
if PleskKit::CustomerAccount.find_by_login(self.login).present?
|
62
|
+
errors.add(:base, "Login is not unique across Uber Plesk accounts")
|
63
|
+
elsif PleskKit::ResellerAccount.find_by_login(self.login).present?
|
64
|
+
errors.add(:base, "Login is not unique across Uber Plesk accounts")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|