-------------------------- TSRemapDoRemap -------------------------------- */
| 212 | |
| 213 | /* -------------------------- TSRemapDoRemap -------------------------------- */ |
| 214 | TSRemapStatus |
| 215 | TSRemapDoRemap(void *ih, TSHttpTxn rh, TSRemapRequestInfo *rri) |
| 216 | { |
| 217 | const char *temp; |
| 218 | const char *temp2; |
| 219 | int len, len2, port; |
| 220 | TSMLoc cfield; |
| 221 | uint64_t _processing_counter = processing_counter++; |
| 222 | |
| 223 | remap_entry *ri = static_cast<remap_entry *>(ih); |
| 224 | Dbg(dbg_ctl, "enter"); |
| 225 | |
| 226 | if (!ri || !rri) { |
| 227 | return TSREMAP_NO_REMAP; /* TS must remap this request */ |
| 228 | } |
| 229 | |
| 230 | Dbg(dbg_ctl, "From: \"%s\" To: \"%s\"\n", ri->argv[0], ri->argv[1]); |
| 231 | |
| 232 | temp = TSUrlHostGet(rri->requestBufp, rri->requestUrl, &len); |
| 233 | Dbg(dbg_ctl, "Request Host(%d): \"%.*s\"\n", len, len, temp); |
| 234 | |
| 235 | temp = TSUrlHostGet(rri->requestBufp, rri->mapToUrl, &len); |
| 236 | Dbg(dbg_ctl, "Remap To Host: \"%.*s\"\n", len, temp); |
| 237 | |
| 238 | temp = TSUrlHostGet(rri->requestBufp, rri->mapFromUrl, &len); |
| 239 | Dbg(dbg_ctl, "Remap From Host: \"%.*s\"\n", len, temp); |
| 240 | |
| 241 | Dbg(dbg_ctl, "Request Port: %d\n", TSUrlPortGet(rri->requestBufp, rri->requestUrl)); |
| 242 | Dbg(dbg_ctl, "Remap From Port: %d\n", TSUrlPortGet(rri->requestBufp, rri->mapFromUrl)); |
| 243 | Dbg(dbg_ctl, "Remap To Port: %d\n", TSUrlPortGet(rri->requestBufp, rri->mapToUrl)); |
| 244 | |
| 245 | temp = TSUrlPathGet(rri->requestBufp, rri->requestUrl, &len); |
| 246 | Dbg(dbg_ctl, "Request Path: \"%.*s\"\n", len, temp); |
| 247 | |
| 248 | temp = TSUrlPathGet(rri->requestBufp, rri->mapFromUrl, &len); |
| 249 | Dbg(dbg_ctl, "Remap From Path: \"%.*s\"\n", len, temp); |
| 250 | |
| 251 | temp = TSUrlPathGet(rri->requestBufp, rri->mapToUrl, &len); |
| 252 | Dbg(dbg_ctl, "Remap To Path: \"%.*s\"\n", len, temp); |
| 253 | |
| 254 | // InkAPI usage case |
| 255 | const char *value; |
| 256 | |
| 257 | if ((cfield = TSMimeHdrFieldFind(rri->requestBufp, rri->requestHdrp, TS_MIME_FIELD_DATE, -1)) != TS_NULL_MLOC) { |
| 258 | Dbg(dbg_ctl, "We have \"Date\" header in request\n"); |
| 259 | value = TSMimeHdrFieldValueStringGet(rri->requestBufp, rri->requestHdrp, cfield, -1, nullptr); |
| 260 | Dbg(dbg_ctl, "Header value: %s\n", value); |
| 261 | } |
| 262 | if ((cfield = TSMimeHdrFieldFind(rri->requestBufp, rri->requestHdrp, "MyHeader", sizeof("MyHeader") - 1)) != TS_NULL_MLOC) { |
| 263 | Dbg(dbg_ctl, "We have \"MyHeader\" header in request\n"); |
| 264 | value = TSMimeHdrFieldValueStringGet(rri->requestBufp, rri->requestHdrp, cfield, -1, nullptr); |
| 265 | Dbg(dbg_ctl, "Header value: %s\n", value); |
| 266 | } |
| 267 | |
| 268 | // How to store plugin private arguments inside Traffic Server request processing block. |
| 269 | if (TSUserArgIndexReserve(TS_USER_ARGS_TXN, "remap_example", "Example remap plugin", &arg_index) == TS_SUCCESS) { |
| 270 | Dbg(dbg_ctl, "Save processing counter %" PRIu64 " inside request processing block\n", _processing_counter); |
| 271 | TSUserArgSet(rh, arg_index, (void *)_processing_counter); // save counter |
nothing calls this directly
no test coverage detected