'."\n"); // |:debug:| echo ('user: ' . $user . "\n"); echo ('home: ' . $home . "\n"); echo (''."\n"); } $vacation_msg_file = sprintf('%s/%s', $home, $VACATION_MSG_FILE); $vacation_db_file = sprintf('%s/%s', $home, $VACATION_DB_FILE); $forward_file = sprintf('%s/%s', $home, $FORWARD_FILE); $forward_active = test_readable($forward_file, $user); $user_alias = ''; $vacation_args = Array(); if (array_key_exists($user, $USER_ALIASES)) { $user_alias = $USER_ALIASES[$user]; $vacation_args[] = '-a'; $vacation_args[] = $user_alias; } $vacation_args[] = $user; $forward_settings = Array( '\\'.$user, '', sprintf($VACATION_FORWARD_ENTRY, implode(' ', $vacation_args))); if ($forward_active) { $forward_settings = cat_file($forward_file, $user); $lines = explode("\n", $forward_settings); $forward_settings = preg_split('/, */', $lines[0]); if (count($forward_settings) < 3) { $forward_settings[2] = $forward_settings[1]; $forward_settings[1] = ''; } // refresh vacation command # $forward_settings[2] = sprintf($VACATION_FORWARD_ENTRY, implode(' ', $vacation_args)); } $vacation_setup_raw = isset($_REQUEST["raw"]); $vacation_clear = isset($_REQUEST['clear']); if ($vacation_clear || !test_readable($vacation_msg_file, $user)) { // Reset to default $vacation_msg = get_text('vacation'); $vacation_parts = vacation_split($vacation_msg, False); $vacation_subject = $vacation_parts[0]; $vacation_body = $vacation_parts[2]; $vacation_msg = vacation_join($vacation_subject, $vacation_body); $vacation_setup_raw = False; } else { $vacation_msg = cat_file($vacation_msg_file, $user); } $message_parts = message_split($vacation_msg); $message_headers = $message_parts[0]; $message_body = $message_parts[1]; $x_wsv_format = header_field_body($message_headers, 'x-wsv-format'); if ( $x_wsv_format == 'raw' ) { $x_wsv_raw = True; } else { $x_wsv_raw = False; } if ( $x_wsv_raw ) { $vacation_headers = $message_headers; $vacation_body = $message_body; $vacation_subject = header_field_body($vacation_headers, 'subject'); } else { $vacation_parts = vacation_split($vacation_msg, True); $vacation_subject = $vacation_parts[0]; $vacation_headers = $vacation_parts[1]; $vacation_body = $vacation_parts[2]; } $vacation_refresh = isset($_REQUEST['refresh']); $vacation_forward_to = ''; if ( !$vacation_refresh && !$vacation_clear && isset($_REQUEST['forward']) ) { $vacation_forward_to = $_REQUEST['forward']; } else { $vacation_forward_to = $forward_settings[1]; $vacation_forward_to = preg_replace('/^\\\\/', '', $vacation_forward_to); if (empty($vacation_forward_to)) { $vacation_forward_to = vacation_find_forward($vacation_headers); } } // remove domain suffix $vacation_forward_to = preg_replace('/@.*$/', '', $vacation_forward_to); // -------------------------------------------------- // |||:sec:||| Set vacation(1) parameters // -------------------------------------------------- $vacation_setup = isset($_REQUEST['save']); if ( $vacation_setup ) { // |:check:| redundant? $vacation_setup_raw = False; } $vacation_del_log = isset($_REQUEST['delete']); if ( $vacation_del_log ) { if ( !isset($_REQUEST['subject']) ) { $vacation_setup_raw = True; } } if ($vacation_setup || $vacation_setup_raw || $vacation_del_log) { $forward_active = isset($_REQUEST['active']); // validate forward to if ($vacation_forward_to == $user) { $vacation_forward_to = ''; } $forward_settings = Array( '\\'.$user, $vacation_forward_to, sprintf($VACATION_FORWARD_ENTRY, implode(' ', $vacation_args))); if ( $vacation_setup_raw ) { $vacation_msg = isset($_REQUEST['message']) ? trim($_REQUEST['message']) : ''; $message_parts = message_split($vacation_msg); $vacation_headers = header_clean($message_parts[0]); $vacation_body = $message_parts[1]; $vacation_subject = header_field_body($vacation_headers, 'subject'); header_set($vacation_headers, 'X-WSV-Format: raw'); $x_wsv_raw = True; } else { $vacation_subject = isset($_REQUEST['subject']) ? trim($_REQUEST['subject']) : ''; $vacation_body = isset($_REQUEST['body']) ? trim($_REQUEST['body']) : ''; $vacation_headers = Array(); $x_wsv_raw = False; } while (True) { if ($vacation_del_log) { system(sprintf( '%s -u %s %s %s %s', $SUDO_CMD, $user, $SUDO_OPT_H, $VACATION_CMD, $VACATION_INIT_OPTS)); $vacation_excl_pipe = popen(sprintf( '%s -u %s %s %s %s', $SUDO_CMD, $user, $SUDO_OPT_H, $VACATION_CMD, $VACATION_EXLCUDE_OPTS), 'w'); fwrite($vacation_excl_pipe, sprintf("%s%s\n", $user, $DOMAIN_SUFFIX)); if (!empty($user_alias)) { fwrite($vacation_excl_pipe, sprintf("%s%s\n", $user_alias, $DOMAIN_SUFFIX)); } pclose($vacation_excl_pipe); break; } if (empty ($vacation_subject)) { error_msg(get_text('error_no_subject')); break; } if (!$is_admin && !empty($vacation_forward_to) && !in_array($vacation_forward_to, $user_names)) { error_msg(sprintf('%s (%s)!', get_text('error_unknown_forward'), $vacation_forward_to)); break; } // Actually set it // Prepare vacation(1) message if (!empty($vacation_forward_to)) { header_set($vacation_headers, sprintf('X-WSV-Forward-To: %s', $vacation_forward_to)); } if ( $vacation_setup_raw ) { $vacation_msg = message_join($vacation_headers, $vacation_body); // echo "
"; // |:debug:| // var_dump($vacation_headers); // var_dump($vacation_body); // echo $vacation_msg; // echo ""; } else { $vacation_msg = vacation_join($vacation_subject, $vacation_body, $vacation_headers); } $vacation_msg_pipe = popen(sprintf( '%s -u %s %s %s %s', $SUDO_CMD, $user, $SUDO_OPT_H, $WRITE_TO_CMD, $vacation_msg_file), 'w'); fwrite($vacation_msg_pipe, $vacation_msg); pclose($vacation_msg_pipe); // Initialize vacation(1) if necessary. if (!test_readable($vacation_db_file, $user)) { system(sprintf( '%s -u %s %s %s %s', $SUDO_CMD, $user, $SUDO_OPT_H, $VACATION_CMD, $VACATION_INIT_OPTS)); $vacation_excl_pipe = popen(sprintf( '%s -u %s %s %s %s', $SUDO_CMD, $user, $SUDO_OPT_H, $VACATION_CMD, $VACATION_EXLCUDE_OPTS), 'w'); fwrite($vacation_excl_pipe, sprintf("%s%s\n", $user, $DOMAIN_SUFFIX)); if (!empty($user_alias)) { fwrite($vacation_excl_pipe, sprintf("%s%s\n", $user_alias, $DOMAIN_SUFFIX)); } pclose($vacation_excl_pipe); } // Write or remove .forward file if ($forward_active) { $expanded_forward_settings = $forward_settings; if (!empty($expanded_forward_settings[1])) { $expanded_forward_settings[1] .= $DOMAIN_SUFFIX; } $use_fs = Array(); foreach ($expanded_forward_settings as $fs) { if (empty($fs)) { continue; } $use_fs[] = $fs; } $forward_file_pipe = popen(sprintf( '%s -u %s %s %s %s', $SUDO_CMD, $user, $SUDO_OPT_H, $WRITE_TO_CMD, $forward_file), 'w'); fwrite($forward_file_pipe, implode(", ", $use_fs)."\n"); pclose($forward_file_pipe); if (!empty($VACATION_FORWARD_EXT_ENTRY)) { foreach ($FORWARD_EXTENSIONS as $fe) { $cmd = sprintf( '%s -u %s %s %s %s%s', $SUDO_CMD, $user, $SUDO_OPT_H, $WRITE_TO_CMD, $forward_file, $fe); $forward_file_pipe = popen($cmd, 'w'); fwrite($forward_file_pipe, $VACATION_FORWARD_EXT_ENTRY."\n"); pclose($forward_file_pipe); } } } else { system(sprintf( '%s -u %s %s %s %s', $SUDO_CMD, $user, $SUDO_OPT_H, $RM_CMD, $forward_file)); if (!empty($VACATION_FORWARD_EXT_ENTRY)) { foreach ($FORWARD_EXTENSIONS as $fe) { system(sprintf( '%s -u %s %s %s %s%s', $SUDO_CMD, $user, $SUDO_OPT_H, $RM_CMD, $forward_file, $fe)); } } } break; } } // echo ('
'."\n"); // |:debug:| // echo ($vacation_forward_to); // var_dump($forward_settings); // echo (''."\n"); // -------------------------------------------------- // |||:sec:||| User Interface // -------------------------------------------------- $form = Array(); //$form[] = '
\n"; // |:debug:| echo "\$_REQUEST: \n"; var_dump($_REQUEST); echo "\n"; echo "\$_SERVER: \n"; echo "
\n"; // |:debug:| var_dump($_SERVER); echo "\n"; } echo $FOOT; // // :ide-menu: Emacs IDE Menu - Buffer @BUFFER@ // . M-x `eIDE-menu' ()(eIDE-menu "z") // :ide: COMPILE: PHP _DEBUG_=2 _DEBUG_TEST_=2 // . (compile (concat "php " (file-name-nondirectory (buffer-file-name)) " _DEBUG_=2 _DEBUG_TEST_=2")) // :ide: QUO: $this-> // . (insert "$this->" ) // :ide: COMPILE: PHP w/o args // . (compile (concat "php " (file-name-nondirectory (buffer-file-name)) "")) // :ide: COMPILE: PHP _DEBUG_=1 _DEBUG_TEST_=1 // . (compile (concat "php " (file-name-nondirectory (buffer-file-name)) " _DEBUG_=1 _DEBUG_TEST_=1")) // // Local Variables: // mode: php // End: ?>