configure.in
上传用户:nilegod
上传日期:2007-01-08
资源大小:220k
文件大小:10k
源码类别:

网络截获/分析

开发平台:

C/C++

  1. dnl
  2. dnl    ettercap -- configure script
  3. dnl
  4. dnl    Copyright (C) 2001  ALoR <alor@users.sourceforge.net>, NaGA <crwm@freemail.it>
  5. dnl
  6. dnl    This program is free software; you can redistribute it and/or modify
  7. dnl    it under the terms of the GNU General Public License as published by
  8. dnl    the Free Software Foundation; either version 2 of the License, or
  9. dnl    (at your option) any later version.
  10. dnl
  11. dnl    This program is distributed in the hope that it will be useful,
  12. dnl    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. dnl    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. dnl    GNU General Public License for more details.
  15. dnl
  16. dnl    You should have received a copy of the GNU General Public License
  17. dnl    along with this program; if not, write to the Free Software
  18. dnl    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  19. dnl
  20. AC_INIT(src/ec_main.c)
  21. AC_CONFIG_HEADER(config.h)
  22. VERSION=`grep VERSION ./src/include/ec_main.h | cut -f2 -d"""`
  23. AC_SUBST(VERSION)
  24. PROG=`grep PROGRAM ./src/include/ec_main.h | cut -f2 -d"""`
  25. AC_SUBST(PROG)
  26. EC_MESSAGE(Configuring $PROG-$VERSION)
  27. SERIAL=`date +%Y%m%d`
  28. AC_SUBST(SERIAL)
  29. RELEASE=1
  30. AC_SUBST(RELEASE)
  31. SOURCES=`ls ./src/ec_*.c | awk ' { printf "%s ", $1 } '`
  32. AC_SUBST(SOURCES)
  33. MISSING=`ls ./src/missing/*.c | awk ' { printf "%s ", $1 } '`
  34. AC_SUBST(MISSING)
  35. dnl ================
  36. dnl   Check the OS
  37. dnl ================
  38. AC_CANONICAL_SYSTEM
  39. case "$target_os" in
  40. linux*)
  41. EC_LINUX_KERNEL()
  42. OS=LINUX
  43. OS_OPT=
  44. ;;
  45. *freebsd*)
  46. EC_FREEBSD_VERSION()
  47. OS=FREEBSD
  48. OS_OPT=
  49. ;;
  50. *openbsd*)
  51. OS=OPENBSD
  52. OS_OPT=
  53. ;;
  54. *)
  55. echo
  56. echo "NOT A SUPPORTED SYSTEM / OR SYSTEM NOT RECOGNISED"
  57. echo
  58. cat PORTINGS
  59. echo
  60. exit
  61. ;;
  62. esac
  63. AC_SUBST(OS)
  64. AC_SUBST(OS_OPT)
  65. dnl ======================
  66. dnl   Machine Endianness
  67. dnl ======================
  68. EC_ENDIAN_CHECK()
  69. dnl ======================
  70. dnl   Initialize prefix.
  71. dnl ======================
  72. AC_PREFIX_DEFAULT(/usr/local)
  73. if test "$prefix" = "NONE"; then
  74.    prefix="/usr/local"
  75. fi
  76. echo "char *path = "$prefix/share/ettercap/";" > ./src/include/ec_install_path.h
  77. dnl ========================
  78. dnl   Check the C compiler
  79. dnl ========================
  80. AC_PROG_CC
  81. AC_PROG_INSTALL
  82. AC_PROG_MAKE_SET
  83. dnl =====================
  84. dnl   Check for headers
  85. dnl =====================
  86. AC_HEADER_STDC
  87. AC_CHECK_HEADERS(getopt.h)
  88. AC_CHECK_HEADERS(fcntl.h  termios.h ctype.h)
  89. AC_CHECK_HEADERS(sys/time.h sys/utsname.h)
  90. AC_CHECK_HEADERS(ifaddrs.h)
  91. dnl Theese are required !!
  92. AC_CHECK_HEADERS(unistd.h stdlib.h signal.h stdarg.h sys/ioctl.h,,
  93. AC_MSG_WARN(**************************************************);
  94. AC_MSG_WARN(* REQUIRED !! I cant believe U don't have this !!*);
  95. AC_MSG_WARN(**************************************************);
  96. exit)
  97. AC_CHECK_HEADERS(sys/ipc.h sys/shm.h dirent.h,,
  98. AC_MSG_WARN(***************);
  99. AC_MSG_WARN(* REQUIRED !! *);
  100. AC_MSG_WARN(***************);
  101. exit)
  102. AC_CHECK_HEADERS(net/ethernet.h net/if_arp.h net/if.h)
  103. AC_CHECK_HEADERS(netinet/ip.h netinet/ip_icmp.h netinet/tcp.h)
  104. AC_CHECK_HEADERS(sys/socket.h)
  105. dnl ===========================
  106. dnl   Check for Socket Packet
  107. dnl ===========================
  108. AC_MSG_CHECKING(for correct UID)
  109. if test "$UID" -gt 0; then
  110. AC_MSG_RESULT($UID. not sufficient)
  111. AC_MSG_WARN(***********************************************);
  112. AC_MSG_WARN(* This configure must run with UID 0 (root)!! *);
  113. AC_MSG_WARN(***********************************************);
  114.    rm *.cache *.log
  115.    exit;
  116. else
  117. AC_MSG_RESULT($UID ok root let's go...)
  118. fi
  119. if test "$OS" = "LINUX"; then
  120. EC_PF_PACKET()
  121. EC_SOCK_PACKET()
  122. if test "$nopf" = 1 && test "$nosock" = 1; then
  123. AC_MSG_WARN(*************************************);
  124. AC_MSG_WARN(* You can't create Socket Packet !! *);
  125. AC_MSG_WARN(*************************************);
  126. exit;
  127. fi
  128. fi
  129. dnl ===========================================
  130. dnl   Check for /proc/sys/net/ipv4/ip_forward
  131. dnl ===========================================
  132. if test "$OS" = "LINUX"; then
  133. AC_PATH_PROGS(IPFORWARD,ip_forward,no,/proc/sys/net/ipv4)
  134. if test "$IPFORWARD" = no; then
  135. AC_MSG_WARN(*****************************************************************)
  136. AC_MSG_WARN(* /proc/sys/net/ipv4/ip_forward not found !!                    *)
  137. AC_MSG_WARN(* please disable manually ip_forwarding before running ettercap *)
  138. AC_MSG_WARN(*****************************************************************)
  139. fi
  140. fi
  141. dnl ==================================================================
  142. dnl   Checks for typedefs, structures, and compiler characteristics.
  143. dnl ==================================================================
  144. AC_DECL_SYS_SIGLIST
  145. AC_HEADER_TIME
  146. AC_STRUCT_TM
  147. dnl =====================
  148. dnl   Check for libs
  149. dnl =====================
  150. AC_FUNC_MEMCMP
  151. AC_TYPE_SIGNAL
  152. AC_FUNC_VPRINTF
  153. AC_CHECK_FUNCS(gettimeofday)
  154. AC_CHECK_FUNCS(vsnprintf)
  155. AC_CHECK_FUNCS(select socket)
  156. AC_CHECK_FUNCS(atexit)
  157. AC_CHECK_FUNCS(getopt_long,,MISSLIBS="$MISSLIBS ./src/missing/getopt.o ./src/missing/getopt1.o")
  158. AC_CHECK_FUNCS(strlcat,,MISSLIBS="$MISSLIBS ./src/missing/strlcat.o")
  159. AC_SUBST(MISSLIBS)
  160. dnl =======================================
  161. dnl   Check user defined --enable-FEATURE
  162. dnl =======================================
  163. EC_MESSAGE(Checking user defined options)
  164. dnl -----------------------
  165. dnl -- NCURSES INTERFACE --
  166. dnl -----------------------
  167. check_ncurses=0
  168. AC_MSG_CHECKING([if --enable-ncurses option is specified])
  169. AC_ARG_ENABLE(ncurses, [  --enable-ncurses        enable the ncurses interface.],
  170. [ case "$enableval" in
  171. yes)
  172. AC_MSG_RESULT(yes.)
  173. check_ncurses=1
  174. ;;
  175. no)  AC_MSG_RESULT(no.)
  176. ;;
  177.   esac ],
  178.   AC_MSG_RESULT(yes. enabled by default.)
  179.   check_ncurses=1
  180. )
  181. if test $check_ncurses -ne 0; then
  182. ncurses_warn=0
  183. curses_warn=0
  184. AC_CHECK_HEADERS(ncurses.h,,ncurses_warn=1)
  185. AC_CHECK_LIB(ncurses,newwin,,ncurses_warn=1)
  186. if test $ncurses_warn -ne 1; then
  187. AC_DEFINE(HAVE_NCURSES,1)
  188. else
  189. AC_CHECK_HEADERS(curses.h,,curses_warn=1)
  190. AC_CHECK_LIB(curses,newwin,,curses_warn=1)
  191. if test $curses_warn -ne 1; then
  192. AC_DEFINE(HAVE_NCURSES,1)
  193. else
  194. AC_MSG_WARN(***********************************************)
  195. AC_MSG_WARN(* NCURSES are NOT available in your system !! *)
  196. AC_MSG_WARN(* Interactive mod will not be supported!      *)
  197. AC_MSG_WARN(***********************************************)
  198. fi
  199. fi
  200. fi
  201. dnl -----------
  202. dnl -- DEBUG --
  203. dnl -----------
  204. AC_MSG_CHECKING([if --enable-debug option is specified])
  205. AC_ARG_ENABLE(debug, [  --enable-debug          create a file for debugging messages.],
  206. [ case "$enableval" in
  207. yes)
  208. DEBUG="-DDEBUG"
  209. CFLAGS="-O2 -Wall"
  210. AC_MSG_RESULT(yes)
  211. ;;
  212. no)  AC_MSG_RESULT(no.)
  213. ;;
  214.   esac ],
  215.   AC_MSG_RESULT(no. disabled by default.)
  216. )
  217. AC_SUBST(DEBUG)
  218. dnl ----------
  219. dnl -- SUID --
  220. dnl ----------
  221. AC_MSG_CHECKING([if --enable-suid option is specified])
  222. AC_ARG_ENABLE(suid, [  --enable-suid           permit setuid on ettercap.],
  223. [ case "$enableval" in
  224. yes)
  225. AC_DEFINE(PERMIT_SUID,1)
  226. AC_MSG_RESULT(yes)
  227. ;;
  228. no)  AC_MSG_RESULT(no)
  229. ;;
  230.   esac ],
  231.   AC_MSG_RESULT(no. disabled by default.)
  232. )
  233. dnl -------------
  234. dnl -- PLUGINS --
  235. dnl -------------
  236. check_plugins=0
  237. AC_MSG_CHECKING([if --enable-plugins option is specified])
  238. AC_ARG_ENABLE(plugins, [  --enable-plugins        enable the use of plugins on ettercap.],
  239. [ case "$enableval" in
  240. yes)
  241. AC_MSG_RESULT(yes.)
  242. check_plugins=1
  243. ;;
  244. no)  AC_MSG_RESULT(no.)
  245. ;;
  246.   esac ],
  247.   AC_MSG_RESULT(yes. enabled by default.)
  248.   check_plugins=1
  249. )
  250. if test "$OS" = "OPENBSD"; then
  251. AC_MSG_WARN(****************************************************)
  252. AC_MSG_WARN(* Plugins were NOT yet ported to OpenBSD, sorry... *)
  253. AC_MSG_WARN(****************************************************)
  254. check_plugins=0
  255. fi
  256. if test $check_plugins -ne 0; then
  257. plugins_warn=0
  258. AC_CHECK_HEADERS(dlfcn.h,,plugins_warn=1)
  259. if test "$OS" = "LINUX"; then
  260. AC_CHECK_LIB(dl,dlopen,,plugins_warn=1)
  261. else
  262. AC_CHECK_LIB(c,dlopen,,plugins_warn=1)
  263. fi
  264. if test $plugins_warn -ne 1; then
  265. AC_DEFINE(PERMIT_PLUGINS,1)
  266. LIBS="$LIBS -rdynamic"
  267. else
  268. AC_MSG_WARN(***********************************************)
  269. AC_MSG_WARN(* Plugins are NOT supported by your system !! *)
  270. AC_MSG_WARN(***********************************************)
  271. fi
  272. fi
  273. dnl ---------
  274. dnl -- SSH --
  275. dnl ---------
  276. check_ssh=0
  277. AC_ARG_WITH(openssl, [  --with-openssl=DIR      use OpenSSL in DIR],
  278. [ case "$withval" in
  279. yes|no)
  280. AC_MSG_CHECKING(for OpenSSL)
  281. AC_MSG_RESULT(no)
  282. ;;
  283. *)
  284. AC_MSG_CHECKING(for OpenSSL in $withval)
  285. check_ssh=1
  286. ssl_path=$withval
  287. ;;
  288. esac ],
  289. [ AC_MSG_CHECKING(for OpenSSL in ${prefix})
  290. check_ssh=1
  291. ssl_path=${prefix}
  292. ]
  293. )
  294. if test $check_ssh -ne 0; then
  295. if test -f $ssl_path/include/openssl/ssl.h; then
  296.    CFLAGS="$CFLAGS -I$ssl_path/include"
  297.    LIBS="$LIBS -L$ssl_path/lib -lssl -lcrypto"
  298.    AC_DEFINE(HAVE_OPENSSL,1)
  299.    AC_MSG_RESULT(yes)
  300. elif test -f $ssl_path/ssl/include/openssl/ssl.h; then
  301.    CFLAGS="$CFLAGS -I$ssl_path/ssl/include"
  302.    LIBS="$LIBS -L$ssl_path/ssl/lib -lssl -lcrypto"
  303.    AC_DEFINE(HAVE_OPENSSL,1)
  304.    AC_MSG_RESULT(yes)
  305. elif test -f /usr/include/openssl/ssl.h; then
  306.    LIBS="$LIBS -lssl -lcrypto"
  307.    AC_DEFINE(HAVE_OPENSSL,1)
  308.    AC_MSG_RESULT(yes)
  309. else
  310.    AC_MSG_RESULT(no)
  311. AC_MSG_WARN(**********************************************)
  312. AC_MSG_WARN(* OpenSSL is NOT installed in your system !! *)
  313. AC_MSG_WARN(* SSH support will NOT be available...       *)
  314. AC_MSG_WARN(**********************************************)
  315. fi
  316. fi
  317. dnl ===============
  318. dnl   FINISHED !!
  319. dnl ===============
  320. EC_MESSAGE(Writing output files)
  321. makeplug=`ls ./plugins | grep -v Make | awk '{ printf("plugins/%s/Makefile ", $1) }'`
  322. AC_OUTPUT(ettercap.spec ettercap.8
  323.  Makefile
  324.  $makeplug
  325.  plugins/Makefile)