首页 > 插件开发 > 测试代码——修改回源IP

测试代码——修改回源IP

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

测试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_in ip_addr;
    //bzero(&ip_addr,sizeof(struct sockaddr_in));
    ip_addr.sin_family = AF_INET;
    ip_addr.sin_port = htons(80);
    ip_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    //struct sockaddr const* myaddr = (struct sockaddr*)&ip_addr;
    if(TSHttpTxnServerAddrSet(txnp,(struct sockaddr *)&ip_addr )!= TS_SUCCESS)
    {
    goto done;
    }

done:   
  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_OS_DNS:
    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_OS_DNS_HOOK,cont);
}

分类: 插件开发 标签:
  1. dobk
    2013年12月6日13:11 | #1

    TSError()输出在哪里?

  2. dobk
    2013年12月6日13:12 | #2

    求解,输出的TSError日志。。plugin.config也需要配置吧?

    • 纸鸢
      2013年12月8日13:32 | #3

      在ats的日志目录的error.log文件里面

  3. 笑笑弥勒佛
    2014年4月22日08:11 | #4

    请问,插件编译好了后,主程序如何调用插件的呢?

    • 纸鸢
      2014年4月23日16:00 | #5

      这个在官网看看plugin.config的配置吧。找blog的cacheurl.so插件的也有。

  4. 笑笑弥勒佛
    2014年11月21日10:13 | #6

    问题来了,关键修改源站的IP有什么作用呢?

    • 纸鸢
      2014年11月22日00:51 | #7

      这个只是做函数测试,ats的api函数很多,需要的自然就明白。

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