changeset 135:2fe6713ccd64

Added functionality for storing an internal Url.
author Tom Fredrik Blenning <bfg@bfgconsult.no>
date Mon, 23 Jan 2023 00:16:26 +0100
parents b6b4a58c7625
children 60bc8f62384d
files Options.inc.php
diffstat 1 files changed, 44 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/Options.inc.php	Sun Jan 22 19:22:00 2023 +0100
+++ b/Options.inc.php	Mon Jan 23 00:16:26 2023 +0100
@@ -24,6 +24,7 @@
   private $basePath;
   private $flagUrl;
   private $baseUrl;
+  private $internalUrl;
   private $cacheable = Cacheable::YES;
 
   /**
@@ -86,6 +87,33 @@
   }
 
   /**
+   * Get the internal url, or if non set, use external
+   *
+   * @return the internal url
+   */
+  function getInternalUrl()
+  {
+    if ($this->internalUrl)
+      return $this->internalUrl;
+    else
+      return $this->getBaseUrl();
+  }
+
+  /**
+   * Get the internal url, or if non set, use external
+   *
+   * @return the internal url
+   */
+  function getInternalFromExternal($location, $baseUrl)
+  {
+    if ($this->internalUrl && str_starts_with($location, $baseUrl)) {
+      $str=substr($location, strlen($baseUrl));
+      return $this->getInternalUrl().$str;
+    }
+    return $location;
+  }
+
+  /**
    * Replaces placeholder variables, with actual values.
    *
    * Currently supported values:
@@ -112,6 +140,17 @@
   }
 
   /**
+   * Sets the internal url which can be used if the server is hosted
+   * behind a proxy
+   *
+   * @param $internalUrl url accessible by internal network
+   */
+  function setInternalUrl($internalUrl)
+  {
+    $this->internalUrl = $internalUrl;
+  }
+
+  /**
    * Sets the url for the flag script
    *
    * @param $flagUrl for flag script
@@ -285,6 +324,11 @@
 	  if($value)
 	    $this->setFlagUrl($value);
 	}
+	elseif ($id == "internalUrl") {
+	  $value = $param->getAttribute("value");
+	  if($value)
+	    $this->setInternalUrl($value);
+	}
 	else {
 	  warn("Invalid option: ${id}");
 	}