diff options
Diffstat (limited to '')
-rw-r--r-- | src/grammar.y | 316 |
1 files changed, 0 insertions, 316 deletions
diff --git a/src/grammar.y b/src/grammar.y deleted file mode 100644 index 72d51b8..0000000 --- a/src/grammar.y +++ /dev/null @@ -1,316 +0,0 @@ -/* $Id: grammar.y,v 1.25 2004-04-27 18:53:14 rjkaes Exp $ - * - * This is the grammar for tinyproxy's configuration file. It needs to be - * in sync with scanner.l. If you know more about yacc and lex than I do - * please update these files. - * - * Copyright (C) 2000 Robert James Kaes (rjkaes@flarenet.com) - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2, or (at your option) any - * later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - */ - -%{ - -#include "tinyproxy.h" - -#include "acl.h" -#include "anonymous.h" -#include "child.h" -#include "filter.h" -#include "htmlerror.h" -#include "log.h" -#include "reqs.h" - -void yyerror(char *s); -int yylex(void); - -%} - -%union { - unsigned int num; - char *cptr; -} - -/* statements */ -%token KW_PORT KW_LISTEN -%token KW_LOGFILE KW_PIDFILE KW_SYSLOG -%token KW_MAXCLIENTS KW_MAXSPARESERVERS KW_MINSPARESERVERS KW_STARTSERVERS -%token KW_MAXREQUESTSPERCHILD -%token KW_TIMEOUT -%token KW_USER KW_GROUP -%token KW_ANONYMOUS KW_XTINYPROXY -%token KW_FILTER KW_FILTERURLS KW_FILTEREXTENDED KW_FILTER_DEFAULT_DENY -%token KW_FILTER_CASESENSITIVE -%token KW_UPSTREAM -%token KW_REVERSEPATH KW_REVERSEONLY KW_REVERSEMAGIC KW_REVERSEBASEURL -%token KW_CONNECTPORT KW_BIND KW_BINDSAME -%token KW_STATHOST -%token KW_ALLOW KW_DENY -%token KW_ERRORPAGE KW_DEFAULT_ERRORPAGE -%token KW_STATPAGE -%token KW_VIA_PROXY_NAME - -/* yes/no switches */ -%token KW_YES KW_NO - -/* settings for loglevel */ -%token KW_LOGLEVEL -%token KW_LOG_CRITICAL KW_LOG_ERROR KW_LOG_WARNING KW_LOG_NOTICE KW_LOG_CONNECT KW_LOG_INFO - -%token <cptr> IDENTIFIER -%token <num> NUMBER -%token <cptr> STRING -%token <cptr> NUMERIC_ADDRESS -%token <cptr> NETMASK_ADDRESS - -%type <num> yesno -%type <cptr> string -%type <cptr> network_address -%type <cptr> unique_address -%type <num> loglevels - -%% - -start - : /* empty */ - | start line - ; - -line - : '\n' - | statement '\n' - ; - -statement - : KW_PORT NUMBER { config.port = $2; } - | KW_TIMEOUT NUMBER { config.idletimeout = $2; } - | KW_SYSLOG yesno - { -#ifdef HAVE_SYSLOG_H - config.syslog = $2; -#else - log_message(LOG_WARNING, "Syslog support was not compiled in."); -#endif - } - | KW_MAXCLIENTS NUMBER { child_configure(CHILD_MAXCLIENTS, $2); } - | KW_MAXSPARESERVERS NUMBER { child_configure(CHILD_MAXSPARESERVERS, $2); } - | KW_MINSPARESERVERS NUMBER { child_configure(CHILD_MINSPARESERVERS, $2); } - | KW_STARTSERVERS NUMBER { child_configure(CHILD_STARTSERVERS, $2); } - | KW_MAXREQUESTSPERCHILD NUMBER { child_configure(CHILD_MAXREQUESTSPERCHILD, $2); } - | KW_LOGFILE string - { - config.logf_name = $2; - if (!config.logf_name) { - fprintf(stderr, "bad log file\n"); - } - } - | KW_PIDFILE string { config.pidpath = $2; } - | KW_USER string { config.username = $2; } - | KW_GROUP string { config.group = $2; } - | KW_ANONYMOUS string { anonymous_insert($2); } - | KW_ERRORPAGE NUMBER string { add_new_errorpage($3, $2); } - | KW_DEFAULT_ERRORPAGE string { config.errorpage_undef = $2; } - | KW_STATPAGE string { config.statpage = $2; } - | KW_FILTER string - { -#ifdef FILTER_ENABLE - config.filter = $2; -#else - log_message(LOG_WARNING, "Filter support was not compiled in."); -#endif - } - | KW_FILTERURLS yesno - { -#ifdef FILTER_ENABLE - config.filter_url = $2; -#else - log_message(LOG_WARNING, "Filter support wss not compiled in."); -#endif - } - | KW_FILTEREXTENDED yesno - { -#ifdef FILTER_ENABLE - config.filter_extended = $2; -#else - log_message(LOG_WARNING, "Filter support was not compiled in."); -#endif - } - | KW_FILTER_CASESENSITIVE yesno - { -#ifdef FILTER_ENABLE - config.filter_casesensitive = $2; -#else - log_message(LOG_WARNING, "Filter support was not compiled in."); -#endif - } - | KW_FILTER_DEFAULT_DENY yesno - { -#ifdef FILTER_ENABLE - if ($2) - filter_set_default_policy(FILTER_DEFAULT_DENY); -#else - log_message(LOG_WARNING, "FIlter support was not compiled in."); -#endif - } - | KW_XTINYPROXY network_address - { -#ifdef XTINYPROXY_ENABLE - config.my_domain = $2; -#else - log_message(LOG_WARNING, "X-Tinyproxy header support was not compiled in."); -#endif - } - | KW_REVERSEPATH string - { -#ifdef REVERSE_SUPPORT - reversepath_add(NULL, $2); -#else - log_message(LOG_WARNING, "Reverse proxy support was not compiled in."); -#endif - } - | KW_REVERSEPATH string string - { -#ifdef REVERSE_SUPPORT - reversepath_add($2, $3); -#else - log_message(LOG_WARNING, "Reverse proxy support was not compiled in."); -#endif - } - | KW_REVERSEONLY yesno - { -#ifdef REVERSE_SUPPORT - config.reverseonly = $2; -#else - log_message(LOG_WARNING, "Reverse proxy support was not compiled in."); -#endif - } - | KW_REVERSEMAGIC yesno - { -#ifdef REVERSE_SUPPORT - config.reversemagic = $2; -#else - log_message(LOG_WARNING, "Reverse proxy support was not compiled in."); -#endif - } - | KW_REVERSEBASEURL string - { -#ifdef REVERSE_SUPPORT - config.reversebaseurl = $2; -#else - log_message(LOG_WARNING, "Reverse proxy support was not compiled in."); -#endif - } - | KW_UPSTREAM unique_address ':' NUMBER - { -#ifdef UPSTREAM_SUPPORT - upstream_add($2, $4, NULL); -#else - log_message(LOG_WARNING, "Upstream proxy support was not compiled in."); -#endif - } - | KW_UPSTREAM unique_address ':' NUMBER STRING - { -#ifdef UPSTREAM_SUPPORT - upstream_add($2, $4, $5); -#else - log_message(LOG_WARNING, "Upstream proxy support was not compiled in."); -#endif - } - | KW_NO KW_UPSTREAM STRING - { -#ifdef UPSTREAM_SUPPORT - upstream_add(NULL, 0, $3); -#else - log_message(LOG_WARNING, "Upstream proxy support was not compiled in."); -#endif - } - | KW_LISTEN NUMERIC_ADDRESS - { - log_message(LOG_INFO, "Establishing listening socket on IP %s", $2); - config.ipAddr = $2; - } - | KW_ALLOW network_address { insert_acl($2, ACL_ALLOW); } - | KW_DENY network_address { insert_acl($2, ACL_DENY); } - | KW_LOGLEVEL loglevels { set_log_level($2); } - | KW_CONNECTPORT NUMBER { add_connect_port_allowed($2); } - | KW_BIND NUMERIC_ADDRESS - { -#ifndef TRANSPARENT_PROXY - log_message(LOG_INFO, "Binding outgoing connections to %s", $2); - config.bind_address = $2; -#else - log_message(LOG_WARNING, "The 'Bind' directive can not be used with transparent proxy support. Ignoring the directive."); -#endif - } - | KW_BINDSAME yesno - { - log_message(LOG_INFO, "Binding outgoing connections to incoming IP"); - config.bindsame = $2; - } - | KW_VIA_PROXY_NAME string - { - log_message(LOG_INFO, "Setting \"Via\" proxy name to: %s", $2); - config.via_proxy_name = $2; - } - | KW_STATHOST string - { - log_message(LOG_INFO, "Stathost is set to \"%s\"", $2); - config.stathost = $2; - } - ; - -loglevels - : KW_LOG_CRITICAL { $$ = LOG_CRIT; } - | KW_LOG_ERROR { $$ = LOG_ERR; } - | KW_LOG_WARNING { $$ = LOG_WARNING; } - | KW_LOG_NOTICE { $$ = LOG_NOTICE; } - | KW_LOG_CONNECT { $$ = LOG_CONN; } - | KW_LOG_INFO { $$ = LOG_INFO; } - ; - -network_address - : unique_address - | NETMASK_ADDRESS - ; - -unique_address - : IDENTIFIER - | NUMERIC_ADDRESS - ; - -yesno - : KW_YES { $$ = 1; } - | KW_NO { $$ = 0; } - | NUMBER { $$ = $1; } - ; - -string - : IDENTIFIER - | STRING - ; - -%% - -extern int yylineno; - -void -yyerror(char *s) -{ - static int headerdisplayed = 0; - - if (!headerdisplayed) { - fprintf(stderr, "Errors in configuration file:\n"); - headerdisplayed = 1; - } - - fprintf(stderr, "\t%s:%d: %s\n", config.config_file, yylineno, s); - exit(EXIT_FAILURE); -} |