diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 51edfb1..ec0c7e2 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -1,52 +1,43 @@ -# .github/workflows/semantic-versioning-release.yml -name: Automated Semantic Versioning Release +name: Publish Release on: push: - branches: - - main + tags: + - 'v*' jobs: release: runs-on: ubuntu-latest permissions: - contents: write # for creating tags and releases - issues: write # for commenting on issues - pull-requests: write # for commenting on PRs + contents: write steps: - name: Checkout code uses: actions/checkout@v4 - with: - # This is required to analyze the full commit history - fetch-depth: 0 - - name: Automated Semantic Release - # This action wraps the popular semantic-release tool - uses: cycjimmy/semantic-release-action@v4 - with: - # You can specify the branches to release from - branch: main - extra_plugins: | - @semantic-release/changelog - @semantic-release/git - env: - # GITHUB_TOKEN is required for authentication - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Extract tag name + id: tag + run: echo "version=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT" - - name: Generate cache busting version hashes + - name: Generate release notes + id: notes run: | - CSS_HASH=$(md5sum modules/servers/VirtFusionDirect/templates/css/module.css | cut -c1-8) - JS_HASH=$(md5sum modules/servers/VirtFusionDirect/templates/js/module.js | cut -c1-8) - echo "{\"css\":\"$CSS_HASH\",\"js\":\"$JS_HASH\"}" > modules/servers/VirtFusionDirect/templates/version.json - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git add modules/servers/VirtFusionDirect/templates/version.json - git diff --cached --quiet || git commit -m "chore: update asset version hashes [skip ci]" - git push || true + # Get previous tag + PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "") + if [ -n "$PREV_TAG" ]; then + NOTES=$(git log --pretty=format:"- %s" "$PREV_TAG"..HEAD) + else + NOTES=$(git log --pretty=format:"- %s") + fi + # Write to file for the release body + echo "$NOTES" > /tmp/release-notes.txt -# To make this work, you must follow the Conventional Commits specification. -# Examples: -# - fix: correct a typo in the documentation -# - feat: add a new user authentication endpoint -# - feat(api): add rate limiting -# BREAKING CHANGE: The API now returns 429 when rate limit is exceeded. + - name: Create release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ steps.tag.outputs.version }} + name: ${{ steps.tag.outputs.version }} + body_path: /tmp/release-notes.txt + draft: false + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/modules/servers/VirtFusionDirect/admin.php b/modules/servers/VirtFusionDirect/admin.php index 7270cba..d7773b7 100644 --- a/modules/servers/VirtFusionDirect/admin.php +++ b/modules/servers/VirtFusionDirect/admin.php @@ -40,7 +40,7 @@ switch ($vf->validateAction(true)) { } - (new Module())->updateWhmcsServiceParamsOnServerObject((int)$_GET['serviceID'], $data); + $vf->updateWhmcsServiceParamsOnServerObject((int)$_GET['serviceID'], $data); $vf->output(['success' => true, 'data' => (new ServerResource())->process($data)], true, true, 200); } diff --git a/modules/servers/VirtFusionDirect/client.php b/modules/servers/VirtFusionDirect/client.php index 224aeff..6e60383 100644 --- a/modules/servers/VirtFusionDirect/client.php +++ b/modules/servers/VirtFusionDirect/client.php @@ -51,7 +51,7 @@ switch ($action) { $data = $vf->fetchServerData($serviceID); if ($data) { - (new Module())->updateWhmcsServiceParamsOnServerObject($serviceID, $data); + $vf->updateWhmcsServiceParamsOnServerObject($serviceID, $data); $vf->output(['success' => true, 'data' => (new ServerResource())->process($data)], true, true, 200); break; } diff --git a/modules/servers/VirtFusionDirect/hooks.php b/modules/servers/VirtFusionDirect/hooks.php index bc7f3d8..f39e2ca 100644 --- a/modules/servers/VirtFusionDirect/hooks.php +++ b/modules/servers/VirtFusionDirect/hooks.php @@ -2,7 +2,6 @@ use WHMCS\Module\Server\VirtFusionDirect\ConfigureService; use WHMCS\Module\Server\VirtFusionDirect\Database; -use WHMCS\User\User; if (!defined("WHMCS")) { die("This file cannot be accessed directly"); @@ -131,7 +130,7 @@ add_hook('ClientAreaFooterOutput', 1, function ($vars) { return " - + + +
diff --git a/modules/servers/VirtFusionDirect/lib/ConfigureService.php b/modules/servers/VirtFusionDirect/lib/ConfigureService.php index 7d3510e..a02d804 100644 --- a/modules/servers/VirtFusionDirect/lib/ConfigureService.php +++ b/modules/servers/VirtFusionDirect/lib/ConfigureService.php @@ -2,7 +2,6 @@ namespace WHMCS\Module\Server\VirtFusionDirect; -use JsonException; use WHMCS\Database\Capsule as DB; use WHMCS\User\User; diff --git a/modules/servers/VirtFusionDirect/lib/Curl.php b/modules/servers/VirtFusionDirect/lib/Curl.php index 5e904f6..6ff2dae 100644 --- a/modules/servers/VirtFusionDirect/lib/Curl.php +++ b/modules/servers/VirtFusionDirect/lib/Curl.php @@ -24,23 +24,6 @@ class Curl $this->ch = curl_init(); } - public function useCookies() - { - $cookiesFile = tempnam(sys_get_temp_dir(), 'virtfusion_cookies'); - $this->defaultOptions[CURLOPT_COOKIEFILE] = $cookiesFile; - $this->defaultOptions[CURLOPT_COOKIEJAR] = $cookiesFile; - } - - public function setLog() - { - $log = fopen(__DIR__ . '/CURL.log', 'a'); - if ($log) { - fwrite($log, str_repeat('=', 80) . PHP_EOL); - $this->addOption(CURLOPT_STDERR, $log); - $this->addOption(CURLOPT_VERBOSE, true); - } - } - /** * @param $name * @param $value @@ -166,15 +149,6 @@ class Curl return $this->send('POST', $url); } - /** - * @param null $url - * @return bool|string|void - */ - public function head($url = null) - { - return $this->send('HEAD', $url); - } - /** * @param false $param * @return mixed|null @@ -202,16 +176,4 @@ class Curl } } - /** - * @param false $param - * @return mixed|null - */ - public function getHeadersData($param = false) - { - if ($param) { - return $this->getDataItem('data', $param); - } - - return $this->data['data']; - } } diff --git a/modules/servers/VirtFusionDirect/lib/Module.php b/modules/servers/VirtFusionDirect/lib/Module.php index c8da4f4..d68af3e 100644 --- a/modules/servers/VirtFusionDirect/lib/Module.php +++ b/modules/servers/VirtFusionDirect/lib/Module.php @@ -206,7 +206,7 @@ class Module $httpCode = $ctx['request']->getRequestInfo('http_code'); if ($httpCode == 200 || $httpCode == 201) { - Cache::forgetPattern('backups:' . $ctx['serverId']); + Cache::forget('backups:' . $ctx['serverId']); return json_decode($data) ?: (object) ['success' => true]; } return false; @@ -348,31 +348,6 @@ class Module return false; } - // ========================================================================= - // IP Address Management - // ========================================================================= - - /** - * Add an IPv4 address to a server. - * - * @param int $serviceID - * @return object|false - */ - public function addIPv4($serviceID) - { - $ctx = $this->resolveServiceContext($serviceID); - if (!$ctx) return false; - - $data = $ctx['request']->post($ctx['cp']['url'] . '/servers/' . $ctx['serverId'] . '/ipv4'); - Log::insert(__FUNCTION__, $ctx['request']->getRequestInfo(), $data); - - $httpCode = $ctx['request']->getRequestInfo('http_code'); - if ($httpCode == 200 || $httpCode == 201) { - return json_decode($data) ?: (object) ['success' => true]; - } - return false; - } - // ========================================================================= // Backup Management // ========================================================================= diff --git a/modules/servers/VirtFusionDirect/templates/css/module.css b/modules/servers/VirtFusionDirect/templates/css/module.css index 785994d..1045860 100644 --- a/modules/servers/VirtFusionDirect/templates/css/module.css +++ b/modules/servers/VirtFusionDirect/templates/css/module.css @@ -9,16 +9,6 @@ } /* Buttons */ -.vf-button { - font-size: 0.8rem; - padding: 0.95rem 1.5rem; - font-weight: 600; -} -.vf-button-small { - font-size: 0.8rem; - padding: 0.75rem 1.3rem; - font-weight: 500; -} .vf-spinner-margin { margin-right: 7px; } @@ -84,9 +74,7 @@ } #vf-server-info-error { display: none; -} -#vf-data-server-traffic-sep { - display: inline; + margin: 10px; } /* Skeleton Loading */ @@ -159,11 +147,6 @@ } } -/* Error message spacing */ -#vf-server-info-error { - margin: 10px; -} - /* Network / IP Management */ .vf-ip-row { display: flex; @@ -364,7 +347,7 @@ border-radius: 3px; margin-top: 3px; } -.vf-os-details { +#vf-os-details { border-top: 1px solid #dee2e6; padding-top: 10px; }