plugins.c 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /*
  2. 3APA3A simpliest proxy server
  3. (c) 2002-2016 by Vladimir Dubrovin <3proxy@3proxy.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, "getip46", (void *) getip46},
  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, "authfuncs", (void *) &authfuncs},
  66. {symbols+45, "commandhandlers", (void *) &commandhandlers},
  67. {symbols+46, "decodeurl", (void *) decodeurl},
  68. {symbols+47, "parsestr", (void *) parsestr},
  69. {symbols+48, "make_ace", (void *) make_ace},
  70. {symbols+49, "freeacl", (void *) freeacl},
  71. {NULL, "", NULL}
  72. };
  73. static void * findbyname(const char *name){
  74. struct symbol * symbols;
  75. for(symbols = &pluginlink.symbols; symbols; symbols=symbols->next)
  76. if(!strcmp(symbols->name, name)) return symbols->value;
  77. return NULL;
  78. }
  79. struct pluginlink pluginlink = {
  80. {symbols, "", NULL},
  81. &conf,
  82. nservers,
  83. &linenum,
  84. authfuncs,
  85. commandhandlers,
  86. findbyname,
  87. socksend,
  88. socksendto,
  89. sockrecvfrom,
  90. sockgetcharcli,
  91. sockgetcharsrv,
  92. sockgetlinebuf,
  93. myinet_ntop,
  94. dobuf,
  95. dobuf2,
  96. scanaddr,
  97. getip46,
  98. sockmap,
  99. ACLmatches,
  100. alwaysauth,
  101. checkACL,
  102. nametohash,
  103. hashindex,
  104. en64,
  105. de64,
  106. tohex,
  107. fromhex,
  108. decodeurl,
  109. parsestr,
  110. make_ace,
  111. myalloc,
  112. myfree,
  113. myrealloc,
  114. mystrdup,
  115. trafcountfunc,
  116. proxy_stringtable,
  117. &schedule,
  118. freeacl,
  119. admin_stringtable,
  120. &childdef,
  121. start_proxy_thread,
  122. freeparam,
  123. parsehostname,
  124. parseusername,
  125. parseconnusername,
  126. &so,
  127. dologname
  128. };