From 65b099c6231910b387ae10b71a07fc384b2dafb0 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Sat, 5 Aug 2006 02:44:34 +0000 Subject: [PATCH] Port miau to -ng SVN-Revision: 4463 --- net/miau/Makefile | 66 +++++ net/miau/files/S50miau | 32 +++ net/miau/files/miau | 2 + net/miau/files/miaurc | 587 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 687 insertions(+) create mode 100644 net/miau/Makefile create mode 100755 net/miau/files/S50miau create mode 100644 net/miau/files/miau create mode 100644 net/miau/files/miaurc diff --git a/net/miau/Makefile b/net/miau/Makefile new file mode 100644 index 0000000000..b14efc17c8 --- /dev/null +++ b/net/miau/Makefile @@ -0,0 +1,66 @@ +# +# Copyright (C) 2006 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# $Id$ + +include $(TOPDIR)/rules.mk + +PKG_NAME:=miau +PKG_VERSION:=0.6.0.2 +PKG_RELEASE:=1 +PKG_MD5SUM:=1b78d219a03655399c165eeb021cddd8 + +PKG_SOURCE_URL:= @SF/miau +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_CAT:=zcat + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) +PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install + +include $(INCLUDE_DIR)/package.mk + +define Package/miau + SECTION:=net + CATEGORY:=Network + TITLE:=Another IRC-bouncer/proxy + DESCRIPTION:=In short, miau is an IRC-bouncer/proxy.\\\ +Being more verbose, miau is small but quite featured\\\ +IRC-bouncer - a service bit like HTTP-proxy, but\\\ +for IRC-networks.\\\ + URL:=http://sourceforge.net/projects/miau/ +endef + +define Build/Configure +$(call Build/Configure/Default,--enable-automode \ +--enable-releasenick \ +--enable-uptime \ +--enable-privlog \ +--enable-onconnect,ac_cv_func_malloc_0_nonnull=yes \ +ac_cv_func_realloc_0_nonnull=yes) +endef + + +define Build/Compile + rm -rf $(PKG_INSTALL_DIR) + mkdir -p $(PKG_INSTALL_DIR) + $(MAKE) -C $(PKG_BUILD_DIR) \ + CC=$(TARGET_CC) \ + DESTDIR="$(PKG_INSTALL_DIR)" \ + install +endef + +define Package/miau/install + install -d -m0755 $(1)/usr/bin + $(CP) $(PKG_INSTALL_DIR)/usr/bin/$(PKG_NAME) $(1)/usr/bin/ + install -d -m0755 $(1)/etc/init.d + install -d -m0755 $(1)/etc/default + install -d -m0755 $(1)/etc/miau + install -m0755 ./files/S50miau $(1)/etc/init.d/S50miau + install -m0644 ./files/miau $(1)/etc/default/miau + install -m0644 ./files/miaurc $(1)/etc/miau/miaurc +endef + +$(eval $(call BuildPackage,miau)) diff --git a/net/miau/files/S50miau b/net/miau/files/S50miau new file mode 100755 index 0000000000..beef3105dd --- /dev/null +++ b/net/miau/files/S50miau @@ -0,0 +1,32 @@ +#!/bin/sh + +DEFAULT="/etc/default/miau" +OPTIONS="-d /etc/miau/" +LOG_DIR="/var/log/miau" +ERR_LOG="$LOG_DIR/error.log" +OUT_LOG="$LOG_DIR/miau.log" + +[ -f $DEFAULT ] && . $DEFAULT +[ "$ENABLE_MIAU" = "yes" ] || exit 0 + +case $1 in + start) + [ -f /var/run/miau.pid ] && echo "[ERROR] miau is running" + [ -f /var/run/miau.pid ] && exit 0 + [ -d /var/run ] || mkdir -p /var/run + [ -d $LOG_DIR ] || mkdir -p $LOG_DIR + /usr/bin/miau -f $OPTIONS > $OUT_LOG 2> $ERR_LOG & + PID=$! + sleep 1 + [ -d /proc/$PID ] && echo $PID > /var/run/miau.pid + [ -d /proc/$PID ] || echo "[ERROR] Unable to run miau as a daemon" + ;; + stop) + [ -f /var/run/miau.pid ] && kill $(cat /var/run/miau.pid) >/dev/null 2>&1 && rm /var/run/miau.pid + ;; + *) + echo "usage: $0 (start|stop)" + exit 1 +esac + +exit $? diff --git a/net/miau/files/miau b/net/miau/files/miau new file mode 100644 index 0000000000..7d4f869ce2 --- /dev/null +++ b/net/miau/files/miau @@ -0,0 +1,2 @@ +ENABLE_MIAU="yes" +OPTIONS="-d /etc/miau" diff --git a/net/miau/files/miaurc b/net/miau/files/miaurc new file mode 100644 index 0000000000..c12e4ff114 --- /dev/null +++ b/net/miau/files/miaurc @@ -0,0 +1,587 @@ +# +# miau 0.5.3 configuration file example +# (C) 2003-2004 Tommi Saviranta +# + +# About structure of this configuration file: +# +# - All parameters are written inside quotes (for example, "foobar") +# +# - Options are defined like: option = "parameter1"[:"parameter2"] ... +# +# - When entering multiparameter options, certain parameters have default +# values and can be left out. +# +# - When entering multiparameter options and, for example, user doesn't want +# to set parameter2 at all but he needs to set parameter3, parameter2 can +# be skipped with column (':') like: "parameter1"::"parameter3". +# +# - Empty lines and characters after '#' (hash) are ignored. +# +# - When setting permissions, switched etc. (switches (booleans) are described +# as "state"), everything beginning with "t", "r" and "1" are concidered as +# "true" or "yes" (positive). Everything else is "false" or "no" (negative). + + + +# Required settings +################################################################################ + + +# nicknames = { "nick" }: Your nickname (and secondary nicknames) on IRC. +# If the primary nick (first nick on the list) is already on use, +# miau will try the others on the list. +# +# Default: no default +# +# Example: +#nicknames = { +# "zak" +# "zakh" +#} + + +# realname = "realname": Your "real" name on IRC. +# +# Default: no default +# +# Example: +#realname = "Prokhor Zakharov" + + +# username = "username": Your ident (matters only if you don't have identd +# running). +# +# Default: no default +# +# Example: +#username = "zak" + + +# password = "password": The password miau will expect to receive from client +# when it's registering with nick. If this is 13 characters long, +# miau assumed it's crypted. +# +# If miau is compiled with ENABLE_MKPASSWD, miau can generate password-hashes +# (from command line) with -c -switch. +# +# Default: no default +# +# Example: +#password = "foobar" + + +# listenport = "port": The port miau will wait for incoming connections. +# +# Default: no default +# +# Example: +#listenport = "4096" + + +# servers = { "server":"port":"password":"timeout" }: miau's IRC-server-list. +# Each line represents one server, where timeout is delay in +# seconds before connectiong attempt times out. Only "server" +# parameter is required. +# +# Default: no default +# +# Example: +#servers = { +# "irc.net" +# "irc.foo.bar":"6662" +# "localhost"::"foobar" +# "127.0.0.1":"6670"::"5" +#} + + +# connhosts = { "host":"permitted" }: List of hosts that are allowed (or denied) +# to connect to miau. When boolean-value is left unset, it is +# assumed to be "true". This list will be processed as a chain +# which means latter rules can override previous ones. +# +# Default: no default +# +# Example: +#connhosts = { +# "*":"yes" +# "client*.evil.net":"no" +#} + + + +# Optional settings +################################################################################ + + +# listenhost = "host": Host miau uses to listen on. +# +# If you are compiled with IPV6 and need this to listen on an IPV4 port, you +# must use an IP in the form ::FFFF:127.0.0.1 +# +# Default: no default +# +# Example: +#listenhost = "127.0.0.1" + + +# bind = "host": Host/IP miau uses for outgoing connections. +# +# Default: none +# +# Example: +#bind = "172.16.1.1" + + +# maxclients = "number": Maximum number of clients connected to miau +# concurrently. Set to zero for unlimited clients. +# +# Default: 3 +# +#Example: +#maxclients = "1" + + +# stonedtimeout = "seconds": Time (in seconds) with no data from the server +# before it is declared stoned and being disconnected. Although +# minimum value is 30, this value has no upper limit. Watch out, +# though, if this value is set too high, death of servers may stay +# undetected for a very long time if you are idle. +# +# Default: 90 +# +# Example: +#stonedtimeout = "150" + + +# connecttimeout = "seconds": Time (in seconds) before connection attampt will +# time out. Note that while connecting to the server miau will not +# respond to clients. Minimum value is 5, and many systems define +# maximum value. +# +# Default: 30 +# +# Example: +#connecttimeout = "60" + + +# channels = { "channel":"keyword" }: List of channels to join. +# +# Default: none +# +# Example: +#channels = { +# "#foobar" +# "#miau":"cats" +#} + + +# rejoin = "state": Rejoin channels after disconnecting from the server. +# If rejoin is set to true, channels defined in "channels" are +# also joined when client first time connects to miau. +# +# Default: true +# +# Example: +#rejoin = "false" + + +# leave = "state": Leave channels when all clients have detached from miau. +# If "leave" is set to "false" and "rejoin" is set to "true", +# channels defined at "channels" will be joined at miau startup. +# If both "leave" and "rejoin" is set to "true", channels that +# are left at client detach, are rejoined when client attached +# back to miau. +# +# Default: false +# +# Example: +#leave = "false" + + +# leavemsg = "message": Message miau will either use as PART-message or as an +# ACTION when all clients have detached from miau. If unset or +# set to empty, no message will be shown. Note that many people +# dislike event-based messages (which happens when "leave" is set +# to "false" and "leavemsg" is set). Also see usequitmsg. +# +# Note: Note that commenting this option out and rehashing after leavemsg was +# set, this option is _not_ reverted. To disable leavemsg afterwards you +# need to write an empty string here and rehash. +# +# Default: none +# +# Example: +#leavemsg = "doh" + + +# awaymsg = "message": Text that will be set to miau's away-reason when all +# clients have detached from miau. If unset or set to empty, +# AWAY-status will be left untouched. When any client attaches +# back to miau, AWAY-status will be reset. Also see usequitmsg. +# +# Note: If user sets him/herself away, miau will not touch away-status nor +# message neither when connecting to or disconnecting from miau. +# +# Note: Note that commenting this option out and rehashing after awaymsg was +# set, this option is _not_ reverted. To disable awaymsg afterwards you +# need to write an empty string here and rehash. +# +# Default: none +# +# Example: +#awaymsg = "bouncing around - all private messages will be logged" + + +# usequitmsg = "state": Use last quit-reason as away-reason and/or leave-message +# (if respective options are enabled) when all clients have +# disconnected from miau. If quit-reason is empty, default values +# of awaymsg and leavemsg will be used, otherwise most recent +# quit-message overrides values in miaurc. +# +# Default: true +# +# Example: +# usequitmsg = "false" + + +# getnick = "selection": miau can try to reclaim your primary nick when it is +# lost. This option may be one of the following: "never", +# "detached", "attached", or "always". +# "never" ....... miau will not try to get your nick back. +# "detached" .... miau will try to get your nick when no +# clients are attached. +# "attached" .... miau will try to get your nick when +# there are one or more clients attached. +# "always" ...... miau will try to get your nick +# +# Note: Do _not_ use options "attached" and "always" with clients (like +# irc-II EPIC) that automatically change your nick when they receive +# NICKINUSE from the server - you might end up chaning your nick until +# server drops your connection due excess flood. +# +# Default: detached +# +# Example: +#getnick = "always" + + +# getnickinterval = "seconds": Time between tries (in seconds) to obtain +# currently (possibly) lost primary nick. Don't set it too low +# or you might get kicked out the server due to excess flood. +# +# Default: 60 +# +# Example: +#getnickinterval = "30" + + +# antiidle = "minutes": Time between idle-timer resets in minutes. Set to 0 to +# disable. +# +# Default: 0 +# +# Example: +#antiidle = "300" + + +# qloglength = "minutes": Age of oldest line in quicklog in minutes. Set to zero +# to disable quicklog. +# +# This option might not be compiled in. +# +# Default: 30 +# +# Example: +#qloglength = "30" + + +# timestamp = "option": Location of timestamp in quicklog events. This option +# may be one of the following "beginning", "end", or "none". +# +# This option might not be compiled in. +# +# Default: none +# +# Example: +#timestamp = "beginning" + + +# flushqlog = "state": If set to true, quicklog will be written only when no +# clients are connected and quicklog will be erased when client +# connects to miau. If you are running a single client, you +# probably want to leave this to "false. +# +# This option might not be compiled in. +# +# Default: true +# +# Example: +#flushqlog = "true" + + +# inbox = "state": Enables logging private messages when no clients are +# connected to miau. +# +# This option might not be compiled in. +# +# Default: true +# +# Example: +#inbox = "true" + + +# nevergiveup = "state": If set to true, miau will reset "working"-status of +# servers to working when all are set to dysfunctional. +# Respectively, if set to false, miau will quit when all servers +# on the list have been set to dysfunctional. +# +# Default: true +# +# Example: +#nevergiveup = "false" + + +# norestricted = "state": If set to true, miau will not stay on server that +# forces user to have restricted-status (+r). +# +# Default: true +# +# Example: +#norestricted = "false" + + +# reconnectdelay = "seconds": Time (in seconds) between connection attempts. +# Minumun value is set to 1. +# +# Default: 10 +# +# Example: +#reconnectdelay = "30" + + +# nickfillchar = "fill character": Character used to modify your primary nick +# when all defined nicks are already occupied. Note character is +# a single octet (byte) and if longer string is fed, only the +# first character is used. +# +# Example: When nickfillchar is set to '_', primary nick is "zak" and all +# defined nicks are occupied, next nicks tried are "zak_", "zak__", +# "zak___" and so on. When nick has grown too long, it will be shifted +# one characted to right (where shift is cyclic) - this means +# "zak______" will become "_zak_____", which, again, will become +# "__zak____". +# +# Default: _ +# +# Example: +#nickfillchar = "^" + + +# maxnicklen = "length": Maximum nick length, used with nickfillchar. +# +# Default: 9 +# +# Example: +#maxnicklen = 11 + + +# usermode = "usermode(s)": Usermode that miau will request (if no clients are +# attached at the moment) from the server when connection to the +# server is established. Leave unset or set to empty to disable +# this feature. +# +# Default: none +# +# Example: +#usermode = "+i" + + +# forwardmsg = "command": miau can collect the (private) messages within three +# (3) minutes and pipe them into the program specified. Leave this +# unset or set to empty to disable this feature. +# +# Default: none +# +# Example: +#forwardmsg = "mail user@host" + + +# ignore = { "mask":"ignored" }: List of users whose private messages (PRIVMSG) +# and noticies (NOTICE) are ignored when no clients are attached +# to miau. When "ignored" is left undefined, it is assumed to be +# "true". Setting "ignored" to "false" means that this user will +# _not_ be ignored. This list is processed as a chain. +# +# Default: none +# +# Example: +#ignore = { +# "*@localhost":"yes" +# "zak*":"no" +#} + + +# privlog = "mode": Whatever private messages should be logged in nick-specific +# files. Can be one of "never", "detached", "attached", and +# "always". +# +# This option might not be compiled in. +# +# Default: never +# +# Example: +#privlog = "always" + + +# chanlog = { "channel(s)":"options":"logfile" }: List of channel logfiles. +# +# When channel is set to "*", line represents global log. When logging, +# if channel doesn't have entry of it's own in this list, it will use settings +# of global log and write log to it's own file. When defining global log, +# "logfile" is ignored. Each line can have multiple channels +# (like "#foobar,#miau"). +# +# If logfile is left undefined, logfile will be named after the channel with +# possible postfix (see logpostfix). All lofiles are written in miau's work +# directory. +# +# Options consist of abritary set of following possibilities: +# j: log joins +# e: log parts (exits) +# q: log quits +# m: log messages (privmsg/notice) +# c: log mode changes (changes) +# n: log nick changes +# o: log misc events (other) +# b: log messages from miau (bouncer) +# a: log all of above +# A: log when a client is attached +# D: log when a client is detached +# C: log continuously (status of clients doesn't matter) +# +# This option might not be compiled in. +# +# Default: none +# +# Example: +#chanlog = { +# "#foobar":"a" # log everything on #foobar +# "#miau":"aD":"foo.log" # log everything to file "foo.log" when +# all clients are detached +# "*":"mjeq" # log only messages, joins, parts and quits +# by default +#} + + +# logpostfix = "postfix": When writing log to undefined logfile, each logfile +# consists of channel name followed by postfix. Postfix can be +# defined here. +# +# This option might not be compiled in. +# +# Default: no postfix +# +# Example: +#logpostfix = ".log" + + +# onconnect = { "mode":"target/data"(:"data") }: When miau connects and +# registers user to server, miau can send pre-defined messages. +# User can define miau to send normal messages (PRIVMSG), notices +# (NOTICE) or arbitrary messages. +# +# Mode can be one of the following: +# p: private message (PRIVMSG). +# n: notice (NOTICE). Should be used with services and automatons, but +# unfortunately some network services can't cope with notices. +# r: "raw" message. This means user must provide complete message to send +# to the server. Using raw message user has complete control over what +# is being sent. If you don't know what this is, you don't need this. +# When using modes "p" or "n", user must provide both message and target where +# as with raw messages only one parameter in addition to type should be given. +# +# This option might not be compiled in. +# +# Default: none +# +# Example: +#onconnect = { +# "p":"nickserv":"identify foobar" +# "n":"nickserv@services.host.net":"id raboof" +# "r":"OPER foo bar" +#} + + +# automodes = { "mask":"privilegded" }: List of people who are automatically +# given certain privilege on channel. Mask is given in form of +# "mode:nick!username@host/#channel" (where "mode" is a single +# character) and list is processed as a chain. +# +# This option might not be compiled in. +# +# Default: none +# +# Example: +#automodes = { +# "o:zak*!zak@client*-myisp.com/#channel":"yes" +# "o:zak*!*@evil.impersonator.net/#foobar":"no" +# "v:newbie*!*@ircnet.com/#newbie":"yes" +#} + + +# automodedelay = "seconds": Time (in seconds) after first queued mode change +# would take effect. During this period of time miau can collect +# more than one mode change and commit up to three at a time. +# Other situation reasonaly big value (like 30) here could prove +# useful is channel where there are stupid "auto-oping" bots. +# (Stupid bots do mode changes even if someone else did that +# already.) +# +# This option might not be compiled in. +# +# Default: 30 +# +# Example: +#automodedelay = "60" + + +# cmdpasswd = "password": Password for remote commands. If this is 13 characters +# long, miau assumes it's crypted. Comment this out or leave it +# empty to disable remote commands. When sending miau a remote +# command, password _always_ begins with column (':') (if +# cmdpasswd is set to "foobar" (or hash of it), you need to send +# miau a message beginning with ":foobar" to issue a remote +# command). +# +# This feature might not be compiled in. +# +# If miau is compiled with ENABLE_MKPASSWD, miau can generate password-hashes +# (from command line) with -c -switch. +# +# Default: disabled +# +# Example: +#cmdpasswd = "" + + +# dccbounce = "state": miau can bounce DCCs. Set to true to enable bouncing. +# You probably don't need this. +# +# This option might not be compiled in. +# +# Default: false +# +# Example: +#dccbounce = "true" + + +# dccbindhost = "host": If miau has separate IPs for IRC-network and clients, +# you should enter IP for clients here. +# +# This option might not be compiled in. +# +# Default: no default +# +# Example: +#dccbindhost = "10.0.0.1" -- 2.30.2