1 package body OWA is
2
3 /********************************************/
4 /* Initialize the CGI environment variables */
5 /********************************************/
6 procedure init_cgi_env (param_val in vc_arr) is
7 num_params number := param_val.count;
8 ix number;
9 nameIx number;
10 var_name vc_arr;
11 begin
12 /* Initialize cgi names */
13 /* Keep this list in the same order as in ndwoa.h file */
14 var_name(1) := 'SERVER_SOFTWARE';
15 var_name(2) := 'SERVER_NAME';
16 var_name(3) := 'GATEWAY_INTERFACE';
17 var_name(4) := 'REMOTE_HOST';
18 var_name(5) := 'REMOTE_ADDR';
19 var_name(6) := 'AUTH_TYPE';
20 var_name(7) := 'REMOTE_USER';
21 var_name(8) := 'REMOTE_IDENT';
22 var_name(9) := 'HTTP_ACCEPT';
23 var_name(10) := 'HTTP_USER_AGENT';
24 var_name(11) := 'SERVER_PROTOCOL';
25 var_name(12) := 'SERVER_PORT';
26 var_name(13) := 'SCRIPT_NAME';
27 var_name(14) := 'PATH_INFO';
28 var_name(15) := 'PATH_TRANSLATED';
29 var_name(16) := 'HTTP_REFERER';
30 var_name(17) := 'HTTP_COOKIE';
31
32 nameIx := 0;
33 ix := 0;
34 for i in 1..num_params
35 loop
36 nameIx := nameIx + 1;
37 if (param_val(i) is NOT NULL)
38 then
39 ix := ix + 1;
40 cgi_var_name(ix) := var_name(nameIx);
41 cgi_var_val(ix) := param_val(i);
42 end if;
43 end loop;
44 num_cgi_vars := ix;
45 end;
46
47 procedure init_cgi_env (num_params in number,
48 param_name in vc_arr,
49 param_val in vc_arr) is
50 j number := 0;
51 cookie varchar2(32000) := '';
52 found boolean := FALSE;
53 begin
54
55 for i in 1..num_params
56 loop
57 if (param_name(i) = 'HTTP_COOKIE')
58 then
59 found := TRUE;
60 cookie := cookie || param_val(i);
61 else
62 j := j + 1;
63 cgi_var_name(j) := param_name(i);
64 cgi_var_val(j) := param_val(i);
65 end if;
66 end loop;
67
68 if (found)
69 then
70 j := j + 1;
71 cgi_var_name(j) := 'HTTP_COOKIE';
72 cgi_var_val(j) := cookie;
73 end if;
74
75 num_cgi_vars := j;
76 end;
77
78 /*****************************************/
79 /* Get the output from the user's PL/SQL */
80 /*****************************************/
81 function get_line (irows out integer) return varchar2 is
82 begin
83 return(htp.get_line(irows));
84 end;
85
86 procedure get_page (thepage out NOCOPY htp.htbuf_arr,
87 irows in out integer ) is
88 begin
89 htp.get_page(thepage, irows);
90 end;
91
92 /* Start of OAS specific helper procedure */
93 procedure get_page_charset_convert (thepage out NOCOPY htp.htbuf_arr,
94 irows in out integer,
95 charset in varchar2 ) is
96 begin
97 htp.get_page_charset_convert(thepage, irows, charset);
98 end;
99 /* End of OAS specific helper procedure */
100
101 /* Add here to match the new HTP.GET_PAGE_RAW interface */
102 procedure get_page_raw (thepage out NOCOPY htp.htraw_arr,
103 irows in out integer ) is
104 begin
105 htp.get_page_raw(thepage, irows);
106 end;
107
108 procedure reset_get_page is
109 begin
110 htp.reset_get_page;
111 end;
112
113 /* Added to set package global safely */
114 procedure set_user_id(usr in varchar2) is
115 begin
116 user_id := usr;
117 end set_user_id;
118
119 /* Added to set package global safely */
120 procedure set_password(pwd in varchar2) is
121 begin
122 password := pwd;
123 end set_password;
124
125 /* Added to set package global safely */
126 procedure set_transfer_mode (tmode in varchar2) is
127 begin
128 HTP.set_transfer_mode(tmode);
129 end set_transfer_mode;
130
131 /*******************************************************************/
132 /* Initialize function - */
133 /* This function is called when a DCD is invoked for the first */
134 /* time when PL/SQL Agent starts up. */
135 /*******************************************************************/
136 function initialize return integer is
137 dummy number;
138 majVersion number;
139 minVersion number;
140 begin
141
142 -- Please ensure you update major, minor versions for every release
143 majVersion := 4;
144 minVersion := 0;
145
146 auth_scheme := OWA_SEC.NO_CHECK;
147 dummy := owa_custom.dbms_server_gmtdiff;
148
149 return (majVersion*256+minVersion);
150 end;
151 end;