DBA Data[Home] [Help]

PACKAGE BODY: SYS.OWA

Source


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;