Commit d3a2469aaf44c5bdeb49483a7a8520261fae7704

Authored by Megan Watson
1 parent e96bb3bb

KTS-3882 - Added config settings for both internal and external ip's and ports f…

…or indexing and alerts emails.
"Indexer not working"

Committed by: Megan Watson
Reviewed by: Donald Jackson



git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@9620 c91229c3-7414-0410-bfa2-8a42b809f60b
config/dmsDefaults.php
@@ -425,8 +425,8 @@ class KTInit { @@ -425,8 +425,8 @@ class KTInit {
425 { 425 {
426 $oKTConfig =& KTConfig::getSingleton(); 426 $oKTConfig =& KTConfig::getSingleton();
427 427
  428 + // Override the config setting - KT_DIR is resolved on page load
428 $oKTConfig->setdefaultns('KnowledgeTree', 'fileSystemRoot', KT_DIR); 429 $oKTConfig->setdefaultns('KnowledgeTree', 'fileSystemRoot', KT_DIR);
429 - $oKTConfig->setdefaultns('KnowledgeTree', 'serverName', KTUtil::arrayGet($_SERVER, 'HTTP_HOST', 'localhost'));  
430 430
431 // Set ssl to enabled if using https - if the server variable is not set, allow the config setting to take precedence 431 // Set ssl to enabled if using https - if the server variable is not set, allow the config setting to take precedence
432 if (array_key_exists('HTTPS', $_SERVER)) { 432 if (array_key_exists('HTTPS', $_SERVER)) {
@@ -434,9 +434,34 @@ class KTInit { @@ -434,9 +434,34 @@ class KTInit {
434 $oKTConfig->setdefaultns('KnowledgeTree', 'sslEnabled', 'true'); 434 $oKTConfig->setdefaultns('KnowledgeTree', 'sslEnabled', 'true');
435 } 435 }
436 } 436 }
437 - $oKTConfig->setdefaultns('KnowledgeTree', 'rootUrl', $this->guessRootUrl());  
438 - $oKTConfig->setdefaultns('KnowledgeTree', 'execSearchPath', $_SERVER['PATH']);  
439 - $oKTConfig->setdefaultns('KnowledgeTree', 'magicDatabase', KTInit::detectMagicFile()); 437 +
  438 + $oKTConfig->setdefaultns('KnowledgeTree', 'serverName', $_SERVER['HTTP_HOST']);
  439 +
  440 + // Check for the config setting before overriding with the resolved setting
  441 + $serverName = $oKTConfig->get('KnowledgeTree/serverName');
  442 + $rootUrl = $oKTConfig->get('KnowledgeTree/rootUrl');
  443 + $execSearchPath = $oKTConfig->get('KnowledgeTree/execSearchPath');
  444 + $magicDatabase = $oKTConfig->get('KnowledgeTree/magicDatabase');
  445 +
  446 + // base server name
  447 + if(empty($serverName) || $serverName == 'default'){
  448 + $oKTConfig->setdefaultns('KnowledgeTree', 'serverName', KTUtil::getServerName());
  449 + }
  450 +
  451 + // the sub directory or root url
  452 + if(empty($rootUrl) || $rootUrl == 'default'){
  453 + $oKTConfig->setdefaultns('KnowledgeTree', 'rootUrl', $this->guessRootUrl());
  454 + }
  455 +
  456 + // path to find the executable binaries
  457 + if(empty($execSearchPath) || $execSearchPath == 'default'){
  458 + $oKTConfig->setdefaultns('KnowledgeTree', 'execSearchPath', $_SERVER['PATH']);
  459 + }
  460 +
  461 + // path to magic database
  462 + if(empty($magicDatabase) || $magicDatabase == 'default'){
  463 + $oKTConfig->setdefaultns('KnowledgeTree', 'magicDatabase', KTInit::detectMagicFile());
  464 + }
440 } 465 }
441 // }}} 466 // }}}
442 467
lib/upgrades/UpgradeFunctions.inc.php
@@ -62,7 +62,7 @@ class UpgradeFunctions { @@ -62,7 +62,7 @@ class UpgradeFunctions {
62 '3.5.0' => array('cleanupOldKTAdminVersionNotifier', 'updateConfigFile35', 'registerIndexingTasks'), 62 '3.5.0' => array('cleanupOldKTAdminVersionNotifier', 'updateConfigFile35', 'registerIndexingTasks'),
63 '3.5.2' => array('setStorageEngine','dropForeignKeys','dropPrimaryKeys','dropIndexes','createPrimaryKeys','createForeignKeys','createIndexes', 'removeSlashesFromObjects'), 63 '3.5.2' => array('setStorageEngine','dropForeignKeys','dropPrimaryKeys','dropIndexes','createPrimaryKeys','createForeignKeys','createIndexes', 'removeSlashesFromObjects'),
64 '3.5.3' => array('moveConfigSettingsToDB','removeAdminVersionNotifier','removeOldSearchPlugins','addAutoIncrementToTables', 'addAutoIncrementToTables2'), 64 '3.5.3' => array('moveConfigSettingsToDB','removeAdminVersionNotifier','removeOldSearchPlugins','addAutoIncrementToTables', 'addAutoIncrementToTables2'),
65 - '3.5.4' => array('createIndexes','removeOldFilesAndFolders354') 65 + '3.5.4' => array('createIndexes','removeOldFilesAndFolders354', 'updateServerConfigSettings')
66 ); 66 );
67 67
68 var $descriptions = array( 68 var $descriptions = array(
@@ -98,7 +98,8 @@ class UpgradeFunctions { @@ -98,7 +98,8 @@ class UpgradeFunctions {
98 'removeOldSearchPlugins' => 'Remove the old Search Plugins.', 98 'removeOldSearchPlugins' => 'Remove the old Search Plugins.',
99 'addAutoIncrementToTables' => 'Update all current db tables to use auto_increment.', 99 'addAutoIncrementToTables' => 'Update all current db tables to use auto_increment.',
100 'addAutoIncrementToTables2' => 'Update all new db tables to use auto_increment.', 100 'addAutoIncrementToTables2' => 'Update all new db tables to use auto_increment.',
101 - 'removeOldFilesAndFolders354' => 'Remove old files and folders that are no longer needed.' 101 + 'removeOldFilesAndFolders354' => 'Remove old files and folders that are no longer needed.',
  102 + 'updateServerConfigSettings' => 'Update the configuration settings for the server with the correct port'
102 ); 103 );
103 var $phases = array( 104 var $phases = array(
104 "setPermissionFolder" => 1, 105 "setPermissionFolder" => 1,
@@ -1378,6 +1379,17 @@ class UpgradeFunctions { @@ -1378,6 +1379,17 @@ class UpgradeFunctions {
1378 return true; 1379 return true;
1379 } 1380 }
1380 1381
  1382 + function updateServerConfigSettings() {
  1383 + global $default;
  1384 + $port = $_SERVER['SERVER_PORT']+0;
  1385 +
  1386 + if($port > 0){
  1387 + DBUtil::whereUpdate('config_settings',
  1388 + array('value' => $port),
  1389 + array('item' => 'internal_server_port', 'group_name' => 'server'));
  1390 + }
  1391 + }
  1392 +
1381 function rm_recursive($filepath) 1393 function rm_recursive($filepath)
1382 { 1394 {
1383 if (is_dir($filepath) && !is_link($filepath)) 1395 if (is_dir($filepath) && !is_link($filepath))
lib/util/ktutil.inc
@@ -58,40 +58,76 @@ class KTUtil { @@ -58,40 +58,76 @@ class KTUtil {
58 { 58 {
59 global $default; 59 global $default;
60 60
61 - $serverName = KTUtil::getSystemSetting('server_name', false);  
62 - if($serverName !== false && !empty($serverName)){  
63 - return $serverName;  
64 - } 61 + $serverName = $default->server_name;
  62 + $serverPort = $default->server_port;
  63 +
  64 + $pos = strpos($serverName, '://');
  65 + if($pos !== false){
  66 + $serverName = substr($serverName, $pos + 3);
  67 + }
65 68
66 - $rootUrl = $default->rootUrl;  
67 - $protocol = $default->sslEnabled ? 'https' : 'http';  
68 - $port = $_SERVER['SERVER_PORT']+0;  
69 - $serverName = $_SERVER['SERVER_NAME']; 69 + $server = $_SERVER['SERVER_NAME'];
  70 + $port = $_SERVER['SERVER_PORT']+0;
  71 +
  72 + // If server_name exists, exit
  73 + if(!empty($serverName)){
  74 + // check that it hasn't changed and update if it has - disabled because it should be set by the system administrator and may have unforeseen consequences
  75 + //if($port == $serverPort && $server == $serverName){
  76 + return true;
  77 + //}
  78 + }
70 79
71 - // We don't want to set the servername to localhost, it should be set to the url that will be used normally  
72 - if($serverName == 'localhost' || $serverName == '127.0.0.1') 80 + // We don't want to set the servername to localhost, it should be set to the url that will be used normally
  81 + if($server == 'localhost' || $server == '127.0.0.1')
73 { 82 {
74 return false; 83 return false;
75 } 84 }
76 85
77 - $base_url = $protocol . '://' . $serverName; 86 + // If the servername is empty and not localhost - update it
78 87
79 - if (($protocol == 'http' && $port == 80) || ($protocol == 'https' && $port == 443))  
80 - {  
81 - // don't need to do anything  
82 - }  
83 - else  
84 - {  
85 - $base_url .= ':' . $port;  
86 - } 88 + // Save the server name and port
  89 + DBUtil::whereUpdate('config_settings',
  90 + array('value' => $server),
  91 + array('item' => 'server_name', 'group_name' => 'server'));
87 92
88 - // Add the root url  
89 - $base_url .= $rootUrl; 93 + if($port > 0){
  94 + DBUtil::whereUpdate('config_settings',
  95 + array('value' => $port),
  96 + array('item' => 'server_port', 'group_name' => 'server'));
  97 + }
90 98
91 - // Save as system setting  
92 - KTUtil::setSystemSetting('server_name', $base_url); 99 + // Save the rootUrl
  100 + $rootUrl = $default->rootUrl;
  101 + if(!empty($rootUrl)){
  102 + DBUtil::whereUpdate('config_settings',
  103 + array('value' => $rootUrl),
  104 + array('item' => 'rootUrl', 'group_name' => 'KnowledgeTree'));
  105 + }
  106 + return true;
93 } 107 }
94 108
  109 + static function getServerName()
  110 + {
  111 + static $host = null;
  112 +
  113 + if(!is_null($host)){
  114 + return $host;
  115 + }
  116 +
  117 + $host = $_SERVER['HTTP_HOST'];
  118 +
  119 + if(empty($host)){
  120 + global $default;
  121 + $host = (!empty($default->server_name)) ? $default->server_name : '127.0.0.1';
  122 + $host .= !empty($default->server_port) ? ':'.$default->server_port : '';
  123 +
  124 + $pos = strpos($host, '://');
  125 + if($pos !== false){
  126 + $host = substr($host, $pos + 3);
  127 + }
  128 + }
  129 + return $host;
  130 + }
95 131
96 static function kt_url() 132 static function kt_url()
97 { 133 {
@@ -103,30 +139,13 @@ class KTUtil { @@ -103,30 +139,13 @@ class KTUtil {
103 return $base_url; 139 return $base_url;
104 } 140 }
105 141
106 - $config = KTConfig::getSingleton();  
107 - $serverName = $config->get('knowledgeTree/serverName', $_SERVER['HTTP_HOST']); 142 + $serverName = $_SERVER['HTTP_HOST'];
108 143
109 - // $serverName gets set in dmsDefaults, if $_SERVER['HTTP_HOST'] is empty, it gets set to localhost  
110 - // we want to avoid this if possible  
111 - if(empty($serverName) || $serverName == 'localhost') 144 + // $serverName gets set in dmsDefaults using KTUtil::getServerName();
  145 + if(empty($serverName))
112 { 146 {
113 - // The host has not been set - check if the serverName setting exists  
114 - $base_url = KTUtil::getSystemSetting('server_name', false);  
115 -  
116 - if (false !== $base_url && !empty($base_url))  
117 - {  
118 - /* We are checking if the object exists because we could have an error pre or during initialization */  
119 - if(is_object($default->log))  
120 - {  
121 - $default->log->debug("kt_url: base url - $base_url");  
122 - }  
123 -  
124 - $base_url = str_replace(array("\n","\r"), array('',''), $base_url);  
125 - return $base_url;  
126 - }  
127 -  
128 - // TODO: Check if the $_SERVER['SERVER_NAME'] variable is set.  
129 - $serverName = 'localhost'; 147 + // The host has not been set - check if server_name is set in the config_settings
  148 + $serverName = KTUtil::getServerName();
130 } 149 }
131 150
132 // build up the url 151 // build up the url
@@ -138,23 +157,45 @@ class KTUtil { @@ -138,23 +157,45 @@ class KTUtil {
138 return $base_url; 157 return $base_url;
139 } 158 }
140 159
  160 + static function kt_internal_url()
  161 + {
  162 + global $default;
  163 + static $internal_url = null;
  164 +
  165 + if(!is_null($internal_url)){
  166 + return $internal_url;
  167 + }
  168 +
  169 + // build url
  170 + $internal_url = !empty($default->internal_server_name) ? $default->internal_server_name : '127.0.0.1';
  171 + $internal_url .= !empty($default->internal_server_port) ? ':' . $default->internal_server_port : '';
  172 + $internal_url .= !empty($default->rootUrl) ? $default->rootUrl : '';
  173 +
  174 + $pos = strpos($internal_url, '://');
  175 + if($pos === false){
  176 + $port = $default->internal_server_port;
  177 + $internal_url = (($port == 443 || $port == 8443) ? 'https://' : 'http://') . $internal_url;
  178 + }
  179 +
  180 + return $internal_url;
  181 + }
  182 +
141 static function call_page($path) 183 static function call_page($path)
142 { 184 {
143 global $default; 185 global $default;
144 186
145 - $base_url = KTUtil::getSystemSetting('server_name', false); 187 + // Using curl so we want to run using the internal url
  188 + $base_url = KTUtil::kt_internal_url();
146 189
147 if (false === $base_url || empty($base_url)) 190 if (false === $base_url || empty($base_url))
148 { 191 {
149 - $default->log->info("call_page: $path - cannot call script until user logs in from a url other than localhost or 127.0.0.1!"); 192 + $default->log->info("call_page: $path - cannot call script, there is a problem with the internal url. Please check the configuration settings for General Settings => Server Settings.");
150 return; 193 return;
151 } 194 }
152 195
153 - $kt_url = KTUtil::kt_url();  
154 -  
155 - $full_url = $kt_url . '/' . $path; 196 + $full_url = $base_url . '/' . $path;
156 197
157 - $default->log->debug("call_page: calling $full_url"); 198 + $default->log->debug("call_page: calling curl with - $full_url");
158 199
159 $ch = curl_init($full_url); 200 $ch = curl_init($full_url);
160 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); 201 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
sql/mysql/install/data.sql
@@ -161,7 +161,8 @@ INSERT INTO `config_groups` VALUES @@ -161,7 +161,8 @@ INSERT INTO `config_groups` VALUES
161 (20, 'urls', 'Urls', 'The paths to the KnowledgeTree server and filesystem. <br>Full values are specific to your installation (Windows or Linux). Only advanced users should change these settings.', 'General Settings'), 161 (20, 'urls', 'Urls', 'The paths to the KnowledgeTree server and filesystem. <br>Full values are specific to your installation (Windows or Linux). Only advanced users should change these settings.', 'General Settings'),
162 (21, 'user_prefs', 'User Preferences', 'Configures user preferences.', 'General Settings'), 162 (21, 'user_prefs', 'User Preferences', 'Configures user preferences.', 'General Settings'),
163 (22, 'webservice', 'Web Services', 'KnowledgeTree Web Service Interface configuration. Note that a number of KnowledgeTree Tools rely on this service.', 'Client Tools Settings'), 163 (22, 'webservice', 'Web Services', 'KnowledgeTree Web Service Interface configuration. Note that a number of KnowledgeTree Tools rely on this service.', 'Client Tools Settings'),
164 -(23, 'ldapAuthentication', 'LDAP Authentication', 'Configures LDAP Authentication', 'General Settings'); 164 +(23, 'ldapAuthentication', 'LDAP Authentication', 'Configures LDAP Authentication', 'General Settings'),
  165 +(24, 'server', 'Server Settings', 'Configuration settings for the server', 'General Settings');
165 /*!40000 ALTER TABLE `config_groups` ENABLE KEYS */; 166 /*!40000 ALTER TABLE `config_groups` ENABLE KEYS */;
166 UNLOCK TABLES; 167 UNLOCK TABLES;
167 168
@@ -277,7 +278,12 @@ INSERT INTO `config_settings` VALUES @@ -277,7 +278,12 @@ INSERT INTO `config_settings` VALUES
277 (103, 'tweaks', 'Always Force Original Filename on Checkin', 'When set to true, the checkbox for "Force Original Filename" will be hidden on check-in. This ensures that the filename will always stay the same.', 'disableForceFilenameOption', 'default', 'false', 'boolean', NULL, 1), 278 (103, 'tweaks', 'Always Force Original Filename on Checkin', 'When set to true, the checkbox for "Force Original Filename" will be hidden on check-in. This ensures that the filename will always stay the same.', 'disableForceFilenameOption', 'default', 'false', 'boolean', NULL, 1),
278 (104, 'KnowledgeTree', 'The Location of the Mime Magic File', 'The path to the mime magic database file.', 'magicDatabase', 'default', '/usr/share/file/magic', 'string', NULL, 1), 279 (104, 'KnowledgeTree', 'The Location of the Mime Magic File', 'The path to the mime magic database file.', 'magicDatabase', 'default', '/usr/share/file/magic', 'string', NULL, 1),
279 (105, 'search', 'Maximum results from SQL query', 'The maximum results from an SQL query', 'maxSqlResults', 'default', '1000', 'numeric_string', NULL, 1), 280 (105, 'search', 'Maximum results from SQL query', 'The maximum results from an SQL query', 'maxSqlResults', 'default', '1000', 'numeric_string', NULL, 1),
280 -(106, 'indexer', 'Enable the Document Indexer', 'Enables the indexing of document content for full text searching.', 'enableIndexing', 'default', 'true', 'boolean', NULL, 1); 281 +(106, 'indexer', 'Enable the Document Indexer', 'Enables the indexing of document content for full text searching.', 'enableIndexing', 'default', 'true', 'boolean', NULL, 1),
  282 +(107, 'server', 'Internal Server IP', 'The internal IP for the server, this is usually set to 127.0.0.1.', 'internal_server_name', 'default', '127.0.0.1', 'string', NULL, 1),
  283 +(108, 'server', 'Internal Server port', 'The internal port for the server.', 'internal_server_port', 'default', '80', 'numeric_string', NULL, 1),
  284 +(109, 'server', 'External Server IP', 'The external IP for the server.', 'server_name', 'default', '', 'string', NULL, 1),
  285 +(110, 'server', 'External Server port', 'The external port for the server.', 'server_port', 'default', '', 'numeric_string', NULL, 1),
  286 +(111, 'KnowledgeTree', 'Root Url', 'The path to the web application from the root of the web server. For example, if KT is at http://example.org/foo/, then the root directory should be \'/foo\'.', 'rootUrl', '', '', 'string', NULL, 1);
281 /*!40000 ALTER TABLE `config_settings` ENABLE KEYS */; 287 /*!40000 ALTER TABLE `config_settings` ENABLE KEYS */;
282 UNLOCK TABLES; 288 UNLOCK TABLES;
283 289
@@ -1358,7 +1364,7 @@ INSERT INTO `scheduler_tasks` VALUES @@ -1358,7 +1364,7 @@ INSERT INTO `scheduler_tasks` VALUES
1358 (5,'Database Maintenance','bin/dbmaint.php','optimize',0,'monthly','2007-10-01 00:00:00',NULL,0,'disabled'), 1364 (5,'Database Maintenance','bin/dbmaint.php','optimize',0,'monthly','2007-10-01 00:00:00',NULL,0,'disabled'),
1359 (6,'OpenOffice test','bin/checkopenoffice.php','',0,'1min','2007-10-01 00:00:00',NULL,0,'enabled'), 1365 (6,'OpenOffice test','bin/checkopenoffice.php','',0,'1min','2007-10-01 00:00:00',NULL,0,'enabled'),
1360 (7,'Cleanup Temporary Directory','search2/bin/cronCleanup.php','',0,'1min','2007-10-01 00:00:00',NULL,0,'enabled'), 1366 (7,'Cleanup Temporary Directory','search2/bin/cronCleanup.php','',0,'1min','2007-10-01 00:00:00',NULL,0,'enabled'),
1361 -(8,'Disk Usage and Folder Utilisation Statistics','plugins/housekeeper/bin/UpdateStats.php','',0,'5mins','2007-10-01 00:00:00',NULL,0,'enabled'), 1367 +(8,'Disk Usage and Folder Utilisation Statistics','plugins/housekeeper/bin/UpdateStats.php','',0,'5mins','2007-10-01 00:00:00',NULL,0,'enabled');
1362 /*!40000 ALTER TABLE `scheduler_tasks` ENABLE KEYS */; 1368 /*!40000 ALTER TABLE `scheduler_tasks` ENABLE KEYS */;
1363 UNLOCK TABLES; 1369 UNLOCK TABLES;
1364 1370
sql/mysql/upgrade/3.5.4/server_config_settings.sql 0 → 100644
  1 +INSERT INTO config_groups (name, display_name, description, category) VALUES
  2 +('server', 'Server Settings', 'Configuration settings for the server', 'General Settings');
  3 +
  4 +
  5 +INSERT INTO `config_settings` (group_name, display_name, description, item, value, default_value, type, options, can_edit) VALUES
  6 +('server', 'Internal Server IP', 'The internal IP for the server, this is usually set to 127.0.0.1.', 'internal_server_name', 'default', '127.0.0.1', 'string', NULL, 1),
  7 +('server', 'Internal Server port', 'The internal port for the server.', 'internal_server_port', 'default', '80', 'numeric_string', NULL, 1),
  8 +('server', 'External Server IP', 'The external IP for the server.', 'server_name', 'default', '', 'string', NULL, 1),
  9 +('server', 'External Server port', 'The external port for the server.', 'server_port', 'default', '', 'numeric_string', NULL, 1),
  10 +('KnowledgeTree', 'Root Url', 'The path to the web application from the root of the web server. For example, if KT is at http://example.org/foo/, then the root directory should be \'/foo\'.', 'rootUrl', '', '', 'string', NULL, 1);