package org.freertr.util; import java.io.File; import java.util.ArrayList; import java.util.List; import org.freertr.cfg.cfgAll; import org.freertr.cfg.cfgInit; import org.freertr.pipe.pipeShell; import org.freertr.prt.prtRedun; import org.freertr.serv.servOpenflow; import org.freertr.serv.servP4lang; import org.freertr.serv.servStack; import org.freertr.user.userHelping; /** * version utils * * @author matecsaba */ public class version { private version() { } /** * 9.1.1 */ public final static String verNum = verCore.year + "." + verCore.month + "." + verCore.day; /** * v9.1.1-rel */ public final static String VerNam = "v" + verNum + verCore.state; /** * ros v9.1.1-rel */ public final static String namVer = verCore.name + " " + VerNam; /** * ros/9.1.1-rel */ public final static String usrAgnt = verCore.name + "/" + verNum + verCore.state; /** * ros v9.1.1-rel, done by me. */ public final static String headLine = namVer + ", done by " + verCore.author + "."; /** * mimetype text */ public final static String[] mimetypes = { // text "html text/html", "htm text/html", "css text/css", "rtf text/richtext", "text text/plain", "txt text/plain", "csv text/csv", "md text/markdown", "* text/plain", // image "webp image/webp", "gif image/gif", "jpeg image/jpeg", "jpg image/jpeg", "tiff image/tiff", "tif image/tiff", "bmp image/bmp", "png image/png", "svg image/svg+xml", "ico image/x-icon", "pbm image/x-portable-bitmap", "pgm image/x-portable-graymap", "pnm image/x-portable-anymap", "ppm image/x-portable-pixmap", "xbm image/x-xbitmap", "xpm image/x-xpixmap", // video "webm video/webm", "mjpeg video/x-motion-jpeg", "avi video/msvideo", "mov video/quicktime", "qt video/quicktime", "mpeg video/mpeg", "mpg video/mpeg", "mp4 video/mp4", "mkv video/x-matroska", "3gp video/3gpp", "3g2 video/3gpp2", "ogv video/ogg", // audio "weba audio/weba", "aif audio/x-aiff", "aiff audio/x-aiff", "wav audio/wav", "midi audio/midi", "mid audio/midi", "rmi audio/midi", "ram audio/x-pn-realaudio", "rpm audio/x-pn-realaudio-plugin", "ra audio/x-realaudio", "rm audio/x-pn-realaudio", "mp3 audio/mpeg", "oga audio/ogg", "flac audio/flac", "aac audio/aac", // application "bin application/octet-stream", "jar application/java-archive", "doc application/msword", "docx application/msword", "dvi application/x-dvi", "eps application/postscript", "ps application/postscript", "gz application/x-gzip", "bz2 application/x-bzip2", "js application/javascript", "latex application/x-latex", "lzh application/x-lzh", "pdf application/pdf", "epub application/epub+zip", "swf application/x-shockwave-flash", "tar application/tar", "tcl application/x-tcl", "tex application/x-tex", "tgz application/x-gzip", "zip application/zip", "xml application/xml", "ogg application/ogg", // wireless application "wml text/vnd.wap.wml", "wbmp image/vnd.wap.wbmp" }; /** * get show logo text * * @param head needed extra lines * @return list */ public static List shLogo(int head) { List sa = new ArrayList(); if ((head & 0x01) != 0) { sa.add(""); } if ((head & 0x02) != 0) { sa.add(headLine); } if ((head & 0x04) != 0) { sa.add(""); } if ((head & 0x08) != 0) { array2list(sa, verCore.logo); } if ((head & 0x10) != 0) { sa.add(""); } if ((head & 0x20) != 0) { sa.add(headLine); } if ((head & 0x40) != 0) { sa.add(""); } if ((head & 0x80) != 0) { array2list(sa, verCore.license); } if ((head & 0x100) != 0) { sa.add(""); } if ((head & 0x200) != 0) { sa.add(verNum); } if ((head & 0x400) != 0) { sa.add(bits.time2str(cfgAll.timeZoneName, getFileDate(), 3)); } if ((head & 0x800) != 0) { sa.add(bits.time2str(cfgAll.timeZoneName, getFileDate(), 4)); } if ((head & 0x1000) != 0) { sa.add(usrAgnt); } if ((head & 0x2000) != 0) { sa.add(verCore.homeUrl); } if ((head & 0x4000) != 0) { array2list(sa, verCore.quotes); } return sa; } /** * put array to list * * @param trg target * @param src source */ public final static void array2list(List trg, String[] src) { for (int i = 0; i < src.length; i++) { trg.add(src[i]); } } /** * generate help list * * @param hl help to update * @param beg beginning */ public static void secretHelp(userHelping hl, int beg) { for (int i = 0; i < verCore.secrets.length; i++) { String a = verCore.secrets[i][0]; hl.add(null, beg + " . " + a + " sh0w m30www s0m30www " + a); } } /** * find in secret list * * @param a string to find * @return found, -1 if nothing */ public static int secretFind(String a) { for (int i = 0; i < verCore.secrets.length; i++) { if (a.equals(verCore.secrets[i][0])) { return i; } } return -1; } /** * get show secret text * * @param typ type of secret * @return list */ public static List secretGet(int typ) { ArrayList l = new ArrayList(); array2list(l, verCore.secrets[typ]); l.remove(0); return l; } /** * get show platform text * * @return list */ public static List shPlat() { List sa = new ArrayList(); sa.add(headLine); sa.add(""); Runtime rt = Runtime.getRuntime(); sa.add("name: " + cfgAll.hostName + ", prnt: " + cfgInit.prntNam + ", hwid: " + cfgInit.hwIdNum + " hwsn: " + cfgInit.hwSnNum); sa.add("hwfw: " + getHWfwd1liner()); sa.add("uptime: since " + bits.time2str(cfgAll.timeZoneName, cfgInit.started + cfgAll.timeServerOffset, 3) + ", for " + bits.timePast(cfgInit.started)); sa.add("pid: " + pipeShell.myProcessNum() + ", reload: " + bits.lst2str(bits.txt2buf(myReloadFile()), " ")); sa.add("hwc: " + cfgInit.cfgFileHw + ", swc: " + cfgInit.cfgFileSw); sa.add("class: v" + getProp("java.class.version") + " @ " + getFileName() + ", rwp: " + getRWpath()); sa.add("cpu: " + getCPUname() + ", mem: free=" + bits.toUser(rt.freeMemory()) + ", max=" + bits.toUser(rt.maxMemory()) + ", used=" + bits.toUser(rt.totalMemory())); long l = pipeShell.getKernelUptime(); sa.add("host: " + getKernelName() + ", since " + bits.time2str(cfgAll.timeZoneName, l + cfgAll.timeServerOffset, 3) + ", for " + bits.timePast(l)); sa.add("java: " + getJavaVer("java") + " @ " + getProp("java.home")); sa.add("jspec: " + getJavaVer("java.specification")); sa.add("vm: " + getVMname()); sa.add("vmspec: " + getJavaVer("java.vm.specification")); return sa; } /** * get hardware forwarder * * @return offload info */ public static String getHWfwd1liner() { servStack stk = cfgAll.dmnStack.get(0); if (stk != null) { return prtRedun.getShGenOneLiner() + stk.getShGenOneLiner(); } servP4lang p4l = cfgAll.dmnP4lang.get(0); if (p4l != null) { return prtRedun.getShGenOneLiner() + p4l.getShGenOneLiner(); } servOpenflow ovs = cfgAll.dmnOpenflow.get(0); if (ovs != null) { return prtRedun.getShGenOneLiner() + ovs.getShGenOneLiner(); } return prtRedun.getShGenOneLiner() + "swonly"; } /** * get java executable * * @return path of jvms */ public static String getJvmExec() { return getProp("java.home") + "/bin/java"; } private static String getJavaVer(String s) { String vnd = getProp(s + ".vendor"); String nam = getProp(s + ".name"); String ver = getProp(s + ".version"); if (nam != null) { nam = " (" + nam + ")"; } else { nam = ""; } return vnd + nam + " v" + ver; } private static String getProp(String s) { try { return System.getProperty(s); } catch (Exception e) { return "?"; } } /** * get archive date * * @return date of jar */ public static long getFileDate() { return new File(getFileName()).lastModified(); } /** * get archive name * * @return pathname jar filename */ public static String getFileName() { return getProp("java.class.path"); } /** * get archive path name * * @return filename without extension */ public static String myPathName() { String s = getFileName(); int i = s.lastIndexOf("."); int o = s.lastIndexOf("/"); if (o < 0) { o = 0; } if (i < o) { return "rtr"; } return s.substring(0, i); } /** * get read-write path name * * @return path */ public static String getRWpath() { String a = cfgInit.rwPath; if (a == null) { a = cfgInit.cfgFileSw; } if (a == null) { a = cfgInit.cfgFileHw; } if (a == null) { a = "./"; } int i = a.lastIndexOf("/"); if (i < 0) { a = "./"; } else { a = a.substring(0, i + 1); } return a; } /** * get reload file name * * @return filename without path */ public static String myReloadFile() { return getRWpath() + "reload.log"; } /** * get errors file name * * @return filename without path */ public static String myErrorFile() { return getRWpath() + "errors.log"; } /** * get memory info * * @return memory */ public static String getMemoryInfo() { Runtime rt = Runtime.getRuntime(); return bits.toUser(rt.totalMemory()) + "/" + bits.toUser(rt.maxMemory()); } /** * get kernel name * * @return name of kernel */ public static String getKernelName() { return getProp("os.name").trim() + " v" + getProp("os.version").trim(); } /** * get vm name * * @return name of vm */ public static String getVMname() { return getJavaVer("java.vm").trim(); } /** * get cpu name * * @return name of cpu */ public static String getCPUname() { return (Runtime.getRuntime().availableProcessors() + "*" + getProp("os.arch")).trim(); } }