Version Description
= After an upgrade from version 2 =
Please check all settings after the update:
- Dropbox authentication must be done again
- SugarSync authentication must be done again
- S3 Settings
- Google Storage is now in S3
- Check all your passwords
Download this release
Release Info
Developer | nullbyte |
Plugin | BackWPup – WordPress Backup Plugin |
Version | 3.1 |
Comparing to | |
See all releases |
Code changes from version 3.0.13 to 3.1
- assets/css/backwpup.css +360 -0
- assets/css/backwpup.min.css +1 -0
- assets/css/lower_wp38.css +60 -0
- assets/css/lower_wp38.min.css +1 -0
- assets/fonts/backwpup.eot +0 -0
- assets/fonts/backwpup.svg +11 -0
- assets/fonts/backwpup.ttf +0 -0
- assets/fonts/backwpup.woff +0 -0
- assets/images/backwpupbanner-free.png +0 -0
- assets/images/backwpupbanner-pro.png +0 -0
- assets/images/current.png +0 -0
- assets/images/erroreven.png +0 -0
- assets/images/errorhover.png +0 -0
- assets/images/errorodd.png +0 -0
- assets/images/even.png +0 -0
- assets/images/execute.png +0 -0
- assets/images/help.png +0 -0
- assets/images/hgbox.png +0 -0
- assets/images/hgboxleft.png +0 -0
- assets/images/hgbtgreen.png +0 -0
- assets/images/hgbtgreenhover.png +0 -0
- assets/images/hgbtred.png +0 -0
- assets/images/hgbtredhover.png +0 -0
- assets/images/hginfotxt.png +0 -0
- assets/images/hgtopgreen.png +0 -0
- assets/images/hover.png +0 -0
- assets/images/imagecloud.png +0 -0
- assets/images/imagedata.png +0 -0
- assets/images/imagerepair.png +0 -0
- assets/images/imagesave.png +0 -0
- assets/images/imagesec.png +0 -0
- assets/images/imagexml.png +0 -0
- assets/images/inpsyde.png +0 -0
- assets/images/mp_logo_small.png +0 -0
- assets/images/odd.png +0 -0
- assets/images/progressbarhg.jpg +0 -0
- assets/images/progresshg.jpg +0 -0
- assets/images/screen.png +0 -0
- assets/images/tickeven.png +0 -0
- assets/images/tickhover.png +0 -0
- assets/images/tickodd.png +0 -0
- assets/js/general.js +40 -0
- assets/js/general.min.js +1 -0
- assets/js/jquery.tipTip.js +176 -0
- assets/js/jquery.tipTip.min.js +1 -0
- assets/js/page_edit_jobtype_dbdump.js +77 -0
- assets/js/page_edit_jobtype_dbdump.min.js +1 -0
- assets/js/page_edit_jobtype_file.js +73 -0
- assets/js/page_edit_jobtype_file.min.js +1 -0
- assets/js/page_edit_tab_cron.js +157 -0
- assets/js/page_edit_tab_cron.min.js +1 -0
- assets/js/page_edit_tab_job.js +334 -0
- assets/js/page_edit_tab_job.min.js +1 -0
- assets/js/page_settings.js +27 -0
- assets/js/page_settings.min.js +1 -0
- backwpup.php +476 -340
- css/admin.css +0 -1
- css/admin.dev.css +0 -87
- css/adminbar.css +0 -1
- css/adminbar.dev.css +0 -28
- css/general.css +0 -1
- css/general.dev.css +0 -255
- css/page_about.css +0 -1
- css/page_about.dev.css +0 -330
- css/page_edit_tab_cron.css +0 -1
- css/page_edit_tab_cron.dev.css +0 -21
- css/page_jobs.css +0 -1
- css/page_jobs.dev.css +0 -95
- css/page_wizard.css +0 -1
- css/page_wizard.dev.css +0 -137
- images/BackWPup16.png +0 -0
- images/BackWPup16_2x.png +0 -0
- images/BackWPup20.png +0 -0
- images/BackWPup20_2x.png +0 -0
- images/BackWPup32.png +0 -0
- images/BackWPup64.png +0 -0
- images/backwpupbanner-free.png +0 -0
- images/backwpupbanner-pro.png +0 -0
- images/current.png +0 -0
- images/erroreven.png +0 -0
- images/errorhover.png +0 -0
- images/errorodd.png +0 -0
- images/even.png +0 -0
- images/execute.png +0 -0
- images/help.png +0 -0
- images/hgbox.png +0 -0
- images/hgboxleft.png +0 -0
- images/hgbtgreen.png +0 -0
- images/hgbtgreenhover.png +0 -0
- images/hgbtred.png +0 -0
- images/hgbtredhover.png +0 -0
- images/hginfotxt.png +0 -0
- images/hgtopgreen.png +0 -0
- images/hover.png +0 -0
- images/imagecloud.png +0 -0
- images/imagedata.png +0 -0
- images/imagerepair.png +0 -0
- images/imagesave.png +0 -0
- images/imagesec.png +0 -0
- images/imagexml.png +0 -0
- images/inpsyde.png +0 -0
- images/mp_logo_small.png +0 -0
- images/odd.png +0 -0
- images/progressbarhg.jpg +0 -0
- images/progresshg.jpg +0 -0
- images/screen.png +0 -0
- images/tickeven.png +0 -0
- images/tickhover.png +0 -0
- images/tickodd.png +0 -0
- inc/cacert.pem +0 -3895
- inc/class-admin.php +609 -494
- inc/class-adminbar.php +132 -147
- inc/class-create-archive.php +566 -562
- inc/class-cron.php +312 -342
- inc/class-destination-dropbox.php +833 -813
- inc/class-destination-email.php +433 -452
- inc/class-destination-folder.php +215 -230
- inc/class-destination-ftp.php +410 -418
- inc/class-destination-msazure.php +433 -401
- inc/class-destination-rsc.php +465 -475
- inc/class-destination-s3-v1.php +592 -607
- inc/class-destination-s3.php +677 -648
- inc/class-destination-sugarsync.php +871 -887
- inc/class-destinations.php +145 -158
- inc/class-file.php +87 -86
- inc/class-help.php +48 -63
- inc/class-install.php +300 -302
- inc/class-job.php +0 -786
assets/css/backwpup.css
ADDED
@@ -0,0 +1,360 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'backwpup';
|
3 |
+
src:url('../fonts/backwpup.eot');
|
4 |
+
src:url('../fonts/backwpup.eot?#iefix') format('embedded-opentype'),
|
5 |
+
url('../fonts/backwpup.ttf') format('truetype'),
|
6 |
+
url('../fonts/backwpup.woff') format('woff'),
|
7 |
+
url('../fonts/backwpup.svg#backwpup') format('svg');
|
8 |
+
font-weight: normal;
|
9 |
+
font-style: normal;
|
10 |
+
}
|
11 |
+
|
12 |
+
/* Adminbar icon */
|
13 |
+
#wp-admin-bar-backwpup .ab-icon {
|
14 |
+
font: normal 20px/1 'backwpup' !important;
|
15 |
+
}
|
16 |
+
#wp-admin-bar-backwpup .ab-icon:before {
|
17 |
+
content: "\e600";
|
18 |
+
top: 2px;
|
19 |
+
}
|
20 |
+
|
21 |
+
@media screen and (max-width: 782px) {
|
22 |
+
#wp-admin-bar-backwpup .ab-icon {
|
23 |
+
font: normal 32px/1 'backwpup' !important;
|
24 |
+
display: block;
|
25 |
+
text-indent: 0;
|
26 |
+
speak: none;
|
27 |
+
top: 7px;
|
28 |
+
width: 50px;
|
29 |
+
text-align: center;
|
30 |
+
-webkit-font-smoothing: antialiased;
|
31 |
+
-moz-osx-font-smoothing: grayscale;
|
32 |
+
}
|
33 |
+
#wp-admin-bar-backwpup .ab-icon:before {
|
34 |
+
top: 0;
|
35 |
+
}
|
36 |
+
}
|
37 |
+
|
38 |
+
/* Menu icon */
|
39 |
+
#adminmenu #toplevel_page_backwpup div.wp-menu-image:before {
|
40 |
+
font: normal 20px/1 'backwpup' !important;
|
41 |
+
content: "\e600";
|
42 |
+
}
|
43 |
+
#backwpup-page-icon,
|
44 |
+
#backwpup-page-icon:before {
|
45 |
+
display: none;
|
46 |
+
}
|
47 |
+
|
48 |
+
|
49 |
+
/* TipTip CSS - Version 1.3 for all backwpup pages */
|
50 |
+
|
51 |
+
#backwpup_tiptip_holder {
|
52 |
+
display: none;
|
53 |
+
position: absolute;
|
54 |
+
top: 0;
|
55 |
+
left: 0;
|
56 |
+
z-index: 99999;
|
57 |
+
}
|
58 |
+
#backwpup_tiptip_holder.tip_top {
|
59 |
+
padding-bottom: 5px;
|
60 |
+
}
|
61 |
+
#backwpup_tiptip_holder.tip_bottom {
|
62 |
+
padding-top: 5px;
|
63 |
+
}
|
64 |
+
#backwpup_tiptip_holder.tip_right {
|
65 |
+
padding-left: 5px;
|
66 |
+
}
|
67 |
+
#backwpup_tiptip_holder.tip_left {
|
68 |
+
padding-right: 5px;
|
69 |
+
}
|
70 |
+
#backwpup_tiptip_content {
|
71 |
+
font-size: 11px;
|
72 |
+
color: #fff;
|
73 |
+
text-shadow: 0 0 2px #000;
|
74 |
+
padding: 4px 8px;
|
75 |
+
border: 1px solid rgba(255, 255, 255, 0.25);
|
76 |
+
background-color: rgb(25, 25, 25);
|
77 |
+
background-color: rgba(25, 25, 25, 0.92);
|
78 |
+
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(transparent), to(#000));
|
79 |
+
border-radius: 3px;
|
80 |
+
-webkit-border-radius: 3px;
|
81 |
+
-moz-border-radius: 3px;
|
82 |
+
box-shadow: 0 0 3px #555;
|
83 |
+
-webkit-box-shadow: 0 0 3px #555;
|
84 |
+
-moz-box-shadow: 0 0 3px #555;
|
85 |
+
}
|
86 |
+
#backwpup_tiptip_content code {
|
87 |
+
background:#1d94cf;
|
88 |
+
color:#fff;
|
89 |
+
text-shadow:none;
|
90 |
+
padding:2px;
|
91 |
+
font-size:12px;
|
92 |
+
}
|
93 |
+
#backwpup_tiptip_content a{
|
94 |
+
color: #0CF;
|
95 |
+
}
|
96 |
+
#backwpup_tiptip_content a:hover{
|
97 |
+
color: #F93;
|
98 |
+
}
|
99 |
+
#backwpup_tiptip_arrow, #backwpup_tiptip_arrow_inner {
|
100 |
+
position: absolute;
|
101 |
+
border: 6px solid transparent;
|
102 |
+
height: 0;
|
103 |
+
width: 0;
|
104 |
+
}
|
105 |
+
#backwpup_tiptip_holder.tip_top #backwpup_tiptip_arrow {
|
106 |
+
border-top-color: #fff;
|
107 |
+
border-top-color: rgba(255, 255, 255, 0.35);
|
108 |
+
}
|
109 |
+
#backwpup_tiptip_holder.tip_bottom #backwpup_tiptip_arrow {
|
110 |
+
border-bottom-color: #fff;
|
111 |
+
border-bottom-color: rgba(255, 255, 255, 0.35);
|
112 |
+
}
|
113 |
+
#backwpup_tiptip_holder.tip_right #backwpup_tiptip_arrow {
|
114 |
+
border-right-color: #fff;
|
115 |
+
border-right-color: rgba(255, 255, 255, 0.35);
|
116 |
+
}
|
117 |
+
#backwpup_tiptip_holder.tip_left #backwpup_tiptip_arrow {
|
118 |
+
border-left-color: #fff;
|
119 |
+
border-left-color: rgba(255, 255, 255, 0.35);
|
120 |
+
}
|
121 |
+
#backwpup_tiptip_holder.tip_top #backwpup_tiptip_arrow_inner {
|
122 |
+
margin-top: -7px;
|
123 |
+
margin-left: -6px;
|
124 |
+
border-top-color: rgb(25, 25, 25);
|
125 |
+
border-top-color: rgba(25, 25, 25, 0.92);
|
126 |
+
}
|
127 |
+
#backwpup_tiptip_holder.tip_bottom #backwpup_tiptip_arrow_inner {
|
128 |
+
margin-top: -5px;
|
129 |
+
margin-left: -6px;
|
130 |
+
border-bottom-color: rgb(25, 25, 25);
|
131 |
+
border-bottom-color: rgba(25, 25, 25, 0.92);
|
132 |
+
}
|
133 |
+
#backwpup_tiptip_holder.tip_right #backwpup_tiptip_arrow_inner {
|
134 |
+
margin-top: -6px;
|
135 |
+
margin-left: -5px;
|
136 |
+
border-right-color: rgb(25, 25, 25);
|
137 |
+
border-right-color: rgba(25, 25, 25, 0.92);
|
138 |
+
}
|
139 |
+
#backwpup_tiptip_holder.tip_left #backwpup_tiptip_arrow_inner {
|
140 |
+
margin-top: -6px;
|
141 |
+
margin-left: -7px;
|
142 |
+
border-left-color: rgb(25, 25, 25);
|
143 |
+
border-left-color: rgba(25, 25, 25, 0.92);
|
144 |
+
}
|
145 |
+
|
146 |
+
/* Webkit Hacks */
|
147 |
+
@media screen and ( -webkit-min-device-pixel-ratio:0 ) {
|
148 |
+
#backwpup_tiptip_content {
|
149 |
+
padding: 4px 8px 5px 8px;
|
150 |
+
background-color: rgba(45, 45, 45, 0.88);
|
151 |
+
}
|
152 |
+
|
153 |
+
#backwpup_tiptip_holder.tip_bottom #backwpup_tiptip_arrow_inner {
|
154 |
+
border-bottom-color: rgba(45, 45, 45, 0.88);
|
155 |
+
}
|
156 |
+
|
157 |
+
#backwpup_tiptip_holder.tip_top #backwpup_tiptip_arrow_inner {
|
158 |
+
border-top-color: rgba(20, 20, 20, 0.92);
|
159 |
+
}
|
160 |
+
}
|
161 |
+
|
162 |
+
/* UI Boxes */
|
163 |
+
#backwpup-page .backwpup-floated-postbox {
|
164 |
+
margin: 25px 0 0;
|
165 |
+
max-width: 100%;
|
166 |
+
overflow: hidden;
|
167 |
+
padding: 15px;
|
168 |
+
position: relative;
|
169 |
+
}
|
170 |
+
#backwpup-page .backwpup-cleared-postbox {
|
171 |
+
clear: both;
|
172 |
+
margin: 25px 0 0;
|
173 |
+
padding: 10px;
|
174 |
+
}
|
175 |
+
#backwpup-page .postbox ul {
|
176 |
+
padding-left: 10px;
|
177 |
+
}
|
178 |
+
#backwpup-page .postbox table {
|
179 |
+
caption-side: top;
|
180 |
+
margin-bottom: 25px;
|
181 |
+
}
|
182 |
+
#backwpup-page .postbox .hndle {
|
183 |
+
cursor: auto;
|
184 |
+
}
|
185 |
+
#backwpup-page .postbox table caption {
|
186 |
+
color: #222;
|
187 |
+
font-weight: 600;
|
188 |
+
font-size: 14px;
|
189 |
+
padding: 8px 12px;
|
190 |
+
margin: 0;
|
191 |
+
line-height: 1.4;
|
192 |
+
text-align: left;
|
193 |
+
}
|
194 |
+
#backwpup-page .wizardbox {
|
195 |
+
color: #fff;
|
196 |
+
background: #1d94cf url('../images/hgbox.png') no-repeat right bottom;
|
197 |
+
min-height: 20em;
|
198 |
+
}
|
199 |
+
#backwpup-page .wizardbox:hover {
|
200 |
+
background-color: #0f79ae;
|
201 |
+
}
|
202 |
+
#backwpup-page .button-bwp,
|
203 |
+
#backwpup-page .button-primary-bwp {
|
204 |
+
border-radius: 0;
|
205 |
+
-webkit-box-shadow: none;
|
206 |
+
box-shadow: none;
|
207 |
+
}
|
208 |
+
#backwpup-page .button-primary-bwp {
|
209 |
+
border: none;
|
210 |
+
background: #38b0eb;
|
211 |
+
color: #fff;
|
212 |
+
min-width: 8em;
|
213 |
+
}
|
214 |
+
#backwpup-page .button-primary-bwp:hover {
|
215 |
+
background: #064565;
|
216 |
+
}
|
217 |
+
#backwpup-page .wizardbox .wizardbox_name {
|
218 |
+
color: #fff;
|
219 |
+
margin-top: 0;
|
220 |
+
}
|
221 |
+
#backwpup-page .wizardbox .wizardbox_start {
|
222 |
+
position: absolute;
|
223 |
+
bottom: 10px;
|
224 |
+
left: 10px;
|
225 |
+
}
|
226 |
+
#backwpup-page .wizardbox select{
|
227 |
+
max-width: 100%;
|
228 |
+
width: 100%;
|
229 |
+
}
|
230 |
+
#backwpup-page .backwpup-table-wrap {
|
231 |
+
overflow-x: auto;
|
232 |
+
}
|
233 |
+
#backwpup-page .backwpup-banner-img {
|
234 |
+
display: block;
|
235 |
+
height: auto;
|
236 |
+
margin: 26px auto;
|
237 |
+
max-width: 100%;
|
238 |
+
}
|
239 |
+
#backwpup-page .backwpup-text-center {
|
240 |
+
text-align: center;
|
241 |
+
}
|
242 |
+
#backwpup-page ul.backwpup-text-center {
|
243 |
+
padding-left: 0;
|
244 |
+
}
|
245 |
+
#backwpup-page .postbox .backwpup-bullet-list {
|
246 |
+
padding-left: 16px;
|
247 |
+
list-style: disc;
|
248 |
+
}
|
249 |
+
#backwpup-page .postbox ol.backwpup-bullet-list {
|
250 |
+
list-style: decimal;
|
251 |
+
}
|
252 |
+
#backwpup-page .backwpup-message { /* copied from WP 3.8 CSS */
|
253 |
+
margin: 5px 0 15px;
|
254 |
+
border: none;
|
255 |
+
padding: 1px 12px;
|
256 |
+
background-color: #fff;
|
257 |
+
border-left: 4px solid #ccc;
|
258 |
+
-webkit-box-shadow: 0px 1px 1px 0px rgba(0,0,0,0.1);
|
259 |
+
box-shadow: 0px 1px 1px 0px rgba(0,0,0,0.1);
|
260 |
+
}
|
261 |
+
#backwpup-page .backwpup-message p {
|
262 |
+
margin: 0.5em 0;
|
263 |
+
padding: 2px;
|
264 |
+
}
|
265 |
+
#backwpup-page .backwpup-info {
|
266 |
+
border-left: 4px solid #38b0eb; /* BackWPup button-primary color */
|
267 |
+
}
|
268 |
+
#backwpup-page .backwpup-warning {
|
269 |
+
border-left: 4px solid #ffba00; /* UI color .update-nag */
|
270 |
+
}
|
271 |
+
|
272 |
+
@media screen and (min-width: 720px) {
|
273 |
+
#backwpup-page .backwpup-floated-postbox {
|
274 |
+
float: left;
|
275 |
+
margin: 25px 25px 25px 0;
|
276 |
+
width: 290px;
|
277 |
+
}
|
278 |
+
#backwpup-page #backwpup-one-click-backup,
|
279 |
+
#backwpup-page #wizard-jobimport,
|
280 |
+
#backwpup-page #backwpup-thank-you,
|
281 |
+
#backwpup-page #backwpup-stats {
|
282 |
+
margin-right: 0;
|
283 |
+
}
|
284 |
+
#backwpup-page #backwpup-one-click-backup + .backwpup-floated-postbox,
|
285 |
+
#backwpup-page #backwpup-thank-you,
|
286 |
+
#backwpup-page #backwpup-stats {
|
287 |
+
clear: left;
|
288 |
+
}
|
289 |
+
}
|
290 |
+
|
291 |
+
@media screen and (min-width: 1024px) {
|
292 |
+
#backwpup-page .backwpup-floated-postbox {
|
293 |
+
width: 362px;
|
294 |
+
}
|
295 |
+
#backwpup-page .wizardbox {
|
296 |
+
width: 225px;
|
297 |
+
min-height: 225px;
|
298 |
+
}
|
299 |
+
#backwpup-page .backwpup-max-width {
|
300 |
+
max-width: 800px;
|
301 |
+
}
|
302 |
+
body[class*="_backwpupabout"] #backwpup-page .backwpup-welcome {
|
303 |
+
max-width: none;
|
304 |
+
}
|
305 |
+
}
|
306 |
+
|
307 |
+
/* Company specific */
|
308 |
+
#wpfooter #footer-left,
|
309 |
+
#wpfooter #footer-right {
|
310 |
+
overflow: hidden;
|
311 |
+
}
|
312 |
+
#wpfooter .mp_logo {
|
313 |
+
background: url('../images/mp_logo_small.png') no-repeat;
|
314 |
+
display: block;
|
315 |
+
float: left;
|
316 |
+
margin-right: 15px;
|
317 |
+
line-height: 26px;
|
318 |
+
width: 145px;
|
319 |
+
text-indent: -9999em;
|
320 |
+
}
|
321 |
+
#wpfooter #footer-left .backwpup-get-pro {
|
322 |
+
display: block;
|
323 |
+
float: left;
|
324 |
+
line-height: 36px;
|
325 |
+
margin-right: 15px;
|
326 |
+
}
|
327 |
+
#wpfooter #footer-upgrade .backwpup-update-footer {
|
328 |
+
display: block;
|
329 |
+
line-height: 36px;
|
330 |
+
}
|
331 |
+
#wpfooter #footer-left #footer-thankyou {
|
332 |
+
clear: both;
|
333 |
+
display: block;
|
334 |
+
padding-top: .5em;
|
335 |
+
|
336 |
+
}
|
337 |
+
#wpbody-content {
|
338 |
+
padding-bottom: 10em;
|
339 |
+
}
|
340 |
+
#wpfooter {
|
341 |
+
overflow: hidden;
|
342 |
+
}
|
343 |
+
|
344 |
+
/* DOKU */
|
345 |
+
#documentation_content p{
|
346 |
+
font-size:14px;
|
347 |
+
line-height:20px;
|
348 |
+
color:#333;
|
349 |
+
}
|
350 |
+
#documentation_content h3{
|
351 |
+
padding:7px 0;
|
352 |
+
font-size:22px;
|
353 |
+
}
|
354 |
+
#documentation_content h4{
|
355 |
+
padding:7px 0;
|
356 |
+
font-size:18px;
|
357 |
+
}
|
358 |
+
#documentation_content img.size-full {
|
359 |
+
border:10px #f6f6f6 solid;
|
360 |
+
}
|
assets/css/backwpup.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
@font-face{font-family:'backwpup';src:url('../fonts/backwpup.eot');src:url('../fonts/backwpup.eot?#iefix') format('embedded-opentype'),url('../fonts/backwpup.ttf') format('truetype'),url('../fonts/backwpup.woff') format('woff'),url('../fonts/backwpup.svg#backwpup') format('svg');font-weight:normal;font-style:normal}#wp-admin-bar-backwpup .ab-icon{font:normal 20px/1 'backwpup' !important}#wp-admin-bar-backwpup .ab-icon:before{content:"\e600";top:2px}@media screen and (max-width:782px){#wp-admin-bar-backwpup .ab-icon{font:normal 32px/1 'backwpup' !important;display:block;text-indent:0;speak:none;top:7px;width:50px;text-align:center;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wp-admin-bar-backwpup .ab-icon:before{top:0}}#adminmenu #toplevel_page_backwpup div.wp-menu-image:before{font:normal 20px/1 'backwpup' !important;content:"\e600"}#backwpup-page-icon,#backwpup-page-icon:before{display:none}#backwpup_tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:99999}#backwpup_tiptip_holder.tip_top{padding-bottom:5px}#backwpup_tiptip_holder.tip_bottom{padding-top:5px}#backwpup_tiptip_holder.tip_right{padding-left:5px}#backwpup_tiptip_holder.tip_left{padding-right:5px}#backwpup_tiptip_content{font-size:11px;color:#fff;text-shadow:0 0 2px #000;padding:4px 8px;border:1px solid rgba(255,255,255,0.25);background-color:#191919;background-color:rgba(25,25,25,0.92);background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(#000));border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;box-shadow:0 0 3px #555;-webkit-box-shadow:0 0 3px #555;-moz-box-shadow:0 0 3px #555}#backwpup_tiptip_content code{background:#1d94cf;color:#fff;text-shadow:none;padding:2px;font-size:12px}#backwpup_tiptip_content a{color:#0CF}#backwpup_tiptip_content a:hover{color:#F93}#backwpup_tiptip_arrow,#backwpup_tiptip_arrow_inner{position:absolute;border:6px solid transparent;height:0;width:0}#backwpup_tiptip_holder.tip_top #backwpup_tiptip_arrow{border-top-color:#fff;border-top-color:rgba(255,255,255,0.35)}#backwpup_tiptip_holder.tip_bottom #backwpup_tiptip_arrow{border-bottom-color:#fff;border-bottom-color:rgba(255,255,255,0.35)}#backwpup_tiptip_holder.tip_right #backwpup_tiptip_arrow{border-right-color:#fff;border-right-color:rgba(255,255,255,0.35)}#backwpup_tiptip_holder.tip_left #backwpup_tiptip_arrow{border-left-color:#fff;border-left-color:rgba(255,255,255,0.35)}#backwpup_tiptip_holder.tip_top #backwpup_tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#191919;border-top-color:rgba(25,25,25,0.92)}#backwpup_tiptip_holder.tip_bottom #backwpup_tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#191919;border-bottom-color:rgba(25,25,25,0.92)}#backwpup_tiptip_holder.tip_right #backwpup_tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#191919;border-right-color:rgba(25,25,25,0.92)}#backwpup_tiptip_holder.tip_left #backwpup_tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#191919;border-left-color:rgba(25,25,25,0.92)}@media screen and (-webkit-min-device-pixel-ratio:0){#backwpup_tiptip_content{padding:4px 8px 5px 8px;background-color:rgba(45,45,45,0.88)}#backwpup_tiptip_holder.tip_bottom #backwpup_tiptip_arrow_inner{border-bottom-color:rgba(45,45,45,0.88)}#backwpup_tiptip_holder.tip_top #backwpup_tiptip_arrow_inner{border-top-color:rgba(20,20,20,0.92)}}#backwpup-page .backwpup-floated-postbox{margin:25px 0 0;max-width:100%;overflow:hidden;padding:15px;position:relative}#backwpup-page .backwpup-cleared-postbox{clear:both;margin:25px 0 0;padding:10px}#backwpup-page .postbox ul{padding-left:10px}#backwpup-page .postbox table{caption-side:top;margin-bottom:25px}#backwpup-page .postbox .hndle{cursor:auto}#backwpup-page .postbox table caption{color:#222;font-weight:600;font-size:14px;padding:8px 12px;margin:0;line-height:1.4;text-align:left}#backwpup-page .wizardbox{color:#fff;background:#1d94cf url('../images/hgbox.png') no-repeat right bottom;min-height:20em}#backwpup-page .wizardbox:hover{background-color:#0f79ae}#backwpup-page .button-bwp,#backwpup-page .button-primary-bwp{border-radius:0;-webkit-box-shadow:none;box-shadow:none}#backwpup-page .button-primary-bwp{border:0;background:#38b0eb;color:#fff;min-width:8em}#backwpup-page .button-primary-bwp:hover{background:#064565}#backwpup-page .wizardbox .wizardbox_name{color:#fff;margin-top:0}#backwpup-page .wizardbox .wizardbox_start{position:absolute;bottom:10px;left:10px}#backwpup-page .wizardbox select{max-width:100%;width:100%}#backwpup-page .backwpup-table-wrap{overflow-x:auto}#backwpup-page .backwpup-banner-img{display:block;height:auto;margin:26px auto;max-width:100%}#backwpup-page .backwpup-text-center{text-align:center}#backwpup-page ul.backwpup-text-center{padding-left:0}#backwpup-page .postbox .backwpup-bullet-list{padding-left:16px;list-style:disc}#backwpup-page .postbox ol.backwpup-bullet-list{list-style:decimal}#backwpup-page .backwpup-message{margin:5px 0 15px;border:0;padding:1px 12px;background-color:#fff;border-left:4px solid #ccc;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1)}#backwpup-page .backwpup-message p{margin:.5em 0;padding:2px}#backwpup-page .backwpup-info{border-left:4px solid #38b0eb}#backwpup-page .backwpup-warning{border-left:4px solid #ffba00}@media screen and (min-width:720px){#backwpup-page .backwpup-floated-postbox{float:left;margin:25px 25px 25px 0;width:290px}#backwpup-page #backwpup-one-click-backup,#backwpup-page #wizard-jobimport,#backwpup-page #backwpup-thank-you,#backwpup-page #backwpup-stats{margin-right:0}#backwpup-page #backwpup-one-click-backup+.backwpup-floated-postbox,#backwpup-page #backwpup-thank-you,#backwpup-page #backwpup-stats{clear:left}}@media screen and (min-width:1024px){#backwpup-page .backwpup-floated-postbox{width:362px}#backwpup-page .wizardbox{width:225px;min-height:225px}#backwpup-page .backwpup-max-width{max-width:800px}body[class*="_backwpupabout"] #backwpup-page .backwpup-welcome{max-width:none}}#wpfooter #footer-left,#wpfooter #footer-right{overflow:hidden}#wpfooter .mp_logo{background:url('../images/mp_logo_small.png') no-repeat;display:block;float:left;margin-right:15px;line-height:26px;width:145px;text-indent:-9999em}#wpfooter #footer-left .backwpup-get-pro{display:block;float:left;line-height:36px;margin-right:15px}#wpfooter #footer-upgrade .backwpup-update-footer{display:block;line-height:36px}#wpfooter #footer-left #footer-thankyou{clear:both;display:block;padding-top:.5em}#wpbody-content{padding-bottom:10em}#wpfooter{overflow:hidden}#documentation_content p{font-size:14px;line-height:20px;color:#333}#documentation_content h3{padding:7px 0;font-size:22px}#documentation_content h4{padding:7px 0;font-size:18px}#documentation_content img.size-full{border:10px #f6f6f6 solid}
|
assets/css/lower_wp38.css
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#adminmenu #toplevel_page_backwpup div.wp-menu-image:before {
|
2 |
+
speak: none;
|
3 |
+
font-size: 16px !important;
|
4 |
+
color: #999;
|
5 |
+
padding-top: 6px;
|
6 |
+
padding-left: 7px;
|
7 |
+
height: 20px;
|
8 |
+
width: 20px;
|
9 |
+
display: inline-block;
|
10 |
+
-webkit-font-smoothing: antialiased;
|
11 |
+
-moz-osx-font-smoothing: grayscale;
|
12 |
+
-moz-transition: all .1s ease-in-out;
|
13 |
+
-webkit-transition: all .1s ease-in-out;
|
14 |
+
transition: all .1s ease-in-out;
|
15 |
+
}
|
16 |
+
|
17 |
+
|
18 |
+
#adminmenu #toplevel_page_backwpup.wp-has-current-submenu div.wp-menu-image:before {
|
19 |
+
color: #ffffff;
|
20 |
+
}
|
21 |
+
|
22 |
+
#wp-admin-bar-backwpup .ab-icon {
|
23 |
+
margin-top: 3px;
|
24 |
+
}
|
25 |
+
|
26 |
+
#wp-admin-bar-backwpup .ab-icon:before {
|
27 |
+
top: 0;
|
28 |
+
font-size: 16px !important;
|
29 |
+
speak: none;
|
30 |
+
display: inline-block;
|
31 |
+
-webkit-font-smoothing: antialiased;
|
32 |
+
-moz-osx-font-smoothing: grayscale;
|
33 |
+
-moz-transition: all .1s ease-in-out;
|
34 |
+
-webkit-transition: all .1s ease-in-out;
|
35 |
+
transition: all .1s ease-in-out;
|
36 |
+
}
|
37 |
+
|
38 |
+
@media screen and (max-width: 782px) {
|
39 |
+
#wp-admin-bar-backwpup .ab-icon {
|
40 |
+
position: relative;
|
41 |
+
float: left;
|
42 |
+
width: 16px;
|
43 |
+
height: 16px;
|
44 |
+
font-size: 16px !important;
|
45 |
+
top: 4px;
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
+
#backwpup-page-icon:before {
|
50 |
+
font-family: 'backwpup' !important;
|
51 |
+
content: "\e600";
|
52 |
+
}
|
53 |
+
|
54 |
+
#backwpup-page .backwpup-floated-postbox {
|
55 |
+
padding: 0;
|
56 |
+
}
|
57 |
+
#backwpup-page .backwpup-floated-postbox > .inside,
|
58 |
+
#backwpup-page .wizardbox > form {
|
59 |
+
margin: 15px;
|
60 |
+
}
|
assets/css/lower_wp38.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
#adminmenu #toplevel_page_backwpup div.wp-menu-image:before{speak:none;font-size:16px !important;color:#999;padding-top:6px;padding-left:7px;height:20px;width:20px;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-transition:all .1s ease-in-out;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#adminmenu #toplevel_page_backwpup.wp-has-current-submenu div.wp-menu-image:before{color:#fff}#wp-admin-bar-backwpup .ab-icon{margin-top:3px}#wp-admin-bar-backwpup .ab-icon:before{top:0;font-size:16px !important;speak:none;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-transition:all .1s ease-in-out;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}@media screen and (max-width:782px){#wp-admin-bar-backwpup .ab-icon{position:relative;float:left;width:16px;height:16px;font-size:16px !important;top:4px}}#backwpup-page-icon:before{font-family:'backwpup' !important;content:"\e600"}#backwpup-page .backwpup-floated-postbox{padding:0}#backwpup-page .backwpup-floated-postbox>.inside,#backwpup-page .wizardbox>form{margin:15px}
|
assets/fonts/backwpup.eot
ADDED
Binary file
|
assets/fonts/backwpup.svg
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" standalone="no"?>
|
2 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3 |
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
+
<metadata>Generated by IcoMoon</metadata>
|
5 |
+
<defs>
|
6 |
+
<font id="backwpup" horiz-adv-x="1024">
|
7 |
+
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
8 |
+
<missing-glyph horiz-adv-x="1024" />
|
9 |
+
<glyph unicode=" " d="" horiz-adv-x="512" />
|
10 |
+
<glyph unicode="" d="M586.172 856.61c-225.655 0-408.61-182.955-408.61-408.61s182.955-408.61 408.61-408.61c225.655 0 408.61 182.921 408.61 408.61 0 225.655-182.955 408.61-408.61 408.61zM389.837 304.162l-77.039-40.823 10.684 294.537 249.719-156.501-83.934-44.476c68.54-155.136 173.124-149.47 173.124-149.47s-154.249-134.656-272.555 96.734zM860.74 336.384l-249.719 156.501 83.934 44.476c-68.54 155.136-173.124 149.47-173.124 149.47s154.283 134.656 272.589-96.768l77.039 40.823-10.718-294.502zM1031.27 637.815c-24.576 58.061-59.733 110.217-104.516 154.999-44.783 44.783-96.939 79.94-154.999 104.516-60.143 25.429-124.006 38.332-189.815 38.332-65.843 0-129.707-12.902-189.815-38.332-58.061-24.576-110.217-59.733-154.999-104.516-44.783-44.783-79.94-96.939-104.516-154.999-25.463-60.109-38.366-123.972-38.366-189.815 0-65.843 12.902-129.707 38.332-189.85 24.576-58.061 59.733-110.217 104.516-154.999 44.783-44.783 96.939-79.94 154.999-104.516 60.143-25.429 124.006-38.332 189.815-38.332 65.843 0 129.707 12.902 189.815 38.332 58.061 24.576 110.217 59.733 154.999 104.516 44.783 44.783 79.94 96.939 104.516 154.999 25.429 60.143 38.332 124.006 38.332 189.85 0.034 65.843-12.868 129.707-38.298 189.815zM581.939-13.141c-254.259 0-461.141 206.882-461.141 461.141 0 254.259 206.882 461.141 461.141 461.141 254.259 0 461.141-206.848 461.141-461.141 0-254.259-206.882-461.141-461.141-461.141zM1047.142 644.54c-25.429 60.109-61.85 114.108-108.203 160.461-46.353 46.353-100.352 82.773-160.495 108.203-62.259 26.317-128.375 39.697-196.54 39.697-68.164 0-134.281-13.346-196.54-39.697-60.075-25.429-114.074-61.815-160.461-108.203-46.353-46.353-82.773-100.352-108.203-160.461-26.317-62.259-39.663-128.375-39.663-196.54 0-68.164 13.346-134.281 39.697-196.54 25.429-60.109 61.85-114.108 108.203-160.495 46.353-46.353 100.352-82.773 160.495-108.203 62.259-26.351 128.375-39.697 196.54-39.697 68.164 0 134.281 13.346 196.54 39.697 60.109 25.429 114.108 61.815 160.495 108.203 46.353 46.353 82.773 100.352 108.203 160.495 26.317 62.259 39.663 128.375 39.663 196.54-0.068 68.164-13.414 134.281-39.731 196.54zM581.939-29.423c-263.27 0-477.423 214.187-477.423 477.423s214.153 477.423 477.423 477.423c263.236 0 477.423-214.153 477.423-477.423 0-263.236-214.187-477.423-477.423-477.423z" horiz-adv-x="1161" />
|
11 |
+
</font></defs></svg>
|
assets/fonts/backwpup.ttf
ADDED
Binary file
|
assets/fonts/backwpup.woff
ADDED
Binary file
|
assets/images/backwpupbanner-free.png
ADDED
Binary file
|
assets/images/backwpupbanner-pro.png
ADDED
Binary file
|
assets/images/current.png
ADDED
Binary file
|
assets/images/erroreven.png
ADDED
Binary file
|
assets/images/errorhover.png
ADDED
Binary file
|
assets/images/errorodd.png
ADDED
Binary file
|
assets/images/even.png
ADDED
Binary file
|
assets/images/execute.png
ADDED
Binary file
|
assets/images/help.png
ADDED
Binary file
|
assets/images/hgbox.png
ADDED
Binary file
|
assets/images/hgboxleft.png
ADDED
Binary file
|
assets/images/hgbtgreen.png
ADDED
Binary file
|
assets/images/hgbtgreenhover.png
ADDED
Binary file
|
assets/images/hgbtred.png
ADDED
Binary file
|
assets/images/hgbtredhover.png
ADDED
Binary file
|
assets/images/hginfotxt.png
ADDED
Binary file
|
assets/images/hgtopgreen.png
ADDED
Binary file
|
assets/images/hover.png
ADDED
Binary file
|
assets/images/imagecloud.png
ADDED
Binary file
|
assets/images/imagedata.png
ADDED
Binary file
|
assets/images/imagerepair.png
ADDED
Binary file
|
assets/images/imagesave.png
ADDED
Binary file
|
assets/images/imagesec.png
ADDED
Binary file
|
assets/images/imagexml.png
ADDED
Binary file
|
assets/images/inpsyde.png
ADDED
Binary file
|
assets/images/mp_logo_small.png
ADDED
Binary file
|
assets/images/odd.png
ADDED
Binary file
|
assets/images/progressbarhg.jpg
ADDED
Binary file
|
assets/images/progresshg.jpg
ADDED
Binary file
|
assets/images/screen.png
ADDED
Binary file
|
assets/images/tickeven.png
ADDED
Binary file
|
assets/images/tickhover.png
ADDED
Binary file
|
assets/images/tickodd.png
ADDED
Binary file
|
assets/js/general.js
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function ($) {
|
2 |
+
|
3 |
+
backwpup_htmlspecialchars = function( string ) {
|
4 |
+
return jQuery('<span>').text( string ).html()
|
5 |
+
};
|
6 |
+
|
7 |
+
$('.help-tip').backwpup_tipTip({
|
8 |
+
'attribute':'title',
|
9 |
+
'activation': 'hover'
|
10 |
+
});
|
11 |
+
|
12 |
+
/* change size of thickbox */
|
13 |
+
backwpup_tb_position = function() {
|
14 |
+
var tbWindow = $('#TB_window'), width = $(window).width(), height = $(window).height(), W = ( 720 < width ) ? 720 : width, H = ( 525 < height ) ? 525 : height, adminbar_height = 0;
|
15 |
+
|
16 |
+
if ( $('body.admin-bar').length )
|
17 |
+
adminbar_height = 28;
|
18 |
+
|
19 |
+
if ( tbWindow.size() ) {
|
20 |
+
tbWindow.width( W - 50 ).height( H - 45 - adminbar_height );
|
21 |
+
$('#TB_iframeContent').width( W - 50 ).height( H - 75 - adminbar_height );
|
22 |
+
tbWindow.css({'margin-left': '-' + parseInt((( W - 50 ) / 2),10) + 'px'});
|
23 |
+
if ( typeof document.body.style.maxWidth != 'undefined' )
|
24 |
+
tbWindow.css({'top': 20 + adminbar_height + 'px','margin-top':'0'});
|
25 |
+
}
|
26 |
+
|
27 |
+
return $('a.thickbox').each( function() {
|
28 |
+
var href = $(this).attr('href');
|
29 |
+
if ( ! href )
|
30 |
+
return;
|
31 |
+
href = href.replace(/&width=[0-9]+/g, '');
|
32 |
+
href = href.replace(/&height=[0-9]+/g, '');
|
33 |
+
$(this).attr( 'href', href + '&width=' + ( W - 80 ) + '&height=' + ( H - 85 - adminbar_height ) );
|
34 |
+
});
|
35 |
+
};
|
36 |
+
|
37 |
+
$(window).resize(function(){ backwpup_tb_position(); });
|
38 |
+
backwpup_tb_position();
|
39 |
+
|
40 |
+
});
|
assets/js/general.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
jQuery(document).ready(function(a){backwpup_htmlspecialchars=function(b){return jQuery("<span>").text(b).html()};a(".help-tip").backwpup_tipTip({attribute:"title",activation:"hover"});backwpup_tb_position=function(){var g=a("#TB_window"),f=a(window).width(),d=a(window).height(),c=(720<f)?720:f,e=(525<d)?525:d,b=0;if(a("body.admin-bar").length){b=28}if(g.size()){g.width(c-50).height(e-45-b);a("#TB_iframeContent").width(c-50).height(e-75-b);g.css({"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){g.css({top:20+b+"px","margin-top":"0"})}}return a("a.thickbox").each(function(){var h=a(this).attr("href");if(!h){return}h=h.replace(/&width=[0-9]+/g,"");h=h.replace(/&height=[0-9]+/g,"");a(this).attr("href",h+"&width="+(c-80)+"&height="+(e-85-b))})};a(window).resize(function(){backwpup_tb_position()});backwpup_tb_position()});
|
assets/js/jquery.tipTip.js
ADDED
@@ -0,0 +1,176 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* TipTip
|
3 |
+
* Copyright 2010 Drew Wilson
|
4 |
+
* www.drewwilson.com
|
5 |
+
* code.drewwilson.com/entry/tiptip-jquery-plugin
|
6 |
+
*
|
7 |
+
* Version 1.3 - Updated: Mar. 23, 2010
|
8 |
+
* Version 1.3.1 - Updated: Dez. 03, 2013 added backwpup_ prefix
|
9 |
+
*
|
10 |
+
* This Plug-In will create a custom tooltip to replace the default
|
11 |
+
* browser tooltip. It is extremely lightweight and very smart in
|
12 |
+
* that it detects the edges of the browser window and will make sure
|
13 |
+
* the tooltip stays within the current window size. As a result the
|
14 |
+
* tooltip will adjust itself to be displayed above, below, to the left
|
15 |
+
* or to the right depending on what is necessary to stay within the
|
16 |
+
* browser window. It is completely customizable as well via CSS.
|
17 |
+
*
|
18 |
+
* This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses:
|
19 |
+
* http://www.opensource.org/licenses/mit-license.php
|
20 |
+
* http://www.gnu.org/licenses/gpl.html
|
21 |
+
*/
|
22 |
+
(function ($) {
|
23 |
+
$.fn.backwpup_tipTip = function (options) {
|
24 |
+
var defaults = {activation:"hover", keepAlive:false, maxWidth:"200px", edgeOffset:3, defaultPosition:"bottom", delay:400, fadeIn:200, fadeOut:200, attribute:"title", content:false, enter:function () {
|
25 |
+
}, exit:function () {
|
26 |
+
}};
|
27 |
+
var opts = $.extend(defaults, options);
|
28 |
+
if ($("#backwpup_tiptip_holder").length <= 0) {
|
29 |
+
var tiptip_holder = $('<div id="backwpup_tiptip_holder" style="max-width:' + opts.maxWidth + ';"></div>');
|
30 |
+
var tiptip_content = $('<div id="backwpup_tiptip_content"></div>');
|
31 |
+
var tiptip_arrow = $('<div id="backwpup_tiptip_arrow"></div>');
|
32 |
+
$("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="backwpup_tiptip_arrow_inner"></div>')))
|
33 |
+
} else {
|
34 |
+
var tiptip_holder = $("#backwpup_tiptip_holder");
|
35 |
+
var tiptip_content = $("#backwpup_tiptip_content");
|
36 |
+
var tiptip_arrow = $("#backwpup_tiptip_arrow")
|
37 |
+
}
|
38 |
+
return this.each(function () {
|
39 |
+
var org_elem = $(this);
|
40 |
+
if (opts.content) {
|
41 |
+
var org_title = opts.content
|
42 |
+
} else {
|
43 |
+
var org_title = org_elem.attr(opts.attribute)
|
44 |
+
}
|
45 |
+
if (org_title != "") {
|
46 |
+
if (!opts.content) {
|
47 |
+
org_elem.removeAttr(opts.attribute)
|
48 |
+
}
|
49 |
+
var timeout = false;
|
50 |
+
if (opts.activation == "hover") {
|
51 |
+
org_elem.hover(function () {
|
52 |
+
active_tiptip()
|
53 |
+
}, function () {
|
54 |
+
if (!opts.keepAlive) {
|
55 |
+
deactive_tiptip()
|
56 |
+
}
|
57 |
+
});
|
58 |
+
if (opts.keepAlive) {
|
59 |
+
tiptip_holder.hover(function () {
|
60 |
+
}, function () {
|
61 |
+
deactive_tiptip()
|
62 |
+
})
|
63 |
+
}
|
64 |
+
} else if (opts.activation == "focus") {
|
65 |
+
org_elem.focus(function () {
|
66 |
+
active_tiptip()
|
67 |
+
}).blur(function () {
|
68 |
+
deactive_tiptip()
|
69 |
+
})
|
70 |
+
} else if (opts.activation == "click") {
|
71 |
+
org_elem.click(function () {
|
72 |
+
active_tiptip();
|
73 |
+
return false
|
74 |
+
}).hover(function () {
|
75 |
+
}, function () {
|
76 |
+
if (!opts.keepAlive) {
|
77 |
+
deactive_tiptip()
|
78 |
+
}
|
79 |
+
});
|
80 |
+
if (opts.keepAlive) {
|
81 |
+
tiptip_holder.hover(function () {
|
82 |
+
}, function () {
|
83 |
+
deactive_tiptip()
|
84 |
+
})
|
85 |
+
}
|
86 |
+
}
|
87 |
+
function active_tiptip() {
|
88 |
+
opts.enter.call(this);
|
89 |
+
tiptip_content.html(org_title);
|
90 |
+
tiptip_holder.hide().removeAttr("class").css("margin", "0");
|
91 |
+
tiptip_arrow.removeAttr("style");
|
92 |
+
var top = parseInt(org_elem.offset()['top']);
|
93 |
+
var left = parseInt(org_elem.offset()['left']);
|
94 |
+
var org_width = parseInt(org_elem.outerWidth());
|
95 |
+
var org_height = parseInt(org_elem.outerHeight());
|
96 |
+
var tip_w = tiptip_holder.outerWidth();
|
97 |
+
var tip_h = tiptip_holder.outerHeight();
|
98 |
+
var w_compare = Math.round((org_width - tip_w) / 2);
|
99 |
+
var h_compare = Math.round((org_height - tip_h) / 2);
|
100 |
+
var marg_left = Math.round(left + w_compare);
|
101 |
+
var marg_top = Math.round(top + org_height + opts.edgeOffset);
|
102 |
+
var t_class = "";
|
103 |
+
var arrow_top = "";
|
104 |
+
var arrow_left = Math.round(tip_w - 12) / 2;
|
105 |
+
if (opts.defaultPosition == "bottom") {
|
106 |
+
t_class = "_bottom"
|
107 |
+
} else if (opts.defaultPosition == "top") {
|
108 |
+
t_class = "_top"
|
109 |
+
} else if (opts.defaultPosition == "left") {
|
110 |
+
t_class = "_left"
|
111 |
+
} else if (opts.defaultPosition == "right") {
|
112 |
+
t_class = "_right"
|
113 |
+
}
|
114 |
+
var right_compare = (w_compare + left) < parseInt($(window).scrollLeft());
|
115 |
+
var left_compare = (tip_w + left) > parseInt($(window).width());
|
116 |
+
if ((right_compare && w_compare < 0) || (t_class == "_right" && !left_compare) || (t_class == "_left" && left < (tip_w + opts.edgeOffset + 5))) {
|
117 |
+
t_class = "_right";
|
118 |
+
arrow_top = Math.round(tip_h - 13) / 2;
|
119 |
+
arrow_left = -12;
|
120 |
+
marg_left = Math.round(left + org_width + opts.edgeOffset);
|
121 |
+
marg_top = Math.round(top + h_compare)
|
122 |
+
} else if ((left_compare && w_compare < 0) || (t_class == "_left" && !right_compare)) {
|
123 |
+
t_class = "_left";
|
124 |
+
arrow_top = Math.round(tip_h - 13) / 2;
|
125 |
+
arrow_left = Math.round(tip_w);
|
126 |
+
marg_left = Math.round(left - (tip_w + opts.edgeOffset + 5));
|
127 |
+
marg_top = Math.round(top + h_compare)
|
128 |
+
}
|
129 |
+
var top_compare = (top + org_height + opts.edgeOffset + tip_h + 8) > parseInt($(window).height() + $(window).scrollTop());
|
130 |
+
var bottom_compare = ((top + org_height) - (opts.edgeOffset + tip_h + 8)) < 0;
|
131 |
+
if (top_compare || (t_class == "_bottom" && top_compare) || (t_class == "_top" && !bottom_compare)) {
|
132 |
+
if (t_class == "_top" || t_class == "_bottom") {
|
133 |
+
t_class = "_top"
|
134 |
+
} else {
|
135 |
+
t_class = t_class + "_top"
|
136 |
+
}
|
137 |
+
arrow_top = tip_h;
|
138 |
+
marg_top = Math.round(top - (tip_h + 5 + opts.edgeOffset))
|
139 |
+
} else if (bottom_compare | (t_class == "_top" && bottom_compare) || (t_class == "_bottom" && !top_compare)) {
|
140 |
+
if (t_class == "_top" || t_class == "_bottom") {
|
141 |
+
t_class = "_bottom"
|
142 |
+
} else {
|
143 |
+
t_class = t_class + "_bottom"
|
144 |
+
}
|
145 |
+
arrow_top = -12;
|
146 |
+
marg_top = Math.round(top + org_height + opts.edgeOffset)
|
147 |
+
}
|
148 |
+
if (t_class == "_right_top" || t_class == "_left_top") {
|
149 |
+
marg_top = marg_top + 5
|
150 |
+
} else if (t_class == "_right_bottom" || t_class == "_left_bottom") {
|
151 |
+
marg_top = marg_top - 5
|
152 |
+
}
|
153 |
+
if (t_class == "_left_top" || t_class == "_left_bottom") {
|
154 |
+
marg_left = marg_left + 5
|
155 |
+
}
|
156 |
+
tiptip_arrow.css({"margin-left":arrow_left + "px", "margin-top":arrow_top + "px"});
|
157 |
+
tiptip_holder.css({"margin-left":marg_left + "px", "margin-top":marg_top + "px"}).attr("class", "tip" + t_class);
|
158 |
+
if (timeout) {
|
159 |
+
clearTimeout(timeout)
|
160 |
+
}
|
161 |
+
timeout = setTimeout(function () {
|
162 |
+
tiptip_holder.stop(true, true).fadeIn(opts.fadeIn)
|
163 |
+
}, opts.delay)
|
164 |
+
}
|
165 |
+
|
166 |
+
function deactive_tiptip() {
|
167 |
+
opts.exit.call(this);
|
168 |
+
if (timeout) {
|
169 |
+
clearTimeout(timeout)
|
170 |
+
}
|
171 |
+
tiptip_holder.fadeOut(opts.fadeOut)
|
172 |
+
}
|
173 |
+
}
|
174 |
+
})
|
175 |
+
}
|
176 |
+
})(jQuery);
|
assets/js/jquery.tipTip.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
(function(a){a.fn.backwpup_tipTip=function(c){var g={activation:"hover",keepAlive:false,maxWidth:"200px",edgeOffset:3,defaultPosition:"bottom",delay:400,fadeIn:200,fadeOut:200,attribute:"title",content:false,enter:function(){},exit:function(){}};var e=a.extend(g,c);if(a("#backwpup_tiptip_holder").length<=0){var b=a('<div id="backwpup_tiptip_holder" style="max-width:'+e.maxWidth+';"></div>');var d=a('<div id="backwpup_tiptip_content"></div>');var f=a('<div id="backwpup_tiptip_arrow"></div>');a("body").append(b.html(d).prepend(f.html('<div id="backwpup_tiptip_arrow_inner"></div>')))}else{var b=a("#backwpup_tiptip_holder");var d=a("#backwpup_tiptip_content");var f=a("#backwpup_tiptip_arrow")}return this.each(function(){var i=a(this);if(e.content){var l=e.content}else{var l=i.attr(e.attribute)}if(l!=""){if(!e.content){i.removeAttr(e.attribute)}var h=false;if(e.activation=="hover"){i.hover(function(){k()},function(){if(!e.keepAlive){j()}});if(e.keepAlive){b.hover(function(){},function(){j()})}}else{if(e.activation=="focus"){i.focus(function(){k()}).blur(function(){j()})}else{if(e.activation=="click"){i.click(function(){k();return false}).hover(function(){},function(){if(!e.keepAlive){j()}});if(e.keepAlive){b.hover(function(){},function(){j()})}}}}function k(){e.enter.call(this);d.html(l);b.hide().removeAttr("class").css("margin","0");f.removeAttr("style");var y=parseInt(i.offset()["top"]);var p=parseInt(i.offset()["left"]);var v=parseInt(i.outerWidth());var A=parseInt(i.outerHeight());var x=b.outerWidth();var s=b.outerHeight();var w=Math.round((v-x)/2);var o=Math.round((A-s)/2);var n=Math.round(p+w);var m=Math.round(y+A+e.edgeOffset);var t="";var C="";var u=Math.round(x-12)/2;if(e.defaultPosition=="bottom"){t="_bottom"}else{if(e.defaultPosition=="top"){t="_top"}else{if(e.defaultPosition=="left"){t="_left"}else{if(e.defaultPosition=="right"){t="_right"}}}}var r=(w+p)<parseInt(a(window).scrollLeft());var q=(x+p)>parseInt(a(window).width());if((r&&w<0)||(t=="_right"&&!q)||(t=="_left"&&p<(x+e.edgeOffset+5))){t="_right";C=Math.round(s-13)/2;u=-12;n=Math.round(p+v+e.edgeOffset);m=Math.round(y+o)}else{if((q&&w<0)||(t=="_left"&&!r)){t="_left";C=Math.round(s-13)/2;u=Math.round(x);n=Math.round(p-(x+e.edgeOffset+5));m=Math.round(y+o)}}var z=(y+A+e.edgeOffset+s+8)>parseInt(a(window).height()+a(window).scrollTop());var B=((y+A)-(e.edgeOffset+s+8))<0;if(z||(t=="_bottom"&&z)||(t=="_top"&&!B)){if(t=="_top"||t=="_bottom"){t="_top"}else{t=t+"_top"}C=s;m=Math.round(y-(s+5+e.edgeOffset))}else{if(B|(t=="_top"&&B)||(t=="_bottom"&&!z)){if(t=="_top"||t=="_bottom"){t="_bottom"}else{t=t+"_bottom"}C=-12;m=Math.round(y+A+e.edgeOffset)}}if(t=="_right_top"||t=="_left_top"){m=m+5}else{if(t=="_right_bottom"||t=="_left_bottom"){m=m-5}}if(t=="_left_top"||t=="_left_bottom"){n=n+5}f.css({"margin-left":u+"px","margin-top":C+"px"});b.css({"margin-left":n+"px","margin-top":m+"px"}).attr("class","tip"+t);if(h){clearTimeout(h)}h=setTimeout(function(){b.stop(true,true).fadeIn(e.fadeIn)},e.delay)}function j(){e.exit.call(this);if(h){clearTimeout(h)}b.fadeOut(e.fadeOut)}}})}})(jQuery);
|
assets/js/page_edit_jobtype_dbdump.js
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function ($) {
|
2 |
+
|
3 |
+
$('#dball').click(function () {
|
4 |
+
$('input[name="tabledb[]"]').prop("checked", true).change();;
|
5 |
+
});
|
6 |
+
|
7 |
+
$('#dbnone').click(function () {
|
8 |
+
$('input[name="tabledb[]"]').prop("checked", false).change();;
|
9 |
+
});
|
10 |
+
|
11 |
+
$('#dbwp').click(function () {
|
12 |
+
$('input[name="tabledb[]"]').prop("checked", false).change();;
|
13 |
+
$('input[name="tabledb[]"][value^="' + $('#dbwp').val() + '"]').prop("checked", true).change();;
|
14 |
+
});
|
15 |
+
|
16 |
+
$('input[name="dbdumpwpdbsettings"]').change(function () {
|
17 |
+
if ( $('input[name="dbdumpwpdbsettings"]').prop("checked") ) {
|
18 |
+
$('#dbconnection').hide();
|
19 |
+
} else {
|
20 |
+
$('#dbconnection').show();
|
21 |
+
}
|
22 |
+
});
|
23 |
+
|
24 |
+
function db_tables() {
|
25 |
+
var data = {
|
26 |
+
action:'backwpup_jobtype_dbdump',
|
27 |
+
action2:'tables',
|
28 |
+
dbname:$('#dbdumpdbname').val(),
|
29 |
+
dbhost:$('#dbdumpdbhost').val(),
|
30 |
+
dbuser:$('#dbdumpdbuser').val(),
|
31 |
+
dbpassword:$('#dbdumpdbpassword').val(),
|
32 |
+
wpdbsettings:$('#dbdumpwpdbsettings:checked').val(),
|
33 |
+
jobid:$('#jobid').val(),
|
34 |
+
_ajax_nonce:$('#backwpupajaxnonce').val()
|
35 |
+
};
|
36 |
+
$.post(ajaxurl, data, function (response) {
|
37 |
+
$('#dbtables').replaceWith(response);
|
38 |
+
});
|
39 |
+
}
|
40 |
+
$('#dbdumpdbname').change(function () {
|
41 |
+
db_tables();
|
42 |
+
});
|
43 |
+
$('#dbdumpwpdbsettings').change(function () {
|
44 |
+
db_tables();
|
45 |
+
db_databases();
|
46 |
+
});
|
47 |
+
|
48 |
+
function db_databases() {
|
49 |
+
var data = {
|
50 |
+
action:'backwpup_jobtype_dbdump',
|
51 |
+
action2:'databases',
|
52 |
+
dbhost:$('#dbdumpdbhost').val(),
|
53 |
+
dbuser:$('#dbdumpdbuser').val(),
|
54 |
+
dbpassword:$('#dbdumpdbpassword').val(),
|
55 |
+
dbname:$('input[name="dbselected"]').val(),
|
56 |
+
wpdbsettings:$('#dbdumpwpdbsettings:checked').val(),
|
57 |
+
_ajax_nonce:$('#backwpupajaxnonce').val()
|
58 |
+
|
59 |
+
};
|
60 |
+
$.post(ajaxurl, data, function (response) {
|
61 |
+
$('#dbdumpdbname').replaceWith(response);
|
62 |
+
db_tables();
|
63 |
+
$('#dbdumpdbname').change(function () {
|
64 |
+
db_tables();
|
65 |
+
});
|
66 |
+
});
|
67 |
+
}
|
68 |
+
$('#dbdumpdbhost').change(function () {
|
69 |
+
db_databases();
|
70 |
+
});
|
71 |
+
$('#dbdumpdbuser').change(function () {
|
72 |
+
db_databases();
|
73 |
+
});
|
74 |
+
$('#dbdumpdbpassword').change(function () {
|
75 |
+
db_databases();
|
76 |
+
});
|
77 |
+
});
|
assets/js/page_edit_jobtype_dbdump.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
jQuery(document).ready(function(b){b("#dball").click(function(){b('input[name="tabledb[]"]').prop("checked",true).change()});b("#dbnone").click(function(){b('input[name="tabledb[]"]').prop("checked",false).change()});b("#dbwp").click(function(){b('input[name="tabledb[]"]').prop("checked",false).change();b('input[name="tabledb[]"][value^="'+b("#dbwp").val()+'"]').prop("checked",true).change()});b('input[name="dbdumpwpdbsettings"]').change(function(){if(b('input[name="dbdumpwpdbsettings"]').prop("checked")){b("#dbconnection").hide()}else{b("#dbconnection").show()}});function a(){var d={action:"backwpup_jobtype_dbdump",action2:"tables",dbname:b("#dbdumpdbname").val(),dbhost:b("#dbdumpdbhost").val(),dbuser:b("#dbdumpdbuser").val(),dbpassword:b("#dbdumpdbpassword").val(),wpdbsettings:b("#dbdumpwpdbsettings:checked").val(),jobid:b("#jobid").val(),_ajax_nonce:b("#backwpupajaxnonce").val()};b.post(ajaxurl,d,function(e){b("#dbtables").replaceWith(e)})}b("#dbdumpdbname").change(function(){a()});b("#dbdumpwpdbsettings").change(function(){a();c()});function c(){var d={action:"backwpup_jobtype_dbdump",action2:"databases",dbhost:b("#dbdumpdbhost").val(),dbuser:b("#dbdumpdbuser").val(),dbpassword:b("#dbdumpdbpassword").val(),dbname:b('input[name="dbselected"]').val(),wpdbsettings:b("#dbdumpwpdbsettings:checked").val(),_ajax_nonce:b("#backwpupajaxnonce").val()};b.post(ajaxurl,d,function(e){b("#dbdumpdbname").replaceWith(e);a();b("#dbdumpdbname").change(function(){a()})})}b("#dbdumpdbhost").change(function(){c()});b("#dbdumpdbuser").change(function(){c()});b("#dbdumpdbpassword").change(function(){c()})});
|
assets/js/page_edit_jobtype_file.js
ADDED
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function ($) {
|
2 |
+
|
3 |
+
$('input[name="backuproot"]').change(function () {
|
4 |
+
if ($('input[name="backuproot"]').prop("checked")) {
|
5 |
+
$('#backuprootexcludedirs').show();
|
6 |
+
} else {
|
7 |
+
$('#backuprootexcludedirs').hide();
|
8 |
+
}
|
9 |
+
});
|
10 |
+
|
11 |
+
if ($('input[name="backuproot"]').prop("checked")) {
|
12 |
+
$('#backuprootexcludedirs').show();
|
13 |
+
} else {
|
14 |
+
$('#backuprootexcludedirs').hide();
|
15 |
+
}
|
16 |
+
|
17 |
+
$('input[name="backupcontent"]').change(function () {
|
18 |
+
if ($('input[name="backupcontent"]').prop("checked")) {
|
19 |
+
$('#backupcontentexcludedirs').show();
|
20 |
+
} else {
|
21 |
+
$('#backupcontentexcludedirs').hide();
|
22 |
+
}
|
23 |
+
});
|
24 |
+
|
25 |
+
if ($('input[name="backupcontent"]').prop("checked")) {
|
26 |
+
$('#backupcontentexcludedirs').show();
|
27 |
+
} else {
|
28 |
+
$('#backupcontentexcludedirs').hide();
|
29 |
+
}
|
30 |
+
|
31 |
+
$('input[name="backupplugins"]').change(function () {
|
32 |
+
if ($('input[name="backupplugins"]').prop("checked")) {
|
33 |
+
$('#backuppluginsexcludedirs').show();
|
34 |
+
} else {
|
35 |
+
$('#backuppluginsexcludedirs').hide();
|
36 |
+
}
|
37 |
+
});
|
38 |
+
|
39 |
+
if ($('input[name="backupplugins"]').prop("checked")) {
|
40 |
+
$('#backuppluginsexcludedirs').show();
|
41 |
+
} else {
|
42 |
+
$('#backuppluginsexcludedirs').hide();
|
43 |
+
}
|
44 |
+
|
45 |
+
$('input[name="backupthemes"]').change(function () {
|
46 |
+
if ($('input[name="backupthemes"]').prop("checked")) {
|
47 |
+
$('#backupthemesexcludedirs').show();
|
48 |
+
} else {
|
49 |
+
$('#backupthemesexcludedirs').hide();
|
50 |
+
}
|
51 |
+
});
|
52 |
+
|
53 |
+
if ($('input[name="backupthemes"]').prop("checked")) {
|
54 |
+
$('#backupthemesexcludedirs').show();
|
55 |
+
} else {
|
56 |
+
$('#backupthemesexcludedirs').hide();
|
57 |
+
}
|
58 |
+
|
59 |
+
$('input[name="backupuploads"]').change(function () {
|
60 |
+
if ($('input[name="backupuploads"]').prop("checked")) {
|
61 |
+
$('#backupuploadsexcludedirs').show();
|
62 |
+
} else {
|
63 |
+
$('#backupuploadsexcludedirs').hide();
|
64 |
+
}
|
65 |
+
});
|
66 |
+
|
67 |
+
if ($('input[name="backupuploads"]').prop("checked")) {
|
68 |
+
$('#backupuploadsexcludedirs').show();
|
69 |
+
} else {
|
70 |
+
$('#backupuploadsexcludedirs').hide();
|
71 |
+
}
|
72 |
+
|
73 |
+
});
|
assets/js/page_edit_jobtype_file.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
jQuery(document).ready(function(a){a('input[name="backuproot"]').change(function(){if(a('input[name="backuproot"]').prop("checked")){a("#backuprootexcludedirs").show()}else{a("#backuprootexcludedirs").hide()}});if(a('input[name="backuproot"]').prop("checked")){a("#backuprootexcludedirs").show()}else{a("#backuprootexcludedirs").hide()}a('input[name="backupcontent"]').change(function(){if(a('input[name="backupcontent"]').prop("checked")){a("#backupcontentexcludedirs").show()}else{a("#backupcontentexcludedirs").hide()}});if(a('input[name="backupcontent"]').prop("checked")){a("#backupcontentexcludedirs").show()}else{a("#backupcontentexcludedirs").hide()}a('input[name="backupplugins"]').change(function(){if(a('input[name="backupplugins"]').prop("checked")){a("#backuppluginsexcludedirs").show()}else{a("#backuppluginsexcludedirs").hide()}});if(a('input[name="backupplugins"]').prop("checked")){a("#backuppluginsexcludedirs").show()}else{a("#backuppluginsexcludedirs").hide()}a('input[name="backupthemes"]').change(function(){if(a('input[name="backupthemes"]').prop("checked")){a("#backupthemesexcludedirs").show()}else{a("#backupthemesexcludedirs").hide()}});if(a('input[name="backupthemes"]').prop("checked")){a("#backupthemesexcludedirs").show()}else{a("#backupthemesexcludedirs").hide()}a('input[name="backupuploads"]').change(function(){if(a('input[name="backupuploads"]').prop("checked")){a("#backupuploadsexcludedirs").show()}else{a("#backupuploadsexcludedirs").hide()}});if(a('input[name="backupuploads"]').prop("checked")){a("#backupuploadsexcludedirs").show()}else{a("#backupuploadsexcludedirs").hide()}});
|
assets/js/page_edit_tab_cron.js
ADDED
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function ($) {
|
2 |
+
$('input[name="activetype"]').change(function () {
|
3 |
+
if ($(this).val() == 'wpcron') {
|
4 |
+
$('.wpcron').show();
|
5 |
+
} else {
|
6 |
+
$('.wpcron').hide();
|
7 |
+
}
|
8 |
+
});
|
9 |
+
|
10 |
+
if ($('input[name="activetype"]:checked').val() == 'wpcron') {
|
11 |
+
$('.wpcron').show();
|
12 |
+
} else {
|
13 |
+
$('.wpcron').hide();
|
14 |
+
}
|
15 |
+
|
16 |
+
$('input[name="cronselect"]').change(function () {
|
17 |
+
if ('basic' == $('input[name="cronselect"]:checked').val()) {
|
18 |
+
$('.wpcronadvanced').hide();
|
19 |
+
$('.wpcronbasic').show();
|
20 |
+
cronstampbasic();
|
21 |
+
} else {
|
22 |
+
$('.wpcronadvanced').show();
|
23 |
+
$('.wpcronbasic').hide();
|
24 |
+
cronstampadvanced();
|
25 |
+
}
|
26 |
+
});
|
27 |
+
|
28 |
+
function cronstampadvanced() {
|
29 |
+
var cronminutes = [];
|
30 |
+
var cronhours = [];
|
31 |
+
var cronmday = [];
|
32 |
+
var cronmon = [];
|
33 |
+
var cronwday = [];
|
34 |
+
$('input[name="cronminutes[]"]:checked').each(function () {
|
35 |
+
cronminutes.push($(this).val());
|
36 |
+
});
|
37 |
+
$('input[name="cronhours[]"]:checked').each(function () {
|
38 |
+
cronhours.push($(this).val());
|
39 |
+
});
|
40 |
+
$('input[name="cronmday[]"]:checked').each(function () {
|
41 |
+
cronmday.push($(this).val());
|
42 |
+
});
|
43 |
+
$('input[name="cronmon[]"]:checked').each(function () {
|
44 |
+
cronmon.push($(this).val());
|
45 |
+
});
|
46 |
+
$('input[name="cronwday[]"]:checked').each(function () {
|
47 |
+
cronwday.push($(this).val());
|
48 |
+
});
|
49 |
+
var data = {
|
50 |
+
action:'backwpup_cron_text',
|
51 |
+
cronminutes:cronminutes,
|
52 |
+
cronhours:cronhours,
|
53 |
+
cronmday:cronmday,
|
54 |
+
cronmon:cronmon,
|
55 |
+
cronwday:cronwday,
|
56 |
+
crontype:'advanced',
|
57 |
+
_ajax_nonce:$('#backwpupajaxnonce').val()
|
58 |
+
};
|
59 |
+
$.post(ajaxurl, data, function (response) {
|
60 |
+
$('#schedulecron').replaceWith(response);
|
61 |
+
});
|
62 |
+
}
|
63 |
+
$('input[name="cronminutes[]"]').change(function () {
|
64 |
+
cronstampadvanced();
|
65 |
+
});
|
66 |
+
$('input[name="cronhours[]"]').change(function () {
|
67 |
+
cronstampadvanced();
|
68 |
+
});
|
69 |
+
$('input[name="cronmday[]"]').change(function () {
|
70 |
+
cronstampadvanced();
|
71 |
+
});
|
72 |
+
$('input[name="cronmon[]"]').change(function () {
|
73 |
+
cronstampadvanced();
|
74 |
+
});
|
75 |
+
$('input[name="cronwday[]"]').change(function () {
|
76 |
+
cronstampadvanced();
|
77 |
+
});
|
78 |
+
|
79 |
+
function cronstampbasic() {
|
80 |
+
var cronminutes = [];
|
81 |
+
var cronhours = [];
|
82 |
+
var cronmday = [];
|
83 |
+
var cronmon = [];
|
84 |
+
var cronwday = [];
|
85 |
+
if ('mon' == $('input[name="cronbtype"]:checked').val()) {
|
86 |
+
cronminutes.push($('select[name="moncronminutes"]').val());
|
87 |
+
cronhours.push($('select[name="moncronhours"]').val());
|
88 |
+
cronmday.push($('select[name="moncronmday"]').val());
|
89 |
+
cronmon.push('*');
|
90 |
+
cronwday.push('*');
|
91 |
+
}
|
92 |
+
if ('week' == $('input[name="cronbtype"]:checked').val()) {
|
93 |
+
cronminutes.push($('select[name="weekcronminutes"]').val());
|
94 |
+
cronhours.push($('select[name="weekcronhours"]').val());
|
95 |
+
cronmday.push('*');
|
96 |
+
cronmon.push('*');
|
97 |
+
cronwday.push($('select[name="weekcronwday"]').val());
|
98 |
+
}
|
99 |
+
if ('day' == $('input[name="cronbtype"]:checked').val()) {
|
100 |
+
cronminutes.push($('select[name="daycronminutes"]').val());
|
101 |
+
cronhours.push($('select[name="daycronhours"]').val());
|
102 |
+
cronmday.push('*');
|
103 |
+
cronmon.push('*');
|
104 |
+
cronwday.push('*');
|
105 |
+
}
|
106 |
+
if ('hour' == $('input[name="cronbtype"]:checked').val()) {
|
107 |
+
cronminutes.push($('select[name="hourcronminutes"]').val());
|
108 |
+
cronhours.push('*');
|
109 |
+
cronmday.push('*');
|
110 |
+
cronmon.push('*');
|
111 |
+
cronwday.push('*');
|
112 |
+
}
|
113 |
+
var data = {
|
114 |
+
action:'backwpup_cron_text',
|
115 |
+
cronminutes:cronminutes,
|
116 |
+
cronhours:cronhours,
|
117 |
+
cronmday:cronmday,
|
118 |
+
cronmon:cronmon,
|
119 |
+
cronwday:cronwday,
|
120 |
+
crontype:'basic',
|
121 |
+
_ajax_nonce:$('#backwpupajaxnonce').val()
|
122 |
+
};
|
123 |
+
$.post(ajaxurl, data, function (response) {
|
124 |
+
$('#schedulecron').replaceWith(response);
|
125 |
+
});
|
126 |
+
}
|
127 |
+
$('input[name="cronbtype"]').change(function () {
|
128 |
+
cronstampbasic();
|
129 |
+
});
|
130 |
+
$('select[name="moncronmday"]').change(function () {
|
131 |
+
cronstampbasic();
|
132 |
+
});
|
133 |
+
$('select[name="moncronhours"]').change(function () {
|
134 |
+
cronstampbasic();
|
135 |
+
});
|
136 |
+
$('select[name="moncronminutes"]').change(function () {
|
137 |
+
cronstampbasic();
|
138 |
+
});
|
139 |
+
$('select[name="weekcronwday"]').change(function () {
|
140 |
+
cronstampbasic();
|
141 |
+
});
|
142 |
+
$('select[name="weekcronhours"]').change(function () {
|
143 |
+
cronstampbasic();
|
144 |
+
});
|
145 |
+
$('select[name="weekcronminutes"]').change(function () {
|
146 |
+
cronstampbasic();
|
147 |
+
});
|
148 |
+
$('select[name="daycronhours"]').change(function () {
|
149 |
+
cronstampbasic();
|
150 |
+
});
|
151 |
+
$('select[name="daycronminutes"]').change(function () {
|
152 |
+
cronstampbasic();
|
153 |
+
});
|
154 |
+
$('select[name="hourcronminutes"]').change(function () {
|
155 |
+
cronstampbasic();
|
156 |
+
});
|
157 |
+
});
|
assets/js/page_edit_tab_cron.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
jQuery(document).ready(function(c){c('input[name="activetype"]').change(function(){if(c(this).val()=="wpcron"){c(".wpcron").show()}else{c(".wpcron").hide()}});if(c('input[name="activetype"]:checked').val()=="wpcron"){c(".wpcron").show()}else{c(".wpcron").hide()}c('input[name="cronselect"]').change(function(){if("basic"==c('input[name="cronselect"]:checked').val()){c(".wpcronadvanced").hide();c(".wpcronbasic").show();b()}else{c(".wpcronadvanced").show();c(".wpcronbasic").hide();a()}});function a(){var d=[];var i=[];var f=[];var e=[];var h=[];c('input[name="cronminutes[]"]:checked').each(function(){d.push(c(this).val())});c('input[name="cronhours[]"]:checked').each(function(){i.push(c(this).val())});c('input[name="cronmday[]"]:checked').each(function(){f.push(c(this).val())});c('input[name="cronmon[]"]:checked').each(function(){e.push(c(this).val())});c('input[name="cronwday[]"]:checked').each(function(){h.push(c(this).val())});var g={action:"backwpup_cron_text",cronminutes:d,cronhours:i,cronmday:f,cronmon:e,cronwday:h,crontype:"advanced",_ajax_nonce:c("#backwpupajaxnonce").val()};c.post(ajaxurl,g,function(j){c("#schedulecron").replaceWith(j)})}c('input[name="cronminutes[]"]').change(function(){a()});c('input[name="cronhours[]"]').change(function(){a()});c('input[name="cronmday[]"]').change(function(){a()});c('input[name="cronmon[]"]').change(function(){a()});c('input[name="cronwday[]"]').change(function(){a()});function b(){var d=[];var i=[];var f=[];var e=[];var h=[];if("mon"==c('input[name="cronbtype"]:checked').val()){d.push(c('select[name="moncronminutes"]').val());i.push(c('select[name="moncronhours"]').val());f.push(c('select[name="moncronmday"]').val());e.push("*");h.push("*")}if("week"==c('input[name="cronbtype"]:checked').val()){d.push(c('select[name="weekcronminutes"]').val());i.push(c('select[name="weekcronhours"]').val());f.push("*");e.push("*");h.push(c('select[name="weekcronwday"]').val())}if("day"==c('input[name="cronbtype"]:checked').val()){d.push(c('select[name="daycronminutes"]').val());i.push(c('select[name="daycronhours"]').val());f.push("*");e.push("*");h.push("*")}if("hour"==c('input[name="cronbtype"]:checked').val()){d.push(c('select[name="hourcronminutes"]').val());i.push("*");f.push("*");e.push("*");h.push("*")}var g={action:"backwpup_cron_text",cronminutes:d,cronhours:i,cronmday:f,cronmon:e,cronwday:h,crontype:"basic",_ajax_nonce:c("#backwpupajaxnonce").val()};c.post(ajaxurl,g,function(j){c("#schedulecron").replaceWith(j)})}c('input[name="cronbtype"]').change(function(){b()});c('select[name="moncronmday"]').change(function(){b()});c('select[name="moncronhours"]').change(function(){b()});c('select[name="moncronminutes"]').change(function(){b()});c('select[name="weekcronwday"]').change(function(){b()});c('select[name="weekcronhours"]').change(function(){b()});c('select[name="weekcronminutes"]').change(function(){b()});c('select[name="daycronhours"]').change(function(){b()});c('select[name="daycronminutes"]').change(function(){b()});c('select[name="hourcronminutes"]').change(function(){b()})});
|
assets/js/page_edit_tab_job.js
ADDED
@@ -0,0 +1,334 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
function date(format, timestamp) {
|
2 |
+
// http://kevin.vanzonneveld.net
|
3 |
+
// + original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com)
|
4 |
+
// + parts by: Peter-Paul Koch (http://www.quirksmode.org/js/beat.html)
|
5 |
+
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
6 |
+
// + improved by: MeEtc (http://yass.meetcweb.com)
|
7 |
+
// + improved by: Brad Touesnard
|
8 |
+
// + improved by: Tim Wiel
|
9 |
+
// + improved by: Bryan Elliott
|
10 |
+
//
|
11 |
+
// + improved by: Brett Zamir (http://brett-zamir.me)
|
12 |
+
// + improved by: David Randall
|
13 |
+
// + input by: Brett Zamir (http://brett-zamir.me)
|
14 |
+
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
15 |
+
// + improved by: Brett Zamir (http://brett-zamir.me)
|
16 |
+
// + improved by: Brett Zamir (http://brett-zamir.me)
|
17 |
+
// + improved by: Theriault
|
18 |
+
// + derived from: gettimeofday
|
19 |
+
// + input by: majak
|
20 |
+
// + bugfixed by: majak
|
21 |
+
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
22 |
+
// + input by: Alex
|
23 |
+
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
|
24 |
+
// + improved by: Theriault
|
25 |
+
// + improved by: Brett Zamir (http://brett-zamir.me)
|
26 |
+
// + improved by: Theriault
|
27 |
+
// + improved by: Thomas Beaucourt (http://www.webapp.fr)
|
28 |
+
// + improved by: JT
|
29 |
+
// + improved by: Theriault
|
30 |
+
// + improved by: Rafał Kukawski (http://blog.kukawski.pl)
|
31 |
+
// + bugfixed by: omid (http://phpjs.org/functions/380:380#comment_137122)
|
32 |
+
// + input by: Martin
|
33 |
+
// + input by: Alex Wilson
|
34 |
+
// + bugfixed by: Chris (http://www.devotis.nl/)
|
35 |
+
// % note 1: Uses global: php_js to store the default timezone
|
36 |
+
// % note 2: Although the function potentially allows timezone info (see notes), it currently does not set
|
37 |
+
// % note 2: per a timezone specified by date_default_timezone_set(). Implementers might use
|
38 |
+
// % note 2: this.php_js.currentTimezoneOffset and this.php_js.currentTimezoneDST set by that function
|
39 |
+
// % note 2: in order to adjust the dates in this function (or our other date functions!) accordingly
|
40 |
+
// * example 1: date('H:m:s \\m \\i\\s \\m\\o\\n\\t\\h', 1062402400);
|
41 |
+
// * returns 1: '09:09:40 m is month'
|
42 |
+
// * example 2: date('F j, Y, g:i a', 1062462400);
|
43 |
+
// * returns 2: 'September 2, 2003, 2:26 am'
|
44 |
+
// * example 3: date('Y W o', 1062462400);
|
45 |
+
// * returns 3: '2003 36 2003'
|
46 |
+
// * example 4: x = date('Y m d', (new Date()).getTime()/1000);
|
47 |
+
// * example 4: (x+'').length == 10 // 2009 01 09
|
48 |
+
// * returns 4: true
|
49 |
+
// * example 5: date('W', 1104534000);
|
50 |
+
// * returns 5: '53'
|
51 |
+
// * example 6: date('B t', 1104534000);
|
52 |
+
// * returns 6: '999 31'
|
53 |
+
// * example 7: date('W U', 1293750000.82); // 2010-12-31
|
54 |
+
// * returns 7: '52 1293750000'
|
55 |
+
// * example 8: date('W', 1293836400); // 2011-01-01
|
56 |
+
// * returns 8: '52'
|
57 |
+
// * example 9: date('W Y-m-d', 1293974054); // 2011-01-02
|
58 |
+
// * returns 9: '52 2011-01-02'
|
59 |
+
var that = this,
|
60 |
+
jsdate,
|
61 |
+
f,
|
62 |
+
formatChr = /\\?([a-z])/gi,
|
63 |
+
formatChrCb,
|
64 |
+
// Keep this here (works, but for code commented-out
|
65 |
+
// below for file size reasons)
|
66 |
+
//, tal= [],
|
67 |
+
_pad = function (n, c) {
|
68 |
+
n = n.toString();
|
69 |
+
return n.length < c ? _pad('0' + n, c, '0') : n;
|
70 |
+
},
|
71 |
+
txt_words = ["Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Satur", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
72 |
+
formatChrCb = function (t, s) {
|
73 |
+
return f[t] ? f[t]() : s;
|
74 |
+
};
|
75 |
+
f = {
|
76 |
+
// Day
|
77 |
+
d: function () { // Day of month w/leading 0; 01..31
|
78 |
+
return _pad(f.j(), 2);
|
79 |
+
},
|
80 |
+
D: function () { // Shorthand day name; Mon...Sun
|
81 |
+
return f.l().slice(0, 3);
|
82 |
+
},
|
83 |
+
j: function () { // Day of month; 1..31
|
84 |
+
return jsdate.getDate();
|
85 |
+
},
|
86 |
+
l: function () { // Full day name; Monday...Sunday
|
87 |
+
return txt_words[f.w()] + 'day';
|
88 |
+
},
|
89 |
+
N: function () { // ISO-8601 day of week; 1[Mon]..7[Sun]
|
90 |
+
return f.w() || 7;
|
91 |
+
},
|
92 |
+
S: function(){ // Ordinal suffix for day of month; st, nd, rd, th
|
93 |
+
var j = f.j()
|
94 |
+
i = j%10;
|
95 |
+
if (i <= 3 && parseInt((j%100)/10) == 1) i = 0;
|
96 |
+
return ['st', 'nd', 'rd'][i - 1] || 'th';
|
97 |
+
},
|
98 |
+
w: function () { // Day of week; 0[Sun]..6[Sat]
|
99 |
+
return jsdate.getDay();
|
100 |
+
},
|
101 |
+
z: function () { // Day of year; 0..365
|
102 |
+
var a = new Date(f.Y(), f.n() - 1, f.j()),
|
103 |
+
b = new Date(f.Y(), 0, 1);
|
104 |
+
return Math.round((a - b) / 864e5);
|
105 |
+
},
|
106 |
+
|
107 |
+
// Week
|
108 |
+
W: function () { // ISO-8601 week number
|
109 |
+
var a = new Date(f.Y(), f.n() - 1, f.j() - f.N() + 3),
|
110 |
+
b = new Date(a.getFullYear(), 0, 4);
|
111 |
+
return _pad(1 + Math.round((a - b) / 864e5 / 7), 2);
|
112 |
+
},
|
113 |
+
|
114 |
+
// Month
|
115 |
+
F: function () { // Full month name; January...December
|
116 |
+
return txt_words[6 + f.n()];
|
117 |
+
},
|
118 |
+
m: function () { // Month w/leading 0; 01...12
|
119 |
+
return _pad(f.n(), 2);
|
120 |
+
},
|
121 |
+
M: function () { // Shorthand month name; Jan...Dec
|
122 |
+
return f.F().slice(0, 3);
|
123 |
+
},
|
124 |
+
n: function () { // Month; 1...12
|
125 |
+
return jsdate.getMonth() + 1;
|
126 |
+
},
|
127 |
+
t: function () { // Days in month; 28...31
|
128 |
+
return (new Date(f.Y(), f.n(), 0)).getDate();
|
129 |
+
},
|
130 |
+
|
131 |
+
// Year
|
132 |
+
L: function () { // Is leap year?; 0 or 1
|
133 |
+
var j = f.Y();
|
134 |
+
return j % 4 === 0 & j % 100 !== 0 | j % 400 === 0;
|
135 |
+
},
|
136 |
+
o: function () { // ISO-8601 year
|
137 |
+
var n = f.n(),
|
138 |
+
W = f.W(),
|
139 |
+
Y = f.Y();
|
140 |
+
return Y + (n === 12 && W < 9 ? 1 : n === 1 && W > 9 ? -1 : 0);
|
141 |
+
},
|
142 |
+
Y: function () { // Full year; e.g. 1980...2010
|
143 |
+
return jsdate.getFullYear();
|
144 |
+
},
|
145 |
+
y: function () { // Last two digits of year; 00...99
|
146 |
+
return f.Y().toString().slice(-2);
|
147 |
+
},
|
148 |
+
|
149 |
+
// Time
|
150 |
+
a: function () { // am or pm
|
151 |
+
return jsdate.getHours() > 11 ? "pm" : "am";
|
152 |
+
},
|
153 |
+
A: function () { // AM or PM
|
154 |
+
return f.a().toUpperCase();
|
155 |
+
},
|
156 |
+
B: function () { // Swatch Internet time; 000..999
|
157 |
+
var H = jsdate.getUTCHours() * 36e2,
|
158 |
+
// Hours
|
159 |
+
i = jsdate.getUTCMinutes() * 60,
|
160 |
+
// Minutes
|
161 |
+
s = jsdate.getUTCSeconds(); // Seconds
|
162 |
+
return _pad(Math.floor((H + i + s + 36e2) / 86.4) % 1e3, 3);
|
163 |
+
},
|
164 |
+
g: function () { // 12-Hours; 1..12
|
165 |
+
return f.G() % 12 || 12;
|
166 |
+
},
|
167 |
+
G: function () { // 24-Hours; 0..23
|
168 |
+
return jsdate.getHours();
|
169 |
+
},
|
170 |
+
h: function () { // 12-Hours w/leading 0; 01..12
|
171 |
+
return _pad(f.g(), 2);
|
172 |
+
},
|
173 |
+
H: function () { // 24-Hours w/leading 0; 00..23
|
174 |
+
return _pad(f.G(), 2);
|
175 |
+
},
|
176 |
+
i: function () { // Minutes w/leading 0; 00..59
|
177 |
+
return _pad(jsdate.getMinutes(), 2);
|
178 |
+
},
|
179 |
+
s: function () { // Seconds w/leading 0; 00..59
|
180 |
+
return _pad(jsdate.getSeconds(), 2);
|
181 |
+
},
|
182 |
+
u: function () { // Microseconds; 000000-999000
|
183 |
+
return _pad(jsdate.getMilliseconds() * 1000, 6);
|
184 |
+
},
|
185 |
+
|
186 |
+
// Timezone
|
187 |
+
e: function () { // Timezone identifier; e.g. Atlantic/Azores, ...
|
188 |
+
// The following works, but requires inclusion of the very large
|
189 |
+
// timezone_abbreviations_list() function.
|
190 |
+
/* return that.date_default_timezone_get();
|
191 |
+
*/
|
192 |
+
throw 'Not supported (see source code of date() for timezone on how to add support)';
|
193 |
+
},
|
194 |
+
I: function () { // DST observed?; 0 or 1
|
195 |
+
// Compares Jan 1 minus Jan 1 UTC to Jul 1 minus Jul 1 UTC.
|
196 |
+
// If they are not equal, then DST is observed.
|
197 |
+
var a = new Date(f.Y(), 0),
|
198 |
+
// Jan 1
|
199 |
+
c = Date.UTC(f.Y(), 0),
|
200 |
+
// Jan 1 UTC
|
201 |
+
b = new Date(f.Y(), 6),
|
202 |
+
// Jul 1
|
203 |
+
d = Date.UTC(f.Y(), 6); // Jul 1 UTC
|
204 |
+
return ((a - c) !== (b - d)) ? 1 : 0;
|
205 |
+
},
|
206 |
+
O: function () { // Difference to GMT in hour format; e.g. +0200
|
207 |
+
var tzo = jsdate.getTimezoneOffset(),
|
208 |
+
a = Math.abs(tzo);
|
209 |
+
return (tzo > 0 ? "-" : "+") + _pad(Math.floor(a / 60) * 100 + a % 60, 4);
|
210 |
+
},
|
211 |
+
P: function () { // Difference to GMT w/colon; e.g. +02:00
|
212 |
+
var O = f.O();
|
213 |
+
return (O.substr(0, 3) + ":" + O.substr(3, 2));
|
214 |
+
},
|
215 |
+
T: function () { // Timezone abbreviation; e.g. EST, MDT, ...
|
216 |
+
// The following works, but requires inclusion of the very
|
217 |
+
// large timezone_abbreviations_list() function.
|
218 |
+
/* var abbr = '', i = 0, os = 0, default = 0;
|
219 |
+
if (!tal.length) {
|
220 |
+
tal = that.timezone_abbreviations_list();
|
221 |
+
}
|
222 |
+
if (that.php_js && that.php_js.default_timezone) {
|
223 |
+
default = that.php_js.default_timezone;
|
224 |
+
for (abbr in tal) {
|
225 |
+
for (i=0; i < tal[abbr].length; i++) {
|
226 |
+
if (tal[abbr][i].timezone_id === default) {
|
227 |
+
return abbr.toUpperCase();
|
228 |
+
}
|
229 |
+
}
|
230 |
+
}
|
231 |
+
}
|
232 |
+
for (abbr in tal) {
|
233 |
+
for (i = 0; i < tal[abbr].length; i++) {
|
234 |
+
os = -jsdate.getTimezoneOffset() * 60;
|
235 |
+
if (tal[abbr][i].offset === os) {
|
236 |
+
return abbr.toUpperCase();
|
237 |
+
}
|
238 |
+
}
|
239 |
+
}
|
240 |
+
*/
|
241 |
+
return 'UTC';
|
242 |
+
},
|
243 |
+
Z: function () { // Timezone offset in seconds (-43200...50400)
|
244 |
+
return -jsdate.getTimezoneOffset() * 60;
|
245 |
+
},
|
246 |
+
|
247 |
+
// Full Date/Time
|
248 |
+
c: function () { // ISO-8601 date.
|
249 |
+
return 'Y-m-d\\TH:i:sP'.replace(formatChr, formatChrCb);
|
250 |
+
},
|
251 |
+
r: function () { // RFC 2822
|
252 |
+
return 'D, d M Y H:i:s O'.replace(formatChr, formatChrCb);
|
253 |
+
},
|
254 |
+
U: function () { // Seconds since UNIX epoch
|
255 |
+
return jsdate / 1000 | 0;
|
256 |
+
}
|
257 |
+
};
|
258 |
+
this.date = function (format, timestamp) {
|
259 |
+
that = this;
|
260 |
+
jsdate = (timestamp === undefined ? new Date() : // Not provided
|
261 |
+
(timestamp instanceof Date) ? new Date(timestamp) : // JS Date()
|
262 |
+
new Date(timestamp * 1000) // UNIX timestamp (auto-convert to int)
|
263 |
+
);
|
264 |
+
return format.replace(formatChr, formatChrCb);
|
265 |
+
};
|
266 |
+
return this.date(format, timestamp);
|
267 |
+
}
|
268 |
+
|
269 |
+
jQuery(document).ready(function ($) {
|
270 |
+
$('input[name="type[]"]').change(function () {
|
271 |
+
if ($('input[name="type[]"]:checked').hasClass('filetype')) {
|
272 |
+
$('.hasdests').show();
|
273 |
+
} else {
|
274 |
+
$('.hasdests').hide();
|
275 |
+
}
|
276 |
+
$( '#tab-jobtype-' + $(this).val().toLowerCase() ).toggle( );
|
277 |
+
});
|
278 |
+
|
279 |
+
if ($('input[name="type[]"]:checked').hasClass('filetype')) {
|
280 |
+
$('.hasdests').show();
|
281 |
+
} else {
|
282 |
+
$('.hasdests').hide();
|
283 |
+
}
|
284 |
+
|
285 |
+
$('input[name="destinations[]"]').change(function () {
|
286 |
+
$( '#tab-dest-' + $(this).val().toLowerCase() ).toggle( );
|
287 |
+
});
|
288 |
+
|
289 |
+
$('input[name="name"]').keyup(function () {
|
290 |
+
$('#h2jobtitle').replaceWith('<span id="h2jobtitle">' + backwpup_htmlspecialchars( $(this).val() ) + '</span>');
|
291 |
+
});
|
292 |
+
|
293 |
+
$('input[name="backuptype"]').change(function () {
|
294 |
+
if ($(this).val() == 'sync') {
|
295 |
+
$('.nosync').hide();
|
296 |
+
$('.sync').show();
|
297 |
+
} else {
|
298 |
+
$('.nosync').show();
|
299 |
+
$('.sync').hide();
|
300 |
+
}
|
301 |
+
});
|
302 |
+
|
303 |
+
if ($('input[name="backuptype"]:checked').val() == 'sync') {
|
304 |
+
$('.nosync').hide();
|
305 |
+
$('.sync').show();
|
306 |
+
} else {
|
307 |
+
$('.nosync').show();
|
308 |
+
$('.sync').hide();
|
309 |
+
}
|
310 |
+
|
311 |
+
$('input[name="archivename"]').keyup(function () {
|
312 |
+
var filename = $(this).val();
|
313 |
+
filename = filename.replace( '%d', date( 'd' ) );
|
314 |
+
filename = filename.replace( '%j', date( 'j' ) );
|
315 |
+
filename = filename.replace( '%m', date( 'm' ) );
|
316 |
+
filename = filename.replace( '%n', date( 'n' ) );
|
317 |
+
filename = filename.replace( '%Y', date( 'Y' ) );
|
318 |
+
filename = filename.replace( '%y', date( 'y' ) );
|
319 |
+
filename = filename.replace( '%a', date( 'a' ) );
|
320 |
+
filename = filename.replace( '%A', date( 'A' ) );
|
321 |
+
filename = filename.replace( '%B', date( 'B' ) );
|
322 |
+
filename = filename.replace( '%g', date( 'g' ) );
|
323 |
+
filename = filename.replace( '%G', date( 'G' ) );
|
324 |
+
filename = filename.replace( '%h', date( 'h' ) );
|
325 |
+
filename = filename.replace( '%H', date( 'H' ) );
|
326 |
+
filename = filename.replace( '%i', date( 'i' ) );
|
327 |
+
filename = filename.replace( '%s', date( 's' ) );
|
328 |
+
$('#archivefilename').replaceWith('<span id="archivefilename">' + backwpup_htmlspecialchars( filename ) + '</span>');
|
329 |
+
});
|
330 |
+
|
331 |
+
$('input[name="archiveformart"]').change(function () {
|
332 |
+
$('#archiveformart').replaceWith('<span id="archiveformart">' + $(this).val() + '</span>');
|
333 |
+
});
|
334 |
+
});
|
assets/js/page_edit_tab_job.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
function date(k,h){var g=this,j,e,b=/\\?([a-z])/gi,a,c=function(l,f){l=l.toString();return l.length<f?c("0"+l,f,"0"):l},d=["Sun","Mon","Tues","Wednes","Thurs","Fri","Satur","January","February","March","April","May","June","July","August","September","October","November","December"];a=function(f,l){return e[f]?e[f]():l};e={d:function(){return c(e.j(),2)},D:function(){return e.l().slice(0,3)},j:function(){return j.getDate()},l:function(){return d[e.w()]+"day"},N:function(){return e.w()||7},S:function(){var f=e.j();i=f%10;if(i<=3&&parseInt((f%100)/10)==1){i=0}return["st","nd","rd"][i-1]||"th"},w:function(){return j.getDay()},z:function(){var l=new Date(e.Y(),e.n()-1,e.j()),f=new Date(e.Y(),0,1);return Math.round((l-f)/86400000)},W:function(){var l=new Date(e.Y(),e.n()-1,e.j()-e.N()+3),f=new Date(l.getFullYear(),0,4);return c(1+Math.round((l-f)/86400000/7),2)},F:function(){return d[6+e.n()]},m:function(){return c(e.n(),2)},M:function(){return e.F().slice(0,3)},n:function(){return j.getMonth()+1},t:function(){return(new Date(e.Y(),e.n(),0)).getDate()},L:function(){var f=e.Y();return f%4===0&f%100!==0|f%400===0},o:function(){var m=e.n(),f=e.W(),l=e.Y();return l+(m===12&&f<9?1:m===1&&f>9?-1:0)},Y:function(){return j.getFullYear()},y:function(){return e.Y().toString().slice(-2)},a:function(){return j.getHours()>11?"pm":"am"},A:function(){return e.a().toUpperCase()},B:function(){var l=j.getUTCHours()*3600,f=j.getUTCMinutes()*60,m=j.getUTCSeconds();return c(Math.floor((l+f+m+3600)/86.4)%1000,3)},g:function(){return e.G()%12||12},G:function(){return j.getHours()},h:function(){return c(e.g(),2)},H:function(){return c(e.G(),2)},i:function(){return c(j.getMinutes(),2)},s:function(){return c(j.getSeconds(),2)},u:function(){return c(j.getMilliseconds()*1000,6)},e:function(){throw"Not supported (see source code of date() for timezone on how to add support)"},I:function(){var l=new Date(e.Y(),0),n=Date.UTC(e.Y(),0),f=new Date(e.Y(),6),m=Date.UTC(e.Y(),6);return((l-n)!==(f-m))?1:0},O:function(){var l=j.getTimezoneOffset(),f=Math.abs(l);return(l>0?"-":"+")+c(Math.floor(f/60)*100+f%60,4)},P:function(){var f=e.O();return(f.substr(0,3)+":"+f.substr(3,2))},T:function(){return"UTC"},Z:function(){return -j.getTimezoneOffset()*60},c:function(){return"Y-m-d\\TH:i:sP".replace(b,a)},r:function(){return"D, d M Y H:i:s O".replace(b,a)},U:function(){return j/1000|0}};this.date=function(l,f){g=this;j=(f===undefined?new Date():(f instanceof Date)?new Date(f):new Date(f*1000));return l.replace(b,a)};return this.date(k,h)}jQuery(document).ready(function(a){a('input[name="type[]"]').change(function(){if(a('input[name="type[]"]:checked').hasClass("filetype")){a(".hasdests").show()}else{a(".hasdests").hide()}a("#tab-jobtype-"+a(this).val().toLowerCase()).toggle()});if(a('input[name="type[]"]:checked').hasClass("filetype")){a(".hasdests").show()}else{a(".hasdests").hide()}a('input[name="destinations[]"]').change(function(){a("#tab-dest-"+a(this).val().toLowerCase()).toggle()});a('input[name="name"]').keyup(function(){a("#h2jobtitle").replaceWith('<span id="h2jobtitle">'+backwpup_htmlspecialchars(a(this).val())+"</span>")});a('input[name="backuptype"]').change(function(){if(a(this).val()=="sync"){a(".nosync").hide();a(".sync").show()}else{a(".nosync").show();a(".sync").hide()}});if(a('input[name="backuptype"]:checked').val()=="sync"){a(".nosync").hide();a(".sync").show()}else{a(".nosync").show();a(".sync").hide()}a('input[name="archivename"]').keyup(function(){var b=a(this).val();b=b.replace("%d",date("d"));b=b.replace("%j",date("j"));b=b.replace("%m",date("m"));b=b.replace("%n",date("n"));b=b.replace("%Y",date("Y"));b=b.replace("%y",date("y"));b=b.replace("%a",date("a"));b=b.replace("%A",date("A"));b=b.replace("%B",date("B"));b=b.replace("%g",date("g"));b=b.replace("%G",date("G"));b=b.replace("%h",date("h"));b=b.replace("%H",date("H"));b=b.replace("%i",date("i"));b=b.replace("%s",date("s"));a("#archivefilename").replaceWith('<span id="archivefilename">'+backwpup_htmlspecialchars(b)+"</span>")});a('input[name="archiveformart"]').change(function(){a("#archiveformart").replaceWith('<span id="archiveformart">'+a(this).val()+"</span>")})});
|
assets/js/page_settings.js
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function ($) {
|
2 |
+
$('.table').addClass('ui-tabs-hide');
|
3 |
+
$((window.location.hash || "#backwpup-tab-general")).removeClass('ui-tabs-hide');
|
4 |
+
$('.nav-tab-wrapper>a').removeClass('nav-tab-active');
|
5 |
+
$('.nav-tab-wrapper>a').each(function (index) {
|
6 |
+
if ($(this).attr('href') == (window.location.hash || "#backwpup-tab-general")) {
|
7 |
+
$(this).addClass('nav-tab-active');
|
8 |
+
}
|
9 |
+
});
|
10 |
+
$('.nav-tab-wrapper>a').click(function () {
|
11 |
+
var clickedid = $(this).attr('href');
|
12 |
+
$('.nav-tab-wrapper>a').removeClass('nav-tab-active');
|
13 |
+
$(this).addClass('nav-tab-active');
|
14 |
+
$('.table').addClass('ui-tabs-hide');
|
15 |
+
$(clickedid).removeClass('ui-tabs-hide');
|
16 |
+
$('#message').hide();
|
17 |
+
$('input[name="anchor"]').val(clickedid);
|
18 |
+
if ( clickedid == '#backwpup-tab-information' ) {
|
19 |
+
$('#submit').hide();
|
20 |
+
$('#default_settings').hide();
|
21 |
+
} else {
|
22 |
+
$('#submit').show();
|
23 |
+
$('#default_settings').show();
|
24 |
+
}
|
25 |
+
return false;
|
26 |
+
});
|
27 |
+
});
|
assets/js/page_settings.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
jQuery(document).ready(function(a){a(".table").addClass("ui-tabs-hide");a((window.location.hash||"#backwpup-tab-general")).removeClass("ui-tabs-hide");a(".nav-tab-wrapper>a").removeClass("nav-tab-active");a(".nav-tab-wrapper>a").each(function(b){if(a(this).attr("href")==(window.location.hash||"#backwpup-tab-general")){a(this).addClass("nav-tab-active")}});a(".nav-tab-wrapper>a").click(function(){var b=a(this).attr("href");a(".nav-tab-wrapper>a").removeClass("nav-tab-active");a(this).addClass("nav-tab-active");a(".table").addClass("ui-tabs-hide");a(b).removeClass("ui-tabs-hide");a("#message").hide();a('input[name="anchor"]').val(b);if(b=="#backwpup-tab-information"){a("#submit").hide();a("#default_settings").hide()}else{a("#submit").show();a("#default_settings").show()}return false})});
|
backwpup.php
CHANGED
@@ -1,340 +1,476 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Plugin Name: BackWPup
|
4 |
-
* Plugin URI: https://marketpress.com/product/backwpup-pro/
|
5 |
-
* Description: WordPress Backup
|
6 |
-
* Author: Inpsyde GmbH
|
7 |
-
* Author URI: http://inpsyde.com
|
8 |
-
* Version: 3.
|
9 |
-
* Text Domain: backwpup
|
10 |
-
* Domain Path: /languages/
|
11 |
-
* Network: true
|
12 |
-
* License: GPLv3
|
13 |
-
* License URI: http://www.gnu.org/licenses/gpl-3.0
|
14 |
-
* Slug: backwpup
|
15 |
-
*/
|
16 |
-
|
17 |
-
/**
|
18 |
-
* Copyright (C) 2012-2013 Inpsyde GmbH (email: info@inpsyde.com)
|
19 |
-
*
|
20 |
-
* This program is free software; you can redistribute it and/or
|
21 |
-
* modify it under the terms of the GNU General Public License
|
22 |
-
* as published by the Free Software Foundation; either version 2
|
23 |
-
* of the License, or (at your option) any later version.
|
24 |
-
*
|
25 |
-
* This program is distributed in the hope that it will be useful,
|
26 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
27 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
28 |
-
* GNU General Public License for more details.
|
29 |
-
*
|
30 |
-
* You should have received a copy of the GNU General Public License
|
31 |
-
* along with this program; if not, write to the Free Software
|
32 |
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
33 |
-
*/
|
34 |
-
|
35 |
-
if ( ! class_exists( 'BackWPup' ) ) {
|
36 |
-
|
37 |
-
// Don't activate on anything less than PHP 5.2.4 or WordPress 3.1
|
38 |
-
if ( version_compare( PHP_VERSION, '5.2.6', '<' ) || version_compare( get_bloginfo( 'version' ), '3.
|
39 |
-
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
40 |
-
deactivate_plugins( basename( __FILE__ ) );
|
41 |
-
if ( isset( $_GET['action'] ) && ( $_GET['action'] == 'activate' || $_GET['action'] == 'error_scrape' ) )
|
42 |
-
die( __( 'BackWPup requires PHP version 5.2.6 or greater and WordPress 3.
|
43 |
-
}
|
44 |
-
|
45 |
-
//Start Plugin
|
46 |
-
if ( function_exists( 'add_filter' ) )
|
47 |
-
add_action( 'plugins_loaded', array( 'BackWPup', '
|
48 |
-
|
49 |
-
/**
|
50 |
-
* Main BackWPup Plugin Class
|
51 |
-
*/
|
52 |
-
final class BackWPup {
|
53 |
-
|
54 |
-
private static $instance = NULL;
|
55 |
-
private static $plugin_data = array();
|
56 |
-
private static $destinations = array();
|
57 |
-
private static $
|
58 |
-
private static $
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
if
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
//start upgrade if needed
|
74 |
-
if ( get_site_option( 'backwpup_version' ) != self::get_plugin_data( 'Version' )
|
75 |
-
BackWPup_Install::activate();
|
76 |
-
//load pro features
|
77 |
-
if (
|
78 |
-
|
79 |
-
//WP-Cron
|
80 |
-
if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
|
81 |
-
//
|
82 |
-
|
83 |
-
|
84 |
-
// add
|
85 |
-
|
86 |
-
add_action( '
|
87 |
-
//
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
//
|
98 |
-
if (
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
*
|
107 |
-
*
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
*
|
123 |
-
*
|
124 |
-
* @
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
'
|
135 |
-
'
|
136 |
-
'
|
137 |
-
'
|
138 |
-
'
|
139 |
-
'
|
140 |
-
'
|
141 |
-
'
|
142 |
-
'
|
143 |
-
'
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
self::$plugin_data[ '
|
148 |
-
self::$plugin_data[ '
|
149 |
-
self::$plugin_data[ '
|
150 |
-
self::$plugin_data[ '
|
151 |
-
|
152 |
-
|
153 |
-
self::$plugin_data[ '
|
154 |
-
self::$plugin_data[ '
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
self::$plugin_data[ '
|
160 |
-
}
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
self::$plugin_data[ '
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
self::$
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Plugin Name: BackWPup
|
4 |
+
* Plugin URI: https://marketpress.com/product/backwpup-pro/
|
5 |
+
* Description: WordPress Backup Plugin
|
6 |
+
* Author: Inpsyde GmbH
|
7 |
+
* Author URI: http://inpsyde.com
|
8 |
+
* Version: 3.1
|
9 |
+
* Text Domain: backwpup
|
10 |
+
* Domain Path: /languages/
|
11 |
+
* Network: true
|
12 |
+
* License: GPLv3
|
13 |
+
* License URI: http://www.gnu.org/licenses/gpl-3.0
|
14 |
+
* Slug: backwpup
|
15 |
+
*/
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Copyright (C) 2012-2013 Inpsyde GmbH (email: info@inpsyde.com)
|
19 |
+
*
|
20 |
+
* This program is free software; you can redistribute it and/or
|
21 |
+
* modify it under the terms of the GNU General Public License
|
22 |
+
* as published by the Free Software Foundation; either version 2
|
23 |
+
* of the License, or (at your option) any later version.
|
24 |
+
*
|
25 |
+
* This program is distributed in the hope that it will be useful,
|
26 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
27 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
28 |
+
* GNU General Public License for more details.
|
29 |
+
*
|
30 |
+
* You should have received a copy of the GNU General Public License
|
31 |
+
* along with this program; if not, write to the Free Software
|
32 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
33 |
+
*/
|
34 |
+
|
35 |
+
if ( ! class_exists( 'BackWPup' ) ) {
|
36 |
+
|
37 |
+
// Don't activate on anything less than PHP 5.2.4 or WordPress 3.1
|
38 |
+
if ( version_compare( PHP_VERSION, '5.2.6', '<' ) || version_compare( get_bloginfo( 'version' ), '3.4', '<' ) || ! function_exists( 'spl_autoload_register' ) ) {
|
39 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
40 |
+
deactivate_plugins( basename( __FILE__ ) );
|
41 |
+
if ( isset( $_GET['action'] ) && ( $_GET['action'] == 'activate' || $_GET['action'] == 'error_scrape' ) )
|
42 |
+
die( __( 'BackWPup requires PHP version 5.2.6 with spl extension or greater and WordPress 3.4 or greater.', 'backwpup' ) );
|
43 |
+
}
|
44 |
+
|
45 |
+
//Start Plugin
|
46 |
+
if ( function_exists( 'add_filter' ) )
|
47 |
+
add_action( 'plugins_loaded', array( 'BackWPup', 'get_instance' ), 11 );
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Main BackWPup Plugin Class
|
51 |
+
*/
|
52 |
+
final class BackWPup {
|
53 |
+
|
54 |
+
private static $instance = NULL;
|
55 |
+
private static $plugin_data = array();
|
56 |
+
private static $destinations = array();
|
57 |
+
private static $registered_destinations = array();
|
58 |
+
private static $job_types = array();
|
59 |
+
private static $wizards = array();
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Set needed filters and actions and load
|
63 |
+
*/
|
64 |
+
private function __construct() {
|
65 |
+
|
66 |
+
// Nothing else matters if we're not on the main site
|
67 |
+
if ( ! is_main_site() )
|
68 |
+
return;
|
69 |
+
//auto loader
|
70 |
+
spl_autoload_register( array( $this, 'autoloader' ) );
|
71 |
+
//Options
|
72 |
+
new BackWPup_Option();
|
73 |
+
//start upgrade if needed
|
74 |
+
if ( get_site_option( 'backwpup_version' ) != self::get_plugin_data( 'Version' ) )
|
75 |
+
BackWPup_Install::activate();
|
76 |
+
//load pro features
|
77 |
+
if ( class_exists( 'BackWPup_Pro' ) )
|
78 |
+
BackWPup_Pro::get_instance();
|
79 |
+
//WP-Cron
|
80 |
+
if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
|
81 |
+
//early disable caches
|
82 |
+
if ( ! empty( $_GET[ 'backwpup_run' ] ) && class_exists( 'BackWPup_Job' ) )
|
83 |
+
BackWPup_Job::disable_caches();
|
84 |
+
// add normal cron actions
|
85 |
+
add_action( 'backwpup_cron', array( 'BackWPup_Cron', 'run' ) );
|
86 |
+
add_action( 'backwpup_check_cleanup', array( 'BackWPup_Cron', 'check_cleanup' ) );
|
87 |
+
// add action for doing thinks if cron active
|
88 |
+
// must done in int before wp-cron control
|
89 |
+
add_action( 'init', array( 'BackWPup_Cron', 'cron_active' ), 1 );
|
90 |
+
// if in cron the rest must not needed
|
91 |
+
return;
|
92 |
+
}
|
93 |
+
//deactivation hook
|
94 |
+
register_deactivation_hook( __FILE__, array( 'BackWPup_Install', 'deactivate' ) );
|
95 |
+
//Things that must do in plugin init
|
96 |
+
add_action( 'init', array( $this, 'plugin_init' ) );
|
97 |
+
//only in backend
|
98 |
+
if ( is_admin() && class_exists( 'BackWPup_Admin' ) )
|
99 |
+
BackWPup_Admin::get_instance();
|
100 |
+
//work with wp-cli
|
101 |
+
if ( defined( 'WP_CLI' ) && WP_CLI && class_exists( 'WP_CLI' ) && class_exists( 'BackWPup_WP_CLI' ) )
|
102 |
+
WP_CLI::addCommand( 'backwpup', 'BackWPup_WP_CLI' );
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* @static
|
107 |
+
*
|
108 |
+
* @return self
|
109 |
+
*/
|
110 |
+
public static function get_instance() {
|
111 |
+
|
112 |
+
if (NULL === self::$instance) {
|
113 |
+
self::$instance = new self;
|
114 |
+
}
|
115 |
+
return self::$instance;
|
116 |
+
}
|
117 |
+
|
118 |
+
|
119 |
+
private function __clone() {}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* get information about the Plugin
|
123 |
+
*
|
124 |
+
* @param string $name Name of info to get or NULL to get all
|
125 |
+
* @return string|array
|
126 |
+
*/
|
127 |
+
public static function get_plugin_data( $name = NULL ) {
|
128 |
+
|
129 |
+
if ( $name )
|
130 |
+
$name = strtolower( trim( $name ) );
|
131 |
+
|
132 |
+
if ( empty( self::$plugin_data ) ) {
|
133 |
+
self::$plugin_data = get_file_data( __FILE__, array(
|
134 |
+
'name' => 'Plugin Name',
|
135 |
+
'pluginuri' => 'Plugin URI',
|
136 |
+
'version' => 'Version',
|
137 |
+
'description' => 'Description',
|
138 |
+
'author' => 'Author',
|
139 |
+
'authoruri' => 'Author URI',
|
140 |
+
'textdomain' => 'Text Domain',
|
141 |
+
'domainpath' => 'Domain Path',
|
142 |
+
'slug' => 'Slug',
|
143 |
+
'license' => 'License',
|
144 |
+
'licenseuri' => 'License URI'
|
145 |
+
), 'plugin' );
|
146 |
+
//Translate some vars
|
147 |
+
self::$plugin_data[ 'name' ] = trim( self::$plugin_data[ 'name' ] );
|
148 |
+
self::$plugin_data[ 'pluginuri' ] = trim( self::$plugin_data[ 'pluginuri' ] );
|
149 |
+
self::$plugin_data[ 'description' ] = trim( self::$plugin_data[ 'description' ] );
|
150 |
+
self::$plugin_data[ 'author' ] = trim( self::$plugin_data[ 'author' ] );
|
151 |
+
self::$plugin_data[ 'authoruri' ] = trim( self::$plugin_data[ 'authoruri' ] );
|
152 |
+
//set some extra vars
|
153 |
+
self::$plugin_data[ 'basename' ] = plugin_basename( dirname( __FILE__ ) );
|
154 |
+
self::$plugin_data[ 'mainfile' ] = __FILE__ ;
|
155 |
+
self::$plugin_data[ 'plugindir' ] = untrailingslashit( dirname( __FILE__ ) ) ;
|
156 |
+
self::$plugin_data[ 'hash' ] = get_site_option( 'backwpup_cfg_hash' );
|
157 |
+
if ( empty( self::$plugin_data[ 'hash' ] ) || strlen( self::$plugin_data[ 'hash' ] ) < 6 || strlen( self::$plugin_data[ 'hash' ] ) > 12 ) {
|
158 |
+
update_site_option( 'backwpup_cfg_hash', substr( md5( md5( BackWPup::get_plugin_data( "mainfile" ) ) ), 14, 6 ) );
|
159 |
+
self::$plugin_data[ 'hash' ] = get_site_option( 'backwpup_cfg_hash' );
|
160 |
+
}
|
161 |
+
if ( defined( 'WP_TEMP_DIR' ) && is_dir( WP_TEMP_DIR ) ) {
|
162 |
+
self::$plugin_data[ 'temp' ] = trailingslashit( str_replace( '\\', '/', realpath( WP_TEMP_DIR ) ) . '/backwpup-' . self::$plugin_data[ 'hash' ] );
|
163 |
+
} else {
|
164 |
+
$upload_dir = wp_upload_dir();
|
165 |
+
self::$plugin_data[ 'temp' ] = trailingslashit( str_replace( '\\', '/', realpath( $upload_dir[ 'basedir' ] ) ) . '/backwpup-' . self::$plugin_data[ 'hash' ] . '-temp' );
|
166 |
+
}
|
167 |
+
self::$plugin_data[ 'running_file' ] = self::$plugin_data[ 'temp' ] . 'backwpup-working.php';
|
168 |
+
self::$plugin_data[ 'url' ] = plugins_url( '', __FILE__ );
|
169 |
+
//get unmodified WP Versions
|
170 |
+
include ABSPATH . WPINC . '/version.php';
|
171 |
+
/** @var $wp_version string */
|
172 |
+
self::$plugin_data[ 'wp_version' ] = $wp_version;
|
173 |
+
//Build User Agent
|
174 |
+
self::$plugin_data[ 'user-agent' ] = self::$plugin_data[ 'name' ].'/' . self::$plugin_data[ 'version' ] . '; WordPress/' . self::$plugin_data[ 'wp_version' ] . '; ' . home_url();
|
175 |
+
}
|
176 |
+
|
177 |
+
if ( ! empty( $name ) )
|
178 |
+
return self::$plugin_data[ $name ];
|
179 |
+
else
|
180 |
+
return self::$plugin_data;
|
181 |
+
}
|
182 |
+
|
183 |
+
|
184 |
+
/**
|
185 |
+
* include not existing classes automatically
|
186 |
+
*
|
187 |
+
* @param string $class_name Class to load from file
|
188 |
+
*/
|
189 |
+
private function autoloader( $class_name ) {
|
190 |
+
|
191 |
+
$class_name = strtolower( $class_name );
|
192 |
+
if ( strstr( $class_name, 'backwpup_' ) ) {
|
193 |
+
$dir = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR;
|
194 |
+
$class_file_name = 'class-' . str_replace( array( 'backwpup_', '_' ), array( '', '-' ), $class_name ) . '.php';
|
195 |
+
if ( strstr( $class_name, 'backwpup_pro' ) ) {
|
196 |
+
$dir .= 'pro' . DIRECTORY_SEPARATOR;
|
197 |
+
$class_file_name = str_replace( 'pro-','', $class_file_name );
|
198 |
+
}
|
199 |
+
if ( file_exists( $dir . $class_file_name ) )
|
200 |
+
require $dir . $class_file_name;
|
201 |
+
}
|
202 |
+
}
|
203 |
+
|
204 |
+
/**
|
205 |
+
* Plugin init function
|
206 |
+
*
|
207 |
+
* @return void
|
208 |
+
*/
|
209 |
+
public function plugin_init() {
|
210 |
+
|
211 |
+
//Add Admin Bar
|
212 |
+
if ( ! defined( 'DOING_CRON' ) && current_user_can( 'backwpup' ) && current_user_can( 'backwpup' ) && is_admin_bar_showing() && get_site_option( 'backwpup_cfg_showadminbar' ) )
|
213 |
+
BackWPup_Adminbar::get_instance();
|
214 |
+
}
|
215 |
+
|
216 |
+
/**
|
217 |
+
* Get a array of instances for Backup Destination's
|
218 |
+
*
|
219 |
+
* @param $key string Key of Destination where get class instance from
|
220 |
+
* @return array BackWPup_Destinations
|
221 |
+
*/
|
222 |
+
public static function get_destination( $key ) {
|
223 |
+
|
224 |
+
$key = strtoupper( $key );
|
225 |
+
|
226 |
+
if ( isset( self::$destinations[ $key ] ) && is_object( self::$destinations[ $key ] ) )
|
227 |
+
return self::$destinations[ $key ];
|
228 |
+
|
229 |
+
$reg_dests = self::get_registered_destinations();
|
230 |
+
if ( ! empty( $reg_dests[ $key ][ 'class' ] ) ) {
|
231 |
+
self::$destinations[ $key ] = new $reg_dests[ $key ][ 'class' ];
|
232 |
+
} else {
|
233 |
+
return NULL;
|
234 |
+
}
|
235 |
+
|
236 |
+
return self::$destinations[ $key ];
|
237 |
+
}
|
238 |
+
|
239 |
+
/**
|
240 |
+
* Get a array of registered Destination's for Backups
|
241 |
+
*
|
242 |
+
* @return array BackWPup_Destinations
|
243 |
+
*/
|
244 |
+
public static function get_registered_destinations() {
|
245 |
+
|
246 |
+
//only run it one time
|
247 |
+
if ( ! empty( self::$registered_destinations ) )
|
248 |
+
return self::$registered_destinations;
|
249 |
+
|
250 |
+
//add BackWPup Destinations
|
251 |
+
// to folder
|
252 |
+
self::$registered_destinations[ 'FOLDER' ] = array(
|
253 |
+
'class' => 'BackWPup_Destination_Folder',
|
254 |
+
'info' => array(
|
255 |
+
'ID' => 'FOLDER',
|
256 |
+
'name' => __( 'Folder', 'backwpup' ),
|
257 |
+
'description' => __( 'Backup to Folder', 'backwpup' ),
|
258 |
+
),
|
259 |
+
'can_sync' => FALSE,
|
260 |
+
'needed' => array(
|
261 |
+
'php_version' => '',
|
262 |
+
'functions' => array(),
|
263 |
+
'classes' => array()
|
264 |
+
)
|
265 |
+
);
|
266 |
+
// backup with mail
|
267 |
+
self::$registered_destinations[ 'EMAIL' ] = array(
|
268 |
+
'class' => 'BackWPup_Destination_Email',
|
269 |
+
'info' => array(
|
270 |
+
'ID' => 'EMAIL',
|
271 |
+
'name' => __( 'Email', 'backwpup' ),
|
272 |
+
'description' => __( 'Backup sent via email', 'backwpup' ),
|
273 |
+
),
|
274 |
+
'can_sync' => FALSE,
|
275 |
+
'needed' => array(
|
276 |
+
'php_version' => '',
|
277 |
+
'functions' => array(),
|
278 |
+
'classes' => array()
|
279 |
+
)
|
280 |
+
);
|
281 |
+
// backup to ftp
|
282 |
+
self::$registered_destinations[ 'FTP' ] = array(
|
283 |
+
'class' => 'BackWPup_Destination_Ftp',
|
284 |
+
'info' => array(
|
285 |
+
'ID' => 'FTP',
|
286 |
+
'name' => __( 'FTP', 'backwpup' ),
|
287 |
+
'description' => __( 'Backup to FTP', 'backwpup' ),
|
288 |
+
),
|
289 |
+
'can_sync' => FALSE,
|
290 |
+
'needed' => array(
|
291 |
+
'mphp_version' => '',
|
292 |
+
'functions' => array( 'ftp_login' ),
|
293 |
+
'classes' => array()
|
294 |
+
)
|
295 |
+
);
|
296 |
+
// backup to dropbox
|
297 |
+
self::$registered_destinations[ 'DROPBOX' ] = array(
|
298 |
+
'class' => 'BackWPup_Destination_Dropbox',
|
299 |
+
'info' => array(
|
300 |
+
'ID' => 'DROPBOX',
|
301 |
+
'name' => __( 'Dropbox', 'backwpup' ),
|
302 |
+
'description' => __( 'Backup to Dropbox', 'backwpup' ),
|
303 |
+
),
|
304 |
+
'can_sync' => FALSE,
|
305 |
+
'needed' => array(
|
306 |
+
'php_version' => '',
|
307 |
+
'functions' => array( 'curl_exec' ),
|
308 |
+
'classes' => array()
|
309 |
+
)
|
310 |
+
);
|
311 |
+
// Backup to S3
|
312 |
+
if ( version_compare( PHP_VERSION, '5.3.3', '>=' ) )
|
313 |
+
self::$registered_destinations[ 'S3' ] = array(
|
314 |
+
'class' => 'BackWPup_Destination_S3',
|
315 |
+
'info' => array(
|
316 |
+
'ID' => 'S3',
|
317 |
+
'name' => __( 'S3 Service', 'backwpup' ),
|
318 |
+
'description' => __( 'Backup to an S3 Service', 'backwpup' ),
|
319 |
+
),
|
320 |
+
'can_sync' => FALSE,
|
321 |
+
'needed' => array(
|
322 |
+
'php_version' => '5.3.3',
|
323 |
+
'functions' => array( 'curl_exec' ),
|
324 |
+
'classes' => array()
|
325 |
+
)
|
326 |
+
);
|
327 |
+
else
|
328 |
+
self::$registered_destinations[ 'S3' ] = array(
|
329 |
+
'class' => 'BackWPup_Destination_S3_V1',
|
330 |
+
'info' => array(
|
331 |
+
'ID' => 'S3',
|
332 |
+
'name' => __( 'S3 Service', 'backwpup' ),
|
333 |
+
'description' => __( 'Backup to an S3 Service v1', 'backwpup' ),
|
334 |
+
),
|
335 |
+
'can_sync' => FALSE,
|
336 |
+
'needed' => array(
|
337 |
+
'php_version' => '',
|
338 |
+
'functions' => array( 'curl_exec' ),
|
339 |
+
'classes' => array()
|
340 |
+
)
|
341 |
+
);
|
342 |
+
|
343 |
+
// backup to MS Azure
|
344 |
+
self::$registered_destinations[ 'MSAZURE' ] = array(
|
345 |
+
'class' => 'BackWPup_Destination_MSAzure',
|
346 |
+
'info' => array(
|
347 |
+
'ID' => 'MSAZURE',
|
348 |
+
'name' => __( 'MS Azure', 'backwpup' ),
|
349 |
+
'description' => __( 'Backup to Microsoft Azure (Blob)', 'backwpup' ),
|
350 |
+
),
|
351 |
+
'can_sync' => FALSE,
|
352 |
+
'needed' => array(
|
353 |
+
'php_version' => '5.3.2',
|
354 |
+
'functions' => array(),
|
355 |
+
'classes' => array()
|
356 |
+
)
|
357 |
+
);
|
358 |
+
// backup to Rackspace Cloud
|
359 |
+
self::$registered_destinations[ 'RSC' ] = array(
|
360 |
+
'class' => 'BackWPup_Destination_RSC',
|
361 |
+
'info' => array(
|
362 |
+
'ID' => 'RSC',
|
363 |
+
'name' => __( 'RSC', 'backwpup' ),
|
364 |
+
'description' => __( 'Backup to Rackspace Cloud Files', 'backwpup' ),
|
365 |
+
),
|
366 |
+
'can_sync' => FALSE,
|
367 |
+
'needed' => array(
|
368 |
+
'php_version' => '5.3.3',
|
369 |
+
'functions' => array( 'curl_exec' ),
|
370 |
+
'classes' => array()
|
371 |
+
)
|
372 |
+
);
|
373 |
+
// backup to Sugarsync
|
374 |
+
self::$registered_destinations[ 'SUGARSYNC' ] = array(
|
375 |
+
'class' => 'BackWPup_Destination_SugarSync',
|
376 |
+
'info' => array(
|
377 |
+
'ID' => 'SUGARSYNC',
|
378 |
+
'name' => __( 'SugarSync', 'backwpup' ),
|
379 |
+
'description' => __( 'Backup to SugarSync', 'backwpup' ),
|
380 |
+
),
|
381 |
+
'can_sync' => FALSE,
|
382 |
+
'needed' => array(
|
383 |
+
'php_version' => '',
|
384 |
+
'functions' => array( 'curl_exec' ),
|
385 |
+
'classes' => array()
|
386 |
+
)
|
387 |
+
);
|
388 |
+
|
389 |
+
//Hook for adding Destinations like above
|
390 |
+
self::$registered_destinations = apply_filters( 'backwpup_register_destination', self::$registered_destinations );
|
391 |
+
|
392 |
+
//check BackWPup Destinations
|
393 |
+
foreach ( self::$registered_destinations as $dest_key => $dest ) {
|
394 |
+
self::$registered_destinations[ $dest_key ][ 'error'] = '';
|
395 |
+
// check PHP Version
|
396 |
+
if ( ! empty( $dest[ 'needed' ][ 'php_version' ] ) && version_compare( PHP_VERSION, $dest[ 'needed' ][ 'php_version' ], '<' ) ) {
|
397 |
+
self::$registered_destinations[ $dest_key ][ 'error' ] .= sprintf( __( 'PHP Version %1$s is to low, you need Version %2$s or above.', 'backwpup' ), PHP_VERSION, $dest[ 'needed' ][ 'php_version' ] ) . ' ';
|
398 |
+
self::$registered_destinations[ $dest_key ][ 'class' ] = NULL;
|
399 |
+
}
|
400 |
+
//check functions exists
|
401 |
+
if ( ! empty( $dest[ 'needed' ][ 'functions' ] ) ) {
|
402 |
+
foreach ( $dest[ 'needed' ][ 'functions' ] as $function_need ) {
|
403 |
+
if ( ! function_exists( $function_need ) ) {
|
404 |
+
self::$registered_destinations[ $dest_key ][ 'error' ] .= sprintf( __( 'Missing function "%s".', 'backwpup' ), $function_need ) . ' ';
|
405 |
+
self::$registered_destinations[ $dest_key ][ 'class' ] = NULL;
|
406 |
+
}
|
407 |
+
}
|
408 |
+
}
|
409 |
+
//check classes exists
|
410 |
+
if ( ! empty( $dest[ 'needed' ][ 'classes' ] ) ) {
|
411 |
+
foreach ( $dest[ 'needed' ][ 'classes' ] as $class_need ) {
|
412 |
+
if ( ! class_exists( $class_need ) ) {
|
413 |
+
self::$registered_destinations[ $dest_key ][ 'error' ] .= sprintf( __( 'Missing class "%s".', 'backwpup' ), $class_need ) . ' ';
|
414 |
+
self::$registered_destinations[ $dest_key ][ 'class' ] = NULL;
|
415 |
+
}
|
416 |
+
}
|
417 |
+
}
|
418 |
+
}
|
419 |
+
|
420 |
+
return self::$registered_destinations;
|
421 |
+
}
|
422 |
+
|
423 |
+
|
424 |
+
/**
|
425 |
+
* Gets a array of instances from Job types
|
426 |
+
*
|
427 |
+
* @return array BackWPup_JobTypes
|
428 |
+
*/
|
429 |
+
public static function get_job_types() {
|
430 |
+
|
431 |
+
if ( !empty( self::$job_types ) )
|
432 |
+
return self::$job_types;
|
433 |
+
|
434 |
+
self::$job_types[ 'DBDUMP' ] = new BackWPup_JobType_DBDump;
|
435 |
+
self::$job_types[ 'FILE' ] = new BackWPup_JobType_File;
|
436 |
+
self::$job_types[ 'WPEXP' ] = new BackWPup_JobType_WPEXP;
|
437 |
+
self::$job_types[ 'WPPLUGIN' ] = new BackWPup_JobType_WPPlugin;
|
438 |
+
self::$job_types[ 'DBCHECK' ] = new BackWPup_JobType_DBCheck;
|
439 |
+
|
440 |
+
self::$job_types = apply_filters( 'backwpup_job_types', self::$job_types );
|
441 |
+
|
442 |
+
//remove types can't load
|
443 |
+
foreach ( self::$job_types as $key => $job_type ) {
|
444 |
+
if ( empty( $job_type ) || ! is_object( $job_type ) )
|
445 |
+
unset( self::$job_types[ $key ] );
|
446 |
+
}
|
447 |
+
|
448 |
+
return self::$job_types;
|
449 |
+
}
|
450 |
+
|
451 |
+
|
452 |
+
/**
|
453 |
+
* Gets a array of instances from Wizards
|
454 |
+
*
|
455 |
+
* @return array BackWPup_Pro_Wizards
|
456 |
+
*/
|
457 |
+
public static function get_wizards() {
|
458 |
+
|
459 |
+
if ( !empty( self::$wizards ) )
|
460 |
+
return self::$wizards;
|
461 |
+
|
462 |
+
self::$wizards = apply_filters( 'backwpup_pro_wizards', self::$wizards );
|
463 |
+
|
464 |
+
//remove wizards can't load
|
465 |
+
foreach ( self::$wizards as $key => $wizard ) {
|
466 |
+
if ( empty( $wizard ) || ! is_object( $wizard ) )
|
467 |
+
unset( self::$wizards[ $key ] );
|
468 |
+
}
|
469 |
+
|
470 |
+
return self::$wizards;
|
471 |
+
|
472 |
+
}
|
473 |
+
|
474 |
+
}
|
475 |
+
|
476 |
+
}
|
css/admin.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
#toplevel_page_backwpup .wp-menu-image{background-size:16px 32px;background:url(../images/BackWPup16.png) no-repeat bottom center;width:16px!important;height:16px!important;margin:5px 5px 0 7px;-khtml-opacity:.70;-moz-opacity:.70;-ms-filter:"alpha(opacity=70)";filter:alpha(opacity=70);filter:alpha(opacity=0.7);opacity:.70}#toplevel_page_backwpup:hover .wp-menu-image{background-size:16px 32px;background:url(../images/BackWPup16.png) no-repeat bottom center;width:16px!important;height:16px!important;margin:5px 5px 0 7px;-khtml-opacity:.5;-moz-opacity:.5;-ms-filter:"alpha(opacity=5)";filter:alpha(opacity=5);filter:alpha(opacity=5.0);opacity:.5}li.wp-has-current-submenu#toplevel_page_backwpup .wp-menu-image{background-size:16px 32px;background:url(../images/BackWPup16.png) no-repeat top center;width:16px!important;height:16px!important;margin:5px 5px 0 7px}#toplevel_page_backwpup .wp-menu-image img{display:none}#wp-admin-bar-backwpup.menupop>.ab-item .ab-icon,#wp-admin-bar-backwpup.menupop>a>span .ab-icon,#wp-admin-bar-backwpup.menupop.hover>.ab-item .ab-icon,#wp-admin-bar-backwpup.menupop.hover>a>span .ab-icon:hover{background-size:cover}.inside.backwpuppro img{width:100%;height:auto}.inside.backwpuppro{text-align:center;font-weight:bold}@media only screen and (-webkit-min-device-pixel-ratio:2){#toplevel_page_backwpup .wp-menu-image{background-size:16px 32px;background:url(../images/BackWPup16_2x.png) no-repeat bottom center;width:16px!important;height:16px!important;margin:5px 5px 0 7px}#toplevel_page_backwpup .wp-menu-image{background-size:16px 32px;background:url(../images/BackWPup16_2x.png) no-repeat bottom center;width:16px!important;height:16px!important;margin:5px 5px 0 7px;-khtml-opacity:.70;-moz-opacity:.70;-ms-filter:"alpha(opacity=70)";filter:alpha(opacity=70);filter:alpha(opacity=0.7);opacity:.70}#toplevel_page_backwpup:hover .wp-menu-image{background-size:16px 32px;background:url(../images/BackWPup16_2x.png) no-repeat bottom center;width:16px!important;height:16px!important;margin:5px 5px 0 7px;-khtml-opacity:.5;-moz-opacity:.5;-ms-filter:"alpha(opacity=5)";filter:alpha(opacity=5);filter:alpha(opacity=5.0);opacity:.5}li.wp-has-current-submenu#toplevel_page_backwpup .wp-menu-image{background-size:16px 32px;background:url(../images/BackWPup16_2x.png) no-repeat top center;width:16px!important;height:16px!important;margin:5px 5px 0 7px}}
|
|
css/admin.dev.css
DELETED
@@ -1,87 +0,0 @@
|
|
1 |
-
#toplevel_page_backwpup .wp-menu-image {
|
2 |
-
background-size: 16px 32px;
|
3 |
-
background: url(../images/BackWPup16.png) no-repeat bottom center;
|
4 |
-
width:16px !important;
|
5 |
-
height:16px !important;
|
6 |
-
margin:5px 5px 0 7px;
|
7 |
-
-khtml-opacity:.70;
|
8 |
-
-moz-opacity:.70;
|
9 |
-
-ms-filter:"alpha(opacity=70)";
|
10 |
-
filter:alpha(opacity=70);
|
11 |
-
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.7);
|
12 |
-
opacity:.70;
|
13 |
-
}
|
14 |
-
#toplevel_page_backwpup:hover .wp-menu-image {
|
15 |
-
background-size: 16px 32px;
|
16 |
-
background: url(../images/BackWPup16.png) no-repeat bottom center;
|
17 |
-
width:16px !important;
|
18 |
-
height:16px !important;
|
19 |
-
margin:5px 5px 0px 7px;
|
20 |
-
-khtml-opacity:.5;
|
21 |
-
-moz-opacity:.5;
|
22 |
-
-ms-filter:"alpha(opacity=5)";
|
23 |
-
filter:alpha(opacity=5);
|
24 |
-
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=5.0);
|
25 |
-
opacity:.5;
|
26 |
-
}
|
27 |
-
li.wp-has-current-submenu#toplevel_page_backwpup .wp-menu-image {
|
28 |
-
background-size: 16px 32px;
|
29 |
-
background: url(../images/BackWPup16.png) no-repeat top center;
|
30 |
-
width:16px !important;
|
31 |
-
height:16px !important;
|
32 |
-
margin:5px 5px 0px 7px;
|
33 |
-
}
|
34 |
-
#toplevel_page_backwpup .wp-menu-image img {
|
35 |
-
display: none;
|
36 |
-
}
|
37 |
-
|
38 |
-
#wp-admin-bar-backwpup.menupop>.ab-item .ab-icon, #wp-admin-bar-backwpup.menupop>a>span .ab-icon,
|
39 |
-
#wp-admin-bar-backwpup.menupop.hover>.ab-item .ab-icon, #wp-admin-bar-backwpup.menupop.hover>a>span .ab-icon:hover {
|
40 |
-
background-size: cover;
|
41 |
-
}
|
42 |
-
|
43 |
-
.inside.backwpuppro img { width:100%; height:auto; }
|
44 |
-
.inside.backwpuppro { text-align: center; font-weight:bold; }
|
45 |
-
|
46 |
-
@media only screen and (-webkit-min-device-pixel-ratio: 2) {
|
47 |
-
#toplevel_page_backwpup .wp-menu-image {
|
48 |
-
background-size: 16px 32px;
|
49 |
-
background: url(../images/BackWPup16_2x.png) no-repeat bottom center;
|
50 |
-
width:16px !important;
|
51 |
-
height:16px !important;
|
52 |
-
margin:5px 5px 0px 7px;
|
53 |
-
}
|
54 |
-
#toplevel_page_backwpup .wp-menu-image {
|
55 |
-
background-size: 16px 32px;
|
56 |
-
background: url(../images/BackWPup16_2x.png) no-repeat bottom center;
|
57 |
-
width:16px !important;
|
58 |
-
height:16px !important;
|
59 |
-
margin:5px 5px 0px 7px;
|
60 |
-
-khtml-opacity:.70;
|
61 |
-
-moz-opacity:.70;
|
62 |
-
-ms-filter:"alpha(opacity=70)";
|
63 |
-
filter:alpha(opacity=70);
|
64 |
-
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.7);
|
65 |
-
opacity:.70;
|
66 |
-
}
|
67 |
-
#toplevel_page_backwpup:hover .wp-menu-image {
|
68 |
-
background-size: 16px 32px;
|
69 |
-
background: url(../images/BackWPup16_2x.png) no-repeat bottom center;
|
70 |
-
width:16px !important;
|
71 |
-
height:16px !important;
|
72 |
-
margin:5px 5px 0px 7px;
|
73 |
-
-khtml-opacity:.5;
|
74 |
-
-moz-opacity:.5;
|
75 |
-
-ms-filter:"alpha(opacity=5)";
|
76 |
-
filter:alpha(opacity=5);
|
77 |
-
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=5.0);
|
78 |
-
opacity:.5;
|
79 |
-
}
|
80 |
-
li.wp-has-current-submenu#toplevel_page_backwpup .wp-menu-image {
|
81 |
-
background-size: 16px 32px;
|
82 |
-
background: url(../images/BackWPup16_2x.png) no-repeat top center;
|
83 |
-
width:16px !important;
|
84 |
-
height:16px !important;
|
85 |
-
margin:5px 5px 0px 7px;
|
86 |
-
}
|
87 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css/adminbar.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
#wp-admin-bar-backwpup.menupop>.ab-item .ab-icon,#wp-admin-bar-backwpup.menupop>a>span .ab-icon{position:relative;float:left;width:20px;height:20px;margin-top:3px;margin-right:5px;background:url(../images/BackWPup20.png) no-repeat top center}#wp-admin-bar-backwpup.menupop.hover>.ab-item .ab-icon,#wp-admin-bar-backwpup.menupop.hover>a>span .ab-icon:hover{background:url(../images/BackWPup20.png) no-repeat bottom center}@media only screen and (-webkit-min-device-pixel-ratio:2){#wp-admin-bar-backwpup.menupop>.ab-item .ab-icon,#wp-admin-bar-backwpup.menupop>a>span .ab-icon{background-size:20px 40px;background:url(../images/BackWPup20_2x.png) no-repeat top center;position:relative}#wp-admin-bar-backwpup.menupop.hover>.ab-item .ab-icon,#wp-admin-bar-backwpup.menupop.hover>a>span .ab-icon:hover{background:url(../images/BackWPup20_2x.png) no-repeat bottom center}}
|
|
css/adminbar.dev.css
DELETED
@@ -1,28 +0,0 @@
|
|
1 |
-
#wp-admin-bar-backwpup.menupop > .ab-item .ab-icon,
|
2 |
-
#wp-admin-bar-backwpup.menupop > a > span .ab-icon {
|
3 |
-
position: relative;
|
4 |
-
/* for WP lower 3.3 */
|
5 |
-
float: left;
|
6 |
-
width: 20px;
|
7 |
-
height: 20px;
|
8 |
-
margin-top: 3px;
|
9 |
-
margin-right:5px;
|
10 |
-
background: url(../images/BackWPup20.png) no-repeat top center;
|
11 |
-
}
|
12 |
-
#wp-admin-bar-backwpup.menupop.hover > .ab-item .ab-icon,
|
13 |
-
#wp-admin-bar-backwpup.menupop.hover > a > span .ab-icon:hover {
|
14 |
-
background: url(../images/BackWPup20.png) no-repeat bottom center;
|
15 |
-
}
|
16 |
-
|
17 |
-
@media only screen and (-webkit-min-device-pixel-ratio: 2) {
|
18 |
-
#wp-admin-bar-backwpup.menupop > .ab-item .ab-icon,
|
19 |
-
#wp-admin-bar-backwpup.menupop > a > span .ab-icon {
|
20 |
-
background-size: 20px 40px;
|
21 |
-
background: url(../images/BackWPup20_2x.png) no-repeat top center;
|
22 |
-
position: relative;
|
23 |
-
}
|
24 |
-
#wp-admin-bar-backwpup.menupop.hover > .ab-item .ab-icon,
|
25 |
-
#wp-admin-bar-backwpup.menupop.hover > a > span .ab-icon:hover {
|
26 |
-
background: url(../images/BackWPup20_2x.png) no-repeat bottom center;
|
27 |
-
}
|
28 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css/general.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
#icon-backwpup{background:url('../images/BackWPup32.png') no-repeat}@media only screen and (-webkit-min-device-pixel-ratio:2){#icon-backwpup{background:url('../images/BackWPup64.png') no-repeat;-webkit-background-size:32px 32px;background-size:32px 32px}}img.help_tip{padding:0;margin:-4px 0 0 5px;vertical-align:middle;cursor:help;line-height:1}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:99999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_left{padding-right:5px}#tiptip_content{font-size:11px;color:#fff;text-shadow:0 0 2px #000;padding:4px 8px;border:1px solid rgba(255,255,255,0.25);background-color:#191919;background-color:rgba(25,25,25,0.92);background-image:-webkit-gradient(linear,0% 0,0% 100%,from(transparent),to(#000));border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;box-shadow:0 0 3px #555;-webkit-box-shadow:0 0 3px #555;-moz-box-shadow:0 0 3px #555}#tiptip_content code{background:#1d94cf;color:#fff;text-shadow:none;padding:2px;font-size:12px}#tiptip_content a{color:#0CF}#tiptip_content a:hover{color:#F93}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border:6px solid transparent;height:0;width:0}#tiptip_holder.tip_top #tiptip_arrow{border-top-color:#fff;border-top-color:rgba(255,255,255,0.35)}#tiptip_holder.tip_bottom #tiptip_arrow{border-bottom-color:#fff;border-bottom-color:rgba(255,255,255,0.35)}#tiptip_holder.tip_right #tiptip_arrow{border-right-color:#fff;border-right-color:rgba(255,255,255,0.35)}#tiptip_holder.tip_left #tiptip_arrow{border-left-color:#fff;border-left-color:rgba(255,255,255,0.35)}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#191919;border-top-color:rgba(25,25,25,0.92)}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#191919;border-bottom-color:rgba(25,25,25,0.92)}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#191919;border-right-color:rgba(25,25,25,0.92)}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#191919;border-left-color:rgba(25,25,25,0.92)}@media screen and (-webkit-min-device-pixel-ratio:0){#tiptip_content{padding:4px 8px 5px 8px;background-color:rgba(45,45,45,0.88)}#tiptip_holder.tip_bottom #tiptip_arrow_inner{border-bottom-color:rgba(45,45,45,0.88)}#tiptip_holder.tip_top #tiptip_arrow_inner{border-top-color:rgba(20,20,20,0.92)}}.backwpup-welcome{font-family:sans-serif,"Arial";font-size:14px;position:relative}.backwpup-welcome p{line-height:28px;font-size:16px}.backwpup-welcome h3{font-family:sans-serif,"Arial";font-size:44px;font-weight:normal;color:#333;line-height:44px;margin:20px 0}.wizardbox{float:left;width:200px;margin:25px 25px 25px 0;padding:15px;height:200px;font-family:sans-serif,"Arial";font-size:14px;line-height:22px;position:relative;color:#fff;background:#1d94cf url(../images/hgbox.png) no-repeat right bottom}.wizardbox:hover{background-color:#0f79ae}.wizardbox input.button-primary-bwp{float:left;padding:5px 10px;font-size:14px;font-family:sans-serif,"Arial";text-decoration:none;background-color:#38b0eb;color:#fff;border:0;cursor:pointer}.wizardbox input.button-primary-bwp:hover{background-color:#064565;cursor:pointer}.wizardbox .wizardbox_name{font-size:22px;font-family:sans-serif,"Arial";margin-bottom:30px}.wizardbox .wizardbox_start{position:absolute;bottom:10px;left:10px}.wizardbox select{width:200px}.inpsyde{width:79px;height:119px;background:url(../images/inpsyde.png) no-repeat;position:absolute;top:0;right:10px;z-index:1}.inpsyde a{float:left;font-size:14px;color:#fff;text-decoration:none;padding:65px 15px 15px 15px;text-align:center}.mp_logo{background:url(../images/mp_logo_small.png) no-repeat;margin-right:15px!important;height:25px;width:145px;display:inline-block;text-indent:9999em}#footer-left span{margin-right:15px!important}#documentation_content p{font-size:14px;line-height:20px;color:#333}#documentation_content h3{padding:7px 0;font-size:22px}#documentation_content h4{padding:7px 0;font-size:18px}#documentation_content img.size-full{border:10px #f6f6f6 solid}
|
|
css/general.dev.css
DELETED
@@ -1,255 +0,0 @@
|
|
1 |
-
#icon-backwpup {
|
2 |
-
background: url('../images/BackWPup32.png') no-repeat;
|
3 |
-
}
|
4 |
-
|
5 |
-
@media only screen and (-webkit-min-device-pixel-ratio: 2) {
|
6 |
-
#icon-backwpup {
|
7 |
-
background: url('../images/BackWPup64.png') no-repeat;
|
8 |
-
-webkit-background-size: 32px 32px;
|
9 |
-
background-size: 32px 32px;
|
10 |
-
}
|
11 |
-
}
|
12 |
-
|
13 |
-
img.help_tip {
|
14 |
-
padding: 0;
|
15 |
-
margin: -4px 0 0 5px;
|
16 |
-
vertical-align: middle;
|
17 |
-
cursor: help;
|
18 |
-
line-height: 1;
|
19 |
-
}
|
20 |
-
|
21 |
-
/* TipTip CSS - Version 1.3 */
|
22 |
-
|
23 |
-
#tiptip_holder {
|
24 |
-
display: none;
|
25 |
-
position: absolute;
|
26 |
-
top: 0;
|
27 |
-
left: 0;
|
28 |
-
z-index: 99999;
|
29 |
-
}
|
30 |
-
|
31 |
-
#tiptip_holder.tip_top {
|
32 |
-
padding-bottom: 5px;
|
33 |
-
}
|
34 |
-
|
35 |
-
#tiptip_holder.tip_bottom {
|
36 |
-
padding-top: 5px;
|
37 |
-
}
|
38 |
-
|
39 |
-
#tiptip_holder.tip_right {
|
40 |
-
padding-left: 5px;
|
41 |
-
}
|
42 |
-
|
43 |
-
#tiptip_holder.tip_left {
|
44 |
-
padding-right: 5px;
|
45 |
-
}
|
46 |
-
|
47 |
-
#tiptip_content {
|
48 |
-
font-size: 11px;
|
49 |
-
color: #fff;
|
50 |
-
text-shadow: 0 0 2px #000;
|
51 |
-
padding: 4px 8px;
|
52 |
-
border: 1px solid rgba(255, 255, 255, 0.25);
|
53 |
-
background-color: rgb(25, 25, 25);
|
54 |
-
background-color: rgba(25, 25, 25, 0.92);
|
55 |
-
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(transparent), to(#000));
|
56 |
-
border-radius: 3px;
|
57 |
-
-webkit-border-radius: 3px;
|
58 |
-
-moz-border-radius: 3px;
|
59 |
-
box-shadow: 0 0 3px #555;
|
60 |
-
-webkit-box-shadow: 0 0 3px #555;
|
61 |
-
-moz-box-shadow: 0 0 3px #555;
|
62 |
-
}
|
63 |
-
#tiptip_content code {
|
64 |
-
background:#1d94cf;
|
65 |
-
color:#fff;
|
66 |
-
text-shadow:none;
|
67 |
-
padding:2px;
|
68 |
-
font-size:12px;
|
69 |
-
}
|
70 |
-
#tiptip_content a{
|
71 |
-
color: #0CF;
|
72 |
-
}
|
73 |
-
#tiptip_content a:hover{
|
74 |
-
color: #F93;
|
75 |
-
}
|
76 |
-
#tiptip_arrow, #tiptip_arrow_inner {
|
77 |
-
position: absolute;
|
78 |
-
border: 6px solid transparent;
|
79 |
-
height: 0;
|
80 |
-
width: 0;
|
81 |
-
}
|
82 |
-
|
83 |
-
#tiptip_holder.tip_top #tiptip_arrow {
|
84 |
-
border-top-color: #fff;
|
85 |
-
border-top-color: rgba(255, 255, 255, 0.35);
|
86 |
-
}
|
87 |
-
|
88 |
-
#tiptip_holder.tip_bottom #tiptip_arrow {
|
89 |
-
border-bottom-color: #fff;
|
90 |
-
border-bottom-color: rgba(255, 255, 255, 0.35);
|
91 |
-
}
|
92 |
-
|
93 |
-
#tiptip_holder.tip_right #tiptip_arrow {
|
94 |
-
border-right-color: #fff;
|
95 |
-
border-right-color: rgba(255, 255, 255, 0.35);
|
96 |
-
}
|
97 |
-
|
98 |
-
#tiptip_holder.tip_left #tiptip_arrow {
|
99 |
-
border-left-color: #fff;
|
100 |
-
border-left-color: rgba(255, 255, 255, 0.35);
|
101 |
-
}
|
102 |
-
|
103 |
-
#tiptip_holder.tip_top #tiptip_arrow_inner {
|
104 |
-
margin-top: -7px;
|
105 |
-
margin-left: -6px;
|
106 |
-
border-top-color: rgb(25, 25, 25);
|
107 |
-
border-top-color: rgba(25, 25, 25, 0.92);
|
108 |
-
}
|
109 |
-
|
110 |
-
#tiptip_holder.tip_bottom #tiptip_arrow_inner {
|
111 |
-
margin-top: -5px;
|
112 |
-
margin-left: -6px;
|
113 |
-
border-bottom-color: rgb(25, 25, 25);
|
114 |
-
border-bottom-color: rgba(25, 25, 25, 0.92);
|
115 |
-
}
|
116 |
-
|
117 |
-
#tiptip_holder.tip_right #tiptip_arrow_inner {
|
118 |
-
margin-top: -6px;
|
119 |
-
margin-left: -5px;
|
120 |
-
border-right-color: rgb(25, 25, 25);
|
121 |
-
border-right-color: rgba(25, 25, 25, 0.92);
|
122 |
-
}
|
123 |
-
|
124 |
-
#tiptip_holder.tip_left #tiptip_arrow_inner {
|
125 |
-
margin-top: -6px;
|
126 |
-
margin-left: -7px;
|
127 |
-
border-left-color: rgb(25, 25, 25);
|
128 |
-
border-left-color: rgba(25, 25, 25, 0.92);
|
129 |
-
}
|
130 |
-
|
131 |
-
/* Webkit Hacks */
|
132 |
-
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
133 |
-
#tiptip_content {
|
134 |
-
padding: 4px 8px 5px 8px;
|
135 |
-
background-color: rgba(45, 45, 45, 0.88);
|
136 |
-
}
|
137 |
-
|
138 |
-
#tiptip_holder.tip_bottom #tiptip_arrow_inner {
|
139 |
-
border-bottom-color: rgba(45, 45, 45, 0.88);
|
140 |
-
}
|
141 |
-
|
142 |
-
#tiptip_holder.tip_top #tiptip_arrow_inner {
|
143 |
-
border-top-color: rgba(20, 20, 20, 0.92);
|
144 |
-
}
|
145 |
-
}
|
146 |
-
/* Dashboard Design */
|
147 |
-
.backwpup-welcome {
|
148 |
-
font-family: sans-serif,"Arial";
|
149 |
-
font-size:14px;
|
150 |
-
position:relative;
|
151 |
-
}
|
152 |
-
.backwpup-welcome p{
|
153 |
-
line-height:28px;
|
154 |
-
font-size:16px;
|
155 |
-
}
|
156 |
-
.backwpup-welcome h3{
|
157 |
-
font-family: sans-serif,"Arial";
|
158 |
-
font-size:44px;
|
159 |
-
font-weight:normal;
|
160 |
-
color:#333;
|
161 |
-
line-height:44px;
|
162 |
-
margin:20px 0;
|
163 |
-
}
|
164 |
-
.wizardbox {
|
165 |
-
float: left;
|
166 |
-
width: 200px;
|
167 |
-
margin:25px 25px 25px 0px;
|
168 |
-
padding: 15px;
|
169 |
-
height: 200px;
|
170 |
-
font-family: sans-serif,"Arial";
|
171 |
-
font-size:14px;
|
172 |
-
line-height:22px;
|
173 |
-
position:relative;
|
174 |
-
color:#fff;
|
175 |
-
background: #1d94cf url(../images/hgbox.png) no-repeat right bottom;
|
176 |
-
}
|
177 |
-
.wizardbox:hover {
|
178 |
-
background-color: #0f79ae;
|
179 |
-
}
|
180 |
-
.wizardbox input.button-primary-bwp {
|
181 |
-
float:left;
|
182 |
-
padding:5px 10px;
|
183 |
-
font-size:14px;
|
184 |
-
font-family: sans-serif,"Arial";
|
185 |
-
text-decoration:none;
|
186 |
-
background-color:#38b0eb;
|
187 |
-
color:#fff;
|
188 |
-
border:none;
|
189 |
-
cursor:pointer;
|
190 |
-
}
|
191 |
-
.wizardbox input.button-primary-bwp:hover {
|
192 |
-
background-color:#064565;
|
193 |
-
cursor:pointer;
|
194 |
-
}
|
195 |
-
.wizardbox .wizardbox_name {
|
196 |
-
font-size:22px;
|
197 |
-
font-family: sans-serif,"Arial";
|
198 |
-
margin-bottom:30px;
|
199 |
-
}
|
200 |
-
.wizardbox .wizardbox_start {
|
201 |
-
position:absolute;
|
202 |
-
bottom:10px;
|
203 |
-
left:10px;
|
204 |
-
}
|
205 |
-
.wizardbox select{
|
206 |
-
width:200px;
|
207 |
-
}
|
208 |
-
.inpsyde {
|
209 |
-
width:79px;
|
210 |
-
height:119px;
|
211 |
-
background: url(../images/inpsyde.png) no-repeat;
|
212 |
-
position:absolute;
|
213 |
-
top:0;
|
214 |
-
right:10px;
|
215 |
-
z-index: 1;
|
216 |
-
}
|
217 |
-
.inpsyde a{
|
218 |
-
float:left;
|
219 |
-
font-size:14px;
|
220 |
-
color:#fff;
|
221 |
-
text-decoration:none;
|
222 |
-
padding:65px 15px 15px 15px;
|
223 |
-
text-align:center;
|
224 |
-
}
|
225 |
-
|
226 |
-
.mp_logo {
|
227 |
-
background: url(../images/mp_logo_small.png) no-repeat;
|
228 |
-
margin-right:15px !important;
|
229 |
-
height: 25px;
|
230 |
-
width: 145px;
|
231 |
-
display: inline-block;
|
232 |
-
text-indent: 9999em;
|
233 |
-
}
|
234 |
-
|
235 |
-
#footer-left span {
|
236 |
-
margin-right:15px !important;
|
237 |
-
}
|
238 |
-
|
239 |
-
/* DOKU */
|
240 |
-
#documentation_content p{
|
241 |
-
font-size:14px;
|
242 |
-
line-height:20px;
|
243 |
-
color:#333;
|
244 |
-
}
|
245 |
-
#documentation_content h3{
|
246 |
-
padding:7px 0;
|
247 |
-
font-size:22px;
|
248 |
-
}
|
249 |
-
#documentation_content h4{
|
250 |
-
padding:7px 0;
|
251 |
-
font-size:18px;
|
252 |
-
}
|
253 |
-
#documentation_content img.size-full {
|
254 |
-
border:10px #f6f6f6 solid;
|
255 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css/page_about.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.welcome{float:left;font-family:sans-serif,"Arial",sans-serif;max-width:1050px}.welcome .welcome_inner{margin:0 auto;width:100%}.welcome .welcome_inner h3{font-size:42px}.welcome .welcome_inner .welcometxt{float:left;width:100%;margin-bottom:25px;border-bottom:1px #ccc dotted;text-align:center}.welcome .welcome_inner .welcometxt p{line-height:20px;font-size:18px}.welcome .welcome_inner .welcometxt .backwpup-welcome .banner{margin:0 auto;background:url(../images/backwpupbanner-free.png) no-repeat top center;width:637px;height:294px}.welcome .welcome_inner .welcometxt .backwpup-welcome .banner-pro{margin:0 auto;background:url(../images/backwpupbanner-pro.png) no-repeat top center;width:637px;height:294px}.welcome .welcome_inner .feature_box{float:left;width:100%;margin-bottom:15px}.welcome .welcome_inner .feature_box .feature_image.alignleft{width:18%;height:auto;margin-right:1%;margin-left:2%}.welcome .welcome_inner .feature_box .feature_image.alignright{width:18%;height:auto;margin-right:2%;margin-left:1%}.welcome .welcome_inner .feature_box .feature_image img{width:100%;height:auto;max-width:350px}.welcome .welcome_inner .feature_box .feature_text{width:72%;font-size:18px;line-height:32px;margin:0 0 20px 0}.welcome .welcome_inner .feature_box .feature_text h3{color:#009bcc;font-weight:normal;font-size:24px;margin:0 0 10px 0;text-align:left}.welcome .welcome_inner .feature_box .left{float:left}.welcome .welcome_inner .feature_box .right{float:right}.welcome .welcome_inner .featuretitle h3{font-size:28px;font-weight:normal;text-align:left;margin-bottom:25px}.welcome .button-primary-bwp{float:left;padding:15px;font-size:18px;font-family:sans-serif,"Arial",sans-serif;text-decoration:none;background-color:#38b0eb;color:#fff;border:0;cursor:pointer;margin:35px 0}.welcome .button-primary-bwp:hover{background-color:#064565;cursor:pointer}@media only screen and (max-width:1100px),only screen and (max-device-width:1100px){.welcome .welcome_inner h3{font-size:32px}.welcome .welcome_inner .featuretitle h3{font-size:22px;font-weight:normal;text-align:left;margin-bottom:25px}.welcome .welcome_inner .welcometxt p{line-height:20px;font-size:14px}.welcome .welcome_inner .feature_box .feature_text h3{font-weight:normal;font-size:20px;margin:0 0 10px 0;text-align:left}.welcome .welcome_inner .feature_box .feature_text{width:72%;font-size:14px;line-height:20px}.welcome .button-primary-bwp{float:left;padding:10px;font-size:16px;font-family:"Arial",sans-serif;text-decoration:none;background-color:#38b0eb;color:#fff;border:0;cursor:pointer;margin:35px 0}}@media only screen and (max-width:780px),only screen and (max-device-width:780px){.welcome .welcome_inner h3{font-size:22px}.welcome .welcome_inner .featuretitle h3{font-size:22px;font-weight:normal;text-align:left}.welcome .welcome_inner .welcometxt p{line-height:20px;font-size:14px}.welcome .welcome_inner .feature_box .feature_text h3{font-weight:normal;font-size:16px;margin:0 0 10px 0}.welcome .welcome_inner .feature_box .feature_text{width:72%;font-size:12px;line-height:16px;text-align:left}.welcome .button-primary-bwp{float:left;padding:10px;font-size:16px;font-family:"Arial",sans-serif;text-decoration:none;background-color:#38b0eb;color:#fff;border:0;cursor:pointer;margin:35px 0}}.backwpup_comp{margin:20px auto;width:100%;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:16px}.backwpup_comp table{border:0}.backwpup_comp table tbody tr.even td{border:0;background:0;padding:15px;margin:0}.backwpup_comp table tbody tr.odd td{border:0;background:0;padding:15px;margin:0}.backwpup_comp h3{font-family:"Arial",sans-serif;font-size:42px;text-align:center;font-weight:normal;color:#333;line-height:44px;margin:20px 0}.backwpup_comp table tbody tr.ub{font-family:'MisoRegular',"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:26px}.backwpup_comp table tbody tr.ubdown{font-family:'MisoRegular',"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:26px;background:none!important}.backwpup_comp table tbody tr.even{background-image:url(../images/even.png)}.backwpup_comp table tbody tr.odd{background-image:url(../images/odd.png)}.backwpup_comp table tbody tr.ub td.pro{height:50px;text-align:center;background:url(../images/hgtopgreen.png) no-repeat bottom center;color:#fff;border-left:1px solid #112a32}.backwpup_comp table tbody tr.ub td.free{height:50px;text-align:center;background:url(../images/hgtopgreen.png) no-repeat bottom center;color:#fff}.backwpup_comp table tbody tr.ubdown td.pro{height:50px;text-align:center;background:url(../images/hgbtgreen.png) no-repeat top center;color:#fff;border-left:1px solid #1c3e49}.backwpup_comp table tbody tr.ubdown td.pro a{color:#fff;text-decoration:none;cursor:auto;font-weight:300;line-height:1.4em;font-size:18px}.backwpup_comp table tbody tr.ubdown td.free{height:50px;text-align:center;background:url(../images/hgbtred.png) no-repeat top center;color:#fff}.backwpup_comp table tbody tr.ubdown td.free a{color:#fff}.backwpup_comp table tbody tr.even td.tick{width:100px;background:url(../images/tickeven.png) no-repeat center;border-bottom:1px solid #799e14;border-top:1px solid #a2d123;border-left:1px solid #799e14}.backwpup_comp table tbody tr.odd td.tick{width:100px;background:url(../images/tickodd.png) no-repeat center;border-left:1px solid #799e14}.backwpup_comp table tbody tr.even td.error{width:100px;background:url(../images/erroreven.png) no-repeat center;border-bottom:1px solid #b13020;border-top:1px solid #e84936}.backwpup_comp table tbody tr.odd td.error{width:100px;background:url(../images/errorodd.png) no-repeat center}.backwpup_comp table tbody tr.even:hover{background-image:url(../images/hover.png)}.backwpup_comp table tbody tr.odd:hover{background-image:url(../images/hover.png)}.backwpup_comp table tbody tr.even:hover td.tick{background:url(../images/tickhover.png) center}.backwpup_comp table tbody tr.odd:hover td.tick{background:url(../images/tickhover.png) center}.backwpup_comp table tbody tr.even:hover td.error{background:url(../images/errorhover.png) center}.backwpup_comp table tbody tr.odd:hover td.error{background:url(../images/errorhover.png) center}.backwpup_comp table tbody tr.ubdown:hover td.pro:hover{background:url(../images/hgbtgreenhover.png) no-repeat top center}.backwpup_comp table tbody tr.ubdown:hover td.free:hover{background:url(../images/hgbtredhover.png) no-repeat top center}
|
|
css/page_about.dev.css
DELETED
@@ -1,330 +0,0 @@
|
|
1 |
-
.welcome {
|
2 |
-
float:left;
|
3 |
-
font-family: sans-serif,"Arial",sans-serif;
|
4 |
-
max-width:1050px;
|
5 |
-
}
|
6 |
-
.welcome .welcome_inner {
|
7 |
-
margin:0 auto;
|
8 |
-
width:100%;
|
9 |
-
}
|
10 |
-
.welcome .welcome_inner h3{
|
11 |
-
font-size:42px;
|
12 |
-
}
|
13 |
-
.welcome .welcome_inner .welcometxt {
|
14 |
-
float:left;
|
15 |
-
width:100%;
|
16 |
-
margin-bottom:25px;
|
17 |
-
border-bottom:1px #ccc dotted;
|
18 |
-
text-align:center;
|
19 |
-
}
|
20 |
-
.welcome .welcome_inner .welcometxt p{
|
21 |
-
line-height:20px;
|
22 |
-
font-size:18px;
|
23 |
-
}
|
24 |
-
.welcome .welcome_inner .welcometxt .backwpup-welcome .banner{
|
25 |
-
margin:0 auto;
|
26 |
-
background: url(../images/backwpupbanner-free.png) no-repeat top center;
|
27 |
-
width:637px;
|
28 |
-
height:294px;
|
29 |
-
}
|
30 |
-
|
31 |
-
.welcome .welcome_inner .welcometxt .backwpup-welcome .banner-pro {
|
32 |
-
margin:0 auto;
|
33 |
-
background: url(../images/backwpupbanner-pro.png) no-repeat top center;
|
34 |
-
width:637px;
|
35 |
-
height:294px;
|
36 |
-
}
|
37 |
-
|
38 |
-
.welcome .welcome_inner .feature_box{
|
39 |
-
float:left;
|
40 |
-
width:100%;
|
41 |
-
margin-bottom:15px;
|
42 |
-
}
|
43 |
-
.welcome .welcome_inner .feature_box .feature_image.alignleft{
|
44 |
-
width:18%;
|
45 |
-
height:auto;
|
46 |
-
margin-right:1%;
|
47 |
-
margin-left:2%;
|
48 |
-
}
|
49 |
-
.welcome .welcome_inner .feature_box .feature_image.alignright{
|
50 |
-
width:18%;
|
51 |
-
height:auto;
|
52 |
-
margin-right:2%;
|
53 |
-
margin-left:1%;
|
54 |
-
}
|
55 |
-
.welcome .welcome_inner .feature_box .feature_image img{
|
56 |
-
width:100%;
|
57 |
-
height:auto;
|
58 |
-
max-width:350px;
|
59 |
-
}
|
60 |
-
.welcome .welcome_inner .feature_box .feature_text{
|
61 |
-
width:72%;
|
62 |
-
font-size:18px;
|
63 |
-
line-height:32px;
|
64 |
-
margin:0 0 20px 0;
|
65 |
-
}
|
66 |
-
.welcome .welcome_inner .feature_box .feature_text h3{
|
67 |
-
color:rgb(0, 155, 204);
|
68 |
-
font-weight:normal;
|
69 |
-
font-size:24px;
|
70 |
-
margin:0 0 10px 0;
|
71 |
-
text-align:left;
|
72 |
-
}
|
73 |
-
.welcome .welcome_inner .feature_box .left {
|
74 |
-
float:left;
|
75 |
-
}
|
76 |
-
.welcome .welcome_inner .feature_box .right {
|
77 |
-
float:right;
|
78 |
-
}
|
79 |
-
.welcome .welcome_inner .featuretitle h3 {
|
80 |
-
font-size:28px;
|
81 |
-
font-weight:normal;
|
82 |
-
text-align:left;
|
83 |
-
margin-bottom:25px;
|
84 |
-
}
|
85 |
-
.welcome .button-primary-bwp {
|
86 |
-
float:left;
|
87 |
-
padding:15px;
|
88 |
-
font-size:18px;
|
89 |
-
font-family: sans-serif,"Arial",sans-serif;
|
90 |
-
text-decoration:none;
|
91 |
-
background-color:#38b0eb;
|
92 |
-
color:#fff;
|
93 |
-
border:none;
|
94 |
-
cursor:pointer;
|
95 |
-
margin: 35px 0;
|
96 |
-
}
|
97 |
-
.welcome .button-primary-bwp:hover {
|
98 |
-
background-color:#064565;
|
99 |
-
cursor:pointer;
|
100 |
-
}
|
101 |
-
@media only screen and (max-width: 1100px), only screen and (max-device-width: 1100px) {
|
102 |
-
.welcome .welcome_inner h3{
|
103 |
-
font-size:32px;
|
104 |
-
}
|
105 |
-
.welcome .welcome_inner .featuretitle h3 {
|
106 |
-
font-size:22px;
|
107 |
-
font-weight:normal;
|
108 |
-
text-align:left;
|
109 |
-
margin-bottom:25px;
|
110 |
-
}
|
111 |
-
.welcome .welcome_inner .welcometxt p{
|
112 |
-
line-height:20px;
|
113 |
-
font-size:14px;
|
114 |
-
}
|
115 |
-
.welcome .welcome_inner .feature_box .feature_text h3{
|
116 |
-
font-weight:normal;
|
117 |
-
font-size:20px;
|
118 |
-
margin:0 0 10px 0;
|
119 |
-
text-align:left;
|
120 |
-
}
|
121 |
-
.welcome .welcome_inner .feature_box .feature_text{
|
122 |
-
width:72%;
|
123 |
-
font-size:14px;
|
124 |
-
line-height:20px;
|
125 |
-
}
|
126 |
-
.welcome .button-primary-bwp {
|
127 |
-
float:left;
|
128 |
-
padding:10px;
|
129 |
-
font-size:16px;
|
130 |
-
font-family: "Arial", sans-serif;
|
131 |
-
text-decoration:none;
|
132 |
-
background-color:#38b0eb;
|
133 |
-
color:#fff;
|
134 |
-
border:none;
|
135 |
-
cursor:pointer;
|
136 |
-
margin: 35px 0;
|
137 |
-
}
|
138 |
-
}
|
139 |
-
@media only screen and (max-width: 780px), only screen and (max-device-width: 780px) {
|
140 |
-
.welcome .welcome_inner h3{
|
141 |
-
font-size:22px;
|
142 |
-
}
|
143 |
-
.welcome .welcome_inner .featuretitle h3 {
|
144 |
-
font-size:22px;
|
145 |
-
font-weight:normal;
|
146 |
-
text-align:left;
|
147 |
-
}
|
148 |
-
.welcome .welcome_inner .welcometxt p{
|
149 |
-
line-height:20px;
|
150 |
-
font-size:14px;
|
151 |
-
}
|
152 |
-
.welcome .welcome_inner .feature_box .feature_text h3{
|
153 |
-
font-weight:normal;
|
154 |
-
font-size:16px;
|
155 |
-
margin:0 0 10px 0;
|
156 |
-
}
|
157 |
-
.welcome .welcome_inner .feature_box .feature_text{
|
158 |
-
width:72%;
|
159 |
-
font-size:12px;
|
160 |
-
line-height:16px;
|
161 |
-
text-align:left;
|
162 |
-
}
|
163 |
-
.welcome .button-primary-bwp {
|
164 |
-
float:left;
|
165 |
-
padding:10px;
|
166 |
-
font-size:16px;
|
167 |
-
font-family: "Arial", sans-serif;
|
168 |
-
text-decoration:none;
|
169 |
-
background-color:#38b0eb;
|
170 |
-
color:#fff;
|
171 |
-
border:none;
|
172 |
-
cursor:pointer;
|
173 |
-
margin: 35px 0;
|
174 |
-
}
|
175 |
-
}
|
176 |
-
|
177 |
-
.backwpup_comp {
|
178 |
-
margin: 20px auto;
|
179 |
-
width: 100%;
|
180 |
-
font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
|
181 |
-
font-size: 16px;
|
182 |
-
}
|
183 |
-
|
184 |
-
.backwpup_comp table {
|
185 |
-
border: none;
|
186 |
-
}
|
187 |
-
|
188 |
-
.backwpup_comp table tbody tr.even td {
|
189 |
-
border: none;
|
190 |
-
background: none;
|
191 |
-
padding: 15px;
|
192 |
-
margin: 0;
|
193 |
-
}
|
194 |
-
|
195 |
-
.backwpup_comp table tbody tr.odd td {
|
196 |
-
border: none;
|
197 |
-
background: none;
|
198 |
-
padding: 15px;
|
199 |
-
margin: 0;
|
200 |
-
}
|
201 |
-
|
202 |
-
.backwpup_comp h3 {
|
203 |
-
font-family: "Arial", sans-serif;
|
204 |
-
font-size: 42px;
|
205 |
-
text-align: center;
|
206 |
-
font-weight: normal;
|
207 |
-
color: #333;
|
208 |
-
line-height: 44px;
|
209 |
-
margin: 20px 0;
|
210 |
-
}
|
211 |
-
|
212 |
-
.backwpup_comp table tbody tr.ub {
|
213 |
-
font-family: 'MisoRegular', "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
|
214 |
-
font-size: 26px;
|
215 |
-
}
|
216 |
-
|
217 |
-
.backwpup_comp table tbody tr.ubdown {
|
218 |
-
font-family: 'MisoRegular', "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
|
219 |
-
font-size: 26px;
|
220 |
-
background: none !important;
|
221 |
-
}
|
222 |
-
|
223 |
-
.backwpup_comp table tbody tr.even {
|
224 |
-
background-image: url(../images/even.png);
|
225 |
-
}
|
226 |
-
|
227 |
-
.backwpup_comp table tbody tr.odd {
|
228 |
-
background-image: url(../images/odd.png);
|
229 |
-
}
|
230 |
-
|
231 |
-
.backwpup_comp table tbody tr.ub td.pro {
|
232 |
-
height: 50px;
|
233 |
-
text-align: center;
|
234 |
-
background: url(../images/hgtopgreen.png) no-repeat bottom center;
|
235 |
-
color: #fff;
|
236 |
-
border-left: 1px solid #112a32;
|
237 |
-
}
|
238 |
-
|
239 |
-
.backwpup_comp table tbody tr.ub td.free {
|
240 |
-
height: 50px;
|
241 |
-
text-align: center;
|
242 |
-
background: url(../images/hgtopgreen.png) no-repeat bottom center;
|
243 |
-
color: #fff;
|
244 |
-
}
|
245 |
-
|
246 |
-
.backwpup_comp table tbody tr.ubdown td.pro {
|
247 |
-
height: 50px;
|
248 |
-
text-align: center;
|
249 |
-
background: url(../images/hgbtgreen.png) no-repeat top center;
|
250 |
-
color: #fff;
|
251 |
-
border-left: 1px solid #1c3e49;
|
252 |
-
}
|
253 |
-
|
254 |
-
.backwpup_comp table tbody tr.ubdown td.pro a {
|
255 |
-
color: #fff;
|
256 |
-
text-decoration: none;
|
257 |
-
cursor: auto;
|
258 |
-
font-weight: 300;
|
259 |
-
line-height: 1.4em;
|
260 |
-
font-size: 18px;
|
261 |
-
}
|
262 |
-
|
263 |
-
.backwpup_comp table tbody tr.ubdown td.free {
|
264 |
-
height: 50px;
|
265 |
-
text-align: center;
|
266 |
-
background: url(../images/hgbtred.png) no-repeat top center;
|
267 |
-
color: #fff;
|
268 |
-
}
|
269 |
-
|
270 |
-
.backwpup_comp table tbody tr.ubdown td.free a {
|
271 |
-
color: #fff;
|
272 |
-
}
|
273 |
-
|
274 |
-
.backwpup_comp table tbody tr.even td.tick {
|
275 |
-
width: 100px;
|
276 |
-
background: url(../images/tickeven.png) no-repeat center;
|
277 |
-
border-bottom: 1px solid #799e14;
|
278 |
-
border-top: 1px solid #a2d123;
|
279 |
-
border-left: 1px solid #799e14;
|
280 |
-
}
|
281 |
-
|
282 |
-
.backwpup_comp table tbody tr.odd td.tick {
|
283 |
-
width: 100px;
|
284 |
-
background: url(../images/tickodd.png) no-repeat center;
|
285 |
-
border-left: 1px solid #799e14;
|
286 |
-
}
|
287 |
-
|
288 |
-
.backwpup_comp table tbody tr.even td.error {
|
289 |
-
width: 100px;
|
290 |
-
background: url(../images/erroreven.png) no-repeat center;
|
291 |
-
border-bottom: 1px solid #b13020;
|
292 |
-
border-top: 1px solid #e84936;
|
293 |
-
}
|
294 |
-
|
295 |
-
.backwpup_comp table tbody tr.odd td.error {
|
296 |
-
width: 100px;
|
297 |
-
background: url(../images/errorodd.png) no-repeat center;
|
298 |
-
}
|
299 |
-
|
300 |
-
.backwpup_comp table tbody tr.even:hover {
|
301 |
-
background-image: url(../images/hover.png);
|
302 |
-
}
|
303 |
-
|
304 |
-
.backwpup_comp table tbody tr.odd:hover {
|
305 |
-
background-image: url(../images/hover.png);
|
306 |
-
}
|
307 |
-
|
308 |
-
.backwpup_comp table tbody tr.even:hover td.tick {
|
309 |
-
background: url(../images/tickhover.png) center;
|
310 |
-
}
|
311 |
-
|
312 |
-
.backwpup_comp table tbody tr.odd:hover td.tick {
|
313 |
-
background: url(../images/tickhover.png) center;
|
314 |
-
}
|
315 |
-
|
316 |
-
.backwpup_comp table tbody tr.even:hover td.error {
|
317 |
-
background: url(../images/errorhover.png) center;
|
318 |
-
}
|
319 |
-
|
320 |
-
.backwpup_comp table tbody tr.odd:hover td.error {
|
321 |
-
background: url(../images/errorhover.png) center;
|
322 |
-
}
|
323 |
-
|
324 |
-
.backwpup_comp table tbody tr.ubdown:hover td.pro:hover {
|
325 |
-
background: url(../images/hgbtgreenhover.png) no-repeat top center;
|
326 |
-
}
|
327 |
-
|
328 |
-
.backwpup_comp table tbody tr.ubdown:hover td.free:hover {
|
329 |
-
background: url(../images/hgbtredhover.png) no-repeat top center;
|
330 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css/page_edit_tab_cron.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
#cron-min,#cron-hour,#cron-day,#cron-month,#cron-weekday{overflow:auto;white-space:nowrap;height:7em}#cron-min-box,#cron-hour-box,#cron-day-box,#cron-month-box,#cron-weekday-box{border-color:gray;border-style:solid;border-width:1px;margin:10px 0 10px 10px;padding:2px 2px;width:100px;float:left}#wpcronbasic{border-collapse:collapse}#wpcronbasic th,#wpcronbasic td{width:80px;border-bottom:1px solid gray}
|
|
css/page_edit_tab_cron.dev.css
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
#cron-min, #cron-hour, #cron-day, #cron-month, #cron-weekday {
|
2 |
-
overflow: auto;
|
3 |
-
white-space: nowrap;
|
4 |
-
height: 7em;
|
5 |
-
}
|
6 |
-
#cron-min-box, #cron-hour-box, #cron-day-box, #cron-month-box, #cron-weekday-box {
|
7 |
-
border-color: gray;
|
8 |
-
border-style: solid;
|
9 |
-
border-width: 1px;
|
10 |
-
margin: 10px 0px 10px 10px;
|
11 |
-
padding: 2px 2px;
|
12 |
-
width: 100px;
|
13 |
-
float: left;
|
14 |
-
}
|
15 |
-
#wpcronbasic {
|
16 |
-
border-collapse: collapse;
|
17 |
-
}
|
18 |
-
#wpcronbasic th, #wpcronbasic td {
|
19 |
-
width:80px;
|
20 |
-
border-bottom: 1px solid gray;
|
21 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css/page_jobs.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.column-id{width:3%;text-align:center}.column-last,.column-next,.column-type,.column-dest{width:15%}#TB_ajaxContent{background-color:black;color:white}#showworking{font-family:Fixedsys,Courier,monospace;line-height:15px;font-size:12px;white-space:pre;display:block;width:100%}#runningjob{padding:10px;background-image:url(../images/progresshg.jpg);position:relative;margin:15px 0 25px 0;padding-bottom:25px}#runniginfos{font-size:14px;font-family:sans-serif,"Arial"}h2#runnigtitle{font-size:18px;margin-bottom:15px;padding:0}#warningsid,#errorid{margin-right:10px}.infobuttons{position:absolute;right:10px;bottom:10px}a#showworkingbutton{float:left;padding:10px;font-size:12px;font-family:sans-serif,"Arial";text-decoration:none;background-color:#93b509;color:#fff;border:0}a#abortbutton,a#showworkingclose{float:left;margin-left:10px;padding:10px;font-size:12px;font-family:sans-serif,"Arial";text-decoration:none;background-color:#cd1212;color:#fff;border:0}.progressbar{margin-top:20px;height:auto;background:#f6f6f6 url(../images/progressbarhg.jpg)}#lastmsg,#onstep,#lasterrormsg{text-align:center;margin-bottom:20px}#progressstep{background-color:#1d94cf;color:#fff;padding:5px 0;text-align:center;font-size:14px;font-family:sans-serif,"Arial"}#progresssteps{background-color:#007fb6;color:#fff;padding:5px 0;text-align:center;font-size:14px;font-family:sans-serif,"Arial"}
|
|
css/page_jobs.dev.css
DELETED
@@ -1,95 +0,0 @@
|
|
1 |
-
.column-id {
|
2 |
-
width: 3%;
|
3 |
-
text-align: center;
|
4 |
-
}
|
5 |
-
|
6 |
-
.column-last, .column-next, .column-type, .column-dest {
|
7 |
-
width: 15%;
|
8 |
-
}
|
9 |
-
|
10 |
-
#TB_ajaxContent {
|
11 |
-
background-color: black;
|
12 |
-
color: white;
|
13 |
-
}
|
14 |
-
#showworking {
|
15 |
-
font-family: Fixedsys, Courier, monospace;
|
16 |
-
line-height: 15px;
|
17 |
-
font-size: 12px;
|
18 |
-
white-space: pre;
|
19 |
-
display: block;
|
20 |
-
width: 100%;
|
21 |
-
}
|
22 |
-
#runningjob {
|
23 |
-
padding:10px;
|
24 |
-
background-image:url(../images/progresshg.jpg);
|
25 |
-
position:relative;
|
26 |
-
margin: 15px 0 25px 0;
|
27 |
-
padding-bottom:25px;
|
28 |
-
}
|
29 |
-
#runniginfos {
|
30 |
-
font-size: 14px;
|
31 |
-
font-family: sans-serif,"Arial";
|
32 |
-
}
|
33 |
-
h2#runnigtitle {
|
34 |
-
font-size: 18px;
|
35 |
-
margin-bottom: 15px;
|
36 |
-
padding: 0;
|
37 |
-
}
|
38 |
-
#warningsid, #errorid {
|
39 |
-
margin-right: 10px;
|
40 |
-
}
|
41 |
-
|
42 |
-
.infobuttons {
|
43 |
-
position: absolute;
|
44 |
-
right: 10px;
|
45 |
-
bottom: 10px;
|
46 |
-
}
|
47 |
-
a#showworkingbutton {
|
48 |
-
float: left;
|
49 |
-
padding: 10px;
|
50 |
-
font-size: 12px;
|
51 |
-
font-family: sans-serif,"Arial";
|
52 |
-
text-decoration :none;
|
53 |
-
background-color: #93b509;
|
54 |
-
color: #fff;
|
55 |
-
border: none;
|
56 |
-
}
|
57 |
-
a#abortbutton, a#showworkingclose {
|
58 |
-
float: left;
|
59 |
-
margin-left: 10px;
|
60 |
-
padding: 10px;
|
61 |
-
font-size: 12px;
|
62 |
-
font-family: sans-serif,"Arial";
|
63 |
-
text-decoration: none;
|
64 |
-
background-color: #cd1212;
|
65 |
-
color: #fff;
|
66 |
-
border: none;
|
67 |
-
}
|
68 |
-
.progressbar {
|
69 |
-
margin-top: 20px;
|
70 |
-
height: auto;
|
71 |
-
background: #f6f6f6 url(../images/progressbarhg.jpg);
|
72 |
-
}
|
73 |
-
|
74 |
-
#lastmsg, #onstep, #lasterrormsg {
|
75 |
-
text-align: center;
|
76 |
-
margin-bottom: 20px;
|
77 |
-
}
|
78 |
-
|
79 |
-
#progressstep {
|
80 |
-
background-color: #1d94cf;
|
81 |
-
color: #fff;
|
82 |
-
padding: 5px 0;
|
83 |
-
text-align: center;
|
84 |
-
font-size: 14px;
|
85 |
-
font-family: sans-serif,"Arial";
|
86 |
-
}
|
87 |
-
|
88 |
-
#progresssteps {
|
89 |
-
background-color: #007fb6;
|
90 |
-
color: #fff;
|
91 |
-
padding: 5px 0;
|
92 |
-
text-align: center;
|
93 |
-
font-size: 14px;
|
94 |
-
font-family: sans-serif,"Arial";
|
95 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css/page_wizard.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
#wizard_description{width:775px;margin-left:25px}#wizard_description h3{margin-top:15px;margin-left:20px;margin-bottom:15px;font-family:sans-serif,"Arial";font-weight:normal;font-size:16px}h3.title{font-family:sans-serif,"Arial";font-weight:normal;font-size:18px;margin-bottom:35px}#wizard{width:850px;height:500px}#wizard_navigation{float:left;width:225px;height:500px;background:#1d94cf;overflow:hidden;background-image:url(../images/hgboxleft.png);background-position:left bottom;background-repeat:no-repeat}#wizard_navigation ul{margin:0;padding-left:20px;padding-top:15px;list-style:none}#wizard_navigation ul li{font-size:14px;font-family:sans-serif,"Arial";color:#fff;padding:10px;text-decoration:none}#wizard_navigation ul li a{font-size:14px;font-family:sans-serif,"Arial";color:#fff;text-decoration:none}#wizard_navigation ul li.current{background-color:#007fb6;background-image:url(../images/current.png);background-position:right center;background-repeat:no-repeat;font-weight:bold}#wizard_settings{width:620px;height:auto;float:left}#wizard_settings_area{margin-left:30px;margin-top:15px;width:590px;height:auto;font-size:14px;font-family:sans-serif,"Arial"}#wizard_settings_area span.wizard_settings_area_options{float:left;margin-bottom:25px;clear:both}#wizard_settings_area span.wizard_settings_area_options input{float:left;margin-bottom:0}#wizard_settings_area input{margin-bottom:25px}#wizard_settings_area span.wizard_settings_area_options label{float:left;margin-left:10px;width:560px}#wizard_settings_area div.table_planung table#wpcronbasic{width:540px}#wizard_settings_area div.table_planung th{text-align:left;border-bottom:1px dotted #ccc}#wizard_settings_area div.table_planung td{border-bottom:1px dotted #ccc}#wizard_settings_area div.table_planung tr{line-height:60px}#wizard_settings_area pre{height:455px;overflow:scroll}#wizard_navbuttons{width:800px;text-align:right}#wizard_navbuttons a.button-bwp,#wizard_navbuttons input.button-bwp{padding:10px;font-size:12px;font-family:sans-serif,"Arial";text-decoration:none;background-color:#1d94cf;color:#fff;border:0}#wizard_navbuttons a.button-bwp,#wizard_navbuttons input.button-bwp{cursor:pointer}.execute{background-color:#1d485d!important}li.execute{background-image:url(../images/execute.png);background-repeat:no-repeat;background-position:center right}p.good{padding:10px;font-size:16px;text-align:center;color:#fff;background-color:#a8c100}
|
|
css/page_wizard.dev.css
DELETED
@@ -1,137 +0,0 @@
|
|
1 |
-
#wizard_description {
|
2 |
-
width: 775px;
|
3 |
-
margin-left:25px;
|
4 |
-
}
|
5 |
-
|
6 |
-
#wizard_description h3 {
|
7 |
-
margin-top: 15px;
|
8 |
-
margin-left: 20px;
|
9 |
-
margin-bottom: 15px;
|
10 |
-
font-family: sans-serif,"Arial";
|
11 |
-
font-weight:normal;
|
12 |
-
font-size:16px;
|
13 |
-
}
|
14 |
-
h3.title {
|
15 |
-
font-family: sans-serif,"Arial";
|
16 |
-
font-weight:normal;
|
17 |
-
font-size:18px;
|
18 |
-
margin-bottom:35px;
|
19 |
-
}
|
20 |
-
#wizard {
|
21 |
-
width: 850px;
|
22 |
-
height: 500px;
|
23 |
-
}
|
24 |
-
|
25 |
-
#wizard_navigation {
|
26 |
-
float: left;
|
27 |
-
width: 225px;
|
28 |
-
height: 500px;
|
29 |
-
background: #1d94cf;
|
30 |
-
overflow: hidden;
|
31 |
-
background-image:url(../images/hgboxleft.png);
|
32 |
-
background-position:left bottom;
|
33 |
-
background-repeat:no-repeat;
|
34 |
-
}
|
35 |
-
|
36 |
-
#wizard_navigation ul {
|
37 |
-
margin: 0;
|
38 |
-
padding-left: 20px;
|
39 |
-
padding-top: 15px;
|
40 |
-
list-style: none;
|
41 |
-
}
|
42 |
-
#wizard_navigation ul li{
|
43 |
-
font-size:14px;
|
44 |
-
font-family: sans-serif,"Arial";
|
45 |
-
color:#fff;
|
46 |
-
padding:10px;
|
47 |
-
text-decoration: none;
|
48 |
-
}
|
49 |
-
#wizard_navigation ul li a{
|
50 |
-
font-size:14px;
|
51 |
-
font-family: sans-serif,"Arial";
|
52 |
-
color:#fff;
|
53 |
-
text-decoration: none;
|
54 |
-
}
|
55 |
-
|
56 |
-
#wizard_navigation ul li.current{
|
57 |
-
background-color:#007fb6;
|
58 |
-
background-image:url(../images/current.png);
|
59 |
-
background-position:right center;
|
60 |
-
background-repeat:no-repeat;
|
61 |
-
font-weight: bold;
|
62 |
-
}
|
63 |
-
#wizard_settings {
|
64 |
-
width: 620px;
|
65 |
-
height: auto;
|
66 |
-
float: left;
|
67 |
-
}
|
68 |
-
#wizard_settings_area {
|
69 |
-
margin-left: 30px;
|
70 |
-
margin-top: 15px;
|
71 |
-
width: 590px;
|
72 |
-
height: auto;
|
73 |
-
font-size:14px;
|
74 |
-
font-family: sans-serif,"Arial";
|
75 |
-
}
|
76 |
-
#wizard_settings_area span.wizard_settings_area_options {
|
77 |
-
float:left;
|
78 |
-
margin-bottom:25px;
|
79 |
-
clear:both;
|
80 |
-
}
|
81 |
-
#wizard_settings_area span.wizard_settings_area_options input{
|
82 |
-
float:left;
|
83 |
-
margin-bottom:0px;
|
84 |
-
}
|
85 |
-
#wizard_settings_area input{
|
86 |
-
margin-bottom:25px;
|
87 |
-
}
|
88 |
-
#wizard_settings_area span.wizard_settings_area_options label{
|
89 |
-
float:left;
|
90 |
-
margin-left:10px;
|
91 |
-
width:560px;
|
92 |
-
}
|
93 |
-
#wizard_settings_area div.table_planung table#wpcronbasic{
|
94 |
-
width:540px;
|
95 |
-
}
|
96 |
-
#wizard_settings_area div.table_planung th{
|
97 |
-
text-align:left;
|
98 |
-
border-bottom:1px dotted #ccc;
|
99 |
-
}
|
100 |
-
#wizard_settings_area div.table_planung td{
|
101 |
-
border-bottom:1px dotted #ccc;
|
102 |
-
}
|
103 |
-
#wizard_settings_area div.table_planung tr{
|
104 |
-
line-height:60px;
|
105 |
-
}
|
106 |
-
#wizard_settings_area pre {
|
107 |
-
height:455px;
|
108 |
-
overflow:scroll;
|
109 |
-
}
|
110 |
-
#wizard_navbuttons {
|
111 |
-
width: 800px;
|
112 |
-
text-align: right;
|
113 |
-
}
|
114 |
-
#wizard_navbuttons a.button-bwp,
|
115 |
-
#wizard_navbuttons input.button-bwp{
|
116 |
-
padding:10px;
|
117 |
-
font-size:12px;
|
118 |
-
font-family: sans-serif,"Arial";
|
119 |
-
text-decoration:none;
|
120 |
-
background-color:#1d94cf;
|
121 |
-
color:#fff;
|
122 |
-
border:none;
|
123 |
-
}
|
124 |
-
#wizard_navbuttons a.button-bwp,
|
125 |
-
#wizard_navbuttons input.button-bwp{
|
126 |
-
cursor:pointer;
|
127 |
-
}
|
128 |
-
|
129 |
-
.execute {
|
130 |
-
background-color: #1d485d !important;
|
131 |
-
}
|
132 |
-
li.execute {
|
133 |
-
background-image:url(../images/execute.png);
|
134 |
-
background-repeat:no-repeat;
|
135 |
-
background-position:center right;
|
136 |
-
}
|
137 |
-
p.good { padding:10px; font-size:16px; text-align:center; color:#fff; background-color:#a8c100; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
images/BackWPup16.png
DELETED
Binary file
|
images/BackWPup16_2x.png
DELETED
Binary file
|
images/BackWPup20.png
DELETED
Binary file
|
images/BackWPup20_2x.png
DELETED
Binary file
|
images/BackWPup32.png
DELETED
Binary file
|
images/BackWPup64.png
DELETED
Binary file
|
images/backwpupbanner-free.png
DELETED
Binary file
|
images/backwpupbanner-pro.png
DELETED
Binary file
|
images/current.png
DELETED
Binary file
|
images/erroreven.png
DELETED
Binary file
|
images/errorhover.png
DELETED
Binary file
|
images/errorodd.png
DELETED
Binary file
|
images/even.png
DELETED
Binary file
|
images/execute.png
DELETED
Binary file
|
images/help.png
DELETED
Binary file
|
images/hgbox.png
DELETED
Binary file
|
images/hgboxleft.png
DELETED
Binary file
|
images/hgbtgreen.png
DELETED
Binary file
|
images/hgbtgreenhover.png
DELETED
Binary file
|
images/hgbtred.png
DELETED
Binary file
|
images/hgbtredhover.png
DELETED
Binary file
|
images/hginfotxt.png
DELETED
Binary file
|
images/hgtopgreen.png
DELETED
Binary file
|
images/hover.png
DELETED
Binary file
|
images/imagecloud.png
DELETED
Binary file
|
images/imagedata.png
DELETED
Binary file
|
images/imagerepair.png
DELETED
Binary file
|
images/imagesave.png
DELETED
Binary file
|
images/imagesec.png
DELETED
Binary file
|
images/imagexml.png
DELETED
Binary file
|
images/inpsyde.png
DELETED
Binary file
|
images/mp_logo_small.png
DELETED
Binary file
|
images/odd.png
DELETED
Binary file
|
images/progressbarhg.jpg
DELETED
Binary file
|
images/progresshg.jpg
DELETED
Binary file
|
images/screen.png
DELETED
Binary file
|
images/tickeven.png
DELETED
Binary file
|
images/tickhover.png
DELETED
Binary file
|
images/tickodd.png
DELETED
Binary file
|
inc/cacert.pem
DELETED
@@ -1,3895 +0,0 @@
|
|
1 |
-
##
|
2 |
-
## ca-bundle.crt -- Bundle of CA Root Certificates
|
3 |
-
##
|
4 |
-
## Certificate data from Mozilla as of: Sat Dec 29 20:03:40 2012
|
5 |
-
##
|
6 |
-
## This is a bundle of X.509 certificates of public Certificate Authorities
|
7 |
-
## (CA). These were automatically extracted from Mozilla's root certificates
|
8 |
-
## file (certdata.txt). This file can be found in the mozilla source tree:
|
9 |
-
## http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1
|
10 |
-
##
|
11 |
-
## It contains the certificates in PEM format and therefore
|
12 |
-
## can be directly used with curl / libcurl / php_curl, or with
|
13 |
-
## an Apache+mod_ssl webserver for SSL client authentication.
|
14 |
-
## Just configure this file as the SSLCACertificateFile.
|
15 |
-
##
|
16 |
-
|
17 |
-
# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.87 $ $Date: 2012/12/29 16:32:45 $
|
18 |
-
|
19 |
-
GTE CyberTrust Global Root
|
20 |
-
==========================
|
21 |
-
-----BEGIN CERTIFICATE-----
|
22 |
-
MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
|
23 |
-
Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
|
24 |
-
A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
|
25 |
-
MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
|
26 |
-
Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
|
27 |
-
IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
|
28 |
-
sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
|
29 |
-
HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
|
30 |
-
AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
|
31 |
-
M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
|
32 |
-
NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
|
33 |
-
-----END CERTIFICATE-----
|
34 |
-
|
35 |
-
Thawte Server CA
|
36 |
-
================
|
37 |
-
-----BEGIN CERTIFICATE-----
|
38 |
-
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
39 |
-
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
40 |
-
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
|
41 |
-
AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
|
42 |
-
b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
|
43 |
-
BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
|
44 |
-
c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
|
45 |
-
A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
|
46 |
-
ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
|
47 |
-
/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
|
48 |
-
1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
|
49 |
-
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
|
50 |
-
GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
|
51 |
-
GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
|
52 |
-
-----END CERTIFICATE-----
|
53 |
-
|
54 |
-
Thawte Premium Server CA
|
55 |
-
========================
|
56 |
-
-----BEGIN CERTIFICATE-----
|
57 |
-
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
58 |
-
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
59 |
-
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
|
60 |
-
AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
|
61 |
-
ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
|
62 |
-
AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
|
63 |
-
VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
|
64 |
-
aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
|
65 |
-
cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
|
66 |
-
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
|
67 |
-
Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
|
68 |
-
qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
|
69 |
-
SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
|
70 |
-
8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
|
71 |
-
UCemDaYj+bvLpgcUQg==
|
72 |
-
-----END CERTIFICATE-----
|
73 |
-
|
74 |
-
Equifax Secure CA
|
75 |
-
=================
|
76 |
-
-----BEGIN CERTIFICATE-----
|
77 |
-
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
|
78 |
-
ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
|
79 |
-
MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
|
80 |
-
B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
|
81 |
-
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
|
82 |
-
fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
|
83 |
-
8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
|
84 |
-
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
|
85 |
-
CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
|
86 |
-
A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
|
87 |
-
spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
|
88 |
-
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
|
89 |
-
zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
|
90 |
-
BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
|
91 |
-
70+sB3c4
|
92 |
-
-----END CERTIFICATE-----
|
93 |
-
|
94 |
-
Digital Signature Trust Co. Global CA 1
|
95 |
-
=======================================
|
96 |
-
-----BEGIN CERTIFICATE-----
|
97 |
-
MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
98 |
-
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy
|
99 |
-
MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
100 |
-
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA
|
101 |
-
A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE
|
102 |
-
NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i
|
103 |
-
o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
104 |
-
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
105 |
-
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
106 |
-
IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
107 |
-
MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM
|
108 |
-
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
109 |
-
ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq
|
110 |
-
kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4
|
111 |
-
RbyhkwS7hp86W0N6w4pl
|
112 |
-
-----END CERTIFICATE-----
|
113 |
-
|
114 |
-
Digital Signature Trust Co. Global CA 3
|
115 |
-
=======================================
|
116 |
-
-----BEGIN CERTIFICATE-----
|
117 |
-
MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
118 |
-
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy
|
119 |
-
MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
120 |
-
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA
|
121 |
-
A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD
|
122 |
-
VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS
|
123 |
-
xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
124 |
-
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
125 |
-
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
126 |
-
IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
127 |
-
MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM
|
128 |
-
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
129 |
-
AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi
|
130 |
-
up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1
|
131 |
-
mPnHfxsb1gYgAlihw6ID
|
132 |
-
-----END CERTIFICATE-----
|
133 |
-
|
134 |
-
Verisign Class 3 Public Primary Certification Authority
|
135 |
-
=======================================================
|
136 |
-
-----BEGIN CERTIFICATE-----
|
137 |
-
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
138 |
-
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
139 |
-
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
|
140 |
-
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
141 |
-
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
142 |
-
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
143 |
-
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
144 |
-
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
|
145 |
-
TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
|
146 |
-
WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
|
147 |
-
Tqj/ZA1k
|
148 |
-
-----END CERTIFICATE-----
|
149 |
-
|
150 |
-
Verisign Class 1 Public Primary Certification Authority - G2
|
151 |
-
============================================================
|
152 |
-
-----BEGIN CERTIFICATE-----
|
153 |
-
MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
154 |
-
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
155 |
-
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
156 |
-
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
157 |
-
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
158 |
-
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
159 |
-
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
160 |
-
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
161 |
-
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd
|
162 |
-
k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq
|
163 |
-
WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB
|
164 |
-
MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM
|
165 |
-
XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC
|
166 |
-
lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ
|
167 |
-
-----END CERTIFICATE-----
|
168 |
-
|
169 |
-
Verisign Class 2 Public Primary Certification Authority - G2
|
170 |
-
============================================================
|
171 |
-
-----BEGIN CERTIFICATE-----
|
172 |
-
MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV
|
173 |
-
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
|
174 |
-
cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
|
175 |
-
Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
176 |
-
c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV
|
177 |
-
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
|
178 |
-
cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
|
179 |
-
Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
180 |
-
c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx
|
181 |
-
nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC
|
182 |
-
wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA
|
183 |
-
ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK
|
184 |
-
1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk
|
185 |
-
LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg==
|
186 |
-
-----END CERTIFICATE-----
|
187 |
-
|
188 |
-
Verisign Class 3 Public Primary Certification Authority - G2
|
189 |
-
============================================================
|
190 |
-
-----BEGIN CERTIFICATE-----
|
191 |
-
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
192 |
-
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
193 |
-
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
194 |
-
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
195 |
-
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
196 |
-
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
197 |
-
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
198 |
-
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
199 |
-
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
|
200 |
-
FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
|
201 |
-
lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
|
202 |
-
MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
|
203 |
-
1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
|
204 |
-
Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
|
205 |
-
-----END CERTIFICATE-----
|
206 |
-
|
207 |
-
GlobalSign Root CA
|
208 |
-
==================
|
209 |
-
-----BEGIN CERTIFICATE-----
|
210 |
-
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
|
211 |
-
GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
|
212 |
-
b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
|
213 |
-
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
|
214 |
-
VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
|
215 |
-
DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
|
216 |
-
THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
|
217 |
-
Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
|
218 |
-
c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
|
219 |
-
gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
|
220 |
-
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
|
221 |
-
AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
|
222 |
-
Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
|
223 |
-
j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
|
224 |
-
hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
|
225 |
-
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
226 |
-
-----END CERTIFICATE-----
|
227 |
-
|
228 |
-
GlobalSign Root CA - R2
|
229 |
-
=======================
|
230 |
-
-----BEGIN CERTIFICATE-----
|
231 |
-
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
|
232 |
-
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
233 |
-
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
234 |
-
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
235 |
-
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
|
236 |
-
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
|
237 |
-
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
|
238 |
-
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
|
239 |
-
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
|
240 |
-
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
241 |
-
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
|
242 |
-
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
|
243 |
-
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
|
244 |
-
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
|
245 |
-
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
|
246 |
-
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
247 |
-
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
248 |
-
-----END CERTIFICATE-----
|
249 |
-
|
250 |
-
ValiCert Class 1 VA
|
251 |
-
===================
|
252 |
-
-----BEGIN CERTIFICATE-----
|
253 |
-
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
254 |
-
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
255 |
-
YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
256 |
-
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
|
257 |
-
MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
258 |
-
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
|
259 |
-
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
260 |
-
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
261 |
-
A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
|
262 |
-
GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
|
263 |
-
DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
|
264 |
-
lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
|
265 |
-
icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
|
266 |
-
Orf1LXLI
|
267 |
-
-----END CERTIFICATE-----
|
268 |
-
|
269 |
-
ValiCert Class 2 VA
|
270 |
-
===================
|
271 |
-
-----BEGIN CERTIFICATE-----
|
272 |
-
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
273 |
-
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
274 |
-
YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
275 |
-
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
276 |
-
MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
277 |
-
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
|
278 |
-
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
279 |
-
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
280 |
-
A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
|
281 |
-
CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
|
282 |
-
ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
|
283 |
-
SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
|
284 |
-
UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
|
285 |
-
W9ViH0Pd
|
286 |
-
-----END CERTIFICATE-----
|
287 |
-
|
288 |
-
RSA Root Certificate 1
|
289 |
-
======================
|
290 |
-
-----BEGIN CERTIFICATE-----
|
291 |
-
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
292 |
-
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
293 |
-
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
294 |
-
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
295 |
-
MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
296 |
-
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
|
297 |
-
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
298 |
-
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
299 |
-
A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
|
300 |
-
3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
|
301 |
-
BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
|
302 |
-
3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
|
303 |
-
V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
|
304 |
-
on+jjBXu
|
305 |
-
-----END CERTIFICATE-----
|
306 |
-
|
307 |
-
Verisign Class 1 Public Primary Certification Authority - G3
|
308 |
-
============================================================
|
309 |
-
-----BEGIN CERTIFICATE-----
|
310 |
-
MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
311 |
-
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
312 |
-
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
313 |
-
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
314 |
-
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
315 |
-
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
316 |
-
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
317 |
-
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg
|
318 |
-
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
319 |
-
ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E
|
320 |
-
bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ
|
321 |
-
rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+
|
322 |
-
Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB
|
323 |
-
FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
324 |
-
q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N
|
325 |
-
y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3
|
326 |
-
ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h
|
327 |
-
a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc
|
328 |
-
D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g==
|
329 |
-
-----END CERTIFICATE-----
|
330 |
-
|
331 |
-
Verisign Class 2 Public Primary Certification Authority - G3
|
332 |
-
============================================================
|
333 |
-
-----BEGIN CERTIFICATE-----
|
334 |
-
MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT
|
335 |
-
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y
|
336 |
-
azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug
|
337 |
-
b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0
|
338 |
-
aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ
|
339 |
-
BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
340 |
-
c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y
|
341 |
-
aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD
|
342 |
-
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
343 |
-
AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6
|
344 |
-
tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7
|
345 |
-
C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS
|
346 |
-
0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs
|
347 |
-
Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0
|
348 |
-
JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf
|
349 |
-
0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU
|
350 |
-
sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx
|
351 |
-
JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j
|
352 |
-
GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q
|
353 |
-
-----END CERTIFICATE-----
|
354 |
-
|
355 |
-
Verisign Class 3 Public Primary Certification Authority - G3
|
356 |
-
============================================================
|
357 |
-
-----BEGIN CERTIFICATE-----
|
358 |
-
MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
359 |
-
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
360 |
-
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
361 |
-
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
362 |
-
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
363 |
-
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
364 |
-
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
365 |
-
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
|
366 |
-
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
367 |
-
ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
|
368 |
-
EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
|
369 |
-
cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
|
370 |
-
EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
|
371 |
-
055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
372 |
-
ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
|
373 |
-
j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
|
374 |
-
/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
|
375 |
-
xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
|
376 |
-
t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
|
377 |
-
-----END CERTIFICATE-----
|
378 |
-
|
379 |
-
Verisign Class 4 Public Primary Certification Authority - G3
|
380 |
-
============================================================
|
381 |
-
-----BEGIN CERTIFICATE-----
|
382 |
-
MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
383 |
-
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
384 |
-
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
385 |
-
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
386 |
-
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
387 |
-
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
388 |
-
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
389 |
-
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
|
390 |
-
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
391 |
-
ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
|
392 |
-
tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
|
393 |
-
8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
|
394 |
-
Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
|
395 |
-
Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
396 |
-
j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
|
397 |
-
mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
|
398 |
-
fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
|
399 |
-
RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
|
400 |
-
UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
|
401 |
-
-----END CERTIFICATE-----
|
402 |
-
|
403 |
-
Entrust.net Secure Server CA
|
404 |
-
============================
|
405 |
-
-----BEGIN CERTIFICATE-----
|
406 |
-
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
|
407 |
-
BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
|
408 |
-
cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
|
409 |
-
ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
410 |
-
cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
|
411 |
-
A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
|
412 |
-
eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
|
413 |
-
dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
|
414 |
-
aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
|
415 |
-
aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
|
416 |
-
gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
|
417 |
-
ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
|
418 |
-
CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
|
419 |
-
dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
420 |
-
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
|
421 |
-
cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
422 |
-
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
|
423 |
-
NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
|
424 |
-
HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
|
425 |
-
BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
|
426 |
-
Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
|
427 |
-
n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
428 |
-
-----END CERTIFICATE-----
|
429 |
-
|
430 |
-
Entrust.net Premium 2048 Secure Server CA
|
431 |
-
=========================================
|
432 |
-
-----BEGIN CERTIFICATE-----
|
433 |
-
MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
|
434 |
-
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
|
435 |
-
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
|
436 |
-
BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
|
437 |
-
NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
|
438 |
-
d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
|
439 |
-
MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
|
440 |
-
ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
441 |
-
MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
|
442 |
-
Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
|
443 |
-
hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
|
444 |
-
nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
|
445 |
-
VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC
|
446 |
-
AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER
|
447 |
-
gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B
|
448 |
-
AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo
|
449 |
-
oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS
|
450 |
-
o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z
|
451 |
-
2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX
|
452 |
-
OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ==
|
453 |
-
-----END CERTIFICATE-----
|
454 |
-
|
455 |
-
Baltimore CyberTrust Root
|
456 |
-
=========================
|
457 |
-
-----BEGIN CERTIFICATE-----
|
458 |
-
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
|
459 |
-
ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
|
460 |
-
ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
|
461 |
-
SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
|
462 |
-
dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
|
463 |
-
uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
|
464 |
-
UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
|
465 |
-
G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
|
466 |
-
XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
|
467 |
-
l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
|
468 |
-
VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
|
469 |
-
BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
|
470 |
-
cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
|
471 |
-
hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
|
472 |
-
Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
|
473 |
-
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
474 |
-
-----END CERTIFICATE-----
|
475 |
-
|
476 |
-
Equifax Secure Global eBusiness CA
|
477 |
-
==================================
|
478 |
-
-----BEGIN CERTIFICATE-----
|
479 |
-
MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
480 |
-
RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
|
481 |
-
bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
|
482 |
-
HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
|
483 |
-
b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
|
484 |
-
PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
|
485 |
-
qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
|
486 |
-
hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
|
487 |
-
BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
|
488 |
-
MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
|
489 |
-
I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
|
490 |
-
NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
|
491 |
-
-----END CERTIFICATE-----
|
492 |
-
|
493 |
-
Equifax Secure eBusiness CA 1
|
494 |
-
=============================
|
495 |
-
-----BEGIN CERTIFICATE-----
|
496 |
-
MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
497 |
-
RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
|
498 |
-
LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
|
499 |
-
ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
|
500 |
-
IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
|
501 |
-
1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
|
502 |
-
IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
|
503 |
-
MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
|
504 |
-
Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
|
505 |
-
AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
|
506 |
-
lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
|
507 |
-
KpYrtWKmpj29f5JZzVoqgrI3eQ==
|
508 |
-
-----END CERTIFICATE-----
|
509 |
-
|
510 |
-
Equifax Secure eBusiness CA 2
|
511 |
-
=============================
|
512 |
-
-----BEGIN CERTIFICATE-----
|
513 |
-
MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE
|
514 |
-
ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y
|
515 |
-
MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT
|
516 |
-
DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB
|
517 |
-
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn
|
518 |
-
2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5
|
519 |
-
BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG
|
520 |
-
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx
|
521 |
-
JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG
|
522 |
-
A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e
|
523 |
-
uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB
|
524 |
-
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1
|
525 |
-
jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia
|
526 |
-
78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm
|
527 |
-
V+GRMOrN
|
528 |
-
-----END CERTIFICATE-----
|
529 |
-
|
530 |
-
AddTrust Low-Value Services Root
|
531 |
-
================================
|
532 |
-
-----BEGIN CERTIFICATE-----
|
533 |
-
MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
534 |
-
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
|
535 |
-
cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
|
536 |
-
CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
|
537 |
-
ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
|
538 |
-
AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
|
539 |
-
54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
|
540 |
-
oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
|
541 |
-
Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
|
542 |
-
GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
|
543 |
-
HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
|
544 |
-
AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
|
545 |
-
RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
|
546 |
-
HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
|
547 |
-
ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
|
548 |
-
iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
|
549 |
-
eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
|
550 |
-
mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
|
551 |
-
ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
|
552 |
-
-----END CERTIFICATE-----
|
553 |
-
|
554 |
-
AddTrust External Root
|
555 |
-
======================
|
556 |
-
-----BEGIN CERTIFICATE-----
|
557 |
-
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
558 |
-
QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
|
559 |
-
VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
|
560 |
-
NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
|
561 |
-
cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
|
562 |
-
Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
|
563 |
-
+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
|
564 |
-
Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
|
565 |
-
aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
|
566 |
-
2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
|
567 |
-
7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
|
568 |
-
BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
|
569 |
-
VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
|
570 |
-
VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
|
571 |
-
IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
|
572 |
-
j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
|
573 |
-
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
|
574 |
-
e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
|
575 |
-
G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
576 |
-
-----END CERTIFICATE-----
|
577 |
-
|
578 |
-
AddTrust Public Services Root
|
579 |
-
=============================
|
580 |
-
-----BEGIN CERTIFICATE-----
|
581 |
-
MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
582 |
-
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
|
583 |
-
cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
|
584 |
-
BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
|
585 |
-
dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
|
586 |
-
AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
|
587 |
-
nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
|
588 |
-
d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
|
589 |
-
Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
|
590 |
-
HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
|
591 |
-
A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
592 |
-
/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
|
593 |
-
FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
|
594 |
-
A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
|
595 |
-
JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
|
596 |
-
+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
|
597 |
-
GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
|
598 |
-
Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
|
599 |
-
EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
|
600 |
-
-----END CERTIFICATE-----
|
601 |
-
|
602 |
-
AddTrust Qualified Certificates Root
|
603 |
-
====================================
|
604 |
-
-----BEGIN CERTIFICATE-----
|
605 |
-
MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
606 |
-
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
|
607 |
-
cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
|
608 |
-
CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
|
609 |
-
IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
|
610 |
-
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
|
611 |
-
64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
|
612 |
-
KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
|
613 |
-
L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
|
614 |
-
wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
|
615 |
-
MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
|
616 |
-
BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
|
617 |
-
BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
|
618 |
-
azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
|
619 |
-
ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
|
620 |
-
GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
|
621 |
-
dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
|
622 |
-
RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
|
623 |
-
iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
|
624 |
-
-----END CERTIFICATE-----
|
625 |
-
|
626 |
-
Entrust Root Certification Authority
|
627 |
-
====================================
|
628 |
-
-----BEGIN CERTIFICATE-----
|
629 |
-
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
|
630 |
-
BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
|
631 |
-
b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
|
632 |
-
A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
|
633 |
-
MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
|
634 |
-
MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
|
635 |
-
Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
|
636 |
-
dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
637 |
-
ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
|
638 |
-
A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
|
639 |
-
Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
|
640 |
-
j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
|
641 |
-
rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
|
642 |
-
DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
|
643 |
-
MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
|
644 |
-
hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
|
645 |
-
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
|
646 |
-
Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
|
647 |
-
v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
|
648 |
-
W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
|
649 |
-
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
650 |
-
-----END CERTIFICATE-----
|
651 |
-
|
652 |
-
RSA Security 2048 v3
|
653 |
-
====================
|
654 |
-
-----BEGIN CERTIFICATE-----
|
655 |
-
MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
|
656 |
-
ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
|
657 |
-
MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
|
658 |
-
BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
659 |
-
AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
|
660 |
-
Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
|
661 |
-
WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
|
662 |
-
KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
|
663 |
-
+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
|
664 |
-
MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
|
665 |
-
FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
|
666 |
-
v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
|
667 |
-
0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
|
668 |
-
VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
|
669 |
-
nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
|
670 |
-
pKnXwiJPZ9d37CAFYd4=
|
671 |
-
-----END CERTIFICATE-----
|
672 |
-
|
673 |
-
GeoTrust Global CA
|
674 |
-
==================
|
675 |
-
-----BEGIN CERTIFICATE-----
|
676 |
-
MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
|
677 |
-
Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
|
678 |
-
MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
679 |
-
LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
680 |
-
CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
|
681 |
-
BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
|
682 |
-
8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
|
683 |
-
T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
|
684 |
-
vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
|
685 |
-
AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
|
686 |
-
DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
|
687 |
-
zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
|
688 |
-
d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
|
689 |
-
mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
|
690 |
-
XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
|
691 |
-
Mw==
|
692 |
-
-----END CERTIFICATE-----
|
693 |
-
|
694 |
-
GeoTrust Global CA 2
|
695 |
-
====================
|
696 |
-
-----BEGIN CERTIFICATE-----
|
697 |
-
MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
698 |
-
R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
|
699 |
-
MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
700 |
-
LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
701 |
-
ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
|
702 |
-
NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
|
703 |
-
LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
|
704 |
-
Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
|
705 |
-
HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
|
706 |
-
MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
|
707 |
-
K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
|
708 |
-
srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
|
709 |
-
ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
|
710 |
-
OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
|
711 |
-
x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
|
712 |
-
H4z1Ir+rzoPz4iIprn2DQKi6bA==
|
713 |
-
-----END CERTIFICATE-----
|
714 |
-
|
715 |
-
GeoTrust Universal CA
|
716 |
-
=====================
|
717 |
-
-----BEGIN CERTIFICATE-----
|
718 |
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF
|
738 |
-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
-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
-
xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU
|
741 |
-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
|
742 |
-
P/rmMuGNG2+k5o7Y+SlIis5z/iw=
|
743 |
-
-----END CERTIFICATE-----
|
744 |
-
|
745 |
-
GeoTrust Universal CA 2
|
746 |
-
=======================
|
747 |
-
-----BEGIN CERTIFICATE-----
|
748 |
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2
|
762 |
-
+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
-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
-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
-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
-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
-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
-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
-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
-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
-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
|
772 |
-
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
|
773 |
-
-----END CERTIFICATE-----
|
774 |
-
|
775 |
-
UTN-USER First-Network Applications
|
776 |
-
===================================
|
777 |
-
-----BEGIN CERTIFICATE-----
|
778 |
-
MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE
|
779 |
-
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
780 |
-
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp
|
781 |
-
BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5
|
782 |
-
WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T
|
783 |
-
YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
|
784 |
-
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB
|
785 |
-
cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug
|
786 |
-
mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj
|
787 |
-
DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu
|
788 |
-
Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi
|
789 |
-
P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE
|
790 |
-
j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w
|
791 |
-
HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j
|
792 |
-
cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G
|
793 |
-
CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y
|
794 |
-
IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK
|
795 |
-
RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp
|
796 |
-
xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq
|
797 |
-
DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE
|
798 |
-
-----END CERTIFICATE-----
|
799 |
-
|
800 |
-
America Online Root Certification Authority 1
|
801 |
-
=============================================
|
802 |
-
-----BEGIN CERTIFICATE-----
|
803 |
-
MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
804 |
-
QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
|
805 |
-
Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
|
806 |
-
A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
|
807 |
-
T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
|
808 |
-
ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
|
809 |
-
v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
|
810 |
-
DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
|
811 |
-
sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
|
812 |
-
8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
|
813 |
-
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
|
814 |
-
o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
|
815 |
-
GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
|
816 |
-
VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
|
817 |
-
3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
|
818 |
-
Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
|
819 |
-
sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
|
820 |
-
-----END CERTIFICATE-----
|
821 |
-
|
822 |
-
America Online Root Certification Authority 2
|
823 |
-
=============================================
|
824 |
-
-----BEGIN CERTIFICATE-----
|
825 |
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
+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
-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
-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
-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
-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
-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
-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
|
850 |
-
cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
|
851 |
-
-----END CERTIFICATE-----
|
852 |
-
|
853 |
-
Visa eCommerce Root
|
854 |
-
===================
|
855 |
-
-----BEGIN CERTIFICATE-----
|
856 |
-
MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
|
857 |
-
EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
|
858 |
-
QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
|
859 |
-
WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
|
860 |
-
VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
|
861 |
-
bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
|
862 |
-
F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
|
863 |
-
RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
|
864 |
-
TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
|
865 |
-
/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
|
866 |
-
GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
|
867 |
-
MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
|
868 |
-
CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
|
869 |
-
YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
|
870 |
-
zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
|
871 |
-
YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
|
872 |
-
398znM/jra6O1I7mT1GvFpLgXPYHDw==
|
873 |
-
-----END CERTIFICATE-----
|
874 |
-
|
875 |
-
Certum Root CA
|
876 |
-
==============
|
877 |
-
-----BEGIN CERTIFICATE-----
|
878 |
-
MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
|
879 |
-
ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
|
880 |
-
Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
|
881 |
-
by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
|
882 |
-
wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
|
883 |
-
kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
|
884 |
-
89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
|
885 |
-
Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
|
886 |
-
NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
|
887 |
-
hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
|
888 |
-
GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
|
889 |
-
GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
|
890 |
-
0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
|
891 |
-
qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
|
892 |
-
-----END CERTIFICATE-----
|
893 |
-
|
894 |
-
Comodo AAA Services root
|
895 |
-
========================
|
896 |
-
-----BEGIN CERTIFICATE-----
|
897 |
-
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
898 |
-
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
899 |
-
TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
|
900 |
-
MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
|
901 |
-
c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
902 |
-
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
903 |
-
ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
|
904 |
-
C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
|
905 |
-
i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
|
906 |
-
Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
|
907 |
-
Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
|
908 |
-
Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
|
909 |
-
BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
|
910 |
-
cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
|
911 |
-
LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
|
912 |
-
7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
|
913 |
-
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
|
914 |
-
8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
|
915 |
-
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
916 |
-
-----END CERTIFICATE-----
|
917 |
-
|
918 |
-
Comodo Secure Services root
|
919 |
-
===========================
|
920 |
-
-----BEGIN CERTIFICATE-----
|
921 |
-
MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
922 |
-
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
923 |
-
TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
|
924 |
-
MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
|
925 |
-
Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
|
926 |
-
BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
927 |
-
ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
|
928 |
-
9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
|
929 |
-
rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
|
930 |
-
oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
|
931 |
-
p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
|
932 |
-
FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
|
933 |
-
gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
|
934 |
-
YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
|
935 |
-
aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
|
936 |
-
4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
|
937 |
-
Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
|
938 |
-
DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
|
939 |
-
pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
|
940 |
-
RR3B7Hzs/Sk=
|
941 |
-
-----END CERTIFICATE-----
|
942 |
-
|
943 |
-
Comodo Trusted Services root
|
944 |
-
============================
|
945 |
-
-----BEGIN CERTIFICATE-----
|
946 |
-
MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
947 |
-
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
948 |
-
TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
|
949 |
-
MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
|
950 |
-
bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
|
951 |
-
IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
952 |
-
AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
|
953 |
-
3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
|
954 |
-
/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
|
955 |
-
juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
|
956 |
-
ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
|
957 |
-
DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
958 |
-
/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
|
959 |
-
ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
|
960 |
-
cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
|
961 |
-
uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
|
962 |
-
pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
|
963 |
-
BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
|
964 |
-
R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
|
965 |
-
9y5Xt5hwXsjEeLBi
|
966 |
-
-----END CERTIFICATE-----
|
967 |
-
|
968 |
-
QuoVadis Root CA
|
969 |
-
================
|
970 |
-
-----BEGIN CERTIFICATE-----
|
971 |
-
MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
|
972 |
-
ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
973 |
-
eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
|
974 |
-
MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
|
975 |
-
cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
|
976 |
-
EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
|
977 |
-
AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
|
978 |
-
J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
|
979 |
-
F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
|
980 |
-
YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
|
981 |
-
AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
|
982 |
-
PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
|
983 |
-
ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
|
984 |
-
MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
|
985 |
-
YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
|
986 |
-
ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
|
987 |
-
Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
|
988 |
-
Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
|
989 |
-
BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
|
990 |
-
FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
|
991 |
-
aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
|
992 |
-
tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
|
993 |
-
fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
|
994 |
-
LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
|
995 |
-
gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
|
996 |
-
5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
|
997 |
-
5nrQNiOKSnQ2+Q==
|
998 |
-
-----END CERTIFICATE-----
|
999 |
-
|
1000 |
-
QuoVadis Root CA 2
|
1001 |
-
==================
|
1002 |
-
-----BEGIN CERTIFICATE-----
|
1003 |
-
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
-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
-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
-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
-
DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6
|
1008 |
-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
-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
-
lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy
|
1011 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
+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
-
IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1
|
1025 |
-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
-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
-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
-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
|
1029 |
-
-----END CERTIFICATE-----
|
1030 |
-
|
1031 |
-
QuoVadis Root CA 3
|
1032 |
-
==================
|
1033 |
-
-----BEGIN CERTIFICATE-----
|
1034 |
-
MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
|
1035 |
-
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
|
1036 |
-
OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
|
1037 |
-
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
1038 |
-
DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
|
1039 |
-
DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
|
1040 |
-
KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
|
1041 |
-
DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
|
1042 |
-
BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
|
1043 |
-
p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
|
1044 |
-
nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
|
1045 |
-
MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
|
1046 |
-
Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
|
1047 |
-
uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
|
1048 |
-
BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
|
1049 |
-
YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
|
1050 |
-
aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
|
1051 |
-
BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
|
1052 |
-
VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
|
1053 |
-
ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
|
1054 |
-
AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
|
1055 |
-
qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
|
1056 |
-
hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
|
1057 |
-
POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
|
1058 |
-
Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
|
1059 |
-
8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
|
1060 |
-
bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
|
1061 |
-
g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
|
1062 |
-
vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
|
1063 |
-
qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
|
1064 |
-
-----END CERTIFICATE-----
|
1065 |
-
|
1066 |
-
Security Communication Root CA
|
1067 |
-
==============================
|
1068 |
-
-----BEGIN CERTIFICATE-----
|
1069 |
-
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1070 |
-
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1071 |
-
HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1072 |
-
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1073 |
-
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
|
1074 |
-
8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
|
1075 |
-
DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
|
1076 |
-
5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
|
1077 |
-
DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
|
1078 |
-
JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
|
1079 |
-
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
|
1080 |
-
0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
|
1081 |
-
mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
|
1082 |
-
s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
|
1083 |
-
6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
|
1084 |
-
FL39vmwLAw==
|
1085 |
-
-----END CERTIFICATE-----
|
1086 |
-
|
1087 |
-
Sonera Class 1 Root CA
|
1088 |
-
======================
|
1089 |
-
-----BEGIN CERTIFICATE-----
|
1090 |
-
MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
1091 |
-
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw
|
1092 |
-
NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
1093 |
-
IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88
|
1094 |
-
7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9
|
1095 |
-
EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl
|
1096 |
-
0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645
|
1097 |
-
2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa
|
1098 |
-
HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT
|
1099 |
-
iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9
|
1100 |
-
28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV
|
1101 |
-
yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR
|
1102 |
-
vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P
|
1103 |
-
qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z
|
1104 |
-
IRlXvVWa
|
1105 |
-
-----END CERTIFICATE-----
|
1106 |
-
|
1107 |
-
Sonera Class 2 Root CA
|
1108 |
-
======================
|
1109 |
-
-----BEGIN CERTIFICATE-----
|
1110 |
-
MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
1111 |
-
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
|
1112 |
-
NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
1113 |
-
IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
|
1114 |
-
/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
|
1115 |
-
dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
|
1116 |
-
f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
|
1117 |
-
tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
|
1118 |
-
nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
|
1119 |
-
XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
|
1120 |
-
0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
|
1121 |
-
cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
|
1122 |
-
Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
|
1123 |
-
EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
|
1124 |
-
llpwrN9M
|
1125 |
-
-----END CERTIFICATE-----
|
1126 |
-
|
1127 |
-
Staat der Nederlanden Root CA
|
1128 |
-
=============================
|
1129 |
-
-----BEGIN CERTIFICATE-----
|
1130 |
-
MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
|
1131 |
-
ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
|
1132 |
-
Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
|
1133 |
-
HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
|
1134 |
-
bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
|
1135 |
-
vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
|
1136 |
-
jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
|
1137 |
-
C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
|
1138 |
-
vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
|
1139 |
-
22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
|
1140 |
-
HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
|
1141 |
-
dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
|
1142 |
-
BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
|
1143 |
-
EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
|
1144 |
-
MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
|
1145 |
-
nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
|
1146 |
-
iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
|
1147 |
-
-----END CERTIFICATE-----
|
1148 |
-
|
1149 |
-
TDC Internet Root CA
|
1150 |
-
====================
|
1151 |
-
-----BEGIN CERTIFICATE-----
|
1152 |
-
MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
|
1153 |
-
ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
|
1154 |
-
NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
|
1155 |
-
ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
1156 |
-
MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
|
1157 |
-
xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
|
1158 |
-
znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
|
1159 |
-
5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
|
1160 |
-
otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
|
1161 |
-
AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
|
1162 |
-
VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
|
1163 |
-
MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
|
1164 |
-
AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
|
1165 |
-
UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
|
1166 |
-
CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
|
1167 |
-
gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
|
1168 |
-
2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
|
1169 |
-
O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
|
1170 |
-
Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
|
1171 |
-
-----END CERTIFICATE-----
|
1172 |
-
|
1173 |
-
TDC OCES Root CA
|
1174 |
-
================
|
1175 |
-
-----BEGIN CERTIFICATE-----
|
1176 |
-
MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE
|
1177 |
-
ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5
|
1178 |
-
MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB
|
1179 |
-
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH
|
1180 |
-
nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0
|
1181 |
-
zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV
|
1182 |
-
iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde
|
1183 |
-
dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO
|
1184 |
-
3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB
|
1185 |
-
5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k
|
1186 |
-
ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm
|
1187 |
-
cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp
|
1188 |
-
Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x
|
1189 |
-
LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM
|
1190 |
-
MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm
|
1191 |
-
aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy
|
1192 |
-
MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647
|
1193 |
-
+RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6
|
1194 |
-
NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4
|
1195 |
-
A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc
|
1196 |
-
A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9
|
1197 |
-
AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1
|
1198 |
-
AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw==
|
1199 |
-
-----END CERTIFICATE-----
|
1200 |
-
|
1201 |
-
UTN DATACorp SGC Root CA
|
1202 |
-
========================
|
1203 |
-
-----BEGIN CERTIFICATE-----
|
1204 |
-
MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
|
1205 |
-
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1206 |
-
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
|
1207 |
-
BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
|
1208 |
-
MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
|
1209 |
-
HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
|
1210 |
-
dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1211 |
-
AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
|
1212 |
-
raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
|
1213 |
-
wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
|
1214 |
-
9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
|
1215 |
-
33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
|
1216 |
-
DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
|
1217 |
-
BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
|
1218 |
-
LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
|
1219 |
-
DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
|
1220 |
-
Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
|
1221 |
-
I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
|
1222 |
-
EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
|
1223 |
-
DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
|
1224 |
-
-----END CERTIFICATE-----
|
1225 |
-
|
1226 |
-
UTN USERFirst Email Root CA
|
1227 |
-
===========================
|
1228 |
-
-----BEGIN CERTIFICATE-----
|
1229 |
-
MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
|
1230 |
-
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1231 |
-
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0
|
1232 |
-
BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05
|
1233 |
-
OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx
|
1234 |
-
FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx
|
1235 |
-
ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz
|
1236 |
-
dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
1237 |
-
MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx
|
1238 |
-
B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8
|
1239 |
-
om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG
|
1240 |
-
TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl
|
1241 |
-
yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE
|
1242 |
-
AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV
|
1243 |
-
HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll
|
1244 |
-
bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
|
1245 |
-
AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne
|
1246 |
-
xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+
|
1247 |
-
5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV
|
1248 |
-
NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ
|
1249 |
-
w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ=
|
1250 |
-
-----END CERTIFICATE-----
|
1251 |
-
|
1252 |
-
UTN USERFirst Hardware Root CA
|
1253 |
-
==============================
|
1254 |
-
-----BEGIN CERTIFICATE-----
|
1255 |
-
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
|
1256 |
-
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1257 |
-
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
|
1258 |
-
BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
|
1259 |
-
OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
|
1260 |
-
eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
|
1261 |
-
ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
|
1262 |
-
DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
|
1263 |
-
wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
|
1264 |
-
tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
|
1265 |
-
i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
|
1266 |
-
Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
|
1267 |
-
gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
|
1268 |
-
lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
|
1269 |
-
UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
|
1270 |
-
BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
1271 |
-
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
|
1272 |
-
XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
|
1273 |
-
lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
|
1274 |
-
iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
|
1275 |
-
nfhmqA==
|
1276 |
-
-----END CERTIFICATE-----
|
1277 |
-
|
1278 |
-
UTN USERFirst Object Root CA
|
1279 |
-
============================
|
1280 |
-
-----BEGIN CERTIFICATE-----
|
1281 |
-
MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE
|
1282 |
-
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1283 |
-
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb
|
1284 |
-
BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz
|
1285 |
-
NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx
|
1286 |
-
HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy
|
1287 |
-
dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB
|
1288 |
-
BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR
|
1289 |
-
loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ
|
1290 |
-
w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu
|
1291 |
-
lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7
|
1292 |
-
RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL
|
1293 |
-
BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8
|
1294 |
-
ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly
|
1295 |
-
c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw
|
1296 |
-
DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw
|
1297 |
-
NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO
|
1298 |
-
PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE
|
1299 |
-
qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG
|
1300 |
-
hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g=
|
1301 |
-
-----END CERTIFICATE-----
|
1302 |
-
|
1303 |
-
Camerfirma Chambers of Commerce Root
|
1304 |
-
====================================
|
1305 |
-
-----BEGIN CERTIFICATE-----
|
1306 |
-
MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
1307 |
-
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
1308 |
-
ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
|
1309 |
-
NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
|
1310 |
-
cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
|
1311 |
-
MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
|
1312 |
-
AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
|
1313 |
-
xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
|
1314 |
-
NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
|
1315 |
-
DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
|
1316 |
-
d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
|
1317 |
-
EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
|
1318 |
-
cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
|
1319 |
-
AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
|
1320 |
-
bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
|
1321 |
-
VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
|
1322 |
-
aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
|
1323 |
-
fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
|
1324 |
-
L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
|
1325 |
-
UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
|
1326 |
-
ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
|
1327 |
-
erfutGWaIZDgqtCYvDi1czyL+Nw=
|
1328 |
-
-----END CERTIFICATE-----
|
1329 |
-
|
1330 |
-
Camerfirma Global Chambersign Root
|
1331 |
-
==================================
|
1332 |
-
-----BEGIN CERTIFICATE-----
|
1333 |
-
MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
1334 |
-
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
1335 |
-
ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
|
1336 |
-
NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
|
1337 |
-
YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
|
1338 |
-
MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
|
1339 |
-
ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
|
1340 |
-
1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
|
1341 |
-
by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
|
1342 |
-
6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
|
1343 |
-
8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
|
1344 |
-
BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
|
1345 |
-
aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
|
1346 |
-
Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
|
1347 |
-
aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
|
1348 |
-
ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
|
1349 |
-
bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
|
1350 |
-
PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
|
1351 |
-
gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
|
1352 |
-
PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
|
1353 |
-
IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
|
1354 |
-
t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
|
1355 |
-
-----END CERTIFICATE-----
|
1356 |
-
|
1357 |
-
NetLock Qualified (Class QA) Root
|
1358 |
-
=================================
|
1359 |
-
-----BEGIN CERTIFICATE-----
|
1360 |
-
MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1361 |
-
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1362 |
-
BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn
|
1363 |
-
eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0
|
1364 |
-
bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER
|
1365 |
-
MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0
|
1366 |
-
LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0
|
1367 |
-
dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP
|
1368 |
-
aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV
|
1369 |
-
CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e
|
1370 |
-
8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb
|
1371 |
-
m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ
|
1372 |
-
0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM
|
1373 |
-
0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
1374 |
-
HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2
|
1375 |
-
YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh
|
1376 |
-
biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p
|
1377 |
-
a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz
|
1378 |
-
YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg
|
1379 |
-
YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg
|
1380 |
-
ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov
|
1381 |
-
L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr
|
1382 |
-
Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0
|
1383 |
-
aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg
|
1384 |
-
YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0
|
1385 |
-
IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3
|
1386 |
-
DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN
|
1387 |
-
wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg
|
1388 |
-
W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc
|
1389 |
-
R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR
|
1390 |
-
5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko
|
1391 |
-
-----END CERTIFICATE-----
|
1392 |
-
|
1393 |
-
NetLock Notary (Class A) Root
|
1394 |
-
=============================
|
1395 |
-
-----BEGIN CERTIFICATE-----
|
1396 |
-
MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
|
1397 |
-
EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
1398 |
-
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
|
1399 |
-
ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
|
1400 |
-
DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
|
1401 |
-
EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
|
1402 |
-
VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
|
1403 |
-
cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
|
1404 |
-
D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
|
1405 |
-
z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
|
1406 |
-
/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
|
1407 |
-
tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
|
1408 |
-
4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
|
1409 |
-
A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
|
1410 |
-
Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
|
1411 |
-
bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
|
1412 |
-
IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
|
1413 |
-
LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
|
1414 |
-
ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
|
1415 |
-
IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
|
1416 |
-
IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
|
1417 |
-
b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
|
1418 |
-
bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
|
1419 |
-
Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
|
1420 |
-
bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
|
1421 |
-
ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
|
1422 |
-
ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
|
1423 |
-
CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
|
1424 |
-
KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
|
1425 |
-
8CgHrTwXZoi1/baI
|
1426 |
-
-----END CERTIFICATE-----
|
1427 |
-
|
1428 |
-
NetLock Business (Class B) Root
|
1429 |
-
===============================
|
1430 |
-
-----BEGIN CERTIFICATE-----
|
1431 |
-
MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1432 |
-
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1433 |
-
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
|
1434 |
-
VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
|
1435 |
-
VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
|
1436 |
-
bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
|
1437 |
-
VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
|
1438 |
-
iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
|
1439 |
-
o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
|
1440 |
-
1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
1441 |
-
HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
|
1442 |
-
RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
|
1443 |
-
dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
|
1444 |
-
ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
|
1445 |
-
c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
|
1446 |
-
YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
|
1447 |
-
c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
|
1448 |
-
Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
|
1449 |
-
bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
|
1450 |
-
IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
|
1451 |
-
YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
|
1452 |
-
cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
|
1453 |
-
43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
|
1454 |
-
stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
|
1455 |
-
-----END CERTIFICATE-----
|
1456 |
-
|
1457 |
-
NetLock Express (Class C) Root
|
1458 |
-
==============================
|
1459 |
-
-----BEGIN CERTIFICATE-----
|
1460 |
-
MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1461 |
-
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1462 |
-
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
|
1463 |
-
KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
|
1464 |
-
BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
1465 |
-
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
|
1466 |
-
ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
|
1467 |
-
jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
|
1468 |
-
W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
|
1469 |
-
euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
|
1470 |
-
DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
|
1471 |
-
RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
|
1472 |
-
YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
|
1473 |
-
IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
|
1474 |
-
aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
|
1475 |
-
ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
|
1476 |
-
ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
|
1477 |
-
dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
|
1478 |
-
emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
|
1479 |
-
IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
|
1480 |
-
UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
|
1481 |
-
YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
|
1482 |
-
xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
|
1483 |
-
gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
|
1484 |
-
-----END CERTIFICATE-----
|
1485 |
-
|
1486 |
-
XRamp Global CA Root
|
1487 |
-
====================
|
1488 |
-
-----BEGIN CERTIFICATE-----
|
1489 |
-
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
|
1490 |
-
BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
|
1491 |
-
dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
|
1492 |
-
dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
|
1493 |
-
HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
|
1494 |
-
U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
1495 |
-
dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
|
1496 |
-
IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
|
1497 |
-
foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
|
1498 |
-
zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
|
1499 |
-
AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
|
1500 |
-
xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
1501 |
-
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
|
1502 |
-
oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
|
1503 |
-
AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
|
1504 |
-
/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
|
1505 |
-
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
|
1506 |
-
nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
|
1507 |
-
8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
|
1508 |
-
-----END CERTIFICATE-----
|
1509 |
-
|
1510 |
-
Go Daddy Class 2 CA
|
1511 |
-
===================
|
1512 |
-
-----BEGIN CERTIFICATE-----
|
1513 |
-
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
|
1514 |
-
VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
|
1515 |
-
ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
|
1516 |
-
A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
|
1517 |
-
RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
|
1518 |
-
ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
|
1519 |
-
2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
|
1520 |
-
qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
|
1521 |
-
YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
|
1522 |
-
vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
|
1523 |
-
BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
|
1524 |
-
atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
|
1525 |
-
MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
|
1526 |
-
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
|
1527 |
-
PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
|
1528 |
-
I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
|
1529 |
-
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
|
1530 |
-
Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
|
1531 |
-
vZ8=
|
1532 |
-
-----END CERTIFICATE-----
|
1533 |
-
|
1534 |
-
Starfield Class 2 CA
|
1535 |
-
====================
|
1536 |
-
-----BEGIN CERTIFICATE-----
|
1537 |
-
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
|
1538 |
-
U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
|
1539 |
-
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
|
1540 |
-
MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
|
1541 |
-
A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
|
1542 |
-
SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
|
1543 |
-
bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
|
1544 |
-
JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
|
1545 |
-
epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
|
1546 |
-
F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
|
1547 |
-
MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
|
1548 |
-
hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
|
1549 |
-
bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
|
1550 |
-
QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
|
1551 |
-
afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
|
1552 |
-
PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
|
1553 |
-
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
|
1554 |
-
KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
|
1555 |
-
QBFGmh95DmK/D5fs4C8fF5Q=
|
1556 |
-
-----END CERTIFICATE-----
|
1557 |
-
|
1558 |
-
StartCom Certification Authority
|
1559 |
-
================================
|
1560 |
-
-----BEGIN CERTIFICATE-----
|
1561 |
-
MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
1562 |
-
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
1563 |
-
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
1564 |
-
NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
1565 |
-
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
1566 |
-
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
1567 |
-
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
1568 |
-
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
1569 |
-
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
1570 |
-
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
1571 |
-
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
1572 |
-
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
1573 |
-
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
1574 |
-
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
1575 |
-
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
1576 |
-
37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
|
1577 |
-
FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
|
1578 |
-
Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
|
1579 |
-
YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
|
1580 |
-
AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
|
1581 |
-
Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
|
1582 |
-
U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
|
1583 |
-
LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
|
1584 |
-
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
|
1585 |
-
cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
|
1586 |
-
dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
|
1587 |
-
AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
|
1588 |
-
3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
|
1589 |
-
vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
|
1590 |
-
fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
|
1591 |
-
fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
|
1592 |
-
EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
|
1593 |
-
yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
|
1594 |
-
1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
|
1595 |
-
lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
|
1596 |
-
g14=
|
1597 |
-
-----END CERTIFICATE-----
|
1598 |
-
|
1599 |
-
Taiwan GRCA
|
1600 |
-
===========
|
1601 |
-
-----BEGIN CERTIFICATE-----
|
1602 |
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8
|
1615 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
+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
|
1627 |
-
-----END CERTIFICATE-----
|
1628 |
-
|
1629 |
-
Firmaprofesional Root CA
|
1630 |
-
========================
|
1631 |
-
-----BEGIN CERTIFICATE-----
|
1632 |
-
MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
|
1633 |
-
GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
|
1634 |
-
Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
|
1635 |
-
ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
|
1636 |
-
MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
|
1637 |
-
OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
|
1638 |
-
ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
|
1639 |
-
AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
|
1640 |
-
j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
|
1641 |
-
lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
|
1642 |
-
3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
|
1643 |
-
NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
|
1644 |
-
KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
|
1645 |
-
AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
|
1646 |
-
DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
|
1647 |
-
ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
|
1648 |
-
u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
|
1649 |
-
wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
|
1650 |
-
7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
|
1651 |
-
VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
|
1652 |
-
-----END CERTIFICATE-----
|
1653 |
-
|
1654 |
-
Wells Fargo Root CA
|
1655 |
-
===================
|
1656 |
-
-----BEGIN CERTIFICATE-----
|
1657 |
-
MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV
|
1658 |
-
BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
1659 |
-
cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
1660 |
-
MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl
|
1661 |
-
bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv
|
1662 |
-
MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
|
1663 |
-
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX
|
1664 |
-
x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3
|
1665 |
-
E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5
|
1666 |
-
OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j
|
1667 |
-
sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj
|
1668 |
-
YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF
|
1669 |
-
BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD
|
1670 |
-
ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv
|
1671 |
-
m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R
|
1672 |
-
OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx
|
1673 |
-
x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023
|
1674 |
-
tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s=
|
1675 |
-
-----END CERTIFICATE-----
|
1676 |
-
|
1677 |
-
Swisscom Root CA 1
|
1678 |
-
==================
|
1679 |
-
-----BEGIN CERTIFICATE-----
|
1680 |
-
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
-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
-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
-
MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
|
1684 |
-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
-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
-
MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
|
1687 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
|
1703 |
-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
-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
-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
|
1706 |
-
NY6E0F/6MBr1mmz0DlP5OlvRHA==
|
1707 |
-
-----END CERTIFICATE-----
|
1708 |
-
|
1709 |
-
DigiCert Assured ID Root CA
|
1710 |
-
===========================
|
1711 |
-
-----BEGIN CERTIFICATE-----
|
1712 |
-
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
|
1713 |
-
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
1714 |
-
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
|
1715 |
-
MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
1716 |
-
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
|
1717 |
-
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
|
1718 |
-
9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
|
1719 |
-
UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
|
1720 |
-
/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
|
1721 |
-
oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
|
1722 |
-
GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
|
1723 |
-
66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
|
1724 |
-
hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
|
1725 |
-
EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
|
1726 |
-
SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
|
1727 |
-
8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
1728 |
-
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
1729 |
-
-----END CERTIFICATE-----
|
1730 |
-
|
1731 |
-
DigiCert Global Root CA
|
1732 |
-
=======================
|
1733 |
-
-----BEGIN CERTIFICATE-----
|
1734 |
-
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
|
1735 |
-
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
1736 |
-
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
|
1737 |
-
MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
1738 |
-
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
|
1739 |
-
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
|
1740 |
-
TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
|
1741 |
-
BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
|
1742 |
-
4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
|
1743 |
-
7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
|
1744 |
-
o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
|
1745 |
-
8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
|
1746 |
-
BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
|
1747 |
-
EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
|
1748 |
-
tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
|
1749 |
-
UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
1750 |
-
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
1751 |
-
-----END CERTIFICATE-----
|
1752 |
-
|
1753 |
-
DigiCert High Assurance EV Root CA
|
1754 |
-
==================================
|
1755 |
-
-----BEGIN CERTIFICATE-----
|
1756 |
-
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
|
1757 |
-
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
|
1758 |
-
KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
|
1759 |
-
MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
|
1760 |
-
MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
|
1761 |
-
Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
|
1762 |
-
Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
|
1763 |
-
OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
|
1764 |
-
MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
|
1765 |
-
NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
|
1766 |
-
h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
|
1767 |
-
Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
|
1768 |
-
JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
|
1769 |
-
V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
|
1770 |
-
myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
|
1771 |
-
mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
|
1772 |
-
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
|
1773 |
-
-----END CERTIFICATE-----
|
1774 |
-
|
1775 |
-
Certplus Class 2 Primary CA
|
1776 |
-
===========================
|
1777 |
-
-----BEGIN CERTIFICATE-----
|
1778 |
-
MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
|
1779 |
-
BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
|
1780 |
-
OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
|
1781 |
-
dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
1782 |
-
ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
|
1783 |
-
5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
|
1784 |
-
Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
|
1785 |
-
YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
|
1786 |
-
e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
|
1787 |
-
CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
|
1788 |
-
YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
|
1789 |
-
L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
|
1790 |
-
P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
|
1791 |
-
TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
|
1792 |
-
7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
|
1793 |
-
//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
|
1794 |
-
l7+ijrRU
|
1795 |
-
-----END CERTIFICATE-----
|
1796 |
-
|
1797 |
-
DST Root CA X3
|
1798 |
-
==============
|
1799 |
-
-----BEGIN CERTIFICATE-----
|
1800 |
-
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
|
1801 |
-
ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
|
1802 |
-
DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
|
1803 |
-
cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
|
1804 |
-
ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
|
1805 |
-
rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
|
1806 |
-
UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
|
1807 |
-
xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
|
1808 |
-
utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
|
1809 |
-
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
|
1810 |
-
MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
|
1811 |
-
dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
|
1812 |
-
GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
|
1813 |
-
RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
|
1814 |
-
fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
|
1815 |
-
-----END CERTIFICATE-----
|
1816 |
-
|
1817 |
-
DST ACES CA X6
|
1818 |
-
==============
|
1819 |
-
-----BEGIN CERTIFICATE-----
|
1820 |
-
MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
|
1821 |
-
EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
|
1822 |
-
MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
|
1823 |
-
MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
|
1824 |
-
CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1825 |
-
AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
|
1826 |
-
DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
|
1827 |
-
pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
|
1828 |
-
GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
|
1829 |
-
MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
|
1830 |
-
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
|
1831 |
-
Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
|
1832 |
-
dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
|
1833 |
-
CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
|
1834 |
-
5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
|
1835 |
-
Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
|
1836 |
-
nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
|
1837 |
-
vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
|
1838 |
-
oKfN5XozNmr6mis=
|
1839 |
-
-----END CERTIFICATE-----
|
1840 |
-
|
1841 |
-
TURKTRUST Certificate Services Provider Root 1
|
1842 |
-
==============================================
|
1843 |
-
-----BEGIN CERTIFICATE-----
|
1844 |
-
MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
1845 |
-
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
|
1846 |
-
MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
|
1847 |
-
acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
|
1848 |
-
MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
|
1849 |
-
U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
|
1850 |
-
TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
|
1851 |
-
aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1852 |
-
AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
|
1853 |
-
yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
|
1854 |
-
Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
|
1855 |
-
8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
|
1856 |
-
W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
|
1857 |
-
BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
|
1858 |
-
sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
|
1859 |
-
q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
|
1860 |
-
B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
|
1861 |
-
nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
|
1862 |
-
-----END CERTIFICATE-----
|
1863 |
-
|
1864 |
-
TURKTRUST Certificate Services Provider Root 2
|
1865 |
-
==============================================
|
1866 |
-
-----BEGIN CERTIFICATE-----
|
1867 |
-
MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
1868 |
-
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
|
1869 |
-
MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
|
1870 |
-
QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
|
1871 |
-
MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
|
1872 |
-
dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
|
1873 |
-
A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
|
1874 |
-
acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
|
1875 |
-
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
|
1876 |
-
LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
|
1877 |
-
x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
|
1878 |
-
QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
|
1879 |
-
5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
|
1880 |
-
AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
|
1881 |
-
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
|
1882 |
-
Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
|
1883 |
-
Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
|
1884 |
-
hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
|
1885 |
-
9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
|
1886 |
-
UrbnBEI=
|
1887 |
-
-----END CERTIFICATE-----
|
1888 |
-
|
1889 |
-
SwissSign Platinum CA - G2
|
1890 |
-
==========================
|
1891 |
-
-----BEGIN CERTIFICATE-----
|
1892 |
-
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
-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
-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
-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
-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
-
669yIIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2HtnIuJpX+UF
|
1898 |
-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
-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
-
j5+saCB9bzuohTEJfwvH6GXp43gOCWcwizSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/6
|
1901 |
-
8++QHkwFix7qepF6w9fl+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34T
|
1902 |
-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
-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
-
+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
-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
-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
-
zAeHFUdvOMW0ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW
|
1908 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
|
1918 |
-
-----END CERTIFICATE-----
|
1919 |
-
|
1920 |
-
SwissSign Gold CA - G2
|
1921 |
-
======================
|
1922 |
-
-----BEGIN CERTIFICATE-----
|
1923 |
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
|
1949 |
-
-----END CERTIFICATE-----
|
1950 |
-
|
1951 |
-
SwissSign Silver CA - G2
|
1952 |
-
========================
|
1953 |
-
-----BEGIN CERTIFICATE-----
|
1954 |
-
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
-
BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X
|
1956 |
-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
-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
-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
-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
-
+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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP
|
1976 |
-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
-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
-
DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub
|
1979 |
-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
|
1980 |
-
-----END CERTIFICATE-----
|
1981 |
-
|
1982 |
-
GeoTrust Primary Certification Authority
|
1983 |
-
========================================
|
1984 |
-
-----BEGIN CERTIFICATE-----
|
1985 |
-
MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
|
1986 |
-
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
|
1987 |
-
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
|
1988 |
-
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
|
1989 |
-
cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
1990 |
-
CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
|
1991 |
-
b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
|
1992 |
-
nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
|
1993 |
-
RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
|
1994 |
-
tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
1995 |
-
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
|
1996 |
-
hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
|
1997 |
-
Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
|
1998 |
-
NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
|
1999 |
-
Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
|
2000 |
-
1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
|
2001 |
-
-----END CERTIFICATE-----
|
2002 |
-
|
2003 |
-
thawte Primary Root CA
|
2004 |
-
======================
|
2005 |
-
-----BEGIN CERTIFICATE-----
|
2006 |
-
MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
|
2007 |
-
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
2008 |
-
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
2009 |
-
cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
|
2010 |
-
MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
|
2011 |
-
SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
|
2012 |
-
KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
|
2013 |
-
FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
|
2014 |
-
oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
|
2015 |
-
1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
|
2016 |
-
q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
|
2017 |
-
aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
|
2018 |
-
afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
|
2019 |
-
VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
|
2020 |
-
AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
|
2021 |
-
uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
|
2022 |
-
xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
|
2023 |
-
jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
|
2024 |
-
z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
|
2025 |
-
-----END CERTIFICATE-----
|
2026 |
-
|
2027 |
-
VeriSign Class 3 Public Primary Certification Authority - G5
|
2028 |
-
============================================================
|
2029 |
-
-----BEGIN CERTIFICATE-----
|
2030 |
-
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
|
2031 |
-
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
2032 |
-
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
2033 |
-
IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
|
2034 |
-
ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
|
2035 |
-
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
|
2036 |
-
biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
|
2037 |
-
dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
|
2038 |
-
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
2039 |
-
ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
|
2040 |
-
j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
|
2041 |
-
Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
|
2042 |
-
Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
|
2043 |
-
fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
|
2044 |
-
BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
|
2045 |
-
Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
|
2046 |
-
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
|
2047 |
-
SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
|
2048 |
-
X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
|
2049 |
-
KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
|
2050 |
-
Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
|
2051 |
-
ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
|
2052 |
-
-----END CERTIFICATE-----
|
2053 |
-
|
2054 |
-
SecureTrust CA
|
2055 |
-
==============
|
2056 |
-
-----BEGIN CERTIFICATE-----
|
2057 |
-
MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
|
2058 |
-
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
|
2059 |
-
dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
|
2060 |
-
BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
|
2061 |
-
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
|
2062 |
-
OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
|
2063 |
-
DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
|
2064 |
-
GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
|
2065 |
-
01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
|
2066 |
-
ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
|
2067 |
-
BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
|
2068 |
-
aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
2069 |
-
KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
|
2070 |
-
SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
|
2071 |
-
mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
|
2072 |
-
nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
|
2073 |
-
3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
|
2074 |
-
-----END CERTIFICATE-----
|
2075 |
-
|
2076 |
-
Secure Global CA
|
2077 |
-
================
|
2078 |
-
-----BEGIN CERTIFICATE-----
|
2079 |
-
MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
|
2080 |
-
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
|
2081 |
-
bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
|
2082 |
-
MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
|
2083 |
-
Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
|
2084 |
-
YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
|
2085 |
-
bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
|
2086 |
-
8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
|
2087 |
-
HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
|
2088 |
-
0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
2089 |
-
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
|
2090 |
-
oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
|
2091 |
-
MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
|
2092 |
-
OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
|
2093 |
-
CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
|
2094 |
-
3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
|
2095 |
-
f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
|
2096 |
-
-----END CERTIFICATE-----
|
2097 |
-
|
2098 |
-
COMODO Certification Authority
|
2099 |
-
==============================
|
2100 |
-
-----BEGIN CERTIFICATE-----
|
2101 |
-
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
|
2102 |
-
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
|
2103 |
-
A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
|
2104 |
-
dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
|
2105 |
-
MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
|
2106 |
-
T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
2107 |
-
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
|
2108 |
-
+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
|
2109 |
-
xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
|
2110 |
-
4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
|
2111 |
-
1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
|
2112 |
-
rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
|
2113 |
-
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
|
2114 |
-
b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
|
2115 |
-
AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
|
2116 |
-
OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
|
2117 |
-
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
|
2118 |
-
IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
|
2119 |
-
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
|
2120 |
-
-----END CERTIFICATE-----
|
2121 |
-
|
2122 |
-
Network Solutions Certificate Authority
|
2123 |
-
=======================================
|
2124 |
-
-----BEGIN CERTIFICATE-----
|
2125 |
-
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
|
2126 |
-
EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
|
2127 |
-
IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
|
2128 |
-
MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
|
2129 |
-
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
2130 |
-
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
|
2131 |
-
jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
|
2132 |
-
aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
|
2133 |
-
crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
|
2134 |
-
/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
|
2135 |
-
AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
|
2136 |
-
BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
|
2137 |
-
bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
|
2138 |
-
A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
|
2139 |
-
4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
|
2140 |
-
GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
|
2141 |
-
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
|
2142 |
-
ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
2143 |
-
-----END CERTIFICATE-----
|
2144 |
-
|
2145 |
-
WellsSecure Public Root Certificate Authority
|
2146 |
-
=============================================
|
2147 |
-
-----BEGIN CERTIFICATE-----
|
2148 |
-
MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
|
2149 |
-
F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
|
2150 |
-
NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
2151 |
-
MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
|
2152 |
-
bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
|
2153 |
-
VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
2154 |
-
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
|
2155 |
-
iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
|
2156 |
-
i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
|
2157 |
-
bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
|
2158 |
-
K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
|
2159 |
-
AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
|
2160 |
-
cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
|
2161 |
-
lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
|
2162 |
-
i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
|
2163 |
-
GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
|
2164 |
-
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
|
2165 |
-
K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
|
2166 |
-
bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
|
2167 |
-
qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
|
2168 |
-
E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
|
2169 |
-
tylv2G0xffX8oRAHh84vWdw+WNs=
|
2170 |
-
-----END CERTIFICATE-----
|
2171 |
-
|
2172 |
-
COMODO ECC Certification Authority
|
2173 |
-
==================================
|
2174 |
-
-----BEGIN CERTIFICATE-----
|
2175 |
-
MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
|
2176 |
-
R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
|
2177 |
-
ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
|
2178 |
-
dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
|
2179 |
-
GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
|
2180 |
-
Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
|
2181 |
-
b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
|
2182 |
-
4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
|
2183 |
-
wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
|
2184 |
-
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
|
2185 |
-
FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
|
2186 |
-
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
|
2187 |
-
-----END CERTIFICATE-----
|
2188 |
-
|
2189 |
-
IGC/A
|
2190 |
-
=====
|
2191 |
-
-----BEGIN CERTIFICATE-----
|
2192 |
-
MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
|
2193 |
-
VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
|
2194 |
-
Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
|
2195 |
-
MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
|
2196 |
-
EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
|
2197 |
-
STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
|
2198 |
-
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
|
2199 |
-
TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
|
2200 |
-
So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
|
2201 |
-
HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
|
2202 |
-
frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
|
2203 |
-
tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
|
2204 |
-
egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
|
2205 |
-
iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
|
2206 |
-
q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
|
2207 |
-
MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
|
2208 |
-
Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
|
2209 |
-
lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
|
2210 |
-
0mBWWg==
|
2211 |
-
-----END CERTIFICATE-----
|
2212 |
-
|
2213 |
-
Security Communication EV RootCA1
|
2214 |
-
=================================
|
2215 |
-
-----BEGIN CERTIFICATE-----
|
2216 |
-
MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
2217 |
-
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
|
2218 |
-
dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
|
2219 |
-
BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
|
2220 |
-
Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2221 |
-
AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
|
2222 |
-
/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
|
2223 |
-
WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
|
2224 |
-
ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
|
2225 |
-
bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
|
2226 |
-
9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
|
2227 |
-
SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
|
2228 |
-
iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
|
2229 |
-
Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
|
2230 |
-
mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
|
2231 |
-
T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
|
2232 |
-
-----END CERTIFICATE-----
|
2233 |
-
|
2234 |
-
OISTE WISeKey Global Root GA CA
|
2235 |
-
===============================
|
2236 |
-
-----BEGIN CERTIFICATE-----
|
2237 |
-
MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
|
2238 |
-
BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
|
2239 |
-
A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
|
2240 |
-
bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
|
2241 |
-
VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
|
2242 |
-
IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
|
2243 |
-
IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
|
2244 |
-
Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
|
2245 |
-
Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
|
2246 |
-
d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
|
2247 |
-
/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
|
2248 |
-
LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
|
2249 |
-
AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
2250 |
-
KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
|
2251 |
-
MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
|
2252 |
-
+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
|
2253 |
-
hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
|
2254 |
-
okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
|
2255 |
-
-----END CERTIFICATE-----
|
2256 |
-
|
2257 |
-
S-TRUST Authentication and Encryption Root CA 2005 PN
|
2258 |
-
=====================================================
|
2259 |
-
-----BEGIN CERTIFICATE-----
|
2260 |
-
MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
|
2261 |
-
BhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcpMRIwEAYDVQQHEwlTdHV0dGdh
|
2262 |
-
cnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fzc2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVT
|
2263 |
-
LVRSVVNUIEF1dGhlbnRpY2F0aW9uIGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0w
|
2264 |
-
NTA2MjIwMDAwMDBaFw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFk
|
2265 |
-
ZW4tV3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMgRGV1dHNj
|
2266 |
-
aGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJVU1QgQXV0aGVudGljYXRp
|
2267 |
-
b24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2268 |
-
MIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob
|
2269 |
-
4QSwI7+Vio5bG0F/WsPoTUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXL
|
2270 |
-
g3KSwlOyggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1Xgqf
|
2271 |
-
eN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteFhy+S8dF2g08LOlk3
|
2272 |
-
KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm7QIDAQABo4GSMIGPMBIGA1UdEwEB
|
2273 |
-
/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJv
|
2274 |
-
bmxpbmUxLTIwNDgtNTAdBgNVHQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAU
|
2275 |
-
D8oeXHngovMpttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD
|
2276 |
-
pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFoLtU96G7m1R08
|
2277 |
-
P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersFiXOMy6ZNwPv2AtawB6MDwidA
|
2278 |
-
nwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0yh9WUUpY6RsZxlj33mA6ykaqP2vROJAA5Veit
|
2279 |
-
F7nTNCtKqUDMFypVZUF0Qn71wK/Ik63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8b
|
2280 |
-
Hz2eBIPdltkdOpQ=
|
2281 |
-
-----END CERTIFICATE-----
|
2282 |
-
|
2283 |
-
Microsec e-Szigno Root CA
|
2284 |
-
=========================
|
2285 |
-
-----BEGIN CERTIFICATE-----
|
2286 |
-
MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
|
2287 |
-
BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
|
2288 |
-
EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
|
2289 |
-
MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
|
2290 |
-
dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
|
2291 |
-
GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
2292 |
-
AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
|
2293 |
-
d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
|
2294 |
-
oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
|
2295 |
-
QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
|
2296 |
-
PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
|
2297 |
-
MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
|
2298 |
-
IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
|
2299 |
-
VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
|
2300 |
-
LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
|
2301 |
-
dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
|
2302 |
-
AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
|
2303 |
-
4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
|
2304 |
-
AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
|
2305 |
-
egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
|
2306 |
-
Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
|
2307 |
-
PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
|
2308 |
-
c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
|
2309 |
-
cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
|
2310 |
-
IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
|
2311 |
-
WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
|
2312 |
-
MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
|
2313 |
-
MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
|
2314 |
-
Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
|
2315 |
-
HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
|
2316 |
-
nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
|
2317 |
-
aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
|
2318 |
-
86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
|
2319 |
-
yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
|
2320 |
-
S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
|
2321 |
-
-----END CERTIFICATE-----
|
2322 |
-
|
2323 |
-
Certigna
|
2324 |
-
========
|
2325 |
-
-----BEGIN CERTIFICATE-----
|
2326 |
-
MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
|
2327 |
-
EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
|
2328 |
-
MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
|
2329 |
-
Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
|
2330 |
-
XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
|
2331 |
-
GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
|
2332 |
-
ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
|
2333 |
-
DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
|
2334 |
-
Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
|
2335 |
-
tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
|
2336 |
-
BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
|
2337 |
-
SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
|
2338 |
-
hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
|
2339 |
-
ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
|
2340 |
-
PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
|
2341 |
-
1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
|
2342 |
-
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
|
2343 |
-
-----END CERTIFICATE-----
|
2344 |
-
|
2345 |
-
AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
|
2346 |
-
======================================
|
2347 |
-
-----BEGIN CERTIFICATE-----
|
2348 |
-
MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
|
2349 |
-
AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
|
2350 |
-
LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
|
2351 |
-
HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
|
2352 |
-
U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
|
2353 |
-
IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
|
2354 |
-
AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
|
2355 |
-
yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
|
2356 |
-
2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
|
2357 |
-
4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
|
2358 |
-
2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
|
2359 |
-
8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
|
2360 |
-
HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
|
2361 |
-
Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
|
2362 |
-
5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
|
2363 |
-
czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
|
2364 |
-
AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
|
2365 |
-
ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
|
2366 |
-
BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
|
2367 |
-
cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
|
2368 |
-
AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
|
2369 |
-
EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
|
2370 |
-
/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
|
2371 |
-
MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
|
2372 |
-
3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
|
2373 |
-
eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
|
2374 |
-
/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
|
2375 |
-
RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
|
2376 |
-
Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
|
2377 |
-
-----END CERTIFICATE-----
|
2378 |
-
|
2379 |
-
TC TrustCenter Class 2 CA II
|
2380 |
-
============================
|
2381 |
-
-----BEGIN CERTIFICATE-----
|
2382 |
-
MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
|
2383 |
-
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
|
2384 |
-
IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
|
2385 |
-
MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
|
2386 |
-
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
|
2387 |
-
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2388 |
-
AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
|
2389 |
-
IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
|
2390 |
-
xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
|
2391 |
-
Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
|
2392 |
-
SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
|
2393 |
-
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
|
2394 |
-
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
|
2395 |
-
Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
|
2396 |
-
cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
|
2397 |
-
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
2398 |
-
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
|
2399 |
-
dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
|
2400 |
-
KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
|
2401 |
-
TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
|
2402 |
-
JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
|
2403 |
-
vQ==
|
2404 |
-
-----END CERTIFICATE-----
|
2405 |
-
|
2406 |
-
TC TrustCenter Class 3 CA II
|
2407 |
-
============================
|
2408 |
-
-----BEGIN CERTIFICATE-----
|
2409 |
-
MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
|
2410 |
-
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
|
2411 |
-
IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
|
2412 |
-
MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
|
2413 |
-
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
|
2414 |
-
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2415 |
-
AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
|
2416 |
-
yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
|
2417 |
-
6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
|
2418 |
-
uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
|
2419 |
-
2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
|
2420 |
-
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
|
2421 |
-
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
|
2422 |
-
Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
|
2423 |
-
cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
|
2424 |
-
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
2425 |
-
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
|
2426 |
-
O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
|
2427 |
-
yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
|
2428 |
-
IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
|
2429 |
-
092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
|
2430 |
-
5A==
|
2431 |
-
-----END CERTIFICATE-----
|
2432 |
-
|
2433 |
-
TC TrustCenter Universal CA I
|
2434 |
-
=============================
|
2435 |
-
-----BEGIN CERTIFICATE-----
|
2436 |
-
MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
|
2437 |
-
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
|
2438 |
-
IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
|
2439 |
-
MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
|
2440 |
-
VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
|
2441 |
-
JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
|
2442 |
-
ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
|
2443 |
-
qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
|
2444 |
-
xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
|
2445 |
-
ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
|
2446 |
-
gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
|
2447 |
-
BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
2448 |
-
AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
|
2449 |
-
1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
|
2450 |
-
vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
|
2451 |
-
ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
|
2452 |
-
ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
|
2453 |
-
7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
|
2454 |
-
-----END CERTIFICATE-----
|
2455 |
-
|
2456 |
-
Deutsche Telekom Root CA 2
|
2457 |
-
==========================
|
2458 |
-
-----BEGIN CERTIFICATE-----
|
2459 |
-
MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
|
2460 |
-
RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
|
2461 |
-
A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
|
2462 |
-
MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
|
2463 |
-
A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
|
2464 |
-
b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
|
2465 |
-
bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
|
2466 |
-
KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
|
2467 |
-
AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
|
2468 |
-
Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
|
2469 |
-
jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
|
2470 |
-
HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
|
2471 |
-
E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
|
2472 |
-
zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
|
2473 |
-
rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
|
2474 |
-
dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
|
2475 |
-
Cm26OWMohpLzGITY+9HPBVZkVw==
|
2476 |
-
-----END CERTIFICATE-----
|
2477 |
-
|
2478 |
-
ComSign CA
|
2479 |
-
==========
|
2480 |
-
-----BEGIN CERTIFICATE-----
|
2481 |
-
MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0MRMwEQYDVQQD
|
2482 |
-
EwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTMy
|
2483 |
-
MThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMTCkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNp
|
2484 |
-
Z24xCzAJBgNVBAYTAklMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49q
|
2485 |
-
ROR+WCf4C9DklBKK8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTy
|
2486 |
-
P2Q298CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb2CEJKHxN
|
2487 |
-
GGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxCejVb7Us6eva1jsz/D3zk
|
2488 |
-
YDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7KpiXd3DTKaCQeQzC6zJMw9kglcq/QytNuEM
|
2489 |
-
rkvF7zuZ2SOzW120V+x0cAwqTwIDAQABo4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAy
|
2490 |
-
oDCgLoYsaHR0cDovL2ZlZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0P
|
2491 |
-
AQH/BAQDAgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRLAZs+
|
2492 |
-
VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWdfoPPbrxHbvUanlR2
|
2493 |
-
QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0McXS6hMTXcpuEfDhOZAYnKuGntewI
|
2494 |
-
mbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb
|
2495 |
-
/627HOkthIDYIb6FUtnUdLlphbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VG
|
2496 |
-
zT2ouvDzuFYkRes3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U
|
2497 |
-
AGegcQCCSA==
|
2498 |
-
-----END CERTIFICATE-----
|
2499 |
-
|
2500 |
-
ComSign Secured CA
|
2501 |
-
==================
|
2502 |
-
-----BEGIN CERTIFICATE-----
|
2503 |
-
MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
|
2504 |
-
AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
|
2505 |
-
NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
|
2506 |
-
QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
2507 |
-
ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
|
2508 |
-
49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
|
2509 |
-
7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
|
2510 |
-
kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
|
2511 |
-
9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
|
2512 |
-
AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
|
2513 |
-
U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
|
2514 |
-
j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
|
2515 |
-
AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
|
2516 |
-
BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
|
2517 |
-
FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
|
2518 |
-
51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
|
2519 |
-
OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
|
2520 |
-
-----END CERTIFICATE-----
|
2521 |
-
|
2522 |
-
Cybertrust Global Root
|
2523 |
-
======================
|
2524 |
-
-----BEGIN CERTIFICATE-----
|
2525 |
-
MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
|
2526 |
-
ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
|
2527 |
-
MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
|
2528 |
-
ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
2529 |
-
+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
|
2530 |
-
0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
|
2531 |
-
AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
|
2532 |
-
89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
|
2533 |
-
8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
|
2534 |
-
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
|
2535 |
-
MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
|
2536 |
-
A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
|
2537 |
-
lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
|
2538 |
-
5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
|
2539 |
-
hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
|
2540 |
-
X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
|
2541 |
-
WL1WMRJOEcgh4LMRkWXbtKaIOM5V
|
2542 |
-
-----END CERTIFICATE-----
|
2543 |
-
|
2544 |
-
ePKI Root Certification Authority
|
2545 |
-
=================================
|
2546 |
-
-----BEGIN CERTIFICATE-----
|
2547 |
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+
|
2558 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx
|
2570 |
-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
-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
-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
|
2573 |
-
-----END CERTIFICATE-----
|
2574 |
-
|
2575 |
-
T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
|
2576 |
-
=============================================================================================================================
|
2577 |
-
-----BEGIN CERTIFICATE-----
|
2578 |
-
MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
|
2579 |
-
DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
|
2580 |
-
aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
|
2581 |
-
b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
|
2582 |
-
BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
|
2583 |
-
S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
|
2584 |
-
MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
|
2585 |
-
IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
|
2586 |
-
n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
|
2587 |
-
IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
|
2588 |
-
dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
|
2589 |
-
cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
|
2590 |
-
AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
|
2591 |
-
Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
|
2592 |
-
xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
|
2593 |
-
6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
|
2594 |
-
hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
|
2595 |
-
BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
|
2596 |
-
MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
|
2597 |
-
N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
|
2598 |
-
y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
|
2599 |
-
LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
|
2600 |
-
dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
|
2601 |
-
-----END CERTIFICATE-----
|
2602 |
-
|
2603 |
-
Buypass Class 2 CA 1
|
2604 |
-
====================
|
2605 |
-
-----BEGIN CERTIFICATE-----
|
2606 |
-
MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
2607 |
-
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
|
2608 |
-
MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
|
2609 |
-
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
|
2610 |
-
hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
|
2611 |
-
cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
|
2612 |
-
0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
|
2613 |
-
0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
|
2614 |
-
uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
|
2615 |
-
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
|
2616 |
-
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
|
2617 |
-
1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
|
2618 |
-
7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
|
2619 |
-
fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
|
2620 |
-
wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
|
2621 |
-
-----END CERTIFICATE-----
|
2622 |
-
|
2623 |
-
Buypass Class 3 CA 1
|
2624 |
-
====================
|
2625 |
-
-----BEGIN CERTIFICATE-----
|
2626 |
-
MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
2627 |
-
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
|
2628 |
-
MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
|
2629 |
-
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
|
2630 |
-
hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
|
2631 |
-
ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
|
2632 |
-
n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
|
2633 |
-
AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
|
2634 |
-
1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
|
2635 |
-
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
|
2636 |
-
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
|
2637 |
-
pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
|
2638 |
-
EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
|
2639 |
-
htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
|
2640 |
-
el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
|
2641 |
-
-----END CERTIFICATE-----
|
2642 |
-
|
2643 |
-
EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
|
2644 |
-
==========================================================================
|
2645 |
-
-----BEGIN CERTIFICATE-----
|
2646 |
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm
|
2660 |
-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
-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
-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
-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
-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
-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
-
XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT
|
2667 |
-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
-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
-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
-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
-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
-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
|
2673 |
-
-----END CERTIFICATE-----
|
2674 |
-
|
2675 |
-
certSIGN ROOT CA
|
2676 |
-
================
|
2677 |
-
-----BEGIN CERTIFICATE-----
|
2678 |
-
MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
|
2679 |
-
VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
|
2680 |
-
Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
|
2681 |
-
CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
|
2682 |
-
JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
|
2683 |
-
rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
|
2684 |
-
ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
|
2685 |
-
0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
|
2686 |
-
AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
|
2687 |
-
Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
|
2688 |
-
AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
|
2689 |
-
SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
|
2690 |
-
x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
|
2691 |
-
vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
|
2692 |
-
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
|
2693 |
-
-----END CERTIFICATE-----
|
2694 |
-
|
2695 |
-
CNNIC ROOT
|
2696 |
-
==========
|
2697 |
-
-----BEGIN CERTIFICATE-----
|
2698 |
-
MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
|
2699 |
-
ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
|
2700 |
-
OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
|
2701 |
-
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
|
2702 |
-
o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
|
2703 |
-
VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
|
2704 |
-
VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
|
2705 |
-
czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
|
2706 |
-
y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
|
2707 |
-
wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
|
2708 |
-
lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
|
2709 |
-
Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
|
2710 |
-
O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
|
2711 |
-
BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
|
2712 |
-
G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
|
2713 |
-
mxE=
|
2714 |
-
-----END CERTIFICATE-----
|
2715 |
-
|
2716 |
-
ApplicationCA - Japanese Government
|
2717 |
-
===================================
|
2718 |
-
-----BEGIN CERTIFICATE-----
|
2719 |
-
MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
|
2720 |
-
SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
|
2721 |
-
MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
|
2722 |
-
cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
2723 |
-
CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
|
2724 |
-
fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
|
2725 |
-
wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
|
2726 |
-
jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
|
2727 |
-
nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
|
2728 |
-
WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
|
2729 |
-
BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
|
2730 |
-
vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
|
2731 |
-
o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
|
2732 |
-
/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
|
2733 |
-
io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
|
2734 |
-
dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
|
2735 |
-
rosot4LKGAfmt1t06SAZf7IbiVQ=
|
2736 |
-
-----END CERTIFICATE-----
|
2737 |
-
|
2738 |
-
GeoTrust Primary Certification Authority - G3
|
2739 |
-
=============================================
|
2740 |
-
-----BEGIN CERTIFICATE-----
|
2741 |
-
MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
|
2742 |
-
BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
|
2743 |
-
IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
|
2744 |
-
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
|
2745 |
-
NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
|
2746 |
-
YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
|
2747 |
-
LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
|
2748 |
-
hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
|
2749 |
-
K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
|
2750 |
-
c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
|
2751 |
-
IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
|
2752 |
-
dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
|
2753 |
-
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
|
2754 |
-
2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
|
2755 |
-
cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
|
2756 |
-
Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
|
2757 |
-
AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
|
2758 |
-
t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
|
2759 |
-
-----END CERTIFICATE-----
|
2760 |
-
|
2761 |
-
thawte Primary Root CA - G2
|
2762 |
-
===========================
|
2763 |
-
-----BEGIN CERTIFICATE-----
|
2764 |
-
MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
|
2765 |
-
VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
|
2766 |
-
IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
|
2767 |
-
Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
|
2768 |
-
MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
|
2769 |
-
b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
|
2770 |
-
IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
|
2771 |
-
LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
|
2772 |
-
8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
|
2773 |
-
mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
|
2774 |
-
G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
|
2775 |
-
rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
|
2776 |
-
-----END CERTIFICATE-----
|
2777 |
-
|
2778 |
-
thawte Primary Root CA - G3
|
2779 |
-
===========================
|
2780 |
-
-----BEGIN CERTIFICATE-----
|
2781 |
-
MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
|
2782 |
-
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
2783 |
-
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
2784 |
-
cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
|
2785 |
-
ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
|
2786 |
-
d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
|
2787 |
-
VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
|
2788 |
-
A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2789 |
-
MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
|
2790 |
-
P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
|
2791 |
-
+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
|
2792 |
-
7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
|
2793 |
-
vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
|
2794 |
-
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
|
2795 |
-
KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
|
2796 |
-
A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
|
2797 |
-
t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
|
2798 |
-
8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
|
2799 |
-
er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
|
2800 |
-
-----END CERTIFICATE-----
|
2801 |
-
|
2802 |
-
GeoTrust Primary Certification Authority - G2
|
2803 |
-
=============================================
|
2804 |
-
-----BEGIN CERTIFICATE-----
|
2805 |
-
MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
|
2806 |
-
VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
|
2807 |
-
Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
|
2808 |
-
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
|
2809 |
-
OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
|
2810 |
-
MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
|
2811 |
-
b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
|
2812 |
-
BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
|
2813 |
-
KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
|
2814 |
-
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
|
2815 |
-
EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
|
2816 |
-
ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
|
2817 |
-
npaqBA+K
|
2818 |
-
-----END CERTIFICATE-----
|
2819 |
-
|
2820 |
-
VeriSign Universal Root Certification Authority
|
2821 |
-
===============================================
|
2822 |
-
-----BEGIN CERTIFICATE-----
|
2823 |
-
MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
|
2824 |
-
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
2825 |
-
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
2826 |
-
IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
|
2827 |
-
IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
|
2828 |
-
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
2829 |
-
cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
2830 |
-
IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
|
2831 |
-
aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
|
2832 |
-
1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
|
2833 |
-
MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
|
2834 |
-
9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
|
2835 |
-
AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
|
2836 |
-
tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
|
2837 |
-
CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
|
2838 |
-
a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
|
2839 |
-
DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
|
2840 |
-
Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
|
2841 |
-
Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
|
2842 |
-
P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
|
2843 |
-
wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
|
2844 |
-
mJO37M2CYfE45k+XmCpajQ==
|
2845 |
-
-----END CERTIFICATE-----
|
2846 |
-
|
2847 |
-
VeriSign Class 3 Public Primary Certification Authority - G4
|
2848 |
-
============================================================
|
2849 |
-
-----BEGIN CERTIFICATE-----
|
2850 |
-
MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
|
2851 |
-
VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
|
2852 |
-
b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
|
2853 |
-
ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
|
2854 |
-
YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
|
2855 |
-
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
|
2856 |
-
cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
|
2857 |
-
b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
2858 |
-
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
|
2859 |
-
Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
|
2860 |
-
rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
|
2861 |
-
/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
|
2862 |
-
HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
|
2863 |
-
Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
|
2864 |
-
A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
|
2865 |
-
AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
|
2866 |
-
-----END CERTIFICATE-----
|
2867 |
-
|
2868 |
-
NetLock Arany (Class Gold) Főtanúsítvány
|
2869 |
-
============================================
|
2870 |
-
-----BEGIN CERTIFICATE-----
|
2871 |
-
MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
|
2872 |
-
A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
|
2873 |
-
dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
|
2874 |
-
cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
|
2875 |
-
MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
|
2876 |
-
ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
|
2877 |
-
biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
|
2878 |
-
c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
|
2879 |
-
0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
|
2880 |
-
/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
|
2881 |
-
H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
|
2882 |
-
fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
|
2883 |
-
neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
|
2884 |
-
BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
|
2885 |
-
qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
|
2886 |
-
YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
|
2887 |
-
bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
|
2888 |
-
NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
|
2889 |
-
dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
|
2890 |
-
-----END CERTIFICATE-----
|
2891 |
-
|
2892 |
-
Staat der Nederlanden Root CA - G2
|
2893 |
-
==================================
|
2894 |
-
-----BEGIN CERTIFICATE-----
|
2895 |
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
+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
-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
-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
-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
-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
-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
-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
-
IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm
|
2921 |
-
66+KAQ==
|
2922 |
-
-----END CERTIFICATE-----
|
2923 |
-
|
2924 |
-
CA Disig
|
2925 |
-
========
|
2926 |
-
-----BEGIN CERTIFICATE-----
|
2927 |
-
MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
|
2928 |
-
QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
|
2929 |
-
MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
|
2930 |
-
bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
|
2931 |
-
DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
|
2932 |
-
GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
|
2933 |
-
Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
|
2934 |
-
hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
|
2935 |
-
ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
|
2936 |
-
gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
|
2937 |
-
AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
|
2938 |
-
aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
|
2939 |
-
ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
|
2940 |
-
BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
|
2941 |
-
WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
|
2942 |
-
mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
|
2943 |
-
CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
|
2944 |
-
ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
|
2945 |
-
4Z7CRneC9VkGjCFMhwnN5ag=
|
2946 |
-
-----END CERTIFICATE-----
|
2947 |
-
|
2948 |
-
Juur-SK
|
2949 |
-
=======
|
2950 |
-
-----BEGIN CERTIFICATE-----
|
2951 |
-
MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
|
2952 |
-
c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
|
2953 |
-
DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
|
2954 |
-
SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
|
2955 |
-
aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
2956 |
-
ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
|
2957 |
-
TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
|
2958 |
-
+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
|
2959 |
-
UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
|
2960 |
-
Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
|
2961 |
-
MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
|
2962 |
-
HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
|
2963 |
-
AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
|
2964 |
-
cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
|
2965 |
-
AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
|
2966 |
-
cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
|
2967 |
-
FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
|
2968 |
-
A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
|
2969 |
-
ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
|
2970 |
-
abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
|
2971 |
-
IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
|
2972 |
-
Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
|
2973 |
-
yyqcjg==
|
2974 |
-
-----END CERTIFICATE-----
|
2975 |
-
|
2976 |
-
Hongkong Post Root CA 1
|
2977 |
-
=======================
|
2978 |
-
-----BEGIN CERTIFICATE-----
|
2979 |
-
MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
|
2980 |
-
DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
|
2981 |
-
NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
|
2982 |
-
IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
|
2983 |
-
AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
|
2984 |
-
ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
|
2985 |
-
auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
|
2986 |
-
qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
|
2987 |
-
V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
|
2988 |
-
HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
|
2989 |
-
h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
|
2990 |
-
l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
|
2991 |
-
IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
|
2992 |
-
T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
|
2993 |
-
c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
|
2994 |
-
-----END CERTIFICATE-----
|
2995 |
-
|
2996 |
-
SecureSign RootCA11
|
2997 |
-
===================
|
2998 |
-
-----BEGIN CERTIFICATE-----
|
2999 |
-
MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
|
3000 |
-
SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
|
3001 |
-
b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
|
3002 |
-
KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
|
3003 |
-
cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
|
3004 |
-
TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
|
3005 |
-
wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
|
3006 |
-
g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
|
3007 |
-
O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
|
3008 |
-
bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
|
3009 |
-
t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
|
3010 |
-
OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
|
3011 |
-
bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
|
3012 |
-
Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
|
3013 |
-
y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
|
3014 |
-
lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
|
3015 |
-
-----END CERTIFICATE-----
|
3016 |
-
|
3017 |
-
ACEDICOM Root
|
3018 |
-
=============
|
3019 |
-
-----BEGIN CERTIFICATE-----
|
3020 |
-
MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD
|
3021 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq
|
3033 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
|
3046 |
-
-----END CERTIFICATE-----
|
3047 |
-
|
3048 |
-
Verisign Class 1 Public Primary Certification Authority
|
3049 |
-
=======================================================
|
3050 |
-
-----BEGIN CERTIFICATE-----
|
3051 |
-
MIICPDCCAaUCED9pHoGc8JpK83P/uUii5N0wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
|
3052 |
-
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5
|
3053 |
-
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
|
3054 |
-
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAx
|
3055 |
-
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
3056 |
-
A4GNADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0fzGVuDLDQ
|
3057 |
-
VoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHiTkVWaR94AoDa3EeRKbs2
|
3058 |
-
yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFgVKTk8d6Pa
|
3059 |
-
XCUDfGD67gmZPCcQcMgMCeazh88K4hiWNWLMv5sneYlfycQJ9M61Hd8qveXbhpxoJeUwfLaJFf5n
|
3060 |
-
0a3hUKw8fGJLj7qE1xIVGx/KXQ/BUpQqEZnae88MNhPVNdwQGVnqlMEAv3WP2fr9dgTbYruQagPZ
|
3061 |
-
RjXZ+Hxb
|
3062 |
-
-----END CERTIFICATE-----
|
3063 |
-
|
3064 |
-
Verisign Class 3 Public Primary Certification Authority
|
3065 |
-
=======================================================
|
3066 |
-
-----BEGIN CERTIFICATE-----
|
3067 |
-
MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
|
3068 |
-
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
3069 |
-
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
|
3070 |
-
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
3071 |
-
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
3072 |
-
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
3073 |
-
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
3074 |
-
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
|
3075 |
-
CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
|
3076 |
-
bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
|
3077 |
-
D/xwzoiQ
|
3078 |
-
-----END CERTIFICATE-----
|
3079 |
-
|
3080 |
-
Microsec e-Szigno Root CA 2009
|
3081 |
-
==============================
|
3082 |
-
-----BEGIN CERTIFICATE-----
|
3083 |
-
MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
|
3084 |
-
MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
|
3085 |
-
c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
|
3086 |
-
dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
|
3087 |
-
BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
|
3088 |
-
U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
|
3089 |
-
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
|
3090 |
-
fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
|
3091 |
-
0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
|
3092 |
-
pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
|
3093 |
-
1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
|
3094 |
-
AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
|
3095 |
-
QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
|
3096 |
-
FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
|
3097 |
-
lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
|
3098 |
-
I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
|
3099 |
-
tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
|
3100 |
-
yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
|
3101 |
-
LXpUq3DDfSJlgnCW
|
3102 |
-
-----END CERTIFICATE-----
|
3103 |
-
|
3104 |
-
E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
|
3105 |
-
===================================================
|
3106 |
-
-----BEGIN CERTIFICATE-----
|
3107 |
-
MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
|
3108 |
-
EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
|
3109 |
-
ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
|
3110 |
-
MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
|
3111 |
-
cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
|
3112 |
-
aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
3113 |
-
AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
|
3114 |
-
8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
|
3115 |
-
jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
|
3116 |
-
JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
|
3117 |
-
9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
|
3118 |
-
AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
|
3119 |
-
SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
|
3120 |
-
F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
|
3121 |
-
D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
|
3122 |
-
Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
|
3123 |
-
fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
|
3124 |
-
-----END CERTIFICATE-----
|
3125 |
-
|
3126 |
-
GlobalSign Root CA - R3
|
3127 |
-
=======================
|
3128 |
-
-----BEGIN CERTIFICATE-----
|
3129 |
-
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
|
3130 |
-
YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
3131 |
-
bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
3132 |
-
aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
3133 |
-
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
|
3134 |
-
iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
|
3135 |
-
0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
|
3136 |
-
rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
|
3137 |
-
OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
|
3138 |
-
xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
3139 |
-
FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
|
3140 |
-
lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
|
3141 |
-
EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
|
3142 |
-
bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
|
3143 |
-
YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
|
3144 |
-
kpeDMdmztcpHWD9f
|
3145 |
-
-----END CERTIFICATE-----
|
3146 |
-
|
3147 |
-
TC TrustCenter Universal CA III
|
3148 |
-
===============================
|
3149 |
-
-----BEGIN CERTIFICATE-----
|
3150 |
-
MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC
|
3151 |
-
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
|
3152 |
-
IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe
|
3153 |
-
Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU
|
3154 |
-
QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex
|
3155 |
-
KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB
|
3156 |
-
AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt
|
3157 |
-
QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO
|
3158 |
-
juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut
|
3159 |
-
CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1
|
3160 |
-
M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G
|
3161 |
-
A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
|
3162 |
-
BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA
|
3163 |
-
g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+
|
3164 |
-
KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK
|
3165 |
-
BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV
|
3166 |
-
CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq
|
3167 |
-
woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg==
|
3168 |
-
-----END CERTIFICATE-----
|
3169 |
-
|
3170 |
-
Autoridad de Certificacion Firmaprofesional CIF A62634068
|
3171 |
-
=========================================================
|
3172 |
-
-----BEGIN CERTIFICATE-----
|
3173 |
-
MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
|
3174 |
-
BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
|
3175 |
-
MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
|
3176 |
-
QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
|
3177 |
-
NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
|
3178 |
-
Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
|
3179 |
-
B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
|
3180 |
-
7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
|
3181 |
-
ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
|
3182 |
-
plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
|
3183 |
-
MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
|
3184 |
-
LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
|
3185 |
-
bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
|
3186 |
-
vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
|
3187 |
-
EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
|
3188 |
-
DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
|
3189 |
-
cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
|
3190 |
-
bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
|
3191 |
-
ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
|
3192 |
-
51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
|
3193 |
-
R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
|
3194 |
-
T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
|
3195 |
-
Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
|
3196 |
-
osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
|
3197 |
-
crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
|
3198 |
-
saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
|
3199 |
-
KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
|
3200 |
-
6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
|
3201 |
-
-----END CERTIFICATE-----
|
3202 |
-
|
3203 |
-
Izenpe.com
|
3204 |
-
==========
|
3205 |
-
-----BEGIN CERTIFICATE-----
|
3206 |
-
MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
|
3207 |
-
EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
|
3208 |
-
MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
|
3209 |
-
QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
|
3210 |
-
03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
|
3211 |
-
ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
|
3212 |
-
+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
|
3213 |
-
PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
|
3214 |
-
OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
|
3215 |
-
F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
|
3216 |
-
0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
|
3217 |
-
0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
|
3218 |
-
leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
|
3219 |
-
AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
|
3220 |
-
SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
|
3221 |
-
NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
|
3222 |
-
MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
|
3223 |
-
BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
|
3224 |
-
Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
|
3225 |
-
kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
|
3226 |
-
hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
|
3227 |
-
g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
|
3228 |
-
aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
|
3229 |
-
nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
|
3230 |
-
ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
|
3231 |
-
Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
|
3232 |
-
WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
|
3233 |
-
-----END CERTIFICATE-----
|
3234 |
-
|
3235 |
-
Chambers of Commerce Root - 2008
|
3236 |
-
================================
|
3237 |
-
-----BEGIN CERTIFICATE-----
|
3238 |
-
MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
|
3239 |
-
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
3240 |
-
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
3241 |
-
QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
|
3242 |
-
Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
|
3243 |
-
ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
|
3244 |
-
EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
|
3245 |
-
cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
3246 |
-
AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
|
3247 |
-
XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
|
3248 |
-
h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
|
3249 |
-
ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
|
3250 |
-
NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
|
3251 |
-
D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
|
3252 |
-
lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
|
3253 |
-
0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
|
3254 |
-
ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
|
3255 |
-
EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
|
3256 |
-
G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
|
3257 |
-
BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
|
3258 |
-
bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
|
3259 |
-
bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
|
3260 |
-
CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
|
3261 |
-
AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
|
3262 |
-
wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
|
3263 |
-
3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
|
3264 |
-
RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
|
3265 |
-
M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
|
3266 |
-
YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
|
3267 |
-
9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
|
3268 |
-
zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
|
3269 |
-
nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
|
3270 |
-
OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
|
3271 |
-
-----END CERTIFICATE-----
|
3272 |
-
|
3273 |
-
Global Chambersign Root - 2008
|
3274 |
-
==============================
|
3275 |
-
-----BEGIN CERTIFICATE-----
|
3276 |
-
MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
|
3277 |
-
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
3278 |
-
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
3279 |
-
QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
|
3280 |
-
NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
|
3281 |
-
Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
|
3282 |
-
QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
|
3283 |
-
aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
|
3284 |
-
VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
|
3285 |
-
XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
|
3286 |
-
ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
|
3287 |
-
/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
|
3288 |
-
TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
|
3289 |
-
H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
|
3290 |
-
Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
|
3291 |
-
HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
|
3292 |
-
wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
|
3293 |
-
AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
|
3294 |
-
BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
|
3295 |
-
BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
|
3296 |
-
aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
|
3297 |
-
aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
|
3298 |
-
1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
|
3299 |
-
dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
|
3300 |
-
/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
|
3301 |
-
ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
|
3302 |
-
dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
|
3303 |
-
9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
|
3304 |
-
foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
|
3305 |
-
qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
|
3306 |
-
P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
|
3307 |
-
c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
|
3308 |
-
09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
|
3309 |
-
-----END CERTIFICATE-----
|
3310 |
-
|
3311 |
-
Go Daddy Root Certificate Authority - G2
|
3312 |
-
========================================
|
3313 |
-
-----BEGIN CERTIFICATE-----
|
3314 |
-
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3315 |
-
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
|
3316 |
-
MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
|
3317 |
-
MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
|
3318 |
-
b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
|
3319 |
-
A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
|
3320 |
-
hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
|
3321 |
-
9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
|
3322 |
-
+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
|
3323 |
-
fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
|
3324 |
-
NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
|
3325 |
-
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
|
3326 |
-
BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
|
3327 |
-
vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
|
3328 |
-
5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
|
3329 |
-
N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
|
3330 |
-
LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
|
3331 |
-
-----END CERTIFICATE-----
|
3332 |
-
|
3333 |
-
Starfield Root Certificate Authority - G2
|
3334 |
-
=========================================
|
3335 |
-
-----BEGIN CERTIFICATE-----
|
3336 |
-
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3337 |
-
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
3338 |
-
b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
|
3339 |
-
eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
|
3340 |
-
DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
|
3341 |
-
VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
|
3342 |
-
dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
|
3343 |
-
W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
|
3344 |
-
bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
|
3345 |
-
N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
|
3346 |
-
ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
|
3347 |
-
JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3348 |
-
AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
|
3349 |
-
TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
|
3350 |
-
4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
|
3351 |
-
F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
|
3352 |
-
pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
|
3353 |
-
c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
|
3354 |
-
-----END CERTIFICATE-----
|
3355 |
-
|
3356 |
-
Starfield Services Root Certificate Authority - G2
|
3357 |
-
==================================================
|
3358 |
-
-----BEGIN CERTIFICATE-----
|
3359 |
-
MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3360 |
-
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
3361 |
-
b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
|
3362 |
-
IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
|
3363 |
-
BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
|
3364 |
-
dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
|
3365 |
-
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
3366 |
-
AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
|
3367 |
-
h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
|
3368 |
-
hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
|
3369 |
-
LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
|
3370 |
-
rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
|
3371 |
-
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
|
3372 |
-
SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
|
3373 |
-
E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
|
3374 |
-
xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
|
3375 |
-
iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
|
3376 |
-
YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
|
3377 |
-
-----END CERTIFICATE-----
|
3378 |
-
|
3379 |
-
AffirmTrust Commercial
|
3380 |
-
======================
|
3381 |
-
-----BEGIN CERTIFICATE-----
|
3382 |
-
MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
3383 |
-
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
|
3384 |
-
MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
3385 |
-
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
|
3386 |
-
AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
|
3387 |
-
DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
|
3388 |
-
C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
|
3389 |
-
BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
|
3390 |
-
MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
|
3391 |
-
HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3392 |
-
AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
|
3393 |
-
hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
|
3394 |
-
qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
|
3395 |
-
0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
|
3396 |
-
sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
|
3397 |
-
-----END CERTIFICATE-----
|
3398 |
-
|
3399 |
-
AffirmTrust Networking
|
3400 |
-
======================
|
3401 |
-
-----BEGIN CERTIFICATE-----
|
3402 |
-
MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
3403 |
-
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
|
3404 |
-
MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
3405 |
-
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
|
3406 |
-
AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
|
3407 |
-
Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
|
3408 |
-
dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
|
3409 |
-
/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
|
3410 |
-
h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
|
3411 |
-
HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3412 |
-
AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
|
3413 |
-
UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
|
3414 |
-
12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
|
3415 |
-
WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
|
3416 |
-
/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
|
3417 |
-
-----END CERTIFICATE-----
|
3418 |
-
|
3419 |
-
AffirmTrust Premium
|
3420 |
-
===================
|
3421 |
-
-----BEGIN CERTIFICATE-----
|
3422 |
-
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
-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
-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
-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
-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
-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
-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
-
+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
-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
-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
-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
-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
-
/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo
|
3435 |
-
+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
-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
-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
-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
-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
-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
-
+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
-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
-
IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60
|
3444 |
-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
-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
|
3446 |
-
-----END CERTIFICATE-----
|
3447 |
-
|
3448 |
-
AffirmTrust Premium ECC
|
3449 |
-
=======================
|
3450 |
-
-----BEGIN CERTIFICATE-----
|
3451 |
-
MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
|
3452 |
-
BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
|
3453 |
-
MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
|
3454 |
-
cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
|
3455 |
-
IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
|
3456 |
-
N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
|
3457 |
-
BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
|
3458 |
-
BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
|
3459 |
-
57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
|
3460 |
-
eQ==
|
3461 |
-
-----END CERTIFICATE-----
|
3462 |
-
|
3463 |
-
Certum Trusted Network CA
|
3464 |
-
=========================
|
3465 |
-
-----BEGIN CERTIFICATE-----
|
3466 |
-
MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
|
3467 |
-
ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
|
3468 |
-
biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
|
3469 |
-
MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
|
3470 |
-
ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
3471 |
-
MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
3472 |
-
AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
|
3473 |
-
l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
|
3474 |
-
J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
|
3475 |
-
fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
|
3476 |
-
cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
|
3477 |
-
Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
|
3478 |
-
DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
|
3479 |
-
jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
|
3480 |
-
mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
|
3481 |
-
Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
|
3482 |
-
03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
|
3483 |
-
-----END CERTIFICATE-----
|
3484 |
-
|
3485 |
-
Certinomis - Autorité Racine
|
3486 |
-
=============================
|
3487 |
-
-----BEGIN CERTIFICATE-----
|
3488 |
-
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
-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
-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
-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
-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
-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
-
wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly
|
3495 |
-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
-
2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N
|
3497 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b
|
3511 |
-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
-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
|
3513 |
-
vgt2Fl43N+bYdJeimUV5
|
3514 |
-
-----END CERTIFICATE-----
|
3515 |
-
|
3516 |
-
Root CA Generalitat Valenciana
|
3517 |
-
==============================
|
3518 |
-
-----BEGIN CERTIFICATE-----
|
3519 |
-
MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
|
3520 |
-
ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
|
3521 |
-
IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
|
3522 |
-
WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
|
3523 |
-
CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
|
3524 |
-
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
|
3525 |
-
F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
|
3526 |
-
ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
|
3527 |
-
D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
|
3528 |
-
JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
|
3529 |
-
AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
|
3530 |
-
dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
|
3531 |
-
ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
|
3532 |
-
AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
|
3533 |
-
YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
|
3534 |
-
AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
|
3535 |
-
aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
|
3536 |
-
AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
|
3537 |
-
YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
|
3538 |
-
AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
|
3539 |
-
OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
|
3540 |
-
dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
|
3541 |
-
BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
|
3542 |
-
A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
|
3543 |
-
b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
|
3544 |
-
TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
|
3545 |
-
Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
|
3546 |
-
NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
|
3547 |
-
iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
|
3548 |
-
+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
|
3549 |
-
-----END CERTIFICATE-----
|
3550 |
-
|
3551 |
-
A-Trust-nQual-03
|
3552 |
-
================
|
3553 |
-
-----BEGIN CERTIFICATE-----
|
3554 |
-
MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE
|
3555 |
-
Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
|
3556 |
-
a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R
|
3557 |
-
dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw
|
3558 |
-
RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
|
3559 |
-
ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1
|
3560 |
-
c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA
|
3561 |
-
zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n
|
3562 |
-
yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE
|
3563 |
-
SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4
|
3564 |
-
iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V
|
3565 |
-
cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV
|
3566 |
-
eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40
|
3567 |
-
ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr
|
3568 |
-
sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd
|
3569 |
-
JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS
|
3570 |
-
mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6
|
3571 |
-
ahq97BvIxYSazQ==
|
3572 |
-
-----END CERTIFICATE-----
|
3573 |
-
|
3574 |
-
TWCA Root Certification Authority
|
3575 |
-
=================================
|
3576 |
-
-----BEGIN CERTIFICATE-----
|
3577 |
-
MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
|
3578 |
-
VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
|
3579 |
-
dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
|
3580 |
-
EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
|
3581 |
-
IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
3582 |
-
AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
|
3583 |
-
QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
|
3584 |
-
oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
|
3585 |
-
4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
|
3586 |
-
y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
|
3587 |
-
BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
|
3588 |
-
9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
|
3589 |
-
mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
|
3590 |
-
QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
|
3591 |
-
T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
|
3592 |
-
Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
|
3593 |
-
-----END CERTIFICATE-----
|
3594 |
-
|
3595 |
-
Security Communication RootCA2
|
3596 |
-
==============================
|
3597 |
-
-----BEGIN CERTIFICATE-----
|
3598 |
-
MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
3599 |
-
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
|
3600 |
-
dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
|
3601 |
-
SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
|
3602 |
-
aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
3603 |
-
ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
|
3604 |
-
+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
|
3605 |
-
3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
|
3606 |
-
spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
|
3607 |
-
EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
|
3608 |
-
QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
|
3609 |
-
CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
|
3610 |
-
u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
|
3611 |
-
3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
|
3612 |
-
tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
|
3613 |
-
mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
|
3614 |
-
-----END CERTIFICATE-----
|
3615 |
-
|
3616 |
-
EC-ACC
|
3617 |
-
======
|
3618 |
-
-----BEGIN CERTIFICATE-----
|
3619 |
-
MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
|
3620 |
-
BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
|
3621 |
-
ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
|
3622 |
-
VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
|
3623 |
-
CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
|
3624 |
-
BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
|
3625 |
-
MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
|
3626 |
-
SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
|
3627 |
-
Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
|
3628 |
-
cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
|
3629 |
-
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
|
3630 |
-
w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
|
3631 |
-
ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
|
3632 |
-
HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
|
3633 |
-
E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
|
3634 |
-
0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
|
3635 |
-
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
|
3636 |
-
VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
|
3637 |
-
Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
|
3638 |
-
dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
|
3639 |
-
lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
|
3640 |
-
Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
|
3641 |
-
l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
|
3642 |
-
E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
|
3643 |
-
5EI=
|
3644 |
-
-----END CERTIFICATE-----
|
3645 |
-
|
3646 |
-
Hellenic Academic and Research Institutions RootCA 2011
|
3647 |
-
=======================================================
|
3648 |
-
-----BEGIN CERTIFICATE-----
|
3649 |
-
MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
|
3650 |
-
O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
|
3651 |
-
aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
|
3652 |
-
IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
|
3653 |
-
AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
|
3654 |
-
IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
|
3655 |
-
IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
3656 |
-
AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
|
3657 |
-
1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
|
3658 |
-
71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
|
3659 |
-
8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
|
3660 |
-
3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
|
3661 |
-
MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
|
3662 |
-
MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
|
3663 |
-
b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
|
3664 |
-
XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
|
3665 |
-
TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
|
3666 |
-
/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
|
3667 |
-
7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
|
3668 |
-
-----END CERTIFICATE-----
|
3669 |
-
|
3670 |
-
Actalis Authentication Root CA
|
3671 |
-
==============================
|
3672 |
-
-----BEGIN CERTIFICATE-----
|
3673 |
-
MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
|
3674 |
-
BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
|
3675 |
-
AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
|
3676 |
-
MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
|
3677 |
-
IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
|
3678 |
-
IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
|
3679 |
-
wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
|
3680 |
-
by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
|
3681 |
-
zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
|
3682 |
-
YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
|
3683 |
-
oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
|
3684 |
-
EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
|
3685 |
-
hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
|
3686 |
-
EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
|
3687 |
-
jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
|
3688 |
-
iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
|
3689 |
-
ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
|
3690 |
-
WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
|
3691 |
-
JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
|
3692 |
-
K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
|
3693 |
-
Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
|
3694 |
-
4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
|
3695 |
-
2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
|
3696 |
-
lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
|
3697 |
-
OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
|
3698 |
-
vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
|
3699 |
-
-----END CERTIFICATE-----
|
3700 |
-
|
3701 |
-
Trustis FPS Root CA
|
3702 |
-
===================
|
3703 |
-
-----BEGIN CERTIFICATE-----
|
3704 |
-
MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
|
3705 |
-
EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
|
3706 |
-
IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
|
3707 |
-
BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
|
3708 |
-
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
|
3709 |
-
RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
|
3710 |
-
H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
|
3711 |
-
cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
|
3712 |
-
o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
|
3713 |
-
AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
|
3714 |
-
BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
|
3715 |
-
GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
|
3716 |
-
yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
|
3717 |
-
8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
|
3718 |
-
l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
|
3719 |
-
iB6XzCGcKQENZetX2fNXlrtIzYE=
|
3720 |
-
-----END CERTIFICATE-----
|
3721 |
-
|
3722 |
-
StartCom Certification Authority
|
3723 |
-
================================
|
3724 |
-
-----BEGIN CERTIFICATE-----
|
3725 |
-
MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
3726 |
-
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
3727 |
-
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
3728 |
-
NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
3729 |
-
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
3730 |
-
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
3731 |
-
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
3732 |
-
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
3733 |
-
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
3734 |
-
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
3735 |
-
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
3736 |
-
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
3737 |
-
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
3738 |
-
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
3739 |
-
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
3740 |
-
37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
|
3741 |
-
VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ
|
3742 |
-
Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0
|
3743 |
-
dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
|
3744 |
-
c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv
|
3745 |
-
bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0
|
3746 |
-
aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0
|
3747 |
-
aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
|
3748 |
-
L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG
|
3749 |
-
cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5
|
3750 |
-
fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm
|
3751 |
-
N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN
|
3752 |
-
Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T
|
3753 |
-
tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX
|
3754 |
-
e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA
|
3755 |
-
2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs
|
3756 |
-
HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
|
3757 |
-
JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib
|
3758 |
-
D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8=
|
3759 |
-
-----END CERTIFICATE-----
|
3760 |
-
|
3761 |
-
StartCom Certification Authority G2
|
3762 |
-
===================================
|
3763 |
-
-----BEGIN CERTIFICATE-----
|
3764 |
-
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
-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
-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
-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
-
dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O
|
3769 |
-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
-
4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi
|
3771 |
-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
-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
-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
-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
-
nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS
|
3776 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
|
3788 |
-
obp573PYtlNXLfbQ4ddI
|
3789 |
-
-----END CERTIFICATE-----
|
3790 |
-
|
3791 |
-
Buypass Class 2 Root CA
|
3792 |
-
=======================
|
3793 |
-
-----BEGIN CERTIFICATE-----
|
3794 |
-
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
-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
-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
-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
-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
-
g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn
|
3800 |
-
9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b
|
3801 |
-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
-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
-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
-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
-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
-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
-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
-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
-
AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s
|
3810 |
-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
-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
-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
-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
-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
-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
-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
-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
|
3818 |
-
rJgWVqA=
|
3819 |
-
-----END CERTIFICATE-----
|
3820 |
-
|
3821 |
-
Buypass Class 3 Root CA
|
3822 |
-
=======================
|
3823 |
-
-----BEGIN CERTIFICATE-----
|
3824 |
-
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
-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
-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
-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
-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
-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
-
5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh
|
3831 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
|
3848 |
-
Cp/HuZc=
|
3849 |
-
-----END CERTIFICATE-----
|
3850 |
-
|
3851 |
-
T-TeleSec GlobalRoot Class 3
|
3852 |
-
============================
|
3853 |
-
-----BEGIN CERTIFICATE-----
|
3854 |
-
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
|
3855 |
-
IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
|
3856 |
-
cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
|
3857 |
-
MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
|
3858 |
-
dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
|
3859 |
-
ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
|
3860 |
-
DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
|
3861 |
-
9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
|
3862 |
-
NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
|
3863 |
-
iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
|
3864 |
-
0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
|
3865 |
-
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
|
3866 |
-
AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
|
3867 |
-
fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
|
3868 |
-
ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
|
3869 |
-
P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
|
3870 |
-
e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
|
3871 |
-
-----END CERTIFICATE-----
|
3872 |
-
|
3873 |
-
EE Certification Centre Root CA
|
3874 |
-
===============================
|
3875 |
-
-----BEGIN CERTIFICATE-----
|
3876 |
-
MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
|
3877 |
-
EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy
|
3878 |
-
dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw
|
3879 |
-
MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB
|
3880 |
-
UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy
|
3881 |
-
ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|
3882 |
-
DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM
|
3883 |
-
TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2
|
3884 |
-
rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw
|
3885 |
-
93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN
|
3886 |
-
P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T
|
3887 |
-
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ
|
3888 |
-
MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF
|
3889 |
-
BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj
|
3890 |
-
xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM
|
3891 |
-
lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
|
3892 |
-
uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
|
3893 |
-
3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM
|
3894 |
-
dcGWxZ0=
|
3895 |
-
-----END CERTIFICATE-----
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/class-admin.php
CHANGED
@@ -1,494 +1,609 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
*
|
4 |
-
*/
|
5 |
-
final class BackWPup_Admin {
|
6 |
-
|
7 |
-
private static $instance = NULL;
|
8 |
-
public $page_hooks = array();
|
9 |
-
|
10 |
-
/**
|
11 |
-
*
|
12 |
-
* Set needed filters and actions and load all needed
|
13 |
-
*
|
14 |
-
* @return \BackWPup_Admin
|
15 |
-
*/
|
16 |
-
public function __construct() {
|
17 |
-
|
18 |
-
//Load text domain
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
add_filter( 'backwpup_admin_pages', array( $this, '
|
24 |
-
add_filter( 'backwpup_admin_pages', array( $this, '
|
25 |
-
add_filter( 'backwpup_admin_pages', array( $this, '
|
26 |
-
add_filter( 'backwpup_admin_pages', array( $this, '
|
27 |
-
add_filter( 'backwpup_admin_pages', array( $this, '
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
add_filter( '
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
$this->page_hooks
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
$this->page_hooks[ '
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
$this->page_hooks[ '
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
$this->page_hooks[ '
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
$this->page_hooks[ '
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
if (
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
if (
|
294 |
-
$
|
295 |
-
|
296 |
-
$
|
297 |
-
|
298 |
-
|
299 |
-
$query_args[ '
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
$
|
304 |
-
if ( $_POST[ '
|
305 |
-
$
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
$
|
365 |
-
|
366 |
-
|
367 |
-
if ( ! empty( $saved_message ) ) {
|
368 |
-
foreach( $saved_message as $
|
369 |
-
$
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
}
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
//
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
*/
|
5 |
+
final class BackWPup_Admin {
|
6 |
+
|
7 |
+
private static $instance = NULL;
|
8 |
+
public $page_hooks = array();
|
9 |
+
|
10 |
+
/**
|
11 |
+
*
|
12 |
+
* Set needed filters and actions and load all needed
|
13 |
+
*
|
14 |
+
* @return \BackWPup_Admin
|
15 |
+
*/
|
16 |
+
public function __construct() {
|
17 |
+
|
18 |
+
//Load text domain
|
19 |
+
if ( ! is_textdomain_loaded( 'backwpup' ) )
|
20 |
+
load_plugin_textdomain( 'backwpup', FALSE, BackWPup::get_plugin_data( 'BaseName' ) . '/languages' );
|
21 |
+
|
22 |
+
//Add menu pages
|
23 |
+
add_filter( 'backwpup_admin_pages', array( $this, 'admin_page_jobs' ), 2 );
|
24 |
+
add_filter( 'backwpup_admin_pages', array( $this, 'admin_page_editjob' ), 3 );
|
25 |
+
add_filter( 'backwpup_admin_pages', array( $this, 'admin_page_logs' ), 4 );
|
26 |
+
add_filter( 'backwpup_admin_pages', array( $this, 'admin_page_backups' ), 5 );
|
27 |
+
add_filter( 'backwpup_admin_pages', array( $this, 'admin_page_settings' ), 6 );
|
28 |
+
add_filter( 'backwpup_admin_pages', array( $this, 'admin_page_about' ), 20 );
|
29 |
+
|
30 |
+
//Add Menu
|
31 |
+
if ( is_multisite() )
|
32 |
+
add_action( 'network_admin_menu', array( $this, 'admin_menu' ) );
|
33 |
+
else
|
34 |
+
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
|
35 |
+
//add Plugin links
|
36 |
+
add_filter( 'plugin_row_meta', array( $this, 'plugin_links' ), 10, 2 );
|
37 |
+
//add more actions
|
38 |
+
add_action( 'admin_init', array( $this, 'admin_init' ) );
|
39 |
+
//add more actions
|
40 |
+
add_action( 'admin_head', array( $this, 'admin_head' ) );
|
41 |
+
//Save Form posts general
|
42 |
+
add_action( 'admin_post_backwpup', array( $this, 'save_post_form' ) );
|
43 |
+
//Save Form posts wizard
|
44 |
+
add_action( 'admin_post_backwpup_wizard', array( 'BackWPup_Pro_Page_Wizard', 'save_post_form' ) );
|
45 |
+
//Admin Footer Text replacement
|
46 |
+
add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ), 100 );
|
47 |
+
add_filter( 'update_footer', array( $this, 'update_footer' ), 100 );
|
48 |
+
//User Profile fields
|
49 |
+
add_action( 'show_user_profile', array( $this, 'user_profile_fields' ) );
|
50 |
+
add_action( 'edit_user_profile', array( $this, 'user_profile_fields' ) );
|
51 |
+
add_action( 'profile_update', array( $this, 'save_profile_update' ) );
|
52 |
+
add_filter( 'editable_roles', array( $this, 'editable_roles' ) );
|
53 |
+
add_filter( 'manage_users_columns', array( $this, 'manage_users_columns' ) );
|
54 |
+
add_filter( 'manage_users_custom_column', array( $this, 'manage_users_custom_column' ), 10, 3 );
|
55 |
+
//Change Backup message on core updates
|
56 |
+
add_filter( 'gettext', array( $this, 'gettext' ), 10, 3 );
|
57 |
+
//Plugin banner free
|
58 |
+
/*if ( ! class_exists( 'BackWPup_Pro', FALSE ) )
|
59 |
+
add_action( 'admin_notices', array( $this, 'get_pro_banner' ) );*/
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* @static
|
64 |
+
* @return \BackWPup
|
65 |
+
*/
|
66 |
+
public static function get_instance() {
|
67 |
+
|
68 |
+
if (NULL === self::$instance) {
|
69 |
+
self::$instance = new self;
|
70 |
+
}
|
71 |
+
return self::$instance;
|
72 |
+
}
|
73 |
+
|
74 |
+
private function __clone() {}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Admin init function
|
78 |
+
*/
|
79 |
+
public function admin_init() {
|
80 |
+
|
81 |
+
//only add action if ajax call
|
82 |
+
if ( defined( 'DOING_AJAX' ) && DOING_AJAX && defined( 'WP_ADMIN' ) && WP_ADMIN ) {
|
83 |
+
//ajax calls
|
84 |
+
add_action( 'wp_ajax_backwpup_working', array( 'BackWPup_Page_Jobs', 'ajax_working' ) );
|
85 |
+
add_action( 'wp_ajax_backwpup_cron_text', array( 'BackWPup_Page_Editjob', 'ajax_cron_text' ) );
|
86 |
+
//ajax or view logs
|
87 |
+
add_action( 'wp_ajax_backwpup_view_log', array( 'BackWPup_Page_Logs', 'ajax_view_log' ) );
|
88 |
+
//ajax calls for job types
|
89 |
+
if ( $jobtypes = BackWPup::get_job_types() ) {
|
90 |
+
foreach ( $jobtypes as $id => $jobtypeclass ) {
|
91 |
+
add_action( 'wp_ajax_backwpup_jobtype_' . strtolower( $id ), array( $jobtypeclass, 'edit_ajax' ) );
|
92 |
+
}
|
93 |
+
}
|
94 |
+
//ajax calls for destinations
|
95 |
+
if ( $dests = BackWPup::get_registered_destinations() ) {
|
96 |
+
foreach ( $dests as $id => $dest ) {
|
97 |
+
if ( ! empty( $dest[ 'class' ] ) )
|
98 |
+
add_action( 'wp_ajax_backwpup_dest_' . strtolower( $id ), array( BackWPup::get_destination( $id ), 'edit_ajax' ) );
|
99 |
+
}
|
100 |
+
}
|
101 |
+
}
|
102 |
+
|
103 |
+
//display about page after Update
|
104 |
+
if ( ! defined( 'DOING_AJAX' ) && ! get_site_option( 'backwpup_about_page', FALSE ) && ! isset( $_GET['activate-multi'] ) ) {
|
105 |
+
update_site_option( 'backwpup_about_page', TRUE );
|
106 |
+
wp_redirect( network_admin_url( 'admin.php' ) . '?page=backwpupabout' );
|
107 |
+
exit();
|
108 |
+
}
|
109 |
+
}
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Admin init function
|
113 |
+
*/
|
114 |
+
public static function admin_head() {
|
115 |
+
|
116 |
+
//register js and css for BackWPup
|
117 |
+
if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
|
118 |
+
wp_enqueue_style( 'backwpup', BackWPup::get_plugin_data( 'URL' ) . '/assets/css/backwpup.css', array(), time(), 'screen' );
|
119 |
+
if ( version_compare( BackWPup::get_plugin_data( 'wp_version' ), '3.8-beta-1', '<' ) )
|
120 |
+
wp_enqueue_style( 'backwpup-wplt38', BackWPup::get_plugin_data( 'URL' ) . '/assets/css/lower_wp38.css', array( 'backwpup' ), time(), 'screen' );
|
121 |
+
} else {
|
122 |
+
wp_enqueue_style( 'backwpup', BackWPup::get_plugin_data( 'URL' ) . '/assets/css/backwpup.min.css', array(), BackWPup::get_plugin_data( 'Version' ), 'screen' );
|
123 |
+
if ( version_compare( BackWPup::get_plugin_data( 'wp_version' ), '3.8-beta-1', '<' ) )
|
124 |
+
wp_enqueue_style( 'backwpup-wplt38', BackWPup::get_plugin_data( 'URL' ) . '/assets/css/lower_wp38.min.css', array( 'backwpup' ), BackWPup::get_plugin_data( 'Version' ), 'screen' );
|
125 |
+
}
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
*
|
130 |
+
* Add Links in Plugins Menu to BackWPup
|
131 |
+
*
|
132 |
+
* @param $links
|
133 |
+
* @param $file
|
134 |
+
* @return array
|
135 |
+
*/
|
136 |
+
public function plugin_links( $links, $file ) {
|
137 |
+
|
138 |
+
if ( $file == plugin_basename( BackWPup::get_plugin_data( 'MainFile' ) ) ) {
|
139 |
+
$links[ ] = '<a href="' . __( 'https://marketpress.com/documentation/backwpup-pro/', 'backwpup' ) . '">' . __( 'Documentation', 'backwpup' ) . '</a>';
|
140 |
+
if ( class_exists( 'BackWPup_Pro', FALSE ) )
|
141 |
+
$links[ ] = '<a href="' . __( 'https://marketpress.com/support/forum/plugins/backwpup-pro/', 'backwpup' ) . '">' . __( 'Pro Support', 'backwpup' ) . '</a>';
|
142 |
+
else
|
143 |
+
$links[ ] = '<a href="' . __( 'http://wordpress.org/support/plugin/backwpup/', 'backwpup' ) . '">' . __( 'Support', 'backwpup' ) . '</a>';
|
144 |
+
|
145 |
+
}
|
146 |
+
|
147 |
+
return $links;
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Add menu entries
|
152 |
+
*/
|
153 |
+
public function admin_menu() {
|
154 |
+
|
155 |
+
add_menu_page( BackWPup::get_plugin_data( 'name' ), BackWPup::get_plugin_data( 'name' ), 'backwpup', 'backwpup', array( 'BackWPup_Page_Backwpup', 'page' ), 'div' );
|
156 |
+
$this->page_hooks[ 'backwpup' ] = add_submenu_page( 'backwpup', __( 'BackWPup Dashboard', 'backwpup' ), __( 'Dashboard', 'backwpup' ), 'backwpup', 'backwpup', array( 'BackWPup_Page_Backwpup', 'page' ) );
|
157 |
+
add_action( 'load-' . $this->page_hooks[ 'backwpup' ], array( 'BackWPup_Admin', 'init_generel' ) );
|
158 |
+
add_action( 'load-' . $this->page_hooks[ 'backwpup' ], array( 'BackWPup_Page_Backwpup', 'load' ) );
|
159 |
+
add_action( 'admin_print_scripts-' . $this->page_hooks[ 'backwpup' ], array( 'BackWPup_Page_Backwpup', 'admin_print_scripts' ) );
|
160 |
+
|
161 |
+
//Add pages form plugins
|
162 |
+
$this->page_hooks = apply_filters( 'backwpup_admin_pages' ,$this->page_hooks );
|
163 |
+
|
164 |
+
}
|
165 |
+
|
166 |
+
|
167 |
+
/**
|
168 |
+
* @param $page_hooks
|
169 |
+
* @return mixed
|
170 |
+
*/
|
171 |
+
public function admin_page_jobs( $page_hooks ) {
|
172 |
+
|
173 |
+
$this->page_hooks[ 'backwpupjobs' ] = add_submenu_page( 'backwpup', __( 'Jobs', 'backwpup' ), __( 'Jobs', 'backwpup' ), 'backwpup_jobs', 'backwpupjobs', array( 'BackWPup_Page_Jobs', 'page' ) );
|
174 |
+
add_action( 'load-' . $this->page_hooks[ 'backwpupjobs' ], array( 'BackWPup_Admin', 'init_generel' ) );
|
175 |
+
add_action( 'load-' . $this->page_hooks[ 'backwpupjobs' ], array( 'BackWPup_Page_Jobs', 'load' ) );
|
176 |
+
add_action( 'admin_print_styles-' . $this->page_hooks[ 'backwpupjobs' ], array( 'BackWPup_Page_Jobs', 'admin_print_styles' ) );
|
177 |
+
add_action( 'admin_print_scripts-' . $this->page_hooks[ 'backwpupjobs' ], array( 'BackWPup_Page_Jobs', 'admin_print_scripts' ) );
|
178 |
+
|
179 |
+
return $page_hooks;
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* @param $page_hooks
|
184 |
+
* @return mixed
|
185 |
+
*/
|
186 |
+
public function admin_page_editjob( $page_hooks ) {
|
187 |
+
|
188 |
+
$this->page_hooks[ 'backwpupeditjob' ] = add_submenu_page( 'backwpup', __( 'Add new job', 'backwpup' ), __( 'Add new job', 'backwpup' ), 'backwpup_jobs_edit', 'backwpupeditjob', array( 'BackWPup_Page_Editjob', 'page' ) );
|
189 |
+
add_action( 'load-' . $this->page_hooks[ 'backwpupeditjob' ], array( 'BackWPup_Admin', 'init_generel' ) );
|
190 |
+
add_action( 'load-' . $this->page_hooks[ 'backwpupeditjob' ], array( 'BackWPup_Page_Editjob', 'auth' ) );
|
191 |
+
add_action( 'load-' . $this->page_hooks[ 'backwpupeditjob' ], array( 'BackWPup_Page_Editjob', 'load' ) );
|
192 |
+
add_action( 'admin_print_styles-' . $this->page_hooks[ 'backwpupeditjob' ], array( 'BackWPup_Page_Editjob', 'admin_print_styles' ) );
|
193 |
+
add_action( 'admin_print_scripts-' . $this->page_hooks[ 'backwpupeditjob' ], array( 'BackWPup_Page_Editjob', 'admin_print_scripts' ) );
|
194 |
+
|
195 |
+
return $page_hooks;
|
196 |
+
}
|
197 |
+
|
198 |
+
/**
|
199 |
+
* @param $page_hooks
|
200 |
+
* @return mixed
|
201 |
+
*/
|
202 |
+
public function admin_page_logs( $page_hooks ) {
|
203 |
+
|
204 |
+
$this->page_hooks[ 'backwpuplogs' ] = add_submenu_page( 'backwpup', __( 'Logs', 'backwpup' ), __( 'Logs', 'backwpup' ), 'backwpup_logs', 'backwpuplogs', array( 'BackWPup_Page_Logs', 'page' ) );
|
205 |
+
add_action( 'load-' . $this->page_hooks[ 'backwpuplogs' ], array( 'BackWPup_Admin', 'init_generel' ) );
|
206 |
+
add_action( 'load-' . $this->page_hooks[ 'backwpuplogs' ], array( 'BackWPup_Page_Logs', 'load' ) );
|
207 |
+
add_action( 'admin_print_styles-' . $this->page_hooks[ 'backwpuplogs' ], array( 'BackWPup_Page_Logs', 'admin_print_styles' ) );
|
208 |
+
add_action( 'admin_print_scripts-' . $this->page_hooks[ 'backwpuplogs' ], array( 'BackWPup_Page_Logs', 'admin_print_scripts' ) );
|
209 |
+
|
210 |
+
return $page_hooks;
|
211 |
+
}
|
212 |
+
|
213 |
+
/**
|
214 |
+
* @param $page_hooks
|
215 |
+
* @return mixed
|
216 |
+
*/
|
217 |
+
public function admin_page_backups( $page_hooks ) {
|
218 |
+
|
219 |
+
$this->page_hooks[ 'backwpupbackups' ] = add_submenu_page( 'backwpup', __( 'Backups', 'backwpup' ), __( 'Backups', 'backwpup' ), 'backwpup_backups', 'backwpupbackups', array( 'BackWPup_Page_Backups', 'page' ) );
|
220 |
+
add_action( 'load-' . $this->page_hooks[ 'backwpupbackups' ], array( 'BackWPup_Admin', 'init_generel' ) );
|
221 |
+
add_action( 'load-' . $this->page_hooks[ 'backwpupbackups' ], array( 'BackWPup_Page_Backups', 'load' ) );
|
222 |
+
add_action( 'admin_print_styles-' . $this->page_hooks[ 'backwpupbackups' ], array( 'BackWPup_Page_Backups', 'admin_print_styles' ) );
|
223 |
+
add_action( 'admin_print_scripts-' . $this->page_hooks[ 'backwpupbackups' ], array( 'BackWPup_Page_Backups', 'admin_print_scripts' ) );
|
224 |
+
|
225 |
+
return $page_hooks;
|
226 |
+
}
|
227 |
+
|
228 |
+
/**
|
229 |
+
* @param $page_hooks
|
230 |
+
* @return mixed
|
231 |
+
*/
|
232 |
+
public function admin_page_settings( $page_hooks ) {
|
233 |
+
|
234 |
+
$this->page_hooks[ 'backwpupsettings' ] = add_submenu_page( 'backwpup', __( 'Settings', 'backwpup' ), __( 'Settings', 'backwpup' ), 'backwpup_settings', 'backwpupsettings', array( 'BackWPup_Page_Settings', 'page' ) );
|
235 |
+
add_action( 'load-' . $this->page_hooks[ 'backwpupsettings' ], array( 'BackWPup_Admin', 'init_generel' ) );
|
236 |
+
add_action( 'admin_print_scripts-' . $this->page_hooks[ 'backwpupsettings' ], array( 'BackWPup_Page_Settings', 'admin_print_scripts' ) );
|
237 |
+
|
238 |
+
return $page_hooks;
|
239 |
+
}
|
240 |
+
|
241 |
+
/**
|
242 |
+
* @param $page_hooks
|
243 |
+
* @return mixed
|
244 |
+
*/
|
245 |
+
public function admin_page_about( $page_hooks ) {
|
246 |
+
|
247 |
+
$this->page_hooks[ 'backwpupabout' ] = add_submenu_page( 'backwpup', __( 'About', 'backwpup' ), __( 'About', 'backwpup' ), 'backwpup', 'backwpupabout', array( 'BackWPup_Page_About', 'page' ) );
|
248 |
+
add_action( 'load-' . $this->page_hooks[ 'backwpupabout' ], array( 'BackWPup_Admin', 'init_generel' ) );
|
249 |
+
add_action( 'admin_print_styles-' . $this->page_hooks[ 'backwpupabout' ], array( 'BackWPup_Page_About', 'admin_print_styles' ) );
|
250 |
+
add_action( 'admin_print_scripts-' . $this->page_hooks[ 'backwpupabout' ], array( 'BackWPup_Page_About', 'admin_print_scripts' ) );
|
251 |
+
|
252 |
+
return $page_hooks;
|
253 |
+
}
|
254 |
+
|
255 |
+
|
256 |
+
/**
|
257 |
+
* Load for all BackWPup pages
|
258 |
+
*/
|
259 |
+
public static function init_generel() {
|
260 |
+
|
261 |
+
add_thickbox();
|
262 |
+
|
263 |
+
//register js and css for BackWPup
|
264 |
+
if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
|
265 |
+
wp_register_script( 'backwpuptiptip', BackWPup::get_plugin_data( 'URL' ) . '/assets/js/jquery.tipTip.js', array( 'jquery' ), '1.3.1', TRUE );
|
266 |
+
wp_register_script( 'backwpupgeneral', BackWPup::get_plugin_data( 'URL' ) . '/assets/js/general.js', array( 'jquery', 'backwpuptiptip' ), time(), TRUE );
|
267 |
+
} else {
|
268 |
+
wp_register_script( 'backwpuptiptip', BackWPup::get_plugin_data( 'URL' ) . '/assets/js/jquery.tipTip.min.js', array( 'jquery' ), '1.3.1', TRUE );
|
269 |
+
wp_register_script( 'backwpupgeneral', BackWPup::get_plugin_data( 'URL' ) . '/assets/js/general.min.js', array( 'jquery', 'backwpuptiptip' ), BackWPup::get_plugin_data( 'Version' ), TRUE );
|
270 |
+
}
|
271 |
+
|
272 |
+
//add Help
|
273 |
+
BackWPup_Help::help();
|
274 |
+
}
|
275 |
+
|
276 |
+
|
277 |
+
/**
|
278 |
+
* Called on save form. Only POST allowed.
|
279 |
+
*/
|
280 |
+
public function save_post_form() {
|
281 |
+
|
282 |
+
//Allowed Pages
|
283 |
+
if ( ! in_array( $_POST[ 'page' ], array ( 'backwpupeditjob', 'backwpupinformation', 'backwpupsettings' ) ) )
|
284 |
+
wp_die( __( 'Cheating, huh?', 'backwpup' ) );
|
285 |
+
|
286 |
+
//nonce check
|
287 |
+
check_admin_referer( $_POST[ 'page' ] . '_page' );
|
288 |
+
|
289 |
+
if ( ! current_user_can( 'backwpup' ) )
|
290 |
+
wp_die( __( 'Cheating, huh?', 'backwpup' ) );
|
291 |
+
|
292 |
+
//build query for redirect
|
293 |
+
if ( ! isset( $_POST[ 'anchor' ] ) )
|
294 |
+
$_POST[ 'anchor' ] = NULL;
|
295 |
+
$query_args=array();
|
296 |
+
if ( isset( $_POST[ 'page' ] ) )
|
297 |
+
$query_args[ 'page' ] = $_POST[ 'page' ];
|
298 |
+
if ( isset( $_POST[ 'tab' ] ) )
|
299 |
+
$query_args[ 'tab' ] = $_POST[ 'tab' ];
|
300 |
+
if ( isset( $_POST[ 'tab' ] ) && isset( $_POST[ 'nexttab' ] ) && $_POST[ 'tab' ] != $_POST[ 'nexttab' ] )
|
301 |
+
$query_args[ 'tab' ] = $_POST[ 'nexttab' ];
|
302 |
+
|
303 |
+
$jobid = NULL;
|
304 |
+
if ( isset( $_POST[ 'jobid' ] ) ) {
|
305 |
+
$jobid = (int) $_POST[ 'jobid' ];
|
306 |
+
$query_args[ 'jobid' ] = $jobid;
|
307 |
+
}
|
308 |
+
|
309 |
+
//Call method to save data
|
310 |
+
if ( $_POST[ 'page' ] == 'backwpupeditjob' )
|
311 |
+
BackWPup_Page_Editjob::save_post_form( $_POST[ 'tab' ], $jobid );
|
312 |
+
elseif ( $_POST[ 'page' ] == 'backwpupsettings' ) {
|
313 |
+
BackWPup_Page_Settings::save_post_form();
|
314 |
+
}
|
315 |
+
|
316 |
+
//Back to topic
|
317 |
+
wp_safe_redirect( add_query_arg( $query_args, network_admin_url( 'admin.php' ) ) . $_POST[ 'anchor' ] );
|
318 |
+
exit;
|
319 |
+
}
|
320 |
+
|
321 |
+
/**
|
322 |
+
* Add Message (across site loadings)
|
323 |
+
*
|
324 |
+
* @param $message string Message test
|
325 |
+
* @param $error bool ist it a error message
|
326 |
+
*/
|
327 |
+
public static function message( $message, $error = FALSE ) {
|
328 |
+
|
329 |
+
|
330 |
+
$saved_message = self::get_messages();
|
331 |
+
|
332 |
+
if ( $error )
|
333 |
+
$saved_message[ 'error' ][] = $message;
|
334 |
+
else
|
335 |
+
$saved_message[ 'updated' ][] = $message;
|
336 |
+
|
337 |
+
update_site_option( 'backwpup_messages', $saved_message);
|
338 |
+
|
339 |
+
}
|
340 |
+
|
341 |
+
/**
|
342 |
+
* Get all Message that not displayed
|
343 |
+
*
|
344 |
+
* @return array
|
345 |
+
*/
|
346 |
+
public static function get_messages() {
|
347 |
+
|
348 |
+
return get_site_option( 'backwpup_messages', array(), FALSE );
|
349 |
+
}
|
350 |
+
|
351 |
+
/**
|
352 |
+
* Display Messages
|
353 |
+
*
|
354 |
+
* @param bool $echo
|
355 |
+
* @return string
|
356 |
+
*/
|
357 |
+
public static function display_messages( $echo = TRUE ) {
|
358 |
+
|
359 |
+
$message_updated= '';
|
360 |
+
$message_error = '';
|
361 |
+
$saved_message = self::get_messages();
|
362 |
+
$message_id = ' id="message"';
|
363 |
+
|
364 |
+
if( empty( $saved_message ) )
|
365 |
+
return '';
|
366 |
+
|
367 |
+
if ( ! empty( $saved_message[ 'updated' ] ) ) {
|
368 |
+
foreach( $saved_message[ 'updated' ] as $msg )
|
369 |
+
$message_updated .= '<p>' . $msg . '</p>';
|
370 |
+
}
|
371 |
+
if ( ! empty( $saved_message[ 'error' ] ) ) {
|
372 |
+
foreach( $saved_message[ 'error' ] as $msg )
|
373 |
+
$message_error .= '<p>' . $msg . '</p>';
|
374 |
+
}
|
375 |
+
//clean messages
|
376 |
+
if ( ! empty( $saved_message ) )
|
377 |
+
delete_site_option( 'backwpup_messages' );
|
378 |
+
|
379 |
+
if ( ! empty( $message_updated ) ) {
|
380 |
+
$message_updated = '<div' . $message_id . ' class="updated">' . $message_updated . '</div>';
|
381 |
+
$message_id = '';
|
382 |
+
}
|
383 |
+
if ( ! empty( $message_error ) ) {
|
384 |
+
$message_error = '<div' . $message_id . ' class="error">' . $message_error . '</div>';
|
385 |
+
}
|
386 |
+
|
387 |
+
if ( $echo )
|
388 |
+
echo $message_updated . $message_error;
|
389 |
+
|
390 |
+
return $message_updated . $message_error;
|
391 |
+
}
|
392 |
+
|
393 |
+
/**
|
394 |
+
* Overrides WordPress text in Footer
|
395 |
+
*
|
396 |
+
* @param $admin_footer_text string
|
397 |
+
* @return string
|
398 |
+
*/
|
399 |
+
public function admin_footer_text( $admin_footer_text ) {
|
400 |
+
|
401 |
+
$default_text = $admin_footer_text;
|
402 |
+
|
403 |
+
if ( isset( $_REQUEST[ 'page' ] ) && strstr( $_REQUEST[ 'page' ], 'backwpup' ) ) {
|
404 |
+
$admin_footer_text = '<a href="' . __( 'http://marketpress.com', 'backwpup' ) . '" class="mp_logo" title="' . __( 'MarketPress', 'backwpup' ) . '">' . __( 'MarketPress', 'backwpup' ) . '</a>';
|
405 |
+
if ( ! class_exists( 'BackWPup_Pro', FALSE ) )
|
406 |
+
$admin_footer_text .= sprintf( __( '<a class="backwpup-get-pro" href="%s">Get BackWPup Pro now.</a>', 'backwpup' ), __( 'http://marketpress.com/product/backwpup-pro/', 'backwpup' ) );
|
407 |
+
|
408 |
+
return $admin_footer_text . $default_text;
|
409 |
+
}
|
410 |
+
|
411 |
+
return $admin_footer_text;
|
412 |
+
}
|
413 |
+
|
414 |
+
/**
|
415 |
+
* Overrides WordPress Version in Footer
|
416 |
+
*
|
417 |
+
* @param $update_footer_text string
|
418 |
+
* @return string
|
419 |
+
*/
|
420 |
+
public function update_footer( $update_footer_text ) {
|
421 |
+
|
422 |
+
$default_text = $update_footer_text;
|
423 |
+
|
424 |
+
if ( isset( $_REQUEST[ 'page' ] ) && strstr( $_REQUEST[ 'page' ], 'backwpup') ) {
|
425 |
+
$update_footer_text = '<span class="backwpup-update-footer"><a href="' . translate( BackWPup::get_plugin_data( 'PluginURI' ), 'backwpup' ) . '">' . BackWPup::get_plugin_data( 'Name' ) . '</a> '. sprintf( __( 'version %s' ,'backwpup'), BackWPup::get_plugin_data( 'Version' ) ) . '</span>';
|
426 |
+
|
427 |
+
return $update_footer_text . $default_text;
|
428 |
+
}
|
429 |
+
|
430 |
+
return $update_footer_text;
|
431 |
+
}
|
432 |
+
|
433 |
+
|
434 |
+
/**
|
435 |
+
* Add filed for selecting user role in user section
|
436 |
+
*
|
437 |
+
* @param $user WP_User
|
438 |
+
*/
|
439 |
+
public function user_profile_fields( $user ) {
|
440 |
+
global $wp_roles;
|
441 |
+
|
442 |
+
if ( ! is_super_admin() && ! current_user_can( 'backwpup_admin' ) )
|
443 |
+
return;
|
444 |
+
?>
|
445 |
+
<h3><?php echo BackWPup::get_plugin_data( 'name' ); ?></h3>
|
446 |
+
<table class="form-table">
|
447 |
+
<tr>
|
448 |
+
<th>
|
449 |
+
<label for="backwpup_role"><?php _e( 'BackWPup Role', 'backwpup' ); ?>
|
450 |
+
</label></th>
|
451 |
+
<td>
|
452 |
+
<select name="backwpup_role" id="backwpup_role" style="display:inline-block; float:none;">
|
453 |
+
<option value=""><?php _e( '— No role for BackWPup —', 'backwpup' ); ?></option>
|
454 |
+
<?php
|
455 |
+
foreach ( $wp_roles->roles as $role => $rolevalue ) {
|
456 |
+
if ( substr( $role, 0, 8 ) != 'backwpup' )
|
457 |
+
continue;
|
458 |
+
echo '<option value="'.$role.'" '. selected( in_array( $role, $user->roles ), TRUE, FALSE ) .'>'. $rolevalue[ 'name' ] . '</option>';
|
459 |
+
}
|
460 |
+
?>
|
461 |
+
</select>
|
462 |
+
<br />
|
463 |
+
<span class="description"><?php _e( 'Role that the user have on BackWPup', 'backwpup' ); ?></span>
|
464 |
+
</td>
|
465 |
+
</tr>
|
466 |
+
</table>
|
467 |
+
<?php
|
468 |
+
}
|
469 |
+
|
470 |
+
/**
|
471 |
+
* Save for user role adding
|
472 |
+
*
|
473 |
+
* @param $user_id int
|
474 |
+
*/
|
475 |
+
public function save_profile_update( $user_id ) {
|
476 |
+
global $wp_roles;
|
477 |
+
|
478 |
+
if ( ! is_super_admin() && ! current_user_can( 'backwpup_admin' ) )
|
479 |
+
return;
|
480 |
+
|
481 |
+
if ( empty( $user_id ) )
|
482 |
+
return;
|
483 |
+
|
484 |
+
if ( ! isset( $_POST['backwpup_role'] ) )
|
485 |
+
return;
|
486 |
+
|
487 |
+
// get BackWPup roles
|
488 |
+
$backwpup_roles = array();
|
489 |
+
foreach ( array_keys( $wp_roles->roles ) as $role ) {
|
490 |
+
if ( ! strstr( $role, 'backwpup_' ) )
|
491 |
+
continue;
|
492 |
+
$backwpup_roles[] = $role;
|
493 |
+
}
|
494 |
+
|
495 |
+
//get user for adding/removing role
|
496 |
+
$user = new WP_User( $user_id );
|
497 |
+
//remove BackWPup role from user
|
498 |
+
foreach ( $user->roles as $role ) {
|
499 |
+
if ( ! strstr( $role, 'backwpup_' ) )
|
500 |
+
continue;
|
501 |
+
$user->remove_role( $role );
|
502 |
+
}
|
503 |
+
//add new role to user
|
504 |
+
if ( ! empty( $_POST['backwpup_role'] ) && in_array( $_POST['backwpup_role'], $backwpup_roles ) )
|
505 |
+
$user->add_role( $_POST['backwpup_role'] );
|
506 |
+
|
507 |
+
return;
|
508 |
+
}
|
509 |
+
|
510 |
+
public function gettext( $translations, $text, $domain ) {
|
511 |
+
|
512 |
+
if ( strstr( $text, '<a href="http://codex.wordpress.org/WordPress_Backups">back up your database and files</a>' ) )
|
513 |
+
return sprintf( __( '<strong>Important:</strong> before updating, please <a href="%1$s">back up your database and files</a> with <a href="http://marketpress.de/product/backwpup-pro/">%2$s</a>. For help with updates, visit the <a href="http://codex.wordpress.org/Updating_WordPress">Updating WordPress</a> Codex page.', 'backwpup' ), network_admin_url( 'admin.php?page=backwpupjobs' ), BackWPup::get_plugin_data( 'name' ) );
|
514 |
+
|
515 |
+
if ( strstr( $text, 'This plugin has <strong>not been tested</strong> with your current version of WordPress.' ) )
|
516 |
+
return $translations . '</p></div><div class="updated"><p>' .sprintf( __( '<strong>Important:</strong> before installing this plugin, please <a href="%1$s">back up your database and files</a> with <a href="http://marketpress.de/product/backwpup-pro/">%2$s</a>.', 'backwpup' ), network_admin_url( 'admin.php?page=backwpupjobs' ), BackWPup::get_plugin_data( 'name' ) );
|
517 |
+
|
518 |
+
if ( strstr( $text, 'This plugin has <strong>not been marked as compatible</strong> with your version of WordPress.' ) )
|
519 |
+
return $translations . '</p></div><div class="updated"><p>' .sprintf( __( '<strong>Important:</strong> before installing this plugin, please <a href="%1$s">back up your database and files</a> with <a href="http://marketpress.de/product/backwpup-pro/">%2$s</a>.', 'backwpup' ), network_admin_url( 'admin.php?page=backwpupjobs' ), BackWPup::get_plugin_data( 'name' ) );
|
520 |
+
|
521 |
+
|
522 |
+
return $translations;
|
523 |
+
}
|
524 |
+
|
525 |
+
public function get_pro_banner() {
|
526 |
+
global $hook_suffix;
|
527 |
+
|
528 |
+
if ( $hook_suffix != 'plugins.php' )
|
529 |
+
return;
|
530 |
+
|
531 |
+
$show = get_user_meta( get_current_user_id(), 'backwpup_show_pro_panel', TRUE );
|
532 |
+
|
533 |
+
$show = $show === '0' ? FALSE : TRUE;
|
534 |
+
|
535 |
+
if ( isset( $_GET[ 'dis_pro' ] ) && $_GET[ 'dis_pro' ] == 0 ) {
|
536 |
+
update_user_meta( get_current_user_id(), 'backwpup_show_pro_panel', 0 );
|
537 |
+
$show = FALSE;
|
538 |
+
}
|
539 |
+
|
540 |
+
if ( ! $show )
|
541 |
+
return;
|
542 |
+
?>
|
543 |
+
<div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
|
544 |
+
<div class="welcome-panel" style="padding: 0;">
|
545 |
+
<a class="welcome-panel-close" href="<?php echo esc_url( admin_url( 'plugins.php?dis_pro=0' ) ); ?>"><?php _e( 'Dismiss', 'backwpup' ); ?></a>
|
546 |
+
|
547 |
+
<a class="button button-primary button-hero" href="<?php _e( 'http://marketpress.com/product/backwpup-pro/', 'backwpup' ) ?>" style="margin: 15px;float: left;"><?php _e( 'Learn More', 'backwpup' ); ?></a>
|
548 |
+
<div style="font-size: 1.2em; margin-top: 15px;"><?php _e( 'It’s time to upgrade your <strong>BackWPup</strong> to <strong>PRO</strong> version!', 'backwpup' ); ?></div>
|
549 |
+
<span><?php _e( 'Extend standard plugin functionality with new great options.', 'backwpup' ); ?></span>
|
550 |
+
|
551 |
+
</div>
|
552 |
+
</div>
|
553 |
+
<?php
|
554 |
+
}
|
555 |
+
|
556 |
+
/**
|
557 |
+
* Filter BackWPup roles from displaying in normal WP roles selection
|
558 |
+
*
|
559 |
+
* @param $all_roles
|
560 |
+
* @return mixed
|
561 |
+
*/
|
562 |
+
public function editable_roles( $all_roles ) {
|
563 |
+
|
564 |
+
foreach( $all_roles AS $key => $role ) {
|
565 |
+
if ( substr( $key, 0, 8 ) == 'backwpup' )
|
566 |
+
unset( $all_roles[$key] );
|
567 |
+
}
|
568 |
+
|
569 |
+
return $all_roles;
|
570 |
+
}
|
571 |
+
|
572 |
+
/**
|
573 |
+
* Add column for displaying BAckWPup user role
|
574 |
+
*
|
575 |
+
* @param $columns
|
576 |
+
* @return mixed
|
577 |
+
*/
|
578 |
+
public function manage_users_columns( $columns ) {
|
579 |
+
|
580 |
+
$columns[ 'backwpup_role' ] = __( 'BackWPup Role', 'backwpup' );
|
581 |
+
return $columns;
|
582 |
+
}
|
583 |
+
|
584 |
+
/**
|
585 |
+
* Display BackWPup user role in column
|
586 |
+
*
|
587 |
+
* @param $value
|
588 |
+
* @param $column_name
|
589 |
+
* @param $user_id
|
590 |
+
* @return string
|
591 |
+
*/
|
592 |
+
public function manage_users_custom_column( $value, $column_name, $user_id ) {
|
593 |
+
global $wp_roles;
|
594 |
+
|
595 |
+
if ( 'backwpup_role' != $column_name )
|
596 |
+
return $value;
|
597 |
+
|
598 |
+
$user = get_userdata( $user_id );
|
599 |
+
|
600 |
+
foreach ( $user->roles as $role ) {
|
601 |
+
if ( substr( $role, 0, 8 ) == 'backwpup' ) {
|
602 |
+
$value .= $wp_roles->roles[ $role ][ 'name' ]. '<br />';
|
603 |
+
}
|
604 |
+
}
|
605 |
+
|
606 |
+
return $value;
|
607 |
+
}
|
608 |
+
|
609 |
+
}
|
inc/class-adminbar.php
CHANGED
@@ -1,147 +1,132 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Class to display BackWPup in Adminbar
|
4 |
-
*/
|
5 |
-
class BackWPup_Adminbar {
|
6 |
-
|
7 |
-
private static $instance = NULL;
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
//
|
18 |
-
|
19 |
-
//
|
20 |
-
add_action( '
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
}
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
$
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
'
|
70 |
-
'
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
}
|
134 |
-
}
|
135 |
-
}
|
136 |
-
|
137 |
-
/**
|
138 |
-
*
|
139 |
-
*/
|
140 |
-
public function print_styles() {
|
141 |
-
|
142 |
-
if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG )
|
143 |
-
wp_enqueue_style( 'backwpupadminbar', BackWPup::get_plugin_data( 'URL' ) . '/css/adminbar.dev.css', '', time(), 'screen' );
|
144 |
-
else
|
145 |
-
wp_enqueue_style( 'backwpupadminbar', BackWPup::get_plugin_data( 'URL' ) . '/css/adminbar.css', '', BackWPup::get_plugin_data( 'Version' ), 'screen' );
|
146 |
-
}
|
147 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Class to display BackWPup in Adminbar
|
4 |
+
*/
|
5 |
+
class BackWPup_Adminbar {
|
6 |
+
|
7 |
+
private static $instance = NULL;
|
8 |
+
|
9 |
+
private function __construct() {
|
10 |
+
|
11 |
+
if ( defined( 'DOING_CRON' ) || ! current_user_can( 'backwpup' ) || ! is_admin_bar_showing() || ! get_site_option( 'backwpup_cfg_showadminbar' ) )
|
12 |
+
return;
|
13 |
+
|
14 |
+
//load text domain
|
15 |
+
if ( ! is_textdomain_loaded( 'backwpup' ) )
|
16 |
+
load_plugin_textdomain( 'backwpup', FALSE, BackWPup::get_plugin_data( 'BaseName' ) . '/languages' );
|
17 |
+
//add admin bar. Works only in init
|
18 |
+
add_action( 'admin_bar_menu', array( $this, 'adminbar' ), 100 );
|
19 |
+
//admin css
|
20 |
+
add_action( 'wp_head', array( 'BackWPup_Admin', 'admin_head' ) );
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* @static
|
25 |
+
* @return \BackWPup_Adminbar
|
26 |
+
*/
|
27 |
+
public static function get_instance() {
|
28 |
+
|
29 |
+
if (NULL === self::$instance) {
|
30 |
+
self::$instance = new self;
|
31 |
+
}
|
32 |
+
return self::$instance;
|
33 |
+
}
|
34 |
+
|
35 |
+
|
36 |
+
private function __clone() {}
|
37 |
+
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @global $wp_admin_bar WP_Admin_Bar
|
41 |
+
*/
|
42 |
+
public function adminbar() {
|
43 |
+
global $wp_admin_bar;
|
44 |
+
/* @var WP_Admin_Bar $wp_admin_bar */
|
45 |
+
|
46 |
+
$menu_title = '<span class="ab-icon"></span><span class="ab-label">' . BackWPup::get_plugin_data( 'name' ) . '</span>';
|
47 |
+
$menu_herf = network_admin_url( 'admin.php' ) . '?page=backwpup';
|
48 |
+
if ( file_exists( BackWPup::get_plugin_data( 'running_file' ) ) && current_user_can( 'backwpup_jobs_start' ) ) {
|
49 |
+
$menu_title = '<span class="ab-icon"></span><span class="ab-label">' . BackWPup::get_plugin_data( 'name' ) . ' <span id="backwpup-adminbar-running">' . __( 'running', 'backwpup' ) . '</span></span>';
|
50 |
+
$menu_herf = network_admin_url( 'admin.php' ) . '?page=backwpupjobs';
|
51 |
+
}
|
52 |
+
|
53 |
+
if ( current_user_can( 'backwpup' ) )
|
54 |
+
$wp_admin_bar->add_menu( array(
|
55 |
+
'id' => 'backwpup',
|
56 |
+
'title' => $menu_title,
|
57 |
+
'href' => $menu_herf,
|
58 |
+
'meta' => array( 'title' => BackWPup::get_plugin_data( 'name' ) )
|
59 |
+
) );
|
60 |
+
|
61 |
+
if ( file_exists( BackWPup::get_plugin_data( 'running_file' ) ) && current_user_can( 'backwpup_jobs_start' ) ) {
|
62 |
+
$wp_admin_bar->add_menu( array(
|
63 |
+
'id' => 'backwpup_working',
|
64 |
+
'parent' => 'backwpup_jobs',
|
65 |
+
'title' => __( 'Now Running', 'backwpup' ),
|
66 |
+
'href' => network_admin_url( 'admin.php' ) . '?page=backwpupjobs'
|
67 |
+
) );
|
68 |
+
$wp_admin_bar->add_menu( array(
|
69 |
+
'id' => 'backwpup_working_abort',
|
70 |
+
'parent' => 'backwpup_working',
|
71 |
+
'title' => __( 'Abort!', 'backwpup' ),
|
72 |
+
'href' => wp_nonce_url( network_admin_url( 'admin.php' ) . '?page=backwpup&action=abort', 'abort-job' )
|
73 |
+
) );
|
74 |
+
}
|
75 |
+
|
76 |
+
if ( current_user_can( 'backwpup_jobs' ) )
|
77 |
+
$wp_admin_bar->add_menu( array(
|
78 |
+
'id' => 'backwpup_jobs',
|
79 |
+
'parent' => 'backwpup',
|
80 |
+
'title' => __( 'Jobs', 'backwpup' ),
|
81 |
+
'href' => network_admin_url( 'admin.php' ) . '?page=backwpupjobs'
|
82 |
+
) );
|
83 |
+
|
84 |
+
if ( current_user_can( 'backwpup_jobs_edit' ) )
|
85 |
+
$wp_admin_bar->add_menu( array(
|
86 |
+
'id' => 'backwpup_jobs_new',
|
87 |
+
'parent' => 'backwpup_jobs',
|
88 |
+
'title' => __( 'Add new', 'backwpup' ),
|
89 |
+
'href' => network_admin_url( 'admin.php' ) . '?page=backwpupeditjob&tab=job'
|
90 |
+
) );
|
91 |
+
|
92 |
+
if ( current_user_can( 'backwpup_logs' ) )
|
93 |
+
$wp_admin_bar->add_menu( array(
|
94 |
+
'id' => 'backwpup_logs',
|
95 |
+
'parent' => 'backwpup',
|
96 |
+
'title' => __( 'Logs', 'backwpup' ),
|
97 |
+
'href' => network_admin_url( 'admin.php' ) . '?page=backwpuplogs'
|
98 |
+
) );
|
99 |
+
|
100 |
+
if ( current_user_can( 'backwpup_backups' ) )
|
101 |
+
$wp_admin_bar->add_menu( array(
|
102 |
+
'id' => 'backwpup_backups',
|
103 |
+
'parent' => 'backwpup',
|
104 |
+
'title' => __( 'Backups', 'backwpup' ),
|
105 |
+
'href' => network_admin_url( 'admin.php' ) . '?page=backwpupbackups'
|
106 |
+
) );
|
107 |
+
|
108 |
+
|
109 |
+
//add jobs
|
110 |
+
$jobs = (array)BackWPup_Option::get_job_ids();
|
111 |
+
foreach ( $jobs as $jobid ) {
|
112 |
+
if ( current_user_can( 'backwpup_jobs_edit' ) ) {
|
113 |
+
$name = BackWPup_Option::get( $jobid, 'name' );
|
114 |
+
$wp_admin_bar->add_menu( array(
|
115 |
+
'id' => 'backwpup_jobs_' . $jobid,
|
116 |
+
'parent' => 'backwpup_jobs',
|
117 |
+
'title' => $name,
|
118 |
+
'href' => wp_nonce_url( network_admin_url( 'admin.php' ) . '?page=backwpupeditjob&tab=job&jobid=' . $jobid, 'edit-job' )
|
119 |
+
) );
|
120 |
+
}
|
121 |
+
if ( current_user_can( 'backwpup_jobs_start' ) ) {
|
122 |
+
$url = BackWPup_Job::get_jobrun_url( 'runnowlink', $jobid );
|
123 |
+
$wp_admin_bar->add_menu( array(
|
124 |
+
'id' => 'backwpup_jobs_runnow_' . $jobid,
|
125 |
+
'parent' => 'backwpup_jobs_' . $jobid,
|
126 |
+
'title' => __( 'Run Now', 'backwpup' ),
|
127 |
+
'href' => $url[ 'url' ]
|
128 |
+
) );
|
129 |
+
}
|
130 |
+
}
|
131 |
+
}
|
132 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/class-create-archive.php
CHANGED
@@ -1,563 +1,567 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Class for creating File Archives
|
4 |
-
*/
|
5 |
-
class BackWPup_Create_Archive {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* Achieve file with full path
|
9 |
-
*
|
10 |
-
* @var string
|
11 |
-
*/
|
12 |
-
private $file = '';
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Compression method
|
16 |
-
*
|
17 |
-
* @var string Method off compression Methods are ZipArchive, PclZip, Tar, TarGz, TarBz2, gz, bz2
|
18 |
-
*/
|
19 |
-
private $method = '';
|
20 |
-
|
21 |
-
/**
|
22 |
-
* Open handel for files.
|
23 |
-
*/
|
24 |
-
private $filehandel = '';
|
25 |
-
|
26 |
-
/**
|
27 |
-
* class handel for ZipArchive.
|
28 |
-
*
|
29 |
-
* @var ZipArchive
|
30 |
-
*/
|
31 |
-
private $ziparchive = NULL;
|
32 |
-
|
33 |
-
/**
|
34 |
-
* class handel for PclZip.
|
35 |
-
*
|
36 |
-
* @var PclZip
|
37 |
-
*/
|
38 |
-
private $pclzip = NULL;
|
39 |
-
|
40 |
-
/**
|
41 |
-
* class handel for PclZip.
|
42 |
-
*
|
43 |
-
* @var array()
|
44 |
-
*/
|
45 |
-
private $pclzip_file_list = array();
|
46 |
-
|
47 |
-
/**
|
48 |
-
* Saved encoding will restored on __destruct
|
49 |
-
*
|
50 |
-
* @var string
|
51 |
-
*/
|
52 |
-
private $previous_encoding = '';
|
53 |
-
|
54 |
-
/**
|
55 |
-
* File cont off added files to handel somethings that depends on it
|
56 |
-
*
|
57 |
-
* @var int number of files added
|
58 |
-
*/
|
59 |
-
private $file_count = 0;
|
60 |
-
|
61 |
-
/**
|
62 |
-
* Set archive Parameter
|
63 |
-
*
|
64 |
-
* @param $file string File with full path of the archive
|
65 |
-
* @throws BackWPup_Create_Archive_Exception
|
66 |
-
*/
|
67 |
-
public function __construct( $file ) {
|
68 |
-
|
69 |
-
|
70 |
-
//check param
|
71 |
-
if ( empty( $file ) )
|
72 |
-
throw new BackWPup_Create_Archive_Exception( __( 'The file name of an archive cannot be empty.', 'backwpup' ) );
|
73 |
-
|
74 |
-
//set file
|
75 |
-
$this->file = trim( $file );
|
76 |
-
|
77 |
-
//check folder can used
|
78 |
-
if ( ! is_dir( dirname( $this->file ) ) ||! is_writable( dirname( $this->file ) ) )
|
79 |
-
throw new BackWPup_Create_Archive_Exception( sprintf( _x( 'Folder %s for archive not found','%s = Folder name', 'backwpup' ), dirname( $this->file ) ) );
|
80 |
-
|
81 |
-
|
82 |
-
//set and check method and get open handle
|
83 |
-
if ( strtolower( substr( $this->file, -7 ) ) == '.tar.gz' ) {
|
84 |
-
if ( ! function_exists( 'gzencode' ) )
|
85 |
-
throw new BackWPup_Create_Archive_Exception( __( 'Functions for gz compression not available', 'backwpup' ) );
|
86 |
-
$this->method = 'TarGz';
|
87 |
-
$this->filehandel = fopen(
|
88 |
-
}
|
89 |
-
elseif ( strtolower( substr( $this->file, -8 ) ) == '.tar.bz2' ) {
|
90 |
-
if ( ! function_exists( 'bzcompress' ) )
|
91 |
-
throw new BackWPup_Create_Archive_Exception( __( 'Functions for bz2 compression not available', 'backwpup' ) );
|
92 |
-
$this->method = 'TarBz2';
|
93 |
-
$this->filehandel = fopen( $this->file, 'ab');
|
94 |
-
}
|
95 |
-
elseif ( strtolower( substr( $this->file, -4 ) ) == '.tar' ) {
|
96 |
-
$this->method = 'Tar';
|
97 |
-
$this->filehandel = fopen( $this->file, 'ab');
|
98 |
-
}
|
99 |
-
elseif ( strtolower( substr( $this->file, -4 ) ) == '.zip' ) {
|
100 |
-
$this->method =
|
101 |
-
//check and set method
|
102 |
-
if ( empty( $this->method ) || ( $this->method != 'ZipArchive' && $this->method != 'PclZip' ) )
|
103 |
-
$this->method = 'ZipArchive';
|
104 |
-
if ( ! class_exists( 'ZipArchive' ) )
|
105 |
-
$this->method = 'PclZip';
|
106 |
-
//open classes
|
107 |
-
if ( $this->get_method() == 'ZipArchive' ) {
|
108 |
-
$this->ziparchive = new ZipArchive();
|
109 |
-
$ziparchive_open = $this->ziparchive->open( $this->file, ZipArchive::CREATE );
|
110 |
-
if ( $ziparchive_open !== TRUE ) {
|
111 |
-
$this->ziparchive_status( $ziparchive_open );
|
112 |
-
throw new BackWPup_Create_Archive_Exception( sprintf( _x( 'Cannot create zip archive: %d','ZipArchive open() result', 'backwpup' ), $ziparchive_open ) );
|
113 |
-
}
|
114 |
-
}
|
115 |
-
if ( $this->get_method() == 'PclZip' && ! function_exists( 'gzencode' ) )
|
116 |
-
throw new BackWPup_Create_Archive_Exception( __( 'Functions for gz compression not available', 'backwpup' ) );
|
117 |
-
if( $this->get_method() == 'PclZip' ) {
|
118 |
-
$this->method = 'PclZip';
|
119 |
-
if ( ini_get( 'mbstring.func_overload' ) && function_exists( 'mb_internal_encoding' ) ) {
|
120 |
-
$this->previous_encoding = mb_internal_encoding();
|
121 |
-
mb_internal_encoding( 'ISO-8859-1' );
|
122 |
-
}
|
123 |
-
if ( ! defined('PCLZIP_TEMPORARY_DIR') )
|
124 |
-
define( 'PCLZIP_TEMPORARY_DIR', BackWPup::get_plugin_data( 'TEMP' ) );
|
125 |
-
require_once ABSPATH . 'wp-admin/includes/class-pclzip.php';
|
126 |
-
$this->pclzip = new PclZip( $this->file );
|
127 |
-
}
|
128 |
-
}
|
129 |
-
elseif ( strtolower( substr( $this->file, -3 ) ) == '.gz' ) {
|
130 |
-
if ( ! function_exists( 'gzencode' ) )
|
131 |
-
throw new BackWPup_Create_Archive_Exception( __( 'Functions for gz compression not available', 'backwpup' ) );
|
132 |
-
$this->method = 'gz';
|
133 |
-
$this->filehandel = fopen( 'compress.zlib://' . $this->file, 'wb');
|
134 |
-
}
|
135 |
-
elseif ( strtolower( substr( $this->file, -4 ) ) == '.bz2' ) {
|
136 |
-
if ( ! function_exists( 'bzcompress' ) )
|
137 |
-
throw new BackWPup_Create_Archive_Exception( __( 'Functions for bz2 compression not available', 'backwpup' ) );
|
138 |
-
$this->method = 'bz2';
|
139 |
-
$this->filehandel = fopen( 'compress.bzip2://' . $this->file, 'w');
|
140 |
-
}
|
141 |
-
else {
|
142 |
-
throw new BackWPup_Create_Archive_Exception( sprintf( _x( 'Method to archive file %s not detected','%s = file name', 'backwpup' ), basename( $this->file ) ) );
|
143 |
-
}
|
144 |
-
|
145 |
-
//check file handle
|
146 |
-
if ( ! empty( $this->filehandel ) && ! is_resource( $this->filehandel ) )
|
147 |
-
throw new BackWPup_Create_Archive_Exception( __( 'Cannot open archive file', 'backwpup' ) );
|
148 |
-
|
149 |
-
}
|
150 |
-
|
151 |
-
|
152 |
-
/**
|
153 |
-
* Closes open archive on shutdown.
|
154 |
-
*/
|
155 |
-
public function __destruct() {
|
156 |
-
|
157 |
-
//set encoding back
|
158 |
-
if ( ! empty( $this->previous_encoding ) )
|
159 |
-
mb_internal_encoding( $this->previous_encoding );
|
160 |
-
|
161 |
-
//close PclZip Class
|
162 |
-
if ( is_object( $this->pclzip ) ) {
|
163 |
-
if ( count( $this->pclzip_file_list ) > 0 ) {
|
164 |
-
if ( 0 == $this->pclzip->add( $this->pclzip_file_list ) )
|
165 |
-
trigger_error( sprintf( __( 'PclZip archive add error: %s', 'backwpup' ), $this->pclzip->errorInfo( TRUE ) ), E_USER_ERROR );
|
166 |
-
}
|
167 |
-
unset( $this->pclzip );
|
168 |
-
}
|
169 |
-
|
170 |
-
//close PclZip Class
|
171 |
-
if ( is_object( $this->ziparchive ) ) {
|
172 |
-
$this->ziparchive_status( $this->ziparchive->status );
|
173 |
-
$this->ziparchive->close();
|
174 |
-
unset( $this->ziparchive );
|
175 |
-
}
|
176 |
-
|
177 |
-
//close file if open
|
178 |
-
if ( is_resource( $this->filehandel ) )
|
179 |
-
fclose( $this->filehandel );
|
180 |
-
}
|
181 |
-
|
182 |
-
/*
|
183 |
-
* Closing the archive
|
184 |
-
*/
|
185 |
-
public function close() {
|
186 |
-
|
187 |
-
//write tar file end
|
188 |
-
if ( $this->get_method()
|
189 |
-
fwrite( $this->filehandel, pack( "a1024", "" ) );
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
break;
|
285 |
-
case '
|
286 |
-
|
287 |
-
if (
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
$zip_errors[ ZipArchive::
|
387 |
-
$zip_errors[ ZipArchive::
|
388 |
-
$zip_errors[ ZipArchive::
|
389 |
-
$zip_errors[ ZipArchive::
|
390 |
-
$zip_errors[ ZipArchive::
|
391 |
-
$zip_errors[ ZipArchive::
|
392 |
-
|
393 |
-
|
394 |
-
$
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
$
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
//
|
425 |
-
if (
|
426 |
-
|
427 |
-
|
428 |
-
}
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
$
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
sprintf(
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
$fileowner
|
452 |
-
$
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
$
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
"
|
534 |
-
"
|
535 |
-
$
|
536 |
-
|
537 |
-
"", //
|
538 |
-
"", //
|
539 |
-
|
540 |
-
""
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
|
|
|
|
|
|
|
|
563 |
class BackWPup_Create_Archive_Exception extends Exception { }
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Class for creating File Archives
|
4 |
+
*/
|
5 |
+
class BackWPup_Create_Archive {
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Achieve file with full path
|
9 |
+
*
|
10 |
+
* @var string
|
11 |
+
*/
|
12 |
+
private $file = '';
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Compression method
|
16 |
+
*
|
17 |
+
* @var string Method off compression Methods are ZipArchive, PclZip, Tar, TarGz, TarBz2, gz, bz2
|
18 |
+
*/
|
19 |
+
private $method = '';
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Open handel for files.
|
23 |
+
*/
|
24 |
+
private $filehandel = '';
|
25 |
+
|
26 |
+
/**
|
27 |
+
* class handel for ZipArchive.
|
28 |
+
*
|
29 |
+
* @var ZipArchive
|
30 |
+
*/
|
31 |
+
private $ziparchive = NULL;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* class handel for PclZip.
|
35 |
+
*
|
36 |
+
* @var PclZip
|
37 |
+
*/
|
38 |
+
private $pclzip = NULL;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* class handel for PclZip.
|
42 |
+
*
|
43 |
+
* @var array()
|
44 |
+
*/
|
45 |
+
private $pclzip_file_list = array();
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Saved encoding will restored on __destruct
|
49 |
+
*
|
50 |
+
* @var string
|
51 |
+
*/
|
52 |
+
private $previous_encoding = '';
|
53 |
+
|
54 |
+
/**
|
55 |
+
* File cont off added files to handel somethings that depends on it
|
56 |
+
*
|
57 |
+
* @var int number of files added
|
58 |
+
*/
|
59 |
+
private $file_count = 0;
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Set archive Parameter
|
63 |
+
*
|
64 |
+
* @param $file string File with full path of the archive
|
65 |
+
* @throws BackWPup_Create_Archive_Exception
|
66 |
+
*/
|
67 |
+
public function __construct( $file ) {
|
68 |
+
|
69 |
+
|
70 |
+
//check param
|
71 |
+
if ( empty( $file ) )
|
72 |
+
throw new BackWPup_Create_Archive_Exception( __( 'The file name of an archive cannot be empty.', 'backwpup' ) );
|
73 |
+
|
74 |
+
//set file
|
75 |
+
$this->file = trim( $file );
|
76 |
+
|
77 |
+
//check folder can used
|
78 |
+
if ( ! is_dir( dirname( $this->file ) ) ||! is_writable( dirname( $this->file ) ) )
|
79 |
+
throw new BackWPup_Create_Archive_Exception( sprintf( _x( 'Folder %s for archive not found','%s = Folder name', 'backwpup' ), dirname( $this->file ) ) );
|
80 |
+
|
81 |
+
|
82 |
+
//set and check method and get open handle
|
83 |
+
if ( strtolower( substr( $this->file, -7 ) ) == '.tar.gz' ) {
|
84 |
+
if ( ! function_exists( 'gzencode' ) )
|
85 |
+
throw new BackWPup_Create_Archive_Exception( __( 'Functions for gz compression not available', 'backwpup' ) );
|
86 |
+
$this->method = 'TarGz';
|
87 |
+
$this->filehandel = fopen( substr( $this->file, 0, -3 ), 'ab' );
|
88 |
+
}
|
89 |
+
elseif ( strtolower( substr( $this->file, -8 ) ) == '.tar.bz2' ) {
|
90 |
+
if ( ! function_exists( 'bzcompress' ) )
|
91 |
+
throw new BackWPup_Create_Archive_Exception( __( 'Functions for bz2 compression not available', 'backwpup' ) );
|
92 |
+
$this->method = 'TarBz2';
|
93 |
+
$this->filehandel = fopen( substr( $this->file, 0, -4 ), 'ab');
|
94 |
+
}
|
95 |
+
elseif ( strtolower( substr( $this->file, -4 ) ) == '.tar' ) {
|
96 |
+
$this->method = 'Tar';
|
97 |
+
$this->filehandel = fopen( $this->file, 'ab');
|
98 |
+
}
|
99 |
+
elseif ( strtolower( substr( $this->file, -4 ) ) == '.zip' ) {
|
100 |
+
$this->method = get_site_option( 'backwpup_cfg_jobziparchivemethod');
|
101 |
+
//check and set method
|
102 |
+
if ( empty( $this->method ) || ( $this->method != 'ZipArchive' && $this->method != 'PclZip' ) )
|
103 |
+
$this->method = 'ZipArchive';
|
104 |
+
if ( ! class_exists( 'ZipArchive' ) )
|
105 |
+
$this->method = 'PclZip';
|
106 |
+
//open classes
|
107 |
+
if ( $this->get_method() == 'ZipArchive' ) {
|
108 |
+
$this->ziparchive = new ZipArchive();
|
109 |
+
$ziparchive_open = $this->ziparchive->open( $this->file, ZipArchive::CREATE );
|
110 |
+
if ( $ziparchive_open !== TRUE ) {
|
111 |
+
$this->ziparchive_status( $ziparchive_open );
|
112 |
+
throw new BackWPup_Create_Archive_Exception( sprintf( _x( 'Cannot create zip archive: %d','ZipArchive open() result', 'backwpup' ), $ziparchive_open ) );
|
113 |
+
}
|
114 |
+
}
|
115 |
+
if ( $this->get_method() == 'PclZip' && ! function_exists( 'gzencode' ) )
|
116 |
+
throw new BackWPup_Create_Archive_Exception( __( 'Functions for gz compression not available', 'backwpup' ) );
|
117 |
+
if( $this->get_method() == 'PclZip' ) {
|
118 |
+
$this->method = 'PclZip';
|
119 |
+
if ( ini_get( 'mbstring.func_overload' ) && function_exists( 'mb_internal_encoding' ) ) {
|
120 |
+
$this->previous_encoding = mb_internal_encoding();
|
121 |
+
mb_internal_encoding( 'ISO-8859-1' );
|
122 |
+
}
|
123 |
+
if ( ! defined('PCLZIP_TEMPORARY_DIR') )
|
124 |
+
define( 'PCLZIP_TEMPORARY_DIR', BackWPup::get_plugin_data( 'TEMP' ) );
|
125 |
+
require_once ABSPATH . 'wp-admin/includes/class-pclzip.php';
|
126 |
+
$this->pclzip = new PclZip( $this->file );
|
127 |
+
}
|
128 |
+
}
|
129 |
+
elseif ( strtolower( substr( $this->file, -3 ) ) == '.gz' ) {
|
130 |
+
if ( ! function_exists( 'gzencode' ) )
|
131 |
+
throw new BackWPup_Create_Archive_Exception( __( 'Functions for gz compression not available', 'backwpup' ) );
|
132 |
+
$this->method = 'gz';
|
133 |
+
$this->filehandel = fopen( 'compress.zlib://' . $this->file, 'wb');
|
134 |
+
}
|
135 |
+
elseif ( strtolower( substr( $this->file, -4 ) ) == '.bz2' ) {
|
136 |
+
if ( ! function_exists( 'bzcompress' ) )
|
137 |
+
throw new BackWPup_Create_Archive_Exception( __( 'Functions for bz2 compression not available', 'backwpup' ) );
|
138 |
+
$this->method = 'bz2';
|
139 |
+
$this->filehandel = fopen( 'compress.bzip2://' . $this->file, 'w');
|
140 |
+
}
|
141 |
+
else {
|
142 |
+
throw new BackWPup_Create_Archive_Exception( sprintf( _x( 'Method to archive file %s not detected','%s = file name', 'backwpup' ), basename( $this->file ) ) );
|
143 |
+
}
|
144 |
+
|
145 |
+
//check file handle
|
146 |
+
if ( ! empty( $this->filehandel ) && ! is_resource( $this->filehandel ) )
|
147 |
+
throw new BackWPup_Create_Archive_Exception( __( 'Cannot open archive file', 'backwpup' ) );
|
148 |
+
|
149 |
+
}
|
150 |
+
|
151 |
+
|
152 |
+
/**
|
153 |
+
* Closes open archive on shutdown.
|
154 |
+
*/
|
155 |
+
public function __destruct() {
|
156 |
+
|
157 |
+
//set encoding back
|
158 |
+
if ( ! empty( $this->previous_encoding ) )
|
159 |
+
mb_internal_encoding( $this->previous_encoding );
|
160 |
+
|
161 |
+
//close PclZip Class
|
162 |
+
if ( is_object( $this->pclzip ) ) {
|
163 |
+
if ( count( $this->pclzip_file_list ) > 0 ) {
|
164 |
+
if ( 0 == $this->pclzip->add( $this->pclzip_file_list ) )
|
165 |
+
trigger_error( sprintf( __( 'PclZip archive add error: %s', 'backwpup' ), $this->pclzip->errorInfo( TRUE ) ), E_USER_ERROR );
|
166 |
+
}
|
167 |
+
unset( $this->pclzip );
|
168 |
+
}
|
169 |
+
|
170 |
+
//close PclZip Class
|
171 |
+
if ( is_object( $this->ziparchive ) ) {
|
172 |
+
$this->ziparchive_status( $this->ziparchive->status );
|
173 |
+
$this->ziparchive->close();
|
174 |
+
unset( $this->ziparchive );
|
175 |
+
}
|
176 |
+
|
177 |
+
//close file if open
|
178 |
+
if ( is_resource( $this->filehandel ) )
|
179 |
+
fclose( $this->filehandel );
|
180 |
+
}
|
181 |
+
|
182 |
+
/*
|
183 |
+
* Closing the archive
|
184 |
+
*/
|
185 |
+
public function close() {
|
186 |
+
|
187 |
+
//write tar file end
|
188 |
+
if ( in_array( $this->get_method(), array( 'Tar', 'TarGz', 'TarBz2' ) ) )
|
189 |
+
fwrite( $this->filehandel, pack( "a1024", "" ) );
|
190 |
+
|
191 |
+
if ( $this->get_method() == 'TarGz' ) {
|
192 |
+
fclose( $this->filehandel );
|
193 |
+
$this->filehandel = fopen( 'compress.zlib://' . $this->file, 'wb' );
|
194 |
+
$fd = fopen( substr( $this->file, 0, -3 ), 'rb' );
|
195 |
+
while ( ! feof( $fd ) )
|
196 |
+
fwrite( $this->filehandel, fread( $fd, 8192 ) );
|
197 |
+
fclose( $fd );
|
198 |
+
unlink( substr( $this->file, 0, -3 ) );
|
199 |
+
}
|
200 |
+
|
201 |
+
if ( $this->get_method() == 'TarBz2' ) {
|
202 |
+
fclose( $this->filehandel );
|
203 |
+
$this->filehandel = fopen( 'compress.bzip2://' . $this->file, 'wb' );
|
204 |
+
$fd = fopen( substr( $this->file, 0, -4 ), 'rb' );
|
205 |
+
while ( ! feof( $fd ) )
|
206 |
+
fwrite( $this->filehandel, fread( $fd, 8192 ) );
|
207 |
+
fclose( $fd );
|
208 |
+
unlink( substr( $this->file, 0, -4 ) );
|
209 |
+
}
|
210 |
+
|
211 |
+
}
|
212 |
+
|
213 |
+
/**
|
214 |
+
* Get method that the archive uses
|
215 |
+
*
|
216 |
+
* @return string of compression method
|
217 |
+
*/
|
218 |
+
public function get_method() {
|
219 |
+
|
220 |
+
return $this->method;
|
221 |
+
}
|
222 |
+
|
223 |
+
|
224 |
+
/**
|
225 |
+
* Adds a file to Archive
|
226 |
+
*
|
227 |
+
* @param $file_name string
|
228 |
+
* @param $name_in_archive string
|
229 |
+
* @return bool Add worked or not
|
230 |
+
* @throws BackWPup_Create_Archive_Exception
|
231 |
+
*/
|
232 |
+
public function add_file( $file_name, $name_in_archive = '' ) {
|
233 |
+
|
234 |
+
$file_name = trim( $file_name );
|
235 |
+
|
236 |
+
//check param
|
237 |
+
if ( empty( $file_name ) ) {
|
238 |
+
trigger_error( __( 'File name cannot be empty', 'backwpup' ), E_USER_WARNING );
|
239 |
+
return FALSE;
|
240 |
+
}
|
241 |
+
|
242 |
+
if ( ! is_readable( $file_name ) ) {
|
243 |
+
trigger_error( sprintf( _x( 'File %s does not exist or is not readable', 'File to add to archive', 'backwpup' ), $file_name ), E_USER_WARNING );
|
244 |
+
return FALSE;
|
245 |
+
}
|
246 |
+
|
247 |
+
if ( empty( $name_in_archive ) )
|
248 |
+
$name_in_archive = $file_name;
|
249 |
+
|
250 |
+
switch ( $this->get_method() ) {
|
251 |
+
case 'gz':
|
252 |
+
if ( $this->file_count > 0 ) {
|
253 |
+
trigger_error( __( 'This archive method can only add one file', 'backwpup' ), E_USER_WARNING );
|
254 |
+
return FALSE;
|
255 |
+
}
|
256 |
+
//add file to archive
|
257 |
+
if ( ! ( $fd = fopen( $file_name, 'rb' ) ) ) {
|
258 |
+
trigger_error( sprintf( __( 'Cannot open source file %s to archive', 'backwpup' ), $file_name ), E_USER_WARNING );
|
259 |
+
return FALSE;
|
260 |
+
}
|
261 |
+
while ( ! feof( $fd ) )
|
262 |
+
fwrite( $this->filehandel, fread( $fd, 8192 ) );
|
263 |
+
fclose( $fd );
|
264 |
+
break;
|
265 |
+
case 'bz':
|
266 |
+
if ( $this->file_count > 0 ) {
|
267 |
+
trigger_error( __( 'This archive method can only add one file', 'backwpup' ), E_USER_WARNING );
|
268 |
+
return FALSE;
|
269 |
+
}
|
270 |
+
//add file to archive
|
271 |
+
if ( ! ( $fd = fopen( $file_name, 'rb' ) ) ) {
|
272 |
+
trigger_error( sprintf( __( 'Cannot open source file %s to archive', 'backwpup' ), $file_name ), E_USER_WARNING );
|
273 |
+
return FALSE;
|
274 |
+
}
|
275 |
+
while ( ! feof( $fd ) )
|
276 |
+
fwrite( $this->filehandel, bzcompress( fread( $fd, 8192 ) ) );
|
277 |
+
fclose( $fd );
|
278 |
+
break;
|
279 |
+
case 'Tar':
|
280 |
+
case 'TarGz':
|
281 |
+
case 'TarBz2':
|
282 |
+
if ( ! $this->tar_file( $file_name, $name_in_archive ) );
|
283 |
+
return FALSE;
|
284 |
+
break;
|
285 |
+
case 'ZipArchive':
|
286 |
+
//close and reopen, all added files are open on fs
|
287 |
+
if ( $this->file_count >= 20 ) { //35 works with PHP 5.2.4 on win
|
288 |
+
$this->ziparchive_status( $this->ziparchive->status );
|
289 |
+
$this->ziparchive->close();
|
290 |
+
$ziparchive_open = $this->ziparchive->open( $this->file, ZipArchive::CREATE );
|
291 |
+
if ( $ziparchive_open !== TRUE ) {
|
292 |
+
$this->ziparchive_status( $ziparchive_open );
|
293 |
+
return FALSE;
|
294 |
+
}
|
295 |
+
$this->file_count = 0;
|
296 |
+
}
|
297 |
+
if ( ! $this->ziparchive->addFile( $file_name, $name_in_archive ) ) {
|
298 |
+
trigger_error( sprintf( __( 'Cannot add "%s" to zip archive!', 'backwpup' ), $name_in_archive ), E_USER_ERROR );
|
299 |
+
return FALSE;
|
300 |
+
}
|
301 |
+
break;
|
302 |
+
case 'PclZip':
|
303 |
+
$this->pclzip_file_list[] = array( PCLZIP_ATT_FILE_NAME => $file_name, PCLZIP_ATT_FILE_NEW_FULL_NAME => $name_in_archive );
|
304 |
+
if ( count( $this->pclzip_file_list ) >= 100 ) {
|
305 |
+
if ( 0 == $this->pclzip->add( $this->pclzip_file_list ) ) {
|
306 |
+
trigger_error( sprintf( __( 'PclZip archive add error: %s', 'backwpup' ), $this->pclzip->errorInfo( TRUE ) ), E_USER_ERROR );
|
307 |
+
return FALSE;
|
308 |
+
}
|
309 |
+
$this->pclzip_file_list = array();
|
310 |
+
}
|
311 |
+
break;
|
312 |
+
}
|
313 |
+
|
314 |
+
$this->file_count++;
|
315 |
+
|
316 |
+
return TRUE;
|
317 |
+
}
|
318 |
+
|
319 |
+
/**
|
320 |
+
* Add a empty Folder to archive
|
321 |
+
*
|
322 |
+
* @param $folder_name string Name of folder to add to archive
|
323 |
+
* @param string $name_in_archive
|
324 |
+
* @throws BackWPup_Create_Archive_Exception
|
325 |
+
* @return bool
|
326 |
+
*/
|
327 |
+
public function add_empty_folder( $folder_name, $name_in_archive = '' ) {
|
328 |
+
|
329 |
+
$folder_name = trim( $folder_name );
|
330 |
+
|
331 |
+
//check param
|
332 |
+
if ( empty( $folder_name ) ) {
|
333 |
+
trigger_error( __( 'Folder name cannot be empty', 'backwpup' ), E_USER_WARNING );
|
334 |
+
return FALSE;
|
335 |
+
}
|
336 |
+
|
337 |
+
if ( ! is_dir( $folder_name ) || ! is_readable( $folder_name ) ) {
|
338 |
+
trigger_error( sprintf( _x( 'Folder %s does not exist or is not readable', 'Folder path to add to archive', 'backwpup' ), $folder_name ), E_USER_WARNING );
|
339 |
+
return FALSE;
|
340 |
+
}
|
341 |
+
|
342 |
+
if ( empty( $name_in_archive ) )
|
343 |
+
return FALSE;
|
344 |
+
|
345 |
+
switch ( $this->get_method() ) {
|
346 |
+
case 'gz':
|
347 |
+
trigger_error( __( 'This archive method can only add one file', 'backwpup' ), E_USER_WARNING );
|
348 |
+
return FALSE;
|
349 |
+
break;
|
350 |
+
case 'bz':
|
351 |
+
trigger_error( __( 'This archive method can only add one file', 'backwpup' ), E_USER_WARNING );
|
352 |
+
return FALSE;
|
353 |
+
break;
|
354 |
+
case 'Tar':
|
355 |
+
case 'TarGz':
|
356 |
+
case 'TarBz2':
|
357 |
+
if ( ! $this->tar_empty_folder( $folder_name, $name_in_archive ) );
|
358 |
+
return FALSE;
|
359 |
+
break;
|
360 |
+
case 'ZipArchive':
|
361 |
+
if ( ! $this->ziparchive->addEmptyDir( $name_in_archive ) ) {
|
362 |
+
trigger_error( sprintf( __( 'Cannot add "%s" to zip archive!', 'backwpup' ), $name_in_archive ), E_USER_ERROR );
|
363 |
+
return FALSE;
|
364 |
+
}
|
365 |
+
break;
|
366 |
+
case 'PclZip':
|
367 |
+
return TRUE;
|
368 |
+
break;
|
369 |
+
}
|
370 |
+
|
371 |
+
return TRUE;
|
372 |
+
}
|
373 |
+
|
374 |
+
/**
|
375 |
+
* Output status of ZipArchive
|
376 |
+
*
|
377 |
+
* @param $code int ZipArchive Error code
|
378 |
+
* @return bool
|
379 |
+
*/
|
380 |
+
private function ziparchive_status( $code ) {
|
381 |
+
|
382 |
+
if ( $code == 0 )
|
383 |
+
return TRUE;
|
384 |
+
|
385 |
+
//define error messages
|
386 |
+
$zip_errors[ ZipArchive::ER_MULTIDISK ] = __( '(ER_MULTIDISK) Multi-disk zip archives not supported', 'backwpup' );
|
387 |
+
$zip_errors[ ZipArchive::ER_RENAME ] = __( '(ER_RENAME) Renaming temporary file failed', 'backwpup' );
|
388 |
+
$zip_errors[ ZipArchive::ER_CLOSE ] = __( '(ER_CLOSE) Closing zip archive failed', 'backwpup' );
|
389 |
+
$zip_errors[ ZipArchive::ER_SEEK ] = __( '(ER_SEEK) Seek error', 'backwpup' );
|
390 |
+
$zip_errors[ ZipArchive::ER_READ ] = __( '(ER_READ) Read error', 'backwpup' );
|
391 |
+
$zip_errors[ ZipArchive::ER_WRITE ] = __( '(ER_WRITE) Write error', 'backwpup' );
|
392 |
+
$zip_errors[ ZipArchive::ER_CRC ] = __( '(ER_CRC) CRC error', 'backwpup' );
|
393 |
+
$zip_errors[ ZipArchive::ER_ZIPCLOSED ] = __( '(ER_ZIPCLOSED) Containing zip archive was closed', 'backwpup' );
|
394 |
+
$zip_errors[ ZipArchive::ER_NOENT ] = __( '(ER_NOENT) No such file', 'backwpup' );
|
395 |
+
$zip_errors[ ZipArchive::ER_EXISTS ] = __( '(ER_EXISTS) File already exists', 'backwpup' );
|
396 |
+
$zip_errors[ ZipArchive::ER_OPEN ] = __( '(ER_OPEN) Can\'t open file', 'backwpup' );
|
397 |
+
$zip_errors[ ZipArchive::ER_TMPOPEN ] = __( '(ER_TMPOPEN) Failure to create temporary file', 'backwpup' );
|
398 |
+
$zip_errors[ ZipArchive::ER_ZLIB ] = __( '(ER_ZLIB) Zlib error', 'backwpup' );
|
399 |
+
$zip_errors[ ZipArchive::ER_MEMORY ] = __( '(ER_MEMORY) Malloc failure', 'backwpup' );
|
400 |
+
$zip_errors[ ZipArchive::ER_MULTIDISK ] = __( '(ER_CHANGED) Entry has been changed', 'backwpup' );
|
401 |
+
$zip_errors[ ZipArchive::ER_CHANGED ] = __( '(ER_COMPNOTSUPP) Compression method not supported', 'backwpup' );
|
402 |
+
$zip_errors[ ZipArchive::ER_EOF ] = __( '(ER_EOF) Premature EOF', 'backwpup' );
|
403 |
+
$zip_errors[ ZipArchive::ER_INVAL ] = __( '(ER_INVAL) Invalid argument', 'backwpup' );
|
404 |
+
$zip_errors[ ZipArchive::ER_NOZIP ] = __( '(ER_NOZIP) Not a zip archive', 'backwpup' );
|
405 |
+
$zip_errors[ ZipArchive::ER_INTERNAL ] = __( '(ER_INTERNAL) Internal error', 'backwpup' );
|
406 |
+
$zip_errors[ ZipArchive::ER_INCONS ] = __( '(ER_INCONS) Zip archive inconsistent', 'backwpup' );
|
407 |
+
$zip_errors[ ZipArchive::ER_REMOVE ] = __( '(ER_REMOVE) Can\'t remove file', 'backwpup' );
|
408 |
+
$zip_errors[ ZipArchive::ER_DELETED ] = __( '(ER_DELETED) Entry has been deleted', 'backwpup' );
|
409 |
+
|
410 |
+
//ste error message
|
411 |
+
$zip_error = $code;
|
412 |
+
if ( isset( $zip_errors[ $zip_error ] ) )
|
413 |
+
$zip_error = $zip_errors[ $zip_error ];
|
414 |
+
|
415 |
+
trigger_error( sprintf( _x( 'ZipArchive returns status: %s','Text of ZipArchive status Message', 'backwpup' ), $zip_error ), E_USER_ERROR );
|
416 |
+
return FALSE;
|
417 |
+
}
|
418 |
+
|
419 |
+
/**
|
420 |
+
* Tar a file to archive
|
421 |
+
*/
|
422 |
+
private function tar_file( $file_name, $name_in_archive ) {
|
423 |
+
|
424 |
+
//split filename larger than 100 chars
|
425 |
+
if ( strlen( $name_in_archive ) <= 100 ) {
|
426 |
+
$filename = $name_in_archive;
|
427 |
+
$filename_prefix = "";
|
428 |
+
}
|
429 |
+
else {
|
430 |
+
$filename_offset = strlen( $name_in_archive ) - 100;
|
431 |
+
$split_pos = strpos( $name_in_archive, '/', $filename_offset );
|
432 |
+
$filename = substr( $name_in_archive, $split_pos + 1 );
|
433 |
+
$filename_prefix = substr( $name_in_archive, 0, $split_pos );
|
434 |
+
if ( strlen( $filename ) > 100 )
|
435 |
+
trigger_error( sprintf( __( 'File name "%1$s" is too long to be saved correctly in %2$s archive!', 'backwpup' ), $name_in_archive, $this->get_method() ), E_USER_WARNING );
|
436 |
+
if ( strlen( $filename_prefix ) > 155 )
|
437 |
+
trigger_error( sprintf( __( 'File path "%1$s" is too long to be saved correctly in %2$s archive!', 'backwpup' ), $name_in_archive, $this->get_method() ), E_USER_WARNING );
|
438 |
+
}
|
439 |
+
//get file stat
|
440 |
+
$file_stat = @stat( $file_name );
|
441 |
+
//open file
|
442 |
+
if ( ! ( $fd = fopen( $file_name, 'rb' ) ) ) {
|
443 |
+
trigger_error( sprintf( __( 'Cannot open source file %s to archive', 'backwpup' ), $file_name ), E_USER_WARNING );
|
444 |
+
return FALSE;
|
445 |
+
}
|
446 |
+
//Set file user/group name if linux
|
447 |
+
$fileowner = __( "Unknown", "backwpup" );
|
448 |
+
$filegroup = __( "Unknown", "backwpup" );
|
449 |
+
if ( function_exists( 'posix_getpwuid' ) ) {
|
450 |
+
$info = posix_getpwuid( $file_stat[ 'uid' ] );
|
451 |
+
$fileowner = $info[ 'name' ];
|
452 |
+
$info = posix_getgrgid( $file_stat[ 'gid' ] );
|
453 |
+
$filegroup = $info[ 'name' ];
|
454 |
+
}
|
455 |
+
// Generate the TAR header for this file
|
456 |
+
$header = pack( "a100a8a8a8a12a12a8a1a100a6a2a32a32a8a8a155a12",
|
457 |
+
$filename, //name of file 100
|
458 |
+
sprintf( "%07o", $file_stat[ 'mode' ] ), //file mode 8
|
459 |
+
sprintf( "%07o", $file_stat[ 'uid' ] ), //owner user ID 8
|
460 |
+
sprintf( "%07o", $file_stat[ 'gid' ] ), //owner group ID 8
|
461 |
+
sprintf( "%011o", $file_stat[ 'size' ] ), //length of file in bytes 12
|
462 |
+
sprintf( "%011o", $file_stat[ 'mtime' ] ), //modify time of file 12
|
463 |
+
" ", //checksum for header 8
|
464 |
+
0, //type of file 0 or null = File, 5=Dir
|
465 |
+
"", //name of linked file 100
|
466 |
+
"ustar", //USTAR indicator 6
|
467 |
+
"00", //USTAR version 2
|
468 |
+
$fileowner, //owner user name 32
|
469 |
+
$filegroup, //owner group name 32
|
470 |
+
"", //device major number 8
|
471 |
+
"", //device minor number 8
|
472 |
+
$filename_prefix, //prefix for file name 155
|
473 |
+
"" ); //fill block 12
|
474 |
+
|
475 |
+
// Computes the unsigned Checksum of a file's header
|
476 |
+
$checksum = 0;
|
477 |
+
for ( $i = 0; $i < 512; $i ++ )
|
478 |
+
$checksum += ord( substr( $header, $i, 1 ) );
|
479 |
+
|
480 |
+
$checksum = pack( "a8", sprintf( "%07o", $checksum ) );
|
481 |
+
$header = substr_replace( $header, $checksum, 148, 8 );
|
482 |
+
//write header
|
483 |
+
fwrite( $this->filehandel, $header );
|
484 |
+
|
485 |
+
// read/write files in 512 bite Blocks
|
486 |
+
while ( ! feof( $fd ) ) {
|
487 |
+
$file_data = fread( $fd, 512 );
|
488 |
+
if ( strlen( $file_data ) > 0 )
|
489 |
+
fwrite( $this->filehandel, pack( "a512", $file_data ) );
|
490 |
+
}
|
491 |
+
fclose( $fd );
|
492 |
+
|
493 |
+
return TRUE;
|
494 |
+
}
|
495 |
+
|
496 |
+
|
497 |
+
/**
|
498 |
+
* Tar a empty Folder to archive
|
499 |
+
*/
|
500 |
+
private function tar_empty_folder( $folder_name, $name_in_archive ) {
|
501 |
+
|
502 |
+
$name_in_archive = trailingslashit( $name_in_archive );
|
503 |
+
|
504 |
+
//split filename larger than 100 chars
|
505 |
+
if ( strlen( $name_in_archive ) <= 100 ) {
|
506 |
+
$tar_filename = $name_in_archive;
|
507 |
+
$tar_filename_prefix = "";
|
508 |
+
}
|
509 |
+
else {
|
510 |
+
$filename_offset = strlen( $name_in_archive ) - 100;
|
511 |
+
$split_pos = strpos( $name_in_archive, '/', $filename_offset );
|
512 |
+
$tar_filename = substr( $name_in_archive, $split_pos + 1 );
|
513 |
+
$tar_filename_prefix = substr( $name_in_archive, 0, $split_pos );
|
514 |
+
if ( strlen( $tar_filename ) > 100 )
|
515 |
+
trigger_error( sprintf( __( 'Folder name "%1$s" is too long to be saved correctly in %2$s archive!', 'backwpup' ), $name_in_archive, $this->get_method() ), E_USER_WARNING );
|
516 |
+
if ( strlen( $tar_filename_prefix ) > 155 )
|
517 |
+
trigger_error( sprintf( __( 'Folder path "%1$s" is too long to be saved correctly in %2$s archive!', 'backwpup' ), $name_in_archive, $this->get_method() ), E_USER_WARNING );
|
518 |
+
}
|
519 |
+
//get file stat
|
520 |
+
$file_stat = @stat( $folder_name );
|
521 |
+
//Set file user/group name if linux
|
522 |
+
$fileowner = __( "Unknown", "backwpup" );
|
523 |
+
$filegroup = __( "Unknown", "backwpup" );
|
524 |
+
if ( function_exists( 'posix_getpwuid' ) ) {
|
525 |
+
$info = posix_getpwuid( $file_stat[ 'uid' ] );
|
526 |
+
$fileowner = $info[ 'name' ];
|
527 |
+
$info = posix_getgrgid( $file_stat[ 'gid' ] );
|
528 |
+
$filegroup = $info[ 'name' ];
|
529 |
+
}
|
530 |
+
// Generate the TAR header for this file
|
531 |
+
$header = pack( "a100a8a8a8a12a12a8a1a100a6a2a32a32a8a8a155a12",
|
532 |
+
$tar_filename, //name of file 100
|
533 |
+
sprintf( "%07o", $file_stat[ 'mode' ] ), //file mode 8
|
534 |
+
sprintf( "%07o", $file_stat[ 'uid' ] ), //owner user ID 8
|
535 |
+
sprintf( "%07o", $file_stat[ 'gid' ] ), //owner group ID 8
|
536 |
+
sprintf( "%011o", 0 ), //length of file in bytes 12
|
537 |
+
sprintf( "%011o", $file_stat[ 'mtime' ] ), //modify time of file 12
|
538 |
+
" ", //checksum for header 8
|
539 |
+
5, //type of file 0 or null = File, 5=Dir
|
540 |
+
"", //name of linked file 100
|
541 |
+
"ustar", //USTAR indicator 6
|
542 |
+
"00", //USTAR version 2
|
543 |
+
$fileowner, //owner user name 32
|
544 |
+
$filegroup, //owner group name 32
|
545 |
+
"", //device major number 8
|
546 |
+
"", //device minor number 8
|
547 |
+
$tar_filename_prefix, //prefix for file name 155
|
548 |
+
"" ); //fill block 12
|
549 |
+
|
550 |
+
// Computes the unsigned Checksum of a file's header
|
551 |
+
$checksum = 0;
|
552 |
+
for ( $i = 0; $i < 512; $i ++ )
|
553 |
+
$checksum += ord( substr( $header, $i, 1 ) );
|
554 |
+
|
555 |
+
$checksum = pack( "a8", sprintf( "%07o", $checksum ) );
|
556 |
+
$header = substr_replace( $header, $checksum, 148, 8 );
|
557 |
+
//write header
|
558 |
+
fwrite( $this->filehandel, $header );
|
559 |
+
|
560 |
+
return TRUE;
|
561 |
+
}
|
562 |
+
}
|
563 |
+
|
564 |
+
/**
|
565 |
+
* Exception Handler
|
566 |
+
*/
|
567 |
class BackWPup_Create_Archive_Exception extends Exception { }
|
inc/class-cron.php
CHANGED
@@ -1,342 +1,312 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Class for BackWPup cron methods
|
4 |
-
*/
|
5 |
-
class BackWPup_Cron {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @static
|
9 |
-
*
|
10 |
-
* @param $arg
|
11 |
-
* @internal param $args
|
12 |
-
*/
|
13 |
-
public static function run( $arg ) {
|
14 |
-
|
15 |
-
$job_object = BackWPup_Job::get_working_data();
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
$
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
//
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
//
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
if (
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
$
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
if ( $
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
if ( $
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
if ( strtolower( $value ) == '
|
270 |
-
$value = 1;
|
271 |
-
if ( strtolower( $value ) == '
|
272 |
-
$value = 2;
|
273 |
-
if ( strtolower( $value ) == '
|
274 |
-
$value = 3;
|
275 |
-
if ( strtolower( $value ) == '
|
276 |
-
$value = 4;
|
277 |
-
if ( strtolower( $value ) == '
|
278 |
-
$value = 5;
|
279 |
-
if (
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
if (
|
297 |
-
|
298 |
-
|
299 |
-
$
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
}
|
314 |
-
|
315 |
-
//generate years
|
316 |
-
for ( $i = gmdate( 'Y' ); $i < gmdate( 'Y', 2147483647 ); $i ++ ) {
|
317 |
-
$cron[ 'year' ][ ] = $i;
|
318 |
-
}
|
319 |
-
|
320 |
-
//calc next timestamp
|
321 |
-
$current_timestamp = current_time( 'timestamp' );
|
322 |
-
foreach ( $cron[ 'year' ] as $year ) {
|
323 |
-
foreach ( $cron[ 'mon' ] as $mon ) {
|
324 |
-
foreach ( $cron[ 'mday' ] as $mday ) {
|
325 |
-
if ( checkdate( $mon, $mday, $year ) ) {
|
326 |
-
foreach ( $cron[ 'hours' ] as $hours ) {
|
327 |
-
foreach ( $cron[ 'minutes' ] as $minutes ) {
|
328 |
-
$timestamp = gmmktime( $hours , $minutes, 0, $mon, $mday, $year );
|
329 |
-
if ( $timestamp && in_array( gmdate( 'j', $timestamp ), $cron[ 'mday' ] ) && in_array( gmdate( 'w', $timestamp ), $cron[ 'wday' ] ) && $timestamp > $current_timestamp ) {
|
330 |
-
return $timestamp - ( get_option( 'gmt_offset' ) * 3600 );
|
331 |
-
}
|
332 |
-
}
|
333 |
-
}
|
334 |
-
}
|
335 |
-
}
|
336 |
-
}
|
337 |
-
}
|
338 |
-
|
339 |
-
return 2147483647;
|
340 |
-
}
|
341 |
-
|
342 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Class for BackWPup cron methods
|
4 |
+
*/
|
5 |
+
class BackWPup_Cron {
|
6 |
+
|
7 |
+
/**
|
8 |
+
* @static
|
9 |
+
*
|
10 |
+
* @param $arg
|
11 |
+
* @internal param $args
|
12 |
+
*/
|
13 |
+
public static function run( $arg ) {
|
14 |
+
|
15 |
+
$job_object = BackWPup_Job::get_working_data();
|
16 |
+
|
17 |
+
if ( $arg == 'restart' && ! empty( $job_object ) ) {
|
18 |
+
//reschedule restart
|
19 |
+
wp_schedule_single_event( time() + 60, 'backwpup_cron', array( 'id' => 'restart' ) );
|
20 |
+
//restart job if not working or a restart imitated
|
21 |
+
$not_worked_time = microtime( TRUE ) - $job_object->timestamp_last_update;
|
22 |
+
if ( empty( $job_object->pid ) || $not_worked_time > 300 )
|
23 |
+
BackWPup_Job::start_wp_cron();
|
24 |
+
return;
|
25 |
+
}
|
26 |
+
|
27 |
+
if ( empty( $arg ) || $arg == 'restart' )
|
28 |
+
return;
|
29 |
+
|
30 |
+
//check that job exits
|
31 |
+
$jobids = BackWPup_Option::get_job_ids( 'activetype', 'wpcron' );
|
32 |
+
if ( ! in_array( $arg, $jobids ) )
|
33 |
+
return;
|
34 |
+
|
35 |
+
//delay other job start for 5 minutes if already one is running
|
36 |
+
if ( ! empty( $job_object ) ) {
|
37 |
+
wp_schedule_single_event( time() + 300 , 'backwpup_cron', array( 'id' => $arg ) );
|
38 |
+
return;
|
39 |
+
}
|
40 |
+
|
41 |
+
//reschedule next job run
|
42 |
+
$cron_next = self::cron_next( BackWPup_Option::get( $arg, 'cron' ) );
|
43 |
+
wp_schedule_single_event( $cron_next, 'backwpup_cron', array( 'id' => $arg ) );
|
44 |
+
|
45 |
+
//start job
|
46 |
+
BackWPup_Job::start_wp_cron( $arg );
|
47 |
+
|
48 |
+
}
|
49 |
+
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Check Jobs worked and Cleanup logs and so on
|
53 |
+
*/
|
54 |
+
public static function check_cleanup() {
|
55 |
+
|
56 |
+
$job_object = BackWPup_Job::get_working_data();
|
57 |
+
|
58 |
+
// check aborted jobs for longer than a tow hours, abort them courtly and send mail
|
59 |
+
if ( is_object( $job_object ) && ! empty( $job_object->logfile ) ) {
|
60 |
+
$not_worked_time = microtime( TRUE ) - $job_object->timestamp_last_update;
|
61 |
+
if ( $not_worked_time > 3600 ) {
|
62 |
+
$job_object->log( E_USER_ERROR, __( 'Aborted, because no progress for one hour!', 'backwpup' ), __FILE__, __LINE__ );
|
63 |
+
$job_object->end();
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
//Compress not compressed logs
|
68 |
+
if ( function_exists( 'gzopen' ) && get_site_option( 'backwpup_cfg_gzlogs' ) &&! is_object( $job_object ) ) {
|
69 |
+
//Compress old not compressed logs
|
70 |
+
if ( $dir = opendir( get_site_option( 'backwpup_cfg_logfolder' ) ) ) {
|
71 |
+
$jobids = BackWPup_Option::get_job_ids();
|
72 |
+
while ( FALSE !== ( $file = readdir( $dir ) ) ) {
|
73 |
+
if ( is_writeable( get_site_option( 'backwpup_cfg_logfolder' ) . $file ) && '.html' == substr( $file, -5 ) ) {
|
74 |
+
$compress = new BackWPup_Create_Archive( get_site_option( 'backwpup_cfg_logfolder' ) . $file . '.gz' );
|
75 |
+
if ( $compress->add_file( get_site_option( 'backwpup_cfg_logfolder' ) . $file ) ) {
|
76 |
+
unlink( get_site_option( 'backwpup_cfg_logfolder' ) . $file );
|
77 |
+
//change last logfile in jobs
|
78 |
+
foreach( $jobids as $jobid ) {
|
79 |
+
$job_logfile = BackWPup_Option::get( $jobid, 'logfile' );
|
80 |
+
if ( ! empty( $job_logfile ) && $job_logfile == get_site_option( 'backwpup_cfg_logfolder' ) . $file )
|
81 |
+
BackWPup_Option::update( $jobid, 'logfile', get_site_option( 'backwpup_cfg_logfolder' ) . $file . '.gz' );
|
82 |
+
}
|
83 |
+
}
|
84 |
+
unset( $compress );
|
85 |
+
}
|
86 |
+
}
|
87 |
+
closedir( $dir );
|
88 |
+
}
|
89 |
+
}
|
90 |
+
|
91 |
+
//Jobs cleanings
|
92 |
+
if ( ! is_object( $job_object ) ) {
|
93 |
+
//remove restart cron
|
94 |
+
wp_clear_scheduled_hook( 'backwpup_cron', array( 'id' => 'restart' ) );
|
95 |
+
//temp cleanup
|
96 |
+
BackWPup_Job::clean_temp_folder();
|
97 |
+
}
|
98 |
+
|
99 |
+
//check scheduling jobs that not found will removed because there are single scheduled
|
100 |
+
$activejobs = BackWPup_Option::get_job_ids( 'activetype', 'wpcron' );
|
101 |
+
if ( ! empty( $activejobs ) ) {
|
102 |
+
foreach ( $activejobs as $jobid ) {
|
103 |
+
$cron_next = wp_next_scheduled( 'backwpup_cron', array( 'id' => $jobid ) );
|
104 |
+
if ( ! $cron_next || $cron_next < time() ) {
|
105 |
+
wp_unschedule_event( $cron_next, 'backwpup_cron', array( 'id' => $jobid ) );
|
106 |
+
$cron_next = BackWPup_Cron::cron_next( BackWPup_Option::get( $jobid, 'cron') );
|
107 |
+
wp_schedule_single_event( $cron_next, 'backwpup_cron', array( 'id' => $jobid ) );
|
108 |
+
}
|
109 |
+
}
|
110 |
+
}
|
111 |
+
|
112 |
+
}
|
113 |
+
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Start job if in cron and run query args are set.
|
117 |
+
*/
|
118 |
+
public static function cron_active() {
|
119 |
+
|
120 |
+
//only if cron active
|
121 |
+
if ( ! defined( 'DOING_CRON' ) || ! DOING_CRON )
|
122 |
+
return;
|
123 |
+
|
124 |
+
//only work if backwpup_run as query var ist set and nothing else and the value ist right
|
125 |
+
if ( empty( $_GET[ 'backwpup_run' ] ) || ! in_array( $_GET[ 'backwpup_run' ], array( 'test','restart', 'runnow', 'runnowalt', 'runext', 'cronrun' ) ) )
|
126 |
+
return;
|
127 |
+
|
128 |
+
//special header
|
129 |
+
@session_write_close();
|
130 |
+
@header( 'Content-Type: text/html; charset=' . get_bloginfo( 'charset' ), TRUE );
|
131 |
+
@header( 'X-Robots-Tag: noindex, nofollow', TRUE );
|
132 |
+
@header( 'X-BackWPup-Version: ' . BackWPup::get_plugin_data( 'version' ), TRUE );
|
133 |
+
nocache_headers();
|
134 |
+
|
135 |
+
//on test die for fast feedback
|
136 |
+
if ( $_GET[ 'backwpup_run' ] == 'test' )
|
137 |
+
die( 'BackWPup Test' );
|
138 |
+
|
139 |
+
// generate normal nonce
|
140 |
+
$nonce = substr( wp_hash( wp_nonce_tick() . 'backwpup_job_run-' . $_GET[ 'backwpup_run' ], 'nonce' ), - 12, 10 );
|
141 |
+
//special nonce on external start
|
142 |
+
if ( $_GET[ 'backwpup_run' ] == 'runext' )
|
143 |
+
$nonce = get_site_option( 'backwpup_cfg_jobrunauthkey' );
|
144 |
+
// check nonce
|
145 |
+
if ( empty( $_GET['_nonce'] ) || $nonce != $_GET['_nonce'] )
|
146 |
+
return;
|
147 |
+
|
148 |
+
//check runext is allowed for job
|
149 |
+
if ( $_GET[ 'backwpup_run' ] == 'runext' ) {
|
150 |
+
$jobids_external = BackWPup_Option::get_job_ids( 'activetype', 'link' );
|
151 |
+
if ( !isset( $_GET[ 'jobid' ] ) || ! in_array( $_GET[ 'jobid' ], $jobids_external ) )
|
152 |
+
return;
|
153 |
+
}
|
154 |
+
|
155 |
+
//run BackWPup job
|
156 |
+
BackWPup_Job::start_http( $_GET[ 'backwpup_run' ] );
|
157 |
+
die();
|
158 |
+
}
|
159 |
+
|
160 |
+
|
161 |
+
/**
|
162 |
+
*
|
163 |
+
* Get the local time timestamp of the next cron execution
|
164 |
+
*
|
165 |
+
* @param string $cronstring cron (* * * * *)
|
166 |
+
* @return int timestamp
|
167 |
+
*/
|
168 |
+
public static function cron_next( $cronstring ) {
|
169 |
+
|
170 |
+
$cron = array();
|
171 |
+
$cronarray = array();
|
172 |
+
//Cron string
|
173 |
+
list( $cronstr[ 'minutes' ], $cronstr[ 'hours' ], $cronstr[ 'mday' ], $cronstr[ 'mon' ], $cronstr[ 'wday' ] ) = explode( ' ', $cronstring, 5 );
|
174 |
+
|
175 |
+
//make arrays form string
|
176 |
+
foreach ( $cronstr as $key => $value ) {
|
177 |
+
if ( strstr( $value, ',' ) )
|
178 |
+
$cronarray[ $key ] = explode( ',', $value );
|
179 |
+
else
|
180 |
+
$cronarray[ $key ] = array( 0 => $value );
|
181 |
+
}
|
182 |
+
|
183 |
+
//make arrays complete with ranges and steps
|
184 |
+
foreach ( $cronarray as $cronarraykey => $cronarrayvalue ) {
|
185 |
+
$cron[ $cronarraykey ] = array();
|
186 |
+
foreach ( $cronarrayvalue as $value ) {
|
187 |
+
//steps
|
188 |
+
$step = 1;
|
189 |
+
if ( strstr( $value, '/' ) )
|
190 |
+
list( $value, $step ) = explode( '/', $value, 2 );
|
191 |
+
//replace weekday 7 with 0 for sundays
|
192 |
+
if ( $cronarraykey == 'wday' )
|
193 |
+
$value = str_replace( '7', '0', $value );
|
194 |
+
//ranges
|
195 |
+
if ( strstr( $value, '-' ) ) {
|
196 |
+
list( $first, $last ) = explode( '-', $value, 2 );
|
197 |
+
if ( ! is_numeric( $first ) || ! is_numeric( $last ) || $last > 60 || $first > 60 ) //check
|
198 |
+
return 2147483647;
|
199 |
+
if ( $cronarraykey == 'minutes' && $step < 5 ) //set step minimum to 5 min.
|
200 |
+
$step = 5;
|
201 |
+
$range = array();
|
202 |
+
for ( $i = $first; $i <= $last; $i = $i + $step ) {
|
203 |
+
$range[ ] = $i;
|
204 |
+
}
|
205 |
+
$cron[ $cronarraykey ] = array_merge( $cron[ $cronarraykey ], $range );
|
206 |
+
}
|
207 |
+
elseif ( $value == '*' ) {
|
208 |
+
$range = array();
|
209 |
+
if ( $cronarraykey == 'minutes' ) {
|
210 |
+
if ( $step < 10 ) //set step minimum to 5 min.
|
211 |
+
$step = 10;
|
212 |
+
for ( $i = 0; $i <= 59; $i = $i + $step ) {
|
213 |
+
$range[ ] = $i;
|
214 |
+
}
|
215 |
+
}
|
216 |
+
if ( $cronarraykey == 'hours' ) {
|
217 |
+
for ( $i = 0; $i <= 23; $i = $i + $step ) {
|
218 |
+
$range[ ] = $i;
|
219 |
+
}
|
220 |
+
}
|
221 |
+
if ( $cronarraykey == 'mday' ) {
|
222 |
+
for ( $i = $step; $i <= 31; $i = $i + $step ) {
|
223 |
+
$range[ ] = $i;
|
224 |
+
}
|
225 |
+
}
|
226 |
+
if ( $cronarraykey == 'mon' ) {
|
227 |
+
for ( $i = $step; $i <= 12; $i = $i + $step ) {
|
228 |
+
$range[ ] = $i;
|
229 |
+
}
|
230 |
+
}
|
231 |
+
if ( $cronarraykey == 'wday' ) {
|
232 |
+
for ( $i = 0; $i <= 6; $i = $i + $step ) {
|
233 |
+
$range[ ] = $i;
|
234 |
+
}
|
235 |
+
}
|
236 |
+
$cron[ $cronarraykey ] = array_merge( $cron[ $cronarraykey ], $range );
|
237 |
+
}
|
238 |
+
else {
|
239 |
+
//Month names
|
240 |
+
if ( strtolower( $value ) == 'jan' )
|
241 |
+
$value = 1;
|
242 |
+
if ( strtolower( $value ) == 'feb' )
|
243 |
+
$value = 2;
|
244 |
+
if ( strtolower( $value ) == 'mar' )
|
245 |
+
$value = 3;
|
246 |
+
if ( strtolower( $value ) == 'apr' )
|
247 |
+
$value = 4;
|
248 |
+
if ( strtolower( $value ) == 'may' )
|
249 |
+
$value = 5;
|
250 |
+
if ( strtolower( $value ) == 'jun' )
|
251 |
+
$value = 6;
|
252 |
+
if ( strtolower( $value ) == 'jul' )
|
253 |
+
$value = 7;
|
254 |
+
if ( strtolower( $value ) == 'aug' )
|
255 |
+
$value = 8;
|
256 |
+
if ( strtolower( $value ) == 'sep' )
|
257 |
+
$value = 9;
|
258 |
+
if ( strtolower( $value ) == 'oct' )
|
259 |
+
$value = 10;
|
260 |
+
if ( strtolower( $value ) == 'nov' )
|
261 |
+
$value = 11;
|
262 |
+
if ( strtolower( $value ) == 'dec' )
|
263 |
+
$value = 12;
|
264 |
+
//Week Day names
|
265 |
+
if ( strtolower( $value ) == 'sun' )
|
266 |
+
$value = 0;
|
267 |
+
if ( strtolower( $value ) == 'sat' )
|
268 |
+
$value = 6;
|
269 |
+
if ( strtolower( $value ) == 'mon' )
|
270 |
+
$value = 1;
|
271 |
+
if ( strtolower( $value ) == 'tue' )
|
272 |
+
$value = 2;
|
273 |
+
if ( strtolower( $value ) == 'wed' )
|
274 |
+
$value = 3;
|
275 |
+
if ( strtolower( $value ) == 'thu' )
|
276 |
+
$value = 4;
|
277 |
+
if ( strtolower( $value ) == 'fri' )
|
278 |
+
$value = 5;
|
279 |
+
if ( ! is_numeric( $value ) || $value > 60 ) //check
|
280 |
+
return 2147483647;
|
281 |
+
$cron[ $cronarraykey ] = array_merge( $cron[ $cronarraykey ], array( 0 => $value ) );
|
282 |
+
}
|
283 |
+
}
|
284 |
+
}
|
285 |
+
|
286 |
+
//generate years
|
287 |
+
for ( $i = gmdate( 'Y' ); $i < gmdate( 'Y', 2147483647 ); $i ++ ) {
|
288 |
+
$cron[ 'year' ][ ] = $i;
|
289 |
+
}
|
290 |
+
|
291 |
+
//calc next timestamp
|
292 |
+
$current_timestamp = current_time( 'timestamp' );
|
293 |
+
foreach ( $cron[ 'year' ] as $year ) {
|
294 |
+
foreach ( $cron[ 'mon' ] as $mon ) {
|
295 |
+
foreach ( $cron[ 'mday' ] as $mday ) {
|
296 |
+
if ( ! checkdate( $mon, $mday, $year ) )
|
297 |
+
continue;
|
298 |
+
foreach ( $cron[ 'hours' ] as $hours ) {
|
299 |
+
foreach ( $cron[ 'minutes' ] as $minutes ) {
|
300 |
+
$timestamp = gmmktime( $hours, $minutes, 0, $mon, $mday, $year );
|
301 |
+
if ( $timestamp && in_array( gmdate( 'j', $timestamp ), $cron[ 'mday' ] ) && in_array( gmdate( 'w', $timestamp ), $cron[ 'wday' ] ) && $timestamp > $current_timestamp )
|
302 |
+
return $timestamp - ( get_option( 'gmt_offset' ) * 3600 );
|
303 |
+
}
|
304 |
+
}
|
305 |
+
}
|
306 |
+
}
|
307 |
+
}
|
308 |
+
|
309 |
+
return 2147483647;
|
310 |
+
}
|
311 |
+
|
312 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/class-destination-dropbox.php
CHANGED
@@ -1,814 +1,834 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Documentation: https://www.dropbox.com/developers/reference/api
|
4 |
-
*/
|
5 |
-
class BackWPup_Destination_Dropbox extends BackWPup_Destinations {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @
|
9 |
-
*/
|
10 |
-
public
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
$
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
$
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
$
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
BackWPup_Option::update( $jobid, '
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
}
|
222 |
-
|
223 |
-
/**
|
224 |
-
* @param $
|
225 |
-
* @return
|
226 |
-
*/
|
227 |
-
public function
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
$job_object->
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
$
|
286 |
-
$
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
$files[ $filecounter ][ '
|
296 |
-
$files[ $filecounter ][ '
|
297 |
-
$files[ $filecounter ][ '
|
298 |
-
$files[ $filecounter ][ '
|
299 |
-
$filecounter
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
}
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
*
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
*
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
$this->
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
$this->
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
* @
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
* @param
|
458 |
-
* @
|
459 |
-
* @
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
$
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
* @param
|
487 |
-
* @
|
488 |
-
* @
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
if ( !
|
499 |
-
throw new BackWPup_Destination_Dropbox_API_Exception( "
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
if ( $
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
$
|
527 |
-
$
|
528 |
-
|
529 |
-
|
530 |
-
$
|
531 |
-
//
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
* @param
|
562 |
-
* @
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
* @
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
);
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
$ch
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
814 |
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Documentation: https://www.dropbox.com/developers/reference/api
|
4 |
+
*/
|
5 |
+
class BackWPup_Destination_Dropbox extends BackWPup_Destinations {
|
6 |
+
|
7 |
+
/**
|
8 |
+
* @var $backwpup_job_object BackWPup_Job
|
9 |
+
*/
|
10 |
+
public static $backwpup_job_object = NULL;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* @return array
|
14 |
+
*/
|
15 |
+
public function option_defaults() {
|
16 |
+
|
17 |
+
return array( 'dropboxtoken' => '', 'dropboxsecret' => '', 'dropboxroot' => 'sandbox', 'dropboxmaxbackups' => 15, 'dropboxsyncnodelete' => TRUE, 'dropboxdir' => trailingslashit( sanitize_file_name( get_bloginfo( 'name' ) ) ) );
|
18 |
+
}
|
19 |
+
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @param $jobid
|
23 |
+
*/
|
24 |
+
public function edit_tab( $jobid ) {
|
25 |
+
|
26 |
+
//Dropbox auth keys from Dropbox
|
27 |
+
// if cancelled auth
|
28 |
+
if ( ! empty( $_GET[ 'not_approved' ] ) ) {
|
29 |
+
echo '<div id="message" class="error"><p>' .__( 'Dropbox authentication not approved', 'backwpup' ) . '</p></div>';
|
30 |
+
delete_site_transient( 'backwpup_dropbox_auth_' . $jobid );
|
31 |
+
}
|
32 |
+
// if Auth data exists
|
33 |
+
$auth_data = get_site_transient( 'backwpup_dropbox_auth_' . $jobid );
|
34 |
+
if ( $auth_data ) {
|
35 |
+
$oAuthStuff = array();
|
36 |
+
try {
|
37 |
+
$dropbox = new BackWPup_Destination_Dropbox_API( $auth_data[ 'type' ] );
|
38 |
+
$oAuthStuff = $dropbox->oAuthAccessToken( $auth_data[ 'oauth_token' ], $auth_data[ 'oauth_token_secret' ] );
|
39 |
+
if ( ! empty( $oAuthStuff ) ) {
|
40 |
+
echo '<div id="message" class="updated below-h2"><p>' . __( 'Dropbox authentication complete!', 'backwpup' ) . '</p></div>';
|
41 |
+
BackWPup_Option::update( $jobid, 'dropboxtoken', $oAuthStuff[ 'oauth_token' ] );
|
42 |
+
BackWPup_Option::update( $jobid, 'dropboxsecret', BackWPup_Encryption::encrypt( $oAuthStuff[ 'oauth_token_secret' ] ) );
|
43 |
+
BackWPup_Option::update( $jobid, 'dropboxroot', $auth_data[ 'type' ] );
|
44 |
+
delete_site_transient( 'backwpup_dropbox_auth_' . $jobid );
|
45 |
+
}
|
46 |
+
} catch ( Exception $e ) {
|
47 |
+
echo '<div id="message" class="error"><p>' . sprintf( __( 'Dropbox API: %s', 'backwpup' ), $e->getMessage() ) . '</p></div>';
|
48 |
+
delete_site_transient( 'backwpup_dropbox_auth_' . $jobid );
|
49 |
+
}
|
50 |
+
}
|
51 |
+
?>
|
52 |
+
|
53 |
+
<h3 class="title"><?php _e( 'Login', 'backwpup' ); ?></h3>
|
54 |
+
<p></p>
|
55 |
+
<table class="form-table">
|
56 |
+
<tr>
|
57 |
+
<th scope="row"><?php _e( 'Authenticate', 'backwpup' ); ?></th>
|
58 |
+
<td><?php if ( ! BackWPup_Option::get( $jobid, 'dropboxtoken' ) && ! BackWPup_Option::get( $jobid, 'dropboxsecret' ) && ! isset( $oAuthStuff[ 'oauth_token' ] ) ) { ?>
|
59 |
+
<span style="color:red;"><?php _e( 'Not authenticated!', 'backwpup' ); ?></span> <a href="http://db.tt/8irM1vQ0"><?php _e( 'Create Account', 'backwpup' ); ?></a><br />
|
60 |
+
<?php } else { ?>
|
61 |
+
<span style="color:green;"><?php _e( 'Authenticated!', 'backwpup' ); ?></span><br />
|
62 |
+
<?php } ?>
|
63 |
+
<a class="button secondary" href="<?php echo admin_url( 'admin-ajax.php', 'relative' );?>?action=backwpup_dest_dropbox&type=sandbox&jobid=<?php echo $jobid ?>"><?php _e( 'Reauthenticate (Sandbox)', 'backwpup' ); ?></a>
|
64 |
+
<a class="button secondary" href="<?php echo admin_url( 'admin-ajax.php', 'relative' );?>?action=backwpup_dest_dropbox&type=dropbox&jobid=<?php echo $jobid ?>"><?php _e( 'Reauthenticate (full Dropbox)', 'backwpup' ); ?></a>
|
65 |
+
</td>
|
66 |
+
</tr>
|
67 |
+
</table>
|
68 |
+
|
69 |
+
|
70 |
+
<h3 class="title"><?php _e( 'Backup settings', 'backwpup' ); ?></h3>
|
71 |
+
<p></p>
|
72 |
+
<table class="form-table">
|
73 |
+
<tr>
|
74 |
+
<th scope="row"><label for="iddropboxdir"><?php _e( 'Folder in Dropbox', 'backwpup' ); ?></label></th>
|
75 |
+
<td>
|
76 |
+
<input id="iddropboxdir" name="dropboxdir" type="text" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'dropboxdir' ) ); ?>" class="regular-text" />
|
77 |
+
</td>
|
78 |
+
</tr>
|
79 |
+
<tr>
|
80 |
+
<th scope="row"><?php _e( 'File Deletion', 'backwpup' ); ?></th>
|
81 |
+
<td>
|
82 |
+
<?php
|
83 |
+
if ( BackWPup_Option::get( $jobid, 'backuptype' ) == 'archive' ) {
|
84 |
+
?>
|
85 |
+
<label for="iddropboxmaxbackups"><input id="iddropboxmaxbackups" name="dropboxmaxbackups" title="<?php esc_attr_e( 'Oldest files will be deleted first. 0 = no deletion', 'backwpup' ); ?>" type="text" size="3" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'dropboxmaxbackups' ) );?>" class="small-text help-tip" />
|
86 |
+
<?php _e( 'Number of files to keep in folder.', 'backwpup' ); ?></label>
|
87 |
+
<?php } else { ?>
|
88 |
+
<label for="iddropboxsyncnodelete" ><input class="checkbox" value="1"
|
89 |
+
type="checkbox" <?php checked( BackWPup_Option::get( $jobid, 'dropboxsyncnodelete' ), TRUE ); ?>
|
90 |
+
name="dropboxsyncnodelete" id="iddropboxsyncnodelete" /> <?php _e( 'Do not delete files while syncing to destination!', 'backwpup' ); ?></label>
|
91 |
+
<?php } ?>
|
92 |
+
</td>
|
93 |
+
</tr>
|
94 |
+
</table>
|
95 |
+
|
96 |
+
<?php
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Authentication over ajax
|
101 |
+
*/
|
102 |
+
public function edit_ajax() {
|
103 |
+
|
104 |
+
$_GET[ 'jobid' ] = (int) $_GET[ 'jobid' ];
|
105 |
+
|
106 |
+
// dropbox auth
|
107 |
+
if ( $_GET[ 'type' ] == 'dropbox' ) {
|
108 |
+
try {
|
109 |
+
$dropbox = new BackWPup_Destination_Dropbox_API( 'dropbox' );
|
110 |
+
// let the user authorize (user will be redirected)
|
111 |
+
$response = $dropbox->oAuthAuthorize( network_admin_url( 'admin.php' ) . '?page=backwpupeditjob&jobid=' .$_GET[ 'jobid' ] .'&tab=dest-dropbox&_wpnonce=' . wp_create_nonce( 'edit-job' ) );
|
112 |
+
// save oauth_token_secret
|
113 |
+
$auth_data = array(
|
114 |
+
'oauth_token' => $response[ 'oauth_token' ],
|
115 |
+
'oauth_token_secret' => $response[ 'oauth_token_secret' ],
|
116 |
+
'type' => 'dropbox'
|
117 |
+
);
|
118 |
+
set_site_transient( 'backwpup_dropbox_auth_' . $_GET[ 'jobid' ], $auth_data, 3600 );
|
119 |
+
wp_redirect( $response[ 'authurl' ] );
|
120 |
+
|
121 |
+
}
|
122 |
+
catch ( Exception $e ) {
|
123 |
+
BackWPup_Admin::message( sprintf( __( 'Dropbox API: %s', 'backwpup' ), $e->getMessage() ), true );
|
124 |
+
wp_redirect( network_admin_url( 'admin.php' ) . '?page=backwpupeditjob&jobid=' .$_GET[ 'jobid' ] .'&tab=dest-dropbox&_wpnonce=' . wp_create_nonce( 'edit-job' ) );
|
125 |
+
}
|
126 |
+
}
|
127 |
+
// sandbox auth
|
128 |
+
elseif ( $_GET[ 'type' ] == 'sandbox' ) {
|
129 |
+
try {
|
130 |
+
$dropbox = new BackWPup_Destination_Dropbox_API( 'sandbox' );
|
131 |
+
// let the user authorize (user will be redirected)
|
132 |
+
$response = $dropbox->oAuthAuthorize( network_admin_url( 'admin.php' ) . '?page=backwpupeditjob&jobid=' .$_GET[ 'jobid' ] .'&tab=dest-dropbox&_wpnonce=' . wp_create_nonce( 'edit-job' ) );
|
133 |
+
// save oauth_token_secret
|
134 |
+
$auth_data = array(
|
135 |
+
'oauth_token' => $response[ 'oauth_token' ],
|
136 |
+
'oauth_token_secret' => $response[ 'oauth_token_secret' ],
|
137 |
+
'type' => 'sandbox'
|
138 |
+
);
|
139 |
+
set_site_transient( 'backwpup_dropbox_auth_' . $_GET[ 'jobid' ], $auth_data, 3600 );
|
140 |
+
wp_redirect( $response[ 'authurl' ] );
|
141 |
+
}
|
142 |
+
catch ( Exception $e ) {
|
143 |
+
BackWPup_Admin::message( sprintf( __( 'Dropbox API: %s', 'backwpup' ), $e->getMessage() ), true );
|
144 |
+
wp_redirect( network_admin_url( 'admin.php' ) . '?page=backwpupeditjob&jobid=' .$_GET[ 'jobid' ] .'&tab=dest-dropbox&_wpnonce=' . wp_create_nonce( 'edit-job' ) );
|
145 |
+
}
|
146 |
+
}
|
147 |
+
}
|
148 |
+
|
149 |
+
|
150 |
+
/**
|
151 |
+
* @param $jobid
|
152 |
+
* @return string|void
|
153 |
+
*/
|
154 |
+
public function edit_form_post_save( $jobid ) {
|
155 |
+
|
156 |
+
BackWPup_Option::update( $jobid, 'dropboxsyncnodelete', ( isset( $_POST[ 'dropboxsyncnodelete' ] ) && $_POST[ 'dropboxsyncnodelete' ] == 1 ) ? TRUE : FALSE );
|
157 |
+
BackWPup_Option::update( $jobid, 'dropboxmaxbackups', isset( $_POST[ 'dropboxmaxbackups' ] ) ? (int)$_POST[ 'dropboxmaxbackups' ] : 0 );
|
158 |
+
|
159 |
+
$_POST[ 'dropboxdir' ] = trailingslashit( str_replace( '//', '/', str_replace( '\\', '/', trim( stripslashes( $_POST[ 'dropboxdir' ] ) ) ) ) );
|
160 |
+
if ( substr( $_POST[ 'dropboxdir' ], 0, 1 ) == '/' )
|
161 |
+
$_POST[ 'dropboxdir' ] = substr( $_POST[ 'dropboxdir' ], 1 );
|
162 |
+
if ( $_POST[ 'dropboxdir' ] == '/' )
|
163 |
+
$_POST[ 'dropboxdir' ] = '';
|
164 |
+
BackWPup_Option::update( $jobid, 'dropboxdir', $_POST[ 'dropboxdir' ] );
|
165 |
+
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* @param $jobdest
|
170 |
+
* @param $backupfile
|
171 |
+
*/
|
172 |
+
public function file_delete( $jobdest, $backupfile ) {
|
173 |
+
|
174 |
+
$files = get_site_transient( 'backwpup_' . strtolower( $jobdest ) );
|
175 |
+
list( $jobid, $dest ) = explode( '_', $jobdest );
|
176 |
+
|
177 |
+
if ( BackWPup_Option::get( $jobid, 'dropboxtoken' ) && BackWPup_Option::get( $jobid, 'dropboxsecret' ) ) {
|
178 |
+
try {
|
179 |
+
$dropbox = new BackWPup_Destination_Dropbox_API( BackWPup_Option::get( $jobid, 'dropboxroot' ) );
|
180 |
+
$dropbox->setOAuthTokens( BackWPup_Option::get( $jobid, 'dropboxtoken' ), BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'dropboxsecret' ) ) );
|
181 |
+
$dropbox->fileopsDelete( $backupfile );
|
182 |
+
//update file list
|
183 |
+
foreach ( $files as $key => $file ) {
|
184 |
+
if ( is_array( $file ) && $file[ 'file' ] == $backupfile )
|
185 |
+
unset( $files[ $key ] );
|
186 |
+
}
|
187 |
+
unset( $dropbox );
|
188 |
+
}
|
189 |
+
catch ( Exception $e ) {
|
190 |
+
BackWPup_Admin::message( 'DROPBOX: ' . $e->getMessage(), TRUE );
|
191 |
+
}
|
192 |
+
}
|
193 |
+
set_site_transient( 'backwpup_' . strtolower( $jobdest ), $files, 60 * 60 * 24 * 7 );
|
194 |
+
}
|
195 |
+
|
196 |
+
/**
|
197 |
+
* @param $jobid
|
198 |
+
* @param $get_file
|
199 |
+
*/
|
200 |
+
public function file_download( $jobid, $get_file ) {
|
201 |
+
|
202 |
+
try {
|
203 |
+
$dropbox = new BackWPup_Destination_Dropbox_API( BackWPup_Option::get( $jobid, 'dropboxroot' ) );
|
204 |
+
$dropbox->setOAuthTokens( BackWPup_Option::get( $jobid, 'dropboxtoken' ), BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'dropboxsecret' ) ) );
|
205 |
+
$media = $dropbox->media( $get_file );
|
206 |
+
if ( ! empty( $media[ 'url' ] ) )
|
207 |
+
header( "Location: " . $media[ 'url' ] );
|
208 |
+
die();
|
209 |
+
}
|
210 |
+
catch ( Exception $e ) {
|
211 |
+
die( $e->getMessage() );
|
212 |
+
}
|
213 |
+
}
|
214 |
+
|
215 |
+
/**
|
216 |
+
* @param $jobdest
|
217 |
+
* @return mixed
|
218 |
+
*/
|
219 |
+
public function file_get_list( $jobdest ) {
|
220 |
+
return get_site_transient( 'BackWPup_' . $jobdest );
|
221 |
+
}
|
222 |
+
|
223 |
+
/**
|
224 |
+
* @param $job_object
|
225 |
+
* @return bool
|
226 |
+
*/
|
227 |
+
public function job_run_archive( &$job_object ) {
|
228 |
+
|
229 |
+
$job_object->substeps_todo = 2 + $job_object->backup_filesize;
|
230 |
+
if ( $job_object->steps_data[ $job_object->step_working ]['SAVE_STEP_TRY'] != $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] )
|
231 |
+
$job_object->log( sprintf( __( '%d. Try to send backup file to Dropbox …', 'backwpup' ), $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] ), E_USER_NOTICE );
|
232 |
+
|
233 |
+
try {
|
234 |
+
$dropbox = new BackWPup_Destination_Dropbox_API( $job_object->job[ 'dropboxroot' ] );
|
235 |
+
// set the tokens
|
236 |
+
$dropbox->setOAuthTokens( $job_object->job[ 'dropboxtoken' ], BackWPup_Encryption::decrypt( $job_object->job[ 'dropboxsecret' ] ) );
|
237 |
+
//get account info
|
238 |
+
if ( $job_object->steps_data[ $job_object->step_working ]['SAVE_STEP_TRY'] != $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] ) {
|
239 |
+
$info = $dropbox->accountInfo();
|
240 |
+
if ( ! empty( $info[ 'uid' ] ) ) {
|
241 |
+
$job_object->log( sprintf( __( 'Authenticated with Dropbox of user %s', 'backwpup' ), $info[ 'display_name' ] . ' (' . $info[ 'email' ] . ')' ), E_USER_NOTICE );
|
242 |
+
}
|
243 |
+
//Check Quota
|
244 |
+
$dropboxfreespase = $info[ 'quota_info' ][ 'quota' ] - $info[ 'quota_info' ][ 'shared' ] - $info[ 'quota_info' ][ 'normal' ];
|
245 |
+
if ( $job_object->backup_filesize > $dropboxfreespase ) {
|
246 |
+
$job_object->log( __( 'Your Dropbox appears to be full.', 'backwpup' ), E_USER_ERROR );
|
247 |
+
|
248 |
+
return TRUE;
|
249 |
+
}
|
250 |
+
else {
|
251 |
+
$job_object->log( sprintf( __( '%s available on your Dropbox', 'backwpup' ), size_format( $dropboxfreespase, 2 ) ), E_USER_NOTICE );
|
252 |
+
}
|
253 |
+
|
254 |
+
// put the file
|
255 |
+
$job_object->log( __( 'Uploading to Dropbox …', 'backwpup' ), E_USER_NOTICE );
|
256 |
+
}
|
257 |
+
|
258 |
+
self::$backwpup_job_object = &$job_object;
|
259 |
+
|
260 |
+
if ( $job_object->substeps_done < $job_object->backup_filesize ) { //only if upload not complete
|
261 |
+
$response = $dropbox->upload( $job_object->backup_folder . $job_object->backup_file, $job_object->job[ 'dropboxdir' ] . $job_object->backup_file );
|
262 |
+
if ( $response[ 'bytes' ] == $job_object->backup_filesize ) {
|
263 |
+
if ( ! empty( $job_object->job[ 'jobid' ] ) )
|
264 |
+
BackWPup_Option::update( $job_object->job[ 'jobid' ], 'lastbackupdownloadurl', network_admin_url( 'admin.php' ) . '?page=backwpupbackups&action=downloaddropbox&file=' . ltrim( $response[ 'path' ], '/' ) . '&jobid=' . $job_object->job[ 'jobid' ] );
|
265 |
+
$job_object->substeps_done = 1 + $job_object->backup_filesize;
|
266 |
+
$job_object->log( sprintf( __( 'Backup transferred to %s', 'backwpup' ), 'https://api-content.dropbox.com/1/files/' . $job_object->job[ 'dropboxroot' ] . $response[ 'path' ] ), E_USER_NOTICE );
|
267 |
+
}
|
268 |
+
else {
|
269 |
+
if ( $response[ 'bytes' ] != $job_object->backup_filesize )
|
270 |
+
$job_object->log( __( 'Uploaded file size and local file size don\'t match.', 'backwpup' ), E_USER_ERROR );
|
271 |
+
else
|
272 |
+
$job_object->log(
|
273 |
+
sprintf(
|
274 |
+
__( 'Error transfering backup to %$1s.', 'backwpup' ) . ' ' . $response[ 'error' ],
|
275 |
+
__( 'Dropbox', 'backwpup' )
|
276 |
+
),
|
277 |
+
E_USER_ERROR
|
278 |
+
);
|
279 |
+
|
280 |
+
return FALSE;
|
281 |
+
}
|
282 |
+
}
|
283 |
+
|
284 |
+
|
285 |
+
$backupfilelist = array();
|
286 |
+
$filecounter = 0;
|
287 |
+
$files = array();
|
288 |
+
$metadata = $dropbox->metadata( $job_object->job[ 'dropboxdir' ] );
|
289 |
+
if ( is_array( $metadata ) ) {
|
290 |
+
foreach ( $metadata[ 'contents' ] as $data ) {
|
291 |
+
if ( $data[ 'is_dir' ] != TRUE ) {
|
292 |
+
$file = basename( $data[ 'path' ] );
|
293 |
+
if ( $job_object->is_backup_archive( $file ) )
|
294 |
+
$backupfilelist[ strtotime( $data[ 'modified' ] ) ] = $file;
|
295 |
+
$files[ $filecounter ][ 'folder' ] = "https://api-content.dropbox.com/1/files/" . $job_object->job[ 'dropboxroot' ] . dirname( $data[ 'path' ] ) . "/";
|
296 |
+
$files[ $filecounter ][ 'file' ] = $data[ 'path' ];
|
297 |
+
$files[ $filecounter ][ 'filename' ] = basename( $data[ 'path' ] );
|
298 |
+
$files[ $filecounter ][ 'downloadurl' ] = network_admin_url( 'admin.php' ) . '?page=backwpupbackups&action=downloaddropbox&file=' . $data[ 'path' ] . '&jobid=' . $job_object->job[ 'jobid' ];
|
299 |
+
$files[ $filecounter ][ 'filesize' ] = $data[ 'bytes' ];
|
300 |
+
$files[ $filecounter ][ 'time' ] = strtotime( $data[ 'modified' ] ) + ( get_option( 'gmt_offset' ) * 3600 );
|
301 |
+
$filecounter ++;
|
302 |
+
}
|
303 |
+
}
|
304 |
+
}
|
305 |
+
if ( $job_object->job[ 'dropboxmaxbackups' ] > 0 && is_object( $dropbox ) ) { //Delete old backups
|
306 |
+
if ( count( $backupfilelist ) > $job_object->job[ 'dropboxmaxbackups' ] ) {
|
307 |
+
ksort( $backupfilelist );
|
308 |
+
$numdeltefiles = 0;
|
309 |
+
while ( $file = array_shift( $backupfilelist ) ) {
|
310 |
+
if ( count( $backupfilelist ) < $job_object->job[ 'dropboxmaxbackups' ] )
|
311 |
+
break;
|
312 |
+
$response = $dropbox->fileopsDelete( $job_object->job[ 'dropboxdir' ] . $file ); //delete files on Cloud
|
313 |
+
if ( $response[ 'is_deleted' ] == 'true' ) {
|
314 |
+
foreach ( $files as $key => $filedata ) {
|
315 |
+
if ( $filedata[ 'file' ] == '/' .$job_object->job[ 'dropboxdir' ] . $file )
|
316 |
+
unset( $files[ $key ] );
|
317 |
+
}
|
318 |
+
$numdeltefiles ++;
|
319 |
+
}
|
320 |
+
else
|
321 |
+
$job_object->log( sprintf( __( 'Error while deleting file from Dropbox: %s', 'backwpup' ), $file ), E_USER_ERROR );
|
322 |
+
}
|
323 |
+
if ( $numdeltefiles > 0 )
|
324 |
+
$job_object->log( sprintf( _n( 'One file deleted from Dropbox', '%d files deleted on Dropbox', $numdeltefiles, 'backwpup' ), $numdeltefiles ), E_USER_NOTICE );
|
325 |
+
}
|
326 |
+
}
|
327 |
+
set_site_transient( 'backwpup_' . $job_object->job[ 'jobid' ] . '_dropbox', $files, 60 * 60 * 24 * 7 );
|
328 |
+
}
|
329 |
+
catch ( Exception $e ) {
|
330 |
+
$job_object->log( E_USER_ERROR, sprintf( __( 'Dropbox API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
331 |
+
|
332 |
+
return FALSE;
|
333 |
+
}
|
334 |
+
$job_object->substeps_done ++;
|
335 |
+
|
336 |
+
return TRUE;
|
337 |
+
}
|
338 |
+
|
339 |
+
/**
|
340 |
+
* @param $job_object
|
341 |
+
* @return bool
|
342 |
+
*/
|
343 |
+
public function can_run( $job_object ) {
|
344 |
+
|
345 |
+
if ( empty( $job_object->job[ 'dropboxtoken' ] ) )
|
346 |
+
return FALSE;
|
347 |
+
|
348 |
+
if ( empty( $job_object->job[ 'dropboxsecret' ] ) )
|
349 |
+
return FALSE;
|
350 |
+
|
351 |
+
return TRUE;
|
352 |
+
}
|
353 |
+
|
354 |
+
}
|
355 |
+
|
356 |
+
|
357 |
+
/**
|
358 |
+
*
|
359 |
+
*/
|
360 |
+
final class BackWPup_Destination_Dropbox_API {
|
361 |
+
|
362 |
+
/**
|
363 |
+
*
|
364 |
+
*/
|
365 |
+
const API_URL = 'https://api.dropbox.com/';
|
366 |
+
|
367 |
+
/**
|
368 |
+
*
|
369 |
+
*/
|
370 |
+
const API_CONTENT_URL = 'https://api-content.dropbox.com/';
|
371 |
+
|
372 |
+
/**
|
373 |
+
*
|
374 |
+
*/
|
375 |
+
const API_WWW_URL = 'https://www.dropbox.com/';
|
376 |
+
|
377 |
+
/**
|
378 |
+
*
|
379 |
+
*/
|
380 |
+
const API_VERSION_URL = '1/';
|
381 |
+
|
382 |
+
/**
|
383 |
+
* dropbox vars
|
384 |
+
*
|
385 |
+
* @var string
|
386 |
+
*/
|
387 |
+
private $root = 'sandbox';
|
388 |
+
|
389 |
+
/**
|
390 |
+
* oAuth vars
|
391 |
+
*
|
392 |
+
* @var string
|
393 |
+
*/
|
394 |
+
private $oauth_app_key = '';
|
395 |
+
|
396 |
+
/**
|
397 |
+
* @var string
|
398 |
+
*/
|
399 |
+
private $oauth_app_secret = '';
|
400 |
+
/**
|
401 |
+
* @var string
|
402 |
+
*/
|
403 |
+
private $oauth_token = '';
|
404 |
+
|
405 |
+
/**
|
406 |
+
* @var string
|
407 |
+
*/
|
408 |
+
private $oauth_token_secret = '';
|
409 |
+
|
410 |
+
|
411 |
+
/**
|
412 |
+
* @param string $boxtype
|
413 |
+
* @throws BackWPup_Destination_Dropbox_API_Exception
|
414 |
+
*/
|
415 |
+
public function __construct( $boxtype = 'dropbox' ) {
|
416 |
+
|
417 |
+
if ( $boxtype == 'dropbox' ) {
|
418 |
+
$this->oauth_app_key = get_site_option( 'backwpup_cfg_dropboxappkey' );
|
419 |
+
$this->oauth_app_secret = BackWPup_Encryption::decrypt( get_site_option( 'backwpup_cfg_dropboxappsecret' ) );
|
420 |
+
$this->root = 'dropbox';
|
421 |
+
}
|
422 |
+
else {
|
423 |
+
$this->oauth_app_key = get_site_option( 'backwpup_cfg_dropboxsandboxappkey' );
|
424 |
+
$this->oauth_app_secret = BackWPup_Encryption::decrypt( get_site_option( 'backwpup_cfg_dropboxsandboxappsecret' ) );
|
425 |
+
$this->root = 'sandbox';
|
426 |
+
}
|
427 |
+
|
428 |
+
if ( empty( $this->oauth_app_key ) or empty( $this->oauth_app_secret ) )
|
429 |
+
throw new BackWPup_Destination_Dropbox_API_Exception( "No App key or App Secret specified." );
|
430 |
+
}
|
431 |
+
|
432 |
+
/**
|
433 |
+
* @param $token
|
434 |
+
* @param $secret
|
435 |
+
* @throws BackWPup_Destination_Dropbox_API_Exception
|
436 |
+
*/
|
437 |
+
public function setOAuthTokens( $token, $secret ) {
|
438 |
+
|
439 |
+
$this->oauth_token = $token;
|
440 |
+
$this->oauth_token_secret = $secret;
|
441 |
+
|
442 |
+
if ( empty( $this->oauth_token ) or empty( $this->oauth_token_secret ) )
|
443 |
+
throw new BackWPup_Destination_Dropbox_API_Exception( "No oAuth token or secret specified." );
|
444 |
+
}
|
445 |
+
|
446 |
+
/**
|
447 |
+
* @return array|mixed|string
|
448 |
+
*/
|
449 |
+
public function accountInfo() {
|
450 |
+
|
451 |
+
$url = self::API_URL . self::API_VERSION_URL . 'account/info';
|
452 |
+
|
453 |
+
return $this->request( $url );
|
454 |
+
}
|
455 |
+
|
456 |
+
/**
|
457 |
+
* @param $file
|
458 |
+
* @param string $path
|
459 |
+
* @param bool $overwrite
|
460 |
+
* @return array|mixed|string
|
461 |
+
* @throws BackWPup_Destination_Dropbox_API_Exception
|
462 |
+
*/
|
463 |
+
public function upload( $file, $path = '', $overwrite = TRUE ) {
|
464 |
+
|
465 |
+
$file = str_replace( "\\", "/", $file );
|
466 |
+
|
467 |
+
if ( ! is_readable( $file ) )
|
468 |
+
throw new BackWPup_Destination_Dropbox_API_Exception( "Error: File \"$file\" is not readable or doesn't exist." );
|
469 |
+
|
470 |
+
$filesize = filesize( $file );
|
471 |
+
|
472 |
+
if ( $filesize < 8388608 ) { //chunk transfer on bigger uploads
|
473 |
+
$filehandel = fopen( $file, 'r' );
|
474 |
+
$url = self::API_CONTENT_URL . self::API_VERSION_URL . 'files_put/' . $this->root . '/' . $this->encode_path( $path );
|
475 |
+
$output = $this->request( $url, array( 'overwrite' => ( $overwrite ) ? 'true' : 'false' ), 'PUT', $filehandel, $filesize );
|
476 |
+
fclose( $filehandel );
|
477 |
+
}
|
478 |
+
else {
|
479 |
+
$output = $this->chunked_upload( $file, $path, $overwrite );
|
480 |
+
}
|
481 |
+
|
482 |
+
return $output;
|
483 |
+
}
|
484 |
+
|
485 |
+
/**
|
486 |
+
* @param $file
|
487 |
+
* @param string $path
|
488 |
+
* @param bool $overwrite
|
489 |
+
* @return array|mixed|string
|
490 |
+
* @throws BackWPup_Destination_Dropbox_API_Exception
|
491 |
+
*/
|
492 |
+
public function chunked_upload( $file, $path = '', $overwrite = TRUE ) {
|
493 |
+
|
494 |
+
$backwpup_job_object = BackWPup_Destination_Dropbox::$backwpup_job_object;
|
495 |
+
|
496 |
+
$file = str_replace( "\\", "/", $file );
|
497 |
+
|
498 |
+
if ( ! is_readable( $file ) )
|
499 |
+
throw new BackWPup_Destination_Dropbox_API_Exception( "Error: File \"$file\" is not readable or doesn't exist." );
|
500 |
+
|
501 |
+
$chunk_size = 4194304; //4194304 = 4MB
|
502 |
+
|
503 |
+
$file_handel = fopen( $file, 'rb' );
|
504 |
+
if ( ! is_resource( $file_handel ) )
|
505 |
+
throw new BackWPup_Destination_Dropbox_API_Exception( "Can not open source file for transfer." );
|
506 |
+
|
507 |
+
if ( ! isset( $backwpup_job_object->steps_data[ $backwpup_job_object->step_working ][ 'uploadid' ] ) )
|
508 |
+
$backwpup_job_object->steps_data[ $backwpup_job_object->step_working ][ 'uploadid' ] = NULL;
|
509 |
+
if ( ! isset( $backwpup_job_object->steps_data[ $backwpup_job_object->step_working ][ 'offset' ] ) )
|
510 |
+
$backwpup_job_object->steps_data[ $backwpup_job_object->step_working ][ 'offset' ] = 0;
|
511 |
+
|
512 |
+
//seek to current position
|
513 |
+
if ( $backwpup_job_object->steps_data[ $backwpup_job_object->step_working ][ 'offset' ] > 0 )
|
514 |
+
fseek( $file_handel, $backwpup_job_object->steps_data[ $backwpup_job_object->step_working ][ 'offset' ] );
|
515 |
+
|
516 |
+
while ( $data = fread( $file_handel, $chunk_size ) ) {
|
517 |
+
$chunk_handle = fopen( 'php://temp/maxmemory:' . $chunk_size, 'r+' );
|
518 |
+
if ( ! is_resource( $chunk_handle ) ) {
|
519 |
+
//fallback if php://temp not working
|
520 |
+
$chunk_handle = tmpfile();
|
521 |
+
if ( ! is_resource( $chunk_handle ) )
|
522 |
+
throw new BackWPup_Destination_Dropbox_API_Exception( "Can not open temp file for chunked transfer." );
|
523 |
+
}
|
524 |
+
fwrite( $chunk_handle, $data );
|
525 |
+
rewind( $chunk_handle );
|
526 |
+
$chunk_upload_start = microtime( TRUE );
|
527 |
+
$url = self::API_CONTENT_URL . self::API_VERSION_URL . 'chunked_upload';
|
528 |
+
$output = $this->request( $url, array( 'upload_id' => $backwpup_job_object->steps_data[ $backwpup_job_object->step_working ][ 'uploadid' ], 'offset' => $backwpup_job_object->steps_data[ $backwpup_job_object->step_working ][ 'offset' ] ), 'PUT', $chunk_handle, strlen( $data ) );
|
529 |
+
fclose( $chunk_handle );
|
530 |
+
$chunk_upload_time = microtime( TRUE ) - $chunk_upload_start;
|
531 |
+
//args for next chunk
|
532 |
+
$backwpup_job_object->steps_data[ $backwpup_job_object->step_working ][ 'offset' ] = $output[ 'offset' ];
|
533 |
+
$backwpup_job_object->steps_data[ $backwpup_job_object->step_working ][ 'uploadid' ] = $output[ 'upload_id' ];
|
534 |
+
if ( $backwpup_job_object->job[ 'backuptype' ] == 'archive' ) {
|
535 |
+
$backwpup_job_object->substeps_done = $backwpup_job_object->steps_data[ $backwpup_job_object->step_working ][ 'offset' ];
|
536 |
+
if ( strlen( $data ) == $chunk_size ) {
|
537 |
+
$time_remaining = $backwpup_job_object->do_restart_time();
|
538 |
+
//calc next chunk
|
539 |
+
if ( $time_remaining < $chunk_upload_time ) {
|
540 |
+
$chunk_size = floor ( $chunk_size / $chunk_upload_time * ( $time_remaining - 3 ) );
|
541 |
+
if ( $chunk_size < 0 )
|
542 |
+
$chunk_size = 1024;
|
543 |
+
if ( $chunk_size > 4194304 )
|
544 |
+
$chunk_size = 4194304;
|
545 |
+
}
|
546 |
+
}
|
547 |
+
}
|
548 |
+
$backwpup_job_object->update_working_data();
|
549 |
+
//correct position
|
550 |
+
fseek( $file_handel, $backwpup_job_object->steps_data[ $backwpup_job_object->step_working ][ 'offset' ] );
|
551 |
+
}
|
552 |
+
|
553 |
+
fclose( $file_handel );
|
554 |
+
|
555 |
+
$url = self::API_CONTENT_URL . self::API_VERSION_URL . 'commit_chunked_upload/' . $this->root . '/' . $this->encode_path( $path );
|
556 |
+
|
557 |
+
return $this->request( $url, array( 'overwrite' => ( $overwrite ) ? 'true' : 'false', 'upload_id' => $backwpup_job_object->steps_data[ $backwpup_job_object->step_working ][ 'uploadid' ] ), 'POST' );
|
558 |
+
}
|
559 |
+
|
560 |
+
/**
|
561 |
+
* @param $path
|
562 |
+
* @param bool $echo
|
563 |
+
* @return string
|
564 |
+
*/
|
565 |
+
public function download( $path, $echo = FALSE ) {
|
566 |
+
|
567 |
+
$url = self::API_CONTENT_URL . self::API_VERSION_URL . 'files/' . $this->root . '/' . $path;
|
568 |
+
if ( ! $echo )
|
569 |
+
return $this->request( $url );
|
570 |
+
else {
|
571 |
+
$this->request( $url, NULL, 'GET', NULL, 0, TRUE );
|
572 |
+
return '';
|
573 |
+
}
|
574 |
+
}
|
575 |
+
|
576 |
+
/**
|
577 |
+
* @param string $path
|
578 |
+
* @param bool $listContents
|
579 |
+
* @param int $fileLimit
|
580 |
+
* @param string $hash
|
581 |
+
* @return array|mixed|string
|
582 |
+
*/
|
583 |
+
public function metadata( $path = '', $listContents = TRUE, $fileLimit = 10000, $hash = '' ) {
|
584 |
+
|
585 |
+
$url = self::API_URL . self::API_VERSION_URL . 'metadata/' . $this->root . '/' . $this->encode_path( $path );
|
586 |
+
|
587 |
+
return $this->request( $url, array(
|
588 |
+
'list' => ( $listContents ) ? 'true' : 'false',
|
589 |
+
'hash' => ( $hash ) ? $hash : '',
|
590 |
+
'file_limit' => $fileLimit
|
591 |
+
) );
|
592 |
+
}
|
593 |
+
|
594 |
+
/**
|
595 |
+
* @param string $path
|
596 |
+
* @return array|mixed|string
|
597 |
+
*/
|
598 |
+
public function media( $path = '' ) {
|
599 |
+
|
600 |
+
$url = self::API_URL . self::API_VERSION_URL . 'media/' . $this->root . '/' . $path;
|
601 |
+
|
602 |
+
return $this->request( $url );
|
603 |
+
}
|
604 |
+
|
605 |
+
/**
|
606 |
+
* @param $path
|
607 |
+
* @return array|mixed|string
|
608 |
+
*/
|
609 |
+
public function fileopsDelete( $path ) {
|
610 |
+
|
611 |
+
$url = self::API_URL . self::API_VERSION_URL . 'fileops/delete';
|
612 |
+
|
613 |
+
return $this->request( $url, array(
|
614 |
+
'path' => '/' . $path,
|
615 |
+
'root' => $this->root
|
616 |
+
) );
|
617 |
+
}
|
618 |
+
|
619 |
+
/**
|
620 |
+
* @param $callback_url
|
621 |
+
* @return array
|
622 |
+
* @throws BackWPup_Destination_Dropbox_API_Exception
|
623 |
+
*/
|
624 |
+
public function oAuthAuthorize( $callback_url ) {
|
625 |
+
|
626 |
+
$headers[ ] = 'Authorization: OAuth oauth_version="1.0", oauth_signature_method="PLAINTEXT", oauth_consumer_key="' . $this->oauth_app_key . '", oauth_signature="' . $this->oauth_app_secret . '&"';
|
627 |
+
$ch = curl_init();
|
628 |
+
curl_setopt( $ch, CURLOPT_URL, self::API_URL . self::API_VERSION_URL . 'oauth/request_token' );
|
629 |
+
curl_setopt( $ch, CURLOPT_USERAGENT, BackWPup::get_plugin_data( 'User-Agent' ) );
|
630 |
+
curl_setopt( $ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
|
631 |
+
curl_setopt( $ch, CURLOPT_SSLVERSION, 3 );
|
632 |
+
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, TRUE );
|
633 |
+
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 2 );
|
634 |
+
if ( file_exists( BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' ) )
|
635 |
+
curl_setopt( $ch, CURLOPT_CAINFO, BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' );
|
636 |
+
curl_setopt( $ch, CURLOPT_AUTOREFERER, TRUE );
|
637 |
+
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
|
638 |
+
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE );
|
639 |
+
$content = curl_exec( $ch );
|
640 |
+
$status = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
|
641 |
+
if ( $status >= 200 && $status < 300 && 0 == curl_errno( $ch ) ) {
|
642 |
+
parse_str( $content, $oauth_token );
|
643 |
+
}
|
644 |
+
else {
|
645 |
+
$output = json_decode( $content, TRUE );
|
646 |
+
if ( isset( $output[ 'error' ] ) && is_string( $output[ 'error' ] ) ) $message = $output[ 'error' ];
|
647 |
+
elseif ( isset( $output[ 'error' ][ 'hash' ] ) && $output[ 'error' ][ 'hash' ] != '' ) $message = (string)$output[ 'error' ][ 'hash' ];
|
648 |
+
elseif ( 0 != curl_errno( $ch ) ) $message = '(' . curl_errno( $ch ) . ') ' . curl_error( $ch );
|
649 |
+
else $message = '(' . $status . ') Invalid response.';
|
650 |
+
throw new BackWPup_Destination_Dropbox_API_Exception( $message );
|
651 |
+
}
|
652 |
+
curl_close( $ch );
|
653 |
+
|
654 |
+
return array(
|
655 |
+
'authurl' => self::API_WWW_URL . self::API_VERSION_URL . 'oauth/authorize?oauth_token=' . $oauth_token[ 'oauth_token' ] . '&oauth_callback=' . urlencode( $callback_url ),
|
656 |
+
'oauth_token' => $oauth_token[ 'oauth_token' ],
|
657 |
+
'oauth_token_secret' => $oauth_token[ 'oauth_token_secret' ]
|
658 |
+
);
|
659 |
+
}
|
660 |
+
|
661 |
+
/**
|
662 |
+
* @param $oauth_token
|
663 |
+
* @param $oauth_token_secret
|
664 |
+
*
|
665 |
+
* @return array|null
|
666 |
+
* @throws BackWPup_Destination_Dropbox_API_Exception
|
667 |
+
*/
|
668 |
+
public function oAuthAccessToken( $oauth_token, $oauth_token_secret ) {
|
669 |
+
|
670 |
+
$headers[ ] = 'Authorization: OAuth oauth_version="1.0", oauth_signature_method="PLAINTEXT", oauth_consumer_key="' . $this->oauth_app_key . '", oauth_token="' . $oauth_token . '", oauth_signature="' . $this->oauth_app_secret . '&' . $oauth_token_secret . '"';
|
671 |
+
$ch = curl_init();
|
672 |
+
curl_setopt( $ch, CURLOPT_URL, self::API_URL . self::API_VERSION_URL . 'oauth/access_token' );
|
673 |
+
curl_setopt( $ch, CURLOPT_USERAGENT, BackWPup::get_plugin_data( 'User-Agent' ) );
|
674 |
+
curl_setopt( $ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
|
675 |
+
curl_setopt( $ch, CURLOPT_SSLVERSION, 3 );
|
676 |
+
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, TRUE );
|
677 |
+
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 2 );
|
678 |
+
if ( file_exists( BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' ) )
|
679 |
+
curl_setopt( $ch, CURLOPT_CAINFO, BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' );
|
680 |
+
curl_setopt( $ch, CURLOPT_AUTOREFERER, TRUE );
|
681 |
+
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
|
682 |
+
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE );
|
683 |
+
$content = curl_exec( $ch );
|
684 |
+
$status = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
|
685 |
+
if ( $status >= 200 && $status < 300 && 0 == curl_errno( $ch ) ) {
|
686 |
+
parse_str( $content, $oauth_token );
|
687 |
+
$this->setOAuthTokens( $oauth_token[ 'oauth_token' ], $oauth_token[ 'oauth_token_secret' ] );
|
688 |
+
|
689 |
+
return $oauth_token;
|
690 |
+
}
|
691 |
+
else {
|
692 |
+
$output = json_decode( $content, TRUE );
|
693 |
+
if ( isset( $output[ 'error' ] ) && is_string( $output[ 'error' ] ) ) $message = $output[ 'error' ];
|
694 |
+
elseif ( isset( $output[ 'error' ][ 'hash' ] ) && $output[ 'error' ][ 'hash' ] != '' ) $message = (string)$output[ 'error' ][ 'hash' ];
|
695 |
+
elseif ( 0 != curl_errno( $ch ) ) $message = '(' . curl_errno( $ch ) . ') ' . curl_error( $ch );
|
696 |
+
else $message = '(' . $status . ') Invalid response.';
|
697 |
+
throw new BackWPup_Destination_Dropbox_API_Exception( $message );
|
698 |
+
}
|
699 |
+
}
|
700 |
+
|
701 |
+
/**
|
702 |
+
* @param $url
|
703 |
+
* @param array $args
|
704 |
+
* @param string $method
|
705 |
+
* @param null $filehandel
|
706 |
+
* @param int $filesize
|
707 |
+
* @param bool $echo
|
708 |
+
*
|
709 |
+
* @throws BackWPup_Destination_Dropbox_API_Exception
|
710 |
+
* @internal param null $file
|
711 |
+
* @return array|mixed|string
|
712 |
+
*/
|
713 |
+
private function request( $url, $args = array(), $method = 'GET', $filehandel = NULL, $filesize = 0, $echo = FALSE ) {
|
714 |
+
|
715 |
+
/* Header*/
|
716 |
+
$headers[ ] = 'Authorization: OAuth oauth_version="1.0", oauth_signature_method="PLAINTEXT", oauth_consumer_key="' . $this->oauth_app_key . '", oauth_token="' . $this->oauth_token . '", oauth_signature="' . $this->oauth_app_secret . '&' . $this->oauth_token_secret . '"';
|
717 |
+
$headers[ ] = 'Expect:';
|
718 |
+
|
719 |
+
/* Build cURL Request */
|
720 |
+
$ch = curl_init();
|
721 |
+
if ( $method == 'POST' ) {
|
722 |
+
curl_setopt( $ch, CURLOPT_POST, TRUE );
|
723 |
+
curl_setopt( $ch, CURLOPT_POSTFIELDS, $args );
|
724 |
+
curl_setopt( $ch, CURLOPT_URL, $url );
|
725 |
+
}
|
726 |
+
elseif ( $method == 'PUT' ) {
|
727 |
+
curl_setopt( $ch, CURLOPT_PUT, TRUE );
|
728 |
+
curl_setopt( $ch, CURLOPT_INFILE, $filehandel );
|
729 |
+
curl_setopt( $ch, CURLOPT_INFILESIZE, $filesize );
|
730 |
+
$args = ( is_array( $args ) ) ? '?' . http_build_query( $args, '', '&' ) : $args;
|
731 |
+
curl_setopt( $ch, CURLOPT_URL, $url . $args );
|
732 |
+
}
|
733 |
+
else {
|
734 |
+
curl_setopt( $ch, CURLOPT_BINARYTRANSFER, TRUE );
|
735 |
+
$args = ( is_array( $args ) ) ? '?' . http_build_query( $args, '', '&' ) : $args;
|
736 |
+
curl_setopt( $ch, CURLOPT_URL, $url . $args );
|
737 |
+
}
|
738 |
+
curl_setopt( $ch, CURLOPT_USERAGENT, BackWPup::get_plugin_data( 'User-Agent' ) );
|
739 |
+
curl_setopt( $ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
|
740 |
+
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE );
|
741 |
+
curl_setopt( $ch, CURLOPT_SSLVERSION, 3 );
|
742 |
+
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, TRUE );
|
743 |
+
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 2 );
|
744 |
+
if ( file_exists( BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' ) )
|
745 |
+
curl_setopt( $ch, CURLOPT_CAINFO, BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' );
|
746 |
+
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
|
747 |
+
$output = '';
|
748 |
+
if ( $echo ) {
|
749 |
+
echo curl_exec( $ch );
|
750 |
+
}
|
751 |
+
else {
|
752 |
+
curl_setopt( $ch, CURLOPT_HEADER, TRUE );
|
753 |
+
if ( 0 == curl_errno( $ch ) ) {
|
754 |
+
$responce = explode( "\r\n\r\n", curl_exec( $ch ), 2 );
|
755 |
+
if ( ! empty( $responce[ 1 ] ) )
|
756 |
+
$output = json_decode( $responce[ 1 ], TRUE );
|
757 |
+
else
|
758 |
+
$output = '';
|
759 |
+
}
|
760 |
+
}
|
761 |
+
$status = curl_getinfo( $ch );
|
762 |
+
if ( isset( $datafilefd ) && is_resource( $datafilefd ) )
|
763 |
+
fclose( $datafilefd );
|
764 |
+
|
765 |
+
if ( $status[ 'http_code' ] == 503 ) {
|
766 |
+
$wait = 0;
|
767 |
+
if ( preg_match( "/retry-after:(.*?)\r/i", $responce[ 0 ], $matches ) )
|
768 |
+
$wait = trim( $matches[ 1 ] );
|
769 |
+
//only wait if we get a retry-after header.
|
770 |
+
if ( ! empty( $wait ) ) {
|
771 |
+
trigger_error( sprintf( '(503) Your app is making too many requests and is being rate limited. Error 503 can be triggered on a per-app or per-user basis. Wait for %d seconds.', $wait ), E_USER_WARNING );
|
772 |
+
sleep( $wait );
|
773 |
+
} else {
|
774 |
+
trigger_error( '(503) Service unavailable. Retrying.', E_USER_WARNING );
|
775 |
+
}
|
776 |
+
//redo request
|
777 |
+
return $this->request( $url, $args, $method, $filehandel, $filesize, $echo );
|
778 |
+
}
|
779 |
+
elseif ( $status[ 'http_code' ] == 400 && $method == 'PUT' ) { //correct offset on chunk uploads
|
780 |
+
trigger_error( '(' . $status[ 'http_code' ] . ') False offset will corrected', E_USER_NOTICE );
|
781 |
+
return $output;
|
782 |
+
}
|
783 |
+
elseif ( $status[ 'http_code' ] == 404 && ! empty( $output[ 'error' ] )) {
|
784 |
+
trigger_error( '(' . $status[ 'http_code' ] . ') ' . $output[ 'error' ], E_USER_WARNING );
|
785 |
+
|
786 |
+
return FALSE;
|
787 |
+
}
|
788 |
+
elseif ( isset( $output[ 'error' ] ) || $status[ 'http_code' ] >= 300 || $status[ 'http_code' ] < 200 || curl_errno( $ch ) > 0 ) {
|
789 |
+
if ( isset( $output[ 'error' ] ) && is_string( $output[ 'error' ] ) ) $message = '(' . $status[ 'http_code' ] . ') ' . $output[ 'error' ];
|
790 |
+
elseif ( isset( $output[ 'error' ][ 'hash' ] ) && $output[ 'error' ][ 'hash' ] != '' ) $message = (string)'(' . $status[ 'http_code' ] . ') ' . $output[ 'error' ][ 'hash' ];
|
791 |
+
elseif ( 0 != curl_errno( $ch ) ) $message = '(' . curl_errno( $ch ) . ') ' . curl_error( $ch );
|
792 |
+
elseif ( $status[ 'http_code' ] == 304 ) $message = '(304) Folder contents have not changed (relies on hash parameter).';
|
793 |
+
elseif ( $status[ 'http_code' ] == 400 ) $message = '(400) Bad input parameter: ' . strip_tags( $responce[ 1 ] );
|
794 |
+
elseif ( $status[ 'http_code' ] == 401 ) $message = '(401) Bad or expired token. Please re-authenticate the user.';
|
795 |
+
elseif ( $status[ 'http_code' ] == 403 ) $message = '(403) Bad OAuth request (wrong consumer key, bad nonce, expired timestamp,…)';
|
796 |
+
elseif ( $status[ 'http_code' ] == 404 ) $message = '(404) File could not be found at the specified path or rev.';
|
797 |
+
elseif ( $status[ 'http_code' ] == 405 ) $message = '(405) Request method not expected (generally should be GET,PUT or POST).';
|
798 |
+
elseif ( $status[ 'http_code' ] == 406 ) $message = '(406) There are too many file entries to return.';
|
799 |
+
elseif ( $status[ 'http_code' ] == 411 ) $message = '(411) Chunked encoding was attempted for this upload, but is not supported by Dropbox.';
|
800 |
+
elseif ( $status[ 'http_code' ] == 415 ) $message = '(415) The image is invalid and cannot be thumbnailed.';
|
801 |
+
elseif ( $status[ 'http_code' ] == 503 ) $message = '(503) Service unavailable.';
|
802 |
+
elseif ( $status[ 'http_code' ] == 507 ) $message = '(507) User exceeding Dropbox storage quota.';
|
803 |
+
else $message = '(' . $status[ 'http_code' ] . ') Invalid response.';
|
804 |
+
throw new BackWPup_Destination_Dropbox_API_Exception( $message );
|
805 |
+
}
|
806 |
+
else {
|
807 |
+
curl_close( $ch );
|
808 |
+
if ( ! is_array( $output ) )
|
809 |
+
return $responce[ 1 ];
|
810 |
+
else
|
811 |
+
return $output;
|
812 |
+
}
|
813 |
+
}
|
814 |
+
|
815 |
+
/**
|
816 |
+
* @param $path
|
817 |
+
*
|
818 |
+
* @return mixed
|
819 |
+
*/
|
820 |
+
private function encode_path( $path ) {
|
821 |
+
|
822 |
+
$path = preg_replace( '#/+#', '/', trim( $path, '/' ) );
|
823 |
+
$path = str_replace( '%2F', '/', rawurlencode( $path ) );
|
824 |
+
|
825 |
+
return $path;
|
826 |
+
}
|
827 |
+
}
|
828 |
+
|
829 |
+
/**
|
830 |
+
*
|
831 |
+
*/
|
832 |
+
class BackWPup_Destination_Dropbox_API_Exception extends Exception {
|
833 |
+
|
834 |
}
|
inc/class-destination-email.php
CHANGED
@@ -1,452 +1,433 @@
|
|
1 |
-
<?php
|
2 |
-
// Swift Mailer
|
3 |
-
// http://swiftmailer.org/
|
4 |
-
// https://github.com/swiftmailer/swiftmailer
|
5 |
-
if ( ! class_exists( 'Swift' ) )
|
6 |
-
require BackWPup::get_plugin_data( 'PluginDir' ) . '/
|
7 |
-
|
8 |
-
/**
|
9 |
-
*
|
10 |
-
*/
|
11 |
-
class BackWPup_Destination_Email extends BackWPup_Destinations {
|
12 |
-
|
13 |
-
/**
|
14 |
-
* @return
|
15 |
-
*/
|
16 |
-
public function
|
17 |
-
|
18 |
-
$
|
19 |
-
$
|
20 |
-
$
|
21 |
-
$
|
22 |
-
$
|
23 |
-
$
|
24 |
-
$
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
</td>
|
110 |
-
</tr>
|
111 |
-
<tr
|
112 |
-
<th scope="row"><label for="
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
<
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
<
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
* @
|
202 |
-
*/
|
203 |
-
public function
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
$
|
225 |
-
$
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
$emailmethod
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
//
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
$
|
313 |
-
$
|
314 |
-
|
315 |
-
|
316 |
-
}
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
if (
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
// Create
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
$message->setBody( __( 'If this message reaches your inbox, sending backup archives via e-mail should work for you.', 'backwpup' ) );
|
435 |
-
// Send the message
|
436 |
-
$result = $emailer->send( $message );
|
437 |
-
}
|
438 |
-
catch ( Exception $e ) {
|
439 |
-
echo '<span id="emailsendtext" style="color:red;">Swift Mailer: ' . $e->getMessage() . '</span>';
|
440 |
-
}
|
441 |
-
|
442 |
-
if ( isset( $mbEncoding ) ) {
|
443 |
-
mb_internal_encoding( $mbEncoding );
|
444 |
-
}
|
445 |
-
|
446 |
-
if ( ! isset( $result ) || ! $result )
|
447 |
-
echo '<span id="emailsendtext" style="color:red;">' . __( 'Error while sending e-mail!', 'backwpup' ) . '</span>';
|
448 |
-
else
|
449 |
-
echo '<span id="emailsendtext" style="color:green;">' . __( 'E-Mail sent.', 'backwpup' ) . '</span>';
|
450 |
-
die();
|
451 |
-
}
|
452 |
-
}
|
1 |
+
<?php
|
2 |
+
// Swift Mailer v5.0.1
|
3 |
+
// http://swiftmailer.org/
|
4 |
+
// https://github.com/swiftmailer/swiftmailer
|
5 |
+
if ( ! class_exists( 'Swift' ) )
|
6 |
+
require BackWPup::get_plugin_data( 'PluginDir' ) . '/vendor/SwiftMailer/swift_required.php';
|
7 |
+
|
8 |
+
/**
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
class BackWPup_Destination_Email extends BackWPup_Destinations {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* @return array
|
15 |
+
*/
|
16 |
+
public function option_defaults() {
|
17 |
+
|
18 |
+
$default=array();
|
19 |
+
$default[ 'emailaddress' ] = sanitize_email( get_bloginfo( 'admin_email' ) );
|
20 |
+
$default[ 'emailefilesize' ] = 20;
|
21 |
+
$default[ 'emailsndemail' ] = sanitize_email( get_bloginfo( 'admin_email' ) );
|
22 |
+
$default[ 'emailsndemailname' ] = 'BackWPup ' . get_bloginfo( 'name' );
|
23 |
+
$default[ 'emailmethod' ] = '';
|
24 |
+
$default[ 'emailsendmail' ] = ini_get( 'sendmail_path' );
|
25 |
+
$default[ 'emailhost' ] = isset($_SERVER[ 'SERVER_NAME' ]) ? $_SERVER[ 'SERVER_NAME' ] : '';
|
26 |
+
$default[ 'emailhostport' ] = 25;
|
27 |
+
$default[ 'emailsecure' ] = '';
|
28 |
+
$default[ 'emailuser' ] = '';
|
29 |
+
$default[ 'emailpass' ] = '';
|
30 |
+
|
31 |
+
return $default;
|
32 |
+
}
|
33 |
+
|
34 |
+
|
35 |
+
/**
|
36 |
+
* @param $jobid
|
37 |
+
*/
|
38 |
+
public function edit_tab( $jobid ) {
|
39 |
+
?>
|
40 |
+
<h3 class="title"><?php _e( 'Email address', 'backwpup' ); ?></h3>
|
41 |
+
<table class="form-table">
|
42 |
+
<tr>
|
43 |
+
<th scope="row"><label for="emailaddress"><?php _e( 'Email address', 'backwpup' ); ?></label></th>
|
44 |
+
<td>
|
45 |
+
<input name="emailaddress" id="emailaddress" type="text" title="<?php esc_attr_e('Email address to which Backups are sent.','backwpup'); ?>"
|
46 |
+
value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'emailaddress' ) );?>" class="regular-text help-tip" />
|
47 |
+
</td>
|
48 |
+
</tr>
|
49 |
+
<tr>
|
50 |
+
<th scope="row"><label for="sendemailtest"><?php _e( 'Send test email', 'backwpup' ); ?></label></th>
|
51 |
+
<td>
|
52 |
+
<button id="sendemailtest" class="button secondary"><?php _e( 'Send test email', 'backwpup' ); ?></button>
|
53 |
+
</td>
|
54 |
+
</tr>
|
55 |
+
</table>
|
56 |
+
|
57 |
+
<h3 class="title"><?php _e( 'Send email settings', 'backwpup' ); ?></h3>
|
58 |
+
<table class="form-table">
|
59 |
+
<tr>
|
60 |
+
<th scope="row"><label for="idemailefilesize"><?php _e( 'Maximum file size', 'backwpup' ); ?></label></th>
|
61 |
+
<td><input id="idemailefilesize" name="emailefilesize" type="text" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'emailefilesize' ) ); ?>" class="small-text help-tip" title="<?php esc_attr_e('Maximum file size to be included in an email. 0 = unlimited','backwpup'); ?>" /><?php _e('MB','backwpup'); ?>
|
62 |
+
</td>
|
63 |
+
</tr>
|
64 |
+
<tr>
|
65 |
+
<th scope="row"><label for="emailsndemail"><?php _e( 'Sender email address', 'backwpup' ); ?></label></th>
|
66 |
+
<td><input name="emailsndemail" type="text" id="emailsndemail" title="<?php esc_attr_e( 'Sender email address', 'backwpup' ); ?>"
|
67 |
+
value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'emailsndemail' ) );?>"
|
68 |
+
class="regular-text help-tip" />
|
69 |
+
</td>
|
70 |
+
</tr>
|
71 |
+
<tr>
|
72 |
+
<th scope="row"><label for="emailsndemailname"><?php _e( 'Sender name', 'backwpup' ); ?></label></th>
|
73 |
+
<td><input name="emailsndemailname" type="text" id="emailsndemailname" title="<?php esc_attr_e( 'Name of email sender', 'backwpup' ); ?>"
|
74 |
+
value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'emailsndemailname' ) );?>"
|
75 |
+
class="regular-text help-tip" />
|
76 |
+
</td>
|
77 |
+
</tr>
|
78 |
+
<tr>
|
79 |
+
<th scope="row"><label for="emailmethod"><?php _e( 'Sending method', 'backwpup' ); ?></label></th>
|
80 |
+
<td>
|
81 |
+
<select id="emailmethod" name="emailmethod" class="help-tip" title="<?php esc_attr_e('- Use site settings: retrieve the email settings of your site.<br />-PHP mail(): needs more PHP memory','backwpup'); ?>">
|
82 |
+
<?php
|
83 |
+
echo '<option value=""' . selected( '', BackWPup_Option::get( $jobid, 'emailmethod' ), FALSE ) . '>' . __( 'Use site settings', 'backwpup' ) . '</option>';
|
84 |
+
echo '<option value="mail"' . selected( 'mail', BackWPup_Option::get( $jobid, 'emailmethod' ), FALSE ) . '>' . __( 'PHP: mail()', 'backwpup' ) . '</option>';
|
85 |
+
echo '<option value="sendmail"' . selected( 'sendmail', BackWPup_Option::get( $jobid, 'emailmethod' ), FALSE ) . '>' . __( 'Sendmail', 'backwpup' ) . '</option>';
|
86 |
+
echo '<option value="smtp"' . selected( 'smtp', BackWPup_Option::get( $jobid, 'emailmethod' ), FALSE ) . '>' . __( 'SMTP', 'backwpup' ) . '</option>';
|
87 |
+
?>
|
88 |
+
</select>
|
89 |
+
|
90 |
+
</td>
|
91 |
+
</tr>
|
92 |
+
<tr id="emailsendmail" <?php if ( BackWPup_Option::get( $jobid, 'emailmethod' ) != 'sendmail' ) echo 'style="display:none;"';?>>
|
93 |
+
<th scope="row"><label for="emailsendmail"><?php _e( 'Sendmail path', 'backwpup' ); ?></label></th>
|
94 |
+
<td>
|
95 |
+
<input name="emailsendmail" id="emailsendmail" type="text"
|
96 |
+
value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'emailsendmail' ) );?>"
|
97 |
+
class="regular-text code" />
|
98 |
+
</td>
|
99 |
+
</tr>
|
100 |
+
<tr class="emailsmtp" <?php if ( BackWPup_Option::get( $jobid, 'emailmethod' ) != 'smtp' ) echo 'style="display:none;"';?>>
|
101 |
+
<th scope="row"><label for="emailhost"><?php _e( 'SMTP host name', 'backwpup' ); ?></label></th>
|
102 |
+
<td>
|
103 |
+
<input name="emailhost" id="emailhost" type="text"
|
104 |
+
value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'emailhost' ) );?>"
|
105 |
+
class="regular-text code"/>
|
106 |
+
<label for="emailhostport"><?php _e( 'Port:', 'backwpup' ); ?><input name="emailhostport" id="emailhostport" type="text"
|
107 |
+
value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'emailhostport' ) );?>"
|
108 |
+
class="small-text code" /></label>
|
109 |
+
</td>
|
110 |
+
</tr>
|
111 |
+
<tr class="emailsmtp" <?php if ( BackWPup_Option::get( $jobid, 'emailmethod' ) != 'smtp' ) echo 'style="display:none;"';?>>
|
112 |
+
<th scope="row"><label for="emailsecure"><?php _e( 'SMTP secure connection', 'backwpup' ); ?></label>
|
113 |
+
</th>
|
114 |
+
<td>
|
115 |
+
<select id="emailsecure" name="emailsecure">
|
116 |
+
<option value=""<?php selected( '', BackWPup_Option::get( $jobid, 'emailsecure' ), TRUE ); ?>><?php _e( 'none', 'backwpup' ); ?></option>
|
117 |
+
<option value="ssl"<?php selected( 'ssl', BackWPup_Option::get( $jobid, 'emailsecure' ), TRUE ); ?>><?php _e( 'SSL', 'backwpup' ); ?></option>
|
118 |
+
<option value="tls"<?php selected( 'tls', BackWPup_Option::get( $jobid, 'emailsecure' ), TRUE ); ?>><?php _e( 'TLS', 'backwpup' ); ?></option>
|
119 |
+
</select>
|
120 |
+
</td>
|
121 |
+
</tr>
|
122 |
+
<tr class="emailsmtp" <?php if ( BackWPup_Option::get( $jobid, 'emailmethod' ) != 'smtp' ) echo 'style="display:none;"';?>>
|
123 |
+
<th scope="row"><label for="emailuser"><?php _e( 'SMTP username', 'backwpup' ); ?></label></th>
|
124 |
+
<td>
|
125 |
+
<input name="emailuser" id="emailuser" type="text"
|
126 |
+
value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'emailuser' ) );?>" class="regular-text" autocomplete="off" />
|
127 |
+
</td>
|
128 |
+
</tr>
|
129 |
+
<tr class="emailsmtp" <?php if ( BackWPup_Option::get( $jobid, 'emailmethod' ) != 'smtp' ) echo 'style="display:none;"';?>>
|
130 |
+
<th scope="row"><label for="emailpass"><?php _e( 'SMTP password', 'backwpup' ); ?></label></th>
|
131 |
+
<td>
|
132 |
+
<input name="emailpass" id="emailpass" type="password"
|
133 |
+
value="<?php echo esc_attr( BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'emailpass' ) ) );?>"
|
134 |
+
class="regular-text" autocomplete="off" />
|
135 |
+
</td>
|
136 |
+
</tr>
|
137 |
+
</table>
|
138 |
+
<?php
|
139 |
+
}
|
140 |
+
|
141 |
+
|
142 |
+
public function edit_inline_js() {
|
143 |
+
//<script type="text/javascript">
|
144 |
+
?>
|
145 |
+
$('#emailmethod').change(function () {
|
146 |
+
if ('smtp' == $('#emailmethod').val()) {
|
147 |
+
$('.emailsmtp').show();
|
148 |
+
$('#emailsendmail').hide();
|
149 |
+
} else if ('sendmail' == $('#emailmethod').val()) {
|
150 |
+
$('.emailsmtp').hide();
|
151 |
+
$('#emailsendmail').show();
|
152 |
+
} else {
|
153 |
+
$('.emailsmtp').hide();
|
154 |
+
$('#emailsendmail').hide();
|
155 |
+
}
|
156 |
+
});
|
157 |
+
$('#sendemailtest').live('click', function() {
|
158 |
+
$('#sendemailtest').after(' <img id="emailsendtext" src="<?php echo get_admin_url().'images/loading.gif'; ?>" width="16" height="16" />');
|
159 |
+
var data = {
|
160 |
+
action: 'backwpup_dest_email',
|
161 |
+
emailaddress: $('input[name="emailaddress"]').val(),
|
162 |
+
emailsndemail: $('input[name="emailsndemail"]').val(),
|
163 |
+
emailmethod: $('#emailmethod').val(),
|
164 |
+
emailsendmail: $('input[name="emailsendmail"]').val(),
|
165 |
+
emailsndemailname: $('input[name="emailsndemailname"]').val(),
|
166 |
+
emailhost: $('input[name="emailhost"]').val(),
|
167 |
+
emailhostport: $('input[name="emailhostport"]').val(),
|
168 |
+
emailsecure: $('#emailsecure').val(),
|
169 |
+
emailuser: $('input[name="emailuser"]').val(),
|
170 |
+
emailpass: $('input[name="emailpass"]').val(),
|
171 |
+
_ajax_nonce: $('#backwpupajaxnonce').val()
|
172 |
+
};
|
173 |
+
$.post(ajaxurl, data, function(response) {
|
174 |
+
$('#emailsendtext').replaceWith( response );
|
175 |
+
});
|
176 |
+
return false;
|
177 |
+
});
|
178 |
+
<?php
|
179 |
+
}
|
180 |
+
|
181 |
+
/**
|
182 |
+
* @param $jobid
|
183 |
+
*/
|
184 |
+
public function edit_form_post_save( $jobid ) {
|
185 |
+
|
186 |
+
BackWPup_Option::update( $jobid, 'emailaddress', isset( $_POST[ 'emailaddress' ] ) ? sanitize_email( $_POST[ 'emailaddress' ] ) : '' );
|
187 |
+
BackWPup_Option::update( $jobid, 'emailefilesize', isset( $_POST[ 'emailefilesize' ] ) ? (int)$_POST[ 'emailefilesize' ] : 0 );
|
188 |
+
BackWPup_Option::update( $jobid, 'emailsndemail', sanitize_email( $_POST[ 'emailsndemail' ] ) );
|
189 |
+
BackWPup_Option::update( $jobid, 'emailmethod', ( $_POST[ 'emailmethod' ] == '' || $_POST[ 'emailmethod' ] == 'mail' || $_POST[ 'emailmethod' ] == 'sendmail' || $_POST[ 'emailmethod' ] == 'smtp' ) ? $_POST[ 'emailmethod' ] : '' );
|
190 |
+
BackWPup_Option::update( $jobid, 'emailsendmail', $_POST[ 'emailsendmail' ] );
|
191 |
+
BackWPup_Option::update( $jobid, 'emailsndemailname', $_POST[ 'emailsndemailname' ] );
|
192 |
+
BackWPup_Option::update( $jobid, 'emailhost', $_POST[ 'emailhost' ] );
|
193 |
+
BackWPup_Option::update( $jobid, 'emailhostport', (int)$_POST[ 'emailhostport' ] );
|
194 |
+
BackWPup_Option::update( $jobid, 'emailsecure', ( $_POST[ 'emailsecure' ] == 'ssl' || $_POST[ 'emailsecure' ] == 'tls' ) ? $_POST[ 'emailsecure' ] : '' );
|
195 |
+
BackWPup_Option::update( $jobid, 'emailuser', $_POST[ 'emailuser' ] );
|
196 |
+
BackWPup_Option::update( $jobid, 'emailpass', BackWPup_Encryption::encrypt( $_POST[ 'emailpass' ] ) );
|
197 |
+
}
|
198 |
+
|
199 |
+
/**
|
200 |
+
* @param $job_object
|
201 |
+
* @return bool
|
202 |
+
*/
|
203 |
+
public function job_run_archive( &$job_object ) {
|
204 |
+
|
205 |
+
$job_object->substeps_todo = 1;
|
206 |
+
$job_object->log( sprintf( __( '%d. Try to send backup with email …', 'backwpup' ), $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] ), E_USER_NOTICE );
|
207 |
+
|
208 |
+
//check file Size
|
209 |
+
if ( !empty( $job_object->job[ 'emailefilesize' ] ) ) {
|
210 |
+
if ( $job_object->backup_filesize > $job_object->job[ 'emailefilesize' ] * 1024 * 1024 ) {
|
211 |
+
$job_object->log( __( 'Backup archive too big to be sent by email!', 'backwpup' ), E_USER_ERROR );
|
212 |
+
$job_object->substeps_done = 1;
|
213 |
+
|
214 |
+
return TRUE;
|
215 |
+
}
|
216 |
+
}
|
217 |
+
|
218 |
+
$job_object->log( sprintf( __( 'Sending email to %s…', 'backwpup' ), $job_object->job[ 'emailaddress' ] ), E_USER_NOTICE );
|
219 |
+
|
220 |
+
//get mail settings
|
221 |
+
$emailmethod='mail';
|
222 |
+
$emailsendmail='';
|
223 |
+
$emailhost='';
|
224 |
+
$emailhostport='';
|
225 |
+
$emailsecure='';
|
226 |
+
$emailuser='';
|
227 |
+
$emailpass='';
|
228 |
+
|
229 |
+
if ( empty( $job_object->job[ 'emailmethod' ] ) ) {
|
230 |
+
//do so if i'm the wp_mail to get the settings
|
231 |
+
global $phpmailer;
|
232 |
+
// (Re)create it, if it's gone missing
|
233 |
+
if ( !is_object( $phpmailer ) || ! $phpmailer instanceof PHPMailer ) {
|
234 |
+
require_once ABSPATH . WPINC . '/class-phpmailer.php';
|
235 |
+
require_once ABSPATH . WPINC . '/class-smtp.php';
|
236 |
+
$phpmailer = new PHPMailer( true );
|
237 |
+
}
|
238 |
+
//only if PHPMailer really used
|
239 |
+
if ( is_object( $phpmailer ) ) {
|
240 |
+
do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) );
|
241 |
+
//get settings from PHPMailer
|
242 |
+
$emailmethod=$phpmailer->Mailer;
|
243 |
+
$emailsendmail=$phpmailer->Sendmail;
|
244 |
+
$emailhost=$phpmailer->Host;
|
245 |
+
$emailhostport=$phpmailer->Port;
|
246 |
+
$emailsecure=$phpmailer->SMTPSecure;
|
247 |
+
$emailuser=$phpmailer->Username;
|
248 |
+
$emailpass=$phpmailer->Password;
|
249 |
+
}
|
250 |
+
} else {
|
251 |
+
$emailmethod = $job_object->job[ 'emailmethod' ];
|
252 |
+
$emailsendmail = $job_object->job[ 'emailsendmail' ];
|
253 |
+
$emailhost = $job_object->job[ 'emailhost' ];
|
254 |
+
$emailhostport = $job_object->job[ 'emailhostport' ];
|
255 |
+
$emailsecure = $job_object->job[ 'emailsecure' ];
|
256 |
+
$emailuser = $job_object->job[ 'emailuser' ];
|
257 |
+
$emailpass = BackWPup_Encryption::decrypt( $job_object->job[ 'emailpass' ] );
|
258 |
+
}
|
259 |
+
|
260 |
+
//Generate mail with Swift Mailer
|
261 |
+
if ( function_exists( 'mb_internal_encoding' ) && ( (int)ini_get( 'mbstring.func_overload' ) ) & 2 ) {
|
262 |
+
$mbEncoding = mb_internal_encoding();
|
263 |
+
mb_internal_encoding( 'ASCII' );
|
264 |
+
}
|
265 |
+
|
266 |
+
try {
|
267 |
+
//Set Temp dir for mailing
|
268 |
+
Swift_Preferences::getInstance()->setTempDir( untrailingslashit( BackWPup::get_plugin_data( 'TEMP' ) ) )->setCacheType( 'disk' );
|
269 |
+
// Create the Transport
|
270 |
+
if ( $emailmethod == 'smtp' ) {
|
271 |
+
$transport = Swift_SmtpTransport::newInstance( $emailhost, $emailhostport );
|
272 |
+
$transport->setUsername( $emailuser );
|
273 |
+
$transport->setPassword( $emailpass );
|
274 |
+
if ( $emailsecure == 'ssl' )
|
275 |
+
$transport->setEncryption( 'ssl' );
|
276 |
+
if ( $emailsecure == 'tls' )
|
277 |
+
$transport->setEncryption( 'tls' );
|
278 |
+
}
|
279 |
+
elseif ( $emailmethod == 'sendmail' ) {
|
280 |
+
$transport = Swift_SendmailTransport::newInstance( $emailsendmail );
|
281 |
+
}
|
282 |
+
else {
|
283 |
+
$job_object->need_free_memory( $job_object->backup_filesize * 8 );
|
284 |
+
$transport = Swift_MailTransport::newInstance();
|
285 |
+
}
|
286 |
+
// Create the Mailer using your created Transport
|
287 |
+
$emailer = Swift_Mailer::newInstance( $transport );
|
288 |
+
|
289 |
+
// Create a message
|
290 |
+
$message = Swift_Message::newInstance( sprintf( __( 'BackWPup archive from %1$s: %2$s', 'backwpup' ), date_i18n( 'd-M-Y H:i', $job_object->start_time, TRUE ), esc_attr($job_object->job[ 'name' ] ) ) );
|
291 |
+
$message->setFrom( array( $job_object->job[ 'emailsndemail' ] => $job_object->job[ 'emailsndemailname' ] ) );
|
292 |
+
$message->setTo( array( $job_object->job[ 'emailaddress' ] ) );
|
293 |
+
$message->setBody( sprintf( __( 'Backup archive: %s', 'backwpup' ), $job_object->backup_file ), 'text/plain', strtolower( get_bloginfo( 'charset' ) ) );
|
294 |
+
$message->attach( Swift_Attachment::fromPath( $job_object->backup_folder . $job_object->backup_file, $job_object->get_mime_type( $job_object->backup_folder . $job_object->backup_file ) ) );
|
295 |
+
// Send the message
|
296 |
+
$result = $emailer->send( $message );
|
297 |
+
}
|
298 |
+
catch ( Exception $e ) {
|
299 |
+
$job_object->log( 'Swift Mailer: ' . $e->getMessage(), E_USER_ERROR );
|
300 |
+
}
|
301 |
+
|
302 |
+
if ( isset( $mbEncoding ) ) {
|
303 |
+
mb_internal_encoding( $mbEncoding );
|
304 |
+
}
|
305 |
+
|
306 |
+
if ( isset( $result ) && ! $result ) {
|
307 |
+
$job_object->log( __( 'Error while sending email!', 'backwpup' ), E_USER_ERROR );
|
308 |
+
|
309 |
+
return FALSE;
|
310 |
+
}
|
311 |
+
else {
|
312 |
+
$job_object->substeps_done = 1;
|
313 |
+
$job_object->log( __( 'Email sent.', 'backwpup' ), E_USER_NOTICE );
|
314 |
+
|
315 |
+
return TRUE;
|
316 |
+
}
|
317 |
+
}
|
318 |
+
|
319 |
+
/**
|
320 |
+
* @param $job_object
|
321 |
+
* @return bool
|
322 |
+
*/
|
323 |
+
public function can_run( $job_object ) {
|
324 |
+
|
325 |
+
if ( empty( $job_object->job[ 'emailaddress' ] ) )
|
326 |
+
return FALSE;
|
327 |
+
|
328 |
+
if ( $job_object->job[ 'backuptype' ] != 'archive' )
|
329 |
+
return FALSE;
|
330 |
+
|
331 |
+
return TRUE;
|
332 |
+
}
|
333 |
+
|
334 |
+
|
335 |
+
/**
|
336 |
+
* sends test mail
|
337 |
+
*/
|
338 |
+
public function edit_ajax() {
|
339 |
+
|
340 |
+
check_ajax_referer( 'backwpup_ajax_nonce' );
|
341 |
+
|
342 |
+
//get mail settings
|
343 |
+
$emailmethod='mail';
|
344 |
+
$emailsendmail='';
|
345 |
+
$emailhost='';
|
346 |
+
$emailhostport='';
|
347 |
+
$emailsecure='';
|
348 |
+
$emailuser='';
|
349 |
+
$emailpass='';
|
350 |
+
|
351 |
+
if ( empty( $_POST[ 'emailmethod' ] ) ) {
|
352 |
+
//do so if i'm the wp_mail to get the settings
|
353 |
+
global $phpmailer;
|
354 |
+
// (Re)create it, if it's gone missing
|
355 |
+
if ( ! is_object( $phpmailer ) || ! $phpmailer instanceof PHPMailer ) {
|
356 |
+
require_once ABSPATH . WPINC . '/class-phpmailer.php';
|
357 |
+
require_once ABSPATH . WPINC . '/class-smtp.php';
|
358 |
+
$phpmailer = new PHPMailer( true );
|
359 |
+
}
|
360 |
+
//only if PHPMailer really used
|
361 |
+
if ( is_object( $phpmailer ) ) {
|
362 |
+
do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) );
|
363 |
+
//get settings from PHPMailer
|
364 |
+
$emailmethod=$phpmailer->Mailer;
|
365 |
+
$emailsendmail=$phpmailer->Sendmail;
|
366 |
+
$emailhost=$phpmailer->Host;
|
367 |
+
$emailhostport=$phpmailer->Port;
|
368 |
+
$emailsecure=$phpmailer->SMTPSecure;
|
369 |
+
$emailuser=$phpmailer->Username;
|
370 |
+
$emailpass=$phpmailer->Password;
|
371 |
+
}
|
372 |
+
} else {
|
373 |
+
$emailmethod = $_POST[ 'emailmethod' ];
|
374 |
+
$emailsendmail = $_POST[ 'emailsendmail' ];
|
375 |
+
$emailhost = $_POST[ 'emailhost' ];
|
376 |
+
$emailhostport = $_POST[ 'emailhostport' ];
|
377 |
+
$emailsecure = $_POST[ 'emailsecure' ];
|
378 |
+
$emailuser = $_POST[ 'emailuser' ];
|
379 |
+
$emailpass = BackWPup_Encryption::decrypt( $_POST[ 'emailpass' ] );
|
380 |
+
}
|
381 |
+
|
382 |
+
//Generate mail with Swift Mailer
|
383 |
+
|
384 |
+
if ( function_exists( 'mb_internal_encoding' ) && ( (int)ini_get( 'mbstring.func_overload' ) ) & 2 ) {
|
385 |
+
$mbEncoding = mb_internal_encoding();
|
386 |
+
mb_internal_encoding( 'ASCII' );
|
387 |
+
}
|
388 |
+
|
389 |
+
try {
|
390 |
+
//Set Temp dir for mailing
|
391 |
+
Swift_Preferences::getInstance()->setTempDir( untrailingslashit( BackWPup::get_plugin_data( 'TEMP' ) ) )->setCacheType( 'disk' );
|
392 |
+
// Create the Transport
|
393 |
+
if ( $emailmethod == 'smtp' ) {
|
394 |
+
$transport = Swift_SmtpTransport::newInstance( $emailhost, $emailhostport );
|
395 |
+
$transport->setUsername( $emailuser );
|
396 |
+
$transport->setPassword( $emailpass );
|
397 |
+
if ( $emailsecure == 'ssl' )
|
398 |
+
$transport->setEncryption( 'ssl' );
|
399 |
+
if ( $emailsecure == 'tls' )
|
400 |
+
$transport->setEncryption( 'tls' );
|
401 |
+
}
|
402 |
+
elseif ( $emailmethod == 'sendmail' ) {
|
403 |
+
$transport = Swift_SendmailTransport::newInstance( $emailsendmail );
|
404 |
+
}
|
405 |
+
else {
|
406 |
+
$transport = Swift_MailTransport::newInstance();
|
407 |
+
}
|
408 |
+
// Create the Mailer using your created Transport
|
409 |
+
$emailer = Swift_Mailer::newInstance( $transport );
|
410 |
+
|
411 |
+
// Create a message
|
412 |
+
$message = Swift_Message::newInstance( __( 'BackWPup archive sending TEST Message', 'backwpup' ) );
|
413 |
+
$message->setFrom( array( $_POST[ 'emailsndemail' ] => isset( $_POST[ 'emailsndemailname' ]) ? $_POST[ 'emailsndemailname' ] : '' ) );
|
414 |
+
$message->setTo( array( $_POST[ 'emailaddress' ] ) );
|
415 |
+
$message->setBody( __( 'If this message reaches your inbox, sending backup archives via email should work for you.', 'backwpup' ) );
|
416 |
+
// Send the message
|
417 |
+
$result = $emailer->send( $message );
|
418 |
+
}
|
419 |
+
catch ( Exception $e ) {
|
420 |
+
echo '<span id="emailsendtext" style="color:red;">Swift Mailer: ' . $e->getMessage() . '</span>';
|
421 |
+
}
|
422 |
+
|
423 |
+
if ( isset( $mbEncoding ) ) {
|
424 |
+
mb_internal_encoding( $mbEncoding );
|
425 |
+
}
|
426 |
+
|
427 |
+
if ( ! isset( $result ) || ! $result )
|
428 |
+
echo '<span id="emailsendtext" style="color:red;">' . __( 'Error while sending email!', 'backwpup' ) . '</span>';
|
429 |
+
else
|
430 |
+
echo '<span id="emailsendtext" style="color:green;">' . __( 'Email sent.', 'backwpup' ) . '</span>';
|
431 |
+
die();
|
432 |
+
}
|
433 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/class-destination-folder.php
CHANGED
@@ -1,230 +1,215 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
*
|
4 |
-
*/
|
5 |
-
class BackWPup_Destination_Folder extends BackWPup_Destinations {
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
$
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
</td>
|
49 |
-
</tr>
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
}
|
217 |
-
|
218 |
-
/**
|
219 |
-
* @param $job_object
|
220 |
-
* @return bool
|
221 |
-
*/
|
222 |
-
public function can_run( $job_object ) {
|
223 |
-
|
224 |
-
if ( empty( $job_object->job[ 'backupdir' ] ) || $job_object->job[ 'backupdir' ] == '/' )
|
225 |
-
return FALSE;
|
226 |
-
|
227 |
-
return TRUE;
|
228 |
-
}
|
229 |
-
|
230 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
*/
|
5 |
+
class BackWPup_Destination_Folder extends BackWPup_Destinations {
|
6 |
+
|
7 |
+
|
8 |
+
/**
|
9 |
+
* @return array
|
10 |
+
*/
|
11 |
+
public function option_defaults() {
|
12 |
+
|
13 |
+
$upload_dir = wp_upload_dir();
|
14 |
+
|
15 |
+
return array( 'maxbackups' => 15, 'backupdir' => trailingslashit( str_replace( '\\', '/',$upload_dir[ 'basedir' ] ) ) . 'backwpup-' . BackWPup::get_plugin_data( 'hash' ) . '-backups/', 'backupsyncnodelete' => TRUE );
|
16 |
+
}
|
17 |
+
|
18 |
+
|
19 |
+
/**
|
20 |
+
* @param $jobid
|
21 |
+
* @return void
|
22 |
+
* @internal param $main
|
23 |
+
*/
|
24 |
+
public function edit_tab( $jobid ) {
|
25 |
+
?>
|
26 |
+
<h3 class="title"><?php _e( 'Backup settings', 'backwpup' ); ?></h3>
|
27 |
+
<p></p>
|
28 |
+
<table class="form-table">
|
29 |
+
<tr>
|
30 |
+
<th scope="row"><label for="idbackupdir"><?php _e( 'Folder to store backups in', 'backwpup' ); ?></label></th>
|
31 |
+
<td>
|
32 |
+
<input name="backupdir" id="idbackupdir" type="text" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'backupdir' ) ); ?>" class="regular-text" />
|
33 |
+
</td>
|
34 |
+
</tr>
|
35 |
+
<tr>
|
36 |
+
<th scope="row"><?php _e( 'File Deletion', 'backwpup' ); ?></th>
|
37 |
+
<td>
|
38 |
+
<?php
|
39 |
+
if ( BackWPup_Option::get( $jobid, 'backuptype' ) == 'archive' ) {
|
40 |
+
?>
|
41 |
+
<label for="idmaxbackups"><input name="maxbackups" id="idmaxbackups" type="text" size="3" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'maxbackups' ) ) ;?>" class="small-text help-tip" title="<?php esc_attr_e( 'Oldest files will be deleted first. 0 = no deletion', 'backwpup' ); ?>" />
|
42 |
+
<?php _e( 'Number of files to keep in folder.', 'backwpup' ); ?></label>
|
43 |
+
<?php } else { ?>
|
44 |
+
<label for="idbackupsyncnodelete"><input class="checkbox" value="1"
|
45 |
+
type="checkbox" <?php checked( BackWPup_Option::get( $jobid, 'backupsyncnodelete' ), TRUE ); ?>
|
46 |
+
name="backupsyncnodelete" id="idbackupsyncnodelete" /> <?php _e( 'Do not delete files while syncing to destination!', 'backwpup' ); ?></label>
|
47 |
+
<?php } ?>
|
48 |
+
</td>
|
49 |
+
</tr>
|
50 |
+
</table>
|
51 |
+
<?php
|
52 |
+
}
|
53 |
+
|
54 |
+
|
55 |
+
/**
|
56 |
+
* @param $jobid
|
57 |
+
*/
|
58 |
+
public function edit_form_post_save( $jobid ) {
|
59 |
+
|
60 |
+
$_POST[ 'backupdir' ] = trailingslashit( str_replace( '//', '/', str_replace( '\\', '/', trim( stripslashes( $_POST[ 'backupdir' ] ) ) ) ) );
|
61 |
+
if ( $_POST[ 'backupdir' ][ 0 ] == '.' || ( $_POST[ 'backupdir' ][ 0 ] != '/' && ! preg_match( '#^[a-zA-Z]:/#', $_POST[ 'backupdir' ] ) ) )
|
62 |
+
$_POST[ 'backupdir' ] = trailingslashit( str_replace( '\\', '/', ABSPATH ) ) . $_POST[ 'backupdir' ];
|
63 |
+
if ( $_POST[ 'backupdir' ] == '/' )
|
64 |
+
$_POST[ 'backupdir' ] = '';
|
65 |
+
BackWPup_Option::update( $jobid, 'backupdir', $_POST[ 'backupdir' ] );
|
66 |
+
|
67 |
+
BackWPup_Option::update( $jobid, 'maxbackups', isset( $_POST[ 'maxbackups' ] ) ? (int)$_POST[ 'maxbackups' ] : 0 );
|
68 |
+
BackWPup_Option::update( $jobid, 'backupsyncnodelete', ( isset( $_POST[ 'backupsyncnodelete' ] ) && $_POST[ 'backupsyncnodelete' ] == 1 ) ? TRUE : FALSE );
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* @param $jobdest
|
73 |
+
* @param $backupfile
|
74 |
+
*/
|
75 |
+
public function file_delete( $jobdest, $backupfile ) {
|
76 |
+
|
77 |
+
if ( is_writeable( $backupfile ) && !is_dir( $backupfile ) && !is_link( $backupfile ) )
|
78 |
+
unlink( $backupfile );
|
79 |
+
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* @param $jobid
|
84 |
+
* @param $get_file
|
85 |
+
*/
|
86 |
+
public function file_download( $jobid, $get_file ) {
|
87 |
+
|
88 |
+
if ( is_readable( $get_file ) ) {
|
89 |
+
header( "Pragma: public" );
|
90 |
+
header( "Expires: 0" );
|
91 |
+
header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
|
92 |
+
header( "Content-Type: application/octet-stream" );
|
93 |
+
header( "Content-Disposition: attachment; filename=" . basename( $get_file ) . ";" );
|
94 |
+
header( "Content-Transfer-Encoding: binary" );
|
95 |
+
header( "Content-Length: " . filesize( $get_file ) );
|
96 |
+
@set_time_limit( 0 );
|
97 |
+
//chunked readfile
|
98 |
+
@ob_end_clean();
|
99 |
+
$handle = fopen( $get_file, 'rb' );
|
100 |
+
if ( $handle ) {
|
101 |
+
while ( ! feof( $handle ) ) {
|
102 |
+
echo fread( $handle, 20482048 ); //2MB chunkes
|
103 |
+
@ob_flush();
|
104 |
+
@flush();
|
105 |
+
}
|
106 |
+
fclose( $handle );
|
107 |
+
}
|
108 |
+
die();
|
109 |
+
}
|
110 |
+
else {
|
111 |
+
header( $_SERVER[ "SERVER_PROTOCOL" ] . " 404 Not Found" );
|
112 |
+
header( "Status: 404 Not Found" );
|
113 |
+
die();
|
114 |
+
}
|
115 |
+
}
|
116 |
+
|
117 |
+
/**
|
118 |
+
* @param $jobdest
|
119 |
+
* @return mixed
|
120 |
+
*/
|
121 |
+
public function file_get_list( $jobdest ) {
|
122 |
+
|
123 |
+
list( $jobid, $dest ) = explode( '_', $jobdest );
|
124 |
+
$filecounter = 0;
|
125 |
+
$files = array();
|
126 |
+
$backup_folder = BackWPup_Option::get( $jobid, 'backupdir' );
|
127 |
+
if ( is_dir( $backup_folder ) && $dir = opendir( $backup_folder ) ) { //make file list
|
128 |
+
while ( FALSE !== ( $file = readdir( $dir ) ) ) {
|
129 |
+
if ( in_array( $file, array( '.', '..', 'index.php', '.htaccess' ) ) || is_dir( $backup_folder . $file ) || is_link( $backup_folder . $file ) )
|
130 |
+
continue;
|
131 |
+
if ( is_readable( $backup_folder . $file ) ) {
|
132 |
+
//file list for backups
|
133 |
+
$files[ $filecounter ][ 'folder' ] = $backup_folder;
|
134 |
+
$files[ $filecounter ][ 'file' ] = $backup_folder . $file;
|
135 |
+
$files[ $filecounter ][ 'filename' ] = $file;
|
136 |
+
$files[ $filecounter ][ 'downloadurl' ] = add_query_arg( array(
|
137 |
+
'page' => 'backwpupbackups',
|
138 |
+
'action' => 'downloadfolder',
|
139 |
+
'file' => $backup_folder . $file,
|
140 |
+
'jobid' => $jobid
|
141 |
+
), network_admin_url( 'admin.php' ) );
|
142 |
+
$files[ $filecounter ][ 'filesize' ] = filesize( $backup_folder . $file );
|
143 |
+
$files[ $filecounter ][ 'time' ] = filemtime( $backup_folder . $file );
|
144 |
+
$filecounter ++;
|
145 |
+
}
|
146 |
+
}
|
147 |
+
@closedir( $dir );
|
148 |
+
}
|
149 |
+
|
150 |
+
return $files;
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* @param $job_object
|
155 |
+
* @return bool
|
156 |
+
*/
|
157 |
+
public function job_run_archive( &$job_object ) {
|
158 |
+
|
159 |
+
$job_object->substeps_todo = 1;
|
160 |
+
if ( ! empty( $job_object->job[ 'jobid' ] ) )
|
161 |
+
BackWPup_Option::update( $job_object->job[ 'jobid' ], 'lastbackupdownloadurl', add_query_arg( array(
|
162 |
+
'page' => 'backwpupbackups',
|
163 |
+
'action' => 'downloadfolder',
|
164 |
+
'file' => $job_object->backup_folder . $job_object->backup_file
|
165 |
+
), network_admin_url( 'admin.php' ) ) );
|
166 |
+
//Delete old Backupfiles
|
167 |
+
$backupfilelist = array();
|
168 |
+
$files = array();
|
169 |
+
if ( $dir = opendir( $job_object->backup_folder ) ) { //make file list
|
170 |
+
while ( FALSE !== ( $file = readdir( $dir ) ) ) {
|
171 |
+
if ( is_writeable( $job_object->backup_folder . $file ) && ! is_dir( $job_object->backup_folder . $file ) && ! is_link( $job_object->backup_folder . $file ) ) {
|
172 |
+
//list for deletion
|
173 |
+
if ( $job_object->is_backup_archive( $file ) )
|
174 |
+
$backupfilelist[ filemtime( $job_object->backup_folder . $file ) ] = $file;
|
175 |
+
}
|
176 |
+
}
|
177 |
+
@closedir( $dir );
|
178 |
+
}
|
179 |
+
if ( $job_object->job[ 'maxbackups' ] > 0 ) {
|
180 |
+
if ( count( $backupfilelist ) > $job_object->job[ 'maxbackups' ] ) {
|
181 |
+
ksort( $backupfilelist );
|
182 |
+
$numdeltefiles = 0;
|
183 |
+
while ( $file = array_shift( $backupfilelist ) ) {
|
184 |
+
if ( count( $backupfilelist ) < $job_object->job[ 'maxbackups' ] )
|
185 |
+
break;
|
186 |
+
unlink( $job_object->backup_folder . $file );
|
187 |
+
foreach ( $files as $key => $filedata ) {
|
188 |
+
if ( $filedata[ 'file' ] == $job_object->backup_folder . $file )
|
189 |
+
unset( $files[ $key ] );
|
190 |
+
}
|
191 |
+
$numdeltefiles ++;
|
192 |
+
}
|
193 |
+
if ( $numdeltefiles > 0 )
|
194 |
+
$job_object->log( sprintf( _n( 'One backup file deleted', '%d backup files deleted', $numdeltefiles, 'backwpup' ), $numdeltefiles ), E_USER_NOTICE );
|
195 |
+
}
|
196 |
+
}
|
197 |
+
|
198 |
+
$job_object->substeps_done ++;
|
199 |
+
|
200 |
+
return TRUE;
|
201 |
+
}
|
202 |
+
|
203 |
+
/**
|
204 |
+
* @param $job_object
|
205 |
+
* @return bool
|
206 |
+
*/
|
207 |
+
public function can_run( $job_object ) {
|
208 |
+
|
209 |
+
if ( empty( $job_object->job[ 'backupdir' ] ) || $job_object->job[ 'backupdir' ] == '/' )
|
210 |
+
return FALSE;
|
211 |
+
|
212 |
+
return TRUE;
|
213 |
+
}
|
214 |
+
|
215 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/class-destination-ftp.php
CHANGED
@@ -1,418 +1,410 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
*
|
4 |
-
*/
|
5 |
-
class BackWPup_Destination_Ftp extends BackWPup_Destinations {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @return
|
9 |
-
*/
|
10 |
-
public function
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
<
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
</td>
|
75 |
-
</tr>
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
BackWPup_Option::update( $id, '
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
}
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
return
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
if ( $loginok
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
$
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
$job_object->
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
$
|
333 |
-
|
334 |
-
|
335 |
-
$job_object->
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
if ( empty( $job_object->job[ 'ftppass' ] ) )
|
413 |
-
return FALSE;
|
414 |
-
|
415 |
-
return TRUE;
|
416 |
-
}
|
417 |
-
|
418 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
*/
|
5 |
+
class BackWPup_Destination_Ftp extends BackWPup_Destinations {
|
6 |
+
|
7 |
+
/**
|
8 |
+
* @return array
|
9 |
+
*/
|
10 |
+
public function option_defaults() {
|
11 |
+
|
12 |
+
return array( 'ftphost' => '', 'ftphostport' => 21, 'ftptimeout' => 90, 'ftpuser' => '', 'ftppass' => '', 'ftpdir' => trailingslashit( sanitize_title_with_dashes( get_bloginfo( 'name' ) ) ), 'ftpmaxbackups' => 15, 'ftppasv' => TRUE, 'ftpssl' => FALSE );
|
13 |
+
}
|
14 |
+
|
15 |
+
|
16 |
+
|
17 |
+
/**
|
18 |
+
* @param $jobid
|
19 |
+
*/
|
20 |
+
public function edit_tab( $jobid ) {
|
21 |
+
?>
|
22 |
+
|
23 |
+
<h3 class="title"><?php _e( 'FTP server and login', 'backwpup' ); ?></h3>
|
24 |
+
<p></p>
|
25 |
+
<table class="form-table">
|
26 |
+
<tr>
|
27 |
+
<th scope="row"><label for="idftphost"><?php _e( 'FTP server', 'backwpup' ); ?></label></th>
|
28 |
+
<td>
|
29 |
+
<input id="idftphost" name="ftphost" type="text" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'ftphost' ) );?>"
|
30 |
+
class="regular-text" autocomplete="off" />
|
31 |
+
<label for="idftphostport"><?php _e( 'Port:', 'backwpup' ); ?>
|
32 |
+
<input name="ftphostport" id="idftphostport" type="text" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'ftphostport' ) ); ?>"
|
33 |
+
class="small-text" /></label>
|
34 |
+
</td>
|
35 |
+
</tr>
|
36 |
+
<tr>
|
37 |
+
<th scope="row"><label for="idftpuser"><?php _e( 'Username', 'backwpup' ); ?></label></th>
|
38 |
+
<td>
|
39 |
+
<input id="idftpuser" name="ftpuser" type="text" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'ftpuser' ) ); ?>"
|
40 |
+
class="user regular-text" autocomplete="off" />
|
41 |
+
</td>
|
42 |
+
</tr>
|
43 |
+
<tr>
|
44 |
+
<th scope="row"><label for="idftppass"><?php _e( 'Password', 'backwpup' ); ?></label></th>
|
45 |
+
<td>
|
46 |
+
<input id="idftppass" name="ftppass" type="password" value="<?php echo esc_attr( BackWPup_Encryption::decrypt(BackWPup_Option::get( $jobid, 'ftppass' ) ) ); ?>"
|
47 |
+
class="password regular-text" autocomplete="off" />
|
48 |
+
</td>
|
49 |
+
</tr>
|
50 |
+
</table>
|
51 |
+
|
52 |
+
<h3 class="title"><?php _e( 'Backup settings', 'backwpup' ); ?></h3>
|
53 |
+
<p></p>
|
54 |
+
<table class="form-table">
|
55 |
+
<tr>
|
56 |
+
<th scope="row"><label for="idftpdir"><?php _e( 'Folder to store files in', 'backwpup' ); ?></label></th>
|
57 |
+
<td>
|
58 |
+
<input id="idftpdir" name="ftpdir" type="text" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'ftpdir' ) ); ?>" class="regular-text" />
|
59 |
+
</td>
|
60 |
+
</tr>
|
61 |
+
<tr>
|
62 |
+
<th scope="row"><?php _e( 'File Deletion', 'backwpup' ); ?></th>
|
63 |
+
<td>
|
64 |
+
<?php
|
65 |
+
if ( BackWPup_Option::get( $jobid, 'backuptype' ) == 'archive' ) {
|
66 |
+
?>
|
67 |
+
<label for="idftpmaxbackups"><input id="idftpmaxbackups" name="ftpmaxbackups" type="text" size="3" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'ftpmaxbackups' ) ); ?>" class="small-text help-tip" title="<?php esc_attr_e( 'Oldest files will be deleted first. 0 = no deletion', 'backwpup' ); ?>" />
|
68 |
+
<?php _e( 'Maximum number of files to keep in folder.', 'backwpup' ); ?></label>
|
69 |
+
<?php } else { ?>
|
70 |
+
<label for="idftpsyncnodelete"><input class="checkbox" value="1"
|
71 |
+
type="checkbox" <?php checked( BackWPup_Option::get( $jobid, 'ftpsyncnodelete' ), TRUE ); ?>
|
72 |
+
name="ftpsyncnodelete" id="idftpsyncnodelete" /> <?php _e( 'Do not delete files while syncing to destination!', 'backwpup' ); ?></label>
|
73 |
+
<?php } ?>
|
74 |
+
</td>
|
75 |
+
</tr>
|
76 |
+
</table>
|
77 |
+
|
78 |
+
<h3 class="title"><?php _e( 'FTP specific settings', 'backwpup' ); ?></h3>
|
79 |
+
<p></p>
|
80 |
+
<table class="form-table">
|
81 |
+
<tr>
|
82 |
+
<th scope="row"><label for="idftptimeout"><?php _e( 'Timeout for FTP connection', 'backwpup' ); ?></label></th>
|
83 |
+
<td>
|
84 |
+
<input id="idftptimeout" name="ftptimeout" type="text" size="3"
|
85 |
+
value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'ftptimeout' ) ); ?>"
|
86 |
+
class="small-text" /> <?php _e( 'seconds', 'backwpup' ); ?>
|
87 |
+
</td>
|
88 |
+
</tr>
|
89 |
+
<tr>
|
90 |
+
<th scope="row"><?php _e( 'SSL-FTP connection', 'backwpup' ); ?></th>
|
91 |
+
<td>
|
92 |
+
<label for="idftpssl"><input class="checkbox" value="1"
|
93 |
+
type="checkbox" <?php checked( BackWPup_Option::get( $jobid, 'ftpssl' ), TRUE ); ?>
|
94 |
+
id="idftpssl" name="ftpssl"<?php if ( ! function_exists( 'ftp_ssl_connect' ) ) echo " disabled=\"disabled\""; ?> /> <?php _e( 'Use explicit SSL-FTP connection.', 'backwpup' ); ?></label>
|
95 |
+
|
96 |
+
</td>
|
97 |
+
</tr>
|
98 |
+
<tr>
|
99 |
+
<th scope="row"><?php _e( 'FTP Passive Mode', 'backwpup' ); ?></th>
|
100 |
+
<td>
|
101 |
+
<label for="idftppasv"><input class="checkbox" value="1"
|
102 |
+
type="checkbox" <?php checked( BackWPup_Option::get( $jobid, 'ftppasv' ), TRUE ); ?>
|
103 |
+
name="ftppasv" id="idftppasv" /> <?php _e( 'Use FTP Passive Mode.', 'backwpup' ); ?></label>
|
104 |
+
</td>
|
105 |
+
</tr>
|
106 |
+
</table>
|
107 |
+
|
108 |
+
<?php
|
109 |
+
}
|
110 |
+
|
111 |
+
|
112 |
+
/**
|
113 |
+
* @param $id
|
114 |
+
*/
|
115 |
+
public function edit_form_post_save( $id ) {
|
116 |
+
|
117 |
+
$_POST[ 'ftphost' ] = str_replace( array( 'http://', 'ftp://' ), '', $_POST[ 'ftphost' ] );
|
118 |
+
BackWPup_Option::update( $id, 'ftphost', isset( $_POST[ 'ftphost' ] ) ? $_POST[ 'ftphost' ] : '' );
|
119 |
+
|
120 |
+
BackWPup_Option::update( $id, 'ftphostport', ! empty( $_POST[ 'ftphostport' ] ) ? (int)$_POST[ 'ftphostport' ] : 21 );
|
121 |
+
BackWPup_Option::update( $id, 'ftptimeout', ! empty( $_POST[ 'ftptimeout' ] ) ? (int)$_POST[ 'ftptimeout' ] : 90 );
|
122 |
+
BackWPup_Option::update( $id, 'ftpuser', isset( $_POST[ 'ftpuser' ] ) ? $_POST[ 'ftpuser' ] : '' );
|
123 |
+
BackWPup_Option::update( $id, 'ftppass', isset( $_POST[ 'ftppass' ] ) ? BackWPup_Encryption::encrypt( $_POST[ 'ftppass' ] ) : '' );
|
124 |
+
|
125 |
+
if ( ! empty( $_POST[ 'ftpdir' ] ) )
|
126 |
+
$_POST[ 'ftpdir' ] = trailingslashit( str_replace( '//', '/', str_replace( '\\', '/', trim( stripslashes( $_POST[ 'ftpdir' ] ) ) ) ) );
|
127 |
+
BackWPup_Option::update( $id, 'ftpdir', $_POST[ 'ftpdir' ] );
|
128 |
+
|
129 |
+
BackWPup_Option::update( $id, 'ftpmaxbackups', isset( $_POST[ 'ftpmaxbackups' ] ) ? (int)$_POST[ 'ftpmaxbackups' ] : 0 );
|
130 |
+
|
131 |
+
if ( function_exists( 'ftp_ssl_connect' ) )
|
132 |
+
BackWPup_Option::update( $id, 'ftpssl', ( isset( $_POST[ 'ftpssl' ] ) && $_POST[ 'ftpssl' ] == 1 ) ? TRUE : FALSE );
|
133 |
+
else
|
134 |
+
BackWPup_Option::update( $id, 'ftpssl', FALSE );
|
135 |
+
|
136 |
+
BackWPup_Option::update( $id, 'ftppasv', ( isset( $_POST[ 'ftppasv' ] ) && $_POST[ 'ftppasv' ] == 1 ) ? TRUE : FALSE );
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* @param $jobdest
|
141 |
+
* @param $backupfile
|
142 |
+
*/
|
143 |
+
public function file_delete( $jobdest, $backupfile ) {
|
144 |
+
|
145 |
+
$files = get_site_transient( 'backwpup_'. strtolower( $jobdest ), FALSE );
|
146 |
+
list( $jobid, $dest ) = explode( '_', $jobdest );
|
147 |
+
|
148 |
+
if ( BackWPup_Option::get( $jobid, 'ftphost' ) && BackWPup_Option::get( $jobid, 'ftpuser' ) && BackWPup_Option::get( $jobid, 'ftppass' ) && function_exists( 'ftp_connect' ) ) {
|
149 |
+
$ftp_conn_id = FALSE;
|
150 |
+
if ( function_exists( 'ftp_ssl_connect' ) && BackWPup_Option::get( $jobid, 'ftpssl' ) ) { //make SSL FTP connection
|
151 |
+
$ftp_conn_id = ftp_ssl_connect( BackWPup_Option::get( $jobid, 'ftphost' ), BackWPup_Option::get( $jobid, 'ftphostport' ), BackWPup_Option::get( $jobid, 'ftptimeout' ) );
|
152 |
+
}
|
153 |
+
elseif ( ! BackWPup_Option::get( $jobid, 'ftpssl' ) ) { //make normal FTP conection if SSL not work
|
154 |
+
$ftp_conn_id = ftp_connect( BackWPup_Option::get( $jobid, 'ftphost' ), BackWPup_Option::get( $jobid, 'ftphostport' ), BackWPup_Option::get( $jobid, 'ftptimeout' ) );
|
155 |
+
}
|
156 |
+
$loginok = FALSE;
|
157 |
+
if ( $ftp_conn_id ) {
|
158 |
+
//FTP Login
|
159 |
+
if ( @ftp_login( $ftp_conn_id, BackWPup_Option::get( $jobid, 'ftpuser' ), BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'ftppass' ) ) ) ) {
|
160 |
+
$loginok = TRUE;
|
161 |
+
}
|
162 |
+
else { //if PHP ftp login don't work use raw login
|
163 |
+
ftp_raw( $ftp_conn_id, 'USER ' . BackWPup_Option::get( $jobid, 'ftpuser' ) );
|
164 |
+
$return = ftp_raw( $ftp_conn_id, 'PASS ' . BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'ftppass' ) ) );
|
165 |
+
if ( substr( trim( $return[ 0 ] ), 0, 3 ) <= 400 )
|
166 |
+
$loginok = TRUE;
|
167 |
+
}
|
168 |
+
}
|
169 |
+
if ( $loginok ) {
|
170 |
+
ftp_pasv( $ftp_conn_id, BackWPup_Option::get( $jobid, 'ftppasv' ) );
|
171 |
+
ftp_delete( $ftp_conn_id, $backupfile );
|
172 |
+
//update file list
|
173 |
+
foreach ( $files as $key => $file ) {
|
174 |
+
if ( is_array( $file ) && $file[ 'file' ] == $backupfile )
|
175 |
+
unset( $files[ $key ] );
|
176 |
+
}
|
177 |
+
}
|
178 |
+
else {
|
179 |
+
BackWPup_Admin::message( __( 'FTP: Login failure!', 'backwpup' ), TRUE );
|
180 |
+
}
|
181 |
+
}
|
182 |
+
|
183 |
+
set_site_transient( 'backwpup_'. strtolower( $jobdest ), $files, 60 * 60 * 24 * 7 );
|
184 |
+
}
|
185 |
+
|
186 |
+
/**
|
187 |
+
* @param $jobdest
|
188 |
+
* @return mixed
|
189 |
+
*/
|
190 |
+
public function file_get_list( $jobdest ) {
|
191 |
+
|
192 |
+
return get_site_transient( 'backwpup_' . strtolower( $jobdest ) );
|
193 |
+
}
|
194 |
+
|
195 |
+
/**
|
196 |
+
* @param $job_object
|
197 |
+
* @return bool
|
198 |
+
*/
|
199 |
+
public function job_run_archive( &$job_object ) {
|
200 |
+
|
201 |
+
$job_object->substeps_todo = 2 + $job_object->backup_filesize;
|
202 |
+
if ( $job_object->steps_data[ $job_object->step_working ]['SAVE_STEP_TRY'] != $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] )
|
203 |
+
$job_object->log( sprintf( __( '%d. Try to send backup file to an FTP server …', 'backwpup' ), $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] ), E_USER_NOTICE );
|
204 |
+
|
205 |
+
if ( ! empty( $job_object->job[ 'ftpssl' ] ) ) { //make SSL FTP connection
|
206 |
+
if ( function_exists( 'ftp_ssl_connect' ) ) {
|
207 |
+
$ftp_conn_id = ftp_ssl_connect( $job_object->job[ 'ftphost' ], $job_object->job[ 'ftphostport' ], $job_object->job[ 'ftptimeout' ] );
|
208 |
+
if ( $ftp_conn_id )
|
209 |
+
$job_object->log( sprintf( __( 'Connected via explicit SSL-FTP to server: %s', 'backwpup' ), $job_object->job[ 'ftphost' ] . ':' . $job_object->job[ 'ftphostport' ] ), E_USER_NOTICE );
|
210 |
+
else {
|
211 |
+
$job_object->log( sprintf( __( 'Cannot connect via explicit SSL-FTP to server: %s', 'backwpup' ), $job_object->job[ 'ftphost' ] . ':' . $job_object->job[ 'ftphostport' ] ), E_USER_ERROR );
|
212 |
+
|
213 |
+
return FALSE;
|
214 |
+
}
|
215 |
+
}
|
216 |
+
else {
|
217 |
+
$job_object->log( __( 'PHP function to connect with explicit SSL-FTP to server does not exist!', 'backwpup' ), E_USER_ERROR );
|
218 |
+
|
219 |
+
return TRUE;
|
220 |
+
}
|
221 |
+
}
|
222 |
+
else { //make normal FTP connection if SSL not work
|
223 |
+
$ftp_conn_id = ftp_connect( $job_object->job[ 'ftphost' ], $job_object->job[ 'ftphostport' ], $job_object->job[ 'ftptimeout' ] );
|
224 |
+
if ( $ftp_conn_id )
|
225 |
+
$job_object->log( sprintf( __( 'Connected to FTP server: %s', 'backwpup' ), $job_object->job[ 'ftphost' ] . ':' . $job_object->job[ 'ftphostport' ] ), E_USER_NOTICE );
|
226 |
+
else {
|
227 |
+
$job_object->log( sprintf( __( 'Cannot connect to FTP server: %s', 'backwpup' ), $job_object->job[ 'ftphost' ] . ':' . $job_object->job[ 'ftphostport' ] ), E_USER_ERROR );
|
228 |
+
|
229 |
+
return FALSE;
|
230 |
+
}
|
231 |
+
}
|
232 |
+
|
233 |
+
//FTP Login
|
234 |
+
$job_object->log( sprintf( __( 'FTP client command: %s', 'backwpup' ), 'USER ' . $job_object->job[ 'ftpuser' ] ), E_USER_NOTICE );
|
235 |
+
if ( $loginok = @ftp_login( $ftp_conn_id, $job_object->job[ 'ftpuser' ], BackWPup_Encryption::decrypt( $job_object->job[ 'ftppass' ] ) ) ) {
|
236 |
+
$job_object->log( sprintf( __( 'FTP server response: %s', 'backwpup' ), 'User ' . $job_object->job[ 'ftpuser' ] . ' logged in.' ), E_USER_NOTICE );
|
237 |
+
}
|
238 |
+
else { //if PHP ftp login don't work use raw login
|
239 |
+
$return = ftp_raw( $ftp_conn_id, 'USER ' . $job_object->job[ 'ftpuser' ] );
|
240 |
+
$job_object->log( sprintf( __( 'FTP server reply: %s', 'backwpup' ), $return[ 0 ] ), E_USER_NOTICE );
|
241 |
+
if ( substr( trim( $return[ 0 ] ), 0, 3 ) <= 400 ) {
|
242 |
+
$job_object->log( sprintf( __( 'FTP client command: %s', 'backwpup' ), 'PASS *******' ), E_USER_NOTICE );
|
243 |
+
$return = ftp_raw( $ftp_conn_id, 'PASS ' . BackWPup_Encryption::decrypt( $job_object->job[ 'ftppass' ] ) );
|
244 |
+
$job_object->log( sprintf( __( 'FTP server reply: %s', 'backwpup' ), $return[ 0 ] ), E_USER_NOTICE );
|
245 |
+
if ( substr( trim( $return[ 0 ] ), 0, 3 ) <= 400 )
|
246 |
+
$loginok = TRUE;
|
247 |
+
}
|
248 |
+
}
|
249 |
+
if ( ! $loginok )
|
250 |
+
return FALSE;
|
251 |
+
|
252 |
+
//SYSTYPE
|
253 |
+
$job_object->log( sprintf( __( 'FTP client command: %s', 'backwpup' ), 'SYST' ), E_USER_NOTICE );
|
254 |
+
$systype = ftp_systype( $ftp_conn_id );
|
255 |
+
if ( $systype )
|
256 |
+
$job_object->log( sprintf( __( 'FTP server reply: %s', 'backwpup' ), $systype ), E_USER_NOTICE );
|
257 |
+
else
|
258 |
+
$job_object->log( sprintf( __( 'FTP server reply: %s', 'backwpup' ), __( 'Error getting SYSTYPE', 'backwpup' ) ), E_USER_ERROR );
|
259 |
+
|
260 |
+
//set actual ftp dir to ftp dir
|
261 |
+
if ( empty( $job_object->job[ 'ftpdir' ] ) )
|
262 |
+
$job_object->job[ 'ftpdir' ] = trailingslashit( ftp_pwd( $ftp_conn_id ) );
|
263 |
+
// prepend actual ftp dir if relative dir
|
264 |
+
if ( substr( $job_object->job[ 'ftpdir' ], 0, 1 ) != '/' )
|
265 |
+
$job_object->job[ 'ftpdir' ] = trailingslashit( ftp_pwd( $ftp_conn_id ) ) . $job_object->job[ 'ftpdir' ];
|
266 |
+
|
267 |
+
//test ftp dir and create it if not exists
|
268 |
+
if ( $job_object->job[ 'ftpdir' ] != '/' ) {
|
269 |
+
@ftp_chdir( $ftp_conn_id, '/' ); //go to root
|
270 |
+
$ftpdirs = explode( '/', trim( $job_object->job[ 'ftpdir' ], '/' ) );
|
271 |
+
foreach ( $ftpdirs as $ftpdir ) {
|
272 |
+
if ( empty( $ftpdir ) )
|
273 |
+
continue;
|
274 |
+
if ( ! @ftp_chdir( $ftp_conn_id, $ftpdir ) ) {
|
275 |
+
if ( @ftp_mkdir( $ftp_conn_id, $ftpdir ) ) {
|
276 |
+
$job_object->log( sprintf( __( 'FTP Folder "%s" created!', 'backwpup' ), $ftpdir ), E_USER_NOTICE );
|
277 |
+
ftp_chdir( $ftp_conn_id, $ftpdir );
|
278 |
+
}
|
279 |
+
else {
|
280 |
+
$job_object->log( sprintf( __( 'FTP Folder "%s" cannot be created!', 'backwpup' ), $ftpdir ), E_USER_ERROR );
|
281 |
+
|
282 |
+
return FALSE;
|
283 |
+
}
|
284 |
+
}
|
285 |
+
}
|
286 |
+
}
|
287 |
+
|
288 |
+
// Get the current working directory
|
289 |
+
$current_ftp_dir = trailingslashit( ftp_pwd( $ftp_conn_id ) );
|
290 |
+
if ( $job_object->substeps_done == 0 )
|
291 |
+
$job_object->log( sprintf( __( 'FTP current folder is: %s', 'backwpup' ), $current_ftp_dir ), E_USER_NOTICE );
|
292 |
+
|
293 |
+
//get file size to resume upload
|
294 |
+
@clearstatcache();
|
295 |
+
$job_object->substeps_done = @ftp_size( $ftp_conn_id, $job_object->job[ 'ftpdir' ] . $job_object->backup_file );
|
296 |
+
if ( $job_object->substeps_done == -1 )
|
297 |
+
$job_object->substeps_done = 0;
|
298 |
+
|
299 |
+
//PASV
|
300 |
+
$job_object->log( sprintf( __( 'FTP client command: %s', 'backwpup' ), 'PASV' ), E_USER_NOTICE );
|
301 |
+
if ( $job_object->job[ 'ftppasv' ] ) {
|
302 |
+
if ( ftp_pasv( $ftp_conn_id, TRUE ) )
|
303 |
+
$job_object->log( sprintf( __( 'FTP server reply: %s', 'backwpup' ), __( 'Entering passive mode', 'backwpup' ) ), E_USER_NOTICE );
|
304 |
+
else
|
305 |
+
$job_object->log( sprintf( __( 'FTP server reply: %s', 'backwpup' ), __( 'Cannot enter passive mode', 'backwpup' ) ), E_USER_WARNING );
|
306 |
+
}
|
307 |
+
else {
|
308 |
+
if ( ftp_pasv( $ftp_conn_id, FALSE ) )
|
309 |
+
$job_object->log( sprintf( __( 'FTP server reply: %s', 'backwpup' ), __( 'Entering normal mode', 'backwpup' ) ), E_USER_NOTICE );
|
310 |
+
else
|
311 |
+
$job_object->log( sprintf( __( 'FTP server reply: %s', 'backwpup' ), __( 'Cannot enter normal mode', 'backwpup' ) ), E_USER_WARNING );
|
312 |
+
}
|
313 |
+
|
314 |
+
if ( $job_object->substeps_done < $job_object->backup_filesize ) {
|
315 |
+
$job_object->log( __( 'Starting upload to FTP  …', 'backwpup' ), E_USER_NOTICE );
|
316 |
+
$fp = fopen( $job_object->backup_folder . $job_object->backup_file, 'r' );
|
317 |
+
//go to actual file pos
|
318 |
+
fseek( $fp, $job_object->substeps_done );
|
319 |
+
$ret = ftp_nb_fput( $ftp_conn_id, $current_ftp_dir . $job_object->backup_file, $fp, FTP_BINARY, $job_object->substeps_done );
|
320 |
+
while ( $ret == FTP_MOREDATA ) {
|
321 |
+
$job_object->substeps_done = ftell( $fp );
|
322 |
+
$job_object->update_working_data();
|
323 |
+
$job_object->do_restart_time();
|
324 |
+
$ret = ftp_nb_continue( $ftp_conn_id );
|
325 |
+
}
|
326 |
+
if ( $ret != FTP_FINISHED ) {
|
327 |
+
$job_object->log( __( 'Cannot transfer backup to FTP server!', 'backwpup' ), E_USER_ERROR );
|
328 |
+
|
329 |
+
return FALSE;
|
330 |
+
}
|
331 |
+
else {
|
332 |
+
$job_object->substeps_done = $job_object->backup_filesize + 1;
|
333 |
+
$job_object->log( sprintf( __( 'Backup transferred to FTP server: %s', 'backwpup' ), $current_ftp_dir . $job_object->backup_file ), E_USER_NOTICE );
|
334 |
+
if ( ! empty( $job_object->job[ 'jobid' ] ) )
|
335 |
+
BackWPup_Option::update( $job_object->job[ 'jobid' ], 'lastbackupdownloadurl', "ftp://" . $job_object->job[ 'ftpuser' ] . ":" . BackWPup_Encryption::decrypt( $job_object->job[ 'ftppass' ] ) . "@" . $job_object->job[ 'ftphost' ] . ':' . $job_object->job[ 'ftphostport' ] . $current_ftp_dir . $job_object->backup_file );
|
336 |
+
}
|
337 |
+
fclose( $fp );
|
338 |
+
}
|
339 |
+
|
340 |
+
$backupfilelist = array();
|
341 |
+
$filecounter = 0;
|
342 |
+
$files = array();
|
343 |
+
if ( $filelist = ftp_nlist( $ftp_conn_id, '.' ) ) {
|
344 |
+
foreach ( $filelist as $file ) {
|
345 |
+
if ( basename( $file ) != '.' && basename( $file ) != '..' ) {
|
346 |
+
if ( $job_object->is_backup_archive( $file ) ) {
|
347 |
+
$time = ftp_mdtm( $ftp_conn_id, $file );
|
348 |
+
if ( $time != - 1 )
|
349 |
+
$backupfilelist[ $time ] = basename( $file );
|
350 |
+
else
|
351 |
+
$backupfilelist[ ] = basename( $file );
|
352 |
+
}
|
353 |
+
$files[ $filecounter ][ 'folder' ] = 'ftp://' . $job_object->job[ 'ftphost' ] . ':' . $job_object->job[ 'ftphostport' ] . $job_object->job[ 'ftpdir' ];
|
354 |
+
$files[ $filecounter ][ 'file' ] = $job_object->job[ 'ftpdir' ] . basename( $file );
|
355 |
+
$files[ $filecounter ][ 'filename' ] = basename( $file );
|
356 |
+
$files[ $filecounter ][ 'downloadurl' ] = 'ftp://' . rawurlencode( $job_object->job[ 'ftpuser' ] ) . ':' . rawurlencode( BackWPup_Encryption::decrypt( $job_object->job[ 'ftppass' ] ) ) . '@' . $job_object->job[ 'ftphost' ] . ':' . $job_object->job[ 'ftphostport' ] . $job_object->job[ 'ftpdir' ] . basename( $file );
|
357 |
+
$files[ $filecounter ][ 'filesize' ] = ftp_size( $ftp_conn_id, $file );
|
358 |
+
$files[ $filecounter ][ 'time' ] = ftp_mdtm( $ftp_conn_id, $file );
|
359 |
+
$filecounter ++;
|
360 |
+
}
|
361 |
+
}
|
362 |
+
}
|
363 |
+
|
364 |
+
if ( ! empty( $job_object->job[ 'ftpmaxbackups' ] ) && $job_object->job[ 'ftpmaxbackups' ] > 0 ) { //Delete old backups
|
365 |
+
if ( count( $backupfilelist ) > $job_object->job[ 'ftpmaxbackups' ] ) {
|
366 |
+
ksort( $backupfilelist );
|
367 |
+
$numdeltefiles = 0;
|
368 |
+
while ( $file = array_shift( $backupfilelist ) ) {
|
369 |
+
if ( count( $backupfilelist ) < $job_object->job[ 'ftpmaxbackups' ] )
|
370 |
+
break;
|
371 |
+
if ( ftp_delete( $ftp_conn_id, $file ) ) { //delete files on ftp
|
372 |
+
foreach ( $files as $key => $filedata ) {
|
373 |
+
if ( $filedata[ 'file' ] == $job_object->job[ 'ftpdir' ] . $file )
|
374 |
+
unset( $files[ $key ] );
|
375 |
+
}
|
376 |
+
$numdeltefiles ++;
|
377 |
+
}
|
378 |
+
else
|
379 |
+
$job_object->log( sprintf( __( 'Cannot delete "%s" on FTP server!', 'backwpup' ), $job_object->job[ 'ftpdir' ] . $file ), E_USER_ERROR );
|
380 |
+
}
|
381 |
+
if ( $numdeltefiles > 0 )
|
382 |
+
$job_object->log( sprintf( _n( 'One file deleted on FTP server', '%d files deleted on FTP server', $numdeltefiles, 'backwpup' ), $numdeltefiles ), E_USER_NOTICE );
|
383 |
+
}
|
384 |
+
}
|
385 |
+
set_site_transient( 'backwpup_' . $job_object->job[ 'jobid' ] . '_ftp', $files, 60 * 60 * 24 * 7 );
|
386 |
+
|
387 |
+
ftp_close( $ftp_conn_id );
|
388 |
+
|
389 |
+
return TRUE;
|
390 |
+
}
|
391 |
+
|
392 |
+
/**
|
393 |
+
* @param $job_object
|
394 |
+
* @return bool
|
395 |
+
*/
|
396 |
+
public function can_run( $job_object ) {
|
397 |
+
|
398 |
+
if ( empty( $job_object->job[ 'ftphost' ] ) )
|
399 |
+
return FALSE;
|
400 |
+
|
401 |
+
if ( empty( $job_object->job[ 'ftpuser' ] ) )
|
402 |
+
return FALSE;
|
403 |
+
|
404 |
+
if ( empty( $job_object->job[ 'ftppass' ] ) )
|
405 |
+
return FALSE;
|
406 |
+
|
407 |
+
return TRUE;
|
408 |
+
}
|
409 |
+
|
410 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/class-destination-msazure.php
CHANGED
@@ -1,401 +1,433 @@
|
|
1 |
-
<?php
|
2 |
-
// Windows Azure SDK v0.3.1_2011-08
|
3 |
-
// http://www.windowsazure.com/en-us/develop/php/
|
4 |
-
// https://github.com/WindowsAzure/azure-sdk-for-php
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
<
|
46 |
-
<
|
47 |
-
|
48 |
-
|
49 |
-
<
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
<
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
if ( empty( $
|
239 |
-
$job_object->
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
$
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
$
|
256 |
-
|
257 |
-
|
258 |
-
$
|
259 |
-
$
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Windows Azure SDK v0.3.1_2011-08
|
3 |
+
// http://www.windowsazure.com/en-us/develop/php/
|
4 |
+
// https://github.com/WindowsAzure/azure-sdk-for-php
|
5 |
+
include_once BackWPup::get_plugin_data( 'PluginDir' ) . '/vendor/autoloader.php';
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Documentation: http://www.windowsazure.com/en-us/develop/php/how-to-guides/blob-service/
|
9 |
+
*/
|
10 |
+
class BackWPup_Destination_MSAzure extends BackWPup_Destinations {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* @return array
|
14 |
+
*/
|
15 |
+
public function option_defaults() {
|
16 |
+
|
17 |
+
return array( 'msazureaccname' => '', 'msazurekey' => '', 'msazurecontainer' => '', 'msazuredir' => trailingslashit( sanitize_file_name( get_bloginfo( 'name' ) ) ), 'msazuremaxbackups' => 15, 'msazuresyncnodelete' => TRUE );
|
18 |
+
}
|
19 |
+
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @param $jobid
|
23 |
+
*/
|
24 |
+
public function edit_tab( $jobid ) {
|
25 |
+
?>
|
26 |
+
<h3 class="title"><?php _e( 'MS Azure access keys', 'backwpup' ); ?></h3>
|
27 |
+
<p></p>
|
28 |
+
<table class="form-table">
|
29 |
+
<tr>
|
30 |
+
<th scope="row"><label for="msazureaccname"><?php _e( 'Account name', 'backwpup' ); ?></label></th>
|
31 |
+
<td>
|
32 |
+
<input id="msazureaccname" name="msazureaccname" type="text"
|
33 |
+
value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'msazureaccname' ) );?>" class="regular-text" autocomplete="off" />
|
34 |
+
</td>
|
35 |
+
</tr>
|
36 |
+
<tr>
|
37 |
+
<th scope="row"><label for="msazurekey"><?php _e( 'Access key', 'backwpup' ); ?></label></th>
|
38 |
+
<td>
|
39 |
+
<input id="msazurekey" name="msazurekey" type="password"
|
40 |
+
value="<?php echo esc_attr( BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'msazurekey' ) ) );?>" class="regular-text" autocomplete="off" />
|
41 |
+
</td>
|
42 |
+
</tr>
|
43 |
+
</table>
|
44 |
+
|
45 |
+
<h3 class="title"><?php _e( 'Blob container', 'backwpup' ); ?></h3>
|
46 |
+
<p></p>
|
47 |
+
<table class="form-table">
|
48 |
+
<tr>
|
49 |
+
<th scope="row"><label for="msazurecontainerselected"><?php _e( 'Container selection', 'backwpup' ); ?></label></th>
|
50 |
+
<td>
|
51 |
+
<input id="msazurecontainerselected" name="msazurecontainerselected" type="hidden" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'msazurecontainer' ) );?>" />
|
52 |
+
<?php if ( BackWPup_Option::get( $jobid, 'msazureaccname' ) && BackWPup_Option::get( $jobid, 'msazurekey' ) ) $this->edit_ajax( array(
|
53 |
+
'msazurehost' => BackWPup_Option::get( $jobid, 'msazurehost' ),
|
54 |
+
'msazureaccname' => BackWPup_Option::get( $jobid, 'msazureaccname' ),
|
55 |
+
'msazurekey' => BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'msazurekey' ) ),
|
56 |
+
'msazureselected' => BackWPup_Option::get( $jobid, 'msazurecontainer' )
|
57 |
+
) ); ?>
|
58 |
+
</td>
|
59 |
+
</tr>
|
60 |
+
<tr>
|
61 |
+
<th scope="row"><label for="newmsazurecontainer"><?php _e( 'Create a new container', 'backwpup' ); ?></label></th>
|
62 |
+
<td>
|
63 |
+
<input id="newmsazurecontainer" name="newmsazurecontainer" type="text" value="" class="small-text" autocomplete="off" />
|
64 |
+
</td>
|
65 |
+
</tr>
|
66 |
+
</table>
|
67 |
+
|
68 |
+
<h3 class="title"><?php _e( 'Backup settings', 'backwpup' ); ?></h3>
|
69 |
+
<p></p>
|
70 |
+
<table class="form-table">
|
71 |
+
<tr>
|
72 |
+
<th scope="row"><label for="idmsazuredir"><?php _e( 'Folder in container', 'backwpup' ); ?></label></th>
|
73 |
+
<td>
|
74 |
+
<input id="idmsazuredir" name="msazuredir" type="text" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'msazuredir' ) ); ?>" class="regular-text" />
|
75 |
+
</td>
|
76 |
+
</tr>
|
77 |
+
<tr>
|
78 |
+
<th scope="row"><?php _e( 'File deletion', 'backwpup' ); ?></th>
|
79 |
+
<td>
|
80 |
+
<?php
|
81 |
+
if ( BackWPup_Option::get( $jobid, 'backuptype' ) == 'archive' ) {
|
82 |
+
?>
|
83 |
+
<label for="idmsazuremaxbackups"><input id="idmsazuremaxbackups" name="msazuremaxbackups" type="text" size="3" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'msazuremaxbackups' ) );?>" class="small-text help-tip" title="<?php esc_attr_e( 'Oldest files will be deleted first. 0 = no deletion', 'backwpup' );?>" />
|
84 |
+
<?php _e( 'Number of files to keep in folder.', 'backwpup' ); ?></label>
|
85 |
+
<?php } else { ?>
|
86 |
+
<label for="idmsazuresyncnodelete"><input class="checkbox" value="1"
|
87 |
+
type="checkbox" <?php checked( BackWPup_Option::get( $jobid, 'msazuresyncnodelete' ), TRUE ); ?>
|
88 |
+
name="msazuresyncnodelete" id="idmsazuresyncnodelete" /> <?php _e( 'Do not delete files while syncing to destination!', 'backwpup' ); ?></label>
|
89 |
+
<?php } ?>
|
90 |
+
</td>
|
91 |
+
</tr>
|
92 |
+
</table>
|
93 |
+
<?php
|
94 |
+
}
|
95 |
+
|
96 |
+
|
97 |
+
/**
|
98 |
+
* @param $jobid
|
99 |
+
* @return string
|
100 |
+
*/
|
101 |
+
public function edit_form_post_save( $jobid ) {
|
102 |
+
|
103 |
+
BackWPup_Option::update( $jobid, 'msazureaccname', isset( $_POST[ 'msazureaccname' ] ) ? $_POST[ 'msazureaccname' ] : '' );
|
104 |
+
BackWPup_Option::update( $jobid, 'msazurekey', isset( $_POST[ 'msazurekey' ] ) ? BackWPup_Encryption::encrypt( $_POST[ 'msazurekey' ] ) : '' );
|
105 |
+
BackWPup_Option::update( $jobid, 'msazurecontainer', isset( $_POST[ 'msazurecontainer' ] ) ? $_POST[ 'msazurecontainer' ] : '' );
|
106 |
+
|
107 |
+
$_POST[ 'msazuredir' ] = trailingslashit( str_replace( '//', '/', str_replace( '\\', '/', trim( stripslashes( $_POST[ 'msazuredir' ] ) ) ) ) );
|
108 |
+
if ( substr( $_POST[ 'msazuredir' ], 0, 1 ) == '/' )
|
109 |
+
$_POST[ 'msazuredir' ] = substr( $_POST[ 'msazuredir' ], 1 );
|
110 |
+
if ( $_POST[ 'msazuredir' ] == '/' )
|
111 |
+
$_POST[ 'msazuredir' ] = '';
|
112 |
+
BackWPup_Option::update( $jobid, 'msazuredir', $_POST[ 'msazuredir' ] );
|
113 |
+
|
114 |
+
BackWPup_Option::update( $jobid, 'msazuremaxbackups', isset( $_POST[ 'msazuremaxbackups' ] ) ? (int)$_POST[ 'msazuremaxbackups' ] : 0 );
|
115 |
+
BackWPup_Option::update( $jobid, 'msazuresyncnodelete', ( isset( $_POST[ 'msazuresyncnodelete' ] ) && $_POST[ 'msazuresyncnodelete' ] == 1 ) ? TRUE : FALSE );
|
116 |
+
|
117 |
+
//create a new container
|
118 |
+
if ( ! empty( $_POST[ 'newmsazurecontainer' ] ) && ! empty( $_POST[ 'msazureaccname' ] ) && ! empty( $_POST[ 'msazurekey' ] ) ) {
|
119 |
+
try {
|
120 |
+
$blobRestProxy = WindowsAzure\Common\ServicesBuilder::getInstance()->createBlobService( 'DefaultEndpointsProtocol=https;AccountName=' . $_POST[ 'msazureaccname' ] . ';AccountKey=' . $_POST[ 'msazurekey' ] );
|
121 |
+
$container_options = new WindowsAzure\Blob\Models\CreateContainerOptions();
|
122 |
+
$container_options->setPublicAccess( WindowsAzure\Blob\Models\PublicAccessType::NONE );
|
123 |
+
$blobRestProxy->createContainer( $_POST[ 'newmsazurecontainer' ], $container_options );
|
124 |
+
BackWPup_Option::update( $jobid, 'msazurecontainer', $_POST[ 'newmsazurecontainer' ] );
|
125 |
+
BackWPup_Admin::message( sprintf( __( 'MS Azure container "%s" created.', 'backwpup' ), $_POST[ 'newmsazurecontainer' ] ) );
|
126 |
+
}
|
127 |
+
catch ( Exception $e ) {
|
128 |
+
BackWPup_Admin::message( sprintf( __( 'MS Azure container create: %s', 'backwpup' ), $e->getMessage() ), TRUE );
|
129 |
+
}
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
+
|
134 |
+
/**
|
135 |
+
* @param $jobdest
|
136 |
+
* @param $backupfile
|
137 |
+
*/
|
138 |
+
public function file_delete( $jobdest, $backupfile ) {
|
139 |
+
|
140 |
+
$files = get_site_transient( 'backwpup_'. strtolower( $jobdest ), FALSE );
|
141 |
+
list( $jobid, $dest ) = explode( '_', $jobdest );
|
142 |
+
|
143 |
+
if ( BackWPup_Option::get( $jobid, 'msazureaccname' ) && BackWPup_Option::get( $jobid, 'msazurekey' ) && BackWPup_Option::get( $jobid, 'msazurecontainer' ) ) {
|
144 |
+
try {
|
145 |
+
$blobRestProxy = WindowsAzure\Common\ServicesBuilder::getInstance()->createBlobService( 'DefaultEndpointsProtocol=https;AccountName=' . BackWPup_Option::get( $jobid, 'msazureaccname' ) . ';AccountKey=' . BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'msazurekey' ) ) );
|
146 |
+
$blobRestProxy->deleteBlob( BackWPup_Option::get( $jobid, 'msazurecontainer' ), $backupfile );
|
147 |
+
//update file list
|
148 |
+
foreach ( $files as $key => $file ) {
|
149 |
+
if ( is_array( $file ) && $file[ 'file' ] == $backupfile )
|
150 |
+
unset( $files[ $key ] );
|
151 |
+
}
|
152 |
+
}
|
153 |
+
catch ( Exception $e ) {
|
154 |
+
BackWPup_Admin::message( 'MS AZURE: ' . $e->getMessage(), TRUE );
|
155 |
+
}
|
156 |
+
}
|
157 |
+
|
158 |
+
set_site_transient( 'backwpup_' . strtolower( $jobdest ), $files, 60 * 60 * 24 * 7 );
|
159 |
+
}
|
160 |
+
|
161 |
+
/**
|
162 |
+
* @param $jobid
|
163 |
+
* @param $get_file
|
164 |
+
*/
|
165 |
+
public function file_download( $jobid, $get_file ) {
|
166 |
+
try {
|
167 |
+
$blobRestProxy = WindowsAzure\Common\ServicesBuilder::getInstance()->createBlobService( 'DefaultEndpointsProtocol=https;AccountName=' . BackWPup_Option::get( $jobid, 'msazureaccname' ) . ';AccountKey=' . BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'msazurekey' ) ) );
|
168 |
+
$blob = $blobRestProxy->getBlob( BackWPup_Option::get( $jobid, 'msazurecontainer' ), $get_file );
|
169 |
+
header( "Pragma: public" );
|
170 |
+
header( "Expires: 0" );
|
171 |
+
header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
|
172 |
+
header( "Content-Type: application/octet-stream" );
|
173 |
+
header( "Content-Disposition: attachment; filename=" . basename( $get_file ) . ";" );
|
174 |
+
header( "Content-Transfer-Encoding: binary" );
|
175 |
+
header( "Content-Length: " . $blob->getProperties()->getContentLength() );
|
176 |
+
@set_time_limit( 0 );
|
177 |
+
fpassthru( $blob->getContentStream() );
|
178 |
+
die();
|
179 |
+
}
|
180 |
+
catch ( Exception $e ) {
|
181 |
+
die( $e->getMessage() );
|
182 |
+
}
|
183 |
+
}
|
184 |
+
|
185 |
+
/**
|
186 |
+
* @param $jobdest
|
187 |
+
* @return mixed
|
188 |
+
*/
|
189 |
+
public function file_get_list( $jobdest ) {
|
190 |
+
return get_site_transient( 'backwpup_' . $jobdest );
|
191 |
+
}
|
192 |
+
|
193 |
+
/**
|
194 |
+
* @param $job_object
|
195 |
+
* @return bool
|
196 |
+
*/
|
197 |
+
public function job_run_archive( &$job_object ) {
|
198 |
+
|
199 |
+
$job_object->substeps_todo = $job_object->backup_filesize + 2;
|
200 |
+
|
201 |
+
if ( $job_object->steps_data[ $job_object->step_working ]['SAVE_STEP_TRY'] != $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] )
|
202 |
+
$job_object->log( sprintf( __( '%d. Try sending backup to a Microsoft Azure (Blob) …', 'backwpup' ), $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] ), E_USER_NOTICE );
|
203 |
+
|
204 |
+
try {
|
205 |
+
|
206 |
+
/* @var $blobRestProxy WindowsAzure\Blob\BlobRestProxy */ //https causes an error SSL: Connection reset by peer that is why http
|
207 |
+
$blobRestProxy = WindowsAzure\Common\ServicesBuilder::getInstance()->createBlobService('DefaultEndpointsProtocol=http;AccountName=' . $job_object->job[ 'msazureaccname' ] . ';AccountKey=' . BackWPup_Encryption::decrypt( $job_object->job[ 'msazurekey' ] ) );
|
208 |
+
|
209 |
+
|
210 |
+
if ( $job_object->steps_data[ $job_object->step_working ]['SAVE_STEP_TRY'] != $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] ) {
|
211 |
+
|
212 |
+
//test vor existing container
|
213 |
+
$containers = $blobRestProxy->listContainers()->getContainers();
|
214 |
+
|
215 |
+
$container_url = '';
|
216 |
+
foreach( $containers as $container ) {
|
217 |
+
if ( $container->getName() == $job_object->job[ 'msazurecontainer' ] ) {
|
218 |
+
$container_url = $container->getUrl();
|
219 |
+
break;
|
220 |
+
}
|
221 |
+
}
|
222 |
+
|
223 |
+
if ( empty( $container_url ) ) {
|
224 |
+
$job_object->log( sprintf( __( 'MS Azure container "%s" does not exist!', 'backwpup'), $job_object->job[ 'msazurecontainer' ] ), E_USER_ERROR );
|
225 |
+
|
226 |
+
return TRUE;
|
227 |
+
} else {
|
228 |
+
$job_object->log( sprintf( __( 'Connected to MS Azure container "%s".', 'backwpup'), $job_object->job[ 'msazurecontainer' ] ), E_USER_NOTICE );
|
229 |
+
}
|
230 |
+
|
231 |
+
$job_object->log( __( 'Starting upload to MS Azure …', 'backwpup' ), E_USER_NOTICE );
|
232 |
+
}
|
233 |
+
|
234 |
+
//Prepare Upload
|
235 |
+
$file_handel = fopen( $job_object->backup_folder . $job_object->backup_file, 'rb' );
|
236 |
+
fseek( $file_handel, $job_object->substeps_done );
|
237 |
+
|
238 |
+
if ( empty( $job_object->steps_data[ $job_object->step_working ][ 'BlockList' ] ) )
|
239 |
+
$job_object->steps_data[ $job_object->step_working ][ 'BlockList' ] = array();
|
240 |
+
|
241 |
+
while ( ! feof( $file_handel ) ) {
|
242 |
+
$chunk_upload_start = microtime( TRUE );
|
243 |
+
$block_count = count( $job_object->steps_data[ $job_object->step_working ][ 'BlockList' ] ) + 1;
|
244 |
+
$data = fread( $file_handel, 1048576 * 4 ); //4MB
|
245 |
+
$block_id = md5( $data ) . str_pad( $block_count, 6, "0", STR_PAD_LEFT );
|
246 |
+
$blobRestProxy->createBlobBlock( $job_object->job[ 'msazurecontainer' ], $job_object->job[ 'msazuredir' ] . $job_object->backup_file, $block_id, $data );
|
247 |
+
$job_object->steps_data[ $job_object->step_working ][ 'BlockList' ][] = $block_id;
|
248 |
+
$chunk_upload_time = microtime( TRUE ) - $chunk_upload_start;
|
249 |
+
$job_object->substeps_done = $job_object->substeps_done + strlen( $data );
|
250 |
+
$time_remaining = $job_object->do_restart_time();
|
251 |
+
if ( $time_remaining < $chunk_upload_time )
|
252 |
+
$job_object->do_restart_time( TRUE );
|
253 |
+
$job_object->update_working_data();
|
254 |
+
}
|
255 |
+
fclose( $file_handel );
|
256 |
+
|
257 |
+
//crate blog list
|
258 |
+
$blocklist = new WindowsAzure\Blob\Models\BlockList();
|
259 |
+
foreach( $job_object->steps_data[ $job_object->step_working ][ 'BlockList' ] as $block_id )
|
260 |
+
$blocklist->addUncommittedEntry( $block_id );
|
261 |
+
unset( $job_object->steps_data[ $job_object->step_working ][ 'BlockList' ] );
|
262 |
+
//Commit Blocks
|
263 |
+
$blobRestProxy->commitBlobBlocks( $job_object->job[ 'msazurecontainer' ], $job_object->job[ 'msazuredir' ] . $job_object->backup_file, $blocklist->getEntries() );
|
264 |
+
|
265 |
+
$job_object->substeps_done ++;
|
266 |
+
$job_object->log( sprintf( __( 'Backup transferred to %s', 'backwpup' ), $container_url . '/' . $job_object->job[ 'msazuredir' ] . $job_object->backup_file ), E_USER_NOTICE );
|
267 |
+
if ( !empty( $job_object->job[ 'jobid' ] ) )
|
268 |
+
BackWPup_Option::update( $job_object->job[ 'jobid' ] , 'lastbackupdownloadurl', network_admin_url( 'admin.php' ) . '?page=backwpupbackups&action=downloadmsazure&file=' . $job_object->job[ 'msazuredir' ] . $job_object->backup_file . '&jobid=' . $job_object->job[ 'jobid' ] );
|
269 |
+
}
|
270 |
+
catch ( Exception $e ) {
|
271 |
+
$job_object->log( E_USER_ERROR, sprintf( __( 'Microsoft Azure API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
272 |
+
$job_object->substeps_done = 0;
|
273 |
+
unset( $job_object->steps_data[ $job_object->step_working ][ 'BlockList' ] );
|
274 |
+
if ( is_resource( $file_handel ) )
|
275 |
+
fclose( $file_handel );
|
276 |
+
|
277 |
+
return FALSE;
|
278 |
+
}
|
279 |
+
|
280 |
+
|
281 |
+
try {
|
282 |
+
|
283 |
+
$backupfilelist = array();
|
284 |
+
$filecounter = 0;
|
285 |
+
$files = array();
|
286 |
+
$blob_options = new WindowsAzure\Blob\Models\ListBlobsOptions();
|
287 |
+
$blob_options->setPrefix( $job_object->job[ 'msazuredir' ] );
|
288 |
+
$blobs = $blobRestProxy->listBlobs( $job_object->job[ 'msazurecontainer' ], $blob_options )->getBlobs();
|
289 |
+
|
290 |
+
if ( is_array( $blobs ) ) {
|
291 |
+
foreach ( $blobs as $blob ) {
|
292 |
+
$file = basename( $blob->getName() );
|
293 |
+
if ( $job_object->is_backup_archive( $file ) )
|
294 |
+
$backupfilelist[ $blob->getProperties()->getLastModified()->getTimestamp() ] = $file;
|
295 |
+
$files[ $filecounter ][ 'folder' ] = $container_url . "/" . dirname( $blob->getName() ) . "/";
|
296 |
+
$files[ $filecounter ][ 'file' ] = $blob->getName();
|
297 |
+
$files[ $filecounter ][ 'filename' ] = basename( $blob->getName() );
|
298 |
+
$files[ $filecounter ][ 'downloadurl' ] = network_admin_url( 'admin.php' ) . '?page=backwpupbackups&action=downloadmsazure&file=' . $blob->getName() . '&jobid=' . $job_object->job[ 'jobid' ];
|
299 |
+
$files[ $filecounter ][ 'filesize' ] = $blob->getProperties()->getContentLength();
|
300 |
+
$files[ $filecounter ][ 'time' ] = $blob->getProperties()->getLastModified()->getTimestamp() + ( get_option( 'gmt_offset' ) * 3600 );
|
301 |
+
$filecounter ++;
|
302 |
+
}
|
303 |
+
}
|
304 |
+
// Delete old backups
|
305 |
+
if ( ! empty ($job_object->job[ 'msazuremaxbackups' ] ) && $job_object->job[ 'msazuremaxbackups' ] > 0 ) {
|
306 |
+
if ( count( $backupfilelist ) > $job_object->job[ 'msazuremaxbackups' ] ) {
|
307 |
+
ksort( $backupfilelist );
|
308 |
+
$numdeltefiles = 0;
|
309 |
+
while ( $file = array_shift( $backupfilelist ) ) {
|
310 |
+
if ( count( $backupfilelist ) < $job_object->job[ 'msazuremaxbackups' ] )
|
311 |
+
break;
|
312 |
+
$blobRestProxy->deleteBlob( $job_object->job[ 'msazurecontainer' ], $job_object->job[ 'msazuredir' ] . $file );
|
313 |
+
foreach ( $files as $key => $filedata ) {
|
314 |
+
if ( $filedata[ 'file' ] == $job_object->job[ 'msazuredir' ] . $file )
|
315 |
+
unset( $files[ $key ] );
|
316 |
+
}
|
317 |
+
$numdeltefiles ++;
|
318 |
+
}
|
319 |
+
if ( $numdeltefiles > 0 )
|
320 |
+
$job_object->log( sprintf( _n( 'One file deleted on Microsoft Azure container.', '%d files deleted on Microsoft Azure container.', $numdeltefiles, 'backwpup' ), $numdeltefiles ), E_USER_NOTICE );
|
321 |
+
|
322 |
+
}
|
323 |
+
}
|
324 |
+
set_site_transient( 'backwpup_' . $job_object->job[ 'jobid' ] . '_msazure', $files, 60 * 60 * 24 * 7 );
|
325 |
+
}
|
326 |
+
catch ( Exception $e ) {
|
327 |
+
$job_object->log( E_USER_ERROR, sprintf( __( 'Microsoft Azure API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
328 |
+
|
329 |
+
return FALSE;
|
330 |
+
}
|
331 |
+
|
332 |
+
$job_object->substeps_done = $job_object->backup_filesize + 2;
|
333 |
+
|
334 |
+
return TRUE;
|
335 |
+
}
|
336 |
+
|
337 |
+
/**
|
338 |
+
* @param $job_object
|
339 |
+
* @return bool
|
340 |
+
*/
|
341 |
+
public function can_run( $job_object ) {
|
342 |
+
|
343 |
+
if ( empty( $job_object->job[ 'msazureaccname' ] ) )
|
344 |
+
return FALSE;
|
345 |
+
|
346 |
+
if ( empty( $job_object->job[ 'msazurekey' ]) )
|
347 |
+
return FALSE;
|
348 |
+
|
349 |
+
if ( empty( $job_object->job[ 'msazurecontainer' ] ) )
|
350 |
+
return FALSE;
|
351 |
+
|
352 |
+
return TRUE;
|
353 |
+
}
|
354 |
+
|
355 |
+
/**
|
356 |
+
*
|
357 |
+
*/
|
358 |
+
public function edit_inline_js() {
|
359 |
+
//<script type="text/javascript">
|
360 |
+
?>
|
361 |
+
function msazuregetcontainer() {
|
362 |
+
var data = {
|
363 |
+
action: 'backwpup_dest_msazure',
|
364 |
+
msazureaccname: $('#msazureaccname').val(),
|
365 |
+
msazurekey: $('#msazurekey').val(),
|
366 |
+
msazureselected: $('#msazurecontainerselected').val(),
|
367 |
+
_ajax_nonce: $('#backwpupajaxnonce').val()
|
368 |
+
};
|
369 |
+
$.post(ajaxurl, data, function(response) {
|
370 |
+
$('#msazurecontainererror').remove();
|
371 |
+
$('#msazurecontainer').remove();
|
372 |
+
$('#msazurecontainerselected').after(response);
|
373 |
+
});
|
374 |
+
}
|
375 |
+
$('#msazureaccname').change(function() {msazuregetcontainer();});
|
376 |
+
$('#msazurekey').change(function() {msazuregetcontainer();});
|
377 |
+
<?php
|
378 |
+
}
|
379 |
+
|
380 |
+
/**
|
381 |
+
* @param string $args
|
382 |
+
*/
|
383 |
+
public function edit_ajax( $args = '' ) {
|
384 |
+
|
385 |
+
$error = '';
|
386 |
+
|
387 |
+
if ( is_array( $args ) ) {
|
388 |
+
$ajax = FALSE;
|
389 |
+
}
|
390 |
+
else {
|
391 |
+
if ( ! current_user_can( 'backwpup_jobs_edit' ) )
|
392 |
+
wp_die( -1 );
|
393 |
+
check_ajax_referer( 'backwpup_ajax_nonce' );
|
394 |
+
$args[ 'msazureaccname' ] = $_POST[ 'msazureaccname' ];
|
395 |
+
$args[ 'msazurekey' ] = $_POST[ 'msazurekey' ];
|
396 |
+
$args[ 'msazureselected' ] = $_POST[ 'msazureselected' ];
|
397 |
+
$ajax = TRUE;
|
398 |
+
}
|
399 |
+
echo '<span id="msazurecontainererror" style="color:red;">';
|
400 |
+
|
401 |
+
if ( ! empty( $args[ 'msazureaccname' ] ) && ! empty( $args[ 'msazurekey' ] ) ) {
|
402 |
+
try {
|
403 |
+
$blobRestProxy = WindowsAzure\Common\ServicesBuilder::getInstance()->createBlobService( 'DefaultEndpointsProtocol=https;AccountName=' . $args[ 'msazureaccname' ] . ';AccountKey=' . BackWPup_Encryption::decrypt( $args[ 'msazurekey' ] ) );
|
404 |
+
$containers = $blobRestProxy->listContainers()->getContainers();
|
405 |
+
}
|
406 |
+
catch ( Exception $e ) {
|
407 |
+
$error = $e->getMessage();
|
408 |
+
}
|
409 |
+
}
|
410 |
+
|
411 |
+
if ( empty( $args[ 'msazureaccname' ] ) )
|
412 |
+
_e( 'Missing account name!', 'backwpup' );
|
413 |
+
elseif ( empty( $args[ 'msazurekey' ] ) )
|
414 |
+
_e( 'Missing access key!', 'backwpup' );
|
415 |
+
elseif ( ! empty( $error ) )
|
416 |
+
echo esc_html( $error );
|
417 |
+
elseif ( empty( $containers ) )
|
418 |
+
_e( 'No container found!', 'backwpup' );
|
419 |
+
echo '</span>';
|
420 |
+
|
421 |
+
if ( !empty( $containers ) ) {
|
422 |
+
echo '<select name="msazurecontainer" id="msazurecontainer">';
|
423 |
+
foreach ( $containers as $container ) {
|
424 |
+
echo "<option " . selected( strtolower( $args[ 'msazureselected' ] ), strtolower( $container->getName() ), FALSE ) . ">" . $container->getName() . "</option>";
|
425 |
+
}
|
426 |
+
echo '</select>';
|
427 |
+
}
|
428 |
+
if ( $ajax )
|
429 |
+
die();
|
430 |
+
else
|
431 |
+
return;
|
432 |
+
}
|
433 |
+
}
|
inc/class-destination-rsc.php
CHANGED
@@ -1,475 +1,465 @@
|
|
1 |
-
<?php
|
2 |
-
// Rackspace OpenCloud SDK v1.
|
3 |
-
// http://www.rackspace.com/cloud/files/
|
4 |
-
// https://github.com/rackspace/php-opencloud
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
<option value="
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
'
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
?>
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
BackWPup_Option::update( $id, '
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
$_POST[ 'rscdir' ]
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
BackWPup_Option::update( $id, '
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
header( "
|
222 |
-
header( "
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
$
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
$job_object->
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
$
|
309 |
-
$
|
310 |
-
$
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
$files[ $filecounter ][ '
|
320 |
-
$files[ $filecounter ][ '
|
321 |
-
$files[ $filecounter ][ '
|
322 |
-
$files[ $filecounter ][ '
|
323 |
-
$files[ $filecounter ][ '
|
324 |
-
$filecounter
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
$
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
$numdeltefiles ++;
|
341 |
-
}
|
342 |
-
if ( $numdeltefiles > 0 )
|
343 |
-
$job_object->log( sprintf( _n( 'One file deleted on Rackspace cloud container.', '%d files deleted on Rackspace cloud container.', $numdeltefiles, 'backwpup' ), $numdeltefiles ), E_USER_NOTICE );
|
344 |
-
}
|
345 |
-
}
|
346 |
-
set_site_transient( 'backwpup_' . $job_object->job[ 'jobid' ] . '_rsc', $files, 60 * 60 * 24 * 7 );
|
347 |
-
}
|
348 |
-
catch ( Exception $e ) {
|
349 |
-
$job_object->log( E_USER_ERROR, sprintf( __( 'Rackspace Cloud API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
350 |
-
|
351 |
-
return FALSE;
|
352 |
-
}
|
353 |
-
$job_object->substeps_done ++;
|
354 |
-
|
355 |
-
return TRUE;
|
356 |
-
}
|
357 |
-
|
358 |
-
/**
|
359 |
-
*
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
$
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
if (
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
echo
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
}
|
467 |
-
echo '</select>';
|
468 |
-
}
|
469 |
-
|
470 |
-
if ( $ajax )
|
471 |
-
die();
|
472 |
-
else
|
473 |
-
return;
|
474 |
-
}
|
475 |
-
}
|
1 |
+
<?php
|
2 |
+
// Rackspace OpenCloud SDK v1.7.3
|
3 |
+
// http://www.rackspace.com/cloud/files/
|
4 |
+
// https://github.com/rackspace/php-opencloud
|
5 |
+
include_once BackWPup::get_plugin_data( 'PluginDir' ) . '/vendor/autoloader.php';
|
6 |
+
|
7 |
+
/**
|
8 |
+
*
|
9 |
+
*/
|
10 |
+
class BackWPup_Destination_RSC extends BackWPup_Destinations {
|
11 |
+
|
12 |
+
|
13 |
+
/**
|
14 |
+
* @return array
|
15 |
+
*/
|
16 |
+
public function option_defaults() {
|
17 |
+
|
18 |
+
return array( 'rscusername' => '', 'rscapikey' => '', 'rsccontainer' => '', 'rscregion' => 'DFW', 'rscdir' => trailingslashit( sanitize_file_name( get_bloginfo( 'name' ) ) ), 'rscmaxbackups' => 15, 'rscsyncnodelete' => TRUE );
|
19 |
+
}
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Get Auht url by region code
|
23 |
+
*
|
24 |
+
* @param $region region code
|
25 |
+
* @return string
|
26 |
+
*/
|
27 |
+
public static function get_auth_url_by_region( $region ) {
|
28 |
+
|
29 |
+
$region = strtoupper( $region );
|
30 |
+
|
31 |
+
if ( $region == 'LON' )
|
32 |
+
return RACKSPACE_UK;
|
33 |
+
|
34 |
+
return RACKSPACE_US;
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* @param $jobid
|
39 |
+
*/
|
40 |
+
public function edit_tab( $jobid ) {
|
41 |
+
?>
|
42 |
+
<h3 class="title"><?php _e( 'Rack Space Cloud Keys', 'backwpup' ); ?></h3>
|
43 |
+
<p></p>
|
44 |
+
<table class="form-table">
|
45 |
+
<tr>
|
46 |
+
<th scope="row"><label for="rscusername"><?php _e( 'Username', 'backwpup' ); ?></label></th>
|
47 |
+
<td>
|
48 |
+
<input id="rscusername" name="rscusername" type="text"
|
49 |
+
value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'rscusername' ) );?>" class="regular-text" autocomplete="off" />
|
50 |
+
</td>
|
51 |
+
</tr>
|
52 |
+
<tr>
|
53 |
+
<th scope="row"><label for="rscapikey"><?php _e( 'API Key', 'backwpup' ); ?></label></th>
|
54 |
+
<td>
|
55 |
+
<input id="rscapikey" name="rscapikey" type="password"
|
56 |
+
value="<?php echo esc_attr( BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'rscapikey' ) ) ); ?>" class="regular-text" autocomplete="off" />
|
57 |
+
</td>
|
58 |
+
</tr>
|
59 |
+
</table>
|
60 |
+
|
61 |
+
<h3 class="title"><?php _e( 'Select region', 'backwpup' ); ?></h3>
|
62 |
+
<p></p>
|
63 |
+
<table class="form-table">
|
64 |
+
<tr>
|
65 |
+
<th scope="row"><label for="rscregion"><?php _e( 'Rackspace Cloud Files Region', 'backwpup' ); ?></label></th>
|
66 |
+
<td>
|
67 |
+
<select name="rscregion" id="rscregion" title="<?php _e( 'Rackspace Cloud Files Region', 'backwpup' ); ?>">
|
68 |
+
<option value="DFW" <?php selected( 'DFW', BackWPup_Option::get( $jobid, 'rscregion' ), TRUE ) ?>><?php _e( 'Dallas (DFW)', 'backwpup' ); ?></option>
|
69 |
+
<option value="ORD" <?php selected( 'ORD', BackWPup_Option::get( $jobid, 'rscregion' ), TRUE ) ?>><?php _e( 'Chicago (ORD)', 'backwpup' ); ?></option>
|
70 |
+
<option value="SYD" <?php selected( 'SYD', BackWPup_Option::get( $jobid, 'rscregion' ), TRUE ) ?>><?php _e( 'Sydney (SYD)', 'backwpup' ); ?></option>
|
71 |
+
<option value="LON" <?php selected( 'LON', BackWPup_Option::get( $jobid, 'rscregion' ), TRUE ) ?>><?php _e( 'London (LON)', 'backwpup' ); ?></option>
|
72 |
+
<option value="IAD" <?php selected( 'IAD', BackWPup_Option::get( $jobid, 'rscregion' ), TRUE ) ?>><?php _e( 'Northern Virginia (IAD)', 'backwpup' ); ?></option>
|
73 |
+
</select><br/>
|
74 |
+
</td>
|
75 |
+
</tr>
|
76 |
+
<tr>
|
77 |
+
<th scope="row"><label for="rsccontainerselected"><?php _e( 'Container selection', 'backwpup' ); ?></label></th>
|
78 |
+
<td>
|
79 |
+
<input id="rsccontainerselected" name="rsccontainerselected" type="hidden" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'rsccontainer' ) ); ?>" />
|
80 |
+
<?php if ( BackWPup_Option::get( $jobid, 'rscusername' ) && BackWPup_Option::get( $jobid, 'rscapikey' ) ) $this->edit_ajax( array(
|
81 |
+
'rscusername' => BackWPup_Option::get( $jobid, 'rscusername' ),
|
82 |
+
'rscregion' => BackWPup_Option::get( $jobid, 'rscregion' ),
|
83 |
+
'rscapikey' => BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'rscapikey' ) ),
|
84 |
+
'rscselected' => BackWPup_Option::get( $jobid, 'rsccontainer' )
|
85 |
+
) ); ?>
|
86 |
+
</td>
|
87 |
+
</tr>
|
88 |
+
<tr>
|
89 |
+
<th scope="row"><label for="idnewrsccontainer"><?php _e( 'Create a new container', 'backwpup' ); ?></label></th>
|
90 |
+
<td>
|
91 |
+
<input id="idnewrsccontainer" name="newrsccontainer" type="text" value="" class="text" />
|
92 |
+
</td>
|
93 |
+
</tr>
|
94 |
+
</table>
|
95 |
+
|
96 |
+
<h3 class="title"><?php _e( 'Backup settings', 'backwpup' ); ?></h3>
|
97 |
+
<p></p>
|
98 |
+
<table class="form-table">
|
99 |
+
<tr>
|
100 |
+
<th scope="row"><label for="idrscdir"><?php _e( 'Folder in bucket', 'backwpup' ); ?></label></th>
|
101 |
+
<td>
|
102 |
+
<input id="idrscdir" name="rscdir" type="text" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'rscdir' ) ); ?>" class="regular-text" />
|
103 |
+
</td>
|
104 |
+
</tr>
|
105 |
+
<tr>
|
106 |
+
<th scope="row"><?php _e( 'File deletion', 'backwpup' ); ?></th>
|
107 |
+
<td>
|
108 |
+
<?php
|
109 |
+
if ( BackWPup_Option::get( $jobid, 'backuptype' ) == 'archive' ) {
|
110 |
+
?>
|
111 |
+
<label for="idrscmaxbackups"><input id="idrscmaxbackups" name="rscmaxbackups" type="text" size="3" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 'rscmaxbackups' ) ); ?>" class="small-text help-tip" title="<?php esc_attr_e( 'Oldest files will be deleted first. 0 = no deletion', 'backwpup' ); ?>" />
|
112 |
+
<?php _e( 'Number of files to keep in folder.', 'backwpup' ); ?></label>
|
113 |
+
<?php } else { ?>
|
114 |
+
<label for="idrscsyncnodelete"><input class="checkbox" value="1"
|
115 |
+
type="checkbox" <?php checked( BackWPup_Option::get( $jobid, 'rscsyncnodelete' ), TRUE ); ?>
|
116 |
+
name="rscsyncnodelete" id="idrscsyncnodelete" /> <?php _e( 'Do not delete files while syncing to destination!', 'backwpup' ); ?></label>
|
117 |
+
<?php } ?>
|
118 |
+
</td>
|
119 |
+
</tr>
|
120 |
+
</table>
|
121 |
+
<?php
|
122 |
+
}
|
123 |
+
|
124 |
+
/**
|
125 |
+
* @param $id
|
126 |
+
*/
|
127 |
+
public function edit_form_post_save( $id ) {
|
128 |
+
|
129 |
+
BackWPup_Option::update( $id, 'rscusername', isset( $_POST[ 'rscusername' ] ) ? $_POST[ 'rscusername' ] : '' );
|
130 |
+
BackWPup_Option::update( $id, 'rscapikey', isset( $_POST[ 'rscapikey' ] ) ? BackWPup_Encryption::encrypt( $_POST[ 'rscapikey' ] ) : '' );
|
131 |
+
BackWPup_Option::update( $id, 'rsccontainer', isset( $_POST[ 'rsccontainer' ] ) ? $_POST[ 'rsccontainer' ] : '' );
|
132 |
+
BackWPup_Option::update( $id, 'rscregion', ! empty( $_POST[ 'rscregion' ] ) ? $_POST[ 'rscregion' ] : 'DFW' );
|
133 |
+
|
134 |
+
$_POST[ 'rscdir' ] = trailingslashit( str_replace( '//', '/', str_replace( '\\', '/', trim( stripslashes( $_POST[ 'rscdir' ] ) ) ) ) );
|
135 |
+
if ( substr( $_POST[ 'rscdir' ], 0, 1 ) == '/' )
|
136 |
+
$_POST[ 'rscdir' ] = substr( $_POST[ 'rscdir' ], 1 );
|
137 |
+
if ( $_POST[ 'rscdir' ] == '/' )
|
138 |
+
$_POST[ 'rscdir' ] = '';
|
139 |
+
BackWPup_Option::update( $id, 'rscdir', $_POST[ 'rscdir' ] );
|
140 |
+
|
141 |
+
BackWPup_Option::update( $id, 'rscmaxbackups', isset( $_POST[ 'rscmaxbackups' ] ) ? (int)$_POST[ 'rscmaxbackups' ] : 0 );
|
142 |
+
BackWPup_Option::update( $id, 'rscsyncnodelete', ( isset( $_POST[ 'rscsyncnodelete' ] ) && $_POST[ 'rscsyncnodelete' ] == 1 ) ? TRUE : FALSE );
|
143 |
+
|
144 |
+
if ( ! empty( $_POST[ 'rscusername' ] ) && ! empty( $_POST[ 'rscapikey' ] ) && ! empty( $_POST[ 'newrsccontainer' ] ) ) {
|
145 |
+
try {
|
146 |
+
$conn = new OpenCloud\Rackspace(
|
147 |
+
self::get_auth_url_by_region( $_POST[ 'rscregion' ] ),
|
148 |
+
array(
|
149 |
+
'username' => $_POST[ 'rscusername' ],
|
150 |
+
'apiKey' => $_POST[ 'rscapikey' ]
|
151 |
+
));
|
152 |
+
$ostore = $conn->objectStoreService( 'cloudFiles' , $_POST[ 'rscregion' ], 'publicURL');
|
153 |
+
$ostore->createContainer( $_POST[ 'newrsccontainer' ] );
|
154 |
+
BackWPup_Option::update( $id, 'rsccontainer', $_POST[ 'newrsccontainer' ] );
|
155 |
+
BackWPup_Admin::message( sprintf( __( 'Rackspace Cloud container "%s" created.', 'backwpup' ), $_POST[ 'newrsccontainer' ] ) );
|
156 |
+
|
157 |
+
}
|
158 |
+
catch ( Exception $e ) {
|
159 |
+
BackWPup_Admin::message( sprintf( __( 'Rackspace Cloud API: %s', 'backwpup' ), $e->getMessage() ), TRUE );
|
160 |
+
}
|
161 |
+
}
|
162 |
+
}
|
163 |
+
|
164 |
+
/**
|
165 |
+
* @param $jobdest
|
166 |
+
* @param $backupfile
|
167 |
+
*/
|
168 |
+
public function file_delete( $jobdest, $backupfile ) {
|
169 |
+
|
170 |
+
$files = get_site_transient( 'backwpup_'. strtolower( $jobdest ), FALSE );
|
171 |
+
list( $jobid, $dest ) = explode( '_', $jobdest );
|
172 |
+
|
173 |
+
if ( BackWPup_Option::get( $jobid, 'rscusername' ) && BackWPup_Option::get( $jobid, 'rscapikey' ) && BackWPup_Option::get( $jobid, 'rsccontainer' ) ) {
|
174 |
+
try {
|
175 |
+
$conn = new OpenCloud\Rackspace(
|
176 |
+
self::get_auth_url_by_region( BackWPup_Option::get( $jobid, 'rscregion' ) ),
|
177 |
+
array(
|
178 |
+
'username' => BackWPup_Option::get( $jobid, 'rscusername' ),
|
179 |
+
'apiKey' => BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'rscapikey' ) )
|
180 |
+
));
|
181 |
+
$ostore = $conn->objectStoreService( 'cloudFiles' , BackWPup_Option::get( $jobid, 'rscregion' ), 'publicURL');
|
182 |
+
$container = $ostore->getContainer( BackWPup_Option::get( $jobid, 'rsccontainer' ) );
|
183 |
+
$fileobject = $container->getObject( $backupfile );
|
184 |
+
$fileobject->delete();
|
185 |
+
//update file list
|
186 |
+
foreach ( $files as $key => $file ) {
|
187 |
+
if ( is_array( $file ) && $file[ 'file' ] == $backupfile )
|
188 |
+
unset( $files[ $key ] );
|
189 |
+
}
|
190 |
+
|
191 |
+
}
|
192 |
+
catch ( Exception $e ) {
|
193 |
+
BackWPup_Admin::message( 'RSC: ' . $e->getMessage(), TRUE );
|
194 |
+
}
|
195 |
+
}
|
196 |
+
|
197 |
+
set_site_transient( 'backwpup_'. strtolower( $jobdest ), $files, 60 * 60 * 24 * 7 );
|
198 |
+
}
|
199 |
+
|
200 |
+
/**
|
201 |
+
* @param $jobid
|
202 |
+
* @param $get_file
|
203 |
+
*/
|
204 |
+
public function file_download( $jobid, $get_file ) {
|
205 |
+
|
206 |
+
try {
|
207 |
+
$conn = new OpenCloud\Rackspace(
|
208 |
+
self::get_auth_url_by_region( BackWPup_Option::get( $jobid, 'rscregion' ) ),
|
209 |
+
array(
|
210 |
+
'username' => BackWPup_Option::get( $jobid, 'rscusername' ),
|
211 |
+
'apiKey' => BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'rscapikey' ) )
|
212 |
+
));
|
213 |
+
$ostore = $conn->objectStoreService( 'cloudFiles' , BackWPup_Option::get( $jobid, 'rscregion' ), 'publicURL');
|
214 |
+
$container = $ostore->getContainer( BackWPup_Option::get( $jobid, 'rsccontainer' ) );
|
215 |
+
$backupfile = $container->getObject( $get_file );
|
216 |
+
header( "Pragma: public" );
|
217 |
+
header( "Expires: 0" );
|
218 |
+
header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
|
219 |
+
header( "Content-Type: application/octet-stream" );
|
220 |
+
header( "Content-Disposition: attachment; filename=" . basename( $get_file ) . ";" );
|
221 |
+
header( "Content-Transfer-Encoding: binary" );
|
222 |
+
header( "Content-Length: " . $backupfile->getContentLength() );
|
223 |
+
@set_time_limit( 0 );
|
224 |
+
echo $backupfile->getContent();
|
225 |
+
die();
|
226 |
+
}
|
227 |
+
catch ( Exception $e ) {
|
228 |
+
die( $e->getMessage() );
|
229 |
+
}
|
230 |
+
}
|
231 |
+
|
232 |
+
/**
|
233 |
+
* @param $jobdest
|
234 |
+
* @return mixed
|
235 |
+
*/
|
236 |
+
public function file_get_list( $jobdest ) {
|
237 |
+
|
238 |
+
return get_site_transient( 'backwpup_' . strtolower( $jobdest ) );
|
239 |
+
}
|
240 |
+
|
241 |
+
/**
|
242 |
+
* @param $job_object
|
243 |
+
* @return bool
|
244 |
+
*/
|
245 |
+
public function job_run_archive( &$job_object ) {
|
246 |
+
|
247 |
+
$job_object->substeps_todo = 2 + $job_object->backup_filesize;
|
248 |
+
$job_object->substeps_done = 0;
|
249 |
+
$job_object->log( sprintf( __( '%d. Trying to send backup file to Rackspace cloud …', 'backwpup' ), $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] ), E_USER_NOTICE );
|
250 |
+
|
251 |
+
try {
|
252 |
+
|
253 |
+
$conn = new OpenCloud\Rackspace(
|
254 |
+
self::get_auth_url_by_region( $job_object->job[ 'rscregion' ] ),
|
255 |
+
array(
|
256 |
+
'username' => $job_object->job[ 'rscusername' ],
|
257 |
+
'apiKey' => BackWPup_Encryption::decrypt( $job_object->job[ 'rscapikey' ] )
|
258 |
+
));
|
259 |
+
//connect to cloud files
|
260 |
+
$ostore = $conn->objectStoreService( 'cloudFiles' , $job_object->job[ 'rscregion' ], 'publicURL' );
|
261 |
+
|
262 |
+
$container = $ostore->getContainer( $job_object->job[ 'rsccontainer' ] );
|
263 |
+
$job_object->log( sprintf(__( 'Connected to Rackspace cloud files container %s', 'backwpup' ), $job_object->job[ 'rsccontainer' ] ) );
|
264 |
+
}
|
265 |
+
catch ( Exception $e ) {
|
266 |
+
$job_object->log( E_USER_ERROR, sprintf( __( 'Rackspace Cloud API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
267 |
+
|
268 |
+
return FALSE;
|
269 |
+
}
|
270 |
+
|
271 |
+
|
272 |
+
try {
|
273 |
+
//Transfer Backup to Rackspace Cloud
|
274 |
+
$job_object->substeps_done = 0;
|
275 |
+
$job_object->log( __( 'Upload to Rackspace cloud started …', 'backwpup' ), E_USER_NOTICE );
|
276 |
+
@set_time_limit( 0 );
|
277 |
+
|
278 |
+
$handle = fopen( $job_object->backup_folder . $job_object->backup_file, 'rb' );
|
279 |
+
$uploded = $container->uploadObject( $job_object->job[ 'rscdir' ] . $job_object->backup_file, $handle );
|
280 |
+
fclose( $handle );
|
281 |
+
|
282 |
+
// $transfer = $container->setupObjectTransfer( array(
|
283 |
+
// 'name' => $job_object->job[ 'rscdir' ] . $job_object->backup_file,
|
284 |
+
// 'path' => $job_object->backup_folder . $job_object->backup_file,
|
285 |
+
// 'concurrency' => 1,
|
286 |
+
// 'partSize' => 4 * 1024 * 1024
|
287 |
+
// ) );
|
288 |
+
// $uploded = $transfer->upload();
|
289 |
+
|
290 |
+
if ( $uploded ) {
|
291 |
+
$job_object->substeps_todo = 1 + $job_object->backup_filesize;
|
292 |
+
$job_object->log( __( 'Backup File transferred to RSC://', 'backwpup' ) . $job_object->job[ 'rsccontainer' ] . '/' . $job_object->job[ 'rscdir' ] . $job_object->backup_file, E_USER_NOTICE );
|
293 |
+
if ( !empty( $job_object->job[ 'jobid' ] ) )
|
294 |
+
BackWPup_Option::update( $job_object->job[ 'jobid' ], 'lastbackupdownloadurl', network_admin_url( 'admin.php' ) . '?page=backwpupbackups&action=downloadrsc&file=' . $job_object->job[ 'rscdir' ] . $job_object->backup_file . '&jobid=' . $job_object->job[ 'jobid' ] );
|
295 |
+
} else {
|
296 |
+
$job_object->log( __( 'Cannot transfer backup to Rackspace cloud.', 'backwpup' ), E_USER_ERROR );
|
297 |
+
|
298 |
+
return FALSE;
|
299 |
+
}
|
300 |
+
}
|
301 |
+
catch ( Exception $e ) {
|
302 |
+
$job_object->log( E_USER_ERROR, sprintf( __( 'Rackspace Cloud API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
303 |
+
|
304 |
+
return FALSE;
|
305 |
+
}
|
306 |
+
|
307 |
+
try {
|
308 |
+
$backupfilelist = array();
|
309 |
+
$filecounter = 0;
|
310 |
+
$files = array();
|
311 |
+
$objlist = $container->objectList( array( 'prefix' => $job_object->job[ 'rscdir' ] ) );
|
312 |
+
if ( $objlist->size() > 0 ) {
|
313 |
+
while ( $object = $objlist->next() ) {
|
314 |
+
$file = basename( $object->getName() );
|
315 |
+
if ( $job_object->job[ 'rscdir' ] . $file == $object->getName() ) { //only in the folder and not in complete bucket
|
316 |
+
if ( $job_object->is_backup_archive( $file ) )
|
317 |
+
$backupfilelist[ strtotime( $object->getLastModified() ) ] = $object;
|
318 |
+
}
|
319 |
+
$files[ $filecounter ][ 'folder' ] = "RSC://" . $job_object->job[ 'rsccontainer' ] . "/" . dirname( $object->getName() ) . "/";
|
320 |
+
$files[ $filecounter ][ 'file' ] = $object->getName();
|
321 |
+
$files[ $filecounter ][ 'filename' ] = basename( $object->getName() );
|
322 |
+
$files[ $filecounter ][ 'downloadurl' ] = network_admin_url( 'admin.php' ) . '?page=backwpupbackups&action=downloadrsc&file=' . $object->getName() . '&jobid=' . $job_object->job[ 'jobid' ];
|
323 |
+
$files[ $filecounter ][ 'filesize' ] = $object->getContentLength();
|
324 |
+
$files[ $filecounter ][ 'time' ] = strtotime( $object->getLastModified() ) + ( get_option( 'gmt_offset' ) * 3600 );
|
325 |
+
$filecounter ++;
|
326 |
+
}
|
327 |
+
}
|
328 |
+
if ( ! empty( $job_object->job[ 'rscmaxbackups' ] ) && $job_object->job[ 'rscmaxbackups' ] > 0 ) { //Delete old backups
|
329 |
+
if ( count( $backupfilelist ) > $job_object->job[ 'rscmaxbackups' ] ) {
|
330 |
+
ksort( $backupfilelist );
|
331 |
+
$numdeltefiles = 0;
|
332 |
+
while ( $file = array_shift( $backupfilelist ) ) {
|
333 |
+
if ( count( $backupfilelist ) < $job_object->job[ 'rscmaxbackups' ] )
|
334 |
+
break;
|
335 |
+
foreach ( $files as $key => $filedata ) {
|
336 |
+
if ( $filedata[ 'file' ] == $job_object->job[ 'rscdir' ] . $file->getName() )
|
337 |
+
unset( $files[ $key ] );
|
338 |
+
}
|
339 |
+
$file->delete();
|
340 |
+
$numdeltefiles ++;
|
341 |
+
}
|
342 |
+
if ( $numdeltefiles > 0 )
|
343 |
+
$job_object->log( sprintf( _n( 'One file deleted on Rackspace cloud container.', '%d files deleted on Rackspace cloud container.', $numdeltefiles, 'backwpup' ), $numdeltefiles ), E_USER_NOTICE );
|
344 |
+
}
|
345 |
+
}
|
346 |
+
set_site_transient( 'backwpup_' . $job_object->job[ 'jobid' ] . '_rsc', $files, 60 * 60 * 24 * 7 );
|
347 |
+
}
|
348 |
+
catch ( Exception $e ) {
|
349 |
+
$job_object->log( E_USER_ERROR, sprintf( __( 'Rackspace Cloud API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
350 |
+
|
351 |
+
return FALSE;
|
352 |
+
}
|
353 |
+
$job_object->substeps_done ++;
|
354 |
+
|
355 |
+
return TRUE;
|
356 |
+
}
|
357 |
+
|
358 |
+
/**
|
359 |
+
* @param $job_object
|
360 |
+
* @return bool
|
361 |
+
*/
|
362 |
+
public function can_run( $job_object ) {
|
363 |
+
|
364 |
+
if ( empty( $job_object->job[ 'rscusername'] ) )
|
365 |
+
return FALSE;
|
366 |
+
|
367 |
+
if ( empty( $job_object->job[ 'rscapikey'] ) )
|
368 |
+
return FALSE;
|
369 |
+
|
370 |
+
if ( empty( $job_object->job[ 'rsccontainer'] ) )
|
371 |
+
return FALSE;
|
372 |
+
|
373 |
+
return TRUE;
|
374 |
+
}
|
375 |
+
|
376 |
+
/**
|
377 |
+
*
|
378 |
+
*/
|
379 |
+
public function edit_inline_js() {
|
380 |
+
//<script type="text/javascript">
|
381 |
+
?>
|
382 |
+
function rscgetcontainer() {
|
383 |
+
var data = {
|
384 |
+
action: 'backwpup_dest_rsc',
|
385 |
+
rscusername: $('#rscusername').val(),
|
386 |
+
rscapikey: $('#rscapikey').val(),
|
387 |
+
rscregion: $('#rscregion').val(),
|
388 |
+
rscselected: $('#rsccontainerselected').val(),
|
389 |
+
_ajax_nonce: $('#backwpupajaxnonce').val()
|
390 |
+
};
|
391 |
+
$.post(ajaxurl, data, function(response) {
|
392 |
+
$('#rsccontainererror').remove();
|
393 |
+
$('#rsccontainer').remove();
|
394 |
+
$('#rsccontainerselected').after(response);
|
395 |
+
});
|
396 |
+
}
|
397 |
+
$('#rscregion').change(function() {rscgetcontainer();});
|
398 |
+
$('#rscusername').change(function() {rscgetcontainer();});
|
399 |
+
$('#rscapikey').change(function() {rscgetcontainer();});
|
400 |
+
<?php
|
401 |
+
}
|
402 |
+
|
403 |
+
/**
|
404 |
+
* @param string $args
|
405 |
+
*/
|
406 |
+
public function edit_ajax( $args = '' ) {
|
407 |
+
|
408 |
+
$error = '';
|
409 |
+
|
410 |
+
if ( is_array( $args ) ) {
|
411 |
+
$ajax = FALSE;
|
412 |
+
} else {
|
413 |
+
if ( ! current_user_can( 'backwpup_jobs_edit' ) )
|
414 |
+
wp_die( -1 );
|
415 |
+
check_ajax_referer( 'backwpup_ajax_nonce' );
|
416 |
+
$args[ 'rscusername' ] = $_POST[ 'rscusername' ];
|
417 |
+
$args[ 'rscapikey' ] = $_POST[ 'rscapikey' ];
|
418 |
+
$args[ 'rscselected' ] = $_POST[ 'rscselected' ];
|
419 |
+
$args[ 'rscregion' ] = $_POST[ 'rscregion' ];
|
420 |
+
$ajax = TRUE;
|
421 |
+
}
|
422 |
+
echo '<span id="rsccontainererror" style="color:red;">';
|
423 |
+
|
424 |
+
if ( ! empty( $args[ 'rscusername' ] ) && ! empty( $args[ 'rscapikey' ] ) && ! empty( $args[ 'rscregion' ] ) ) {
|
425 |
+
try {
|
426 |
+
$conn = new OpenCloud\Rackspace(
|
427 |
+
self::get_auth_url_by_region( $args[ 'rscregion' ] ),
|
428 |
+
array(
|
429 |
+
'username' => $args[ 'rscusername' ],
|
430 |
+
'apiKey' => BackWPup_Encryption::decrypt( $args[ 'rscapikey' ] )
|
431 |
+
));
|
432 |
+
|
433 |
+
$ostore = $conn->objectStoreService( 'cloudFiles' , $args[ 'rscregion' ], 'publicURL' );
|
434 |
+
$containerlist = $ostore->listContainers();
|
435 |
+
}
|
436 |
+
catch ( Exception $e ) {
|
437 |
+
$error = $e->getMessage();
|
438 |
+
$containerlist = NULL;
|
439 |
+
}
|
440 |
+
}
|
441 |
+
|
442 |
+
if ( empty( $args[ 'rscusername' ] ) )
|
443 |
+
_e( 'Missing username!', 'backwpup' );
|
444 |
+
elseif ( empty( $args[ 'rscapikey' ] ) )
|
445 |
+
_e( 'Missing API Key!', 'backwpup' );
|
446 |
+
elseif ( ! empty( $error ) )
|
447 |
+
echo esc_html( $error );
|
448 |
+
elseif ( ! is_object( $containerlist ) || $containerlist->Size() == 0 )
|
449 |
+
_e( "A container could not be found!", 'backwpup' );
|
450 |
+
echo '</span>';
|
451 |
+
|
452 |
+
if ( isset( $containerlist ) && $containerlist->Size() > 0 ) {
|
453 |
+
echo '<select name="rsccontainer" id="rsccontainer">';
|
454 |
+
while( $container = $containerlist->Next() ) {
|
455 |
+
echo "<option " . selected( strtolower( $args[ 'rscselected' ] ), strtolower( $container->name ), FALSE ) . ">" . $container->name . "</option>";
|
456 |
+
}
|
457 |
+
echo '</select>';
|
458 |
+
}
|
459 |
+
|
460 |
+
if ( $ajax )
|
461 |
+
die();
|
462 |
+
else
|
463 |
+
return;
|
464 |
+
}
|
465 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/class-destination-s3-v1.php
CHANGED
@@ -1,607 +1,592 @@
|
|
1 |
-
<?php
|
2 |
-
// Amazon S3 SDK v1.6.2
|
3 |
-
// http://aws.amazon.com/de/sdkforphp/
|
4 |
-
// https://github.com/amazonwebservices/aws-sdk-for-php
|
5 |
-
if ( ! class_exists( 'AmazonS3' ) )
|
6 |
-
include dirname( __FILE__ ) . '/../
|
7 |
-
if ( ! defined( 'E_USER_DEPRECATED') )
|
8 |
-
define( 'E_USER_DEPRECATED', 16384 );
|
9 |
-
|
10 |
-
/**
|
11 |
-
* Documentation: http://docs.amazonwebservices.com/aws-sdk-php-2/latest/class-Aws.S3.S3Client.html
|
12 |
-
*/
|
13 |
-
class BackWPup_Destination_S3_V1 extends BackWPup_Destinations {
|
14 |
-
|
15 |
-
/**
|
16 |
-
*
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
</td>
|
164 |
-
</tr>
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
BackWPup_Option::update( $jobid, '
|
215 |
-
BackWPup_Option::update( $jobid, '
|
216 |
-
BackWPup_Option::update( $jobid, '
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
}
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
$
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
$
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
$
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
$file
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
*
|
495 |
-
*/
|
496 |
-
public function
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
function awsgetbucket()
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
_e( 'No bucket found!', 'backwpup' );
|
594 |
-
echo '</span>';
|
595 |
-
|
596 |
-
if ( ! empty( $buckets->body->Buckets->Bucket ) ) {
|
597 |
-
echo '<select name="s3bucket" id="s3bucket">';
|
598 |
-
foreach ( $buckets->body->Buckets->Bucket as $bucket ) {
|
599 |
-
echo "<option " . selected( $args[ 's3bucketselected' ], esc_attr( $bucket->Name ), FALSE ) . ">" . esc_attr( $bucket->Name ) . "</option>";
|
600 |
-
}
|
601 |
-
echo '</select>';
|
602 |
-
}
|
603 |
-
|
604 |
-
if ( $ajax )
|
605 |
-
die();
|
606 |
-
}
|
607 |
-
}
|
1 |
+
<?php
|
2 |
+
// Amazon S3 SDK v1.6.2
|
3 |
+
// http://aws.amazon.com/de/sdkforphp/
|
4 |
+
// https://github.com/amazonwebservices/aws-sdk-for-php
|
5 |
+
if ( ! class_exists( 'AmazonS3' ) )
|
6 |
+
include dirname( __FILE__ ) . '/../vendor/Aws_v1/sdk.class.php';
|
7 |
+
if ( ! defined( 'E_USER_DEPRECATED') )
|
8 |
+
define( 'E_USER_DEPRECATED', 16384 );
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Documentation: http://docs.amazonwebservices.com/aws-sdk-php-2/latest/class-Aws.S3.S3Client.html
|
12 |
+
*/
|
13 |
+
class BackWPup_Destination_S3_V1 extends BackWPup_Destinations {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @param $s3region
|
17 |
+
* @param string $s3base_url
|
18 |
+
* @return string
|
19 |
+
*/
|
20 |
+
protected function get_s3_base_url( $s3region, $s3base_url = '' ) {
|
21 |
+
|
22 |
+
if ( ! empty( $s3base_url ) )
|
23 |
+
return $s3base_url;
|
24 |
+
|
25 |
+
switch ( $s3region ) {
|
26 |
+
case 'us-east-1':
|
27 |
+
return 'https://s3.amazonaws.com';
|
28 |
+
case 'us-west-1':
|
29 |
+
return 'https://s3-us-west-1.amazonaws.com';
|
30 |
+
case 'us-west-2':
|
31 |
+
return 'https://s3-us-west-2.amazonaws.com';
|
32 |
+
case 'eu-west-1':
|
33 |
+
return 'https://s3-eu-west-1.amazonaws.com';
|
34 |
+
case 'ap-northeast-1':
|
35 |
+
return 'https://s3-ap-northeast-1.amazonaws.com';
|
36 |
+
case 'ap-southeast-1':
|
37 |
+
return 'https://s3-ap-southeast-1.amazonaws.com';
|
38 |
+
case 'ap-southeast-2':
|
39 |
+
return 'https://s3-ap-southeast-2.amazonaws.com';
|
40 |
+
case 'sa-east-1':
|
41 |
+
return 'https://s3-sa-east-1.amazonaws.com';
|
42 |
+
case 'google-storage':
|
43 |
+
return 'https://storage.googleapis.com';
|
44 |
+
case 'hosteurope':
|
45 |
+
return 'https://cs.hosteurope.de';
|
46 |
+
case 'dreamhost':
|
47 |
+
return 'https://objects.dreamhost.com';
|
48 |
+
default:
|
49 |
+
return '';
|
50 |
+
}
|
51 |
+
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* @return array
|
56 |
+
*/
|
57 |
+
public function option_defaults() {
|
58 |
+
|
59 |
+
return array( 's3accesskey' => '', 's3secretkey' => '', 's3bucket' => '', 's3region' => 'us-east-1', 's3base_url' => '', 's3ssencrypt' => '', 's3storageclass' => '', 's3dir' => trailingslashit( sanitize_file_name( get_bloginfo( 'name' ) ) ), 's3maxbackups' => 15, 's3syncnodelete' => TRUE );
|
60 |
+
}
|
61 |
+
|
62 |
+
|
63 |
+
/**
|
64 |
+
* @param $jobid
|
65 |
+
*/
|
66 |
+
public function edit_tab( $jobid ) {
|
67 |
+
|
68 |
+
?>
|
69 |
+
<h3 class="title"><?php _e( 'S3 Service', 'backwpup' ) ?></h3>
|
70 |
+
<p></p>
|
71 |
+
<table class="form-table">
|
72 |
+
<tr>
|
73 |
+
<th scope="row"><label for="s3region"><?php _e( 'Select a S3 service', 'backwpup' ) ?></label></th>
|
74 |
+
<td>
|
75 |
+
<select name="s3region" id="s3region" title="<?php _e( 'Amazon S3 Region', 'backwpup' ); ?>">
|
76 |
+
<option value="us-east-1" <?php selected( 'us-east-1', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: US Standard', 'backwpup' ); ?></option>
|
77 |
+
<option value="us-west-1" <?php selected( 'us-west-1', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: US West (Northern California)', 'backwpup' ); ?></option>
|
78 |
+
<option value="us-west-2" <?php selected( 'us-west-2', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: US West (Oregon)', 'backwpup' ); ?></option>
|
79 |
+
<option value="eu-west-1" <?php selected( 'eu-west-1', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: EU (Ireland)', 'backwpup' ); ?></option>
|
80 |
+
<option value="ap-northeast-1" <?php selected( 'ap-northeast-1', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: Asia Pacific (Tokyo)', 'backwpup' ); ?></option>
|
81 |
+
<option value="ap-southeast-1" <?php selected( 'ap-southeast-1', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: Asia Pacific (Singapore)', 'backwpup' ); ?></option>
|
82 |
+
<option value="ap-southeast-2" <?php selected( 'ap-southeast-2', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: Asia Pacific (Sydney)', 'backwpup' ); ?></option>
|
83 |
+
<option value="sa-east-1" <?php selected( 'sa-east-1', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: South America (Sao Paulo)', 'backwpup' ); ?></option>
|
84 |
+
<option value="google-storage" <?php selected( 'google-storage', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Google Storage (Interoperable Access)', 'backwpup' ); ?></option>
|
85 |
+
<option value="hosteurope" <?php selected( 'hosteurope', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Hosteurope Cloud Storage', 'backwpup' ); ?></option>
|
86 |
+
<option value="dreamhost" <?php selected( 'dreamhost', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Dream Host Cloud Storage', 'backwpup' ); ?></option>
|
87 |
+
</select>
|
88 |
+
</td>
|
89 |
+
</tr>
|
90 |
+
<tr>
|
91 |
+
<th scope="row"><label for="s3base_url"><?php _e( 'Or a S3 Server URL', 'backwpup' ) ?></label></th>
|
92 |
+
<td>
|
93 |
+
<input id="s3base_url" name="s3base_url" type="text" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 's3base_url' ) );?>" class="regular-text" autocomplete="off" />
|
94 |
+
</td>
|
95 |
+
</tr>
|
96 |
+
</table>
|
97 |
+
|
98 |
+
<h3 class="title"><?php _e( 'S3 Access Keys', 'backwpup' ); ?></h3>
|
99 |
+
<p></p>
|
100 |
+
<table class="form-table">
|
101 |
+
<tr>
|
102 |
+
<th scope="row"><label for="s3accesskey"><?php _e( 'Access Key', 'backwpup' ); ?></label></th>
|
103 |
+
<td>
|
104 |
+
<input id="s3accesskey" name="s3accesskey" type="text"
|
105 |
+
value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 's3accesskey' ) );?>" class="regular-text" autocomplete="off" />
|
106 |
+
</td>
|
107 |
+
</tr>
|
108 |
+
<tr>
|
109 |
+
<th scope="row"><label for="s3secretkey"><?php _e( 'Secret Key', 'backwpup' ); ?></label></th>
|
110 |
+
<td>
|
111 |
+
<input id="s3secretkey" name="s3secretkey" type="password"
|
112 |
+
value="<?php echo esc_attr( BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 's3secretkey' ) ) ); ?>" class="regular-text" autocomplete="off" />
|
113 |
+
</td>
|
114 |
+
</tr>
|
115 |
+
</table>
|
116 |
+
|
117 |
+
<h3 class="title"><?php _e( 'S3 Bucket', 'backwpup' ); ?></h3>
|
118 |
+
<p></p>
|
119 |
+
<table class="form-table">
|
120 |
+
<tr>
|
121 |
+
<th scope="row"><label for="s3bucketselected"><?php _e( 'Bucket selection', 'backwpup' ); ?></label></th>
|
122 |
+
<td>
|
123 |
+
<input id="s3bucketselected" name="s3bucketselected" type="hidden" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 's3bucket' ) ); ?>" />
|
124 |
+
<?php if ( BackWPup_Option::get( $jobid, 's3accesskey' ) && BackWPup_Option::get( $jobid, 's3secretkey' ) ) $this->edit_ajax( array(
|
125 |
+
's3accesskey' => BackWPup_Option::get( $jobid, 's3accesskey' ),
|
126 |
+
's3secretkey' => BackWPup_Encryption::decrypt(BackWPup_Option::get( $jobid, 's3secretkey' ) ),
|
127 |
+
's3bucketselected' => BackWPup_Option::get( $jobid, 's3bucket' ),
|
128 |
+
's3base_url' => BackWPup_Option::get( $jobid, 's3base_url' ),
|
129 |
+
's3region' => BackWPup_Option::get( $jobid, 's3region' )
|
130 |
+
) ); ?>
|
131 |
+
</td>
|
132 |
+
</tr>
|
133 |
+
<tr>
|
134 |
+
<th scope="row"><label for="s3newbucket"><?php _e( 'Create a new bucket', 'backwpup' ); ?></label></th>
|
135 |
+
<td>
|
136 |
+
<input id="s3newbucket" name="s3newbucket" type="text" value="" class="small-text" autocomplete="off" />
|
137 |
+
</td>
|
138 |
+
</tr>
|
139 |
+
</table>
|
140 |
+
|
141 |
+
<h3 class="title"><?php _e( 'S3 Backup settings', 'backwpup' ); ?></h3>
|
142 |
+
<p></p>
|
143 |
+
<table class="form-table">
|
144 |
+
<tr>
|
145 |
+
<th scope="row"><label for="ids3dir"><?php _e( 'Folder in bucket', 'backwpup' ); ?></label></th>
|
146 |
+
<td>
|
147 |
+
<input id="ids3dir" name="s3dir" type="text" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 's3dir' ) ); ?>" class="regular-text" />
|
148 |
+
</td>
|
149 |
+
</tr>
|
150 |
+
<tr>
|
151 |
+
<th scope="row"><?php _e( 'File deletion', 'backwpup' ); ?></th>
|
152 |
+
<td>
|
153 |
+
<?php
|
154 |
+
if ( BackWPup_Option::get( $jobid, 'backuptype' ) == 'archive' ) {
|
155 |
+
?>
|
156 |
+
<label for="ids3maxbackups"><input id="ids3maxbackups" name="s3maxbackups" type="text" size="3" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 's3maxbackups' ) ); ?>" class="small-text help-tip" title="<?php esc_attr_e( 'Oldest files will be deleted first. 0 = no deletion', 'backwpup' ); ?>" />
|
157 |
+
<?php _e( 'Number of files to keep in folder.', 'backwpup' ); ?></label>
|
158 |
+
<?php } else { ?>
|
159 |
+
<label for="ids3syncnodelete"><input class="checkbox" value="1"
|
160 |
+
type="checkbox" <?php checked( BackWPup_Option::get( $jobid, 's3syncnodelete' ), TRUE ); ?>
|
161 |
+
name="s3syncnodelete" id="ids3syncnodelete" /> <?php _e( 'Do not delete files while syncing to destination!', 'backwpup' ); ?></label>
|
162 |
+
<?php } ?>
|
163 |
+
</td>
|
164 |
+
</tr>
|
165 |
+
</table>
|
166 |
+
|
167 |
+
<h3 class="title"><?php _e( 'Amazon specific settings', 'backwpup' ); ?></h3>
|
168 |
+
<p></p>
|
169 |
+
<table class="form-table">
|
170 |
+
<tr>
|
171 |
+
<th scope="row"><label for="ids3storageclass"><?php _e( 'Amazon: Storage Class', 'backwpup' ); ?></label></th>
|
172 |
+
<td>
|
173 |
+
<select name="s3storageclass" id="ids3storageclass" title="<?php _e( 'Amazon: Storage Class', 'backwpup' ); ?>">
|
174 |
+
<option value="" <?php selected( 'us-east-1', BackWPup_Option::get( $jobid, 's3storageclass' ), TRUE ) ?>><?php _e( 'none', 'backwpup' ); ?></option>
|
175 |
+
<option value="REDUCED_REDUNDANCY" <?php selected( 'REDUCED_REDUNDANCY', BackWPup_Option::get( $jobid, 's3storageclass' ), TRUE ) ?>><?php _e( 'Reduced Redundancy', 'backwpup' ); ?></option>
|
176 |
+
</select>
|
177 |
+
</td>
|
178 |
+
</tr>
|
179 |
+
<tr>
|
180 |
+
<th scope="row"><label for="ids3ssencrypt"><?php _e( 'Server side encryption', 'backwpup' ); ?></label></th>
|
181 |
+
<td>
|
182 |
+
<input class="checkbox" value="AES256"
|
183 |
+
type="checkbox" <?php checked( BackWPup_Option::get( $jobid, 's3ssencrypt' ), 'AES256' ); ?>
|
184 |
+
name="s3ssencrypt" id="ids3ssencrypt" /> <?php _e( 'Save files encrypted (AES256) on server.', 'backwpup' ); ?>
|
185 |
+
</td>
|
186 |
+
</tr>
|
187 |
+
</table>
|
188 |
+
|
189 |
+
<?php
|
190 |
+
}
|
191 |
+
|
192 |
+
|
193 |
+
/**
|
194 |
+
* @param $jobid
|
195 |
+
* @return string
|
196 |
+
*/
|
197 |
+
public function edit_form_post_save( $jobid ) {
|
198 |
+
|
199 |
+
BackWPup_Option::update( $jobid, 's3accesskey', isset( $_POST[ 's3accesskey' ] ) ? $_POST[ 's3accesskey' ] : '' );
|
200 |
+
BackWPup_Option::update( $jobid, 's3secretkey', isset( $_POST[ 's3secretkey' ] ) ? BackWPup_Encryption::encrypt( $_POST[ 's3secretkey' ] ) : '' );
|
201 |
+
BackWPup_Option::update( $jobid, 's3base_url', isset( $_POST[ 's3base_url' ] ) ? esc_url_raw( $_POST[ 's3base_url' ] ) : '' );
|
202 |
+
BackWPup_Option::update( $jobid, 's3region', isset( $_POST[ 's3region' ] ) ? $_POST[ 's3region' ] : '' );
|
203 |
+
BackWPup_Option::update( $jobid, 's3storageclass', isset( $_POST[ 's3storageclass' ] ) ? $_POST[ 's3storageclass' ] : '' );
|
204 |
+
BackWPup_Option::update( $jobid, 's3ssencrypt', ( isset( $_POST[ 's3ssencrypt' ] ) && $_POST[ 's3ssencrypt' ] == 'AES256' ) ? 'AES256' : '' );
|
205 |
+
BackWPup_Option::update( $jobid, 's3bucket', isset( $_POST[ 's3bucket' ] ) ? $_POST[ 's3bucket' ] : '' );
|
206 |
+
|
207 |
+
$_POST[ 's3dir' ] = trailingslashit( str_replace( '//', '/', str_replace( '\\', '/', trim( stripslashes( $_POST[ 's3dir' ] ) ) ) ) );
|
208 |
+
if ( substr( $_POST[ 's3dir' ], 0, 1 ) == '/' )
|
209 |
+
$_POST[ 's3dir' ] = substr( $_POST[ 's3dir' ], 1 );
|
210 |
+
if ( $_POST[ 's3dir' ] == '/' )
|
211 |
+
$_POST[ 's3dir' ] = '';
|
212 |
+
BackWPup_Option::update( $jobid, 's3dir', $_POST[ 's3dir' ] );
|
213 |
+
|
214 |
+
BackWPup_Option::update( $jobid, 's3maxbackups', isset( $_POST[ 's3maxbackups' ] ) ? (int)$_POST[ 's3maxbackups' ] : 0 );
|
215 |
+
BackWPup_Option::update( $jobid, 's3syncnodelete', ( isset( $_POST[ 's3syncnodelete' ] ) && $_POST[ 's3syncnodelete' ] == 1 ) ? TRUE : FALSE );
|
216 |
+
BackWPup_Option::update( $jobid, 's3multipart', ( isset( $_POST[ 's3multipart' ] ) && $_POST[ 's3multipart' ] == 1 ) ? TRUE : FALSE );
|
217 |
+
|
218 |
+
//create new bucket
|
219 |
+
if ( !empty( $_POST[ 's3newbucket' ] ) ) {
|
220 |
+
try {
|
221 |
+
$s3 = new AmazonS3( array( 'key' => $_POST[ 's3accesskey' ],
|
222 |
+
'secret' => BackWPup_Encryption::decrypt( $_POST[ 's3secretkey' ] ),
|
223 |
+
'certificate_authority' => TRUE ) );
|
224 |
+
$base_url = $this->get_s3_base_url( $_POST[ 's3region' ], $_POST[ 's3base_url' ] );
|
225 |
+
if ( stristr( $base_url, 'amazonaws.com' ) ) {
|
226 |
+
$s3->set_region( str_replace( array( 'http://', 'https://' ), '', $base_url ) );
|
227 |
+
} else {
|
228 |
+
$s3->set_hostname( str_replace( array( 'http://', 'https://' ), '', $base_url ) );
|
229 |
+
$s3->allow_hostname_override( FALSE );
|
230 |
+
if ( substr( $base_url, -1 ) == '/')
|
231 |
+
$s3->enable_path_style( TRUE );
|
232 |
+
}
|
233 |
+
if ( stristr( $base_url, 'http://' ) )
|
234 |
+
$s3->disable_ssl();
|
235 |
+
|
236 |
+
// set bucket creation region
|
237 |
+
if ( $_POST[ 's3region' ] == 'google-storage' || $_POST[ 's3region' ] == 'hosteurope' )
|
238 |
+
$region = 'EU';
|
239 |
+
else
|
240 |
+
$region = str_replace( array( 'http://', 'https://' ), '', $base_url );
|
241 |
+
|
242 |
+
$bucket = $s3->create_bucket( $_POST[ 's3newbucket' ], $region, 'private' );
|
243 |
+
|
244 |
+
if ( $bucket->status == 200 )
|
245 |
+
BackWPup_Admin::message( sprintf( __( 'Bucket %1$s created in %2$s.','backwpup'), $_POST[ 's3newbucket' ], $bucket[ 'Location' ] ) );
|
246 |
+
else
|
247 |
+
BackWPup_Admin::message( sprintf( __( 'Bucket %s could not be created.','backwpup'), $_POST[ 's3newbucket' ] ), TRUE );
|
248 |
+
|
249 |
+
}
|
250 |
+
catch ( Exception $e ) {
|
251 |
+
BackWPup_Admin::message( $e->getMessage(), TRUE );
|
252 |
+
}
|
253 |
+
BackWPup_Option::update( $jobid, 's3bucket', $_POST[ 's3newbucket' ] );
|
254 |
+
}
|
255 |
+
}
|
256 |
+
|
257 |
+
/**
|
258 |
+
* @param $jobdest
|
259 |
+
* @param $backupfile
|
260 |
+
*/
|
261 |
+
public function file_delete( $jobdest, $backupfile ) {
|
262 |
+
|
263 |
+
$files = get_site_transient( 'backwpup_'. strtolower( $jobdest ), array() );
|
264 |
+
list( $jobid, $dest ) = explode( '_', $jobdest );
|
265 |
+
|
266 |
+
if ( BackWPup_Option::get( $jobid, 's3accesskey' ) && BackWPup_Option::get( $jobid, 's3secretkey' ) && BackWPup_Option::get( $jobid, 's3bucket' ) ) {
|
267 |
+
try {
|
268 |
+
$s3 = new AmazonS3( array( 'key' => BackWPup_Option::get( $jobid, 's3accesskey' ),
|
269 |
+
'secret' => BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 's3secretkey' ) ),
|
270 |
+
'certificate_authority' => TRUE ) );
|
271 |
+
$base_url = $this->get_s3_base_url( BackWPup_Option::get( $jobid, 's3region' ), BackWPup_Option::get( $jobid, 's3base_url' ) );
|
272 |
+
if ( stristr( $base_url, 'amazonaws.com' ) ) {
|
273 |
+
$s3->set_region( str_replace( array( 'http://', 'https://' ), '', $base_url ) );
|
274 |
+
} else {
|
275 |
+
$s3->set_hostname( str_replace( array( 'http://', 'https://' ), '', $base_url ) );
|
276 |
+
$s3->allow_hostname_override( FALSE );
|
277 |
+
if ( substr( $base_url, -1 ) == '/')
|
278 |
+
$s3->enable_path_style( TRUE );
|
279 |
+
}
|
280 |
+
if ( stristr( $base_url, 'http://' ) )
|
281 |
+
$s3->disable_ssl();
|
282 |
+
|
283 |
+
$s3->delete_object( BackWPup_Option::get( $jobid, 's3bucket' ), $backupfile );
|
284 |
+
//update file list
|
285 |
+
foreach ( $files as $key => $file ) {
|
286 |
+
if ( is_array( $file ) && $file[ 'file' ] == $backupfile )
|
287 |
+
unset( $files[ $key ] );
|
288 |
+
}
|
289 |
+
unset( $s3 );
|
290 |
+
}
|
291 |
+
catch ( Exception $e ) {
|
292 |
+
BackWPup_Admin::message( sprintf( __('S3 Service API: %s','backwpup'), $e->getMessage() ), TRUE );
|
293 |
+
}
|
294 |
+
}
|
295 |
+
|
296 |
+
set_site_transient( 'backwpup_'. strtolower( $jobdest ), $files, 60 * 60 * 24 * 7 );
|
297 |
+
}
|
298 |
+
|
299 |
+
/**
|
300 |
+
* @param $jobid
|
301 |
+
* @param $get_file
|
302 |
+
*/
|
303 |
+
public function file_download( $jobid, $get_file ) {
|
304 |
+
|
305 |
+
try {
|
306 |
+
$s3 = new AmazonS3( array( 'key' => BackWPup_Option::get( $jobid, 's3accesskey' ),
|
307 |
+
'secret' => BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 's3secretkey' ) ),
|
308 |
+
'certificate_authority' => TRUE ) );
|
309 |
+
$base_url = $this->get_s3_base_url( BackWPup_Option::get( $jobid, 's3region' ), BackWPup_Option::get( $jobid, 's3base_url' ) );
|
310 |
+
if ( stristr( $base_url, 'amazonaws.com' ) ) {
|
311 |
+
$s3->set_region( str_replace( array( 'http://', 'https://' ), '', $base_url ) );
|
312 |
+
} else {
|
313 |
+
$s3->set_hostname( str_replace( array( 'http://', 'https://' ), '', $base_url ) );
|
314 |
+
$s3->allow_hostname_override( FALSE );
|
315 |
+
if ( substr( $base_url, -1 ) == '/')
|
316 |
+
$s3->enable_path_style( TRUE );
|
317 |
+
}
|
318 |
+
if ( stristr( $base_url, 'http://' ) )
|
319 |
+
$s3->disable_ssl();
|
320 |
+
|
321 |
+
$s3file = $s3->get_object( BackWPup_Option::get( $jobid, 's3bucket' ), $get_file );
|
322 |
+
}
|
323 |
+
catch ( Exception $e ) {
|
324 |
+
die( $e->getMessage() );
|
325 |
+
}
|
326 |
+
|
327 |
+
if ( $s3file->status==200 ) {
|
328 |
+
header( "Pragma: public" );
|
329 |
+
header( "Expires: 0" );
|
330 |
+
header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );;
|
331 |
+
header( "Content-Type: application/octet-stream" );
|
332 |
+
header( "Content-Disposition: attachment; filename=" . basename( $get_file ) . ";" );
|
333 |
+
header( "Content-Transfer-Encoding: binary" );
|
334 |
+
header( "Content-Length: " . $s3file->header->_info->size_download );
|
335 |
+
@set_time_limit( 0 );
|
336 |
+
echo $s3file->body;
|
337 |
+
die();
|
338 |
+
}
|
339 |
+
}
|
340 |
+
|
341 |
+
/**
|
342 |
+
* @param $jobdest
|
343 |
+
* @return mixed
|
344 |
+
*/
|
345 |
+
public function file_get_list( $jobdest ) {
|
346 |
+
|
347 |
+
return get_site_transient( 'backwpup_' . strtolower( $jobdest ) );
|
348 |
+
}
|
349 |
+
|
350 |
+
/**
|
351 |
+
* @param $job_object
|
352 |
+
* @return bool
|
353 |
+
*/
|
354 |
+
public function job_run_archive( &$job_object ) {
|
355 |
+
|
356 |
+
$job_object->substeps_todo = 2 + $job_object->backup_filesize;
|
357 |
+
$job_object->log( sprintf( __( '%d. Trying to send backup file to S3 Service …', 'backwpup' ), $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] ), E_USER_NOTICE );
|
358 |
+
|
359 |
+
try {
|
360 |
+
|
361 |
+
$s3 = new AmazonS3( array( 'key' => $job_object->job[ 's3accesskey' ],
|
362 |
+
'secret' => BackWPup_Encryption::decrypt( $job_object->job[ 's3secretkey' ] ),
|
363 |
+
'certificate_authority' => TRUE ) );
|
364 |
+
$base_url = $this->get_s3_base_url( $job_object->job[ 's3region' ], $job_object->job[ 's3base_url' ] );
|
365 |
+
if ( stristr( $base_url, 'amazonaws.com' ) ) {
|
366 |
+
$s3->set_region( str_replace( array( 'http://', 'https://' ), '', $base_url ) );
|
367 |
+
} else {
|
368 |
+
$s3->set_hostname( str_replace( array( 'http://', 'https://' ), '', $base_url ) );
|
369 |
+
$s3->allow_hostname_override( FALSE );
|
370 |
+
if ( substr( $base_url, -1 ) == '/')
|
371 |
+
$s3->enable_path_style( TRUE );
|
372 |
+
}
|
373 |
+
if ( stristr( $base_url, 'http://' ) )
|
374 |
+
$s3->disable_ssl();
|
375 |
+
|
376 |
+
|
377 |
+
if ( $s3->if_bucket_exists( $job_object->job[ 's3bucket' ] ) ) {
|
378 |
+
$job_object->log( sprintf( __( 'Connected to S3 Bucket "%1$s" in %2$s', 'backwpup' ), $job_object->job[ 's3bucket' ], $base_url ), E_USER_NOTICE );
|
379 |
+
}
|
380 |
+
else {
|
381 |
+
$job_object->log( sprintf( __( 'S3 Bucket "%s" does not exist!', 'backwpup' ), $job_object->job[ 's3bucket' ] ), E_USER_ERROR );
|
382 |
+
|
383 |
+
return TRUE;
|
384 |
+
}
|
385 |
+
|
386 |
+
//transfer file to S3
|
387 |
+
$job_object->log( __( 'Starting upload to S3 Service …', 'backwpup' ), E_USER_NOTICE );
|
388 |
+
|
389 |
+
//Transfer Backup to S3
|
390 |
+
if ( $job_object->job[ 's3storageclass' ] == 'REDUCED_REDUNDANCY' ) //set reduced redundancy or not
|
391 |
+
$storage=AmazonS3::STORAGE_REDUCED;
|
392 |
+
else
|
393 |
+
$storage=AmazonS3::STORAGE_STANDARD;
|
394 |
+
|
395 |
+
if ( empty( $job_object->job[ 's3ssencrypt' ] ) )
|
396 |
+
$job_object->job[ 's3ssencrypt' ] = NULL;
|
397 |
+
|
398 |
+
//set progress bar
|
399 |
+
$s3->register_streaming_read_callback( array( $job_object, 'curl_read_callback' ) );
|
400 |
+
|
401 |
+
$result = $s3->create_object( $job_object->job[ 's3bucket' ], $job_object->job[ 's3dir' ] . $job_object->backup_file, array( 'fileUpload' => $job_object->backup_folder . $job_object->backup_file, 'acl' => AmazonS3::ACL_PRIVATE, 'storage' => $storage, 'encryption' => $job_object->job[ 's3ssencrypt' ] ) );
|
402 |
+
|
403 |
+
if ( $result->status >= 200 and $result->status < 300 ) {
|
404 |
+
$job_object->substeps_done = 1 + $job_object->backup_filesize;
|
405 |
+
$job_object->log( sprintf( __( 'Backup transferred to %s.', 'backwpup' ), $this->get_s3_base_url( $job_object->job[ 's3region' ], $job_object->job[ 's3base_url' ] ). '/' .$job_object->job[ 's3bucket' ] . '/' . $job_object->job[ 's3dir' ] . $job_object->backup_file ), E_USER_NOTICE );
|
406 |
+
if ( ! empty( $job_object->job[ 'jobid' ] ) )
|
407 |
+
BackWPup_Option::update( $job_object->job[ 'jobid' ], 'lastbackupdownloadurl', network_admin_url( 'admin.php' ) . '?page=backwpupbackups&action=downloads3&file=' . $job_object->job[ 's3dir' ] . $job_object->backup_file . '&jobid=' . $job_object->job[ 'jobid' ] );
|
408 |
+
}
|
409 |
+
else {
|
410 |
+
$job_object->log( sprintf( __( 'Cannot transfer backup to S3! (%1$d) %2$s', 'backwpup' ), $result->status, $result->body ), E_USER_ERROR );
|
411 |
+
}
|
412 |
+
}
|
413 |
+
catch ( Exception $e ) {
|
414 |
+
$job_object->log( E_USER_ERROR, sprintf( __( 'S3 Service API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
415 |
+
|
416 |
+
return FALSE;
|
417 |
+
}
|
418 |
+
|
419 |
+
try {
|
420 |
+
$backupfilelist = array();
|
421 |
+
$filecounter = 0;
|
422 |
+
$files = array();
|
423 |
+
$objects = $s3->list_objects( $job_object->job[ 's3bucket' ], array( 'prefix' => $job_object->job[ 's3dir' ] ) );
|
424 |
+
if ( is_object( $objects ) ) {
|
425 |
+
foreach ( $objects->body->Contents as $object ) {
|
426 |
+
$file = basename( (string) $object->Key );
|
427 |
+
$changetime = strtotime( (string) $object->LastModified ) + ( get_option( 'gmt_offset' ) * 3600 );
|
428 |
+
if ( $job_object->is_backup_archive( $file ) )
|
429 |
+
$backupfilelist[ $changetime ] = $file;
|
430 |
+
$files[ $filecounter ][ 'folder' ] = $this->get_s3_base_url( $job_object->job[ 's3region' ], $job_object->job[ 's3base_url' ] ). '/' .$job_object->job[ 's3bucket' ] . '/' . dirname( (string) $object->Key );
|
431 |
+
$files[ $filecounter ][ 'file' ] = (string) $object->Key;
|
432 |
+
$files[ $filecounter ][ 'filename' ] = basename( $object->Key );
|
433 |
+
$files[ $filecounter ][ 'downloadurl' ] = network_admin_url( 'admin.php' ) . '?page=backwpupbackups&action=downloads3&file=' . (string) $object->Key . '&jobid=' . $job_object->job[ 'jobid' ];
|
434 |
+
$files[ $filecounter ][ 'filesize' ] = (int) $object->Size;
|
435 |
+
$files[ $filecounter ][ 'time' ] = $changetime;
|
436 |
+
$filecounter ++;
|
437 |
+
}
|
438 |
+
}
|
439 |
+
if ( $job_object->job[ 's3maxbackups' ] > 0 && is_object( $s3 ) ) { //Delete old backups
|
440 |
+
if ( count( $backupfilelist ) > $job_object->job[ 's3maxbackups' ] ) {
|
441 |
+
ksort( $backupfilelist );
|
442 |
+
$numdeltefiles = 0;
|
443 |
+
while ( $file = array_shift( $backupfilelist ) ) {
|
444 |
+
if ( count( $backupfilelist ) < $job_object->job[ 's3maxbackups' ] )
|
445 |
+
break;
|
446 |
+
//delete files on S3
|
447 |
+
$delete_s3 = $s3->delete_object( $job_object->job[ 's3bucket' ], $job_object->job[ 's3dir' ] . $file );
|
448 |
+
if ($delete_s3 ) {
|
449 |
+
foreach ( $files as $key => $filedata ) {
|
450 |
+
if ( $filedata[ 'file' ] == $job_object->job[ 's3dir' ] . $file )
|
451 |
+
unset( $files[ $key ] );
|
452 |
+
}
|
453 |
+
$numdeltefiles ++;
|
454 |
+
} else {
|
455 |
+
$job_object->log( sprintf( __( 'Cannot delete backup from %s.', 'backwpup' ), $this->get_s3_base_url( $job_object->job[ 's3region' ], $job_object->job[ 's3base_url' ] ). '/' .$job_object->job[ 's3bucket' ] . '/' . $job_object->job[ 's3dir' ] . $file ), E_USER_ERROR );
|
456 |
+
}
|
457 |
+
}
|
458 |
+
if ( $numdeltefiles > 0 )
|
459 |
+
$job_object->log( sprintf( _n( 'One file deleted on S3 Bucket.', '%d files deleted on S3 Bucket', $numdeltefiles, 'backwpup' ), $numdeltefiles ), E_USER_NOTICE );
|
460 |
+
}
|
461 |
+
}
|
462 |
+
set_site_transient( 'backwpup_' . $job_object->job[ 'jobid' ] . '_s3', $files, 60 * 60 * 24 * 7 );
|
463 |
+
}
|
464 |
+
catch ( Exception $e ) {
|
465 |
+
$job_object->log( E_USER_ERROR, sprintf( __( 'S3 Service API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
466 |
+
|
467 |
+
return FALSE;
|
468 |
+
}
|
469 |
+
$job_object->substeps_done = 2 + $job_object->backup_filesize;
|
470 |
+
|
471 |
+
return TRUE;
|
472 |
+
}
|
473 |
+
|
474 |
+
|
475 |
+
/**
|
476 |
+
* @param $job_object
|
477 |
+
* @return bool
|
478 |
+
*/
|
479 |
+
public function can_run( $job_object ) {
|
480 |
+
|
481 |
+
if ( empty( $job_object->job[ 's3accesskey' ] ) )
|
482 |
+
return FALSE;
|
483 |
+
|
484 |
+
if ( empty( $job_object->job[ 's3secretkey' ] ) )
|
485 |
+
return FALSE;
|
486 |
+
|
487 |
+
if ( empty( $job_object->job[ 's3bucket' ] ) )
|
488 |
+
return FALSE;
|
489 |
+
|
490 |
+
return TRUE;
|
491 |
+
}
|
492 |
+
|
493 |
+
/**
|
494 |
+
*
|
495 |
+
*/
|
496 |
+
public function edit_inline_js() {
|
497 |
+
//<script type="text/javascript">
|
498 |
+
?>
|
499 |
+
function awsgetbucket() {
|
500 |
+
var data = {
|
501 |
+
action: 'backwpup_dest_s3',
|
502 |
+
s3accesskey: $('input[name="s3accesskey"]').val(),
|
503 |
+
s3secretkey: $('input[name="s3secretkey"]').val(),
|
504 |
+
s3bucketselected: $('input[name="s3bucketselected"]').val(),
|
505 |
+
s3base_url: $('input[name="s3base_url"]').val(),
|
506 |
+
s3region: $('#s3region').val(),
|
507 |
+
_ajax_nonce: $('#backwpupajaxnonce').val()
|
508 |
+
};
|
509 |
+
$.post(ajaxurl, data, function(response) {
|
510 |
+
$('#s3bucketerror').remove();
|
511 |
+
$('#s3bucket').remove();
|
512 |
+
$('#s3bucketselected').after(response);
|
513 |
+
});
|
514 |
+
}
|
515 |
+
$('input[name="s3accesskey"]').change(function() {awsgetbucket();});
|
516 |
+
$('input[name="s3secretkey"]').change(function() {awsgetbucket();});
|
517 |
+
$('input[name="s3base_url"]').change(function() {awsgetbucket();});
|
518 |
+
$('#s3region').change(function() {awsgetbucket();});
|
519 |
+
<?php
|
520 |
+
}
|
521 |
+
|
522 |
+
/**
|
523 |
+
* @param string $args
|
524 |
+
*/
|
525 |
+
public function edit_ajax( $args = '' ) {
|
526 |
+
|
527 |
+
$error = '';
|
528 |
+
|
529 |
+
if ( is_array( $args ) ) {
|
530 |
+
$ajax = FALSE;
|
531 |
+
}
|
532 |
+
else {
|
533 |
+
if ( ! current_user_can( 'backwpup_jobs_edit' ) )
|
534 |
+
wp_die( -1 );
|
535 |
+
check_ajax_referer( 'backwpup_ajax_nonce' );
|
536 |
+
$args[ 's3accesskey' ] = $_POST[ 's3accesskey' ];
|
537 |
+
$args[ 's3secretkey' ] = $_POST[ 's3secretkey' ];
|
538 |
+
$args[ 's3bucketselected' ] = $_POST[ 's3bucketselected' ];
|
539 |
+
$args[ 's3base_url' ] = $_POST[ 's3base_url' ];
|
540 |
+
$args[ 's3region' ] = $_POST[ 's3region' ];
|
541 |
+
$ajax = TRUE;
|
542 |
+
}
|
543 |
+
echo '<span id="s3bucketerror" style="color:red;">';
|
544 |
+
|
545 |
+
if ( ! empty( $args[ 's3accesskey' ] ) && ! empty( $args[ 's3secretkey' ] ) ) {
|
546 |
+
try {
|
547 |
+
$s3 = new AmazonS3( array( 'key' => $args[ 's3accesskey' ],
|
548 |
+
'secret' => BackWPup_Encryption::decrypt( $args[ 's3secretkey' ] ),
|
549 |
+
'certificate_authority' => TRUE ) );
|
550 |
+
$base_url = $this->get_s3_base_url( $args[ 's3region' ], $args[ 's3base_url' ] );
|
551 |
+
if ( stristr( $base_url, 'amazonaws.com' ) ) {
|
552 |
+
$s3->set_region( str_replace( array( 'http://', 'https://' ), '', $base_url ) );
|
553 |
+
} else {
|
554 |
+
$s3->set_hostname( str_replace( array( 'http://', 'https://' ), '', $base_url ) );
|
555 |
+
$s3->allow_hostname_override( FALSE );
|
556 |
+
if ( substr( $base_url, -1 ) == '/')
|
557 |
+
$s3->enable_path_style( TRUE );
|
558 |
+
}
|
559 |
+
if ( stristr( $base_url, 'http://' ) )
|
560 |
+
$s3->disable_ssl();
|
561 |
+
|
562 |
+
$buckets = $s3->list_buckets();
|
563 |
+
}
|
564 |
+
catch ( Exception $e ) {
|
565 |
+
$error = $e->getMessage();
|
566 |
+
}
|
567 |
+
}
|
568 |
+
|
569 |
+
if ( empty( $args[ 's3accesskey' ] ) )
|
570 |
+
_e( 'Missing access key!', 'backwpup' );
|
571 |
+
elseif ( empty( $args[ 's3secretkey' ] ) )
|
572 |
+
_e( 'Missing secret access key!', 'backwpup' );
|
573 |
+
elseif ( ! empty( $error ) && $error == 'Access Denied' )
|
574 |
+
echo '<input type="text" name="s3bucket" id="s3bucket" value="' . esc_attr( $args[ 's3bucketselected' ] ) . '" >';
|
575 |
+
elseif ( ! empty( $error ) )
|
576 |
+
echo esc_html( $error );
|
577 |
+
elseif ( ! isset( $buckets ) || count( $buckets->body->Buckets->Bucket ) < 1 )
|
578 |
+
_e( 'No bucket found!', 'backwpup' );
|
579 |
+
echo '</span>';
|
580 |
+
|
581 |
+
if ( ! empty( $buckets->body->Buckets->Bucket ) ) {
|
582 |
+
echo '<select name="s3bucket" id="s3bucket">';
|
583 |
+
foreach ( $buckets->body->Buckets->Bucket as $bucket ) {
|
584 |
+
echo "<option " . selected( $args[ 's3bucketselected' ], esc_attr( $bucket->Name ), FALSE ) . ">" . esc_attr( $bucket->Name ) . "</option>";
|
585 |
+
}
|
586 |
+
echo '</select>';
|
587 |
+
}
|
588 |
+
|
589 |
+
if ( $ajax )
|
590 |
+
die();
|
591 |
+
}
|
592 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/class-destination-s3.php
CHANGED
@@ -1,648 +1,677 @@
|
|
1 |
-
<?php
|
2 |
-
// Amazon S3 SDK v2.
|
3 |
-
// http://aws.amazon.com/de/sdkforphp2/
|
4 |
-
// https://github.com/aws/aws-sdk-php
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
return '
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
<
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
<tr>
|
165 |
-
<th scope="row"
|
166 |
-
<td>
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
<?php
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
<
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
</td>
|
194 |
-
</tr>
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
}
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
$
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
$
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
//
|
405 |
-
|
406 |
-
$create_args[ '
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
$job_object
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
}
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Amazon S3 SDK v2.4.11
|
3 |
+
// http://aws.amazon.com/de/sdkforphp2/
|
4 |
+
// https://github.com/aws/aws-sdk-php
|
5 |
+
include_once BackWPup::get_plugin_data( 'PluginDir' ) . '/vendor/autoloader.php';
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Documentation: http://docs.amazonwebservices.com/aws-sdk-php-2/latest/class-Aws.S3.S3Client.html
|
9 |
+
*/
|
10 |
+
class BackWPup_Destination_S3 extends BackWPup_Destinations {
|
11 |
+
|
12 |
+
|
13 |
+
/**
|
14 |
+
* @param $s3region
|
15 |
+
* @param string $s3base_url
|
16 |
+
* @return string
|
17 |
+
*/
|
18 |
+
protected function get_s3_base_url( $s3region, $s3base_url = '' ) {
|
19 |
+
|
20 |
+
if ( ! empty( $s3base_url ) )
|
21 |
+
return $s3base_url;
|
22 |
+
|
23 |
+
switch ( $s3region ) {
|
24 |
+
case 'us-east-1':
|
25 |
+
return 'https://s3.amazonaws.com';
|
26 |
+
case 'us-west-1':
|
27 |
+
return 'https://s3-us-west-1.amazonaws.com';
|
28 |
+
case 'us-west-2':
|
29 |
+
return 'https://s3-us-west-2.amazonaws.com';
|
30 |
+
case 'eu-west-1':
|
31 |
+
return 'https://s3-eu-west-1.amazonaws.com';
|
32 |
+
case 'ap-northeast-1':
|
33 |
+
return 'https://s3-ap-northeast-1.amazonaws.com';
|
34 |
+
case 'ap-southeast-1':
|
35 |
+
return 'https://s3-ap-southeast-1.amazonaws.com';
|
36 |
+
case 'ap-southeast-2':
|
37 |
+
return 'https://s3-ap-southeast-2.amazonaws.com';
|
38 |
+
case 'sa-east-1':
|
39 |
+
return 'https://s3-sa-east-1.amazonaws.com';
|
40 |
+
case 'google-storage':
|
41 |
+
return 'https://storage.googleapis.com';
|
42 |
+
case 'hosteurope':
|
43 |
+
return 'https://cs.hosteurope.de';
|
44 |
+
case 'dreamhost':
|
45 |
+
return 'https://objects.dreamhost.com';
|
46 |
+
default:
|
47 |
+
return '';
|
48 |
+
}
|
49 |
+
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @return array
|
54 |
+
*/
|
55 |
+
public function option_defaults() {
|
56 |
+
|
57 |
+
return array( 's3accesskey' => '', 's3secretkey' => '', 's3bucket' => '', 's3region' => 'us-east-1', 's3base_url' => '', 's3ssencrypt' => '', 's3storageclass' => '', 's3dir' => trailingslashit( sanitize_file_name( get_bloginfo( 'name' ) ) ), 's3maxbackups' => 15, 's3syncnodelete' => TRUE, 's3multipart' => TRUE );
|
58 |
+
}
|
59 |
+
|
60 |
+
|
61 |
+
/**
|
62 |
+
* @param $jobid
|
63 |
+
*/
|
64 |
+
public function edit_tab( $jobid ) {
|
65 |
+
|
66 |
+
?>
|
67 |
+
<h3 class="title"><?php _e( 'S3 Service', 'backwpup' ) ?></h3>
|
68 |
+
<p></p>
|
69 |
+
<table class="form-table">
|
70 |
+
<tr>
|
71 |
+
<th scope="row"><label for="s3region"><?php _e( 'Select a S3 service', 'backwpup' ) ?></label></th>
|
72 |
+
<td>
|
73 |
+
<select name="s3region" id="s3region" title="<?php _e( 'Amazon S3 Region', 'backwpup' ); ?>">
|
74 |
+
<option value="us-east-1" <?php selected( 'us-east-1', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: US Standard', 'backwpup' ); ?></option>
|
75 |
+
<option value="us-west-1" <?php selected( 'us-west-1', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: US West (Northern California)', 'backwpup' ); ?></option>
|
76 |
+
<option value="us-west-2" <?php selected( 'us-west-2', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: US West (Oregon)', 'backwpup' ); ?></option>
|
77 |
+
<option value="eu-west-1" <?php selected( 'eu-west-1', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: EU (Ireland)', 'backwpup' ); ?></option>
|
78 |
+
<option value="ap-northeast-1" <?php selected( 'ap-northeast-1', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: Asia Pacific (Tokyo)', 'backwpup' ); ?></option>
|
79 |
+
<option value="ap-southeast-1" <?php selected( 'ap-southeast-1', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: Asia Pacific (Singapore)', 'backwpup' ); ?></option>
|
80 |
+
<option value="ap-southeast-2" <?php selected( 'ap-southeast-2', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: Asia Pacific (Sydney)', 'backwpup' ); ?></option>
|
81 |
+
<option value="sa-east-1" <?php selected( 'sa-east-1', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Amazon S3: South America (Sao Paulo)', 'backwpup' ); ?></option>
|
82 |
+
<option value="google-storage" <?php selected( 'google-storage', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Google Storage (Interoperable Access)', 'backwpup' ); ?></option>
|
83 |
+
<option value="hosteurope" <?php selected( 'hosteurope', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Hosteurope Cloud Storage', 'backwpup' ); ?></option>
|
84 |
+
<option value="dreamhost" <?php selected( 'dreamhost', BackWPup_Option::get( $jobid, 's3region' ), TRUE ) ?>><?php _e( 'Dream Host Cloud Storage', 'backwpup' ); ?></option>
|
85 |
+
</select>
|
86 |
+
</td>
|
87 |
+
</tr>
|
88 |
+
<tr>
|
89 |
+
<th scope="row"><label for="s3base_url"><?php _e( 'Or a S3 Server URL', 'backwpup' ) ?></label></th>
|
90 |
+
<td>
|
91 |
+
<input id="s3base_url" name="s3base_url" type="text" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 's3base_url' ) );?>" class="regular-text" autocomplete="off" />
|
92 |
+
</td>
|
93 |
+
</tr>
|
94 |
+
</table>
|
95 |
+
|
96 |
+
<h3 class="title"><?php _e( 'S3 Access Keys', 'backwpup' ); ?></h3>
|
97 |
+
<p></p>
|
98 |
+
<table class="form-table">
|
99 |
+
<tr>
|
100 |
+
<th scope="row"><label for="s3accesskey"><?php _e( 'Access Key', 'backwpup' ); ?></label></th>
|
101 |
+
<td>
|
102 |
+
<input id="s3accesskey" name="s3accesskey" type="text"
|
103 |
+
value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 's3accesskey' ) );?>" class="regular-text" autocomplete="off" />
|
104 |
+
</td>
|
105 |
+
</tr>
|
106 |
+
<tr>
|
107 |
+
<th scope="row"><label for="s3secretkey"><?php _e( 'Secret Key', 'backwpup' ); ?></label></th>
|
108 |
+
<td>
|
109 |
+
<input id="s3secretkey" name="s3secretkey" type="password"
|
110 |
+
value="<?php echo esc_attr( BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 's3secretkey' ) ) ); ?>" class="regular-text" autocomplete="off" />
|
111 |
+
</td>
|
112 |
+
</tr>
|
113 |
+
</table>
|
114 |
+
|
115 |
+
<h3 class="title"><?php _e( 'S3 Bucket', 'backwpup' ); ?></h3>
|
116 |
+
<p></p>
|
117 |
+
<table class="form-table">
|
118 |
+
<tr>
|
119 |
+
<th scope="row"><label for="s3bucketselected"><?php _e( 'Bucket selection', 'backwpup' ); ?></label></th>
|
120 |
+
<td>
|
121 |
+
<input id="s3bucketselected" name="s3bucketselected" type="hidden" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 's3bucket' ) ); ?>" />
|
122 |
+
<?php if ( BackWPup_Option::get( $jobid, 's3accesskey' ) && BackWPup_Option::get( $jobid, 's3secretkey' ) ) $this->edit_ajax( array(
|
123 |
+
's3accesskey' => BackWPup_Option::get( $jobid, 's3accesskey' ),
|
124 |
+
's3secretkey' => BackWPup_Encryption::decrypt(BackWPup_Option::get( $jobid, 's3secretkey' ) ),
|
125 |
+
's3bucketselected' => BackWPup_Option::get( $jobid, 's3bucket' ),
|
126 |
+
's3base_url' => BackWPup_Option::get( $jobid, 's3base_url' ),
|
127 |
+
's3region' => BackWPup_Option::get( $jobid, 's3region' )
|
128 |
+
) ); ?>
|
129 |
+
</td>
|
130 |
+
</tr>
|
131 |
+
<tr>
|
132 |
+
<th scope="row"><label for="s3newbucket"><?php _e( 'Create a new bucket', 'backwpup' ); ?></label></th>
|
133 |
+
<td>
|
134 |
+
<input id="s3newbucket" name="s3newbucket" type="text" value="" class="small-text" autocomplete="off" />
|
135 |
+
</td>
|
136 |
+
</tr>
|
137 |
+
</table>
|
138 |
+
|
139 |
+
<h3 class="title"><?php _e( 'S3 Backup settings', 'backwpup' ); ?></h3>
|
140 |
+
<p></p>
|
141 |
+
<table class="form-table">
|
142 |
+
<tr>
|
143 |
+
<th scope="row"><label for="ids3dir"><?php _e( 'Folder in bucket', 'backwpup' ); ?></label></th>
|
144 |
+
<td>
|
145 |
+
<input id="ids3dir" name="s3dir" type="text" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 's3dir' ) ); ?>" class="regular-text" />
|
146 |
+
</td>
|
147 |
+
</tr>
|
148 |
+
<tr>
|
149 |
+
<th scope="row"><?php _e( 'File deletion', 'backwpup' ); ?></th>
|
150 |
+
<td>
|
151 |
+
<?php
|
152 |
+
if ( BackWPup_Option::get( $jobid, 'backuptype' ) == 'archive' ) {
|
153 |
+
?>
|
154 |
+
<label for="ids3maxbackups"><input id="ids3maxbackups" name="s3maxbackups" type="text" size="3" value="<?php echo esc_attr( BackWPup_Option::get( $jobid, 's3maxbackups' ) ); ?>" class="small-text help-tip" title="<?php esc_attr_e( 'Oldest files will be deleted first. 0 = no deletion', 'backwpup' ); ?>" />
|
155 |
+
<?php _e( 'Number of files to keep in folder.', 'backwpup' ); ?></label>
|
156 |
+
<?php } else { ?>
|
157 |
+
<label for="ids3syncnodelete"><input class="checkbox" value="1"
|
158 |
+
type="checkbox" <?php checked( BackWPup_Option::get( $jobid, 's3syncnodelete' ), TRUE ); ?>
|
159 |
+
name="s3syncnodelete" id="ids3syncnodelete" /> <?php _e( 'Do not delete files while syncing to destination!', 'backwpup' ); ?></label>
|
160 |
+
<?php } ?>
|
161 |
+
</td>
|
162 |
+
</tr>
|
163 |
+
<?php if ( BackWPup_Option::get( $jobid, 'backuptype' ) == 'archive' ) { ?>
|
164 |
+
<tr>
|
165 |
+
<th scope="row"><?php _e( 'Multipart Upload', 'backwpup' ); ?></th>
|
166 |
+
<td>
|
167 |
+
<label for="ids3multipart"><input class="checkbox help-tip" value="1" title="<?php esc_attr_e( 'Multipart splits file into multiple chunks while uploading. This is necessary for displaying the upload process and to transfer bigger files. Works without a problem on Amazon. Other services might have issues.', 'backwpup'); ?>"
|
168 |
+
type="checkbox" <?php checked( BackWPup_Option::get( $jobid, 's3multipart' ), TRUE ); ?>
|
169 |
+
name="s3multipart" id="ids3multipart" /> <?php _e( 'Use multipart upload for uploading a file', 'backwpup' ); ?></label>
|
170 |
+
</td>
|
171 |
+
</tr>
|
172 |
+
<?php } ?>
|
173 |
+
</table>
|
174 |
+
|
175 |
+
<h3 class="title"><?php _e( 'Amazon specific settings', 'backwpup' ); ?></h3>
|
176 |
+
<p></p>
|
177 |
+
<table class="form-table">
|
178 |
+
<tr>
|
179 |
+
<th scope="row"><label for="ids3storageclass"><?php _e( 'Amazon: Storage Class', 'backwpup' ); ?></label></th>
|
180 |
+
<td>
|
181 |
+
<select name="s3storageclass" id="ids3storageclass" title="<?php _e( 'Amazon: Storage Class', 'backwpup' ); ?>">
|
182 |
+
<option value="" <?php selected( 'us-east-1', BackWPup_Option::get( $jobid, 's3storageclass' ), TRUE ) ?>><?php _e( 'none', 'backwpup' ); ?></option>
|
183 |
+
<option value="REDUCED_REDUNDANCY" <?php selected( 'REDUCED_REDUNDANCY', BackWPup_Option::get( $jobid, 's3storageclass' ), TRUE ) ?>><?php _e( 'Reduced Redundancy', 'backwpup' ); ?></option>
|
184 |
+
</select>
|
185 |
+
</td>
|
186 |
+
</tr>
|
187 |
+
<tr>
|
188 |
+
<th scope="row"><label for="ids3ssencrypt"><?php _e( 'Server side encryption', 'backwpup' ); ?></label></th>
|
189 |
+
<td>
|
190 |
+
<input class="checkbox" value="AES256"
|
191 |
+
type="checkbox" <?php checked( BackWPup_Option::get( $jobid, 's3ssencrypt' ), 'AES256' ); ?>
|
192 |
+
name="s3ssencrypt" id="ids3ssencrypt" /> <?php _e( 'Save files encrypted (AES256) on server.', 'backwpup' ); ?>
|
193 |
+
</td>
|
194 |
+
</tr>
|
195 |
+
</table>
|
196 |
+
|
197 |
+
<?php
|
198 |
+
}
|
199 |
+
|
200 |
+
|
201 |
+
/**
|
202 |
+
* @param $jobid
|
203 |
+
* @return string
|
204 |
+
*/
|
205 |
+
public function edit_form_post_save( $jobid ) {
|
206 |
+
|
207 |
+
BackWPup_Option::update( $jobid, 's3accesskey', isset( $_POST[ 's3accesskey' ] ) ? $_POST[ 's3accesskey' ] : '' );
|
208 |
+
BackWPup_Option::update( $jobid, 's3secretkey', isset( $_POST[ 's3secretkey' ] ) ? BackWPup_Encryption::encrypt( $_POST[ 's3secretkey' ] ) : '' );
|
209 |
+
BackWPup_Option::update( $jobid, 's3base_url', isset( $_POST[ 's3base_url' ] ) ? esc_url_raw( $_POST[ 's3base_url' ] ) : '' );
|
210 |
+
BackWPup_Option::update( $jobid, 's3region', isset( $_POST[ 's3region' ] ) ? $_POST[ 's3region' ] : '' );
|
211 |
+
BackWPup_Option::update( $jobid, 's3storageclass', isset( $_POST[ 's3storageclass' ] ) ? $_POST[ 's3storageclass' ] : '' );
|
212 |
+
BackWPup_Option::update( $jobid, 's3ssencrypt', ( isset( $_POST[ 's3ssencrypt' ] ) && $_POST[ 's3ssencrypt' ] == 'AES256' ) ? 'AES256' : '' );
|
213 |
+
BackWPup_Option::update( $jobid, 's3bucket', isset( $_POST[ 's3bucket' ] ) ? $_POST[ 's3bucket' ] : '' );
|
214 |
+
|
215 |
+
$_POST[ 's3dir' ] = trailingslashit( str_replace( '//', '/', str_replace( '\\', '/', trim( stripslashes( $_POST[ 's3dir' ] ) ) ) ) );
|
216 |
+
if ( substr( $_POST[ 's3dir' ], 0, 1 ) == '/' )
|
217 |
+
$_POST[ 's3dir' ] = substr( $_POST[ 's3dir' ], 1 );
|
218 |
+
if ( $_POST[ 's3dir' ] == '/' )
|
219 |
+
$_POST[ 's3dir' ] = '';
|
220 |
+
BackWPup_Option::update( $jobid, 's3dir', $_POST[ 's3dir' ] );
|
221 |
+
|
222 |
+
BackWPup_Option::update( $jobid, 's3maxbackups', isset( $_POST[ 's3maxbackups' ] ) ? (int)$_POST[ 's3maxbackups' ] : 0 );
|
223 |
+
BackWPup_Option::update( $jobid, 's3syncnodelete', ( isset( $_POST[ 's3syncnodelete' ] ) && $_POST[ 's3syncnodelete' ] == 1 ) ? TRUE : FALSE );
|
224 |
+
BackWPup_Option::update( $jobid, 's3multipart', ( isset( $_POST[ 's3multipart' ] ) && $_POST[ 's3multipart' ] == 1 ) ? TRUE : FALSE );
|
225 |
+
|
226 |
+
//create new bucket
|
227 |
+
if ( !empty( $_POST[ 's3newbucket' ] ) ) {
|
228 |
+
try {
|
229 |
+
$s3 = Aws\S3\S3Client::factory( array( 'key' => $_POST[ 's3accesskey' ],
|
230 |
+
'secret' => $_POST[ 's3secretkey' ],
|
231 |
+
'region' => $_POST[ 's3region' ],
|
232 |
+
'base_url' => $this->get_s3_base_url( $_POST[ 's3region' ], $_POST[ 's3base_url' ]),
|
233 |
+
'scheme' => 'https',
|
234 |
+
'ssl.certificate_authority' => BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem') );
|
235 |
+
// set bucket creation region
|
236 |
+
if ( $_POST[ 's3region' ] == 'google-storage' || $_POST[ 's3region' ] == 'hosteurope' )
|
237 |
+
$region = 'EU';
|
238 |
+
else
|
239 |
+
$region = $_POST[ 's3region' ];
|
240 |
+
|
241 |
+
if ($s3->isValidBucketName( $_POST[ 's3newbucket' ] ) ) {
|
242 |
+
$bucket = $s3->createBucket( array(
|
243 |
+
'Bucket' => $_POST[ 's3newbucket' ] ,
|
244 |
+
'LocationConstraint' => $region
|
245 |
+
) );
|
246 |
+
$s3->waitUntil('bucket_exists', $_POST[ 's3newbucket' ]);
|
247 |
+
if ( $bucket->get( 'Location' ) )
|
248 |
+
BackWPup_Admin::message( sprintf( __( 'Bucket %1$s created in %2$s.','backwpup'), $_POST[ 's3newbucket' ], $bucket->get( 'Location' ) ) );
|
249 |
+
else
|
250 |
+
BackWPup_Admin::message( sprintf( __( 'Bucket %s could not be created.','backwpup'), $_POST[ 's3newbucket' ] ), TRUE );
|
251 |
+
} else {
|
252 |
+
BackWPup_Admin::message( sprintf( __( ' %s is not a valid bucket name.','backwpup'), $_POST[ 's3newbucket' ] ), TRUE );
|
253 |
+
}
|
254 |
+
}
|
255 |
+
catch ( Aws\S3\Exception\S3Exception $e ) {
|
256 |
+
BackWPup_Admin::message( $e->getMessage(), TRUE );
|
257 |
+
}
|
258 |
+
BackWPup_Option::update( $jobid, 's3bucket', $_POST[ 's3newbucket' ] );
|
259 |
+
}
|
260 |
+
}
|
261 |
+
|
262 |
+
/**
|
263 |
+
* @param $jobdest
|
264 |
+
* @param $backupfile
|
265 |
+
*/
|
266 |
+
public function file_delete( $jobdest, $backupfile ) {
|
267 |
+
|
268 |
+
$files = get_site_transient( 'backwpup_'. strtolower( $jobdest ), array() );
|
269 |
+
list( $jobid, $dest ) = explode( '_', $jobdest );
|
270 |
+
|
271 |
+
if ( BackWPup_Option::get( $jobid, 's3accesskey' ) && BackWPup_Option::get( $jobid, 's3secretkey' ) && BackWPup_Option::get( $jobid, 's3bucket' ) ) {
|
272 |
+
try {
|
273 |
+
$s3 = Aws\S3\S3Client::factory( array( 'key' => BackWPup_Option::get( $jobid, 's3accesskey' ),
|
274 |
+
'secret' => BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 's3secretkey' ) ),
|
275 |
+
'region' => BackWPup_Option::get( $jobid, 's3region' ),
|
276 |
+
'base_url' => $this->get_s3_base_url( BackWPup_Option::get( $jobid, 's3region' ), BackWPup_Option::get( $jobid, 's3base_url' ) ),
|
277 |
+
'scheme' => 'https',
|
278 |
+
'ssl.certificate_authority' => BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem') );
|
279 |
+
|
280 |
+
$s3->deleteObject( array(
|
281 |
+
'Bucket' => BackWPup_Option::get( $jobid, 's3bucket' ),
|
282 |
+
'Key' => $backupfile
|
283 |
+
) );
|
284 |
+
//update file list
|
285 |
+
foreach ( $files as $key => $file ) {
|
286 |
+
if ( is_array( $file ) && $file[ 'file' ] == $backupfile )
|
287 |
+
unset( $files[ $key ] );
|
288 |
+
}
|
289 |
+
unset( $s3 );
|
290 |
+
}
|
291 |
+
catch ( Exception $e ) {
|
292 |
+
BackWPup_Admin::message( sprintf( __('S3 Service API: %s','backwpup'), $e->getMessage() ), TRUE );
|
293 |
+
}
|
294 |
+
}
|
295 |
+
|
296 |
+
set_site_transient( 'backwpup_'. strtolower( $jobdest ), $files, 60 * 60 * 24 * 7 );
|
297 |
+
}
|
298 |
+
|
299 |
+
/**
|
300 |
+
* @param $jobid
|
301 |
+
* @param $get_file
|
302 |
+
*/
|
303 |
+
public function file_download( $jobid, $get_file ) {
|
304 |
+
|
305 |
+
try {
|
306 |
+
$s3 = Aws\S3\S3Client::factory( array( 'key' => BackWPup_Option::get( $jobid, 's3accesskey' ),
|
307 |
+
'secret' => BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 's3secretkey' ) ),
|
308 |
+
'region' => BackWPup_Option::get( $jobid, 's3region' ),
|
309 |
+
'base_url' => $this->get_s3_base_url( BackWPup_Option::get( $jobid, 's3region' ), BackWPup_Option::get( $jobid, 's3base_url' ) ),
|
310 |
+
'scheme' => 'https',
|
311 |
+
'ssl.certificate_authority' => BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem') );
|
312 |
+
|
313 |
+
$s3file = $s3->getObject( array(
|
314 |
+
'Bucket' => BackWPup_Option::get( $jobid, 's3bucket' ),
|
315 |
+
'Key' => $get_file ) );
|
316 |
+
}
|
317 |
+
catch ( Exception $e ) {
|
318 |
+
die( $e->getMessage() );
|
319 |
+
}
|
320 |
+
|
321 |
+
if ( $s3file[ 'ContentLength' ] > 0 && ! empty( $s3file[ 'ContentType' ] ) ) {
|
322 |
+
header( "Pragma: public" );
|
323 |
+
header( "Expires: 0" );
|
324 |
+
header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );;
|
325 |
+
header( "Content-Type: application/octet-stream" );
|
326 |
+
header( "Content-Disposition: attachment; filename=" . basename( $get_file ) . ";" );
|
327 |
+
header( "Content-Transfer-Encoding: binary" );
|
328 |
+
header( "Content-Length: " . $s3file[ 'ContentLength' ] );
|
329 |
+
@set_time_limit( 0 );
|
330 |
+
$body = $s3file->get( 'Body' );
|
331 |
+
$body->rewind();
|
332 |
+
while ( $filedata = $body->read( 1024 ) ) {
|
333 |
+
echo $filedata;
|
334 |
+
}
|
335 |
+
die();
|
336 |
+
}
|
337 |
+
}
|
338 |
+
|
339 |
+
/**
|
340 |
+
* @param $jobdest
|
341 |
+
* @return mixed
|
342 |
+
*/
|
343 |
+
public function file_get_list( $jobdest ) {
|
344 |
+
|
345 |
+
return get_site_transient( 'backwpup_' . strtolower( $jobdest ) );
|
346 |
+
}
|
347 |
+
|
348 |
+
/**
|
349 |
+
* @param $job_object
|
350 |
+
* @return bool
|
351 |
+
*/
|
352 |
+
public function job_run_archive( &$job_object ) {
|
353 |
+
|
354 |
+
$job_object->substeps_todo = 2 + $job_object->backup_filesize;
|
355 |
+
if ( $job_object->steps_data[ $job_object->step_working ]['SAVE_STEP_TRY'] != $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] )
|
356 |
+
$job_object->log( sprintf( __( '%d. Trying to send backup file to S3 Service …', 'backwpup' ), $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] ), E_USER_NOTICE );
|
357 |
+
|
358 |
+
try {
|
359 |
+
$s3 = Aws\S3\S3Client::factory( array( 'key' => $job_object->job[ 's3accesskey' ],
|
360 |
+
'secret' => BackWPup_Encryption::decrypt( $job_object->job[ 's3secretkey' ] ),
|
361 |
+
'region' => $job_object->job[ 's3region' ],
|
362 |
+
'base_url' => $this->get_s3_base_url( $job_object->job[ 's3region' ], $job_object->job[ 's3base_url' ] ),
|
363 |
+
'scheme' => 'https',
|
364 |
+
'ssl.certificate_authority' => BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem') );
|
365 |
+
|
366 |
+
if ( $job_object->steps_data[ $job_object->step_working ]['SAVE_STEP_TRY'] != $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] && $job_object->substeps_done < $job_object->backup_filesize ) {
|
367 |
+
if ( $s3->doesBucketExist( $job_object->job[ 's3bucket' ] ) ) {
|
368 |
+
$bucketregion = $s3->getBucketLocation( array( 'Bucket' => $job_object->job[ 's3bucket' ] ) );
|
369 |
+
$job_object->log( sprintf( __( 'Connected to S3 Bucket "%1$s" in %2$s', 'backwpup' ), $job_object->job[ 's3bucket' ], $bucketregion->get( 'Location' ) ), E_USER_NOTICE );
|
370 |
+
}
|
371 |
+
else {
|
372 |
+
$job_object->log( sprintf( __( 'S3 Bucket "%s" does not exist!', 'backwpup' ), $job_object->job[ 's3bucket' ] ), E_USER_ERROR );
|
373 |
+
|
374 |
+
return TRUE;
|
375 |
+
}
|
376 |
+
|
377 |
+
if ( $job_object->job[ 's3multipart' ] ) {
|
378 |
+
//Check for aboded Multipart Uploads
|
379 |
+
$job_object->log( __( 'Checking for not aborted multipart Uploads …', 'backwpup' ) );
|
380 |
+
$multipart_uploads = $s3->listMultipartUploads( array( 'Bucket' => $job_object->job[ 's3bucket' ] ) );
|
381 |
+
$uploads = $multipart_uploads->get( 'Uploads' );
|
382 |
+
if ( ! empty( $uploads ) ) {
|
383 |
+
foreach( $uploads as $upload ) {
|
384 |
+
if ( empty( $job_object->steps_data[ $job_object->step_working ][ 'UploadId' ] ) || $job_object->steps_data[ $job_object->step_working ][ 'UploadId' ] != $upload[ 'UploadId' ] ) {
|
385 |
+
$s3->abortMultipartUpload( array( 'Bucket' => $job_object->job[ 's3bucket' ], 'Key' => $upload[ 'Key' ], 'UploadId' => $upload[ 'UploadId' ] ) );
|
386 |
+
$job_object->log( sprintf( __( 'Upload for %s aborted.', 'backwpup' ), $upload[ 'Key' ] ) );
|
387 |
+
}
|
388 |
+
}
|
389 |
+
}
|
390 |
+
}
|
391 |
+
|
392 |
+
//transfer file to S3
|
393 |
+
$job_object->log( __( 'Starting upload to S3 Service …', 'backwpup' ) );
|
394 |
+
}
|
395 |
+
|
396 |
+
|
397 |
+
if ( ! $job_object->job[ 's3multipart' ] ) {
|
398 |
+
//Prepare Upload
|
399 |
+
$create_args = array();
|
400 |
+
$create_args[ 'Bucket' ] = $job_object->job[ 's3bucket' ];
|
401 |
+
$create_args[ 'ACL' ] = 'private';
|
402 |
+
if ( ! empty( $job_object->job[ 's3ssencrypt' ] ) )
|
403 |
+
$create_args[ 'ServerSideEncryption' ] = $job_object->job[ 's3ssencrypt' ]; //AES256
|
404 |
+
if ( ! empty( $job_object->job[ 's3storageclass' ] ) ) //REDUCED_REDUNDANCY
|
405 |
+
$create_args[ 'StorageClass' ] = $job_object->job[ 's3storageclass' ];
|
406 |
+
$create_args[ 'Metadata' ] = array( 'BackupTime' => date_i18n( 'Y-m-d H:i:s', $job_object->start_time ) );
|
407 |
+
|
408 |
+
$create_args[ 'Body' ] = fopen( $job_object->backup_folder . $job_object->backup_file, 'r' );
|
409 |
+
$create_args[ 'Key' ] = $job_object->job[ 's3dir' ] . $job_object->backup_file;
|
410 |
+
$create_args[ 'ContentType' ] = $job_object->get_mime_type( $job_object->backup_folder . $job_object->backup_file );
|
411 |
+
|
412 |
+
try {
|
413 |
+
$s3->putObject( $create_args );
|
414 |
+
} catch ( Aws\Common\Exception\MultipartUploadException $e ) {
|
415 |
+
$job_object->log( E_USER_ERROR, sprintf( __( 'S3 Service API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
416 |
+
|
417 |
+
return FALSE;
|
418 |
+
}
|
419 |
+
} else {
|
420 |
+
//Prepare Upload
|
421 |
+
$job_object->steps_data[ $job_object->step_working ][ 'file_handel' ] = fopen( $job_object->backup_folder . $job_object->backup_file, 'rb' );
|
422 |
+
fseek( $job_object->steps_data[ $job_object->step_working ][ 'file_handel' ], $job_object->substeps_done );
|
423 |
+
|
424 |
+
try {
|
425 |
+
|
426 |
+
if ( empty ( $job_object->steps_data[ $job_object->step_working ][ 'UploadId' ] ) ) {
|
427 |
+
$args = array( 'ACL' => 'private',
|
428 |
+
'Bucket' => $job_object->job[ 's3bucket' ],
|
429 |
+
'ContentType' => $job_object->get_mime_type( $job_object->backup_folder . $job_object->backup_file ),
|
430 |
+
'Key' => $job_object->job[ 's3dir' ] . $job_object->backup_file );
|
431 |
+
if ( !empty( $job_object->job[ 's3ssencrypt' ] ) )
|
432 |
+
$args[ 'ServerSideEncryption' ] = $job_object->job[ 's3ssencrypt' ];
|
433 |
+
if ( !empty( $job_object->job[ 's3storageclass' ] ) )
|
434 |
+
$args[ 'StorageClass' ] = empty( $job_object->job[ 's3storageclass' ] ) ? 'STANDARD' : 'REDUCED_REDUNDANCY';
|
435 |
+
|
436 |
+
$upload = $s3->createMultipartUpload( $args );
|
437 |
+
|
438 |
+
$job_object->steps_data[ $job_object->step_working ][ 'UploadId' ] = $upload->get( 'UploadId' );
|
439 |
+
$job_object->steps_data[ $job_object->step_working ][ 'Parts' ] = array();
|
440 |
+
$job_object->steps_data[ $job_object->step_working ][ 'Part' ] = 1;
|
441 |
+
}
|
442 |
+
|
443 |
+
while ( ! feof( $job_object->steps_data[ $job_object->step_working ][ 'file_handel' ] ) ) {
|
444 |
+
$chunk_upload_start = microtime( TRUE );
|
445 |
+
$part_data = fread( $job_object->steps_data[ $job_object->step_working ][ 'file_handel' ], 1048576 * 5 ); //5MB Minimum part size
|
446 |
+
$part = $s3->uploadPart( array( 'Bucket' => $job_object->job[ 's3bucket' ],
|
447 |
+
'UploadId' => $job_object->steps_data[ $job_object->step_working ][ 'UploadId' ],
|
448 |
+
'Key' => $job_object->job[ 's3dir' ] . $job_object->backup_file,
|
449 |
+
'PartNumber' => $job_object->steps_data[ $job_object->step_working ][ 'Part' ],
|
450 |
+
'Body' => $part_data ) );
|
451 |
+
$chunk_upload_time = microtime( TRUE ) - $chunk_upload_start;
|
452 |
+
$job_object->substeps_done = $job_object->substeps_done + strlen( $part_data );
|
453 |
+
$job_object->steps_data[ $job_object->step_working ][ 'Parts' ][] = array( 'ETag' => $part->get( 'ETag' ),
|
454 |
+
'PartNumber' => $job_object->steps_data[ $job_object->step_working ][ 'Part' ] );
|
455 |
+
$job_object->steps_data[ $job_object->step_working ][ 'Part' ]++;
|
456 |
+
$time_remaining = $job_object->do_restart_time();
|
457 |
+
if ( $time_remaining < $chunk_upload_time )
|
458 |
+
$job_object->do_restart_time( TRUE );
|
459 |
+
$job_object->update_working_data();
|
460 |
+
}
|
461 |
+
|
462 |
+
$s3->completeMultipartUpload( array( 'Bucket' => $job_object->job[ 's3bucket' ],
|
463 |
+
'UploadId' => $job_object->steps_data[ $job_object->step_working ][ 'UploadId' ],
|
464 |
+
'Key' => $job_object->job[ 's3dir' ] . $job_object->backup_file,
|
465 |
+
'Parts' => $job_object->steps_data[ $job_object->step_working ][ 'Parts' ] ) );
|
466 |
+
|
467 |
+
} catch ( Exception $e ) {
|
468 |
+
$job_object->log( E_USER_ERROR, sprintf( __( 'S3 Service API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
469 |
+
if ( ! empty( $job_object->steps_data[ $job_object->step_working ][ 'uploadId' ] ) )
|
470 |
+
$s3->abortMultipartUpload( array( 'Bucket' => $job_object->job[ 's3bucket' ],
|
471 |
+
'UploadId' => $job_object->steps_data[ $job_object->step_working ][ 'uploadId' ],
|
472 |
+
'Key' => $job_object->job[ 's3dir' ] . $job_object->backup_file ) );
|
473 |
+
unset( $job_object->steps_data[ $job_object->step_working ][ 'UploadId' ] );
|
474 |
+
unset( $job_object->steps_data[ $job_object->step_working ][ 'Parts' ] );
|
475 |
+
unset( $job_object->steps_data[ $job_object->step_working ][ 'Part' ] );
|
476 |
+
$job_object->substeps_done = 0;
|
477 |
+
if ( is_resource( $job_object->steps_data[ $job_object->step_working ][ 'file_handel' ] ) )
|
478 |
+
fclose( $job_object->steps_data[ $job_object->step_working ][ 'file_handel' ] );
|
479 |
+
return FALSE;
|
480 |
+
}
|
481 |
+
fclose( $job_object->steps_data[ $job_object->step_working ][ 'file_handel' ] );
|
482 |
+
}
|
483 |
+
|
484 |
+
$result = $s3->headObject( array( 'Bucket' => $job_object->job[ 's3bucket' ],
|
485 |
+
'Key' => $job_object->job[ 's3dir' ] . $job_object->backup_file) );
|
486 |
+
|
487 |
+
if ( $result->get( 'ContentLength' ) == filesize( $job_object->backup_folder . $job_object->backup_file ) ) {
|
488 |
+
$job_object->substeps_done = 1 + $job_object->backup_filesize;
|
489 |
+
$job_object->log( sprintf( __( 'Backup transferred to %s.', 'backwpup' ), $this->get_s3_base_url( $job_object->job[ 's3region' ], $job_object->job[ 's3base_url' ] ). '/' .$job_object->job[ 's3bucket' ] . '/' . $job_object->job[ 's3dir' ] . $job_object->backup_file ), E_USER_NOTICE );
|
490 |
+
if ( ! empty( $job_object->job[ 'jobid' ] ) )
|
491 |
+
BackWPup_Option::update( $job_object->job[ 'jobid' ], 'lastbackupdownloadurl', network_admin_url( 'admin.php' ) . '?page=backwpupbackups&action=downloads3&file=' . $job_object->job[ 's3dir' ] . $job_object->backup_file . '&jobid=' . $job_object->job[ 'jobid' ] );
|
492 |
+
}
|
493 |
+
else {
|
494 |
+
$job_object->log( sprintf( __( 'Cannot transfer backup to S3! (%1$d) %2$s', 'backwpup' ), $result->get( "status" ), $result->get( "Message" ) ), E_USER_ERROR );
|
495 |
+
}
|
496 |
+
}
|
497 |
+
catch ( Exception $e ) {
|
498 |
+
$job_object->log( E_USER_ERROR, sprintf( __( 'S3 Service API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
499 |
+
|
500 |
+
return FALSE;
|
501 |
+
}
|
502 |
+
|
503 |
+
try {
|
504 |
+
$backupfilelist = array();
|
505 |
+
$filecounter = 0;
|
506 |
+
$files = array();
|
507 |
+
$args = array(
|
508 |
+
'Bucket' => $job_object->job[ 's3bucket' ],
|
509 |
+
'Prefix' => (string) $job_object->job[ 's3dir' ]
|
510 |
+
);
|
511 |
+
$objects = $s3->getIterator('ListObjects', $args );
|
512 |
+
if ( is_object( $objects ) ) {
|
513 |
+
foreach ( $objects as $object ) {
|
514 |
+
$file = basename( $object[ 'Key' ] );
|
515 |
+
$changetime = strtotime( $object[ 'LastModified' ] ) + ( get_option( 'gmt_offset' ) * 3600 );
|
516 |
+
if ( $job_object->is_backup_archive( $file ) )
|
517 |
+
$backupfilelist[ $changetime ] = $file;
|
518 |
+
$files[ $filecounter ][ 'folder' ] = $this->get_s3_base_url( $job_object->job[ 's3region' ], $job_object->job[ 's3base_url' ] ). '/' .$job_object->job[ 's3bucket' ] . '/' . dirname( $object[ 'Key' ] );
|
519 |
+
$files[ $filecounter ][ 'file' ] = $object[ 'Key' ];
|
520 |
+
$files[ $filecounter ][ 'filename' ] = basename( $object[ 'Key' ] );
|
521 |
+
if ( ! empty( $object[ 'StorageClass' ] ) )
|
522 |
+
$files[ $filecounter ][ 'info' ] = sprintf( __('Storage Class: %s', 'backwpup' ), $object[ 'StorageClass' ] );
|
523 |
+
$files[ $filecounter ][ 'downloadurl' ] = network_admin_url( 'admin.php' ) . '?page=backwpupbackups&action=downloads3&file=' . $object[ 'Key' ] . '&jobid=' . $job_object->job[ 'jobid' ];
|
524 |
+
$files[ $filecounter ][ 'filesize' ] = $object[ 'Size' ];
|
525 |
+
$files[ $filecounter ][ 'time' ] = $changetime;
|
526 |
+
$filecounter ++;
|
527 |
+
}
|
528 |
+
}
|
529 |
+
if ( $job_object->job[ 's3maxbackups' ] > 0 && is_object( $s3 ) ) { //Delete old backups
|
530 |
+
if ( count( $backupfilelist ) > $job_object->job[ 's3maxbackups' ] ) {
|
531 |
+
ksort( $backupfilelist );
|
532 |
+
$numdeltefiles = 0;
|
533 |
+
while ( $file = array_shift( $backupfilelist ) ) {
|
534 |
+
if ( count( $backupfilelist ) < $job_object->job[ 's3maxbackups' ] )
|
535 |
+
break;
|
536 |
+
//delete files on S3
|
537 |
+
$args = array(
|
538 |
+
'Bucket' => $job_object->job[ 's3bucket' ],
|
539 |
+
'Key' => $job_object->job[ 's3dir' ] . $file
|
540 |
+
);
|
541 |
+
if ( $s3->deleteObject( $args ) ) {
|
542 |
+
foreach ( $files as $key => $filedata ) {
|
543 |
+
if ( $filedata[ 'file' ] == $job_object->job[ 's3dir' ] . $file )
|
544 |
+
unset( $files[ $key ] );
|
545 |
+
}
|
546 |
+
$numdeltefiles ++;
|
547 |
+
} else {
|
548 |
+
$job_object->log( sprintf( __( 'Cannot delete backup from %s.', 'backwpup' ), $this->get_s3_base_url( $job_object->job[ 's3region' ], $job_object->job[ 's3base_url' ] ). '/' .$job_object->job[ 's3bucket' ] . '/' . $job_object->job[ 's3dir' ] . $file ), E_USER_ERROR );
|
549 |
+
}
|
550 |
+
}
|
551 |
+
if ( $numdeltefiles > 0 )
|
552 |
+
$job_object->log( sprintf( _n( 'One file deleted on S3 Bucket.', '%d files deleted on S3 Bucket', $numdeltefiles, 'backwpup' ), $numdeltefiles ), E_USER_NOTICE );
|
553 |
+
}
|
554 |
+
}
|
555 |
+
set_site_transient( 'backwpup_' . $job_object->job[ 'jobid' ] . '_s3', $files, 60 * 60 * 24 * 7 );
|
556 |
+
}
|
557 |
+
catch ( Exception $e ) {
|
558 |
+
$job_object->log( E_USER_ERROR, sprintf( __( 'S3 Service API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
559 |
+
|
560 |
+
return FALSE;
|
561 |
+
}
|
562 |
+
$job_object->substeps_done = 2 + $job_object->backup_filesize;
|
563 |
+
|
564 |
+
return TRUE;
|
565 |
+
}
|
566 |
+
|
567 |
+
|
568 |
+
/**
|
569 |
+
* @param $job_object
|
570 |
+
* @return bool
|
571 |
+
*/
|
572 |
+
public function can_run( $job_object ) {
|
573 |
+
|
574 |
+
if ( empty( $job_object->job[ 's3accesskey' ] ) )
|
575 |
+
return FALSE;
|
576 |
+
|
577 |
+
if ( empty( $job_object->job[ 's3secretkey' ] ) )
|
578 |
+
return FALSE;
|
579 |
+
|
580 |
+
if ( empty( $job_object->job[ 's3bucket' ] ) )
|
581 |
+
return FALSE;
|
582 |
+
|
583 |
+
return TRUE;
|
584 |
+
}
|
585 |
+
|
586 |
+
/**
|
587 |
+
*
|
588 |
+
*/
|
589 |
+
public function edit_inline_js() {
|
590 |
+
//<script type="text/javascript">
|
591 |
+
?>
|
592 |
+
function awsgetbucket() {
|
593 |
+
var data = {
|
594 |
+
action: 'backwpup_dest_s3',
|
595 |
+
s3accesskey: $('input[name="s3accesskey"]').val(),
|
596 |
+
s3secretkey: $('input[name="s3secretkey"]').val(),
|
597 |
+
s3bucketselected: $('input[name="s3bucketselected"]').val(),
|
598 |
+
s3base_url: $('input[name="s3base_url"]').val(),
|
599 |
+
s3region: $('#s3region').val(),
|
600 |
+
_ajax_nonce: $('#backwpupajaxnonce').val()
|
601 |
+
};
|
602 |
+
$.post(ajaxurl, data, function(response) {
|
603 |
+
$('#s3bucketerror').remove();
|
604 |
+
$('#s3bucket').remove();
|
605 |
+
$('#s3bucketselected').after(response);
|
606 |
+
});
|
607 |
+
}
|
608 |
+
$('input[name="s3accesskey"]').change(function() {awsgetbucket();});
|
609 |
+
$('input[name="s3secretkey"]').change(function() {awsgetbucket();});
|
610 |
+
$('input[name="s3base_url"]').change(function() {awsgetbucket();});
|
611 |
+
$('#s3region').change(function() {awsgetbucket();});
|
612 |
+
<?php
|
613 |
+
}
|
614 |
+
|
615 |
+
/**
|
616 |
+
* @param string $args
|
617 |
+
*/
|
618 |
+
public function edit_ajax( $args = '' ) {
|
619 |
+
|
620 |
+
$error = '';
|
621 |
+
|
622 |
+
if ( is_array( $args ) ) {
|
623 |
+
$ajax = FALSE;
|
624 |
+
}
|
625 |
+
else {
|
626 |
+
if ( ! current_user_can( 'backwpup_jobs_edit' ) )
|
627 |
+
wp_die( -1 );
|
628 |
+
check_ajax_referer( 'backwpup_ajax_nonce' );
|
629 |
+
$args[ 's3accesskey' ] = $_POST[ 's3accesskey' ];
|
630 |
+
$args[ 's3secretkey' ] = $_POST[ 's3secretkey' ];
|
631 |
+
$args[ 's3bucketselected' ] = $_POST[ 's3bucketselected' ];
|
632 |
+
$args[ 's3base_url' ] = $_POST[ 's3base_url' ];
|
633 |
+
$args[ 's3region' ] = $_POST[ 's3region' ];
|
634 |
+
$ajax = TRUE;
|
635 |
+
}
|
636 |
+
echo '<span id="s3bucketerror" style="color:red;">';
|
637 |
+
|
638 |
+
if ( ! empty( $args[ 's3accesskey' ] ) && ! empty( $args[ 's3secretkey' ] ) ) {
|
639 |
+
try {
|
640 |
+
$s3 = Aws\S3\S3Client::factory( array( 'key' => $args[ 's3accesskey' ],
|
641 |
+
'secret' => BackWPup_Encryption::decrypt( $args[ 's3secretkey' ] ),
|
642 |
+
'region' => $args[ 's3region' ],
|
643 |
+
'base_url' => $this->get_s3_base_url( $args[ 's3region' ], $args[ 's3base_url' ]),
|
644 |
+
'scheme' => 'https',
|
645 |
+
'ssl.certificate_authority' => BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem') );
|
646 |
+
|
647 |
+
$buckets = $s3->listBuckets();
|
648 |
+
}
|
649 |
+
catch ( Exception $e ) {
|
650 |
+
$error = $e->getMessage();
|
651 |
+
}
|
652 |
+
}
|
653 |
+
|
654 |
+
if ( empty( $args[ 's3accesskey' ] ) )
|
655 |
+
_e( 'Missing access key!', 'backwpup' );
|
656 |
+
elseif ( empty( $args[ 's3secretkey' ] ) )
|
657 |
+
_e( 'Missing secret access key!', 'backwpup' );
|
658 |
+
elseif ( ! empty( $error ) && $error == 'Access Denied' )
|
659 |
+
echo '<input type="text" name="s3bucket" id="s3bucket" value="' . esc_attr( $args[ 's3bucketselected' ] ) . '" >';
|
660 |
+
elseif ( ! empty( $error ) )
|
661 |
+
echo esc_html( $error );
|
662 |
+
elseif ( ! isset( $buckets ) || count( $buckets['Buckets'] ) < 1 )
|
663 |
+
_e( 'No bucket found!', 'backwpup' );
|
664 |
+
echo '</span>';
|
665 |
+
|
666 |
+
if ( !empty( $buckets['Buckets'] ) ) {
|
667 |
+
echo '<select name="s3bucket" id="s3bucket">';
|
668 |
+
foreach ( $buckets['Buckets'] as $bucket ) {
|
669 |
+
echo "<option " . selected( $args[ 's3bucketselected' ], esc_attr( $bucket['Name'] ), FALSE ) . ">" . esc_attr( $bucket['Name'] ) . "</option>";
|
670 |
+
}
|
671 |
+
echo '</select>';
|
672 |
+
}
|
673 |
+
|
674 |
+
if ( $ajax )
|
675 |
+
die();
|
676 |
+
}
|
677 |
+
}
|
inc/class-destination-sugarsync.php
CHANGED
@@ -1,887 +1,871 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
*
|
4 |
-
*/
|
5 |
-
class BackWPup_Destination_SugarSync extends BackWPup_Destinations {
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
<
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
<tr>
|
61 |
-
<th scope="row"><label for="
|
62 |
-
<td>
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
}
|
142 |
-
catch ( Exception $e ) {
|
143 |
-
|
144 |
-
}
|
145 |
-
}
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
$sugarsync
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
$job_object->
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
$
|
266 |
-
$
|
267 |
-
$
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
$
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
$
|
285 |
-
|
286 |
-
|
287 |
-
$
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
return TRUE;
|
327 |
-
}
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
*
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
/**
|
380 |
-
*
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
$
|
410 |
-
|
411 |
-
//
|
412 |
-
$
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
if (
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
$
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
$
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
$
|
511 |
-
$auth
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
if (
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
$
|
565 |
-
$
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
$
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
if (
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
$
|
624 |
-
$
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
$
|
629 |
-
$auth
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
if (
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
/**
|
785 |
-
* @
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
/**
|
793 |
-
* @param $url
|
794 |
-
* @return string
|
795 |
-
*/
|
796 |
-
public function
|
797 |
-
return $this->doCall( $url, '', '
|
798 |
-
}
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
* @
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
$
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
$
|
839 |
-
|
840 |
-
|
841 |
-
$
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
$this->doCall( $getfile->ref . '/data', $file, 'PUT' );
|
873 |
-
|
874 |
-
return $getfile->ref;
|
875 |
-
}
|
876 |
-
}
|
877 |
-
}
|
878 |
-
}
|
879 |
-
|
880 |
-
/**
|
881 |
-
* SugarSync Exception class
|
882 |
-
*
|
883 |
-
* @author Daniel Hüsken <daniel@huesken-net.de>
|
884 |
-
*/
|
885 |
-
class BackWPup_Destination_SugarSync_API_Exception extends Exception {
|
886 |
-
|
887 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
*/
|
5 |
+
class BackWPup_Destination_SugarSync extends BackWPup_Destinations {
|
6 |
+
|
7 |
+
public static $backwpup_job_object = NULL;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* @return array
|
11 |
+
*/
|
12 |
+
public function option_defaults() {
|
13 |
+
return array( 'sugarrefreshtoken' => '', 'sugarroot' => '', 'sugardir' => trailingslashit( sanitize_file_name( get_bloginfo( 'name' ) ) ), 'sugarmaxbackups' => 15 );
|
14 |
+
}
|
15 |
+
|
16 |
+
|
17 |
+
/**
|
18 |
+
* @param $jobid
|
19 |
+
*/
|
20 |
+
public function edit_tab( $jobid ) {
|
21 |
+
?>
|
22 |
+
<h3 class="title"><?php _e( 'Sugarsync Login', 'backwpup' ); ?></h3>
|
23 |
+
<p></p>
|
24 |
+
<table class="form-table">
|
25 |
+
|
26 |
+
<?php if ( ! BackWPup_Option::get( $jobid, 'sugarrefreshtoken' ) ) { ?>
|
27 |
+
<tr>
|
28 |
+
<th scope="row"><?php _e( 'Authentication', 'backwpup' ); ?></th>
|
29 |
+
<td>
|
30 |
+
<label for="sugaremail"><?php _e( 'Email address:', 'backwpup' ); ?><br/>
|
31 |
+
<input id="sugaremail" name="sugaremail" type="text"
|
32 |
+
value="<?php if ( isset( $_POST[ 'sugaremail' ] ) ) echo $_POST[ 'sugaremail' ];?>" class="large-text" autocomplete="off" /></label>
|
33 |
+
<br/>
|
34 |
+
<label for="sugarpass"><?php _e( 'Password:', 'backwpup' ); ?><br/>
|
35 |
+
<input id="sugarpass" name="sugarpass" type="password"
|
36 |
+
value="<?php if ( isset( $_POST[ 'sugarpass' ] ) ) echo $_POST[ 'sugarpass' ];?>" class="large-text" autocomplete="off" /></label>
|
37 |
+
<br/>
|
38 |
+
<br/>
|
39 |
+
<input type="submit" id="idauthbutton" name="authbutton" class="button-primary" accesskey="d"
|
40 |
+
value="<?php _e( 'Authenticate with Sugarsync!', 'backwpup' ); ?>"/>
|
41 |
+
<input type="submit" name="authbutton" class="button"
|
42 |
+
value="<?php _e( 'Create Sugarsync account', 'backwpup' ); ?>"/>
|
43 |
+
</td>
|
44 |
+
</tr>
|
45 |
+
<?php } else { ?>
|
46 |
+
<tr>
|
47 |
+
<th scope="row"><label for="idauthbutton"><?php _e( 'Authentication', 'backwpup' ); ?></label></th>
|
48 |
+
<td>
|
49 |
+
<span style="color:green;"><?php _e( 'Authenticated!', 'backwpup' ); ?></span>
|
50 |
+
<input type="submit" id="idauthbutton" name="authbutton" class="button-primary" accesskey="d"
|
51 |
+
value="<?php _e( 'Delete Sugarsync authentication!', 'backwpup' ); ?>" />
|
52 |
+
</td>
|
53 |
+
</tr>
|
54 |
+
<?php } ?>
|
55 |
+
</table>
|
56 |
+
|
57 |
+
<h3 class="title"><?php _e( 'SugarSync Root', 'backwpup' ); ?></h3>
|
58 |
+
<p></p>
|
59 |
+
<table class="form-table">
|
60 |
+
<tr>
|
61 |
+
<th scope="row"><label for="sugarroot"><?php _e( 'Sync folder selection', 'backwpup' ); ?></label></th>
|
62 |
+
<td>
|
63 |
+
<?php
|
64 |
+
try {
|
65 |
+
$sugarsync = new BackWPup_Destination_SugarSync_API( BackWPup_Option::get( $jobid, 'sugarrefreshtoken' ) );
|
66 |
+
$user = $sugarsync->user();
|
67 |
+
$syncfolders = $sugarsync->get( $user->syncfolders );
|
68 |
+
if ( ! is_object( $syncfolders ) )
|
69 |
+
echo '<span style="color:red;">' . __( 'No Syncfolders found!', 'backwpup' ) . '</span>';
|
70 |
+
}
|
71 |
+
catch ( Exception $e ) {
|
72 |
+
echo '<span style="color:red;">' . $e->getMessage() . '</span>';
|
73 |
+
}
|
74 |
+
if ( isset( $syncfolders ) && is_object( $syncfolders ) ) {
|
75 |
+
echo '<select name="sugarroot" id="sugarroot">';
|
76 |
+
foreach ( $syncfolders->collection as $roots ) {
|
77 |
+
echo "<option " . selected( strtolower( BackWPup_Option::get( $jobid, 'sugarroot' ) ), strtolower( $roots->ref ), FALSE ) . " value=\"" . $roots->ref . "\">" . $roots->displayName . "</option>";
|
78 |
+
}
|
79 |
+
echo '</select>';
|
80 |
+
}
|
81 |
+
?>
|
82 |
+
</td>
|
83 |
+
</tr>
|
84 |
+
</table>
|
85 |
+
|
86 |
+
<h3 class="title"><?php _e( 'Backup settings', 'backwpup' ); ?></h3>
|
87 |
+
<p></p>
|
88 |
+
<table class="form-table">
|
89 |
+
<tr>
|
90 |
+
<th scope="row"><label for="idsugardir"><?php _e( 'Folder in root', 'backwpup' ); ?></label></th>
|
91 |
+
<td>
|
92 |
+
<input id="idsugardir" name="sugardir" type="text" value="<?php echo BackWPup_Option::get( $jobid, 'sugardir' ); ?>" class="regular-text" />
|
93 |
+
</td>
|
94 |
+
</tr>
|
95 |
+
<tr>
|
96 |
+
<th scope="row"><?php _e( 'File Deletion', 'backwpup' ); ?></th>
|
97 |
+
<td>
|
98 |
+
<?php
|
99 |
+
if ( BackWPup_Option::get( $jobid, 'backuptype' ) == 'archive' ) {
|
100 |
+
?>
|
101 |
+
<label for="idsugarmaxbackups"><input id="idsugarmaxbackups" name="sugarmaxbackups" type="text" size="3" value="<?php echo BackWPup_Option::get( $jobid, 'sugarmaxbackups' );?>" class="small-text help-tip" title="<?php esc_attr_e( 'Oldest files will be deleted first. 0 = no deletion', 'backwpup' ); ?>" />
|
102 |
+
<?php _e( 'Number of files to keep in folder.', 'backwpup' ); ?></label>
|
103 |
+
<?php } else { ?>
|
104 |
+
<label for="idsugarsyncnodelete"><input class="checkbox" value="1"
|
105 |
+
type="checkbox" <?php checked( BackWPup_Option::get( $jobid, 'sugarsyncnodelete' ), TRUE ); ?>
|
106 |
+
name="sugarsyncnodelete" id="idsugarsyncnodelete" /> <?php _e( 'Do not delete files while syncing to destination!', 'backwpup' ); ?></label>
|
107 |
+
<?php } ?>
|
108 |
+
</td>
|
109 |
+
</tr>
|
110 |
+
</table>
|
111 |
+
<?php
|
112 |
+
}
|
113 |
+
|
114 |
+
|
115 |
+
/**
|
116 |
+
* @param $jobid
|
117 |
+
*/
|
118 |
+
public function edit_form_post_save( $jobid ) {
|
119 |
+
|
120 |
+
|
121 |
+
if ( ! empty( $_POST[ 'sugaremail' ] ) && ! empty( $_POST[ 'sugarpass' ] ) && $_POST[ 'authbutton' ] == __( 'Authenticate with Sugarsync!', 'backwpup' ) ) {
|
122 |
+
try {
|
123 |
+
$sugarsync = new BackWPup_Destination_SugarSync_API();
|
124 |
+
$refresh_token = $sugarsync->get_Refresh_Token( $_POST[ 'sugaremail' ], $_POST[ 'sugarpass' ] );
|
125 |
+
if ( ! empty( $refresh_token ) )
|
126 |
+
BackWPup_Option::update( $jobid, 'sugarrefreshtoken', $refresh_token );
|
127 |
+
}
|
128 |
+
catch ( Exception $e ) {
|
129 |
+
BackWPup_Admin::message( 'SUGARSYNC: ' . $e->getMessage(), TRUE );
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
+
if ( isset( $_POST[ 'authbutton' ] ) && $_POST[ 'authbutton' ] == __( 'Delete Sugarsync authentication!', 'backwpup' ) ) {
|
134 |
+
BackWPup_Option::delete( $jobid, 'sugarrefreshtoken' );
|
135 |
+
}
|
136 |
+
|
137 |
+
if ( isset( $_POST[ 'authbutton' ] ) && $_POST[ 'authbutton' ] == __( 'Create Sugarsync account', 'backwpup' ) ) {
|
138 |
+
try {
|
139 |
+
$sugarsync = new BackWPup_Destination_SugarSync_API();
|
140 |
+
$sugarsync->create_account( $_POST[ 'sugaremail' ], $_POST[ 'sugarpass' ] );
|
141 |
+
}
|
142 |
+
catch ( Exception $e ) {
|
143 |
+
BackWPup_Admin::message( 'SUGARSYNC: ' . $e->getMessage(), TRUE );
|
144 |
+
}
|
145 |
+
}
|
146 |
+
|
147 |
+
$_POST[ 'sugardir' ] = trailingslashit( str_replace( '//', '/', str_replace( '\\', '/', trim( stripslashes( $_POST[ 'sugardir' ] ) ) ) ) );
|
148 |
+
if ( substr( $_POST[ 'sugardir' ], 0, 1 ) == '/' )
|
149 |
+
$_POST[ 'sugardir' ] = substr( $_POST[ 'sugardir' ], 1 );
|
150 |
+
if ( $_POST[ 'sugardir' ] == '/' )
|
151 |
+
$_POST[ 'sugardir' ] = '';
|
152 |
+
BackWPup_Option::update( $jobid, 'sugardir', $_POST[ 'sugardir' ] );
|
153 |
+
|
154 |
+
BackWPup_Option::update( $jobid, 'sugarroot', isset( $_POST[ 'sugarroot' ] ) ? $_POST[ 'sugarroot' ] : '' );
|
155 |
+
BackWPup_Option::update( $jobid, 'sugarmaxbackups', isset( $_POST[ 'sugarmaxbackups' ] ) ? (int)$_POST[ 'sugarmaxbackups' ] : 0 );
|
156 |
+
}
|
157 |
+
|
158 |
+
/**
|
159 |
+
* @param $jobdest
|
160 |
+
* @param $backupfile
|
161 |
+
*/
|
162 |
+
public function file_delete( $jobdest, $backupfile ) {
|
163 |
+
|
164 |
+
$files = get_site_transient( 'backwpup_' . strtolower( $jobdest ) );
|
165 |
+
list( $jobid, $dest ) = explode( '_', $jobdest );
|
166 |
+
|
167 |
+
if ( BackWPup_Option::get( $jobid, 'sugarrefreshtoken' ) ) {
|
168 |
+
try {
|
169 |
+
$sugarsync = new BackWPup_Destination_SugarSync_API( BackWPup_Option::get( $jobid, 'sugarrefreshtoken' ) );
|
170 |
+
$sugarsync->delete( urldecode( $backupfile ) );
|
171 |
+
//update file list
|
172 |
+
foreach ( $files as $key => $file ) {
|
173 |
+
if ( is_array( $file ) && $file[ 'file' ] == $backupfile )
|
174 |
+
unset( $files[ $key ] );
|
175 |
+
}
|
176 |
+
unset( $sugarsync );
|
177 |
+
}
|
178 |
+
catch ( Exception $e ) {
|
179 |
+
BackWPup_Admin::message( 'SUGARSYNC: ' . $e->getMessage(), TRUE );
|
180 |
+
}
|
181 |
+
}
|
182 |
+
|
183 |
+
set_site_transient( 'backwpup_' . strtolower( $jobdest ), $files, 60 * 60 * 24 * 7 );
|
184 |
+
}
|
185 |
+
|
186 |
+
/**
|
187 |
+
* @param $jobid
|
188 |
+
* @param $get_file
|
189 |
+
*/
|
190 |
+
public function file_download( $jobid, $get_file ) {
|
191 |
+
|
192 |
+
try {
|
193 |
+
$sugarsync = new BackWPup_Destination_SugarSync_API( BackWPup_Option::get( $jobid, 'sugarrefreshtoken' ) );
|
194 |
+
$response = $sugarsync->get( urldecode( $get_file ) );
|
195 |
+
header( "Pragma: public" );
|
196 |
+
header( "Expires: 0" );
|
197 |
+
header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
|
198 |
+
header( "Content-Type: application/octet-stream" );
|
199 |
+
header( "Content-Disposition: attachment; filename=" . (string)$response->displayName . ";" );
|
200 |
+
header( "Content-Transfer-Encoding: binary" );
|
201 |
+
header( "Content-Length: " . (int)$response->size );
|
202 |
+
@set_time_limit( 0 );
|
203 |
+
echo $sugarsync->download( urldecode( $get_file ) );
|
204 |
+
die();
|
205 |
+
}
|
206 |
+
catch ( Exception $e ) {
|
207 |
+
die( $e->getMessage() );
|
208 |
+
}
|
209 |
+
}
|
210 |
+
|
211 |
+
/**
|
212 |
+
* @param $jobdest
|
213 |
+
* @return mixed
|
214 |
+
*/
|
215 |
+
public function file_get_list( $jobdest ) {
|
216 |
+
|
217 |
+
return get_site_transient( 'backwpup_' . strtolower( $jobdest ) );
|
218 |
+
}
|
219 |
+
|
220 |
+
/**
|
221 |
+
* @param $job_object
|
222 |
+
* @return bool
|
223 |
+
*/
|
224 |
+
public function job_run_archive( &$job_object ) {
|
225 |
+
|
226 |
+
$job_object->substeps_todo = 2 + $job_object->backup_filesize;
|
227 |
+
$job_object->log( sprintf( __( '%d. Try to send backup to SugarSync …', 'backwpup' ), $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] ), E_USER_NOTICE );
|
228 |
+
|
229 |
+
try {
|
230 |
+
$sugarsync = new BackWPup_Destination_SugarSync_API( $job_object->job[ 'sugarrefreshtoken' ] );
|
231 |
+
//Check Quota
|
232 |
+
$user = $sugarsync->user();
|
233 |
+
if ( ! empty( $user->nickname ) )
|
234 |
+
$job_object->log( sprintf( __( 'Authenticated to SugarSync with nickname %s', 'backwpup' ), $user->nickname ), E_USER_NOTICE );
|
235 |
+
$sugarsyncfreespase = (float)$user->quota->limit - (float)$user->quota->usage; //float fixes bug for display of no free space
|
236 |
+
if ( $job_object->backup_filesize > $sugarsyncfreespase ) {
|
237 |
+
$job_object->log( sprintf( _x( 'Not enough disk space available on SugarSync. Available: %s.','Available space on SugarSync', 'backwpup' ), size_format( $sugarsyncfreespase, 2 ) ), E_USER_ERROR );
|
238 |
+
$job_object->substeps_todo = 1 + $job_object->backup_filesize;
|
239 |
+
|
240 |
+
return TRUE;
|
241 |
+
}
|
242 |
+
else {
|
243 |
+
$job_object->log( sprintf( __( '%s available at SugarSync', 'backwpup' ), size_format( $sugarsyncfreespase, 2 ) ), E_USER_NOTICE );
|
244 |
+
}
|
245 |
+
//Create and change folder
|
246 |
+
$sugarsync->mkdir( $job_object->job[ 'sugardir' ], $job_object->job[ 'sugarroot' ] );
|
247 |
+
$dirid = $sugarsync->chdir( $job_object->job[ 'sugardir' ], $job_object->job[ 'sugarroot' ] );
|
248 |
+
//Upload to SugarSync
|
249 |
+
$job_object->substeps_done = 0;
|
250 |
+
$job_object->log( __( 'Starting upload to SugarSync …', 'backwpup' ), E_USER_NOTICE );
|
251 |
+
self::$backwpup_job_object = &$job_object;
|
252 |
+
$reponse = $sugarsync->upload( $job_object->backup_folder . $job_object->backup_file );
|
253 |
+
if ( is_object( $reponse ) ) {
|
254 |
+
if ( ! empty( $job_object->job[ 'jobid' ] ) )
|
255 |
+
BackWPup_Option::update( $job_object->job[ 'jobid' ], 'lastbackupdownloadurl', network_admin_url( 'admin.php' ) . '?page=backwpupbackups&action=downloadsugarsync&file=' . (string)$reponse . '&jobid=' . $job_object->job[ 'jobid' ] );
|
256 |
+
$job_object->substeps_done ++;
|
257 |
+
$job_object->log( sprintf( __( 'Backup transferred to %s', 'backwpup' ), 'https://' . $user->nickname . '.sugarsync.com/' . $sugarsync->showdir( $dirid ) . $job_object->backup_file ), E_USER_NOTICE );
|
258 |
+
}
|
259 |
+
else {
|
260 |
+
$job_object->log( __( 'Cannot transfer backup to SugarSync!', 'backwpup' ), E_USER_ERROR );
|
261 |
+
|
262 |
+
return FALSE;
|
263 |
+
}
|
264 |
+
|
265 |
+
$backupfilelist = array();
|
266 |
+
$files = array();
|
267 |
+
$filecounter = 0;
|
268 |
+
$dir = $sugarsync->showdir( $dirid );
|
269 |
+
$getfiles = $sugarsync->getcontents( 'file' );
|
270 |
+
if ( is_object( $getfiles ) ) {
|
271 |
+
foreach ( $getfiles->file as $getfile ) {
|
272 |
+
$getfile->displayName = utf8_decode( (string)$getfile->displayName );
|
273 |
+
if ( $job_object->is_backup_archive( $getfile->displayName ) )
|
274 |
+
$backupfilelist[ strtotime( (string)$getfile->lastModified ) ] = (string)$getfile->ref;
|
275 |
+
$files[ $filecounter ][ 'folder' ] = 'https://' . (string)$user->nickname . '.sugarsync.com/' . $dir;
|
276 |
+
$files[ $filecounter ][ 'file' ] = (string)$getfile->ref;
|
277 |
+
$files[ $filecounter ][ 'filename' ] = (string)$getfile->displayName;
|
278 |
+
$files[ $filecounter ][ 'downloadurl' ] = network_admin_url( 'admin.php' ) . '?page=backwpupbackups&action=downloadsugarsync&file=' . (string)$getfile->ref . '&jobid=' . $job_object->job[ 'jobid' ];
|
279 |
+
$files[ $filecounter ][ 'filesize' ] = (int)$getfile->size;
|
280 |
+
$files[ $filecounter ][ 'time' ] = strtotime( (string)$getfile->lastModified ) + ( get_option( 'gmt_offset' ) * 3600 );
|
281 |
+
$filecounter ++;
|
282 |
+
}
|
283 |
+
}
|
284 |
+
if ( ! empty( $job_object->job[ 'sugarmaxbackups' ] ) && $job_object->job[ 'sugarmaxbackups' ] > 0 ) { //Delete old backups
|
285 |
+
if ( count( $backupfilelist ) > $job_object->job[ 'sugarmaxbackups' ] ) {
|
286 |
+
ksort( $backupfilelist );
|
287 |
+
$numdeltefiles = 0;
|
288 |
+
while ( $file = array_shift( $backupfilelist ) ) {
|
289 |
+
if ( count( $backupfilelist ) < $job_object->job[ 'sugarmaxbackups' ] )
|
290 |
+
break;
|
291 |
+
$sugarsync->delete( $file ); //delete files on Cloud
|
292 |
+
foreach ( $files as $key => $filedata ) {
|
293 |
+
if ( $filedata[ 'file' ] == $file )
|
294 |
+
unset( $files[ $key ] );
|
295 |
+
}
|
296 |
+
$numdeltefiles ++;
|
297 |
+
}
|
298 |
+
if ( $numdeltefiles > 0 )
|
299 |
+
$job_object->log( sprintf( _n( 'One file deleted on SugarSync folder', '%d files deleted on SugarSync folder', $numdeltefiles, 'backwpup' ), $numdeltefiles ), E_USER_NOTICE );
|
300 |
+
}
|
301 |
+
}
|
302 |
+
set_site_transient( 'BackWPup_' . $job_object->job[ 'jobid' ] . '_SUGARSYNC', $files, 60 * 60 * 24 * 7 );
|
303 |
+
}
|
304 |
+
catch ( Exception $e ) {
|
305 |
+
$job_object->log( E_USER_ERROR, sprintf( __( 'SugarSync API: %s', 'backwpup' ), htmlentities( $e->getMessage() ) ), $e->getFile(), $e->getLine() );
|
306 |
+
|
307 |
+
return FALSE;
|
308 |
+
}
|
309 |
+
$job_object->substeps_done ++;
|
310 |
+
|
311 |
+
return TRUE;
|
312 |
+
}
|
313 |
+
|
314 |
+
/**
|
315 |
+
* @param $job_object
|
316 |
+
* @return bool
|
317 |
+
*/
|
318 |
+
public function can_run( $job_object ) {
|
319 |
+
|
320 |
+
if ( empty( $job_object->job[ 'sugarrefreshtoken' ] ) )
|
321 |
+
return FALSE;
|
322 |
+
|
323 |
+
if ( empty( $job_object->job[ 'sugarroot' ] ) )
|
324 |
+
return FALSE;
|
325 |
+
|
326 |
+
return TRUE;
|
327 |
+
}
|
328 |
+
}
|
329 |
+
|
330 |
+
/**
|
331 |
+
*
|
332 |
+
*/
|
333 |
+
class BackWPup_Destination_SugarSync_API {
|
334 |
+
|
335 |
+
/**
|
336 |
+
* url for the sugarsync-api
|
337 |
+
*/
|
338 |
+
const API_URL = 'https://api.sugarsync.com';
|
339 |
+
|
340 |
+
/**
|
341 |
+
*
|
342 |
+
* @var string
|
343 |
+
*/
|
344 |
+
protected $folder = '';
|
345 |
+
|
346 |
+
/**
|
347 |
+
* @var mixed|string
|
348 |
+
*/
|
349 |
+
protected $encoding = 'UTF-8';
|
350 |
+
|
351 |
+
/**
|
352 |
+
* @var null|string
|
353 |
+
*/
|
354 |
+
protected $refresh_token = '';
|
355 |
+
|
356 |
+
/**
|
357 |
+
* The Auth-token
|
358 |
+
*
|
359 |
+
* @var string
|
360 |
+
*/
|
361 |
+
protected $access_token = '';
|
362 |
+
|
363 |
+
// class methods
|
364 |
+
/**
|
365 |
+
* Default constructor/Auth
|
366 |
+
*/
|
367 |
+
public function __construct( $refresh_token = NULL ) {
|
368 |
+
|
369 |
+
//auth xml
|
370 |
+
$this->encoding = mb_internal_encoding();
|
371 |
+
|
372 |
+
//get access token
|
373 |
+
if ( isset( $refresh_token ) and ! empty( $refresh_token ) ) {
|
374 |
+
$this->refresh_token = $refresh_token;
|
375 |
+
$this->get_Access_Token();
|
376 |
+
}
|
377 |
+
}
|
378 |
+
|
379 |
+
/**
|
380 |
+
* Make the call
|
381 |
+
*
|
382 |
+
* @return string
|
383 |
+
*
|
384 |
+
* @param string $url The url to call.
|
385 |
+
* @param string $data
|
386 |
+
* @param string $method
|
387 |
+
* @throws BackWPup_Destination_SugarSync_API_Exception
|
388 |
+
* @internal param $string [optiona] $data File on put, xml on post.
|
389 |
+
* @internal param $string [optional] $method The method to use. Possible values are GET, POST, PUT, DELETE.
|
390 |
+
*/
|
391 |
+
private function doCall( $url, $data = '', $method = 'GET' ) {
|
392 |
+
|
393 |
+
// allowed methods
|
394 |
+
$allowedMethods = array( 'GET', 'POST', 'PUT', 'DELETE' );
|
395 |
+
|
396 |
+
// redefine
|
397 |
+
$url = (string)$url;
|
398 |
+
$method = (string)$method;
|
399 |
+
|
400 |
+
// validate method
|
401 |
+
if ( ! in_array( $method, $allowedMethods ) )
|
402 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Unknown method (' . $method . '). Allowed methods are: ' . implode( ', ', $allowedMethods ) );
|
403 |
+
|
404 |
+
// check auth token
|
405 |
+
if ( empty( $this->access_token ) )
|
406 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Auth Token not set correctly!' );
|
407 |
+
else
|
408 |
+
$headers[ ] = 'Authorization: ' . $this->access_token;
|
409 |
+
$headers[ ] = 'Expect:';
|
410 |
+
|
411 |
+
// init
|
412 |
+
$curl = curl_init();
|
413 |
+
//set options
|
414 |
+
curl_setopt( $curl, CURLOPT_URL, $url );
|
415 |
+
curl_setopt( $curl, CURLOPT_USERAGENT, BackWPup::get_plugin_data( 'User-Agent' ) );
|
416 |
+
if ( ini_get( 'open_basedir' ) == '' ) curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, TRUE );
|
417 |
+
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, TRUE );
|
418 |
+
curl_setopt( $curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
|
419 |
+
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, TRUE );
|
420 |
+
curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 2 );
|
421 |
+
curl_setopt( $curl, CURLOPT_SSLVERSION, 3 );
|
422 |
+
if ( file_exists( BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' ) )
|
423 |
+
curl_setopt( $curl, CURLOPT_CAINFO, BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' );
|
424 |
+
|
425 |
+
if ( $method == 'POST' ) {
|
426 |
+
$headers[ ] = 'Content-Type: application/xml; charset=UTF-8';
|
427 |
+
curl_setopt( $curl, CURLOPT_POSTFIELDS, $data );
|
428 |
+
curl_setopt( $curl, CURLOPT_POST, TRUE );
|
429 |
+
$headers[ ] = 'Content-Length: ' . strlen( $data );
|
430 |
+
}
|
431 |
+
elseif ( $method == 'PUT' ) {
|
432 |
+
if ( is_readable( $data ) ) {
|
433 |
+
$headers[ ] = 'Content-Length: ' . filesize( $data );
|
434 |
+
$datafilefd = fopen( $data, 'r' );
|
435 |
+
curl_setopt( $curl, CURLOPT_PUT, TRUE );
|
436 |
+
curl_setopt( $curl, CURLOPT_INFILE, $datafilefd );
|
437 |
+
curl_setopt( $curl, CURLOPT_INFILESIZE, filesize( $data ) );
|
438 |
+
curl_setopt( $curl, CURLOPT_READFUNCTION, array( BackWPup_Destination_SugarSync::$backwpup_job_object, 'curl_read_callback' ) );
|
439 |
+
}
|
440 |
+
else {
|
441 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Is not a readable file:' . $data );
|
442 |
+
}
|
443 |
+
}
|
444 |
+
elseif ( $method == 'DELETE' ) {
|
445 |
+
curl_setopt( $curl, CURLOPT_CUSTOMREQUEST, 'DELETE' );
|
446 |
+
}
|
447 |
+
else {
|
448 |
+
curl_setopt( $curl, CURLOPT_POST, FALSE );
|
449 |
+
}
|
450 |
+
|
451 |
+
// set headers
|
452 |
+
curl_setopt( $curl, CURLOPT_HTTPHEADER, $headers );
|
453 |
+
curl_setopt( $curl, CURLINFO_HEADER_OUT, TRUE );
|
454 |
+
// execute
|
455 |
+
$response = curl_exec( $curl );
|
456 |
+
$curlgetinfo = curl_getinfo( $curl );
|
457 |
+
|
458 |
+
// fetch curl errors
|
459 |
+
if ( curl_errno( $curl ) != 0 )
|
460 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'cUrl Error: ' . curl_error( $curl ) );
|
461 |
+
curl_close( $curl );
|
462 |
+
if ( ! empty( $datafilefd ) && is_resource( $datafilefd ) )
|
463 |
+
fclose( $datafilefd );
|
464 |
+
|
465 |
+
if ( $curlgetinfo[ 'http_code' ] >= 200 && $curlgetinfo[ 'http_code' ] < 300 ) {
|
466 |
+
if ( FALSE !== stripos( $curlgetinfo[ 'content_type' ], 'xml' ) && ! empty( $response ) )
|
467 |
+
return simplexml_load_string( $response );
|
468 |
+
else
|
469 |
+
return $response;
|
470 |
+
}
|
471 |
+
else {
|
472 |
+
if ( $curlgetinfo[ 'http_code' ] == 401 )
|
473 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] . ' Authorization required.' );
|
474 |
+
elseif ( $curlgetinfo[ 'http_code' ] == 403 )
|
475 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] . ' (Forbidden) Authentication failed.' );
|
476 |
+
elseif ( $curlgetinfo[ 'http_code' ] == 404 )
|
477 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] . ' Not found' );
|
478 |
+
else
|
479 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] );
|
480 |
+
}
|
481 |
+
}
|
482 |
+
|
483 |
+
|
484 |
+
/**
|
485 |
+
* @return string
|
486 |
+
* @throws BackWPup_Destination_SugarSync_API_Exception
|
487 |
+
*/
|
488 |
+
private function get_Access_Token() {
|
489 |
+
|
490 |
+
$auth = '<?xml version="1.0" encoding="UTF-8" ?>';
|
491 |
+
$auth .= '<tokenAuthRequest>';
|
492 |
+
$auth .= '<accessKeyId>' . get_site_option( 'backwpup_cfg_sugarsynckey' ) . '</accessKeyId>';
|
493 |
+
$auth .= '<privateAccessKey>' . BackWPup_Encryption::decrypt( get_site_option( 'backwpup_cfg_sugarsyncsecret' ) ) . '</privateAccessKey>';
|
494 |
+
$auth .= '<refreshToken>' . trim( $this->refresh_token ) . '</refreshToken>';
|
495 |
+
$auth .= '</tokenAuthRequest>';
|
496 |
+
// init
|
497 |
+
$curl = curl_init();
|
498 |
+
//set options
|
499 |
+
curl_setopt( $curl, CURLOPT_URL, self::API_URL . '/authorization' );
|
500 |
+
curl_setopt( $curl, CURLOPT_USERAGENT, BackWPup::get_plugin_data( 'User-Agent' ) );
|
501 |
+
if ( ini_get( 'open_basedir' ) == '' ) curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, TRUE );
|
502 |
+
curl_setopt( $curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
|
503 |
+
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, TRUE );
|
504 |
+
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, TRUE );
|
505 |
+
curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 2 );
|
506 |
+
curl_setopt( $curl, CURLOPT_SSLVERSION, 3 );
|
507 |
+
if ( file_exists( BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' ) )
|
508 |
+
curl_setopt( $curl, CURLOPT_CAINFO, BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' );
|
509 |
+
curl_setopt( $curl, CURLOPT_HEADER, TRUE );
|
510 |
+
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/xml; charset=UTF-8', 'Content-Length: ' . strlen( $auth ) ) );
|
511 |
+
curl_setopt( $curl, CURLOPT_POSTFIELDS, $auth );
|
512 |
+
curl_setopt( $curl, CURLOPT_POST, TRUE );
|
513 |
+
// execute
|
514 |
+
$response = curl_exec( $curl );
|
515 |
+
$curlgetinfo = curl_getinfo( $curl );
|
516 |
+
// fetch curl errors
|
517 |
+
if ( curl_errno( $curl ) != 0 )
|
518 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'cUrl Error: ' . curl_error( $curl ) );
|
519 |
+
|
520 |
+
curl_close( $curl );
|
521 |
+
|
522 |
+
if ( $curlgetinfo[ 'http_code' ] >= 200 && $curlgetinfo[ 'http_code' ] < 300 ) {
|
523 |
+
if ( preg_match( '/Location:(.*?)\r/i', $response, $matches ) )
|
524 |
+
$this->access_token = trim( $matches[ 1 ] );
|
525 |
+
|
526 |
+
return $this->access_token;
|
527 |
+
}
|
528 |
+
else {
|
529 |
+
if ( $curlgetinfo[ 'http_code' ] == 401 )
|
530 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] . ' Authorization required.' );
|
531 |
+
elseif ( $curlgetinfo[ 'http_code' ] == 403 )
|
532 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] . ' (Forbidden) Authentication failed.' );
|
533 |
+
elseif ( $curlgetinfo[ 'http_code' ] == 404 )
|
534 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] . ' Not found' );
|
535 |
+
else
|
536 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] );
|
537 |
+
}
|
538 |
+
}
|
539 |
+
|
540 |
+
/**
|
541 |
+
* @param $email
|
542 |
+
* @param $password
|
543 |
+
* @return null|string
|
544 |
+
* @throws BackWPup_Destination_SugarSync_API_Exception
|
545 |
+
*/
|
546 |
+
public function get_Refresh_Token( $email, $password ) {
|
547 |
+
|
548 |
+
$auth = '<?xml version="1.0" encoding="UTF-8" ?>';
|
549 |
+
$auth .= '<appAuthorization>';
|
550 |
+
$auth .= '<username>' . mb_convert_encoding( $email, 'UTF-8', $this->encoding ) . '</username>';
|
551 |
+
$auth .= '<password>' . mb_convert_encoding( $password, 'UTF-8', $this->encoding ) . '</password>';
|
552 |
+
$auth .= '<application>' . get_site_option( 'backwpup_cfg_sugarsyncappid' ) . '</application>';
|
553 |
+
$auth .= '<accessKeyId>' . get_site_option( 'backwpup_cfg_sugarsynckey' ) . '</accessKeyId>';
|
554 |
+
$auth .= '<privateAccessKey>' . BackWPup_Encryption::decrypt( get_site_option( 'backwpup_cfg_sugarsyncsecret' ) ) . '</privateAccessKey>';
|
555 |
+
$auth .= '</appAuthorization>';
|
556 |
+
// init
|
557 |
+
$curl = curl_init();
|
558 |
+
//set options
|
559 |
+
curl_setopt( $curl, CURLOPT_URL, self::API_URL . '/app-authorization' );
|
560 |
+
curl_setopt( $curl, CURLOPT_USERAGENT, BackWPup::get_plugin_data( 'User-Agent' ) );
|
561 |
+
if ( ini_get( 'open_basedir' ) == '' ) curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, TRUE );
|
562 |
+
curl_setopt( $curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
|
563 |
+
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, TRUE );
|
564 |
+
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, TRUE );
|
565 |
+
curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 2 );
|
566 |
+
curl_setopt( $curl, CURLOPT_SSLVERSION, 3 );
|
567 |
+
if ( file_exists( BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' ) )
|
568 |
+
curl_setopt( $curl, CURLOPT_CAINFO, BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' );
|
569 |
+
curl_setopt( $curl, CURLOPT_HEADER, TRUE );
|
570 |
+
curl_setopt( $curl, CURLOPT_POSTFIELDS, $auth );
|
571 |
+
curl_setopt( $curl, CURLOPT_POST, TRUE );
|
572 |
+
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/xml; charset=UTF-8', 'Content-Length: ' . strlen( $auth ) ) );
|
573 |
+
// execute
|
574 |
+
$response = curl_exec( $curl );
|
575 |
+
$curlgetinfo = curl_getinfo( $curl );
|
576 |
+
// fetch curl errors
|
577 |
+
if ( curl_errno( $curl ) != 0 )
|
578 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'cUrl Error: ' . curl_error( $curl ) );
|
579 |
+
|
580 |
+
curl_close( $curl );
|
581 |
+
|
582 |
+
if ( $curlgetinfo[ 'http_code' ] >= 200 && $curlgetinfo[ 'http_code' ] < 300 ) {
|
583 |
+
if ( preg_match( '/Location:(.*?)\r/i', $response, $matches ) )
|
584 |
+
$this->refresh_token = trim( $matches[ 1 ] );
|
585 |
+
|
586 |
+
return $this->refresh_token;
|
587 |
+
}
|
588 |
+
else {
|
589 |
+
if ( $curlgetinfo[ 'http_code' ] == 401 )
|
590 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] . ' Authorization required.' );
|
591 |
+
elseif ( $curlgetinfo[ 'http_code' ] == 403 )
|
592 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] . ' (Forbidden) Authentication failed.' );
|
593 |
+
elseif ( $curlgetinfo[ 'http_code' ] == 404 )
|
594 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] . ' Not found' );
|
595 |
+
else
|
596 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] );
|
597 |
+
}
|
598 |
+
}
|
599 |
+
|
600 |
+
/**
|
601 |
+
* @param $email
|
602 |
+
* @param $password
|
603 |
+
* @throws BackWPup_Destination_SugarSync_API_Exception
|
604 |
+
*/
|
605 |
+
public function create_account( $email, $password ) {
|
606 |
+
|
607 |
+
$auth = '<?xml version="1.0" encoding="UTF-8" ?>';
|
608 |
+
$auth .= '<user>';
|
609 |
+
$auth .= '<email>' . mb_convert_encoding( $email, 'UTF-8', $this->encoding ) . '</email>';
|
610 |
+
$auth .= '<password>' . mb_convert_encoding( $password, 'UTF-8', $this->encoding ) . '</password>';
|
611 |
+
$auth .= '<accessKeyId>' . get_site_option( 'backwpup_cfg_sugarsynckey' ) . '</accessKeyId>';
|
612 |
+
$auth .= '<privateAccessKey>' . BackWPup_Encryption::decrypt( get_site_option( 'backwpup_cfg_sugarsyncsecret' ) ) . '</privateAccessKey>';
|
613 |
+
$auth .= '</user>';
|
614 |
+
// init
|
615 |
+
$curl = curl_init();
|
616 |
+
//set options
|
617 |
+
curl_setopt( $curl, CURLOPT_URL, 'https://provisioning-api.sugarsync.com/users' );
|
618 |
+
curl_setopt( $curl, CURLOPT_USERAGENT, BackWPup::get_plugin_data( 'User-Agent' ) );
|
619 |
+
if ( ini_get( 'open_basedir' ) == '' ) curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, TRUE );
|
620 |
+
curl_setopt( $curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
|
621 |
+
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, TRUE );
|
622 |
+
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, TRUE );
|
623 |
+
curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 2 );
|
624 |
+
curl_setopt( $curl, CURLOPT_SSLVERSION, 3 );
|
625 |
+
if ( file_exists( BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' ) )
|
626 |
+
curl_setopt( $curl, CURLOPT_CAINFO, BackWPup::get_plugin_data( 'plugindir' ) . '/vendor/cacert.pem' );
|
627 |
+
curl_setopt( $curl, CURLOPT_HEADER, TRUE );
|
628 |
+
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/xml; charset=UTF-8', 'Content-Length: ' . strlen( $auth ) ) );
|
629 |
+
curl_setopt( $curl, CURLOPT_POSTFIELDS, $auth );
|
630 |
+
curl_setopt( $curl, CURLOPT_POST, TRUE );
|
631 |
+
// execute
|
632 |
+
$response = curl_exec( $curl );
|
633 |
+
$curlgetinfo = curl_getinfo( $curl );
|
634 |
+
// fetch curl errors
|
635 |
+
if ( curl_errno( $curl ) != 0 )
|
636 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'cUrl Error: ' . curl_error( $curl ) );
|
637 |
+
|
638 |
+
curl_close( $curl );
|
639 |
+
|
640 |
+
if ( $curlgetinfo[ 'http_code' ] == 201 ) {
|
641 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Account created.' );
|
642 |
+
}
|
643 |
+
else {
|
644 |
+
if ( $curlgetinfo[ 'http_code' ] == 400 )
|
645 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] . ' ' . substr( $response, $curlgetinfo[ 'header_size' ] ) );
|
646 |
+
elseif ( $curlgetinfo[ 'http_code' ] == 401 )
|
647 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] . ' Developer credentials cannot be verified. Either a developer with the specified accessKeyId does not exist or the privateKeyID does not match an assigned accessKeyId.' );
|
648 |
+
elseif ( $curlgetinfo[ 'http_code' ] == 403 )
|
649 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] . ' ' . substr( $response, $curlgetinfo[ 'header_size' ] ) );
|
650 |
+
elseif ( $curlgetinfo[ 'http_code' ] == 503 )
|
651 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] . ' ' . substr( $response, $curlgetinfo[ 'header_size' ] ) );
|
652 |
+
else
|
653 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'Http Error: ' . $curlgetinfo[ 'http_code' ] );
|
654 |
+
}
|
655 |
+
}
|
656 |
+
|
657 |
+
/**
|
658 |
+
* @param $folder
|
659 |
+
* @param string $root
|
660 |
+
* @return string
|
661 |
+
* @throws BackWPup_Destination_SugarSync_API_Exception
|
662 |
+
*/
|
663 |
+
public function chdir( $folder, $root = '' ) {
|
664 |
+
|
665 |
+
$folder = rtrim( $folder, '/' );
|
666 |
+
if ( substr( $folder, 0, 1 ) == '/' || empty( $this->folder ) ) {
|
667 |
+
if ( ! empty( $root ) )
|
668 |
+
$this->folder = $root;
|
669 |
+
else
|
670 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'chdir: root folder must set!' );
|
671 |
+
}
|
672 |
+
$folders = explode( '/', $folder );
|
673 |
+
foreach ( $folders as $dir ) {
|
674 |
+
if ( $dir == '..' ) {
|
675 |
+
$contents = $this->doCall( $this->folder );
|
676 |
+
if ( ! empty( $contents->parent ) )
|
677 |
+
$this->folder = $contents->parent;
|
678 |
+
}
|
679 |
+
elseif ( ! empty( $dir ) && $dir != '.' ) {
|
680 |
+
$isdir = FALSE;
|
681 |
+
$contents = $this->getcontents( 'folder' );
|
682 |
+
foreach ( $contents->collection as $collection ) {
|
683 |
+
if ( strtolower( $collection->displayName ) == strtolower( $dir ) ) {
|
684 |
+
$isdir = TRUE;
|
685 |
+
$this->folder = $collection->ref;
|
686 |
+
break;
|
687 |
+
}
|
688 |
+
}
|
689 |
+
if ( ! $isdir )
|
690 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'chdir: Folder ' . $folder . ' not exitst' );
|
691 |
+
}
|
692 |
+
}
|
693 |
+
|
694 |
+
return $this->folder;
|
695 |
+
}
|
696 |
+
|
697 |
+
/**
|
698 |
+
* @param $folderid
|
699 |
+
* @return string
|
700 |
+
*/
|
701 |
+
public function showdir( $folderid ) {
|
702 |
+
|
703 |
+
$showfolder = '';
|
704 |
+
while ( $folderid ) {
|
705 |
+
$contents = $this->doCall( $folderid );
|
706 |
+
$showfolder = $contents->displayName . '/' . $showfolder;
|
707 |
+
if ( isset( $contents->parent ) )
|
708 |
+
$folderid = $contents->parent;
|
709 |
+
else
|
710 |
+
break;
|
711 |
+
}
|
712 |
+
|
713 |
+
return $showfolder;
|
714 |
+
}
|
715 |
+
|
716 |
+
/**
|
717 |
+
* @param $folder
|
718 |
+
* @param string $root
|
719 |
+
* @return bool
|
720 |
+
* @throws BackWPup_Destination_SugarSync_API_Exception
|
721 |
+
*/
|
722 |
+
public function mkdir( $folder, $root = '' ) {
|
723 |
+
|
724 |
+
$savefolder = $this->folder;
|
725 |
+
$folder = rtrim( $folder, '/' );
|
726 |
+
if ( substr( $folder, 0, 1 ) == '/' || empty( $this->folder ) ) {
|
727 |
+
if ( ! empty( $root ) )
|
728 |
+
$this->folder = $root;
|
729 |
+
else
|
730 |
+
throw new BackWPup_Destination_SugarSync_API_Exception( 'mkdir: root folder must set!' );
|
731 |
+
}
|
732 |
+
$folders = explode( '/', $folder );
|
733 |
+
foreach ( $folders as $dir ) {
|
734 |
+
if ( $dir == '..' ) {
|
735 |
+
$contents = $this->doCall( $this->folder );
|
736 |
+
if ( ! empty( $contents->parent ) )
|
737 |
+
$this->folder = $contents->parent;
|
738 |
+
}
|
739 |
+
elseif ( ! empty( $dir ) && $dir != '.' ) {
|
740 |
+
$isdir = FALSE;
|
741 |
+
$contents = $this->getcontents( 'folder' );
|
742 |
+
foreach ( $contents->collection as $collection ) {
|
743 |
+
if ( strtolower( $collection->displayName ) == strtolower( $dir ) ) {
|
744 |
+
$isdir = TRUE;
|
745 |
+
$this->folder = $collection->ref;
|
746 |
+
break;
|
747 |
+
}
|
748 |
+
}
|
749 |
+
if ( ! $isdir ) {
|
750 |
+
$this->doCall( $this->folder, '<?xml version="1.0" encoding="UTF-8"?><folder><displayName>' . mb_convert_encoding( $dir, 'UTF-8', $this->encoding ) . '</displayName></folder>', 'POST' );
|
751 |
+
$contents = $this->getcontents( 'folder' );
|
752 |
+
foreach ( $contents->collection as $collection ) {
|
753 |
+
if ( strtolower( $collection->displayName ) == strtolower( $dir ) ) {
|
754 |
+
$isdir = TRUE;
|
755 |
+
$this->folder = $collection->ref;
|
756 |
+
break;
|
757 |
+
}
|
758 |
+
}
|
759 |
+
}
|
760 |
+
}
|
761 |
+
}
|
762 |
+
$this->folder = $savefolder;
|
763 |
+
|
764 |
+
return TRUE;
|
765 |
+
}
|
766 |
+
|
767 |
+
|
768 |
+
/**
|
769 |
+
* @return string
|
770 |
+
*/
|
771 |
+
public function user() {
|
772 |
+
return $this->doCall( self::API_URL . '/user' );
|
773 |
+
}
|
774 |
+
|
775 |
+
|
776 |
+
/**
|
777 |
+
* @param $url
|
778 |
+
* @return string
|
779 |
+
*/
|
780 |
+
public function get( $url ) {
|
781 |
+
return $this->doCall( $url, '', 'GET' );
|
782 |
+
}
|
783 |
+
|
784 |
+
/**
|
785 |
+
* @param $url
|
786 |
+
* @return string
|
787 |
+
*/
|
788 |
+
public function download( $url ) {
|
789 |
+
return $this->doCall( $url . '/data' );
|
790 |
+
}
|
791 |
+
|
792 |
+
/**
|
793 |
+
* @param $url
|
794 |
+
* @return string
|
795 |
+
*/
|
796 |
+
public function delete( $url ) {
|
797 |
+
return $this->doCall( $url, '', 'DELETE' );
|
798 |
+
}
|
799 |
+
|
800 |
+
|
801 |
+
/**
|
802 |
+
* @param string $type
|
803 |
+
* @param int $start
|
804 |
+
* @param int $max
|
805 |
+
* @return string
|
806 |
+
*/
|
807 |
+
public function getcontents( $type = '', $start = 0, $max = 500 ) {
|
808 |
+
|
809 |
+
$parameters = '';
|
810 |
+
|
811 |
+
if ( strtolower( $type ) == 'folder' || strtolower( $type ) == 'file' )
|
812 |
+
$parameters .= 'type=' . strtolower( $type );
|
813 |
+
if ( ! empty( $start ) && is_integer( $start ) ) {
|
814 |
+
if ( ! empty( $parameters ) )
|
815 |
+
$parameters .= '&';
|
816 |
+
$parameters .= 'start=' . $start;
|
817 |
+
|
818 |
+
}
|
819 |
+
if ( ! empty( $max ) && is_integer( $max ) ) {
|
820 |
+
if ( ! empty( $parameters ) )
|
821 |
+
$parameters .= '&';
|
822 |
+
$parameters .= 'max=' . $max;
|
823 |
+
}
|
824 |
+
|
825 |
+
$request = $this->doCall( $this->folder . '/contents?' . $parameters );
|
826 |
+
|
827 |
+
return $request;
|
828 |
+
}
|
829 |
+
|
830 |
+
/**
|
831 |
+
* @param $file
|
832 |
+
* @param string $name
|
833 |
+
* @return mixed
|
834 |
+
*/
|
835 |
+
public function upload( $file, $name = '' ) {
|
836 |
+
|
837 |
+
if ( empty( $name ) )
|
838 |
+
$name = basename( $file );
|
839 |
+
|
840 |
+
$xmlrequest = '<?xml version="1.0" encoding="UTF-8"?>';
|
841 |
+
$xmlrequest .= '<file>';
|
842 |
+
$xmlrequest .= '<displayName>' . mb_convert_encoding( $name, 'UTF-8', $this->encoding ) . '</displayName>';
|
843 |
+
|
844 |
+
if ( ! is_readable( $file ) ) {
|
845 |
+
$finfo = fopen( $file, 'r' );
|
846 |
+
$xmlrequest .= '<mediaType>' . mime_content_type( $finfo ) . '</mediaType>';
|
847 |
+
fclose( $finfo );
|
848 |
+
}
|
849 |
+
|
850 |
+
$xmlrequest .= '</file>';
|
851 |
+
|
852 |
+
$this->doCall( $this->folder, $xmlrequest, 'POST' );
|
853 |
+
$getfiles = $this->getcontents( 'file' );
|
854 |
+
foreach ( $getfiles->file as $getfile ) {
|
855 |
+
if ( $getfile->displayName == $name ) {
|
856 |
+
$this->doCall( $getfile->ref . '/data', $file, 'PUT' );
|
857 |
+
|
858 |
+
return $getfile->ref;
|
859 |
+
}
|
860 |
+
}
|
861 |
+
}
|
862 |
+
}
|
863 |
+
|
864 |
+
/**
|
865 |
+
* SugarSync Exception class
|
866 |
+
*
|
867 |
+
* @author Daniel Hüsken <daniel@huesken-net.de>
|
868 |
+
*/
|
869 |
+
class BackWPup_Destination_SugarSync_API_Exception extends Exception {
|
870 |
+
|
871 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/class-destinations.php
CHANGED
@@ -1,158 +1,145 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Base class for adding BackWPup destinations.
|
4 |
-
*
|
5 |
-
* @package BackWPup
|
6 |
-
* @subpackage BackWPup_Destinations
|
7 |
-
* @since 3.0.0
|
8 |
-
* @access private
|
9 |
-
*/
|
10 |
-
abstract class BackWPup_Destinations {
|
11 |
-
|
12 |
-
public $info = array();
|
13 |
-
|
14 |
-
/**
|
15 |
-
*
|
16 |
-
*/
|
17 |
-
abstract public function
|
18 |
-
|
19 |
-
/**
|
20 |
-
* @
|
21 |
-
*/
|
22 |
-
abstract public function
|
23 |
-
|
24 |
-
/**
|
25 |
-
* @param $jobid
|
26 |
-
*/
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
/**
|
37 |
-
*
|
38 |
-
*/
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
/**
|
134 |
-
* @param $job_object BackWPup_Job Object
|
135 |
-
*/
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
* @return bool
|
147 |
-
*/
|
148 |
-
public function can_sync() {
|
149 |
-
|
150 |
-
return FALSE;
|
151 |
-
}
|
152 |
-
|
153 |
-
/**
|
154 |
-
* @param $job_object BackWPup_Job Object
|
155 |
-
* @return bool
|
156 |
-
*/
|
157 |
-
abstract public function can_run( $job_object );
|
158 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Base class for adding BackWPup destinations.
|
4 |
+
*
|
5 |
+
* @package BackWPup
|
6 |
+
* @subpackage BackWPup_Destinations
|
7 |
+
* @since 3.0.0
|
8 |
+
* @access private
|
9 |
+
*/
|
10 |
+
abstract class BackWPup_Destinations {
|
11 |
+
|
12 |
+
public $info = array();
|
13 |
+
|
14 |
+
/**
|
15 |
+
* @return array
|
16 |
+
*/
|
17 |
+
abstract public function option_defaults();
|
18 |
+
|
19 |
+
/**
|
20 |
+
* @param $jobid
|
21 |
+
*/
|
22 |
+
abstract public function edit_tab( $jobid );
|
23 |
+
|
24 |
+
/**
|
25 |
+
* @param $jobid
|
26 |
+
*/
|
27 |
+
public function edit_auth( $jobid ) {
|
28 |
+
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @param $jobid
|
33 |
+
*/
|
34 |
+
abstract public function edit_form_post_save( $jobid );
|
35 |
+
|
36 |
+
/**
|
37 |
+
* use wp_enqueue_script() here to load js for tab
|
38 |
+
*/
|
39 |
+
public function admin_print_scripts() {
|
40 |
+
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
*
|
45 |
+
*/
|
46 |
+
public function edit_inline_js() {
|
47 |
+
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
*
|
52 |
+
*/
|
53 |
+
public function edit_ajax() {
|
54 |
+
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
*
|
59 |
+
*/
|
60 |
+
public function wizard_admin_print_styles() {
|
61 |
+
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
*
|
66 |
+
*/
|
67 |
+
public function wizard_admin_print_scripts() {
|
68 |
+
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
*
|
73 |
+
*/
|
74 |
+
public function wizard_inline_js() {
|
75 |
+
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* @param $job_settings
|
80 |
+
*/
|
81 |
+
public function wizard_page( $job_settings ) {
|
82 |
+
|
83 |
+
echo '<br /><pre>';
|
84 |
+
print_r( $job_settings );
|
85 |
+
echo '</pre>';
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* @param $job_settings
|
90 |
+
*/
|
91 |
+
public function wizard_save( $job_settings ) {
|
92 |
+
|
93 |
+
return $job_settings;
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
*
|
98 |
+
*/
|
99 |
+
public function admin_print_styles() {
|
100 |
+
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* @param $jobdest
|
105 |
+
* @param $backupfile
|
106 |
+
*/
|
107 |
+
public function file_delete( $jobdest, $backupfile ) {
|
108 |
+
|
109 |
+
}
|
110 |
+
|
111 |
+
/**
|
112 |
+
* @param $jobid
|
113 |
+
* @param $get_file
|
114 |
+
*/
|
115 |
+
public function file_download( $jobid, $get_file ) {
|
116 |
+
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* @param $jobdest
|
121 |
+
* @return bool
|
122 |
+
*/
|
123 |
+
public function file_get_list( $jobdest ) {
|
124 |
+
|
125 |
+
return FALSE;
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* @param $job_object BackWPup_Job Object
|
130 |
+
*/
|
131 |
+
abstract public function job_run_archive( &$job_object );
|
132 |
+
|
133 |
+
/**
|
134 |
+
* @param $job_object BackWPup_Job Object
|
135 |
+
*/
|
136 |
+
public function job_run_sync( &$job_object ) {
|
137 |
+
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* @param $job_object BackWPup_Job Object
|
142 |
+
* @return bool
|
143 |
+
*/
|
144 |
+
abstract public function can_run( $job_object );
|
145 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/class-file.php
CHANGED
@@ -1,86 +1,87 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Class for methods for file/folder related things
|
4 |
-
*/
|
5 |
-
class BackWPup_File {
|
6 |
-
|
7 |
-
/**
|
8 |
-
*
|
9 |
-
* Get the folder for blog uploads
|
10 |
-
*
|
11 |
-
* @return string
|
12 |
-
*/
|
13 |
-
public static function get_upload_dir() {
|
14 |
-
|
15 |
-
if ( is_multisite() ) {
|
16 |
-
if ( defined( 'UPLOADBLOGSDIR' ) )
|
17 |
-
return trailingslashit( str_replace( '\\', '/',ABSPATH . UPLOADBLOGSDIR ) );
|
18 |
-
elseif ( is_dir( trailingslashit( WP_CONTENT_DIR ) . 'uploads/sites') )
|
19 |
-
return str_replace( '\\', '/', trailingslashit( WP_CONTENT_DIR ) . 'uploads/sites/' );
|
20 |
-
elseif ( is_dir( trailingslashit( WP_CONTENT_DIR ) . 'uploads' ) )
|
21 |
-
return str_replace( '\\', '/', trailingslashit( WP_CONTENT_DIR ) . 'uploads/' );
|
22 |
-
else
|
23 |
-
return trailingslashit( str_replace( '\\', '/', WP_CONTENT_DIR ) );
|
24 |
-
} else {
|
25 |
-
$upload_dir = wp_upload_dir();
|
26 |
-
return trailingslashit( str_replace( '\\', '/', $upload_dir[ 'basedir' ] ) );
|
27 |
-
}
|
28 |
-
|
29 |
-
}
|
30 |
-
|
31 |
-
/**
|
32 |
-
*
|
33 |
-
* check if path in open basedir
|
34 |
-
*
|
35 |
-
* @param string $dir the folder to check
|
36 |
-
*
|
37 |
-
* @return bool is it in open basedir
|
38 |
-
*/
|
39 |
-
public static function is_in_open_basedir( $dir ) {
|
40 |
-
|
41 |
-
$ini_open_basedir = str_replace( '\\', '/',ini_get( 'open_basedir' ) );
|
42 |
-
|
43 |
-
if ( empty( $ini_open_basedir ) )
|
44 |
-
return TRUE;
|
45 |
-
|
46 |
-
$open_base_dirs = explode( PATH_SEPARATOR, $ini_open_basedir );
|
47 |
-
$dir = trailingslashit( str_replace( '\\', '/', $dir ) );
|
48 |
-
|
49 |
-
foreach ( $open_base_dirs as $open_base_dir ) {
|
50 |
-
if ( stripos( $dir, trailingslashit( $open_base_dir ) <= 1 ) )
|
51 |
-
return TRUE;
|
52 |
-
}
|
53 |
-
|
54 |
-
return FALSE;
|
55 |
-
}
|
56 |
-
|
57 |
-
/**
|
58 |
-
*
|
59 |
-
* get size of files in folder
|
60 |
-
*
|
61 |
-
* @param string $folder the folder to calculate
|
62 |
-
* @param bool $deep went thrue suborders
|
63 |
-
* @return int folder size in byte
|
64 |
-
*/
|
65 |
-
public static function get_folder_size( $folder, $deep = TRUE ) {
|
66 |
-
|
67 |
-
$files_size = 0;
|
68 |
-
|
69 |
-
if ( ! is_readable( $folder ) )
|
70 |
-
return $files_size;
|
71 |
-
|
72 |
-
if ( $dir = opendir( $folder ) ) {
|
73 |
-
while ( FALSE !== ( $file = readdir( $dir ) ) ) {
|
74 |
-
if ( in_array( $file, array( '.', '..' ) ) )
|
75 |
-
continue;
|
76 |
-
if (
|
77 |
-
$files_size = $files_size +
|
78 |
-
|
79 |
-
$files_size = $files_size +
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
}
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Class for methods for file/folder related things
|
4 |
+
*/
|
5 |
+
class BackWPup_File {
|
6 |
+
|
7 |
+
/**
|
8 |
+
*
|
9 |
+
* Get the folder for blog uploads
|
10 |
+
*
|
11 |
+
* @return string
|
12 |
+
*/
|
13 |
+
public static function get_upload_dir() {
|
14 |
+
|
15 |
+
if ( is_multisite() ) {
|
16 |
+
if ( defined( 'UPLOADBLOGSDIR' ) )
|
17 |
+
return trailingslashit( str_replace( '\\', '/',ABSPATH . UPLOADBLOGSDIR ) );
|
18 |
+
elseif ( is_dir( trailingslashit( WP_CONTENT_DIR ) . 'uploads/sites') )
|
19 |
+
return str_replace( '\\', '/', trailingslashit( WP_CONTENT_DIR ) . 'uploads/sites/' );
|
20 |
+
elseif ( is_dir( trailingslashit( WP_CONTENT_DIR ) . 'uploads' ) )
|
21 |
+
return str_replace( '\\', '/', trailingslashit( WP_CONTENT_DIR ) . 'uploads/' );
|
22 |
+
else
|
23 |
+
return trailingslashit( str_replace( '\\', '/', WP_CONTENT_DIR ) );
|
24 |
+
} else {
|
25 |
+
$upload_dir = wp_upload_dir();
|
26 |
+
return trailingslashit( str_replace( '\\', '/', $upload_dir[ 'basedir' ] ) );
|
27 |
+
}
|
28 |
+
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
*
|
33 |
+
* check if path in open basedir
|
34 |
+
*
|
35 |
+
* @param string $dir the folder to check
|
36 |
+
*
|
37 |
+
* @return bool is it in open basedir
|
38 |
+
*/
|
39 |
+
public static function is_in_open_basedir( $dir ) {
|
40 |
+
|
41 |
+
$ini_open_basedir = str_replace( '\\', '/',ini_get( 'open_basedir' ) );
|
42 |
+
|
43 |
+
if ( empty( $ini_open_basedir ) )
|
44 |
+
return TRUE;
|
45 |
+
|
46 |
+
$open_base_dirs = explode( PATH_SEPARATOR, $ini_open_basedir );
|
47 |
+
$dir = trailingslashit( str_replace( '\\', '/', $dir ) );
|
48 |
+
|
49 |
+
foreach ( $open_base_dirs as $open_base_dir ) {
|
50 |
+
if ( stripos( $dir, trailingslashit( $open_base_dir ) <= 1 ) )
|
51 |
+
return TRUE;
|
52 |
+
}
|
53 |
+
|
54 |
+
return FALSE;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
*
|
59 |
+
* get size of files in folder
|
60 |
+
*
|
61 |
+
* @param string $folder the folder to calculate
|
62 |
+
* @param bool $deep went thrue suborders
|
63 |
+
* @return int folder size in byte
|
64 |
+
*/
|
65 |
+
public static function get_folder_size( $folder, $deep = TRUE ) {
|
66 |
+
|
67 |
+
$files_size = 0;
|
68 |
+
|
69 |
+
if ( ! is_readable( $folder ) )
|
70 |
+
return $files_size;
|
71 |
+
|
72 |
+
if ( $dir = opendir( $folder ) ) {
|
73 |
+
while ( FALSE !== ( $file = readdir( $dir ) ) ) {
|
74 |
+
if ( in_array( $file, array( '.', '..' ) ) || is_link( $folder . '/' . $file ) )
|
75 |
+
continue;
|
76 |
+
if ( $deep && is_dir( $folder . '/' . $file ) )
|
77 |
+
$files_size = $files_size + self::get_folder_size( $folder . '/' . $file, TRUE );
|
78 |
+
elseif ( is_readable( $folder . '/' . $file ) )
|
79 |
+
$files_size = $files_size + @filesize( $folder . '/' . $file );
|
80 |
+
|
81 |
+
}
|
82 |
+
closedir( $dir );
|
83 |
+
}
|
84 |
+
|
85 |
+
return $files_size;
|
86 |
+
}
|
87 |
+
}
|
inc/class-help.php
CHANGED
@@ -1,63 +1,48 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
*
|
4 |
-
*/
|
5 |
-
class BackWPup_Help {
|
6 |
-
|
7 |
-
/**
|
8 |
-
*
|
9 |
-
*/
|
10 |
-
public static function help() {
|
11 |
-
|
12 |
-
if ( method_exists( get_current_screen(), 'add_help_tab' ) ) {
|
13 |
-
get_current_screen()->add_help_tab( array(
|
14 |
-
'id' => 'plugininfo',
|
15 |
-
'title' => __( 'Plugin Info', 'backwpup' ),
|
16 |
-
'content' =>
|
17 |
-
'<p> '.str_replace( '\"','"', sprintf( _x( '%1$s version %2$s. A project by <a href="http://inpsyde.com">Inpsyde GmbH</a>.
|
18 |
-
. '<p>' . __( 'BackWPup comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions.', 'backwpup' ) . '</p>'
|
19 |
-
) );
|
20 |
-
|
21 |
-
$text_help_sidebar = '<p><strong>' . __( 'For more information:', 'backwpup' ) . '</strong></p>';
|
22 |
-
$text_help_sidebar .= '<p><a href="' . translate( BackWPup::get_plugin_data( 'PluginURI' ), 'backwpup' ) . '">' . BackWPup::get_plugin_data( 'Name' ) . '</a></p>';
|
23 |
-
$text_help_sidebar .= '<p><a href="http://wordpress.org/extend/plugins/backwpup/">' . __( 'Plugin on wordpress.org', 'backwpup' ) . '</a></p>';
|
24 |
-
$text_help_sidebar .= '<p><a href="' . __( 'https://marketpress.com/news/', 'backwpup' ) . '">' . __( 'News', 'backwpup' ) . '</a></p>';
|
25 |
-
if ( class_exists( '
|
26 |
-
$text_help_sidebar .= '<p><a href="' . __( 'https://marketpress.com/support/forum/plugins/backwpup-pro/', 'backwpup' ) . '">' . __( 'Pro Support', 'backwpup' ) . '</a></p>';
|
27 |
-
else
|
28 |
-
$text_help_sidebar .= '<p><a href="' . __( 'http://wordpress.org/support/plugin/backwpup/', 'backwpup' ) . '">' . __( 'Support', 'backwpup' ) . '</a></p>';
|
29 |
-
$text_help_sidebar .= '<p><a href="' . __( 'https://marketpress.com/documentation/backwpup-pro/', 'backwpup' ) . '">' . __( 'Manual', 'backwpup' ) . '</a></p>';
|
30 |
-
|
31 |
-
get_current_screen()->set_help_sidebar( $text_help_sidebar );
|
32 |
-
}
|
33 |
-
|
34 |
-
}
|
35 |
-
|
36 |
-
/**
|
37 |
-
* @static
|
38 |
-
*
|
39 |
-
* @param array $tab
|
40 |
-
*/
|
41 |
-
public static function add_tab( $tab = array() ) {
|
42 |
-
|
43 |
-
if ( method_exists( get_current_screen(), 'add_help_tab' ) )
|
44 |
-
get_current_screen()->add_help_tab( $tab );
|
45 |
-
|
46 |
-
}
|
47 |
-
|
48 |
-
|
49 |
-
* Display Tooltip with a ? button
|
50 |
-
*
|
51 |
-
* @param $text
|
52 |
-
* @param bool $echo
|
53 |
-
* @return string
|
54 |
-
*/
|
55 |
-
public static function tip( $text, $echo = TRUE ) {
|
56 |
-
|
57 |
-
if ( ! $echo )
|
58 |
-
return '<img class="help_tip" title="' . esc_attr( $text ) . '" src="' . BackWPup::get_plugin_data( 'URL' ) . '/images/help.png" />';
|
59 |
-
|
60 |
-
echo '<img class="help_tip" title="' . esc_attr( $text ) . '" src="' . BackWPup::get_plugin_data( 'URL' ) . '/images/help.png" />';
|
61 |
-
return '';
|
62 |
-
}
|
63 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
*/
|
5 |
+
class BackWPup_Help {
|
6 |
+
|
7 |
+
/**
|
8 |
+
*
|
9 |
+
*/
|
10 |
+
public static function help() {
|
11 |
+
|
12 |
+
if ( method_exists( get_current_screen(), 'add_help_tab' ) ) {
|
13 |
+
get_current_screen()->add_help_tab( array(
|
14 |
+
'id' => 'plugininfo',
|
15 |
+
'title' => __( 'Plugin Info', 'backwpup' ),
|
16 |
+
'content' =>
|
17 |
+
'<p> '.str_replace( '\"','"', sprintf( _x( '%1$s version %2$s. A project by <a href="http://inpsyde.com">Inpsyde GmbH</a>.','Plugin name and link; Plugin Version','backwpup' ), '<a href="' . translate( BackWPup::get_plugin_data( 'PluginURI' ), 'backwpup' ) . '">' . BackWPup::get_plugin_data( 'Name' ) . '</a>' , BackWPup::get_plugin_data( 'Version' ) ) ) . '</p>'
|
18 |
+
. '<p>' . __( 'BackWPup comes with ABSOLUTELY NO WARRANTY. This is a free software, and you are welcome to redistribute it under certain conditions.', 'backwpup' ) . '</p>'
|
19 |
+
) );
|
20 |
+
|
21 |
+
$text_help_sidebar = '<p><strong>' . __( 'For more information:', 'backwpup' ) . '</strong></p>';
|
22 |
+
$text_help_sidebar .= '<p><a href="' . translate( BackWPup::get_plugin_data( 'PluginURI' ), 'backwpup' ) . '">' . BackWPup::get_plugin_data( 'Name' ) . '</a></p>';
|
23 |
+
$text_help_sidebar .= '<p><a href="http://wordpress.org/extend/plugins/backwpup/">' . __( 'Plugin on wordpress.org', 'backwpup' ) . '</a></p>';
|
24 |
+
$text_help_sidebar .= '<p><a href="' . __( 'https://marketpress.com/news/', 'backwpup' ) . '">' . __( 'News', 'backwpup' ) . '</a></p>';
|
25 |
+
if ( class_exists( 'BackWPup_Pro', FALSE ) )
|
26 |
+
$text_help_sidebar .= '<p><a href="' . __( 'https://marketpress.com/support/forum/plugins/backwpup-pro/', 'backwpup' ) . '">' . __( 'Pro Support', 'backwpup' ) . '</a></p>';
|
27 |
+
else
|
28 |
+
$text_help_sidebar .= '<p><a href="' . __( 'http://wordpress.org/support/plugin/backwpup/', 'backwpup' ) . '">' . __( 'Support', 'backwpup' ) . '</a></p>';
|
29 |
+
$text_help_sidebar .= '<p><a href="' . __( 'https://marketpress.com/documentation/backwpup-pro/', 'backwpup' ) . '">' . __( 'Manual', 'backwpup' ) . '</a></p>';
|
30 |
+
|
31 |
+
get_current_screen()->set_help_sidebar( $text_help_sidebar );
|
32 |
+
}
|
33 |
+
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* @static
|
38 |
+
*
|
39 |
+
* @param array $tab
|
40 |
+
*/
|
41 |
+
public static function add_tab( $tab = array() ) {
|
42 |
+
|
43 |
+
if ( method_exists( get_current_screen(), 'add_help_tab' ) )
|
44 |
+
get_current_screen()->add_help_tab( $tab );
|
45 |
+
|
46 |
+
}
|
47 |
+
|
48 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/class-install.php
CHANGED
@@ -1,302 +1,300 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Class for upgrade / deactivation / uninstall
|
4 |
-
*/
|
5 |
-
class BackWPup_Install {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* Creates DB und updates settings
|
9 |
-
*/
|
10 |
-
public static function activate() {
|
11 |
-
|
12 |
-
//do upgrade from version 2.x
|
13 |
-
if ( ! get_site_option( 'backwpup_version' ) && get_option( 'backwpup' ) && get_option( 'backwpup_jobs' ) )
|
14 |
-
self::upgrade_from_version_two();
|
15 |
-
|
16 |
-
//
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
//
|
32 |
-
wp_clear_scheduled_hook( '
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
*
|
118 |
-
*
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
if ( ! empty( $cfg[ '
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
//
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
if ( empty( $jobvalue[ '
|
170 |
-
$jobvalue[ '
|
171 |
-
|
172 |
-
$jobvalue[ 'activetype' ] = '';
|
173 |
-
|
174 |
-
$jobvalue[ '
|
175 |
-
|
176 |
-
$jobvalue[ 'cronselect' ] = '
|
177 |
-
|
178 |
-
|
179 |
-
$jobvalue[ '
|
180 |
-
|
181 |
-
|
182 |
-
if ( $type == '
|
183 |
-
$jobvalue[ 'type' ][ $key ]
|
184 |
-
if ( $type == '
|
185 |
-
$jobvalue[ 'type' ][ $key ] = '
|
186 |
-
if ( $type == '
|
187 |
-
$jobvalue[ 'type' ][ $key ] = '
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
$jobvalue[ '
|
193 |
-
|
194 |
-
|
195 |
-
if ( ! empty( $jobvalue[ '
|
196 |
-
$jobvalue[ 'destinations' ][ ] = '
|
197 |
-
if ( ! empty( $jobvalue[ '
|
198 |
-
$jobvalue[ 'destinations' ][ ] = '
|
199 |
-
if ( ! empty( $jobvalue[ '
|
200 |
-
$jobvalue[ 'destinations' ][ ] = '
|
201 |
-
if ( ! empty( $jobvalue[ '
|
202 |
-
$jobvalue[ 'destinations' ][ ] = '
|
203 |
-
if ( ! empty( $jobvalue[ '
|
204 |
-
$jobvalue[ 'destinations' ][ ] = '
|
205 |
-
if ( ! empty( $jobvalue[ '
|
206 |
-
$jobvalue[ 'destinations' ][ ] = 'S3';
|
207 |
-
if ( ! empty( $jobvalue[ '
|
208 |
-
$jobvalue[ 'destinations' ][ ] = '
|
209 |
-
if ( ! empty( $jobvalue[ '
|
210 |
-
$jobvalue[ 'destinations' ][ ] = '
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
$jobvalue[ '
|
215 |
-
$jobvalue[ '
|
216 |
-
$jobvalue[ '
|
217 |
-
$jobvalue[ '
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
$jobvalue[ '
|
222 |
-
|
223 |
-
$jobvalue[ '
|
224 |
-
|
225 |
-
$jobvalue[ '
|
226 |
-
$jobvalue[ '
|
227 |
-
$jobvalue[ '
|
228 |
-
$jobvalue[ '
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
$jobvalue[ '
|
233 |
-
$jobvalue[ '
|
234 |
-
$jobvalue[ '
|
235 |
-
$jobvalue[ '
|
236 |
-
$jobvalue[ '
|
237 |
-
$jobvalue[ '
|
238 |
-
$jobvalue[ '
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
$jobvalue[ '
|
243 |
-
$jobvalue[ '
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
$jobvalue[ '
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
$jobvalue[ '
|
259 |
-
|
260 |
-
$jobvalue[ '
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
$jobvalue[ '
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
$jobvalue[ '
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
$jobvalue[ '
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
$jobvalue[ '
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
$jobvalue[ '
|
294 |
-
//
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
}
|
302 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Class for upgrade / deactivation / uninstall
|
4 |
+
*/
|
5 |
+
class BackWPup_Install {
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Creates DB und updates settings
|
9 |
+
*/
|
10 |
+
public static function activate() {
|
11 |
+
|
12 |
+
//do upgrade from version 2.x
|
13 |
+
if ( ! get_site_option( 'backwpup_version' ) && get_option( 'backwpup' ) && get_option( 'backwpup_jobs' ) )
|
14 |
+
self::upgrade_from_version_two();
|
15 |
+
|
16 |
+
//changes for 3.0.14
|
17 |
+
remove_all_filters( 'default_site_option_backwpup_cfg_logfolder', 10 );
|
18 |
+
if ( get_site_option( 'backwpup_version' ) != BackWPup::get_plugin_data( 'version' ) && version_compare( '3.0.13', get_site_option( 'backwpup_version' ), '>' ) && version_compare( '3.0', get_site_option( 'backwpup_version' ), '<' ) ) {
|
19 |
+
$upload_dir = wp_upload_dir();
|
20 |
+
$logfolder = get_site_option( 'backwpup_cfg_logfolder' );
|
21 |
+
if ( empty( $logfolder ) ) {
|
22 |
+
$old_log_folder = trailingslashit( str_replace( '\\', '/',$upload_dir[ 'basedir' ] ) ) . 'backwpup-' . substr( md5( md5( SECURE_AUTH_KEY ) ), 9, 5 ) . '-logs/';
|
23 |
+
update_site_option( 'backwpup_cfg_logfolder', $old_log_folder );
|
24 |
+
}
|
25 |
+
}
|
26 |
+
|
27 |
+
//create new option on not ms blogs
|
28 |
+
if ( ! is_multisite() && ! get_option( 'backwpup_jobs', FALSE ) )
|
29 |
+
add_option( 'backwpup_jobs', array(), NULL, 'no' );
|
30 |
+
|
31 |
+
//remove old schedule
|
32 |
+
wp_clear_scheduled_hook( 'backwpup_cron' );
|
33 |
+
//make new schedule
|
34 |
+
$activejobs = BackWPup_Option::get_job_ids( 'activetype', 'wpcron' );
|
35 |
+
if ( ! empty( $activejobs ) ) {
|
36 |
+
foreach ( $activejobs as $id ) {
|
37 |
+
$cron_next = BackWPup_Cron::cron_next( BackWPup_Option::get( $id, 'cron') );
|
38 |
+
wp_schedule_single_event( $cron_next, 'backwpup_cron', array( 'id' => $id ) );
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
+
//add check Cleanup schedule
|
43 |
+
wp_clear_scheduled_hook( 'backwpup_check_cleanup' );
|
44 |
+
wp_schedule_event( time(), 'twicedaily', 'backwpup_check_cleanup' );
|
45 |
+
|
46 |
+
//remove old roles pre v.3.0.9
|
47 |
+
$role = get_role( 'administrator' );
|
48 |
+
$role->remove_cap( 'backwpup' );
|
49 |
+
$role->remove_cap( 'backwpup_jobs' );
|
50 |
+
$role->remove_cap( 'backwpup_jobs_edit' );
|
51 |
+
$role->remove_cap( 'backwpup_jobs_start' );
|
52 |
+
$role->remove_cap( 'backwpup_backups' );
|
53 |
+
$role->remove_cap( 'backwpup_backups_download' );
|
54 |
+
$role->remove_cap( 'backwpup_backups_delete' );
|
55 |
+
$role->remove_cap( 'backwpup_logs' );
|
56 |
+
$role->remove_cap( 'backwpup_logs_delete' );
|
57 |
+
$role->remove_cap( 'backwpup_settings' );
|
58 |
+
|
59 |
+
//add/overwrite roles
|
60 |
+
add_role( 'backwpup_admin', __( 'BackWPup Admin', 'backwpup' ), array(
|
61 |
+
'backwpup' => TRUE, // BackWPup general accesses (like Dashboard)
|
62 |
+
'backwpup_jobs' => TRUE, // accesses for job page
|
63 |
+
'backwpup_jobs_edit' => TRUE, // user can edit/delete/copy/export jobs
|
64 |
+
'backwpup_jobs_start' => TRUE, // user can start jobs
|
65 |
+
'backwpup_backups' => TRUE, // accesses for backups page
|
66 |
+
'backwpup_backups_download' => TRUE, // user can download backup files
|
67 |
+
'backwpup_backups_delete' => TRUE, // user can delete backup files
|
68 |
+
'backwpup_logs' => TRUE, // accesses for logs page
|
69 |
+
'backwpup_logs_delete' => TRUE, // user can delete log files
|
70 |
+
'backwpup_settings' => TRUE, // accesses for settings page
|
71 |
+
) );
|
72 |
+
|
73 |
+
add_role( 'backwpup_check', __( 'BackWPup jobs checker', 'backwpup' ), array(
|
74 |
+
'backwpup' => TRUE,
|
75 |
+
'backwpup_jobs' => TRUE,
|
76 |
+
'backwpup_jobs_edit' => FALSE,
|
77 |
+
'backwpup_jobs_start' => FALSE,
|
78 |
+
'backwpup_backups' => TRUE,
|
79 |
+
'backwpup_backups_download' => FALSE,
|
80 |
+
'backwpup_backups_delete' => FALSE,
|
81 |
+
'backwpup_logs' => TRUE,
|
82 |
+
'backwpup_logs_delete' => FALSE,
|
83 |
+
'backwpup_settings' => FALSE,
|
84 |
+
) );
|
85 |
+
|
86 |
+
add_role( 'backwpup_helper', __( 'BackWPup jobs helper', 'backwpup' ), array(
|
87 |
+
'backwpup' => TRUE,
|
88 |
+
'backwpup_jobs' => TRUE,
|
89 |
+
'backwpup_jobs_edit' => FALSE,
|
90 |
+
'backwpup_jobs_start' => TRUE,
|
91 |
+
'backwpup_backups' => TRUE,
|
92 |
+
'backwpup_backups_download' => TRUE,
|
93 |
+
'backwpup_backups_delete' => TRUE,
|
94 |
+
'backwpup_logs' => TRUE,
|
95 |
+
'backwpup_logs_delete' => TRUE,
|
96 |
+
'backwpup_settings' => FALSE,
|
97 |
+
) );
|
98 |
+
|
99 |
+
//add role to admin user if no one
|
100 |
+
$users_backwpup = get_users( array( 'blog_id' => 1, 'role' => 'backwpup_admin' ) );
|
101 |
+
if ( empty( $users_backwpup ) ) {
|
102 |
+
/* @var WP_User $user */
|
103 |
+
$users = get_users( array( 'blog_id' => 1, 'role' => 'administrator', 'fields' => 'all_with_meta' ) );
|
104 |
+
foreach ( $users as $user ) {
|
105 |
+
$user->add_role( 'backwpup_admin' );
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
//update version
|
110 |
+
update_site_option( 'backwpup_version', BackWPup::get_plugin_data( 'Version' ) );
|
111 |
+
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
*
|
116 |
+
* Cleanup on Plugin deactivation
|
117 |
+
*
|
118 |
+
* @return void
|
119 |
+
*/
|
120 |
+
public static function deactivate() {
|
121 |
+
|
122 |
+
wp_clear_scheduled_hook( 'backwpup_cron' );
|
123 |
+
$activejobs = BackWPup_Option::get_job_ids( 'activetype', 'wpcron' );
|
124 |
+
if ( ! empty( $activejobs ) ) {
|
125 |
+
foreach ( $activejobs as $id ) {
|
126 |
+
wp_clear_scheduled_hook( 'backwpup_cron', array( 'id' => $id ) );
|
127 |
+
}
|
128 |
+
}
|
129 |
+
wp_clear_scheduled_hook( 'backwpup_check_cleanup' );
|
130 |
+
//to reschedule on activation and so on
|
131 |
+
update_site_option( 'backwpup_version', BackWPup::get_plugin_data( 'version' ) .'-inactive' );
|
132 |
+
}
|
133 |
+
|
134 |
+
|
135 |
+
private static function upgrade_from_version_two() {
|
136 |
+
|
137 |
+
//load options
|
138 |
+
$cfg = get_option( 'backwpup' ); //only exists in Version 2
|
139 |
+
$jobs = get_option( 'backwpup_jobs' );
|
140 |
+
|
141 |
+
//delete old options
|
142 |
+
delete_option( 'backwpup' );
|
143 |
+
delete_option( 'backwpup_jobs' );
|
144 |
+
|
145 |
+
//add new option default structure and without auto load cache
|
146 |
+
if ( ! is_multisite() )
|
147 |
+
add_option( 'backwpup_jobs', array(), NULL, 'no' );
|
148 |
+
|
149 |
+
//upgrade cfg
|
150 |
+
//if old value switch it to new
|
151 |
+
if ( ! empty( $cfg[ 'dirlogs' ] ) )
|
152 |
+
$cfg[ 'logfolder' ] = $cfg[ 'dirlogs' ];
|
153 |
+
if ( ! empty( $cfg[ 'httpauthpassword' ] ) ) {
|
154 |
+
if ( preg_match('%^[a-zA-Z0-9/+]*={0,2}$%', $cfg[ 'httpauthpassword' ] ) )
|
155 |
+
$cfg[ 'httpauthpassword' ] = base64_decode( $cfg[ 'httpauthpassword' ] );
|
156 |
+
$cfg[ 'httpauthpassword' ] = BackWPup_Encryption::encrypt( $cfg[ 'httpauthpassword' ] );
|
157 |
+
}
|
158 |
+
// delete old not needed vars
|
159 |
+
unset( $cfg[ 'dirtemp' ], $cfg[ 'dirlogs' ], $cfg[ 'logfilelist' ], $cfg[ 'jobscriptruntime' ], $cfg[ 'jobscriptruntimelong' ], $cfg[ 'last_activate' ], $cfg[ 'disablewpcron' ], $cfg[ 'phpzip' ], $cfg[ 'apicronservice' ], $cfg[ 'mailsndemail' ], $cfg[ 'mailsndname' ], $cfg[ 'mailmethod' ], $cfg[ 'mailsendmail' ], $cfg[ 'mailhost' ], $cfg[ 'mailpass' ], $cfg[ 'mailhostport' ], $cfg[ 'mailsecure' ], $cfg[ 'mailuser' ] );
|
160 |
+
//save in options
|
161 |
+
foreach ( $cfg as $cfgname => $cfgvalue )
|
162 |
+
update_site_option( 'backwpup_cfg_' . $cfgname, $cfgvalue );
|
163 |
+
|
164 |
+
//Put old jobs to new if exists
|
165 |
+
foreach ( $jobs as $jobid => $jobvalue ) {
|
166 |
+
//convert general settings
|
167 |
+
if ( empty( $jobvalue[ 'jobid' ] ) )
|
168 |
+
$jobvalue[ 'jobid' ] = $jobid;
|
169 |
+
if ( empty( $jobvalue[ 'activated' ] ) )
|
170 |
+
$jobvalue[ 'activetype' ] = '';
|
171 |
+
else
|
172 |
+
$jobvalue[ 'activetype' ] = 'wpcron';
|
173 |
+
if ( ! isset( $jobvalue[ 'cronselect' ] ) && ! isset( $jobvalue[ 'cron' ] ) )
|
174 |
+
$jobvalue[ 'cronselect' ] = 'basic';
|
175 |
+
elseif ( ! isset( $jobvalue[ 'cronselect' ] ) && isset( $jobvalue[ 'cron' ] ) )
|
176 |
+
$jobvalue[ 'cronselect' ] = 'advanced';
|
177 |
+
$jobvalue[ 'backuptype' ] = 'archive';
|
178 |
+
$jobvalue[ 'type' ] = explode( '+', $jobvalue[ 'type' ] ); //save as array
|
179 |
+
foreach ( $jobvalue[ 'type' ] as $key => $type ) {
|
180 |
+
if ( $type == 'DB' )
|
181 |
+
$jobvalue[ 'type' ][ $key ] = 'DBDUMP';
|
182 |
+
if ( $type == 'OPTIMIZE' )
|
183 |
+
unset( $jobvalue[ 'type' ][ $key ] );
|
184 |
+
if ( $type == 'CHECK' )
|
185 |
+
$jobvalue[ 'type' ][ $key ] = 'DBCHECK';
|
186 |
+
if ( $type == 'MAIL' )
|
187 |
+
$jobvalue[ 'type' ][ $key ] = 'EMAIL';
|
188 |
+
}
|
189 |
+
$jobvalue[ 'archivename' ] = $jobvalue[ 'fileprefix' ] . '%Y-%m-%d_%H-%i-%s';
|
190 |
+
$jobvalue[ 'archiveformat' ] = $jobvalue[ 'fileformart' ];
|
191 |
+
//convert active destinations
|
192 |
+
$jobvalue[ 'destinations' ] = array();
|
193 |
+
if ( ! empty( $jobvalue[ 'backupdir' ] ) and $jobvalue[ 'backupdir' ] != '/' )
|
194 |
+
$jobvalue[ 'destinations' ][ ] = 'FOLDER';
|
195 |
+
if ( ! empty( $jobvalue[ 'mailaddress' ] ) )
|
196 |
+
$jobvalue[ 'destinations' ][ ] = 'MAIL';
|
197 |
+
if ( ! empty( $jobvalue[ 'ftphost' ] ) and ! empty( $jobvalue[ 'ftpuser' ] ) and ! empty( $jobvalue[ 'ftppass' ] ) )
|
198 |
+
$jobvalue[ 'destinations' ][ ] = 'FTP';
|
199 |
+
if ( ! empty( $jobvalue[ 'dropetoken' ] ) and ! empty( $jobvalue[ 'dropesecret' ] ) )
|
200 |
+
$jobvalue[ 'destinations' ][ ] = 'DROPBOX';
|
201 |
+
if ( ! empty( $jobvalue[ 'sugarrefreshtoken' ] ) and ! empty( $jobvalue[ 'sugarroot' ] ) )
|
202 |
+
$jobvalue[ 'destinations' ][ ] = 'SUGARSYNC';
|
203 |
+
if ( ! empty( $jobvalue[ 'awsAccessKey' ] ) and ! empty( $jobvalue[ 'awsSecretKey' ] ) and ! empty( $jobvalue[ 'awsBucket' ] ) )
|
204 |
+
$jobvalue[ 'destinations' ][ ] = 'S3';
|
205 |
+
if ( ! empty( $jobvalue[ 'GStorageAccessKey' ] ) and ! empty( $jobvalue[ 'GStorageSecret' ] ) and ! empty( $jobvalue[ 'GStorageBucket' ] ) and !in_array( 'S3', $jobvalue[ 'destinations' ] ) )
|
206 |
+
$jobvalue[ 'destinations' ][ ] = 'S3';
|
207 |
+
if ( ! empty( $jobvalue[ 'rscUsername' ] ) and ! empty( $jobvalue[ 'rscAPIKey' ] ) and ! empty( $jobvalue[ 'rscContainer' ] ) )
|
208 |
+
$jobvalue[ 'destinations' ][ ] = 'RSC';
|
209 |
+
if ( ! empty( $jobvalue[ 'msazureHost' ] ) and ! empty( $jobvalue[ 'msazureAccName' ] ) and ! empty( $jobvalue[ 'msazureKey' ] ) and ! empty( $jobvalue[ 'msazureContainer' ] ) )
|
210 |
+
$jobvalue[ 'destinations' ][ ] = 'MSAZURE';
|
211 |
+
//convert dropbox
|
212 |
+
$jobvalue[ 'dropboxtoken' ] = ''; //new app key are set must reauth
|
213 |
+
$jobvalue[ 'dropboxsecret' ] = '';
|
214 |
+
$jobvalue[ 'dropboxroot' ] = 'dropbox';
|
215 |
+
$jobvalue[ 'dropboxmaxbackups' ] = $jobvalue[ 'dropemaxbackups' ];
|
216 |
+
$jobvalue[ 'dropboxdir' ] = $jobvalue[ 'dropedir' ];
|
217 |
+
unset( $jobvalue[ 'dropetoken' ], $jobvalue[ 'dropesecret' ], $jobvalue[ 'droperoot' ], $jobvalue[ 'dropemaxbackups' ], $jobvalue[ 'dropedir' ] );
|
218 |
+
//convert amazon S3
|
219 |
+
$jobvalue[ 's3accesskey' ] = $jobvalue[ 'awsAccessKey' ];
|
220 |
+
$jobvalue[ 's3secretkey' ] = BackWPup_Encryption::encrypt( $jobvalue[ 'awsSecretKey' ] );
|
221 |
+
$jobvalue[ 's3bucket' ] = $jobvalue[ 'awsBucket' ];
|
222 |
+
//get aws region
|
223 |
+
$jobvalue[ 's3region' ] = 'us-east-1';
|
224 |
+
$jobvalue[ 's3base_url' ] = '';
|
225 |
+
$jobvalue[ 's3storageclass' ] = !empty( $jobvalue[ 'awsrrs' ] ) ? 'REDUCED_REDUNDANCY' : '';
|
226 |
+
$jobvalue[ 's3dir' ] = $jobvalue[ 'awsdir' ];
|
227 |
+
$jobvalue[ 's3maxbackups' ] = $jobvalue[ 'awsmaxbackups' ];
|
228 |
+
unset( $jobvalue[ 'awsAccessKey' ], $jobvalue[ 'awsSecretKey' ], $jobvalue[ 'awsBucket' ], $jobvalue[ 'awsrrs' ], $jobvalue[ 'awsdir' ], $jobvalue[ 'awsmaxbackups' ] );
|
229 |
+
//convert google storage
|
230 |
+
$jobvalue[ 's3accesskey' ] = $jobvalue[ 'GStorageAccessKey' ];
|
231 |
+
$jobvalue[ 's3secretkey' ] = BackWPup_Encryption::encrypt( $jobvalue[ 'GStorageSecret' ] );
|
232 |
+
$jobvalue[ 's3bucket' ] = $jobvalue[ 'GStorageBucket' ];
|
233 |
+
$jobvalue[ 's3region' ] = 'google-storage';
|
234 |
+
$jobvalue[ 's3base_url' ] = '';
|
235 |
+
$jobvalue[ 's3ssencrypt' ] = '';
|
236 |
+
$jobvalue[ 's3dir' ] = $jobvalue[ 'GStoragedir' ];
|
237 |
+
$jobvalue[ 's3maxbackups' ] = $jobvalue[ 'GStoragemaxbackups' ];
|
238 |
+
unset( $jobvalue[ 'GStorageAccessKey' ], $jobvalue[ 'GStorageSecret' ], $jobvalue[ 'GStorageBucket' ], $jobvalue[ 'GStoragedir' ], $jobvalue[ 'GStoragemaxbackups' ] );
|
239 |
+
//convert MS Azure storage
|
240 |
+
$jobvalue[ 'msazureaccname' ] = $jobvalue[ 'msazureAccName' ];
|
241 |
+
$jobvalue[ 'msazurekey' ] = BackWPup_Encryption::encrypt( $jobvalue[ 'msazureKey' ] );
|
242 |
+
$jobvalue[ 'msazurecontainer' ] = $jobvalue[ 'msazureContainer' ];
|
243 |
+
unset( $jobvalue[ 'msazureHost' ], $jobvalue[ 'msazureAccName' ], $jobvalue[ 'msazureKey' ], $jobvalue[ 'msazureContainer' ] );
|
244 |
+
//convert FTP
|
245 |
+
if ( preg_match('%^[a-zA-Z0-9/+]*={0,2}$%', $jobvalue[ 'ftppass' ]) )
|
246 |
+
$jobvalue[ 'ftppass' ] = base64_decode( $jobvalue[ 'ftppass' ] );
|
247 |
+
$jobvalue[ 'ftppass' ] = BackWPup_Encryption::encrypt( $jobvalue[ 'ftppass' ] );
|
248 |
+
if ( ! empty( $jobvalue[ 'ftphost' ] ) && strstr( $jobvalue[ 'ftphost' ], ':' ) )
|
249 |
+
list( $jobvalue[ 'ftphost' ], $jobvalue[ 'ftphostport' ] ) = explode( ':', $jobvalue[ 'ftphost' ], 2 );
|
250 |
+
//convert Sugarsync
|
251 |
+
//convert Mail
|
252 |
+
$jobvalue[ 'emailaddress' ] = $jobvalue[ 'mailaddress' ];
|
253 |
+
$jobvalue[ 'emailefilesize' ] = $jobvalue[ 'mailefilesize' ];
|
254 |
+
unset( $jobvalue[ 'mailaddress' ], $jobvalue[ 'mailefilesize' ] );
|
255 |
+
//convert RSC
|
256 |
+
$jobvalue[ 'rscusername' ] = $jobvalue[ 'rscUsername' ];
|
257 |
+
$jobvalue[ 'rscapikey' ] = $jobvalue[ 'rscAPIKey' ];
|
258 |
+
$jobvalue[ 'rsccontainer' ] = $jobvalue[ 'rscContainer' ];
|
259 |
+
//convert jobtype DB Dump
|
260 |
+
$jobvalue[ 'dbdumpexclude' ] = $jobvalue[ 'dbexclude' ];
|
261 |
+
unset( $jobvalue[ 'dbexclude' ], $jobvalue['dbshortinsert'] );
|
262 |
+
//convert jobtype DBDUMP, DBCHECK
|
263 |
+
$jobvalue[ 'dbcheckrepair' ] = TRUE;
|
264 |
+
unset( $jobvalue[ 'maintenance' ] );
|
265 |
+
//convert jobtype wpexport
|
266 |
+
//convert jobtype file
|
267 |
+
$excludes = array();
|
268 |
+
foreach ( $jobvalue[ 'backuprootexcludedirs' ] as $folder ) {
|
269 |
+
$excludes[] = basename( $folder );
|
270 |
+
}
|
271 |
+
$jobvalue[ 'backuprootexcludedirs' ] = $excludes;
|
272 |
+
$excludes = array();
|
273 |
+
foreach ( $jobvalue[ 'backupcontentexcludedirs' ] as $folder ) {
|
274 |
+
$excludes[] = basename( $folder );
|
275 |
+
}
|
276 |
+
$jobvalue[ 'backupcontentexcludedirs' ] = $excludes;
|
277 |
+
$excludes = array();
|
278 |
+
foreach ( $jobvalue[ 'backuppluginsexcludedirs' ] as $folder ) {
|
279 |
+
$excludes[] = basename( $folder );
|
280 |
+
}
|
281 |
+
$jobvalue[ 'backuppluginsexcludedirs' ]= $excludes;
|
282 |
+
$excludes = array();
|
283 |
+
foreach ( $jobvalue[ 'backupthemesexcludedirs' ] as $folder ) {
|
284 |
+
$excludes[] = basename( $folder );
|
285 |
+
}
|
286 |
+
$jobvalue[ 'backupthemesexcludedirs' ] = $excludes;
|
287 |
+
$excludes = array();
|
288 |
+
foreach ( $jobvalue[ 'backupuploadsexcludedirs' ] as $folder ) {
|
289 |
+
$excludes[] = basename( $folder );
|
290 |
+
}
|
291 |
+
$jobvalue[ 'backupuploadsexcludedirs' ] = $excludes;
|
292 |
+
//delete not longer needed
|
293 |
+
unset( $jobvalue[ 'cronnextrun' ], $jobvalue[ 'fileprefix' ], $jobvalue[ 'fileformart' ], $jobvalue[ 'scheduleintervaltype' ], $jobvalue[ 'scheduleintervalteimes' ], $jobvalue[ 'scheduleinterval' ], $jobvalue[ 'dropemail' ], $jobvalue[ 'dropepass' ], $jobvalue[ 'dropesignmethod' ] );
|
294 |
+
//save in options
|
295 |
+
foreach ( $jobvalue as $jobvaluename => $jobvaluevalue )
|
296 |
+
BackWPup_Option::update( $jobvalue[ 'jobid' ], $jobvaluename, $jobvaluevalue );
|
297 |
+
}
|
298 |
+
set_site_transient( 'backwpup_upgrade_from_version_two', TRUE, 3600*24*7);
|
299 |
+
}
|
300 |
+
}
|
|
|
|
inc/class-job.php
CHANGED
@@ -1,1825 +1,1979 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Class in that the BackWPup job runs
|
4 |
-
*/
|
5 |
-
final class BackWPup_Job {
|
6 |
-
/**
|
7 |
-
* @var object The instance
|
8 |
-
*/
|
9 |
-
private static $instance = NULL;
|
10 |
-
|
11 |
-
/**
|
12 |
-
* @var string The job start type
|
13 |
-
*/
|
14 |
-
private $jobstarttype = '';
|
15 |
-
/**
|
16 |
-
* @var array of the job settings
|
17 |
-
*/
|
18 |
-
public $job = array();
|
19 |
-
|
20 |
-
/**
|
21 |
-
* @var int The timestamp when the job starts
|
22 |
-
*/
|
23 |
-
public $start_time = 0;
|
24 |
-
|
25 |
-
/**
|
26 |
-
* @var string the logfile
|
27 |
-
*/
|
28 |
-
public $logfile = '';
|
29 |
-
/**
|
30 |
-
* @var array for temp values
|
31 |
-
*/
|
32 |
-
public $temp = array();
|
33 |
-
/**
|
34 |
-
* @var string Folder where is Backup files in
|
35 |
-
*/
|
36 |
-
public $backup_folder = '';
|
37 |
-
/**
|
38 |
-
* @var string the name of the Backup archive file
|
39 |
-
*/
|
40 |
-
public $backup_file = '';
|
41 |
-
/**
|
42 |
-
* @var int The size of the Backup archive file
|
43 |
-
*/
|
44 |
-
public $backup_filesize = 0;
|
45 |
-
/**
|
46 |
-
* @var int PID of script
|
47 |
-
*/
|
48 |
-
public $pid = 0;
|
49 |
-
/**
|
50 |
-
* @var int Timestamp of last update off .running file
|
51 |
-
*/
|
52 |
-
public $timestamp_last_update = 0;
|
53 |
-
/**
|
54 |
-
* @var int Number of warnings
|
55 |
-
*/
|
56 |
-
public $warnings = 0;
|
57 |
-
/**
|
58 |
-
* @var int Number of errors
|
59 |
-
*/
|
60 |
-
public $errors = 0;
|
61 |
-
/**
|
62 |
-
* @var string the last log notice message
|
63 |
-
*/
|
64 |
-
public $lastmsg = '';
|
65 |
-
/**
|
66 |
-
* @var string the last log error/waring message
|
67 |
-
*/
|
68 |
-
public $lasterrormsg = '';
|
69 |
-
/**
|
70 |
-
* @var array of steps to do
|
71 |
-
*/
|
72 |
-
public $steps_todo = array( 'START' );
|
73 |
-
/**
|
74 |
-
* @var array of done steps
|
75 |
-
*/
|
76 |
-
public $steps_done = array();
|
77 |
-
/**
|
78 |
-
* @var array of steps data
|
79 |
-
*/
|
80 |
-
public $steps_data = array();
|
81 |
-
/**
|
82 |
-
* @var string working on step
|
83 |
-
*/
|
84 |
-
public $step_working = 'START';
|
85 |
-
/**
|
86 |
-
* @var int Number of sub steps must do in step
|
87 |
-
*/
|
88 |
-
public $substeps_todo = 0;
|
89 |
-
/**
|
90 |
-
* @var int Number of sub steps done in step
|
91 |
-
*/
|
92 |
-
public $substeps_done = 0;
|
93 |
-
/**
|
94 |
-
* @var int Percent of steps done
|
95 |
-
*/
|
96 |
-
public $step_percent = 1;
|
97 |
-
/**
|
98 |
-
* @var int Percent of sub steps done
|
99 |
-
*/
|
100 |
-
public $substep_percent = 1;
|
101 |
-
/**
|
102 |
-
* @var array of files to additional to backup
|
103 |
-
*/
|
104 |
-
public $additional_files_to_backup = array();
|
105 |
-
/**
|
106 |
-
* @var string file where folders listed for backup
|
107 |
-
*/
|
108 |
-
public $folder_list_file = '';
|
109 |
-
/**
|
110 |
-
* @var array of files/folder to exclude from backup
|
111 |
-
*/
|
112 |
-
public $exclude_from_backup = array();
|
113 |
-
/**
|
114 |
-
* @var int count of affected files
|
115 |
-
*/
|
116 |
-
public $count_files = 0;
|
117 |
-
/**
|
118 |
-
* @var int count of affected file size
|
119 |
-
*/
|
120 |
-
public $count_filesize = 0;
|
121 |
-
/**
|
122 |
-
* @var int count of affected folders
|
123 |
-
*/
|
124 |
-
public $count_folder = 0;
|
125 |
-
/**
|
126 |
-
* @var int count of files in a folder
|
127 |
-
*/
|
128 |
-
public $count_files_in_folder = 0;
|
129 |
-
/**
|
130 |
-
* @var int count of files size in a folder
|
131 |
-
*/
|
132 |
-
public $count_filesize_in_folder = 0;
|
133 |
-
/**
|
134 |
-
* @var string path to remove from file path
|
135 |
-
*/
|
136 |
-
public $remove_path = '';
|
137 |
-
|
138 |
-
/**
|
139 |
-
*
|
140 |
-
* This starts or restarts the job working
|
141 |
-
*
|
142 |
-
* @param string $start_type Start types are 'runnow', 'runnowalt', 'cronrun', 'runext', 'runcli'
|
143 |
-
* @param array|int $job_settings The id of job or the settings of a job to start
|
144 |
-
*/
|
145 |
-
private function __construct( $start_type, $job_settings = 0 ) {
|
146 |
-
global $wpdb;
|
147 |
-
/* @var wpdb $wpdb */
|
148 |
-
|
149 |
-
//check startype
|
150 |
-
if ( ! in_array( $start_type, array( 'runnow', 'runnowalt', 'cronrun', 'runext', 'runcli' ) ) )
|
151 |
-
return;
|
152 |
-
|
153 |
-
if ( is_int( $job_settings ) )
|
154 |
-
$this->job = BackWPup_Option::get_job( $job_settings );
|
155 |
-
elseif( is_array( $job_settings ) )
|
156 |
-
$this->job = $job_settings;
|
157 |
-
else
|
158 |
-
return;
|
159 |
-
$this->jobstarttype = $start_type;
|
160 |
-
$this->start_time = current_time( 'timestamp' );
|
161 |
-
$this->lastmsg = '<samp>' . __( 'Starting job', 'backwpup' ) . '</samp>';
|
162 |
-
//set Logfile
|
163 |
-
$this->logfile = BackWPup_Option::get( 'cfg', 'logfolder' ) . 'backwpup_log_' . substr( md5( md5( SECURE_AUTH_KEY ) ), 10, 6 ). '_' . date_i18n( 'Y-m-d_H-i-s' ) . '.html';
|
164 |
-
//write settings to job
|
165 |
-
if ( ! empty( $this->job[ 'jobid' ] ) ) {
|
166 |
-
BackWPup_Option::update( $this->job[ 'jobid' ], 'lastrun', $this->start_time );
|
167 |
-
BackWPup_Option::update( $this->job[ 'jobid' ], 'logfile', $this->logfile ); //Set current logfile
|
168 |
-
BackWPup_Option::update( $this->job[ 'jobid' ], 'lastbackupdownloadurl', '' );
|
169 |
-
}
|
170 |
-
//Set needed job values
|
171 |
-
$this->timestamp_last_update = microtime( TRUE );
|
172 |
-
$this->exclude_from_backup = explode( ',', trim( $this->job[ 'fileexclude' ] ) );
|
173 |
-
$this->exclude_from_backup = array_unique( $this->exclude_from_backup );
|
174 |
-
if ( trailingslashit( str_replace( '\\', '/', ABSPATH ) ) != '/' and trailingslashit( str_replace( '\\', '/', ABSPATH ) ) != '' ) //create path to remove
|
175 |
-
$this->remove_path = trailingslashit( str_replace( '\\', '/', ABSPATH ) );
|
176 |
-
//setup job steps
|
177 |
-
$this->steps_data[ 'START' ][ 'CALLBACK' ] = '';
|
178 |
-
$this->steps_data[ 'START' ][ 'NAME' ] = __( 'Job Start', 'backwpup' );
|
179 |
-
$this->steps_data[ 'START' ][ 'STEP_TRY' ] = 0;
|
180 |
-
//ADD Job types file
|
181 |
-
/* @var $job_type_class BackWPup_JobTypes */
|
182 |
-
$job_need_dest = FALSE;
|
183 |
-
if ( $job_types = BackWPup::get_job_types() ) {
|
184 |
-
foreach ( $job_types as $id => $job_type_class ) {
|
185 |
-
if ( in_array( $id, $this->job[ 'type' ] ) && $job_type_class->creates_file( ) ) {
|
186 |
-
$this->steps_todo[ ] = 'JOB_' . $id;
|
187 |
-
$this->steps_data[ 'JOB_' . $id ][ 'NAME' ] = $job_type_class->info[ 'description' ];
|
188 |
-
$this->steps_data[ 'JOB_' . $id ][ 'STEP_TRY' ] = 0;
|
189 |
-
$job_need_dest = TRUE;
|
190 |
-
}
|
191 |
-
}
|
192 |
-
}
|
193 |
-
//add destinations and create archive if a job where files to backup
|
194 |
-
if ( $job_need_dest ) {
|
195 |
-
//Set file for folder list
|
196 |
-
$this->folder_list_file = BackWPup::get_plugin_data( 'temp' ) . 'backwpup-' . substr( md5( NONCE_SALT ), 19, 6 ) . '-folders.php';
|
197 |
-
//Add archive creation and backup filename on backup type archive
|
198 |
-
if ( $this->job[ 'backuptype' ] == 'archive' ) {
|
199 |
-
//set Backup folder to temp folder if not set
|
200 |
-
if ( in_array( 'FOLDER', $this->job[ 'destinations' ] ) )
|
201 |
-
$this->backup_folder = $this->job[ 'backupdir' ];
|
202 |
-
//check backups folder
|
203 |
-
if ( ! empty( $this->backup_folder ) )
|
204 |
-
self::check_folder( $this->backup_folder );
|
205 |
-
//set temp folder to backup folder if not set
|
206 |
-
if ( ! $this->backup_folder or $this->backup_folder == '/' )
|
207 |
-
$this->backup_folder = BackWPup::get_plugin_data( 'TEMP' );
|
208 |
-
//Create backup archive full file name
|
209 |
-
$this->backup_file = $this->generate_filename( $this->job[ 'archivename' ], $this->job[ 'archiveformat' ] );
|
210 |
-
//add archive create
|
211 |
-
$this->steps_todo[ ] = 'CREATE_ARCHIVE';
|
212 |
-
$this->steps_data[ 'CREATE_ARCHIVE' ][ 'NAME' ] = __( 'Creates archive', 'backwpup' );
|
213 |
-
$this->steps_data[ 'CREATE_ARCHIVE' ][ 'STEP_TRY' ] = 0;
|
214 |
-
}
|
215 |
-
//ADD Destinations
|
216 |
-
/* @var BackWPup_Destinations $dest_class */
|
217 |
-
foreach ( BackWPup::get_destinations() as $id => $dest_class ) {
|
218 |
-
if ( in_array( $id, $this->job[ 'destinations' ] ) && $dest_class->can_run( $this ) ) {
|
219 |
-
if ( $this->job[ 'backuptype' ] == 'sync' ) {
|
220 |
-
if ( call_user_func( array( $dest_class, 'can_sync' ) ) ) {
|
221 |
-
$this->steps_todo[] = 'DEST_SYNC_' . $id;
|
222 |
-
$this->steps_data[ 'DEST_SYNC_' . $id ][ 'NAME' ] = $dest_class->info[ 'description' ];
|
223 |
-
$this->steps_data[ 'DEST_SYNC_' . $id ][ 'STEP_TRY' ] = 0;
|
224 |
-
}
|
225 |
-
} else {
|
226 |
-
$this->steps_todo[] = 'DEST_' . $id;
|
227 |
-
$this->steps_data[ 'DEST_' . $id ][ 'NAME' ] = $dest_class->info[ 'description' ];
|
228 |
-
$this->steps_data[ 'DEST_' . $id ][ 'STEP_TRY' ] = 0;
|
229 |
-
}
|
230 |
-
}
|
231 |
-
}
|
232 |
-
}
|
233 |
-
//ADD Job type no file
|
234 |
-
if ( $job_types = BackWPup::get_job_types() ) {
|
235 |
-
foreach ( $job_types as $id => $job_type_class ) {
|
236 |
-
if ( in_array( $id, $this->job[ 'type' ] ) && ! $job_type_class->creates_file() ) {
|
237 |
-
$this->steps_todo[ ] = 'JOB_' . $id;
|
238 |
-
$this->steps_data[ 'JOB_' . $id ][ 'NAME' ] = $job_type_class->info[ 'description' ];
|
239 |
-
$this->steps_data[ 'JOB_' . $id ][ 'STEP_TRY' ] = 0;
|
240 |
-
}
|
241 |
-
}
|
242 |
-
}
|
243 |
-
$this->steps_todo[] = 'END';
|
244 |
-
$this->steps_data[ 'END' ][ 'NAME' ] = __( 'Job End', 'backwpup' );
|
245 |
-
$this->steps_data[ 'END' ][ 'STEP_TRY' ] = 0;
|
246 |
-
//create log file
|
247 |
-
$fd = fopen( $this->logfile, 'w' );
|
248 |
-
fwrite( $fd, "<!DOCTYPE html>" . PHP_EOL . "<html lang=\"" . str_replace( '_', '-', get_locale() ) . "\">" . PHP_EOL . "<head>" . PHP_EOL );
|
249 |
-
fwrite( $fd, "<meta charset=\"" . get_bloginfo( 'charset' ) . "\" />" . PHP_EOL );
|
250 |
-
fwrite( $fd, "<title>" . sprintf( __( 'BackWPup log for %1$s from %2$s at %3$s', 'backwpup' ), $this->job[ 'name' ], date_i18n( get_option( 'date_format' ) ), date_i18n( get_option( 'time_format' ) ) ) . "</title>" . PHP_EOL );
|
251 |
-
fwrite( $fd, "<meta name=\"robots\" content=\"noindex, nofollow\" />" . PHP_EOL );
|
252 |
-
fwrite( $fd, "<meta name=\"copyright\" content=\"Copyright © 2012 - " . date_i18n( 'Y' ) . " Inpsyde GmbH\" />" . PHP_EOL );
|
253 |
-
fwrite( $fd, "<meta name=\"author\" content=\"Daniel Hüsken\" />" . PHP_EOL );
|
254 |
-
fwrite( $fd, "<meta name=\"generator\" content=\"BackWPup " . BackWPup::get_plugin_data( 'Version' ) . "\" />" . PHP_EOL );
|
255 |
-
fwrite( $fd, "<meta http-equiv=\"cache-control\" content=\"no-cache\" />" . PHP_EOL );
|
256 |
-
fwrite( $fd, "<meta http-equiv=\"pragma\" content=\"no-cache\" />" . PHP_EOL );
|
257 |
-
fwrite( $fd, "<meta name=\"date\" content=\"" . date( 'c' ) . "\" />" . PHP_EOL );
|
258 |
-
fwrite( $fd, str_pad( "<meta name=\"backwpup_errors\" content=\"0\" />", 100 ) . PHP_EOL );
|
259 |
-
fwrite( $fd, str_pad( "<meta name=\"backwpup_warnings\" content=\"0\" />", 100 ) . PHP_EOL );
|
260 |
-
if ( ! empty( $this->job[ 'jobid' ] ) )
|
261 |
-
fwrite( $fd, "<meta name=\"backwpup_jobid\" content=\"" . $this->job[ 'jobid' ] . "\" />" . PHP_EOL );
|
262 |
-
fwrite( $fd, "<meta name=\"backwpup_jobname\" content=\"" . esc_attr( $this->job[ 'name' ] ) . "\" />" . PHP_EOL );
|
263 |
-
fwrite( $fd, "<meta name=\"backwpup_jobtype\" content=\"" . implode( '+', $this->job[ 'type' ] ) . "\" />" . PHP_EOL );
|
264 |
-
fwrite( $fd, str_pad( "<meta name=\"backwpup_backupfilesize\" content=\"0\" />", 100 ) . PHP_EOL );
|
265 |
-
fwrite( $fd, str_pad( "<meta name=\"backwpup_jobruntime\" content=\"0\" />", 100 ) . PHP_EOL );
|
266 |
-
fwrite( $fd, "</head>" . PHP_EOL . "<body style=\"margin:0;padding:3px;font-family:Fixedsys,Courier,monospace;font-size:12px;line-height:15px;background-color:#000;color:#fff;white-space:pre;\">" );
|
267 |
-
$info = '';
|
268 |
-
$info .= sprintf( _x( '[INFO] %1$s version %2$s; WordPress version %3$s; A project of Inpsyde GmbH developed by Daniel Hüsken','Plugin name; Plugin Version; WordPress Version','backwpup' ), BackWPup::get_plugin_data( 'name' ) , BackWPup::get_plugin_data( 'Version' ), BackWPup::get_plugin_data( 'wp_version' ) ) . PHP_EOL;
|
269 |
-
$info .= __( '[INFO] This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions.', 'backwpup' ) . PHP_EOL;
|
270 |
-
$info .= sprintf(__( '[INFO] Blog url: %s', 'backwpup' ) , esc_attr( site_url( '/' ) ) ). PHP_EOL;
|
271 |
-
$info .= sprintf(__( '[INFO] BackWPup job: %1$s; %2$s', 'backwpup' ), esc_attr( $this->job[ 'name' ] ) , implode( '+', $this->job[ 'type' ] ) ) . PHP_EOL;
|
272 |
-
if ( $this->job[ 'activetype' ] != '' )
|
273 |
-
$info .= __( '[INFO] BackWPup cron:', 'backwpup' ) . ' ' . $this->job[ 'cron' ] . '; ' . date_i18n( 'D, j M Y @ H:i' ) . PHP_EOL;
|
274 |
-
if ( $this->jobstarttype == 'cronrun' )
|
275 |
-
$info .= __( '[INFO] BackWPup job started from wp-cron', 'backwpup' ) . PHP_EOL;
|
276 |
-
elseif ( $this->jobstarttype == 'runnow' or $this->jobstarttype == 'runnowalt' )
|
277 |
-
$info .= __( '[INFO] BackWPup job started manually', 'backwpup' ) . PHP_EOL;
|
278 |
-
elseif ( $this->jobstarttype == 'runext' )
|
279 |
-
$info .= __( '[INFO] BackWPup job started from external url', 'backwpup' ) . PHP_EOL;
|
280 |
-
elseif ( $this->jobstarttype == 'runcli' )
|
281 |
-
$info .= __( '[INFO] BackWPup job started form commandline interface', 'backwpup' ) . PHP_EOL;
|
282 |
-
$info .= __( '[INFO] PHP ver.:', 'backwpup' ) . ' ' . PHP_VERSION . '; ' . PHP_SAPI . '; ' . PHP_OS . PHP_EOL;
|
283 |
-
$info .= sprintf( __( '[INFO] Maximum script execution time is %1$d seconds', 'backwpup' ), ini_get( 'max_execution_time' ) ) . PHP_EOL;
|
284 |
-
$info .= sprintf( __( '[INFO] MySQL ver.: %s', 'backwpup' ), $wpdb->get_var( "SELECT VERSION() AS version" ) ) . PHP_EOL;
|
285 |
-
if ( function_exists( 'curl_init' ) ) {
|
286 |
-
$curlversion = curl_version();
|
287 |
-
$info .= sprintf( __( '[INFO] curl ver.: %1$s; %2$s', 'backwpup' ), $curlversion[ 'version' ], $curlversion[ 'ssl_version' ] ) . PHP_EOL;
|
288 |
-
}
|
289 |
-
$info .= sprintf( __( '[INFO] Temp folder is: %s', 'backwpup' ), BackWPup::get_plugin_data( 'TEMP' ) ) . PHP_EOL;
|
290 |
-
$info .= sprintf( __( '[INFO] Logfile folder is: %s', 'backwpup' ), BackWPup_Option::get( 'cfg', 'logfolder' ) ) . PHP_EOL;
|
291 |
-
$info .= sprintf( __( '[INFO] Backup type is: %s', 'backwpup' ), $this->job[ 'backuptype' ] ) . PHP_EOL;
|
292 |
-
if ( ! empty( $this->backup_file ) && $this->job[ 'backuptype' ] == 'archive' )
|
293 |
-
$info .= sprintf( __( '[INFO] Backup file is: %s', 'backwpup' ), $this->backup_folder . $this->backup_file ) . PHP_EOL;
|
294 |
-
fwrite( $fd, $info );
|
295 |
-
fwrite( $fd, '</header>' );
|
296 |
-
fclose( $fd );
|
297 |
-
//output info on cli
|
298 |
-
if ( defined( 'STDIN' ) && defined( 'STDOUT' ) )
|
299 |
-
fwrite( STDOUT, strip_tags( $info ) ) ;
|
300 |
-
//test for destinations
|
301 |
-
if ( $job_need_dest ) {
|
302 |
-
$desttest = FALSE;
|
303 |
-
foreach ( $this->steps_todo as $deststeptest ) {
|
304 |
-
if ( substr( $deststeptest, 0, 5 ) == 'DEST_' ) {
|
305 |
-
$desttest = TRUE;
|
306 |
-
break;
|
307 |
-
}
|
308 |
-
}
|
309 |
-
if ( ! $desttest )
|
310 |
-
$this->log( __( 'No destination correctly defined for backup! Please correct job settings.', 'backwpup' ), E_USER_ERROR );
|
311 |
-
}
|
312 |
-
//Set start as done
|
313 |
-
$this->steps_done[] = 'START';
|
314 |
-
//must write working data
|
315 |
-
$this->update_working_data( TRUE );
|
316 |
-
}
|
317 |
-
|
318 |
-
// prevent 'clone()' from external.
|
319 |
-
private function __clone() {}
|
320 |
-
|
321 |
-
/**
|
322 |
-
*
|
323 |
-
* @return array
|
324 |
-
*/
|
325 |
-
public function __sleep(){
|
326 |
-
//not saved: 'temp',
|
327 |
-
return array( 'jobstarttype', 'job', 'start_time', 'logfile', 'backup_folder', 'folder_list_file',
|
328 |
-
'backup_file', 'backup_filesize', 'pid', 'timestamp_last_update', 'warnings', 'errors', 'lastmsg', 'lasterrormsg',
|
329 |
-
'steps_todo', 'steps_done', 'steps_data', 'step_working', 'substeps_todo', 'substeps_done', 'step_percent',
|
330 |
-
'substep_percent', 'additional_files_to_backup', 'exclude_from_backup', 'count_files',
|
331 |
-
'count_filesize', 'count_folder', 'count_files_in_folder', 'count_filesize_in_folder', 'remove_path' );
|
332 |
-
}
|
333 |
-
|
334 |
-
/**
|
335 |
-
* get instance
|
336 |
-
*
|
337 |
-
* @return null|object
|
338 |
-
*/
|
339 |
-
public static function getInstance() {
|
340 |
-
|
341 |
-
return self::$instance;
|
342 |
-
}
|
343 |
-
|
344 |
-
|
345 |
-
/**
|
346 |
-
*
|
347 |
-
* Get a url to run a job of BackWPup
|
348 |
-
*
|
349 |
-
* @param string $starttype Start types are 'runnow', 'runnowlink', 'cronrun', 'runext', 'runcmd', 'restart'
|
350 |
-
* @param int $jobid The id of job to start else 0
|
351 |
-
* @return array|object [url] is the job url [header] for auth header or object form wp_remote_get()
|
352 |
-
*/
|
353 |
-
public static function get_jobrun_url( $starttype, $jobid = 0 ) {
|
354 |
-
|
355 |
-
|
356 |
-
$wp_admin_user = get_users( array( 'role' => 'administrator' ) ); //get a user for cookie auth
|
357 |
-
$url = site_url( 'wp-cron.php' );
|
358 |
-
$header = array();
|
359 |
-
$header[ 'Cookie' ] = LOGGED_IN_COOKIE. '='. wp_generate_auth_cookie( $wp_admin_user[ 0 ]->ID, time() + 60, 'logged_in'); // add auth cookie to header
|
360 |
-
$authurl = '';
|
361 |
-
$query_args = array( '_nonce' => substr( wp_hash( wp_nonce_tick() . 'backwup_job_run-' . $starttype, 'nonce' ), - 12, 10 ) );
|
362 |
-
|
363 |
-
if ( in_array( $starttype, array( 'restart', 'runnow', 'cronrun', 'runext' ) ) )
|
364 |
-
$query_args[ 'backwpup_run' ] = $starttype;
|
365 |
-
|
366 |
-
if ( in_array( $starttype, array( 'runnowlink', 'runnow', 'cronrun', 'runext' ) ) && ! empty( $jobid ) )
|
367 |
-
$query_args[ 'jobid' ] = $jobid;
|
368 |
-
|
369 |
-
if ( BackWPup_Option::get( 'cfg', 'httpauthuser' ) && BackWPup_Option::get( 'cfg', 'httpauthpassword' ) ) {
|
370 |
-
$header[ 'Authorization' ] = 'Basic ' . base64_encode( BackWPup_Option::get( 'cfg', 'httpauthuser' ) . ':' . BackWPup_Encryption::decrypt( BackWPup_Option::get( 'cfg', 'httpauthpassword' ) ) );
|
371 |
-
$authurl = BackWPup_Option::get( 'cfg', 'httpauthuser' ) . ':' . BackWPup_Encryption::decrypt( BackWPup_Option::get( 'cfg', 'httpauthpassword' ) ) . '@';
|
372 |
-
}
|
373 |
-
|
374 |
-
if ( $starttype == 'runext' ) {
|
375 |
-
$query_args[ '_nonce' ] = BackWPup_Option::get( 'cfg', 'jobrunauthkey' );
|
376 |
-
if ( ! empty( $authurl ) ) {
|
377 |
-
$url = str_replace( 'https://', 'https://' . $authurl, $url );
|
378 |
-
$url = str_replace( 'http://', 'http://' . $authurl, $url );
|
379 |
-
}
|
380 |
-
}
|
381 |
-
|
382 |
-
if ( $starttype == 'runnowlink' && ( ! defined( 'ALTERNATE_WP_CRON' ) || ! ALTERNATE_WP_CRON ) ) {
|
383 |
-
$url = wp_nonce_url( network_admin_url( 'admin.php' ), 'backwup_job_run-' . $starttype );
|
384 |
-
$query_args[ 'page' ] = 'backwpupjobs';
|
385 |
-
$query_args[ 'action' ] = 'runnow';
|
386 |
-
unset( $query_args[ '_nonce' ] );
|
387 |
-
}
|
388 |
-
|
389 |
-
if ( $starttype == 'runnowlink' && defined( 'ALTERNATE_WP_CRON' ) && ALTERNATE_WP_CRON ) {
|
390 |
-
$query_args[ 'backwpup_run' ] = 'runnowalt';
|
391 |
-
$query_args[ '_nonce' ] = substr( wp_hash( wp_nonce_tick() . 'backwup_job_run-runnowalt', 'nonce' ), - 12, 10 );
|
392 |
-
}
|
393 |
-
|
394 |
-
$url = array(
|
395 |
-
'url' => add_query_arg( $query_args, $url ),
|
396 |
-
'header' => $header
|
397 |
-
);
|
398 |
-
|
399 |
-
if ( ! in_array( $starttype, array( 'runnowlink', 'runext' ) ) ) {
|
400 |
-
return @wp_remote_get( $url[ 'url' ], array(
|
401 |
-
'blocking' => FALSE,
|
402 |
-
'sslverify' => FALSE,
|
403 |
-
'timeout' => 0.01,
|
404 |
-
'headers' => $url[ 'header' ],
|
405 |
-
'user-agent' => BackWpup::get_plugin_data( 'User-Agent' )
|
406 |
-
) );
|
407 |
-
}
|
408 |
-
|
409 |
-
return $url;
|
410 |
-
}
|
411 |
-
|
412 |
-
|
413 |
-
/**
|
414 |
-
*
|
415 |
-
*/
|
416 |
-
public static function start_http($starttype) {
|
417 |
-
|
418 |
-
//prevent W3TC object cache
|
419 |
-
define('DONOTCACHEOBJECT', TRUE);
|
420 |
-
|
421 |
-
//load text domain if needed
|
422 |
-
if ( ! is_textdomain_loaded( 'backwpup' ) && ! BackWPup_Option::get( 'cfg', 'jobnotranslate') )
|
423 |
-
load_plugin_textdomain( 'backwpup', FALSE, BackWPup::get_plugin_data( 'BaseName' ) . '/languages' );
|
424 |
-
|
425 |
-
//special header
|
426 |
-
@putenv( "nokeepalive=1" );
|
427 |
-
@header( 'Content-Type: text/html; charset=' . get_bloginfo( 'charset' ) );
|
428 |
-
@header( 'X-Robots-Tag: noindex, nofollow' );
|
429 |
-
send_nosniff_header();
|
430 |
-
nocache_headers();
|
431 |
-
|
432 |
-
//check get vars
|
433 |
-
if ( isset( $_GET[ 'jobid' ] ) )
|
434 |
-
$jobid = (int)$_GET[ 'jobid' ];
|
435 |
-
else
|
436 |
-
$jobid = 0;
|
437 |
-
//check job id exists
|
438 |
-
if ( $starttype != 'restart' && $jobid != BackWPup_Option::get( $jobid, 'jobid' ) ) {
|
439 |
-
trigger_error( __( 'Wrong BackWPup JobID', 'backwpup' ) . ' ' . $jobid, E_USER_ERROR );
|
440 |
-
wp_die( __( 'Wrong BackWPup JobID', 'backwpup' ), __( 'Wrong BackWPup JobID', 'backwpup' ), array( 'response' => 400 ) );
|
441 |
-
}
|
442 |
-
//check folders
|
443 |
-
if ( ! self::check_folder( BackWPup_Option::get( 'cfg', 'logfolder' ) ) ) {
|
444 |
-
trigger_error( __( 'Log folder does not exist or is not writable for BackWPup', 'backwpup' ), E_USER_ERROR );
|
445 |
-
wp_die( __( 'Log folder does not exist or is not writable for BackWPup', 'backwpup' ), __( 'Log folder does not exist or is not writable for BackWPup', 'backwpup' ), array( 'response' => 500 ) );
|
446 |
-
}
|
447 |
-
if ( ! self::check_folder( BackWPup::get_plugin_data( 'TEMP' ) ) ) {
|
448 |
-
trigger_error( __( 'Temp folder does not exist or is not writable for BackWPup', 'backwpup' ), E_USER_ERROR );
|
449 |
-
wp_die( __( 'Temp folder does not exist or is not writable for BackWPup', 'backwpup' ), __( 'Temp folder does not exist or is not writable for BackWPup', 'backwpup' ), array( 'response' => 500 ) );
|
450 |
-
}
|
451 |
-
$backups_folder = BackWPup_Option::get( $jobid, 'backupdir' );
|
452 |
-
if ( ! empty( $backups_folder ) && ! self::check_folder( $backups_folder ) ) {
|
453 |
-
trigger_error( __( 'Backups folder does not exist or is not writable for BackWPup', 'backwpup' ), E_USER_ERROR );
|
454 |
-
wp_die( __( 'Backups folder does not exist or is not writable for BackWPup', 'backwpup' ), __( 'Backups folder does not exist or is not writable for BackWPup', 'backwpup' ), array( 'response' => 500 ) );
|
455 |
-
}
|
456 |
-
//check running job
|
457 |
-
$backwpup_job_object = self::get_working_data();
|
458 |
-
if ( $starttype == 'restart' && ! $backwpup_job_object ) {
|
459 |
-
trigger_error( __( 'No BackWPup job running', 'backwpup' ), E_USER_ERROR );
|
460 |
-
wp_die( __( 'No BackWPup job running', 'backwpup' ), __( 'No BackWPup job running', 'backwpup' ), array( 'response' => 400 ) );
|
461 |
-
}
|
462 |
-
if ( $starttype != 'restart' && ( is_object( $backwpup_job_object ) || is_int( $backwpup_job_object ) ) ) {
|
463 |
-
trigger_error( __( 'A BackWPup job is already running', 'backwpup' ), E_USER_ERROR );
|
464 |
-
wp_die( __( 'A BackWPup job is already running', 'backwpup' ), __( 'A BackWPup job is already running', 'backwpup' ), array( 'response' => 503 ) );
|
465 |
-
}
|
466 |
-
if ( $starttype == 'restart' && is_object( $backwpup_job_object ) ) {
|
467 |
-
self::$instance = $backwpup_job_object;
|
468 |
-
}
|
469 |
-
//early write working file to prevent double run
|
470 |
-
if ( in_array( $starttype, array( 'runnow', 'runnowalt', 'runext' ) ) && ! $backwpup_job_object ) {
|
471 |
-
update_site_option( 'backwpup_working_job', (int)$jobid );
|
472 |
-
file_put_contents( BackWPup::get_plugin_data( 'running_file' ), '<?php //'. serialize( (object) array() ), LOCK_EX );
|
473 |
-
}
|
474 |
-
// disable user abort. wp-cron.php set it now
|
475 |
-
//ignore_user_abort( TRUE );
|
476 |
-
//close session file on server side to avoid blocking other requests
|
477 |
-
session_write_close();
|
478 |
-
// disconnect or redirect
|
479 |
-
ob_start();
|
480 |
-
if ( $starttype == 'runnowalt' )
|
481 |
-
wp_redirect( add_query_arg( array( 'page' => 'backwpupjobs' ), network_admin_url( 'admin.php' ) ) );
|
482 |
-
header( "Content-Length: " . ob_get_length() );
|
483 |
-
header( "Connection: close" );
|
484 |
-
ob_end_flush();
|
485 |
-
flush();
|
486 |
-
//start class
|
487 |
-
if ( ! $backwpup_job_object && in_array( $starttype, array( 'runnow', 'runnowalt', 'runext' ) ) ) {
|
488 |
-
//schedule restart event
|
489 |
-
wp_schedule_single_event( time() + 60, 'backwpup_cron', array( 'id' => 'restart' ) );
|
490 |
-
//start job
|
491 |
-
self::$instance = new self( $starttype, (int)$jobid );
|
492 |
-
}
|
493 |
-
if( is_object( self::$instance ) )
|
494 |
-
self::$instance->run();
|
495 |
-
}
|
496 |
-
|
497 |
-
/**
|
498 |
-
* @param $jobid
|
499 |
-
*/
|
500 |
-
public static function start_cli( $jobid ) {
|
501 |
-
|
502 |
-
if ( ! defined( 'STDIN' ) )
|
503 |
-
return;
|
504 |
-
|
505 |
-
//define DOING_CRON to prevent caching
|
506 |
-
if( ! defined( 'DOING_CRON' ) )
|
507 |
-
define( 'DOING_CRON', TRUE );
|
508 |
-
|
509 |
-
//prevent W3TC object cache
|
510 |
-
define('DONOTCACHEOBJECT', TRUE);
|
511 |
-
|
512 |
-
//load text domain if needed
|
513 |
-
if ( ! is_textdomain_loaded( 'backwpup' ) && ! BackWPup_Option::get( 'cfg', 'jobnotranslate') )
|
514 |
-
load_plugin_textdomain( 'backwpup', FALSE, BackWPup::get_plugin_data( 'BaseName' ) . '/languages' );
|
515 |
-
|
516 |
-
//check job id exists
|
517 |
-
$jobids = BackWPup_Option::get_job_ids();
|
518 |
-
if ( ! in_array( $jobid, $jobids ) ) {
|
519 |
-
trigger_error( __( 'Wrong BackWPup JobID', 'backwpup' ), E_USER_ERROR );
|
520 |
-
die( __( 'Wrong BackWPup JobID', 'backwpup' ) );
|
521 |
-
}
|
522 |
-
//check folders
|
523 |
-
if ( ! self::check_folder( BackWPup_Option::get( 'cfg', 'logfolder' ) ) ) {
|
524 |
-
trigger_error( __( 'Log folder does not exist or is not writable', 'backwpup' ), E_USER_ERROR );
|
525 |
-
die( __( 'Log folder does not exist or is not writable for BackWPup', 'backwpup' ) );
|
526 |
-
}
|
527 |
-
if ( ! self::check_folder( BackWPup::get_plugin_data( 'TEMP' ) ) ) {
|
528 |
-
trigger_error( __( 'Temp folder does not exist or is not writable', 'backwpup' ), E_USER_ERROR );
|
529 |
-
die( __( 'Temp folder does not exist or is not writable for BackWPup', 'backwpup' ) );
|
530 |
-
}
|
531 |
-
//check running job
|
532 |
-
if ( self::get_working_data( FALSE ) ) {
|
533 |
-
trigger_error( __( 'A BackWPup job is already running', 'backwpup' ), E_USER_ERROR );
|
534 |
-
die( __( 'A BackWPup job is already running', 'backwpup' ) );
|
535 |
-
}
|
536 |
-
//early write working file to prevent double run
|
537 |
-
update_site_option( 'backwpup_working_job', (int)$jobid );
|
538 |
-
file_put_contents( BackWPup::get_plugin_data( 'running_file' ), '<?php //'. serialize( (object) array() ), LOCK_EX );
|
539 |
-
//start/restart class
|
540 |
-
fwrite( STDOUT, __( 'Job Started' ) . PHP_EOL );
|
541 |
-
fwrite( STDOUT, '----------------------------------------------------------------------' . PHP_EOL );
|
542 |
-
self::$instance = new self( 'runcli', (int)$jobid );
|
543 |
-
if( is_object( self::$instance ) )
|
544 |
-
self::$instance->run();
|
545 |
-
}
|
546 |
-
|
547 |
-
/**
|
548 |
-
* @param int $jobid
|
549 |
-
*/
|
550 |
-
public static function start_wp_cron( $jobid = 0 ) {
|
551 |
-
|
552 |
-
if ( ! defined( 'DOING_CRON' ) || ! DOING_CRON )
|
553 |
-
return;
|
554 |
-
|
555 |
-
//prevent W3TC object cache
|
556 |
-
define('DONOTCACHEOBJECT', TRUE);
|
557 |
-
|
558 |
-
//load text domain if needed
|
559 |
-
if ( ! is_textdomain_loaded( 'backwpup' ) && ! BackWPup_Option::get( 'cfg', 'jobnotranslate') )
|
560 |
-
load_plugin_textdomain( 'backwpup', FALSE, BackWPup::get_plugin_data( 'BaseName' ) . '/languages' );
|
561 |
-
|
562 |
-
//special header
|
563 |
-
@putenv( "nokeepalive=1" );
|
564 |
-
@header( 'Content-Type: text/html; charset=' . get_bloginfo( 'charset' ) );
|
565 |
-
@header( 'X-Robots-Tag: noindex, nofollow' );
|
566 |
-
send_nosniff_header();
|
567 |
-
nocache_headers();
|
568 |
-
|
569 |
-
//check job id exists
|
570 |
-
if ( $jobid != BackWPup_Option::get( $jobid, 'jobid' ) && $jobid != 0 ) {
|
571 |
-
trigger_error( __( 'Wrong BackWPup JobID', 'backwpup' ), E_USER_ERROR );
|
572 |
-
|
573 |
-
return;
|
574 |
-
}
|
575 |
-
//check folders
|
576 |
-
if ( ! self::check_folder( BackWPup_Option::get( 'cfg', 'logfolder' ) ) ) {
|
577 |
-
trigger_error( __( 'Log folder does not exist or is not writable for BackWPup', 'backwpup' ), E_USER_ERROR );
|
578 |
-
|
579 |
-
return;
|
580 |
-
}
|
581 |
-
if ( ! self::check_folder( BackWPup::get_plugin_data( 'TEMP' ) ) ) {
|
582 |
-
trigger_error( __( 'Temp folder does not exist or is not writable for BackWPup', 'backwpup' ), E_USER_ERROR);
|
583 |
-
|
584 |
-
return;
|
585 |
-
}
|
586 |
-
//check running job
|
587 |
-
self::$instance = self::get_working_data();
|
588 |
-
if ( $jobid != 0 && is_object( self::$instance ) ) {
|
589 |
-
trigger_error( __( 'A BackWPup job is already running', 'backwpup' ), E_USER_ERROR );
|
590 |
-
|
591 |
-
return;
|
592 |
-
}
|
593 |
-
//start/restart class
|
594 |
-
if ( ! self::$instance && $jobid != 0 ) {
|
595 |
-
//early write working file to prevent double run
|
596 |
-
update_site_option( 'backwpup_working_job', (int)$jobid );
|
597 |
-
file_put_contents( BackWPup::get_plugin_data( 'running_file' ), '<?php //'. serialize( (object) array() ), LOCK_EX );
|
598 |
-
//schedule restart event
|
599 |
-
wp_schedule_single_event( time() + 60, 'backwpup_cron', array( 'id' => 'restart' ) );
|
600 |
-
//start job
|
601 |
-
self::$instance = new self( 'cronrun', (int)$jobid );
|
602 |
-
}
|
603 |
-
if( is_object( self::$instance ) )
|
604 |
-
self::$instance->run();
|
605 |
-
}
|
606 |
-
|
607 |
-
|
608 |
-
/**
|
609 |
-
* Run baby run
|
610 |
-
*/
|
611 |
-
public function run() {
|
612 |
-
global $wpdb;
|
613 |
-
/* @var wpdb $wpdb */
|
614 |
-
|
615 |
-
//Check double running and inactivity
|
616 |
-
$job_object = self::get_working_data();
|
617 |
-
if ( ! $job_object )
|
618 |
-
return;
|
619 |
-
$last_update = microtime( TRUE ) - $job_object->timestamp_last_update;
|
620 |
-
if ( $job_object->pid != 0 && $last_update > 300) {
|
621 |
-
$this->log( __( 'Job restart due to inactivity for more than 5 minutes.', 'backwpup' ), E_USER_WARNING );
|
622 |
-
}
|
623 |
-
elseif ( $this->pid != 0 && $job_object->pid != self::get_pid() ) {
|
624 |
-
$this->log( __( 'Second process start terminated, because a other job is already running!', 'backwpup' ), E_USER_WARNING );
|
625 |
-
return;
|
626 |
-
}
|
627 |
-
unset( $job_object );
|
628 |
-
//set Pid
|
629 |
-
$this->pid = self::get_pid();
|
630 |
-
$this->update_working_data( TRUE );
|
631 |
-
//set function for PHP user defined error handling
|
632 |
-
$this->temp[ 'PHP' ][ 'INI' ][ 'ERROR_LOG' ] = ini_get( 'error_log' );
|
633 |
-
$this->temp[ 'PHP' ][ 'INI' ][ 'LOG_ERRORS' ] = ini_get( 'log_errors' );
|
634 |
-
$this->temp[ 'PHP' ][ 'INI' ][ 'DISPLAY_ERRORS' ] = ini_get( 'display_errors' );
|
635 |
-
@ini_set( 'error_log', $this->logfile );
|
636 |
-
@ini_set( 'display_errors', 'Off' );
|
637 |
-
@ini_set( 'log_errors', 'On' );
|
638 |
-
//set temp folder
|
639 |
-
$can_set_temp_env = TRUE;
|
640 |
-
$protected_env_vars = explode( ',', ini_get( 'safe_mode_protected_env_vars') );
|
641 |
-
foreach( $protected_env_vars as $protected_env ) {
|
642 |
-
if ( strtoupper( trim( $protected_env ) ) == 'TMPDIR' )
|
643 |
-
$can_set_temp_env = FALSE;
|
644 |
-
}
|
645 |
-
if ( $can_set_temp_env ) {
|
646 |
-
$this->temp[ 'PHP' ][ 'ENV' ][ 'TEMPDIR' ] = getenv( 'TMPDIR' );
|
647 |
-
@putenv( 'TMPDIR='.BackWPup::get_plugin_data( 'TEMP') );
|
648 |
-
}
|
649 |
-
//increase MySQL timeout
|
650 |
-
@ini_set( 'mysql.connect_timeout', '300' );
|
651 |
-
$wpdb->query( "SET session wait_timeout = 300" );
|
652 |
-
//Write Wordpress DB errors to log
|
653 |
-
$wpdb->suppress_errors( FALSE );
|
654 |
-
$wpdb->hide_errors();
|
655 |
-
//set php execution time
|
656 |
-
@set_time_limit( 0 );
|
657 |
-
//set wp max memory limit
|
658 |
-
@ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) );
|
659 |
-
//set error handler
|
660 |
-
if ( defined( 'WP_DEBUG') && WP_DEBUG ) //on debug display all errors
|
661 |
-
set_error_handler( array( $this, 'log' ) );
|
662 |
-
else //on normal display all errors without notices
|
663 |
-
set_error_handler( array( $this, 'log' ), E_ALL ^ E_NOTICE ^ E_STRICT );
|
664 |
-
set_exception_handler( array( $this, 'exception_handler' ) );
|
665 |
-
//not loading Textdomains and unload loaded
|
666 |
-
if ( BackWPup_Option::get( 'cfg', 'jobnotranslate') ) {
|
667 |
-
add_filter( 'override_load_textdomain', create_function( '','return TRUE;') );
|
668 |
-
$GLOBALS[ 'l10n' ] = array();
|
669 |
-
}
|
670 |
-
//clear caches then the backups smaller and lesser problems
|
671 |
-
if ( function_exists( 'apc_clear_cache' ) ) { //clear APC
|
672 |
-
apc_clear_cache();
|
673 |
-
}
|
674 |
-
if ( class_exists('W3_Plugin_TotalCacheAdmin') ) { //W3TC
|
675 |
-
$totalcacheadmin = & w3_instance('W3_Plugin_TotalCacheAdmin');
|
676 |
-
$totalcacheadmin->flush_all();
|
677 |
-
} elseif ( function_exists('wp_cache_clear_cache') ) { //WP Super Cache
|
678 |
-
wp_cache_clear_cache();
|
679 |
-
} elseif ( has_action('cachify_flush_cache') ) { //Cachify
|
680 |
-
do_action('cachify_flush_cache');
|
681 |
-
}
|
682 |
-
$job_types = BackWPup::get_job_types();
|
683 |
-
$destinations = BackWPup::get_destinations();
|
684 |
-
// execute function on job shutdown register_shutdown_function( array( $this, 'shutdown' ) );
|
685 |
-
add_action( 'shutdown', array( $this, 'shutdown' ) );
|
686 |
-
//remove_action('shutdown', array( $this, 'shutdown' ));
|
687 |
-
if ( function_exists( 'pcntl_signal' ) ) {
|
688 |
-
declare( ticks = 1 ) ; //set ticks
|
689 |
-
pcntl_signal( 15, array( $this, 'shutdown' ) ); //SIGTERM
|
690 |
-
//pcntl_signal(9, array($this,'shutdown')); //SIGKILL
|
691 |
-
pcntl_signal( 2, array( $this, 'shutdown' ) ); //SIGINT
|
692 |
-
}
|
693 |
-
foreach ( $this->steps_todo as $this->step_working ) {
|
694 |
-
//Run next step
|
695 |
-
if ( ! in_array( $this->step_working, $this->steps_done ) ) {
|
696 |
-
//calc step percent
|
697 |
-
if ( count( $this->steps_done ) > 0 )
|
698 |
-
$this->step_percent = round( count( $this->steps_done ) / count( $this->steps_todo ) * 100 );
|
699 |
-
else
|
700 |
-
$this->step_percent = 1;
|
701 |
-
while ( $this->steps_data[ $this->step_working ][ 'STEP_TRY' ] < BackWPup_Option::get( 'cfg', 'jobstepretry' ) ) {
|
702 |
-
if ( in_array( $this->step_working, $this->steps_done ) )
|
703 |
-
break;
|
704 |
-
$this->steps_data[ $this->step_working ][ 'STEP_TRY' ] ++;
|
705 |
-
$this->update_working_data( TRUE );
|
706 |
-
$done = FALSE;
|
707 |
-
//executes the methods of job process
|
708 |
-
if ( $this->step_working == 'CREATE_ARCHIVE')
|
709 |
-
$done = $this->create_archive();
|
710 |
-
elseif ( $this->step_working == 'END')
|
711 |
-
$this->end();
|
712 |
-
elseif ( strstr( $this->step_working, 'JOB_' ) )
|
713 |
-
$done = call_user_func( array( $job_types[ str_replace( 'JOB_', '', $this->step_working ) ], 'job_run' ), $this );
|
714 |
-
elseif ( strstr( $this->step_working, 'DEST_SYNC_' ) )
|
715 |
-
$done = call_user_func( array( $destinations[ str_replace( 'DEST_SYNC_', '', $this->step_working ) ], 'job_run_sync' ), $this );
|
716 |
-
elseif ( strstr( $this->step_working, 'DEST_' ) )
|
717 |
-
$done = call_user_func( array( $destinations[ str_replace( 'DEST_', '', $this->step_working ) ], 'job_run_archive' ), $this );
|
718 |
-
elseif ( ! empty( $this->steps_data[ $this->step_working ][ 'CALLBACK' ] ) )
|
719 |
-
$done = call_user_func( $this->steps_data[ $this->step_working ][ 'CALLBACK' ], $this );
|
720 |
-
//set step as done
|
721 |
-
if ( $done == TRUE ) {
|
722 |
-
unset( $this->temp ); //Clean temp
|
723 |
-
$this->steps_done[ ] = $this->step_working;
|
724 |
-
$this->substeps_done = 0;
|
725 |
-
$this->substeps_todo = 0;
|
726 |
-
}
|
727 |
-
//restart on every job step expect end and only on http connection
|
728 |
-
if ( BackWPup_Option::get( 'cfg', 'jobsteprestart' ) )
|
729 |
-
$this->do_restart();
|
730 |
-
}
|
731 |
-
if ( $this->steps_data[ $this->step_working ][ 'STEP_TRY' ] > BackWPup_Option::get( 'cfg', 'jobstepretry' ) )
|
732 |
-
$this->log( __( 'Step aborted: too many attempts!', 'backwpup' ), E_USER_ERROR );
|
733 |
-
}
|
734 |
-
}
|
735 |
-
}
|
736 |
-
|
737 |
-
/**
|
738 |
-
* Do a job restart
|
739 |
-
*/
|
740 |
-
public function do_restart() {
|
741 |
-
|
742 |
-
//no restart if no working job
|
743 |
-
if ( ! self::get_working_data( FALSE ) )
|
744 |
-
exit();
|
745 |
-
|
746 |
-
//no restart if in end step
|
747 |
-
if ( $this->step_working == 'END' )
|
748 |
-
return;
|
749 |
-
|
750 |
-
//no restart on cli usage
|
751 |
-
if ( defined( 'STDIN' ) )
|
752 |
-
$this->end();
|
753 |
-
|
754 |
-
//do things for a clean restart
|
755 |
-
$this->pid = 0;
|
756 |
-
$this->jobstarttype = 'restart';
|
757 |
-
$this->update_working_data( TRUE );
|
758 |
-
remove_action( 'shutdown', array( $this, 'shutdown' ) );
|
759 |
-
//do restart
|
760 |
-
if ( defined( 'ALTERNATE_WP_CRON' ) && ALTERNATE_WP_CRON ) {
|
761 |
-
//schedule restart for now
|
762 |
-
wp_clear_scheduled_hook( 'backwpup_cron', array( 'id' => 'restart' ) );
|
763 |
-
wp_schedule_single_event( time(), 'backwpup_cron', array( 'id' => 'restart' ) );
|
764 |
-
} else {
|
765 |
-
self::get_jobrun_url( 'restart' );
|
766 |
-
}
|
767 |
-
exit();
|
768 |
-
}
|
769 |
-
|
770 |
-
/**
|
771 |
-
*
|
772 |
-
* Get data off a working job
|
773 |
-
*
|
774 |
-
* @param bool $get_object is full object needed or only that it working
|
775 |
-
*
|
776 |
-
* @return bool|object|int BackWPup_Job Object or Bool if file not exits or job id if file cant read
|
777 |
-
*/
|
778 |
-
public static function get_working_data( $get_object = TRUE ) {
|
779 |
-
|
780 |
-
if ( ! is_file( BackWPup::get_plugin_data( 'running_file' ) ) )
|
781 |
-
return FALSE;
|
782 |
-
|
783 |
-
if ( ! $get_object )
|
784 |
-
return TRUE;
|
785 |
-
|
786 |
-
if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|