FOSSology  4.5.1
Open Source License Compliance by Open Source Software
common-sysconfig.php
Go to the documentation of this file.
1 <?php
2 /*
3  SPDX-FileCopyrightText: © 2011-2015 Hewlett-Packard Development Company, L.P.
4  SPDX-FileCopyrightText: © 2021 Siemens AG
5 
6  SPDX-License-Identifier: LGPL-2.1-only
7 */
8 
10 
17 define("CONFIG_TYPE_INT", 1);
19 define("CONFIG_TYPE_TEXT", 2);
21 define("CONFIG_TYPE_TEXTAREA", 3);
23 define("CONFIG_TYPE_PASSWORD", 4);
25 define("CONFIG_TYPE_DROP", 5);
27 define("CONFIG_TYPE_BOOL", 6);
28 
29 
65 function ConfigInit($sysconfdir, &$SysConf, $exitOnDbFail=true)
66 {
67  global $PG_CONN;
68 
69  $PG_CONN = get_pg_conn($sysconfdir, $SysConf, $exitOnDbFail);
70 
72  return $PG_CONN;
73 } // ConfigInit()
74 
85 function get_pg_conn($sysconfdir, &$SysConf, $exitOnDbFail=true)
86 {
87  /************* Parse VERSION *******************/
88  $versionFile = "{$sysconfdir}/VERSION";
89  $versionConf = parse_ini_file($versionFile, true);
90 
91  /* Add this file contents to $SysConf, then destroy $VersionConf
92  * This file can define its own groups and is eval'd.
93  */
94  foreach ($versionConf as $groupName => $groupArray) {
95  foreach ($groupArray as $var => $assign) {
96  $toeval = "\$$var = \"$assign\";";
97  eval($toeval);
98  $SysConf[$groupName][$var] = ${$var};
99  $GLOBALS[$var] = ${$var};
100  }
101  }
102  unset($versionConf);
103 
104  /************* Parse Db.conf *******************/
105  $dbPath = "{$sysconfdir}/Db.conf";
106  $dbConf = parse_ini_file($dbPath, true);
107 
108  /* Add this file contents to $SysConf, then destroy $dbConf
109  * This file can define its own groups and is eval'd.
110  */
111  foreach ($dbConf as $var => $val) {
112  $SysConf['DBCONF'][$var] = $val;
113  }
114  unset($dbConf);
115 
116  /*
117  * Connect to the database. If the connection fails,
118  * DBconnect() will print a failure message and exit.
119  */
120  $pg_conn = DBconnect($sysconfdir, "", $exitOnDbFail);
121 
122  if (! $exitOnDbFail && ($pg_conn === null || $pg_conn === false)) {
123  return -1;
124  }
125 
126  global $container;
127  $postgresDriver = new \Fossology\Lib\Db\Driver\Postgres($pg_conn);
128  $container->get('db.manager')->setDriver($postgresDriver);
129 
130  return $pg_conn;
131 }
132 
139 function populate_from_sysconfig($conn, &$SysConf)
140 {
141  /* populate the global $SysConf array with variable/value pairs */
142  $sql = "SELECT variablename, conf_value FROM sysconfig;";
143  $result = pg_query($conn, $sql);
144  DBCheckResult($result, $sql, __FILE__, __LINE__);
145 
146  while ($row = pg_fetch_assoc($result)) {
147  $SysConf['SYSCONFIG'][$row['variablename']] = $row['conf_value'];
148  }
149  pg_free_result($result);
150 }
151 
156 {
157  global $PG_CONN;
158 
159  $columns = array("variablename", "conf_value", "ui_label", "vartype", "group_name",
160  "group_order", "description", "validation_function", "option_value");
161  $valueArray = array();
162 
163  /* CorsOrigin */
164  $variable = "CorsOrigins";
165  $prompt = _('Allowed origins for REST API');
166  $desc = _('[scheme]://[hostname]:[port], "*" for anywhere');
167  $valueArray[$variable] = array("'$variable'", "'*'", "'$prompt'",
168  strval(CONFIG_TYPE_TEXT), "'PAT'", "3", "'$desc'", "null", "null");
169 
170  /* Email */
171  $variable = "SupportEmailLabel";
172  $supportEmailLabelPrompt = _('Support Email Label');
173  $supportEmailLabelDesc = _('e.g. "Support"<br>Text that the user clicks on to create a new support email. This new email will be preaddressed to this support email address and subject. HTML is ok.');
174  $valueArray[$variable] = array("'$variable'", "'Support'", "'$supportEmailLabelPrompt'",
175  strval(CONFIG_TYPE_TEXT), "'Support'", "1", "'$supportEmailLabelDesc'", "null", "null");
176 
177  $variable = "SupportEmailAddr";
178  $supportEmailAddrPrompt = _('Support Email Address');
179  $supportEmailAddrValid = "check_email_address";
180  $supportEmailAddrDesc = _('e.g. "support@mycompany.com"<br>Individual or group email address to those providing FOSSology support.');
181  $valueArray[$variable] = array("'$variable'", "null", "'$supportEmailAddrPrompt'",
182  strval(CONFIG_TYPE_TEXT), "'Support'", "2", "'$supportEmailAddrDesc'", "'$supportEmailAddrValid'", "null");
183 
184  $variable = "SupportEmailSubject";
185  $supportEmailSubjectPrompt = _('Support Email Subject line');
186  $supportEmailSubjectDesc = _('e.g. "fossology support"<br>Subject line to use on support email.');
187  $valueArray[$variable] = array("'$variable'", "'FOSSology Support'", "'$supportEmailSubjectPrompt'",
188  strval(CONFIG_TYPE_TEXT), "'Support'", "3", "'$supportEmailSubjectDesc'", "null", "null");
189 
190  /* oAuth2 Service */
191  $variable = "OidcAppName";
192  $oidcPrompt = _('OIDC App Name');
193  $oidcDesc = _('e.g. "my oAuth"<br>App name to display on login page.');
194  $valueArray[$variable] = array("'$variable'", "null", "'$oidcPrompt'",
195  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "1", "'$oidcDesc'", "null", "null");
196 
197  $variable = "OidcClientIdClaim";
198  $oidcPrompt = _('OIDC Client Id Claim');
199  $oidcDesc = _('e.g. "azp"<br>Client ID claim in the decoded payload.');
200  $valueArray[$variable] = array("'$variable'", "'client-id'", "'$oidcPrompt'",
201  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "2", "'$oidcDesc'", "null", "null");
202 
203  $variable = "OidcResourceOwnerId";
204  $oidcPrompt = _('Resource owner id field');
205  $oidcDesc = _('e.g. "email", "upn"<br>Field in token which provides user id. The field <b>should not be empty</b>.');
206  $valueArray[$variable] = array("'$variable'", "'email'", "'$oidcPrompt'",
207  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "3", "'$oidcDesc'", "null", "null");
208 
209  $variable = "OidcTokenType";
210  $oidcPrompt = _('Token to use from provider');
211  $oidcDesc = _('OpenID Connect providers 2 types of tokens, access and id. Which to use for authentication?<br>AzureAD prefers ID token.');
212  $valueArray[$variable] = array("'$variable'", "'A'", "'$oidcPrompt'",
213  strval(CONFIG_TYPE_DROP), "'OauthSupport'", "4", "'$oidcDesc'", "null", "'Access Token{A}|ID Token{I}'");
214 
215  $variable = "OidcAppId";
216  $oidcPrompt = _('OIDC Client Id');
217  $oidcDesc = _('e.g. "e0ec21b9f4b21adc76f185962b52bdfc13af134a"<br>Client ID generated while registering your application.');
218  $valueArray[$variable] = array("'$variable'", "null", "'$oidcPrompt'",
219  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "5", "'$oidcDesc'", "null", "null");
220 
221  $variable = "OidcSecret";
222  $oidcPrompt = _('OIDC Secret');
223  $oidcDesc = _('e.g. "cf13476f185b9f4b2e0ec962b52211adbdfc13aa"<br>Secret generated while registering your application.');
224  $valueArray[$variable] = array("'$variable'", "null", "'$oidcPrompt'",
225  strval(CONFIG_TYPE_PASSWORD), "'OauthSupport'", "6", "'$oidcDesc'", "null", "null");
226 
227  $variable = "OidcRedirectURL";
228  $oidcPrompt = _('Redirect URL');
229  $oidcDesc = _('e.g. "http://fossology.application.url.com/repo"<br>URL of your fossology application.');
230  $valueArray[$variable] = array("'$variable'", "null", "'$oidcPrompt'",
231  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "7", "'$oidcDesc'", "null", "null");
232 
233  $variable = "OidcDiscoveryURL";
234  $oidcPrompt = _('OIDC Discovery URL');
235  $oidcDesc = _('e.g. "http://oauth.com/.well-known/openid-configuration"<br>URL for OIDC Discovery document JSON to fill following fields upon save.');
236  $valueArray[$variable] = array("'$variable'", "null", "'$oidcPrompt'",
237  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "8", "'$oidcDesc'", "null", "null");
238 
239  $variable = "OidcIssuer";
240  $oidcPrompt = _('OIDC Token Issuer');
241  $oidcDesc = _('e.g. "http://oauth.com"<br>Issuer for OIDC tokens.');
242  $valueArray[$variable] = array("'$variable'", "null", "'$oidcPrompt'",
243  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "9", "'$oidcDesc'", "null", "null");
244 
245  $variable = "OidcAuthorizeURL";
246  $oidcPrompt = _('OIDC Authorize URL');
247  $oidcDesc = _('e.g. "http://oauth.com/authorization.oauth2"<br>URL for OAuth2 authorization endpoint.');
248  $valueArray[$variable] = array("'$variable'", "null", "'$oidcPrompt'",
249  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "10", "'$oidcDesc'", "null", "null");
250 
251  $variable = "OidcAccessTokenURL";
252  $oidcPrompt = _('OIDC Access Token URL');
253  $oidcDesc = _('e.g. "http://oauth.com/token.oauth2"<br>URL for OAuth2 access token endpoint.');
254  $valueArray[$variable] = array("'$variable'", "null", "'$oidcPrompt'",
255  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "11", "'$oidcDesc'", "null", "null");
256 
257  $variable = "OidcResourceURL";
258  $oidcPrompt = _('OIDC User Info URL');
259  $oidcDesc = _('e.g. "http://oauth.com/userinfo.oauth2"<br>URL for OAuth2 user info endpoint.');
260  $valueArray[$variable] = array("'$variable'", "null", "'$oidcPrompt'",
261  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "12", "'$oidcDesc'", "null", "null");
262 
263  $variable = "OidcJwksURL";
264  $oidcPrompt = _('OIDC JWKS URL');
265  $oidcDesc = _('e.g. "http://oauth.com/jwks.oauth2"<br>URL for OIDC JWKS keys.');
266  $valueArray[$variable] = array("'$variable'", "null", "'$oidcPrompt'",
267  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "13", "'$oidcDesc'", "null", "null");
268 
269  $variable = "OidcJwkAlgInject";
270  $oidcPrompt = _('OIDC JWKS Algorithm inject');
271  $oidcDesc = _('Algorithm value to inject for JWKS. Leave empty to not modifiy.' .
272  '<br><a href="https://datatracker.ietf.org/doc/html/rfc7517#section-4.4">Check info</a>.');
273  $valueArray[$variable] = array("'$variable'", "null", "'$oidcPrompt'",
274  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "14", "'$oidcDesc'", "null", "null");
275 
276  $variable = "OidcLogoutURL";
277  $oidcPrompt = _('Logout URL');
278  $oidcDesc = _('e.g. "http://oauth.com/logout.oauth2"<br>URL to redirect user to for logout.');
279  $valueArray[$variable] = array("'$variable'", "null", "'$oidcPrompt'",
280  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "15", "'$oidcDesc'", "null", "null");
281 
282  $variable = "OidcScope";
283  $prompt = _('OIDC Scope');
284  $desc = _('Scope of OIDC for client_credential grant. Used with LicenseDB.');
285  $valueArray[$variable] = array("'$variable'", "''", "'$prompt'",
286  strval(CONFIG_TYPE_TEXT), "'OauthSupport'", "16", "'$oidcDesc'", "null", "null");
287 
288  /* Banner Message */
289  $variable = "BannerMsg";
290  $bannerMsgPrompt = _('Banner message');
291  $bannerMsgDesc = _('This is message will be displayed on every page with a banner. HTML is ok.');
292  $valueArray[$variable] = array("'$variable'", "null", "'$bannerMsgPrompt'",
293  strval(CONFIG_TYPE_TEXTAREA), "'Banner'", "1", "'$bannerMsgDesc'", "null", "null");
294 
295  /* Logo */
296  $variable = "LogoImage";
297  $logoImagePrompt = _('Logo Image URL');
298  $logoImageValid = "check_logo_image_url";
299  $logoImageDesc = _('e.g. "http://mycompany.com/images/companylogo.png" or "images/mylogo.png"<br>This image replaces the fossology project logo. Image is constrained to 150px wide. 80-100px high is a good target. If you change this URL, you MUST also enter a logo URL.');
300  $valueArray[$variable] = array("'$variable'", "null", "'$logoImagePrompt'",
301  strval(CONFIG_TYPE_TEXT), "'Logo'", "1", "'$logoImageDesc'", "'$logoImageValid'", "null");
302 
303  $variable = "LogoLink";
304  $logoLinkPrompt = _('Logo URL');
305  $logoLinkDesc = _('e.g. "http://mycompany.com/fossology"<br>URL a person goes to when they click on the logo. If you change the Logo URL, you MUST also enter a Logo Image.');
306  $logoLinkValid = "check_logo_url";
307  $valueArray[$variable] = array("'$variable'", "null", "'$logoLinkPrompt'",
308  strval(CONFIG_TYPE_TEXT), "'Logo'", "2", "'$logoLinkDesc'", "'$logoLinkValid'", "null");
309 
310  $variable = "FOSSologyURL";
311  $urlPrompt = _("FOSSology URL");
312  $hostname = exec("hostname -f");
313  if (empty($hostname)) {
314  $hostname = "localhost";
315  }
316  $fossologyURL = $hostname."/repo/";
317  $urlDesc = _("URL of this FOSSology server, e.g. $fossologyURL");
318  $urlValid = "check_fossology_url";
319  $valueArray[$variable] = array("'$variable'", "'$fossologyURL'", "'$urlPrompt'",
320  strval(CONFIG_TYPE_TEXT), "'URL'", "1", "'$urlDesc'", "'$urlValid'", "null");
321 
322  $variable = "ClearlyDefinedURL";
323  $urlPrompt = _("ClearlyDefined URL");
324  $cdURL = "https://api.clearlydefined.io/";
325  $urlDesc = _("URL of ClearlyDefined server, e.g. $cdURL");
326  $urlValid = "check_url";
327  $valueArray[$variable] = array("'$variable'", "'$cdURL'", "'$urlPrompt'",
328  strval(CONFIG_TYPE_TEXT), "'URL'", "2", "'$urlDesc'", "'$urlValid'", "null");
329 
330  $variable = "NomostListNum";
331  $nomosNumPrompt = _("Maximum licenses to List");
332  $nomostListNum = "2200";
333  $NomosNumDesc = _("For License List and License List Download, you can set the maximum number of lines to list/download. Default 2200.");
334  $valueArray[$variable] = array("'$variable'", "'$nomostListNum'", "'$nomosNumPrompt'",
335  strval(CONFIG_TYPE_TEXT), "'Number'", "1", "'$NomosNumDesc'", "null", "null");
336 
337  $variable = "BlockSizeHex";
338  $hexPrompt = _("Chars per page in hex view");
339  $hexDesc = _("Number of characters per page in hex view");
340  $valueArray[$variable] = array("'$variable'", "'8192'", "'$hexPrompt'",
341  strval(CONFIG_TYPE_TEXT), "'Number'", "2", "'$hexDesc'", "null", "null");
342 
343  $variable = "BlockSizeText";
344  $textPrompt = _("Chars per page in text view");
345  $textDesc = _("Number of characters per page in text view");
346  $valueArray[$variable] = array("'$variable'", "'81920'", "'$textPrompt'",
347  strval(CONFIG_TYPE_TEXT), "'Number'", "3", "'$textDesc'", "null", "null");
348 
349  $variable = "ShowJobsAutoRefresh";
350  $contextNamePrompt = _("ShowJobs Auto Refresh Time");
351  $contextValue = "10";
352  $contextDesc = _("No of seconds to refresh ShowJobs");
353  $valueArray[$variable] = array("'$variable'", "'$contextValue'", "'$contextNamePrompt'",
354  strval(CONFIG_TYPE_TEXT), "'Number'", "4", "'$contextDesc'", "null", "null");
355 
356  /* Report Header Text */
357  $variable = "ReportHeaderText";
358  $contextNamePrompt = _("Report Header Text");
359  $contextValue = "FOSSology";
360  $contextDesc = _("Report Header Text at right side corner");
361  $valueArray[$variable] = array("'$variable'", "'$contextValue'", "'$contextNamePrompt'",
362  strval(CONFIG_TYPE_TEXT), "'ReportText'", "1", "'$contextDesc'", "null", "null");
363 
364  $variable = "CommonObligation";
365  $contextNamePrompt = _("Common Obligation");
366  $contextValue = "";
367  $commonExObligations = _('you can add HTML line break, Also use json format for table rows');
368  $contextDesc = _("Common Obligation Text,". "$commonExObligations");
369  $valueArray[$variable] = array("'$variable'", "'$contextValue'", "'$contextNamePrompt'",
370  strval(CONFIG_TYPE_TEXTAREA), "'ReportText'", "2", "'$contextDesc'", "null", "null");
371 
372  $variable = "AdditionalObligation";
373  $contextNamePrompt = _("Additional Obligation");
374  $contextValue = "";
375  $contextDesc = _("Additional Obligation Text,". "$commonExObligations");
376  $valueArray[$variable] = array("'$variable'", "'$contextValue'", "'$contextNamePrompt'",
377  strval(CONFIG_TYPE_TEXTAREA), "'ReportText'", "3", "'$contextDesc'", "null", "null");
378 
379  $variable = "ObligationAndRisk";
380  $contextNamePrompt = _("Obligation And Risk Assessment");
381  $contextValue = "";
382  $contextDesc = _("Obligations and risk assessment,". "$commonExObligations");
383  $valueArray[$variable] = array("'$variable'", "'$contextValue'", "'$contextNamePrompt'",
384  strval(CONFIG_TYPE_TEXTAREA), "'ReportText'", "4", "'$contextDesc'", "null", "null");
385 
386  /* "Upload from server"-configuration */
387  $variable = "UploadFromServerWhitelist";
388  $contextNamePrompt = _("Whitelist for serverupload");
389  $contextValue = "/tmp";
390  $contextDesc = _("List of allowed prefixes for upload, separated by \":\" (colon)");
391  $valueArray[$variable] = array("'$variable'", "'$contextValue'", "'$contextNamePrompt'",
392  strval(CONFIG_TYPE_TEXT), "'UploadFromServer'", "1", "'$contextDesc'", "null", "null");
393 
394  $variable = "UploadFromServerAllowedHosts";
395  $contextNamePrompt = _("List of allowed hosts for serverupload");
396  $contextValue = "localhost";
397  $contextDesc = _("List of allowed hosts for upload, separated by \":\" (colon)");
398  $valueArray[$variable] = array("'$variable'", "'$contextValue'", "'$contextNamePrompt'",
399  strval(CONFIG_TYPE_TEXT), "'UploadFromServer'", "2", "'$contextDesc'", "null", "null");
400 
401  /* SMTP config */
402  $variable = "SMTPHostName";
403  $smtpHostPrompt = _('SMTP Host Name');
404  $smtpHostDesc = _('e.g.: "smtp.domain.com"<br>The domain to be used to send emails.');
405  $valueArray[$variable] = array("'$variable'", "null", "'$smtpHostPrompt'",
406  strval(CONFIG_TYPE_TEXT), "'SMTP'", "1", "'$smtpHostDesc'", "null", "null");
407 
408  $variable = "SMTPPort";
409  $smtpPortPrompt = _('SMTP Port');
410  $smtpPortDesc = _('e.g.: "25"<br>SMTP port to be used.');
411  $valueArray[$variable] = array("'$variable'", "25", "'$smtpPortPrompt'",
412  strval(CONFIG_TYPE_INT), "'SMTP'", "2", "'$smtpPortDesc'", "null", "null");
413 
414  $variable = "SMTPAuth";
415  $smtpAuthPrompt = _('SMTP Auth Type');
416  $smtpAuthDesc = _('Algorithm to use for login.<br>Login => Encrypted<br>None => No authentication<br>Plain => Send as plain text');
417  $valueArray[$variable] = array("'$variable'", "'L'", "'$smtpAuthPrompt'",
418  strval(CONFIG_TYPE_DROP), "'SMTP'", "3", "'$smtpAuthDesc'", "null", "'Login{L}|None{N}|Plain{P}'");
419 
420  $variable = "SMTPFrom";
421  $smtpFrom = _('SMTP Email');
422  $smtpFromDesc = _('e.g.: "user@domain.com"<br>Sender email.');
423  $valueArray[$variable] = array("'$variable'", "null", "'$smtpFrom'",
424  strval(CONFIG_TYPE_TEXT), "'SMTP'", "4", "'$smtpFromDesc'", "'check_email_address'", "null");
425 
426  $variable = "SMTPAuthUser";
427  $smtpAuthUserPrompt = _('SMTP User');
428  $smtpAuthUserDesc = _('e.g.: "user"<br>Login to be used for login on SMTP Server.');
429  $valueArray[$variable] = array("'$variable'", "null", "'$smtpAuthUserPrompt'",
430  strval(CONFIG_TYPE_TEXT), "'SMTP'", "5", "'$smtpAuthUserDesc'", "null", "null");
431 
432  $variable = "SMTPAuthPasswd";
433  $smtpAuthPasswdPrompt = _('SMTP Login Password');
434  $smtpAuthPasswdDesc = _('Password used for SMTP login.');
435  $valueArray[$variable] = array("'$variable'", "null", "'$smtpAuthPasswdPrompt'",
436  strval(CONFIG_TYPE_PASSWORD), "'SMTP'", "6", "'$smtpAuthPasswdDesc'", "null", "null");
437 
438  $variable = "SMTPSslVerify";
439  $smtpSslPrompt = _('SMTP SSL Verify');
440  $smtpSslDesc = _('The SSL verification for connection is required?');
441  $valueArray[$variable] = array("'$variable'", "'S'", "'$smtpSslPrompt'",
442  strval(CONFIG_TYPE_DROP), "'SMTP'", "7", "'$smtpSslDesc'", "null", "'Ignore{I}|Strict{S}|Warn{W}'");
443 
444  $variable = "SMTPStartTls";
445  $smtpTlsPrompt = _('Start TLS');
446  $smtpTlsDesc = _('Use TLS connection for SMTP?');
447  $valueArray[$variable] = array("'$variable'", "'1'", "'$smtpTlsPrompt'",
448  strval(CONFIG_TYPE_DROP), "'SMTP'", "8", "'$smtpTlsDesc'", "null", "'Yes{1}|No{2}'");
449 
450  $variable = "UploadVisibility";
451  $prompt = _('Default Upload Visibility');
452  $desc = _('Default Visibility for uploads by the user');
453  $valueArray[$variable] = array("'$variable'", "'protected'", "'$prompt'",
454  strval(CONFIG_TYPE_DROP), "'UploadFlag'", "1", "'$desc'", "null", "'Visible only for active group{private}|Visible for all groups{protected}|Make Public{public}'");
455 
456  /* Password policy config */
457  $variable = "PasswdPolicy";
458  $prompt = _('Enable password policy');
459  $desc = _('Enable password policy check');
460  $valueArray[$variable] = array("'$variable'", "false", "'$prompt'",
461  strval(CONFIG_TYPE_BOOL), "'PASSWD'", "1", "'$desc'",
462  "'check_boolean'", "null");
463 
464  $variable = "PasswdPolicyMinChar";
465  $prompt = _('Minimum characters');
466  $desc = _('Blank for no limit');
467  $valueArray[$variable] = array("'$variable'", "8", "'$prompt'",
468  strval(CONFIG_TYPE_INT), "'PASSWD'", "2", "'$desc'", "null", "null");
469 
470  $variable = "PasswdPolicyMaxChar";
471  $prompt = _('Maximum characters');
472  $desc = _('Blank for no limit');
473  $valueArray[$variable] = array("'$variable'", "16", "'$prompt'",
474  strval(CONFIG_TYPE_INT), "'PASSWD'", "3", "'$desc'", "null", "null");
475 
476  $variable = "PasswdPolicyLower";
477  $prompt = _('Lowercase');
478  $desc = _('Minimum one lowercase character.');
479  $valueArray[$variable] = array("'$variable'", "true", "'$prompt'",
480  strval(CONFIG_TYPE_BOOL), "'PASSWD'", "4", "'$desc'",
481  "'check_boolean'", "null");
482 
483  $variable = "PasswdPolicyUpper";
484  $prompt = _('Uppercase');
485  $desc = _('Minimum one uppercase character.');
486  $valueArray[$variable] = array("'$variable'", "true", "'$prompt'",
487  strval(CONFIG_TYPE_BOOL), "'PASSWD'", "5", "'$desc'",
488  "'check_boolean'", "null");
489 
490  $variable = "PasswdPolicyDigit";
491  $prompt = _('Digit');
492  $desc = _('Minimum one digit.');
493  $valueArray[$variable] = array("'$variable'", "true", "'$prompt'",
494  strval(CONFIG_TYPE_BOOL), "'PASSWD'", "6", "'$desc'",
495  "'check_boolean'", "null");
496 
497  $variable = "PasswdPolicySpecial";
498  $prompt = _('Allowed special characters');
499  $desc = _('Empty for do not care');
500  $valueArray[$variable] = array("'$variable'", "'@$!%*?&'", "'$prompt'",
501  strval(CONFIG_TYPE_TEXT), "'PASSWD'", "7", "'$desc'", "null", "null");
502 
503  $variable = "PATMaxExipre";
504  $patTokenValidityPrompt = _('Max token validity');
505  $patTokenValidityDesc = _('Maximum validity of tokens (in days)');
506  $valueArray[$variable] = array("'$variable'", "30", "'$patTokenValidityPrompt'",
507  strval(CONFIG_TYPE_INT), "'PAT'", "1", "'$patTokenValidityDesc'", "null", "null");
508 
509  $variable = "PATMaxPostExpiryRetention";
510  $patTokenRetentionPrompt = _('Max expired token retention period');
511  $patTokenRetentionDesc = _('Maximum retention period of expired tokens (in days) for Maintagent');
512  $valueArray[$variable] = array("'$variable'", "30", "'$patTokenRetentionPrompt'",
513  strval(CONFIG_TYPE_INT), "'PAT'", "2", "'$patTokenRetentionDesc'", "null", "null");
514 
515  $variable = "SkipFiles";
516  $mimeTypeToSkip = _("Skip MimeTypes from scanning");
517  $mimeTypeDesc = _("add comma (,) separated mimetype to exclude files from scanning");
518  $valueArray[$variable] = array("'$variable'", "null", "'$mimeTypeToSkip'",
519  strval(CONFIG_TYPE_TEXT), "'Skip'", "1", "'$mimeTypeDesc'", "null", "null");
520 
521  $perm_admin=Auth::PERM_ADMIN;
522  $perm_write=Auth::PERM_WRITE;
523  $variable = "SourceCodeDownloadRights";
524  $SourceDownloadRightsPrompt = _('Access rights required to download source code');
525  $SourceDownloadRightsDesc = _('Choose which access level will be required for user to be able to download source code.');
526  $valueArray[$variable] = array("'$variable'", "'$perm_write'", "'$SourceDownloadRightsPrompt'",
527  strval(CONFIG_TYPE_DROP), "'DOWNLOAD'", "1", "'$SourceDownloadRightsDesc'", "null", "'Administrator{{$perm_admin}}|Read_Write{{$perm_write}}'");
528 
529  $variable = "UserDescReadOnly";
530  $prompt = _('Make account details read-only');
531  $desc = _('Make account details (username, email, description) read-only');
532  $valueArray[$variable] = array("'$variable'", "false", "'$prompt'",
533  strval(CONFIG_TYPE_BOOL), "'USER_READ_ONLY'", "1", "'$desc'",
534  "'check_boolean'", "null");
535 
536  $variable = "LicenseTypes";
537  $licenseTypeTitle = _("License Types");
538  $contextValue = "Permissive, Strong Copyleft, Weak Copyleft";
539  $licenseTypeDesc = _("add comma (,) separated different license types");
540  $valueArray[$variable] = array("'$variable'", "'$contextValue'", "'$licenseTypeTitle'",
541  strval(CONFIG_TYPE_TEXT), "'LICENSE'", "1", "'$licenseTypeDesc'", "null", "null");
542 
543  /* SoftwareHeritage agent config */
544  $variable = "SwhURL";
545  $prompt = _('SoftwareHeritage URL');
546  $desc = _('URL to Software Heritage servers');
547  $valueArray[$variable] = array("'$variable'",
548  "'https://archive.softwareheritage.org'", "'$prompt'",
549  strval(CONFIG_TYPE_TEXT), "'SWH'", "1", "'$desc'", "'check_url'", "null");
550 
551  $variable = "SwhBaseURL";
552  $prompt = _('SoftwareHeritage API base URI');
553  $desc = _('Base URI for API calls');
554  $valueArray[$variable] = array("'$variable'", "'/api/1/content/sha256:'",
555  "'$prompt'", strval(CONFIG_TYPE_TEXT), "'SWH'", "2", "'$desc'", "null",
556  "null");
557 
558  $variable = "SwhContent";
559  $prompt = _('Content endpoint');
560  $desc = _('Endpoint to get content about file');
561  $valueArray[$variable] = array("'$variable'", "'/license'", "'$prompt'",
562  strval(CONFIG_TYPE_TEXT), "'SWH'", "3", "'$desc'", "null", "null");
563 
564  $variable = "SwhSleep";
565  $prompt = _('Max sleep time');
566  $desc = _('Max time to sleep for rate-limit. Note: This concerns with scheduler heartbeat.');
567  $valueArray[$variable] = array("'$variable'", "100", "'$prompt'",
568  strval(CONFIG_TYPE_INT), "'SWH'", "4", "'$desc'", "null", "null");
569 
570  $variable = "SwhToken";
571  $prompt = _('Auth token');
572  $desc = _('');
573  $valueArray[$variable] = array("'$variable'", "''", "'$prompt'",
574  strval(CONFIG_TYPE_PASSWORD), "'SWH'", "5", "'$desc'", "null", "null");
575 
576  $variable = "ScAPIURL";
577  $prompt = _('Scanoss API url');
578  $desc = _('Set URL to SCANOSS API (blank for default osskb.org)');
579  $valueArray[$variable] = array("'$variable'",
580  "''", "'$prompt'",
581  strval(CONFIG_TYPE_TEXT), "'SSS'", "1", "'$desc'", "null", "null");
582 
583  $variable = "ScToken";
584  $prompt = _('Access token');
585  $desc = _('Set token to access full service (blank for basic scan)');
586  $valueArray[$variable] = array("'$variable'",
587  "''", "'$prompt'",
588  strval(CONFIG_TYPE_TEXT), "'SSS'", "2", "'$desc'", "null", "null");
589 
590  /* LicenseDB config */
591  $variable = "LicenseDBBaseURL";
592  $prompt = _('LicenseDB API base URI');
593  $desc = _('Base URI for API calls e.g. /api/v1');
594  $valueArray[$variable] = array("'$variable'", "'http://localhost:8080/api/v1'",
595  "'$prompt'", strval(CONFIG_TYPE_TEXT), "'LicenseDB'", "1", "'$desc'", "null",
596  "null");
597 
598  $variable = "LicenseDBHealth";
599  $prompt = _('Health check');
600  $desc = _('Endpoint to check health of LicenseDB service');
601  $valueArray[$variable] = array("'$variable'", "'/health'", "'$prompt'",
602  strval(CONFIG_TYPE_TEXT), "'LicenseDB'", "2", "'$desc'", "null", "null");
603 
604  $variable = "LicenseDBContent";
605  $prompt = _('Export endpoint Licenses');
606  $desc = _('Endpoint to Export licenses in JSON e.g. /licenses/export');
607  $valueArray[$variable] = array("'$variable'", "'/licenses/export'", "'$prompt'",
608  strval(CONFIG_TYPE_TEXT), "'LicenseDB'", "3", "'$desc'", "null", "null");
609 
610  $variable = "LicenseDBContentObligations";
611  $prompt = _('Export endpoint Obligations');
612  $desc = _('Endpoint to Export Obligations in JSON e.g. /obligations/export');
613  $valueArray[$variable] = array("'$variable'", "'/obligations/export'", "'$prompt'",
614  strval(CONFIG_TYPE_TEXT), "'LicenseDB'", "4", "'$desc'", "null", "null");
615 
616  $variable = "LicenseDBToken";
617  $prompt = _('Auth token For LicenseDB');
618  $desc = _("Token from LicenseDB. Do not set if using OIDC for LicenseDB and FOSSology communication.");
619  $valueArray[$variable] = array("'$variable'", "''", "'$prompt'",
620  strval(CONFIG_TYPE_PASSWORD), "'LicenseDB'", "5", "'$desc'", "null", "null");
621 
622  $variable = "ExcludeFolders";
623  $mimeTypeToSkip = _("Exclude Folders from scanning");
624  $mimeTypeDesc = _("Add comma (,) separated folder patterns to exclude from unpacking");
625  $valueArray[$variable] = array("'$variable'", "null", "'$mimeTypeToSkip'",
626  strval(CONFIG_TYPE_TEXT), "'Skip'", "1", "'$mimeTypeDesc'", "null", "null");
627 
628  /* Doing all the rows as a single insert will fail if any row is a dupe.
629  So insert each one individually so that new variables get added.
630  */
631  foreach ($valueArray as $variable => $values) {
632  /*
633  * Check if the variable already exists. Insert it if it does not.
634  * This is better than an insert ignoring duplicates, because that
635  * generates a postresql log message.
636  */
637  $VarRec = GetSingleRec("sysconfig", "WHERE variablename='$variable'");
638  if (empty($VarRec)) {
639  $sql = "INSERT INTO sysconfig (" . implode(",", $columns) . ") VALUES (" .
640  implode(",", $values) . ");";
641  } else { // Values exist, update them
642  $updateString = [];
643  foreach ($columns as $index => $column) {
644  if ($index != 0 && $index != 1) { // Skip variablename and conf_value
645  $updateString[] = $column . "=" . $values[$index];
646  }
647  }
648  $sql = "UPDATE sysconfig SET " . implode(",", $updateString) .
649  " WHERE variablename='$variable';";
650  }
651  $result = pg_query($PG_CONN, $sql);
652  DBCheckResult($result, $sql, __FILE__, __LINE__);
653  pg_free_result($result);
654  unset($VarRec);
655  }
656 }
657 
668 function check_boolean($value)
669 {
670  if (! strcmp($value, 'true') || ! strcmp($value, 'false')) {
671  return 1;
672  } else {
673  return 0;
674  }
675 }
676 
686 function check_fossology_url($url)
687 {
688  $url_array = explode("/", $url, 2);
689  $name = $url_array[0];
690  if (! empty($name)) {
691  $hostname = exec("hostname -f");
692  if (empty($hostname)) {
693  $hostname = "localhost";
694  }
695  if (check_IP($name)) {
696  $hostname1 = gethostbyaddr($name);
697  if (strcmp($hostname, $hostname1) == 0) {
698  return 0; // host is not reachable
699  }
700  }
701  $server_name = $_SERVER['SERVER_NAME'];
702 
703  /* intput $name must match either the hostname or the server name */
704  if (strcmp($name, $hostname) && strcmp($name, $server_name)) {
705  return 0;
706  }
707  } else {
708  return 0;
709  }
710  return 1;
711 }
712 
722 function check_logo_url($url)
723 {
724  if (empty($url)) {
725  return 1; /* logo url can be null, with the default */
726  }
727  // $res = check_url($url);
728  $res = is_available($url);
729  if (1 == $res) {
730  return 1;
731  } else {
732  return 0;
733  }
734 }
735 
745 function check_logo_image_url($url)
746 {
747  global $SysConf;
748 
749  if (empty($url)) {
750  return 1; /* logo url can be null, with the default */
751  }
752  $logoLink = @$SysConf["LogoLink"];
753  $new_url = $logoLink . $url;
754  if (is_available($url) || is_available($new_url)) {
755  return 1;
756  } else {
757  return 0;
758  }
759 
760 }
761 
772 function check_email_address($email_address)
773 {
774  return 1;
775 }
776 
786 function is_available($url, $timeout = 2, $tries = 2)
787 {
788  global $SysConf;
789 
790  $proxyStmts = "";
791  if (array_key_exists('http_proxy', $SysConf['FOSSOLOGY']) &&
792  $SysConf['FOSSOLOGY']['http_proxy']) {
793  $proxyStmts .= "export http_proxy={$SysConf['FOSSOLOGY']['http_proxy']};";
794  }
795  if (array_key_exists('https_proxy', $SysConf['FOSSOLOGY']) &&
796  $SysConf['FOSSOLOGY']['https_proxy']) {
797  $proxyStmts .= "export https_proxy={$SysConf['FOSSOLOGY']['https_proxy']};";
798  }
799  if (array_key_exists('ftp_proxy', $SysConf['FOSSOLOGY']) &&
800  $SysConf['FOSSOLOGY']['ftp_proxy']) {
801  $proxyStmts .= "export ftp_proxy={$SysConf['FOSSOLOGY']['ftp_proxy']};";
802  }
803 
804  $commands = "$proxyStmts wget --spider '$url' --tries=$tries --timeout=$timeout";
805  system($commands, $return_var);
806  if (0 == $return_var) {
807  return 1;
808  } else {
809  return 0;
810  }
811 }
812 
818 function check_url($url)
819 {
820  if (empty($url) ||
821  preg_match("@^((http)|(https)|(ftp))://([[:alnum:]]+)@i", $url) != 1 ||
822  preg_match("@[[:space:]]@", $url) != 0) {
823  return 0;
824  } else {
825  return 1;
826  }
827 }
828 
834 function check_IP($ip)
835 {
836  $e = "([0-9]|1[0-9]{2}|[1-9][0-9]|2[0-4][0-9]|25[0-5])";
837  return preg_match("/^$e\.$e\.$e\.$e$/", $ip);
838 }
839 
844 function set_python_path(): array
845 {
846  global $SysConf;
847  $path = "/home/" . $SysConf['DIRECTORIES']['PROJECTUSER'] . "/pythondeps";
848  putenv("PYTHONPATH=$path");
849  return ["PYTHONPATH" => $path];
850 }
860 {
861  // Get No.of cores
862  $cores = trim(shell_exec("nproc"));
863 
864  // Get CPU load
865  $load = sys_getloadavg()[1];
866 
867  $percentageOfLoad = ($load / $cores);
868 
869  if ($percentageOfLoad < 0.30) {
870  $class = 'btn-success';
871  } else if ($percentageOfLoad < 0.60) {
872  $class = 'btn-warning';
873  } else {
874  $class = 'btn-danger';
875  }
876 
877  return '<button type="button" aria-disabled="true" disabled class="btn '.$class.'">System Load</button>';
878 }
879 
Contains the constants and helpers for authentication of user.
Definition: Auth.php:24
DBconnect($sysconfdir, $options="", $exitOnFail=true)
Connect to database engine. This is a no-op if $PG_CONN already has a value.
Definition: common-db.php:33
DBCheckResult($result, $sql, $filenm, $lineno)
Check the postgres result for unexpected errors. If found, treat them as fatal.
Definition: common-db.php:187
GetSingleRec($Table, $Where="")
Retrieve a single database record.
Definition: common-db.php:91
Populate_sysconfig()
Populate the sysconfig table with core variables.
check_fossology_url($url)
Validation function check_fossology_url().
is_available($url, $timeout=2, $tries=2)
Check if the URL is available.
check_IP($ip)
Check if the ip address is valid.
const CONFIG_TYPE_TEXTAREA
check_logo_image_url($url)
Validation function check_logo_image_url().
const CONFIG_TYPE_TEXT
check_logo_url($url)
Validation function check_logo_url().
get_pg_conn($sysconfdir, &$SysConf, $exitOnDbFail=true)
get_system_load_average()
Get system load average.
ConfigInit($sysconfdir, &$SysConf, $exitOnDbFail=true)
Initialize the fossology system after bootstrap().
check_email_address($email_address)
Validation function check_email_address().
const CONFIG_TYPE_DROP
check_boolean($value)
Validation function check_boolean().
populate_from_sysconfig($conn, &$SysConf)
const CONFIG_TYPE_INT
set_python_path()
check_url($url)
Check if the url is valid.
const CONFIG_TYPE_BOOL
const CONFIG_TYPE_PASSWORD
char * trim(char *ptext)
Trimming whitespace.
Definition: fossconfig.c:690
#define PERM_WRITE
Read-Write permission.
Definition: libfossology.h:33
#define PERM_ADMIN
Administrator.
Definition: libfossology.h:34
foreach($Options as $Option=> $OptVal) if(0==$reference_flag &&0==$nomos_flag) $PG_CONN