Hitechcloud là module Hosting cho HostBill, dùng để kết nối HostBill với Hitechcloud Agent API nhằm tự động cấp phát và quản lý dịch vụ shared hosting.
Module này được thiết kế để đặt trong thư mục HostBill:
includes/modules/Hosting/hitechcloud/
Lưu ý quan trọng: trong workspace hiện tại thư mục đang có tên
hitechcloud-module, nhưng khi deploy vào HostBill nên đổi đúng tên thư mục runtime thànhhitechcloudđể khớp với code và định nghĩa route API.
Module cung cấp các khả năng chính:
- Kết nối đến Hitechcloud Agent API bằng
API URLvàAPI Key - Tạo hosting account tự động từ HostBill
- Suspend / Unsuspend / Terminate account
- Đổi mật khẩu hosting account
- Đổi package / thay đổi giới hạn tài nguyên
- Mở rộng giao diện quản trị, giao diện client và REST API cho các tính năng hosting phổ biến
- Hỗ trợ cron sync usage và event lifecycle
- Hỗ trợ widget/toggle để bật tắt tính năng ở client area
Copy toàn bộ module vào:
includes/modules/Hosting/hitechcloud/
Cấu trúc sau khi đưa vào HostBill nên tương tự:
includes/
└── modules/
└── Hosting/
└── hitechcloud/
├── class.hitechcloud.php
├── install.sql
├── translations.json
├── admin/
├── api/
├── cron/
├── event/
├── lib/
├── user/
└── widgets/
Code hiện tại đang hard-code và suy luận nhiều đường dẫn theo tên module:
- API routes đăng ký file tại
includes/modules/Hosting/hitechcloud/api/class.hitechcloud_apiroutes.php - Admin/User controller dựng đường dẫn template theo
strtolower($this->module->getModuleName()) getModuleName()tương ứng với moduleHitechcloudvà sẽ được suy ra thànhhitechcloud
Nếu đặt sai tên thư mục, HostBill có thể:
- không load đúng module
- không load đúng API routes
- không tìm thấy template
- không hiển thị đúng controller/widget
File chính của module.
Chức năng:
- khai báo metadata module
- định nghĩa server connection fields
- định nghĩa product options
- định nghĩa account details fields
- khởi tạo API client
- xử lý các action provisioning chính
Chứa constant dùng xuyên suốt module:
- trạng thái tài khoản
- key cho detail fields
- key cho product options
HTTP client dùng cURL để gọi Hitechcloud Agent API.
Hiện đang có các method lõi:
getHealth()createAccount()suspendAccount()unsuspendAccount()terminateAccount()changePassword()changePackage()getAccount()listAccounts()
Bootstrap include các file cần thiết trong lib/.
Controller phía admin.
Dự kiến xử lý:
- xem thông tin account
- xem thông tin server
- đồng bộ danh sách account từ remote server
Controller phía client area.
Dự kiến xử lý các tính năng:
- domains
- databases
- SSL
- PHP
- SFTP/FTP
- cron jobs
- backups
- stats
- logs
Định nghĩa REST API routes cho service hosting.
Metadata đăng ký route cho HostBill API.
Cron controller phục vụ:
- hourly sync bandwidth usage
- daily sync disk usage
- daily SSL renewal check
Event handler cho vòng đời account:
- account created
- account suspended
- account unsuspended
- account terminated
- password changed
- package changed
Chứa widget toggle cho client area feature:
- backup
- cronjob
- databases
- domains
- logs
- php
- sftp
- ssl
- stats
Các chuỗi text chính của module.
Hiện tại không tạo bảng custom nào.
Trong class.hitechcloud.php:
- Module name:
Hitechcloud - Description:
Hitechcloud Shared Hosting Management - Version:
1.0.0
Module kế thừa HostingModule và implement interface Constants.
Module dùng các trường kết nối server sau:
field1→API URLfield2→API Key
Ngoài ra code vẫn đọc thêm:
host/ipusernamepassword
Tuy nhiên phần API client hiện tại thực tế sử dụng chủ yếu:
API URLAPI Key
Ví dụ:
https://server.example.com:8443
Đây là base URL của Hitechcloud Agent API.
Được gửi qua header:
X-API-Key: <your-api-key>
Trong method connect($connect):
- chuẩn hóa
api_url - lấy
api_key - lưu connection vào
$this->connection - khởi tạo
HitechcloudAPI
Method testConnection() sẽ gọi:
GET /api/v1/health
Nếu API trả về bình thường, HostBill có thể xác nhận kết nối hoạt động.
Module định nghĩa các option cấu hình gói hosting:
Plan NameDisk Quota (MB)Bandwidth (MB)Max Addon DomainsMax DatabasesMax FTP AccountsMax Cron JobsPHP VersionShell AccessSSL EnabledBackup Enabled
Plan Name→defaultDisk Quota (MB)→10240Bandwidth (MB)→102400Max Addon Domains→5Max Databases→5Max FTP Accounts→5Max Cron Jobs→3PHP Version→ danh sách mặc định7.4,8.0,8.1,8.2,8.3Shell Access→ checkboxSSL Enabled→ checkboxBackup Enabled→ checkbox
Cấu hình hiện tại đang để:
type = selectdefault = ['7.4', '8.0', '8.1', '8.2', '8.3']
Cách biểu diễn này có thể chưa hoàn toàn khớp format select option mà HostBill kỳ vọng. Trong code, nếu chưa có giá trị được chọn thì module sẽ lấy phần tử đầu tiên của mảng, tức 7.4.
Khi triển khai thực tế, nên kiểm tra lại UI product config trong HostBill để xác nhận option này hiển thị đúng.
Module lưu thông tin account vào các field:
option1→usernameoption2→passwordoption3→domain
Các field này được dùng khi:
- tạo account
- suspend / unsuspend / terminate
- đổi mật khẩu
- đổi package
- load thông tin account hiện tại
Chức năng:
- kiểm tra trạng thái account hiện tại
- không cho provision lại nếu service đang
ActivehoặcSuspended - build payload từ product options + account details
- gọi API tạo account
- cập nhật lại username nếu API trả về username mới
Điều kiện bắt buộc:
- phải có
username - phải có
domain
Payload gửi đi gồm:
usernamepassworddomainplan_namedisk_quotabandwidthmax_domainsmax_databasesmax_ftpmax_cronjobsphp_versionshell_accessssl_enabledbackup_enabled
Endpoint sử dụng:
POST /api/v1/accounts
Suspend account từ HostBill.
Endpoint:
POST /api/v1/accounts/{username}/suspend
Reason mặc định:
Suspended by HostBill
Endpoint:
POST /api/v1/accounts/{username}/unsuspend
Endpoint:
DELETE /api/v1/accounts/{username}
Endpoint:
PUT /api/v1/accounts/{username}/password
Sau khi đổi thành công, module cập nhật luôn password đã lưu tại HostBill.
Endpoint:
PUT /api/v1/accounts/{username}/package
Dùng để upgrade/downgrade hoặc thay đổi quota và quyền của account.
lib/HiTechCloudAPI.php là lớp trung gian giữa HostBill và Hitechcloud Agent API.
- dùng cURL
- gửi header:
X-API-KeyAccept: application/jsonContent-Type: application/json
- hỗ trợ
GET,POST,PUT,DELETE - parse JSON response
- ném exception khi:
- lỗi cURL
- response không phải JSON hợp lệ
- HTTP status >= 400
connectTimeout = 15stimeout = 30s
Hiện tại API client đang tắt verify SSL:
CURLOPT_SSL_VERIFYPEER => falseCURLOPT_SSL_VERIFYHOST => 0
Điều này có nghĩa:
- thuận tiện khi server dùng certificate self-signed
- nhưng giảm độ an toàn kết nối
Khuyến nghị production:
- bật verify SSL nếu hạ tầng cho phép
- dùng certificate hợp lệ
- chỉ giữ cấu hình hiện tại trong môi trường test nội bộ hoặc khi thực sự cần thiết
Client hiện giả định mọi response đều là JSON, kể cả các thao tác DELETE.
Vì vậy Hitechcloud Agent API nên luôn trả body JSON hợp lệ, ví dụ:
{"status":true}Nếu API trả body rỗng hoặc plain text, client hiện tại sẽ báo lỗi parse JSON.
File: admin/class.hitechcloud_controller.php
Thực hiện:
- load translation
hitechcloud - dựng đường dẫn thư mục template
- dựng URL cho template
Dự kiến:
- lấy thông tin account từ model
Accounts - lấy
username - gọi API để lấy chi tiết account remote
- assign dữ liệu vào template
Dự kiến:
- gọi API lấy thông tin server
- assign vào template
Dự kiến:
- gọi API lấy danh sách account từ server
- sync về HostBill
Phần syncAccounts() hiện mới chỉ:
- lấy danh sách account
- đếm số lượng
- chưa có logic reconcile local/remote thực sự
Tức là đây mới là khung chức năng, chưa hoàn thiện việc đồng bộ thật sự.
File: user/class.hitechcloud_controller.php
Controller này là nền tảng cho các tính năng trong client area.
Các cờ quyền đang được khai báo cứng:
o_domainso_databaseso_sslo_phpo_sftpo_cronjobo_backupo_statso_logs
Mặc định đều đang là true.
- list domain
- add domain
- delete domain
- list database
- create database
- delete database
- list SSL
- issue Let's Encrypt
- install custom SSL
- xem thông tin PHP
- switch version
- update settings
- list account
- create account
- delete account
- list cron
- create cron
- delete cron
- list backup
- create backup
- restore backup
- delete backup
- xem usage stats
- xem access/error logs
Controller đã có luồng xử lý logic, nhưng nhiều method API mà controller gọi chưa tồn tại trong HiTechCloudAPI.php.
Điều này có nghĩa là:
- cấu trúc controller đã có
- nhưng nhiều chức năng client area chưa chạy được hoàn chỉnh nếu chưa bổ sung API client methods tương ứng
File:
api/class.hitechcloud_apiroutes.phpapi/hitechcloud_apiroutes.json
GET /service/@id/account
GET /service/@id/domainsPOST /service/@id/domainsDELETE /service/@id/domains/@domain
GET /service/@id/databasesPOST /service/@id/databasesDELETE /service/@id/databases/@db_name
GET /service/@id/sslPOST /service/@id/ssl
GET /service/@id/stats
GET /service/@id/backupsPOST /service/@id/backupsPOST /service/@id/backups/@backup_id/restoreDELETE /service/@id/backups/@backup_id
GET /service/@id/cronjobsPOST /service/@id/cronjobsDELETE /service/@id/cronjobs/@cron_id
GET /service/@id/phpPOST /service/@id/php/version
GET /service/@id/sftpPOST /service/@id/sftpDELETE /service/@id/sftp/@ftp_user
GET /service/@id/logs
Trong file JSON:
- top-level
authđang làfalse - nhưng phần lớn route con lại đặt
auth: true
Nên test lại trên môi trường HostBill thực tế để xác định precedence của route-level auth.
File: cron/class.hitechcloud_controller.php
Ý tưởng hiện tại:
- lấy toàn bộ active account dùng module
hitechcloud - gọi API lấy bandwidth usage
- cập nhật usage vào HostBill
Ý tưởng hiện tại:
- lấy active account
- gọi API lấy disk usage
- update usage vào HostBill
- list SSL certificates
- tự động renew SSL nếu còn dưới 7 ngày hết hạn
Cron hiện phụ thuộc vào nhiều method chưa tồn tại, ví dụ:
getBandwidthUsage()getDiskUsage()listSSL()renewSSL()
updateBandwidthUsage()updateDiskUsage()
Vì vậy cron mới ở trạng thái định hướng/chưa hoàn chỉnh.
File: event/class.hitechcloud_handle.php
Các event chính:
onAccountCreated()onAccountSuspended()onAccountUnsuspended()onAccountTerminated()onPasswordChanged()onPackageChanged()
Event handler dùng để chạy tác vụ phụ sau các sự kiện vòng đời account, ví dụ:
- post-create setup
- post-terminate cleanup
- debug logging
Hiện code có gọi thêm các method như:
postCreate()postTerminate()
Nhưng các method này chưa có trong HiTechCloudAPI.php.
Do đó phần event hiện mới là khung mở rộng, chưa hoàn tất.
File: widgets/class.th_toggle.php
Base widget kế thừa HostingWidget và đóng vai trò widget toggle feature.
widget_thw_backupwidget_thw_cronjobwidget_thw_databaseswidget_thw_domainswidget_thw_logswidget_thw_phpwidget_thw_sftpwidget_thw_sslwidget_thw_stats
createrestoredelete
createdelete
createdelete
addon_domainssubdomains
access_logerror_log
version_switchsettings
createdelete
auto_sslcustom_ssl
diskbandwidthcpu
Mặc dù widget đã định nghĩa các sub-option khá chi tiết, phần user controller hiện mới kiểm soát theo nhóm lớn bằng các cờ hard-coded. Nghĩa là:
- toggle theo nhóm tính năng có định hướng
- nhưng chưa thấy logic áp dụng đầy đủ từng sub-option widget vào action thực tế
File: translations.json
Chứa các message cơ bản như:
- account create success/error
- suspend success/error
- unsuspend success/error
- terminate success/error
- password change success/error
- package change success/error
- connection test success/error
- các label của product option
Có thể mở rộng file này nếu cần đa ngôn ngữ hoặc chuẩn hóa wording cho UI.
Đưa source vào đúng thư mục:
includes/modules/Hosting/hitechcloud/
Đảm bảo file chính tồn tại:
includes/modules/Hosting/hitechcloud/class.hitechcloud.php
Web server/PHP process phải có quyền đọc toàn bộ thư mục module.
Server chạy HostBill cần có:
- PHP cURL extension
- JSON support
- SSL/TLS support
Trong phần server/module của HostBill, cấu hình:
- module:
Hitechcloud API URLAPI Key
Gán product với module Hitechcloud, sau đó cấu hình các option:
- Plan Name
- Disk Quota
- Bandwidth
- Max Domains
- Max Databases
- Max FTP
- Max Cron Jobs
- PHP Version
- Shell Access
- SSL Enabled
- Backup Enabled
Tạo một đơn hàng/service test với:
- username
- password
- domain
Thử dùng chức năng test connection của HostBill để xác minh endpoint:
GET /api/v1/health
Thử các action cơ bản theo thứ tự:
CreateSuspendUnsuspendChangePasswordChangePackageTerminate
Đây là nhóm action hiện gần với mức hoàn chỉnh nhất của codebase.
- API URL chính xác
- API Key hợp lệ
-
/api/v1/healthtrả JSON hợp lệ - timeout phù hợp
- tạo account thành công
- username được lưu lại đúng trong HostBill
- suspend hoạt động
- unsuspend hoạt động
- terminate hoạt động
- đổi password hoạt động
- đổi package hoạt động
- controller load không lỗi
- route API đăng ký đúng
- widget hiển thị đúng
- translation load đúng
- cân nhắc bật SSL verify ở production
- API key được lưu an toàn
- không expose debug output ngoài ý muốn
Đây là phần cần lưu ý nhất khi bàn giao hoặc triển khai thực tế.
Hiện API client mới có các method provisioning lõi. Tuy nhiên các controller/cron/event đang gọi thêm rất nhiều method chưa tồn tại, ví dụ:
getAccountInfo()getServerInfo()addDomain()deleteDomain()listDomains()createDatabase()deleteDatabase()listDatabases()issueSSL()installCustomSSL()listSSL()renewSSL()switchPHPVersion()updatePHPSettings()getPHPInfo()createSFTPAccount()deleteSFTPAccount()listSFTPAccounts()createCronJob()deleteCronJob()listCronJobs()createBackup()restoreBackup()deleteBackup()listBackups()getUsageStats()getLogs()getBandwidthUsage()getDiskUsage()postCreate()postTerminate()
Hệ quả:
- nhiều tính năng đã được dựng khung ở controller/API route/cron/event
- nhưng sẽ chưa hoạt động nếu chưa bổ sung method tương ứng vào API client
Trong class.hitechcloud.php, các method:
getApi()getUsername()
đang được khai báo là protected.
Tuy nhiên chúng lại được gọi từ:
- admin controller
- user controller
- api routes
- event handler
Theo visibility chuẩn của PHP, điều này là không hợp lệ nếu không có proxy/special mechanism từ framework.
Khuyến nghị rà soát:
- đổi thành
publicnếu đúng mục đích dùng ngoài class - hoặc bổ sung wrapper public phù hợp
Cả admin và user controller đều giả định tồn tại thư mục:
templates/
Nhưng trong source hiện tại chưa thấy thư mục này.
Hệ quả:
- giao diện render có thể chưa hoàn chỉnh
- controller có thể assign dữ liệu nhưng không có file view để hiển thị
syncAccounts() hiện mới chỉ load danh sách account và đếm số lượng.
Chưa có:
- map account remote ↔ local
- create/update trạng thái local
- reconcile quota/usage
- xử lý account bị lệch trạng thái
Cron đang gọi các method chưa có trong module/API client, vì vậy chưa thể hoạt động đầy đủ.
Phần hậu xử lý create/terminate cũng đang phụ thuộc các method chưa có.
Để module đạt mức production-ready, nên làm tiếp các việc sau:
Bổ sung đầy đủ method mà các controller/cron/event đang gọi.
Mở public cho helper nào cần truy cập từ controller/api/event.
Tạo view cho:
- admin account details
- server info
- client area domains/databases/ssl/php/sftp/backups/stats/logs
Viết logic reconcile thật sự cho admin sync.
Bổ sung update usage vào HostBill theo đúng API/framework của HostBill.
Bật verify SSL cho production nếu API server có cert hợp lệ.
Ở trạng thái hiện tại, module có thể xem là:
- đã có phần khung tốt cho một module HostBill chuẩn
- đã có provisioning lõi
- đã có định hướng mở rộng admin/client/API/cron/event/widget khá rõ
- nhưng chưa hoàn thiện toàn bộ tính năng đã khai báo
Nói ngắn gọn:
- phần
core provisioninggần hoàn chỉnh hơn - phần
advanced management featuresvẫn còn ở mức scaffold / draft implementation
Nếu cần triển khai nhanh, hãy nhớ 5 điểm sau:
- Đặt module đúng đường dẫn:
includes/modules/Hosting/hitechcloud/ - Cấu hình đúng
API URLvàAPI Key - Test trước các action lõi: create / suspend / unsuspend / change password / change package / terminate
- Đừng kỳ vọng toàn bộ client/admin/API/cron feature đã chạy đủ ngay, vì nhiều method API chưa được implement
- Nên hoàn thiện thêm
HiTechCloudAPI.php,templates/, và visibility của helper methods trước khi đưa production
Các file chính đã được đọc để viết tài liệu này:
class.hitechcloud.phpinstall.sqllib/Constants.phplib/HiTechCloudAPI.phplib/include.phpadmin/class.hitechcloud_controller.phpuser/class.hitechcloud_controller.phpapi/class.hitechcloud_apiroutes.phpapi/hitechcloud_apiroutes.jsoncron/class.hitechcloud_controller.phpevent/class.hitechcloud_handle.phpwidgets/class.th_toggle.php- toàn bộ widget con trong
widgets/thw_* translations.json
Hitechcloud là một module HostBill có kiến trúc khá đầy đủ cho bài toán quản lý shared hosting qua API. Module đã có nền tảng tốt cho provisioning và đã dựng sẵn nhiều điểm mở rộng quan trọng. Tuy nhiên, để sử dụng ổn định trong production, vẫn cần hoàn thiện thêm phần API client, template, cron sync và logic cho các tính năng nâng cao.
Nếu dùng để demo, POC hoặc phát triển tiếp nội bộ, codebase hiện tại là nền tảng tốt. Nếu dùng production ngay, nên rà soát và hoàn thiện các mục ở phần Các giới hạn/điểm chưa hoàn thiện trước.
Deploy path nhắc lại:
includes/modules/Hosting/hitechcloud/
File docs này:
README.md