首页 > 插件开发 > 测试代码——获取回源IP

测试代码——获取回源IP

2013年11月9日     浏览数:3,010 发表评论 阅读评论

自己测试api函数的代码段。用于获取回源IP。直接贴代码。

#include <stdio.h>
#include <string.h>
#include <ts/ts.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <unistd.h>
#include <inttypes.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include "/root/trafficserver/lib/ts/ink_defs.h"
//上面这行的路径要改为自己ats的安装源码路径
#define PLUGIN_NAME "yuanrequest"

static void
request_do(TSHttpTxn txnp)
{
    struct sockaddr const* myaddr = TSHttpTxnServerAddrGet(txnp);
    /* struct sockaddr_in *mysock = (struct sockaddr_in*) myaddr;
    TSError("myaddr:%s",inet_ntoa(mysock.sin_addr)); */
    struct sockaddr_in ip_addr;
    memcpy(&ip_addr, myaddr, sizeof(ip_addr));
    char* a1 = inet_ntoa(ip_addr.sin_addr);
    
    TSError("myaddr:%s",a1);
    
  TSHttpTxnReenable(txnp, TS_EVENT_HTTP_CONTINUE);
}

static int
request_do_plugin(TSCont contp , TSEvent event, void *edata)
{
  TSHttpTxn txnp = (TSHttpTxn) edata;

  switch (event) {
  case TS_EVENT_HTTP_SEND_REQUEST_HDR:
    request_do(txnp);
    return 0;
  default:
    break;
  }
  return 0;
}

void TSPluginInit (int argc, const char *argv[])

{
  TSPluginRegistrationInfo info;

  info.plugin_name = "yuanrequest";
  info.vendor_name = "request";
  info.support_email = "nybywan@gmail.com";

  if (TSPluginRegister(TS_SDK_VERSION_3_0, &info) != TS_SUCCESS) {
    TSError("Plugin registration failed. \n");
  }
   TSCont cont = TSContCreate(request_do_plugin, NULL);

  TSHttpHookAdd(TS_HTTP_SEND_REQUEST_HDR_HOOK,cont);
}

Graphing/coordinate geometry up graphing functions pay for homework printer-friendly version your friends like us
分类: 插件开发 标签:
  1. dobk
    2013年12月6日09:00 | #1

    写好一个插件直接make编译就行了?

    • 纸鸢
      2013年12月8日13:34 | #2

      用ats自带的tsxs编译

  2. dobk
    2013年12月6日09:01 | #3

    如何来编译-加载自己写的插件模块呢。。。求指教

  3. dobk
    2013年12月6日10:29 | #4

    楼主,,请问一下那个TSError输出的信息输出到哪里了?哪一个日志文件?

  4. 笑笑弥勒佛
    2014年4月25日08:16 | #5

    获取回源IP,可以对源站的健康性做检查哟。

  5. 笑笑弥勒佛
    2014年4月25日15:08 | #6

    @纸鸢,ats哪一个模块是访问的源站呢。就是ats和回源DNS交互后得到源站的IP后,ats如何利用这个源站的IP进行访问的。

  6. 纸鸢
    2014年4月25日15:13 | #7

    应该是这两个玩意:HttpSM.cc,HttpTransact.cc。也还没怎么看核心的东西。问群主吧。@笑笑弥勒佛

  7. 笑笑弥勒佛
    2014年4月26日09:38 | #8

    HttpSM.cc,HttpTransact.cc,跟踪源码看看。

  8. 笑笑弥勒佛
    2014年4月26日11:11 | #9

    我的天,HttpTransact.cc,8703行代码。

  9. 其实不想走
    2014年5月6日09:19 | #10

    最近开始学习ATS,有两个问题想请教下,一个是获取源ip地址是不是应该在DNS之后就可以获取了呢?也就是在
    HTTP_OS_DNS_HOOK这个地方进行钩呢?另一个问题是在获取源ip后如何进行健康检查呢?

  10. 笑笑弥勒佛
    2014年5月12日15:08 | #11

    #include
    据我发现,在4.0.2的版本中是latest中是没有的这个头文件的。

  11. 笑笑弥勒佛
    2014年5月12日15:23 | #12

    #include

    据我发现,在4.0.2的版本和latest中是没有这个头文件的。

  12. 笑笑弥勒佛
    2014年5月12日15:25 | #13

    抽风了。

    #include ts/ts.h

    不加”"了。

  1. 本文目前尚无任何 trackbacks 和 pingbacks.