Stadilogin 0
Helsingin kaupungin kirjastoissa olevassa wlanissa (SSID: stadinetti) on selainpohjainen kirjautuminen kirjastokortin numerolla ja tunnusluvulla. Jos haluaa käyttää vain ssh yhteyttä joutuu avaamaan selaimen ja kirjautumaan sisään jotta järjestelmä päästää sinut internettiin.
Stadilogin.pl kirjautuu automaattisesti sisään ilman selainta ja ilmoittaa graafisesti onnistuiko kirjautuminen. Skripti pitää ajaa käsin stadinettiin yhdistämisen jälkeen, ja uudestaan kun istunto on vanhentunut. Skriptin ajamisen voi kuitenkin automatisoida stadinettiin yhdistämisen jälkeen wicd -ohjelmalla mutta istunnon vanhettua skripti pitää ajaa käsin.
Stadilogin.pl vaatii toimiakseen että seuraavat paketit on asennettuna; perl, libwww-mechanize-perl, libgtk2-notify-perl sekä tiedosto suoritusoikeudet.
#!/usr/bin/perl
# Autologin for stadinetti
#
# Author; Timi Wahalahti <timi.wahalahti@gmail.com>
# Thanks to; Miiro Lindfors
# Lisensoitu ketä-vittua-kiinnostaa lisenssillä
use WWW::Mechanize;
use Gtk2::Notify -init, "stadinetti";
my $mech = WWW::Mechanize->new();
my $user = '<tunnus>'; #username
my $pass = '<salasana>'; #salasana
my $url = 'http://google.fi'; #haettava url
#notifyt skenaarioille succes ja failed
my $success = Gtk2::Notify->new("Kirjautuminen stadinettiin onnistui!", "Käytettiin tunnusta: $user\nIstunto vanhenee 45min kuluttua");
my $failed = Gtk2::Notify->new("Kirjautuminen stadinettiin epaonnistui!", "Käytettiin tunnusta: $user\nTarkista tunnus ja salasana");
#haetaan sivu, syötetään login lomakkeeseen $user sekä $pass ja lähetetään lomake
$mech->get( $url );
$mech->submit_form(
form_name => '',
button => 'mode_login',
fields => {
user => $user,
pass => $pass,
}
);
#Tarkistetaan onnistuiko kirjautuminen, tämän jälkeen pääte ja notify kertomaan se
if ($mech->response()->header('Title') =~ m"^(STADINETTI | Etusivu | Sis��n kirjautuminen)") { print "Kirjautuminen epäonnistui\n"; } else { print "Kirjautuminen onnistui\n"; }
if ($mech->response()->header('Title') =~ m"^(STADINETTI | Etusivu | Sis��n kirjautuminen)") { $failed->show; } else { $success->show; }