From 740371b4e2f48fbe8e247d18060924d58d9bb301 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Tue, 17 Apr 2012 15:09:50 -0500 Subject: [PATCH] Initial commit. --- .deps | 6382 +++++++++++++++++++++++++++++++++++++++++++ Makefile | 65 + README | 153 ++ backtrace.c | 42 + backtrace.so | Bin 0 -> 20286 bytes cs_access_alias.c | 215 ++ cs_babbler.c | 100 + cs_badwords.c | 447 +++ cs_fregister.c | 158 ++ cs_kickdots.c | 50 + cs_ping.c | 35 + cs_regmode.c | 50 + cs_regnotice.c | 83 + cs_updown.c | 232 ++ cs_userinfo.c | 157 ++ dnsbl.c | 615 +++++ gen_echoserver.c | 88 + gen_listenerdemo.c | 92 + gen_vhostonreg.c | 119 + graphtastical.c | 198 ++ gs_roulette.c | 74 + ircd_announceserv.c | 395 +++ ircd_catserv.c | 58 + ircd_loveserv.c | 325 +++ ircs_crypto_trans.c | 159 ++ mlocktweaker.c | 65 + ms_fsend.c | 181 ++ ns_ajoin.c | 221 ++ ns_cleannick.c | 113 + ns_fenforce.c | 91 + ns_forbid.c | 150 + ns_fregister.c | 126 + ns_generatehash.c | 60 + ns_generatepass.c | 55 + ns_guestnoreg.c | 96 + ns_listlogins.c | 58 + ns_mxcheck.c | 89 + ns_mxcheck_async.c | 152 ++ ns_regnotice.c | 80 + ns_waitreg.c | 66 + on_db_save.c | 144 + os_akillnicklist.c | 172 ++ os_defcon.c | 239 ++ os_helpme.c | 39 + os_joinmon.c | 254 ++ os_kill.c | 56 + os_klinechan.c | 215 ++ os_modeall.c | 72 + os_pingspam.c | 156 ++ os_procwatch.c | 101 + os_resolve.c | 79 + os_savechanmodes.c | 180 ++ os_tabletest.c | 54 + os_testcmd.c | 135 + os_testproc.c | 138 + os_trace.c | 928 +++++++ wumpus.c | 1027 +++++++ 57 files changed, 15884 insertions(+) create mode 100644 .deps create mode 100644 Makefile create mode 100644 README create mode 100644 backtrace.c create mode 100755 backtrace.so create mode 100644 cs_access_alias.c create mode 100644 cs_babbler.c create mode 100644 cs_badwords.c create mode 100644 cs_fregister.c create mode 100644 cs_kickdots.c create mode 100644 cs_ping.c create mode 100644 cs_regmode.c create mode 100644 cs_regnotice.c create mode 100644 cs_updown.c create mode 100644 cs_userinfo.c create mode 100644 dnsbl.c create mode 100644 gen_echoserver.c create mode 100644 gen_listenerdemo.c create mode 100644 gen_vhostonreg.c create mode 100644 graphtastical.c create mode 100644 gs_roulette.c create mode 100644 ircd_announceserv.c create mode 100644 ircd_catserv.c create mode 100644 ircd_loveserv.c create mode 100644 ircs_crypto_trans.c create mode 100644 mlocktweaker.c create mode 100644 ms_fsend.c create mode 100644 ns_ajoin.c create mode 100644 ns_cleannick.c create mode 100644 ns_fenforce.c create mode 100644 ns_forbid.c create mode 100644 ns_fregister.c create mode 100644 ns_generatehash.c create mode 100644 ns_generatepass.c create mode 100644 ns_guestnoreg.c create mode 100644 ns_listlogins.c create mode 100644 ns_mxcheck.c create mode 100644 ns_mxcheck_async.c create mode 100644 ns_regnotice.c create mode 100644 ns_waitreg.c create mode 100644 on_db_save.c create mode 100644 os_akillnicklist.c create mode 100644 os_defcon.c create mode 100644 os_helpme.c create mode 100644 os_joinmon.c create mode 100644 os_kill.c create mode 100644 os_klinechan.c create mode 100644 os_modeall.c create mode 100644 os_pingspam.c create mode 100644 os_procwatch.c create mode 100644 os_resolve.c create mode 100644 os_savechanmodes.c create mode 100644 os_tabletest.c create mode 100644 os_testcmd.c create mode 100644 os_testproc.c create mode 100644 os_trace.c create mode 100644 wumpus.c diff --git a/.deps b/.deps new file mode 100644 index 0000000..cda977e --- /dev/null +++ b/.deps @@ -0,0 +1,6382 @@ +cs_access_alias.o cs_access_alias.lib.o cs_access_alias.plugin.o: cs_access_alias.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h ../../include/template.h +cs_badwords.o cs_badwords.lib.o cs_badwords.plugin.o: cs_badwords.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +cs_fregister.o cs_fregister.lib.o cs_fregister.plugin.o: cs_fregister.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h ../chanserv/chanserv.h +cs_kickdots.o cs_kickdots.lib.o cs_kickdots.plugin.o: cs_kickdots.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +cs_ping.o cs_ping.lib.o cs_ping.plugin.o: cs_ping.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +cs_regmode.o cs_regmode.lib.o cs_regmode.plugin.o: cs_regmode.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +cs_regnotice.o cs_regnotice.lib.o cs_regnotice.plugin.o: cs_regnotice.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h ../../include/conf.h +cs_updown.o cs_updown.lib.o cs_updown.plugin.o: cs_updown.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +cs_userinfo.o cs_userinfo.lib.o cs_userinfo.plugin.o: cs_userinfo.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +dnsbl.o dnsbl.lib.o dnsbl.plugin.o: dnsbl.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h ../../include/conf.h +gen_echoserver.o gen_echoserver.lib.o gen_echoserver.plugin.o: gen_echoserver.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h ../../include/datastream.h +gen_listenerdemo.o gen_listenerdemo.lib.o gen_listenerdemo.plugin.o: gen_listenerdemo.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h ../../include/datastream.h +gen_vhostonreg.o gen_vhostonreg.lib.o gen_vhostonreg.plugin.o: gen_vhostonreg.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +graphtastical.o graphtastical.lib.o graphtastical.plugin.o: graphtastical.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +gs_roulette.o gs_roulette.lib.o gs_roulette.plugin.o: gs_roulette.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +ircd_announceserv.o ircd_announceserv.lib.o ircd_announceserv.plugin.o: ircd_announceserv.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +ircd_catserv.o ircd_catserv.lib.o ircd_catserv.plugin.o: ircd_catserv.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +ms_fsend.o ms_fsend.lib.o ms_fsend.plugin.o: ms_fsend.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +ns_cleannick.o ns_cleannick.lib.o ns_cleannick.plugin.o: ns_cleannick.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +ns_fenforce.o ns_fenforce.lib.o ns_fenforce.plugin.o: ns_fenforce.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +ns_fregister.o ns_fregister.lib.o ns_fregister.plugin.o: ns_fregister.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +ns_forbid.o ns_forbid.lib.o ns_forbid.plugin.o: ns_forbid.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +ns_generatehash.o ns_generatehash.lib.o ns_generatehash.plugin.o: ns_generatehash.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +ns_generatepass.o ns_generatepass.lib.o ns_generatepass.plugin.o: ns_generatepass.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +ns_guestnoreg.o ns_guestnoreg.lib.o ns_guestnoreg.plugin.o: ns_guestnoreg.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h ../../include/conf.h +ns_listlogins.o ns_listlogins.lib.o ns_listlogins.plugin.o: ns_listlogins.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +ns_mxcheck.o ns_mxcheck.lib.o ns_mxcheck.plugin.o: ns_mxcheck.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h /usr/include/arpa/nameser.h \ + /usr/include/sys/param.h /usr/include/linux/param.h \ + /usr/include/asm/param.h /usr/include/asm-generic/param.h \ + /usr/include/sys/bitypes.h /usr/include/arpa/nameser_compat.h \ + /usr/include/resolv.h +ns_mxcheck_async.o ns_mxcheck_async.lib.o ns_mxcheck_async.plugin.o: ns_mxcheck_async.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h /usr/include/arpa/nameser.h \ + /usr/include/sys/param.h /usr/include/linux/param.h \ + /usr/include/asm/param.h /usr/include/asm-generic/param.h \ + /usr/include/sys/bitypes.h /usr/include/arpa/nameser_compat.h \ + /usr/include/resolv.h +ns_regnotice.o ns_regnotice.lib.o ns_regnotice.plugin.o: ns_regnotice.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h ../../include/conf.h +ns_waitreg.o ns_waitreg.lib.o ns_waitreg.plugin.o: ns_waitreg.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h ../../include/conf.h +on_db_save.o on_db_save.lib.o on_db_save.plugin.o: on_db_save.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h ../../include/conf.h \ + ../../include/datastream.h +os_akillnicklist.o os_akillnicklist.lib.o os_akillnicklist.plugin.o: os_akillnicklist.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +os_defcon.o os_defcon.lib.o os_defcon.plugin.o: os_defcon.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +os_joinmon.o os_joinmon.lib.o os_joinmon.plugin.o: os_joinmon.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +os_kill.o os_kill.lib.o os_kill.plugin.o: os_kill.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +os_klinechan.o os_klinechan.lib.o os_klinechan.plugin.o: os_klinechan.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +os_modeall.o os_modeall.lib.o os_modeall.plugin.o: os_modeall.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +os_pingspam.o os_pingspam.lib.o os_pingspam.plugin.o: os_pingspam.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +os_resolve.o os_resolve.lib.o os_resolve.plugin.o: os_resolve.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +os_savechanmodes.o os_savechanmodes.lib.o os_savechanmodes.plugin.o: os_savechanmodes.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +os_tabletest.o os_tabletest.lib.o os_tabletest.plugin.o: os_tabletest.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +os_testcmd.o os_testcmd.lib.o os_testcmd.plugin.o: os_testcmd.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +os_testproc.o os_testproc.lib.o os_testproc.plugin.o: os_testproc.c ../../include/atheme.h \ + ../../include/sysconf.h ../../include/stdinc.h \ + ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h ../../include/datastream.h +os_trace.o os_trace.lib.o os_trace.plugin.o: os_trace.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h +wumpus.o wumpus.lib.o wumpus.plugin.o: wumpus.c ../../include/atheme.h ../../include/sysconf.h \ + ../../include/stdinc.h ../../libmowgli-2/src/libmowgli/mowgli.h \ + ../../libmowgli-2/src/libmowgli/core/stdinc.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/uClibc_config.h /usr/include/sys/cdefs.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/uClibc_stdio.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/bits/uClibc_mutex.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/byteswap.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-common.h /usr/include/sched.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/uClibc_clk_tck.h /usr/include/signal.h \ + /usr/include/bits/sigset.h /usr/include/bits/setjmp.h \ + /usr/include/bits/uClibc_pthread.h /usr/include/bits/stdio_lim.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/sys/sysmacros.h /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdbool.h \ + /usr/include/string.h /usr/include/bits/signum.h \ + /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/include/ctype.h /usr/include/bits/uClibc_touplow.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include/stdint.h \ + /usr/include/stdint.h /usr/include/inttypes.h /usr/include/netdb.h \ + /usr/include/netinet/in.h /usr/include/sys/socket.h \ + /usr/include/sys/uio.h /usr/include/bits/uio.h \ + /usr/include/bits/socket.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/uClibc_local_lim.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/asm/sockios.h /usr/include/asm-generic/sockios.h \ + /usr/include/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/bits/netdb.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt.h \ + /usr/include/grp.h /usr/include/sys/time.h /usr/include/sys/wait.h \ + /usr/include/sys/resource.h /usr/include/bits/resource.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/arpa/inet.h \ + /usr/include/libgen.h /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/openssl/rand.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/lib/gcc/x86_64-alpine-linux-uclibc/4.6.3/include-fixed/openssl/bn.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecdsa.h \ + /usr/include/openssl/ecdh.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pem2.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/kssl.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/pqueue.h /usr/include/openssl/ssl23.h \ + /usr/include/openssl/srtp.h /usr/include/openssl/err.h \ + ../../libmowgli-2/src/libmowgli/platform/constructor.h \ + ../../libmowgli-2/src/libmowgli/platform/machine.h \ + ../../libmowgli-2/src/libmowgli/core/logger.h \ + ../../libmowgli-2/src/libmowgli/core/assert.h \ + ../../libmowgli-2/src/libmowgli/core/exception.h \ + ../../libmowgli-2/src/libmowgli/core/iterator.h \ + ../../libmowgli-2/src/libmowgli/container/list.h \ + ../../libmowgli-2/src/libmowgli/object/class.h \ + ../../libmowgli-2/src/libmowgli/object/object.h \ + ../../libmowgli-2/src/libmowgli/core/allocation_policy.h \ + ../../libmowgli-2/src/libmowgli/core/alloc.h \ + ../../libmowgli-2/src/libmowgli/thread/thread.h \ + ../../libmowgli-2/src/libmowgli/thread/mutex.h \ + ../../libmowgli-2/src/libmowgli/base/memslice.h \ + ../../libmowgli-2/src/libmowgli/container/patricia.h \ + ../../libmowgli-2/src/libmowgli/module/module.h \ + ../../libmowgli-2/src/libmowgli/container/queue.h \ + ../../libmowgli-2/src/libmowgli/base/hash.h \ + ../../libmowgli-2/src/libmowgli/core/heap.h \ + ../../libmowgli-2/src/libmowgli/core/bootstrap.h \ + ../../libmowgli-2/src/libmowgli/base/bitvector.h \ + ../../libmowgli-2/src/libmowgli/base/hook.h \ + ../../libmowgli-2/src/libmowgli/base/mowgli_signal.h \ + ../../libmowgli-2/src/libmowgli/ext/proctitle.h \ + ../../libmowgli-2/src/libmowgli/ext/error_backtrace.h \ + ../../libmowgli-2/src/libmowgli/base/random.h \ + ../../libmowgli-2/src/libmowgli/base/argstack.h \ + ../../libmowgli-2/src/libmowgli/object/message.h \ + ../../libmowgli-2/src/libmowgli/object/metadata.h \ + ../../libmowgli-2/src/libmowgli/ext/global_storage.h \ + ../../libmowgli-2/src/libmowgli/core/process.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/core/mowgli_string.h \ + ../../libmowgli-2/src/libmowgli/core/allocator.h \ + ../../libmowgli-2/src/libmowgli/base/formatter.h \ + ../../libmowgli-2/src/libmowgli/container/index.h \ + ../../libmowgli-2/src/libmowgli/ext/confparse.h \ + ../../libmowgli-2/src/libmowgli/ext/program_opts.h \ + ../../libmowgli-2/src/libmowgli/linebuf/linebuf.h \ + ../../libmowgli-2/src/libmowgli/eventloop/eventloop.h \ + ../../libmowgli-2/src/libmowgli/vio/vio.h \ + ../../libmowgli-2/src/libmowgli/dns/dns.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_res.h \ + ../../libmowgli-2/src/libmowgli/dns/dns_evloop_reslib.h \ + /usr/include/link.h /usr/include/elf.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/bits/elfclass.h \ + ../../include/i18n.h /usr/include/locale.h \ + /usr/include/bits/uClibc_locale.h /usr/include/libintl.h \ + ../../include/common.h ../../include/object.h ../../include/connection.h \ + ../../include/res.h ../../include/atheme.h ../../include/reslib.h \ + ../../include/hook.h ../../include/hooktypes.h \ + ../../include/atheme_string.h ../../include/atheme_memory.h \ + ../../include/table.h ../../include/servers.h ../../include/channels.h \ + ../../include/module.h ../../include/privs.h ../../include/abirev.h \ + ../../include/crypto.h ../../include/culture.h ../../include/base64.h \ + ../../include/md5.h ../../include/sasl.h ../../include/match.h \ + ../../include/account.h ../../include/entity.h \ + ../../include/entity-validation.h ../../include/auth.h \ + ../../include/tools.h ../../include/confprocess.h ../../include/global.h \ + ../../include/flags.h ../../include/phandler.h \ + ../../include/commandtree.h ../../include/servtree.h \ + ../../include/services.h ../../include/users.h \ + ../../include/sourceinfo.h ../../include/taint.h \ + ../../include/database_backend.h ../../include/uid.h \ + ../../include/inline/account.h ../../include/inline/channels.h \ + ../../include/inline/connection.h diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d0c8672 --- /dev/null +++ b/Makefile @@ -0,0 +1,65 @@ +# Copyright (c) 2003-2004 E. Will et al. +# Rights to this code are documented in doc/LICENSE. +# +# This file contains build instructions. +# +# $Id: Makefile.in 8375 2007-06-03 20:03:26Z pippijn $ +# + +MODULE = contrib + +SRCS = \ + cs_access_alias.c \ + cs_badwords.c \ + cs_fregister.c \ + cs_kickdots.c \ + cs_ping.c \ + cs_regmode.c \ + cs_regnotice.c \ + cs_updown.c \ + cs_userinfo.c \ + dnsbl.c \ + gen_echoserver.c \ + gen_listenerdemo.c \ + gen_vhostonreg.c \ + graphtastical.c \ + gs_roulette.c \ + ircd_announceserv.c \ + ircd_catserv.c \ + ms_fsend.c \ + ns_cleannick.c \ + ns_fenforce.c \ + ns_fregister.c \ + ns_forbid.c \ + ns_generatehash.c \ + ns_generatepass.c \ + ns_guestnoreg.c \ + ns_listlogins.c \ + ns_mxcheck.c \ + ns_mxcheck_async.c \ + ns_regnotice.c \ + ns_waitreg.c \ + on_db_save.c \ + os_akillnicklist.c \ + os_defcon.c \ + os_joinmon.c \ + os_kill.c \ + os_klinechan.c \ + os_modeall.c \ + os_pingspam.c \ + os_resolve.c \ + os_savechanmodes.c \ + os_tabletest.c \ + os_testcmd.c \ + os_testproc.c \ + os_trace.c \ + wumpus.c + +include ../../extra.mk +include ../../buildsys.mk +include ../../buildsys.module.mk + +CPPFLAGS += -I../../include +CFLAGS += ${PLUGIN_CFLAGS} +LIBS += -L../../libathemecore -lathemecore ${LDFLAGS_RPATH} + diff --git a/README b/README new file mode 100644 index 0000000..a33963f --- /dev/null +++ b/README @@ -0,0 +1,153 @@ +This directory contains modules that are not included in the main modules +folders for one reason or another. Either their code is a bit ugly, their +functionality is frowned upon, they only work with a limited number of IRCd's +or similar cases. + +Modules +======= + +cs_babbler.c - Repeats what others users in a channel say back to a specific + user. Useful for users that claim they have entire channels on + ignore. NOT COMPILED BY DEFAULT. + +cs_badwords.c - Takes actions against users (KICK, BAN, KICKBAN or QUIET) for + using badwords in channel, specified on a per-channel basis + with the BADWORDS command. Be aware it will check every message + sent to channels that BLOCKBADWORDS is set on so it can be a bit + CPU-heavy. + +cs_kickdots.c - Kicks users from a channel when kickdots metadata is set on + that channel and users send a line containing only "...". + Deprecated by cs_badwords (/cs badwords #channel add ... kick). + +cs_ping.c - Responds to users that ping ChanServ with "Pong!". + +cs_regmode.c - Sets the stupid, pointless DALNet-style +/-r mode when a channel + is registered or dropped. NOT RECOMMENDED TO USE. + +cs_regnotice.c - Sends a user a notice with some information specified in a + regnotice {} block inside the chanserv {} block of your + atheme.conf when the user registers a channel. + +cs_updown.c - Either gives or removes all your channel status modes at once. + +cs_userinfo.c - Display a message when a user joins a channel. You must be able + to edit the channel access list to add or remove a userinfo entry. + +gen_echoserver.c - NOT RECOMMENDED TO USE. + +gen_httpd.c - A small sample httpd for serving files. It is highly recommended + to use misc/httpd.c instead. + +gen_listenerdemo.c - NOT RECOMMENDED TO USE. + +gen_vhostonreg.c - Assigns a $account.hidehostsuffix vhost to all users upon + account registration. $account will be replaced by the users' + accountname and hidehostsuffix is that config option from the + serverinfo {} block of your atheme.conf. + +graphtastical.c - Graphs user->channel relationships. Not recommended to use if + there are privacy concerns. + +gs_roulette.c - A nice GameServ game of Russian Roulette. + +ircd_catserv.c - Little module showing a CatServ Services client. + +ircd_announceserv.c - A services bot which allows users to request network + announcements that will then (when approved by a soper) + be sent to all users on the network. This is seperate + from InfoServ so that users can easily ignore users' + announcements but won't miss any important announcements + from network staff. + +ircd_loveserv.c - A services bot for sending love-related items to other users. + NOT COMPILED BY DEFAULT. + +ircd_crypto_trans.c - A encryption module for IRCServices weird password + encryption scheme. NOT COMPILED BY DEFAULT. + +mlocktweaker.c - Sets the mlock to all new channels to something specified in + the source code of the module. See line 16 of the module's + code for what to edit. NOT COMPILED BY DEFAULT. + +ns_ajoin.c - Allows users to set a AJOIN/autojoin list of channels that Atheme + will automatically join them to upon identify. Only works on + ShadowIRCd, InspIRCd and UnrealIRCd. NOT COMPILED BY DEFAULT. + +ns_cleannick.c - Detects and cleans 'lame' nicknames using case normalization. + +ns_fenforce.c - Allows opers to force the ENFORCE flag on/off on other users' + accounts. + +ns_forbid.c - Allows opers to forbid the registration and use of a nickname. + +ns_fregister.c - Allows opers to register an account on behalf of another user. + A oper must have the user:fregister priv to use this command. + +ns_generatehash.c - Generates a password hash from the password given as part + of the command. Extremely useful if your passwords are + encrypted and you want to set SOPER passwords. + +ns_generatepass.c - Generates a random password. + +ns_guestnoreg.c - Disallows the registration of nicks beginning with a string + specified in the guestnicks {} block inside the nickserv {} + block of your atheme.conf. + +ns_listlogins.c - Allows users to list the other clients currently logged in + to the same account as them. + +ns_mxcheck.c - Checks if a email address provided by a user upon registration + is valid and fails registration if it is not. + +ns_mxcheck_async.c - Same as ns_mxcheck.c, but asynchronous. + +ns_regnotice.c - Sends a user a notice with some information specified in a + regnotice {} block inside the nickserv {} block of your + atheme.conf when the user registers an account. + +ns_waitreg.c - Requires a user to have been connected for waitreg_time (in + the nickserv {} block of your atheme.conf) seconds before + they are allowed to register their nick. + +on_db_save.c - Allows you to specify a command that is run every time the + Atheme database is saved. + +os_akillnicklist.c - AKILLs users matched in a nicklist specified in your + atheme.conf. See the comment at the top of the module's + source code for details. + +os_defcon.c - Allows you to use DEFCON-based security on your network. + *HIGHLY* NOT RECOMMENDED AND NOT COMPILED BY DEFAULT. + +os_helpme.c - Sets usermode +h on all users listed with the general:helper + soper priv upon recieving soper status. Requires an IRCd that has + +h (helper) usermode support. NOT COMPILED BY DEFAULT. + +os_joinmon.c - Allows adding nick patterns to a joinmon list and when a user + matching one of the patterns joins a channel, a message will + be sent to the logchan (with the info loglevel). + +os_kill.c - Allows opers to KILL users via services. + +os_klinechan.c - KLINEs all users who join a KLINECHAN. + +os_pingspam.c - Spam a user with pings and various messages either on-demand or + spams all users a bit upon connect. + +os_procwatch.c - Watch a specified process and log a message when it finishes + running. Requires kqueue (FreeBSD). NOT COMPILED BY DEFAULT. + +os_savechanmodes.c - Allows you to dump and restore channelmodes of all channels + on the network. + +os_tabletest.c - NOT RECOMMENDED TO USE. + +os_testcmd.c - Run a test command. + +os_testproc.c - Runs a test of child processes. + +os_trace.c - Looks up users by certain criteria and allows you to perform + various actions on them. + +wumpus.c - Allows users to play a game of Hunt the Wumpus! diff --git a/backtrace.c b/backtrace.c new file mode 100644 index 0000000..6da7b69 --- /dev/null +++ b/backtrace.c @@ -0,0 +1,42 @@ +#include +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/backtrace", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void __segv_hdl(int whocares) +{ + void *array[256]; + char **strings; + size_t sz, i; + + sz = backtrace(array, 256); + strings = backtrace_symbols(array, sz); + + slog(LG_INFO, "---------------- [ CRASH ] -----------------"); + slog(LG_INFO, "%zu stack frames, flags %s", sz, get_conf_opts()); + for (i = 0; i < sz; i++) + slog(LG_INFO, "#%zu --> %p (%s)", i, array[i], strings[i]); + slog(LG_INFO, "Report to http://jira.atheme.org/"); + slog(LG_INFO, "--------------------------------------------"); +} + +void _modinit(module_t *m) +{ + signal(SIGSEGV, __segv_hdl); +} + +void _moddeinit(module_unload_intent_t intent) +{ + signal(SIGSEGV, NULL); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/backtrace.so b/backtrace.so new file mode 100755 index 0000000000000000000000000000000000000000..9ea6b8e706834bbc2a1dc91f7acf2b7a498f571c GIT binary patch literal 20286 zcmcJ13wT?_mH%8xmPdZbvL)LxjvWOh;6P$Ki3v_1iA~}}hP>(|5FY7`EXkILtSj_z z94I9;v`YwSP1(}?`=^Drl+u>Afxc4OWkaDnmM*0I?|w@u-OYcyv`L{YY@r(#TJP`7 zLy~1@`M&+Wy`Qa_bLPC}%$YND?;YuufsN~JhQah@XR8@ON1YPWry8DJqbex+STC!< z=Ug^N&{hAT-1SjjnY?ME>d*5BwD&Y06ygkiFlt+tv}jHS!>IRTKw1H|NSmIBzek=J_M$E=4HEU1A;xIgp8mhJIgQ9b#6Hl z@MZX)jh@`zFpJ*n&O*OU;5nP54&z!a3)YRY0lnR-@GBJl5`kAhNpS{s4|{X!A=NM4 zbTcZm*-2s>;Ng>cpcKQzS?J#cem40IbeQnR%Jj|weE|P6E;Erz5aC5Y(T=^RAIW8r8l!;*>NNM>I;*O|3CyE|8O zE?Y{dF>CK=GO>86z!D;yi^s-d5i1iT)Dpoqoh4sTTY@)Z(QqydtB12$vOI&%$5K(& z6}QG>U8z{gN?Oq_DZC46l*9UzKlSivI9-N+g(eBEi8B1ZDg2Q#{Di{aUxxpa!k?@O z2zfMZ^xP-JsS-TRWqsYQAW4h+i4OY>`>1h1xu z5Yr#^@D6guz}f3k#&v8juG1yA9# zZf+lH1jmWy^vNk)3mzkw+;aMafFC6ove@b40{$w&Qd=e4_@gzUHN zkWDIcO`$^-$0|Vd(c`(QU7^FPeu1W`le?aroPNQ7{%GisV?hTj4jo)KpD#HcI)ow` zS|*Ws&yqj=Ev0lg*MIuGzf4V?`X_wU&D{?iknhXi7&?4WBS?!vzDGhniI0)V{_T%5 zIDf~s(5PW2LS_@e($GHIX&4?YEwkC4zY z+4M1p3>|zTbnv%Jjti1gQEK?;?{b|>eo;4f9a<07yt3(#;}yus3F4O(W$3_@#;N5* zz2cYopQHJ!(4eKXOYwhOf~qFeA!%sQXEmW)pQ7$uyQ}}YCr^F(&r?%yyNHF*;kIsD zfDOIo3>|olPhl|ap#x{8@^8`*PELw=eg^a^loyv>folV6hx)gL0=oibEsGb!DmD~L zTbW!SX9eQ9TzX|!*Y$}^xKpOBPAfCoMMSt}F#k6QqVE@3HLxx=9!py3u~;e>*pRXE z>A_V1L z?MYdCQw*s;mq`qF71A`5_6IIT-tS%@>yjvM zLwP64r%*nO(uaS#j2nlTG2t;@I%<#N{|&T@&Z9kD(%yr%+wkv!J*QE!%iNwj zZBX?wd%rtyz_G!7)MIEg^q3uTQh0=FDUIUIWPoX}n_lm45Q0=;n| zBG3rI#H&E88NaWGl?3z3>#5&vExO2*q@}?T$w}F<5=}L>ikmTSwmG@ zknv9-Ivjlx;t=pD;2kz7ar9HQ^2ZR~;n=(yJ>VCU)U8p)xfCWlK0xAaK?k2AXh^nk zp2pm8Y?o~{d?mW<*eTmQyodB(BOxDufuL)j5>ouk)#2Dk8=R_DBp~)8&{Yp$59JsU z*j-c|rJk~C>gfbXYsg#YGl!dui<6!3Y7ExEJ^x6;A3+Z)Hf2EN_Du* zy4n@ppmW>-S?)Peur@f{^Y;VgZA8DA_m^Nbn1k-}-RJKCzTV+p_yv@{TzHhZFCbDH zQpXXF;ecE--MfO!8G4Qsy-|oJi*ssXx;n&18w%;epo#KSGv3U zA-l2%z6rUn`y14y<-4d8u-rEiWo~n~033WLY2GbU4Ci-~yx}=Qmxm8PggYW3Kd&Up zsDuLiCbEA-+R-8W?2b!6caukZUP8O~XB2tfA0xsI?^+Vd96JEGd&#QC<uJV8+UIRORu_eshPCk502ONd8U0(GRuZ9J?ob)qJ0BX59!M%&5n z5@aM$b|H#3ppOYONtS5h2Kq%5j`he`?##KUI{B~hX)|n7=%?f7a82EnE{t_$4@jQ% z)SL&u@qb5~$Ndr(LcV+=$~;XH+UiTBnWtF-JNYMIji*J%=x+XL#Hy$Dukhf|7M$S6NaURR08t$B z>tVB}or209yxrgdQa@LMcN+Wv5eH}@*n^V>HwZjewjMEjc>Lp;FB|VSINi#5&ZEGx z2Ol!{YK)SngDkQKk0ajqVYKUZE`e_uHNpMDQl)+=8yz5%Fu=kq~A6R(>B*D)Zx_+YLc7OvJ!F7`cW8heb%-j-h%7J*xX4Z7wTa z7@ltL#q(gT=$yA#YGZsD&E6Ff;zFW#B~2qNCL+gpFOfOM&m4aZH`SSoAfxg^d~|#J z50gBKMDJx3i8Mth5WH&(^3WIWx-W?~4_{2W24tIG>RK;#1$ZBN=G`FMux|Vlgx2jo z0{Kl#@v-0VZTKQ&`EXCne1i{rrLr3_JAIdL^AWV0Ka2SGT|px3!J`JZV6JZy4YfUZ z%-~y~+_zbV`3ZwN5ZAsf5`4+vpF<${J`jNnDJ4(Z_$~skmb^!7{1>G6S_vMt@o_TpIte~&<3AzE zA52IyZ2TN*-7Q;BA(byCuMB?!j;Q<~J|=uec0im+QohgVBt;|OyH|QLz>k2%_qn^p z2z2njf|q^wkw9AKgiG$%k@gnC#rJs$ZRP98+g~IP*n&HGlG+}S&~NVy+1?U<-Hf5Ro;Kaa8!H04GA^g%OSJY`$;&;?R^V@ zQHNb31l8R{{&LJm_nN(Qk5eCLZlrf;j}|HaC9^4YZklkRZPtFApDt zam_6fqOG+LhB!DhHMiYG!heW%f5Y!l^;g5LIeuSj9b+xoF!MLP0hKM;M2h*F>2{*( zmk4sde?D|GM?1{)&pQvaO)G&ot~igbzXsDBMbm_2yP#V;kB`)Q|T55D1&H;v>9 zap$x~!WQ6j7K4L1u)8Bkb@YLOqG51yYIkzlcR4v_dnc#8g_HjUQk|R@8z-mrxxvv= zcO10dn}K3p1OCBs7saTxG<*$swEKQd?T^5(%=;OPp5b+Z7Af>Yz_j?EN2}u?Ol~>n zJye_Q(4Xcl=Y9jPbHu2&1aHKfLK@X9+}$#tAS|*NN7&V}fTRQT@W)|b%lXoSw|V%t z;NO--hXnEM9=@Hx#nMNU9{%s7u=6g_dc?zDpor@k65#zFZjxooWrRHB;VF!0%f%8r z?%{ug4_a18@Fm>mJ&*3Rw0J*2}q#=N@oY%LWNK_*Y0lNJ5;u zsb7Qoc8C^@mdhpNmz}(VI!XH&CsA(vBE;jCj?+V^mQCLgP&fZa_`YSc%2d3cdbCAC zea!J7Ij3zGNS!=_Pq&f7XPx+<@dNrz6yk{p`AozHp2s*jjf0cZg9f)jiUkiapB7R` zxd;GYzJj`=5xzRd`!uSaC*T*O!O_Zp2gv(2jAh=_kYjj%hpNr{1cJfN9P|jYwe}~( zybE1#t+QiGQTYr8$Uld#M4jIY^c>fuPe#EXpEyH-akjB%VN*KQdw$cXF$$x+@I5}+uocwQKO{rGr#6bJ+aSTRjTF|=tpf;hsJji?ugEr{)oqi&IzEYM-d^)PR4Wf)lEvG7pK5{~ zL1=DQ_mWI(q}tWZBo_nR?w3R35gV!Y776+JJ`&d|_c;N6CnUD3+mQ}_K6JOwm2KU$ z$!eb`Hy^$HG5EJ#+<#EuewTzS=mEJcxQ^cjm$Zw-NSmy;$*>ODwvoRBH?&_Mm2c&z zNZld{?c`}hMSG`Ix0^Xm5mC1NQ}2HCFT6nq`5~@G5%3_t^Fbi8PW+COL=lP z*{<$(efi8ho7X5_DQIhH(}DZ_e&vt zd=Yi#G6{uv8(F_r&g`uiSK6&tz5`@mQ_ZW?j~2|OCbtfpW0+@6b?>5qwl>eelT98O zMp#+U$ENybu`%=WUm^0F8WsyEz?ZaI!0oNJyIbA$MuT_+Xq(Tft5*XBf8n`1 zBHYo$?CzD-msAfT8&{}ibjnH1gsa5H%UxYfBnCiivo(D$ri-iDD7IA<+u&fs81xcH z%{(^f?SiV>^H4zmHX7&GP(xjXfIVJFycAQW-diH8!BGNuJ3ulA6Uqk-Tv|)o8@2H? zG04mcZDzA$n$`a1X<$oH40aU4J_Kni876I>(`l@!k^MZshMd>uB#YZB3Z1uMYPJJZ z)(|+i6H3T{QkFnZkp&jdD*?fRr*owekYu%U*VK?p<|{dI#`biS%OlXh2)#h#xi6ds;G?@fJi)?O2v|@DV<4-t7Y8J#^ZYry zkhcARKKQNlc?Er3bq(+0UC3{SL0*Auli@ahxjB-w_EHDg*gk2fNyBO882JmQBeP7# ztXXimnXpW}k^;#{82vQENs6_7W;l<7J5d&mrQ=pM$1wWzm{M`m0E0t1$;_vcRyb-# z!s+mEA_?!H31>Fxcx6!!Lz|h2jf>!j(d5X6O>uHEZl$vfTT(NdkHAS;Gi3?9uqR?g z(YI70vL`#9WdobHn;V9-HSlgU^{P%C}lrS1x6WFr>(j@y!GESt;ZBRMOB zCORW3Bf%UCXZJ9QDGZ&!gFa)XaNMZu^ky_RzL@5?JWkXl`<)dN9p{bMSQ68~q=)E2 zIP`=^V>pAVg^}~ak*ui#1qWfxY;1Jgj7O6qsxf{nHbzHXl`BCXMaS5tEmv*WIA{)B ziH>jFvSq6o8rZmXV94Cwzk!V)%yGIELylun7+)GCQbc}A(rGJ9+DsyaHu4@D$)_TS z3Zf7rH+^(O6o`oj&1f%%2Mx~jah9O~B9b+h9c4Jlo1?PmW~E3_P^_@ASS~Dv$uudc zkOli_YO^d282q7%xk(`-|?S(RtAxfsa$-;ZX`&fK9KY|e;gM=Bval-thl^P9* zk9>+wDaWD#n8Gr#5h*HVndD>>htLpBalG)7$x6nd2vyU}FE^>yJ1y4b7-2Axnam{S zXda=1m`p`299)KDF=ryTlN&fv^6q8lfp#}dhX=#0?GVwnu0n+BQk5Q`xP zki;}hOiW<*nsmC4+(}u2>Uz3knu|l$g)?(lBhpqfiSyKg+PpEAv6z+5rSmy6nHa;_ z?yTqsa(gz*Xf!jxV~n#n;!PTG;9J;+`m~f1n*de$c&+W<+JD*L#=-4Zn_I46Rx(Pn zFDvAwtQ;jaJr`(LcWfINg5C_JqAYxL12ZqPtdbMraC-tr$Y;!(ty?y3?7s|QLNli{ zRft~fwK7pgYe+aJ4|C_NbRvQ|n!`bLHr_)A(6LU-~7jj9#piGGm%FNH8*seGv}GQ+$li^w!`Ob6{v_%Mikd7CRxL zB!3~m%<)`!I4KsEq?IiW5(VoGg&`XY=OS?&h9@C3-A1s|fJ=2WWszx!_Tt(Li^}F3 zO|z1WEpjuC{0l1SuT(4+9mAo0?KHI`p==b%B+_C!2(ws3PVKUV39eHvGDYBH#A&Rs z5S17v&60WE8X3_cL}r*UT1{@*Npj!2)t@&aQlGnR2IWIl8cR{lbE7#F1GT>IN?kN zX}h?1h~dbwRDKNUewe(QNR21pWAuK>a;OvYL&Om6M&M6~#Z1Ozxgn1|0=%lH4XWDj zVslv>^7RPjS~rL8}scCZ94biq&{5nHKkpB{L4e7|Y;G zTQWZuHb-y)ZC*<^W+gGX8T;8Gxm&dMiC7-kxqW;8(1wBS5KW_)jL{}lrWciZ!xKpG z5r!M90F%e_Ae7bORqI=0?!YxeM zkwivsyj0}q`&g636S%>cz&*AKXDE~lib`>M)bptXvK78i1`kCsWt5-f0wyMM!CN$= zRftpU%(~L*TOf2$W>3VozMEBxF{7B33q)Z~!MZH&07OWMTPa%X5=ks?DHgTzv>2-u zi##VgQs^rMI}+4rO6>B?F-#=f4vL90E$!huZ&;!=yIyz2&6ZdRXi#a}QJ9}JtLcVM zObVs77<*W2BEv9e6yL?e45SoPobt%+*!|PCLfk%J*-Sz)?at^`qrC70LR>bsm(Gcb zt4o!@1$3RBcGE?4y1qi92p3S*8O4PPW3U~Xt+$9OC+|~;b*dz7x}GcI0=mAhh~v8c z;UX@es)eFY)zYejRho?++0zA-tQ0@@tLjHoNml9l?M0kN*AEtPeqEm|;sUyE;+Ya% zcDDDZM+3VRlANmR;Udnj>yaYPqwCQkj_bNU?k|)`eZ|lHs(QC7XX*Sis_D4`$yQy} zY7KT>xi+8_eWCc4s_70G?8=#3R~E=s<#kp5QI$5kwY@ku* zGO~>8T0ESMv(D(g6i8&5!_&tM)(k?bS~`hmm*R`Gow&(HU3^EkGb10jbjISQ_^K5i zOMq8HtdpLbWFb@**GJF@nYhJ^u+CB3B+^HxkS%V8I`KVNFkv%_oCea^aDLRp4Gs38 zBt?MY5tVKl9;TZR1z|Ic=b@4cozqn;Rx{l3KSQ*F4G$*i;ib6r_l zBAEvWkM|4w$JBu7@~DFG&{WW9e!Tn<*Ft>iHbUs{H|bJ;pGgqoLy6NMTY?(dqV3b) zPtxT}ic+_i>!&wCrTqH)PP%-kgddM)3*Y(G_74C@HsKMjxb*kAbm>)iU6kA3hlW!A zZY4;U`!%B~@oG(6y1W8VDgRN$ugh-T@iIOIvJaH;>+hfG5-*FUUFG&)rTCXBsyCE_ zb=g|Rp#87Wv`kT5n|Ze1XHeqBSm`>IWB4!Sr#C}%>GFpXEPQJH8nG7@;-?s-OaBhV z86`*iS+*9(U&FK%mGblIfN0`0DR8|X|3^Vn%I{bFe#KvIZ#jGi_-V+s{Q<=vQ2fV9 zcuBkF*LK~Fwo?82`|v060*Wq8C!u2hwVWepDCO7RFMLDsZ`F*d)O@=9d>MaVZ9q`= z;e{Vvaaj~T1BIHbd>IAF(*4)J2l0^NKb!qp%)_XV{oNX&O3mL^h9_FOborf!3Xa3%blvBm@`Y@fo zy6`(a)A2Qhd_EmtTgcbb@ouK`@N|3~4h08FQKD`~meYB&w9$@V&e8dBI=+GFJU1Qh zWjcRN$NQMhOVjZe{|Hmv>x6Kkia$i&Qo1Qn<2su7>RIL+wKE{=t zR@$VMTxYYNZZFAxRu&Jp3VaQFqpCy*s-F<}nfCu*;K}|UYC{y;BPeI{8|_DC!#}I! z=(A6!m7M>F(t!WVU4IriHvm7|?>F6i7WzX1KQmv^iP+iv zaL-xfe^%j-srb~cqAzy`G*DVbGP!InKQe;%jHbDE`<5YdkHx0UcZAnwq zGDnlvFrGAu`%oNDn4rhYc*2IqYn>PME?v&30dM;!2RyK-P0rZAI=o#3&PN-Qw z)W2!K)DWrB^`aJW(<`*l4Kv*+!`{+&q$RKL&2?9A?%y=HR`;MFEo-S)I?UX#am!`> z8_g~2*KZrxj<=BXF0$|@s35oSYgXkyoHgSovC4iAtMC(9R4M;Ct>O<;(VH~!9!~x~ Vmbm{HKb)n1#EO2nYPMhL`Y&3p%n$$o literal 0 HcmV?d00001 diff --git a/cs_access_alias.c b/cs_access_alias.c new file mode 100644 index 0000000..0382a96 --- /dev/null +++ b/cs_access_alias.c @@ -0,0 +1,215 @@ +/* + * Copyright (c) 2007 Jilles Tjoelker, et al. + * Rights to this code are as documented in doc/LICENSE. + * + * ChanServ ACCESS command + * + * $Id$ + */ + +#include "atheme.h" +#include "template.h" + +DECLARE_MODULE_V1 +( + "contrib/cs_access_alias", FALSE, _modinit, _moddeinit, + "$Id$", + "freenode " +); + +static void cs_cmd_access(sourceinfo_t *si, int parc, char *parv[]); + +command_t cs_access = { "ACCESS", "Manipulates channel access lists.", + AC_NONE, 4, cs_cmd_access, { .path = "contrib/access" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("chanserv", &cs_access); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("chanserv", &cs_access); +} + +static void compat_cmd(sourceinfo_t *si, const char *cmdname, char *channel, char *arg1, char *arg2, char *arg3) +{ + int newparc; + char *newparv[5]; + command_t *cmd; + + newparv[0] = channel; + newparv[1] = arg1; + newparv[2] = arg2; + newparv[3] = arg3; + newparv[4] = NULL; + /* this assumes arg3!=NULL implies arg2!=NULL implies arg1!=NULL */ + newparc = 1 + (arg1 != NULL) + (arg2 != NULL) + (arg3 != NULL); + cmd = command_find(si->service->commands, cmdname); + if (cmd != NULL) + command_exec(si->service, si, cmd, newparc, newparv); + else + command_fail(si, fault_unimplemented, _("Command \2%s\2 not loaded?"), cmdname); +} + +typedef struct { + const char *res; + unsigned int level; +} template_iter_t; + +static int global_template_search(const char *key, void *data, void *privdata) +{ + template_iter_t *iter = privdata; + default_template_t *def_t = data; + + if (def_t->flags == iter->level) + iter->res = key; + + return 0; +} + +static const char *get_template_name(mychan_t *mc, unsigned int level) +{ + metadata_t *md; + const char *p, *q, *r; + char *s; + char ss[40]; + static char flagname[400]; + template_iter_t iter; + + md = metadata_find(mc, "private:templates"); + if (md != NULL) + { + p = md->value; + while (p != NULL) + { + while (*p == ' ') + p++; + q = strchr(p, '='); + if (q == NULL) + break; + r = strchr(q, ' '); + if (r != NULL && r < q) + break; + mowgli_strlcpy(ss, q, sizeof ss); + if (r != NULL && r - q < (int)(sizeof ss - 1)) + { + ss[r - q] = '\0'; + } + if (level == flags_to_bitmask(ss, 0)) + { + mowgli_strlcpy(flagname, p, sizeof flagname); + s = strchr(flagname, '='); + if (s != NULL) + *s = '\0'; + return flagname; + } + p = r; + } + } + + iter.res = NULL; + iter.level = level; + mowgli_patricia_foreach(global_template_dict, global_template_search, &iter); + + return iter.res; +} + +static void access_list(sourceinfo_t *si, mychan_t *mc, int parc, char *parv[]) +{ + mowgli_node_t *n; + chanacs_t *ca; + const char *str1, *str2; + int i = 1; + bool operoverride = false; + + /* Copied from modules/chanserv/flags.c */ + /* Note: This overrides the normal need of +A access unless private */ + if (use_channel_private && mc->flags & MC_PRIVATE && + !chanacs_source_has_flag(mc, si, CA_ACLVIEW)) + { + if (has_priv(si, PRIV_CHAN_AUSPEX)) + operoverride = true; + else + { + command_fail(si, fault_noprivs, _("You are not authorized to perform this operation.")); + return; + } + } + + command_success_nodata(si, _("Entry Nickname/Host Flags")); + command_success_nodata(si, "----- ---------------------- -----"); + + MOWGLI_ITER_FOREACH(n, mc->chanacs.head) + { + ca = n->data; + /* Change: don't show akicks */ + if (ca->level == CA_AKICK) + continue; + str1 = get_template_name(mc, ca->level); + str2 = ca->tmodified ? time_ago(ca->tmodified) : "?"; + if (str1 != NULL) + command_success_nodata(si, _("%-5d %-22s %s (%s) [modified %s ago]"), i, ca->entity ? ca->entity->name : ca->host, bitmask_to_flags(ca->level), str1, + str2); + else + command_success_nodata(si, _("%-5d %-22s %s [modified %s ago]"), i, ca->entity ? ca->entity->name : ca->host, bitmask_to_flags(ca->level), + str2); + i++; + } + + command_success_nodata(si, "----- ---------------------- -----"); + command_success_nodata(si, _("End of \2%s\2 FLAGS listing."), mc->name); + + if (operoverride) + logcommand(si, CMDLOG_ADMIN, "%s ACCESS LIST (oper override)", mc->name); + else + logcommand(si, CMDLOG_GET, "%s ACCESS LIST", mc->name); +} + +static void cs_cmd_access(sourceinfo_t *si, int parc, char *parv[]) +{ + char *chan, *cmd; + mychan_t *mc; + char killit[] = "-*"; + char deftemplate[] = "OP"; + char defaccess[] = "=votirA"; + + if (parc < 2) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "ACCESS"); + command_fail(si, fault_needmoreparams, _("Syntax: ACCESS <#channel> ADD|DEL|LIST [nick] [level]")); + return; + } + if (parv[0][0] == '#') + chan = parv[0], cmd = parv[1]; + else if (parv[1][0] == '#') + cmd = parv[0], chan = parv[1]; + else + { + command_fail(si, fault_badparams, STR_INVALID_PARAMS, "ACCESS"); + command_fail(si, fault_badparams, _("Syntax: ACCESS <#channel> ADD|DEL|LIST [nick] [level]")); + return; + } + + mc = mychan_find(chan); + if (mc == NULL) + { + command_fail(si, fault_nosuch_target, _("\2%s\2 is not registered."), chan); + return; + } + + if (!strcasecmp(cmd, "LIST")) + access_list(si, mc, parc - 2, parv + 2); + else if (parc < 3) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "ACCESS"); + command_fail(si, fault_needmoreparams, _("Syntax: ACCESS <#channel> ADD|DEL [level]")); + return; + } + else if (!strcasecmp(cmd, "ADD")) + compat_cmd(si, "FLAGS", chan, parv[2], parc > 3 ? parv[3] : (get_template_flags(mc, deftemplate) ? deftemplate : defaccess), NULL); + else if (!strcasecmp(cmd, "DEL")) + compat_cmd(si, "FLAGS", chan, parv[2], killit, NULL); + else + command_fail(si, fault_badparams, _("Invalid command. Use \2/%s%s help\2 for a command listing."), (ircd->uses_rcommand == FALSE) ? "msg " : "", si->service->disp); +} diff --git a/cs_babbler.c b/cs_babbler.c new file mode 100644 index 0000000..44a3c9a --- /dev/null +++ b/cs_babbler.c @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2008 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * Because sometimes premadonna assholes with large ignore lists + * piss entire channels the hell off... + * + * So what does this do? + * ===================== + * + * It repeats everything someone says and to be extra annoying, highlights + * the person who has public ignore notification spam. + * + * It was written for the purpose of mockery of someone on #atheme-project + * who makes claims like "I have the whole channel on ignore", etc. + * + * Pro tip: we don't care about your ignore list. + * + * How do I use it? I have an asshole on my channel too! + * ===================================================== + * + * Load the module, set these options: + * + * - babbler:enable to actually enable babbler + * - babbler:nicks, the actual ignore list of the asshole + * - babbler:target, the nick of the person who needs to be pwnt + * - babbler:source, the nick of a psuedoclient to send the message + * from. + * + * Will you make it PM them instead? + * ================================= + * + * Absolutely not. Then it could be used for spambots, etc. That's a really + * bad idea. + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/cs_babbler", false, _modinit, _moddeinit, + PACKAGE_STRING, + "William Pitcock " +); + +static void +on_channel_message(void *p) +{ + hook_cmessage_data_t *data = p; + + if (data != NULL && data->msg != NULL) + { + mychan_t *mc = MYCHAN_FROM(data->c); + metadata_t *md; + + if (!mc) + return; + + if (!metadata_find(mc, "babbler:enable")) + return; + + if (!(md = metadata_find(mc, "babbler:nicks"))) + return; + + if (strstr(md->value, data->u->nick)) + { + char *source = NULL; + char *target; + + if (!(md = metadata_find(mc, "babbler:target"))) + return; + + target = md->value; + + if (!(md = metadata_find(mc, "babbler:source"))) + source = chansvs.nick; + else + source = md->value; + + msg(source, data->c->name, "%s: <%s> %s", target, data->u->nick, data->msg); + } + } +} + +void _modinit(module_t *m) +{ + hook_add_event("channel_message"); + hook_add_channel_message(on_channel_message); +} + +void _moddeinit(module_unload_intent_t intent) +{ + hook_del_channel_message(on_channel_message); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/cs_badwords.c b/cs_badwords.c new file mode 100644 index 0000000..a8d7725 --- /dev/null +++ b/cs_badwords.c @@ -0,0 +1,447 @@ +/* + * Copyright (c) 2005 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/cs_badwords", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void on_channel_message(hook_cmessage_data_t *data); +static void cs_cmd_badwords(sourceinfo_t *si, int parc, char *parv[]); +static void cs_set_cmd_blockbadwords(sourceinfo_t *si, int parc, char *parv[]); + +static void write_badword_db(database_handle_t *db); +static void db_h_bw(database_handle_t *db, const char *type); + +command_t cs_badwords = { "BADWORDS", N_("Manage the list of channel bad words."), AC_AUTHENTICATED, 4, cs_cmd_badwords, { .path = "contrib/badwords" } }; +command_t cs_set_blockbadwords = { "BLOCKBADWORDS", N_("Set whether users can say badwords in channel or not."), AC_NONE, 2, cs_set_cmd_blockbadwords, { .path = "contrib/set_blockbadwords" } }; + +struct badword_ { + char *badword; + time_t add_ts; + char *creator; + char *channel; + char *action; + mowgli_node_t node; +}; + +typedef struct badword_ badword_t; + +mowgli_patricia_t **cs_set_cmdtree; + +void _modinit(module_t *m) +{ + MODULE_TRY_REQUEST_SYMBOL(m, cs_set_cmdtree, "chanserv/set_core", "cs_set_cmdtree"); + + if (!module_find_published("backend/opensex")) + { + slog(LG_INFO, "Module %s requires use of the OpenSEX database backend, refusing to load.", m->name); + m->mflags = MODTYPE_FAIL; + return; + } + + hook_add_event("channel_message"); + hook_add_channel_message(on_channel_message); + + hook_add_db_write(write_badword_db); + + db_register_type_handler("BW", db_h_bw); + + service_named_bind_command("chanserv", &cs_badwords); + command_add(&cs_set_blockbadwords, *cs_set_cmdtree); +} + +void _moddeinit(module_unload_intent_t intent) +{ + hook_del_channel_message(on_channel_message); + hook_del_db_write(write_badword_db); + + db_unregister_type_handler("BW"); + + service_named_unbind_command("chanserv", &cs_badwords); + command_delete(&cs_set_blockbadwords, *cs_set_cmdtree); +} + +static inline mowgli_list_t *badwords_list_of(mychan_t *mc) +{ + mowgli_list_t *l; + + return_val_if_fail(mc != NULL, NULL); + + l = privatedata_get(mc, "badword:list"); + if (l != NULL) + return l; + + l = mowgli_list_create(); + privatedata_set(mc, "badword:list", l); + + return l; +} + +static void write_badword_db(database_handle_t *db) +{ + mowgli_node_t *n; + mychan_t *mc; + mowgli_patricia_iteration_state_t state; + mowgli_list_t *l; + + MOWGLI_PATRICIA_FOREACH(mc, &state, mclist) + { + l = badwords_list_of(mc); + + if (l == NULL) + return; + + MOWGLI_ITER_FOREACH(n, l->head) + { + badword_t *bw = n->data; + + db_start_row(db, "BW"); + db_write_word(db, bw->badword); + db_write_time(db, bw->add_ts); + db_write_word(db, bw->creator); + db_write_word(db, bw->channel); + db_write_word(db, bw->action); + db_commit_row(db); + } + } +} + +static void db_h_bw(database_handle_t *db, const char *type) +{ + mychan_t *mc; + mowgli_patricia_iteration_state_t state; + mowgli_list_t *l; + + const char *badword = db_sread_word(db); + time_t add_ts = db_sread_time(db); + const char *creator = db_sread_word(db); + const char *channel = db_sread_word(db); + const char *action = db_sread_word(db); + + MOWGLI_PATRICIA_FOREACH(mc, &state, mclist) + { + if (irccasecmp(mc->name, channel)) + continue; + + l = badwords_list_of(mc); + + badword_t *bw = smalloc(sizeof(badword_t)); + + bw->badword = sstrdup(badword); + bw->add_ts = add_ts; + bw->creator = sstrdup(creator); + bw->channel = sstrdup(channel); + bw->action = sstrdup(action); + + mowgli_node_add(bw, &bw->node, l); + } +} + +static void on_channel_message(hook_cmessage_data_t *data) +{ + badword_t *bw; + mowgli_node_t *n; + mowgli_list_t *l; + + mychan_t *mc = MYCHAN_FROM(data->c); + + if (mc == NULL) + return; + + if (metadata_find(mc, "blockbadwords") == NULL) + return; + + l = badwords_list_of(mc); + if (MOWGLI_LIST_LENGTH(l) == 0) + return; + + char *kickstring = "Foul language is prohibited here."; + + if (data != NULL && data->msg != NULL) + { + MOWGLI_ITER_FOREACH(n, l->head) + { + bw = n->data; + + if (!match(bw->badword, data->msg)) + { + if (!strcasecmp("KICKBAN", bw->action)) + { + char hostbuf[BUFSIZE]; + + hostbuf[0] = '\0'; + + mowgli_strlcat(hostbuf, "*!*@", BUFSIZE); + mowgli_strlcat(hostbuf, data->u->vhost, BUFSIZE); + + modestack_mode_param(chansvs.nick, data->c, MTYPE_ADD, 'b', hostbuf); + chanban_add(data->c, hostbuf, 'b'); + kick(chansvs.me->me, data->c, data->u, kickstring); + return; + } + else if (!strcasecmp("KICK", bw->action)) + { + kick(chansvs.me->me, data->c, data->u, kickstring); + return; + } + else if (!strcasecmp("QUIET", bw->action)) + { + char hostbuf[BUFSIZE]; + + hostbuf[0] = '\0'; + + mowgli_strlcat(hostbuf, "*!*@", BUFSIZE); + mowgli_strlcat(hostbuf, data->u->vhost, BUFSIZE); + + modestack_mode_param(chansvs.nick, data->c, MTYPE_ADD, 'q', hostbuf); + chanban_add(data->c, hostbuf, 'q'); + return; + } + else if (!strcasecmp("BAN", bw->action)) + { + char hostbuf[BUFSIZE]; + + hostbuf[0] = '\0'; + + mowgli_strlcat(hostbuf, "*!*@", BUFSIZE); + mowgli_strlcat(hostbuf, data->u->vhost, BUFSIZE); + + modestack_mode_param(chansvs.nick, data->c, MTYPE_ADD, 'b', hostbuf); + chanban_add(data->c, hostbuf, 'b'); + return; + } + } + } + } +} + +/* SET BADWORD */ +static void cs_cmd_badwords(sourceinfo_t *si, int parc, char *parv[]) +{ + char *channel = parv[0]; + char *command = parv[1]; + char *word = parv[2]; + char *action = parv[3]; + mychan_t *mc; + mowgli_node_t *n, *tn; + badword_t *bw; + mowgli_list_t *l; + + if (!channel || !command) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "SET BADWORDS"); + command_fail(si, fault_needmoreparams, _("Syntax: BADWORDS <#channel> ADD|DEL|LIST [badword] [action]")); + return; + } + + if (!(mc = mychan_find(channel))) + { + command_fail(si, fault_nosuch_target, _("Channel \2%s\2 is not registered."), channel); + return; + } + + l = badwords_list_of(mc); + if (!strcasecmp("ADD", command)) + { + + if (!word || !action) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "BADWORDS"); + command_fail(si, fault_needmoreparams, _("Syntax: BADWORDS <#channel> ADD ")); + return; + } + + if (!chanacs_source_has_flag(mc, si, CA_SET)) + { + command_fail(si, fault_noprivs, _("You are not authorized to perform this command.")); + return; + } + + if(!strcasecmp("KICK", action) || !strcasecmp("KICKBAN", action) || !strcasecmp("BAN", action) || (!strcasecmp("QUIET", action) && ircd != NULL && strchr(ircd->ban_like_modes, 'q'))) + { + if (l != NULL) + { + MOWGLI_ITER_FOREACH(n, l->head) + { + bw = n->data; + + if (!irccasecmp(bw->badword, word)) + { + command_success_nodata(si, _("\2%s\2 has already been entered into the bad word list."), word); + return; + } + } + } + + bw = smalloc(sizeof(badword_t)); + bw->add_ts = CURRTIME;; + bw->creator = sstrdup(get_source_name(si)); + bw->channel = sstrdup(mc->name); + bw->badword = sstrdup(word); + bw->action = sstrdup(action); + mowgli_node_add(bw, &bw->node, l); + + command_success_nodata(si, _("You have added \2%s\2 as a bad word."), word); + logcommand(si, CMDLOG_SET, "BADWORDS:ADD: \2%s\2 \2%s\2 \2%s\2", channel, word, action); + } + else + { + command_fail(si, fault_badparams, _("Invalid action given.")); + return; + } + } + else if (!strcasecmp("DEL", command)) + { + + if (!word) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "BADWORDS"); + command_fail(si, fault_needmoreparams, _("Syntax: BADWORDS <#channel> DEL ")); + return; + } + + if (!chanacs_source_has_flag(mc, si, CA_SET)) + { + command_fail(si, fault_noprivs, _("You are not authorized to perform this command.")); + return; + } + + if (l == NULL) + { + command_fail(si, fault_nosuch_target, _("There are no badwords set in this channel.")); + return; + } + + MOWGLI_ITER_FOREACH_SAFE(n, tn, l->head) + { + bw = n->data; + + if (!irccasecmp(bw->badword, word)) + { + logcommand(si, CMDLOG_SET, "BADWORDS:DEL: \2%s\2 \2%s\2", mc->name, bw->badword); + command_success_nodata(si, _("Bad word \2%s\2 has been deleted."), bw->badword); + + mowgli_node_delete(&bw->node, l); + + free(bw->creator); + free(bw->channel); + free(bw->badword); + free(bw->action); + free(bw); + + return; + } + } + command_success_nodata(si, _("Word \2%s\2 not found in bad word database."), word); + } + else if (!strcasecmp("LIST", command)) + { + char buf[BUFSIZE]; + struct tm tm; + + if (!chanacs_source_has_flag(mc, si, CA_ACLVIEW)) + { + command_fail(si, fault_noprivs, _("You are not authorized to perform this command.")); + return; + } + + if (l == NULL) + { + command_fail(si, fault_nosuch_target, _("There are no badwords set in this channel.")); + return; + } + + MOWGLI_ITER_FOREACH(n, l->head) + { + bw = n->data; + + tm = *localtime(&bw->add_ts); + strftime(buf, BUFSIZE, TIME_FORMAT, &tm); + command_success_nodata(si, "Word: \2%s\2 Action: \2%s\2 (%s - %s)", + bw->badword, bw->action, bw->creator, buf); + } + command_success_nodata(si, "End of list."); + logcommand(si, CMDLOG_GET, "BADWORDS:LIST"); + } + else + { + command_fail(si, fault_needmoreparams, STR_INVALID_PARAMS, "BADWORDS"); + command_fail(si, fault_needmoreparams, _("Syntax: BADWORDS <#channel> ADD|DEL|LIST [badword] [action]")); + return; + } +} + +static void cs_set_cmd_blockbadwords(sourceinfo_t *si, int parc, char *parv[]) +{ + mychan_t *mc; + + if (!(mc = mychan_find(parv[0]))) + { + command_fail(si, fault_nosuch_target, _("Channel \2%s\2 is not registered."), parv[0]); + return; + } + + if (!parv[1]) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "SET BLOCKBADWORDS"); + return; + } + + if (!chanacs_source_has_flag(mc, si, CA_SET)) + { + command_fail(si, fault_noprivs, _("You are not authorized to perform this command.")); + return; + } + + if (!strcasecmp("ON", parv[1])) + { + metadata_t *md = metadata_find(mc, "blockbadwords"); + + if (md) + { + command_fail(si, fault_nochange, _("The \2%s\2 flag is already set for channel \2%s\2."), "BLOCKBADWORDS", mc->name); + return; + } + + metadata_add(mc, "blockbadwords", "on"); + + logcommand(si, CMDLOG_SET, "SET:BLOCKBADWORDS:ON: \2%s\2", mc->name); + command_success_nodata(si, _("The \2%s\2 flag has been set for channel \2%s\2."), "BLOCKBADWORDS", mc->name); + return; + } + else if (!strcasecmp("OFF", parv[1])) + { + metadata_t *md = metadata_find(mc, "blockbadwords"); + + if (!md) + { + command_fail(si, fault_nochange, _("The \2%s\2 flag is not set for channel \2%s\2."), "BLOCKBADWORDS", mc->name); + return; + } + + metadata_delete(mc, "blockbadwords"); + + logcommand(si, CMDLOG_SET, "SET:BLOCKBADWORDS:OFF: \2%s\2", mc->name); + command_success_nodata(si, _("The \2%s\2 flag has been removed for channel \2%s\2."), "BLOCKBADWORDS", mc->name); + return; + } + else + { + command_fail(si, fault_badparams, STR_INVALID_PARAMS, "BLOCKBADWORDS"); + return; + } +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/cs_fregister.c b/cs_fregister.c new file mode 100644 index 0000000..ca1dd87 --- /dev/null +++ b/cs_fregister.c @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2005 William Pitcock, et al. + * Rights to this code are as documented in doc/LICENSE. + * + * This file contains code for the CService FREGISTER function. + * + */ + +#include "atheme.h" +#include "../chanserv/chanserv.h" + +DECLARE_MODULE_V1 +( + "contrib/cs_fregister", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void cs_cmd_fregister(sourceinfo_t *si, int parc, char *parv[]); + +command_t cs_fregister = { "FREGISTER", N_("Forcibly registers a channel."), + PRIV_CHAN_ADMIN, 3, cs_cmd_fregister, { .path = "contrib/cs_fregister" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("chanserv", &cs_fregister); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("chanserv", &cs_fregister); +} + +static void cs_cmd_fregister(sourceinfo_t *si, int parc, char *parv[]) +{ + channel_t *c; + chanuser_t *cu; + mychan_t *mc; + char *name = parv[0]; + char str[21]; + hook_channel_register_check_t hdatac; + hook_channel_req_t hdata; + unsigned int fl; + + /* This command is not useful on registered channels, ignore it if + * it is a fantasy command so users can program bots to react on + * it without interference from ChanServ. + */ + if (si->c != NULL) + return; + + if (!name) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "FREGISTER"); + command_fail(si, fault_needmoreparams, _("To forcibly register a channel: FREGISTER <#channel>")); + return; + } + + if (*name != '#') + { + command_fail(si, fault_badparams, STR_INVALID_PARAMS, "FREGISTER"); + command_fail(si, fault_badparams, _("Syntax: FREGISTER <#channel>")); + return; + } + + /* make sure they're logged in */ + if (!si->smu) + { + command_fail(si, fault_noprivs, _("You are not logged in.")); + return; + } + + if (si->smu->flags & MU_WAITAUTH) + { + command_fail(si, fault_notverified, _("You need to verify your email address before you may register channels.")); + return; + } + + /* make sure it isn't already registered */ + if ((mc = mychan_find(name))) + { + if (!use_channel_private || !(mc->flags & MC_PRIVATE)) + command_fail(si, fault_alreadyexists, _("\2%s\2 is already registered to \2%s\2."), mc->name, mychan_founder_names(mc)); + else + command_fail(si, fault_alreadyexists, _("\2%s\2 is already registered."), mc->name); + return; + } + + /* make sure the channel exists */ + if (!(c = channel_find(name))) + { + command_fail(si, fault_nosuch_target, _("The channel \2%s\2 must exist in order to register it."), name); + return; + } + + hdatac.si = si; + hdatac.name = name; + hdatac.chan = c; + hdatac.approved = 0; + hook_call_channel_can_register(&hdatac); + if (hdatac.approved != 0) + return; + + logcommand(si, CMDLOG_REGISTER | CMDLOG_ADMIN, "FREGISTER: \2%s\2", name); + + mc = mychan_add(name); + mc->registered = CURRTIME; + mc->used = CURRTIME; + mc->mlock_on |= (CMODE_NOEXT | CMODE_TOPIC); + if (c->limit == 0) + mc->mlock_off |= CMODE_LIMIT; + if (c->key == NULL) + mc->mlock_off |= CMODE_KEY; + mc->flags |= config_options.defcflags; + + chanacs_add(mc, entity(si->smu), custom_founder_check(), CURRTIME, entity(si->smu)); + + if (c->ts > 0) + { + snprintf(str, sizeof str, "%lu", (unsigned long)c->ts); + metadata_add(mc, "private:channelts", str); + } + + if (chansvs.deftemplates != NULL && *chansvs.deftemplates != '\0') + metadata_add(mc, "private:templates", + chansvs.deftemplates); + + command_success_nodata(si, _("\2%s\2 is now registered to \2%s\2."), mc->name, entity(si->smu)->name); + + hdata.si = si; + hdata.mc = mc; + hook_call_channel_register(&hdata); + /* Allow the hook to override this. */ + fl = chanacs_source_flags(mc, si); + cu = chanuser_find(mc->chan, si->su); + if (cu == NULL) + ; + else if (ircd->uses_owner && fl & CA_USEOWNER && fl & CA_AUTOOP && + !(cu->modes & CSTATUS_OWNER)) + { + modestack_mode_param(si->service->nick, mc->chan, MTYPE_ADD, + ircd->owner_mchar[1], CLIENT_NAME(si->su)); + cu->modes |= CSTATUS_OWNER; + } + else if (ircd->uses_protect && fl & CA_USEPROTECT && fl & CA_AUTOOP && + !(cu->modes & CSTATUS_PROTECT)) + { + modestack_mode_param(si->service->nick, mc->chan, MTYPE_ADD, + ircd->protect_mchar[1], CLIENT_NAME(si->su)); + cu->modes |= CSTATUS_PROTECT; + } +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/cs_kickdots.c b/cs_kickdots.c new file mode 100644 index 0000000..18dcaae --- /dev/null +++ b/cs_kickdots.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * Kicks people saying "..." on channels with "kickdots" metadata set. + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/cs_kickdots", false, _modinit, _moddeinit, + PACKAGE_STRING, + "William Pitcock " +); + +static void +on_channel_message(hook_cmessage_data_t *data) +{ + if (data != NULL && data->msg != NULL && !strncmp(data->msg, "...", 3)) + { + mychan_t *mc = MYCHAN_FROM(data->c); + + if (mc == NULL) + return; + + if (metadata_find(mc, "kickdots")) + { + kick(chansvs.me->me, data->c, data->u, data->msg); + } + } +} + +void _modinit(module_t *m) +{ + hook_add_event("channel_message"); + hook_add_channel_message(on_channel_message); +} + +void _moddeinit(module_unload_intent_t intent) +{ + hook_del_channel_message(on_channel_message); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/cs_ping.c b/cs_ping.c new file mode 100644 index 0000000..eced2b5 --- /dev/null +++ b/cs_ping.c @@ -0,0 +1,35 @@ +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/cs_ping", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void cs_cmd_ping(sourceinfo_t *si, int parc, char *parv[]); + +command_t cs_ping = { "PING", "Verifies network connectivity by responding with pong.", + AC_NONE, 0, cs_cmd_ping, { .path = "contrib/cs_ping" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("chanserv", &cs_ping); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("chanserv", &cs_ping); +} + +static void cs_cmd_ping(sourceinfo_t *si, int parc, char *parv[]) +{ + command_success_nodata(si, "Pong!"); + return; +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/cs_regmode.c b/cs_regmode.c new file mode 100644 index 0000000..e1c7deb --- /dev/null +++ b/cs_regmode.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2011 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * Set/unset DALnet channel mode +r on registration/deregistration. + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/cs_regmode", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void register_hook(hook_channel_req_t *hdata) +{ + mychan_t *mc = hdata->mc; + + if (mc == NULL || mc->chan == NULL) + return; + + modestack_mode_simple(chansvs.nick, mc->chan, MTYPE_ADD, CMODE_CHANREG); +} + +static void drop_hook(mychan_t *mc) +{ + if (mc == NULL || mc->chan == NULL) + return; + + modestack_mode_simple(chansvs.nick, mc->chan, MTYPE_DEL, CMODE_CHANREG); +} + +void +_modinit(module_t *m) +{ + hook_add_event("channel_register"); + hook_add_channel_register(register_hook); + + hook_add_event("channel_drop"); + hook_add_channel_drop(drop_hook); +} + +void +_moddeinit(module_unload_intent_t intent) +{ + hook_del_channel_register(register_hook); + hook_del_channel_drop(drop_hook); +} diff --git a/cs_regnotice.c b/cs_regnotice.c new file mode 100644 index 0000000..6976d19 --- /dev/null +++ b/cs_regnotice.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2010 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * Sends a customized welcome message on channel registration. + */ + +#include "atheme.h" +#include "conf.h" + +DECLARE_MODULE_V1 +( + "contrib/cs_regnotice", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static mowgli_list_t regnotices = { NULL, NULL, 0 }; + +static void regnotice_hook(hook_channel_req_t *hdata) +{ + mowgli_node_t *n; + sourceinfo_t *si = hdata->si; + mychan_t *mc = hdata->mc; + + if (si == NULL || mc == NULL) + return; + + MOWGLI_ITER_FOREACH(n, regnotices.head) + { + char *line = n->data; + + command_success_nodata(si, "%s", line); + } +} + +static int regnotice_config_handler(mowgli_config_file_entry_t *ce) +{ + mowgli_config_file_entry_t *cce; + + MOWGLI_ITER_FOREACH(cce, ce->entries) + { + char *line = sstrdup(cce->varname); + mowgli_node_add(line, mowgli_node_create(), ®notices); + } + + return 0; +} + +static void regnotice_config_purge(void *unused) +{ + mowgli_node_t *n, *tn; + + MOWGLI_ITER_FOREACH_SAFE(n, tn, regnotices.head) + { + char *line = n->data; + + free(line); + mowgli_node_delete(n, ®notices); + mowgli_node_free(n); + } +} + +void +_modinit(module_t *m) +{ + hook_add_event("config_purge"); + hook_add_config_purge(regnotice_config_purge); + + hook_add_event("channel_register"); + hook_add_channel_register(regnotice_hook); + + add_conf_item("REGNOTICE", &chansvs.me->conf_table, regnotice_config_handler); +} + +void +_moddeinit(module_unload_intent_t intent) +{ + hook_del_channel_register(regnotice_hook); + hook_del_config_purge(regnotice_config_purge); + + del_conf_item("REGNOTICE", &chansvs.me->conf_table); +} diff --git a/cs_updown.c b/cs_updown.c new file mode 100644 index 0000000..879d1d1 --- /dev/null +++ b/cs_updown.c @@ -0,0 +1,232 @@ +/* + * Copyright (c) 2008 Atheme Development Group + * Rights to this code are as documented in doc/LICENSE. + * + * This file contains code for the CService UP/DOWN functions. + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/cs_updown", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void cs_cmd_up(sourceinfo_t *si, int parc, char *parv[]); +static void cs_cmd_down(sourceinfo_t *si, int parc, char *parv[]); + +command_t cs_up = { "UP", "Grants all access you have permission to on a given channel.", AC_NONE, 1, cs_cmd_up, { .path = "contrib/up" } }; +command_t cs_down = { "DOWN", "Removes all current access you posess on a given channel.", AC_NONE, 1, cs_cmd_down, { .path = "contrib/down" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("chanserv", &cs_up); + service_named_bind_command("chanserv", &cs_down); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("chanserv", &cs_up); + service_named_unbind_command("chanserv", &cs_down); +} + + +static void cs_cmd_up(sourceinfo_t *si, int parc, char *parv[]) +{ + chanuser_t *cu; + mychan_t *mc; + char *name = parv[0]; + int fl; + + if (!name) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "UP"); + command_fail(si, fault_needmoreparams, "Syntax: UP <#channel>"); + return; + } + + if (!(mc = mychan_find(name))) + { + command_fail(si, fault_nosuch_target, "\2%s\2 is not registered.", name); + return; + } + + if (metadata_find(mc, "private:close:closer")) + { + command_fail(si, fault_noprivs, "\2%s\2 is closed.", name); + return; + } + + if (!mc->chan) + { + command_fail(si, fault_nosuch_target, "\2%s\2 does not exist.", name); + return; + } + + if (!si->su) + return; // needs to be done over IRC + + cu = chanuser_find(mc->chan, si->su); + + if (!cu) + { + command_fail(si, fault_nosuch_target, "You are not on \2%s\2.", mc->name); + return; + } + + fl = chanacs_user_flags(mc, cu->user); + + // Don't check NOOP, because they are explicitly requesting status + if (ircd->uses_owner) + { + if (fl & CA_USEOWNER) + { + if (fl & CA_AUTOOP && !(ircd->owner_mode & cu->modes)) + { + modestack_mode_param(chansvs.nick, mc->chan, MTYPE_ADD, ircd->owner_mchar[1], CLIENT_NAME(cu->user)); + cu->modes |= ircd->owner_mode; + } + } + } + + if (ircd->uses_protect) + { + if (fl & CA_USEPROTECT) + { + if (fl & CA_AUTOOP && !(ircd->protect_mode & cu->modes) && !(ircd->uses_owner && cu->modes & ircd->owner_mode)) + { + modestack_mode_param(chansvs.nick, mc->chan, MTYPE_ADD, ircd->protect_mchar[1], CLIENT_NAME(cu->user)); + cu->modes |= ircd->protect_mode; + } + } + } + + if (fl & (CA_AUTOOP | CA_OP)) + { + if (fl & CA_AUTOOP && !(CSTATUS_OP & cu->modes)) + { + modestack_mode_param(chansvs.nick, mc->chan, MTYPE_ADD, 'o', CLIENT_NAME(cu->user)); + cu->modes |= CSTATUS_OP; + } + } + + if (ircd->uses_halfops) + { + if (fl & (CA_AUTOHALFOP | CA_HALFOP)) + { + if (fl & CA_AUTOHALFOP && !(ircd->halfops_mode & cu->modes)) + { + modestack_mode_param(chansvs.nick, mc->chan, MTYPE_ADD, ircd->halfops_mchar[1], CLIENT_NAME(cu->user)); + cu->modes |= ircd->halfops_mode; + } + } + } + + if (fl & (CA_AUTOVOICE | CA_VOICE)) + { + if (fl & CA_AUTOVOICE && !(CSTATUS_VOICE & cu->modes)) + { + modestack_mode_param(chansvs.nick, mc->chan, MTYPE_ADD, 'v', CLIENT_NAME(cu->user)); + cu->modes |= CSTATUS_VOICE; + } + } + + command_success_nodata(si, "Upped successfully on \2%s\2.", mc->name); +} + + +static void cs_cmd_down(sourceinfo_t *si, int parc, char *parv[]) +{ + chanuser_t *cu; + mychan_t *mc; + char *name = parv[0]; + + if (!name) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "DOWN"); + command_fail(si, fault_needmoreparams, "Syntax: DOWN <#channel>"); + return; + } + + if (!(mc = mychan_find(name))) + { + command_fail(si, fault_nosuch_target, "\2%s\2 is not registered.", name); + return; + } + + if (metadata_find(mc, "private:close:closer")) + { + command_fail(si, fault_noprivs, "\2%s\2 is closed.", name); + return; + } + + if (!mc->chan) + { + command_fail(si, fault_nosuch_target, "\2%s\2 does not exist.", name); + return; + } + + if (!si->su) + return; // needs to be done over IRC + + cu = chanuser_find(mc->chan, si->su); + + if (!cu) + { + command_fail(si, fault_nosuch_target, "You are not on \2%s\2.", mc->name); + return; + } + + chanacs_user_flags(mc, cu->user); + + // Don't check NOOP, because they are explicitly requesting status + if (ircd->uses_owner) + { + if (ircd->owner_mode & cu->modes) + { + modestack_mode_param(chansvs.nick, mc->chan, MTYPE_DEL, ircd->owner_mchar[1], CLIENT_NAME(cu->user)); + cu->modes &= ~ircd->owner_mode; + } + } + + if (ircd->uses_protect) + { + if (ircd->protect_mode & cu->modes) + { + modestack_mode_param(chansvs.nick, mc->chan, MTYPE_DEL, ircd->protect_mchar[1], CLIENT_NAME(cu->user)); + cu->modes &= ~ircd->protect_mode; + } + } + + if ((CSTATUS_OP & cu->modes)) + { + modestack_mode_param(chansvs.nick, mc->chan, MTYPE_DEL, 'o', CLIENT_NAME(cu->user)); + cu->modes &= ~CSTATUS_OP; + } + + if (ircd->uses_halfops) + { + if (ircd->halfops_mode & cu->modes) + { + modestack_mode_param(chansvs.nick, mc->chan, MTYPE_DEL, ircd->halfops_mchar[1], CLIENT_NAME(cu->user)); + cu->modes &= ~ircd->halfops_mode; + } + } + + if ((CSTATUS_VOICE & cu->modes)) + { + modestack_mode_param(chansvs.nick, mc->chan, MTYPE_DEL, 'v', CLIENT_NAME(cu->user)); + cu->modes &= ~CSTATUS_VOICE; + } + + command_success_nodata(si, "Downed successfully on \2%s\2.", mc->name); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/cs_userinfo.c b/cs_userinfo.c new file mode 100644 index 0000000..5bd420e --- /dev/null +++ b/cs_userinfo.c @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2007 Jilles Tjoelker, et al + * Rights to this code are as documented in doc/LICENSE. + * + * Per-channel userinfo thingie + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/cs_userinfo", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void userinfo_check_join(hook_channel_joinpart_t *hdata); +static void cs_cmd_userinfo(sourceinfo_t *si, int parc, char *parv[]); + +command_t cs_userinfo = { "USERINFO", N_("Sets a userinfo message."), + AC_NONE, 3, cs_cmd_userinfo, { .path = "contrib/userinfo" } }; + +void _modinit(module_t *m) +{ + hook_add_event("channel_join"); + hook_add_channel_join(userinfo_check_join); + service_named_bind_command("chanserv", &cs_userinfo); +} + +void _moddeinit(module_unload_intent_t intent) +{ + hook_del_channel_join(userinfo_check_join); + service_named_unbind_command("chanserv", &cs_userinfo); +} + +/* USERINFO [user] [message] */ +static void cs_cmd_userinfo(sourceinfo_t *si, int parc, char *parv[]) +{ + mowgli_node_t *n; + myuser_t *mu; + mychan_t *mc; + chanacs_t *ca; + metadata_t *md; + unsigned int restrictflags; + + if (parc < 1) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "USERINFO"); + command_fail(si, fault_needmoreparams, _("Syntax: USERINFO [target] [info]")); + return; + } + + mc = mychan_find(parv[0]); + if (!mc) + { + command_fail(si, fault_nosuch_target, _("\2%s\2 is not registered."), parv[0]); + return; + } + + if (metadata_find(mc, "private:close:closer") && !has_priv(si, PRIV_CHAN_AUSPEX)) + { + command_fail(si, fault_noprivs, _("\2%s\2 is closed."), mc->name); + return; + } + + restrictflags = chanacs_source_flags(mc, si); + + if (parc == 1) + { + if (!(restrictflags & CA_ACLVIEW)) + { + command_fail(si, fault_noprivs, _("You are not authorized to perform this operation.")); + return; + } + command_success_nodata(si, _("Nickname Info")); + command_success_nodata(si, "------------------- ---------------"); + + MOWGLI_ITER_FOREACH(n, mc->chanacs.head) + { + ca = n->data; + if (ca->entity == NULL) + continue; + md = metadata_find(ca, "userinfo"); + if (md == NULL) + continue; + command_success_nodata(si, "%-19s %s", ca->entity->name, md->value); + } + + command_success_nodata(si, "------------------- ---------------"); + command_success_nodata(si, _("End of \2%s\2 USERINFO listing."), mc->name); + logcommand(si, CMDLOG_GET, "USERINFO:LIST: \2%s\2", mc->name); + } + else + { + if (!(restrictflags & CA_FLAGS)) + { + command_fail(si, fault_noprivs, _("You are not authorized to perform this operation.")); + return; + } + mu = myuser_find_ext(parv[1]); + if (mu == NULL) + { + command_fail(si, fault_nosuch_target, _("\2%s\2 is not registered."), parv[1]); + return; + } + ca = chanacs_find_literal(mc, entity(mu), 0); + if (ca == NULL || ca->level & CA_AKICK) + { + command_fail(si, fault_nosuch_target, _("\2%s\2 has no access to \2%s\2."), entity(mu)->name, mc->name); + return; + } + if (ca->level & ~allow_flags(mc, restrictflags)) + { + command_fail(si, fault_noprivs, _("You are not authorized to modify the access entry for \2%s\2 on \2%s\2."), entity(mu)->name, mc->name); + return; + } + if (parc == 2) + { + metadata_delete(ca, "userinfo"); + command_success_nodata(si, _("Deleted userinfo for \2%s\2 on \2%s\2."), + entity(mu)->name, mc->name); + logcommand(si, CMDLOG_SET, "USERINFO:DEL: \2%s\2 on \2%s\2", entity(mu)->name, mc->name); + return; + } + + metadata_add(ca, "userinfo", parv[2]); + command_success_nodata(si, _("Added userinfo for \2%s\2 on \2%s\2."), + entity(mu)->name, mc->name); + logcommand(si, CMDLOG_SET, "USERINFO:ADD: \2%s\2 on \2%s\2 (\2%s\2)", entity(mu)->name, mc->name, parv[2]); + } + return; +} + +static void userinfo_check_join(hook_channel_joinpart_t *hdata) +{ + chanuser_t *cu = hdata->cu; + myuser_t *mu; + mychan_t *mc; + chanacs_t *ca; + metadata_t *md; + + if (cu == NULL) + return; + if (!(cu->user->server->flags & SF_EOB)) + return; + mu = cu->user->myuser; + mc = MYCHAN_FROM(cu->chan); + if (mu == NULL || mc == NULL) + return; + ca = chanacs_find_literal(mc, entity(mu), 0); + if (ca == NULL || ca->level & CA_AKICK) + return; + if (!(md = metadata_find(ca, "userinfo"))) + return; + msg(chansvs.nick, cu->chan->name, "[%s] %s", cu->user->nick, md->value); +} diff --git a/dnsbl.c b/dnsbl.c new file mode 100644 index 0000000..78d7127 --- /dev/null +++ b/dnsbl.c @@ -0,0 +1,615 @@ +/* + * charybdis: A slightly useful ircd. + * blacklist.c: Manages DNS blacklist entries and lookups + * + * Copyright (C) 2006-2008 charybdis development team + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. +* +*/ + +/* To configure/use, add a block to the general{} section of your atheme.conf + * like this: + * + * blacklists { + * "dnsbl.dronebl.org"; + * "rbl.efnetrbl.org"; + * }; + */ + +#include "atheme.h" +#include "conf.h" + +DECLARE_MODULE_V1 +( + "contrib/dnsbl", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +mowgli_list_t blacklist_list = { NULL, NULL, 0 }; +mowgli_patricia_t **os_set_cmdtree; +static char *action = NULL; + +/* A configured DNSBL */ +struct Blacklist { + unsigned int status; /* If CONF_ILLEGAL, delete when no clients */ + int refcount; + char host[IRCD_RES_HOSTLEN + 1]; + unsigned int hits; + time_t lastwarning; +}; + +/* A lookup in progress for a particular DNSBL for a particular client */ +struct BlacklistClient { + struct Blacklist *blacklist; + user_t *u; + dns_query_t dns_query; + mowgli_node_t node; +}; + +struct dnsbl_exempt_ { + char *ip; + time_t exempt_ts; + char *creator; + char *reason; +}; + +typedef struct dnsbl_exempt_ dnsbl_exempt_t; + +mowgli_list_t dnsbl_elist; + +static void os_cmd_set_dnsblaction(sourceinfo_t *si, int parc, char *parv[]); +static void dnsbl_hit(user_t *u, struct Blacklist *blptr); +static void os_cmd_dnsblexempt(sourceinfo_t *si, int parc, char *parv[]); +static void os_cmd_dnsblscan(sourceinfo_t *si, int parc, char *parv[]); +static void write_dnsbl_exempt_db(database_handle_t *db); +static void db_h_ble(database_handle_t *db, const char *type); +static void lookup_blacklists(user_t *u); + +command_t os_set_dnsblaction = { "DNSBLACTION", N_("Changes what happens to a user when they hit a DNSBL."), PRIV_USER_ADMIN, 1, os_cmd_set_dnsblaction, { .path = "contrib/set_dnsblaction" } }; +command_t os_dnsblexempt = { "DNSBLEXEMPT", N_("Manage the list of IP's exempt from DNSBL checking."), PRIV_USER_ADMIN, 3, os_cmd_dnsblexempt, { .path = "contrib/dnsblexempt" } }; +command_t os_dnsblscan = { "DNSBLSCAN", N_("Manually scan if a user is in a DNSBL."), PRIV_USER_ADMIN, 1, os_cmd_dnsblscan, { .path = "contrib/dnsblscan" } }; + +static inline mowgli_list_t *dnsbl_queries(user_t *u) +{ + mowgli_list_t *l; + + return_val_if_fail(u != NULL, NULL); + + l = privatedata_get(u, "dnsbl:queries"); + if (l != NULL) + return l; + + l = mowgli_list_create(); + privatedata_set(u, "dnsbl:queries", l); + + return l; +} + +static void os_cmd_set_dnsblaction(sourceinfo_t *si, int parc, char *parv[]) +{ + char *act = parv[0]; + + if (!act) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "DNSBLACTION"); + command_fail(si, fault_needmoreparams, _("Syntax: SET DNSBLACTION ")); + return; + } + + if (!strcasecmp("SNOOP", act) || !strcasecmp("KLINE", act) || !strcasecmp("NOTIFY", act)) + { + action = sstrdup(act); + command_success_nodata(si, _("DNSBLACTION successfully set to \2%s\2"), act); + logcommand(si, CMDLOG_ADMIN, "SET:DNSBLACTION: \2%s\2", act); + return; + } + else if (!strcasecmp("NONE", act)) + { + action = NULL; + command_success_nodata(si, _("DNSBLACTION successfully set to \2%s\2"), act); + logcommand(si, CMDLOG_ADMIN, "SET:DNSBLACTION: \2%s\2", act); + return; + } + else + { + command_fail(si, fault_badparams, _("Invalid action given.")); + return; + } +} + +static void os_cmd_dnsblexempt(sourceinfo_t *si, int parc, char *parv[]) +{ + char *command = parv[0]; + char *ip = parv[1]; + char *reason = parv[2]; + mowgli_node_t *n, *tn; + dnsbl_exempt_t *de; + + if (!command) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "DNSBLEXEMPT"); + command_fail(si, fault_needmoreparams, _("Syntax: DNSBLEXEMPT ADD|DEL|LIST [ip] [reason]")); + return; + } + + if (!strcasecmp("ADD", command)) + { + + if (!ip || !reason) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "DNSBLEXEMPT"); + command_fail(si, fault_needmoreparams, _("Syntax: DNSBLEXEMPT ADD ")); + return; + } + + MOWGLI_ITER_FOREACH(n, dnsbl_elist.head) + { + de = n->data; + + if (!irccasecmp(de->ip, ip)) + { + command_success_nodata(si, _("\2%s\2 has already been entered into the DNSBL exempts list."), ip); + return; + } + } + + de = smalloc(sizeof(dnsbl_exempt_t)); + de->exempt_ts = CURRTIME;; + de->creator = sstrdup(get_source_name(si)); + de->reason = sstrdup(reason); + de->ip = sstrdup(ip); + mowgli_node_add(de, mowgli_node_create(), &dnsbl_elist); + + command_success_nodata(si, _("You have added \2%s\2 to the DNSBL exempts list."), ip); + logcommand(si, CMDLOG_ADMIN, "DNSBL:EXEMPT:ADD: \2%s\2 \2%s\2", ip, reason); + } + else if (!strcasecmp("DEL", command)) + { + + if (!ip) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "DNSBLEXEMPT"); + command_fail(si, fault_needmoreparams, _("Syntax: DNSBLEXEMPT DEL ")); + return; + } + + MOWGLI_ITER_FOREACH_SAFE(n, tn, dnsbl_elist.head) + { + de = n->data; + + if (!irccasecmp(de->ip, ip)) + { + logcommand(si, CMDLOG_SET, "DNSBL:EXEMPT:DEL: \2%s\2", de->ip); + command_success_nodata(si, _("DNSBL Exempt IP \2%s\2 has been deleted."), de->ip); + + mowgli_node_delete(n, &dnsbl_elist); + + free(de->creator); + free(de->reason); + free(de->ip); + free(de); + + return; + } + } + command_success_nodata(si, _("IP \2%s\2 not found in DNSBL Exempt database."), ip); + } + else if (!strcasecmp("LIST", command)) + { + char buf[BUFSIZE]; + struct tm tm; + + MOWGLI_ITER_FOREACH(n, dnsbl_elist.head) + { + de = n->data; + + tm = *localtime(&de->exempt_ts); + strftime(buf, BUFSIZE, TIME_FORMAT, &tm); + command_success_nodata(si, "IP: \2%s\2 Reason: \2%s\2 (%s - %s)", + de->ip, de->reason, de->creator, buf); + } + command_success_nodata(si, "End of list."); + logcommand(si, CMDLOG_GET, "DNSBL:EXEMPT:LIST"); + } + else + { + command_fail(si, fault_needmoreparams, STR_INVALID_PARAMS, "DNSBLEXEMPT"); + command_fail(si, fault_needmoreparams, _("Syntax: DNSBLEXEMPT ADD|DEL|LIST [ip] [reason]")); + return; + } +} + +static void os_cmd_dnsblscan(sourceinfo_t *si, int parc, char *parv[]) +{ + char *user = parv[0]; + user_t *u; + + if (!user) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "DNSBLSCAN"); + command_fail(si, fault_needmoreparams, _("Syntax: DNSBLSCAN ")); + return; + } + + if ((u = user_find_named(user))) + { + lookup_blacklists(u); + logcommand(si, CMDLOG_ADMIN, "DNSBLSCAN: %s", user); + command_success_nodata(si, "%s has been scanned.", user); + return; + } + else + { + command_fail(si, fault_badparams, "User %s is not on the network, you can not scan them.", user); + return; + } +} + +/* private interfaces */ +static struct Blacklist *find_blacklist(char *name) +{ + mowgli_node_t *n; + + MOWGLI_ITER_FOREACH(n, blacklist_list.head) + { + struct Blacklist *blptr = (struct Blacklist *) n->data; + + if (!strcasecmp(blptr->host, name)) + return blptr; + } + + return NULL; +} + +static void blacklist_dns_callback(void *vptr, dns_reply_t *reply) +{ + struct BlacklistClient *blcptr = (struct BlacklistClient *) vptr; + int listed = 0; + mowgli_list_t *l; + + if (blcptr == NULL) + return; + + if (blcptr->u == NULL) + { + free(blcptr); + return; + } + + if (reply != NULL) + { + /* only accept 127.x.y.z as a listing */ + if (reply->addr.saddr.sa.sa_family == AF_INET && + !memcmp(&((struct sockaddr_in *)&reply->addr)->sin_addr, "\177", 1)) + listed++; + else if (blcptr->blacklist->lastwarning + 3600 < CURRTIME) + { + slog(LG_DEBUG, + "Garbage reply from blacklist %s", + blcptr->blacklist->host); + blcptr->blacklist->lastwarning = CURRTIME; + } + } + + /* they have a blacklist entry for this client */ + if (listed) + { + dnsbl_hit(blcptr->u, blcptr->blacklist); + return; + } + + l = dnsbl_queries(blcptr->u); + mowgli_node_delete(&blcptr->node, l); + + free(blcptr); +} + +/* XXX: no IPv6 implementation, not to concerned right now though. */ +static void initiate_blacklist_dnsquery(struct Blacklist *blptr, user_t *u) +{ + struct BlacklistClient *blcptr = malloc(sizeof(struct BlacklistClient)); + char buf[IRCD_RES_HOSTLEN + 1]; + int ip[4]; + mowgli_list_t *l; + + blcptr->blacklist = blptr; + blcptr->u = u; + + blcptr->dns_query.ptr = blcptr; + blcptr->dns_query.callback = blacklist_dns_callback; + + /* A sscanf worked fine for chary for many years, it'll be fine here */ + sscanf(u->ip, "%d.%d.%d.%d", &ip[3], &ip[2], &ip[1], &ip[0]); + + /* becomes 2.0.0.127.torbl.ahbl.org or whatever */ + snprintf(buf, sizeof buf, "%d.%d.%d.%d.%s", ip[0], ip[1], ip[2], ip[3], blptr->host); + + gethost_byname_type(buf, &blcptr->dns_query, T_A); + + l = dnsbl_queries(u); + mowgli_node_add(blcptr, &blcptr->node, l); + blptr->refcount++; +} + +/* public interfaces */ +static struct Blacklist *new_blacklist(char *name) +{ + struct Blacklist *blptr; + + if (name == NULL) + return NULL; + + blptr = find_blacklist(name); + + if (blptr == NULL) + { + blptr = malloc(sizeof(struct Blacklist)); + mowgli_node_add(blptr, mowgli_node_create(), &blacklist_list); + } + + mowgli_strlcpy(blptr->host, name, IRCD_RES_HOSTLEN + 1); + blptr->lastwarning = 0; + + return blptr; +} + +static void lookup_blacklists(user_t *u) +{ + mowgli_node_t *n; + + MOWGLI_ITER_FOREACH(n, blacklist_list.head) + { + struct Blacklist *blptr = (struct Blacklist *) n->data; + blptr->status = 0; + + if (u == NULL) + return; + + initiate_blacklist_dnsquery(blptr, u); + } +} + +/* This appears to be unnecessary on Atheme and only causes crashes so #if 0 + * it out, at least for now. --jdhore + */ +#if 0 +static void abort_blacklist_queries(user_t *u) +{ + mowgli_node_t *n, *tn; + mowgli_list_t *l; + struct BlacklistClient *blcptr; + + if (u == NULL) + return; + + l = dnsbl_queries(u); + + MOWGLI_ITER_FOREACH_SAFE(n, tn, l->head) + { + blcptr = n->data; + mowgli_node_delete(&blcptr->node, l); + unref_blacklist(blcptr->blacklist); + delete_resolver_queries(&blcptr->dns_query); + free(blcptr); + } +} +#endif + +static void destroy_blacklists(void) +{ + mowgli_node_t *n, *tn; + struct Blacklist *blptr; + + MOWGLI_ITER_FOREACH_SAFE(n, tn, blacklist_list.head) + { + blptr = n->data; + blptr->hits = 0; /* keep it simple and consistent */ + free(n->data); + mowgli_node_delete(n, &blacklist_list); + mowgli_node_free(n); + } +} + +static int dnsbl_config_handler(mowgli_config_file_entry_t *ce) +{ + mowgli_config_file_entry_t *cce; + + MOWGLI_ITER_FOREACH(cce, ce->entries) + { + char *line = sstrdup(cce->varname); + new_blacklist(line); + } + + return 0; +} + +static void dnsbl_config_purge(void *unused) +{ + destroy_blacklists(); +} + +static void check_dnsbls(hook_user_nick_t *data) +{ + user_t *u = data->u; + mowgli_node_t *n; + + if (!u) + return; + + if (is_internal_client(u)) + return; + + if (!action) + return; + + MOWGLI_ITER_FOREACH(n, dnsbl_elist.head) + { + dnsbl_exempt_t *de = n->data; + + if (!irccasecmp(de->ip, u->ip)) + return; + } + + lookup_blacklists(u); +} + +static void dnsbl_hit(user_t *u, struct Blacklist *blptr) +{ + service_t *svs; + + svs = service_find("operserv"); + + if (!strcasecmp("SNOOP", action)) + { + slog(LG_INFO, "DNSBL: \2%s\2!%s@%s [%s] is listed in DNS Blacklist %s.", u->nick, u->user, u->host, u->gecos, blptr->host); + /* abort_blacklist_queries(u); */ + return; + } + else if (!strcasecmp("NOTIFY", action)) + { + slog(LG_INFO, "DNSBL: \2%s\2!%s@%s [%s] is listed in DNS Blacklist %s.", u->nick, u->user, u->host, u->gecos, blptr->host); + notice(svs->nick, u->nick, "Your IP address %s is listed in DNS Blacklist %s", u->ip, blptr->host); + /* abort_blacklist_queries(u); */ + return; + } + else if (!strcasecmp("KLINE", action)) + { + slog(LG_INFO, "DNSBL: k-lining \2%s\2!%s@%s [%s] who is listed in DNS Blacklist %s.", u->nick, u->user, u->host, u->gecos, blptr->host); + /* abort_blacklist_queries(u); */ + notice(svs->nick, u->nick, "Your IP address %s is listed in DNS Blacklist %s", u->ip, blptr->host); + kline_sts("*", "*", u->host, 86400, "Banned (DNS Blacklist)"); + return; + } +} + +static void osinfo_hook(sourceinfo_t *si) +{ + mowgli_node_t *n; + + if (action) + command_success_nodata(si, "Action taken when a user is an a DNSBL: %s", action); + else + command_success_nodata(si, "Action taken when a user is an a DNSBL: %s", "None"); + + MOWGLI_ITER_FOREACH(n, blacklist_list.head) + { + struct Blacklist *blptr = (struct Blacklist *) n->data; + + command_success_nodata(si, "Blacklist(s): %s", blptr->host); + } +} + +static void write_dnsbl_exempt_db(database_handle_t *db) +{ + mowgli_node_t *n; + + MOWGLI_ITER_FOREACH(n, dnsbl_elist.head) + { + dnsbl_exempt_t *de = n->data; + + db_start_row(db, "BW"); + db_write_word(db, de->ip); + db_write_time(db, de->exempt_ts); + db_write_word(db, de->creator); + db_write_word(db, de->reason); + db_commit_row(db); + } +} + +static void db_h_ble(database_handle_t *db, const char *type) +{ + const char *ip = db_sread_word(db); + time_t exempt_ts = db_sread_time(db); + const char *creator = db_sread_word(db); + const char *reason = db_sread_word(db); + + dnsbl_exempt_t *de = smalloc(sizeof(dnsbl_exempt_t)); + + de->ip = sstrdup(ip); + de->exempt_ts = exempt_ts; + de->creator = sstrdup(creator); + de->reason = sstrdup(reason); + + mowgli_node_add(de, mowgli_node_create(), &dnsbl_elist); +} + +void +_modinit(module_t *m) +{ + MODULE_TRY_REQUEST_SYMBOL(m, os_set_cmdtree, "operserv/set", "os_set_cmdtree"); + + if (!module_find_published("backend/opensex")) + { + slog(LG_INFO, "Module %s requires use of the OpenSEX database backend, refusing to load.", m->name); + m->mflags = MODTYPE_FAIL; + return; + } + + hook_add_db_write(write_dnsbl_exempt_db); + + db_register_type_handler("BLE", db_h_ble); + + service_named_bind_command("operserv", &os_dnsblexempt); + service_named_bind_command("operserv", &os_dnsblscan); + + hook_add_event("config_purge"); + hook_add_config_purge(dnsbl_config_purge); + + hook_add_event("user_add"); + hook_add_user_add(check_dnsbls); + + hook_add_event("operserv_info"); + hook_add_operserv_info(osinfo_hook); + + add_dupstr_conf_item("dnsbl_action", &conf_gi_table, 0, &action, NULL); + add_conf_item("BLACKLISTS", &conf_gi_table, dnsbl_config_handler); + command_add(&os_set_dnsblaction, *os_set_cmdtree); +} + +void +_moddeinit(module_unload_intent_t intent) +{ + hook_del_db_write(write_dnsbl_exempt_db); + hook_del_user_add(check_dnsbls); + hook_del_config_purge(dnsbl_config_purge); + hook_del_operserv_info(osinfo_hook); + + db_unregister_type_handler("BLE"); + + del_conf_item("dnsbl_action", &conf_gi_table); + del_conf_item("BLACKLISTS", &conf_gi_table); + command_delete(&os_set_dnsblaction, *os_set_cmdtree); + service_named_unbind_command("operserv", &os_dnsblexempt); + service_named_unbind_command("operserv", &os_dnsblscan); +} +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/gen_echoserver.c b/gen_echoserver.c new file mode 100644 index 0000000..9f64470 --- /dev/null +++ b/gen_echoserver.c @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2005 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * An echo server. (proof of concept for integrated XMLRPC HTTPD) + * + */ + +#include "atheme.h" +#include "datastream.h" + +DECLARE_MODULE_V1 +( + "contrib/gen_echoserver", false, _modinit, _moddeinit, + PACKAGE_STRING, + "William Pitcock " +); + +connection_t *listener; + +static int my_read(connection_t *cptr, char *buf) +{ + int n; + + if ((n = read(cptr->fd, buf, BUFSIZE)) > 0) + { + buf[n] = '\0'; + cnt.bin += n; + } + + return n; +} + +static void do_packet(connection_t *cptr, char *buf) +{ + char *ptr, buf2[BUFSIZE * 2]; + static char tmp[BUFSIZE * 2 + 1]; + + while ((ptr = strchr(buf, '\n'))) + { + snprintf(buf2, (BUFSIZE * 2), "%s%s", tmp, buf); + *tmp = '\0'; + + slog(LG_DEBUG, "-{incoming}-> %s", buf2); + sendq_add(cptr, buf2, strlen(buf2)); + + buf = ptr + 1; + } + + if (*buf) + { + mowgli_strlcpy(tmp, buf, BUFSIZE * 2); + tmp[BUFSIZE * 2] = '\0'; + } +} + +static void my_rhandler(connection_t * cptr) +{ + char buf[BUFSIZE * 2]; + + if (!my_read(cptr, buf)) + connection_close(cptr); + + do_packet(cptr, buf); +} + +static void do_listen(connection_t *cptr) +{ + connection_t *newptr; + newptr = connection_accept_tcp(cptr, my_rhandler, NULL); + slog(LG_DEBUG, "do_listen(): accepted %d", cptr->fd); +} + +void _modinit(module_t *m) +{ + listener = connection_open_listener_tcp("127.0.0.1", 7100, do_listen); +} + +void _moddeinit(module_unload_intent_t intent) +{ + connection_close(listener); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/gen_listenerdemo.c b/gen_listenerdemo.c new file mode 100644 index 0000000..ee663e3 --- /dev/null +++ b/gen_listenerdemo.c @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2005 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * Listener code demo. + * + */ + +#include "atheme.h" +#include "datastream.h" + +DECLARE_MODULE_V1 +( + "contrib/gen_listenerdemo", false, _modinit, _moddeinit, + PACKAGE_STRING, + "William Pitcock " +); + +connection_t *listener; + +static int my_read(connection_t * cptr, char *buf) +{ + int n; + + if ((n = read(cptr->fd, buf, BUFSIZE)) > 0) + { + buf[n] = '\0'; + cnt.bin += n; + } + + return n; +} + +static void do_packet(char *buf) +{ + char *ptr, buf2[BUFSIZE * 2]; + static char tmp[BUFSIZE * 2 + 1]; + + while ((ptr = strchr(buf, '\n'))) + { + *ptr = '\0'; + + if (ptr != buf && *(ptr - 1) == '\r') + *(ptr - 1) = '\0'; + + snprintf(buf2, (BUFSIZE * 2), "%s%s", tmp, buf); + *tmp = '\0'; + + slog(LG_DEBUG, "-{incoming}-> %s", buf2); + + buf = ptr + 1; + } + + if (*buf) + { + mowgli_strlcpy(tmp, buf, BUFSIZE * 2); + tmp[BUFSIZE * 2] = '\0'; + } +} + +static void my_rhandler(connection_t * cptr) +{ + char buf[BUFSIZE * 2]; + + if (!my_read(cptr, buf)) + connection_close(cptr); + + do_packet(buf); +} + +static void do_listen(connection_t *cptr) +{ + connection_t *newptr; + newptr = connection_accept_tcp(cptr, my_rhandler, NULL); + slog(LG_DEBUG, "do_listen(): accepted %d", cptr->fd); +} + +void _modinit(module_t *m) +{ + listener = connection_open_listener_tcp("127.0.0.1", 7100, do_listen); +} + +void _moddeinit(module_unload_intent_t intent) +{ + connection_close(listener); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/gen_vhostonreg.c b/gen_vhostonreg.c new file mode 100644 index 0000000..bce4a31 --- /dev/null +++ b/gen_vhostonreg.c @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2005-2006 William Pitcock, et al. + * Rights to this code are as documented in doc/LICENSE. + * + * Sets usercloak metadata on register. + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/gen_vhostonreg", false, _modinit, _moddeinit, + "$Revision: 7785 $", + "Atheme Development Group " +); + +/* allow us-ascii letters, digits and the following characters */ +#define VALID_SPECIALS "-" + +static int counter; + +static void handle_verify_register(hook_user_req_t *req); +static void hook_user_identify(user_t *u); + +void _modinit(module_t *m) +{ + hook_add_event("user_verify_register"); + hook_add_user_verify_register(handle_verify_register); + hook_add_event("user_identify"); + hook_add_user_identify(hook_user_identify); + counter = (CURRTIME << 8) % 100000; + if (counter < 0) + counter += 100000; +} + +void _moddeinit(module_unload_intent_t intent) +{ + hook_del_user_verify_register(handle_verify_register); + hook_del_user_identify(hook_user_identify); +} + +static void user_add_host(myuser_t *mu) +{ + int maxlen1, i; + char newhost[HOSTLEN]; + const char *p; + bool invalidchar = false; + + maxlen1 = HOSTLEN - 2 - strlen(me.hidehostsuffix); + if (maxlen1 < 9) + return; + p = entity(mu)->name; + i = 0; + while (i < maxlen1 && *p != '\0') + { + if (isalnum(*p) || strchr(VALID_SPECIALS, *p)) + newhost[i++] = *p; + else + invalidchar = true; + p++; + } + if (invalidchar || *p != '\0') + { + if (i > maxlen1 - 6) + i = maxlen1 - 6; + snprintf(newhost + i, sizeof newhost - i, "-%05d", counter); + counter++; + if (counter >= 100000) + counter = 0; + if (nicksvs.me != NULL) + { + myuser_notice(nicksvs.nick, mu, "Your account name cannot be used in a vhost directly. To ensure uniqueness, a number was added."); + myuser_notice(nicksvs.nick, mu, "To avoid this, register an account name containing only letters, digits and %s.", VALID_SPECIALS); + if (!nicksvs.no_nick_ownership && command_find(nicksvs.me->commands, "GROUP")) + myuser_notice(nicksvs.nick, mu, "If you drop %s you can group it to your new account.", entity(mu)->name); + } + } + else + newhost[i] = '\0'; + mowgli_strlcat(newhost, ".", sizeof newhost); + mowgli_strlcat(newhost, me.hidehostsuffix, sizeof newhost); + + metadata_add(mu, "private:usercloak", newhost); +} + +static void handle_verify_register(hook_user_req_t *req) +{ + myuser_t *mu = req->mu; + mowgli_node_t *n; + user_t *u; + + if (me.hidehostsuffix == NULL) + return; + + user_add_host(mu); + + MOWGLI_ITER_FOREACH(n, mu->logins.head) + { + u = n->data; + hook_call_user_identify(u); /* XXX */ + } +} + +static void hook_user_identify(user_t *u) +{ + /* if they have an existing cloak, don't do anything */ + if ((metadata_find(u->myuser, "private:usercloak")) || (me.hidehostsuffix == NULL)) + return; + + /* they do not, add one. */ + user_add_host(u->myuser); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/graphtastical.c b/graphtastical.c new file mode 100644 index 0000000..633e4c0 --- /dev/null +++ b/graphtastical.c @@ -0,0 +1,198 @@ +/* + * Copyright (c) 2007 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * Creates a .dot file for use with neato which displays + * user->channel relationships. + * + * == How to generate the graphs and How It Works == + * Graphtastical creates a .dot file for graphviz's neato + * filter to use. The DOT language describes a graph's + * structure to graphviz in an opaque way. + * + * Because Graphviz nodes use unique identifiers for + * interconnection, the channels.dot file contains also + * information about social networks. + * + * Eventually Graphtastical will dump other graph datafiles + * too. + * + * To make a file from the data dumped by Graphtastical, + * the following commands will do: + * + * $ cat channels.dot | neato -Tgif -o map-channels.gif + * $ cat channels.dot | neato -Tsvg -o map-channels.svg + * + * Some maps (for larger networks) are going to be large, + * so you may want to provide links to both the GIF and + * SVG files as some people may only be able to make use of + * one or the other. Why that is, I'm not sure, and I'm not + * covering it here. + * + * == Privacy concerns == + * If you are running Graphtastical on a network that has + * privacy concerns; you probably shouldn't. + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/graphtastical", true, _modinit, NULL, + PACKAGE_STRING, + "Atheme Development Group " +); + +static mowgli_eventloop_timer_t *channels_timer = NULL; +static mowgli_eventloop_timer_t *uchannels_timer = NULL; + +/* write channels.dot */ +static void write_channels_dot_file(void *arg) +{ + mychan_t *mc; + chanacs_t *ca; + mowgli_node_t *tn; + FILE *f; + int errno1, was_errored = 0; + mowgli_patricia_iteration_state_t state; + int root = 1; + mychan_t *pmc; + + errno = 0; + + /* write to a temporary file first */ + if (!(f = fopen(DATADIR "/channels.dot.new", "w"))) + { + errno1 = errno; + slog(LG_ERROR, "graphtastical: cannot create channels.dot.new: %s", strerror(errno1)); + return; + } + + fprintf(f, "graph channels {\n"); + fprintf(f, "edge [color=blue len=7.5 fontname=\"Verdana\" fontsize=8]\n"); + fprintf(f, "node [fontname=\"Verdana\" fontsize=8]\n"); + + slog(LG_DEBUG, "graphtastical: dumping mychans"); + + MOWGLI_PATRICIA_FOREACH(mc, &state, mclist) + { + fprintf(f, "\"%s\"", mc->name); + + if (!root) + fprintf(f, "-- \"%s\"", pmc->name); + + pmc = mc; + + fprintf(f, "[fontname=\"Verdana\" fontsize=8]\n"); + + MOWGLI_ITER_FOREACH(tn, mc->chanacs.head) + { + ca = (chanacs_t *)tn->data; + + if (ca->level & CA_AKICK) + continue; + + fprintf(f, "\"%s\" -- \"%s\" [fontname=\"Verdana\" fontsize=8]\n", ca->entity ? ca->entity->name : ca->host, mc->name); + } + } + + fprintf(f, "}\n"); + + was_errored = ferror(f); + was_errored |= fclose(f); + if (was_errored) + { + errno1 = errno; + slog(LG_ERROR, "graphtastical: cannot write to channels.dot.new: %s", strerror(errno1)); + return; + } + + /* now, replace the old database with the new one, using an atomic rename */ + if ((srename(DATADIR "/channels.dot.new", DATADIR "/channels.dot")) < 0) + { + errno1 = errno; + slog(LG_ERROR, "graphtastical: cannot rename channels.dot.new to channels.dot: %s", strerror(errno1)); + return; + } +} + +/* write uchannels.dot */ +static void write_uchannels_dot_file(void *arg) +{ + channel_t *c; + chanuser_t *cu; + mowgli_node_t *tn; + FILE *f; + int errno1, was_errored = 0; + mowgli_patricia_iteration_state_t state; + + errno = 0; + + /* write to a temporary file first */ + if (!(f = fopen(DATADIR "/uchannels.dot.new", "w"))) + { + errno1 = errno; + slog(LG_ERROR, "graphtastical: cannot create channels.dot.new: %s", strerror(errno1)); + return; + } + + fprintf(f, "graph uchannels {\n"); + fprintf(f, "edge [color=blue len=7.5 fontname=\"Verdana\" fontsize=8]\n"); + fprintf(f, "node [fontname=\"Verdana\" fontsize=8]\n"); + + slog(LG_DEBUG, "graphtastical: dumping chans"); + + MOWGLI_PATRICIA_FOREACH(c, &state, chanlist) + { + fprintf(f, "\"%s\"", c->name); + + fprintf(f, "[fontname=\"Verdana\" fontsize=8]\n"); + + MOWGLI_ITER_FOREACH(tn, c->members.head) + { + cu = (chanuser_t *)tn->data; + + fprintf(f, "\"%s\" -- \"%s\" [fontname=\"Verdana\" fontsize=8]\n", cu->user->nick, c->name); + } + } + + fprintf(f, "}\n"); + + was_errored = ferror(f); + was_errored |= fclose(f); + if (was_errored) + { + errno1 = errno; + slog(LG_ERROR, "graphtastical: cannot write to uchannels.dot.new: %s", strerror(errno1)); + return; + } + + /* now, replace the old database with the new one, using an atomic rename */ + if ((srename(DATADIR "/uchannels.dot.new", DATADIR "/uchannels.dot")) < 0) + { + errno1 = errno; + slog(LG_ERROR, "graphtastical: cannot rename uchannels.dot.new to uchannels.dot: %s", strerror(errno1)); + return; + } +} + +void _modinit(module_t *m) +{ + write_channels_dot_file(NULL); + write_uchannels_dot_file(NULL); + + channels_timer = mowgli_timer_add(base_eventloop, "write_channels_dot_file", write_channels_dot_file, NULL, 60); + uchannels_timer = mowgli_timer_add(base_eventloop, "write_uchannels_dot_file", write_uchannels_dot_file, NULL, 60); +} + +void _moddeinit(module_unload_intent_t intent) +{ + mowgli_timer_destroy(base_eventloop, channels_timer); + mowgli_timer_destroy(base_eventloop, uchannels_timer); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/gs_roulette.c b/gs_roulette.c new file mode 100644 index 0000000..d136bec --- /dev/null +++ b/gs_roulette.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2005-2006 William Pitcock et al + * Rights to this code are documented in doc/LICENSE. + * + * Russian Roulette game. Will actually /KILL the user that gets "shot". + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/gs_roulette", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void command_roulette(sourceinfo_t *si, int parc, char *parv[]); + +command_t cmd_roulette = { "ROULETTE", N_("A game of Russian Roulette."), AC_NONE, 0, command_roulette, { .path = "contrib/roulette" } }; + +void _modinit(module_t * m) +{ + service_named_bind_command("gameserv", &cmd_roulette); + + service_named_bind_command("chanserv", &cmd_roulette); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("gameserv", &cmd_roulette); + + service_named_unbind_command("chanserv", &cmd_roulette); +} + +/* + * Handle reporting for both fantasy commands and normal commands in GameServ + * quickly and easily. Of course, sourceinfo has a vtable that can be manipulated, + * but this is quicker and easier... -- nenolod + */ +static void gs_command_report(sourceinfo_t *si, const char *fmt, ...) +{ + va_list args; + char buf[BUFSIZE]; + + va_start(args, fmt); + vsnprintf(buf, BUFSIZE, fmt, args); + va_end(args); + + if (si->c != NULL) + msg(chansvs.nick, si->c->name, "%s", buf); + else + command_success_nodata(si, "%s", buf); + + if (!strcasecmp(buf, "*BANG*")) + kill_user(si->service->me, si->su, "Lost at Russian Roulette."); +} + +static void command_roulette(sourceinfo_t *si, int parc, char *parv[]) +{ + static const char *roulette_responses[2] = { + N_("*BANG*"), + N_("*CLICK*") + }; + + srand(time(NULL)); + gs_command_report(si, "%s", roulette_responses[rand() % 6 == 0]); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/ircd_announceserv.c b/ircd_announceserv.c new file mode 100644 index 0000000..4f29020 --- /dev/null +++ b/ircd_announceserv.c @@ -0,0 +1,395 @@ +/* + * Copyright (c) 2005 Atheme Development Group + * Rights to this code are documented in doc/LICENSE. + * + * This file contains the main() routine. + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/ircd_announceserv", false, _modinit, _moddeinit, + PACKAGE_STRING, + "JD and Taros" +); + +service_t *announcesvs; + +static void as_cmd_help(sourceinfo_t *si, int parc, char *parv[]); +static void account_drop_request(myuser_t *mu); +static void as_cmd_request(sourceinfo_t *si, int parc, char *parv[]); +static void as_cmd_waiting(sourceinfo_t *si, int parc, char *parv[]); +static void as_cmd_reject(sourceinfo_t *si, int parc, char *parv[]); +static void as_cmd_activate(sourceinfo_t *si, int parc, char *parv[]); +static void as_cmd_cancel(sourceinfo_t *si, int parc, char *parv[]); +static void write_asreqdb(database_handle_t *db); +static void db_h_ar(database_handle_t *db, const char *type); + +command_t as_help = { "HELP", N_(N_("Displays contextual help information.")), AC_NONE, 2, as_cmd_help, { .path = "help/help" } }; +command_t as_request = { "REQUEST", N_("Requests new announcement."), AC_AUTHENTICATED, 2, as_cmd_request, { .path = "contrib/as_request" } }; +command_t as_waiting = { "WAITING", N_("Lists announcements currently waiting for activation."), PRIV_GLOBAL, 1, as_cmd_waiting, { .path = "contrib/as_waiting" } }; +command_t as_reject = { "REJECT", N_("Reject the requested announcement for the given nick."), PRIV_GLOBAL, 2, as_cmd_reject, { .path = "contrib/as_reject" } }; +command_t as_activate = { "ACTIVATE", N_("Activate the requested announcement for a given nick."), PRIV_GLOBAL, 2, as_cmd_activate, { .path = "contrib/as_activate" } }; +command_t as_cancel = { "CANCEL", N_("Cancels your requested announcement."), AC_AUTHENTICATED, 0, as_cmd_cancel, { .path = "contrib/as_cancel" } }; + +struct asreq_ { + char *nick; + char *subject; + time_t announce_ts; + char *creator; + char *text; +}; + +typedef struct asreq_ asreq_t; + +mowgli_list_t as_reqlist; + +void _modinit(module_t *m) +{ + announcesvs = service_add("announceserv", NULL); + + hook_add_event("user_drop"); + hook_add_user_drop(account_drop_request); + + hook_add_db_write(write_asreqdb); + db_register_type_handler("AR", db_h_ar); + + if (announcesvs == NULL) + return; + + service_bind_command(announcesvs, &as_help); + service_bind_command(announcesvs, &as_request); + service_bind_command(announcesvs, &as_waiting); + service_bind_command(announcesvs, &as_reject); + service_bind_command(announcesvs, &as_activate); + service_bind_command(announcesvs, &as_cancel); +} + +void _moddeinit(module_unload_intent_t intent) +{ + hook_del_user_drop(account_drop_request); + hook_del_db_write(write_asreqdb); + db_unregister_type_handler("AR"); + + if (announcesvs != NULL) + { + service_unbind_command(announcesvs, &as_help); + service_unbind_command(announcesvs, &as_request); + service_unbind_command(announcesvs, &as_waiting); + service_unbind_command(announcesvs, &as_reject); + service_unbind_command(announcesvs, &as_activate); + service_unbind_command(announcesvs, &as_cancel); + + service_delete(announcesvs); + announcesvs = NULL; + } +} + +static void write_asreqdb(database_handle_t *db) +{ + mowgli_node_t *n; + + MOWGLI_LIST_FOREACH(n, as_reqlist.head) + { + asreq_t *l = n->data; + + db_start_row(db, "AR"); + db_write_word(db, l->nick); + db_write_word(db, l->subject); + db_write_time(db, l->announce_ts); + db_write_word(db, l->creator); + db_write_str(db, l->text); + db_commit_row(db); + } + +} + +static void db_h_ar(database_handle_t *db, const char *type) +{ + const char *nick = db_sread_word(db); + const char *subject = db_sread_word(db); + time_t announce_ts = db_sread_time(db); + const char *creator = db_sread_word(db); + const char *text = db_sread_str(db); + + asreq_t *l = smalloc(sizeof(asreq_t)); + l->nick = strshare_get(nick); + l->creator = strshare_get(creator); + l->subject = sstrdup(subject); + l->announce_ts = announce_ts; + l->text = sstrdup(text); + mowgli_node_add(l, mowgli_node_create(), &as_reqlist); +} + +/* Properly remove announcement requests from the DB if an account is dropped */ +static void account_drop_request(myuser_t *mu) +{ + mowgli_node_t *n; + asreq_t *l; + + MOWGLI_LIST_FOREACH(n, as_reqlist.head) + { + l = n->data; + if (!irccasecmp(l->nick, entity(mu)->name)) + { + slog(LG_REGISTER, "ANNOUNCEREQ:DROPACCOUNT: \2%s\2 %s\2", l->nick, l->text); + + mowgli_node_delete(n, &as_reqlist); + + strshare_unref(l->nick); + strshare_unref(l->creator); + free(l->subject); + free(l->text); + free(l); + + return; + } + } +} + +/* HELP [params] */ +void as_cmd_help(sourceinfo_t *si, int parc, char *parv[]) +{ + char *command = parv[0]; + + if (!command) + { + command_success_nodata(si, _("***** \2%s Help\2 *****"), si->service->nick); + command_success_nodata(si, _("\2%s\2 allows users to request a network announcement."), si->service->nick); + command_success_nodata(si, " "); + command_success_nodata(si, _("For more information on a command, type:")); + command_success_nodata(si, "\2/%s%s help \2", (ircd->uses_rcommand == false) ? "msg " : "", si->service->disp); + command_success_nodata(si, " "); + + command_help(si, si->service->commands); + + command_success_nodata(si, _("***** \2End of Help\2 *****")); + return; + } + + /* take the command through the hash table */ + help_display(si, si->service, command, si->service->commands); +} + +static void as_cmd_request(sourceinfo_t *si, int parc, char *parv[]) +{ + char *subject = parv[0]; + char *text = parv[1]; + char *target; + char *subject2; + char buf [BUFSIZE]; + mowgli_node_t *n; + asreq_t *l; + + if (!text || !subject) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "REQUEST"); + command_fail(si, fault_needmoreparams, _("Syntax: REQUEST ")); + return; + } + + if (metadata_find(si->smu, "private:restrict:setter")) + { + command_fail(si, fault_noprivs, _("You have been restricted from requesting announcements by network staff.")); + return; + } + + target = entity(si->smu)->name; + + MOWGLI_LIST_FOREACH(n, as_reqlist.head) + { + l = n->data; + + if (!irccasecmp(l->nick, target)) + { + command_fail(si, fault_badparams, _("You cannot request more than one announcement. Use CANCEL if you wish to cancel your current announcement and submit another.")); + return; + } + } + + /* Check the subject for being too long as well. 35 chars is probably a safe limit here. + * Used here because we don't want users that don't know any better making too-long messages. + */ + if (strlen(subject) > 35) + { + command_fail(si, fault_badparams, _("Your subject is too long. Subjects need to be under 35 characters.")); + return; + } + + /* Check if the announcement is too long or not. 450 characters is safe for our usecase */ + if (strlen(text) > 450) + { + command_fail(si, fault_badparams, _("Your announcement is too long. Announcements need to be under 450 characters.")); + return; + } + + snprintf(buf, BUFSIZE, "%s", text); + + l = smalloc(sizeof(asreq_t)); + l->nick = strshare_ref(target); + l->subject = sstrdup(subject); + l->announce_ts = CURRTIME;; + l->creator = strshare_ref(target); + l->text = sstrdup(buf); + + n = mowgli_node_create(); + mowgli_node_add(l, n, &as_reqlist); + + subject2 = sstrdup(l->subject); + /* This doesn't need to be as efficient as InfoServ, so let's just use replace() */ + replace(subject2, BUFSIZE, "_", " "); + + command_success_nodata(si, _("You have requested the following announcement: ")); + command_success_nodata(si, _("[%s - %s] %s"), subject2, l->creator, buf); + /* This is kind of hacky, and the slog will come from operserv, not announceserv. + * Still, it's required so the message will cut off properly, and I can't find a less hacky way to do it. */ + logcommand(si, CMDLOG_REQUEST, "REQUEST:"); + slog(CMDLOG_REQUEST, "[%s - %s] %s", subject2, l->creator, buf); + free(subject2); + + return; +} + +static void as_cmd_activate(sourceinfo_t *si, int parc, char *parv[]) +{ + char *nick = parv[0]; + user_t *u; + char *subject2; + char buf[BUFSIZE]; + asreq_t *l; + mowgli_node_t *n; + + if (!nick) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "ACTIVATE"); + command_fail(si, fault_needmoreparams, _("Syntax: ACTIVATE ")); + return; + } + + + MOWGLI_LIST_FOREACH(n, as_reqlist.head) + { + l = n->data; + if (!irccasecmp(l->nick, nick)) + { + if ((u = user_find_named(nick)) != NULL) + notice(si->service->nick, u->nick, "[auto memo] Your requested announcement has been approved."); + subject2 = sstrdup(l->subject); + replace(subject2, BUFSIZE, "_", " "); + logcommand(si, CMDLOG_REQUEST, "ACTIVATE: \2%s\2", nick); + snprintf(buf, BUFSIZE, "[%s - %s] %s", subject2, l->creator, l->text); + + mowgli_node_delete(n, &as_reqlist); + + free(subject2); + free(l->nick); + free(l->subject); + free(l->creator); + free(l->text); + free(l); + + notice_global_sts(si->service->me, "*", buf); + return; + } + } + command_success_nodata(si, _("Nick \2%s\2 not found in announce request database."), nick); +} + +static void as_cmd_reject(sourceinfo_t *si, int parc, char *parv[]) +{ + char *nick = parv[0]; + user_t *u; + asreq_t *l; + mowgli_node_t *n; + + if (!nick) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "REJECT"); + command_fail(si, fault_needmoreparams, _("Syntax: REJECT ")); + return; + } + + + MOWGLI_LIST_FOREACH(n, as_reqlist.head) + { + l = n->data; + if (!irccasecmp(l->nick, nick)) + { + if ((u = user_find_named(nick)) != NULL) + notice(si->service->nick, u->nick, "[auto memo] Your requested announcement has been rejected."); + logcommand(si, CMDLOG_REQUEST, "REJECT: \2%s\2", nick); + + mowgli_node_delete(n, &as_reqlist); + free(l->nick); + free(l->subject); + free(l->creator); + free(l->text); + free(l); + return; + } + } + command_success_nodata(si, _("Nick \2%s\2 not found in announcement request database."), nick); +} + +static void as_cmd_waiting(sourceinfo_t *si, int parc, char *parv[]) +{ + asreq_t *l; + mowgli_node_t *n; + char *subject2; + char buf[BUFSIZE]; + struct tm tm; + + MOWGLI_LIST_FOREACH(n, as_reqlist.head) + { + l = n->data; + + tm = *localtime(&l->announce_ts); + strftime(buf, BUFSIZE, TIME_FORMAT, &tm); + subject2 = sstrdup(l->subject); + replace(subject2, BUFSIZE, "_", " "); + /* This needs to be two lines for cutoff purposes */ + command_success_nodata(si, "Account:\2%s\2, Subject: %s, Requested On: \2%s\2, Announcement:", + l->nick, subject2, buf); + command_success_nodata(si, "%s", l->text); + free(subject2); + } + command_success_nodata(si, "End of list."); + logcommand(si, CMDLOG_GET, "WAITING"); +} + +static void as_cmd_cancel(sourceinfo_t *si, int parc, char *parv[]) +{ + asreq_t *l; + mowgli_node_t *n; + char *target; + + target = entity(si->smu)->name; + + MOWGLI_LIST_FOREACH(n, as_reqlist.head) + { + l = n->data; + + if (!irccasecmp(l->nick, target)) + { + mowgli_node_delete(n, &as_reqlist); + + strshare_unref(l->nick); + strshare_unref(l->creator); + free(l->subject); + free(l->text); + free(l); + + command_success_nodata(si, "Your pending announcement has been canceled."); + + logcommand(si, CMDLOG_REQUEST, "CANCEL"); + return; + } + } + command_fail(si, fault_badparams, _("You do not have a pending announcement to cancel.")); +} +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/ircd_catserv.c b/ircd_catserv.c new file mode 100644 index 0000000..c05a0ce --- /dev/null +++ b/ircd_catserv.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2005 William Pitcock, et al. + * The rights to this code are as documented under doc/LICENSE. + * + * Meow! + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/ircd_catserv", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +service_t *catserv; + +static void catserv_cmd_meow(sourceinfo_t *si, int parc, char *parv[]); +static void catserv_cmd_help(sourceinfo_t *si, int parc, char *parv[]); + +command_t catserv_meow = { "MEOW", "Makes the cute little kitty-cat meow!", + AC_NONE, 0, catserv_cmd_meow, { .path = "" } }; +command_t catserv_help = { "HELP", "Displays contextual help information.", + AC_NONE, 1, catserv_cmd_help, { .path = "help" } }; + +void _modinit(module_t *m) +{ + catserv = service_add("catserv", NULL); + + service_bind_command(catserv, &catserv_meow); + service_bind_command(catserv, &catserv_help); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_unbind_command(catserv, &catserv_meow); + service_unbind_command(catserv, &catserv_help); + + service_delete(catserv); +} + +static void catserv_cmd_meow(sourceinfo_t *si, int parc, char *parv[]) +{ + command_success_nodata(si, "Meow!"); +} + +static void catserv_cmd_help(sourceinfo_t *si, int parc, char *parv[]) +{ + command_help(si, si->service->commands); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/ircd_loveserv.c b/ircd_loveserv.c new file mode 100644 index 0000000..44e01ca --- /dev/null +++ b/ircd_loveserv.c @@ -0,0 +1,325 @@ +/* + * Copyright (c) 2006 William Pitcock, et al. + * Rights to this code are as documented in doc/LICENSE. + * + * LoveServ implementation. + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/ircd_loveserv", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +service_t *loveserv; + +static void _ls_admirer(sourceinfo_t *si, int parc, char *parv[]) +{ + char *target = parv[0]; + + if (!target) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "ADMIRER"); + command_fail(si, fault_needmoreparams, "Syntax: ADMIRER "); + return; + } + + if (!user_find_named(target)) + { + command_fail(si, fault_nosuch_target, "As much as I'd love to do this, you need to specify a person who really exists!"); + return; + } + + command_success_nodata(si, "%s has been told that they have a secret admirer. :)", target); + notice(loveserv->nick, target, "You have a secret admirer ;)"); +} + +command_t ls_admirer = { "ADMIRER", "Tell somebody they have a secret admirer.", AC_NONE, 1, _ls_admirer, { .path = "" } }; + +static void _ls_rose(sourceinfo_t *si, int parc, char *parv[]) +{ + char *target = parv[0]; + + if (!target) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "ROSE"); + command_fail(si, fault_needmoreparams, "Syntax: ROSE "); + return; + } + + if (!user_find_named(target)) + { + command_fail(si, fault_nosuch_target, "As much as I'd love to do this, you need to specify a person who really exists!"); + return; + } + + command_success_nodata(si, "Your rose has been sent to %s! :)", target); + notice(loveserv->nick, target, "%s has sent you a pretty rose: \00303--<--<--<{\00304@", si->su->nick); +} + +command_t ls_rose = { "ROSE", "Sends a rose to somebody.", AC_NONE, 1, _ls_rose, { .path = "" } }; + +static void _ls_chocolate(sourceinfo_t *si, int parc, char *parv[]) +{ + char *target = parv[0]; + + if (!target) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "CHOCOLATE"); + command_fail(si, fault_needmoreparams, "Syntax: CHOCOLATE "); + return; + } + + if (!user_find_named(target)) + { + command_fail(si, fault_nosuch_target, "As much as I'd love to do this, you need to specify a person who really exists!"); + return; + } + + command_success_nodata(si, "Your chocolates have been sent to %s! :)", target); + notice(loveserv->nick, target, "%s would like you to have this YUMMY box of chocolates.", si->su->nick); +} + +command_t ls_chocolate = { "CHOCOLATE", "Sends chocolates to somebody.", AC_NONE, 1, _ls_chocolate, { .path = "" } }; + +static void _ls_candy(sourceinfo_t *si, int parc, char *parv[]) +{ + char *target = parv[0]; + + if (!target) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "CANDY"); + command_fail(si, fault_needmoreparams, "Syntax: CANDY "); + return; + } + + if (!user_find_named(target)) + { + command_fail(si, fault_nosuch_target, "As much as I'd love to do this, you need to specify a person who really exists!"); + return; + } + + command_success_nodata(si, "Your bag of candy has been sent to %s! :)", target); + notice(loveserv->nick, target, "%s would like you to have this bag of heart-shaped candies.", si->su->nick); +} + +command_t ls_candy = { "CANDY", "Sends a bag of candy to somebody.", AC_NONE, 1, _ls_candy, { .path = "" } }; + +static void _ls_hug(sourceinfo_t *si, int parc, char *parv[]) +{ + char *target = parv[0]; + + if (!target) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "HUG"); + command_fail(si, fault_needmoreparams, "Syntax: HUG "); + return; + } + + if (!user_find_named(target)) + { + command_fail(si, fault_nosuch_target, "As much as I'd love to do this, you need to specify a person who really exists!"); + return; + } + + command_success_nodata(si, "You have virtually hugged %s!", target); + notice(loveserv->nick, target, "%s has sent you a \002BIG WARM HUG\002.", si->su->nick); +} + +command_t ls_hug = { "HUG", "Reach out and hug somebody.", AC_NONE, 1, _ls_hug, { .path = "" } }; + +static void _ls_kiss(sourceinfo_t *si, int parc, char *parv[]) +{ + char *target = parv[0]; + + if (!target) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "KISS"); + command_fail(si, fault_needmoreparams, "Syntax: KISS "); + return; + } + + if (!user_find_named(target)) + { + command_fail(si, fault_nosuch_target, "As much as I'd love to do this, you need to specify a person who really exists!"); + return; + } + + command_success_nodata(si, "You have virtually kissed %s!", target); + notice(loveserv->nick, target, "%s has sent you a \00304kiss\003.", si->su->nick); +} + +command_t ls_kiss = { "KISS", "Kiss somebody.", AC_NONE, 1, _ls_kiss, { .path = "" } }; + +static void _ls_lovenote(sourceinfo_t *si, int parc, char *parv[]) +{ + char *target = parv[0]; + char *note = parv[1]; + + if (!target || !note) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "LOVENOTE"); + command_fail(si, fault_needmoreparams, "Syntax: LOVENOTE "); + return; + } + + if (!user_find_named(target)) + { + command_fail(si, fault_nosuch_target, "As much as I'd love to do this, you need to specify a person who really exists!"); + return; + } + + command_success_nodata(si, "Your love-note to %s has been sent.", target); + notice(loveserv->nick, target, "%s has sent you a love-note which reads: %s", si->su->nick, note); +} + +command_t ls_lovenote = { "LOVENOTE", "Sends a lovenote to somebody.", AC_NONE, 2, _ls_lovenote, { .path = "" } }; + +static void _ls_apology(sourceinfo_t *si, int parc, char *parv[]) +{ + char *target = parv[0]; + char *note = parv[1]; + + if (!target || !note) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "APOLOGY"); + command_fail(si, fault_needmoreparams, "Syntax: APOLOGY "); + return; + } + + if (!user_find_named(target)) + { + command_fail(si, fault_nosuch_target, "As much as I'd love to do this, you need to specify a person who really exists!"); + return; + } + + command_success_nodata(si, "Your apology to %s has been sent.", target); + notice(loveserv->nick, target, "%s would like to apologize for: %s", si->su->nick, note); +} + +command_t ls_apology = { "APOLOGY", "Sends an apology to somebody.", AC_NONE, 2, _ls_apology, { .path = "" } }; + +static void _ls_thankyou(sourceinfo_t *si, int parc, char *parv[]) +{ + char *target = parv[0]; + char *note = parv[1]; + + if (!target || !note) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "THANKYOU"); + command_fail(si, fault_needmoreparams, "Syntax: THANKYOU "); + return; + } + + if (!user_find_named(target)) + { + command_fail(si, fault_nosuch_target, "As much as I'd love to do this, you need to specify a person who really exists!"); + return; + } + + command_success_nodata(si, "Your thank-you note to %s has been sent.", target); + notice(loveserv->nick, target, "%s would like to thank you for: %s", si->su->nick, note); +} + +command_t ls_thankyou = { "THANKYOU", "Sends a thank-you note to somebody.", AC_NONE, 2, _ls_thankyou, { .path = "" } }; + +static void _ls_spank(sourceinfo_t *si, int parc, char *parv[]) +{ + char *target = parv[0]; + + if (!target) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "SPANK"); + command_fail(si, fault_needmoreparams, "Syntax: SPANK "); + return; + } + + if (!user_find_named(target)) + { + command_fail(si, fault_nosuch_target, "As much as I'd love to do this, you need to specify a person who really exists!"); + return; + } + + command_success_nodata(si, "You have virtually spanked %s!", target); + notice(loveserv->nick, target, "%s has given you a virtual playful spanking.", si->su->nick); +} + +command_t ls_spank = { "SPANK", "Gives somebody a spanking.", AC_NONE, 1, _ls_spank, { .path = "" } }; + +static void _ls_chocobo(sourceinfo_t *si, int parc, char *parv[]) /* silly */ +{ + char *target = parv[0]; + + if (!target) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "CHOCOBO"); + command_fail(si, fault_needmoreparams, "Syntax: CHOCOBO "); + return; + } + + if (!user_find_named(target)) + { + command_fail(si, fault_nosuch_target, "As much as I'd love to do this, you need to specify a person who really exists!"); + return; + } + + command_success_nodata(si, "Your chocobo has been sent to %s.", target); + notice(loveserv->nick, target, "%s would like you to have this chocobo. \00308Kweh!\003", si->su->nick); +} + +command_t ls_chocobo = { "CHOCOBO", "Sends a chocobo to somebody.", AC_NONE, 1, _ls_chocobo, { .path = "" } }; + +static void _ls_help(sourceinfo_t *si, int parc, char *parv[]) +{ + command_help(si, si->service->commands); +} + +command_t ls_help = { "HELP", "Displays contextual help information.", + AC_NONE, 1, _ls_help, { .path = "help" } }; + +void _modinit(module_t *m) +{ + loveserv = service_add("LoveServ", NULL); + + service_bind_command(loveserv, &ls_admirer); + service_bind_command(loveserv, &ls_rose); + service_bind_command(loveserv, &ls_chocolate); + service_bind_command(loveserv, &ls_candy); + service_bind_command(loveserv, &ls_hug); + service_bind_command(loveserv, &ls_kiss); + service_bind_command(loveserv, &ls_lovenote); + service_bind_command(loveserv, &ls_apology); + service_bind_command(loveserv, &ls_thankyou); + service_bind_command(loveserv, &ls_spank); + service_bind_command(loveserv, &ls_chocobo); + service_bind_command(loveserv, &ls_help); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_unbind_command(loveserv, &ls_admirer); + service_unbind_command(loveserv, &ls_rose); + service_unbind_command(loveserv, &ls_chocolate); + service_unbind_command(loveserv, &ls_candy); + service_unbind_command(loveserv, &ls_hug); + service_unbind_command(loveserv, &ls_kiss); + service_unbind_command(loveserv, &ls_lovenote); + service_unbind_command(loveserv, &ls_apology); + service_unbind_command(loveserv, &ls_thankyou); + service_unbind_command(loveserv, &ls_spank); + service_unbind_command(loveserv, &ls_chocobo); + service_unbind_command(loveserv, &ls_help); + + if (loveserv) + service_delete(loveserv); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/ircs_crypto_trans.c b/ircs_crypto_trans.c new file mode 100644 index 0000000..905bb79 --- /dev/null +++ b/ircs_crypto_trans.c @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2005 Atheme Development Group + * Rights to this code are as documented in doc/LICENSE. + * + * IRCServices's weird password encryption thingy, taken from Anope 1.6.3. + * + */ +/* Include file for high-level encryption routines. + * + * (C) 2003 Anope Team + * Contact us at info@anope.org + * + * Please read COPYING and README for furhter details. + * + * Based on the original code of Epona by Lara. + * Based on the original code of Services by Andy Church. + * + * $\Id: myencrypt.c 5 2004-03-29 01:29:50Z dane $ + * + */ + +#include "atheme.h" + +// Record password transition log? +// #define PW_TRANSITION_LOG "./pwtransition.sh" + +/* necessary anope defines */ +#define PASSMAX 32 +#define ENCRYPT_MD5 + +/*************************************************************************/ + +/******** Our own high-level routines. ********/ + + +#define XTOI(c) ((c)>9 ? (c)-'A'+10 : (c)-'0') +/* Result of this: + * c in [-128,9] => [-183,-46] + * c in [10,127] => [-38,79] + */ + +/* Encrypt `src' of length `len' and store the result in `dest'. If the + * resulting string would be longer than `size', return -1 and leave `dest' + * unchanged; else return 0. + */ +static int myencrypt(const char *src, int len, char *dest, int size) +{ + +#ifdef ENCRYPT_MD5 + + MD5_CTX context; + char digest[33]; + char dest2[16]; + int i; +#ifdef PW_TRANSITION_LOG + FILE *tp; +#endif + if (size < 32) + return -1; + + memset(&context, 0, sizeof(context)); + memset(&digest, 0, sizeof(digest)); + + MD5Init(&context); + MD5Update(&context, (unsigned const char *) src, (size_t) len); + MD5Final((unsigned char *) digest, &context); + + /* convert to hex, skipping last 8 bytes (constant) -- jilles */ +// strcpy(digest, "$ircservices$"); + for (i = 0; i <= 7; i++) +// sprintf(dest + 13 + 2 * i, "%02x", 255 & digest[i]); + sprintf(dest + 2 * i, "%02x", 255 & digest[i]); +#ifdef PW_TRANSITION_LOG + tp = popen(PW_TRANSITION_LOG,"w"); + if (tp != NULL) + { + fprintf(tp,"%s\n%s\n",src,dest); + pclose(tp); + } +#endif + return 0; + +#endif + + return -1; /* unknown encryption algorithm */ +} + +#if 0 /* unused */ +/* Shortcut for encrypting a null-terminated string in place. */ +static int encrypt_in_place(char *buf, int size) +{ + return myencrypt(buf, strlen(buf), buf, size); +} +#endif + +/* Compare a plaintext string against an encrypted password. Return 1 if + * they match, 0 if not, and -1 if something went wrong. */ + +static int check_password(const char *plaintext, const char *password) +{ + char buf[BUFSIZE]; + + if (myencrypt(plaintext, strlen(plaintext), buf, sizeof(buf)) < 0) + return -1; +#ifdef ENCRYPT_MD5 + if (strcmp(buf, password) == 0) +#else + if (0) +#endif + return 1; + else + return 0; +} + +/*************************************************************************/ + +DECLARE_MODULE_V1 +( + "crypto/ircservices", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Jilles Tjoelker " +); + +static char *ircservices_crypt_string(char *key, char *salt) +{ + static char output[PASSMAX]; + if (salt[0] == '$' && salt[1] == '1') /* this is a new pw XXX */ + { + myencrypt(key, strlen(key), output, PASSMAX); + return output; + } + else + { + if (check_password(key, salt)) + return salt; + else + return ""; + } +} + +void _modinit(module_t *m) +{ + crypt_string = &ircservices_crypt_string; + + crypto_module_loaded = true; +} + +void _moddeinit(module_unload_intent_t intent) +{ + crypt_string = &generic_crypt_string; + + crypto_module_loaded = false; +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/mlocktweaker.c b/mlocktweaker.c new file mode 100644 index 0000000..74d111f --- /dev/null +++ b/mlocktweaker.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2007 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * mlocktweaker.c: A module which tweaks mlock on registration. + * + */ + +#include "atheme.h" + +/* + * Set this to the string of mlock changes you want to make. + * This is in addition to the default mlock, so -nt if you want to + * remove those mlocks, etcetera. + */ +#define MLOCK_CHANGE "-t+c" + +DECLARE_MODULE_V1 +( + "contrib/mlocktweaker", false, _modinit, _moddeinit, + PACKAGE_STRING, + "William Pitcock " +); + +static void handle_channel_register(void *vptr); + +void _modinit(module_t *m) +{ + hook_add_event("channel_register"); + hook_add_first_channel_register(handle_channel_register); +} + +void _moddeinit(module_unload_intent_t intent) +{ + hook_del_channel_register(handle_channel_register); +} + +static void handle_channel_register(void *vptr) +{ + hook_channel_req_t *hdata = vptr; + mychan_t *mc = hdata->mc; + unsigned int *target; + char *it, *str = MLOCK_CHANGE; + + if (mc == NULL) + return; + + target = &mc->mlock_on; + it = str; + + switch(*it++ != '\0') + { + case '+': + target = &mc->mlock_on; + break; + case '-': + target = &mc->mlock_off; + break; + default: + *target |= mode_to_flag(*it); + break; + } + + mc->mlock_off &= ~mc->mlock_on; +} diff --git a/ms_fsend.c b/ms_fsend.c new file mode 100644 index 0000000..522fa3b --- /dev/null +++ b/ms_fsend.c @@ -0,0 +1,181 @@ +/* + * Copyright (c) 2005 Atheme Development Group + * Rights to this code are as documented in doc/LICENSE. + * + * This file contains code for the Memoserv FSEND function + * + */ + +#include "atheme.h" + +/* MEMOLEN + 8, so the "[FORCE] " string will fit */ +#define FMEMOLEN 308 + +DECLARE_MODULE_V1 +( + "contrib/ms_fsend", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void ms_cmd_fsend(sourceinfo_t *si, int parc, char *parv[]); + +/* MARK is prolly the most appropriate priv (that I can think of), if you can + * think of a better one, feel free to change it. --jdhore + */ +command_t ms_fsend = { "FSEND", N_("Forcibly sends a memo to a user."), + PRIV_MARK, 2, ms_cmd_fsend, { .path = "contrib/fsend" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("memoserv", &ms_fsend); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("memoserv", &ms_fsend); +} + +static void ms_cmd_fsend(sourceinfo_t *si, int parc, char *parv[]) +{ + /* misc structs etc */ + user_t *tu; + myuser_t *tmu; + mowgli_node_t *n; + mymemo_t *memo; + service_t *memoserv; + + /* Grab args */ + char *target = parv[0]; + char *m = parv[1]; + + /* Arg validation */ + if (!target || !m) + { + command_fail(si, fault_needmoreparams, + STR_INSUFFICIENT_PARAMS, "FSEND"); + + command_fail(si, fault_needmoreparams, + "Syntax: FSEND "); + + return; + } + + if (!si->smu) + { + command_fail(si, fault_noprivs, _("You are not logged in.")); + return; + } + + /* rate limit it -- jilles */ + if (CURRTIME - si->smu->memo_ratelimit_time > MEMO_MAX_TIME) + si->smu->memo_ratelimit_num = 0; + if (si->smu->memo_ratelimit_num > MEMO_MAX_NUM && !has_priv(si, PRIV_FLOOD)) + { + command_fail(si, fault_toomany, _("You have used this command too many times; please wait a while and try again.")); + return; + } + + /* Check for memo text length -- includes/common.h */ + if (strlen(m) >= MEMOLEN) + { + command_fail(si, fault_badparams, + "Please make sure your memo is less than %d characters", MEMOLEN); + + return; + } + + /* Check to make sure the memo doesn't contain hostile CTCP responses. + * realistically, we'll probably want to check the _entire_ message for this... --nenolod + */ + if (*m == '\001') + { + command_fail(si, fault_badparams, _("Your memo contains invalid characters.")); + return; + } + + memoserv = service_find("memoserv"); + if (memoserv == NULL) + memoserv = si->service; + + if (*target != '#' && *target != '!') + { + /* See if target is valid */ + if (!(tmu = myuser_find_ext(target))) + { + command_fail(si, fault_nosuch_target, + "\2%s\2 is not registered.", target); + + return; + } + + si->smu->memo_ratelimit_num++; + si->smu->memo_ratelimit_time = CURRTIME; + + /* Check to make sure target inbox not full */ + if (tmu->memos.count >= me.mdlimit) + { + command_fail(si, fault_toomany, _("%s's inbox is full"), target); + logcommand(si, CMDLOG_SET, "failed SEND to \2%s\2 (target inbox full)", entity(tmu)->name); + return; + } + + logcommand(si, CMDLOG_ADMIN, "FSEND: to \2%s\2", entity(tmu)->name); + + /* Malloc and populate struct */ + memo = smalloc(sizeof(mymemo_t)); + memo->sent = CURRTIME; + memo->status = 0; + mowgli_strlcpy(memo->sender,entity(si->smu)->name,NICKLEN); + mowgli_strlcpy(memo->text, "[FORCE] ", FMEMOLEN); + mowgli_strlcat(memo->text, m, FMEMOLEN); + + /* Create a linked list node and add to memos */ + n = mowgli_node_create(); + mowgli_node_add(memo, n, &tmu->memos); + tmu->memoct_new++; + + /* Should we email this? */ + if (tmu->flags & MU_EMAILMEMOS) + { + sendemail(si->su, EMAIL_MEMO, tmu, memo->text); + } + + /* Note: do not disclose other nicks they're logged in with + * -- jilles + * + * Actually, I don't see the point in this at all. If they want this information, + * they should use WHOIS. --nenolod + */ + tu = user_find_named(target); + if (tu != NULL && tu->myuser == tmu) + command_success_nodata(si, _("%s is currently online, and you may talk directly, by sending a private message."), target); + + /* Is the user online? If so, tell them about the new memo. */ + if (si->su == NULL || !irccasecmp(si->su->nick, entity(si->smu)->name)) + myuser_notice(memoserv->nick, tmu, "You have a new memo from %s (%zu).", entity(si->smu)->name, MOWGLI_LIST_LENGTH(&tmu->memos)); + else + myuser_notice(memoserv->nick, tmu, "You have a new memo from %s (nick: %s) (%zu).", entity(si->smu)->name, si->su->nick, MOWGLI_LIST_LENGTH(&tmu->memos)); + myuser_notice(memoserv->nick, tmu, _("To read it, type /%s%s READ %zu"), + ircd->uses_rcommand ? "" : "msg ", memoserv->disp, MOWGLI_LIST_LENGTH(&tmu->memos)); + + /* Tell user memo sent */ + command_success_nodata(si, _("The memo has been successfully sent to \2%s\2."), target); + } + else if (*target == '#') + { + command_fail(si, fault_nosuch_target, _("Channel memos may not be forced.")); + } + else + { + command_fail(si, fault_nosuch_target, _("Group memos may not be forced.")); + } + + return; +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/ns_ajoin.c b/ns_ajoin.c new file mode 100644 index 0000000..2946cc3 --- /dev/null +++ b/ns_ajoin.c @@ -0,0 +1,221 @@ +/* + * Copyright (c) 2007 Jilles Tjoelker + * Copyright (c) 2008 Robin Burchell + * Rights to this code are as documented in doc/LICENSE. + * + * Services-side autojoin using SVSJOIN + * + */ + +#include "atheme.h" +#include "uplink.h" + +DECLARE_MODULE_V1 +( + "contrib/ns_ajoin", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void ajoin_on_identify(user_t *u); + +static void ns_cmd_ajoin(sourceinfo_t *si, int parc, char *parv[]) +{ + char buf[512]; + char *chan; + metadata_t *md; + + if (!parv[0]) + { + command_fail(si, fault_badparams, STR_INSUFFICIENT_PARAMS, "AJOIN"); + command_fail(si, fault_badparams, "Syntax: AJOIN [#channel]"); + return; + } + + if (!strcasecmp(parv[0], "LIST")) + { + command_success_nodata(si, "\2AJOIN LIST\2:"); + if ((md = metadata_find(si->smu, "private:autojoin"))) + { + mowgli_strlcpy(buf, md->value, sizeof buf); + + chan = strtok(buf, ","); + while (chan != NULL) + { + command_success_nodata(si, "%s", chan); + chan = strtok(NULL, ","); + } + } + command_success_nodata(si, "End of \2AJOIN LIST\2"); + } + else if (!strcasecmp(parv[0], "ADD")) + { + if (!parv[1]) + { + command_fail(si, fault_badparams, STR_INSUFFICIENT_PARAMS, "AJOIN"); + command_fail(si, fault_badparams, "Syntax: AJOIN [#channel]"); + return; + } + + if ((md = metadata_find(si->smu, "private:autojoin"))) + { + mowgli_strlcpy(buf, md->value, sizeof buf); + + chan = strtok(buf, ","); + while (chan != NULL) + { + if (!strcasecmp(chan, parv[1])) + { + command_fail(si, fault_badparams, "%s is already on your AJOIN list.", parv[1]); + return; + } + chan = strtok(NULL, ","); + } + + // Little arbitrary, but stop both overflow and RAM consumption going out of control + if (strlen(md->value) + strlen(parv[1]) > 400) + { + command_fail(si, fault_badparams, "Sorry, you have too many AJOIN entries set."); + return; + } + + mowgli_strlcpy(buf, md->value, sizeof buf); + mowgli_strlcat(buf, ",", sizeof buf); + mowgli_strlcat(buf, parv[1], sizeof buf); + metadata_delete(si->smu, "private:autojoin"); + metadata_add(si->smu, "private:autojoin", buf); + } + else + { + metadata_add(si->smu, "private:autojoin", parv[1]); + } + command_success_nodata(si, "%s added to AJOIN successfully.", parv[1]); + } + else if (!strcasecmp(parv[0], "CLEAR")) + { + metadata_delete(si->smu, "private:autojoin"); + command_success_nodata(si, "AJOIN list cleared successfully."); + } + else if (!strcasecmp(parv[0], "DEL")) + { + if (!parv[1]) + { + command_fail(si, fault_badparams, STR_INSUFFICIENT_PARAMS, "AJOIN"); + command_fail(si, fault_badparams, "Syntax: AJOIN [#channel]"); + return; + } + + if (!(md = metadata_find(si->smu, "private:autojoin"))) + { + command_fail(si, fault_badparams, "%s is not on your AJOIN list.", parv[1]); + return; + } + + // Thanks to John Brooks for his help with this. + char *list = md->value; + char *remove1 = parv[1]; + + int listlen = 0; + int rmlen = 0; + int itempos = 0; + int i = 0, j = 0; + // This loop will find the item (if present), find the length of the item, and find the length of the entire string. + for (; list[i]; i++) + { + if (!rmlen) + { + // We have not found the string yet + if (tolower(list[i]) == tolower(remove1[j])) + { + if (j == 0) + { + // First character of a potential match; remember it's location + itempos = i; + } + + j++; + if (!remove1[j]) + { + // Found the entire string + rmlen = j; + } + } + else + j = 0; + } + } + + if (remove1[j]) + { + command_fail(si, fault_badparams, "%s is not on your AJOIN list.", parv[1]); + return; + } + + listlen = i; + + // listlen is the length of the list, rmlen is the length of the item to remove, itempos is the beginning of that item. + if (!list[itempos + rmlen]) + { + // This item is the last item in the list, so we can simply truncate + if (itempos > 0) + { + itempos--; + list[itempos] = '\0'; + } + else + metadata_delete(si->smu, "private:autojoin"); + } + else + { + // There are items after this one, so we must copy memory + // Account for the comma following this item (if there is a space, account for that too, depends on how you format your list) + rmlen += 1; + memmove(list + itempos, list + itempos + rmlen, listlen - rmlen - itempos); + list[listlen - rmlen] = '\0'; + } + + command_success_nodata(si, "%s removed from AJOIN successfully.", parv[1]); + } +} + +command_t ns_ajoin = { "AJOIN", "Manages automatic-join on identify.", AC_AUTHENTICATED, 2, ns_cmd_ajoin, { .path = "contrib/ajoin" } }; + +void _modinit(module_t *m) +{ + hook_add_event("user_identify"); + hook_add_user_identify(ajoin_on_identify); + service_named_bind_command("nickserv", &ns_ajoin); +} + +void _moddeinit(module_unload_intent_t intent) +{ + hook_del_user_identify(ajoin_on_identify); + service_named_unbind_command("nickserv", &ns_ajoin); +} + +static void ajoin_on_identify(user_t *u) +{ + myuser_t *mu = u->myuser; + metadata_t *md; + char buf[512]; + char *chan; + + if (!(md = metadata_find(mu, "private:autojoin"))) + return; + + mowgli_strlcpy(buf, md->value, sizeof buf); + chan = strtok(buf, " ,"); + while (chan != NULL) + { + if(ircd->type == PROTOCOL_SHADOWIRCD) + { + sts(":%s ENCAP * SVSJOIN %s %s", ME, CLIENT_NAME(u), chan); + } + else + { + sts(":%s SVSJOIN %s %s", CLIENT_NAME(nicksvs.me->me), CLIENT_NAME(u), chan); + } + + chan = strtok(NULL, ","); + } +} diff --git a/ns_cleannick.c b/ns_cleannick.c new file mode 100644 index 0000000..82cfd62 --- /dev/null +++ b/ns_cleannick.c @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2011 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * Clean obnoxious nicknames, such as LaMENiCK -> lamenick. + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/ns_cleannick", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +#define LAMENESS_WEIGHT 0.35f + +/* + * Determine if a nickname is lame. Non-alphabetical characters + * are penalized twice, uppercase characters are penalized once. + */ +static bool is_nickname_lame(const char *nickname) +{ + const char *p; + unsigned int capcount = 0; + float score; + + return_val_if_fail(nickname != NULL, false); + + for (p = nickname; *p != '\0'; p++) + { + if (IsUpper(*p)) + capcount++; + +#ifdef NOTYET + if (!IsAlpha(*p)) + capcount += 2; +#endif + } + + score = (float) capcount / (float) strlen(nickname); + slog(LG_DEBUG, "is_nickname_lame(%s): score %0.3f %d/%zu caps", nickname, score, capcount, strlen(nickname)); + + if (score > LAMENESS_WEIGHT) + return true; + + return false; +} + +/* + * Sanitize a nickname and then change it to the sanitized version forcefully. + */ +static void clean_nickname(user_t *u) +{ + char nickbuf[NICKLEN]; + char *p; + + return_if_fail(u != NULL); + + mowgli_strlcpy(nickbuf, u->nick, NICKLEN); + + p = nickbuf; + + while (*p++) + { + if (IsUpper(*p)) + *p = ToLower(*p); + } + + if (is_nickname_lame(nickbuf)) + { + slog(LG_DEBUG, "clean_nickname(%s): cleaned nickname %s is still lame", u->nick, nickbuf); + return; + } + + notice(nicksvs.nick, u->nick, "Your nick has been changed to \2%s\2 per %s nickname quality guidelines.", + nickbuf, me.netname); + + fnc_sts(nicksvs.me->me, u, nickbuf, FNC_FORCE); +} + +static void user_state_changed(hook_user_nick_t *data) +{ + return_if_fail(data != NULL); + return_if_fail(data->u != NULL); + + if (!is_internal_client(data->u) && is_nickname_lame(data->u->nick)) + { +#ifdef TAUNT_LAME_USERS + if (data->oldnick != NULL && !is_nickname_lame(data->oldnick)) + notice(nicksvs.nick, data->u->nick, "\2%s\2 was much less lame, \2%s\2.", + data->oldnick, data->u->nick); +#endif + + clean_nickname(data->u); + } +} + +void _modinit(module_t *m) +{ + hook_add_event("user_add"); + hook_add_user_add(user_state_changed); + + hook_add_event("user_nickchange"); + hook_add_user_nickchange(user_state_changed); +} + +void _moddeinit(module_unload_intent_t intent) +{ + hook_del_user_add(user_state_changed); + hook_del_user_nickchange(user_state_changed); +} diff --git a/ns_fenforce.c b/ns_fenforce.c new file mode 100644 index 0000000..cd9800b --- /dev/null +++ b/ns_fenforce.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2005-2007 William Pitcock, et al. + * Rights to this code are as documented in doc/LICENSE. + * + * This file contains code for the NickServ FENFORCE function. + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/ns_fenforce", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void ns_cmd_fenforce(sourceinfo_t *si, int parc, char *parv[]); + +command_t ns_fenforce = { "FENFORCE", "Enables or disables protection of another user's nicknames.", PRIV_USER_ADMIN, 2, ns_cmd_fenforce, { .path = "contrib/fenforce" } }; + +void _modinit(module_t *m) +{ + MODULE_TRY_REQUEST_DEPENDENCY(m, "nickserv/enforce"); + + service_named_bind_command("nickserv", &ns_fenforce); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("nickserv", &ns_fenforce); +} + +static void ns_cmd_fenforce(sourceinfo_t *si, int parc, char *parv[]) +{ + char *setting; + myuser_t *mu; + + if (parc < 2) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "FENFORCE"); + command_fail(si, fault_needmoreparams, _("Syntax: FENFORCE ON|OFF")); + return; + } + + mu = myuser_find_ext(parv[0]); + if (!mu) + { + command_fail(si, fault_nosuch_target, _("\2%s\2 is not registered."), parv[0]); + return; + } + setting = parv[1]; + + if (strcasecmp(setting, "ON") == 0) + { + if (metadata_find(mu, "private:doenforce")) + { + command_fail(si, fault_nochange, _("The \2%s\2 flag is already set for account \2%s\2."), "ENFORCE", entity(mu)->name); + } + else + { + wallops("%s enabled ENFORCE on the account \2%s\2.", get_oper_name(si), entity(mu)->name); + logcommand(si, CMDLOG_ADMIN, "FENFORCE:ON: \2%s\2", entity(mu)->name); + metadata_add(mu, "private:doenforce", "1"); + command_success_nodata(si, _("The \2%s\2 flag has been set for account \2%s\2."), "ENFORCE", entity(mu)->name); + } + } + else if (strcasecmp(setting, "OFF") == 0) + { + if (metadata_find(mu, "private:doenforce")) + { + wallops("%s disabled ENFORCE on the account \2%s\2.", get_oper_name(si), entity(mu)->name); + logcommand(si, CMDLOG_ADMIN, "FENFORCE:OFF: \2%s\2", entity(mu)->name); + metadata_delete(mu, "private:doenforce"); + command_success_nodata(si, _("The \2%s\2 flag has been removed for account \2%s\2."), "ENFORCE", entity(mu)->name); + } + else + { + command_fail(si, fault_nochange, _("The \2%s\2 flag is not set for account \2%s\2."), "ENFORCE", entity(mu)->name); + } + } + else + { + command_fail(si, fault_badparams, STR_INVALID_PARAMS, "FENFORCE"); + } +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/ns_forbid.c b/ns_forbid.c new file mode 100644 index 0000000..f48f9aa --- /dev/null +++ b/ns_forbid.c @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2005-2007 William Pitcock, et al. + * Rights to this code are as documented in doc/LICENSE. + * + * This file contains code for the NickServ FORBID function. + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/ns_forbid", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +#define FORBID_EMAIL "noemail" + +static void ns_cmd_forbid(sourceinfo_t *si, int parc, char *parv[]); + +command_t ns_forbid = { "FORBID", "Disallows use of a nickname.", PRIV_USER_ADMIN, 3, ns_cmd_forbid, { .path = "contrib/forbid" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("nickserv", &ns_forbid); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("nickserv", &ns_forbid); +} + +static void make_forbid(sourceinfo_t *si, const char *account, const char *reason) +{ + myuser_t *mu; + mynick_t *mn = NULL; + user_t *u; + + if (!nicksvs.no_nick_ownership && IsDigit(*account)) + { + command_fail(si, fault_badparams, "For security reasons, you can't forbid a UID."); + return; + } + + if (strchr(account, ' ') || strchr(account, '\n') || strchr(account, '\r') || account[0] == '=' || account[0] == '#' || account[0] == '@' || account[0] == '+' || account[0] == '%' || account[0] == '!' || strchr(account, ',')) + { + command_fail(si, fault_badparams, "The account name \2%s\2 is invalid.", account); + return; + } + + /* make sure it isn't registered already */ + if (nicksvs.no_nick_ownership ? myuser_find(account) != NULL : mynick_find(account) != NULL) + { + command_fail(si, fault_alreadyexists, "\2%s\2 is already registered.", account); + return; + } + + mu = myuser_add(account, "*", FORBID_EMAIL, MU_CRYPTPASS | MU_ENFORCE | MU_HOLD | MU_NOBURSTLOGIN); + mu->registered = CURRTIME; + mu->lastlogin = CURRTIME; + metadata_add(mu, "private:freeze:freezer", get_oper_name(si)); + metadata_add(mu, "private:freeze:reason", reason); + metadata_add(mu, "private:freeze:timestamp", number_to_string(CURRTIME)); + if (!nicksvs.no_nick_ownership) + { + mn = mynick_add(mu, entity(mu)->name); + mn->registered = CURRTIME; + mn->lastseen = CURRTIME; + u = user_find_named(entity(mu)->name); + if (u != NULL) + { + notice(si->service->nick, u->nick, + _("The nick \2%s\2 is now forbidden."), + entity(mu)->name); + hook_call_nick_enforce((&(hook_nick_enforce_t){ .u = u, .mn = mn })); + } + } + + logcommand(si, CMDLOG_ADMIN | CMDLOG_REGISTER, "FORBID:ON: \2%s\2 (reason: \2%s\2)", account, reason); + wallops("%s forbade the nickname \2%s\2 (%s).", get_oper_name(si), account, reason); + command_success_nodata(si, "\2%s\2 is now forbidden.", entity(mu)->name); + /* don't call hooks, hmm */ +} + +static void destroy_forbid(sourceinfo_t *si, const char *account) +{ + myuser_t *mu; + metadata_t *md; + + mu = myuser_find(account); + if (!mu) + { + command_fail(si, fault_nosuch_target, _("\2%s\2 is not registered."), account); + return; + } + + md = metadata_find(mu, "private:freeze:freezer"); + if (md == NULL || mu->registered != mu->lastlogin || + MOWGLI_LIST_LENGTH(&mu->nicks) != 1 || + strcmp(mu->email, FORBID_EMAIL)) + { + command_fail(si, fault_nosuch_target, _("\2%s\2 is not a forbidden nickname."), account); + return; + } + logcommand(si, CMDLOG_ADMIN | CMDLOG_REGISTER, "FORBID:OFF: \2%s\2", entity(mu)->name); + wallops("%s unforbade the nickname \2%s\2.", get_oper_name(si), account); + command_success_nodata(si, "\2%s\2 is no longer forbidden.", entity(mu)->name); + /* no hooks here either, hmm */ + object_unref(mu); +} + +static void ns_cmd_forbid(sourceinfo_t *si, int parc, char *parv[]) +{ + const char *account; + const char *action; + const char *reason; + + account = parv[0], action = parv[1], reason = parv[2]; + + if (!account || !action) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "FORBID"); + command_fail(si, fault_needmoreparams, "Syntax: FORBID ON|OFF [reason]"); + return; + } + + if (!strcasecmp(action, "ON")) + { + if (!reason) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "FORBID"); + command_fail(si, fault_needmoreparams, _("Usage: FORBID ON ")); + return; + } + make_forbid(si, account, reason); + } + else if (!strcasecmp(action, "OFF")) + destroy_forbid(si, account); + else + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "FORBID"); + command_fail(si, fault_needmoreparams, _("Usage: FORBID ON|OFF [reason]")); + } +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/ns_fregister.c b/ns_fregister.c new file mode 100644 index 0000000..2feb172 --- /dev/null +++ b/ns_fregister.c @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2005-2007 William Pitcock, et al. + * Rights to this code are as documented in doc/LICENSE. + * + * This file contains code for the NickServ FREGISTER function. + * + * Remember to give the user:fregister priv to any soper you want + * to be able to use this command. + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/ns_fregister", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void ns_cmd_fregister(sourceinfo_t *si, int parc, char *parv[]); + +command_t ns_fregister = { "FREGISTER", "Registers a nickname on behalf of another user.", PRIV_USER_FREGISTER, 20, ns_cmd_fregister, { .path = "contrib/fregister" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("nickserv", &ns_fregister); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("nickserv", &ns_fregister); +} + +static void ns_cmd_fregister(sourceinfo_t *si, int parc, char *parv[]) +{ + myuser_t *mu; + mynick_t *mn = NULL; + char *account; + char *pass; + char *email; + int i, uflags = 0; + hook_user_req_t req; + + account = parv[0], pass = parv[1], email = parv[2]; + + if (!account || !pass || !email) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "FREGISTER"); + command_fail(si, fault_needmoreparams, "Syntax: FREGISTER [CRYPTPASS]"); + return; + } + + for (i = 3; i < parc; i++) + { + if (!strcasecmp(parv[i], "CRYPTPASS")) + uflags |= MU_CRYPTPASS; + else if (!strcasecmp(parv[i], "HIDEMAIL")) + uflags |= MU_HIDEMAIL; + else if (!strcasecmp(parv[i], "NOOP")) + uflags |= MU_NOOP; + else if (!strcasecmp(parv[i], "NEVEROP")) + uflags |= MU_NEVEROP; + } + + if (!(uflags & MU_CRYPTPASS) && strlen(pass) > 32) + { + command_fail(si, fault_badparams, STR_INVALID_PARAMS, "FREGISTER"); + return; + } + + if (!nicksvs.no_nick_ownership && IsDigit(*account)) + { + command_fail(si, fault_badparams, "For security reasons, you can't register your UID."); + return; + } + + if (strchr(account, ' ') || strchr(account, '\n') || strchr(account, '\r') || account[0] == '=' || account[0] == '#' || account[0] == '@' || account[0] == '+' || account[0] == '%' || account[0] == '!' || strchr(account, ',')) + { + command_fail(si, fault_badparams, "The account name \2%s\2 is invalid.", account); + return; + } + + if (!validemail(email)) + { + command_fail(si, fault_badparams, "\2%s\2 is not a valid email address.", email); + return; + } + + /* make sure it isn't registered already */ + if (nicksvs.no_nick_ownership ? myuser_find(account) != NULL : mynick_find(account) != NULL) + { + command_fail(si, fault_alreadyexists, "\2%s\2 is already registered.", account); + return; + } + + mu = myuser_add(account, pass, email, uflags | config_options.defuflags | MU_NOBURSTLOGIN); + mu->registered = CURRTIME; + mu->lastlogin = CURRTIME; + if (!nicksvs.no_nick_ownership) + { + mn = mynick_add(mu, entity(mu)->name); + mn->registered = CURRTIME; + mn->lastseen = CURRTIME; + } + + logcommand(si, CMDLOG_REGISTER, "FREGISTER: \2%s\2 to \2%s\2", account, email); + if (is_soper(mu)) + { + wallops("%s used FREGISTER on account \2%s\2 with services operator privileges.", get_oper_name(si), entity(mu)->name); + slog(LG_INFO, "SOPER: \2%s\2", entity(mu)->name); + } + + command_success_nodata(si, "\2%s\2 is now registered to \2%s\2.", entity(mu)->name, mu->email); + hook_call_user_register(mu); + req.si = si; + req.mu = mu; + req.mn = mn; + hook_call_user_verify_register(&req); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/ns_generatehash.c b/ns_generatehash.c new file mode 100644 index 0000000..25d63fb --- /dev/null +++ b/ns_generatehash.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2010 Atheme development group + * Rights to this code are as documented in doc/LICENSE. + * + * Generates a hash for use as a operserv "password". + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/ns_generatehash", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme development group" +); + +static void ns_cmd_generatehash(sourceinfo_t *si, int parc, char *parv[]); + +command_t ns_generatehash = { "GENERATEHASH", "Generates a hash for SOPER.", + AC_NONE, 1, ns_cmd_generatehash, { .path = "contrib/generatehash" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("nickserv", &ns_generatehash); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("nickserv", &ns_generatehash); +} + +static void ns_cmd_generatehash(sourceinfo_t *si, int parc, char *parv[]) +{ + char *pass = parv[0]; + char hash[PASSLEN]; + + if (parc < 1) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "GENERATEHASH"); + command_fail(si, fault_needmoreparams, _("Syntax: GENERATEHASH ")); + return; + } + + if (crypto_module_loaded) + { + mowgli_strlcpy(hash, crypt_string(pass, gen_salt()), PASSLEN); + command_success_string(si, hash, "Hash is: %s", hash); + } + else + command_success_nodata(si, "No crypto module loaded so could not hash anything."); + + logcommand(si, CMDLOG_GET, "GENERATEHASH"); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/ns_generatepass.c b/ns_generatepass.c new file mode 100644 index 0000000..3fecd70 --- /dev/null +++ b/ns_generatepass.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2005 Greg Feigenson + * Rights to this code are as documented in doc/LICENSE. + * + * Generates a new password, either n digits long (w/ nickserv arg), or 7 digits + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/ns_generatepass", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Epiphanic Networks " +); + +static void ns_cmd_generatepass(sourceinfo_t *si, int parc, char *parv[]); + +command_t ns_generatepass = { "GENERATEPASS", "Generates a random password.", + AC_NONE, 1, ns_cmd_generatepass, { .path = "contrib/generatepass" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("nickserv", &ns_generatepass); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("nickserv", &ns_generatepass); +} + +static void ns_cmd_generatepass(sourceinfo_t *si, int parc, char *parv[]) +{ + int n = 0; + char *newpass; + + if (parc >= 1) + n = atoi(parv[0]); + + if (n <= 0 || n > 127) + n = 7; + + newpass = random_string(n); + + command_success_string(si, newpass, "Randomly generated password: %s", newpass); + free(newpass); + logcommand(si, CMDLOG_GET, "GENERATEPASS"); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/ns_guestnoreg.c b/ns_guestnoreg.c new file mode 100644 index 0000000..eb767ab --- /dev/null +++ b/ns_guestnoreg.c @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2010 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * This file contains code for blocking registrations of guest nicks. + * Particularly for use with webchat clients. + * + * To actually use this, add a something like the following to + * the nickserv {} block of your atheme.conf: + * guestnicks { + * "mib_"; + * "WebUser"; + * }; + * + */ + +#include "atheme.h" +#include "conf.h" + +DECLARE_MODULE_V1 +( + "contrib/ns_guestnoreg", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static mowgli_list_t guestnicks = { NULL, NULL, 0 }; + +static void guestnoreg_hook(hook_user_register_check_t *hdata) +{ + mowgli_node_t *n; + + return_if_fail(hdata != NULL); + return_if_fail(hdata->si != NULL); + + MOWGLI_ITER_FOREACH(n, guestnicks.head) + { + char *nick = n->data; + int nicklen = strlen(nick); + + if (!strncasecmp(hdata->account, nick, nicklen)) + { + command_fail(hdata->si, fault_badparams, _("Registering of guest nicknames is disallowed.")); + hdata->approved++; + } + } + +} + +static int guestnoreg_config_handler(mowgli_config_file_entry_t *ce) +{ + mowgli_config_file_entry_t *cce; + + MOWGLI_ITER_FOREACH(cce, ce->entries) + { + char *nick = sstrdup(cce->varname); + mowgli_node_add(nick, mowgli_node_create(), &guestnicks); + } + + return 0; +} + +static void guestnoreg_config_purge(void *unused) +{ + mowgli_node_t *n, *tn; + + MOWGLI_ITER_FOREACH_SAFE(n, tn, guestnicks.head) + { + char *nick = n->data; + + free(nick); + mowgli_node_delete(n, &guestnicks); + mowgli_node_free(n); + } +} + +void +_modinit(module_t *m) +{ + hook_add_event("config_purge"); + hook_add_config_purge(guestnoreg_config_purge); + + hook_add_event("user_can_register"); + hook_add_user_can_register(guestnoreg_hook); + + add_conf_item("GUESTNICKS", &nicksvs.me->conf_table, guestnoreg_config_handler); +} + +void +_moddeinit(module_unload_intent_t intent) +{ + hook_del_user_can_register(guestnoreg_hook); + hook_del_config_purge(guestnoreg_config_purge); + + del_conf_item("GUESTNICKS", &nicksvs.me->conf_table); +} diff --git a/ns_listlogins.c b/ns_listlogins.c new file mode 100644 index 0000000..217ea31 --- /dev/null +++ b/ns_listlogins.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2005-2007 William Pitcock, et al. + * Rights to this code are as documented in doc/LICENSE. + * + * This file contains code for the NickServ LISTLOGINS function. + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/ns_listlogins", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void ns_cmd_listlogins(sourceinfo_t *si, int parc, char *parv[]); + +command_t ns_listlogins = { "LISTLOGINS", N_("Lists details of clients authenticated as you."), AC_AUTHENTICATED, 1, ns_cmd_listlogins, { .path = "contrib/listlogins" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("nickserv", &ns_listlogins); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("nickserv", &ns_listlogins); +} + +static void ns_cmd_listlogins(sourceinfo_t *si, int parc, char *parv[]) +{ + user_t *u; + mowgli_node_t *n; + int matches = 0; + + if (si->smu->flags & MU_WAITAUTH) + { + command_fail(si, fault_noprivs, _("You have to verify your email address before you can perform this operation.")); + return; + } + + command_success_nodata(si, "Clients identified to account \2%s\2", entity(si->smu)->name); + MOWGLI_ITER_FOREACH(n, si->smu->logins.head) + { + u = n->data; + command_success_nodata(si, "- %s!%s@%s (real host: %s)", u->nick, u->user, u->vhost, u->host); + matches++; + } + command_success_nodata(si, ngettext(N_("\2%d\2 client found"), N_("\2%d\2 clients found"), matches), matches); + logcommand(si, CMDLOG_GET, "LISTLOGINS: (\2%d\2 matches)", matches); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/ns_mxcheck.c b/ns_mxcheck.c new file mode 100644 index 0000000..ee191de --- /dev/null +++ b/ns_mxcheck.c @@ -0,0 +1,89 @@ +#include "atheme.h" + +#ifndef _WIN32 + +#include +#include +#include +#include + +DECLARE_MODULE_V1 +( + "contrib/ns_mxcheck", false, _modinit, _moddeinit, + "1.1", + "Jamie L. Penman-Smithson " +); + +static void check_registration(hook_user_register_check_t *hdata); +int count_mx (const char *host); + +void _modinit(module_t *m) +{ + hook_add_event("user_can_register"); + hook_add_user_can_register(check_registration); +} + +void _moddeinit(module_unload_intent_t intent) +{ + hook_del_user_can_register(check_registration); +} + +static void check_registration(hook_user_register_check_t *hdata) +{ + char buf[1024]; + const char *user; + const char *domain; + int count; + + if (hdata->approved) + return; + + mowgli_strlcpy(buf, hdata->email, sizeof buf); + user = strtok(buf, "@"); + domain = strtok(NULL, "@"); + count = count_mx(domain); + + if (count > 0) + { + /* there are MX records for this domain */ + slog(LG_INFO, "REGISTER: mxcheck: %d MX records for %s", count, domain); + } + else + { + /* no MX records or error */ + struct hostent *host; + + /* attempt to resolve host (fallback to A) */ + if((host = gethostbyname(domain)) == NULL) + { + slog(LG_INFO, "REGISTER: mxcheck: no A/MX records for %s - " + "REGISTER failed", domain); + command_fail(hdata->si, fault_noprivs, "Sorry, \2%s\2 does not exist, " + "I can't send mail there. Please check and try again.", domain); + hdata->approved = 1; + return; + } + } +} + +int count_mx (const char *host) +{ + u_char nsbuf[4096]; + ns_msg amsg; + int l; + + l = res_query (host, ns_c_any, ns_t_mx, nsbuf, sizeof (nsbuf)); + if (l < 0) + { + return 0; + } + else + { + ns_initparse (nsbuf, l, &amsg); + l = ns_msg_count (amsg, ns_s_an); + } + + return l; +} + +#endif diff --git a/ns_mxcheck_async.c b/ns_mxcheck_async.c new file mode 100644 index 0000000..882eb05 --- /dev/null +++ b/ns_mxcheck_async.c @@ -0,0 +1,152 @@ +#include "atheme.h" + +#ifndef _WIN32 + +#include +#include +#include +#include + +DECLARE_MODULE_V1 +( + "contrib/ns_mxcheck_async", false, _modinit, _moddeinit, + "1.1", + "Jamie L. Penman-Smithson " +); + +struct procdata +{ + char name[NICKLEN]; + char email[EMAILLEN]; +}; + +#define MAX_CHILDPROCS 10 + +static unsigned int proccount; +static struct procdata procdata[MAX_CHILDPROCS]; + +static void childproc_cb(pid_t pid, int status, void *data); +static void check_registration(hook_user_register_check_t *hdata); + +int count_mx (const char *host); + +void _modinit(module_t *m) +{ + hook_add_event("user_can_register"); + hook_add_user_can_register(check_registration); +} + +void _moddeinit(module_unload_intent_t intent) +{ + hook_del_user_can_register(check_registration); + childproc_delete_all(childproc_cb); +} + +static void childproc_cb(pid_t pid, int status, void *data) +{ + struct procdata *pd = data; + myuser_t *mu; + const char *domain; + + return_if_fail(proccount > 0); + proccount--; + + if (!WIFEXITED(status)) + return; + + mu = myuser_find(pd->name); + if (mu == NULL || strcmp(pd->email, mu->email)) + return; + domain = strchr(pd->email, '@'); + if (domain == NULL) + return; + domain++; + + if (WEXITSTATUS(status) == 1) + { + slog(LG_INFO, "REGISTER: mxcheck: no A/MX records for %s - " + "REGISTER failed", domain); + myuser_notice(nicksvs.nick, mu, "Sorry, \2%s\2 does not exist, " + "I can't send mail there. Please check and try again.", domain); + object_unref(mu); + } + else if (WEXITSTATUS(status) == 0) + { + slog(LG_INFO, "REGISTER: mxcheck: valid MX records for %s", domain); + } +} + +static void check_registration(hook_user_register_check_t *hdata) +{ + char buf[1024]; + const char *user; + const char *domain; + int count; + pid_t pid; + struct procdata *pd; + + if (hdata->approved) + return; + + if (proccount >= MAX_CHILDPROCS) + { + command_fail(hdata->si, fault_toomany, "Sorry, too many registrations in progress. Try again later."); + hdata->approved = 1; + return; + } + switch (pid = fork()) + { + case 0: /* child */ + connection_close_all_fds(); + mowgli_strlcpy(buf, hdata->email, sizeof buf); + user = strtok(buf, "@"); + domain = strtok(NULL, "@"); + count = count_mx(domain); + + if (count <= 0) + { + /* no MX records or error */ + struct hostent *host; + + /* attempt to resolve host (fallback to A) */ + if((host = gethostbyname(domain)) == NULL) + _exit(1); + } + _exit(0); + break; + case -1: /* error */ + slog(LG_ERROR, "fork() failed for check_registration(): %s", + strerror(errno)); + command_fail(hdata->si, fault_toomany, "Sorry, too many registrations in progress. Try again later."); + hdata->approved = 1; + return; + default: /* parent */ + pd = &procdata[proccount++]; + mowgli_strlcpy(pd->name, hdata->account, sizeof pd->name); + mowgli_strlcpy(pd->email, hdata->email, sizeof pd->email); + childproc_add(pid, "ns_mxcheck_async", childproc_cb, pd); + return; + } +} + +int count_mx (const char *host) +{ + u_char nsbuf[4096]; + ns_msg amsg; + int l; + + l = res_query (host, ns_c_any, ns_t_mx, nsbuf, sizeof (nsbuf)); + if (l < 0) + { + return 0; + } + else + { + ns_initparse (nsbuf, l, &amsg); + l = ns_msg_count (amsg, ns_s_an); + } + + return l; +} + +#endif diff --git a/ns_regnotice.c b/ns_regnotice.c new file mode 100644 index 0000000..9cec565 --- /dev/null +++ b/ns_regnotice.c @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2010 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * Sends a customized welcome message on nickname registration. + */ + +#include "atheme.h" +#include "conf.h" + +DECLARE_MODULE_V1 +( + "contrib/ns_regnotice", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static mowgli_list_t regnotices = { NULL, NULL, 0 }; + +static void regnotice_hook(myuser_t *mu) +{ + mowgli_node_t *n; + + return_if_fail(mu != NULL); + + MOWGLI_ITER_FOREACH(n, regnotices.head) + { + char *line = n->data; + + myuser_notice(nicksvs.nick, mu, "%s", line); + } +} + +static int regnotice_config_handler(mowgli_config_file_entry_t *ce) +{ + mowgli_config_file_entry_t *cce; + + MOWGLI_ITER_FOREACH(cce, ce->entries) + { + char *line = sstrdup(cce->varname); + mowgli_node_add(line, mowgli_node_create(), ®notices); + } + + return 0; +} + +static void regnotice_config_purge(void *unused) +{ + mowgli_node_t *n, *tn; + + MOWGLI_ITER_FOREACH_SAFE(n, tn, regnotices.head) + { + char *line = n->data; + + free(line); + mowgli_node_delete(n, ®notices); + mowgli_node_free(n); + } +} + +void +_modinit(module_t *m) +{ + hook_add_event("config_purge"); + hook_add_config_purge(regnotice_config_purge); + + hook_add_event("user_register"); + hook_add_user_register(regnotice_hook); + + add_conf_item("REGNOTICE", &nicksvs.me->conf_table, regnotice_config_handler); +} + +void +_moddeinit(module_unload_intent_t intent) +{ + hook_del_user_register(regnotice_hook); + hook_del_config_purge(regnotice_config_purge); + + del_conf_item("REGNOTICE", &nicksvs.me->conf_table); +} diff --git a/ns_waitreg.c b/ns_waitreg.c new file mode 100644 index 0000000..97eeb7b --- /dev/null +++ b/ns_waitreg.c @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2010 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * This file contains code for delaying user registration + */ + +#include "atheme.h" +#include "conf.h" +#include + +DECLARE_MODULE_V1 +( + "contrib/ns_waitreg", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +unsigned int waitreg_time = 0; + +static void waitreg_hook(hook_user_register_check_t *hdata) +{ + return_if_fail(hdata != NULL); + return_if_fail(hdata->si != NULL); + return_if_fail(hdata->password != NULL); + + if (hdata->si->su == NULL) + return; + + unsigned int nickage = CURRTIME - hdata->si->su->ts; + + if (nickage < waitreg_time) + { + command_fail(hdata->si, fault_badparams, _("You can not register your nick so soon after connecting. Please wait a while and try again.")); + hdata->approved++; + } +} + +static void info_hook(sourceinfo_t *si) +{ + return_if_fail(si != NULL); + + command_success_nodata(si, "Time (in seconds) before users may register an account: %u", waitreg_time); +} + +void +_modinit(module_t *m) +{ + + hook_add_event("user_can_register"); + hook_add_user_can_register(waitreg_hook); + + hook_add_event("operserv_info"); + hook_add_operserv_info(info_hook); + + add_uint_conf_item("WAITREG_TIME", &nicksvs.me->conf_table, 0, &waitreg_time, 0, INT_MAX, 0); +} + +void +_moddeinit(module_unload_intent_t intent) +{ + hook_del_user_can_register(waitreg_hook); + hook_del_operserv_info(info_hook); + + del_conf_item("WAITREG_TIME", &nicksvs.me->conf_table); +} diff --git a/on_db_save.c b/on_db_save.c new file mode 100644 index 0000000..d86cc23 --- /dev/null +++ b/on_db_save.c @@ -0,0 +1,144 @@ +#include "atheme.h" +#include "conf.h" +#include "datastream.h" + +#ifndef _WIN32 + +DECLARE_MODULE_V1 +( + "contrib/on_db_save", false, _modinit, _moddeinit, + "", + "Atheme Development Group " +); + +static char *command = NULL; + +static void on_db_save(void *unused); + +static struct update_command_state { + connection_t *out, *err; + pid_t pid; + int running; +} update_command_proc; + +void _modinit(module_t *m) +{ + hook_add_event("db_saved"); + hook_add_db_saved(on_db_save); + + add_dupstr_conf_item("db_update_command", &conf_gi_table, 0, &command, NULL); +} + +void _moddeinit(module_unload_intent_t intent) +{ + hook_del_db_saved(on_db_save); + + del_conf_item("db_update_command", &conf_gi_table); +} + +static void update_command_finished(pid_t pid, int status, void *data) +{ + if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) + slog(LG_ERROR, "ERROR: Database update command failed with error %d", WEXITSTATUS(status)); + + update_command_proc.running = 0; +} + +static void update_command_recvq_handler(connection_t *cptr, int err) +{ + char buf[BUFSIZE]; + int count; + + count = recvq_getline(cptr, buf, sizeof(buf) - 1); + if (count <= 0) + return; + if (buf[count-1] == '\n') + count--; + if (count == 0) + buf[count++] = ' '; + buf[count] = '\0'; + + if (err) + { + slog(LG_ERROR, "ERROR: database update command said: %s", buf); + } + else + slog(LG_DEBUG, "db update command stdout: %s", buf); +} + +static void update_command_stdout_handler(connection_t *cptr) +{ + update_command_recvq_handler(cptr, 0); +} + +static void update_command_stderr_handler(connection_t *cptr) +{ + update_command_recvq_handler(cptr, 1); +} + +static void on_db_save(void *unused) +{ + int stdout_pipes[2], stderr_pipes[2]; + pid_t pid; + int errno1; + + if (!command) + return; + + if (update_command_proc.running) + { + slog(LG_ERROR, "ERROR: database update command is still running"); + return; + } + + if (pipe(stdout_pipes) == -1) + { + int err = errno; + slog(LG_ERROR, "ERROR: Couldn't create pipe for database update command: %s", strerror(err)); + return; + } + + if (pipe(stderr_pipes) == -1) + { + int err = errno; + slog(LG_ERROR, "ERROR: Couldn't create pipe for database update command: %s", strerror(err)); + close(stdout_pipes[0]); + close(stdout_pipes[1]); + return; + } + + pid = fork(); + + switch (pid) + { + case -1: + errno1 = errno; + slog(LG_ERROR, "Failed to fork for database update command: %s", strerror(errno1)); + return; + case 0: + connection_close_all_fds(); + close(stdout_pipes[0]); + close(stderr_pipes[0]); + dup2(stdout_pipes[1], 1); + dup2(stderr_pipes[1], 2); + close(stdout_pipes[1]); + close(stderr_pipes[1]); + execl("/bin/sh", "sh", "-c", command, NULL); + write(2, "Failed to exec /bin/sh\n", 23); + _exit(255); + return; + default: + close(stdout_pipes[1]); + close(stderr_pipes[1]); + update_command_proc.out = connection_add("update_command_stdout", stdout_pipes[0], 0, recvq_put, NULL); + update_command_proc.err = connection_add("update_command_stderr", stderr_pipes[0], 0, recvq_put, NULL); + update_command_proc.out->recvq_handler = update_command_stdout_handler; + update_command_proc.err->recvq_handler = update_command_stderr_handler; + update_command_proc.pid = pid; + update_command_proc.running = 1; + childproc_add(pid, "db_update", update_command_finished, NULL); + break; + } +} + +#endif diff --git a/os_akillnicklist.c b/os_akillnicklist.c new file mode 100644 index 0000000..08dba3a --- /dev/null +++ b/os_akillnicklist.c @@ -0,0 +1,172 @@ +/* + * Copyright (c) 2010 William Pitcock, et al. + * The rights to this code are as documented under doc/LICENSE. + * + * Automatically AKILL a list of clients, given their operating parameters. + * + * Basically this builds a keyword patricia. O(NICKLEN) lookups at the price + * of a longer startup process. + * + * Configuration. + * ============== + * + * This module adds a new block to the config file: + * + * nicklists { + * all = "/home/nenolod/atheme-production.hg4576/etc/nicklists/azn.txt"; + * nick = "/home/nenolod/atheme-production.hg4576/etc/nicklists/bottler-nicks.txt"; + * user = "/home/nenolod/atheme-production.hg4576/etc/nicklists/bottler-users.txt"; + * real = "/home/nenolod/atheme-production.hg4576/etc/nicklists/bottler-gecos.txt"; + * }; + * + * You can add multiple all, nick, user and real entries. The entries will be merged. + * I would also like to say: fuck you GNAA, you guys need to go play in fucking traffic. + * Thanks for reading my crappy docs, and have a nice day. + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/os_akillnicklist", false, _modinit, _moddeinit, + "0.1", + "Atheme Development Group " +); + +static mowgli_patricia_t *akillalllist = NULL; +static mowgli_patricia_t *akillnicklist = NULL; +static mowgli_patricia_t *akilluserlist = NULL; +static mowgli_patricia_t *akillreallist = NULL; + +static mowgli_list_t conft = { NULL, NULL, 0 }; + +static void +add_contents_of_file_to_list(const char *filename, mowgli_patricia_t *list) +{ + char value[BUFSIZE]; + FILE *f; + + f = fopen(filename, "r"); + if (!f) + return; + + while (fgets(value, BUFSIZE, f) != NULL) + { + strip(value); + + if (!*value) + continue; + + mowgli_patricia_add(list, value, (void *) 0x1); + } + + fclose(f); +} + +static int +nicklist_config_handler_all(mowgli_config_file_entry_t *entry) +{ + add_contents_of_file_to_list(entry->vardata, akillalllist); + + return 0; +} + +static int +nicklist_config_handler_nick(mowgli_config_file_entry_t *entry) +{ + add_contents_of_file_to_list(entry->vardata, akillnicklist); + + return 0; +} + +static int +nicklist_config_handler_user(mowgli_config_file_entry_t *entry) +{ + add_contents_of_file_to_list(entry->vardata, akilluserlist); + + return 0; +} + +static int +nicklist_config_handler_real(mowgli_config_file_entry_t *entry) +{ + add_contents_of_file_to_list(entry->vardata, akillreallist); + + return 0; +} + +static void +aknl_nickhook(hook_user_nick_t *data) +{ + user_t *u; + bool doit = false; + char *username; + + return_if_fail(data != NULL); + return_if_fail(data->u != NULL); + + u = data->u; + + if (is_internal_client(u)) + return; + + if (is_autokline_exempt(u)) + return; + + username = u->user; + if (*username == '~') + username++; + + if (mowgli_patricia_retrieve(akillalllist, u->nick) != NULL && + mowgli_patricia_retrieve(akillalllist, username) != NULL && + mowgli_patricia_retrieve(akillalllist, u->gecos) != NULL) + doit = true; + + if (mowgli_patricia_retrieve(akillnicklist, u->nick) != NULL) + doit = true; + + if (mowgli_patricia_retrieve(akilluserlist, username) != NULL) + doit = true; + + if (mowgli_patricia_retrieve(akillreallist, u->gecos) != NULL) + doit = true; + + if (!doit) + return; + + slog(LG_INFO, "AKNL: k-lining \2%s\2!%s@%s [%s] due to appearing to be a possible spambot", u->nick, u->user, u->host, u->gecos); + kline_sts("*", "*", u->host, 86400, "Possible spambot"); +} + +void +_modinit(module_t *m) +{ + add_subblock_top_conf("NICKLISTS", &conft); + add_conf_item("ALL", &conft, nicklist_config_handler_all); + add_conf_item("NICK", &conft, nicklist_config_handler_nick); + add_conf_item("USER", &conft, nicklist_config_handler_user); + add_conf_item("REAL", &conft, nicklist_config_handler_real); + + akillalllist = mowgli_patricia_create(strcasecanon); + akillnicklist = mowgli_patricia_create(strcasecanon); + akilluserlist = mowgli_patricia_create(strcasecanon); + akillreallist = mowgli_patricia_create(strcasecanon); + + hook_add_event("user_add"); + hook_add_user_add(aknl_nickhook); + hook_add_event("user_nickchange"); + hook_add_user_nickchange(aknl_nickhook); +} + +void +_moddeinit(module_unload_intent_t intent) +{ + hook_del_user_add(aknl_nickhook); + hook_del_user_nickchange(aknl_nickhook); + + del_conf_item("ALL", &conft); + del_conf_item("NICK", &conft); + del_conf_item("USER", &conft); + del_conf_item("REAL", &conft); + del_top_conf("NICKLISTS"); +} diff --git a/os_defcon.c b/os_defcon.c new file mode 100644 index 0000000..83b4e99 --- /dev/null +++ b/os_defcon.c @@ -0,0 +1,239 @@ +/* + * Copyright (c) 2010 JD Horelick + * Rights to this code are as defined in doc/LICENSE. + * + * DEFCON implementation. + * + * By default, any setting except 5 will expire after 15 minutes, + * to change this, add a defcon_timeout = X; option to the operserv{} + * block in your atheme.con. X = amount of time in minutes for a defcon + * setting to time out/expire. + * + */ +#include "atheme.h" +#define DEFCON_CMODE "R" + +DECLARE_MODULE_V1 +( + "contrib/os_defcon", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void os_cmd_defcon(sourceinfo_t *si, int parc, char *parv[]); +static void defcon_nouserreg(hook_user_register_check_t *hdata); +static void defcon_nochanreg(hook_channel_register_check_t *hdatac); +static void defcon_useradd(hook_user_nick_t *data); +static void defcon_timeoutfunc(void *dummy); +static int level = 5; +static unsigned int defcon_timeout = 900; +static mowgli_eventloop_timer_t *defcon_timer = NULL; + +command_t os_defcon = { "DEFCON", N_("Implements Defense Condition lockdowns."), PRIV_ADMIN, 1, os_cmd_defcon, { .path = "contrib/defcon" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("operserv", &os_defcon); + TAINT_ON("Using os_defcon", "Use of os_defcon is unsupported and not recommend. Use only at your own risk."); + + /* Hooks for all the stuff defcon disables */ + hook_add_event("user_can_register"); + hook_add_user_can_register(defcon_nouserreg); + hook_add_event("channel_can_register"); + hook_add_channel_can_register(defcon_nochanreg); + hook_add_event("user_add"); + hook_add_user_add(defcon_useradd); + + service_t *svs; + svs = service_find("operserv"); + add_duration_conf_item("DEFCON_TIMEOUT", &svs->conf_table, 0, &defcon_timeout, "m", 900); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("operserv", &os_defcon); + + hook_del_user_can_register(defcon_nouserreg); + hook_del_channel_can_register(defcon_nochanreg); + hook_del_user_add(defcon_useradd); + + service_t *svs; + svs = service_find("operserv"); + del_conf_item("DEFCON_TIMEOUT", &svs->conf_table); + + if (defcon_timer != NULL) + mowgli_timer_destroy(base_eventloop, defcon_timer); +} + +static void defcon_nouserreg(hook_user_register_check_t *hdata) +{ + return_if_fail(hdata != NULL); + return_if_fail(hdata->si != NULL); + + if (level < 5) + { + command_fail(hdata->si, fault_badparams, _("Registrations are currently disabled on this network, please try again later.")); + hdata->approved++; + } +} + +static void defcon_nochanreg(hook_channel_register_check_t *hdatac) +{ + return_if_fail(hdatac != NULL); + return_if_fail(hdatac->si != NULL); + + if (level < 5) + { + command_fail(hdatac->si, fault_badparams, _("Registrations are currently disabled on this network, please try again later.")); + hdatac->approved++; + } +} + +static void defcon_useradd(hook_user_nick_t *data) +{ + user_t *u = data->u; + + if (!u) + return; + + if (is_internal_client(u)) + return; + + if (level == 1) + { + slog(LG_INFO, "DEFCON:KLINE: %s!%s@%s", u->nick, u->user, u->host); + kline_sts("*", u->user, u->host, 900, "This network is currently not accepting connections, please try again later."); + } +} + +static void defcon_svsignore(void) +{ + svsignore_t *svsignore; + mowgli_node_t *n, *tn; + + if (level <= 2) + { + MOWGLI_ITER_FOREACH(n, svs_ignore_list.head) + { + svsignore = (svsignore_t *)n->data; + + if (!strcasecmp(svsignore->mask, "*@*")) + return; + } + + slog(LG_INFO, "DEFCON:IGNORE:ADD"); + svsignore = svsignore_add("*@*", "DEFCON Level 1 or 2 activated"); + svsignore->setby = "DEFCON"; + svsignore->settime = CURRTIME; + } + else if (level >= 3) + { + MOWGLI_ITER_FOREACH_SAFE(n, tn, svs_ignore_list.head) + { + svsignore = (svsignore_t *)n->data; + + if (!strcasecmp(svsignore->mask,"*@*")) + { + slog(LG_INFO, "DEFCON:IGNORE:REMOVE"); + svsignore_delete(svsignore); + } + } + } +} + +static void defcon_forcechanmodes(void) +{ + channel_t *chptr; + mowgli_patricia_iteration_state_t state; + service_t *svs; + char modesetbuf[256]; + char modeunsetbuf[256]; + + svs = service_find("operserv"); + + if (level <= 3) + { + snprintf(modesetbuf, sizeof modesetbuf, "+%s", DEFCON_CMODE); + slog(LG_INFO, "DEFCON:MODE: %s", modesetbuf); + MOWGLI_PATRICIA_FOREACH(chptr, &state, chanlist) + { + channel_mode_va(svs->me, chptr, 1, modesetbuf); + } + } + else if (level >= 4) + { + snprintf(modeunsetbuf, sizeof modeunsetbuf, "-%s", DEFCON_CMODE); + slog(LG_INFO, "DEFCON:MODE: %s", modeunsetbuf); + MOWGLI_PATRICIA_FOREACH(chptr, &state, chanlist) + { + channel_mode_va(svs->me, chptr, 1, modeunsetbuf); + } + } +} + +static void defcon_timeoutfunc(void *dummy) +{ + service_t *svs; + char buf[BUFSIZE]; + + svs = service_find("operserv"); + + level = 5; + defcon_svsignore(); + defcon_forcechanmodes(); + slog(LG_INFO, "DEFCON:TIMEOUT"); + + snprintf(buf, sizeof buf, "The DEFCON level is now back to normal (\2%d\2). Sorry for any inconvenience this caused.", level); + notice_global_sts(svs->me, "*", buf); +} + +static void os_cmd_defcon(sourceinfo_t *si, int parc, char *parv[]) +{ + char *defcon = parv[0]; + char buf[BUFSIZE]; + + if (!defcon) + { + command_success_nodata(si, _("Defense condition is currently level \2%d\2."), level); + return; + } + + level = atoi(defcon); + + if ((level <= 0) || (level > 5)) + { + command_fail(si, fault_badparams, _("Defcon level must be between 1 and 5")); + level = 5; + return; + } + + /* Call the 2 functions that don't use hooks */ + defcon_svsignore(); + defcon_forcechanmodes(); + + if (level < 5) + { + snprintf(buf, sizeof buf, "The DEFCON level has been changed to \2%d\2. We apologize for any inconvenience.", level); + + if (defcon_timer == NULL) + defcon_timer = mowgli_timer_add_once(base_eventloop, "defcon_timeout", defcon_timeoutfunc, NULL, defcon_timeout); + } + else + { + snprintf(buf, sizeof buf, "The DEFCON level is now back to normal (\2%d\2). Sorry for any inconvenience this caused.", level); + + mowgli_timer_destroy(base_eventloop, defcon_timer); + defcon_timer = NULL; + } + + notice_global_sts(si->service->me, "*", buf); + command_success_nodata(si, _("Defense condition set to level \2%d\2."), level); + wallops(_("\2%s\2 set Defense condition to level \2%d\2."), get_oper_name(si), level); + logcommand(si, CMDLOG_ADMIN, "DEFCON: \2%d\2", level); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/os_helpme.c b/os_helpme.c new file mode 100644 index 0000000..3ac6282 --- /dev/null +++ b/os_helpme.c @@ -0,0 +1,39 @@ +/* os_helpme.c - set user mode +h + * elly+atheme@leptoquark.net + */ + +#include "atheme.h" +#include "uplink.h" /* sts() */ + + +DECLARE_MODULE_V1 +( + "contrib/os_helpme", false, _modinit, _moddeinit, + "os_helpme.c", + "elly+atheme@leptoquark.net" +); + +static void os_cmd_helpme(sourceinfo_t *si, int parc, char *parv[]); + +command_t os_helpme = { "HELPME", N_("Makes you into a network helper."), + PRIV_HELPER, 0, os_cmd_helpme, { .path = "contrib/helpme" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("operserv", &os_helpme); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("operserv", &os_helpme); +} + +static void os_cmd_helpme(sourceinfo_t *si, int parc, char *parv[]) +{ + service_t *svs; + + svs = service_find("operserv"); + + sts(":%s MODE %s :+h", svs->nick, si->su->nick); + command_success_nodata(si, _("You are now a network helper.")); +} diff --git a/os_joinmon.c b/os_joinmon.c new file mode 100644 index 0000000..3c4f842 --- /dev/null +++ b/os_joinmon.c @@ -0,0 +1,254 @@ +/* + * Copyright (c) 2005 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * Facilitates watching what channels a user joins. + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/os_joinmon", true, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void watch_user_joins(hook_channel_joinpart_t *hdata); +static void os_cmd_joinmon(sourceinfo_t *si, int parc, char *parv[]); + +static void write_jmdb(database_handle_t *db); +static void db_h_jm(database_handle_t *db, const char *type); + +command_t os_joinmon = { "JOINMON", N_("Monitors what channels a user is joining."), PRIV_USER_ADMIN, 3, os_cmd_joinmon, { .path = "contrib/joinmon" } }; + +struct joinmon_ { + char *user; + /* This module is Jamaican...mon. */ + time_t mon_ts; + char *creator; + char *reason; +}; + +typedef struct joinmon_ joinmon_t; + +mowgli_list_t os_monlist; + +void _modinit(module_t *m) +{ + if (!module_find_published("backend/opensex")) + { + slog(LG_INFO, "Module %s requires use of the OpenSEX database backend, refusing to load.", m->name); + m->mflags = MODTYPE_FAIL; + return; + } + + hook_add_event("channel_join"); + hook_add_channel_join(watch_user_joins); + hook_add_db_write(write_jmdb); + + db_register_type_handler("JM", db_h_jm); + + service_named_bind_command("operserv", &os_joinmon); +} + +void _moddeinit(module_unload_intent_t intent) +{ + hook_del_channel_join(watch_user_joins); + hook_del_db_write(write_jmdb); + + db_unregister_type_handler("JM"); + + service_named_unbind_command("operserv", &os_joinmon); +} + +static void write_jmdb(database_handle_t *db) +{ + mowgli_node_t *n; + + MOWGLI_ITER_FOREACH(n, os_monlist.head) + { + joinmon_t *l = n->data; + + db_start_row(db, "JM"); + db_write_word(db, l->user); + db_write_time(db, l->mon_ts); + db_write_word(db, l->creator); + db_write_str(db, l->reason); + db_commit_row(db); + } +} + +static void db_h_jm(database_handle_t *db, const char *type) +{ + const char *user = db_sread_word(db); + time_t mon_ts = db_sread_time(db); + const char *creator = db_sread_word(db); + const char *reason = db_sread_str(db); + + joinmon_t *l = smalloc(sizeof(joinmon_t)); + l->user = sstrdup(user); + l->mon_ts = mon_ts; + l->creator = sstrdup(creator); + l->reason = sstrdup(reason); + mowgli_node_add(l, mowgli_node_create(), &os_monlist); +} + +static void watch_user_joins(hook_channel_joinpart_t *hdata) +{ + mowgli_node_t *n; + chanuser_t *cu = hdata->cu; + joinmon_t *l; + + if (cu == NULL) + return; + + if (!(cu->user->server->flags & SF_EOB)) + return; + + MOWGLI_ITER_FOREACH(n, os_monlist.head) + { + l = n->data; + + /* Use match so you can monitor patterns like SomeBot* or + * t???h?????1 + */ + if (!match(l->user, cu->user->nick)) + { + /* Use LG_INFO because there's really no better logtype and creating + * one just for this module (ie: having to put stuff in core) is + * kind of stupid. Give it it's own logtype if logtypes are ever + * addable by modules. + */ + slog(LG_INFO, "JOINMON: \2%s\2 who matches \2%s\2 has joined \2%s\2", + cu->user->nick, l->user, cu->chan->name); + return; + } + } +} + +static void os_cmd_joinmon(sourceinfo_t *si, int parc, char *parv[]) +{ + char *action = parv[0]; + char *pattern = parv[1]; + char *reason = parv[2]; + mowgli_node_t *n, *tn; + joinmon_t *l; + + if (!action) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "JOINMON"); + command_fail(si, fault_needmoreparams, _("Syntax: JOINMON ADD|DEL|LIST [parameters]")); + return; + } + + if (!strcasecmp("ADD", action)) + { + if (!pattern) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "JOINMON"); + command_fail(si, fault_needmoreparams, _("Syntax: JOINMON ADD [reason]")); + return; + } + + if (si->smu == NULL) + { + command_fail(si, fault_noprivs, _("You are not logged in.")); + return; + } + + /* search for it */ + MOWGLI_ITER_FOREACH(n, os_monlist.head) + { + l = n->data; + + if (!irccasecmp(l->user, pattern)) + { + command_success_nodata(si, _("Pattern \2%s\2 is already being monitored."), pattern); + return; + } + } + + l = smalloc(sizeof(joinmon_t)); + l->user = sstrdup(pattern); + l->mon_ts = CURRTIME;; + l->creator = sstrdup(get_source_name(si)); + + if (reason) + { + l->reason = sstrdup(reason); + logcommand(si, CMDLOG_ADMIN, "JOINMON:ADD: \2%s\2 (Reason: \2%s\2)", pattern, reason); + } + else + { + l->reason = _("None"); + logcommand(si, CMDLOG_ADMIN, "JOINMON:ADD: \2%s\2", pattern); + } + + n = mowgli_node_create(); + mowgli_node_add(l, n, &os_monlist); + + command_success_nodata(si, _("\2%s\2 is now being monitored."), pattern); + return; + } + else if (!strcasecmp("DEL", action)) + { + if (!pattern) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "JOINMON"); + command_fail(si, fault_needmoreparams, _("Syntax: JOINMON DEL ")); + return; + } + + MOWGLI_ITER_FOREACH_SAFE(n, tn, os_monlist.head) + { + l = n->data; + + if (!irccasecmp(l->user, pattern)) + { + logcommand(si, CMDLOG_ADMIN, "JOINMON:DEL: \2%s\2", l->user); + + mowgli_node_delete(n, &os_monlist); + + free(l->user); + free(l->creator); + free(l->reason); + free(l); + + return; + } + } + command_success_nodata(si, _("Pattern \2%s\2 not found in joinmon database."), pattern); + return; + } + else if (!strcasecmp("LIST", action)) + { + char buf[BUFSIZE]; + struct tm tm; + + MOWGLI_ITER_FOREACH(n, os_monlist.head) + { + l = n->data; + + tm = *localtime(&l->mon_ts); + strftime(buf, BUFSIZE, TIME_FORMAT, &tm); + command_success_nodata(si, "Pattern: \2%s\2, Reason: \2%s\2 (%s - %s)", + l->user, l->reason, l->creator, buf); + } + command_success_nodata(si, "End of list."); + logcommand(si, CMDLOG_GET, "JOINMON:LIST"); + return; + } + else + { + command_fail(si, fault_badparams, STR_INVALID_PARAMS, "JOINMON"); + return; + } +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/os_kill.c b/os_kill.c new file mode 100644 index 0000000..70ccaf8 --- /dev/null +++ b/os_kill.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2005 William Pitcock, et al. + * Rights to this code are as documented in doc/LICENSE. + * + * Kill users through services, requested by christel@freenode. + * + * This differs from the ircd /kill command in that it does not show to + * normal users who issued the kill, although the reason will usually be + * shown. This is useful in cases where a kline would normally be used, + * but would not remove the user, but the user cannot (fully) reconnect. + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/os_kill", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void os_cmd_kill(sourceinfo_t *si, int parc, char *parv[]); + +command_t os_kill = { "KILL", "Kill a user with Services.", PRIV_OMODE, 2, os_cmd_kill, { .path = "contrib/kill" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("operserv", &os_kill); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("operserv", &os_kill); +} + +static void os_cmd_kill(sourceinfo_t *si, int parc, char *parv[]) +{ + user_t *target; + + if(!parv[0] || !parv[1]) + { + command_fail(si, fault_badparams, "Usage: \2KILL\2 "); + return; + } + + if(!(target = user_find_named(parv[0]))) + { + command_fail(si, fault_nosuch_target, "\2%s\2 is not on the network", parv[0]); + return; + } + + logcommand(si, CMDLOG_ADMIN, "KILL: \2%s\2 (reason: \2%s\2)", target->nick, parv[1]); + command_success_nodata(si, "\2%s\2 has been killed.", target->nick); + + kill_user(si->service->me, target, "Requested: %s", parv[1]); +} diff --git a/os_klinechan.c b/os_klinechan.c new file mode 100644 index 0000000..073feb6 --- /dev/null +++ b/os_klinechan.c @@ -0,0 +1,215 @@ +/* + * Copyright (c) 2005-2007 Atheme Development Group + * Rights to this code are as documented in doc/LICENSE. + * + * Autokline channels. + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/os_klinechan", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Jilles Tjoelker " +); + +static void os_cmd_klinechan(sourceinfo_t *si, int parc, char *parv[]); +static void os_cmd_listklinechans(sourceinfo_t *si, int parc, char *parv[]); + +command_t os_klinechan = { "KLINECHAN", "Klines all users joining a channel.", + PRIV_MASS_AKILL, 3, os_cmd_klinechan, { .path = "contrib/klinechan" } }; +command_t os_listklinechans = { "LISTKLINECHAN", "Lists active K:line channels.", PRIV_MASS_AKILL, 1, os_cmd_listklinechans, { .path = "contrib/listklinechans" } }; + +static void klinechan_check_join(hook_channel_joinpart_t *hdata); +static void klinechan_show_info(hook_channel_req_t *hdata); + +void _modinit(module_t *m) +{ + service_named_bind_command("operserv", &os_klinechan); + service_named_bind_command("operserv", &os_listklinechans); + hook_add_event("channel_join"); + hook_add_first_channel_join(klinechan_check_join); + hook_add_event("channel_info"); + hook_add_channel_info(klinechan_show_info); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("operserv", &os_klinechan); + service_named_unbind_command("operserv", &os_listklinechans); + hook_del_channel_join(klinechan_check_join); + hook_del_channel_info(klinechan_show_info); +} + +static void klinechan_check_join(hook_channel_joinpart_t *hdata) +{ + mychan_t *mc; + chanuser_t *cu = hdata->cu; + service_t *svs; + char reason[256]; + + svs = service_find("operserv"); + if (svs == NULL) + return; + + if (cu == NULL || is_internal_client(cu->user)) + return; + + if (!(mc = MYCHAN_FROM(cu->chan))) + return; + + if (metadata_find(mc, "private:klinechan:closer")) + { + if (has_priv_user(cu->user, PRIV_JOIN_STAFFONLY)) + notice(svs->me->nick, cu->user->nick, + "Warning: %s klines normal users", + cu->chan->name); + else if (is_autokline_exempt(cu->user)) + { + char buf[BUFSIZE]; + snprintf(buf, sizeof(buf), "Not klining *@%s due to klinechan %s (user %s!%s@%s is exempt)", + cu->user->host, cu->chan->name, + cu->user->nick, cu->user->user, cu->user->host); + wallops_sts(buf); + } + else + { + snprintf(reason, sizeof reason, "Joining %s", + cu->chan->name); + slog(LG_INFO, "klinechan_check_join(): klining \2*@%s\2 (user \2%s!%s@%s\2 joined \2%s\2)", + cu->user->host, cu->user->nick, + cu->user->user, cu->user->host, + cu->chan->name); + kline_sts("*", "*", cu->user->host, 86400, reason); + } + } +} + +static void klinechan_show_info(hook_channel_req_t *hdata) +{ + metadata_t *md; + const char *setter, *reason; + time_t ts; + struct tm tm; + char strfbuf[BUFSIZE]; + + if (!has_priv(hdata->si, PRIV_CHAN_AUSPEX)) + return; + md = metadata_find(hdata->mc, "private:klinechan:closer"); + if (md == NULL) + return; + setter = md->value; + md = metadata_find(hdata->mc, "private:klinechan:reason"); + reason = md != NULL ? md->value : "unknown"; + md = metadata_find(hdata->mc, "private:klinechan:timestamp"); + ts = md != NULL ? atoi(md->value) : 0; + + tm = *localtime(&ts); + strftime(strfbuf, sizeof strfbuf, TIME_FORMAT, &tm); + + command_success_nodata(hdata->si, "%s had \2automatic klines\2 enabled on it by %s on %s (%s)", hdata->mc->name, setter, strfbuf, reason); +} + +static void os_cmd_klinechan(sourceinfo_t *si, int parc, char *parv[]) +{ + char *target = parv[0]; + char *action = parv[1]; + char *reason = parv[2]; + mychan_t *mc; + + if (!target || !action) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "KLINECHAN"); + command_fail(si, fault_needmoreparams, "Usage: KLINECHAN <#channel> [reason]"); + return; + } + + if (!(mc = mychan_find(target))) + { + command_fail(si, fault_nosuch_target, "\2%s\2 is not registered.", target); + return; + } + + if (!strcasecmp(action, "ON")) + { + if (!reason) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "KLINECHAN"); + command_fail(si, fault_needmoreparams, "Usage: KLINECHAN <#channel> ON "); + return; + } + + if (mc->flags & CHAN_LOG) + { + command_fail(si, fault_noprivs, "\2%s\2 cannot be closed.", target); + return; + } + + if (metadata_find(mc, "private:klinechan:closer")) + { + command_fail(si, fault_nochange, "\2%s\2 is already on autokline.", target); + return; + } + + metadata_add(mc, "private:klinechan:closer", si->su->nick); + metadata_add(mc, "private:klinechan:reason", reason); + metadata_add(mc, "private:klinechan:timestamp", number_to_string(CURRTIME)); + + wallops("%s enabled automatic klines on the channel \2%s\2 (%s).", get_oper_name(si), target, reason); + logcommand(si, CMDLOG_ADMIN, "KLINECHAN:ON: \2%s\2 (reason: \2%s\2)", target, reason); + command_success_nodata(si, "Klining all users joining \2%s\2.", target); + } + else if (!strcasecmp(action, "OFF")) + { + if (!metadata_find(mc, "private:klinechan:closer")) + { + command_fail(si, fault_nochange, "\2%s\2 is not closed.", target); + return; + } + + metadata_delete(mc, "private:klinechan:closer"); + metadata_delete(mc, "private:klinechan:reason"); + metadata_delete(mc, "private:klinechan:timestamp"); + + wallops("%s disabled automatic klines on the channel \2%s\2.", get_oper_name(si), target); + logcommand(si, CMDLOG_ADMIN, "KLINECHAN:OFF: \2%s\2", target); + command_success_nodata(si, "No longer klining users joining \2%s\2.", target); + } + else + { + command_fail(si, fault_badparams, STR_INVALID_PARAMS, "KLINECHAN"); + command_fail(si, fault_badparams, "Usage: KLINECHAN <#channel> [reason]"); + } +} + +static void os_cmd_listklinechans(sourceinfo_t *si, int parc, char *parv[]) +{ + const char *pattern; + mowgli_patricia_iteration_state_t state; + mychan_t *mc; + metadata_t *md; + int matches = 0; + + pattern = parc >= 1 ? parv[0] : "*"; + + MOWGLI_PATRICIA_FOREACH(mc, &state, mclist) + { + md = metadata_find(mc, "private:klinechan:closer"); + if (md == NULL) + continue; + if (!match(pattern, mc->name)) + { + command_success_nodata(si, "- %-30s", mc->name); + matches++; + } + } + + logcommand(si, CMDLOG_ADMIN, "LISTKLINECHANS: \2%s\2 (\2%d\2 matches)", pattern, matches); + if (matches == 0) + command_success_nodata(si, _("No K:line channels matched pattern \2%s\2"), pattern); + else + command_success_nodata(si, ngettext(N_("\2%d\2 match for pattern \2%s\2"), + N_("\2%d\2 matches for pattern \2%s\2"), matches), matches, pattern); +} diff --git a/os_modeall.c b/os_modeall.c new file mode 100644 index 0000000..bd03a8d --- /dev/null +++ b/os_modeall.c @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2005-2006 William Pitcock, et al. + * Rights to this code are as documented in doc/LICENSE. + * + * This file contains functionality which implements the OService MODEALL + * command. + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/os_modeall", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void os_cmd_modeall(sourceinfo_t *si, int parc, char *parv[]); + +command_t os_modeall = { "MODEALL", N_("Changes modes on all channels."), PRIV_OMODE, 2, os_cmd_modeall, { .path = "contrib/os_modeall" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("operserv", &os_modeall); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("operserv", &os_modeall); +} + +static void set_channel_mode(service_t *s, channel_t *c, int modeparc, char *modeparv[]) +{ + channel_mode(s->me, c, modeparc, modeparv); +} + +static void os_cmd_modeall(sourceinfo_t *si, int parc, char *parv[]) +{ + char *mode = parv[0]; + channel_t *c; + int modeparc; + char *modeparv[256]; + mowgli_patricia_iteration_state_t state; + int count = 0; + + if (!mode) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "MODEALL"); + command_fail(si, fault_needmoreparams, _("Syntax: MODEALL ")); + return; + } + + modeparc = sjtoken(mode, ' ', modeparv); + + MOWGLI_PATRICIA_FOREACH(c, &state, chanlist) + { + set_channel_mode(si->service, c, modeparc, modeparv); + count++; + } + + command_success_nodata(si, _("Set modes \2%s\2 on \2%d\2 channels."), mode, count); + wallops("\2%s\2 is using MODEALL (set: \2%s\2)", + get_oper_name(si), mode); + logcommand(si, CMDLOG_ADMIN, "MODEALL: \2%s\2", mode); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/os_pingspam.c b/os_pingspam.c new file mode 100644 index 0000000..3390200 --- /dev/null +++ b/os_pingspam.c @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2005 William Pitcock, et al. + * Rights to this code are as documented in doc/LICENSE. + * + * ping spammer thingy + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/os_pingspam", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +char *notices[] = +{ + "Scanning for proxies.", + "Killing off bottlers.", + "LOL ok so like we are teh SKANZ0RZING j00 becuz well like OMG deze bots r h3r3 an liek they are FL00DING!!#@! ignore plz", + "gaben", + "Please ignore this notice.", + "Scanning for warez.", + "All your pr0n are belong to us!", + "Move over! This is the police!", + "This notice brought to you by Burma-Shave.", + "They're coming...", + ":)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(:", + "lolz!", + " your a pagan", + "* Ads needs to shower soon", + " Don't make me get Yakuza on you", + "beu fails it", + "BAN KAI~!$" +}; + +char *phrases[] = +{ + "", + " please-ignore", + " proxy scan", + " ignore me", + " <3 neostats", +}; + +void pingspam(user_t *u); +static void user_add_hook(hook_user_nick_t *data); +static void os_cmd_pingspam(sourceinfo_t *si, int parc, char *parv[]); +static void os_cmd_autopingspam(sourceinfo_t *si, int parc, char *parv[]); + +command_t os_pingspam = { "PINGSPAM", "Spam a user with pings from every service, plus some bonus notices.", PRIV_OMODE, 1, os_cmd_pingspam, { .path = "contrib/pingspam" } }; +command_t os_autopingspam = { "AUTOPINGSPAM", "Spam connecting users with pings from every service, plus some bonus notices (setting).", PRIV_ADMIN, 1, os_cmd_autopingspam, { .path = "contrib/autopingspam" } }; + +int spamming; + +void _modinit(module_t *m) +{ + spamming = 0; + + service_named_bind_command("operserv", &os_pingspam); + service_named_bind_command("operserv", &os_autopingspam); + + hook_add_event("user_add"); + hook_add_user_add(user_add_hook); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("operserv", &os_pingspam); + service_named_unbind_command("operserv", &os_autopingspam); + hook_del_user_add(user_add_hook); +} + +static void user_add_hook(hook_user_nick_t *data) +{ + user_t *u; + + u = data->u; + if (u == NULL) + return; + if (is_internal_client(u)) + return; + if (spamming) + pingspam(u); +} + +static void os_cmd_pingspam(sourceinfo_t *si, int parc, char *parv[]) +{ + char *target = parv[0]; + user_t *u; + + if(!target) + { + command_fail(si, fault_badparams, "Usage: \2PINGSPAM\2 "); + return; + } + + if(!(u = user_find_named(target))) + { + command_fail(si, fault_nosuch_target, "\2%s\2 is not on the network", target); + return; + } + + pingspam(u); + command_success_nodata(si, "\2%s\2 has been pwned.", target); + logcommand(si, CMDLOG_ADMIN, "PINGSPAM: \2%s\2", target); +} + +static void os_cmd_autopingspam(sourceinfo_t *si, int parc, char *parv[]) +{ + char *mode = parv[0]; + + if(!mode) + { + command_success_nodata(si, "Auto-pingspam is currently \2%s\2", spamming ? "ON" : "OFF"); + return; + } + + if(strcasecmp(mode, "on") == 0 || atoi(mode)) + { + spamming = 1; + command_success_nodata(si, "Auto-pingspam is now \2ON\2"); + }else{ + spamming = 0; + command_success_nodata(si, "Auto-pingspam is now \2OFF\2"); + } +} + +void pingspam(user_t *u) +{ + user_t *sptr; + mowgli_node_t *n; + int i; + service_t *svs; + + if((svs = service_find("global")) != NULL) + for(i = 0;i < 6;i++) + notice(svs->me->nick, u->nick, "%s", notices[rand() % sizeof(notices) / sizeof(char*)]); + + MOWGLI_ITER_FOREACH(n, me.me->userlist.head) + { + sptr = n->data; + msg(sptr->nick, u->nick, "\001PING %ld%s\001", + time(NULL), + phrases[rand() % sizeof(phrases) / sizeof(char*)] + ); + } +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/os_procwatch.c b/os_procwatch.c new file mode 100644 index 0000000..48f0ebf --- /dev/null +++ b/os_procwatch.c @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2009 Jilles Tjoelker, et al + * Rights to this code are as documented in doc/LICENSE. + * + * Monitors exit of given processes, using kqueue. + * The kqueue is added to the main poll loop. + */ + +#include "atheme.h" +#include + +DECLARE_MODULE_V1 +( + "contrib/os_procwatch", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void procwatch_readhandler(connection_t *cptr); + +static void os_cmd_procwatch(sourceinfo_t *si, int parc, char *parv[]); + +command_t os_procwatch = { "PROCWATCH", "Notifies snoop channel on process exit.", + PRIV_ADMIN, 1, os_cmd_procwatch, { .path = "contrib/procwatch" } }; + +static connection_t *kq_conn; + +void _modinit(module_t *m) +{ + int kq; + + kq = kqueue(); + if (kq == -1) + { + m->mflags = MODTYPE_FAIL; + return; + } + kq_conn = connection_add("procwatch kqueue", kq, 0, procwatch_readhandler, NULL); + + service_named_bind_command("operserv", &os_procwatch); +} + +void _moddeinit(module_unload_intent_t intent) +{ + if (kq_conn != NULL) + connection_close_soon(kq_conn); + service_named_unbind_command("operserv", &os_procwatch); +} + +static void procwatch_readhandler(connection_t *cptr) +{ + struct kevent ev; + + if (cptr != kq_conn) + { + slog(LG_INFO, "procwatch_readhandler(): called with unexpected fd %d", cptr->fd); + return; + } + + while (kevent(cptr->fd, NULL, 0, &ev, 1, &(const struct timespec){ 0, 0 }) > 0) + { + slog(LG_INFO, "PROCWATCH: %ld exited with status %x", + (long)ev.ident, (unsigned)ev.data); + } +} + +static void os_cmd_procwatch(sourceinfo_t *si, int parc, char *parv[]) +{ + long v; + char *end; + struct kevent ev; + + if (parc == 0) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "PROCWATCH"); + command_fail(si, fault_needmoreparams, _("Syntax: PROCWATCH ")); + return; + } + + errno = 0; + v = strtol(parv[0], &end, 10); + if (errno != 0 || *end != '\0' || v < 0 || (pid_t)v != v) + { + command_fail(si, fault_needmoreparams, STR_INVALID_PARAMS, "PROCWATCH"); + command_fail(si, fault_needmoreparams, _("Syntax: PROCWATCH ")); + return; + } + EV_SET(&ev, v, EVFILT_PROC, EV_ADD | EV_ENABLE, NOTE_EXIT, 0, NULL); + if (kevent(kq_conn->fd, &ev, 1, NULL, 0, NULL) == -1) + { + command_fail(si, fault_toomany, _("Failed to add pid %ld"), v); + return; + } + command_success_nodata(si, "Added pid %ld to list.", v); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/os_resolve.c b/os_resolve.c new file mode 100644 index 0000000..6252f9e --- /dev/null +++ b/os_resolve.c @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2011 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * Does an A record lookup. + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/os_resolve", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void os_cmd_resolve(sourceinfo_t *si, int parc, char *parv[]); + +command_t cmd_resolve = { "RESOLVE", N_("Perform DNS lookup on hostname"), PRIV_ADMIN, 1, os_cmd_resolve, { .path = "contrib/os_resolve" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("operserv", &cmd_resolve); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("operserv", &cmd_resolve); +} + +typedef struct { + dns_query_t dns_query; + sourceinfo_t *si; +} resolve_req_t; + +mowgli_heap_t *request_heap = NULL; + +static void resolve_cb(void *vptr, dns_reply_t *reply) +{ + resolve_req_t *req = vptr; + char buf[BUFSIZE]; + + return_if_fail(vptr != NULL); + return_if_fail(reply != NULL); + + if (reply->addr.saddr.sa.sa_family != AF_INET) + return; + + inet_ntop(reply->addr.saddr.sa.sa_family, &reply->addr.saddr.sin.sin_addr, buf, reply->addr.saddr_len); + + command_success_nodata(req->si, "Result is %s", buf); + + mowgli_heap_free(request_heap, req); + object_unref(req->si); +} + +static void os_cmd_resolve(sourceinfo_t *si, int parc, char *parv[]) +{ + resolve_req_t *req; + + if (request_heap == NULL) + request_heap = mowgli_heap_create(sizeof(resolve_req_t), 32, BH_LAZY); + + if (!parv[0]) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "RESOLVE"); + return; + } + + req = mowgli_heap_alloc(request_heap); + + req->si = si; + req->dns_query.ptr = req; + req->dns_query.callback = resolve_cb; + + gethost_byname_type(parv[0], &req->dns_query, T_A); + + object_ref(req->si); +} diff --git a/os_savechanmodes.c b/os_savechanmodes.c new file mode 100644 index 0000000..4fce955 --- /dev/null +++ b/os_savechanmodes.c @@ -0,0 +1,180 @@ +/* + * Copyright (c) 2008 Jilles Tjoelker + * Rights to this code are as documented in doc/LICENSE. + * + * Dump/restore channel modes + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/os_savechanmodes", false, _modinit, _moddeinit, + "$Revision: 7785 $", + "Jilles Tjoelker " +); + +static void os_cmd_savechanmodes(sourceinfo_t *si, int parc, char *parv[]); +static void os_cmd_loadchanmodes(sourceinfo_t *si, int parc, char *parv[]); + +command_t os_savechanmodes = { "SAVECHANMODES", "Dumps channel modes to a file.", + PRIV_ADMIN, 1, os_cmd_savechanmodes, { .path = "contrib/savechanmodes" } }; +command_t os_loadchanmodes = { "LOADCHANMODES", "Restores channel modes from a file.", + PRIV_ADMIN, 1, os_cmd_loadchanmodes, { .path = "contrib/loadchanmodes" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("operserv", &os_savechanmodes); + service_named_bind_command("operserv", &os_loadchanmodes); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("operserv", &os_savechanmodes); + service_named_unbind_command("operserv", &os_loadchanmodes); +} + +static void os_cmd_savechanmodes(sourceinfo_t *si, int parc, char *parv[]) +{ + FILE *out; + mowgli_patricia_iteration_state_t state; + channel_t *c; + mowgli_node_t *n; + chanban_t *cb; + + if (!(out = fopen(DATADIR "/chanmodes.txt", "w"))) + { + command_fail(si, fault_nosuch_source, "Cannot open %s: %s", + DATADIR "/chanmodes.txt", strerror(errno)); + return; + } + + logcommand(si, CMDLOG_ADMIN, "SAVECHANMODES"); + wallops("\2%s\2 is dumping channel modes", get_oper_name(si)); + + MOWGLI_PATRICIA_FOREACH(c, &state, chanlist) + { + fprintf(out, "chan %s %s\n", c->name, channel_modes(c, true)); + if (c->topic) + fprintf(out, "topic %s %lu %s\n", c->topic_setter, + (unsigned long)c->topicts, + c->topic); + MOWGLI_ITER_FOREACH(n, c->bans.head) + { + cb = n->data; + fprintf(out, "ban %c %s\n", cb->type, cb->mask); + } + } + + fclose(out); + + command_success_nodata(si, "Channel modes saved to %s.", + DATADIR "/chanmodes.txt"); +} + +static channel_t *restore_channel(char *name, char *modes) +{ + channel_t *c; + int modeparc; + char *modeparv[256]; + service_t *svs; + + svs = service_find("operserv"); + if (svs == NULL) + svs = chansvs.me; + + join(name, chansvs.nick); + c = channel_find(name); + if (c != NULL) + { + modeparc = sjtoken(modes, ' ', modeparv); + channel_mode(svs->me, c, modeparc, modeparv); + } + return c; +} + +static void os_cmd_loadchanmodes(sourceinfo_t *si, int parc, char *parv[]) +{ + FILE *in; + char *item, buf[2048]; + char *name, *modes, *setter, *tsstr, *topic, *type, *mask; + time_t ts, prevtopicts; + channel_t *c; + int line; + + if (!(in = fopen(DATADIR "/chanmodes.txt", "r"))) + { + command_fail(si, fault_nosuch_source, "Cannot open %s: %s", + DATADIR "/chanmodes.txt", strerror(errno)); + return; + } + + logcommand(si, CMDLOG_ADMIN, "LOADCHANMODES"); + wallops("\2%s\2 is restoring channel modes", get_oper_name(si)); + + line = 0; + c = NULL; + while (fgets(buf, sizeof buf, in)) + { + line++; + item = strtok(buf, " "); + strip(item); + + if (item == NULL || *item == '#') + continue; + + if (!strcmp(item, "chan")) + { + name = strtok(NULL, " "); + modes = strtok(NULL, "\n"); + + if (name == NULL || modes == NULL) + continue; + c = restore_channel(name, modes); + } + else if (!strcmp(item, "topic")) + { + if (c == NULL) + continue; + + setter = strtok(NULL, " "); + tsstr = strtok(NULL, " "); + topic = strtok(NULL, "\n"); + + if (setter == NULL || tsstr == NULL || topic == NULL) + continue; + if (c->topic != NULL) + continue; + prevtopicts = c->topicts; + ts = strtoul(tsstr, NULL, 10); + handle_topic(c, setter, ts, topic); + topic_sts(c, chansvs.me->me, setter, ts, prevtopicts, topic); + } + else if (!strcmp(item, "ban")) + { + if (c == NULL) + continue; + + type = strtok(NULL, " "); + mask = strtok(NULL, "\n"); + + if (type == NULL || mask == NULL) + continue; + modestack_mode_param(chansvs.nick, c, MTYPE_ADD, type[0], mask); + chanban_add(c, mask, type[0]); + } + } + + fclose(in); + + command_success_nodata(si, "Channel modes restored from %s.", + DATADIR "/chanmodes.txt"); + command_success_nodata(si, "Remember to restart services to make %s leave channels it should not be in.", + chansvs.nick); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/os_tabletest.c b/os_tabletest.c new file mode 100644 index 0000000..252a5a9 --- /dev/null +++ b/os_tabletest.c @@ -0,0 +1,54 @@ +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/os_tabletest", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +static void os_cmd_tabletest(sourceinfo_t *si, int parc, char *parv[]); + +command_t os_tabletest = { "TABLETEST", "Table test.", AC_NONE, 0, os_cmd_tabletest, { .path = "" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("operserv", &os_tabletest); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("operserv", &os_tabletest); +} + +static void os_cmd_tabletest(sourceinfo_t *si, int parc, char *parv[]) +{ + table_t *t = table_new("Table \2test\2"); + table_row_t *r = table_row_new(t); + + table_cell_associate(r, "foo", "bar"); + table_cell_associate(r, "F", "-"); + table_cell_associate(r, "baz", "splork"); + + r = table_row_new(t); + + table_cell_associate(r, "foo", "1"); + table_cell_associate(r, "F", "+"); + table_cell_associate(r, "baz", "2"); + + r = table_row_new(t); + + table_cell_associate(r, "foo", "beagle4"); + table_cell_associate(r, "F", "+"); + table_cell_associate(r, "baz", "boo"); + + command_success_table(si, t); + + object_unref(t); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/os_testcmd.c b/os_testcmd.c new file mode 100644 index 0000000..14f1ea6 --- /dev/null +++ b/os_testcmd.c @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2006 Jilles Tjoelker, et al + * Rights to this code are as documented in doc/LICENSE. + * + * Calls a command without a user_t. + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/os_testcmd", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +struct testcmddata +{ + sourceinfo_t *prevsi; + bool got_result; +}; + +static void os_cmd_testcmd(sourceinfo_t *si, int parc, char *parv[]); + +static void testcmd_command_fail(sourceinfo_t *si, faultcode_t code, const char *message); +static void testcmd_command_success_nodata(sourceinfo_t *si, const char *message); +static void testcmd_command_success_string(sourceinfo_t *si, const char *result, const char *message); + +command_t os_testcmd = { "TESTCMD", "Executes a command without a user_t.", + AC_NONE, 3, os_cmd_testcmd, { .path = "contrib/testcmd" } }; + +struct sourceinfo_vtable testcmd_vtable = { + .description = "testcmd", + .cmd_fail = testcmd_command_fail, + .cmd_success_nodata = testcmd_command_success_nodata, + .cmd_success_string = testcmd_command_success_string +}; + +void _modinit(module_t *m) +{ + service_named_bind_command("operserv", &os_testcmd); +} + +void _moddeinit(module_unload_intent_t intent) +{ + service_named_unbind_command("operserv", &os_testcmd); +} + +static void testcmd_command_fail(sourceinfo_t *si, faultcode_t code, const char *message) +{ + struct testcmddata *udata = si->callerdata; + + command_success_nodata(udata->prevsi, "Command failed with fault %d, \"%s\"", code, message); + udata->got_result = true; +} + +static void testcmd_command_success_nodata(sourceinfo_t *si, const char *message) +{ + struct testcmddata *udata = si->callerdata; + + if (udata->got_result) + command_success_nodata(udata->prevsi, "More comment \"%s\"", message); + else + command_success_nodata(udata->prevsi, "Command succeeded with no data, \"%s\"", message); + udata->got_result = true; +} + +static void testcmd_command_success_string(sourceinfo_t *si, const char *result, const char *message) +{ + struct testcmddata *udata = si->callerdata; + + command_success_nodata(udata->prevsi, "Command succeeded with string \"%s\", \"%s\"", result, message); + udata->got_result = true; +} + +static void os_cmd_testcmd(sourceinfo_t *si, int parc, char *parv[]) +{ + service_t *svs; + command_t *cmd; + sourceinfo_t newsi; + struct testcmddata udata; + int newparc; + char *newparv[256]; + + if (parc < 2) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "TESTCMD"); + command_fail(si, fault_needmoreparams, "Syntax: TESTCMD [arguments]"); + return; + } + + svs = service_find_nick(parv[0]); + if (svs == NULL) + { + command_fail(si, fault_nosuch_target, "No such service \2%s\2", parv[0]); + return; + } + if (svs->commands == NULL) + { + command_fail(si, fault_noprivs, "Service \2%s\2 has no commands", svs->nick); + return; + } + cmd = command_find(svs->commands, parv[1]); + if (cmd == NULL) + { + command_fail(si, fault_nosuch_key, "No such command \2%s\2 in service \2%s\2", parv[1], svs->nick); + return; + } + udata.prevsi = si; + udata.got_result = false; + memset(newparv, '\0', sizeof newparv); + if (parc >= 3) + newparc = sjtoken(parv[2], ';', newparv); + else + newparc = 0; + memset(&newsi, '\0', sizeof newsi); + newsi.smu = si->smu; + if (si->su != NULL) + newsi.sourcedesc = si->su->ip != NULL ? si->su->ip : si->su->host; + else + newsi.sourcedesc = si->sourcedesc; + newsi.service = svs; + newsi.v = &testcmd_vtable; + newsi.callerdata = &udata; + command_exec(svs, &newsi, cmd, newparc, newparv); + if (!udata.got_result) + command_success_nodata(si, "Command returned without giving a result"); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/os_testproc.c b/os_testproc.c new file mode 100644 index 0000000..7a50058 --- /dev/null +++ b/os_testproc.c @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2009 Jilles Tjoelker, et al + * Rights to this code are as documented in doc/LICENSE. + * + * Reads data from a child process via a pipe. + */ + +#include "atheme.h" +#include "datastream.h" + +#ifndef _WIN32 + +DECLARE_MODULE_V1 +( + "contrib/os_testproc", false, _modinit, _moddeinit, + PACKAGE_STRING, + "Atheme Development Group " +); + +struct testprocdata +{ + char dest[NICKLEN]; + connection_t *pip; +}; + +static struct testprocdata procdata; + +static void os_cmd_testproc(sourceinfo_t *si, int parc, char *parv[]); + +command_t os_testproc = { "TESTPROC", "Does something with child processes.", + AC_NONE, 0, os_cmd_testproc, { .path = "contrib/testproc" } }; + +void _modinit(module_t *m) +{ + service_named_bind_command("operserv", &os_testproc); +} + +void _moddeinit(module_unload_intent_t intent) +{ + if (procdata.pip != NULL) + connection_close_soon(procdata.pip); + service_named_unbind_command("operserv", &os_testproc); +} + +static void testproc_recvqhandler(connection_t *cptr) +{ + char buf[BUFSIZE]; + int count; + user_t *u; + + if (cptr != procdata.pip) + { + slog(LG_INFO, "testproc_recvqhandler(): called with unexpected fd %d", cptr->fd); + return; + } + + count = recvq_getline(cptr, buf, sizeof buf - 1); + if (count <= 0) + return; + if (buf[count - 1] == '\n') + count--; + if (count > 0 && buf[count - 1] == '\r') + count--; + if (count == 0) + buf[count++] = ' '; + buf[count] = '\0'; + u = user_find(procdata.dest); + if (u != NULL) + notice(service_find("operserv")->me->nick, u->nick, "%s", buf); +} + +static void testproc_closehandler(connection_t *cptr) +{ + if (cptr != procdata.pip) + { + slog(LG_INFO, "testproc_closehandler(): called with unexpected fd %d", cptr->fd); + return; + } + + slog(LG_DEBUG, "testproc_closehandler(): fd %d closed", cptr->fd); + procdata.pip = NULL; +} + +static void os_cmd_testproc(sourceinfo_t *si, int parc, char *parv[]) +{ + int pipes[2]; + + if (si->su == NULL) + { + command_fail(si, fault_noprivs, _("\2%s\2 can only be executed via IRC."), "TESTPROC"); + return; + } + + if (procdata.pip != NULL) + { + command_fail(si, fault_toomany, "Another TESTPROC is still in progress"); + return; + } + + if (pipe(pipes) == -1) + { + command_fail(si, fault_toomany, "Failed to create pipe"); + return; + } + switch (fork()) + { + case -1: + close(pipes[0]); + close(pipes[1]); + command_fail(si, fault_toomany, "Failed to fork"); + return; + case 0: + connection_close_all_fds(); + close(pipes[0]); + dup2(pipes[1], 1); + dup2(pipes[1], 2); + close(pipes[1]); + execl("/bin/sh", "sh", "-c", "echo hi; sleep 1; echo hi 2; sleep 0.5; echo hi 3; sleep 4; echo hi 4", (char *)NULL); + (void)write(2, "Failed to exec /bin/sh\n", 23); + _exit(255); + break; + default: + close(pipes[1]); + procdata.pip = connection_add("testproc pipe", pipes[0], 0, recvq_put, NULL); + procdata.pip->recvq_handler = testproc_recvqhandler; + procdata.pip->close_handler = testproc_closehandler; + mowgli_strlcpy(procdata.dest, CLIENT_NAME(si->su), sizeof procdata.dest); + break; + } +} + +#endif + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/os_trace.c b/os_trace.c new file mode 100644 index 0000000..fab298e --- /dev/null +++ b/os_trace.c @@ -0,0 +1,928 @@ +/* + * Copyright (c) 2010 William Pitcock + * Rights to this code are as documented in doc/LICENSE. + * + * Looks for users and performs actions on them. + */ + +#include "atheme.h" +#include + +DECLARE_MODULE_V1 +( + "contrib/os_trace", false, _modinit, _moddeinit, + "Copyright (c) 2010 William Pitcock ", + "Atheme Development Group " +); + +static char *reason_extract(char **args); +static void os_cmd_trace(sourceinfo_t *si, int parc, char *parv[]); + +command_t os_trace = { "TRACE", N_("Looks for users and performs actions on them."), PRIV_USER_AUSPEX, 2, os_cmd_trace, { .path = "contrib/trace" } }; + +typedef struct { + void /* trace_query_domain_t */ *(*prepare)(char **args); + bool (*exec)(user_t *u, void /* trace_query_domain_t */ *q); + void (*cleanup)(void /* trace_query_domain_t */ *q); +} trace_query_constructor_t; + +typedef struct { + trace_query_constructor_t *cons; + mowgli_node_t node; +} trace_query_domain_t; + +static int read_comparison_operator(char** string, int default_comparison) +{ + if (**string == '<') + { + if (*((*string)+1) == '=') + { + *string += 2; + return 2; + } + else + { + *string += 1; + return 1; + } + } + else if (**string == '>') + { + if (*((*string)+1) == '=') + { + *string += 2; + return 4; + } + else + { + *string += 1; + return 3; + } + } + else if (**string == '=') + { + *string += 1; + return 0; + } + else + return default_comparison; +} + +char *reason_extract(char **args) +{ + char *start = *args; + bool quotes = false; + + while (**args == ' ') + { + (*args)++; + } + if (**args == '"') + { + start = ++(*args); + quotes = true; + } + else + start = *args; + + while (**args) + { + if (quotes && **args == '"') + { + quotes = false; + **args = 0; + (*args)++; + break; + } + else if (!quotes && **args == ' ') + { + **args = 0; + (*args)++; + break; + } + + (*args)++; + } + + if (!(**args)) + *args = NULL; + + if (start == *args) + return NULL; /* No reason found. */ + if (quotes) + return NULL; /* Unclosed quotes. */ + + return start; +} + +typedef struct { + trace_query_domain_t domain; + atheme_regex_t *regex; + char *pattern; + int flags; +} trace_query_regexp_domain_t; + +static void *trace_regexp_prepare(char **args) +{ + trace_query_regexp_domain_t *domain; + + return_val_if_fail(args != NULL, NULL); + return_val_if_fail(*args != NULL, NULL); + + domain = scalloc(sizeof(trace_query_regexp_domain_t), 1); + domain->pattern = regex_extract(*args, &(*args), &domain->flags); + domain->regex = regex_create(domain->pattern, domain->flags); + + return domain; +} + +static bool trace_regexp_exec(user_t *u, void *q) +{ + char usermask[512]; + trace_query_regexp_domain_t *domain = (trace_query_regexp_domain_t *) q; + + return_val_if_fail(domain != NULL, false); + return_val_if_fail(u != NULL, false); + + if (domain->regex == NULL) + return false; + + snprintf(usermask, 512, "%s!%s@%s %s", u->nick, u->user, u->host, u->gecos); + + return regex_match(domain->regex, usermask); +} + +static void trace_regexp_cleanup(void *q) +{ + trace_query_regexp_domain_t *domain = (trace_query_regexp_domain_t *) q; + + return_if_fail(domain != NULL); + + if (domain->regex != NULL) + regex_destroy(domain->regex); + + free(domain); +} + +trace_query_constructor_t trace_regexp = { trace_regexp_prepare, trace_regexp_exec, trace_regexp_cleanup }; + +typedef struct { + trace_query_domain_t domain; + server_t *server; +} trace_query_server_domain_t; + +static void *trace_server_prepare(char **args) +{ + char *server; + trace_query_server_domain_t *domain; + + return_val_if_fail(args != NULL, NULL); + return_val_if_fail(*args != NULL, NULL); + + /* split out the next space */ + server = strtok(*args, " "); + + domain = scalloc(sizeof(trace_query_server_domain_t), 1); + domain->server = server_find(server); + + /* advance *args to next token */ + *args = strtok(NULL, ""); + + return domain; +} + +static bool trace_server_exec(user_t *u, void *q) +{ + trace_query_server_domain_t *domain = (trace_query_server_domain_t *) q; + + return_val_if_fail(domain != NULL, false); + return_val_if_fail(u != NULL, false); + + return (domain->server == u->server); +} + +static void trace_server_cleanup(void *q) +{ + trace_query_server_domain_t *domain = (trace_query_server_domain_t *) q; + + return_if_fail(domain != NULL); + + free(domain); +} + +trace_query_constructor_t trace_server = { trace_server_prepare, trace_server_exec, trace_server_cleanup }; + +typedef struct { + trace_query_domain_t domain; + char *pattern; +} trace_query_glob_domain_t; + +static void *trace_glob_prepare(char **args) +{ + char *pattern; + trace_query_glob_domain_t *domain; + + return_val_if_fail(args != NULL, NULL); + return_val_if_fail(*args != NULL, NULL); + + /* split out the next space */ + pattern = strtok(*args, " "); + + domain = scalloc(sizeof(trace_query_glob_domain_t), 1); + domain->pattern = sstrdup(pattern); + + *args = strtok(NULL, ""); + + return domain; +} + +static bool trace_glob_exec(user_t *u, void *q) +{ + char usermask[512]; + trace_query_glob_domain_t *domain = (trace_query_glob_domain_t *) q; + + return_val_if_fail(domain != NULL, false); + return_val_if_fail(u != NULL, false); + + if (domain->pattern == NULL) + return false; + + snprintf(usermask, 512, "%s!%s@%s", u->nick, u->user, u->host); + + return !match(domain->pattern, usermask); +} + +static void trace_glob_cleanup(void *q) +{ + trace_query_glob_domain_t *domain = (trace_query_glob_domain_t *) q; + + return_if_fail(domain != NULL); + + free(domain); +} + +trace_query_constructor_t trace_glob = { trace_glob_prepare, trace_glob_exec, trace_glob_cleanup }; + +typedef struct { + trace_query_domain_t domain; + channel_t *channel; +} trace_query_channel_domain_t; + +static void *trace_channel_prepare(char **args) +{ + char *channel; + trace_query_channel_domain_t *domain; + + return_val_if_fail(args != NULL, NULL); + return_val_if_fail(*args != NULL, NULL); + + /* split out the next space */ + channel = strtok(*args, " "); + + domain = scalloc(sizeof(trace_query_channel_domain_t), 1); + domain->channel = channel_find(channel); + + /* advance *args to next token */ + *args = strtok(NULL, ""); + + return domain; +} + +static bool trace_channel_exec(user_t *u, void *q) +{ + trace_query_channel_domain_t *domain = (trace_query_channel_domain_t *) q; + + return_val_if_fail(domain != NULL, false); + return_val_if_fail(u != NULL, false); + + return (chanuser_find(domain->channel, u) != NULL); +} + +static void trace_channel_cleanup(void *q) +{ + trace_query_channel_domain_t *domain = (trace_query_channel_domain_t *) q; + + return_if_fail(domain != NULL); + + free(domain); +} + +trace_query_constructor_t trace_channel = { trace_channel_prepare, trace_channel_exec, trace_channel_cleanup }; + +typedef struct { + trace_query_domain_t domain; + int nickage; + int comparison; +} trace_query_nickage_domain_t; + +static void *trace_nickage_prepare(char **args) +{ + char *nickage_string; + trace_query_nickage_domain_t *domain; + + return_val_if_fail(args != NULL, NULL); + return_val_if_fail(*args != NULL, NULL); + + /* split out the next space */ + nickage_string = strtok(*args, " "); + + domain = scalloc(sizeof(trace_query_nickage_domain_t), 1); + domain->comparison = read_comparison_operator(&nickage_string, 2); + domain->nickage = atoi(nickage_string); + + /* advance *args to next token */ + *args = strtok(NULL, ""); + + return domain; +} + +static bool trace_nickage_exec(user_t *u, void *q) +{ + trace_query_nickage_domain_t *domain = (trace_query_nickage_domain_t *) q; + + return_val_if_fail(domain != NULL, false); + return_val_if_fail(u != NULL, false); + + int nickage = CURRTIME - u->ts; + if (domain->comparison == 1) + return (nickage < domain->nickage); + else if (domain->comparison == 2) + return (nickage <= domain->nickage); + else if (domain->comparison == 3) + return (nickage > domain->nickage); + else if (domain->comparison == 4) + return (nickage >= domain->nickage); + else + return (nickage == domain->nickage); +} + +static void trace_nickage_cleanup(void *q) +{ + trace_query_nickage_domain_t *domain = (trace_query_nickage_domain_t *) q; + + return_if_fail(domain != NULL); + + free(domain); +} + +trace_query_constructor_t trace_nickage = { trace_nickage_prepare, trace_nickage_exec, trace_nickage_cleanup }; + +typedef struct { + trace_query_domain_t domain; + int numchan; + int comparison; +} trace_query_numchan_domain_t; + +static void *trace_numchan_prepare(char **args) +{ + char *numchan_string; + trace_query_numchan_domain_t *domain; + + return_val_if_fail(args != NULL, NULL); + return_val_if_fail(*args != NULL, NULL); + + /* split out the next space */ + numchan_string = strtok(*args, " "); + + domain = scalloc(sizeof(trace_query_numchan_domain_t), 1); + domain->comparison = read_comparison_operator(&numchan_string, 0); + domain->numchan = atoi(numchan_string); + + /* advance *args to next token */ + *args = strtok(NULL, ""); + + return domain; +} + +static bool trace_numchan_exec(user_t *u, void *q) +{ + trace_query_numchan_domain_t *domain = (trace_query_numchan_domain_t *) q; + + return_val_if_fail(domain != NULL, false); + return_val_if_fail(u != NULL, false); + + int numchan = u->channels.count; + if (domain->comparison == 1) + return (numchan < domain->numchan); + else if (domain->comparison == 2) + return (numchan <= domain->numchan); + else if (domain->comparison == 3) + return (numchan > domain->numchan); + else if (domain->comparison == 4) + return (numchan >= domain->numchan); + else + return (numchan == domain->numchan); +} + +static void trace_numchan_cleanup(void *q) +{ + trace_query_numchan_domain_t *domain = (trace_query_numchan_domain_t *) q; + + return_if_fail(domain != NULL); + + free(domain); +} + +trace_query_constructor_t trace_numchan = { trace_numchan_prepare, trace_numchan_exec, trace_numchan_cleanup }; + +typedef struct { + trace_query_domain_t domain; + bool identified; +} trace_query_identified_domain_t; + +static void *trace_identified_prepare(char **args) +{ + char *yesno; + bool identified; + trace_query_identified_domain_t *domain; + + return_val_if_fail(args != NULL, NULL); + return_val_if_fail(*args != NULL, NULL); + + yesno = strtok(*args, " "); + + if (!strcasecmp(yesno, "yes")) + identified = true; + else if (!strcasecmp(yesno, "no")) + identified = false; + else + return NULL; + + domain = scalloc(sizeof(trace_query_identified_domain_t), 1); + domain->identified = identified; + + /* advance *args to next token */ + *args = strtok(NULL, ""); + + return domain; +} + +static bool trace_identified_exec(user_t *u, void *q) +{ + trace_query_identified_domain_t *domain = (trace_query_identified_domain_t *) q; + + return_val_if_fail(domain != NULL, false); + return_val_if_fail(u != NULL, false); + + return (domain->identified == (u->myuser != NULL)); +} + +static void trace_identified_cleanup(void *q) +{ + trace_query_identified_domain_t *domain = (trace_query_identified_domain_t *) q; + + return_if_fail(domain != NULL); + + free(domain); +} + +trace_query_constructor_t trace_identified = { trace_identified_prepare, trace_identified_exec, trace_identified_cleanup }; + +/****************************************************************************************************/ + +typedef struct { + sourceinfo_t *si; + bool matched; +} trace_action_t; + +typedef struct { + trace_action_t *(*prepare)(sourceinfo_t *si, char **args); + void (*exec)(user_t *u, trace_action_t *a); + void (*cleanup)(trace_action_t *a, bool succeeded); +} trace_action_constructor_t; + +static void trace_action_init(trace_action_t *a, sourceinfo_t *si); + +/* initializes common fields for trace action object. */ +void trace_action_init(trace_action_t *a, sourceinfo_t *si) +{ + return_if_fail(a != NULL); + return_if_fail(si != NULL); + + a->si = si; + a->matched = false; +} + +static trace_action_t *trace_print_prepare(sourceinfo_t *si, char **args) +{ + trace_action_t *a; + + return_val_if_fail(si != NULL, NULL); + + a = scalloc(sizeof(trace_action_t), 1); + trace_action_init(a, si); + + return a; +} + +static void trace_print_exec(user_t *u, trace_action_t *a) +{ + return_if_fail(u != NULL); + return_if_fail(a != NULL); + if(is_internal_client(u)) + return; + + a->matched = true; + command_success_nodata(a->si, _("\2Match:\2 %s!%s@%s %s {%s}"), u->nick, u->user, u->host, u->gecos, u->server->name); +} + +static void trace_print_cleanup(trace_action_t *a, bool succeeded) +{ + return_if_fail(a != NULL); + + if (!a->matched && succeeded) + command_success_nodata(a->si, _("No matches.")); + free(a); +} + +trace_action_constructor_t trace_print = { trace_print_prepare, trace_print_exec, trace_print_cleanup }; + +typedef struct { + trace_action_t base; + char *reason; +} trace_action_kill_t; + +static trace_action_t *trace_kill_prepare(sourceinfo_t *si, char **args) +{ + trace_action_kill_t *a; + char *reason; + + return_val_if_fail(si != NULL, NULL); + return_val_if_fail(args != NULL, NULL); + if (*args == NULL) + return NULL; + + reason = reason_extract(args); + if (reason == NULL) + return NULL; + + a = scalloc(sizeof(trace_action_kill_t), 1); + trace_action_init(&a->base, si); + a->reason = reason; + + return (trace_action_t*) a; +} + +static void trace_kill_exec(user_t *u, trace_action_t *act) +{ + service_t *svs; + trace_action_kill_t *a = (trace_action_kill_t *) act; + + return_if_fail(u != NULL); + return_if_fail(a != NULL); + if (is_internal_client(u)) + return; + if (is_ircop(u)) + return; + if (u->myuser && is_soper(u->myuser)) + return; + if ((svs = service_find("operserv")) != NULL) + return; + + act->matched = true; + kill_user(svs->me, u, "%s", a->reason); + command_success_nodata(act->si, _("\2%s\2 has been killed."), u->nick); +} + +static void trace_kill_cleanup(trace_action_t *a, bool succeeded) +{ + return_if_fail(a != NULL); + + if (!a->matched && succeeded) + command_success_nodata(a->si, _("No matches.")); + free(a); +} + +trace_action_constructor_t trace_kill = { trace_kill_prepare, trace_kill_exec, trace_kill_cleanup }; + +typedef struct { + trace_action_t base; + long duration; + char *reason; +} trace_action_akill_t; + +static trace_action_t *trace_akill_prepare(sourceinfo_t *si, char **args) +{ + trace_action_akill_t *a; + char *s, *reason; + long duration = config_options.kline_time; + char token; + + return_val_if_fail(si != NULL, NULL); + return_val_if_fail(args != NULL, NULL); + if (*args == NULL) + return NULL; + + while (**args == ' ') + (*args)++; + + /* Extract a token, but only if there's one to remove. + * Otherwise, this would clip a word off the reason. */ + token = 0; + s = *args; + if (!strncasecmp(s, "!T", 2) || !strncasecmp(s, "!P", 2)) + { + if (s[2] == ' ') + { + token = tolower(s[1]); + s[2] = '\0'; + *args += 3; + } + else if (s[2] == '\0') + { + token = tolower(s[1]); + *args += 2; + } + } + + if (token == 't') + { + s = strtok(*args, " "); + *args = strtok(NULL, ""); + if (*args == NULL) + return NULL; + + duration = (atol(s) * 60); + while (isdigit(*s)) + s++; + if (*s == 'h' || *s == 'H') + duration *= 60; + else if (*s == 'd' || *s == 'D') + duration *= 1440; + else if (*s == 'w' || *s == 'W') + duration *= 10080; + else if (*s == '\0') + ; + else + duration = 0; + + if (duration == 0) + return NULL; + } + else if (token == 'p') + duration = 0; + + reason = reason_extract(args); + if (reason == NULL) + return NULL; + + a = scalloc(sizeof(trace_action_akill_t), 1); + trace_action_init(&a->base, si); + a->duration = duration; + a->reason = reason; + + + return (trace_action_t*) a; +} + +static void trace_akill_exec(user_t *u, trace_action_t *act) +{ + char *kuser, *khost; + trace_action_akill_t *a = (trace_action_akill_t *) act; + + return_if_fail(u != NULL); + return_if_fail(a != NULL); + if (is_internal_client(u)) + return; + if (is_ircop(u)) + return; + if (u->myuser && is_soper(u->myuser)) + return; + + kuser = "*"; + khost = u->host; + + if (!match(khost, "127.0.0.1") || !match_ips(khost, "127.0.0.1")) + return; + if (me.vhost != NULL && (!match(khost, me.vhost) || !match_ips(khost, me.vhost))) + return; + if (kline_find(kuser, khost)) + return; + + act->matched = true; + kline_add(kuser, khost, a->reason, a->duration, get_storage_oper_name(act->si)); + command_success_nodata(act->si, _("\2%s\2 has been akilled."), u->nick); +} + +static void trace_akill_cleanup(trace_action_t *a, bool succeeded) +{ + return_if_fail(a != NULL); + + if (!a->matched && succeeded) + command_success_nodata(a->si, _("No matches.")); + free(a); +} + +trace_action_constructor_t trace_akill = { trace_akill_prepare, trace_akill_exec, trace_akill_cleanup }; + +typedef struct { + trace_action_t base; + int matches; +} trace_action_count_t; + +static trace_action_t *trace_count_prepare(sourceinfo_t *si, char **args) +{ + trace_action_count_t *a; + + return_val_if_fail(si != NULL, NULL); + + a = scalloc(sizeof(trace_action_count_t), 1); + trace_action_init(&a->base, si); + + return (trace_action_t *) a; +} + +static void trace_count_exec(user_t *u, trace_action_t *act) +{ + trace_action_count_t *a = (trace_action_count_t *) act; + + return_if_fail(u != NULL); + return_if_fail(a != NULL); + if (is_internal_client(u)) + return; + + act->matched = true; + a->matches++; +} + +static void trace_count_cleanup(trace_action_t *act, bool succeeded) +{ + trace_action_count_t *a = (trace_action_count_t *) act; + + return_if_fail(a != NULL); + + if (succeeded) + command_success_nodata(act->si, _("\2%d\2 matches"), a->matches); + + free(a); +} + +trace_action_constructor_t trace_count = { trace_count_prepare, trace_count_exec, trace_count_cleanup }; + +/* + * Add-on interface. + * + * This allows third-party module writers to extend the trace API. + * Just copy the prototypes out of trace.c, and add the trace_cmdtree + * symbol to your module with MODULE_USE_SYMBOL(). + * + * Then add your criteria to the tree with mowgli_patricia_add(). + */ +mowgli_patricia_t *trace_cmdtree = NULL; +mowgli_patricia_t *trace_acttree = NULL; + +void _modinit(module_t *m) +{ + service_named_bind_command("operserv", &os_trace); + + trace_cmdtree = mowgli_patricia_create(strcasecanon); + mowgli_patricia_add(trace_cmdtree, "REGEXP", &trace_regexp); + mowgli_patricia_add(trace_cmdtree, "SERVER", &trace_server); + mowgli_patricia_add(trace_cmdtree, "GLOB", &trace_glob); + mowgli_patricia_add(trace_cmdtree, "CHANNEL", &trace_channel); + mowgli_patricia_add(trace_cmdtree, "NICKAGE", &trace_nickage); + mowgli_patricia_add(trace_cmdtree, "NUMCHAN", &trace_numchan); + mowgli_patricia_add(trace_cmdtree, "IDENTIFIED", &trace_identified); + + trace_acttree = mowgli_patricia_create(strcasecanon); + mowgli_patricia_add(trace_acttree, "PRINT", &trace_print); + mowgli_patricia_add(trace_acttree, "KILL", &trace_kill); + mowgli_patricia_add(trace_acttree, "AKILL", &trace_akill); + mowgli_patricia_add(trace_acttree, "COUNT", &trace_count); +} + +void _moddeinit(module_unload_intent_t intent) +{ + mowgli_patricia_destroy(trace_cmdtree, NULL, NULL); + + service_named_unbind_command("operserv", &os_trace); +} + +#define MAXMATCHES_DEF 1000 + +static bool os_cmd_trace_run(sourceinfo_t *si, trace_action_constructor_t *actcons, trace_action_t* act, mowgli_list_t *crit, char *args); + +static void os_cmd_trace(sourceinfo_t *si, int parc, char *parv[]) +{ + mowgli_list_t crit = { NULL, NULL, 0 }; + trace_action_constructor_t *actcons; + trace_action_t* act; + char *args = parv[1]; + mowgli_node_t *n, *tn; + char *params; + bool succeeded; + + if (!parv[0]) + { + command_fail(si, fault_badparams, STR_INVALID_PARAMS, "TRACE"); + command_fail(si, fault_badparams, _("Syntax: TRACE ")); + return; + } + + actcons = mowgli_patricia_retrieve(trace_acttree, parv[0]); + if (actcons == NULL) + { + command_fail(si, fault_badparams, STR_INVALID_PARAMS, "TRACE"); + command_fail(si, fault_badparams, _("Syntax: TRACE ")); + return; + } + + act = actcons->prepare(si, &args); + if (act == NULL) + { + command_fail(si, fault_nosuch_target, _("Action compilation failed.")); + return; + } + + params = sstrdup(args); + succeeded = os_cmd_trace_run(si, actcons, act, &crit, args); + + MOWGLI_ITER_FOREACH_SAFE(n, tn, crit.head) + { + trace_query_domain_t *q = (trace_query_domain_t *) n->data; + q->cons->cleanup(q); + } + actcons->cleanup(act, succeeded); + + if (succeeded) + logcommand(si, CMDLOG_ADMIN, "TRACE: \2%s\2 \2%s\2", parv[0], params); + + free(params); +} + +static bool os_cmd_trace_run(sourceinfo_t *si, trace_action_constructor_t *actcons, trace_action_t* act, mowgli_list_t *crit, char *args) +{ + user_t *u; + mowgli_patricia_iteration_state_t state; + mowgli_node_t *n; + + if (args == NULL) + { + command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "TRACE"); + command_fail(si, fault_needmoreparams, _("Syntax: TRACE ")); + return false; + } + + while (true) + { + trace_query_constructor_t *cons; + trace_query_domain_t *q; + char *cmd = strtok(args, " "); + + if (cmd == NULL) + break; + + cons = mowgli_patricia_retrieve(trace_cmdtree, cmd); + if (cons == NULL) + { + command_fail(si, fault_nosuch_target, _("Invalid criteria specified.")); + return false; + } + + args = strtok(NULL, ""); + if (args == NULL) + { + command_fail(si, fault_nosuch_target, _("Invalid criteria specified.")); + return false; + } + + q = cons->prepare(&args); + slog(LG_DEBUG, "operserv/trace: adding criteria %p(%s) to list [remain: %s]", q, cmd, args); + if (q == NULL) + { + command_fail(si, fault_nosuch_target, _("Invalid criteria specified.")); + return false; + } + slog(LG_DEBUG, "operserv/trace: new args position [%s]", args); + + q->cons = cons; + mowgli_node_add(q, &q->node, crit); + } + + MOWGLI_PATRICIA_FOREACH(u, &state, userlist) + { + bool doit = true; + + MOWGLI_ITER_FOREACH(n, crit->head) + { + trace_query_domain_t *q = (trace_query_domain_t *) n->data; + + if (!q->cons->exec(u, q)) + { + doit = false; + break; + } + } + + if (doit) + actcons->exec(u, act); + } + + return true; +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */ diff --git a/wumpus.c b/wumpus.c new file mode 100644 index 0000000..acd95c4 --- /dev/null +++ b/wumpus.c @@ -0,0 +1,1027 @@ +/* + * Wumpus - 0.2.0 + * Copyright (c) 2006, 2011 William Pitcock + * Portions copyright (c) 2006 Kiyoshi Aman + * + * Rights to this code are as documented in doc/LICENSE. + * + * Hunt the Wumpus game implementation. + * + */ + +#include "atheme.h" + +DECLARE_MODULE_V1 +( + "contrib/wumpus", false, _modinit, _moddeinit, + PACKAGE_STRING, + "William Pitcock " +); + +/* contents */ +typedef enum { + E_NOTHING = 0, + E_WUMPUS, + E_PIT, + E_BATS, + E_ARROWS, + E_CRYSTALBALL +} contents_t; + +/* room_t: Describes a room that the wumpus or players could be in. */ +struct room_ { + int id; /* room 3 or whatever */ + mowgli_list_t exits; /* old int count == exits.count */ + contents_t contents; + mowgli_list_t players; /* player_t players */ +}; + +typedef struct room_ room_t; + +/* player_t: A player object. */ +struct player_ { + user_t *u; + room_t *location; + int arrows; + int hp; + bool has_moved; +}; + +typedef struct player_ player_t; + +struct game_ { + int wumpus; + int mazesize; + mowgli_list_t players; + bool running; + bool starting; + + room_t *rmemctx; /* memory page context */ + service_t *svs; + int wump_hp; + int speed; + + unsigned int wantsize; + + mowgli_eventloop_timer_t *move_timer; + mowgli_eventloop_timer_t *start_game_timer; +}; + +typedef struct game_ game_t; + +game_t wumpus; + +struct __wumpusconfig +{ + char *chan; + char *nick; + char *user; + char *host; + char *real; +} wumpus_cfg = { + "#wumpus", + "Wumpus", + "wumpus", + "services.int", + "Hunt the Wumpus" +}; + +/* ------------------------------ utility functions */ + +/* returns 1 or 2 depending on if the wumpus is 1 or 2 rooms away */ +static int +distance_to_wumpus(player_t *player) +{ + mowgli_node_t *n, *tn; + + MOWGLI_ITER_FOREACH(n, player->location->exits.head) + { + room_t *r = (room_t *) n->data; + + if (r->contents == E_WUMPUS) + return 1; + + MOWGLI_ITER_FOREACH(tn, r->exits.head) + { + room_t *r2 = (room_t *) tn->data; + + if (r2->contents == E_WUMPUS) + return 2; + + /* we don't evaluate exitpoints at this depth */ + } + } + + return 0; +} + +/* can we move or perform an action on this room? */ +static bool +adjacent_room(player_t *p, int id) +{ + mowgli_node_t *n; + + MOWGLI_ITER_FOREACH(n, p->location->exits.head) + { + room_t *r = (room_t *) n->data; + + if (r->id == id) + return true; + } + + return false; +} + +/* finds a player in the list */ +static player_t * +find_player(user_t *u) +{ + mowgli_node_t *n; + + MOWGLI_ITER_FOREACH(n, wumpus.players.head) + { + player_t *p = n->data; + + if (p->u == u) + return p; + } + + return NULL; +} + +/* adds a player to the game */ +static player_t * +create_player(user_t *u) +{ + player_t *p; + + if (find_player(u)) + { + notice(wumpus_cfg.nick, u->nick, "You are already playing the game!"); + return NULL; + } + + if (wumpus.running) + { + notice(wumpus_cfg.nick, u->nick, "The game is already in progress. Sorry!"); + return NULL; + } + + p = smalloc(sizeof(player_t)); + memset(p, '\0', sizeof(player_t)); + + p->u = u; + p->arrows = 10; + p->hp = 30; + + mowgli_node_add(p, mowgli_node_create(), &wumpus.players); + + return p; +} + +/* destroys a player object and removes them from the game */ +static void +resign_player(player_t *player) +{ + mowgli_node_t *n; + + if (player == NULL) + return; + + if (player->location) + { + n = mowgli_node_find(player, &player->location->players); + mowgli_node_delete(n, &player->location->players); + mowgli_node_free(n); + } + + n = mowgli_node_find(player, &wumpus.players); + mowgli_node_delete(n, &wumpus.players); + mowgli_node_free(n); + + free(player); +} + +/* ------------------------------ game functions */ + +/* builds the maze, and returns false if the maze is too small */ +static bool +build_maze(unsigned int size) +{ + unsigned int i, j; + room_t *w; + + if (size < 10) + return false; + + slog(LG_DEBUG, "wumpus: building maze of %d chambers", size); + + /* allocate rooms */ + wumpus.mazesize = size; + wumpus.rmemctx = scalloc(size, sizeof(room_t)); + + for (i = 0; i < size; i++) + { + room_t *r = &wumpus.rmemctx[i]; + memset(r, '\0', sizeof(room_t)); + + r->id = i; + + /* rooms have 3 exit points, exits are one-way */ + for (j = 0; j < 3 && r->exits.count < 3; j++) + { + int t = rand() % size; + + /* make sure this isn't a tunnel to itself */ + while (t == r->id) + { + mowgli_node_t *rn; + t = rand() % size; + + /* also check that this path doesn't already exist. */ + MOWGLI_ITER_FOREACH(rn, r->exits.head) + { + room_t *rm = (room_t *) rn->data; + + if (rm->id == t) + t = r->id; + } + } + + slog(LG_DEBUG, "wumpus: creating link for route %d -> %d", i, t); + mowgli_node_add(&wumpus.rmemctx[t], mowgli_node_create(), &r->exits); + } + + slog(LG_DEBUG, "wumpus: finished creating exit paths for chamber %d", i); + } + + /* place the wumpus in the maze */ + wumpus.wumpus = rand() % size; + w = &wumpus.rmemctx[wumpus.wumpus]; + w->contents = E_WUMPUS; + + /* pits */ + for (j = 0; j < size; j++) + { + /* 42 will do very nicely */ + if (rand() % (42 * 2) == 0) + { + room_t *r = &wumpus.rmemctx[j]; + + r->contents = E_PIT; + + slog(LG_DEBUG, "wumpus: added pit to chamber %d", j); + } + } + + /* bats */ + for (i = 0; i < 2; i++) + { + for (j = 0; j < size; j++) + { + /* 42 will do very nicely */ + if (rand() % 42 == 0) + { + room_t *r = &wumpus.rmemctx[j]; + + r->contents = E_BATS; + + slog(LG_DEBUG, "wumpus: added bats to chamber %d", j); + } + } + } + + /* arrows */ + for (i = 0; i < 3; i++) + { + for (j = 0; j < size; j++) + { + /* 42 will do very nicely */ + if (rand() % 42 == 0) + { + room_t *r = &wumpus.rmemctx[j]; + + r->contents = E_ARROWS; + + slog(LG_DEBUG, "wumpus: added arrows to chamber %d", j); + } + } + } + + /* find a place to put the crystal ball */ + w = &wumpus.rmemctx[rand() % size]; + w->contents = E_CRYSTALBALL; + slog(LG_DEBUG, "wumpus: added crystal ball to chamber %d", w->id); + + /* ok, do some sanity checking */ + for (j = 0; j < size; j++) + if (wumpus.rmemctx[j].exits.count < 3) + { + slog(LG_DEBUG, "wumpus: sanity checking failed"); + return false; + } + + slog(LG_DEBUG, "wumpus: built maze"); + + return true; +} + +/* init_game depends on these */ +static void move_wumpus(void *unused); +static void look_player(player_t *p); +static void end_game(void); + +/* sets the game up */ +static void +init_game(unsigned int size) +{ + mowgli_node_t *n; + + if (!build_maze(size)) + { + msg(wumpus_cfg.nick, wumpus_cfg.chan, "Maze generation failed, please try again."); + end_game(); + return; + } + + /* place players in random positions */ + MOWGLI_ITER_FOREACH(n, wumpus.players.head) + { + player_t *p = (player_t *) n->data; + + p->location = &wumpus.rmemctx[rand() % wumpus.mazesize]; + mowgli_node_add(p, mowgli_node_create(), &p->location->players); + + look_player(p); + } + + /* timer initialization */ + wumpus.move_timer = mowgli_timer_add(base_eventloop, "move_wumpus", move_wumpus, NULL, 60); + + msg(wumpus_cfg.nick, wumpus_cfg.chan, "The game has started!"); + + wumpus.running = true; + wumpus.speed = 60; + wumpus.wump_hp = 70; + + wumpus.start_game_timer = NULL; +} + +/* starts the game */ +static void +start_game(void *unused) +{ + wumpus.starting = false; + + if (wumpus.players.count < 2) + { + msg(wumpus_cfg.nick, wumpus_cfg.chan, "Not enough players to play. :("); + return; + } + + if (wumpus.wantsize >= 300) + wumpus.wantsize = 300; + + init_game(wumpus.wantsize); +} + +/* destroys game objects */ +static void +end_game(void) +{ + mowgli_node_t *n, *tn; + int i; + + /* destroy players */ + MOWGLI_ITER_FOREACH_SAFE(n, tn, wumpus.players.head) + resign_player((player_t *) n->data); + + /* free memory vector */ + if (wumpus.rmemctx) + { + /* destroy links between rooms */ + for (i = 0; i < wumpus.mazesize; i++) + { + room_t *r = &wumpus.rmemctx[i]; + + MOWGLI_ITER_FOREACH_SAFE(n, tn, r->exits.head) + mowgli_node_delete(n, &r->exits); + } + free(wumpus.rmemctx); + wumpus.rmemctx = NULL; + } + + wumpus.wumpus = -1; + wumpus.running = false; + + mowgli_timer_destroy(base_eventloop, wumpus.move_timer); + wumpus.move_timer = NULL; + + /* game is now ended */ +} + +/* gives the player information about their surroundings */ +static void +look_player(player_t *p) +{ + mowgli_node_t *n; + + return_if_fail(p != NULL); + return_if_fail(p->location != NULL); + + notice(wumpus_cfg.nick, p->u->nick, "You are in room %d.", p->location->id); + + MOWGLI_ITER_FOREACH(n, p->location->exits.head) + { + room_t *r = (room_t *) n->data; + + notice(wumpus_cfg.nick, p->u->nick, "You can move to room %d.", r->id); + } + + if (distance_to_wumpus(p)) + notice(wumpus_cfg.nick, p->u->nick, "You smell a wumpus!"); + + /* provide warnings */ + MOWGLI_ITER_FOREACH(n, p->location->exits.head) + { + room_t *r = (room_t *) n->data; + + if (r->contents == E_WUMPUS) + notice(wumpus_cfg.nick, p->u->nick, "You smell a wumpus!"); + if (r->contents == E_PIT) + notice(wumpus_cfg.nick, p->u->nick, "You feel a draft!"); + if (r->contents == E_BATS) + notice(wumpus_cfg.nick, p->u->nick, "You hear bats!"); + if (r->players.count > 0) + notice(wumpus_cfg.nick, p->u->nick, "You smell humans!"); + } +} + +/* shoot and kill other players */ +static void +shoot_player(player_t *p, int target_id) +{ + room_t *r; + player_t *tp; + /* chance to hit; moved up here for convenience. */ + int hit = rand() % 3; + + if (!p->arrows) + { + notice(wumpus_cfg.nick, p->u->nick, "You have no arrows!"); + return; + } + + if (adjacent_room(p, target_id) == false) + { + notice(wumpus_cfg.nick, p->u->nick, "You can't shoot into room %d from here.", target_id); + return; + } + + if (p->location->id == target_id) + { + notice(wumpus_cfg.nick, p->u->nick, "You can only shoot into adjacent rooms!"); + return; + } + + r = &wumpus.rmemctx[target_id]; + tp = r->players.head ? r->players.head->data : NULL; + + p->arrows--; + + if ((!tp) && (r->contents != E_WUMPUS)) + { + notice(wumpus_cfg.nick, p->u->nick, "You shoot at nothing."); + return; + } + + if (tp) + { + if ((hit < 2) && (tp->hp <= 10)) + { + msg(wumpus_cfg.nick, wumpus_cfg.chan, "\2%s\2 has been killed by \2%s\2!", + tp->u->nick, p->u->nick); + resign_player(tp); + } + else if ((tp->hp > 0) && (hit < 2)) { + notice(wumpus_cfg.nick, tp->u->nick, + "You were hit by an arrow from room %d.",p->location->id); + notice(wumpus_cfg.nick, p->u->nick, "You hit something."); + tp->hp -= 10; + } + else + { + notice(wumpus_cfg.nick, tp->u->nick, "You have been shot at from room %d.", + p->location->id); + notice(wumpus_cfg.nick, p->u->nick, "You miss what you were shooting at."); + } + } + else if (r->contents == E_WUMPUS) /* Shootin' at the wumpus, we are... */ + { + if (((wumpus.wump_hp > 0) && wumpus.wump_hp <= 5) && (hit < 2)) + /* we killed the wumpus */ + { + notice(wumpus_cfg.nick, p->u->nick, "You have killed the wumpus!"); + msg(wumpus_cfg.nick, wumpus_cfg.chan, "The wumpus was killed by \2%s\2.", + p->u->nick); + msg(wumpus_cfg.nick, wumpus_cfg.chan, + "%s has won the game! Congratulations!", p->u->nick); + end_game(); + } + else if ((wumpus.wump_hp > 5) && (hit < 2)) + { + notice(wumpus_cfg.nick, p->u->nick, + "You shoot the Wumpus, but he shrugs it off and seems angrier!"); + + wumpus.wump_hp -= 5; + wumpus.speed -= 3; + + move_wumpus(NULL); + + mowgli_timer_destroy(base_eventloop, wumpus.move_timer); + wumpus.move_timer = mowgli_timer_add(base_eventloop, "move_wumpus", move_wumpus, NULL, wumpus.speed); + } + else + { + notice(wumpus_cfg.nick, p->u->nick, "You miss what you were shooting at."); + move_wumpus(NULL); + } + } +} + +/* move_wumpus depends on this */ +static void regen_obj(contents_t); + +/* check for last-man-standing win condition. */ +static void +check_last_person_alive(void) +{ + if (wumpus.players.count == 1) + { + player_t *p = (player_t *) wumpus.players.head->data; + + msg(wumpus_cfg.nick, wumpus_cfg.chan, "%s won the game! Congratulations!", p->u->nick); + + end_game(); + } + else if (wumpus.players.count == 0) + { + msg(wumpus_cfg.nick, wumpus_cfg.chan, "Everyone lost. Sucks. :("); + end_game(); + } +} + +/* move the wumpus, the wumpus moves every 60 seconds */ +static void +move_wumpus(void *unused) +{ + mowgli_node_t *n, *tn; + room_t *r, *tr; + int w_kills = 0; + + /* can we do any of this? if this is null, we really shouldn't be here */ + if (wumpus.rmemctx == NULL) + { + slog(LG_DEBUG, "wumpus: move_wumpus() called while game not running!"); + mowgli_timer_destroy(base_eventloop, wumpus.move_timer); + return; + } + + msg(wumpus_cfg.nick, wumpus_cfg.chan, "You hear footsteps..."); + + /* start moving */ + r = &wumpus.rmemctx[wumpus.wumpus]; /* memslice describing the wumpus's current location */ + + regen_obj(r->contents); + r->contents = E_NOTHING; + + tr = mowgli_node_nth_data(&r->exits, rand() % MOWGLI_LIST_LENGTH(&r->exits)); + +#ifdef DEBUG_AI + msg(wumpus_cfg.nick, wumpus_cfg.chan, "I moved to chamber %d", tr->id); +#endif + + slog(LG_DEBUG, "wumpus: the wumpus is now in room %d! (was in %d)", + tr->id, wumpus.wumpus); + wumpus.wumpus = tr->id; + tr->contents = E_WUMPUS; + +#ifdef DEBUG_AI + msg(wumpus_cfg.nick, wumpus_cfg.chan, "On my next turn, I can move to:"); + r = &wumpus.rmemctx[wumpus.wumpus]; + + MOWGLI_ITER_FOREACH(n, r->exits.head) + { + room_t *tr = (room_t *) n->data; + + msg(wumpus_cfg.nick, wumpus_cfg.chan, "- %d", tr->id); + } +#endif + + MOWGLI_ITER_FOREACH_SAFE(n, tn, wumpus.players.head) + { + player_t *p = (player_t *) n->data; + + if (wumpus.wumpus == p->location->id) + { + notice(wumpus_cfg.nick, p->u->nick, "The wumpus has joined your room and eaten you. Sorry."); + w_kills++; + + /* player_t *p has been eaten and is no longer in the game */ + resign_player(p); + } + + /* prepare for the next turn */ + p->has_moved = false; + } + + /* report any wumpus kills */ + if (w_kills) + msg(wumpus_cfg.nick, wumpus_cfg.chan, "You hear the screams of %d surprised adventurer%s.", w_kills, + w_kills != 1 ? "s" : ""); + + check_last_person_alive(); +} + +/* regenerates objects */ +static void +regen_obj(contents_t obj) +{ + wumpus.rmemctx[rand() % wumpus.mazesize].contents = obj; +} + +/* handles movement requests from players */ +static void +move_player(player_t *p, int id) +{ + mowgli_node_t *n; + + if (adjacent_room(p, id) == false) + { + notice(wumpus_cfg.nick, p->u->nick, "Sorry, you cannot get to room %d from here.", id); + return; + } + + /* What about bats? We check for this first because yeah... */ + if (wumpus.rmemctx[id].contents == E_BATS) + { + int target_id = rand() % wumpus.mazesize; + + notice(wumpus_cfg.nick, p->u->nick, "Bats have picked you up and taken you to room %d.", + target_id); + msg(wumpus_cfg.nick, wumpus_cfg.chan, "You hear a surprised yell."); + + /* move the bats */ + wumpus.rmemctx[id].contents = E_NOTHING; + wumpus.rmemctx[target_id].contents = E_BATS; + + id = target_id; + + /* and fall through, sucks if you hit the two conditions below :-P */ + } + + /* Is the wumpus in here? */ + if (wumpus.wumpus == id) + { + notice(wumpus_cfg.nick, p->u->nick, "You see the wumpus approaching you. You scream for help, but it is too late."); + msg(wumpus_cfg.nick, wumpus_cfg.chan, "You hear a blood-curdling scream."); + + /* player_t *p has been killed by the wumpus, remove him from the game */ + resign_player(p); + check_last_person_alive(); + return; + } + + /* What about a pit? */ + if (wumpus.rmemctx[id].contents == E_PIT) + { + notice(wumpus_cfg.nick, p->u->nick, "You have fallen into a bottomless pit. Sorry."); + msg(wumpus_cfg.nick, wumpus_cfg.chan, "You hear a faint wail, which gets fainter and fainter."); + + /* player_t *p has fallen down a hole, remove him from the game */ + resign_player(p); + check_last_person_alive(); + return; + } + + /* and arrows? */ + if (wumpus.rmemctx[id].contents == E_ARROWS) + { + if (p->arrows == 0) + { + notice(wumpus_cfg.nick, p->u->nick, "You found some arrows. You pick them up and continue on your way."); + p->arrows += 5; + } + else + notice(wumpus_cfg.nick, p->u->nick, "You found some arrows. You don't have any room to take them however, " + "so you break them in half and continue on your way."); + + wumpus.rmemctx[id].contents = E_NOTHING; + + regen_obj(E_ARROWS); + } + + /* crystal ball */ + if (wumpus.rmemctx[id].contents == E_CRYSTALBALL) + { + notice(wumpus_cfg.nick, p->u->nick, "You find a strange pulsating crystal ball. You examine it, and it shows room %d with the wumpus in it.", + wumpus.wumpus); + notice(wumpus_cfg.nick, p->u->nick, "The crystal ball then vanishes into the miasma."); + + wumpus.rmemctx[id].contents = E_NOTHING; + wumpus.rmemctx[rand() % wumpus.mazesize].contents = E_CRYSTALBALL; + } + + /* we recycle the mowgli_node_t here for speed */ + n = mowgli_node_find(p, &p->location->players); + mowgli_node_delete(n, &p->location->players); + mowgli_node_free(n); + + p->location = &wumpus.rmemctx[id]; + mowgli_node_add(p, mowgli_node_create(), &p->location->players); + + /* provide player with information, including their new location */ + look_player(p); + + /* tell players about joins. */ + if (p->location->players.count > 1) + { + MOWGLI_ITER_FOREACH(n, p->location->players.head) + { + if (n->data != p) + { + player_t *tp = (player_t *) n->data; + + notice(wumpus_cfg.nick, tp->u->nick, "%s has joined room %d with you.", + p->u->nick, id); + notice(wumpus_cfg.nick, p->u->nick, "You see %s!", + tp->u->nick); + } + } + } +} + +/* ------------------------------ -*-atheme-*- code */ + +static void cmd_start(sourceinfo_t *si, int parc, char *parv[]) +{ + if (wumpus.running || wumpus.starting) + { + notice(wumpus_cfg.nick, si->su->nick, "A game is already in progress. Sorry."); + return; + } + + msg(wumpus_cfg.nick, wumpus_cfg.chan, "\2%s\2 has started the game! Use \2/msg Wumpus JOIN\2 to play! You have\2 60 seconds\2.", + si->su->nick); + + wumpus.starting = true; + wumpus.wantsize = 100; + + if (parv[0]) + wumpus.wantsize = atoi(parv[0]); + + wumpus.start_game_timer = mowgli_timer_add_once(base_eventloop, "start_game", start_game, NULL, 60); +} + +/* reference tuple for the above code: cmd_start */ +command_t wumpus_start = { "START", "Starts the game.", AC_NONE, 1, cmd_start, { .path = "" } }; + +static void cmd_join(sourceinfo_t *si, int parc, char *parv[]) +{ + player_t *p; + + if (!wumpus.starting || wumpus.running) + { + notice(wumpus_cfg.nick, si->su->nick, "You cannot use this command right now. Sorry."); + return; + } + + p = create_player(si->su); + + if (p) + msg(wumpus_cfg.nick, wumpus_cfg.chan, "\2%s\2 has joined the game!", si->su->nick); +} + +command_t wumpus_join = { "JOIN", "Joins the game.", AC_NONE, 0, cmd_join, { .path = "" } }; + +static void cmd_look(sourceinfo_t *si, int parc, char *parv[]) +{ + player_t *p = find_player(si->su); + + if (p == NULL) + { + notice(wumpus_cfg.nick, si->su->nick, "You must be playing the game in order to use this command."); + return; + } + + if (!wumpus.running) + { + notice(wumpus_cfg.nick, si->su->nick, "You cannot use this command right now. Sorry."); + return; + } + + look_player(p); +} + +command_t wumpus_look = { "LOOK", "View surroundings.", AC_NONE, 0, cmd_look, { .path = "" } }; + +static void cmd_move(sourceinfo_t *si, int parc, char *parv[]) +{ + player_t *p = find_player(si->su); + char *id = parv[0]; + + if (!p) + { + notice(wumpus_cfg.nick, si->su->nick, "You must be playing the game in order to use this command."); + return; + } + + if (!id) + { + notice(wumpus_cfg.nick, si->su->nick, "You must provide a room to move to."); + return; + } + + if (!wumpus.running) + { + notice(wumpus_cfg.nick, si->su->nick, "The game must be running in order to use this command."); + return; + } + + move_player(p, atoi(id)); +} + +command_t wumpus_move = { "MOVE", "Move to another room.", AC_NONE, 1, cmd_move, { .path = "" } }; + +static void cmd_shoot(sourceinfo_t *si, int parc, char *parv[]) +{ + player_t *p = find_player(si->su); + char *id = parv[0]; + + if (!p) + { + notice(wumpus_cfg.nick, si->su->nick, "You must be playing the game in order to use this command."); + return; + } + + if (!id) + { + notice(wumpus_cfg.nick, si->su->nick, "You must provide a room to shoot at."); + return; + } + + if (!wumpus.running) + { + notice(wumpus_cfg.nick, si->su->nick, "The game must be running in order to use this command."); + return; + } + + shoot_player(p, atoi(id)); +} + +command_t wumpus_shoot = { "SHOOT", "Shoot at another room.", AC_NONE, 1, cmd_shoot, { .path = "" } }; + +static void cmd_resign(sourceinfo_t *si, int parc, char *parv[]) +{ + player_t *p = find_player(si->su); + + if (!p) + { + notice(wumpus_cfg.nick, si->su->nick, "You must be playing the game in order to use this command."); + return; + } + + if (!wumpus.running) + { + notice(wumpus_cfg.nick, si->su->nick, "The game must be running in order to use this command."); + return; + } + + msg(wumpus_cfg.nick, wumpus_cfg.chan, "\2%s\2 has quit the game!", p->u->nick); + + resign_player(p); +} + +command_t wumpus_resign = { "RESIGN", "Resign from the game.", AC_NONE, 0, cmd_resign, { .path = "" } }; + +static void cmd_reset(sourceinfo_t *si, int parc, char *parv[]) +{ + if (wumpus.running) + { + msg(wumpus_cfg.nick, wumpus_cfg.chan, "\2%s\2 has ended the game.", si->su->nick); + + end_game(); + + wumpus.running = false; + wumpus.starting = false; + } +} + +command_t wumpus_reset = { "RESET", "Resets the game.", AC_IRCOP, 0, cmd_reset, { .path = "" } }; + +static void cmd_help(sourceinfo_t *si, int parc, char *parv[]) +{ + command_help(si, si->service->commands); +} + +command_t wumpus_help = { "HELP", "Displays this command listing.", AC_NONE, 0, cmd_help, { .path = "help" } }; + +static void cmd_who(sourceinfo_t *si, int parc, char *parv[]) +{ + mowgli_node_t *n; + + notice(wumpus_cfg.nick, si->su->nick, "The following people are playing:"); + + MOWGLI_ITER_FOREACH(n, wumpus.players.head) + { + player_t *p = (player_t *) n->data; + + notice(wumpus_cfg.nick, si->su->nick, "- %s", p->u->nick); + } +} + +command_t wumpus_who = { "WHO", "Displays who is playing the game.", AC_NONE, 0, cmd_who, { .path = "" } }; + +/* removes quitting players */ +static void +user_deleted(user_t *u) +{ + player_t *p; + + if ((p = find_player(u)) != NULL) + { + msg(wumpus_cfg.nick, wumpus_cfg.chan, "\2%s\2 has quit the game!", p->u->nick); + resign_player(p); + } +} + +static void +join_wumpus_channel(server_t *s) +{ + join(wumpus_cfg.chan, wumpus.svs->me->nick); + + hook_del_server_eob(join_wumpus_channel); +} + +/* start handler */ +void +_modinit(module_t *m) +{ + wumpus.svs = service_add("Wumpus", NULL); + service_set_chanmsg(wumpus.svs, false); + + if (cold_start) + { + hook_add_event("server_eob"); + hook_add_server_eob(join_wumpus_channel); + } + else if (me.connected) + join(wumpus_cfg.chan, wumpus.svs->me->nick); + + hook_add_event("user_delete"); + hook_add_user_delete(user_deleted); + + service_bind_command(wumpus.svs, &wumpus_help); + service_bind_command(wumpus.svs, &wumpus_start); + service_bind_command(wumpus.svs, &wumpus_join); + service_bind_command(wumpus.svs, &wumpus_move); + service_bind_command(wumpus.svs, &wumpus_shoot); + service_bind_command(wumpus.svs, &wumpus_resign); + service_bind_command(wumpus.svs, &wumpus_reset); + service_bind_command(wumpus.svs, &wumpus_who); + service_bind_command(wumpus.svs, &wumpus_look); +} + +void +_moddeinit(module_unload_intent_t intent) +{ + /* cleanup after ourselves if necessary */ + if (wumpus.running) + end_game(); + + service_delete(wumpus.svs); + + hook_del_user_delete(user_deleted); + + service_unbind_command(wumpus.svs, &wumpus_help); + service_unbind_command(wumpus.svs, &wumpus_start); + service_unbind_command(wumpus.svs, &wumpus_join); + service_unbind_command(wumpus.svs, &wumpus_move); + service_unbind_command(wumpus.svs, &wumpus_shoot); + service_unbind_command(wumpus.svs, &wumpus_resign); + service_unbind_command(wumpus.svs, &wumpus_reset); + service_unbind_command(wumpus.svs, &wumpus_who); + service_unbind_command(wumpus.svs, &wumpus_look); + + if (wumpus.move_timer) + mowgli_timer_destroy(base_eventloop, wumpus.move_timer); + + if (wumpus.start_game_timer) + mowgli_timer_destroy(base_eventloop, wumpus.start_game_timer); +} + +/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs + * vim:ts=8 + * vim:sw=8 + * vim:noexpandtab + */