From 56a59a959ce8d9f0054410a6ca4a092d5720e256 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Wed, 15 Jul 2015 12:58:59 +0000 Subject: [PATCH] Some small updates and new Timer class --- Zutil.jar | Bin 6156716 -> 6160179 bytes src/zutil/Timer.java | 56 +++++++++ src/zutil/net/http/pages/HttpFilePage.java | 5 +- src/zutil/osal/app/linux/AptGet.java | 126 +++++++++++++++++++-- 4 files changed, 178 insertions(+), 9 deletions(-) create mode 100644 src/zutil/Timer.java diff --git a/Zutil.jar b/Zutil.jar index 91440bc688222233c49a254892817f7020fd32f5..698715af5f9fbf4f44081f9e4246114f1f0d687d 100644 GIT binary patch delta 12607 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%0D8i7MWycaBvAkyRsi8Mi>V)}sUDD3jeJ`gYp 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
"); } + else { + throw new SecurityException("User not allowed to view folder: root=" + resource_root.getAbsolutePath()); + } } else { deliverFile(file, out); diff --git a/src/zutil/osal/app/linux/AptGet.java b/src/zutil/osal/app/linux/AptGet.java index 634bf672..73877b61 100644 --- a/src/zutil/osal/app/linux/AptGet.java +++ b/src/zutil/osal/app/linux/AptGet.java @@ -22,9 +22,11 @@ package zutil.osal.app.linux; +import zutil.Timer; import zutil.log.LogUtil; import zutil.osal.OSAbstractionLayer; +import java.util.HashMap; import java.util.logging.Logger; /** @@ -33,21 +35,129 @@ import java.util.logging.Logger; public class AptGet { public static final Logger log = LogUtil.getLogger(); - private static long updateTimestamp; + private static Timer updateTimer = new Timer(1000*60*5); // 5min timer + private static Timer packageTimer = new Timer(1000*60*5); // 5min timer + private static HashMap packages = new HashMap<>(); + + + public static synchronized void update(){ + // Only run every 5 min + if(updateTimer.hasTimedOut()){ + OSAbstractionLayer.runCommand("apt-get update"); + updateTimer.start(); + } + } public static void install(String pkg) { update(); OSAbstractionLayer.runCommand("apt-get install " + pkg); - } - - public static void update(){ - // Only run every 5 min - if(updateTimestamp + 1000*60*5 >System.currentTimeMillis()){ - OSAbstractionLayer.runCommand("apt-get update"); - } + packageTimer.reset(); } public static void purge(String pkg) { OSAbstractionLayer.runCommand("apt-get --purge remove " + pkg); + packageTimer.reset(); + } + + + public static Package getPackage(String pkg){ + updatePackages(); + return packages.get(pkg); + } + public static synchronized void updatePackages(){ + // Only run every 5 min + if(packageTimer.hasTimedOut()){ + String[] output = OSAbstractionLayer.runCommand("dpkg --list"); + for(int i=5; i