Quellcode durchsuchen

Doin more stuff

Andy Baugh vor 5 Jahren
Ursprung
Commit
36e938270e
4 geänderte Dateien mit 80 neuen und 10 gelöschten Zeilen
  1. 11 3
      js/pgupgrade.js
  2. 14 2
      lib/Troglodyne/API/Postgres.pm
  3. 31 1
      lib/Troglodyne/CpPostgreSQL.pm
  4. 24 4
      templates/ui/pgupgrade.tmpl

+ 11 - 3
js/pgupgrade.js

@@ -1,7 +1,15 @@
 function versionHandler () {
-    var obj = JSON.parse(this.responseText);
+    'use strict';
+    let obj = JSON.parse(this.responseText);
     if(obj.result === 1) {
-        document.getElementById('psqlVersion').innerHTML = obj.data.version.major + '.' + obj.data.version.minor;
+        let pgVersion = obj.data.installed_version.major + '.' + obj.data.installed_version.minor;
+        let elem = document.getElementById('psqlVersion');
+        let html = pgVersion;
+        if( parseFloat(pgVersion) < parseFloat(obj.data.minimum_supported_version) ) {
+            elem.classList.add('callout', 'callout-danger');
+            html += " -- You are using a version of PostgreSQL Server that is no longer supported! Immediate upgrade reccomended.";
+        }
+        elem.innerHTML = html;
     } else {
         console.log(obj.error);
     }
@@ -9,5 +17,5 @@ function versionHandler () {
 
 var oReq = new XMLHttpRequest();
 oReq.addEventListener("load", versionHandler);
-oReq.open("GET", "api.cgi?module=Postgres&function=get_server_version");
+oReq.open("GET", "api.cgi?module=Postgres&function=get_postgresql_versions");
 oReq.send();

+ 14 - 2
lib/Troglodyne/API/Postgres.pm

@@ -3,10 +3,22 @@ package Troglodyne::API::Postgres;
 use strict;
 use warnings;
 
-sub get_server_version {
+use Cpanel::LoadModule::Custom;
+
+sub get_postgresql_versions {
+    Cpanel::LoadModule::Custom::load_perl_module('Troglodyne::CpPostgreSQL');
     require Cpanel::PostgresUtils;
     my @ver_arr = ( Cpanel::PostgresUtils::get_version() );
-    return { 'version' => { 'major' => $ver_arr[0], 'minor' => $ver_arr[1] } };
+    return {
+        'installed_version'         => { 'major' => $ver_arr[0], 'minor' => $ver_arr[1] },
+        'minimum_supported_version' => $Troglodyne::CpPostgreSQL::MINIMUM_SUPPORTED_VERSION,
+        'available_versions'        => Troglodyne::CpPostgreSQL::available_versions(),
+    };
+}
+
+sub enable_community_repositories {
+    Cpanel::LoadModule::Custom::load_perl_module('Troglodyne::CpPostgreSQL');
+    return { 'status' => 'OK' };
 }
 
 1;

+ 31 - 1
lib/Troglodyne/CpPostgreSQL.pm

@@ -1,6 +1,36 @@
-package Troglodyne::CpPostgresQL;
+package Troglodyne::CpPostgreSQL;
 
 use strict;
 use warnings;
 
+our %REPO_RPM_URLS = (
+    '8' => 'https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm',
+    '7' => 'https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm',
+    '6' => 'https://download.postgresql.org/pub/repos/yum/reporpms/EL-6-x86_64/pgdg-redhat-repo-latest.noarch.rpm',
+);
+
+# Repository entries will look like "pgdg$VERSION" -- ex. pgdg95
+our $REPO_PREFIX = 'pgdg';
+our $PKG_PREFIX = 'postgresql';
+our $MINIMUM_SUPPORTED_VERSION = '9.5';
+
+# Times are in seconds since epoch, as that allows easier localization.
+our %SUPPORTED_VERSIONS_MAP = (
+    '9.5' => { 'release' => 1452146400, 'EOL' => 1613023200 },
+    '9.6' => { 'release' => 1475125200, 'EOL' => 1636610400 },
+    '10'  => { 'release' => 1507179600, 'EOL' => 1668060000 },
+    '11'  => { 'release' => 1539838800, 'EOL' => 1699509600 },
+    '12'  => { 'release' => 1570078800, 'EOL' => 1731564000 },
+);
+
+# The BS that cPanel will be installing with /scripts/installpostgres
+our %CP_UNSUPPORTED_VERSIONS_MAP = (
+    '9.2' => { 'release' => 1347253200, 'EOL' => 1510207200 }, # Cent 7
+    '8.4' => { 'release' => 1246424400, 'EOL' => 1406178000 }, # Cent 6
+);
+
+sub get_available_versions {
+    
+}
+
 1;

+ 24 - 4
templates/ui/pgupgrade.tmpl

@@ -33,9 +33,29 @@ This interface at least attempts to take care of those issues for you.
     </p>
 </div>
 <h3>Current Version</h3>
-<p id="psqlVersion">Loading...</p>
-
-Need to add a table here ayayayayay
-
+<div id="psqlVersion">Loading...</div>
+<h3>Select a Version</h3>
+<table class="table table-striped">
+    <thead>
+        <tr>
+            <th>Version</th>
+            <th>Features</th>
+            <th>Source</th>
+            <th>Release Date</th>
+            <th>End of Life</th>
+        </th>
+    </thead>
+    <tbody>
+        <tr>
+            <td colspan=5 id="enableReposCell" style="display: none;">
+                <div class="callout callout-info">
+                    <button class="btn btn-default" onclick="window.enableCommunityRepos()">
+                        Enable PostgreSQL Community Repositories
+                    </button>
+                </div>
+            </td>
+        </tr>
+    </tbody>
+</table>
 <script type="text/javascript" src="js/pgupgrade.js"></script>
 [% END %]