mirror of
https://github.com/rkd77/elinks.git
synced 2024-11-04 08:17:17 -05:00
[dgi] Many config options
This commit is contained in:
parent
ced830020b
commit
7af65e06a0
@ -44,7 +44,70 @@ static union option_info dgi_options[] = {
|
|||||||
INIT_OPT_TREE("protocol.file", N_("DGI"),
|
INIT_OPT_TREE("protocol.file", N_("DGI"),
|
||||||
"dgi", OPT_ZERO,
|
"dgi", OPT_ZERO,
|
||||||
N_("Dos gateway interface specific options.")),
|
N_("Dos gateway interface specific options.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $a"),
|
||||||
|
"a", OPT_ZERO, "",
|
||||||
|
N_("Path to cache.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $b"),
|
||||||
|
"b", OPT_ZERO, "",
|
||||||
|
N_("Full name of bookmarks.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $c"),
|
||||||
|
"c", OPT_ZERO, "",
|
||||||
|
N_("Full name of cache index.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $d"),
|
||||||
|
"d", OPT_ZERO, "",
|
||||||
|
N_("Document name.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $e"),
|
||||||
|
"e", OPT_ZERO, "",
|
||||||
|
N_("Path to executable files.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $f"),
|
||||||
|
"f", OPT_ZERO, "",
|
||||||
|
N_("File browser arguments.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $g"),
|
||||||
|
"g", OPT_ZERO, "",
|
||||||
|
N_("IP address of 1st gateway.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $h"),
|
||||||
|
"h", OPT_ZERO, "",
|
||||||
|
N_("Full name of History file.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $i"),
|
||||||
|
"i", OPT_ZERO, "",
|
||||||
|
N_("Your IP address.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $j"),
|
||||||
|
"j", OPT_ZERO, "",
|
||||||
|
N_("DJPEG arguments.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $l"),
|
||||||
|
"l", OPT_ZERO, "",
|
||||||
|
N_("Last visited document.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $m"),
|
||||||
|
"m", OPT_ZERO, "",
|
||||||
|
N_("Path to mail.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $n"),
|
||||||
|
"n", OPT_ZERO, "",
|
||||||
|
N_("IP address of 1st nameserver.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $p"),
|
||||||
|
"p", OPT_ZERO, "",
|
||||||
|
N_("Host.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $q"),
|
||||||
|
"q", OPT_ZERO, "",
|
||||||
|
N_("Filename of query string (file created only "
|
||||||
|
"when using this macro).")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $r"),
|
||||||
|
"r", OPT_ZERO, "",
|
||||||
|
N_("Horizontal resolution of screen.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $s"),
|
||||||
|
"s", OPT_ZERO, "",
|
||||||
|
N_("CGI compatible query string.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $t"),
|
||||||
|
"t", OPT_ZERO, "",
|
||||||
|
N_("Path for temporary files.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $u"),
|
||||||
|
"u", OPT_ZERO, "",
|
||||||
|
N_("URL of document.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $w"),
|
||||||
|
"w", OPT_ZERO, "",
|
||||||
|
N_("Download path.")),
|
||||||
|
INIT_OPT_STRING("protocol.file.dgi", N_("Path $x"),
|
||||||
|
"x", OPT_ZERO, "",
|
||||||
|
N_("Netmask.")),
|
||||||
NULL_OPTION_INFO,
|
NULL_OPTION_INFO,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -54,7 +117,7 @@ struct dgi_entry {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct dgi_entry entries[] = {
|
struct dgi_entry entries[] = {
|
||||||
{ "cdplayer.dgi", "cdplayer.exe $s > $2" },
|
{ "cdplayer.dgi", "$ecdplayer.exe $s > $2" },
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -116,7 +179,7 @@ enum dgi_state {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
prepare_command(struct dgi_entry *entry, const char *query, struct string *cmd, char **inp, char **out)
|
prepare_command(struct dgi_entry *entry, const char *query, struct string *cmd, char **inp, char **out, char **queryfile)
|
||||||
{
|
{
|
||||||
const char *ch;
|
const char *ch;
|
||||||
dgi_state state = NORMAL;
|
dgi_state state = NORMAL;
|
||||||
@ -136,7 +199,72 @@ prepare_command(struct dgi_entry *entry, const char *query, struct string *cmd,
|
|||||||
case DOLAR:
|
case DOLAR:
|
||||||
case PERCENT:
|
case PERCENT:
|
||||||
switch(*ch) {
|
switch(*ch) {
|
||||||
|
case 'a':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.a", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'b':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.b", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'c':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.c", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'd':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.d", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
case 'e':
|
case 'e':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.e", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'f':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.f", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'g':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.g", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'h':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.h", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'i':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.i", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'j':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.j", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'l':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.l", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'm':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.m", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.n", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'p':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.p", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'q':
|
||||||
|
*queryfile = tempname(NULL, "elinks", ".txt");
|
||||||
|
if (*queryfile) {
|
||||||
|
add_to_string(cmd, *queryfile);
|
||||||
|
}
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'r':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.r", NULL));
|
||||||
|
state = NORMAL;
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
if (query) {
|
if (query) {
|
||||||
@ -144,6 +272,22 @@ prepare_command(struct dgi_entry *entry, const char *query, struct string *cmd,
|
|||||||
}
|
}
|
||||||
state = NORMAL;
|
state = NORMAL;
|
||||||
break;
|
break;
|
||||||
|
case 't':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.t", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'u':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.u", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'w':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.w", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
|
case 'x':
|
||||||
|
add_to_string(cmd, get_opt_str("protocol.file.dgi.x", NULL));
|
||||||
|
state = NORMAL;
|
||||||
|
break;
|
||||||
case '1':
|
case '1':
|
||||||
*inp = tempname(NULL, "elinks", ".txt");
|
*inp = tempname(NULL, "elinks", ".txt");
|
||||||
if (*inp) {
|
if (*inp) {
|
||||||
@ -160,6 +304,7 @@ prepare_command(struct dgi_entry *entry, const char *query, struct string *cmd,
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
add_char_to_string(cmd, *ch);
|
add_char_to_string(cmd, *ch);
|
||||||
|
state = NORMAL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -175,6 +320,7 @@ execute_dgi(struct connection *conn)
|
|||||||
struct string command;
|
struct string command;
|
||||||
char *tempfilename = NULL;
|
char *tempfilename = NULL;
|
||||||
char *outputfilename = NULL;
|
char *outputfilename = NULL;
|
||||||
|
char *queryfile = NULL;
|
||||||
struct connection_state state = connection_state(S_OK);
|
struct connection_state state = connection_state(S_OK);
|
||||||
|
|
||||||
/* Not file referrer */
|
/* Not file referrer */
|
||||||
@ -202,7 +348,7 @@ execute_dgi(struct connection *conn)
|
|||||||
|
|
||||||
char *query = get_uri_string(conn->uri, URI_QUERY);
|
char *query = get_uri_string(conn->uri, URI_QUERY);
|
||||||
|
|
||||||
prepare_command(entry, query, &command, &tempfilename, &outputfilename);
|
prepare_command(entry, query, &command, &tempfilename, &outputfilename, &queryfile);
|
||||||
|
|
||||||
mem_free_if(query);
|
mem_free_if(query);
|
||||||
|
|
||||||
@ -210,6 +356,13 @@ execute_dgi(struct connection *conn)
|
|||||||
write_request_to_file(conn, tempfilename);
|
write_request_to_file(conn, tempfilename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (queryfile) {
|
||||||
|
FILE *f = fopen(queryfile, "wb");
|
||||||
|
if (f) {
|
||||||
|
fputs(query, f);
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fprintf(stderr, "%s\n", command.source);
|
fprintf(stderr, "%s\n", command.source);
|
||||||
|
|
||||||
@ -222,6 +375,11 @@ execute_dgi(struct connection *conn)
|
|||||||
unlink(tempfilename);
|
unlink(tempfilename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (queryfile) {
|
||||||
|
unlink(queryfile);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!outputfilename) {
|
if (!outputfilename) {
|
||||||
state = connection_state(S_OK);
|
state = connection_state(S_OK);
|
||||||
abort_connection(conn, state);
|
abort_connection(conn, state);
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "protocol/bittorrent/connection.h"
|
#include "protocol/bittorrent/connection.h"
|
||||||
#include "protocol/data.h"
|
#include "protocol/data.h"
|
||||||
#include "protocol/file/cgi.h"
|
#include "protocol/file/cgi.h"
|
||||||
|
#include "protocol/file/dgi.h"
|
||||||
#include "protocol/file/file.h"
|
#include "protocol/file/file.h"
|
||||||
#include "protocol/file/mailcap.h"
|
#include "protocol/file/mailcap.h"
|
||||||
#include "protocol/finger/finger.h"
|
#include "protocol/finger/finger.h"
|
||||||
@ -296,6 +297,9 @@ static struct module *protocol_submodules[] = {
|
|||||||
#ifdef CONFIG_CGI
|
#ifdef CONFIG_CGI
|
||||||
&cgi_protocol_module,
|
&cgi_protocol_module,
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CONFIG_DGI
|
||||||
|
&dgi_protocol_module,
|
||||||
|
#endif
|
||||||
#ifdef CONFIG_FINGER
|
#ifdef CONFIG_FINGER
|
||||||
&finger_protocol_module,
|
&finger_protocol_module,
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user