a71db137c6
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>
82 lines
2.2 KiB
Ruby
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
|