homebrew-core/Formula/ircd-irc2.rb
Ilkka Oksanen a71db137c6 ircd-irc2: disable netsplit detection
By default ircd goes to netsplit mode if the amount of connected
users or servers go below a certain limit.

Default limits are less than 65000 users connected or less than 80
servers connected. This means that in practice all brew installed
ircds are always in netsplit mode.

In netsplit mode no one can be channel operator. Channel operators
are useful already in small ircd setups. Therefore it's best to
disable netsplit detection. You need to administrate a popular IRC
network with multiple servers for netsplit detection to be useful.

Closes Homebrew/homebrew#29993.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2014-06-20 20:27:37 -05:00

82 lines
2.2 KiB
Ruby

require 'formula'
class IrcdIrc2 < Formula
homepage 'http://www.irc.org/'
url 'http://www.irc.org/ftp/irc/server/irc2.11.2p3.tgz'
sha1 '1ab317daeac324cc3f10fe939588de04d52e47c5'
version '2.11.2p3'
def default_ircd_conf
<<-EOS.undent
# M-Line
M:irc.localhost::Darwin ircd default configuration::000A
# A-Line
A:This is Darwin's default ircd configurations:Please edit your /usr/local/etc/ircd.conf file:Contact <root@localhost> for questions::ExampleNet
# Y-Lines
Y:1:90::100:512000:5.5:100.100
Y:2:90::300:512000:5.5:250.250
# I-Line
I:*:::0:1
I:127.0.0.1/32:::0:1
# P-Line
P::::6667:
EOS
end
def install
system "./configure", "--prefix=#{prefix}",
"--localstatedir=#{var}",
"--sysconfdir=#{etc}",
"--mandir=#{man}",
"CFLAGS=-DRLIMIT_FDMAX=0"
build_dir = `./support/config.guess`.chomp
# Disable netsplit detection. In a netsplit, joins to new channels do not
# give chanop status.
inreplace "#{build_dir}/config.h", /#define DEFAULT_SPLIT_USERS\s+65000/,
"#define DEFAULT_SPLIT_USERS 0"
inreplace "#{build_dir}/config.h", /#define DEFAULT_SPLIT_SERVERS\s+80/,
"#define DEFAULT_SPLIT_SERVERS 0"
# The directory is something like `i686-apple-darwin13.0.2'
system "make", "install", "-C", build_dir
(etc/"ircd.conf").write default_ircd_conf
end
plist_options :manual => "ircd"
def plist; <<-EOS.undent
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<false/>
<key>Label</key>
<string>#{plist_name}</string>
<key>ProgramArguments</key>
<array>
<string>#{opt_prefix}/sbin/ircd</string>
<string>-t</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>#{HOMEBREW_PREFIX}</string>
<key>StandardErrorPath</key>
<string>#{var}/ircd.log</string>
</dict>
</plist>
EOS
end
test do
system "#{sbin}/ircd", "-version"
end
end