| 660 | } |
| 661 | |
| 662 | int mi_http_build_content(str *page, int max_page_len, |
| 663 | int mod, int cmd, mi_response_t *response) |
| 664 | { |
| 665 | int i, j; |
| 666 | char *p, *buf; |
| 667 | |
| 668 | if (page->s == NULL) { |
| 669 | LM_ERR("Please provide a valid page\n"); |
| 670 | return -1; |
| 671 | } |
| 672 | p = buf = page->s; |
| 673 | |
| 674 | MI_HTTP_COPY_3(p,MI_HTTP_Response_Head_1, |
| 675 | MI_HTTP_Response_Head_2, |
| 676 | MI_HTTP_Response_Title_Table_1); |
| 677 | if ((int)((p)-buf)+SERVER_HDR_LEN-8>max_page_len) |
| 678 | goto error; |
| 679 | memcpy(p, ((const char *)SERVER_HDR)+8, SERVER_HDR_LEN-8); |
| 680 | p += SERVER_HDR_LEN-8; |
| 681 | MI_HTTP_COPY_3(p,MI_HTTP_Response_Title_Table_2, |
| 682 | upSinceCTime, |
| 683 | MI_HTTP_Response_Title_Table_3); |
| 684 | |
| 685 | /* Building module menu */ |
| 686 | MI_HTTP_COPY(p,MI_HTTP_Response_Menu_Table_1); |
| 687 | for(i=0;i<http_mi_cmds_size;i++) { |
| 688 | if(i!=mod) { |
| 689 | MI_HTTP_COPY(p,MI_HTTP_Response_Menu_Table_2); |
| 690 | } else { |
| 691 | MI_HTTP_COPY(p,MI_HTTP_Response_Menu_Table_2b); |
| 692 | } |
| 693 | MI_HTTP_COPY(p,MI_HTTP_SLASH); |
| 694 | if (http_root.len) { |
| 695 | MI_HTTP_COPY_2(p,http_root,MI_HTTP_SLASH); |
| 696 | } |
| 697 | MI_HTTP_COPY_3(p,http_mi_cmds[i].cmds[0].module, |
| 698 | MI_HTTP_Response_Menu_Table_3, |
| 699 | http_mi_cmds[i].cmds[0].module); |
| 700 | if(i!=mod) { |
| 701 | MI_HTTP_COPY(p,MI_HTTP_Response_Menu_Table_4); |
| 702 | } else { |
| 703 | MI_HTTP_COPY(p,MI_HTTP_Response_Menu_Table_4b); |
| 704 | } |
| 705 | } |
| 706 | MI_HTTP_COPY(p,MI_HTTP_Response_Menu_Table_5); |
| 707 | |
| 708 | if (response) { /* Build mi reply */ |
| 709 | /* Print comand name */ |
| 710 | MI_HTTP_COPY_4(p,MI_HTTP_Response_Menu_Cmd_Table_1, |
| 711 | MI_HTTP_Response_Menu_Cmd_tr_1, |
| 712 | MI_HTTP_Response_Menu_Cmd_td_1a, |
| 713 | MI_HTTP_SLASH); |
| 714 | if (http_root.len) { |
| 715 | MI_HTTP_COPY_2(p,http_root, MI_HTTP_SLASH); |
| 716 | } |
| 717 | MI_HTTP_COPY_7(p,http_mi_cmds[mod].cmds[cmd].module, |
| 718 | MI_HTTP_SLASH, |
| 719 | http_mi_cmds[mod].cmds[cmd].name, |
no test coverage detected