Chuyển đến nội dung chính
  Thứ ba, ngày 14 tháng một năm 2020
  6 Trả lời
  2,5 nghìn lượt truy cập
  Theo dõi
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
4 năm trước
Chào,

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

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

Chúng tôi chưa hỗ trợ Digital Ocean, hiện tại bạn có thể sử dụng Amazon S3: Để 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 không?

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

Hy vọng nó giúp!
Chúc mừng
W
4 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
4 năm trước
Chào,

Cảm ơn đã trở 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
3 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 vừa mới làm điều đó cho một khách hàng, tôi sẽ trình bày chi tiết về vụ hack, và sau đó giải thích cách bạn sẽ làm cho nó hoạt động riêng biệt.

--

Mặc dù chúng tôi chưa làm việ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 xung quanh API của S3 và sử dụng Thư viện PHP "AWS SDK" của Amazon (là bundle d với plugin).

Khi khám phá ra điều này, tôi đã hiểu rằng DigitalOcean quảng bá bằng cách sử dụng SDK với sản phẩm của riêng 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 thức 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ị" là nơi chứa chức năng của giao diện người dùng; cái khác là để giao tiếp với SDK S3. Nói tóm lại, tệp "quản trị viên" được tải thông 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 nhóm 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 trong việc khiến nó hoạt động với DigitalOcean:

endpoint.png

DigitalOcean là KHÔNG PHẢI bất khả tri khu vực. Điều này có nghĩa là mỗi yêu cầu nằm trong 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 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 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 tùy chỉnh mỗi lần.

-

Bản hack bao gồm:

a) Thay đổi tệp "quản trị viên" để sử dụng "điểm cuối" cho vùng Spaces DigitalOcean của bạn
b) Đảm bảo khu vực 'us-East-1' được đặt mọi lúc
c) Thay đổi "URL đính kèm" cho mỗi 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":

admin.png

Bắt đầu từ dòng 34 của
./class/wpmfAddonAws3Admin.php
, bạn sẽ thấy rằng một tập hợp các cài đặt mặc định được tạo cho lớp khác. Bạn cần 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 giữ không gian của bạn.

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

-

Sau khi làm điều này, chúng tôi sau đó chuyển sang tập tin lớp khác
./class/wpmfAws3.php
:

class.png

Điều này, như đã đề cập, được gọi mỗi lần 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';

Ở 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, 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ế bởi vì điều đó 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 đủ trong 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 mỗi tệp đính kèm được đồng bộ hóa với DO.

Điều này được thực hiện bên trong lớp "admin", trong các chức năng "wpGetAttachmentUrl" (# 2048) và "addMetaInfo" (# 1121):

1121.png

2048.png

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

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. Một trong những hoạt động tốt cho 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ẽ chi tiết sửa chữa rộng hơn trong một bài viết khác.
R
3 năm trước
2. "Đầy"

Như đã đề cập ở trên, cách khắc phục "đầy đủ" phụ thuộc vào cách giao diện DigitalOcean với SDK AWS.

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 Độc thâ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 phải xảy ra 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 được đặt trong phạm vi điểm cuối chính xác, điều này vừa tốn thời gian vừa khá tốn kém (về mặt kết nối API).

-

Chúng tôi đã "sắp xếp" công việc này, mặc dù lỏng lẻo. Tôi đang viết điều này ở đây như một phương tiện để chia sẻ tiến trình, và có lẽ ai đó muốn đưa nó lên hoặc một cái gì đó.

--

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

1. Tạo luồng UI "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 một tab "DigitalOcean" riêng biệt, bạn cần truy cập plugin ban đầu và tìm tệp "cloud.php" (./group/pages/sinstall/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 chỉ thêm nó sau tab S3.

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

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

S3.png

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

html_do.png

Điều này sẽ điền vào tab với 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 và cài đặt hàng đợi hoàn toàn khác nhau để đảm bảo rằng hai hệ thống không xung đột.

Điều này đòi hỏi phải thực hiện một số điều, chủ yếu là tạo ra một tập hợp các lớp "quản trị" 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 các lớp mới tạo cài đặt cấu hình của riêng chúng và sử dụng các lớp đó để kết nối với các đ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 được đặt trong một khu vực cụ thể (S3 là khu vực bất khả tri).

Điều này có nghĩa là nếu bạn muốn làm việc với các thùng / không gian từ các khu vực khác, bạn cần phải 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 sắp hết thời gian, vì vậy sẽ không bao gồm toàn bộ vấn đề ở đâ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 "./group/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 của SDK cho ...

endpoint.png

Điều này cho chúng ta 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 cho việc 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 quay vòng qua tất cả các vùng có sẵn trong DO, sau đó tạo một mảng mới có sẵn các thùng. Như bạn sẽ đánh giá cao, đây là một giải pháp khó để tạo:

buckets_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 S3 có mặt.

Đ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
1 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 cho bài viết này.