Put absolute link for CSS
SVN revision: 1407
This commit is contained in:
+232
-215
@@ -6,6 +6,9 @@
|
||||
Contents: Web server program for Electronic Logbook ELOG
|
||||
|
||||
$Log$
|
||||
Revision 1.687 2005/07/04 20:17:25 ritt
|
||||
Put absolute link for CSS
|
||||
|
||||
Revision 1.686 2005/06/30 05:18:43 ritt
|
||||
Added image insertion by JScript
|
||||
|
||||
@@ -1580,6 +1583,8 @@ int parse_config_file(char *config_file);
|
||||
PMXML_NODE load_password_file(LOGBOOK * lbs, char *error, int error_size);
|
||||
int load_password_files();
|
||||
void compose_base_url(LOGBOOK * lbs, char *base_url, int size);
|
||||
void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command);
|
||||
char *loc(char *orig);
|
||||
|
||||
/*---- Funcions from the MIDAS library -----------------------------*/
|
||||
|
||||
@@ -2748,13 +2753,16 @@ INT sendmail(LOGBOOK * lbs, char *smtp_host, char *from, char *to,
|
||||
bind_addr.sin_port = htons((short) 25);
|
||||
|
||||
phe = gethostbyname(smtp_host);
|
||||
if (phe == NULL)
|
||||
return -1;
|
||||
if (phe == NULL) {
|
||||
strcpy(error, loc("Cannot lookup server name"));
|
||||
return 1;
|
||||
}
|
||||
memcpy((char *) &(bind_addr.sin_addr), phe->h_addr, phe->h_length);
|
||||
|
||||
if (connect(s, (void *) &bind_addr, sizeof(bind_addr)) < 0) {
|
||||
closesocket(s);
|
||||
return -1;
|
||||
strcpy(error, loc("Cannot connect to server"));
|
||||
return 1;
|
||||
}
|
||||
|
||||
strsize = TEXT_SIZE + 1000;
|
||||
@@ -7230,16 +7238,16 @@ void show_html_header(LOGBOOK * lbs, BOOL expires, char *title, BOOL close_head,
|
||||
rsprintf("<html><head><title>%s</title>\n", title);
|
||||
|
||||
/* Cascading Style Sheet */
|
||||
strlcpy(css, "default.css", sizeof(css));
|
||||
compose_base_url(lbs, css, sizeof(css));
|
||||
|
||||
if (lbs != NULL && getcfg(lbs->name, "CSS", str, sizeof(str)))
|
||||
strlcpy(css, str, sizeof(css));
|
||||
|
||||
strlcat(css, str, sizeof(css));
|
||||
else if (lbs == NULL && getcfg("global", "CSS", str, sizeof(str)))
|
||||
strlcpy(css, str, sizeof(css));
|
||||
strlcat(css, str, sizeof(css));
|
||||
else
|
||||
strlcat(css, "default.css", sizeof(css));
|
||||
|
||||
rsprintf("<link rel=\"stylesheet\" type=\"text/css\" href=\"%s\">\n", css);
|
||||
|
||||
rsprintf("<link rel=\"shortcut icon\" href=\"favicon.ico\">\n");
|
||||
rsprintf("<link rel=\"icon\" href=\"favicon.png\" type=\"image/png\">\n");
|
||||
|
||||
@@ -7867,6 +7875,31 @@ void set_login_cookies(LOGBOOK * lbs, char *user, char *enc_pwd)
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
|
||||
void remove_all_login_cookies(LOGBOOK *lbs)
|
||||
{
|
||||
int i;
|
||||
|
||||
rsprintf("HTTP/1.1 302 Found\r\n");
|
||||
rsprintf("Server: ELOG HTTP %s\r\n", VERSION);
|
||||
if (use_keepalive) {
|
||||
rsprintf("Connection: Keep-Alive\r\n");
|
||||
rsprintf("Keep-Alive: timeout=60, max=10\r\n");
|
||||
}
|
||||
|
||||
/* remove global cookies */
|
||||
set_cookie(NULL, "unm", "", TRUE, "");
|
||||
set_cookie(NULL, "upwd", "", TRUE, "");
|
||||
|
||||
for (i = 0; lb_list[i].name[0]; i++) {
|
||||
set_cookie(&lb_list[i], "unm", "", 0, "");
|
||||
set_cookie(&lb_list[i], "upwd", "", 0, "");
|
||||
}
|
||||
|
||||
set_redir(lbs, getparam("redir"));
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
|
||||
int exist_file(char *file_name)
|
||||
{
|
||||
int fh;
|
||||
@@ -11692,11 +11725,15 @@ void show_config_page(LOGBOOK * lbs)
|
||||
|
||||
if (!getcfg_topgroup() || strieq(getcfg_topgroup(), lb_list[i].top_group)) {
|
||||
|
||||
if (email_notify[i])
|
||||
rsprintf("<input type=checkbox checked id=\"lb%d\" name=\"sub_lb%d\" value=\"1\">\n", i, i);
|
||||
else
|
||||
rsprintf("<input type=checkbox id=\"lb%d\" name=\"sub_lb%d\" value=\"1\">\n", i, i);
|
||||
rsprintf("<label for=\"lb%d\">%s</label><br>\n", i, lb_list[i].name);
|
||||
/* check if user has access */
|
||||
if (!isparam("unm") || check_login_user(&lb_list[i], getparam("unm"))) {
|
||||
|
||||
if (email_notify[i])
|
||||
rsprintf("<input type=checkbox checked id=\"lb%d\" name=\"sub_lb%d\" value=\"1\">\n", i, i);
|
||||
else
|
||||
rsprintf("<input type=checkbox id=\"lb%d\" name=\"sub_lb%d\" value=\"1\">\n", i, i);
|
||||
rsprintf("<label for=\"lb%d\">%s</label><br>\n", i, lb_list[i].name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17997,12 +18034,11 @@ void show_elog_thread(LOGBOOK * lbs, int message_id)
|
||||
|
||||
void format_email_text(LOGBOOK * lbs, char *mail_to, int message_id,
|
||||
char attrib[MAX_N_ATTR][NAME_LENGTH], char *mail_param, int old_mail,
|
||||
char att_file[MAX_ATTACHMENTS][256], char *encoding, char *mail_text)
|
||||
char att_file[MAX_ATTACHMENTS][256], char *encoding, char *url, char *mail_text)
|
||||
{
|
||||
int j, k, flags;
|
||||
char str[NAME_LENGTH + 100], str2[256], mail_from[256], subject[256], format[256];
|
||||
char slist[MAX_N_ATTR + 10][NAME_LENGTH], svalue[MAX_N_ATTR + 10][NAME_LENGTH];
|
||||
char url[256], comment[256];
|
||||
char str[NAME_LENGTH + 100], str2[256], mail_from[256], format[256];
|
||||
char comment[256];
|
||||
time_t ltime;
|
||||
struct tm *pts;
|
||||
|
||||
@@ -18089,41 +18125,6 @@ void format_email_text(LOGBOOK * lbs, char *mail_to, int message_id,
|
||||
}
|
||||
}
|
||||
|
||||
/* compose subject from attributes */
|
||||
if (getcfg(lbs->name, "Use Email Subject", subject, sizeof(subject))) {
|
||||
j = build_subst_list(lbs, slist, svalue, attrib, TRUE);
|
||||
sprintf(str, "%d", message_id);
|
||||
add_subst_list(slist, svalue, "message id", str, &j);
|
||||
strsubst(subject, sizeof(subject), slist, svalue, j);
|
||||
} else {
|
||||
if (old_mail)
|
||||
strcpy(subject, "Updated ELOG entry");
|
||||
else
|
||||
strcpy(subject, "New ELOG entry");
|
||||
}
|
||||
|
||||
/* try to get URL from referer */
|
||||
|
||||
if (!getcfg("global", "URL", str, sizeof(str))) {
|
||||
if (referer[0])
|
||||
strcpy(str, referer);
|
||||
else {
|
||||
if (elog_tcp_port == 80)
|
||||
sprintf(str, "http://%s/", host_name);
|
||||
else
|
||||
sprintf(str, "http://%s:%d/", host_name, elog_tcp_port);
|
||||
strcat(str, lbs->name);
|
||||
strcat(str, "/");
|
||||
}
|
||||
} else {
|
||||
if (str[strlen(str) - 1] != '/')
|
||||
strlcat(str, "/", sizeof(str));
|
||||
strlcat(str, lbs->name_enc, sizeof(str));
|
||||
strlcat(str, "/", sizeof(str));
|
||||
}
|
||||
|
||||
sprintf(url, "%s%d", str, message_id);
|
||||
|
||||
if (flags & 4)
|
||||
sprintf(mail_text + strlen(mail_text), "\r\n%s URL : %s\r\n", loc("Logbook"), url);
|
||||
|
||||
@@ -18139,12 +18140,11 @@ void format_email_text(LOGBOOK * lbs, char *mail_to, int message_id,
|
||||
|
||||
void format_email_html(LOGBOOK * lbs, char *mail_to, int message_id,
|
||||
char attrib[MAX_N_ATTR][NAME_LENGTH], char *mail_param, int old_mail,
|
||||
char att_file[MAX_ATTACHMENTS][256], char *encoding, char *mail_text)
|
||||
char att_file[MAX_ATTACHMENTS][256], char *encoding, char *url, char *mail_text)
|
||||
{
|
||||
int j, k, flags;
|
||||
char str[NAME_LENGTH + 100], str2[256], mail_from[256], subject[256], format[256];
|
||||
char slist[MAX_N_ATTR + 10][NAME_LENGTH], svalue[MAX_N_ATTR + 10][NAME_LENGTH];
|
||||
char url[256], comment[256];
|
||||
char str[NAME_LENGTH + 100], str2[256], mail_from[256], format[256];
|
||||
char comment[256];
|
||||
time_t ltime;
|
||||
struct tm *pts;
|
||||
|
||||
@@ -18180,7 +18180,7 @@ void format_email_html(LOGBOOK * lbs, char *mail_to, int message_id,
|
||||
sprintf(mail_text + strlen(mail_text), "<table border=\"3\" cellpadding=\"4\">\r\n");
|
||||
|
||||
if (flags & 32) {
|
||||
sprintf(mail_text + strlen(mail_text), "<tr><td bgcolor=\"#CCCCFF\">%s URL</td>", loc("Logbook"));
|
||||
sprintf(mail_text + strlen(mail_text), "<tr><td bgcolor=\"#CCCCFF\">%s</td>", loc("Logbook"));
|
||||
sprintf(mail_text + strlen(mail_text), "<td bgcolor=\"#DDEEBB\">%s</td></tr>\r\n", lbs->name);
|
||||
}
|
||||
|
||||
@@ -18234,41 +18234,6 @@ void format_email_html(LOGBOOK * lbs, char *mail_to, int message_id,
|
||||
}
|
||||
}
|
||||
|
||||
/* compose subject from attributes */
|
||||
if (getcfg(lbs->name, "Use Email Subject", subject, sizeof(subject))) {
|
||||
j = build_subst_list(lbs, slist, svalue, attrib, TRUE);
|
||||
sprintf(str, "%d", message_id);
|
||||
add_subst_list(slist, svalue, "message id", str, &j);
|
||||
strsubst(subject, sizeof(subject), slist, svalue, j);
|
||||
} else {
|
||||
if (old_mail)
|
||||
strcpy(subject, "Updated ELOG entry");
|
||||
else
|
||||
strcpy(subject, "New ELOG entry");
|
||||
}
|
||||
|
||||
/* try to get URL from referer */
|
||||
|
||||
if (!getcfg("global", "URL", str, sizeof(str))) {
|
||||
if (referer[0])
|
||||
strcpy(str, referer);
|
||||
else {
|
||||
if (elog_tcp_port == 80)
|
||||
sprintf(str, "http://%s/", host_name);
|
||||
else
|
||||
sprintf(str, "http://%s:%d/", host_name, elog_tcp_port);
|
||||
strcat(str, lbs->name);
|
||||
strcat(str, "/");
|
||||
}
|
||||
} else {
|
||||
if (str[strlen(str) - 1] != '/')
|
||||
strlcat(str, "/", sizeof(str));
|
||||
strlcat(str, lbs->name_enc, sizeof(str));
|
||||
strlcat(str, "/", sizeof(str));
|
||||
}
|
||||
|
||||
sprintf(url, "%s%d", str, message_id);
|
||||
|
||||
if (flags & 4) {
|
||||
sprintf(mail_text + strlen(mail_text),
|
||||
"<tr><td bgcolor=\"#CCCCFF\">%s URL</td><td bgcolor=\"#DDEEBB\">", loc("Logbook"));
|
||||
@@ -18298,14 +18263,33 @@ void format_email_html(LOGBOOK * lbs, char *mail_to, int message_id,
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
|
||||
void format_email_html2(LOGBOOK * lbs, char *mail_to, int message_id,
|
||||
char attrib[MAX_N_ATTR][NAME_LENGTH], char *mail_param, int old_mail,
|
||||
char att_file[MAX_ATTACHMENTS][256], char *encoding, char *url, char *mail_text)
|
||||
{
|
||||
char str[256], *p;
|
||||
|
||||
sprintf(str, "%d", message_id);
|
||||
|
||||
strlen_retbuf = 0;
|
||||
show_elog_entry(lbs, str, "email");
|
||||
p = strstr(return_buffer, "\r\n\r\n");
|
||||
if (p)
|
||||
strlcpy(mail_text + strlen(mail_text), p+4, TEXT_SIZE + 1000 - strlen(mail_text));
|
||||
strlen_retbuf = 0;
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
|
||||
int compose_email(LOGBOOK * lbs, char *mail_to, int message_id,
|
||||
char attrib[MAX_N_ATTR][NAME_LENGTH], char *mail_param, int old_mail,
|
||||
char att_file[MAX_ATTACHMENTS][256], char *encoding)
|
||||
{
|
||||
int i, n, flags, status, html = 0;
|
||||
int i, n, flags, status, mail_encoding;
|
||||
char str[NAME_LENGTH + 100], mail_from[256], *mail_text, smtp_host[256],
|
||||
subject[256], error[256], content_type[256];
|
||||
char list[MAX_PARAM][NAME_LENGTH], url[256];
|
||||
char slist[MAX_N_ATTR + 10][NAME_LENGTH], svalue[MAX_N_ATTR + 10][NAME_LENGTH];
|
||||
|
||||
if (!getcfg("global", "SMTP host", smtp_host, sizeof(smtp_host))) {
|
||||
show_error(loc("No SMTP host defined in [global] section of configuration file"));
|
||||
@@ -18317,33 +18301,49 @@ int compose_email(LOGBOOK * lbs, char *mail_to, int message_id,
|
||||
flags = atoi(str);
|
||||
|
||||
/* get initial HTML flag from message encoding */
|
||||
mail_encoding = 1; // 1:text, 2:short HTML, 4:full HTML
|
||||
if (encoding[0] == 'E' || encoding[0] == 'H')
|
||||
html = 1;
|
||||
mail_encoding = 2;
|
||||
|
||||
/* overwrite with config setting */
|
||||
if (getcfg(lbs->name, "Email encoding", str, sizeof(str))) {
|
||||
if (atoi(str) == 1)
|
||||
html = 0;
|
||||
else if (atoi(str) == 2)
|
||||
html = 1;
|
||||
}
|
||||
if (getcfg(lbs->name, "Email encoding", str, sizeof(str)))
|
||||
mail_encoding = atoi(str);
|
||||
|
||||
retrieve_email_from(lbs, mail_from, attrib);
|
||||
|
||||
/* compose subject from attributes */
|
||||
if (getcfg(lbs->name, "Use Email Subject", subject, sizeof(subject))) {
|
||||
i = build_subst_list(lbs, slist, svalue, attrib, TRUE);
|
||||
sprintf(str, "%d", message_id);
|
||||
add_subst_list(slist, svalue, "message id", str, &i);
|
||||
strsubst(subject, sizeof(subject), slist, svalue, i);
|
||||
} else {
|
||||
if (old_mail)
|
||||
strcpy(subject, "Updated ELOG entry");
|
||||
else
|
||||
strcpy(subject, "New ELOG entry");
|
||||
}
|
||||
|
||||
compose_base_url(lbs, str, sizeof(str));
|
||||
sprintf(url, "%s%d", str, message_id);
|
||||
|
||||
mail_text = xmalloc(TEXT_SIZE + 1000);
|
||||
mail_text[0] = 0;
|
||||
|
||||
if (html)
|
||||
format_email_html(lbs, mail_to, message_id, attrib, mail_param, old_mail, att_file, encoding,
|
||||
mail_text);
|
||||
else
|
||||
if (mail_encoding & 1)
|
||||
format_email_text(lbs, mail_to, message_id, attrib, mail_param, old_mail, att_file, encoding,
|
||||
mail_text);
|
||||
url, mail_text);
|
||||
else if (mail_encoding & 2)
|
||||
format_email_html(lbs, mail_to, message_id, attrib, mail_param, old_mail, att_file, encoding,
|
||||
url, mail_text);
|
||||
else if (mail_encoding & 4)
|
||||
format_email_html2(lbs, mail_to, message_id, attrib, mail_param, old_mail, att_file, encoding,
|
||||
url, mail_text);
|
||||
|
||||
if (html)
|
||||
strcpy(content_type, "text/html");
|
||||
else
|
||||
if (mail_encoding & 1)
|
||||
strcpy(content_type, "text/plain");
|
||||
else
|
||||
strcpy(content_type, "text/html");
|
||||
|
||||
status = 0;
|
||||
if (flags & 16) {
|
||||
@@ -19472,7 +19472,7 @@ void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command)
|
||||
gattr[MAX_N_ATTR][NAME_LENGTH], svalue[MAX_N_ATTR + 10][NAME_LENGTH], *p,
|
||||
lbk_list[MAX_N_LIST][NAME_LENGTH], comment[256], class_name[80], class_value[80], fl[8][NAME_LENGTH];
|
||||
FILE *f;
|
||||
BOOL first, show_text, display_inline, subtable;
|
||||
BOOL first, show_text, display_inline, subtable, email;
|
||||
struct tm *pts;
|
||||
struct stat st;
|
||||
time_t ltime;
|
||||
@@ -19480,6 +19480,7 @@ void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command)
|
||||
message_id = atoi(dec_path);
|
||||
message_error = EL_SUCCESS;
|
||||
_current_message_id = message_id;
|
||||
email = strieq(command, "email");
|
||||
|
||||
/* check for guest access */
|
||||
if (!getcfg(lbs->name, "Guest Menu commands", menu_str, sizeof(menu_str))
|
||||
@@ -19656,136 +19657,139 @@ void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command)
|
||||
|
||||
/*---- title ----*/
|
||||
|
||||
show_standard_title(lbs->name, "", 0);
|
||||
if (!email)
|
||||
show_standard_title(lbs->name, "", 0);
|
||||
|
||||
/*---- menu buttons ----*/
|
||||
|
||||
rsprintf("<tr><td class=\"menuframe\">\n");
|
||||
rsprintf("<table width=\"100%%\" border=0 cellpadding=0 cellspacing=0>\n");
|
||||
rsprintf("<tr><td class=\"menu1\">\n");
|
||||
if (!email) {
|
||||
rsprintf("<tr><td class=\"menuframe\">\n");
|
||||
rsprintf("<table width=\"100%%\" border=0 cellpadding=0 cellspacing=0>\n");
|
||||
rsprintf("<tr><td class=\"menu1\">\n");
|
||||
|
||||
n = strbreak(menu_str, menu_item, MAX_N_LIST, ",");
|
||||
n = strbreak(menu_str, menu_item, MAX_N_LIST, ",");
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
/* display menu item */
|
||||
strcpy(cmd, menu_item[i]);
|
||||
for (i = 0; i < n; i++) {
|
||||
/* display menu item */
|
||||
strcpy(cmd, menu_item[i]);
|
||||
|
||||
/* only display allowed commands */
|
||||
if (!is_user_allowed(lbs, cmd))
|
||||
continue;
|
||||
/* only display allowed commands */
|
||||
if (!is_user_allowed(lbs, cmd))
|
||||
continue;
|
||||
|
||||
if (strieq(cmd, "Copy to") || strieq(cmd, "Move to")) {
|
||||
rsprintf(" <input type=submit name=cmd value=\"%s\">\n", loc(cmd));
|
||||
if (strieq(cmd, "Copy to"))
|
||||
rsprintf("<select name=destc>\n");
|
||||
else
|
||||
rsprintf("<select name=destm>\n");
|
||||
if (strieq(cmd, "Copy to") || strieq(cmd, "Move to")) {
|
||||
rsprintf(" <input type=submit name=cmd value=\"%s\">\n", loc(cmd));
|
||||
if (strieq(cmd, "Copy to"))
|
||||
rsprintf("<select name=destc>\n");
|
||||
else
|
||||
rsprintf("<select name=destm>\n");
|
||||
|
||||
if (getcfg(lbs->name, cmd, str, sizeof(str))) {
|
||||
n_log = strbreak(str, lbk_list, MAX_N_LIST, ",");
|
||||
if (getcfg(lbs->name, cmd, str, sizeof(str))) {
|
||||
n_log = strbreak(str, lbk_list, MAX_N_LIST, ",");
|
||||
|
||||
for (j = 0; j < n_log; j++)
|
||||
rsprintf("<option value=\"%s\">%s\n", lbk_list[j], lbk_list[j]);
|
||||
} else {
|
||||
for (j = 0;; j++) {
|
||||
if (!enumgrp(j, str))
|
||||
break;
|
||||
for (j = 0; j < n_log; j++)
|
||||
rsprintf("<option value=\"%s\">%s\n", lbk_list[j], lbk_list[j]);
|
||||
} else {
|
||||
for (j = 0;; j++) {
|
||||
if (!enumgrp(j, str))
|
||||
break;
|
||||
|
||||
if (!is_logbook(str))
|
||||
continue;
|
||||
if (!is_logbook(str))
|
||||
continue;
|
||||
|
||||
if (strieq(str, lbs->name))
|
||||
continue;
|
||||
if (strieq(str, lbs->name))
|
||||
continue;
|
||||
|
||||
rsprintf("<option value=\"%s\">%s\n", str, str);
|
||||
rsprintf("<option value=\"%s\">%s\n", str, str);
|
||||
}
|
||||
}
|
||||
rsprintf("</select>\n");
|
||||
|
||||
if (i < n - 1)
|
||||
rsprintf(" |\n");
|
||||
} else {
|
||||
strcpy(str, loc(menu_item[i]));
|
||||
url_encode(str, sizeof(str));
|
||||
|
||||
if (i < n - 1)
|
||||
rsprintf(" <a href=\"%d?cmd=%s\">%s</a> |\n", message_id, str, loc(menu_item[i]));
|
||||
else
|
||||
rsprintf(" <a href=\"%d?cmd=%s\">%s</a> \n", message_id, str, loc(menu_item[i]));
|
||||
}
|
||||
rsprintf("</select>\n");
|
||||
|
||||
if (i < n - 1)
|
||||
rsprintf(" |\n");
|
||||
} else {
|
||||
strcpy(str, loc(menu_item[i]));
|
||||
url_encode(str, sizeof(str));
|
||||
|
||||
if (i < n - 1)
|
||||
rsprintf(" <a href=\"%d?cmd=%s\">%s</a> |\n", message_id, str, loc(menu_item[i]));
|
||||
else
|
||||
rsprintf(" <a href=\"%d?cmd=%s\">%s</a> \n", message_id, str, loc(menu_item[i]));
|
||||
}
|
||||
}
|
||||
|
||||
rsprintf("</td>\n\n");
|
||||
|
||||
/*---- next/previous buttons ----*/
|
||||
|
||||
if (!getcfg(lbs->name, "Enable browsing", str, sizeof(str)) || atoi(str) == 1) {
|
||||
rsprintf("<td class=\"menu1a\" width=\"10%%\" nowrap align=right>\n");
|
||||
|
||||
/* check if first.png exists, just put link there if not */
|
||||
strlcpy(file_name, resource_dir, sizeof(file_name));
|
||||
if (file_name[0] && file_name[strlen(file_name) - 1] != DIR_SEPARATOR)
|
||||
strlcat(file_name, DIR_SEPARATOR_STR, sizeof(file_name));
|
||||
strlcat(file_name, "themes", sizeof(file_name));
|
||||
strlcat(file_name, DIR_SEPARATOR_STR, sizeof(file_name));
|
||||
if (theme_name[0]) {
|
||||
strlcat(file_name, theme_name, sizeof(file_name));
|
||||
strlcat(file_name, DIR_SEPARATOR_STR, sizeof(file_name));
|
||||
}
|
||||
strlcat(file_name, "first.png", sizeof(file_name));
|
||||
if (stat(file_name, &st) >= 0) {
|
||||
rsprintf("<input type=image name=cmd_first alt=\"%s\" src=\"first.png\">\n", loc("First entry"));
|
||||
rsprintf("<input type=image name=cmd_previous alt=\"%s\" src=\"previous.png\">\n",
|
||||
loc("Previous entry"));
|
||||
rsprintf("<input type=image name=cmd_next alt=\"%s\" src=\"next.png\">\n", loc("Next entry"));
|
||||
rsprintf("<input type=image name=cmd_last alt=\"%s\" src=\"last.png\">\n", loc("Last entry"));
|
||||
} else {
|
||||
rsprintf("<a href=\"%d?cmd=%s\">|<</a> \n", message_id, loc("First"));
|
||||
rsprintf("<a href=\"%d?cmd=%s\"><</a> \n", message_id, loc("Previous"));
|
||||
rsprintf("<a href=\"%d?cmd=%s\">></a> \n", message_id, loc("Next"));
|
||||
rsprintf("<a href=\"%d?cmd=%s\">>|</a> \n", message_id, loc("Last"));
|
||||
}
|
||||
|
||||
rsprintf("</td></tr>\n");
|
||||
}
|
||||
rsprintf("</td>\n\n");
|
||||
|
||||
rsprintf("</table></td></tr>\n\n");
|
||||
/*---- next/previous buttons ----*/
|
||||
|
||||
/*---- menu text ----*/
|
||||
if (!getcfg(lbs->name, "Enable browsing", str, sizeof(str)) || atoi(str) == 1) {
|
||||
rsprintf("<td class=\"menu1a\" width=\"10%%\" nowrap align=right>\n");
|
||||
|
||||
if (getcfg(lbs->name, "menu text", str, sizeof(str))) {
|
||||
FILE *f;
|
||||
char file_name[256], *buf;
|
||||
|
||||
rsprintf("<tr><td class=\"menuframe\"><span class=\"menu1\">\n");
|
||||
|
||||
/* check if file starts with an absolute directory */
|
||||
if (str[0] == DIR_SEPARATOR || str[1] == ':')
|
||||
strcpy(file_name, str);
|
||||
else {
|
||||
/* check if first.png exists, just put link there if not */
|
||||
strlcpy(file_name, resource_dir, sizeof(file_name));
|
||||
strlcat(file_name, str, sizeof(file_name));
|
||||
if (file_name[0] && file_name[strlen(file_name) - 1] != DIR_SEPARATOR)
|
||||
strlcat(file_name, DIR_SEPARATOR_STR, sizeof(file_name));
|
||||
strlcat(file_name, "themes", sizeof(file_name));
|
||||
strlcat(file_name, DIR_SEPARATOR_STR, sizeof(file_name));
|
||||
if (theme_name[0]) {
|
||||
strlcat(file_name, theme_name, sizeof(file_name));
|
||||
strlcat(file_name, DIR_SEPARATOR_STR, sizeof(file_name));
|
||||
}
|
||||
strlcat(file_name, "first.png", sizeof(file_name));
|
||||
if (stat(file_name, &st) >= 0) {
|
||||
rsprintf("<input type=image name=cmd_first alt=\"%s\" src=\"first.png\">\n", loc("First entry"));
|
||||
rsprintf("<input type=image name=cmd_previous alt=\"%s\" src=\"previous.png\">\n",
|
||||
loc("Previous entry"));
|
||||
rsprintf("<input type=image name=cmd_next alt=\"%s\" src=\"next.png\">\n", loc("Next entry"));
|
||||
rsprintf("<input type=image name=cmd_last alt=\"%s\" src=\"last.png\">\n", loc("Last entry"));
|
||||
} else {
|
||||
rsprintf("<a href=\"%d?cmd=%s\">|<</a> \n", message_id, loc("First"));
|
||||
rsprintf("<a href=\"%d?cmd=%s\"><</a> \n", message_id, loc("Previous"));
|
||||
rsprintf("<a href=\"%d?cmd=%s\">></a> \n", message_id, loc("Next"));
|
||||
rsprintf("<a href=\"%d?cmd=%s\">>|</a> \n", message_id, loc("Last"));
|
||||
}
|
||||
|
||||
rsprintf("</td></tr>\n");
|
||||
}
|
||||
|
||||
f = fopen(file_name, "rb");
|
||||
if (f != NULL) {
|
||||
fseek(f, 0, SEEK_END);
|
||||
size = TELL(fileno(f));
|
||||
fseek(f, 0, SEEK_SET);
|
||||
rsprintf("</table></td></tr>\n\n");
|
||||
|
||||
buf = xmalloc(size + 1);
|
||||
fread(buf, 1, size, f);
|
||||
buf[size] = 0;
|
||||
fclose(f);
|
||||
/*---- menu text ----*/
|
||||
|
||||
if (getcfg(lbs->name, "menu text", str, sizeof(str))) {
|
||||
FILE *f;
|
||||
char file_name[256], *buf;
|
||||
|
||||
rsprintf("<tr><td class=\"menuframe\"><span class=\"menu1\">\n");
|
||||
|
||||
/* check if file starts with an absolute directory */
|
||||
if (str[0] == DIR_SEPARATOR || str[1] == ':')
|
||||
strcpy(file_name, str);
|
||||
else {
|
||||
strlcpy(file_name, resource_dir, sizeof(file_name));
|
||||
strlcat(file_name, str, sizeof(file_name));
|
||||
}
|
||||
|
||||
f = fopen(file_name, "rb");
|
||||
if (f != NULL) {
|
||||
fseek(f, 0, SEEK_END);
|
||||
size = TELL(fileno(f));
|
||||
fseek(f, 0, SEEK_SET);
|
||||
|
||||
buf = xmalloc(size + 1);
|
||||
fread(buf, 1, size, f);
|
||||
buf[size] = 0;
|
||||
fclose(f);
|
||||
|
||||
|
||||
rsputs(buf);
|
||||
rsputs(buf);
|
||||
|
||||
} else
|
||||
rsprintf("<center><b>Error: file <i>\"%s\"</i> not found</b></center>", file_name);
|
||||
} else
|
||||
rsprintf("<center><b>Error: file <i>\"%s\"</i> not found</b></center>", file_name);
|
||||
|
||||
rsprintf("</span></td></tr>");
|
||||
}
|
||||
rsprintf("</span></td></tr>");
|
||||
}
|
||||
} // if (!email)
|
||||
|
||||
/*---- message ----*/
|
||||
|
||||
@@ -19871,6 +19875,12 @@ void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command)
|
||||
} else
|
||||
sprintf(display, "%d", message_id);
|
||||
|
||||
if (email) {
|
||||
compose_base_url(lbs, str, sizeof(str));
|
||||
sprintf(str+strlen(str), "%d", message_id);
|
||||
rsprintf("ELOG: <a href=\"%s\"><b>%s</b></a> ", str, lbs->name);
|
||||
}
|
||||
|
||||
rsprintf("%s: <b>%s</b>\n", loc("Message ID"), display);
|
||||
|
||||
/*---- display date ----*/
|
||||
@@ -20333,7 +20343,9 @@ void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command)
|
||||
rsprintf("\r\n</table><!-- show_standard_title -->\r\n");
|
||||
|
||||
show_bottom_text(lbs);
|
||||
rsprintf("</form></body></html>\r\n");
|
||||
if (!email)
|
||||
rsprintf("</form>\n");
|
||||
rsprintf("</body></html>\r\n");
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
@@ -20818,10 +20830,15 @@ BOOL enum_user_line(LOGBOOK * lbs, int n, char *user, int size)
|
||||
|
||||
BOOL check_login_user(LOGBOOK * lbs, char *user)
|
||||
{
|
||||
int i, n;
|
||||
int i, n, status;
|
||||
char str[1000];
|
||||
char list[MAX_N_LIST][NAME_LENGTH];
|
||||
|
||||
/* check if usr is in password file */
|
||||
status = get_user_line(lbs, user, NULL, NULL, NULL, NULL, NULL);
|
||||
if (status == 2)
|
||||
return FALSE;
|
||||
|
||||
/* treat admin user as login user */
|
||||
if (getcfg(lbs->name, "Admin user", str, sizeof(str)) && user[0]) {
|
||||
n = strbreak(str, list, MAX_N_LIST, ",");
|
||||
@@ -21039,7 +21056,7 @@ BOOL check_user_password(LOGBOOK * lbs, char *user, char *password, char *redir)
|
||||
setparam("redir", str);
|
||||
|
||||
/* remove remaining cookies */
|
||||
set_login_cookies(lbs, "", "");
|
||||
remove_all_login_cookies(lbs);
|
||||
} else {
|
||||
getcfg(lbs->name, "Password file", full_name, sizeof(full_name));
|
||||
sprintf(str, loc("Cannot open file <b>%s</b>"), full_name);
|
||||
|
||||
Reference in New Issue
Block a user