Rob,

I'm trying to piece together this conversation from many messages in the thread, so please forgive me if I'm missing part of it.  At the start you said you were using this:

ScriptAliasMatch /cgidev2p/(.*) /qsys.lib/cgidev2.lib/$1

Read that carefully.  $1 means "everything that fits in the first set of parenthesis".   In parenthesis, you have .* which means "all characters".  So if you have a URL of http://whatever/cgidev2p/blahblahblah the "blahblahblah" would match the parenthesis, so would be placed in the pathname where the $1 is.

Now apply that to your URL:

http://192.168.2.70/cgi-bin/E31RPP.PGM/081854473505965/

This URL doesn't have cgidev2p in it, so will not match this script alias.  I'm assuming that you actually used cgi-bin instead of cgidev2p, so your script alias is actually this:

ScriptAliasMatch /cgi-bin/(.*) /qsys.lib/cgidev2.lib/$1

Assuming that's what you meant, the resulting path name would be:

/qsys.lib/cgidev2.lib/E31RPP.PGM/081854473505965/

that isn't a valid path name, so this wouldn't work.  You are probably thinking that the script alias won't consider everything after the slash to be part of the program name -- but, in fact, it doesn't know its a program name.  It's just trying to match the regular expression .*, which includes everything, including the slash, etc.  The period means "any character" and the * means "zero or more times" so it will include the slashes, etc as part of the program name.

Instead you'll want something like this (this is off the top of my head, untested):

ScriptAliasMatch /cgi-bin/([a-z0-9]{1,10}.pgm)/.* /qsys.lib/cgidev2.lib/$1

So the idea is it matches letters a-z or digits 0-9, from 1-10 characters long, followed by the .PGM  Everything after the.PGM is not part of the program name, so isn't in the parenthesis.

-SK

On 12/11/2018 12:37 PM, Rob Dixon wrote:
John,

When a user signs on (compulsory), they are allocated an OS/400 job number
and this is the first six digits of the long number at the end of the UI.
There is no theoretical limit to number of concurrent users possible.

It is certainly not my intention to let the client choose the program - I
have tried using wildcards in desperation but, as I said, I really don't
know what I am doing with Apache. The exact same structure has worked fine
under V5R1 with original HTTP server for about 10 years.

All applications use the same initial URL -
http://192.168.2.70/cgi-bin/erros and once they have signed on, and their
initial screen has been displayed, if they then press Enter, the URI will
always be http://192.168.2.70/cgi-bin/E31RPP.PGM/081854473505965/ where
081854 is the job number and the remaining 9 digits together with the job
number make a unique session ID. This applies for all applications. All
data and application definitions are stored in the database, as are user
authorities to use applications and the user is presented with a list of
applications to which he is authorised, retrieved from the database. All
applications, however diverse, use the same CGI program and database
handler. Selecting an application takes the user to an initial menu for the
application which is also stored in the database. As there is effectively
only one CGI program, they cannot select the wrong one. The CGI program
E31RPP generates all HTML and Javascript on the fly. There is no stored
HTML. But this is not really relevant to my problem which I feel sure is
simply a config problem (but I might be wrong!).


On Tue, 11 Dec 2018 at 13:26, Slanina, John <jslanina@xxxxxxxxxx> wrote:

How can you control that is only get called once ? if more than one client
is accessing the API you could have up to by default 40 jobs running. We
have 19 jobs serving the api's right now.
The first program wsrpgm02 is a router program the looks at the uri and
does a DB lookup to find which program to load. It provides a level of
security.
I hope you are not going to let the client side pick the program. One typo
from the client developer and they may run a program you don’t want them
too.

Thanks
John Slanina



On 12/11/18, 4:55 AM, "WEB400 on behalf of Rob Dixon" <
web400-bounces@xxxxxxxxxxxx on behalf of robertsdixon@xxxxxxxxx> wrote:

Many thanks. The wild card is not in my config but has been put there,
at
the beginning and end of each line, by a mail package when responding
to my
post. I don't know why.

I don't need the SETENV code as the library list is set by my initial
program. The other difference is that I have to distinguish between the
initial program which calls my CGI program (indirectly) and that CGI
program, as, rather obviously, the initial program must only be called
once.

Rob

On Mon, 10 Dec 2018 at 16:33, Slanina, John <jslanina@xxxxxxxxxx>
wrote:

> Rob,
>
> Here is our setup is works fine.
> I don’t undertstand why you have the wildcard * after it.
>
>
> 21 SetEnv QIBM_CGI_CHANGE_CURLIB N
> 22 SetEnv QIBM_CGI_LIBRARY_LIST
>
"QTEMP;D1BRCOBJ;D1BRFILESU;D1BRCPGMSU;D1BRFILESN;D1BRCPGMSN;D1GENNEW;D1BRFILES;D1BRCPGMS;D1PENWORK;D1PENFILES;D1NIFILES;D1TRFILES;D1IC08XXCP;D1IC08XXP;D1MW08XXCP;D1MW08XXP;D1NI08XXCP;D1NI08XXP;D1TR08XXCP;D1TR08XXP;D1BRCPGMS1;GPL;QGPL;RDB40;"
> 23
> 24 <Directory />
> 25 Order Deny,Allow
> 26 Deny From all
> 27 </Directory>
> 28
> 29 <Directory /www/brctivod1/htdocs>
> 30 Order Allow,Deny
> 31 Allow From all
> 32 </Directory>
> 33
> 34 ScriptAlias /webapi /qsys.lib/D1BRCPGMS.lib/wsrpgm02.pgm
> 35
> 36 <Directory /qsys.lib/D1BRCPGMS.lib>
> 39 Allow From all
> 40 order allow,deny
> 41 Require valid-user
> 42 DefaultNetCCSID 819
> 43 AuthType Basic
> 44 AuthName ****
> 45 CGIJobCCSID 37
> 46 CGIConvMode EBCDIC
> 47 PasswdFile %%SYSTEM%%
>
>
> 48 </Directory>On 12/10/18, 11:24 AM, "WEB400 on behalf of
Buck
> Calabro" <web400-bounces@xxxxxxxxxxxx on behalf of kc2hiz@xxxxxxxxx>
> wrote:
>
> On 12/8/2018 11:48 AM, Rob Dixon wrote:
> > The header is correct for the initial display. Having got that
> screen, I
> > then started a service program for the job and set a
breakpoint at
> the
> > beginning of the calc specs for my CGI program, which, as I
have
> said, is
> > the same program that displayed my first screen. But when I
pressed
> Enter
> > to get the second screen, there was no breakpoint. There was
nothing
> in
> > CGIDEBUG for the second screen. but the log said
> >
> > [Sat Dec 08 14:18:19 2018] [error] [client 192.168.2.210]
> ZSRV_MSG0018:
> > File /QSYS.LIB/E310PRDOBJ.LIB/E31RPP.PGM/081780817443836/ does
not
> exist,
> > referer: http://192.168.2.70/cgi-bin/erros
> > [Sat Dec 08 14:18:19 2018] [error] [client 192.168.2.210]
> ZSRV_MSG0016: URI
> > in request POST /cgi-bin/E31RPP.PGM/081780817443836/ HTTP/1.1
is not
> valid,
> > referer: http://192.168.2.70/cgi-bin/erros
> >
> > The relevant config lines seem to be
> > * 7* * ScriptAlias /cgi-bin/erros
> > /QSYS.LIB/E310PRDOBJ.LIB/E310H00000.PGM*
> > * 8* * Alias "/cgi-bin/" "/QSYS.LIB/E310PRDOBJ.LIB/"*
> > * 9* * ScriptAliasMatch ^/cgi-bin/(.*) /$1*
> > * 10*
> > * 11* * # ScriptAliasMatch ^/cgi-bin/(.*)
> /qsys.lib/E310PRDOBJ.LIB/$1*
> >
> > Line 7 executes correctly with the display of the first
screen. I
> have
> > tried it with line 11 instead of line 9 and the result is the
same.
>
> What's the URI after the first screen displays? Is it
> http://192.168.2.70/cgi-bin/E31RPP.PGM/081780817443836 If so,
wouldn't
> that assert ScriptAliasMatch and try to fire off program
> 081780817443836, which doesn't exist?
>
> --
> --buck
>
> http://wiki.midrange.com
> Your updates make it better!
>
> --
> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
> mailing list
> To post a message email: WEB400@xxxxxxxxxxxx
> To subscribe, unsubscribe, or change list options,
> visit: https://lists.midrange.com/mailman/listinfo/web400
> or email: WEB400-request@xxxxxxxxxxxx
> Before posting, please take a moment to review the archives
> at https://archive.midrange.com/web400.
>
>
>
> --
> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
mailing
> list
> To post a message email: WEB400@xxxxxxxxxxxx
> To subscribe, unsubscribe, or change list options,
> visit: https://lists.midrange.com/mailman/listinfo/web400
> or email: WEB400-request@xxxxxxxxxxxx
> Before posting, please take a moment to review the archives
> at https://archive.midrange.com/web400.
>
>

--
Rob Dixon

www.erros.co.uk
www.boarstall.com
--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
mailing list
To post a message email: WEB400@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/web400.



--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing
list
To post a message email: WEB400@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/web400.




As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.