1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
/* ------------------------------------------------------------------------- */
/*
* Copyright 2007-2021 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* ------------------------------------------------------------------------- */
#include "wsgi_restrict.h"
/* ------------------------------------------------------------------------- */
PyTypeObject Restricted_Type;
RestrictedObject *newRestrictedObject(const char *s)
{
RestrictedObject *self;
self = PyObject_New(RestrictedObject, &Restricted_Type);
if (self == NULL)
return NULL;
self->s = s;
return self;
}
static void Restricted_dealloc(RestrictedObject *self)
{
PyObject_Del(self);
}
static PyObject *Restricted_getattr(RestrictedObject *self, char *name)
{
PyErr_Format(PyExc_IOError, "%s access restricted by mod_wsgi", self->s);
return NULL;
}
PyTypeObject Restricted_Type = {
PyVarObject_HEAD_INIT(NULL, 0)
"mod_wsgi.Restricted", /*tp_name*/
sizeof(RestrictedObject), /*tp_basicsize*/
0, /*tp_itemsize*/
/* methods */
(destructor)Restricted_dealloc, /*tp_dealloc*/
0, /*tp_print*/
(getattrfunc)Restricted_getattr, /*tp_getattr*/
0, /*tp_setattr*/
0, /*tp_compare*/
0, /*tp_repr*/
0, /*tp_as_number*/
0, /*tp_as_sequence*/
0, /*tp_as_mapping*/
0, /*tp_hash*/
0, /*tp_call*/
0, /*tp_str*/
0, /*tp_getattro*/
0, /*tp_setattro*/
0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT, /*tp_flags*/
0, /*tp_doc*/
0, /*tp_traverse*/
0, /*tp_clear*/
0, /*tp_richcompare*/
0, /*tp_weaklistoffset*/
0, /*tp_iter*/
0, /*tp_iternext*/
0, /*tp_methods*/
0, /*tp_members*/
0, /*tp_getset*/
0, /*tp_base*/
0, /*tp_dict*/
0, /*tp_descr_get*/
0, /*tp_descr_set*/
0, /*tp_dictoffset*/
0, /*tp_init*/
0, /*tp_alloc*/
0, /*tp_new*/
0, /*tp_free*/
0, /*tp_is_gc*/
};
/* ------------------------------------------------------------------------- */
/* vi: set sw=4 expandtab : */
|