diff options
Diffstat (limited to 'www/neowebscript/files/patch-access')
-rw-r--r-- | www/neowebscript/files/patch-access | 249 |
1 files changed, 0 insertions, 249 deletions
diff --git a/www/neowebscript/files/patch-access b/www/neowebscript/files/patch-access deleted file mode 100644 index 1b47a21c3b20..000000000000 --- a/www/neowebscript/files/patch-access +++ /dev/null @@ -1,249 +0,0 @@ ---- mod_auth_tcl.c Fri Nov 19 19:35:28 1999 -+++ mod_auth_tcl.c 2010-01-18 23:47:06.000000000 -0500 -@@ -5,5 +5,5 @@ - * You may freely redistribute most NeoSoft extensions to the Apache webserver - * for any purpose except commercial resale and/or use in secure servers, -- * which requires, in either case, written permission from NeoSoft, Inc. Any -+ * which requires, in either case, written permission from NeoSoft, Inc. Any - * redistribution of this software must retain this copyright, unmodified - * from the original. -@@ -12,5 +12,5 @@ - * commerce, require a license for use and may not be redistributed - * without explicit written permission, obtained in advance of any -- * such distribution from NeoSoft, Inc. These files are clearly marked -+ * such distribution from NeoSoft, Inc. These files are clearly marked - * with a different copyright. - * -@@ -21,7 +21,7 @@ - * said copyrights. - * -- * Some of the software in this file may be derived from code -+ * Some of the software in this file may be derived from code - * Copyright (c) 1995 The Apache Group. All rights reserved. -- * -+ * - * Redistribution and use of Apache code in source and binary forms is - * permitted under most conditions. Please consult the source code to -@@ -46,8 +46,9 @@ - /* - * auth_tcl: authentication via Tcl procs in main interpreter -- * -+ * - * Rob McCool - * Randy Kunkee -- * -+ * Mark Abrams (Video Collage, Inc.) -+ * - */ - -@@ -58,10 +59,10 @@ - * in your server, since this module depends on Tcl_Interp *interp to be - * exported by it. -- * -+ * - * Based on authentication module originally written by Rob McCool and - * adapted to Shambhala by rst. - * - * Alterations from there to present form by Randy Kunkee of NeoSoft. -- * -+ * - */ - -@@ -79,4 +80,5 @@ - char *tcl_basic_auth_command; - char *tcl_basic_access_command; -+ char *tcl_access_command; - } tcl_auth_config_rec; - -@@ -87,4 +89,5 @@ - sec->tcl_basic_auth_command = NULL; - sec->tcl_basic_access_command = NULL; -+ sec->tcl_access_command = NULL; - return sec; - } -@@ -105,4 +108,6 @@ - { "TclAuthAccess", tcl_set_string_slot, - (void*)XtOffsetOf(tcl_auth_config_rec,tcl_basic_access_command), OR_AUTHCFG, RAW_ARGS, NULL }, -+{ "TclAccess", tcl_set_string_slot, -+ (void*)XtOffsetOf(tcl_auth_config_rec,tcl_access_command), OR_AUTHCFG, RAW_ARGS, NULL }, - { NULL } - }; -@@ -121,10 +126,12 @@ - */ - --/* Determine user ID, and call Tcl with configured basic auth command. -+/* A u t h e t i c a t i o n -+ * -+ * Determine user ID, and call Tcl with configured basic auth command. - * Tcl command must return either a string containing the password, or` - * an empty string, indicating the user was not found. - */ - --int authenticate_basic_user_via_tcl (request_rec *r) -+static int authenticate_basic_user_via_tcl (request_rec *r) - { - tcl_auth_config_rec *sec = -@@ -134,9 +141,9 @@ - char errstr[MAX_STRING_LEN]; - int res; -- -+ - if ((res = get_basic_auth_pw (r, &sent_pw))) return res; -- -- if(!sec->tcl_basic_auth_command) -- return DECLINED; -+ -+ if(!sec->tcl_basic_auth_command) -+ return DECLINED; - - /* -@@ -148,5 +155,5 @@ - */ - if (Tcl_VarEval(interp, sec->tcl_basic_auth_command, " ", c->user, " ", sent_pw, (char*)0)) { -- sprintf(errstr,"Tcl auth_command error: %s\n%s",interp->result, Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY)); -+ sprintf(errstr,"Tcl auth_command error: %s\n%s",interp->result, Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY)); - log_reason (errstr, r->uri, r); - note_basic_auth_failure (r); -@@ -160,8 +167,14 @@ - return OK; - } -- --/* Checking ID */ -- --int check_user_access_via_tcl (request_rec *r) { -+ -+/* A u t h o r i z a t i o n -+ * -+ * after authenticating who a user is Apache enters the authorizarion phase. -+ * In this phase we determine if this user should be granted access to the -+ * requested location. Naming this routine check_user_authorization_via_tcl -+ * might makes things a bit less confusing -+ */ -+ -+static int check_user_access_via_tcl (request_rec *r) { - tcl_auth_config_rec *sec = - (tcl_auth_config_rec *)ap_get_module_config (r->per_dir_config, &tcl_auth_module); -@@ -175,9 +188,10 @@ - require_line *reqs; - -- /* BUG FIX: tadc, 11-Nov-1995. If there is no "requires" directive, -+ /* BUG FIX: tadc, 11-Nov-1995. If there is no "requires" directive, - * then any user will do. - */ - if (!reqs_arr) -- return (OK); -+ return (OK); -+ - if (! sec->tcl_basic_access_command) - return AUTH_REQUIRED; -@@ -186,10 +200,10 @@ - - for(x=0; x < reqs_arr->nelts; x++) { -- -+ - if (! (reqs[x].method_mask & (1 << m))) continue; -- -+ - method_restricted = 1; - -- t = reqs[x].requirement; -+ t = reqs[x].requirement; - code = Tcl_VarEval(interp, sec->tcl_basic_access_command, " ", user, " ", t, (char*)NULL); - if (code == TCL_ERROR) -@@ -206,5 +220,5 @@ - } - } -- -+ - if (!method_restricted) - return OK; -@@ -214,4 +228,63 @@ - } - -+/* -+ * Defined in both mod_neo_include.c and mod_neoscript.c -+ */ -+void propagate_vars_to_nws(Tcl_Interp *interp, request_rec *r); -+ -+/* A c c e s s -+ * -+ * Access control doesnt care about user identity, so the user doesnt -+ * need to enter anything. This routine gets called for attempts to -+ * access any file within a directory with a defined access procedure -+ * (through .htaccess or elsewhere). To define an access procedure the -+ * .htacess file should contain a line that looks like this: -+ * TclAccess my_access_procedure -+ * my_access_procedure is a tcl procedure which is defined within -+ * neowebscript (for instance, in neowebscript's init.tcl). This -+ * routine will be passed the name of the file whose access is being -+ * attempted. Note that the access procedure can use the webenv array, -+ * so the file whose access is being attempted is also available as -+ * $webenv(DOCUMENT_URI). -+ * The access procedure must return one of the following: -+ * OK return allows access -+ * FORBIDDEN return denies access -+ * DECLINED return passes decision on to any other handlers -+ * which may exist -+ */ -+ -+static int ck_direct_access_via_tcl (request_rec *r) { -+ tcl_auth_config_rec *sec = -+ (tcl_auth_config_rec *)ap_get_module_config(r->per_dir_config, -+ &tcl_auth_module); -+ char errstr[MAX_STRING_LEN]; -+ int code; -+ -+ if (!sec->tcl_access_command) -+ return DECLINED; -+ -+ propagate_vars_to_nws(interp, r) ; -+ -+ code = Tcl_VarEval(interp, sec->tcl_access_command, " ", -+ r->filename, (char*)NULL); -+ if (code == TCL_ERROR) { -+ sprintf(errstr,"Tcl ck_direct_access call error: %s\n%s", -+ interp->result, -+ Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY)); -+ log_reason (errstr, r->uri, r); -+ return DECLINED ; -+ } -+ -+ if (strcmp(interp->result,"OK") == 0) -+ return OK ; -+ if (strcmp(interp->result,"DECLINED") == 0) -+ return DECLINED ; -+ if (strcmp(interp->result,"FORBIDDEN") == 0) -+ return FORBIDDEN ; -+ -+ /* there is an access routine but we dont understand it's return, so */ -+ return DECLINED ; -+} -+ - module tcl_auth_module = { - STANDARD_MODULE_STUFF, -@@ -224,7 +297,7 @@ - NULL, /* handlers */ - NULL, /* filename translation */ -- authenticate_basic_user_via_tcl, /* check_user_id */ -- check_user_access_via_tcl, /* check auth */ -- NULL, /* check access */ -+ authenticate_basic_user_via_tcl, /* authentication - who is it? */ -+ check_user_access_via_tcl, /* authorization - do we let him/her in? */ -+ ck_direct_access_via_tcl, /* access (for instance by host id) */ - NULL, /* type_checker */ - NULL, /* fixups */ ---- ../htdocs/neowebscript/sysopinfo/management.nhtml Mon Nov 22 02:33:45 1999 -+++ ../htdocs/neowebscript/sysopinfo/management.nhtml Wed Jan 9 16:48:55 2002 -@@ -30,2 +30,12 @@ - <p> -+<li>TclAccess <i>script</i> -+<p> -+This directive can be used to allow or forbid access without user's -+input -- based, for example, on credentials like IP address, referrer, -+a cookie, etc. The script is appended the name of the requested -+file before being evaluated and is expected to return OK, FORBIDDEN, -+or DECLINED. The latter means this script "did not care" and the -+other access control mechanisms should be consulted. -+ -+<p> - <li>TclAuthBasic <i>procname arg1 arg2 ... </i> |