修复libiptc没有iptc_free(),修复内存泄漏。
This commit is contained in:
parent
fa5ce31540
commit
9e7c957bf6
668
13.txt
Normal file
668
13.txt
Normal file
@ -0,0 +1,668 @@
|
|||||||
|
==7165== Memcheck, a memory error detector
|
||||||
|
==7165== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
|
||||||
|
==7165== Using Valgrind-3.17.0 and LibVEX; rerun with -h for copyright info
|
||||||
|
==7165== Command: ./rhost
|
||||||
|
==7165== Parent PID: 3607
|
||||||
|
==7165==
|
||||||
|
==7165== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==7165== at 0x6205146: ____strtol_l_internal (in /usr/lib64/libc-2.17.so)
|
||||||
|
==7165== by 0x62018FF: atoi (in /usr/lib64/libc-2.17.so)
|
||||||
|
==7165== by 0x405EC9: rule (rhost.c:357)
|
||||||
|
==7165== by 0x404F76: main (rhost.c:740)
|
||||||
|
==7165== Uninitialised value was created by a stack allocation
|
||||||
|
==7165== at 0x405D63: rule (rhost.c:287)
|
||||||
|
==7165==
|
||||||
|
==7165==
|
||||||
|
==7165== HEAP SUMMARY:
|
||||||
|
==7165== in use at exit: 6,957 bytes in 67 blocks
|
||||||
|
==7165== total heap usage: 57,864 allocs, 57,797 frees, 10,950,962 bytes allocated
|
||||||
|
==7165==
|
||||||
|
==7165== 3 bytes in 1 blocks are still reachable in loss record 1 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x6256B89: strdup (in /usr/lib64/libc-2.17.so)
|
||||||
|
==7165== by 0x7A0BE34: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16329: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 3 bytes in 1 blocks are still reachable in loss record 2 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x6256B89: strdup (in /usr/lib64/libc-2.17.so)
|
||||||
|
==7165== by 0x7A0BE34: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1639B: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 4 bytes in 1 blocks are still reachable in loss record 3 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x6256B89: strdup (in /usr/lib64/libc-2.17.so)
|
||||||
|
==7165== by 0x7A0BE34: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1633C: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 4 bytes in 1 blocks are still reachable in loss record 4 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x6256B89: strdup (in /usr/lib64/libc-2.17.so)
|
||||||
|
==7165== by 0x7A0BE34: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A163AE: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 5 bytes in 1 blocks are still reachable in loss record 5 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x6256B89: strdup (in /usr/lib64/libc-2.17.so)
|
||||||
|
==7165== by 0x7A0BE34: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16316: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 5 bytes in 1 blocks are still reachable in loss record 6 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x6256B89: strdup (in /usr/lib64/libc-2.17.so)
|
||||||
|
==7165== by 0x7A0BE34: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16362: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 5 bytes in 1 blocks are still reachable in loss record 7 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x6256B89: strdup (in /usr/lib64/libc-2.17.so)
|
||||||
|
==7165== by 0x7A0BE34: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A163C1: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 6 bytes in 1 blocks are still reachable in loss record 8 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x6256B89: strdup (in /usr/lib64/libc-2.17.so)
|
||||||
|
==7165== by 0x7A0BE34: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16303: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 6 bytes in 1 blocks are still reachable in loss record 9 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x6256B89: strdup (in /usr/lib64/libc-2.17.so)
|
||||||
|
==7165== by 0x7A0BE34: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16375: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 6 bytes in 1 blocks are still reachable in loss record 10 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x7A10747: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16439: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 7 bytes in 1 blocks are still reachable in loss record 11 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x6256B89: strdup (in /usr/lib64/libc-2.17.so)
|
||||||
|
==7165== by 0x7A0BE34: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1634F: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 7 bytes in 1 blocks are still reachable in loss record 12 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x6256B89: strdup (in /usr/lib64/libc-2.17.so)
|
||||||
|
==7165== by 0x7A0BE34: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16388: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 24 bytes in 1 blocks are still reachable in loss record 13 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A0BE20: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16303: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 24 bytes in 1 blocks are still reachable in loss record 14 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A0BE20: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16316: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 24 bytes in 1 blocks are still reachable in loss record 15 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A0BE20: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16329: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 24 bytes in 1 blocks are still reachable in loss record 16 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A0BE20: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1633C: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 24 bytes in 1 blocks are still reachable in loss record 17 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A0BE20: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1634F: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 24 bytes in 1 blocks are still reachable in loss record 18 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A0BE20: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16362: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 24 bytes in 1 blocks are still reachable in loss record 19 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A0BE20: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16375: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 24 bytes in 1 blocks are still reachable in loss record 20 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A0BE20: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16388: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 24 bytes in 1 blocks are still reachable in loss record 21 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A0BE20: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1639B: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 24 bytes in 1 blocks are still reachable in loss record 22 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A0BE20: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A163AE: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 24 bytes in 1 blocks are still reachable in loss record 23 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A0BE20: PR_NewLogModule (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A163C1: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 24 bytes in 1 blocks are still reachable in loss record 24 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A093CE: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1645E: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 24 bytes in 1 blocks are still reachable in loss record 25 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x7A16202: PR_ErrorInstallTable (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16468: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 32 bytes in 1 blocks are still reachable in loss record 26 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x659960F: _dlerror_run (in /usr/lib64/libdl-2.17.so)
|
||||||
|
==7165== by 0x6599040: dlopen@@GLIBC_2.2.5 (in /usr/lib64/libdl-2.17.so)
|
||||||
|
==7165== by 0x7A11463: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A162F2: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 40 bytes in 1 blocks are still reachable in loss record 27 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x7A08F7B: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A23236: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A23340: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16424: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 40 bytes in 1 blocks are still reachable in loss record 28 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x7A08F7B: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A23236: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A2335E: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16424: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 40 bytes in 1 blocks are still reachable in loss record 29 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x7A08F7B: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A23236: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A2337C: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16424: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 40 bytes in 1 blocks are still reachable in loss record 30 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A10731: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16439: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 48 bytes in 1 blocks are still reachable in loss record 31 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x7A08F69: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A23236: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A23340: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16424: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 48 bytes in 1 blocks are still reachable in loss record 32 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x7A08F69: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A23236: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A2335E: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16424: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 48 bytes in 1 blocks are still reachable in loss record 33 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x7A08F69: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A23236: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A2337C: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16424: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 64 bytes in 1 blocks are still reachable in loss record 34 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x7A1F222: PR_NewCondVar (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A25970: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16413: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 64 bytes in 1 blocks are still reachable in loss record 35 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A0FB06: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1641D: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 64 bytes in 1 blocks are still reachable in loss record 36 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x7A1F222: PR_NewCondVar (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A23317: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16424: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 64 bytes in 1 blocks are still reachable in loss record 37 of 60
|
||||||
|
==7165== at 0x4C2B067: malloc (vg_replace_malloc.c:380)
|
||||||
|
==7165== by 0x7A1F222: PR_NewCondVar (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1644D: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 38 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A15B88: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A163EE: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 39 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A0BD49: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A163F4: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 40 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A163FE: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 41 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A25961: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16413: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 42 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A0FC48: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1641D: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 43 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A23308: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16424: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 44 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A23323: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16424: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 45 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A09140: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A2332F: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16424: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 46 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A177A8: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16429: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 47 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A0C1A5: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16434: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 48 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F619: PR_NewMonitor (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1F708: PR_NewNamedMonitor (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A107EB: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16439: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 49 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1643E: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 50 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A13498: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16459: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 51 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A134A4: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A16459: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 52 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A093B8: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1645E: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 53 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A267D7: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 54 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F619: PR_NewMonitor (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A267E3: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 55 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED59: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 56 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED65: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 168 bytes in 1 blocks are still reachable in loss record 57 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F17C: PR_NewLock (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED71: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 264 bytes in 1 blocks are still reachable in loss record 58 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A0FA1D: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1641D: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 1,024 bytes in 1 blocks are still reachable in loss record 59 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A10312: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A163E9: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== 1,344 bytes in 8 blocks are still reachable in loss record 60 of 60
|
||||||
|
==7165== at 0x4C2F7C8: calloc (vg_replace_malloc.c:1117)
|
||||||
|
==7165== by 0x7A1F619: PR_NewMonitor (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A0FA59: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x7A1641D: ??? (in /usr/lib64/libnspr4.so)
|
||||||
|
==7165== by 0x4E7ED54: ??? (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E664F4: curl_global_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4E66657: curl_easy_init (in /usr/lib64/libcurl.so.4.3.0)
|
||||||
|
==7165== by 0x4057B7: GET_PUBLIC_IP (rhost.c:52)
|
||||||
|
==7165== by 0x404D2B: main (rhost.c:612)
|
||||||
|
==7165==
|
||||||
|
==7165== LEAK SUMMARY:
|
||||||
|
==7165== definitely lost: 0 bytes in 0 blocks
|
||||||
|
==7165== indirectly lost: 0 bytes in 0 blocks
|
||||||
|
==7165== possibly lost: 0 bytes in 0 blocks
|
||||||
|
==7165== still reachable: 6,957 bytes in 67 blocks
|
||||||
|
==7165== suppressed: 0 bytes in 0 blocks
|
||||||
|
==7165==
|
||||||
|
==7165== For lists of detected and suppressed errors, rerun with: -s
|
||||||
|
==7165== ERROR SUMMARY: 2352 errors from 1 contexts (suppressed: 0 from 0)
|
24
README.md
24
README.md
@ -3,17 +3,20 @@
|
|||||||
支持钉钉告警和邮件告警
|
支持钉钉告警和邮件告警
|
||||||
支持第三方QQ邮箱告警
|
支持第三方QQ邮箱告警
|
||||||
支持一次运行检测、后台运行检测
|
支持一次运行检测、后台运行检测
|
||||||
|
支持系统病毒扫描
|
||||||
|
|
||||||
```
|
```
|
||||||
Debian系统请安装libcurl、iptables-devel、libclamav-devel
|
Debian系统请安装libcurl、iptables-devel、libclamav-dev
|
||||||
apt install libclamav-dev libip4tc-dev libcurl4-openssl-dev #(或者libcurl4-gnutls-dev)
|
apt install libclamav-dev libip4tc-dev libcurl4-openssl-dev #(或者libcurl4-gnutls-dev)
|
||||||
|
apt install libsystemd-dev libjson-c-dev libpcre2-dev
|
||||||
freshclam # 更新病毒库(必要)
|
freshclam # 更新病毒库(必要)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
Centos 7系统请安装libcurl、iptables-devel、libclamav-devel
|
Centos 7系统请安装libcurl、iptables-devel、libclamav-devel
|
||||||
yum install clamav clamav-update clamav-lib
|
yum install clamav clamav-update clamav-lib clamav-devel json-c-devel pcre2-devel
|
||||||
yum install iptables-devel libcurl-devel
|
yum install iptables-devel libcurl-devel
|
||||||
|
yum install systemd-devel
|
||||||
freshclam # 更新病毒库(必要)
|
freshclam # 更新病毒库(必要)
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -24,18 +27,19 @@ cd /root
|
|||||||
git clone https://git.aixiao.me/aixiao/denyhosts
|
git clone https://git.aixiao.me/aixiao/denyhosts
|
||||||
cd denyhosts
|
cd denyhosts
|
||||||
make clean; make
|
make clean; make
|
||||||
chmod a+x /root/denyhosts/denyhosts.sh
|
|
||||||
|
|
||||||
crontab 定时任务,像这样.
|
启动:
|
||||||
0 22 * * * /root/denyhosts/denyhosts.sh
|
./rhost -d -r / --exclude-dir="^/sys|^/dev|^/proc|^/opt/infected|^/root|^/home" --move=/opt/infected --max-filesize 1024M -l clamscan.log # 用户指定参数,后台运行并扫描病毒
|
||||||
|
|
||||||
|
./rhost -d # 后台运行读取配置文件参数
|
||||||
示列:
|
|
||||||
./rhost -d -r / --exclude-dir="^/sys|^/dev|^/proc|^/opt/infected|^/root|^/home" --move=/opt/infected --max-filesize 1024M -l clamscan.log #后台运行并扫描病毒
|
|
||||||
|
|
||||||
./rhost # 只处理非法攻击
|
./rhost # 只处理非法攻击
|
||||||
|
|
||||||
|
|
||||||
|
关闭
|
||||||
|
killall rhost
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@ -64,7 +68,8 @@ global {
|
|||||||
REFUSE_NUMBER = 3; // 拒绝攻击次数
|
REFUSE_NUMBER = 3; // 拒绝攻击次数
|
||||||
|
|
||||||
CLAMAV = 1; // clamav 是否扫描病毒(测试阶段)(1开启,非1关闭)
|
CLAMAV = 1; // clamav 是否扫描病毒(测试阶段)(1开启,非1关闭)
|
||||||
CLAMAV_TIME = "* 22 21 * * *"; // clamav 扫描时间(Cron格式, 秒 分 时 天 月 周)
|
CLAMAV_ARG = "-r / --exclude-dir="^/sys|^/dev|^/proc|^/opt/infected|^/root|^/home|^/mnt" --move=/opt/infected --max-filesize 1024M -l clamscan.log";
|
||||||
|
CLAMAV_TIME = "* 17 13 * * *"; // clamav 扫描时间(Cron格式, 秒 分 时 天 月 周)
|
||||||
|
|
||||||
|
|
||||||
IPV4_RESTRICTION = 1; // 是否启用IP白名单(1开启,非1关闭)
|
IPV4_RESTRICTION = 1; // 是否启用IP白名单(1开启,非1关闭)
|
||||||
@ -91,4 +96,5 @@ global {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
BIN
ccronexpr.o
Normal file
BIN
ccronexpr.o
Normal file
Binary file not shown.
BIN
clamscan/clamscan.o
Normal file
BIN
clamscan/clamscan.o
Normal file
Binary file not shown.
BIN
clamscan/manager.o
Normal file
BIN
clamscan/manager.o
Normal file
Binary file not shown.
BIN
clamscan/shared/actions.o
Normal file
BIN
clamscan/shared/actions.o
Normal file
Binary file not shown.
BIN
clamscan/shared/cdiff.o
Normal file
BIN
clamscan/shared/cdiff.o
Normal file
Binary file not shown.
BIN
clamscan/shared/cert_util.o
Normal file
BIN
clamscan/shared/cert_util.o
Normal file
Binary file not shown.
BIN
clamscan/shared/clamdcom.o
Normal file
BIN
clamscan/shared/clamdcom.o
Normal file
Binary file not shown.
BIN
clamscan/shared/getopt.o
Normal file
BIN
clamscan/shared/getopt.o
Normal file
Binary file not shown.
BIN
clamscan/shared/hostid.o
Normal file
BIN
clamscan/shared/hostid.o
Normal file
Binary file not shown.
BIN
clamscan/shared/idmef_logging.o
Normal file
BIN
clamscan/shared/idmef_logging.o
Normal file
Binary file not shown.
BIN
clamscan/shared/libshared.a
Normal file
BIN
clamscan/shared/libshared.a
Normal file
Binary file not shown.
BIN
clamscan/shared/misc.o
Normal file
BIN
clamscan/shared/misc.o
Normal file
Binary file not shown.
BIN
clamscan/shared/optparser.o
Normal file
BIN
clamscan/shared/optparser.o
Normal file
Binary file not shown.
BIN
clamscan/shared/output.o
Normal file
BIN
clamscan/shared/output.o
Normal file
Binary file not shown.
BIN
clamscan/shared/tar.o
Normal file
BIN
clamscan/shared/tar.o
Normal file
Binary file not shown.
25
conf.c
25
conf.c
@ -132,7 +132,7 @@ static void parse_global_module(char *content, conf * conf)
|
|||||||
val_begin_len = val_end - val_begin;
|
val_begin_len = val_end - val_begin;
|
||||||
conf->IS_QQMAIL = atoi(val_begin);
|
conf->IS_QQMAIL = atoi(val_begin);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
if (strcasecmp(var, "SEND_QQ") == 0) {
|
if (strcasecmp(var, "SEND_QQ") == 0) {
|
||||||
val_begin_len = val_end - val_begin;
|
val_begin_len = val_end - val_begin;
|
||||||
if (copy_new_mem(val_begin, val_begin_len, &conf->SEND_QQ) != 0)
|
if (copy_new_mem(val_begin, val_begin_len, &conf->SEND_QQ) != 0)
|
||||||
@ -144,7 +144,7 @@ static void parse_global_module(char *content, conf * conf)
|
|||||||
if (copy_new_mem(val_begin, val_begin_len, &conf->QQMAIL_KEY) != 0)
|
if (copy_new_mem(val_begin, val_begin_len, &conf->QQMAIL_KEY) != 0)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
if (strcasecmp(var, "RECV_MAIL") == 0) {
|
if (strcasecmp(var, "RECV_MAIL") == 0) {
|
||||||
val_begin_len = val_end - val_begin;
|
val_begin_len = val_end - val_begin;
|
||||||
if (copy_new_mem(val_begin, val_begin_len, &conf->RECV_MAIL) != 0)
|
if (copy_new_mem(val_begin, val_begin_len, &conf->RECV_MAIL) != 0)
|
||||||
@ -194,6 +194,12 @@ static void parse_global_module(char *content, conf * conf)
|
|||||||
if (copy_new_mem(val_begin, val_begin_len, &conf->CLAMAV_TIME) != 0)
|
if (copy_new_mem(val_begin, val_begin_len, &conf->CLAMAV_TIME) != 0)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (strcasecmp(var, "CLAMAV_ARG") == 0) {
|
||||||
|
val_begin_len = val_end - val_begin;
|
||||||
|
conf->CLAMAV_TIME_LEN = val_begin_len;
|
||||||
|
if (copy_new_mem(val_begin, val_begin_len, &conf->CLAMAV_ARG) != 0)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
content = strchr(lineEnd + 1, '\n');
|
content = strchr(lineEnd + 1, '\n');
|
||||||
}
|
}
|
||||||
@ -207,10 +213,12 @@ static char *read_module(char *buff, const char *module_name)
|
|||||||
|
|
||||||
len = strlen(module_name);
|
len = strlen(module_name);
|
||||||
p = buff;
|
p = buff;
|
||||||
while (1) {
|
while (1)
|
||||||
|
{
|
||||||
while (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\n')
|
while (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\n')
|
||||||
p++;
|
p++;
|
||||||
if (strncasecmp(p, module_name, len) == 0) {
|
if (strncasecmp(p, module_name, len) == 0)
|
||||||
|
{
|
||||||
p += len;
|
p += len;
|
||||||
while (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\n')
|
while (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\n')
|
||||||
p++;
|
p++;
|
||||||
@ -262,10 +270,12 @@ void free_conf(conf * conf)
|
|||||||
free(conf->PHONE);
|
free(conf->PHONE);
|
||||||
if (conf->DING_WEBHOOK)
|
if (conf->DING_WEBHOOK)
|
||||||
free(conf->DING_WEBHOOK);
|
free(conf->DING_WEBHOOK);
|
||||||
|
/*
|
||||||
if (conf->SEND_QQ)
|
if (conf->SEND_QQ)
|
||||||
free(conf->SEND_QQ);
|
free(conf->SEND_QQ);
|
||||||
if (conf->QQMAIL_KEY)
|
if (conf->QQMAIL_KEY)
|
||||||
free(conf->QQMAIL_KEY);
|
free(conf->QQMAIL_KEY);
|
||||||
|
*/
|
||||||
if (conf->RECV_MAIL)
|
if (conf->RECV_MAIL)
|
||||||
free(conf->RECV_MAIL);
|
free(conf->RECV_MAIL);
|
||||||
if (conf->PUBLIC_IP)
|
if (conf->PUBLIC_IP)
|
||||||
@ -280,6 +290,8 @@ void free_conf(conf * conf)
|
|||||||
|
|
||||||
if (conf->CLAMAV_TIME)
|
if (conf->CLAMAV_TIME)
|
||||||
free(conf->CLAMAV_TIME);
|
free(conf->CLAMAV_TIME);
|
||||||
|
if (conf->CLAMAV_ARG)
|
||||||
|
free(conf->CLAMAV_ARG);
|
||||||
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -298,10 +310,12 @@ void ptintf_conf(conf * conf)
|
|||||||
if (conf->DING_WEBHOOK)
|
if (conf->DING_WEBHOOK)
|
||||||
printf("%s\n", conf->DING_WEBHOOK);
|
printf("%s\n", conf->DING_WEBHOOK);
|
||||||
printf("%d\n", conf->IS_QQMAIL);
|
printf("%d\n", conf->IS_QQMAIL);
|
||||||
|
/*
|
||||||
if (conf->SEND_QQ)
|
if (conf->SEND_QQ)
|
||||||
printf("%s\n", conf->SEND_QQ);
|
printf("%s\n", conf->SEND_QQ);
|
||||||
if (conf->QQMAIL_KEY)
|
if (conf->QQMAIL_KEY)
|
||||||
printf("%s\n", conf->QQMAIL_KEY);
|
printf("%s\n", conf->QQMAIL_KEY);
|
||||||
|
*/
|
||||||
if (conf->RECV_MAIL)
|
if (conf->RECV_MAIL)
|
||||||
printf("%s\n", conf->RECV_MAIL);
|
printf("%s\n", conf->RECV_MAIL);
|
||||||
if (conf->PUBLIC_IP)
|
if (conf->PUBLIC_IP)
|
||||||
@ -321,7 +335,8 @@ void split_string(char string[], char delims[], char (*whitelist_ip)[WHITELIST_I
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
char *result = NULL;
|
char *result = NULL;
|
||||||
result = strtok(string, delims);
|
result = strtok(string, delims);
|
||||||
while (result != NULL) {
|
while (result != NULL)
|
||||||
|
{
|
||||||
i++;
|
i++;
|
||||||
strcpy(whitelist_ip[i], result);
|
strcpy(whitelist_ip[i], result);
|
||||||
result = strtok(NULL, delims);
|
result = strtok(NULL, delims);
|
||||||
|
10
conf.h
10
conf.h
@ -9,7 +9,8 @@
|
|||||||
|
|
||||||
#define WHITELIST_IP_NUM 1024
|
#define WHITELIST_IP_NUM 1024
|
||||||
|
|
||||||
typedef struct CONF {
|
typedef struct CONF
|
||||||
|
{
|
||||||
char *DAEMON;
|
char *DAEMON;
|
||||||
int TIME;
|
int TIME;
|
||||||
|
|
||||||
@ -17,6 +18,7 @@ typedef struct CONF {
|
|||||||
int CLAMAV;
|
int CLAMAV;
|
||||||
char *CLAMAV_TIME;
|
char *CLAMAV_TIME;
|
||||||
int CLAMAV_TIME_LEN;
|
int CLAMAV_TIME_LEN;
|
||||||
|
char *CLAMAV_ARG;
|
||||||
|
|
||||||
int IS_BLOCKED;
|
int IS_BLOCKED;
|
||||||
int REFUSE_NUMBER;
|
int REFUSE_NUMBER;
|
||||||
@ -35,13 +37,15 @@ typedef struct CONF {
|
|||||||
|
|
||||||
int IS_MAIL;
|
int IS_MAIL;
|
||||||
|
|
||||||
|
// 钉钉
|
||||||
int IS_DING_WEBHOOK;
|
int IS_DING_WEBHOOK;
|
||||||
char *PHONE;
|
char *PHONE;
|
||||||
char *DING_WEBHOOK;
|
char *DING_WEBHOOK;
|
||||||
|
|
||||||
|
// 第三方邮箱
|
||||||
int IS_QQMAIL;
|
int IS_QQMAIL;
|
||||||
char *SEND_QQ;
|
//char *SEND_QQ;
|
||||||
char *QQMAIL_KEY;
|
//char *QQMAIL_KEY;
|
||||||
char *RECV_MAIL;
|
char *RECV_MAIL;
|
||||||
} conf;
|
} conf;
|
||||||
|
|
||||||
|
@ -45,6 +45,8 @@ int show_all_rule(char *ipv4)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iptc_free(handle);
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,5 +212,7 @@ int iptc_add_rule(const char *table, const char *chain, int protocol, const char
|
|||||||
free(entry_target);
|
free(entry_target);
|
||||||
free(chain_entry);
|
free(chain_entry);
|
||||||
|
|
||||||
|
iptc_free(handle);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
330
rhost.c
330
rhost.c
@ -9,7 +9,8 @@
|
|||||||
// 存储公网IP
|
// 存储公网IP
|
||||||
char *public_ip;
|
char *public_ip;
|
||||||
|
|
||||||
struct MemoryStruct {
|
struct MemoryStruct
|
||||||
|
{
|
||||||
char *memory;
|
char *memory;
|
||||||
size_t size;
|
size_t size;
|
||||||
};
|
};
|
||||||
@ -21,7 +22,8 @@ static size_t WriteMemoryCallback(void *contents, size_t size, size_t nmemb, voi
|
|||||||
|
|
||||||
// 注意这里根据每次被调用获得的数据重新动态分配缓存区的大小
|
// 注意这里根据每次被调用获得的数据重新动态分配缓存区的大小
|
||||||
char *ptr = realloc(mem->memory, mem->size + realsize + 1);
|
char *ptr = realloc(mem->memory, mem->size + realsize + 1);
|
||||||
if (ptr == NULL) {
|
if (ptr == NULL)
|
||||||
|
{
|
||||||
/* 内存不足! */
|
/* 内存不足! */
|
||||||
printf("not enough memory (realloc returned NULL)\n");
|
printf("not enough memory (realloc returned NULL)\n");
|
||||||
return 0;
|
return 0;
|
||||||
@ -62,9 +64,12 @@ static char *GET_PUBLIC_IP(char *URL)
|
|||||||
//对于同一次阻塞的curl_easy_perform而言,在写完获取的数据之前,会多次调用 WriteMemoryCallback
|
//对于同一次阻塞的curl_easy_perform而言,在写完获取的数据之前,会多次调用 WriteMemoryCallback
|
||||||
res = curl_easy_perform(curl_handle);
|
res = curl_easy_perform(curl_handle);
|
||||||
|
|
||||||
if (res != CURLE_OK) {
|
if (res != CURLE_OK)
|
||||||
|
{
|
||||||
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
|
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
//printf("%lu bytes retrieved\n", (unsigned long)chunk.size);
|
//printf("%lu bytes retrieved\n", (unsigned long)chunk.size);
|
||||||
//printf("%s", chunk.memory);
|
//printf("%s", chunk.memory);
|
||||||
;
|
;
|
||||||
@ -79,9 +84,11 @@ static char *GET_PUBLIC_IP(char *URL)
|
|||||||
// 检测系统
|
// 检测系统
|
||||||
int check_system()
|
int check_system()
|
||||||
{
|
{
|
||||||
if (0 == access("/etc/debian_version", F_OK)) {
|
if (0 == access("/etc/debian_version", F_OK))
|
||||||
|
{
|
||||||
return DEBISN_SYSTEM;
|
return DEBISN_SYSTEM;
|
||||||
} else if (0 == access("/etc/centos-release", F_OK)) {
|
} else if (0 == access("/etc/centos-release", F_OK))
|
||||||
|
{
|
||||||
return CENTOS_SYSTEM;
|
return CENTOS_SYSTEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,7 +107,8 @@ int dingding_warning(char *illegal_ip, char *public_ip, conf * conf)
|
|||||||
strcpy(temp, public_ip);
|
strcpy(temp, public_ip);
|
||||||
temp[strlen(public_ip) - 1] = '\0';
|
temp[strlen(public_ip) - 1] = '\0';
|
||||||
|
|
||||||
if ((fp = fopen("libcurl_ding.log", "wt+")) == NULL) {
|
if ((fp = fopen("libcurl.log", "wt+")) == NULL)
|
||||||
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,7 +117,8 @@ int dingding_warning(char *illegal_ip, char *public_ip, conf * conf)
|
|||||||
|
|
||||||
curl_global_init(CURL_GLOBAL_ALL);
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
curl = curl_easy_init();
|
curl = curl_easy_init();
|
||||||
if (curl == NULL) {
|
if (curl == NULL)
|
||||||
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#define JSIN "{ \
|
#define JSIN "{ \
|
||||||
@ -165,11 +174,13 @@ int mail_warning(char *illegal_ip, char *public_ip, conf * conf)
|
|||||||
temp[strlen(public_ip) - 1] = '\0';
|
temp[strlen(public_ip) - 1] = '\0';
|
||||||
sprintf(text, "echo \"主机:%s, 禁止%s访问\" | mail -s \"System ban IP\" %s", temp, illegal_ip, conf->RECV_MAIL);
|
sprintf(text, "echo \"主机:%s, 禁止%s访问\" | mail -s \"System ban IP\" %s", temp, illegal_ip, conf->RECV_MAIL);
|
||||||
|
|
||||||
if (NULL == (fp = popen(text, "r"))) {
|
if (NULL == (fp = popen(text, "r")))
|
||||||
|
{
|
||||||
perror("popen text");
|
perror("popen text");
|
||||||
}
|
}
|
||||||
|
|
||||||
while (fgets(buff, BUFFER, fp) != NULL) {
|
while (fgets(buff, BUFFER, fp) != NULL)
|
||||||
|
{
|
||||||
buff[strlen(buff) - 1] = '\0';
|
buff[strlen(buff) - 1] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,11 +193,11 @@ int mail_warning(char *illegal_ip, char *public_ip, conf * conf)
|
|||||||
// 第三方邮箱告警
|
// 第三方邮箱告警
|
||||||
int QQ_mail_warning(char *illegal_ip, char *public_ip, conf * conf)
|
int QQ_mail_warning(char *illegal_ip, char *public_ip, conf * conf)
|
||||||
{
|
{
|
||||||
char string[BUFFER + (sizeof(QQMAIL))];
|
char string[BUFFER + (sizeof(QQMAIL)) + 1];
|
||||||
char text[BUFFER];
|
char text[BUFFER];
|
||||||
char temp[32];
|
char temp[32];
|
||||||
|
|
||||||
memset(string, 0, BUFFER + (sizeof(QQMAIL)));
|
memset(string, 0, BUFFER + (sizeof(QQMAIL)) + 1);
|
||||||
memset(text, 0, BUFFER);
|
memset(text, 0, BUFFER);
|
||||||
memset(temp, 0, 32);
|
memset(temp, 0, 32);
|
||||||
|
|
||||||
@ -204,11 +215,14 @@ int whitelist(char *client_ip, char (*whitelist_ip)[WHITELIST_IP_NUM])
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 1; i < WHITELIST_IP_NUM - 1; i++) {
|
for (i = 1; i < WHITELIST_IP_NUM - 1; i++)
|
||||||
if (strcmp(whitelist_ip[i], "\0") == 0) { // 如果字符串为空就跳出循环
|
{
|
||||||
|
if (strcmp(whitelist_ip[i], "\0") == 0) // 如果字符串为空就跳出循环
|
||||||
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ((strncmp(client_ip, whitelist_ip[i], strlen(whitelist_ip[i]))) == 0) { // 对比client_ip长度,
|
if ((strncmp(client_ip, whitelist_ip[i], strlen(whitelist_ip[i]))) == 0) // 对比client_ip长度,
|
||||||
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -222,16 +236,18 @@ int isregion(char *str, char (*region_list)[WHITELIST_IP_NUM])
|
|||||||
int i;
|
int i;
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
for (i = 1; i < WHITELIST_IP_NUM - 1; i++) {
|
for (i = 1; i < WHITELIST_IP_NUM - 1; i++)
|
||||||
if (strcmp(region_list[i], "\0") == 0) { // 如果字符串为空就跳出循环
|
{
|
||||||
|
if (strcmp(region_list[i], "\0") == 0) // 如果字符串为空就跳出循环
|
||||||
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// 在str中查找region_list[i]
|
// 在str中查找region_list[i]
|
||||||
p = strstr(str, region_list[i]);
|
p = strstr(str, region_list[i]);
|
||||||
if (p != NULL) {
|
if (p != NULL)
|
||||||
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -240,18 +256,22 @@ int isregion(char *str, char (*region_list)[WHITELIST_IP_NUM])
|
|||||||
// 去除空格
|
// 去除空格
|
||||||
char *remove_space(const char *str)
|
char *remove_space(const char *str)
|
||||||
{
|
{
|
||||||
|
unsigned int i = 0, j = 0;
|
||||||
unsigned int uLen = strlen(str);
|
unsigned int uLen = strlen(str);
|
||||||
|
char *strRet;
|
||||||
|
|
||||||
if (0 == uLen) {
|
if (0 == uLen)
|
||||||
|
{
|
||||||
return '\0';
|
return '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
char *strRet = (char *)malloc(uLen + 1);
|
strRet = (char *)malloc(uLen + 1);
|
||||||
memset(strRet, 0, uLen + 1);
|
memset(strRet, 0, uLen + 1);
|
||||||
|
|
||||||
unsigned int i = 0, j = 0;
|
for (i = 0; i < uLen + 1; i++)
|
||||||
for (i = 0; i < uLen + 1; i++) {
|
{
|
||||||
if (str[i] != ' ') {
|
if (str[i] != ' ')
|
||||||
|
{
|
||||||
strRet[j++] = str[i];
|
strRet[j++] = str[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -263,7 +283,6 @@ char *remove_space(const char *str)
|
|||||||
// 封禁非法IP
|
// 封禁非法IP
|
||||||
int rule(conf * conf)
|
int rule(conf * conf)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
char whitelist_ip[WHITELIST_IP_NUM][WHITELIST_IP_NUM] = { { 0 }, { 0 } };
|
char whitelist_ip[WHITELIST_IP_NUM][WHITELIST_IP_NUM] = { { 0 }, { 0 } };
|
||||||
char region_list[WHITELIST_IP_NUM][WHITELIST_IP_NUM] = { { 0 }, { 0 } };
|
char region_list[WHITELIST_IP_NUM][WHITELIST_IP_NUM] = { { 0 }, { 0 } };
|
||||||
|
|
||||||
@ -272,51 +291,69 @@ int rule(conf * conf)
|
|||||||
time_t timep;
|
time_t timep;
|
||||||
struct tm *tp;
|
struct tm *tp;
|
||||||
|
|
||||||
i = 0;
|
|
||||||
fp = NULL;
|
fp = NULL;
|
||||||
fc = NULL;
|
fc = NULL;
|
||||||
time(&timep);
|
timep = time(NULL);
|
||||||
tp = localtime(&timep);
|
tp = localtime(&timep);
|
||||||
memset(splice_command, 0, LONG_BUFFER);
|
memset(splice_command, 0, LONG_BUFFER);
|
||||||
memset(command, 0, LONG_BUFFER);
|
memset(command, 0, LONG_BUFFER);
|
||||||
memset(buffer, 0, BUFFER);
|
memset(buffer, 0, BUFFER);
|
||||||
memset(awk, 0, BUFFER);
|
memset(awk, 0, BUFFER);
|
||||||
|
|
||||||
|
|
||||||
if (DEBISN_SYSTEM == check_system()) // Debian 系统规则
|
if (DEBISN_SYSTEM == check_system()) // Debian 系统规则
|
||||||
{
|
{
|
||||||
if (tp->tm_mday >= 10) {
|
if (tp->tm_mday >= 10)
|
||||||
if ((fp = popen(GE_10, "r")) == NULL) {
|
{
|
||||||
|
if ((fp = popen(GE_10, "r")) == NULL)
|
||||||
|
{
|
||||||
perror("GE_10");
|
perror("GE_10");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
if ((fp = popen(LE_10, "r")) == NULL) {
|
else
|
||||||
|
{
|
||||||
|
if ((fp = popen(LE_10, "r")) == NULL)
|
||||||
|
{
|
||||||
perror("LE_10");
|
perror("LE_10");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (CENTOS_SYSTEM == check_system()) // Centos 7系统规则
|
}
|
||||||
|
else if (CENTOS_SYSTEM == check_system()) // Centos 7系统规则
|
||||||
|
{
|
||||||
|
if (tp->tm_mday >= 10)
|
||||||
|
{
|
||||||
|
if ((fp = popen(CENTOS_GE_10, "r")) == NULL)
|
||||||
{
|
{
|
||||||
if (tp->tm_mday >= 10) {
|
|
||||||
if ((fp = popen(CENTOS_GE_10, "r")) == NULL) {
|
|
||||||
perror("CENTOS_GE_10");
|
perror("CENTOS_GE_10");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
if ((fp = popen(CENTOS_LE_10, "r")) == NULL) {
|
else
|
||||||
|
{
|
||||||
|
if ((fp = popen(CENTOS_LE_10, "r")) == NULL)
|
||||||
|
{
|
||||||
perror("CENTOS_LE_10");
|
perror("CENTOS_LE_10");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
return UNKNOWN_SYSTEM;
|
return UNKNOWN_SYSTEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (fgets(buffer, BUFFER, fp) != NULL) {
|
|
||||||
|
while (fgets(buffer, BUFFER, fp) != NULL)
|
||||||
|
{
|
||||||
temp = strstr(buffer, "rhost");
|
temp = strstr(buffer, "rhost");
|
||||||
sscanf(temp, "rhost=%s", temp);
|
sscanf(temp, "rhost=%s", temp);
|
||||||
if (atoi(strncpy(p, temp, 1)) > 0) {
|
if (atoi(strncpy(p, temp, 1)) > 0)
|
||||||
|
{
|
||||||
strcat(splice_command, temp);
|
strcat(splice_command, temp);
|
||||||
strcat(splice_command, "\n");
|
strcat(splice_command, "\n");
|
||||||
}
|
}
|
||||||
@ -330,39 +367,25 @@ int rule(conf * conf)
|
|||||||
strcat(command, "\"");
|
strcat(command, "\"");
|
||||||
strcat(command, awk);
|
strcat(command, awk);
|
||||||
|
|
||||||
if ((fp = popen(command, "r")) == NULL) // 执行命令
|
if ((fc = popen(command, "r")) == NULL) // 执行命令
|
||||||
{
|
{
|
||||||
perror("popen command");
|
perror("popen command");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (fgets(buffer, BUFFER, fp) != NULL) // 执行命令后, 为空时就不会
|
while (fgets(buffer, BUFFER, fc) != NULL) // 执行命令后, 为空时就不会
|
||||||
{
|
{
|
||||||
buffer[strlen(buffer) - 1] = '\0'; // 去除回车
|
buffer[strlen(buffer) - 1] = '\0'; // 去除回车
|
||||||
|
|
||||||
split_string(conf->IPV4_WHITE_LIST, " ", whitelist_ip);
|
split_string(conf->IPV4_WHITE_LIST, " ", whitelist_ip);
|
||||||
split_string(conf->REGION_LIST, " ", region_list);
|
split_string(conf->REGION_LIST, " ", region_list);
|
||||||
|
|
||||||
// 打印配置
|
|
||||||
for (i = 1; i <= WHITELIST_IP_NUM - 1; i++) {
|
|
||||||
if (*whitelist_ip[i] != '\0') {
|
|
||||||
;
|
|
||||||
//printf("%s\n", whitelist_ip[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 1; i <= WHITELIST_IP_NUM - 1; i++) {
|
if (conf->IPV4_RESTRICTION == 1) // 是否启用白名单
|
||||||
if (*region_list[i] != '\0') {
|
{
|
||||||
;
|
if (whitelist(buffer, whitelist_ip) == 1)
|
||||||
//printf("%s\n", region_list[i]);
|
{
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (conf->IPV4_RESTRICTION == 1) { // 是否启用白名单
|
|
||||||
if (whitelist(buffer, whitelist_ip) == 1) {
|
|
||||||
;
|
|
||||||
printf("白名单IPV4:%s\n", buffer);
|
printf("白名单IPV4:%s\n", buffer);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -372,22 +395,26 @@ int rule(conf * conf)
|
|||||||
char *location = NULL;
|
char *location = NULL;
|
||||||
char *location_json = NULL;
|
char *location_json = NULL;
|
||||||
char iplocation[BUFFER];
|
char iplocation[BUFFER];
|
||||||
|
|
||||||
char URL[BUFFER + 70];
|
char URL[BUFFER + 70];
|
||||||
|
char temp[BUFFER];
|
||||||
|
char *p;
|
||||||
|
char *p1;
|
||||||
|
|
||||||
memset(URL, 0, BUFFER + 70);
|
memset(URL, 0, BUFFER + 70);
|
||||||
//sprintf(URL, "http://opendata.baidu.com/api.php?query=%s&co=&resource_id=6006&oe=utf8", buffer);
|
//sprintf(URL, "http://opendata.baidu.com/api.php?query=%s&co=&resource_id=6006&oe=utf8", buffer);
|
||||||
sprintf(URL, conf->REGION_URL, buffer);
|
sprintf(URL, conf->REGION_URL, buffer);
|
||||||
printf("%s\n", URL);
|
//printf("%s\n", URL);
|
||||||
|
|
||||||
location_json = GET_PUBLIC_IP(URL);
|
location_json = GET_PUBLIC_IP(URL);
|
||||||
if (NULL == location_json) {
|
if (NULL == location_json)
|
||||||
|
{
|
||||||
printf("获取IP位置错误!\n");
|
printf("获取IP位置错误!\n");
|
||||||
|
|
||||||
goto BLOCKED;
|
goto BLOCKED;
|
||||||
} else {
|
}
|
||||||
char temp[BUFFER];
|
else
|
||||||
char *p = strstr(location_json, "\"location\"");
|
{
|
||||||
char *p1 = strstr(p, "\",");
|
p = strstr(location_json, "\"location\"");
|
||||||
|
p1 = strstr(p, "\",");
|
||||||
|
|
||||||
memset(temp, 0, BUFFER);
|
memset(temp, 0, BUFFER);
|
||||||
memcpy(temp, p + 12, p1 - p - 12);
|
memcpy(temp, p + 12, p1 - p - 12);
|
||||||
@ -400,12 +427,17 @@ int rule(conf * conf)
|
|||||||
strcat(iplocation, location);
|
strcat(iplocation, location);
|
||||||
strcat(iplocation, ")");
|
strcat(iplocation, ")");
|
||||||
|
|
||||||
// 地域白名单
|
if (location)
|
||||||
if (conf->REGION == 1) {
|
free(location);
|
||||||
if (isregion(iplocation, region_list) == 1) {
|
if (location_json)
|
||||||
;
|
free(location_json);
|
||||||
printf("地域白名单: %s\n", iplocation);
|
|
||||||
|
|
||||||
|
// 地域白名单
|
||||||
|
if (conf->REGION == 1)
|
||||||
|
{
|
||||||
|
if (isregion(iplocation, region_list) == 1)
|
||||||
|
{
|
||||||
|
printf("地域白名单: %s\n", iplocation);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -429,17 +461,17 @@ int rule(conf * conf)
|
|||||||
sleep(3);
|
sleep(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BLOCKED:
|
BLOCKED:
|
||||||
// 是否封禁攻击IP
|
// 是否封禁攻击IP
|
||||||
if (conf->IS_BLOCKED == 1) {
|
if (conf->IS_BLOCKED == 1)
|
||||||
|
{
|
||||||
// libiptc 库插入规则 iptables -t filter -A INPUT -p tcp -m tcp -s xxxx -j DROP
|
// libiptc 库插入规则 iptables -t filter -A INPUT -p tcp -m tcp -s xxxx -j DROP
|
||||||
unsigned int srcIp;
|
unsigned int srcIp;
|
||||||
inet_pton(AF_INET, buffer, &srcIp);
|
inet_pton(AF_INET, buffer, &srcIp);
|
||||||
iptc_add_rule("filter", "INPUT", IPPROTO_TCP, NULL, NULL, srcIp, 0, NULL, NULL, "DROP", NULL, 1);
|
iptc_add_rule("filter", "INPUT", IPPROTO_TCP, NULL, NULL, srcIp, 0, NULL, NULL, "DROP", NULL, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(location);
|
|
||||||
free(location_json);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -466,6 +498,7 @@ static void sig_child(int signo)
|
|||||||
static int get_executable_path(char *processdir, char *processname, int len)
|
static int get_executable_path(char *processdir, char *processname, int len)
|
||||||
{
|
{
|
||||||
char *filename;
|
char *filename;
|
||||||
|
|
||||||
if (readlink("/proc/self/exe", processdir, len) <= 0)
|
if (readlink("/proc/self/exe", processdir, len) <= 0)
|
||||||
return -1;
|
return -1;
|
||||||
filename = strrchr(processdir, '/');
|
filename = strrchr(processdir, '/');
|
||||||
@ -481,14 +514,16 @@ static int get_executable_path(char *processdir, char *processname, int len)
|
|||||||
int process_argv(int argc, char *argv[], char **argvs)
|
int process_argv(int argc, char *argv[], char **argvs)
|
||||||
{
|
{
|
||||||
argvs[0] = argv[0];
|
argvs[0] = argv[0];
|
||||||
|
int i;
|
||||||
for (int i = 0; i <= argc - 1; i++) {
|
for (i = 0; i <= argc - 1; i++)
|
||||||
if (i == 1) {
|
{
|
||||||
for (int j = i; j <= argc - 2; j++) {
|
if (i == 1)
|
||||||
|
{
|
||||||
|
for (int j = i; j <= argc - 2; j++)
|
||||||
|
{
|
||||||
argvs[j] = argv[j + 1];
|
argvs[j] = argv[j + 1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -496,12 +531,10 @@ int process_argv(int argc, char *argv[], char **argvs)
|
|||||||
|
|
||||||
int _crontab(struct tm **calnext, char *string)
|
int _crontab(struct tm **calnext, char *string)
|
||||||
{
|
{
|
||||||
|
|
||||||
const char *err = NULL;
|
const char *err = NULL;
|
||||||
time_t cur;
|
time_t cur;
|
||||||
time_t datenext;
|
time_t datenext;
|
||||||
|
|
||||||
|
|
||||||
time(&cur);
|
time(&cur);
|
||||||
cron_expr parsed;
|
cron_expr parsed;
|
||||||
cron_parse_expr(string, &parsed, &err);
|
cron_parse_expr(string, &parsed, &err);
|
||||||
@ -510,29 +543,66 @@ int _crontab(struct tm **calnext, char *string)
|
|||||||
assert(*calnext);
|
assert(*calnext);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[], char **env)
|
int main(int argc, char *argv[], char **env)
|
||||||
{
|
{
|
||||||
signal(SIGCHLD, sig_child); // 创建捕捉子进程退出信号
|
signal(SIGCHLD, sig_child); // 创建捕捉子进程退出信号
|
||||||
|
|
||||||
char **head_argvs;
|
int pid;
|
||||||
char *argvs[20] = { malloc(sizeof(char *)) };
|
|
||||||
process_argv(argc, argv, &(argvs[0]));
|
|
||||||
head_argvs = &(argvs[0]); // head_argvs指向argvs[0]
|
|
||||||
int head_argc = argc - 1; // 改变argc数
|
|
||||||
|
|
||||||
|
// 读取配置
|
||||||
char path[BUFFER] = { 0 };
|
char path[BUFFER] = { 0 };
|
||||||
char executable_filename[BUFFER] = { 0 };
|
char executable_filename[BUFFER] = { 0 };
|
||||||
(void)get_executable_path(path, executable_filename, sizeof(path));
|
(void)get_executable_path(path, executable_filename, sizeof(path));
|
||||||
strcat(executable_filename, ".conf");
|
strcat(executable_filename, ".conf");
|
||||||
strcat(path, executable_filename);
|
strcat(path, executable_filename);
|
||||||
|
|
||||||
conf *conf = (struct CONF *)malloc(sizeof(struct CONF));
|
conf *conf = (struct CONF *)malloc(sizeof(struct CONF));
|
||||||
read_conf(path, conf);
|
read_conf(path, conf);
|
||||||
//ptintf_conf(conf);
|
//ptintf_conf(conf);
|
||||||
|
|
||||||
|
|
||||||
|
// 处理clamav参数
|
||||||
|
char **head_argvs;
|
||||||
|
int head_argc = 0;
|
||||||
|
char *argvs[ARGS_NUM] = { NULL };
|
||||||
|
char args[ARGS_NUM][WHITELIST_IP_NUM] = { { 0 }, { 0 } };
|
||||||
|
//printf("%d\n", argc);
|
||||||
|
if (argc > 3) // 手动输入参数(如果手动输入参数个数大于3个, 则使用用户输入的参数)
|
||||||
|
{
|
||||||
|
process_argv(argc, argv, &(argvs[0]));
|
||||||
|
head_argvs = &(argvs[0]); // head_argvs指向argvs[0]
|
||||||
|
head_argc = argc - 1; // 改变argc数
|
||||||
|
|
||||||
|
}
|
||||||
|
else // 读取配置文件参数
|
||||||
|
{
|
||||||
|
argvs[0] = argv[0];
|
||||||
|
split_string(conf->CLAMAV_ARG, " ", args);
|
||||||
|
for (int i=1; i<ARGS_NUM; i++)
|
||||||
|
{
|
||||||
|
if (args[i][0] == '\0')
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
argvs[i] = strdup(args[i]);
|
||||||
|
head_argc++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
head_argvs = &(argvs[0]);
|
||||||
|
head_argc += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打印clamav参数
|
||||||
|
for(int i=0; i<head_argc; i++)
|
||||||
|
{
|
||||||
|
printf("%s %d\n", head_argvs[i], i);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
now_next_time *t = (now_next_time *)malloc(sizeof(struct now_next_time));
|
now_next_time *t = (now_next_time *)malloc(sizeof(struct now_next_time));
|
||||||
memset(t, 0, sizeof(struct now_next_time));
|
memset(t, 0, sizeof(struct now_next_time));
|
||||||
|
|
||||||
@ -541,20 +611,61 @@ int main(int argc, char *argv[], char **env)
|
|||||||
//printf("%s", public_ip);
|
//printf("%s", public_ip);
|
||||||
|
|
||||||
|
|
||||||
if (0 == strcmp(conf->DAEMON, "on")) {
|
if (0 == strcmp(conf->DAEMON, "on"))
|
||||||
|
{
|
||||||
goto goto_daemon;
|
goto goto_daemon;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argv[1] != NULL && 0 == strcmp(argv[1], "-d")) {
|
if (argv[1] != NULL && 0 == strcmp(argv[1], "-d"))
|
||||||
|
{
|
||||||
goto_daemon:
|
goto_daemon:
|
||||||
|
/*
|
||||||
if (daemon(1, 1)) // 守护进程
|
if (daemon(1, 1)) // 守护进程
|
||||||
{
|
{
|
||||||
perror("daemon");
|
perror("daemon");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
while (1) {
|
// 守护进程
|
||||||
|
if ((pid = fork()) < 0) {
|
||||||
|
return 0;
|
||||||
|
} else if (0 != pid) {
|
||||||
|
for(int i=1; i<head_argc; i++)
|
||||||
|
{
|
||||||
|
if (head_argvs[i])
|
||||||
|
free(head_argvs[i]);
|
||||||
|
}
|
||||||
|
free(t);
|
||||||
|
free_conf(conf);
|
||||||
|
free(conf);
|
||||||
|
free(public_ip);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (setsid() < 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
signal(SIGHUP, SIG_IGN);
|
||||||
|
if ((pid = fork()) < 0) {
|
||||||
|
return 0;
|
||||||
|
} else if (0 != pid) {
|
||||||
|
for(int i=1; i<head_argc; i++)
|
||||||
|
{
|
||||||
|
if (head_argvs[i])
|
||||||
|
free(head_argvs[i]);
|
||||||
|
}
|
||||||
|
free(t);
|
||||||
|
free_conf(conf);
|
||||||
|
free(conf);
|
||||||
|
free(public_ip);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
// Cron
|
// Cron
|
||||||
struct tm *calnext; //取得Cron规则时间
|
struct tm *calnext; //取得Cron规则时间
|
||||||
calnext = (struct tm *)malloc(sizeof(struct tm));
|
calnext = (struct tm *)malloc(sizeof(struct tm));
|
||||||
@ -571,7 +682,7 @@ goto_daemon:
|
|||||||
// 取得现在时间
|
// 取得现在时间
|
||||||
time_t timep;
|
time_t timep;
|
||||||
struct tm *p;
|
struct tm *p;
|
||||||
time(&timep);
|
timep = time(NULL);
|
||||||
p = localtime(&timep);
|
p = localtime(&timep);
|
||||||
t->now_year = 1900 + p->tm_year;
|
t->now_year = 1900 + p->tm_year;
|
||||||
t->now_mon = 1 + p->tm_mon;
|
t->now_mon = 1 + p->tm_mon;
|
||||||
@ -594,19 +705,20 @@ goto_daemon:
|
|||||||
if (pid < 0) {
|
if (pid < 0) {
|
||||||
printf("fork error.\n");
|
printf("fork error.\n");
|
||||||
return -1;
|
return -1;
|
||||||
} else if (pid == 0) { // child process
|
}
|
||||||
|
else if (pid == 0) // child process
|
||||||
|
{
|
||||||
|
|
||||||
int r = 0;
|
int r = 0;
|
||||||
r = _clamscan(head_argc, head_argvs);
|
r = _clamscan(head_argc, head_argvs);
|
||||||
/*
|
|
||||||
if(t != NULL)
|
|
||||||
free(t);
|
|
||||||
*/
|
|
||||||
_exit(r);
|
_exit(r);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
int status = 0;
|
int status = 0;
|
||||||
wait(&status); //wait the end of child process
|
wait(&status); // wait the end of child process
|
||||||
if (WIFEXITED(status)) {
|
if (WIFEXITED(status))
|
||||||
|
{
|
||||||
;
|
;
|
||||||
//printf("child process return %d\n", WEXITSTATUS(status));
|
//printf("child process return %d\n", WEXITSTATUS(status));
|
||||||
}
|
}
|
||||||
@ -617,11 +729,12 @@ goto_daemon:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
rule(conf);
|
rule(conf);
|
||||||
sleep(conf->TIME);
|
sleep(conf->TIME);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
rule(conf);
|
rule(conf);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -630,5 +743,14 @@ goto_daemon:
|
|||||||
free(conf);
|
free(conf);
|
||||||
free(public_ip);
|
free(public_ip);
|
||||||
|
|
||||||
|
for(int i=1; i<head_argc; i++)
|
||||||
|
{
|
||||||
|
//printf("%s %d\n", head_argvs[i], i);
|
||||||
|
if (head_argvs[i])
|
||||||
|
free(head_argvs[i]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,8 @@ global {
|
|||||||
REFUSE_NUMBER = 3; // 拒绝攻击次数
|
REFUSE_NUMBER = 3; // 拒绝攻击次数
|
||||||
|
|
||||||
CLAMAV = 1; // clamav 是否扫描病毒(测试阶段)(1开启,非1关闭)
|
CLAMAV = 1; // clamav 是否扫描病毒(测试阶段)(1开启,非1关闭)
|
||||||
CLAMAV_TIME = "* 22 21 * * *"; // clamav 扫描时间(Cron格式, 秒 分 时 天 月 周)
|
CLAMAV_ARG = "-r / --exclude-dir="^/sys|^/dev|^/proc|^/opt/infected|^/root|^/home|^/mnt" --move=/opt/infected --max-filesize 1024M -l clamscan.log";
|
||||||
|
CLAMAV_TIME = "* 17 13 * * *"; // clamav 扫描时间(Cron格式, 秒 分 时 天 月 周)
|
||||||
|
|
||||||
|
|
||||||
IPV4_RESTRICTION = 1; // 是否启用IP白名单(1开启,非1关闭)
|
IPV4_RESTRICTION = 1; // 是否启用IP白名单(1开启,非1关闭)
|
||||||
|
16
rhost.h
16
rhost.h
@ -18,7 +18,8 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
|
|
||||||
typedef struct now_next_time {
|
typedef struct now_next_time
|
||||||
|
{
|
||||||
int now_year;
|
int now_year;
|
||||||
int now_mon;
|
int now_mon;
|
||||||
int now_day;
|
int now_day;
|
||||||
@ -65,16 +66,19 @@ typedef struct now_next_time {
|
|||||||
static int cronAllocations = 0;
|
static int cronAllocations = 0;
|
||||||
static int cronTotalAllocations = 0;
|
static int cronTotalAllocations = 0;
|
||||||
static int maxAlloc = 0;
|
static int maxAlloc = 0;
|
||||||
void* cron_malloc(size_t n) {
|
void* cron_malloc(size_t n)
|
||||||
|
{
|
||||||
cronAllocations++;
|
cronAllocations++;
|
||||||
cronTotalAllocations++;
|
cronTotalAllocations++;
|
||||||
if (cronAllocations > maxAlloc) {
|
if (cronAllocations > maxAlloc)
|
||||||
|
{
|
||||||
maxAlloc = cronAllocations;
|
maxAlloc = cronAllocations;
|
||||||
}
|
}
|
||||||
return malloc(n);
|
return malloc(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cron_free(void* p) {
|
void cron_free(void* p)
|
||||||
|
{
|
||||||
cronAllocations--;
|
cronAllocations--;
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
@ -88,7 +92,7 @@ void cron_free(void* p) {
|
|||||||
|
|
||||||
#define BUFFER 1024
|
#define BUFFER 1024
|
||||||
#define LONG_BUFFER 1024*100
|
#define LONG_BUFFER 1024*100
|
||||||
|
#define ARGS_NUM 20
|
||||||
#define WHITELIST_IP_NUM 1024
|
#define WHITELIST_IP_NUM 1024
|
||||||
|
|
||||||
#define AWK " | awk -v num=%d '{a[$1]+=1;} END {for(i in a){if (a[i] >= num) {print i;}}}' "
|
#define AWK " | awk -v num=%d '{a[$1]+=1;} END {for(i in a){if (a[i] >= num) {print i;}}}' "
|
||||||
@ -98,9 +102,9 @@ void cron_free(void* p) {
|
|||||||
#define CENTOS_GE_10 "grep -E \"^$(LC_ALL=\"C\" date \"+%h\").$(LC_ALL=\"C\" date \"+%d\")\" /var/log/secure | grep failure | grep rhost"
|
#define CENTOS_GE_10 "grep -E \"^$(LC_ALL=\"C\" date \"+%h\").$(LC_ALL=\"C\" date \"+%d\")\" /var/log/secure | grep failure | grep rhost"
|
||||||
#define CENTOS_LE_10 "grep -E \"^$(LC_ALL=\"C\" date \"+%h\")..$(LC_ALL=\"C\" date | awk '{print $3}')\" /var/log/secure | grep failure | grep rhost"
|
#define CENTOS_LE_10 "grep -E \"^$(LC_ALL=\"C\" date \"+%h\")..$(LC_ALL=\"C\" date | awk '{print $3}')\" /var/log/secure | grep failure | grep rhost"
|
||||||
|
|
||||||
|
|
||||||
#define QQMAIL "gomail -r %s -s \"System ban IP\" -t \"%s\""
|
#define QQMAIL "gomail -r %s -s \"System ban IP\" -t \"%s\""
|
||||||
|
|
||||||
|
|
||||||
extern void read_conf(char *filename, conf * configure);
|
extern void read_conf(char *filename, conf * configure);
|
||||||
extern void free_conf(conf * conf);
|
extern void free_conf(conf * conf);
|
||||||
extern void ptintf_conf(conf * conf);
|
extern void ptintf_conf(conf * conf);
|
||||||
|
Loading…
Reference in New Issue
Block a user