plugins.c 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. /*
  2. 3APA3A simpliest proxy server
  3. (c) 2002-2008 by ZARAZA <3APA3A@security.nnov.ru>
  4. please read License Agreement
  5. */
  6. #include "proxy.h"
  7. unsigned bandlimitfunc(struct clientparam *param, unsigned nbytesin, unsigned nbytesout);
  8. void trafcountfunc(struct clientparam *param);
  9. int checkACL(struct clientparam * param);
  10. void nametohash(const unsigned char * name, unsigned char *hash);
  11. unsigned hashindex(const unsigned char* hash);
  12. void decodeurl(unsigned char *s, int allowcr);
  13. int parsestr (unsigned char *str, unsigned char **argm, int nitems, unsigned char ** buff, int *inbuf, int *bufsize);
  14. struct ace * make_ace (int argc, unsigned char ** argv);
  15. extern char * proxy_stringtable[];
  16. extern char * admin_stringtable[];
  17. extern struct schedule * schedule;
  18. int start_proxy_thread(struct child * chp);
  19. extern int linenum;
  20. extern char *conffile;
  21. struct symbol symbols[] = {
  22. {symbols+1, "conf", (void *) &conf},
  23. {symbols+2, "socksend", (void *) socksend},
  24. {symbols+3, "socksendto", (void *) socksendto},
  25. {symbols+4, "sockrecvfrom", (void *) sockrecvfrom},
  26. {symbols+5, "sockgetcharcli", (void *) sockgetcharcli},
  27. {symbols+6, "sockgetcharsrv", (void *) sockgetcharsrv},
  28. {symbols+7, "sockgetlinebuf", (void *) sockgetlinebuf},
  29. {symbols+8, "myinet_ntop", (void *) myinet_ntop},
  30. {symbols+9, "dobuf", (void *) dobuf},
  31. {symbols+10, "scanaddr", (void *) scanaddr},
  32. {symbols+11, "getip", (void *) getip},
  33. {symbols+12, "sockmap", (void *) sockmap},
  34. {symbols+13, "sockfuncs", (void *) &so},
  35. {symbols+14, "ACLmatches", (void *) ACLmatches},
  36. {symbols+15, "bandlimitfunc", (void *) bandlimitfunc},
  37. {symbols+16, "trafcountfunc", (void *) trafcountfunc},
  38. {symbols+17, "alwaysauth", (void *) alwaysauth},
  39. {symbols+18, "ipauth", (void *) ipauth},
  40. {symbols+19, "strongauth", (void *) strongauth},
  41. {symbols+20, "checkACL", (void *) checkACL},
  42. {symbols+21, "nametohash", (void *) nametohash},
  43. {symbols+22, "hashindex", (void *) hashindex},
  44. {symbols+23, "nservers", (void *) nservers},
  45. {symbols+24, "udpresolve", (void *) udpresolve},
  46. {symbols+25, "bandlim_mutex", (void *) &bandlim_mutex},
  47. {symbols+26, "tc_mutex", (void *) &tc_mutex},
  48. {symbols+27, "hash_mutex", (void *) &hash_mutex},
  49. {symbols+28, "pwl_mutex", (void *) &pwl_mutex},
  50. {symbols+29, "linenum", (void *) &linenum},
  51. {symbols+30, "proxy_stringtable", (void *) proxy_stringtable},
  52. {symbols+31, "en64", (void *) en64},
  53. {symbols+32, "de64", (void *) de64},
  54. {symbols+33, "tohex", (void *) tohex},
  55. {symbols+34, "fromhex", (void *) fromhex},
  56. {symbols+35, "dnspr", (void *) dnsprchild},
  57. {symbols+36, "pop3p", (void *) pop3pchild},
  58. {symbols+37, "proxy", (void *) proxychild},
  59. {symbols+38, "socks", (void *) sockschild},
  60. {symbols+39, "tcppm", (void *) tcppmchild},
  61. {symbols+40, "udppm", (void *) udppmchild},
  62. {symbols+41, "admin", (void *) adminchild},
  63. {symbols+42, "ftppr", (void *) ftpprchild},
  64. {symbols+43, "smtpp", (void *) smtppchild},
  65. {symbols+44, "icqpr", (void *) icqprchild},
  66. /*
  67. {symbols+45, "msnpr", (void *) msnprchild},
  68. */
  69. {symbols+45, "authfuncs", (void *) &authfuncs},
  70. {symbols+46, "commandhandlers", (void *) &commandhandlers},
  71. {symbols+47, "decodeurl", (void *) decodeurl},
  72. {symbols+48, "parsestr", (void *) parsestr},
  73. {symbols+49, "make_ace", (void *) make_ace},
  74. {symbols+50, "freeacl", (void *) freeacl},
  75. {symbols+51, "getip46", (void *) getip46},
  76. {NULL, "", NULL}
  77. };
  78. static void * findbyname(const char *name){
  79. struct symbol * symbols;
  80. for(symbols = &pluginlink.symbols; symbols; symbols=symbols->next)
  81. if(!strcmp(symbols->name, name)) return symbols->value;
  82. return NULL;
  83. }
  84. struct pluginlink pluginlink = {
  85. {symbols, "", NULL},
  86. &conf,
  87. nservers,
  88. &linenum,
  89. authfuncs,
  90. commandhandlers,
  91. findbyname,
  92. socksend,
  93. socksendto,
  94. sockrecvfrom,
  95. sockgetcharcli,
  96. sockgetcharsrv,
  97. sockgetlinebuf,
  98. myinet_ntop,
  99. dobuf,
  100. dobuf2,
  101. scanaddr,
  102. getip,
  103. getip46,
  104. sockmap,
  105. ACLmatches,
  106. alwaysauth,
  107. checkACL,
  108. nametohash,
  109. hashindex,
  110. en64,
  111. de64,
  112. tohex,
  113. fromhex,
  114. decodeurl,
  115. parsestr,
  116. make_ace,
  117. myalloc,
  118. myfree,
  119. myrealloc,
  120. mystrdup,
  121. trafcountfunc,
  122. proxy_stringtable,
  123. &schedule,
  124. freeacl,
  125. admin_stringtable,
  126. &childdef,
  127. start_proxy_thread,
  128. freeparam,
  129. parsehostname,
  130. parseusername,
  131. parseconnusername,
  132. &so,
  133. dologname
  134. };