This file is indexed.

/usr/share/irssi/scripts/ircgmessagenotify.pl is in irssi-scripts 20131030.

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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
#!/usr/bin/perl -T -w

# Harjoitustyönä tehty skripta.

# Käyttö:
# 1) kopioi .irssi/scripts hakemistoon
# 2) /run ircgmessagenotify.pl
# 3) /set ircgusername yournick
# 4) /set ircgpassword yourpassword
# 5) Voit myös optionaalisesti säätää ircgcheck_interval arvoa joka sekunneissa määärää kyselyjen välisen ajan sekunteina
# 6) ircgdo_polling asetus voi olla joko 1 tai 0 ja se määrää pollataanko serveriä ylipäänsä
# 7) /statusbar window add ircgcomments         komento lisää statusbariin kohdan IRCG: n jossa n kuvaa uusien viestien lukumäärää. =)
# 8) /ircgcomments komento kyselee käsin pakotettuna tilanteen

# jos polling on asetettu 0 ei edes käsipelin kysely toimi.

# Kiitokset statusbar ideasta Whiz:ille.. kiitos pällistä ideasta pälliin skriptaan jne.
# Kiitoksia ei heru Whizille kylläkään toimimattomista regexpeistä... joutu ihan itse opetteleen keletanatu.

use LWP::UserAgent;
use HTTP::Cookies;
use Irssi;
use Irssi::TextUI;

# ------------------------------------
# Ircgalleria skriptin poikanen
#

use vars qw($VERSION %IRSSI);
$VERSION = "0.1b";
%IRSSI = (
 authors => "BCOW",
 contact => "bcow\@iki.fi",
 name => "ircgmessagenotify",
 description => "Tarkistelee irc-galleria.net:iä ja sanoo kun sinulle on uusia viestejä.",
 license => "GPLv2",
 url => "http://www.verkonpaino.net/",
 changed => "21.01.2004 23:55:00 EET"
);

# alustetaan asetukset
Irssi::settings_add_str('ircgmessagenotify', 'ircgusername', '');
Irssi::settings_add_str('ircgmessagenotify', 'ircgpassword', '');
Irssi::settings_add_int('ircgmessagenotify', 'ircgcheck_interval', '120');
Irssi::settings_add_int('ircgmessagenotify', 'ircgdo_polling', '1');

# alustetaan keksisäilö :P
my $cookie_jar = HTTP::Cookies->new(file => $ENV{'HOME'}. "/.irssi/ircgmessagenotify_cookie_jar.dat", autosave => 1,);
# alustetaan viestilaskuri
my $lastcount = 0;
# alustetaan timeria
my $timeout;
my $timeouttag;

# -- aseta timeri
sub setup_timer
{
	# aseta uusi timeri
	$timeout = Irssi::settings_get_int("ircgcheck_interval");
	if ($timeout < 60)
	{
		$timeout == 60;
		Irssi::print("ircgcheck_interval ei voi olla pienempi kuin 60. Asetin sen 60:een.");
	}
	$timeouttag = Irssi::timeout_add($timeout * 1000, 'check_for_new_messages', '');
}

# -- varmistetaan että timeri muuttuu ja sen mukaan myös skriptan ajo.
sub setup_changed
{
	# määritykset muuttui. aseta timeri uudestan =)
	Irssi::timeout_remove($timeouttag);
	&setup_timer;
	# jokatapauksessa piirrä statusbar uudestaan
	Irssi::statusbar_items_redraw("ircgcomments");
}

# -- varsinainen funktio jolla tsekataan viestit
sub check_messages
{
	my $forced = $_[0];

	my $ua = LWP::UserAgent->new;
	$ua->agent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
	$ua->timeout(10);
	$ua->cookie_jar($cookie_jar);

	my $irclogin = Irssi::settings_get_str('ircgusername');
	my $passwd = Irssi::settings_get_str('ircgpassword');

	my $req = HTTP::Request->new(POST => "http://irc-galleria.net/login.php");
	$req->content_type("application/x-www-form-urlencoded");
	$req->content("login=$irclogin&passwd=$passwd");

	my $res = $ua->request($req);

	# Oliko palautus ok vai virhe
	if ($res->is_success) {
		#print $res->content;
		# okei saatiin tehtyä kirjautuminen.. ööm ja saatiin se mitä pitäisikin. tämä ei ole kuitenkaan se mitä halutaan ;)
		Irssi::print("ircgmessagenotify.pl sanoo: ööömm.. tätä ei pitänyt tapahtua: ". $res->as_string);
	} elsif ($res->is_redirect) {
		# okei uudelleenohjaus niinkuin pitäisikin(?) olla´
		if ($res->header("Location") =~ /error/)
		{
			# gallerian virhe
			Irssi::print("ircgmessagenotify.pl sanoo VIRHE kirjauduttaessa: gallerian virhekoodi!");
		} else {
			# homma ok. Haetaanpas sitten uudella requestilla viestit
			my $req2 = HTTP::Request->new(GET => "http://irc-galleria.net/". $res->header("Location"));

			# useragent toivottavasti muistaa keksit
			my $res2 = $ua->request($req2);

			if ($res2->is_success)
			{
				# ookii ;) saatiin content!
				if ($res2->content =~ /Sinulle on uusia kommentteja/)
				{
					#Irssi::print("Sinulle on uusia kommentteja irc-galleriassa!!!");
					my $newcount = $res2->content;
					#$newcount =~ s/.*commentcount\"\>\(//i;
					#$newcount =~ s/\)\<.*//i;

					# irroita arvo :)
					$newcount =~ /.*commentcount\"\>\((\d)\)\<.*/;
					$newcount = $1;

					my $uusia = $newcount - $lastcount;

					#Irssi::print("Uusia: $uusia, newcount: $newcount, lastcount: $lastcount");

					# sitten viimeinen tarkistus ;)
					if ($lastcount < $newcount)
					{
						# uusia viestejä! jeee!
						Irssi::print("Sinulle on irc-galleriassa $uusia kpl uusia kommentteja. Yhteensä $newcount kpl.");
					} elsif ($lastcount > $newcount) {
						# viestejä on luettu sitten viimekerran tai jotain muuta hassua, mutta niitä on kuitenkin
						Irssi::print("Sinulle on irc-galleriassa $newcount kpl viestejä odottamassa lukemista.");
					} # nolla tekee jotakin omituista :)

					# aseta arvo
					$lastcount = $newcount;
				} else {
					# aseta arvo nollille koska ei ole uusia viestejä
					$lastcount = 0;
					if ($forced == 1)
					{
						# hassuja epäloogisuuksia tuossa ylempänä ja siinä mitä tässä tapahtuu ;)
						Irssi::print("Sinulle ei ole uusia kommentteja irc-galleriassa.");
					}
				}
			} else {
				# virhe :(((
				Irssi::print("ircgmessagenotify.pl sanoo VIRHE viestien lukumäärää selvitettäessä: ". $res2->status_line);
			}
		}
	} else {
		#print $res->status_line, "\n";
		# virhe :(((
		Irssi::print("ircgmessagenotify.pl sanoo VIRHE kirjauduttaessa: ". $res->status_line);
	}
}

# -- tarkista pakotetusti
sub check_messages_forced
{
	&check_messages(1);
	# jokatapauksessa piirrä statusbar uudestaan
	Irssi::statusbar_items_redraw("ircgcomments");
}

# -- tarkista onko uusia viestejä eli yhdy palvelimeen ja tsekkaa lukema
sub check_for_new_messages
{
	# tarkista tarvitseeko tehdä mitään?
	if (Irssi::settings_get_int("ircgdo_polling") > 0)
	{
		#Irssi::print("Tick");
		&check_messages(0);
	} # do_polling
	# jokatapauksessa piirrä statusbar uudestaan
	Irssi::statusbar_items_redraw("ircgcomments");
}

# -- näytä tieto tän hetkisestä laskurista statusbarissa -)
sub statusbar
{
	my ($item, $get_size_only) = @_;

	my $state;

	if (Irssi::settings_get_int("ircgdo_polling") > 0)
	{
		# jos pollataan näytäkkin jotain
		$state = $lastcount;
	} else {
		# ei pollata joten näytä -
		$state = "-";
	}

	$item->default_handler($get_size_only, undef, "IRCG: $state", 1);
}

# Kiinnitetään timeri
&setup_timer;

# sitten signaali liitoksia
Irssi::signal_add("setup changed", "setup_changed");

# ja komento liitoksia
Irssi::command_bind('ircgcomments', 'check_messages_forced');

# viimeiseksi jää statusbar liitos
Irssi::statusbar_item_register('ircgcomments','{sb $0-}', 'statusbar');