Add modified user's display name to aliases.conf.

This commit is contained in:
Retro_Guy 2024-03-02 10:54:28 -07:00
parent bc2b20cf17
commit 5ec9cf5501
3 changed files with 79 additions and 10 deletions

View File

@ -1768,18 +1768,47 @@ function get_poster_name($name)
return ($thisposter);
}
function save_config_value($configfile, $name, $value)
/*
* This function returns false on success
* or return value contains error info
* 'added' etc.
*/
function save_config_value($configfile, $name, $value, $value_unique = false)
{
$list = file($configfile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$saveconfig = fopen($configfile, 'w+');
foreach ($list as $save) {
$name = explode(':', $save);
if (strcmp($name[0], $group) == 0) {
fputs($saveconfig, $group . ":" . $article . "\n");
global $spooldir;
$return_val = false;
$tempfile = tempnam($spooldir, 'rslight-');
if(file_exists($tempfile)) {
unlink($tempfile);
}
$lines = file($configfile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$found = false;
foreach ($lines as $line) {
$current = explode(':', $line);
if ($value_unique && (strcmp($current[1], $value) == 0)) {
// Found value. Write once
if(!$found) {
file_put_contents($tempfile, $name . ":" . $value . "\n", FILE_APPEND);
}
$found = true;
continue;
}
if (strcmp($current[0], $name) == 0) {
// $name matches option. Overwrite
file_put_contents($tempfile, $name . ":" . $value . "\n", FILE_APPEND);
$found = true;
} else {
fputs($saveconfig, $save . "\n");
// $name does not match option. Keep current line
file_put_contents($tempfile, $line . "\n", FILE_APPEND);
}
}
if(!$found) {
// $name not found in options. Add to file.
file_put_contents($tempfile, $name . ":" . $value . "\n", FILE_APPEND);
}
copy($tempfile, $configfile);
unlink($tempfile);
return $return_val;
}
function get_config_file_value($configfile, $request)

View File

@ -25,6 +25,12 @@ return [
// Disable Message-ID search in header
'disable_msgid_search' => false,
// Reserved aliases
'reserved_names' => array("admin", "sysop", "rslight"),
// Users who may have duplicate aliases in aliases.conf
'duplicate_aliases' => array("admins user name here"),
// Just leave this here to avoid comma errors
'comma' => true
];

View File

@ -221,6 +221,27 @@ if (isset($_POST['command']) && $_POST['command'] == 'SaveConfig') {
$value = false;
}
}
if(isset($OVERRIDES['reserved_names'])) {
$reserved_names = $OVERRIDES['reserved_names'];
} else {
$reserved_names = array("admin", "sysop");
}
if(isset($OVERRIDES['duplicate_aliases'])) {
$dupe_ok = $OVERRIDES['duplicate_aliases'];
} else {
$dupe_ok = false;
}
foreach($reserved_names as $name) {
if(strtolower($_POST['display_name']) == strtolower($name)) {
// It's a reserved alias
echo '<b>' . $_POST['display_name'] . "</b> is unavailable.<br />Please try again";
echo '<form target="' . $frame['content'] . '" method="post" action="user.php">';
echo '<input name="command" type="hidden" id="command" value="Configuration" readonly="readonly">';
echo "<input type='hidden' name='username' value='" . $_POST['username'] . "' />";
echo '<button class="np_button_link" type="submit">Return to Configuration</button>';
exit();
}
}
if ($value && (strtolower($_POST['display_name']) != $user)) {
// It's someone else's username or alias
echo '<b>' . $_POST['display_name'] . "</b> is unavailable.<br />Please try again";
@ -253,8 +274,21 @@ if (isset($_POST['command']) && $_POST['command'] == 'SaveConfig') {
exit();
}
}
$user_config['display_name'] = $_POST['display_name'];
$user_config['display_email'] = $_POST['display_email'];
$user_config['display_name'] = trim($_POST['display_name']);
$user_config['display_email'] = trim($_POST['display_email']);
// Apply alias into $config_dir/aliases_conf
if(strtolower($user_config['display_name'] != strtolower($_POST['username']))) {
$value_unique = true;
if($dupe_ok) {
foreach($dupe_ok as $dupe) {
if($dupe == strtolower($_POST['username'])) {
$value_unique = false;
break;
}
}
}
save_config_value($config_dir . '/aliases.conf', strtolower($user_config['display_name']), strtolower($_POST['username']), $value_unique);
}
}
$user_config['signature'] = $_POST['signature'];
$user_config['xface'] = $_POST['xface'];