Chuyển tới nội dung chính
Version: 4.1

3.6.0

Bản vá khép lại quá trình di chuyển sang Rust. 3.5.0 đã chuyển hai panel và CLI sang các bản song sinh Rust của chúng từng tuyến một; bản phát hành này hoàn tất các lô đang dở, sửa những gì việc chuyển chúng đã làm lộ ra trong mã gốc, và vạch một ranh giới: phần nào còn là Go thì vẫn là Go. Các tính năng và thay đổi mới từ đây được viết bằng Rust — trong hitechcloud-rustpanel, hitechcloud-rustadmin hoặc hitechcloud-rustcli — sau cùng một cơ chế bàn giao, mà giờ cho phép một bản song sinh từ chối một yêu cầu mà nó đã khớp.

Nâng cấp vẫn là hitechcloudcli update, như mọi khi; không có gì cần di chuyển trong cơ sở dữ liệu, cấu hình hay các mẫu.

Fixed​

Đây là những lỗi khách hàng có thể gặp, tất cả đều được tìm thấy bằng cách so sánh một bản song sinh Rust với bản Go hoặc shell mà nó thay thế:

  • Danh sách autoresponder luôn trống. Trang và API của nó đưa các dòng thô * address ( used / limit ) của GetEmailList vào bộ đọc autoresponder thay vì các địa chỉ, nên mọi hàng đều không qua được bước kiểm tra và không autoresponder nào từng được liệt kê, dù đã cấu hình bao nhiêu cái.
  • Nhật ký quyết định của Web Application Firewall sai trên mọi trang mà nó xuất hiện. Chặn hay chỉ phát hiện được suy ra từ một phỏng đoán về mức độ nghiêm trọng chứ không từ phán quyết của chính tường lửa, nên một website ở chế độ chỉ phát hiện hiển thị các mục ERROR của nó cho khách hàng như lưu lượng bị chặn; bảng quy tắc chỉ là chỗ giữ chỗ; các bộ lọc theo hành động và mã quy tắc, phân trang và ?output=json không làm gì; và các cảnh báo mang những mã định danh bịa ra. Bộ đọc giờ là một bản chuyển trung thành của bản Go, với các số đếm lấy trên cùng một khoảng thời gian.
  • Hai trang tường lửa trả về trang lỗi. /server/waf/{domain} và /server/waf/log không nạp phần mẫu của bảng quyết định, nên không thể kết xuất được.
  • Các số trên một triệu được in sai dạng ở bất cứ nơi nào một mẫu hiển thị một float64 — chẳng hạn dấu thời gian của một nhật ký truy cập. Go ghi 1.7580000005e+09; bản song sinh ghi 1758000000.5.
  • Thư ngừng hoạt động sau khi khởi động lại mà không có gì báo. hitechcloudcli native-mail check đọc cấu hình, nên một máy chủ có dovecot.service bị dừng và vô hiệu hoá vẫn qua mọi kiểm tra trong khi không hộp thư nào mở được và bước bàn giao đăng nhập webmail của panel quay về trang đăng nhập ở mỗi lần thử. Lệnh kiểm tra giờ hỏi xem Dovecot có đang chạy, đã được bật và có trả lời IMAPS hay không; phần cài đặt thành phần thư bật unit này (trình quản lý gói để nó bị vô hiệu hoá trên họ RHEL).
  • Một tài khoản mới không có đăng nhập FTP, và xoá một tài khoản để lại các dịch vụ. native/user.sh gọi ftp/add.sh, native/memcached.sh và native/varnish.sh — những tập lệnh không còn tồn tại — nên các lệnh gọi lặng lẽ không làm gì. user-delete cũng để lại /etc/sudoers.d/hitechcloud-jail-<account>.
  • Một bản ghi TXT xác minh website chưa bao giờ được ghi. native-dns add gọi một hàm không tồn tại; bash in command not found ra stderr rồi tiếp tục chạy.
  • Một website mới bỏ qua phiên bản PHP Selector của chủ sở hữu và lấy mặc định của máy chủ.
  • Hai công cụ tìm kiếm trên cùng một máy chủ có thể bị báo là dùng cùng một cổng. Trình cài đặt đọc lại cổng REST bằng một lệnh sed trả về chuỗi rỗng mà nó vừa ghi.
  • Việc gia hạn chứng chỉ từ cron của acme.sh có thể bỏ qua bước kết xuất lại vhost, vì các tập lệnh gọi bộ điều phối theo tên mà PATH của cron không chứa nó.
  • Trình cài đặt chết trên các image RHEL tối giản — không có tệp nhị phân hostname, và lỗi chỉ là một mã thoát không kèm thông báo.
  • Một mật khẩu có ký tự đặc biệt duy nhất là dấu cách được chấm điểm khác nhau trong panel và trong CLI. Cả hai thang điểm đều đã được ghi lại; thống nhất chúng là một quyết định về sản phẩm, không phải về việc chuyển mã.
  • plan-create / plan-edit từ chối dạng đã lưu 1 GB, và PATCH /api/plans/{id} không có tên làm trống tên của gói.
  • settings/modules?output=json và JSON của trình chặn IP mã hoá một danh sách rỗng nơi Go ghi null.
  • Các thông báo flash có văn bản không phải ASCII bị bỏ khi bàn giao; giờ chúng được truyền dưới dạng base64.
  • Việc tăng cường bảo mật WordPress trên nginx ghi các quy tắc mà engine từ chối nạp.

Changed​

  • Cài đặt một ứng dụng không còn ép một đường dẫn duy nhất. Trên mọi trang cài đặt, vị trí có thể được gõ tay — một đường dẫn tuyệt đối được chấp nhận miễn là nó nằm trong thư mục gốc tài liệu của tên miền, đã được chuẩn hoá và kiểm tra — hoặc được chọn từ các thư mục đã có sẵn bên dưới nó, từng cấp một. Trình cài WordPress cũng từ chối một thư mục con thoát ra ngoài thư mục gốc tài liệu, điều mà mười bảy trình cài khác đã làm từ trước.
  • Một bản song sinh giờ có thể từ chối một yêu cầu mà nó đã khớp (X-Hitech-Pass). Go đăng ký cả họ tuyến API dưới dạng một catch-all và điều phối theo hậu tố; một bản song sinh có thể nhận tuyến, phục vụ các hậu tố mà nó triển khai và trả phần còn lại về, nên yêu cầu của khách hàng được trả lời bởi nửa nào triển khai nó và một hậu tố không xác định vẫn nhận 404 của chính Go.
  • Giới hạn tài khoản của Community giờ áp dụng trên native stack. Nó nằm trong một tập lệnh mà một bản cài native không bao giờ chạm tới, nên chưa từng được thực thi ở đó. Một máy chủ Community đã quá ba tài khoản sẽ bị từ chối tài khoản tiếp theo.

Moved to Rust since 3.5.0​

Không có gì về các tuyến này thay đổi đối với khách hàng: cùng URL, cùng mẫu, cùng JSON, được chứng minh từng trang bằng một bài kiểm thử kết xuất cả hai engine và đòi hỏi cùng các byte.

  • Panel người dùng — các trang dịch vụ thư (người gửi bị chặn, bộ lọc spam, greylisting, chuyển tiếp, mức dùng đĩa của hộp thư), các trình soạn bộ lọc Sieve và autoresponder cả bộ phân tích lẫn bộ ghi của chúng, quản lý hộp thư và bí danh, API chi tiết hộp thư, bộ đọc nhật ký thư Postfix và thư mục cách ly spam; các mô-đun cơ sở dữ liệu từ đầu đến cuối (PostgreSQL, MSSQL và phần còn lại của MySQL: mọi trang, mọi thao tác ghi phiên và REST API, cùng các hậu tố catch-all không phải tải xuống); trang phiên tài khoản, các thao tác đọc cron, JSON Git Deployment, báo cáo tài nguyên và CSV của chúng, các tệp cấu hình máy khách FTP, snapshot, API JSON PHP, nhật ký Composer và pm2, danh sách tăng cường bảo mật của WordPress, các trang tăng cường bảo mật của App Toolkit, trạng thái container, các thao tác đọc của Website Builder cùng thao tác gỡ và tách, mô-đun vùng DNS, MongoDB, các trang tường lửa, /api/domains và /api/dns.
  • Panel admin — SSH máy chủ và cấu hình của nó, nút cụm, trang cơ sở dữ liệu cùng kill/giới hạn/đăng nhập một lần phpMyAdmin, lịch sử tài nguyên, ứng dụng, các thao tác tiến trình và swap; nhật ký dịch vụ, nhật ký crash, nhật ký cập nhật, giới hạn, FTP và các dịch vụ được giám sát; tìm kiếm; kho SSL, nhóm quyền, các thao tác ghi xuất tài khoản, các công tắc Tổng quan, /user/new và /user/import; relay email, giới hạn gửi, hàng đợi, các trang báo cáo, danh sách hộp thư và giới hạn tốc độ; ngôn ngữ cài đặt, mirror, Caddy, các phiên bản PHP, cập nhật, mô-đun và thông báo; các bộ quy tắc WAF; các trình soạn cấu hình VirtualHost và front-end; các trang reseller và mã độc.
  • CLI — native-mail, native-mailrelay, native-mailpolicy, native-mailautoconfig, native-webmail, native-multiweb, native-varnish, native-healthcheck, native-cache, native-search, native-dns, native-user, native-install, native-migrate, sentinel, sáu công cụ cơ sở dữ liệu (native-mysql84, native-postgres, native-pgadmin, native-phpmyadmin, native-mongodb, native-mssql), native-usage, native-sslstore, native-firewall, native-meet, update --check. Mọi native/*.sh giờ là một wrapper bàn giao, và không lệnh Rust nào còn khởi chạy một shell để đọc một thư viện.
  • Tuân thủ kiểm toán — định dạng của kho chuỗi băm đã được ghi lại và chuỗi của nó đã được chuyển, kèm các bài kiểm thử tái tạo các giá trị băm lấy từ bản triển khai Go và chứng minh một bản ghi bị sửa đổi sẽ bị phát hiện. Các tuyến vẫn ở lại Go trong lúc này.

What stays in Go, on purpose​

Mật khẩu, phiên, xác thực hai yếu tố, passkey và việc phát hành token; các luồng (tiến trình cài đặt và nhân bản, nhật ký dịch vụ journal, terminal web); tải lên multipart và tải xuống tệp; vé đăng nhập một lần của phpMyAdmin; danh sách khách truy cập, có thứ tự không xác định tại nguồn; các tuyến tuân thủ; các nửa dành cho stack container của các trang podman; và việc cấp phát thời container của user/add.sh. Mỗi thứ đều là quyết định giữ lại của chính máy chủ, không phải một khoảng trống: nơi hành vi không thể tái tạo từng byte, nửa Go sẽ trả lời.

Operator notes​

  • version/3.6.0/UPDATE.sh làm mới cây CLI, tải mọi bản song sinh mà bản phát hành công bố, kiểm tra từng bản trả lời routes, khởi động lại cả hai panel, thăm dò :2083/healthz và :2087/login, và khôi phục các tệp nhị phân trước đó nếu một panel không lên.
  • Các bản song sinh vẫn là bắt buộc, và vẫn là các tệp nhị phân musl tĩnh: chúng chạy được trên các máy chủ glibc 2.28 (AlmaLinux 8) cũng như các bản phân phối hiện tại.
  • Một ma trận hỗ trợ cho bản phát hành này đã được tạo bằng cách cài nó lên 113 hệ điều hành trong CI; kết quả nằm trong các issue của kho dưới os-certification.
Trang này có hữu ích không?