| Current Path : /home/hotlineuser/PullUpdates/ |
| Current File : //home/hotlineuser/PullUpdates/check4update |
#!/usr/bin/perl
use strict;
use warnings;
use File::stat;
use Time::localtime;
# Constants
my $VERSION = "1.0.0";
my $LOCALVERSIONFILE = "$ENV{HOME}/curversion.txt";
my $MOBIUS_BIN = "mobius-hotline-server";
my $LOCALMOBIUS = "$ENV{HOME}/mobius/$MOBIUS_BIN";
my $MOBIUSFOLDER = "$ENV{HOME}/mobius";
my $LOCALMD5 = "";
my $MASTER_FILE = "latestmobius.txt";
my $RELEASED_VERSION_FILE = "https://hotline.retro-os.live/$MASTER_FILE";
my $RELEASED_BINARY_FILE = "https://hotline.retro-os.live/$MOBIUS_BIN";
my $WGET_COMMAND = "/usr/bin/wget --timestamping";
my $MASTERMD5 = "";
my $MD5SUM = "/usr/bin/md5sum -b";
my $INPUT_FILE = "";
# Locals
sub GetLocalVersion
{
system("$MD5SUM $LOCALMOBIUS > /tmp/md5sum");
open my $INPUT_FILE, "</tmp/md5sum" || die "Can't open /tmp/md5sum: $!\n";
while (<$INPUT_FILE>)
{
($LOCALMD5, my $foo) = split(" ", $_);
}
close ($INPUT_FILE);
# print "Digest is '$LOCALMD5'\n";
}
sub SetLocalVersion
{
open my $OUTPUT_FILE, ">$LOCALVERSIONFILE" || die "Can't open $LOCALVERSIONFILE: $!\n";
print ($OUTPUT_FILE "$LOCALMD5\n");
close ($OUTPUT_FILE);
}
sub GetMasterVersion
{
# Download version for the master server
chdir "/tmp";
print "Getting master version:\n";
system ("$WGET_COMMAND $RELEASED_VERSION_FILE > /dev/null 2>\&1");
open my $INPUT_FILE, "<$MASTER_FILE" || die "Can't open $MASTER_FILE: $!\n";
while (<$INPUT_FILE>)
{
($MASTERMD5, my $foo) = split(" ", $_);
}
close ($INPUT_FILE);
# print "Mtime is '$MASTERMD5'\n";
}
sub KillServer
{
system("killall mobius-hotline-server");
}
sub DownloadMasterFile
{
chdir ("/tmp");
system ("$WGET_COMMAND $RELEASED_BINARY_FILE > /dev/null 2>\&1");
#print "$WGET_COMMAND $RELEASED_BINARY_FILE\n";
print "copying $MOBIUS_BIN to $MOBIUSFOLDER\n";
system ("mv $MOBIUS_BIN $MOBIUSFOLDER");
system ("chmod a+rx $MOBIUSFOLDER/$MOBIUS_BIN");
print "File Downloaded\n";
}
print "check4update v$VERSION\n";
print "====================\n";
GetLocalVersion();
if (! -f $LOCALVERSIONFILE)
{
print "Local version file ($LOCALVERSIONFILE) does not exist - scanning existing file.\n";
SetLocalVersion();
}
if ($LOCALMD5 eq "")
{
print "MD5 was invalid\n";
exit (1);
}
print "Checking master mobius:\n";
GetMasterVersion();
if ($LOCALMD5 eq $MASTERMD5)
{
print "Local version up to date\n";
exit (0);
}
print "local ver = $LOCALMD5, master ver $MASTERMD5\n";
DownloadMasterFile();
KillServer();
exit (0);