Re: Anyone have some example code doing simple HTTP GET request from within a module?

2012-06-23 Thread Joe Lewis
Jim, that might be the way to go. Mod_proxy and the subrequests pass the
data back to the browser via an output filter. I believe you just want to
see the data and not pass it back to the client.  Libcurl should do exactly
what you need.

Joe
--
http://www.silverhawk.net/
On Jun 23, 2012 4:51 AM,  wrote:

>
>  Sorin Manolache  wrote:
> > On 2012-06-23 04:47, oh...@cox.net wrote:
> > > Hi,
> > >
> > > Per earlier threads on this list, I've been working on an Apache
> module.  For the time being, I'm kind of stuck because of the problems that
> I've run into with trying to integrate my module with a 3rd party library,
> so just for my module, which is mainly a proof-of-concept, I'd like to have
> my module do an HTTP GET request.
> > >
> > > So, I was wondering if anyone has some simple example code for doing
> that from within a module, maybe using libcurl, or just natively using
> sockets?
> > >
> > > I'm trying to do this myself, and I've been looking at using libcurl,
> but most of the examples that I've seen use the "easy" setup, so if someone
> has something like that that can be shared, it'd be a big help.
>  Conversely, if I figure it out, I'll post some working snippets here :)...
> > >
> > I'll say the same thing as Ben, try with apache, either mod_proxy or
> > ap_run_sub_request. That if you make one outgoing request per incoming
> > request. If you want several outgoing requests, in parallel preferably,
> > per incoming request, then go with some 3rd-party library.
> >
> > I have some in-house C++ wrappers for libcurl (curl_multi_* + timeouts +
> > client pools), but they are not straightforward to use, a lot of setup
> > is involved, and they are not thoroughly tested.
> >
> > S
>
> Sorin and Ben,
>
> I'll take a look at mod_proxy.c later, but, FYI, I just tried the
> following:
>
> - I added the following to my tweaked mod_headers.c:
>
> #include "curl/curl.h"
> .
> .
> .
> void callCurl() {
>  CURL *curl;
>  CURLcode res;
>
>  curl = curl_easy_init();
>  if(curl) {
>curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com";);
>res = curl_easy_perform(curl);
>
>/* always cleanup */
>curl_easy_cleanup(curl);
>  }
>  return;
> }
>
> - I compiled with apxs, with no additonal -L or -l
>
> - I added a call to callCurl() in my code where I knew it'd get called.
>
> - In my httpd.conf, I added in front of the LoadModule for mod_headers:
>
> LoadFile /usr/lib64/libcurl.so.3.0.0
>
>
> Then I started Apache in single process (-k start -X), and it started, and
> then I tested, and it worked!!
>
> For this prototype, I'll try to see if I can get this to the point that I
> confirm what I'm doing, then I'll go back and look at mod_proxy.c to maybe
> do native HTTP GET.
>
> Thanks,
> Jim
>


Re: Anyone have some example code doing simple HTTP GET request from within a module?

2012-06-23 Thread ohaya

 Sorin Manolache  wrote: 
> On 2012-06-23 04:47, oh...@cox.net wrote:
> > Hi,
> >
> > Per earlier threads on this list, I've been working on an Apache module.  
> > For the time being, I'm kind of stuck because of the problems that I've run 
> > into with trying to integrate my module with a 3rd party library, so just 
> > for my module, which is mainly a proof-of-concept, I'd like to have my 
> > module do an HTTP GET request.
> >
> > So, I was wondering if anyone has some simple example code for doing that 
> > from within a module, maybe using libcurl, or just natively using sockets?
> >
> > I'm trying to do this myself, and I've been looking at using libcurl, but 
> > most of the examples that I've seen use the "easy" setup, so if someone has 
> > something like that that can be shared, it'd be a big help.  Conversely, if 
> > I figure it out, I'll post some working snippets here :)...
> >
> I'll say the same thing as Ben, try with apache, either mod_proxy or 
> ap_run_sub_request. That if you make one outgoing request per incoming 
> request. If you want several outgoing requests, in parallel preferably, 
> per incoming request, then go with some 3rd-party library.
> 
> I have some in-house C++ wrappers for libcurl (curl_multi_* + timeouts + 
> client pools), but they are not straightforward to use, a lot of setup 
> is involved, and they are not thoroughly tested.
> 
> S

Sorin and Ben,

I'll take a look at mod_proxy.c later, but, FYI, I just tried the following:

- I added the following to my tweaked mod_headers.c:

#include "curl/curl.h"
.
.
.
void callCurl() {
  CURL *curl;
  CURLcode res;
 
  curl = curl_easy_init();
  if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com";);
res = curl_easy_perform(curl);
 
/* always cleanup */ 
curl_easy_cleanup(curl);
  }
  return;
}

- I compiled with apxs, with no additonal -L or -l

- I added a call to callCurl() in my code where I knew it'd get called.

- In my httpd.conf, I added in front of the LoadModule for mod_headers:

LoadFile /usr/lib64/libcurl.so.3.0.0


Then I started Apache in single process (-k start -X), and it started, and then 
I tested, and it worked!!  

For this prototype, I'll try to see if I can get this to the point that I 
confirm what I'm doing, then I'll go back and look at mod_proxy.c to maybe do 
native HTTP GET.

Thanks,
Jim


Re: Anyone have some example code doing simple HTTP GET request from within a module?

2012-06-23 Thread Sorin Manolache

On 2012-06-23 04:47, oh...@cox.net wrote:

Hi,

Per earlier threads on this list, I've been working on an Apache module.  For 
the time being, I'm kind of stuck because of the problems that I've run into 
with trying to integrate my module with a 3rd party library, so just for my 
module, which is mainly a proof-of-concept, I'd like to have my module do an 
HTTP GET request.

So, I was wondering if anyone has some simple example code for doing that from 
within a module, maybe using libcurl, or just natively using sockets?

I'm trying to do this myself, and I've been looking at using libcurl, but most of the 
examples that I've seen use the "easy" setup, so if someone has something like 
that that can be shared, it'd be a big help.  Conversely, if I figure it out, I'll post 
some working snippets here :)...

I'll say the same thing as Ben, try with apache, either mod_proxy or 
ap_run_sub_request. That if you make one outgoing request per incoming 
request. If you want several outgoing requests, in parallel preferably, 
per incoming request, then go with some 3rd-party library.


I have some in-house C++ wrappers for libcurl (curl_multi_* + timeouts + 
client pools), but they are not straightforward to use, a lot of setup 
is involved, and they are not thoroughly tested.


S


Re: Anyone have some example code doing simple HTTP GET request from within a module?

2012-06-22 Thread Ben Noordhuis
On Sat, Jun 23, 2012 at 4:47 AM,   wrote:
> Per earlier threads on this list, I've been working on an Apache module.  For 
> the time being, I'm kind of stuck because of the problems that I've run into 
> with trying to integrate my module with a 3rd party library, so just for my 
> module, which is mainly a proof-of-concept, I'd like to have my module do an 
> HTTP GET request.
>
> So, I was wondering if anyone has some simple example code for doing that 
> from within a module, maybe using libcurl, or just natively using sockets?
>
> I'm trying to do this myself, and I've been looking at using libcurl, but 
> most of the examples that I've seen use the "easy" setup, so if someone has 
> something like that that can be shared, it'd be a big help.  Conversely, if I 
> figure it out, I'll post some working snippets here :)...

I suggest you reuse the existing infrastructure where possible. Have a
look at how mod_proxy makes HTTP requests.


Anyone have some example code doing simple HTTP GET request from within a module?

2012-06-22 Thread ohaya
Hi,

Per earlier threads on this list, I've been working on an Apache module.  For 
the time being, I'm kind of stuck because of the problems that I've run into 
with trying to integrate my module with a 3rd party library, so just for my 
module, which is mainly a proof-of-concept, I'd like to have my module do an 
HTTP GET request.

So, I was wondering if anyone has some simple example code for doing that from 
within a module, maybe using libcurl, or just natively using sockets?  

I'm trying to do this myself, and I've been looking at using libcurl, but most 
of the examples that I've seen use the "easy" setup, so if someone has 
something like that that can be shared, it'd be a big help.  Conversely, if I 
figure it out, I'll post some working snippets here :)...

Thanks,
Jim