This file is indexed.

/usr/share/ircII/script/netsplit is in ircii 20060725-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#	$eterna: netsplit,v 1.3 2003/12/08 05:05:59 mrg Exp $
#
# NETSPLIT 7 - This script does its best to suppress the excessive 
# joins and signoffs due ONLY to netsplits.  It should pass regular
# signoffs.   Need at least ircII2.2pre6
# Version II  handles multiple channels. 
# Version III ignores bogus signoff messages
# Version IV  handles multiple splits.
# Version V   handles multiple splits and ignores bogus signoff messages. also
#             adds timestamps to split/join messages
# Version VI  For ircII2.2pre8 and beyond. Uses encode() and decode() 
# Version VII Fixed a problem with encode() and decode() and case
#             sensitive channel names, + adding lformat()
#
# This one by Daemon
# CONVERTED for ircII2.2pre8
# Version V by poxaV (cgw@unt.edu), from Daemon's code
# modified last 7-03-93

#shows the current time in HH:MM:SS format
^alias currtime @ function_return = word(3 $stime($time()))

# This function tests for bogus splits.
^alias isbogus {
	^if ([$3]) { @ function_return = 1 }
	^if (rmatch(.$1. $isbogus.pats *..*)) { @ function_return = 1 }
	^if (rmatch(.$2. $isbogus.pats *..*)) { @ function_return = 1 }
}

# Add patterns.. like /boguspat *bonk* *thud* *haha*
# that will NOT be treated as server names..
^alias boguspat ^assign isbogus.pats $isbogus.pats $0-;echo $0- added

# Next two are pretty obvious
^alias boguslist echo Pats: $isbogus.pats
^alias bogusclear ^assign -isbogus.pats;echo Bogus list clean

# If first word in Signoff contains a period then assume servername
# and thus a a split.  Stash in assoc array.
^ON ^CHANNEL_SIGNOFF "% % %.% %.%" {
	if (isbogus($1-)) 
		{ echo *** Signoff: $1 \($2-\) }
		{ ^netbroke $encode($tolower($0)) $encode($1) $encode($2).$encode($3) $2 $3 }
}

# Stuff array. Tell us what server broke and set split flag.
^alias netbroke {
  @ signcross[$2][$0][$1] = 1
  @ signoffs[$0][$1] = [$2]
  @ splittime[$2] = time()
  ^if ( isbroke[$2] )
  {
  }
  {
    xecho -level OPNOTES *** Netsplit at $currtime() \($3-\)
    @ isbroke[$2] = 1
    @ splitname[$2] = [$3-]
  }
}

# When a person joins a channel.. Check them against the array.
# If they are in array, then remove silently.  Otherwards echo normally
^ON ^JOIN * {
  ^netjoined $encode($tolower($1)) $encode($0) $1 $0 $USERHOST()
}

# Unset the split flag
^alias netjoined {
  if ( signoffs[$0][$1] )
  {
    ^if ( isbroke[$signoffs[$0][$1]] )
    {
      xecho -level OPNOTES *** Netjoined at $currtime() \($splitname[$signoffs[$0][$1]]\)
    }
    ^assign -isbroke[$signoffs[$0][$1]]
    ^assign -signcross[$signoffs[$0][$1]][$0][$1]
    ^assign -signoffs[$0][$1]
  }
  {
    echo *** $3 \($4-\) has joined channel $2
  }
}

# Clear the array every 10 minutes to prevent excess garbage
^on #^timer 70 * netclean
^alias netclean {
  foreach splittime ii
  {
    foreach splittime.$ii jj
    {
      if ( time() - splittime[$ii][$jj] > 300 )
      {
      	foreach signcross.$(ii).$jj xx
      	{
          foreach signcross.$(ii).$(jj).$xx yy
          {
            ^assign -signcross[$ii][$jj][$xx][$yy]
            ^assign -signoffs[$xx][$yy]
          }
      	}
	^assign -xx
	^assign -yy
       	^assign -isbroke[$ii][$jj]
	^assign -splitname[$ii][$jj]
       	^assign -splittime[$ii][$jj]
      }
    }
  }
  ^assign -ii
  ^assign -jj
}

^alias netpurge {
  purge isbroke
  purge splitname
  purge splittime
  purge signcross
  purge signoffs
}

# If you want to supress mode changes by servers.. (ussually after a split)
# then uncomment next line
# ^on ^mode "%.%" #

# If you want to look an array.. Type /show <arrayname>
# Lists keys and contents
^alias showsplit {
  if ( [$($0)] )
  {
    echo $0 $($0)
  }
  foreach $0 ii
  {
    showsplit $0.$ii
  }
  ^assign -ii
}

^alias purge {
  foreach $0 ii
  {
    purge $0.$ii
  }
  ^assign -ii
  ^assign -$0
}

^alias wholeft {
  foreach signoffs ii
  {
    foreach signoffs.$ii jj
    {
      echo $lformat(15 $decode($ii)) $lformat(10 $decode($jj)) $splitname[$signoffs[$ii][$jj]]
    }
  }
  ^assign -ii
  ^assign -jj
}

# format and lformat differ from $[-num]var and $[num]var in that
# They don't chop off the string if it is too long.

alias lformat {
	@ IRCII.word = [$1-]
	if (@IRCII.word < [$0]) 
		{ @ function_return = [$([$0]IRCII.word)] } 
		{ @ function_return = [$IRCII.word] } 
}