Bỏ qua đến nội dung chính
  Thứ ba, ngày 14 tháng 1 năm 2020
  6 Trả lời
  3,1 nghìn lượt truy cập
  Đặt mua
Xin chào,

nó có tương thích với không gian digitalocean và các lượt thích S3 khác không?

Và nó có tương thích với UX Builder phẳng không

Cảm ơn!
MỘT
5 năm trước
CHÀO,

Cảm ơn đã liên hệ với chúng tôi tại đây về extensionnày.

nó có tương thích với không gian digitalocean và các ứng dụng tương tự khác của S3 không?

Chúng tôi chưa hỗ trợ Digital Ocean, bạn có thể sử dụng Amazon S3 ngay bây giờ: Để biết thêm chi tiết:

https://www.joomunited.com/wordpress-products/wp-media-folder/amazon-s3-integration-with-wordpress-media-l Library

Và nó có tương thích với UX Builder phẳng không

Có, nó tương thích với hầu hết trình tạo trang.

Hy vọng nó giúp!
Chúc mừng,
W
5 năm trước
Xin chào,

Cảm ơn câu trả lời của bạn.

vì DO tương thích với S3 có thể nó hoạt động với thông tin đăng nhập DO và địa chỉ máy chủ, không?:) bạn đã thử nó?
MỘT
5 năm trước
CHÀO,

Cảm ơn bạn đã liên hệ lại với tôi với nhiều thông tin hơn.

vì DO tương thích với S3 có thể nó hoạt động với thông tin đăng nhập DO và địa chỉ máy chủ, không?:) bạn đã thử nó?


Chúng tôi chưa thử nghiệm với DO và tôi nghĩ điều đó là không thể.

Chúc mừng,
R
5 năm trước
Bạn có thể sử dụng nó với DigitalOcean, có một cách hack đơn giản để làm cho nó hoạt động:

digitalocean.png

Vì tôi chỉ làm việc này cho một khách hàng nên tôi sẽ trình bày chi tiết cách hack và sau đó giải thích cách bạn làm cho nó hoạt động riêng biệt.

--

Mặc dù chúng tôi chưa làm cho nó hoạt động được 100% nhưng chúng tôi đã đạt được tiến bộ đáng kể:

1. Gian lận

DigitalOcean Spaces được xây dựng dựa trên API của S3 và sử dụng Thư viện PHP "AWS SDK" của Amazon (là bundled với plugin).

Khi khám phá ra điều này, tôi đã nghĩ rằng kể từ khi DigitalOcean khuyến khích sử dụng SDK với sản phẩm của chính mình, việc hack một số mã để làm cho nó hoạt động sẽ không quá khó khăn.

Để làm điều này, tôi thấy rằng cách hoạt động của plugin là với hai tệp lớp (cho mỗi dịch vụ) -
./class/wpmfAddonAws3Admin.php
&
./class/wpmfAws3.php
(đối với S3).

Tệp "quản trị viên" là nơi chứa chức năng giao diện người dùng; cái còn lại là để giao tiếp với S3 SDK. Nói tóm lại, tệp "quản trị viên" được tải qua Ajax hoặc giao diện người dùng WP và chức năng của nó gọi tệp S3 (sử dụng thông tin xác thực được lưu trữ), cho phép nó thực hiện các hành động (như đồng bộ hóa) với bộ chứa S3 của bạn. Điều này hoạt động rất tốt, nhưng có một vấn đề lớn khi làm cho nó hoạt động với DigitalOcean:

điểm cuối.png

DigitalOcean là KHÔNG khu vực bất khả tri. Điều này có nghĩa là mỗi yêu cầu nằm trong phạm vi một khu vực cụ thể, trong khi S3 thì không. Bản thân đây không phải là vấn đề (bản hack của chúng tôi vẫn sẽ hoạt động), nhưng nếu bạn muốn đạt được chức năng "đầy đủ" (các vùng/nhóm khác nhau), bạn cần đảm bảo rằng bạn sẽ phải gọi lớp "không phải quản trị viên" với cài đặt thông tin xác thực tùy chỉnh mỗi lần.

-

Bản hack bao gồm những điều sau đây:

a) Thay đổi tệp "quản trị viên" để sử dụng "điểm cuối" cho vùng DigitalOcean Spaces của bạn
b) Đảm bảo vùng 'us-east-1' luôn được đặt
c) Thay đổi "URL tệp đính kèm" cho từng tệp đính kèm được đồng bộ hóa trong thư viện phương tiện của bạn

-

Bước đầu tiên là thay đổi các tùy chọn "mặc định" trong tệp "quản trị viên":

quản trị viên.png

Bắt đầu từ dòng 34 của
./class/wpmfAddonAws3Admin.php
, bạn sẽ thấy một tập hợp cài đặt mặc định được tạo cho lớp kia. Bạn cần phải làm như sau:


  • Thay đổi "khu vực" thành 'us-east-1'
  • Thêm dòng
    "endpoint" => "https://[[REGION]].digitaloceanspaces.com"



Trong trường hợp trên, "khu vực" của chúng tôi là AMS3. Điều này có thể khác nhau tùy thuộc vào vị trí nơi bạn lưu giữ không gian.

Việc thay đổi mã này thực sự không mang lại nhiều tác dụng nhưng đảm bảo rằng các giá trị mặc định giống nhau được sử dụng mỗi lần (và "điểm cuối" được đặt, đây là cơ sở của toàn bộ vụ hack).

-

Sau khi thực hiện việc này, chúng ta chuyển sang tệp lớp khác
./class/wpmfAws3.php
:

lớp.png

Điều này, như đã đề cập, được gọi mỗi khi lớp "quản trị viên" muốn giao tiếp với S3/DO.

Những gì chúng ta sẽ làm ở đây là "giả mạo" điểm cuối, nghĩa là chúng ta mã hóa nó. Điều này sẽ thay đổi URL mà AWS SDK gửi yêu cầu đến, có nghĩa là thông tin đăng nhập DigitalOcean của chúng tôi phải được chấp nhận. Để làm điều đó, chỉ cần thêm hai dòng sau vào dòng 73 & 74 tương ứng:

# 73 $ args ['region'] = 'us-East-1';
# 74 $ args ['endpoint'] = 'https://ams3.digitaloceanspaces.com';

Điều trên sẽ buộc "điểm cuối" phải thay đổi mỗi khi bạn sử dụng bất kỳ chức năng "quản trị viên" nào.

Nó hoạt động bằng cách lấy các chi tiết trên và hợp nhất chúng với thông tin xác thực S3 được lưu trữ của bạn (trong trường hợp của bạn là khóa API DigitalOcean), cho phép tập lệnh giao tiếp với DO. Tôi đã mô tả ở trên rằng điều này bị hạn chế vì nó có nghĩa là bạn chỉ có thể giao tiếp với một vùng DO duy nhất (điều mà tôi sẽ giải quyết đầy đủ sau một phút).

-

Sau khi thực hiện việc này, điều cuối cùng chúng ta cần làm là thay đổi "URL" cho từng tệp đính kèm được đồng bộ hóa với DO.

Việc này được thực hiện bên trong lớp "quản trị viên", trong các hàm "wpGetAttachmentUrl" (#2048) và "addMetaInfo" (#1121):

1121.png

2048.png

Tôi không chắc chức năng nào trong số này thực sự cung cấp chức năng đó (tôi tin rằng đó là #2048), nhưng dù sao thì tôi cũng đã thay đổi cả hai.

Cuối cùng, tất cả những gì bạn đang làm là thay đổi liên kết AWS thành liên kết DigitalOcean. Cái hoạt động tốt cho vụ hack này là như sau:

# 2057 trả về 'https: //'. $ infos ['Nhóm']. '.ams3.digitaloceanspaces.com /'. str_replace ('', '% 20', $ infos ['Key']);

Điều này thay đổi "liên kết" mà phương tiện WP có đến DigitalOcean Spaces, liên kết này sẽ hiển thị trong phần phụ trợ và frontend của trang web của bạn.

--

Tôi sẽ trình bày chi tiết cách khắc phục rộng hơn trong một bài viết khác.
R
5 năm trước
2. "Đầy"

Như đã đề cập ở trên, bản sửa lỗi "đầy đủ" phụ thuộc vào cách DigitalOcean giao tiếp với AWS SDK.

Nói một cách đơn giản, S3 cho phép bạn "kết nối" và sau đó chọn một nhóm ở bất kỳ khu vực nào; DigitalOcean chỉ cho phép bạn kết nối và tương tác với một đơn khu vực mỗi lần.

Nếu bạn muốn đạt được đầy đủ chức năng của plugin (với DigitalOcean), có rất nhiều tùy chỉnh cần thực hiện trong lớp "quản trị viên". Về cơ bản, bạn cần đảm bảo rằng MỌI yêu cầu đều được đưa đến đúng điểm cuối, điều này vừa tốn thời gian vừa khá tốn kém (về kết nối API).

-

Chúng tôi đã "đại loại" làm được việc này, mặc dù còn lỏng lẻo. Tôi viết bài này ở đây như một phương tiện để chia sẻ tiến trình và có thể ai đó khác sẽ thích tiếp tục hơn hoặc điều gì đó tương tự.

--

Bạn cần làm 4 điều chính để nó hoạt động riêng biệt:

1. Tạo luồng giao diện người dùng "DigitalOcean" riêng biệt
2. Xóa mọi tham chiếu đến S3 (thay thế bằng DigitalOcean nếu cần)
3. Thay đổi quy trình của một số tính năng nhất định để cho phép hỗ trợ xuyên khu vực
4. Đảm bảo DO không can thiệp vào S3

-

1. Để thêm tab "DigitalOcean" riêng, bạn cần truy cập plugin gốc và tìm tệp "cloud.php" (./class/pages/settings/cloud.php):

<div id="do" class="tab-content">
<div class="wpmf_width_100 p-tb-20 wpmf_left top_bar">
<h1 class="wpmf_left"><?php esc_html_e('DigitalOcean', 'wpmf') ?></h1>
<?php
require WP_MEDIA_FOLDER_PLUGIN_DIR . '/class/pages/settings/submit_button.php';
?>
</div>
<div class="content-box content-wpmf-general">
<?php
// phpcs:ignore WordPress.Security.NonceVerification.Missing -- View request, no action
if (isset($_POST['btn_wpmf_save'])) {
?>
<div class="wpmf_width_100 top_bar saved_infos" style="padding: 20px 0">
<?php
require WP_MEDIA_FOLDER_PLUGIN_DIR . '/class/pages/settings/saved_info.php';
?>
</div>
<?php
}
?>

<div>
<div class="wpmf_row_full">
<?php
if (is_plugin_active('wp-media-folder-addon/wp-media-folder-addon.php')) {
// phpcs:ignore WordPress.Security.EscapeOutput -- Content already escaped in the method
echo $html_tabdo;
}
?>
</div>
</div>
</div>
</div>


Tôi vừa thêm nó sau tab S3.

Để làm cho nó hoạt động, bạn cần điền biến $html_tabdo, việc này được thực hiện bằng cách thay đổi hai tệp.

Đầu tiên là tệp ./class/pages/settings/wp-folder-options.php (plugin chính/gốc):

S3.png

Thứ hai là ./class/class-wp-folder-option.php:

html_do.png

Thao tác này sẽ đưa vào tab các cài đặt DigitalOcean khác nhau.

-

2. Để thay thế S3 bằng DO, bạn cần đảm bảo rằng bạn có một bộ tệp & cài đặt hàng đợi hoàn toàn khác để đảm bảo hai hệ thống không xung đột.

Điều này đòi hỏi phải thực hiện một số việc, chủ yếu là tạo một tập hợp các lớp "quản trị viên" và "kết nối" mới. Tôi sẽ không đi sâu vào cách thực hiện việc này, nhưng về cơ bản, bạn muốn tạo một nhóm lớp mới tạo cài đặt cấu hình của riêng chúng và sử dụng chúng để kết nối với điểm cuối cho DO:

api_code.png

-

3. Hỗ trợ chéo vùng.

Như đã đề cập trong bài viết ở trên, hệ thống của DO hoạt động khác với S3, trong đó mọi yêu cầu đều nằm trong phạm vi một khu vực cụ thể (S3 là bất khả tri về khu vực).

Điều này có nghĩa là nếu bạn muốn làm việc với các nhóm/dấu cách từ các khu vực khác, bạn cần thực hiện một số phép thuật để làm cho tất cả hoạt động cùng nhau.

Tôi không có nhiều thời gian nên sẽ không trình bày toàn bộ nội dung ở đây nhưng sẽ nói rằng nếu bạn muốn hệ thống hoạt động, bạn cần chỉnh sửa tệp "./class/wpmfDo.php" trong phần phụ trợ - đảm bảo rằng bạn có thể vượt qua "điểm cuối" mà bạn muốn gọi phiên bản SDK cho...

điểm cuối.png

Điều này mang lại cho chúng tôi khả năng xác định các "điểm cuối" ("vùng" khác nhau;) khi bạn cần liệt kê các không gian khác nhau, v.v.

Một ví dụ điển hình về hoạt động này là khi bạn muốn liệt kê các nhóm có sẵn:

khu vực.png

Để đạt được những điều trên, bạn cần duyệt qua tất cả các vùng có sẵn trong DO, sau đó tạo một mảng mới gồm các nhóm có sẵn. Như bạn sẽ đánh giá cao, đây là một giải pháp khó tạo ra:

xô_list.png

Điều này tạo ra biến $list_buckets từ các vùng khác nhau (không chỉ vùng bạn đã sử dụng để kết nối).

-

4. Chưa làm được điều này

Về cơ bản, bạn cần có khả năng làm cho DigitalOcean hoạt động với S3, ngay cả khi có S3.

Điều này sẽ yêu cầu làm cho chức năng "đồng bộ hóa" hoạt động và một số thứ khác mà tôi chưa hoàn thành.
T
3 năm trước
Xin chào,

Tính năng này đã được triển khai gần đây trong plugin.:)

Xem thông tin chi tiết bên dưới. Chúc mừng,
  • Trang :
  • 1
Không có câu trả lời nào được thực hiện cho bài đăng này.