pax_global_header00006660000000000000000000000064126551607700014523gustar00rootroot0000000000000052 comment=079c65006b61b559271350dc2ee6912a601aee11 phpsysinfo-3.2.5/000077500000000000000000000000001265516077000137345ustar00rootroot00000000000000phpsysinfo-3.2.5/.gitignore000066400000000000000000000000171265516077000157220ustar00rootroot00000000000000phpsysinfo.ini phpsysinfo-3.2.5/.htaccess000066400000000000000000000004301265516077000155270ustar00rootroot00000000000000 # Deny all requests from Apache 2.0-2.2 order deny,allow deny from all # Deny all requests from Apache 2.4+ Require all denied phpsysinfo-3.2.5/.travis.yml000066400000000000000000000003221265516077000160420ustar00rootroot00000000000000language: php php: - 5.2 - 5.3 - 5.4 - 5.5 - 5.6 - 7.0 script: for i in `find . -name "*.php"`; do php -l $i; done; branches: only: - "master" - "stable" notifications: email: false phpsysinfo-3.2.5/CHANGELOG.md000066400000000000000000000220131265516077000155430ustar00rootroot00000000000000Changelog of phpSysInfo ======================= http://phpsysinfo.sourceforge.net/ phpSysInfo 3.2.5 ---------------- - [UPD] jQuery 2.2.0 and jQuery 1.12.0 - [ADD] Show network interfaces infos for NetBSD and OpenBSD - [ADD] SHOW_NETWORK_INFOS_EXPANDED option - [ADD] SHOW_MEMORY_INFOS_EXPANDED option - [ADD] QTS, OpenMamba and HipServ to detected distros - [ADD] SNMPups - monitoring UPS via SNMP - [NEW] reloading plugins also for frontend "bootstrap" - [NEW] Network speed info on WinNT, Linux, Android, Darwin, NetBSD, OpenBSD and FreeBSD - [NEW] Coretemp monitoring also on Linux - [NEW] QTSsnmp - SNMP sensors monitoring for QTS Linux - [NEW] Hwmon - sensors monitoring for Linux - [NEW] SpeedFan - sensors monitoring for WinNT - [NEW] Separate configuration sections for motherboard monitoring sensors programs - [NEW] List of IP addresses of clients authorized to run phpSysInfo 3.2.4 ---------------- - [ADD] Solus to detected distros - [ADD] Uprecords plugin - MAX_ENTRIES option - maximum number of entries to show - [UPD] Refreshing status of all plugins for dynamic mode - [UPD] bootstrap 3.3.6 - [NEW] language and template selection also for frontend "bootstrap" - [FIX] PHP 7 class Error issues phpSysInfo 3.2.3 ---------------- - [UPD] jQuery 2.1.4 and jQuery 1.11.3 - [UPD] bootstrap 3.3.5 - [NEW] I2C devices list on Android and Linux - [ADD] blue template phpSysInfo 3.2.2 ---------------- - [UPD] bootstrap 3.3.4 - [NEW] Thunderbolt (TB) devices list on Darwin - [ADD] cleansyn template - [ADD] PS plugin - support for Android - [ADD] PS plugin - SHOW_KTHREADD_EXPANDED option - [ADD] Qubes and HandyLinux to detected distros - [FIX] PS plugin - fixed display of the processes tree phpSysInfo 3.2.1 ---------------- - [UPD] bootstrap 3.3.2 - [NEW] REFRESH parameter also for frontend "bootstrap" - [ADD] pfSense to detected distros - [FIX] Percentage memory usage phpSysInfo 3.2.0 ---------------- - [UPD] jQuery 2.1.3 and jQuery 1.11.2 - [NEW] Frontend "bootstrap" with Bootstrap3 and Transparency (JSON) - [ADD] Catalan Translation ca.xml - [ADD] Mer (core of Sailfish OS) and Tizen to detected distros - [ADD] ThermalZone sensor support for Linux and Android - [ADD] Temperature, voltage and current sensor for Banana Pi - [UPD] German Translation de.xml phpSysInfo 3.1.17 ---------------- - [UPD] BAT plugin - capacity unit, cycle count, FreeBSD support - [UPD] Brazilian Portuguese Translation pt-br.xml - [ADD] Show the number of processes on Haiku - [ADD] ThermalZone sensor support for WinNT - [ADD] Tanglu to detected distros - [ADD] Android and OS X version name - [FIX] Fixed display of treetables phpSysInfo 3.1.16 ---------------- - [ADD] Show the number of processes - [ADD] Lunar and 4MLinux to detected distros phpSysInfo 3.1.15 ---------------- - [ADD] CoreOS and Pisi Linux to detected distros - [ADD] pmset - UPS support on Darwin (thanks to pelletierr) - [ADD] lspci support on Darwin - [ADD] SHOW_CPULIST_EXPANDED option - [ADD] lxc/docker detection on Linux - [ADD] ability to hide all disks and all network interfaces - [FIX] Small CSS fix - [UPD] Memory informations on Darwin systems - [UPD] BAT plugin - Darwin support phpSysInfo 3.1.14 ---------------- - [ADD] FreeIPMI sensor program support - [ADD] IPMIutil sensor program support - [ADD] PowerSoftPlus (EVER) UPS program support - [ADD] Line frequency for the UPS info - [ADD] SENSOR_EVENTS option - show events of sensors - [ADD] HIDE_RAID_DEVICES option for plugins MDStatus and DMRaid - list of RAID devices to hide - [ADD] idash template phpSysInfo 3.1.13 ---------------- - [UPD] jQuery 2.1.1 and jQuery 1.11.1 - [UPD] Romanian Translation ro.xml - [ADD] SHOW_CPUINFO_EXPANDED option - [ADD] Machine detection on WINNT, Linux, Android and Darwin systems phpSysInfo 3.1.12 ---------------- - [ADD] GoboLinux, UltimateEdition, BOSS, Canaima, VortexBox, KaOS and NixOS to detected distros - [ADD] OpenHardwareMonitor sensor program support - [ADD] Possibility to define multiple UPS_PROGRAM - [ADD] UPS_NUT_LIST option - [FIX] Fixed incorrect network usage on FreeBSD - [UPD] SMART plugin - Smartctl --device option value setting method phpSysInfo 3.1.11 ---------------- - [ADD] Add Access-Control-Allow-Origin on XML (JSON) interface for Ajax Load PR#47 - [ADD] Generations Linux and SliTaz to detected distros - [ADD] IPMI and LMSensors currents information - [ADD] Plugin IPMIInfo - added powers and currents values - [ADD] Partial support of QNX - [FIX] Reduce execution time on Linux systems when showing load average PR#47 phpSysInfo 3.1.10 ---------------- - [ADD] Zenwalk and Raspbian to detected distros - [FIX] /etc/os-release Linux distro detection phpSysInfo 3.1.9 ---------------- - [NEW] New plugin DMRaid - software raid status - [ADD] Calculate, Tails, SMEServer, Semplice, SolydXK, Parsix, RedFlag, Amazon, Korora, OpenMandriva, SteamOS, ROSA Enterprise Server and ROSA Desktop Fresh to detected distros - [UPD] Rebuilding of the Linux distribution detection - [UPD] jQuery 2.1.0 and jQuery 1.11.0 phpSysInfo 3.1.8 ---------------- - [ADD] Add printers messages in the XML output - [ADD] PSStatus plugin - added optional regular expression search in the process name - [ADD] RedHatEnterpriseClient distro icon #40 - [ADD] Hebrew Translation he.xml - [FIX] BAT plugin - fix for old and new kernel /proc/acpi and /sys/class/power_supply - [UPD] LMSensors name for Mac hardware sensors phpSysInfo 3.1.7 ---------------- - [ADD] Ksplice support for Linux - [ADD] Show CPU frequency max and min for Darwin (Mac OS X) - [ADD] Show System Language and Code Page on Darwin (Mac OS X) - [ADD] Show network interfaces infos for Minix and SunOS - [ADD] SMS, gNewSense and Vector to detected distros - [ADD] LMSensors power information - [ADD] Battery installation date for the UPS info - [UPD] Network interfaces infos and filesystems infos for FreeBSD - [UPD] Updated support of SunOS - [UPD] Memory informations on Darwin systems - [UPD] BAT plugin - updated Linux support - [UPD] Updated HWSensors - OpenBSD sensor program phpSysInfo 3.1.6 ---------------- - [ADD] Porteus, Peppermint, Manjaro, Netrunner and Salix to detected distros - [ADD] Show CPU frequency max for WINNT - [ADD] Show network interfaces infos for Darwin (Mac OS X) - [UPD] SNMPPInfo plugin, ink level for some of the data - [UPD] jQuery 2.0.3 and jQuery 1.10.2 - [UPD] Russian Translation ru.xml - [UPD] BAT plugin - WINNT support - [SEC] Fix JSONP phpSysInfo 3.1.5 ---------------- - [ADD] Possibility to define multiple SENSOR_PROGRAM - [ADD] Added display of temperature and fan speed for IPMI sensor program - [ADD] openSUSE and Eisfair to detected distros - [ADD] Portuguese Translation pt-pt.xml - [FIX] Fixed incorrect display of the minimum fan speed - [FIX] Fix recovery detection of RAID arrays on debian systems #18 phpSysInfo 3.1.4 ---------------- - [ADD] Option for reading the results of functions executeProgram() and rfts() from log - [ADD] Show CPU frequency max and min for variable speed processors for Linux and Android - [ADD] Filesystem usage warning on defined threshold FS_USAGE_THRESHOLD - [UPD] BAT plugin - added temperature, condition and type of battery, Android support - [UPD] jQuery 2.0.2 and jQuery 1.10.1 phpSysInfo 3.1.3 ---------------- - [ADD] IPFire, Sabayon, PearOS, ClearOS, Frugalware, Fuduntu, Foresight, Tinycore, ALT Linux, ROSA Desktop Marathon and RedHatEnterpriseServer to detected distros - [UPD] Added "username" to filtered mount credentials - [UPD] jQuery 2.0 coexistent with jQuery 1.9.1 for old Internet Explorer browser versions (IE 6/7/8) - [FIX] proc_open() malfunction on some PHP for Android by replacing by popen() - [FIX] Run php-cs-fixer on php files (PSR-2 fixer) phpSysInfo 3.1.2 ---------------- - [ADD] Tempsensor and CPU frequency for Raspberry Pi (thanks to hawkeyexp) - [ADD] Linaro to detected distros - [ADD] Option for logging of functions executeProgram() and rfts() - [ADD] Add support of JSONP - [FIX] Incorrect display of chunk size for the plugin mdstatus for some results phpSysInfo 3.1.1 ---------------- - [ADD] SolusOS, Deepin and antiX to detected distros - [ADD] Simplified Chinese translation - [UPD] jQuery 1.9.1 phpSysInfo 3.1.0 ---------------- - [NEW] Configuration moved from config.php and subdirs of "plugins" to one file phpsysinfo.ini - [ADD] Turbolinux, Oracle Linux, CloudLinux, PCLinuxOS, StartOS, Trisquel, CRUX, Slax, Pear, Android, Zorin and elementary OS to detected distros - [ADD] Show System Language and Code Page on Linux, Haiku and WINNT - [ADD] Minor support of ReactOS - [ADD] apcupsd-cgi support (thanks to duhast) - [UPD] Plugin ipmi renamed to IPMIInfo and Update-Notifier to UpdateNotifier (to avoid name conflicts) - [UPD] Case-insensitive for most of parameters - [UPD] Detection of Mac OS X and Linux distribution - [UPD] CPU detection on Mac OS X - [FIX] Fixed UTF8 encoding for Linux - [FIX] SMART plugin doesn't display for some results - [FIX] Incorrect display of mountpoint on Mac OS X phpsysinfo-3.2.5/COPYING000066400000000000000000000431601265516077000147730ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. phpsysinfo-3.2.5/Dockerfile000066400000000000000000000014451265516077000157320ustar00rootroot00000000000000# phpSysInfo # VERSION 2 FROM ubuntu:14.04 MAINTAINER phpSysInfo # Update sources RUN echo "deb http://archive.ubuntu.com/ubuntu trusty main universe" > /etc/apt/sources.list RUN apt-get update RUN apt-get install -y apache2 php5 git pciutils RUN git clone https://github.com/phpsysinfo/phpsysinfo.git /var/www/html/phpsysinfo #RUN cp /var/www/html/phpsysinfo/phpsysinfo.ini.new /var/www/html/phpsysinfo/phpsysinfo.ini RUN cat /var/www/html/phpsysinfo/phpsysinfo.ini.new | sed 's/^LOAD_BAR=false/LOAD_BAR=true/' >/var/www/html/phpsysinfo/phpsysinfo.ini ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 ENV APACHE_LOCK_DIR /var/lock/apache2 ENV APACHE_PID_FILE /var/run/apache2/apache2.pid CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"] EXPOSE 80 phpsysinfo-3.2.5/README.md000066400000000000000000000075251265516077000152240ustar00rootroot00000000000000phpSysInfo ============== * Copyright (c), 1999-2008, Uriah Welcome (precision@users.sf.net) * Copyright (c), 1999-2009, Michael Cramer (bigmichi1@users.sf.net) * Copyright (c), 2007-2008, Audun Larsen (xqus@users.sf.net) * Copyright (c), 2007-2015, Erkan Valentin * Copyright (c), 2009-2016, Mieczyslaw Nalewaj (namiltd@users.sf.net) * Copyright (c), 2010-2012, Damien Roth (iysaak@users.sf.net) CURRENT TESTED PLATFORMS ------------------------ - Linux 2.6.x - FreeBSD 7.x - OpenBSD 2.8+ - NetBSD - DragonFly - HP-UX - Darwin/OSX - Windows 2000 / XP / 2003 / Vista / 2008 / 7 / 2011 / 2012 / 8 / 8.1 / 10 - Android - > PHP 5.2 or later (partial PHP 5.1.3 compatibility) - With PCRE, XML, XSL, MBString and SimpleXML extension. ####Platforms currently in progress: - Haiku - Minix - SunOS - ReactOS - IBM AIX - QNX If your platform is not here try checking out the mailing list archives or the message boards on SourceForge. INSTALLATION AND CONFIGURATION ------------------------------ ####Typical installation Just decompress and untar the source (which you should have done by now, if you're reading this...), into your webserver's document root. There is a configuration file called phpsysinfo.ini.new. If this a brand new installation, you should copy this file to phpsysinfo.ini and edit it. - make sure your `php.ini` file's `include_path` entry contains "." - make sure your `php.ini` has `safe_mode` set to 'off'. phpSysInfo require php-xml extension. Please keep in the mind that because phpSysInfo requires access to many files in `/proc` and other system binary you **MUST DISABLE** `php's safe_mode`. Please see the PHP documentation for information on how you can do this. That's it. Restart your webserver (if you changed php.ini), and voila. ####Docker container installation - sudo docker build -t phpsysinfo github.com/phpsysinfo/phpsysinfo - sudo docker run -i -p 8080:80 -t phpsysinfo - go to http://localhost:8080/phpsysinfo/ KNOWN PROBLEMS -------------- - phpSysInfo is not compatible with SELinux Systems - small bug under FreeBSD with memory reporting PLATFORM SPECIFIC ISSUES ------------------------ ####Windows with IIS On Windows systems we get our informations through the WMI interface. If you run phpSysInfo on the IIS webserver, phpSysInfo will not connect to the WMI interface for security reasons. At this point you MUST set an authentication mechanism for the directory in the IIS admin interface for the directory where phpSysInfo is installed. Then you will be asked for an user and a password when opening the page. At this point it is necassary to log in with an user that will be able to connect to the WMI interface. If you use the wrong user and/or password you might get an "ACCESS DENIED ERROR". SENSOR RELATED INFORMATION --------------------------- ####MBM5 Make sure you set MBM5 Interval Logging to csv and to the data directory of phpSysInfo. The file must be called MBM5. Also make sure MBM5 doesn't add symbols to the values. This is a Quick MBM5 log parser, need more csv logs to make it better. WHAT TO DO IF IT DOESN'T WORK ----------------------------- First make sure you've read this file completely, especially the "INSTALLATION AND CONFIGURATION" section. If it still doesn't work then you can: Submit a bug on SourceForge (preferred) (http://sourceforge.net/projects/phpsysinfo/) Ask for help in the forum (http://sourceforge.net/projects/phpsysinfo/) ***!! If you have any problems, please set `DEBUG` to true in `phpsysinfo.ini` and include any error messages in your bug report / help request !!*** OTHER NOTES ----------- If you have a great idea or want to help out, just drop by the project page at SourceForge (http://sourceforge.net/projects/phpsysinfo/). LICENSING --------- This program and all associated files are released under the GNU Public License, see [COPYING](COPYING) for details. phpsysinfo-3.2.5/README_PLUGIN.md000066400000000000000000000154671265516077000163060ustar00rootroot00000000000000phpSysInfo 3.1 - http://phpsysinfo.sourceforge.net/ =================================================== Document written by Michael Cramer (bigmichi1 at sourceforge.net) !!Please read if you want to develop a plugin to understand our plugin system!! Plugins ------- Beginning with phpSysInfo 3.0, phpSysInfo can be extended by Plugins. So here is a description that a developer of a plugin must take care of. Plugins can be enabled through the `phpsysinfo.ini` in the PLUGINS variable. The name of the plugin is essential for the function of the plugin system. Lets say you write a plugin with the name 'hdd_stats', then this name is added to the PLUGINS variable in `phpsysinfo.ini`. And this is also then the name which is everywhere in the plugin system used, like creating the object, locate the needed files and so on. So if the name is now specified, phpSysInfo needs a special directory structure to find the needed files. The directory structure for the example `hdd_stats` plugin can be seen here: ``` -+ phpSysInfo root | +---+ plugins (directory in that plugins are installed) | | | +---+ hdd_stats (the real plugin directory, must have the same name like | | | the plugin named in PLUGINS, else it won't be found) | | | | | +---+ js (directory in which the needed JavaScript file is located, | | | | to generate the html output out of the xml) | | | # hdd_stats.js (the js file must have the same name, like the | | | plugin in PSI_PLUGINS with the extension js) | | +---+ css (directory in which the needed style sheet information are | | | | located, can exists, but it's up to the author) | | | # hdd_stats.css (the css file must have the same name, like the | | | plugin in PSI_PLUGINS with the extension css) | | +---+ lang (directory where translations for the plugin are located) | | | | | | | # en.xml (at least an english translation file must exist) | | | | | # class.hdd_stats.inc.php (this is the core file of the plugin, | | name must consists of 'class' + | | name from PSI_PLUGINS + '.inc.php') ``` other files or directorys can be included in the plugin directory, but then its up to the developer to include them in the plugin. So it might be possible to have a 'gfx' directory in which some pics are located that are used in the output. If the directory structure is build up, then it's time to start programming. Files ----- An example implementation is the mdstat plugin, which is shipped with phpSysInfo * en.xml - at least this file must exist to get the translation working, and the the first entry in this file is normally the headline of the plugin. So one translation migth exists everytime. Other translation files are also in the same directory like the `en.xml` file. The id's specified in the translation file SHOULD have the following look `plugin_hdd_status_001`. First we say that this is a plugin translation, then the name of plugin and at last a increasing number for each translation. Please create your id's in that way, so that other plugins don't redefine your translations. At the time of writing this, there is no check to verify the id's, so be carfull. * hdd_stats.css - here can all custom style sheet informations written down. The names of the id's and classes SHOULD also begin, like the translation id's, with `'plugin_' + pluginname`. If thats not the case it might be possible that another plugin is overwriting your css definitions. * class.hdd_stats.inc.php - this file MUST include a class with the plugin name and also this class MUST extend the 'psi_plugin' class. A check that such a class exist and also extends 'psi_plugin' will be included in the near future. And if the check fails the plugin won't be loaded. The psi_plugin class checks the existens of the js and the en.xml files. Also an extra configuration of the plugin is loaded automatically from `phpsysinfo.ini`, if present. Through the extension of the psi_plugin class there is a need to include at least two public function. These are the execute() function and the xml() function. Other functions can be exist, that depends on the plugin needs or the author of the class. The execute() function is called to get the required information that should be later included in the xml file. The xml() function is called when the xml output should be generated. This function must return a simplexml object. This object is then included in another xml at the right position or as a standalone xml. So there is no need to do some special things, only create a xml object for the plugin. * hdd_stats.js - this file is called when the page is loaded. A block for the plugin is automatically created. This one is a div container with the id `'plugin_'+ pluginname ("plugin_hdd_stats")`. The entire output must be placed in that container. There is a helper function for creating the headline: buildBlock() that can be called. This function returns a string with the html code of the headline, this code can then be appended to the plugin block. The generated headline can provide a reload icon for an ajax request. Only the click action of that icon must be created. The id of this icon is `'reload_' + pluginname + 'Table' ("reload_hdd_statsTable")`. Everything that then is done to get the html output out of the xml is up to the author. To get the xml document the ajax request url is `'xml.php?plugin=' + pluginname (xml.php?plugin=hdd_stats)`. This xml includes only the xml from the plugin nothing more. The last two executed commands should/must be the translation call and the unhide of the filled div container. The translation function that needs to be called is named plugin_traslate() with one argument, that is the pluginname like in `PSI_PLUGINS (plugin_translate("hdd_stats");)`. To unhide the filled container call the .show() function of it. `$("plugin_" + pluginname).show() ($("plugin_hdd_stat").show())`. FAQ --- Q: Is the plugin system ready to use? A: It can be used, but it might change slightly in the future, if there are some special needs. SUGGESTION ---------- If anybody out there has some suggestions in improving the plugin system let us know. We are looking forward to get some feedback, suggestions and patches and more. Feel free to contact us on our website: http://phpsysinfo.sourceforge.net. $Id: README_PLUGIN 463 2011-04-19 17:34:41Z namiltd $ phpsysinfo-3.2.5/composer.json000066400000000000000000000013371265516077000164620ustar00rootroot00000000000000{ "name": "phpsysinfo/phpsysinfo", "description": "phpSysInfo is a customizable PHP Script that parses /proc, and formats information nicely. It will display information about system facts like Uptime, CPU, Memory, PCI devices, SCSI devices, IDE devices, Network adapters, Disk usage, and more.", "license": "GPL", "homepage": "http://phpsysinfo.github.io/phpsysinfo/", "require": { "php": ">=5.2.0", "ext-simplexml": "*", "ext-pcre": "*", "ext-xml": "*", "ext-dom": "*" }, "suggest": { "ext-mbstring": "Required for *nix non UTF-8 systems", "ext-com_dotnet": "Required for Windows environments", "ext-xsl": "Required for static mode" } } phpsysinfo-3.2.5/data/000077500000000000000000000000001265516077000146455ustar00rootroot00000000000000phpsysinfo-3.2.5/data/ModelTranslation.txt000066400000000000000000000177171265516077000207020ustar00rootroot00000000000000ADP2,1:Developer Transition Kit:Intel Pentium 4 iMac,1:iMac G3:PowerPC 750 (G3) iMac1,1:iMac G3*:PowerPC 750 (G3) iMac4,1:iMac Core Duo:Intel Core Duo T2400/T2500 iMac4,2:iMac Core Duo:Intel Core Duo T2400 iMac5,1:iMac Core 2 Duo:Intel Core 2 Duo T7200/T7400/T7600 iMac5,2:iMac Core 2 Duo:Intel Core 2 Duo T5600 iMac6,1:iMac Core 2 Duo:Intel Core 2 Duo T7400/T7600 iMac7,1:iMac Core 2 Duo/Extreme:Intel Core 2 Duo T7300/T7700/X7900 iMac8,1:iMac Core 2 Duo:Intel Core 2 Duo E8135/E8335/E8235/E8435 iMac9,1:iMac Core 2 Duo:Intel Core 2 Duo P7350/P7550/E8135/E8335/E8435 iMac10,1:iMac Core 2 Duo:Intel Core 2 Duo E7600/E8600 iMac10,2:iMac Core 2 Duo*:Intel Core 2 Duo E7500/E7600/E8600 iMac11,1:iMac Core i5/i7:Intel Core I5-750/I7-860 iMac11,2:iMac Core i3/i5:Intel Core I3-540/I3-550/I5-680 iMac11,3:iMac Core i3/i5/i7:Intel Core I3-550/I5-760/I5-680/I7-870 iMac12,1:iMac Core i3/i5/i7:Intel Core I3-2100/I5-2400S/I5-2500S/I5-2600S iMac12,2:iMac Core i5/i7:Intel Core I5-2400/I5-2500S/I7-2600 iMac13,1:iMac Core i3/i5/i7:Intel Core I3-3225/I5-3335S/I5-3470S/I7-3770S iMac13,2:iMac Core i5/i7:Intel Core I5-3470/I5-3470S/I7-3770 iMac14,1:iMac Core i5:Intel Core I5-4570R iMac14,2:iMac Core i5/i7:Intel Core I5-4570/I5-4670/I7-4771 iMac14,3:iMac Core i5/i7:Intel Core I5-4570S/I7-4770S M43ADP1,1:Development Mac Pro:Intel Xeon X5340 MacBook1,1:MacBook Core Duo:Intel Core Duo T2400/T2500 MacBook2,1:MacBook Core 2 Duo:Intel Core 2 Duo T5600/T7200/T7400 MacBook3,1:MacBook Core 2 Duo:Intel Core 2 Duo T7300/T7500 MacBook4,1:MacBook Core 2 Duo:Intel Core 2 Duo T8100/T8300 MacBook5,1:MacBook Core 2 Duo:Intel Core 2 Duo P7350/P8600 MacBook5,2:MacBook Core 2 Duo:Intel Core 2 Duo P7350/P7450 MacBook6,1:MacBook Core 2 Duo:Intel Core 2 Duo P7550 MacBook7,1:MacBook Core 2 Duo:Intel Core 2 Duo P8600 MacBookAir1,1:MacBook Air Core 2 Duo:Intel Core 2 Duo P7500/P7700 MacBookAir2,1:MacBook Air Core 2 Duo:Intel Core 2 Duo SL9300/SL9400/SL9600 MacBookAir3,1:MacBook Air Core 2 Duo:Intel Core 2 Duo SU9400/SU9600 MacBookAir3,2:MacBook Air Core 2 Duo:Intel Core 2 Duo SL9400/SL9600 MacBookAir4,1:MacBook Air Core i5/i7:Intel Core I5-2467M/I7-2677M MacBookAir4,2:MacBook Air Core i5/i7:Intel Core I5-2467M/I5-2557M/I7-2677M MacBookAir5,1:MacBook Air Core i5/i7:Intel Core I5-3317U/I7-3667U MacBookAir5,2:MacBook Air Core i5/i7:Intel Core I5-3427U/I7-3667U MacBookAir6,1:MacBook Air Core i5/i7:Intel Core I5-4250U/I5-4260U/I7-4650U MacBookAir6,2:MacBook Air Core i5/i7:Intel Core I5-4250U/I5-4260U/I7-4650U MacBookPro1,1:MacBook Pro Core Duo:Intel Core Duo L2400/T2400/T2500/T2600 MacBookPro1,2:MacBook Pro Core Duo:Intel Core Duo T2600 MacBookPro2,1:MacBook Pro Core 2 Duo:Intel Core 2 Duo T7600 MacBookPro2,2:MacBook Pro Core 2 Duo:Intel Core 2 Duo T7400/T7600 MacBookPro3,1:MacBook Pro Core 2 Duo:Intel Core 2 Duo T7500/T7700/T7800 MacBookPro4,1:MacBook Pro Core 2 Duo:Intel Core 2 Duo T8300/T9300/T9500 MacBookPro5,1:MacBook Pro Core 2 Duo:Intel Core 2 Duo P8600/T9400/T9550/T9600/T9800 MacBookPro5,2:MacBook Pro Core 2 Duo:Intel Core 2 Duo T9550/T9600/T9800/T9900 MacBookPro5,3:MacBook Pro Core 2 Duo:Intel Core 2 Duo P8800/T9600/T9900 MacBookPro5,4:MacBook Pro Core 2 Duo:Intel Core 2 Duo P8700 MacBookPro5,5:MacBook Pro Core 2 Duo:Intel Core 2 Duo P8400/P8700 MacBookPro6,1:MacBook Pro Core i5/i7:Intel Core I5-540M/I7-620M/I7-640M MacBookPro6,2:MacBook Pro Core i5/i7:Intel Core I5-520M/I5-540M/I7-620M/I7-640M MacBookPro7,1:MacBook Pro Core 2 Duo:Intel Core 2 Duo P8600/P8800 MacBookPro8,1:MacBook Pro Core i5/i7:Intel Core I5-2415M/I5-2435M/I7-2620M/I7-2640M MacBookPro8,2:MacBook Pro Core i7:Intel Core I7-2635QM/I7-2720QM/I7-2675QM/I7-2820QM/I7-2760QM/I7-2860QM MacBookPro8,3:MacBook Pro Core i7:Intel Core I7-2720QM/I7-2820QM/I7-2760QM/I7-2860QM MacBookPro9,1:MacBook Pro Core i7:Intel Core I7-3615QM/I7-3720QM/I7-3820QM MacBookPro9,2:MacBook Pro Core i5/i7:Intel Core I5-3210M/I7-3520M MacBookPro10,1:MacBook Pro Core i7:Intel Core I7-3615QM/I7-3635QM/I7-3720QM/I7-3740QM/I7-3820QM/I7-3840QM MacBookPro10,2:MacBook Pro Core i5/i7:Intel Core I5-3210M/I5-3230M/I7-3520M/I7-3540M MacBookPro11,1:MacBook Pro Core i5/i7:Intel Core I5-4258U/I5-4288U/I7-4558U MacBookPro11,2:MacBook Pro Core i7:Intel Core I7-4750HQ/I7-4850HQ/I7-4960HQ MacBookPro11,3:MacBook Pro Core i7:Intel Core I7-4850HQ/I7-4960HQ Macmini1,1:Mac mini Core Solo/Duo:Intel Core Duo T2300/T2400 Solo T1200 Macmini2,1:Mac mini Core 2 Duo:Intel Core 2 Duo T5600/T7200 Macmini3,1:Mac mini Core 2 Duo:Intel Core 2 Duo P7350/P8400/P7550/P8700/P8800 Macmini4,1:Mac mini Core 2 Duo:Intel Core 2 Duo P8600/P8800 Macmini5,1:Mac mini Core i5:Intel Core I5-2415M Macmini5,2:Mac mini Core i5/i7:Intel Core I5-2520M/I7-2620M Macmini5,3:Mac mini Core i7:Intel Core I7-2635QM Macmini6,1:Mac mini Core i5:Intel Core I5-3210M Macmini6,2:Mac mini Core i7:Intel Core i7 I7-3615QM/I7-3720QM MacPro1,1:Mac Pro Quad Core:Intel Xeon 5130/5150/5160 MacPro2,1:Mac Pro Eight Core:Intel Xeon X5365 MacPro3,1:Mac Pro Quad/Eight Core:Intel Xeon E5462/E5472/X5482 MacPro4,1:Mac Pro Quad/Eight Core:Intel Xeon E5520/E5550/X5570/W3520/W3540/W3580 MacPro5,1:Mac Pro Quad/Six/Eight/Twelve Core:Intel Xeon E5620/E5645/W3530/W3565/W3680/X5650/X5670/X5675 MacPro6,1:Mac Pro Quad/Six/Eight/Twelve Core:Intel Xeon E5-1620v2/E5-1650v2/E5-1680v2/E5-2697v2 PowerBook1,1:PowerBook G3:PowerPC 750 (G3) PowerBook2,1:iBook G3:PowerPC 750 (G3) PowerBook2,2:iBook G3:PowerPC 750cx (G3) PowerBook2,3:iBook G3*:PowerPC 750cx (G3) PowerBook2,4:iBook G3*:PowerPC 750cx (G3) PowerBook3,1:PowerBook G3:PowerPC 750 (G3) PowerBook3,2:PowerBook G4:PowerPC 7410 (G4) PowerBook3,3:PowerBook G4:PowerPC 7440 (G4) PowerBook3,4:PowerBook G4:PowerPC 7451 (G4) PowerBook3,5:PowerBook G4:PowerPC 7455 (G4) PowerBook4,1:iBook G3:PowerPC 750cx (G3) PowerBook4,2:iBook G3 600:PowerPC 750cx (G3) PowerBook4,3:iBook G3:PowerPC 750fx (G3) PowerBook5,1:PowerBook G4:PowerPC 7455 (G4) PowerBook5,2:PowerBook G4:PowerPC 7447 (G4) PowerBook5,3:PowerBook G4:PowerPC 7447 (G4) PowerBook5,4:PowerBook G4:PowerPC 7447a (G4) PowerBook5,5:PowerBook G4:PowerPC 7447a (G4) PowerBook5,6:PowerBook G4:PowerPC 7447a (G4) PowerBook5,7:PowerBook G4:PowerPC 7447a (G4) PowerBook5,8:PowerBook G4:PowerPC 7447a (G4) PowerBook5,9:PowerBook G4:PowerPC 7447a (G4) PowerBook6,1:PowerBook G4:PowerPC 7455 (G4) PowerBook6,2:PowerBook G4:PowerPC 7447 (G4) PowerBook6,3:iBook G4:PowerPC 7457 (G4) PowerBook6,4:PowerBook G4:PowerPC 7447a (G4) PowerBook6,5:iBook G4:PowerPC 7447a (G4) PowerBook6,7:iBook G4:PowerPC 7447a (G4) PowerBook6,8:PowerBook G4:PowerPC 7447a (G4) PowerMac1,1:Power Macintosh/Mac Server G3:PowerPC 750 (G3) PowerMac1,2:Power Macintosh G4:PowerPC 7400 (G4) PowerMac2,1:iMac G3:PowerPC 750 (G3) PowerMac2,2:iMac G3:PowerPC 750 (G3) PowerMac3,1:Power Macintosh/Mac Server G4:PowerPC 7400 (G4) PowerMac3,2:Power Macintosh/Mac Server G4*:PowerPC 7400 (G4) PowerMac3,3:Power Macintosh/Mac Server G4:PowerPC 7400 (G4) PowerMac3,4:Power Macintosh/Mac Server G4:PowerPC 7410 (G4) PowerMac3,5:Power Macintosh/Mac Server G4:PowerPC 7450/7455 (G4) PowerMac3,6:Power Macintosh/Mac Server G4:PowerPC 7455 (G4) PowerMac4,1:iMac G3:PowerPC 750/750cx (G3) PowerMac4,2:iMac G4:PowerPC 7441/7445 (G4) PowerMac4,4:eMac G4:PowerPC 7441/7445 (G4) PowerMac4,5:iMac G4:PowerPC 7445 (G4) PowerMac5,1:Power Macintosh G4 Cube:PowerPC 7400 (G4) PowerMac6,1:iMac G4:PowerPC 7445 (G4) PowerMac6,3:iMac G4:PowerPC 7445 (G4) PowerMac6,4:eMac G4:PowerPC 7447a (G4) PowerMac7,2:Power Macintosh G5:PowerPC 970 (G5) PowerMac7,3:Power Macintosh G5:PowerPC 970fx (G5) PowerMac8,1:iMac G5:PowerPC 970 (G5) PowerMac8,2:iMac G5:PowerPC 970 (G5) PowerMac9,1:Power Macintosh G5:PowerPC 970fx (G5) PowerMac10,1:Mac mini G4:PowerPC 7447a (G4) PowerMac10,2:Mac mini G4:PowerPC 7447a (G4) PowerMac11,2:Power Macintosh G5 Dual/Quad Core:PowerPC 970MP (G5) PowerMac12,1:iMac G5:PowerPC 970fx (G5) RackMac1,1:Xserve G4:PowerPC 7455 (G4) RackMac1,2:Xserve G4:PowerPC 7455 (G4) RackMac3,1:Xserve G5:PowerPC 970fx (G5) Xserve1,1:Xserve Xeon Quad Core:Intel Xeon 5130/5150/5160 Xserve2,1:Xserve Xeon Quad/Eight Core:Intel Xeon E5462/E5472 Xserve3,1:Xserve Xeon Nehalem Quad/Eight Core:Intel Xeon E5520/E5550/E5570 phpsysinfo-3.2.5/data/distros.ini000066400000000000000000000444471265516077000170520ustar00rootroot00000000000000; linux-distros.ini - Defines known linux distros for phpSysInfo. ; http://phpsysinfo.sourceforge.net/ ; $Id: distros.ini 709 2012-12-05 11:20:40Z namiltd $ ; [GoboLinux] Image = "Gobo.png" Name = "GoboLinux" Files = "/etc/GoboLinuxVersion" [SliTaz] Image = "SliTaz.png" Name = "SliTaz" Files = "/etc/slitaz-release" [eisfair project] Image = "Eisfair.png" Files = "/etc/eisfair-system" Files2 = "/etc/version" ;detected in "lsb_release -a" [TinyCore] Image = "TinyCore.png" Name = "Tiny Core Linux" Files = "/usr/share/doc/tc/release.txt" [Frugalware] Image = "Frugalware.png" Files = "/etc/frugalware-release" ;detected in "/etc/os-release" [antiX] Image = "antiX.png" Files = "/etc/antix-version" ;wrong in "/etc/os-release" Debian GNU/Linux ;wrong in "/etc/debian_version" Debian [IPFire] Image = "IPFire.png" ;detected in "/etc/system-release" [QTS] Image = "QTS.png" Name = "QTS" ;detected in "/etc/config/uLinux.conf" [4MLinux] Image = "4MLinux.png" Name = "4MLinux" Files = "/etc/4MLinux-version" [Lunar Linux] Image = "Lunar.png" ;detected in "/etc/lsb-release" ;detected in "/etc/os-release" [CRUX] Image = "Crux.png" Mode = "Execute" Files = "/usr/bin/crux" [Foresight] Image = "Foresight.png" ;detected in "/etc/distro-release" [Trustix] Image = "Trustix.png" Files = "/etc/trustix-release;/etc/trustix-version" [NixOS] Image = "NixOS.png" ;detected in "/etc/os-release" [FreeEOS] Image = "free-eos.png" Files = "/etc/eos-version" [generations] Image = "Generations.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" [Generations Linux] Image = "Generations.png" ;detected in "/etc/os-release" [Manjaro Linux] Image = "Manjaro.png" Files = "/etc/manjaro-release" ;detected in "/etc/os-release" [ManjaroLinux] Image = "Manjaro.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" [Arch Linux] Image = "Arch.png" Files = "/etc/arch-release" ;detected in "/etc/os-release" [Arch] Image = "Arch.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" [Cobalt] Image = "Cobalt.png" Files = "/etc/cobalt-release" [LinuxFromScratch] Image = "LFS.png" Files = "/etc/lfs-release" [Rubix] Image = "Rubix.png" Files = "/etc/rubix-version" [Tails] Image = "Tails.png" ;detected in "/etc/os-release" ;wrong in "/etc/debian_version" Debian [Tanglu] Image = "Tanglu.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;wrong in "/etc/debian_version" Debian [Tanglu GNU/Linux] Image = "Tanglu.png" ;detected in "/etc/os-release" [Mer] Image = "Mer.png" Mode = "Analyse" Files = "/etc/mer-release;/etc/meego-release;/etc/moblin-release" ;detected in "lsb_release -a" ;detected in "/etc/system-release" [KaOS] Image = "KaOS.png" Files = "/etc/KaOS-release" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/os-release" [openmamba] Image = "OpenMamba.png" Files = "/etc/openmamba-release" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/os-release" ;detected in "/etc/system-release" [CoreOS] Image = "CoreOS.png" ;detected in "/etc/lsb-release" ;detected in "/etc/os-release" [BOSS] Image = "BOSS.png" Name = "BOSS GNU/Linux" Files = "/etc/boss_version" ;detected in "lsb_release -a" ;wrong in "/etc/debian_version" Debian [BOSS GNU/Linux] Image = "BOSS.png" ;detected in "/etc/os-release" [BOSS Server Beta] Image = "BOSS.png" ;detected in "lsb_release -a" [Solus] Image = "Solus.png" Files = "/etc/solus-release" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" [Solus Operating System] Image = "Solus.png" ;detected in "/etc/os-release" [Canaima] Image = "Canaima.png" Name = "Canaima GNU/Linux" Files = "/etc/canaima_version" ;detected in "lsb_release -a" ;wrong in "/etc/debian_version" Debian [Canaima GNU/Linux] Image = "Canaima.png" ;detected in "/etc/os-release" [Semplice] Image = "Semplice.png" Name = "Semplice" Files = "/etc/semplice_version" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/os-release" ;wrong in "/etc/debian_version" Debian [SolydXK] Image = "SolydXK.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/solydxk/info" ;wrong in "/etc/os-release" Debian GNU/Linux ;wrong in "/etc/debian_version" Debian [HandyLinux] Image = "Handy.png" Files = "/etc/handylinux_version" ;detected in "lsb_release -a" ;wrong in "/etc/os-release" Debian GNU/Linux ;wrong in "/etc/debian_version" Debian [Parsix] Image = "Parsix.png" Files = "/etc/parsix-version" ;detected in "lsb_release -a" ;detected or wrong version in "/etc/os-release" | Parsix 4.0 ;wrong in "/etc/debian_version" Debian [Linaro] Image = "Linaro.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/os-release" ;wrong in "/etc/debian_version" Debian [LinuxDeepin] Image = "Deepin.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;wrong in "/etc/os-release" Debian GNU/Linux ;wrong in "/etc/debian_version" Debian [Ultimate_Edition] Image = "UltimateEdition.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/os-release" ;wrong in "/etc/debian_version" Debian [elementary OS] Image = "elementaryOS.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/os-release" ;wrong in "/etc/debian_version" Debian [PearLinux] Image = "Pear.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;wrong in "/etc/os-release" Ubuntu ;wrong in "/etc/debian_version" Debian [Pear Linux] Image = "Pear.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;wrong in "/etc/os-release" Ubuntu ;wrong in "/etc/debian_version" Debian [PearOS] Image = "Pear.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;wrong in "/etc/os-release" Ubuntu ;wrong in "/etc/debian_version" Debian [SolusOS] Image = "SolusOS.png" Files = "/etc/solusos_version" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;wrong in "/etc/os-release" Debian GNU/Linux ;wrong in "/etc/debian_version" Debian [LinuxMint] Image = "Mint.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;wrong in "/etc/os-release" Ubuntu ;wrong in "/etc/debian_version" Debian [Trisquel] Image = "Trisquel.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;wrong in "/etc/os-release" Ubuntu ;wrong in "/etc/debian_version" Debian [Zorin] Image = "Zorin.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;wrong or almost in "/etc/os-release" Ubuntu | Zorin OS ;wrong in "/etc/debian_version" Debian [Zorin OS] Image = "Zorin.png" ;detected in "/etc/os-release" ;wrong in "/etc/debian_version" Debian [Netrunner] Image = "Netrunner.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/os-release" ;wrong in "/etc/debian_version" Debian [NetrunnerSE] Image = "Netrunner.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;wrong in "/etc/debian_version" Debian [Netrunner Rolling] Image = "Netrunner.png" ;detected in "/etc/os-release" ;wrong in "/etc/manjaro-release" Manjaro [Peppermint] Image = "Peppermint.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/os-release" ;wrong in "/etc/debian_version" Debian [Ubuntu] Image = "Ubuntu.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/os-release" ;wrong in "/etc/debian_version" Debian [Chakra] Image = "Chakra.png" Files = "/etc/chakra-release" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" [The Chakra-Project] Image = "Chakra.png" ;detected in "/etc/os-release" [IYCC] Image = "iycc.png" ;detected in "/etc/lsb-release" [HipServ] Image = "HipServ.png" ;detected in "/etc/redhat-release" [Mageia] Image = "Mageia.png" Files = "/etc/mageia-release" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/mandriva-release" ;detected in "/etc/mandrake-release;/etc/mandrakelinux-release" ;detected in "/etc/redhat-release" ;detected in "/etc/os-release" [PLD Linux] Image = "PLD.png" Files = "/etc/pld-release" ;detected in "/etc/os-release" [LFS] Image = "lfs.png" Files = "/etc/lfs-release;/etc/lfs_version" [HLFS] Image = "lfs.png" Files = "/etc/hlfs-release;/etc/hlfs_version" [Synology] Image = "Synology.png" Mode = "Detection" Files = "/etc/synoinfo.conf" Files2 = "/etc/VERSION" [Alpine] Name = "Alpine" Image = "Alpine.png" Files = "/etc/alpine-release" [Puppy] Image = "Puppy.png" ;detected in "/etc/DISTRO_SPECS" [Lucid] Name = "Lucid Puppy" Image = "Puppy.png" ;detected in "/etc/DISTRO_SPECS" [Slacko Puppy] Image = "Puppy.png" ;detected in "/etc/DISTRO_SPECS" [Wary Puppy] Image = "Puppy.png" ;detected in "/etc/DISTRO_SPECS" [Turbolinux] Image = "Turbo.png" Files = "/etc/turbolinux-release" [Amazon] Image = "Amazon.png" ;detected in "/etc/system-release" [AmazonAMI] Image = "Amazon.png" ;detected in "lsb_release -a" [RedFlag] Image = "RedFlag.png" Files = "/etc/redflag-release" ;detected in "/etc/system-release" [Red Flag inWise] Image = "RedFlag.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/os-release" [StartOS] Image = "StartOS.png" Files = "/etc/startos-release" ;detected in "lsb_release -a" [PisiLinux] Image = "Pisi.png" Files = "/etc/pisilinux-release" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" [Pisi_Linux] Image = "Pisi.png" ;detected in "/etc/system-release" [SME] Image = "SMEServer.png" Files = "/etc/e-smith-release" ;wrong in "/etc/centos-release" CentOS ;detected in "/etc/redhat-release" ;detected in "/etc/system-release" [SMEServer] Image = "SMEServer.png" ;detected in "lsb_release -a" [Scientific] Image = "Scientific.png" ;detected in "lsb_release -a" ;detected in "/etc/redhat-release" ;detected in "/etc/system-release" [ScientificSL] Image = "Scientific.png" ;detected in "lsb_release -a" [ScientificCERNSLC] Image = "Scientific.png" ;detected in "lsb_release -a" [ScientificFermi] Image = "Scientific.png" ;detected in "lsb_release -a" [ScientificFermiLTS] Image = "Scientific.png" ;detected in "lsb_release -a" [ScientificSLF] Image = "Scientific.png" ;detected in "lsb_release -a" [ClearOS] Image = "ClearOS.png" Files = "/etc/clearos-release" ;detected in "/etc/redhat-release" ;detected in "/etc/system-release" [CloudLinuxServer] Image = "Cloud.png" ;detected in "lsb_release -a" [CloudLinux] Image = "Cloud.png" Files = "/etc/CloudLinux-release" ;detected in "/etc/redhat-release" ;detected in "/etc/system-release" ; at the end because some distros may also have the same files (like SMEServer) [CentOS] Image = "CentOS.png" Files = "/etc/centos-release" ;detected in "lsb_release -a" ;detected in "/etc/redhat-release" ;detected in "/etc/system-release" [Oracle] Image = "Oracle.png" Files = "/etc/oracle-release;/etc/enterprise-release" ;detected in "/etc/system-release" ;wrong in "/etc/redhat-release" RedHat [OracleServer] Image = "Oracle.png" ;detected in "lsb_release -a" [EnterpriseEnterpriseServer] Image = "Oracle.png" ;detected in "lsb_release -a" [PCLinuxOS] Image = "PCLinuxOS.png" Files = "/etc/pclinuxos-release" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/mandriva-release" ;detected in "/etc/mandrake-release;/etc/mandrakelinux-release" ;detected in "/etc/redhat-release" [Salix] Image = "Salix.png" Mode = "Detection" Files = "/etc/salix-update-notifier.conf" Files2 = "/etc/slackware-version" ;wrong in "/etc/os-release" Slackware ;wrong in "/etc/slackware-version" Slackware [Slax] Image = "Slax.png" Files = "/etc/slax-version" ;wrong in "/etc/os-release" Slackware ;wrong in "/etc/slackware-version" Slackware [SMS] Image = "SMS.png" Files = "/etc/sms-version" ;detected in "/etc/os-release" ;wrong in "/etc/slackware-version" Slackware [Porteus] Image = "Porteus.png" Files = "/etc/porteus-version" ;wrong in "/etc/os-release" Slackware ;wrong in "/etc/slackware-version" Slackware [Vector] Image = "Vector.png" Files = "/etc/vector-version" ;wrong in "/etc/slackware-version" Slackware [Zenwalk] Name = "Zenwalk" Image = "Zenwalk.png" Files = "/etc/zenwalk-version" ;detected in "/etc/os-release" ;wrong in "/etc/slackware-version" Slackware [Calculate] Image = "Calculate.png" ;detected in "/etc/gentoo-release" ;wrong in "/etc/os-release" Gentoo [Tizen] Image = "Tizen.png" Files = "/etc/tizen-release" ;detected in "/etc/system-release" ;detected in "/etc/os-release" [Sabayon] Image = "Sabayon.png" Files = "/etc/sabayon-release" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/system-release" ;detected in "/etc/os-release" ;wrong in "/etc/gentoo-release" Gentoo [VortexBox] Image = "VortexBox.png" Name = "VortexBox" Files = "/etc/vortexbox/vortexbox-version" ;wrong in "/etc/fedora-release" Fedora ;wrong in "/etc/redhat-release" Fedora ;wrong in "/etc/system-release" Fedora ;wrong in "/etc/os-release" Fedora [ALT] Image = "ALT.png" Files = "/etc/altlinux-release" ;detected in "/etc/fedora-release" ;detected in "/etc/redhat-release" ;detected in "/etc/system-release" [Simply] Image = "ALT.png" ;detected in "/etc/fedora-release" ;detected in "/etc/redhat-release" ;detected in "/etc/system-release" [Simply Linux] Image = "ALT.png" ;detected in "/etc/os-release" [ALT Linux] Image = "ALT.png" ;detected in "/etc/os-release" [Fuduntu] Image = "Fuduntu.png" Files = "/etc/fuduntu-release" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/fedora-release" ;detected in "/etc/redhat-release" ;detected in "/etc/system-release" [gNewSense] Image = "gNewSense.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;wrong in "/etc/debian_version" Debian [SteamOS] Image = "SteamOS.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;wrong in "/etc/debian_version" Debian [SteamOS GNU/Linux] Image = "SteamOS.png" ;detected in "/etc/os-release" [Raspbian] Image = "Raspbian.png" ;detected in "lsb_release -a" ;wrong in "/etc/debian_version" Debian [Raspbian GNU/Linux] Image = "Raspbian.png" ;detected in "/etc/os-release" [Debian] Name = "Debian" Image = "Debian.png" Files = "/etc/debian_release" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/debian_version" [Debian GNU/Linux] Image = "Debian.png" ;detected in "/etc/os-release" [openSUSE] Image = "openSUSE.png" ;detected in "/etc/os-release" ;detected in "/etc/SuSE-release" [openSUSE project] Image = "openSUSE.png" ;detected in "lsb_release -a" ; at the end because some distros may also have the same files (like openSUSE) [SUSE LINUX] Image = "SUSE.png" Mode = "Analyse" Files = "/etc/SuSE-release;/etc/UnitedLinux-release" ; at the end because some distros may also have the same files (like Sabayon, Calculate) [Gentoo] Image = "Gentoo.png" Mode = "Analyse" Files = "/etc/gentoo-release" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ;detected in "/etc/os-release" ; at the end because some distros may also have the same files (like Salix, Slax, SMS, Porteus, Vector, Zenwalk) [Slackware] Image = "Slackware.png" Files = "/etc/slackware-release;/etc/slackware-version" ;detected in "/etc/os-release" [Qubes] Image = "Qubes.png" Files = "/etc/qubes-release" ;detected in "/etc/fedora-release" ;detected in "/etc/redhat-release" ;detected in "/etc/system-release" ;detected in "/etc/os-release" [Korora] Image = "Korora.png" ;detected in "lsb_release -a" ;detected in "/etc/fedora-release" ;detected in "/etc/redhat-release" ;detected in "/etc/system-release" ;detected in "/etc/os-release" ; at the end because some distros may also have the same files (like Fuduntu, ALT, VortexBox, Qubes, Korora) [Fedora] Image = "Fedora.png" Mode = "Analyse" Files = "/etc/fedora-release" ;detected in "lsb_release -a" ;detected in "/etc/redhat-release" ;detected in "/etc/system-release" ;detected in "/etc/os-release" [FedoraCore] Image = "Fedora.png" ;detected in "/etc/lsb-release" [OpenMandriva] Image = "OpenMandriva.png" ;detected in "/etc/rosa-release" ;detected in "/etc/mandriva-release" ;detected in "/etc/mandrake-release;/etc/mandrakelinux-release" ;detected in "/etc/redhat-release" ;detected in "/etc/distro-release" ;detected in "/etc/system-release" [OpenMandriva Lx] Image = "OpenMandriva.png" ;detected in "/etc/os-release" [OpenMandrivaLinux] Image = "OpenMandriva.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" [ROSA MarathonLinux] Image = "ROSA.png" ;detected in "/etc/lsb-release" [RosaDesktop.Marathon] Image = "ROSA.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" [RosaDesktop.Fresh] Image = "ROSA.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" [ROSA Desktop Fresh] Image = "ROSA.png" ;detected in "/etc/os-release" [ROSA Marathon] Image = "ROSA.png" ;detected in "/etc/os-release" [ROSAEnterpriseServer] Image = "ROSA.png" ;detected in "lsb_release -a" ; at the end because some distros may also have the same files (like OpenMandriva) [ROSA] Image = "ROSA.png" Mode = "Analyse" Files = "/etc/rosa-release" ;detected in "lsb_release -a" ;detected in "/etc/system-release" ;detected in "/etc/mandriva-release" ;detected in "/etc/mandrake-release;/etc/mandrakelinux-release" ;detected in "/etc/redhat-release" [MandrivaLinux] Image = "Mandrake.png" ;detected in "lsb_release -a" ;detected in "/etc/lsb-release" ; at the end because some distros may also have the same files (like Mageia, PCLinuxOS, ROSA, OpenMandriva) [Mandriva] Image = "Mandrake.png" Mode = "Analyse" Files = "/etc/mandriva-release" ;detected in "/etc/mandrake-release;/etc/mandrakelinux-release" ;detected in "/etc/redhat-release" ; at the end because some distros may also have the same files (like Mandriva, Mageia, PCLinuxOS, ROSA, OpenMandriva) [Mandrake] Image = "Mandrake.png" Mode = "Analyse" Files = "/etc/mandrake-release;/etc/mandrakelinux-release" ; at the end because some distros may also have the same files (like SMEServer, Fuduntu, ALT, VortexBox, Qubes, Korora, Fedora, CentOS, Oracle, Scientific, CloudLinux, Mandrake, MandrivaLinux, Mageia, PCLinuxOS, ROSA, OpenMandriva, HipServ) [RedHat] Image = "RedHat.png" Mode = "Analyse" Files = "/etc/redhat-release;/etc/redhat_version" ;detected in "/etc/system-release" [Red Hat Enterprise Linux Everything] Image = "RedHat.png" ;detected in "/etc/os-release" [RedHatEnterpriseES] Image = "RedHat.png" ;detected in "lsb_release -a" [RedHatEnterpriseAS] Image = "RedHat.png" ;detected in "lsb_release -a" [RedHatEnterpriseServer] Image = "RedHat.png" ;detected in "lsb_release -a" [RedHatEnterpriseClient] Image = "RedHat.png" ;detected in "lsb_release -a" phpsysinfo-3.2.5/data/languages.ini000066400000000000000000000606301265516077000173210ustar00rootroot00000000000000[WINNT] 1="Arabic" 4="Simplified Chinese - China" 9="English" 1025="Arabic - Saudi Arabia" 1026="Bulgarian" 1027="Catalan" 1028="Traditional Chinese - Taiwan" 1029="Czech" 1030="Danish" 1031="German - Germany" 1032="Greek" 1033="English - United States" 1034="Spanish - Traditional Sort" 1035="Finnish" 1036="French - France" 1037="Hebrew" 1038="Hungarian" 1039="Icelandic" 1040="Italian - Italy" 1041="Japanese" 1042="Korean" 1043="Dutch - Netherlands" 1044="Norwegian - Bokmal" 1045="Polish" 1046="Portuguese - Brazil" 1047="Rhaeto-Romanic" 1048="Romanian" 1049="Russian" 1050="Croatian" 1051="Slovak" 1052="Albanian" 1053="Swedish" 1054="Thai" 1055="Turkish" 1056="Urdu" 1057="Indonesian" 1058="Ukrainian" 1059="Belarusian" 1060="Slovenian" 1061="Estonian" 1062="Latvian" 1063="Lithuanian" 1065="Persion" 1066="Vietnamese" 1069="Basque" 1070="Serbian" 1071="Macedonian (FYROM)" 1072="Sutu" 1073="Tsonga" 1074="Tswana" 1076="Xhosa" 1077="Zulu" 1078="Afrikaans" 1080="Faeroese" 1081="Hindi" 1082="Maltese" 1084="Scottish Gaelic" 1085="Yiddish" 1086="Malay - Malaysia" 2049="Arabic - Iraq" 2052="Simplified Chinese - PRC" 2055="German - Switzerland" 2057="English - United Kingdom" 2058="Spanish - Mexico" 2060="French - Belgium" 2064="Italian - Switzerland" 2067="Dutch - Belgium" 2068="Norwegian - Nynorsk" 2070="Portuguese - Portugal" 2072="Romanian - Moldova" 2073="Russian - Moldova" 2074="Serbian - Latin" 2077="Swedish - Finland" 3073="Arabic - Egypt" 3076="Traditional Chinese - Hong Kong SAR" 3079="German - Austria" 3081="English - Australia" 3082="Spanish - International Sort" 3084="French - Canada" 3098="Serbian - Cyrillic" 4097="Arabic - Libya" 4100="Simplified Chinese - Singapore" 4103="German - Luxembourg" 4105="English - Canada" 4106="Spanish - Guatemala" 4108="French - Switzerland" 5121="Arabic - Algeria" 5127="German - Liechtenstein" 5129="English - New Zealand" 5130="Spanish - Costa Rica" 5132="French - Luxembourg" 6145="Arabic - Morocco" 6153="English - Ireland" 6154="Spanish - Panama" 7169="Arabic - Tunisia" 7177="English - South Africa" 7178="Spanish - Dominican Republic" 8193="Arabic - Oman" 8201="English - Jamaica" 8202="Spanish - Venezuela" 9217="Arabic - Yemen" 9226="Spanish - Colombia" 10241="Arabic - Syria" 10249="English - Belize" 10250="Spanish - Peru" 11265="Arabic - Jordan" 11273="English - Trinidad" 11274="Spanish - Argentina" 12289="Arabic - Lebanon" 12298="Spanish - Ecuador" 13313="Arabic - Kuwait" 13322="Spanish - Chile" 14337="Arabic - U.A.E." 14346="Spanish - Uruguay" 15361="Arabic - Bahrain" 15370="Spanish - Paraguay" 16385="Arabic - Qatar" 16394="Spanish - Bolivia" 17418="Spanish - El Salvador" 18442="Spanish - Honduras" 19466="Spanish - Nicaragua" 20490="Spanish - Puerto Rico" [Linux] _aa="Afar" _aa_DJ="Afar Djibouti" _aa_ER="Afar Eritrea" _aa_ER_SAAHO="Afar Eritrea Saho" _aa_ET="Afar Ethiopia" _aar="Afar" _aar_DJ="Afar Djibouti" _aar_ER="Afar Eritrea" _aar_ER_SAAHO="Afar Eritrea Saho" _aar_ET="Afar Ethiopia" _af="Afrikaans" _af_NA="Afrikaans Namibia" _afr="Afrikaans" _afr_NA="Afrikaans Namibia" _afr_ZA="Afrikaans South Africa" _af_ZA="Afrikaans South Africa" _aka="Akan" _aka_GH="Akan Ghana" _ak="Akan" _ak_GH="Akan Ghana" _alb_AL="Albanian Albania" _alb="Albanian" _am="Amharic" _am_ET="Amharic Ethiopia" _amh="Amharic" _amh_ET="Amharic Ethiopia" _ara_AE="Arabic United Arab Emirates" _ara="Arabic" _ara_BH="Arabic Bahrain" _ara_DZ="Arabic Algeria" _ar_AE="Arabic United Arab Emirates" _ara_EG="Arabic Egypt" _ara_IQ="Arabic Iraq" _ara_JO="Arabic Jordan" _ara_KW="Arabic Kuwait" _ara_LB="Arabic Lebanon" _ara_LY="Arabic Libya" _ara_MA="Arabic Morocco" _ara_OM="Arabic Oman" _ara_QA="Arabic Qatar" _ar="Arabic" _ara_SA="Arabic Saudi Arabia" _ara_SD="Arabic Sudan" _ara_SY="Arabic Syria" _ara_TN="Arabic Tunisia" _ara_YE="Arabic Yemen" _ar_BH="Arabic Bahrain" _ar_DZ="Arabic Algeria" _ar_EG="Arabic Egypt" _ar_IQ="Arabic Iraq" _ar_JO="Arabic Jordan" _ar_KW="Arabic Kuwait" _ar_LB="Arabic Lebanon" _ar_LY="Arabic Libya" _ar_MA="Arabic Morocco" _arm_AM="Armenian Armenia" _arm_AM_REVISED="Armenian Armenia Revised Orthography" _arm="Armenian" _ar_OM="Arabic Oman" _ar_QA="Arabic Qatar" _ar_SA="Arabic Saudi Arabia" _ar_SD="Arabic Sudan" _ar_SY="Arabic Syria" _ar_TN="Arabic Tunisia" _ar_YE="Arabic Yemen" _as="Assamese" _as_IN="Assamese India" _asm="Assamese" _asm_IN="Assamese India" _az_AZ="Azerbaijani Azerbaijan" _az="Azerbaijani" _az_Cyrl_AZ="Azerbaijani Azerbaijan (Cyrillic)" _az_Cyrl="Azerbaijani (Cyrillic)" _aze_AZ="Azerbaijani Azerbaijan" _aze_AZ_Cyrl="Azerbaijani Azerbaijan (Cyrillic)" _aze="Azerbaijani" _aze_AZ_Latn="Azerbaijani Azerbaijan (Latin)" _aze_Cyrl="Azerbaijani (Cyrillic)" _aze_Latn="Azerbaijani (Latin)" _az_Latn_AZ="Azerbaijani Azerbaijan (Latin)" _az_Latn="Azerbaijani (Latin)" _baq="Basque" _baq_ES="Basque Spain" _be="Belarusian" _be_BY="Belarusian Belarus" _bel="Belarusian" _bel_BY="Belarusian Belarus" _ben_BD="Bengali Bangladesh" _ben="Bengali" _ben_IN="Bengali India" _bg_BG="Bulgarian Bulgaria" _bg="Bulgarian" _bn_BD="Bengali Bangladesh" _bn="Bengali" _bn_IN="Bengali India" _bokmal="Norwegian Bokmål" _bokmål="Norwegian Bokmål" _bos_BA="Bosnian Bosnia and Herzegovina" _bos="Bosnian" _bs_BA="Bosnian Bosnia and Herzegovina" _bs="Bosnian" _bul_BG="Bulgarian Bulgaria" _bul="Bulgarian" _bur="Burmese" _bur_MM="Burmese Myanmar" _byn="Blin" _byn_ER="Blin Eritrea" _ca="Catalan" _ca_ES="Catalan Spain" _catalan="Catalan Spain" _cat="Catalan" _cat_ES="Catalan Spain" _cch="Atsam" _cch_NG="Atsam Nigeria" _C="English United States Computer" _chi="Chinese" _chi_CN="Chinese China" _chi_CN_Hans="Chinese China (Simplified Han)" _chi_Hans="Chinese (Simplified Han)" _chi_Hant="Chinese (Traditional Han)" _chi_HK="Chinese Hong Kong SAR China" _chi_HK_Hans="Chinese Hong Kong SAR China (Simplified Han)" _chi_HK_Hant="Chinese Hong Kong SAR China (Traditional Han)" _chi_MO="Chinese Macau SAR China" _chi_MO_Hans="Chinese Macau SAR China (Simplified Han)" _chi_MO_Hant="Chinese Macau SAR China (Traditional Han)" _chi_SG="Chinese Singapore" _chi_SG_Hans="Chinese Singapore (Simplified Han)" _chi_TW="Chinese Taiwan" _chi_TW_Hant="Chinese Taiwan (Traditional Han)" _cop="Coptic" _cor="Cornish" _cor_GB="Cornish United Kingdom" _croatian="Croatian" _cs_CZ="Czech Czech Republic" _cs="Czech" _cy_GB="Welsh United Kingdom" _cy="Welsh" _czech="Czech" _cze_CZ="Czech Czech Republic" _cze="Czech" _da="Danish" _da_DK="Danish Denmark" _dan="Danish" _dan_DK="Danish Denmark" _danish="Danish" _dansk="Danish" _de_AT="German Austria" _de_BE="German Belgium" _de_CH="German Switzerland" _de_DE="German Germany" _de="German" _de_LI="German Liechtenstein" _de_LU="German Luxembourg" _deutsch="German" _div="Divehi" _div_MV="Divehi Maldives" _dut_BE="Dutch Belgium" _dutch="Dutch" _dut="Dutch" _dut_NL="Dutch Netherlands" _dv="Divehi" _dv_MV="Divehi Maldives" _dz_BT="Dzongkha Bhutan" _dz="Dzongkha" _dzo_BT="Dzongkha Bhutan" _dzo="Dzongkha" _ee="Ewe" _ee_GH="Ewe Ghana" _eesti="Estonian" _ee_TG="Ewe Togo" _el_CY="Greek Cyprus" _el="Greek" _el_GR="Greek Greece" _el_POLYTON="Greek" _en_AS="English American Samoa" _en_AU="English Australia" _en_BE="English Belgium" _en_BW="English Botswana" _en_BZ="English Belize" _en_CA="English Canada" _en_Dsrt="English (Deseret)" _en_Dsrt_US="English United States (Deseret)" _en="English" _eng_AS="English American Samoa" _eng_AU="English Australia" _eng_BE="English Belgium" _en_GB="English United Kingdom" _eng_BW="English Botswana" _eng_BZ="English Belize" _eng_CA="English Canada" _eng_Dsrt="English (Deseret)" _eng="English" _eng_GB="English United Kingdom" _eng_GU="English Guam" _eng_HK="English Hong Kong SAR China" _eng_IE="English Ireland" _eng_IN="English India" _eng_JM="English Jamaica" _eng_MH="English Marshall Islands" _eng_MP="English Northern Mariana Islands" _eng_MT="English Malta" _eng_NA="English Namibia" _eng_NZ="English New Zealand" _eng_PH="English Philippines" _eng_PK="English Pakistan" _eng_SG="English Singapore" _eng_Shaw="English (Shavian)" _eng_TT="English Trinidad and Tobago" _en_GU="English Guam" _eng_UM="English United States Minor Outlying Islands" _eng_US_Dsrt="English United States (Deseret)" _eng_US="English United States" _eng_US_POSIX="English United States Computer" _eng_VI="English U.S. Virgin Islands" _eng_ZA="English South Africa" _eng_ZW="English Zimbabwe" _en_HK="English Hong Kong SAR China" _en_IE="English Ireland" _en_IN="English India" _en_JM="English Jamaica" _en_MH="English Marshall Islands" _en_MP="English Northern Mariana Islands" _en_MT="English Malta" _en_NA="English Namibia" _en_NZ="English New Zealand" _en_PH="English Philippines" _en_PK="English Pakistan" _en_SG="English Singapore" _en_Shaw="English (Shavian)" _en_TT="English Trinidad and Tobago" _en_UM="English United States Minor Outlying Islands" _en_US="English United States" _en_US_POSIX="English United States Computer" _en_VI="English U.S. Virgin Islands" _en_ZA="English South Africa" _en_ZW="English Zimbabwe" _eo="Esperanto" _epo="Esperanto" _es_AR="Spanish Argentina" _es_BO="Spanish Bolivia" _es_CL="Spanish Chile" _es_CO="Spanish Colombia" _es_CR="Spanish Costa Rica" _es_DO="Spanish Dominican Republic" _es_EC="Spanish Ecuador" _es_ES="Spanish Spain" _es_GT="Spanish Guatemala" _es_HN="Spanish Honduras" _es_MX="Spanish Mexico" _es_NI="Spanish Nicaragua" _es_PA="Spanish Panama" _es_PE="Spanish Peru" _es_PR="Spanish Puerto Rico" _es_PY="Spanish Paraguay" _es="Spanish" _es_SV="Spanish El Salvador" _est_EE="Estonian Estonia" _est="Estonian" _estonian="Estonian" _es_US="Spanish United States" _es_UY="Spanish Uruguay" _es_VE="Spanish Venezuela" _et_EE="Estonian Estonia" _et="Estonian" _eu="Basque" _eu_ES="Basque Spain" _ewe="Ewe" _ewe_GH="Ewe Ghana" _ewe_TG="Ewe Togo" _fa_AF="Persian Afghanistan" _fa_IR="Persian Iran" _fao="Faroese" _fao_FO="Faroese Faroe Islands" _fa="Persian" _fi_FI="Finnish Finland" _fi="Finnish" _fil="Filipino" _fil_PH="Filipino Philippines" _fin_FI="Finnish Finland" _fin="Finnish" _finnish="finnish" _fo="Faroese" _fo_FO="Faroese Faroe Islands" _français="French" _fr_BE="French Belgium" _fr_CA="French Canada" _fr_CH="French Switzerland" _fre_BE="French Belgium" _fre_CA="French Canada" _fre_CH="French Switzerland" _fre="French" _fre_FR="French France" _fre_LU="French Luxembourg" _fre_MC="French Monaco" _french="French" _fre_SN="French Senegal" _fr="French" _fr_FR="French France" _fr_LU="French Luxembourg" _fr_MC="French Monaco" _fr_SN="French Senegal" _fur="Friulian" _fur_IT="Friulian Italy" _gaa="Ga" _gaa_GH="Ga Ghana" _ga_IE="Irish Ireland" _ga="Irish" _galego="Galician" _galician="Galician" _geo_GE="Georgian Georgia" _geo="Georgian" _ger_AT="German Austria" _ger_BE="German Belgium" _ger_CH="German Switzerland" _ger_DE="German Germany" _ger="German" _ger_LI="German Liechtenstein" _ger_LU="German Luxembourg" _german="German" _gez_ER="Geez Eritrea" _gez_ET="Geez Ethiopia" _gez="Geez" _gle_IE="Irish Ireland" _gle="Irish" _gl_ES="Galician Spain" _gl="Galician" _glg_ES="Galician Spain" _glg="Galician" _glv_GB="Manx United Kingdom" _glv="Manx" _gre_CY="Greek Cyprus" _greek="Greek" _gre="Greek" _gre_GR="Greek Greece" _gre_POLYTON="Greek" _gu="Gujarati" _gu_IN="Gujarati India" _guj="Gujarati" _guj_IN="Gujarati India" _gv_GB="Manx United Kingdom" _gv="Manx" _ha_Arab="Hausa (Arabic)" _ha_Arab_NG="Hausa Nigeria (Arabic)" _ha_Arab_SD="Hausa Sudan (Arabic)" _ha_GH="Hausa Ghana" _ha="Hausa" _ha_Latn_GH="Hausa Ghana (Latin)" _ha_Latn="Hausa (Latin)" _ha_Latn_NE="Hausa Niger (Latin)" _ha_Latn_NG="Hausa Nigeria (Latin)" _ha_NE="Hausa Niger" _ha_NG="Hausa Nigeria" _ha_SD="Hausa Sudan" _hau_Arab="Hausa (Arabic)" _hau_GH="Hausa Ghana" _hau_GH_Latn="Hausa Ghana (Latin)" _hau="Hausa" _hau_Latn="Hausa (Latin)" _hau_NE="Hausa Niger" _hau_NE_Latn="Hausa Niger (Latin)" _hau_NG_Arab="Hausa Nigeria (Arabic)" _hau_NG="Hausa Nigeria" _hau_NG_Latn="Hausa Nigeria (Latin)" _hau_SD_Arab="Hausa Sudan (Arabic)" _hau_SD="Hausa Sudan" _haw="Hawaiian" _haw_US="Hawaiian United States" _heb="Hebrew" _heb_IL="Hebrew Israel" _hebrew="Hebrew" _he="Hebrew" _he_IL="Hebrew Israel" _hi="Hindi" _hi_IN="Hindi India" _hin="Hindi" _hin_IN="Hindi India" _hr="Croatian" _hr_HR="Croatian Croatia" _hrvatski="Croatian" _hrv="Croatian" _hrv_HR="Croatian Croatia" _hu_HU="Hungarian Hungary" _hu="Hungarian" _hungarian="Hungarian" _hun_HU="Hungarian Hungary" _hun="Hungarian" _hy_AM="Armenian Armenia" _hy_AM_REVISED="Armenian Armenia Revised Orthography" _hy="Armenian" _ia="Interlingua" _ibo="Igbo" _ibo_NG="Igbo Nigeria" _ice="Icelandic" _ice_IS="Icelandic Iceland" _icelandic="Icelandic" _id_ID="Indonesian Indonesia" _id="Indonesian" _ig="Igbo" _ig_NG="Igbo Nigeria" _ii_CN="Sichuan Yi China" _iii_CN="Sichuan Yi China" _iii="Sichuan Yi" _ii="Sichuan Yi" _iku="Inuktitut" _ina="Interlingua" _ind_ID="Indonesian Indonesia" _ind="Indonesian" _is="Icelandic" _is_IS="Icelandic Iceland" _ita_CH="Italian Switzerland" _ita="Italian" _ita_IT="Italian Italy" _italian="Italian" _it_CH="Italian Switzerland" _it="Italian" _it_IT="Italian Italy" _iu="Inuktitut" _iw="Hebrew" _iw_IL="Hebrew Israel" _ja="Japanese" _ja_JP="Japanese Japan" _japanese="Japanese" _jpn="Japanese" _jpn_JP="Japanese Japan" _ka_GE="Georgian Georgia" _ka="Georgian" _kaj="Jju" _kaj_NG="Jju Nigeria" _kal_GL="Kalaallisut Greenland" _kal="Kalaallisut" _kam="Kamba" _kam_KE="Kamba Kenya" _kan_IN="Kannada India" _kan="Kannada" _kaz_Cyrl="Kazakh (Cyrillic)" _kaz="Kazakh" _kaz_KZ_Cyrl="Kazakh Kazakhstan (Cyrillic)" _kaz_KZ="Kazakh Kazakhstan" _kcg_NG="Tyap Nigeria" _kcg="Tyap" _kfo_CI="Koro Ivory Coast" _kfo="Koro" _khm_KH="Khmer Cambodia" _khm="Khmer" _kin="Kinyarwanda" _kin_RW="Kinyarwanda Rwanda" _kir_KG="Kirghiz Kyrgyzstan" _kir="Kirghiz" _kk_Cyrl="Kazakh (Cyrillic)" _kk_Cyrl_KZ="Kazakh Kazakhstan (Cyrillic)" _kk="Kazakh" _kk_KZ="Kazakh Kazakhstan" _kl_GL="Kalaallisut Greenland" _kl="Kalaallisut" _km_KH="Khmer Cambodia" _km="Khmer" _kn_IN="Kannada India" _kn="Kannada" _kok_IN="Konkani India" _kok="Konkani" _ko="Korean" _ko_KR="Korean South Korea" _korean="Korean" _kor="Korean" _kor_KR="Korean South Korea" _kpe_GN="Kpelle Guinea" _kpe="Kpelle" _kpe_LR="Kpelle Liberia" _ku_Arab="Kurdish (Arabic)" _ku="Kurdish" _ku_Latn="Kurdish (Latin)" _ku_Latn_TR="Kurdish Turkey (Latin)" _kur_Arab="Kurdish (Arabic)" _kur="Kurdish" _kur_Latn="Kurdish (Latin)" _kur_TR="Kurdish Turkey" _kur_TR_Latn="Kurdish Turkey (Latin)" _ku_TR="Kurdish Turkey" _kw="Cornish" _kw_GB="Cornish United Kingdom" _ky_KG="Kirghiz Kyrgyzstan" _ky="Kirghiz" _lao_LA="Lao Laos" _lao="Lao" _lav="Latvian" _lav_LV="Latvian Latvia" _lin_CD="Lingala Congo - Kinshasa" _lin_CG="Lingala Congo - Brazzaville" _lin="Lingala" _lithuanian="Lithuanian" _lit="Lithuanian" _lit_LT="Lithuanian Lithuania" _ln_CD="Lingala Congo - Kinshasa" _ln_CG="Lingala Congo - Brazzaville" _ln="Lingala" _lo_LA="Lao Laos" _lo="Lao" _lt="Lithuanian" _lt_LT="Lithuanian Lithuania" _lv="Latvian" _lv_LV="Latvian Latvia" _mac="Macedonian" _mac_MK="Macedonian Macedonia" _mal_IN="Malayalam India" _mal="Malayalam" _mar_IN="Marathi India" _mar="Marathi" _may_BN="Malay Brunei" _may="Malay" _may_MY="Malay Malaysia" _mk="Macedonian" _mk_MK="Macedonian Macedonia" _ml_IN="Malayalam India" _ml="Malayalam" _mlt="Maltese" _mlt_MT="Maltese Malta" _mn_CN="Mongolian China" _mn_Cyrl_MN="Mongolian Mongolia (Cyrillic)" _mn_Cyrl="Mongolian (Cyrillic)" _mn_MN="Mongolian Mongolia" _mn_Mong_CN="Mongolian China (Mongolian)" _mn_Mong="Mongolian (Mongolian)" _mn="Mongolian" _mol="Moldavian" _mo="Moldavian" _mon_CN_Mong="Mongolian China (Mongolian)" _mon_CN="Mongolian China" _mon_Cyrl="Mongolian (Cyrillic)" _mon_MN_Cyrl="Mongolian Mongolia (Cyrillic)" _mon_MN="Mongolian Mongolia" _mon_Mong="Mongolian (Mongolian)" _mon="Mongolian" _mr_IN="Marathi India" _mr="Marathi" _ms_BN="Malay Brunei" _ms="Malay" _ms_MY="Malay Malaysia" _mt="Maltese" _mt_MT="Maltese Malta" _my="Burmese" _my_MM="Burmese Myanmar" _nbl="South Ndebele" _nbl_ZA="South Ndebele South Africa" _nb_NO="Norwegian Bokmål Norway" _nb="Norwegian Bokmål" _ne_IN="Nepali India" _ne="Nepali" _ne_NP="Nepali Nepal" _nep_IN="Nepali India" _nep="Nepali" _nep_NP="Nepali Nepal" _nl_BE="Dutch Belgium" _nl="Dutch" _nl_NL="Dutch Netherlands" _nn_NO="Norwegian Nynorsk Norway" _nn="Norwegian Nynorsk" _nno_NO="Norwegian Nynorsk Norway" _nno="Norwegian Nynorsk" _nob_NO="Norwegian BokmÃ¥l Norway" _nob="Norwegian BokmÃ¥l" _no_NO="Norwegian Nynorsk Norway" _no_NO_NY="Norwegian Nynorsk Norway" _no="Norwegian" _no="Norwegian Nynorsk" _nor="Norwegian" _norwegian="Norwegian" _nr="South Ndebele" _nr_ZA="South Ndebele South Africa" _nso="Northern Sotho" _nso_ZA="Northern Sotho South Africa" _nya_MW="Nyanja Malawi" _nya="Nyanja" _ny_MW="Nyanja Malawi" _nynorsk="Norwegian Nynorsk" _ny="Nyanja" _om_ET="Oromo Ethiopia" _om_KE="Oromo Kenya" _om="Oromo" _ori_IN="Oriya India" _or_IN="Oriya India" _ori="Oriya" _orm_ET="Oromo Ethiopia" _orm_KE="Oromo Kenya" _orm="Oromo" _or="Oriya" _pa_Arab_PK="Punjabi Pakistan (Arabic)" _pa_Arab="Punjabi (Arabic)" _pa_Guru_IN="Punjabi India (Gurmukhi)" _pa_Guru="Punjabi (Gurmukhi)" _pa_IN="Punjabi India" _pan_Arab="Punjabi (Arabic)" _pan_Guru="Punjabi (Gurmukhi)" _pan_IN_Guru="Punjabi India (Gurmukhi)" _pan_IN="Punjabi India" _pan_PK_Arab="Punjabi Pakistan (Arabic)" _pan_PK="Punjabi Pakistan" _pan="Punjabi" _pa_PK="Punjabi Pakistan" _pa="Punjabi" _per_AF="Persian Afghanistan" _per_IR="Persian Iran" _per="Persian" _pl_PL="Polish Poland" _pl="Polish" _polish="Polish" _pol_PL="Polish Poland" _pol="Polish" _por_BR="Portuguese Brazil" _por="Portuguese" _por_PT="Portuguese Portugal" _portuguese="Portuguese" _POSIX="English United States Computer" _ps_AF="Pashto Afghanistan" _ps="Pashto" _pt_BR="Portuguese Brazil" _pt="Portuguese" _pt_PT="Portuguese Portugal" _pus_AF="Pashto Afghanistan" _pus="Pashto" _romanian="Romanian" _ro_MD="Romanian Moldova" _root="Root" _ro="Romanian" _ro_RO="Romanian Romania" _rum_MD="Romanian Moldova" _rum="Romanian" _rum_RO="Romanian Romania" _ru_RU="Russian Russia" _ru="Russian" _rus_RU="Russian Russia" _rus="Russian" _russian="Russian" _rus_UA="Russian Ukraine" _ru_UA="Russian Ukraine" _rw="Kinyarwanda" _rw_RW="Kinyarwanda Rwanda" _sa_IN="Sanskrit India" _san_IN="Sanskrit India" _san="Sanskrit" _sa="Sanskrit" _se_FI="Northern Sami Finland" _se_NO="Northern Sami Norway" _se="Northern Sami" _sh_BA="Serbo-Croatian Bosnia and Herzegovina" _sh_CS="Serbo-Croatian Serbia and Montenegro" _sh="Serbo-Croatian" _sh_YU="Serbo-Croatian" _sid_ET="Sidamo Ethiopia" _sid="Sidamo" _si_LK="Sinhala Sri Lanka" _sin_LK="Sinhala Sri Lanka" _sin="Sinhala" _si="Sinhala" _sk_SK="Slovak Slovakia" _sk="Slovak" _slo_SK="Slovak Slovakia" _slo="Slovak" _slovak="Slovak" _slovene="Slovenian" _slovenian="Slovenian" _sl_SI="Slovenian Slovenia" _sl="Slovenian" _slv_SI="Slovenian Slovenia" _slv="Slovenian" _sme_FI="Northern Sami Finland" _sme_NO="Northern Sami Norway" _sme="Northern Sami" _so_DJ="Somali Djibouti" _so_ET="Somali Ethiopia" _so_KE="Somali Kenya" _som_DJ="Somali Djibouti" _som_ET="Somali Ethiopia" _som_KE="Somali Kenya" _som="Somali" _som_SO="Somali Somalia" _so="Somali" _so_SO="Somali Somalia" _sot_LS="Southern Sotho Lesotho" _sot="Southern Sotho" _sot_ZA="Southern Sotho South Africa" _spa_AR="Spanish Argentina" _spa_BO="Spanish Bolivia" _spa_CL="Spanish Chile" _spa_CO="Spanish Colombia" _spa_CR="Spanish Costa Rica" _spa_DO="Spanish Dominican Republic" _spa_EC="Spanish Ecuador" _spa_ES="Spanish Spain" _spa_GT="Spanish Guatemala" _spa_HN="Spanish Honduras" _spa_MX="Spanish Mexico" _spanish="Spanish" _spa_NI="Spanish Nicaragua" _spa_PA="Spanish Panama" _spa_PE="Spanish Peru" _spa_PR="Spanish Puerto Rico" _spa_PY="Spanish Paraguay" _spa="Spanish" _spa_SV="Spanish El Salvador" _spa_US="Spanish United States" _spa_UY="Spanish Uruguay" _spa_VE="Spanish Venezuela" _sq_AL="Albanian Albania" _sq="Albanian" _sr_BA="Serbian Bosnia and Herzegovina" _sr_CS="Serbian Serbia and Montenegro" _sr_Cyrl_BA="Serbian Bosnia and Herzegovina (Cyrillic)" _sr_Cyrl_CS="Serbian Serbia and Montenegro (Cyrillic)" _sr_Cyrl_ME="Serbian Montenegro (Cyrillic)" _sr_Cyrl_RS="Serbian Serbia (Cyrillic)" _sr_Cyrl="Serbian (Cyrillic)" _sr_Cyrl_YU="Serbian (Cyrillic)" _sr_Latn_BA="Serbian Bosnia and Herzegovina (Latin)" _sr_Latn_CS="Serbian Serbia and Montenegro (Latin)" _sr_Latn_ME="Serbian Montenegro (Latin)" _sr_Latn_RS="Serbian Serbia (Latin)" _sr_Latn="Serbian (Latin)" _sr_Latn_YU="Serbian (Latin)" _sr_ME="Serbian Montenegro" _srp_BA_Cyrl="Serbian Bosnia and Herzegovina (Cyrillic)" _srp_BA_Latn="Serbian Bosnia and Herzegovina (Latin)" _srp_BA="Serbian Bosnia and Herzegovina" _srp_CS_Cyrl="Serbian Serbia and Montenegro (Cyrillic)" _srp_CS_Latn="Serbian Serbia and Montenegro (Latin)" _srp_CS="Serbian Serbia and Montenegro" _srp_Cyrl="Serbian (Cyrillic)" _srp_Latn="Serbian (Latin)" _srp_ME_Cyrl="Serbian Montenegro (Cyrillic)" _srp_ME_Latn="Serbian Montenegro (Latin)" _srp_ME="Serbian Montenegro" _srp_RS_Cyrl="Serbian Serbia (Cyrillic)" _srp_RS_Latn="Serbian Serbia (Latin)" _srp_RS="Serbian Serbia" _srp="Serbian" _srp_YU_Cyrl="Serbian (Cyrillic)" _srp_YU_Latn="Serbian (Latin)" _srp_YU="Serbian" _sr_RS="Serbian Serbia" _sr="Serbian" _sr_YU="Serbian" _ss="Swati" _ss_SZ="Swati Swaziland" _ssw="Swati" _ssw_SZ="Swati Swaziland" _ssw_ZA="Swati South Africa" _ss_ZA="Swati South Africa" _st_LS="Southern Sotho Lesotho" _st="Southern Sotho" _st_ZA="Southern Sotho South Africa" _sv_FI="Swedish Finland" _sv_SE="Swedish Sweden" _sv="Swedish" _swa_KE="Swahili Kenya" _swa="Swahili" _swa_TZ="Swahili Tanzania" _swedish="Swedish" _swe_FI="Swedish Finland" _swe_SE="Swedish Sweden" _swe="Swedish" _sw_KE="Swahili Kenya" _sw="Swahili" _sw_TZ="Swahili Tanzania" _syr="Syriac" _syr_SY="Syriac Syria" _ta_IN="Tamil India" _tam_IN="Tamil India" _tam="Tamil" _ta="Tamil" _tat_RU="Tatar Russia" _tat="Tatar" _te_IN="Telugu India" _tel_IN="Telugu India" _tel="Telugu" _te="Telugu" _tg_Cyrl="Tajik (Cyrillic)" _tg_Cyrl_TJ="Tajik Tajikistan (Cyrillic)" _tgk_Cyrl="Tajik (Cyrillic)" _tgk="Tajik" _tgk_TJ_Cyrl="Tajik Tajikistan (Cyrillic)" _tgk_TJ="Tajik Tajikistan" _tgl="Tagalog" _tg="Tajik" _tg_TJ="Tajik Tajikistan" _thai="Thai" _tha="Thai" _tha_TH="Thai Thailand" _th="Thai" _th_TH="Thai Thailand" _ti_ER="Tigrinya Eritrea" _ti_ET="Tigrinya Ethiopia" _tig_ER="Tigre Eritrea" _tig="Tigre" _tir_ER="Tigrinya Eritrea" _tir_ET="Tigrinya Ethiopia" _tir="Tigrinya" _ti="Tigrinya" _tl="Tagalog" _tn="Tswana" _tn_ZA="Tswana South Africa" _ton="Tonga" _ton_TO="Tonga Tonga" _to="Tonga" _to_TO="Tonga Tonga" _tr_TR="Turkish Turkey" _tr="Turkish" _tsn="Tswana" _tsn_ZA="Tswana South Africa" _tso="Tsonga" _tso_ZA="Tsonga South Africa" _ts="Tsonga" _ts_ZA="Tsonga South Africa" _tt_RU="Tatar Russia" _tt="Tatar" _turkish="Turkish" _tur_TR="Turkish Turkey" _tur="Turkish" _ug_Arab_CN="Uighur China (Arabic)" _ug_Arab="Uighur (Arabic)" _ug_CN="Uighur China" _ug="Uighur" _uig_Arab="Uighur (Arabic)" _uig_CN_Arab="Uighur China (Arabic)" _uig_CN="Uighur China" _uig="Uighur" _ukr_UA="Ukrainian Ukraine" _ukr="Ukrainian" _uk_UA="Ukrainian Ukraine" _uk="Ukrainian" _urd_IN="Urdu India" _urd_PK="Urdu Pakistan" _urd="Urdu" _ur_IN="Urdu India" _ur_PK="Urdu Pakistan" _ur="Urdu" _uz_AF="Uzbek Afghanistan" _uz_Arab_AF="Uzbek Afghanistan (Arabic)" _uz_Arab="Uzbek (Arabic)" _uzb_AF_Arab="Uzbek Afghanistan (Arabic)" _uzb_AF="Uzbek Afghanistan" _uzb_Arab="Uzbek (Arabic)" _uzb_Cyrl="Uzbek (Cyrillic)" _uzb_Latn="Uzbek (Latin)" _uzb="Uzbek" _uzb_UZ_Cyrl="Uzbek Uzbekistan (Cyrillic)" _uzb_UZ_Latn="Uzbek Uzbekistan (Latin)" _uzb_UZ="Uzbek Uzbekistan" _uz_Cyrl="Uzbek (Cyrillic)" _uz_Cyrl_UZ="Uzbek Uzbekistan (Cyrillic)" _uz_Latn="Uzbek (Latin)" _uz_Latn_UZ="Uzbek Uzbekistan (Latin)" _uz="Uzbek" _uz_UZ="Uzbek Uzbekistan" _ven="Venda" _ven_ZA="Venda South Africa" _ve="Venda" _ve_ZA="Venda South Africa" _vie="Vietnamese" _vie_VN="Vietnamese Vietnam" _vi="Vietnamese" _vi_VN="Vietnamese Vietnam" _wal_ET="Walamo Ethiopia" _wal="Walamo" _wel_GB="Welsh United Kingdom" _wel="Welsh" _wo_Latn_SN="Wolof Senegal (Latin)" _wo_Latn="Wolof (Latin)" _wol_Latn="Wolof (Latin)" _wol_SN_Latn="Wolof Senegal (Latin)" _wol_SN="Wolof Senegal" _wol="Wolof" _wo_SN="Wolof Senegal" _wo="Wolof" _xho="Xhosa" _xho_ZA="Xhosa South Africa" _xh="Xhosa" _xh_ZA="Xhosa South Africa" _yo_NG="Yoruba Nigeria" _yor_NG="Yoruba Nigeria" _yor="Yoruba" _yo="Yoruba" _zh="Chinese" _zh_CN="Chinese China" _zh_Hans="Chinese (Simplified Han)" _zh_Hans_CN="Chinese China (Simplified Han)" _zh_Hans_HK="Chinese Hong Kong SAR China (Simplified Han)" _zh_Hans_MO="Chinese Macau SAR China (Simplified Han)" _zh_Hans_SG="Chinese Singapore (Simplified Han)" _zh_Hant="Chinese (Traditional Han)" _zh_Hant_HK="Chinese Hong Kong SAR China (Traditional Han)" _zh_Hant_MO="Chinese Macau SAR China (Traditional Han)" _zh_Hant_TW="Chinese Taiwan (Traditional Han)" _zh_HK="Chinese Hong Kong SAR China" _zh_MO="Chinese Macau SAR China" _zh_SG="Chinese Singapore" _zh_TW="Chinese Taiwan" _zul_ZA="Zulu South Africa" _zul="Zulu" _zu_ZA="Zulu South Africa" _zu="Zulu" phpsysinfo-3.2.5/data/osnames.ini000066400000000000000000000010351265516077000170120ustar00rootroot00000000000000[Android] 1.0="Apple Pie" 1.1="Banana Bread" 1.5="Cupcake" 1.6="Donut" 2.0="Eclair" 2.1="Eclair" 2.2="Froyo" 2.3="Gingerbread" 3.0="Honeycomb" 3.1="Honeycomb" 3.2="Honeycomb" 4.0="Ice Cream Sandwich" 4.1="Jelly Bean" 4.2="Jelly Bean" 4.3="Jelly Bean" 4.4="KitKat" 5.0="Lollipop" 5.1="Lollipop" 6.0="Marshmallow" 6.1="Marshmallow" [OS X] 10.0="Cheetah" 10.1="Puma" 10.2="Jaguar" 10.3="Panther" 10.4="Tiger" 10.5="Leopard" 10.6="Snow Leopard" 10.7="Lion" 10.8="Mountain Lion" 10.9="Mavericks" 10.10="Yosemite" 10.11="El Capitan" 10.12="Fuji" phpsysinfo-3.2.5/gfx/000077500000000000000000000000001265516077000145205ustar00rootroot00000000000000phpsysinfo-3.2.5/gfx/ajax-loader.gif000066400000000000000000000006241265516077000174000ustar00rootroot00000000000000GIF89a+ EE! NETSCAPE2.0!Created with ajaxload.info! ,+ 2˖؃ V˅6XYf'}ޚ g-Iׇ.ij> 2L! ,+ =Ď acǬ|adʡJCJp,kͱ$eoX}N,bRǯ! ,+ =0acj[o yyԠ Lc6R50G,bR! ,+ @˖ؘ~eL4GQ*t'Ů6dC]+JvE`";phpsysinfo-3.2.5/gfx/ajaxLoader.gif000066400000000000000000000110631265516077000172620ustar00rootroot00000000000000GIF89a++󦦦徾̲! NETSCAPE2.0! ,++Ik%˻gvH3YdRn3CT9P#p$a0&APL@Rʭr hvJ= V"x !+I <G|o { &rO'~0qk1& fRN|ȧ`J;1) V : B2 Z5 Atg (y4hdpf(B}o0-,89'J.1yʛ'@ q7axYm O,}7 |Z pN" Ԝ  , " d  !C_!xp@ 2*1 n@@ {$ AĈI $$+YJh&9`rK^"AЉP =xVIJ0  LrÀZ  i[ M _؈"! ,)+I49֍0VhX Gi=W8J@,(&0T)Bߍ9A8J$x W`K>Y+]Fv6'$hU ~w<a_ Ylbu~jXX< ſɽ ҬP G  b \'ΑgA>}\ 2"4@s(4 @`b0!I ހ&m hę1$@((Cb & N'عji^leMNjI j 8 FRܰpN sU! ,++Ik 8{Ϛ'r@i[8nyeb :VFo\f R$fՠ(aK"*[AIYA $⺂0{0{{~+zWz}"z?+@ff @ 6 _~  I_  X  Xң X } *$f($`G *W= 80dXNG[Y$<F>|@"/6 #8 "uX QMpTmR@+') jZf!Q'! ,++Ik{Ϛ'WfLHh0î.:&ûQMr邛!'#!X_`pރiN]I_ n@7Lx`1 utj zb e$tk qtwHGH Hf#´ŷΫ};; " ٦" q  Aٲ x *(fM,,!Ch <$"$ܼFD,., dbdĔ$&$464  trt!, 1H*\ # |PbC @aƊb1dA#K+t2Ö._j93gM#sri1h B(` PgĠ.aD/ g3l۷q2aB< Woa}- X(aCX Xc̙%j2PҞ?W,bl  ƌȓ+_|.Йڜn2 ;phpsysinfo-3.2.5/gfx/blank.gif000066400000000000000000000000611265516077000162730ustar00rootroot00000000000000GIF89a!,T;phpsysinfo-3.2.5/gfx/body.gif000066400000000000000000000010471265516077000161460ustar00rootroot00000000000000GIF89a28@<3?!,2pi('ͻ`(dihlp,tmx|T r:ШtJZجvzMţr<`bzn|N#I3}vxygVz\0xōd=cK݉M_1W*,F‡#Jċ3jS1Ə Cd)#S\ɒWIL  (ѣH3ӧƘBJj+Vj: +ׯ`*ٳ]Ȣ]˶nʝ%Lt.߿ L+xHCLʘ3牜?-04ӨNͺծcˆ{j͛-vO<μP:N]سA;phpsysinfo-3.2.5/gfx/bullet_toggle_minus.gif000066400000000000000000000015551265516077000212600ustar00rootroot00000000000000GIF89atrl|Ԕ|~t¼|vtľ|!,J H*\( ‚$JX@ t $tЀ"0ɳϞ;phpsysinfo-3.2.5/gfx/bullet_toggle_plus.gif000066400000000000000000000015571265516077000211120ustar00rootroot00000000000000GIF89atrl|Ԕ|~t¼|vtľ|!,L H*\( ‚$ $2q0^A ϟ@;phpsysinfo-3.2.5/gfx/close.gif000066400000000000000000000001061265516077000163110ustar00rootroot00000000000000GIF89a !, mڊ.sV}eZ(a[;phpsysinfo-3.2.5/gfx/down_black.gif000066400000000000000000000001011265516077000173020ustar00rootroot00000000000000GIF89a!,j/?MQqQ`.;phpsysinfo-3.2.5/gfx/down_gray.gif000066400000000000000000000001011265516077000171700ustar00rootroot00000000000000GIF89a!,j/?MQqQ`.;phpsysinfo-3.2.5/gfx/favicon.gif000066400000000000000000000016351265516077000166410ustar00rootroot00000000000000GIF89a ~|NL64fd*,dfd"$Z\ vt,.,BD&$ nl24bdDFD LNLjl.,lnl$"$^\ z|424$&$LJL!,zH*ThAĈ D`Ap0 `%Fp@pdI0`Kp ( I': D@Aї'x@ yÁ8 `ЅhӢ ;phpsysinfo-3.2.5/gfx/favicon.ico000066400000000000000000000353561265516077000166550ustar00rootroot00000000000000 h6 00 %F(  @)))--22""44**FFFttnnhh IIZZTTFFF33 TTWWcccEEETTssTTWWMM}} ss++PPPPFFFPPP[[uu33TTWWFFF!!!LLLrr==,,BBOOJJ|| VVaaIIAA,,BB++;;;WWW[[[;;; 55JJ@@$$!!QQFF!!!$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%""")))******************************************)))////////////////////////////////////////////////444333333333333333333333333333333333333333333444( @ QO111>>>(((!!99GGNNFF4499ccQQ##rrrcc EEyy LLffJJrrrdd WWDD??FFjj ??vv,,EE\\rrrVV jjuu::__]]rrr@@ yy uu++CC]]xxx###]] jjuu++CC]][[[RR JJuu;;__]]VVV33XX VVuu++CC]]AAAEEEMMMqqq'''""aa rrDDuu++CC]]rrr(((ttt((ss __55uu;;^^]]rrrEE CCuu++DD]]rrrZZ __''rr''??hhrrr777jjjRR ``XXQQ&&pp//WWWVVV]]]77 RR11//66BBSS mm//[[EEAAAQQ ~~ ||  22^^LL$$nn22FFFsssooo;;;55\\mmppggXX22%%oollooUU !!!!!!!!!!!!!!!!!!!!!!!!!!!$$ '' !!!!!!!!!!!!!!!!!!,,<<55 !!!###########################################################################"""$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%&&&(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***.............................................................................................---000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000///333222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222555666U666444444444444444444444444444444444444444444444444444444444444444444444444444444444444555888U(0` % us$$$ic$$333QQQQQQ;;;**CCWWaajjddXXKK1122vv CCHHzz qq99tt FFkk mm >> XX(( @@AA nnEE))''GG{{ -- MM EE,,##~~ RR MM<<]] EEXX hh MM EERR ss MM EEnn __ MM EE666666,,,BB JJ MM EEggg  VV   MM??]] EEbbb//]] 44 MM EEuuuEEuu tt,, MM EEZZZ888..uu uuCC MM EE:::++ dd33 MM??ZZ EExx cc&& MM!! EEttt** QQ MM EE|||??  LL HHCC vvSS 22tt \\\|||..  WW'' GG???&&& hh%%RR // 77zz^^HHH@@ eeWWZZiiyy HH%% @@ UU666SS qqxxwwKK 33DDDxxx222--ffooGG##00 ^^mm \\ $$3300"" ..ddyymmEE!!!"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!##################################################################################################################""""""%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"""$$$''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&$$$(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*********************************************************************************************************************************************))),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+++.............................................................................................................................................---000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000444222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222666333q444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444:::m999 <<<777555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555<<<}??? phpsysinfo-3.2.5/gfx/html.gif000066400000000000000000000001361265516077000161530ustar00rootroot00000000000000GIF89aip!,#(2m'8b[ܓid,;0(+;phpsysinfo-3.2.5/gfx/htmlwarn.gif000066400000000000000000000001701265516077000170410ustar00rootroot00000000000000GIF89aՄi܋p!,%P1$u֫`z])jl483P;phpsysinfo-3.2.5/gfx/images/000077500000000000000000000000001265516077000157655ustar00rootroot00000000000000phpsysinfo-3.2.5/gfx/images/4MLinux.png000066400000000000000000000062131265516077000177750ustar00rootroot00000000000000PNG  IHDR tRNS7X} pHYs+ +IDATx FFF^^^LLL___JJJLLLwww ooo  ˩PPPJJJޯxxx===MMMvvvxxx VVVttt777ǭTTTHHH%%%!!!\\\PPPmmm3܄)IENDB`phpsysinfo-3.2.5/gfx/images/AIX.png000066400000000000000000000103721265516077000171170ustar00rootroot00000000000000PNG  IHDR !&Q pHYs  IDATx^;0 (բθ,1,!' W*)`%@ +u c'A,0/$ЍKY* +נטFQ  O t"/](^z3)])`X  &hرwPy<i0iŏ Oxs(( T HSB*XߨUdTHk$/;y(- "   &u.P P+dڵ_X|$7>    /lXڵIזּJqx   0\JqqĠP: j:1ǨJ @g) aOH|@1 Ha0iH;q!2?%R m#*q'".%J}!2A!t&-H04T06<e($H)P0W(n B%dH8 L#0 7M (4 !ی%8 P#gBa <U0Y( ^E_8z'2$?ֳ  , J #а|<U0  W ?l  Ee(,5 4   E(XPR.Ls8 oX.k"  \2Jz8%D   J _ٶ'$2P0A'aٟ 7b0|ϟҘϘS " c*?ֶw:XP"'5 `(7O> ! *),؋l ^Rp0 CZ|21彲aXL  **yf(078 6)!*$E@ d*)l@  `H51 p9`@>*R    I*R5X'P ]I!V8,    +V8P_Y HKw;"˘X.     2ZiՏR 8;h O}wӄIENDB`phpsysinfo-3.2.5/gfx/images/Alpine.png000066400000000000000000000017141265516077000177060ustar00rootroot00000000000000PNG  IHDR szzgAMA a pHYs8S$tEXtSoftwarePaint.NET v3.36%JIDATXGKQwiiHFW]DBc&HQFfhem)9<{q9ncM,,7-ANmǝv ߛ{v &!9yovcm6Wgo%F-8Om a uG^ Ȣ=]ӐY4U#M+ 4]1e~'C/4fee,]IJg`cSs$n,]_?|JGpb q$. &ߖ&IENDB`phpsysinfo-3.2.5/gfx/images/Amazon.png000066400000000000000000000042211265516077000177170ustar00rootroot00000000000000PNG  IHDR DPLTE=|ުEnי~wՕi_ZWB:߭ІtIB@3eKaaEEKeOy4K4Gҋ΁[a@`;5zfݧԏ=ٜҍPSTЈLtF΃6ԑHID<4aZB>bJܤܦxyxF333tRNS pHYs++IDATx ?8 SO   D~|~~}KB#C~}}}~~~}}m}Y 8/Bx5~~~~~}~|~~~}|}}~~[vLAc}~~}}~}~~|}~~H@]00j#3i"~~}~~~|HoGLgr5U/0 W5 P48@I%O~~~t1d10leM~}I%'~~~~}DV=p~}}~~*%'}~~~}~||~}}q_% !~|~~~~~}|~~)%'||~~~~&}~~}|R/J|~~~~}~~~~~~)%O|~~}~}}~~~~~{#$-|~}~<~~~~~~~)%.~}~|}|~~|~||#$(~|~~|}}}~|||*%.~~~~}~}}~~&},#$(|||~~9}}~~~~*%'~}}~~~~~~|~|,#$:~~|~~9&}~~~~)%.~|~||}}}~~~|+#$(|&~~|~}~}||&*%'}|}}}|}~}~~|+#$(&|~~||}}}|||*%'}|}}~~|~~~||+#$(~~~|&|}}}}~~*%'}~~~||~~|&~|#$(~~~}~~}~}~~~F%.9~~|~~}}|}}~,#$(~}||&|~~~&&})%'}}||}~~~~~~~,#$(~|}&|}~~~}}}*%.||||~~}}}}}~+#$:&~|}||~~~}~}n%'~||~||~}}}~~+#$-~~~~|}~|~~&~*%'|~~~||~~|~~|#$(~}}~~~|~~|}}F}~~~|||||~~~#$-}~~|}~~}|~}~o;/\7s~~~~~|~~#$:&|~~}||}f7^J;6s~~~|||,#$(~~~~}} _627>~}|,#$-~~~> E$N`}k$E!~,N2644C ^XIENDB`phpsysinfo-3.2.5/gfx/images/Android.png000066400000000000000000000101711265516077000200530ustar00rootroot00000000000000PNG  IHDR szz pHYs++IDATx '; x '; x ;2M@ݶ=: <&ҽx<$&>6^# ,Ò$>2x#E=t@A?% *a9+f9@?j@@mF+ I+>*?%%(,N+-@@-<+;v .$¬S/jN"`B;ٹ'  46/Z* A/Q  =aV.I&.(>\[=;iZZ< %ôZ.96 B. ǎ (7^\%IENDB`phpsysinfo-3.2.5/gfx/images/Apple.png000066400000000000000000000005741265516077000175420ustar00rootroot00000000000000PNG  IHDR DsBITO pHYs lltEXtSoftwarewww.inkscape.org<BPLTEGڃatRNS'16(Q 5ӶH' ־ AޜNOFIf@0kO/5S 54f"ښ͵ Ä9Gk'}ۃ /*PD%w:@0(oi&m`4&= [Zsi&8Z {bO=ja h&Lx~UJN^23VZ09Ј aoٙk8f0o(b0ULVR&< ҰR\E_ ;D@FH;')վ"H QQ2 U4hSNx:S"xl"`tSøg1YDbQ^]2^~1qcFQ:#.3 3߷ giQN UT$k/UT(sD,`|QAtFG bǦ_* yE (}D}?\׍5ʪiIENDB`phpsysinfo-3.2.5/gfx/images/BOSS.png000066400000000000000000000062131265516077000172430ustar00rootroot00000000000000PNG  IHDR tRNSQ. pHYs+ +IDATx   &>2 =%[JoG>2ΚSC+.% Q6 :/NqV"vY(!ZI.hS"&Q  #hS5" <0 %f缗`-$ `M0   :.ZnX8Wxt]6=  #ya>&ÃiCQA)'+178  fK @3!fD+ #tJ   P@)9`ɀA(XG.  5+*!3)O?(UE+ g;v QA*8_œc#(/ w&  o ,#˥U *)"    aJ*k>  %-# 6*4'  4) |eB!   +$J:#  ;/  YG- [H0 mE`L.  YG-5*=1I  ئiN?(hS2 3ya>WD)@S )!^F,Ɯ"5D% U+J0 ٫hZ  9###̣e僛!=<;V  0V^L0bbb(tK 18 &,;'1aL=&A4!\J0   pX54*u^=! "    3*  +"*jIENDB`phpsysinfo-3.2.5/gfx/images/Calculate.png000066400000000000000000000062131265516077000203720ustar00rootroot00000000000000PNG  IHDR tRNS7X} pHYs+ +IDATx % =AO \0  L®dfy[8-KQi\^q09DcмHJ^$$$138#' {~GH<7:Icae%! KIL1/2##A=<xvz%! %! >2T?3U@4WA5XC6YC7ZD8[E9]G;]HA`I7_I=`J=cK:bL?cM@eNB`PAfOCcRDfQJhQEeTEgVGmUChWIjWDiXJjYKkZLl[Mn[Hm\Nn]No^Op_Ps`LraRvaHtbSudUxdQweWxgXyhY}hO{iZjQ|j\kWm^nZnUp\q]rcr^s_w\wbybxXye{Z|e~g}hdiejjlbmcoprsiuwy{p|r~v}yu{z~}¬®ı³ȴö·ķøŸƹĹǺźȻƻɼȽɾϽ̿ʿ¢ãĤťƦǧȨȮɩɯʰʪ̱ͲέγϯеѱѷѽҲҸҾӳԴԺյֶ׷ٸڹ`tRNS < pHYs++IDATx ጑?CCגƌƑ稌𳑑⌑ґό֑kUfu#<5* ϑב茑ۛϸI 6IENDB`phpsysinfo-3.2.5/gfx/images/CentOS.png000066400000000000000000000022741265516077000176330ustar00rootroot00000000000000PNG  IHDR DgAMA7tEXtSoftwareAdobe ImageReadyqe<PLTEۢ֨ިǰWٶێs䃣9廱Vwб擝7"霕'}(&xY[yw#')86˛An=eąVUѝЋdtaLKذlڞԔkńjթFCj||aL>>gmؼoeכWyʡ.ߞ}}·ģǟ0^^ae ON٩= sTwtRNS8Kg6IDAT8}[Pk( E9-8ABb`EXZfS{/ yv>=wx`zTKSkg 5 4OԅPGhBᜣ3>o8od`.hu [C<0Daq6Ero`(hy5,jQn@/hgUۖlfxc;>@=?@>AC@GIFQRIKH!OJLJSYTLNKZUVNPM [VWPRO\QSP ZSTR"ZTUS$[UVT%\`']VXU)^b*_,`dZ\Y!e[]Z#f]_\_`^1f4g5h6ibda7jdec9kegd0o;l2pgif3qhjgjli?rkmjlnkBtoqnEvFxrsqHysurJztvsS{vxuK~U}xzwMy{xNz|yP|~{R~}S€~U[^`„bĆcƈdljfmċnŌoǏrɑl˒tn͔vvʗx̘y͛}ўӀԆϢшҤԦ֎ש٪ԕխ֘ذڲܵޢؤڷ۹ݻ߫¿³ĶƸȹɻ̽ tRNS < pHYs++IDATx i<111<<01111111H9995Ev51<@<<   H D $     @& "v<$)    x0$ ">F" ' mm`WȜ(.!o$ x,A / C 72 :   !&"      A C .    s@UH> 1&#    uPN9=p   {6C{F1Q!$ - 3%  q?p0 !     e=Fu&  '  ve+Q$   :n6"#  & % ?9c6      9I-   mX}IENDB`phpsysinfo-3.2.5/gfx/images/Cloud.png000066400000000000000000000101441265516077000175410ustar00rootroot00000000000000PNG  IHDR szz+IDATx &nFڒW&nFD , ڒW&c 2`Π>'ڔX&nF0_ŎX;rհW ڔX&nFDڦv&c"+P'ڹ1"%0ڦv&c 1?;rŎX"%+'+b&lw?ڝjJ&Z ,ڝjJ&s+PŎX"+PŎX"ڒW&nFڒW&nFp 50+PΠ?"ڍHK&Z ,7+"ڦvD 1b&+P&c ڒW'^'0 ,&cڝjJ&c;rհW2`ŎX 1ڒW&nF1 ,"+PհWڦv&GڒWڒW&lw?ŎX"+P'1 ,'^b" ;r"հW+&Gy,&nF'^Π2`y,ڍHKհWw#{" ,1С">b?ڒWڒW ,&lw+P&lw+P1%'^&G ?>&nF?w#{"հWw#{1&nFڒWy,2`' &݅&G&ZڝjJ?'^ ,ѤڒWڒWڹ1+  ,&lwڝjJ&lwD"% ,ڒWհW2`&G?&Z ,"'ڦv&cհW+P+y, ,,&ZD'ڒW&nF15b&cX% pŎXDbv'^'&nFD ,ڝjJ&c""'&nFp"%Ѥ ,ڦv&s&G+հW;rհWڝjJ1;rڹ1ڹ1 ,;rD&sw#{հW"b&nFp;r'>'2`b&݅0;r'0%ڹ1ڝjJ&nFp 2`Π?"+PŎX"ڍHK&c ڒW&nFp"+PհWڝjJ&nFڒW&nFD ,"+Pb&lw?ڝjJ'^С1? ڔXС1 ڒW⯉2IENDB`phpsysinfo-3.2.5/gfx/images/Cobalt.png000066400000000000000000000036271265516077000177070ustar00rootroot00000000000000PNG  IHDR DPLTE ^Sp#\!o,{ 0z"j&x8{,.m&6f%5t%3x#;{.7{58j07}.@t+@};Fn5Fz5K~?CwB:E:K8O1O8V+L,P0N9Y;`DLAWDSKUFWRZF\NaWbWaRo[a[oFgIhVlQfVrYxbeefflcknkhmdpmslwtuvxxyrvtzu{}{~bgbtbrc{k}czuwe~{liuvzu}{Ń~DŽƘОХàȩ˫˩Դ°˷ϻ¸ȱءջҽԺޭ¼{G/tRNSS%bKGD pHYsHHFk>$IDAT8mKoUs7cimEDH*"5UK'.;`6EB ¢E\$ˌg朏]ȏ^=W]-FndkiOގֆ 4cH&}m0 J ‘'ɣv@ĖvR>"; h Q@JR7HŅgOWlr4Y۔R8bKޭgWGa{:S(`oS%[,:Ml>}97?q Y'_U\*SX9u僟jK>+)n.IX+k_=q`Q=/.RxY?<&J!2ncd]m´8xw|3t&àV5֛osy'̿%iLZ^NRw@J$I*ej|' ֨8sEǿyOsofRShޫR@w4<@VrL*l7n[G=,.UP&%SS_$[4`*$Wz e+Oy&˼cL^|mķd66Lm䋪 gRBK@a}r n`5+Xb(N 9WWI(r% ё]'iki1J`Eڝ6Gy7 1DS0&bge@HӦF"#Zt 1(DJsC`Ǘ6UuIENDB`phpsysinfo-3.2.5/gfx/images/CoreOS.png000066400000000000000000000042211265516077000176240ustar00rootroot00000000000000PNG  IHDR DPLTE ! ""#$ %! &"!)%$,('.*).,00,+1-,621:65<87?:9A<;D?>FBAHCBIEDOKJSNMUPOWSQYUTZVU^ZX`\[d_^fb`jedlgfpkipljsomuqowrqzutUeWfXg~yxYhYnYg|{[j\k^i^o]f_j_obs`pbndxg|gwi{brjloogsrtvvyy{j{|~p}=ـsvJzpLdwBMڗVԒN]_DeMyEPfXOQYPGZR\TݟVW࢝`ڤbdިfhi㬧qޯsuⱬwz潷¼§ɪȬͭ˲еӸѺ5*itRNS < pHYs++IDATx Ɣ|iil؄yyyyjX^myyyyyyyy>====7=UyyyyyyyyJ========7Ry|yyyyyy}<===========~tyyyyyyy>============7mtyyyyyyy~==============7~||yyyyyyyc================yyyyyyyyyG===4F3=========Qy|yyyyyyyw5===3=======<yyyyyyyy{7==?F=======Ryyyyyyyyy~===3======7ytyyyyyyyyh=========7y|yyyyyyyy^==33======hyyyyyyyyyyX==1_======WiyyyyyyyyyW==1======MlyyyyyyyyyW==1=======flyyyyyyyyyZ==3g=======Yyi|yyyyyyyyc===111119=====78Uyyytyyyyyyyym===========>G`wyyyyyyyyyyyyy{rxxmxv~y{wyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyylyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyytyyyyyyyyyyyyyyyyyyyyyyyyypyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyypyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy|pyyyyyyyyyyyyyytyyyyyy|yҶxgIENDB`phpsysinfo-3.2.5/gfx/images/Crux.png000066400000000000000000000101711265516077000174140ustar00rootroot00000000000000PNG  IHDR szz pHYs B(x+IDATx @ < ; UOj53@F d .O-KQ  ^H`<. '}_#^-(9#0?{U 62ƔJa?$Ӓ=OlW~  *\0?-iN͐\_d 1 !X - c܈P5h-ٟkLs*C#D ca =Z'F 4 +?i?B>h*9/BgJ ?%/   ֥71" ԁk1*|̣(F.͕,,J"O?>@,0: <9x/.v !4@0Høy2 /KnP$h ʣ<>v2p-!:/#G*$T=Fi= P@"5U%=o [ L `MHAQRF ) 3x, ' Fs%; P 3' v_Ri" TU(bm$* O+ G * J]: 3 S3E9{- hP#iQ S#LM=( "/u64Fwy&x־-8*}nQ"yq޺V1K "_iJn'Ot{5S+g  @S 7 BH^nPU% T`F(./z$#(WՎa`0qv .*# {NZ? ~Na/ݞHO oڥc6a,>r*ux7݇(#!@c  +@+m y^&I=2qFC/ԟ'=%(%4$>+&6ȇKKSK-$^@G!T VܬDBU  @s IENDB`phpsysinfo-3.2.5/gfx/images/Darwin.png000066400000000000000000000015231265516077000177200ustar00rootroot00000000000000PNG  IHDR DPLTE,z/IZHZ՞Lav_2?̞R-⊗%LbtiVK/⳹φiwJ4c@вAd>VuhďZcY6cD7m]uȶ㧟cF㟩I6E}8YXmZF?0@חXdsoxOD~Yc0u pHYsHHFk>IDAT8}v0 b @U "v! ?,-~~&8<>$<$=")K`D8, Cγ %)KĹm P;A yhQşIqvp 蛁"Gf7,Ixdc/m;v9zAqxȓ~{60 yAaQ~5LWiLNUkiz*Mg3FcW 5DhY?1nsW'xIA'heTtgܤn8T뛔N=otk\|9~5FT~b `w4JZ2\ndEs!Ϭ0  @Pa:WOŧXܕ}(=aPZB]T`&kn^BQ>-'ضb7s[}EyIENDB`phpsysinfo-3.2.5/gfx/images/Debian.png000066400000000000000000000023741265516077000176630ustar00rootroot00000000000000PNG  IHDR szzbKGD pHYsl tIME 5双IDATXý[lUsvm)1`@Sٶ b$$&&˶#h4%&'Oƈ ၛP. 1X@RmvK9sfgfnrV(PpK }`㐀kOU4.K&1كn,C**s׀ kk"l &ڿHaQl; ꅋg/QYh|ԉ~rݽlK WY`;~U9y L: vxolQNLYр&۾)ff ؅cLc8\2;fڄy#21[#JJ_C F^ϊ>L8!0iI "EWqROPq1!J {nɜe?8U:AJ֟/j ;аxhj!BQM4wZΈ籘?)=5?](]Ӵ(쫦JA~LD8egY;w$*Tp}kւh\n{z,I{(ɼ)&Q}&ú'cfeQ$pa6Y\2X3p-?Id^-[Q_39*$ Oϧs&t=j`"ZB|zQxnf"*kzW~_QF 'ہDMd멛/Sq}e̚b|X׀=jzRxCO?T?IENDB`phpsysinfo-3.2.5/gfx/images/Deepin.png000066400000000000000000000062131265516077000177010ustar00rootroot00000000000000PNG  IHDR tRNSn pHYs+ +IDATx 5 Q aK $7 ")j+$5 6 " & )/-! # 5-%4, 8(& BI ) g=2$ }#=2 v" / , {>$+/73C ) Ea,c1l* |(6F%Yr8CR   &  E  - &: 4<2F&P'!H!J] S- O 6  *iC*+  N#t'PV. MS2U a> 7w7  < Bl&  A `+1o3:y0mV)u'I!Q!o-?* t@!$V)U(2+i2A  |  W1q! $ C*R-E'mA }Dy̮h)?"/  7t֫C m9 8ڇ6 e%x+1}ЊM M.`5 :( bV3kF'ׁ%Ȉ<LfD^*Nw9=$Ii+Y?Ax ʏ< >z" җDց ! vQ!tV& B*>..2_IENDB`phpsysinfo-3.2.5/gfx/images/DragonFly.png000066400000000000000000000034151265516077000203630ustar00rootroot00000000000000PNG  IHDR' asRGBgAMA a cHRMz&u0`:pQ<tEXtSoftwarePaint.NET v3.317wgIDAT}Lԇ7zw?fhk [QiUn82U"v &+RTQ/_Pg.Y+T1nl8s-VpDtEG`xSH oLvHд2S h{nh0ҮP~Qvæ6|h?7ٮZw҃1\@2 KeW~EWs3N]pkm:yޭcgUcjQS36 sWǰqqqn<+ Ҹq <^ascCSG>q%R^^GvjS.έGMM|+ZAQ.]LϿuMEDDdf744C$%%]|qCoԁSn}Kׯ+( F;Ϯ.]pkǦ +L=3g6~QTTW777뎖عM}UQ]Ң5)%LA*YM.}҂4mx?^Cp{Snҽn߾VKZfr@As t`C{3g?=z>|x[t&\PsHA#G~~_yyypi'wC;w:j#9ЯhU7J[+zSh%< xSN>}6l/Yɚ;TyCtYV,OV'Q={jaLVjŊd$k~PM?TCy<#'766V5 h+񣜜+++ueillTΈ*ɓ'7nЉ'T\\|+111HJJZruESSJ֬Ш~hUpϜsΩ/F>˳g~:v옲di8] Ӫ*&99kt5իڸq?RSS1xȐ!^oEVVVeZZڻ]v=0((ĨA]3zT͢+vфh= DDD{}YYYk###Q|CBmOb{O`;C쀅m% @$}NA&8_"`$`VX+p]`!` 4:z`7 2[;%w[5dZT9`0(k| X |fӫ B) ;0x\WdfnrA7 < l,`?P 69}g %@/,f B0LP'p  >! X Q@0X &SR:` }U+IR  @ N 6 6 5U4\@,~ ,@w @HT׀VN Wn) z K`<$A? m ioz E{fA L{&5کWT(픧?N=i-n T2IENDB`phpsysinfo-3.2.5/gfx/images/Eisfair.png000066400000000000000000000073631265516077000200660ustar00rootroot00000000000000PNG  IHDR00`ntRNS3Z IDATXyxTEO۷CB'$C(qQAOOpIuu=ueuwE!Bvw:޷{oU?:D ;__U[{ι)P~/jc2an84s~"L}SïYi~gg( :BM[șS5ǚq8X7|A%\J番_0y:.}v֯{:!Tũ{gW(oda(ƌ1A? IڲyK[KkMmh<|/VЌ.*,Vˀ~+zgMk%EQ֮Y4SP0zŗiD՜uƠ% bd_v~{GQ |nMW,KM33 ++*SSS.X%OÄ ڎ4p˸w6yY(u֮۰|yEAE@p$'`@ph6.XxҮ.F)Us\P㱖vx]]i՘^r)Diw |ӵkUPQݡ0s6r7sEʲJOZ19:e 30j4V75ۏ00{w]_4a \zϕz|r Nv s2eI݁A*D'ԝf],Ô2IB:QlqvH !$$WD\o(qVg磋V4uVoᮋMM^bDYyR=3:xT@zƘRG򇥇.gOX-5ͽo1]}b]n `Ogonڙ޺"Gj++Z-eQED)EbqI}/-_*KL09{qN%6|h\nO '>C2{K)Cu /j!=]t! _n'+o}O 9ز,Kmpx6CxmآGe.gG`XO4sn4/xkzȴN6C"0F2.:+'^ĭz#JSmj`vPPI ES/F)eRdmA$7E鉥48!GO[_-v|LsbzJ&)$=U ӭF ,㌝P$ @9'鲡^ ƿ=vI~(qG.G=2^ *N>+JK>kVAٌ$3Nm6FP}Y2j6=u5.o][3 uUO|ς=YՒb1 Qe#_ĦJ`'ʐsH:- ,GMU_j% h8͢ڨD5f kL2MʸrEȽ=^!;D$-,G jwOc3-ń*ޚpC]z_l[@lG3ꡈBq+ A fF':vs˖/Dfs|sQ{XmHpXcɆ[:W7}X_ClZؘe2glNْţ6\'^^-A2#NP58"<MBquu3'O ]޺Tw8qCH֛i&]/ {Ζ}4䵶HT @Vq4Yӡz{+`9!p%). *3{=յr{87ol!4zmK'<*Xl XFg%#_9: Bb xuƑZ ZqLBY?;$\Ij~`+ygkæ\%Q !X,;!)k8(Zi{;W(2+KYwO[taFEHN͎mc﷯*;Z7r͎$!Ɖ88hk0 IJZ 'W~ƄѨxmL=1QG(PQ T.[bϛ8˗{򿁊YEȍZM~Vsc#(1~Giw=6iHWB# 7}_[5T__;;P,r/8sgiFe}-}ߗIP)NS EN O+rh+PUqh:yS 00!?.M}h޵(r2FE* ,HIHn=„qB%;==ݬScRw9}퇏\eZU%Ss_Z8uȱN^1ڦhzBV5LF &HB,.(` ;\{Pli})=9٥adS1bQ8./,4#\0NgBQʭSBqYkK;fQxN6h(cC.'۶UwH T*%Ss%}۹wWee傦_uΠmםhn}G܏_|9 Q,cn1n:!O' q4B_a2 ` u}e%t ;b1&I7}Ecp\V(d (jNe fQfsX!p2{Iy;PUUU\=2}4W~0GXNffϸ{F[SO7! j2 Pd` Am;7";Ǽtq9Xue>f%6}}cg%eO4}Vs@9],ǔl~olA*Vp^o#G/w[gf GAYٟfta9S >#hϴFv_pm^>瞟39WP5MeK̻ .J0Fi`23 >|C=ptӦͷΚuhL>bS9v  &zҌA) +VآNna_{ݻ  cPuܩ%<T1g9yh.BٓJyQ, [oΰR0@V׍o.K,+ǝyq^? A4X;IENDB`phpsysinfo-3.2.5/gfx/images/Fedora.png000066400000000000000000000013461265516077000176770ustar00rootroot00000000000000PNG  IHDR DgAMAOX2tEXtSoftwareAdobe ImageReadyqe<PLTEE~E~E~E~E~E~E~E~E~E~E~E~E~E~E~E~E~E~E~E~E~HKNQSVY\behjmpsQ\v| \ b 0h0k@t@y@P`pppڀߏǟϟӯׯۿ߿XxtRNS 0@P`pBrIDAT8˅{[0q]̌"2.v"7꜁ ?LޗY-jJ gwZ`MT:?a`J.l`IAໆe}jWdȷ7BCtfG re; 3c3)| Nq :*< ™| ㌅Wq|AA6=BЛp~/lx.ȹ9ÒY)Pqf=$q|S]* %*SB(OKBS&t]xDAs h"ع CFHH/S)0( ~,iع 3BJ9*  r  ٿ 7=+'_J0(37v !> h/=&%_= 23 >z T ^<ca)  YFҺ[̻,.D@   #-k)/ )J+5¸ PA=j:7862y/M9 2,A 2OeRD2.&%  Mc>}GG(TUȯ&,;&"~۹&M :ѭ`106!3n W0ɝbzIENDB`phpsysinfo-3.2.5/gfx/images/FreeBSD.png000066400000000000000000000050021265516077000177020ustar00rootroot00000000000000PNG  IHDR szzgAMA7tEXtSoftwareAdobe ImageReadyqe< IDATXÝi\U{ezd$LȆPƄҠXZeHr_ZĥbqAEEdXH0f`Y6tz[GN${{YD 8H)I&υ(prQ} @;q 8@ ˉT*e&X"HJ)SRʤBz8yؘ>sLFH@FRen׾?06v7Sw ys;D6mr.ZhѬYZrl0LT.[ӓçN<|bD<ª-j݂ ?o;֫DTue,>\?}eSƶ [\u+/j1 UIX_}#>ȳMWt-"/vv+k5g|VϤVxt6\4/aMm7`6-{U:cDuEf>.1_]x@I }Z<ϊ־:xc˿uKTxeLQ\"E. (WH;/來 x)柅ccް#эl:EhmNaAhs l/G44Cx'f<…,Zxq3s}oPJ%/_ly68~k8;șXGG,\27C54% $m]g2\y33f3{LkgS?z͇b2:vH]<:zuhy{~^ASIIX%%ei|2J##dgjru7} fK[[ת%-,'*ū,j`7߶w88 x#@xS.S.)3i).m.d%=dj"˗/nM&gau&#O* baUW I К/<T491k=\bb ;:fxf/=/<;6\,ʅ~ A@ԶIS" б,BZ@>'񎜠<nrr4W()ZtP UAjQH*~OQJfJY{5HZiaD$Dk9]RJZZ X)goYqʐ32" x| 2ts~ @V u6 2zO >ujB661 &u4" FN`׸j5Zx0B%ÎED7dXk{vL Itb ´.k&ÝG 2gsٳ@?p9pp䉦uWV,WW:eJtbfB'BoÅD7$ڱe2dM\|LHhH@suVӨ?}ۏ~zĉ>B׌uW.ݰvUsMLALhB` m0 Ga$usH|K윈7ng5|ghnMvF)'-j4I1Dskgb]<=;xhv>f2_2UKx[hau&E%bKAg=^}G> :߰^bٴHde9vg3ΖFI3^g/,{MWCf]8`fC0[+f ]~۬DIENDB`phpsysinfo-3.2.5/gfx/images/Frugalware.png000066400000000000000000000061661265516077000206030ustar00rootroot00000000000000PNG  IHDR tRNSn +IDATx PA9   XF<                *2E+ tXv     cK,I5  5,"  e     L          $'              p  lT=@tGIENDB`phpsysinfo-3.2.5/gfx/images/Fuduntu.png000066400000000000000000000101441265516077000201250ustar00rootroot00000000000000PNG  IHDR szz+IDATx  6ҩFj ~hQƜ݇h-"A)]M!!{@)[L>gVhlqC\J@KL"VR4`,+C60AZ](:0A5  ѳMnpLw xx \-"]tNudm,] t  p  0Rix |   }%P  _x >7   pv        m 0 ; [&mw 98n / +DQyIENDB`phpsysinfo-3.2.5/gfx/images/Generations.png000066400000000000000000000061711265516077000207560ustar00rootroot00000000000000PNG  IHDR  pHYs+ +IDATx                   ke;? ?>#GK  iP}  5- 453) $&!          )5     YOKKIENDB`phpsysinfo-3.2.5/gfx/images/Gentoo.png000066400000000000000000000035421265516077000177320ustar00rootroot00000000000000PNG  IHDR DPLTE83,lknnsntopmrotvwy}{z|qqvswtrrwwyx{z|y~zz|}z{}~~~}|}~Ȁ~͈ł̅̊Ȋ̉ʍɍɉЋю֌ގَޒĐїƓΔΝǗВړޗژٟכ۝ً㊊匌⎎䏏꒒ᑑ䗗旗镕홙坝噙ꜛꝜ钒ԢƭɠԤԠ٦ٰɲ׳޳ܴݺޡ楥碢衠젢즦诮੩骪ꡡᶶ⵵山겲촴뵵췸㹹鹹콽6KtRNSfYbKGD pHYsHHFk>IDAT8mwx qCu(UZ1jS{qY; Hs!4hJjqMJ'kҧ~~{ڭ-x".-˅[9ϔW w(ِX% pzk7= 04E~S x-fPc1ܘ[ VRLt\*FDпbpde`!JAD@ JX$q DtP76m߱V#KAD>%81(zhϨ0 $a8t& Ap]S3McOlu;="&jW  h>Ê@>Itw9T,mZz rl!w:A59 &͞ﺀNP&LeD&oCYu PD 5&Z3okAvd4h2T,R p{#R=^;0G2us&-SNq䖿`QT"ѤmZgq&mZ1LJ0eHߪK޶DɀR_cH/l)B52sdmGp@}۶ңTO^-{L{HthzӯeLIENDB`phpsysinfo-3.2.5/gfx/images/Gobo.png000066400000000000000000000042211265516077000173600ustar00rootroot00000000000000PNG  IHDR DPLTE$/%-2-91A>JHGWRNSua\NwfqjeRmoes\ujw܉njlfg|ܵd`۬kbGziYzd۝xOzވx끊U\ث|ojٻ{uP]v{|dC~D=їeSÆ푙C|߄w玢7p޵켗ҏD[2є}ޑcܕ͚lĜᰟaN`ص)ǧ핵֢U+߱ag~!Ȓ໴ a4wޮѴtZC-Ѹ߈2 ֽ]{B΢u0RF̲\ݭiZmо]kn}uŕItRNS < pHYs++IDATx (> cc jj% '!^]q!Iq"]*G?h3=RRR5$$&&ZZm/:TTʈʈA\@OO@OKJJKJOS[p׸b|ffww~އ@s⁎aIENDB`phpsysinfo-3.2.5/gfx/images/HPUX.png000066400000000000000000000045531265516077000172660ustar00rootroot00000000000000PNG  IHDR :R pHYs   IDATx @::%  տA d_ |**( ? )NFA,WW!$Nz +A+ .~pQ##  DY UU""&%++f x >4U| |""vv*$*5?>7  {%%SYYI @@ o&&@dd p>>~`00x$ $ 33""ZZ.VJF)^?$0((s"G    o--? N""nMMxxu    (E?33353 ( B 44?V GG(?ԁ@>cGGgi@A@[Q.eP @A%% ؔIENDB`phpsysinfo-3.2.5/gfx/images/Haiku.png000066400000000000000000000101711265516077000175340ustar00rootroot00000000000000PNG  IHDR szz pHYs  +IDATx 2^P*Eʳր@2^UyU' ~2ef2^m]8 m|9+X+uj2335% 4}rU޴&I% gͅ]֫] C )nA s 2 җu9;CDfs +%0cg2k>EK1O&, ;+FХ% + oD%!M3+Xq($O2S"Z  E"7 " 3233ֿ_.lzϾn2^D1.j    2UU #+X m U2LfmoxL޴2 ͥ3 -  1*233@@)`/M#yV233D3 !Sx3q"q/֮u*j.u lG/233NBttu m~16,#BYsvs k[Է QU\:ΛiBb7ڲ23f% R+`#r "L3* C j/zδ$on̒233233&`ٕh ]g,[qM*ˌ,2Lf ߁ !dΦ}S)ZyͨD9 , 023f*U_PŨL*̴9#!Dv&]Yuؒ*?2Lf͚P g>_+ w!ݔ 2^޴   <} 2ef23333_g&V (H2e31! o8$]32vBħŧ  ޷  .efY  %.LU133e2^+"2UU@ &33333A@9 /+23@ &3 I$$ 99  3@.ڸ>IENDB`phpsysinfo-3.2.5/gfx/images/Handy.png000066400000000000000000000032071265516077000175400ustar00rootroot00000000000000PNG  IHDR szzsRGBgAMA a pHYsodtEXtSoftwarePaint.NET v3.36%IDATXGWkle.r `CBLL$Bj5Aݝ1.2:6`[~ֵtڕtoweWٛyT|ETy*Owᆏ}g˪V]¶Z쩐BdߌXwarU3(5GC(p}o`,S$U*.# #6_11[qCS #.L@[3Ř?l-4,0a`;UsրHxlDn0u3Xq #uVI (s "] &1kd+NH.AiD|sӴXvvD#a|Ui¬-)R* Ƃ%Y2fJx.We Ĝ1܉0@ߧLZ{ S4  vP8E(2=xWوGhl/1`_ ŅW[}0T0?U n <,^H7 ;>4ڱ._(2s ?%^/6H4[:QeMn-:ʷi$h$?F'^;Ck(3ReȖPp$LV.̔3%^DȔlǛE`u˘Ne|~&PU54goj&ƍ@|pH\<Ӈk7\~mAWƎ(9NĎQX}J-0T)!ة'8%a9={ĘmTx۩Zp->F@ hw ULSY>"6ԴQ'ӏ&ti@vkmb[eH[E}!W {GFgD1pX pqS^-!¶I0 U J3:-:8z`y ynA7ӣm=KP5wna }xG`ADêz<4T S:-Z/Vl*G8n\TZzP%|;CqShiOE-r#EftDD@rj@NnUͣ2m:Y,`BwzBJ1>ŵ[s8Z2֢M̚(i) +eioٵ,)WqE-/Xڅo4zѥdj1lt Umiw3{;!*6VYJ ;.e4r7 LW׮_6 ~ Ċpc(Q!F '?WVD, ;Jvge&jJGĪPT+!x٠;{^g~͛ǏE.AZT1`gQuF'>|iYXPA*:elB>Kqn\ d|8_ZaiR.r0v9췝bY}qhi)UtTP㶴њk#}Ny`$Hfdpl'Bh7j  Jč@ԀPVoV#JEej5f+0nX釽J*``9v7j 6h6UB~v$}|=,Wǿ̾?,,rf\I6< .G>?9=rw<$v /U`.lP4W>m'#T$[ڐˤ!*iO= ;LymC[-;hoq̗bt8 69;,$Zѯ["|_;Ѹܥ|z攗]^DO޽J8!u蓘ݻ}r't׍{ٳs\~l{<*gnV9'C~HH_+^,^2-@DYX;@K]D,ƒ/3/Iqݗ3R؞q}mv߲[l)4;~5_B}X|.<X r?0yDWgV/?4ۓv/k㮖*TC,OG?1^]< H~Оx>hՍ(Ep( vl>q^O9"O6X_\+Z ? =;YgªȖdBlO :D{NnFN#cJ5Ҵk͛GC+^W$am9Yp,Qy~D63K|2FfYIy9OyÔk.V)3DtXpu=I#$Օ  =ů`u`-܉T /ؗvf[1L1-H1MtvEj}`zr4 {+ ѡCk kO͢/4A/s$$hSyXDI\1{wqoE&'0t7 c8*2.WpO(yBƩk XᗇoHض-׹ܪJ\2ĻR2 ~6'KThҝcjgC5[JYDO!\P5Lrofi`AL%X#QTC}kmALA.` f7V r)jo Æ Bz0'&y܈+D DbS2}$ Շ ]ܜ燖G\#[Dod Qz YWqbɆHVqH׺5@JĔ[ǧw$ޓdUB x\`!@ d^]heKb7MDaӬ p ty̫U@Ua>b7M,;A8~ٿ 2V|!9 q=3+wgZS@*6ܱL5_(ݖӡ`k@!i`36g.cpK\9D0ː̳NբDTnM۫4ZnuR+?3i6;4a4-\q9Q‚Ll]5eCnfpw; X]6?6J1l[=Ja [w Tܒ/R^aVazp0!oHP@" :4 8 ܲ(Nk; w=wicZ#lފ* #2,3ћ ;'1f-o1OϮѶ\ ("ׁv`@]"fGOT%mCIy?ʾ23j@=2)fi2اvxKEZ^ꀀ4]QݵC }c ޓ믜KG3JJ}'(Iv j̽g.Y 릾?`+HO$`-^4X2Gc˝5/xBTDڌ隅s^ŕTP{[Y8$sDO3LyzmEOQ@xF@:+P qaQ xJa z>?t ~ c=>|b? }LV{#Pc*WI#S=R-;m*Yn7tl=s>Q+G P&*GŃW8g&lvQ. jo>h]uU"ӓ>XC3GZtNG &D? \IY6'k*;*8|Eq + !4`rH8Etzʾ}1D$*{[G5\QE`QL9t27K [K 1vZ])v8񾅈:EUpF[D7g@Rog'.4t`2lU),,pYҲKIof&v =iUSOt,IʛgIENDB`phpsysinfo-3.2.5/gfx/images/Korora.png000066400000000000000000000042211265516077000177270ustar00rootroot00000000000000PNG  IHDR DPLTEBA?CB@D=BD>BE?CEDBEECFAEGBFHGEHGEICGIHFJCHJDIKGIFHIGEJLIJHFKMGKNJKILJNHLNJLJKMJNLOLNKRMLMOLSNMNPMTONOQNUPOPROQSPRTQSTRTUSUVTVWUVXUWYVXZWY[XZ\Y[]Z]]U\^[]_\^`]``XbaZ`b_cb[dc\ed\fe]gf^hg_ih`jiakjblkcmldnmeonfpogqphrqisrjtskutlvumwvnxwoyxpzyq}zl{zr~{m|{s|n}|t}o~pqrstuvwxyz{|}~¹úĻżƾǿ¨éĪūƬȬǭɭȮʨɯʪʰ˫̱̬ͫͲέЮϯϵѯажѱѷӱҲҸԲӳճԴִյ׵ֶض׷ٷڸٸڹܺۺ2{/S^싍%%%KLK,$!FDGFDG%'$ &  ѯgSNMNPM쨨T{Lr??>az==<sgklhfD=.B(VTW]H7##"BBA;;;bda,.,ikh`b_HJGegd󵵵JJJ|~{ fff;9<VxLZIENDB`phpsysinfo-3.2.5/gfx/images/Mageia.png000066400000000000000000000057711265516077000176700ustar00rootroot00000000000000PNG  IHDR U pHYs+ IDATx _6y@ *@`\ #&3-ɤc:  @Ou   h 3 6[WD4UU*U֫  "Vꀀ3-3  }T݀@^B 8* %݀V@f5 (Hb UA$ $6Wf@m,rڀU+^f  uU+@ 0e tц@Y  0 N $)v@s& Ox 9-&hF"oն\U7'l8Gf>@@Yg>Cx@3Ug+ggff2 V* jVVL + @V@@:3L-%jJhUobX 1 nU+X&U3mmYVmjC5+VUC CJ++U+V,V @X\ b1VV])  !"5U 1[@)A( +g@iAUUJu] U+vUMB󰙆VՀVU UUUV #qe2IENDB`phpsysinfo-3.2.5/gfx/images/Mandrake.png000066400000000000000000000007031265516077000202150ustar00rootroot00000000000000PNG  IHDR Tg0PLTE":y'^vHlM#tRNS#]bKGD pHYsHHFk>IDAT(c(.R*'$&c \Țl=PΙ0GVo}j?T@gVZȪN_I®U@]_=bY`& 7YSg( X"h|=X~>DhתY`.#WΜ"2QPrO9 zB>1 Mb}_f_`7|h100فPS-*e\'IENDB`phpsysinfo-3.2.5/gfx/images/Manjaro.png000066400000000000000000000101441265516077000200620ustar00rootroot00000000000000PNG  IHDR szz+IDATx 0+?Nٲ0.U   Q%)9`U   #f[<.& ].I )      d~ -'󄅓IENDB`phpsysinfo-3.2.5/gfx/images/Mer.png000066400000000000000000000026621265516077000172240ustar00rootroot00000000000000PNG  IHDR #ZgAMA a pHYsZ;OtEXtSoftwarePaint.NET v3.36%0IDATXG{LSg{XTUp0 :\3dtC(Q]Aqrne 2A 0zZREq2Pz]$ B`+9(qPB|8Dd̝@ubjWcQ`c!P@E LU8Uhuy<m(A 4f0#7 xZxU &ۢ &qֿ@@D9M`7&hG$ J# RoG|%'4LQEbU5/^` `#VV;ZڑٓO%d[d+-,H`>#ۿf9 \j.3g!2~Ox:OS Mr]/1{}oF͞%O=A{UP%" 'W?{!Dlp1TOIENDB`phpsysinfo-3.2.5/gfx/images/Minix.png000066400000000000000000000071651265516077000175700ustar00rootroot00000000000000PNG  IHDR ½" pHYs  'IDATx  ;  -   #;    *  +5%)(0&BLC  E 74  +  &9 1   76  5 #2 S/ ,*o /t!$$. ' k8D 6#> W 8 ).6 >v~i " 6 9/1 ;$6} O Q ?MJ%PP'#@ K5^8 `h P/ &0+# UUto$ Ga@,  -9 +>e- )  P+3  [-   g   BVv2 $Q(U%6$@ ^2L1 p  e9 : CG .F+agL(H nf0KB9O C%%+yف9ѮIENDB`phpsysinfo-3.2.5/gfx/images/Mint.png000066400000000000000000000023641265516077000174070ustar00rootroot00000000000000PNG  IHDR tRNS. pHYs+IDATx^V[hUsffggw6eۆ&Fu >A_D G}EE(BQ鋂%hIJK7mp!Mp7u̜t'$%?39g}}' DT* BH(<ϣ4X`ظcZ,\.Ag`0SPd2%I,p#`E X- Zu PI;}{<=,L0N5AQF;>X[_T*mq>t! FX.>7 EQ43A YʱrE qm?^10C#1=2t8"f]Jovp jQNRFJQK(%c2ّͧoý8ysIT'$'0&1}zug,~\.asT`9 &AMnAaT4fXdizw* v <6Xn /! D؄0$>f0 Ehwe _mEsKW D.)bN]Tz+[pb#tbgfM_+lf.OER閥gTLώ4s1Y.L+sny0;1[AآXClT`0i&-qF4UBAփb̅CpJz|bxP.'8ߑs9λ91ţxce$w壩IE$6 *PE$˫kթR-0uH5y:KE`m{Uiٚ98>qs[%6O# -=Y4y0|zJ4Vxie0Dq"!4 & yEj<zstQ1Cv-b?z T(pp/EKj^~ Kpx(u~¬߶NhfN@0n u>\UIENDB`phpsysinfo-3.2.5/gfx/images/NetBSD.png000066400000000000000000000052431265516077000175560ustar00rootroot00000000000000PNG  IHDR g pHYs  ~ vpAg ~' IDATX PGEQ֨1 `0I8MED\P AQ0" QQ T^ag1;}όfM:sUW jEe9ކkq3 8עq0.g6hk]6mQS)MSq' ]iN^ıu szʿf;rs4Jv@}\#~8E2 8[1}KR0+p9{fiٿ6--WlAЕViM\դcW%biEݟ6h2K~NxZdЃWL؝:"wqZ=Nq {Xrco?hwQJkijqgԊ_P۪U-)ʵ/wXjgJTyM ӊ_M$tH\j*vݘJufF8i޹O%gnPKXFudW\M/Jq`,5@J+ K&V,l YO*Wz)&EƄh}"fЎm4O43|rNM$7Aغ kt KwP[]z7Cx&ոPE;h^@+|;q F}/@`}CiԹ4kKVRVqhXЂo$cY7is٬Ȕ" }MHC&WI;_sO&eHD;܏Ψ{?,؇\?~"z%@1s{.]2o~'{Wu5d 9g̒i2! 25Sud/ Ae׽Ub7lV3OR܄\?܂0xz +2)a4ΜA4嫆V5{#TѷĻ?,7 t^E e-ص >Iz&/ڊB4i>xMq;l"P5zISIZfWL!OK>&`i8 g5?}V/tB:Tst^2}t1V 9r± A<@ZA`Ǟg=×x'(x }H:E³~d| J@h{X5T}G!cX|rTb5bDȰwdFR`'kԆB3z.h~C[(gL4i\G\b9B"4nr;⾬fiO{G5w!tnt*Oд tu:UЭ }{b= ҄;1_gjDm}+ZbS̋$/AsIx?D_2la_a,en{p3Zb띐~)yޏy}8)2q0J581)YpD5[bt|=[%$mTJe*hZ6$Ÿ$\J_  mFq8_7w&+m&9x S1u[/# $|;҇s7 @(/ ~wv9ÕC@h^eJQ&zTXtSoftwarexsQp/.)N.,(Q34Gk6YIENDB`phpsysinfo-3.2.5/gfx/images/Netrunner.png000066400000000000000000000101711265516077000204530ustar00rootroot00000000000000PNG  IHDR szz pHYs B(x+IDATx @f i & D! V@@@p3g5 7 s+A@IBq6u( 3 < x]j zN,&&woU g".g7j L ׾*m9CN ȷ#" r8@L Ի./JM i $# U!l@a 6J=E4됇vG tn p (=Q"8>%=,8U; - :0)B#9ʣP #,.  BTA8"6# 'CU k  ,qjhF>', 9Rh˛d1 (/   ??>֯_} %9&  ٙMKC#  [@$06>)C|\" H ::iB$X$-  e;Q|UF&+!K# մ6\pp5jSGv/+   b1J   4jٺ0"6B cH$=I *ǘP &-&LQ]Ӵ>7- $%M֭b\/ D?4gW 4-" >z\b%:>=X~& ;>AFئ  799W"qd?-4&ʃCJ  :7 Q֫,9#  =ۦPgc*/Pu  * YI(K VkW$=  *R =!ggx.X#.Z$X'J&gVr' 9S?( DۦP@ 1=%GE!F #[@f 88 5* J%GYIENDB`phpsysinfo-3.2.5/gfx/images/NixOS.png000066400000000000000000000062131265516077000174750ustar00rootroot00000000000000PNG  IHDR tRNS7X} pHYsS +IDATx AAAA||AA?tt }}AA?AA?AA?AA<<;**CC?AA?*AA?AAA**)AA?AA@@?AA????998@}}?BB<<;**UUAA AAAA?AA??AA @?AA?ϱG TIENDB`phpsysinfo-3.2.5/gfx/images/OpenBSD.png000066400000000000000000000035241265516077000177310ustar00rootroot00000000000000PNG  IHDR DPLTE!!!!!!!!))))11199)9191BBB!B9J9JJR9cZ1RBRJcc9k9{19JRcRkRkZkZkcsRsZ{Z{cgZs{!!!)#!11!=I)ZZb`kc!kk!sk!sw){sq"{1)1)1!&!191)199BB!Z#L!k!1^ {&4J)J9=N9BRDGLkZRRWjJZkpBBs{wRsss{{ƌܘ)19ks)Ɯƭ)3ޭBBƵ1Ƶ9ƽ9ƽBεε1ν1ֵ)ֽ9)!1B=)))+999!)19BBBBBBJJJJJJJJJJJJRRRRRRRRRRRZZZZZcckks{Dt'tRNSS%bKGDH pHYsHHFk>IDAT8uyPQO<&doQd߳URSz%L 4iiAu}%uH^yƙs~gs,z6]Qh]M>v0^v~0Or s0zC4:zô)B-Y\ɘN͎:QMtVM*ˉy;+Sh5TlKĨ!>4rRmjH;tD#TZ !FBB8cEOԊb?y T0wK=BIӃ1"Ct G6o_ q$\YV|)*eF:\ # RTW*ZJtn9Ï.QkXbM~,\DTbULJ%z./^B_ͺKS)>P$p{ FG{Fd:=V=Ct'$ܤv`Ә|rs޵{5e唺&L X}5r#Z!!ph/8C[d EL?.v\UeU=x\?sbO6j:fɋYb<@ -u8\7ށ$v u HADۨuab-|cO=Rv}ѿ 0F''@ f uk-[7-esm?~o IENDB`phpsysinfo-3.2.5/gfx/images/OpenMamba.png000066400000000000000000000101711265516077000203320ustar00rootroot00000000000000PNG  IHDR szz pHYs++IDATx JblGQD9GKiFj.BZ    ! ^iEBZw3g9 >E JdB# ԉ`|H/ۛM"EQ%I9zN@ZL VDEMӵ5tQZVFF0ZRM+ILmGF17F;Hp^7LH/G^BGFGRkyGH3HQ BJ= /NF;+ѪGA]eIųH=,Dz (=HgXMNXxF ) [3Hl77 FCճH=HU H=v#GHZVk-F-U"IENDB`phpsysinfo-3.2.5/gfx/images/OpenMandriva.png000066400000000000000000000042211265516077000210550ustar00rootroot00000000000000PNG  IHDR DPLTEaVVTZ\_ _bc_eaggbhcijidjelng knolmmssntppvrru x sw*ry{z!x{%x.w|)z}(| +~ !8~-A~81(1;5,+.6?08"$3C1%J'67)+5?+G,8PJ02%ELTDZ(5IA(8^@:SYI8Q,;EeXD.=`?U=G\iQcYeCraUN\cQjvZgm~r{_kqvfЂnyjuDžqdׁ}lӆ{ΏÕwғɇϐÞԣɠÒϥ̧ǥȬŽϫĵͰǨȩɼʾдű˼´ήθɼѿ½:tRNS < pHYs++IDATx zzzzzz~w{{{{{{w~~owwwwwww{{{{{{{{w_nnnnnn_joo__oojjjjjjjgjjjjngggggggY`````]]]]]]]XXXXXXXXXXXPDZZDZZZZZZZZZDQQ?SSSSSSSS?<?@QQQQQQQQ@C;@BBBBBBBB;=4;<<<<<<<</+/+77777777'''";;;;;;;;-&A'&W;;;;;;;;8&&&&222222222 F+++++++++'  '''''''''=  > !!!!!!!!!!m .1&&&&&&&&&&T*###########[3[>Es  .*MIENDB`phpsysinfo-3.2.5/gfx/images/Oracle.png000066400000000000000000000040221265516077000176760ustar00rootroot00000000000000PNG  IHDR szzsRGBgAMA a pHYsod"tEXtCommentCreated by DistroWatch.comf6gtEXtSoftwarePaint.NET v3.36%UIDATXGW{PU1>Mc04&:I-H!1QAATG(<< ce}ް˲@,Lk}S{z/fDޙoݽ{]f FDQ.NT"uCS>lks Qё`Ls[omGAX궔0'<"MXv5=@$׷k7 dcY-oN]K X@5RkR^AlQ: ne ޱ?{e /r;ԅs!N ¤=އu,ÂČ2v:"¿ ~x>c.4$ Xzq.*`ܭ N<,ýΥ%npB"{m/Έc#f2Z(_D']ÖN_î`#8t8 #p|4 Zh!(!SעsHJz`h}Cз^u nUSxEHIOR(BC{b)r xwNƜʍ,ĩx NMh E-\$' ;'|~5]&Bp A}w}N!Pn8RٴCCYMm(Uaxl y PMds#; J b!*&ܗ!?,u߰\x1~oxGdFBDQ fXnCDo# 88{17oF׉W"o6E7onciC~#50mE376}=e"d7½z?ܷ݀֋K/=8<|4ywY;ihiU ߅jB`B,@),Ʒ=x\-}q^HDU)1j}oL! jDZJd )T!KRȡ%>JP |/kq4 jfuf6w)So/+ #ad"sVh EK[3M]`49s nc[IENDB`phpsysinfo-3.2.5/gfx/images/PCLinuxOS.png000066400000000000000000000075671265516077000202760ustar00rootroot00000000000000PNG  IHDR M ) pHYs B(x)IDATxL=-"4.F>tI'' D:>M  @Im1:ӽP    (PbRE¹kݒ    V#oaIȻ`ڞ    #%X cdL5u%/B.3(\"=WH,  0dG0X1@@d,   v]()m@}    ͯ ,lM#b#A        '=  ! G4Pm8   ˺ʽ ! N1 7  +3   5' ͢ Us*   Ԩ +.PV"',3   7!#$ jw<@ $iy1   ( Wi-C  k\ 5H *% 7C Q/"2)  ,C 8, H<%{M t.>i'rO$ tI4 :ֿ _8&.&1# Bghڗ   5-!)  litߊ    wj_    kh)> hfLt?  f"M=-  aohy20.IENDB`phpsysinfo-3.2.5/gfx/images/PLD.png000066400000000000000000000016701265516077000171160ustar00rootroot00000000000000PNG  IHDR szzsRGBgAMA a pHYsodtEXtSoftwarePaint.NET v3.36%)IDATXGU+lQ`Ln9mN^ך~2=ݍ!wo cnn[Vnل磲 & ===p>h4 W`||\DEEaqqtDTTT`yyYtz ̽999hjjBaa!7U"77W |JYCBBR///J Tdee!))I٧*@FFFbffs-Dxx8eZpp0FGGq*?G{9?OFANR*Pǹ%''ckx w;oh^__fFXYYIyyywloo-WWWw?rѴmll@JtRNS < pHYs++IDATx    JJ^"H'=OE'"""'^mE'1HOOOO'w"""##w-mmmtj;5OOOOWW"###Emmttxx'=OOWW^^5##%% Httxxx5'WW^^^^^E%%%%I1txxx(5^^^^^j5 Oxx51^^jmO(ǭ'x(6=m^(幾Ѿ(=:gvb3'ܹ„׹'?bvvnnvљ̴bbvߥbb㚥nѹngvٰ̰bbnvUf1ѹ'yMbvbyk-HE1̾^1E'򵅅tE1'11HHHE-=HH=o 5HHHHHH'HHH'}J+HHHHHHH'1HHHEq  ;HHHHHH=1HHHH+3HHHHHH=4HHHH1l-HHHHH'(HHH1>1HHH1?+6 6(4I  IENDB`phpsysinfo-3.2.5/gfx/images/Pear.png000066400000000000000000000042211265516077000173610ustar00rootroot00000000000000PNG  IHDR DPLTE   #"%"#!#$"&'%)'+(*',.+-13/1.02/2313425748:7;=:=><>@=?@>AB@CB;@DFEE=EGDKKCJLILMKMOLPQOTSLRTQTWIVWU[ZRW[]Y[X[\ZZ^`\^[]`R]_\`_W_a^baY_cTbdagf^dhYegdjgZijhil]mldkmjimppogoqnpsdrsqsvgwvnuwtwzkv{~y{x|{sz~o{}z|~{~p}qw~}~szw}z{|¾¬¾¹ĴÿưȲǾ˵ͷϾкվW[tRNS < pHYs++IDATx |GAda]dq-|1J#g(M)|U=BrJ)t+=??7 kR$ : &dV $=?17GLL[hx^IENDB`phpsysinfo-3.2.5/gfx/images/Peppermint.png000066400000000000000000000101711265516077000206160ustar00rootroot00000000000000PNG  IHDR szz pHYs B(x+IDATx  ? 9C0  ƻ( : Hd ]V$!(ELZ  l-.-x1!- a$,<6-  e@ $ CG./[f8wxgx/NXZdF枞G됍0Xu<$y$m  -4Zv )=X -ui   -,e  i%& 9PpƼlihХ sH)eN9@i010 B/-Ѱ wwDI->? 306K K PIzK%+KO2  mqE/4KM0MKGL %x<Mj\-٘   &26- v#  m} IOi-5 "%| p}ǿpJ&BG*/Z   %1 *DHZlw y(i!\%Q Ǘ7=9$$)KowB> ;- 7qiȵ]) dM _b+<> %|%"&   33%yٵֵ7W_ V@8+g4 )+請9YC͵uV ;(9*   #ct4IENDB`phpsysinfo-3.2.5/gfx/images/Pisi.png000066400000000000000000000042211265516077000173760ustar00rootroot00000000000000PNG  IHDR DPLTE    !!%%*%*'))"*,.-&1.32+v|66/}97+~:92>;0A<, C@4 CC;GD8GG?LI=LKDOL@MOL" $'QRPSRKVSGQVXTVS.*TX[[XLWYV\XVY[X/208_]P\][6]bd@9ac`hcQGih`gifniWCfkmDFkmjHtpnwr_PNrtq|vduwtSU`UWzh[]]]`ndrhslgpmqvzƄ|~߈戩뒫闭靱ۤŭ쥱ꩳݲȹɾþ¿âɿ¢úﹸťǾǸɧʪ;ιƻϮӱ;Ҿ̿λ׷ٶӾٿotRNS < pHYs++IDATx %)p=Zٽo=)[Z{ف%F%0ٝم\ሚI暾@蹾x$%\[C}ڑ٧؝<::5q:::,S:m( ο15 |5" ؀ιW'QY23GΫ5m:QqvKQQKYΡG,,,gzG::5ٺdѲ)f1:.^ز)|sfkFټP+VՇ׬+?֭ƤRM%w?CN{IENDB`phpsysinfo-3.2.5/gfx/images/Porteus.png000066400000000000000000000101711265516077000201340ustar00rootroot00000000000000PNG  IHDR szz pHYs++IDATx # 0#  ` 0 JG!  o Ze01L$ bcv?E+ZUx=k,n$$| ;JTӽ%$ x|{2WUü!6T<! dx||k!ə ZV)gCOj YXy*5 .iZhs/*_$uVn*DB*X!ܺvSo#eU4' vi}/Ga8z  k_V}9H#xMz < [ &R!%g e;q03G٣R& 5̻"!F9    t74401|\_PlNf+/I hEtIENDB`phpsysinfo-3.2.5/gfx/images/Puppy.png000066400000000000000000000101441265516077000176100ustar00rootroot00000000000000PNG  IHDR szz+IDATx f:఺UT:6旙 "ZR YW:6S m Q;KN0:HL* '%LJ(* qO-o 63?H:ld%[ 0ʁ .;-wS)&.; ۮHB: HIy_],L?#wHS@ tjm$C?8 H<=L: JDeq\$#*;8`, rC?B>  mϖ;jgPK:2C`nJB*=2 lj. LWg} ML=6,, tpb613>yRQL  73<H^Zz{&BA5Ĩ NHKBErp\$n 䥩̺I5TGT  =cY\8<D=A8KVUu 4VQ û_, đHe_I F_V"' N*tn?)P6UBS!! QPb0,_Iʷ iaz  RRRR ^yVc1cI U;M[5KL;]T5 wD*|Yq { ҐHF]]7LQk%>/3Si ;qo887XVRr"!MjYT;Z ŷ8 GRӁ94ibc9yhi$キwG@$ ȄA}\('߱4;5#&]"qY I]Zr:zșlRL Z{ygIENDB`phpsysinfo-3.2.5/gfx/images/QNX.png000066400000000000000000000101711265516077000171410ustar00rootroot00000000000000PNG  IHDR szz pHYs++IDATx nJg4Ue:  $V( _p J%ގH  ##  6@ $^^j5SULkVh !VU& b  owӫVV  J !Je0 zA* ef7$@+ @+ mrz IENDB`phpsysinfo-3.2.5/gfx/images/QTS.png000066400000000000000000000033511265516077000171440ustar00rootroot00000000000000PNG  IHDR szzgAMA a pHYs  #utEXtSoftwarePaint.NET v3.5.11GB7eIDATXGWoe]; x{q 4FYB"-Q xED&`"A2M\A#F9~oӷMS|}LLcwi_gQrj;_?%nA(ǔA}+9|99ɘDzP֕eP| `ujނjoU&tnC[}UpQ3Fsmܡ>#Ix I φ< Jɘ皚u^~'I6f#ǭ9^xDCzHeƺ!=c&q>ަ4+DIgQ6m;## 6)x[9BPj-Ȁ&՜5k3CJo%\k/*zoHRj\kѧaꯑ{qxOH|$!nH~dXT2  BkL ;w@ wslC,1~G 1qg+5pE֒K,R C\dJkެ.3v"Y܌xs+SGpXx (_h<,$jxJ`T=#jY4V2U m1aX 0h90hnzD3Sp?T>EU8V\3g^2n l <"(/ҢG@9#@L% uSSg}MROX?K&D@zP2[_6qCYI7w(.3ۑN uИR R*ߴZ̺3 p8zn*=gp{i݃PcU3+$}@L82WC/фer{1cvXۇg?4B :{(,$e9,ފIU{KN` fP7<)@Z/[pu7`_ |-(sy3K?kF8?ل"R~4+G@ůBd\t6!r 8X7ox ]> V >¼O|$NBaL{OcIU&lҗޞ꽬y)cA/V)$=A:RRZ()[NZ!3`_\r`C"%"Kwub>lԤ "0_[V\ފo,xm2=&^!y9ɓ&m.Jj1O#yuL:Ge.4jLH9!{*<>xھ-xR'#qw‚/ob0v<(j)ŬHf_YUZ !~7U+5T)^7hZWctڌnv[pیò $ ʦZr0 2ä1@ H-\">S t2OPA8/gDhCIjGLj"scjTA}wA+}IENDB`phpsysinfo-3.2.5/gfx/images/Qubes.png000066400000000000000000000017231265516077000175550ustar00rootroot00000000000000PNG  IHDR szzsRGBgAMA a pHYsodtEXtSoftwarePaint.NET v3.36%DIDATXGOA/_ ILPV#t[0-X*6yP!"vqNNp/i~ٙŭ Qj :(3.SM;er1W:ϫiio' .vZl!.I '8XE0)«Wo?WkQi)eK[b}yΙ0[QkBv3ckuO yhNZa-C{ 4M Kuka ֏&ڡU5oRBn۠V) L h;m 2owl0d^YMApIIZoI&;cqӝãIpE ¢7":4])=N\]lMոd%;2IòSd) ?h ж$j4).,ЂuQًЅz UJ9)U0KF.C\ygbkOz'LmflIS+ \, zVx.J 'v<xU-s Rg-Lƨ~ S`l3To)]‘]#Ƹ)d8|Ӽn!ySMsPXн8oQ=}h<è+ބ>vHN_xa:"gQ=$ ki]lx0O|] ] uKT}FSD X]ZhɝQKh~Rϼ7i8IENDB`phpsysinfo-3.2.5/gfx/images/ROSA.png000066400000000000000000000101711265516077000172370ustar00rootroot00000000000000PNG  IHDR szz pHYs++IDATx ́ 33z" vzn,3IzUU H#TWn79 WU=" 堬7+$&SIIɁ*\41vW#"k"( 3=jbUu37DƁNmg?  02m{D@@@Ɓ' M   {8An@@  @(!s(     $ m $+'E    & +2 j##uЁUU Et@e   7 &) #    =@@=}*G@@́ J+-nW    D!l4:36    s EE    6Sffo6p   HMx+3Ww    hN'K    T""  5ai/~    9N   uG~    ,)  skopBhj   d$  C'@%    (!  #  S9)(:       Zc  # 3x AB "  e! " $P ɿ *plw hY: % " "I CV+a\ԾE & &  & + ) 3 " _M    UU33 XRcP_W; =6. . 4 35 ( Ayoxtt!.ү[+% %   椿}4  ց>9UU22qnv   " " ":=lk  ξ݉'#}  .>>0## o~ؖ 0so]<-( & % "ؖ 0Me.)& $ $+Kޑ +/2펻{x{I     辭@I]czohbUUZ>$Gf,K[ ue6A/¿ hcqt99[@@U+0*U0)><UUOl_uIENDB`phpsysinfo-3.2.5/gfx/images/Raspbian.png000066400000000000000000000035671265516077000202450ustar00rootroot00000000000000PNG  IHDR szzsBIT|d.IDATXmpWy۷fF$E(A贎V:NgivFǷje,‡cTQeT Z;Ŋu(-MJ @l6Kv%kv$t:o{9s f64#.灓Ec]Bv$i)oǽ@>PYj5h0ه0]sxpm_pռ%j 4 o2ܗʙL Q h=m>)%BeS6'$8jYОO?DU>m3)%O+!mrN) XWO(}W(le2Г#nSw)ca1[DE'1*pEaZ!h:@@kGMWJ%n9t%mɽ/'`0:"}fp]Ir$)F/$@۽8@  6nobĵG_ol-o _ ڤS;oSvfφxn:1 yek(1(hQH YTt_$Lmqi/puz<}xܸI 88k NHp1'o~ L 3`"\UV1x";Z#!Ma2ҢQ!`a"ti%ْ=ˮjQ63l Qt_+? \rRl ¨{D G6iQCt)AX1k> xRMVFjT:BiӪYk4VVh iM^''Kڵ>&Askn}~Qi" C(JN:MV(Zq˫ne`=W1IЮ\U!QN.7Ƥ$l/I<<%]{J'-%- 4paTڻC=R%4ƥſa^ȞC2foӫ?j`CW>F6lɽWIENDB`phpsysinfo-3.2.5/gfx/images/ReactOS.png000066400000000000000000000057131265516077000200010ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs  ~tEXtSoftwareMacromedia Fireworks 8hxtEXtCreation Time12/28/08Gj IDATXWiPTW61$53ɤRN'q5h5T4 CbFAhAAdGٚ¾;Ҭ\J,;{{{y=ޘf:\f }x2zcd2 0gٽz>`vffouuw]]S"xD"#|>@־ٵ{>#-llaa'e a2Y!~4.]fggiii9<00)*, } D{qP.:l"l1g@[[ۤbLLLh52G3xvgÓ[NJ"Llyt,'&Yww!с b㌃q0ۥRiPk;\Cשz>[;ݶu773פƕ8f\/0 ITjPcc_-9:%[էW.%'eJvoCt%Sd eJ6zL&M7Yޜ^ՄJh}'x >r/}{tA Ul:fAHjb8g 3...6d\s$$$ۏoǵ !oģ2ZAM}}Gi | Np~O+ GncG2#~a#.9hX' Y' |A8| TV5k 8 . p/ Q.6{TJB 6055Ue5>REߦ|Ov[4X_ l;%[5,#vkLӦuby5'TWVr 29/_-Dz^/  J5}|q֪:ZXt#K=kcc8G!"~} d844F9:Ɋ+ޙ#5oonGW-5=NZD|*]GbTu?}S` :c/a99-3"(y@bQ ^IEcsĸūgcGgdn BoBp|:]=po,}\4wsn^ԊHln(n@pl"ȫ2 r#455?!#5g7M4 \ xG&#X,Oh \|a쉫n-'$@Zۂ. (ȕ"^^YYͯB3 Cb)#bdT!-ʂJ=]&GtQS"$҈n*AɌ" "q쨝~31aA;|/WTD[hAKG7މڧ(Cvqҋ*]шZE0:IK~ߟ-xad``~^vF #8'"c։ƎH3008 G|6ށ!ӃzE;PC-ݽ C{z(;aJZjYfC={t̵m ! )L*GY JF12:D(kBNyr)HJ)zIwH ),}K]VBaE\ܗG#C\CGod`|l M#??###*o=}hhF-olE c_ ?"d˶!?$\ ThewruRbRMWgT jQ؈"X* 䓋E AԷvPN <:&# YS;p`Ғ ss@EMI/t)ZM]& PO\)& yyyd)G<&^Dw} ;5Ⴅ#.݌g :s㜮 ߿a?چd21&>}?j"FV~(,(exd\QXc7*2Fv5[ܸ<%T38p`<##H)@ c }C$O54L<4+ UU{$68F3W- a!ݝnܸ<KuM ڴ~ݟ\O DaMAld.+'Pۤ@ZF&Z}$#5# '&d ]ot-oQh8H՝w555"rM8 xQAcrL^߆1UU#.5$W plӲ`͋R;5 A8TQQpQXXX}T=X; sȑ*9yUbI>HX…/KNPPf{2>TjU\?{lmOⳋʐ6yKYyc+:IJ͚멩4SO*o2L8%/۷o_SLq-:dʋKKKvuvj_*&SB]ݳgwhԷtZOwCw? ~d+)x())9LeX`®a;v֭[גkrQ JPPPsww?uҥ͢Ѽwfkזi3f[[[+`X K hժU4O<Æ 7n16iӦd0;SgIENDB`phpsysinfo-3.2.5/gfx/images/RedFlag.png000066400000000000000000000042211265516077000177760ustar00rootroot00000000000000PNG  IHDR DPLTE     '2 " ''"$(!,$8Q!"4%$"-#$''*:&-+*31/://xF239894=/I;5F9PB@>XAGC9UD HHGZF)%!%QPOtBE(///cQ>]TZZXN (%/)&cZ_'']`[0%)1Sfe24va*4.0:MH:=hc`nb`:6620Ajgw>>|hrqnRHJIMCvTT}}~~{qkv{GZS|1]^dZ|,y_ebo`caqznlv{jmiriqq4wryzƙ$~ݓ%ח%px膆]䋋ڗҙ2哐Xᚍ٫Vͭ{"ӹ6훒蝝״Sά樗Ŵꦤ6謥4,)ﭞǽཀJMܼl7$$&vV<ɶŸmmv͉ԅҿٴݦޟݳItRNS < pHYs++IDATx ب{WBcDD@GG@D?(...)3[DDDDDDDDDD3..1(0xPHDDDDDDDDDD=((.((I>DDDDDDDDDDD4*(.1(KB?DGD4(3=DD:4((.44TuD@I?4..(4DG:3(1(.77[HBD4..((=@DD=4(11)66@H>....4:>D?D?4..(0.G@@=...*4?@G?D?4*2.WDD:(...!!!1BDDD:ZZ@P=(.<  =TKCKaNtN8i|&$yg]ɝX|g$j¸|`yqX| `ggq܏q׿ÿLð &­˾F;yVKIENDB`phpsysinfo-3.2.5/gfx/images/RedHat.png000066400000000000000000000007251265516077000176460ustar00rootroot00000000000000PNG  IHDR Tg0PLTE9JJYLNNRccooox!&RY tRNS="bKGD pHYsHHFk>%IDAT]!O[Q᷷đ' bC&0s#s>]HQ4wI߯u`k7wK~g"Co )mB"}P$i _P>PHz#35IV!14My- $IgqG)'!gr,0yT%I[Y+B2n_FоN"לWخnz;^ƶqg=tws7p[x@RHjIENDB`phpsysinfo-3.2.5/gfx/images/Rubix.png000066400000000000000000000025731265516077000175730ustar00rootroot00000000000000PNG  IHDR szz pHYs  tIME  .FtEXtCommentCreated with The GIMPd%nbKGDIDATX[LSw${X酞Rr"-c.:L@EZѱX&u#R *2B\ْd-K˲a(m~9xz-a;i?kӮ[U#yu)5E$A  %+'=B2ov[ɲE:C_F͵kW ?3,txOՌSLvz4$7ft7O! F/0Zaxbf mLK(vFƁ U\ z3GܠqeNf1cތ%_ AZS$M=Bp)Y2rKE/G2޽~򍰀n$HDXx;yyRߐ|^ ,x}[ݥL׾Oovo=4p=dP ! r  /loS k5e*/DKz:^ 9SOYZ:KV؊Z,HVx"+WZvUDZUeHji}جbQiEAB,< }J6%ٯ.06¡"s$~wR,!dbHtD\0#E'?J$KJh!JYXH}^p$8NtvwLѵ/],c <ƹ -AZ̖=監{$qS&^NP -䊤,EΑIp{"o*-}H Iq\`E%Hx0YInII$ܯ儯`xÊ >sO.Imc p ȧ R_!,q$@bUsprWg 1% ?ȅ$1.[_c?J>Fl =*3_iJ?ݰƯcE;->8O My9BvtI(j,uIENDB`phpsysinfo-3.2.5/gfx/images/SMEServer.png000066400000000000000000000062131265516077000203100ustar00rootroot00000000000000PNG  IHDR tRNSn pHYs+ +IDATx   60%5!'U,5 , e          Ҿ         2  '         #+  ,   L!  ,4?")."  @ " "NA   Y9    8$8V ]  #   #1^ *   #     )%2 F V!I   [16I/#$Ն [ 9N N      60    #$  -1DbIENDB`phpsysinfo-3.2.5/gfx/images/SMS.png000066400000000000000000000042211265516077000171340ustar00rootroot00000000000000PNG  IHDR DPLTE32+897A=>@B?EE=5JNOJILMK=SWQQIUQQ[VXXZW[ZRFbeIcad]]``XWbcIgjebUhcbPjlfe]dfcQorjlimldqkjWtwupoqrpsqurufttlvxuuv{wuyw{|{s~{{}z|{{|m~|u~}ˆĒĖɛĚ̞ȝ˛ˣ͟ϤʧͱԺѯͯսгѯ¬Ե˰ٶͲǴ˵ϴѶ̸ϸٶɼԹíѽƾ׼ӿƶƽ˻̶ҼB]ǪtRNS < pHYs++IDATx #oؽfН,r}rյB,rXIX~ßl:d,Cri:%5ff%Z:!0EӀ?+|:CCӔ%5[au|ff+KEE9OrS3&-JliCJ$ߌa&08M9 N;E ҽLXߌZ$cߪܩ&'٩ٿ+!٘!!pZ' !ܻnZӻS&ӥͩN8ʒꬉ͟X곉92r2ॐrƐ$ӒNZͥ0ʐ XrƬԥ{ BʥNͽ'ʳoL5rS+[e e&<IENDB`phpsysinfo-3.2.5/gfx/images/SUSE.png000066400000000000000000000050161265516077000172540ustar00rootroot00000000000000PNG  IHDR szzsRGBgAMA a pHYsodtEXtSoftwarePaint.NET v3.36% IDATXGWWSh:<B8kNY]::3* Tu4v#(yAa E› $$$7jgYk{w9w..?.?[籰4in9kI'lReweOyY'=['X\<&pXa46Q|3Y'|mv/Pꜛti.910U$  0qqǔғ%(:ːQw {ץ_E&@S5arN%"Zn۵Q ˻i"0 }h=؊(fDzModoR#j  g2a$^3lj"*bĈV8|pX'8 h&3o!M|>OЂ-ʼOx\#8\_: pV6 ÃWkB?2#)@l.L@]Q` yp.ŮKhpg%#=6ȧW Fb|ZKO!<}s^"ɹP SH*lc8]}cOEZחfP 6a7Gb4 ՋE>ǐ匨k\4?Nɷ!ޛI$K?ØyB[W( :) ys2Bz6@g k*v X9,[P|Kx{:T<%>>bf睔!xJAel+pk7Awr4ݯ*`+E啅97ϔ2[^^ UyuoQ|GZ DL&S5}5!f3]Z"ާVAXl31,Z$)`$$$x\+8\&&&jkj/// Y8|N*+*565>>>Qt444 y{nnnrܖz---ܖz___555787 ...      $#%676>>>DCD  36JJK36"!$-.,.+)*ցPRO !$  $ܖɼ  z! !hhh//0p ˔wqf5>=6zTR!00 +)%3<@,46+)%0L\_bvq / / - _Ş(IENDB`phpsysinfo-3.2.5/gfx/images/Salix.png000066400000000000000000000042211265516077000175520ustar00rootroot00000000000000PNG  IHDR DPLTETG>>>>555''''''''''''!5''''''''''E> ''''''''PG?'''''''/5''''''C .'''''>J''''F3.>G>>>>GJ?J?J????///-O''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''02#222"9'''<'''*''1''"A''#''5'''('''################H''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''8*$!!!!!!!<'''''''''''?5'''''''G ''''''''> P'''''''''> D'''''''''''/J/ 0I''''''''''''''BE9Q&H''''''''''''''''''''''''''''''''''''''''''''''''''hb'S-IENDB`phpsysinfo-3.2.5/gfx/images/Scientific.png000066400000000000000000000075251265516077000205640ustar00rootroot00000000000000PNG  IHDR #ꦷbKGD X pHYs  IDAThgxe9)B A:bD(] EUwXP, ( JQJ_$Ém\׹g3=D (nPJCbqri)Lt /,29I5Zj%ק|-v.fA͝<(v8 Nw9YУ]p%ҿ',y0 ~ij1De2vjԻ/191˟Kyw絍 +ũ97̼pt|#B^5@Z eB<89`96D2į b3COv šI?̧_( OW~Zw Q/HM 4<5}wִ;ٵn1x{΀`i>Z%M}ei I*ܻ䢶᳔]1!56P&E*\;>\)s H<huN=Q)3&iݏ{僞L엞 }^8ʽ =*cMށ j|qo>v13I~Hl/_-o _v}*0C((b Γ0nNIǖg'?> rGCR#DN+vf&%oR'W(wO6x"MлK[-շB_o,i>\t{]%9 3o|^nwuU$*!:u\ˆ;VU υ o\U`57N$Gp͢럅҆vYy.isK%9[|ѭT^u\Kc^| tVEazYЦYh ,&9>js&~r*ԋ`ra> Q4\*<\= Osql^xÐ og钺oD͂׵ӚO= a_  ! n;iWG]eǤEZ:Ń|4%jlO/IYOx~2OO[YWXc)*~U<;s7~)~'7 ?)\}G9'{k4Eȹzx熅_A*@9cbiW/Ư?{R̄D! ZRʔ{^p0Tˏj +?#ؼ[x#T|kYkcs5'׬~E >Wu 'X>u)mfBxoJ5/>~?lzz{L:7iV)͟B >E݇ {7ʁȾW&> u.eo8_}#~=ǿ.[1gCqOBpH!ٗ0,T["Ω3\6Aq(ӨVX50A8\fӦ)w8ZLV]>>9q .GC”LH3r1LjhXXqWϘ@Ql|b}Ѩ8?w;Ӣ>;  88"w0|TXPvDX{k 81ODtiuC'f;C^UPqr.B- bsdӛIy?S.mW)@`\jҏP7DBa=.AC@DECFHEJLIZ]NPM^_acRTQfafTVSgahVXUcihjdj kZ\Ynlkpqmrssnutotn`b_vpwuxwqyceb vrzz{ xw|}~zyhjg{|lnk~ qspuwtxzw }|܂臈㍏ !ꓕ񗙖𜞛"&+ % ,ݺÿ pHYs++IDATx 333333333335577?d,ȯG7i@3`f1=>.+3ސXa$:`)s=}/Ssh^sWatY=3Ȃ Ly0GK=i4#1b[+Pg ͈0$ [3:G=77& eݻwuǜES9yF8ؤŦzdQR;,!#{"<apN( T'݉x׵vm*λ@wyFUjTcL>DU>F۫WQtM`u(=hDg9!M`T3jFѡ-XV0.CV-=R 0$7-(!%qĩ`]Dn^ G\.NNZ:M"lx;<ŵб U2L<(aJ\!3lTiAԗoHK{ R/{ kSzjU:SH+SJ) lNbSҹ7L&Ha!zij: 5Xm4*]Ӓ{4`_4VU#% r\(@Q Ǿ -Zr/`"])sEt4KXgvcM@,| 2P,] _ڲ!݌A&䗶"jZ+WhWȞ O?9>S7=zDkki"Ns=bFY\; GdN"=ᗋpqE0y( gy5vSW֋&-p/knJUQ$4Jg,dĆuX4oV G 8T@q[,>{ '믐X,E&+ b9dPMX4, PĩTL}٢ڰ%">g]ʃ^Pe Q\8o%̖2*碋9 2&>3b`ɢjbkWC <x  -=HeWO*'1,Z 1*ݧ{J~L@."FIRPZ;U~X<5tԄj_L2@[ 1 iA%f`sw(m5d _,gR%y9c0Xd,ƍqZ9V_K!'cZm(]*h1ZFVQζwi] #"Y ,LLNAvia*\]4c<n+a̢B MTv7}*hGn]1-.Š?7"d0h9˕&/ X{tEَ])fN@ "xkD??/͈4@cq{'| "B猈? 5WOxO"*[SZ!FTulYp 9a>5RH{4[;ٵO5;0BSk~#yAq 7ڠLRpi%Ã--HL@B#H<8]u!v F]}ɉ%;3g={jH36o#8XM!0bIΝ8qyE"R3YEIENDB`phpsysinfo-3.2.5/gfx/images/Slax.png000066400000000000000000000101711265516077000174020ustar00rootroot00000000000000PNG  IHDR szz pHYs++IDATx V. ׿C|6w D۸}ԜVV/^> E?%Hj:r ">@T ( ;+jVV腫=["YE$4g \ T,=jÖRp U :r ErQ VHAu @+VH WC&%U+=  ˥ 1"m@94V!X DNyӡxx  #*uAAA30;  2q6v @ B 9p N  @U @    ̙ Li&ĉwEK7:#pj Nw{ !-w  73fѨԜ^ircʟ}:: 5Os 3>ٌ9/5 Ǝh|YƎ7ÿ jI3i4IENDB`phpsysinfo-3.2.5/gfx/images/SliTaz.png000066400000000000000000000042211265516077000177000ustar00rootroot00000000000000PNG  IHDR DPLTE     "$!'(&+,*-/,02/4637869;8=?۷׹ڵ,ǹYж`޺ݿܼ;ۼG3߽U߼_!ʽ@oÿ4{¾3*a8Ɛ-Ƭkp/ɺ> OрR;֞xqّښo۹oߗ߰g;ϢtRNS < pHYs++IDATx +vR#vy I$E&+(mmmmmmm($ 9!+4#4  efy!>vm&ԏ͏*$ʶE 9 Im9Re ͖Aų*Zj/[R o|9e*yvԙvpmv*ey I4[ Ɇ  IE e4*#&v $ 4 !#RK &yIyy[R4eE* (/ĖȗεW?5v[j8?}՗zM2IyvA7WuM2K=2WЛic2)(;unޜ_wi.:wlP¨pffVVSRRSSVVfppe0eIENDB`phpsysinfo-3.2.5/gfx/images/Solus.png000066400000000000000000000015741265516077000176070ustar00rootroot00000000000000PNG  IHDR szzsRGBgAMA a pHYsodtEXtSoftwarePaint.NET v3.36%IDATXGVOAoxABmn?~ζe B"L7zR^Ɠ&^`"WNhJl\[j쒐K~~oޛff¡~FBʪ>sCã(jD$jC#W}L.,ԷN{H\1kU[bP/u6oRujT3z 4o^`#̵j 1y0&ҏ=#TR/[jy$ԫV ɝL.j5L _ +˶O x5+4` 291bBNY^Gw@Z ;yA`Ӝ ,C@bqkoXzHg2T29Bm|*>*)o?jQP.5}H$ħ8̭ܘlx`؉a] ܀tC#dn**ƈnlk]=8ױ[h'|~u%ܢpgu5K/6F_žYU]A-`h7NwL yGHM16psLeÓ_QU{mR5;k!wݵQQp歙 >>>ܧ){{VRF{TraMOs6h3Y#;{rIENDB`phpsysinfo-3.2.5/gfx/images/SolusOS.png000066400000000000000000000101711265516077000200420ustar00rootroot00000000000000PNG  IHDR szz pHYs++IDATx C(;{P=?9-5Ƕ|f)VHr A1,@qT5# =11=1A:0Z%%Z@ـŀ&tL.9  +π)Ͻ>.'  'B%J8E; G     LrG - n- B A*DG6"7!    -  Lz]GN<L,M=0% :-   &İxi+"7  !  5(oR & 7l\ -,`GQ7(  D(& ++( 8C5 6& [AOU*j  є k   -)           ĐE6%     * L9:-!"0"                 { *       2& -C  2  #  tQ                    -xS4 %R>芭$ !  &[Kk`?          :!fBƘ&*+!k *aH'z_             kH   Ӄb'3#{  X8& Q>xM}Ap4 "Cv?H "m,1U" 0  6+4#27A!$P % J vZ +=SzzIENDB`phpsysinfo-3.2.5/gfx/images/SolydXK.png000066400000000000000000000042211265516077000200270ustar00rootroot00000000000000PNG  IHDR DPLTE   # " & * )', 4!)#5#(3?#6&((%1E3.7V443O5?g=?<`8#Da\@0HSYC$EGDUG8SV,Tp&ZRTQbvP4sR-jU9mV( c#eW&c]M9e.gX]_\>k}dfc_"f2Tq4vBuZmf=wyn[i)oqnpPaup2q=k"H|7@L`g|~{lx&w+~DOAšNG.h_f_vWFfHSʋ6׈6ϊ=Ŏ6Owi; +HƔWwԔ?ϖ?ޕ,a׾Zhƚi3ЛP\+#ڜ?ڟI/բG9̡|ĤyC1פdM=ӧXh<Ϩhps屬>LHFҫvbTmZR|MLOݯVFԲZ󸳱rjRJI_\޷eT_mbݷ¹Uĭi_ii|vݼvvsۼmx}}z}ɀ̦Сפرܫ=lPtRNS < pHYs++IDATx Хwttxĥtttrvǿwwwttv٨tttm٦xył~wăٌӻrŤӻِ˲ĸӻTɺیĿӻmdR|ِҬmma_ScNŌӺmaaTTucÝӬmmaTSEEggk:PD |a_Tsc)F_TTS E9cV` ͽ5î~F^TE"=98eVżlٳ~p ITE1=83EdV4~p DSE183/dc7 4:~np KD"38/9eV lnn[K)8/.ce}npb[./VeV'>nnbb[ B$ Ice? :~pnbZ[Q BH)\\ inbb[[Q>K# qbZZQQ kY X Ƨ kk? #ܧ J 2 2 6  L_ {-IENDB`phpsysinfo-3.2.5/gfx/images/StartOS.png000066400000000000000000000027461265516077000200430ustar00rootroot00000000000000PNG  IHDRE/PLTE!//76ҡ?9L;3E80=?I6BN=MGDȫB=MVUFMPSM\WQOx\놷LȾZghNʿ\VɺZKͼc~`k]dރfTηhjꤹhn\βç\ЏcSҴf\ϿdYҮdnpmX֫jl^֥qeҼkù`ئrrԥpskקuoչul׵sq׼yupȋ}|رyٸu۲Զ̃~ٿNJζíČőګӔǔְɯܲܕҤٓεؙΣվНݥѠƺҩۯֱ֩ײѵؽڴۼ`ԬtRNS@fIDAT(c`ǧvF2@s,X`9 X00HO0aҤ{Azg} (y֑ర@/33===M0(<óۢ"Ü,̴ U$`ʛ' O\J /ۏ^~FR2ogN'&C/0oZV^^rp b 2$$,fT L~<| DWW֪po[q''2%V2@ @f(IIENDB`phpsysinfo-3.2.5/gfx/images/SteamOS.png000066400000000000000000000042611265516077000200110ustar00rootroot00000000000000PNG  IHDR! fPLTEV?A=C=E>L?O?HBLCHEGDJCLFGFNEQDYEQJRKSLRKQNXLeGQLZJ_J`KRNYL[QXO[S[QXS_OZT[ScS\W{OcWsRnThZfZc]xW~Ve`n_u\i`m`׆ZߧSPZdwjwlQ[YYT]bfܰZwn֯\^lԝf޼[sÌpѷ_aa_ebhcgleyhwmt렁ltrurqoҡܤyy~xv~勒wzψ~ƌ}DZ؇Ÿ܊Ս؎Ř綞ߕԷģߝ֡Ϩڥdz³廷Ƶҵ޴չ߷ȿʿ˻lːtRNS < pHYs+KIDATx@npdYYRRRMMMMRMqyde^^YYRPRMMMMMbdyvveee^^WWRRMMMD>>lvvqqfe^YYRPRMD>A6|vuqff^^P==DNDD?6|vvq^ 8ND66yyd 55. '?FF 5qUSdb =UF=%y SV TQFk/   p[QQG  l [[[QB( kkaaZ/  I sssaŷڵ$%r\V{%\ooo}1$%.{{Z oo,X3% Ix 2_hC, %%3"jzĵ ! Lٞ,& 3Hо # t24$Ⱦ; !- ,-h44η} #,2,4̶+ -,E}1t-E1gK!+,-UlAIENDB`phpsysinfo-3.2.5/gfx/images/SunOS.png000066400000000000000000000053021265516077000175020ustar00rootroot00000000000000PNG  IHDR szz pHYs  tIME 6/ybKGD OIDATXÝWWSֵ\u>i"UL"QŒŀy&!C ! C 1ý{T{9[ @WIbtg${l{zՊ|B~AT_F>[,,*6 QE[4A44hl+0p"[ߋb@`I2Rb~/]ن_n{z Ⱥ?J[]TUk^0D X8@( ܊~E`nCUށ4|8$'UKJ3dWJt7WПCv؋~?bVQ xjEk r9JԴY!0&DX,z{(s:;uHHHEEy7.g#""cVطyZ=nyeEf\0?$&kyh)ڝhhCJ6Ĺ JJn8dfq+> PYœFXV!g/R)2 $$%zY $pv$&Ay~6DVf;ra;0aC-,EoyRBD\#83Bޓ.qv82S΢v[CtǠLEw.ΦeV;Ǡ"Pk] B=uKHQUڠÛ-4P[ŒiihuC0C1y(/oŃj,-Q@ RKJ%`Ԁ z܌zduuX#?_w+hk",14èʀ3g>y5_ e"[ZZpZ*ʺp>cvLRP]Ӂ_C!zw8udyOw(.iAȉ8ܸj8pf /uFHŅT,,8=huK`:1=HlkNd+qV>F_ażVbfh>T;p=,.xL0W~\ETFFMXlfKxDVE_FX,{ٶEjF)1LBmgB")Cs_\pN\?K+;LM/l~.8f&tv.C1E9߉9bA 019u }j /o``H%J D MP̿B|BZ#I=|m BaKXYݦj&) ;dʬj|u4Ďp#6hoA~@=x_}uJ44A1e/ϑ_>҆O) mbG}9P7 rɁԻeVMN%MM tM`r56IjqMԓ[IGP!1. 6"mZ6ψf{&|;q 7xZՅF^ok6Aވju7$R+1bemp5"5%22 f$/br=&?"t"z{gNܱUJ5e{eTM mTW)w7EbaMz Wv2[ eԼ^3f q#-ELT.}> 3Z}CԉG}BoSٳqx' zފZ~1D\IY+ M҈%Ꞽ!< 9Q5q#+7Q!)GTDNUqkm]/.4S`GeyCCX_%0P6st/ $GTHRPE&Rwp%<8EAA!N|ٙ*FaZa >u' 45#;VWrU;-dddcT`LTz*t@ͩD̵BDtjǩSpM0IگV;@{#HK+u|)iiUf˔7yb$[x Yq8*đ#*\ VR@]3Mݔ #uRRx:/-·_AvN邍hzLgK_ ݬcRŃpx y-?m}Z>,.琺e6Ùco#-# ..lPsh$l$~Խ+cBP|>;$V\&%"H)GL M=['FՉR;J\KA}^v5u5\Ҹ[[o!S.C͟3?yxaᣊ@B^~58C<~<@Mh7 %M?gf^ \RD'S'cVw>A1+C cAFݪGXx *PG=uP* Eϓrޏ&@@dٲ:\DjZg!h3^*KL?ߥ?@'df&M)s]&ϜvpIENDB`phpsysinfo-3.2.5/gfx/images/Synology.png000066400000000000000000000101441265516077000203160ustar00rootroot00000000000000PNG  IHDR szz+IDATx  !"  K(0  ) ! &  H I" #<  9(  2E N ,  )("62  &  (&    B;    "  6? %* "$%)  H   &= 0ԇƃIENDB`phpsysinfo-3.2.5/gfx/images/Tails.png000066400000000000000000000042211265516077000175460ustar00rootroot00000000000000PNG  IHDR DPLTE@,k7"g;%k='m<)h>*j?+jA-lB.mC/nD0oE0pF1qG2rH3sH4tI5uJ6vI7qE8vK7wJ8rF9wP7sK9sQ8tL:tM;uNxQ?yR?zS@{TA|UB}VC~WDXEWG|YFZG[HZJ[K\L]M^N_O`PaQbRcRdSeTfUgVhWmXjYkZoZp[j]k]r\l^m_t^n`oapbqcrdsetfugvhwi{ixj|j}k~l{mmnoo|q}rq~stsuvwxyz{||}~~íijŴư²óĴŵƶǷȸɹʺ˻̽ξϿøĹºźƻǼ¿ʿe[ctRNS < pHYs++IDATx t!En73eE&-b6[&/Te&"OHgC%; 6$2 #=uaF}RW WVWW޹WSYg ;4**/r#7{6 Hlߪ IENDB`phpsysinfo-3.2.5/gfx/images/Tanglu.png000066400000000000000000000042211265516077000177240ustar00rootroot00000000000000PNG  IHDR DPLTE    "$!%%%'$-,%+-*5[6X00) 8Z<]32+ 9[>_54-?`770AbCbDdEeFf;:3GgHh GbHd??7MgIeJfPkCC; RmIHAUpWsINENNF\q#YoRRJs'\r`uuWVNxz{$dzZYQ|ZX\&f{~\[S^[__]PZ_a__W2iz `^b ]ad ^ce6m}bda`egdecfdhafh9pefdfgejgZfi[ghfhig =sil^ikhAwlo`lnknpmnrcK{ptevsertq+Otxi*(Pvxux{lxzwS/,|nU}q~}X40]uB3b~B=zfF@~JCQKlTEUOucTa[}d^oardrm{nrt~˃ûύ¬ǿАŴư˼Քɳ֖˻؟кܢۣӼɻߦmXJtRNS < pHYs++IDATx ӁD+:r9!** oS>EGJE!RRPJJJJJJJPRE"+?JJJJJJRR8R;TJV("PJJJJJJRJJRw"/?JJJJ>oR %EJJJJTuf]nh "oJJJPo[kbbbbfgH>!"+?JJJ?\cbbcfbbbbk""%JJJGbbbnn[bbf~"""1JJJRXbbpMbbH"""";JJR}bbHbbc!""RJJRcbbbk"""TJJ?cbbbkD"""1RJJ?cbu]bg""%yRJJJR\bcubbk(""%vRJJJJSXbbbfbb[""">PJJJEgbb\CnCfbbX%""%DTJJ;pcbbbbbbbb6"""GJ;HbcbbcX{(""yJ?9nni'""!?JRyl'"" WSTJ6**Y(""%RJ'""""""""%O>?D,`GE?E?Ry;8yRIENDB`phpsysinfo-3.2.5/gfx/images/TinyCore.png000066400000000000000000000075471265516077000202440ustar00rootroot00000000000000PNG  IHDR9.IDATx#/ $$ %S L  x}6 'F x& ڸ o O ~ h#e~? 3)?X4I" *  ,( 8  / %  % d&H 3d  &W 8  ;} Q&iT  B )(L٩%.w--V9< _@ BU߯%?8$I$33 4} "[2.UU@UU  1= Nq`IENDB`phpsysinfo-3.2.5/gfx/images/Tizen.png000066400000000000000000000036151265516077000175710ustar00rootroot00000000000000PNG  IHDR szzgAMA a pHYsktEXtSoftwarePaint.NET v3.36% IDATXGV{PU?., P~²TyD>hjlj6 6YM+|eQ4SHT(4 "ž~M%#3wι;7Z9qoC{ߥVo N0{΁ %Wh'iN0w3ڗ7L;:vÉ}C{W^Io Sͯ;ṡq x5iOL;pbYΡq@w1Xp@фh4Z֢jC3'?^/E (20ڙhb~TtBS}i\|'qɈXC$pD\"ညC,#Pfiځ#P<'6̣oxiAg0u>Ua-mt,Ǝ)5#zfHۻ(>(^1jMm<;J9DIzP˜XX'qV^ ; JY8Me1=TwtN_3Ӧ_5ôfj>o.ё16.ɦkn^TGbrNdsdNϖ܂_1":g?yZ{B_C 40>8aFN,Q_b)Jz'Yluq=z=-jYB|NYw4`>k9ܷ`I]Ki- qK:NB3'8mK͘)>N4)1IikLxeVϤuOnG;=uTu'ŸP-WXRN}xL·k/)9!-SO3$@GbmQž_:8k=W-ExhS+ 3}o85?d$ !1i}(2!TŦñfDjmrQstі_~Q۹ȕܵ^QDN\TC. ;L^%&G.[2Q4+E֋#ŽrЈYų$KǙV.@5x" l08ՑhQY ߠn8@:Gէl'S{蓬D>i1dpHx(g) =E*8<* FvRE-L7q]qOsZ6ԀFp" B֪j$Ҝ"~|R~[ 8.%CQ_Cmx`Vq0KAos*/2b*vpi0*p{vT8Ђ1=XaVȄ(L9q !LʿLۨeRҕT{IJKL l0Wt~ iA!:3:8n!02cKN!=!Z"^zϕ}ǺvoT?8tc#k !uDkbAYr.9ڸIN@1DW`$Q#rO% npcи1nskZH SPh(xA_!b niIhե;<E*ə.96^4w=ҷYA+T@]h DD0,>šy[$Ġ poxeEcy7(^aAxrԷ@CFHsRWAV[Wx=S a)ŰL7 ?ŠCJp/WwMF1x+qW8G^\>J +FC?>e3O] )vөfj/[8juq]70Z . gIENDB`phpsysinfo-3.2.5/gfx/images/Trisquel.png000066400000000000000000000101711265516077000203030ustar00rootroot00000000000000PNG  IHDR szz pHYs B(x+IDATx U] +M L '  ^O ?" # dU*4 -C,C5)  "  (  > .@M M 4 ,  f->  #Y RA  $  # Q  d0    U $1 !E 6.; n5'   ;  D  ? 0 -   5 ((   ,A )!>+   A!I0  G 00%c )  c 0#<&  )8f    X-#H.#L  ) 9  "U'"T' 1  i6U    AZ @U*  V *>U  @?^b   "* ,@  + 0Y  7 U @ h'$. !0  ($F  <+ $A$   U 9( <U  ٧:pIENDB`phpsysinfo-3.2.5/gfx/images/Trustix.png000066400000000000000000000041531265516077000201600ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs  ~tEXtSoftwareMacromedia Fireworks 8hxtEXtCreation Time12/28/08GjIDATXõ TC gՉx`n(RE(ڈlW( 0 \r!!p Mޛx˦Q#G60'Ą Y@cS׆+'SahȂuu>^t-2033Ü9d2ɒsyFNGd{xlH(իiqoo/tt\b8PP"q4"$b۶"??׭ۻwǓ}0;2:_cHc!?fL2[|h__[~iHIg F]2 k?#;],^?KnNJi(؜@g|{Fs w-!WAkȌ,.[7:!;OuY Ӈ"vЈcXEաح^[QP#''AU wP&(Dž "$ dg6{.NCYx:2L\DX$ǟŋ(**L&EssXudw=ef~ >[ߠ 8|  nXK. ?Ghhr v<ii8e,a,"Z|t*+%Xjyy8> `꺿|6(ۡkNk׈CN0PtrOed>)Ê5edSa _x+6 =Ȍ00S V ʗ_\I6+vlC^u~d@)yZ FxT{ѡUU6it_[USS[NQrנ73,#jOqgϞ]sc܄#>x?::1zђl#tFk?ǔNCe_ _,pd )dNG9=ep),,'껛-*#Av \t -4IENDB`phpsysinfo-3.2.5/gfx/images/Turbo.png000066400000000000000000000101711265516077000175660ustar00rootroot00000000000000PNG  IHDR szz pHYs  +IDATx A&$ggO,f`g gkQU {|i gnN FZ-)P f;qaF###9 VC i, O'a^@ %a3f ?W::  U %'&#N*  PR{&fO}hRisUQ"*LnQNe9=IENDB`phpsysinfo-3.2.5/gfx/images/Ubuntu.png000066400000000000000000000022141265516077000177540ustar00rootroot00000000000000PNG  IHDR D1PLTEU@f3+ tj+xys&y$u v$r#t#q"rur tu t"u!u"r!s u"u!s!u u"s!t!t u!s"t u"t!s u!t!t t!t"u"t!t!t!u!t"t!t t"u!s!t t!u!u!t s"t!t!u!t!t!t!t"t!t!s!u!t!t!t!t!t!t!t!t!t!t!t!u"u#v$z+{+{,|-}/~1678<@ABCDFIKNOPQSSTUVXZ\adhimotuxzßġŢƤǥǦȧɩʫˬͯѶԺ־׿VtRNS ,-1289?DFJNPSU]`bdegmqwx}~>IDATCq("3$3eqrF22ˈȡ=rJ|箧ӏ^"i@\Ϻ%Y+Öc뜁+1nۧNR6 Ʋ~2(u #"E!S{HBJ>Yq'BX88pD;^<ؖB3mm;zcIyP ԅod1Ҡ}04%*Yld9QPEAD] @[hYM *jPRs!C^8tQ3WxDBJoe[eaEm"bd[1b͂q?t [p (%mQtww#lDd=yA b;K<xsO.&n41v=\@A?ACACEBDFCEGDFHEGIFHIGIJHJKILNKNPMOQNPROOTVRTQSTRUVTVWUVXUY[XZ\Y[]Z\^[^`]_a^`b_ac`bdacebdecefdfgeghfhighjgikhgknjlikmjlnkomqmolnpmoqnrptproqsprtqsurquxtvsrvyzutuwtvxutx{|wvwyvuz}xzw~yxy{xw|~z|y{z{}z|~{}|}|{~}~|~~¾ÿ AttRNS < pHYs++IDATx @/NVIYcBGFQ`,cl\VNUus}-)QIB5j\UQV@lek})*,I936ENUBT\fV\Uw>50).QQ@B\^tV`I\eV2Vhpye̟U$1>e.YTY&(eDg>N`2.YYNVQhň}I\289vukephpln]3>cwy}ld`QhE`2Yyuks(@1u.UYQ-yT5es5hzll\GppDhYuezhyeEephGjcYscDQhLp}Ř"wlpj@,hn`Uj՘jz`eTlG8 h{VzG>kN)}lQY`T,p1UII5{I>9IUYlETG1Qpezz`<TN83Nlky{T`LlU55@(QuysjQl}QYcN.D92k3zkYlQll55<$9}klwE\jneBUP E-"5(l>OܸJoPIENDB`phpsysinfo-3.2.5/gfx/images/Vector.png000066400000000000000000000070171265516077000177420ustar00rootroot00000000000000PNG  IHDR $gtRNS7X} pHYs+ IDATx [)'    H8,*  #  ! 6)$    0$&0#   2     dB"    ' *lH!     (! 57   ա%*&)2#  &.$>(*     rA)&9)8( !   2*\ $  -4J  L+W1*#&(  2 #;A}0  6C'&,>G%9 ݼ  X7 #,|RYg9/- 0$T0Oؼ禺"0"R5 % " #3f> o&#Z (=) V7$ zWd yK c.W T 8 ӧ 4"A$Z8  jy    !$ P(B- #  9,!_b  l#   % / XH%!W~ @5) ' .ZD93"7#3 3    <O(MC%j0D  E   ` 50"c2M*&  $!s2(y   ]Qs  2( #VQ2( L*2(   JY)kIENDB`phpsysinfo-3.2.5/gfx/images/Win2000.png000066400000000000000000000101441265516077000175320ustar00rootroot00000000000000PNG  IHDR szz+IDATx BZuZZ1I9 {I9-ccBR!BtZ!J1,cms;J,cA9J[s)!11U{H9,c,c9+& 7911)!ZJs9,c99!9[sk999J)!H&{sT1?29sZ"Q:t?kB!|!!k1& #9 5 ms:RE OޯssBsB)!:HHH1s$k9$k90as!B!B&{H:s1S1sS1-Z7[sY7d)!OOJ1)mcnh91dc:!no ::[:ǝcRB!cR1!-d1ccR1|\ɥB69ϝ)!B!Zs1c!BsB)!sB9!B1JZ )!ss!s:t(ͤDIENDB`phpsysinfo-3.2.5/gfx/images/Win8.png000066400000000000000000000014521265516077000173220ustar00rootroot00000000000000PNG  IHDR ½"sRGBgAMA a pHYsodtEXtSoftwarePaint.NET v3.36%IDATHKKUQWIeDBDYQboHdEMh=IDРiAT6zS[3̨:",G=ܔck}qֺײ*T0E [Y.XNyA~)ikQZu}T V7QO `.H CSk]1-Ʉ=Q",XAbkIvr X<R/c`pjD:tS5U{N>o% yg 4cC8U2W#ߡcWr `W1ҥm6kv0c gl/߅-=E`>n7no]䱑BV!>ViսphC鹑+Wڍ>~X ] Duqn5z<^ AMoT?`dM (")J`)u`-5TS%9~Kי䎦qr3bu3ozsS5_L]{ IENDB`phpsysinfo-3.2.5/gfx/images/WinVista.png000066400000000000000000000052031265516077000202370ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B4tEXtSoftwareMacromedia Fireworks 8hxtEXtCreation Time12/28/08Gj IDATXíkysy}sv{w}۵ B"4D1r6 JZ*LPEoqD/jHIjUUCTb㵽mv}sy3 4AqΧg-BI%;kׂ^m`~:޻bnyȚ&&.[٬eh yQ ʹŅV }䵻&/|bا/߲Un޸foB {JSxج[Xj]vOӹ5@㪛wyл7^u+Es?]qR 1eūf9rx+ :/|gE4ᓻ}ὗ\Y[xBZy RBcKG0oo켷?\i3QR%pS:G<)0J"| c5ish8z{?}f}ǙXKl ޑYwgxʓyTprVZoDBi3xkn9o-'sՃphc{On-3)nHH=<ɜS98DH3CIJҫ ׾ofg~|AoP ;r^pDI@_0@>8Yej-ShXVQT`Uvٟy4]g:m+KiEeɊ漧aF IԒEoIϭA~_bݶeÒq7 fy+fOQUN!G ȝdk-d mR$CF%I\b &D)CĴZct҄N!k!Ρ,K'XJop#BR92)`zd$&㠇AlF\reX"=9N:'!:3t[),OoTl?+T(B(Rz39˶ќx&QO Ԙ@5*o ߘar Η% .)Yo'J~^sgשּׁ īXgh2KV \,MzZϑ5:A=A, FQ|ZFj["i,Ut'odu7wplQ5k .%d;~INN#p92t>c(ԴF:{ؽg>Xs/;u .par9؂ +<3]K8vw-ofM%Z"sɑ&Ǚ 2P⣃/;׿v vO{ȆK{edzWL&C ӻA8Ey0lu% W>'.;}JUܴl`o>mW SV(7qjL6lϴ: @$ u(kK] 4,bۋ?gTk=}c @\((!cJ5`Z:Çd@Ux^W q*c[90 {7^ܩϦidT,$N WlZ⚋wQ|[e!+cwc%Qy^xny@iJC[kA(֔*,(EK}5@?"iȢ Ec!wP*eu7;T^DUi@i(]/Ezr.'W{yYׅ+PRJز :=(xBܻ?T@iBylVK7>53`oF˻!Gzm0} ˮX'_c}YN9cPJ" 8fbhlKXyՑ;yr>vE?٦ogV{ \n1 /V+6Z(TYżK{y ZQo7/{}vS#[~U!'_IENDB`phpsysinfo-3.2.5/gfx/images/Zenwalk.png000066400000000000000000000062131265516077000201100ustar00rootroot00000000000000PNG  IHDR tRNS7X} pHYs+ +IDATx ǖp0IA f / YG-78໼ |M(>>͚F l}iɡl!kɡ#+~k   ($  $PiR鱣aYudj I&HBaYudu  $H4 :9໼f<&=PD0-C:9 EDaʅw c-2T]GϤ T&78Hr~eϖsO !$-eS901{01KkAг[IENDB`phpsysinfo-3.2.5/gfx/images/Zorin.png000066400000000000000000000101711265516077000175740ustar00rootroot00000000000000PNG  IHDR szz pHYs++IDATx >\N..Om/AN4"Uc9wLet ( |LWz+,J 6NWLL*N>@ GaM0HNOU%Q3Ln3[OyI{t `L1naNDI~lOOVn! p>IENDB`phpsysinfo-3.2.5/gfx/images/antiX.png000066400000000000000000000113711265516077000175610ustar00rootroot00000000000000PNG  IHDR% S pHYs+IDATx_4  ./.0&!AA   H VV G )38  )(  /) 88  \!    :,%  D& A1'    C"B    !,  oE% 52  !B1" !    $)6;O      KG:   ! '  (< 5T!    3  5)% U'8 >!C #K E7 c %   B ,  %    )&+     ., !'! 4 $LbyIENDB`phpsysinfo-3.2.5/gfx/images/elementaryOS.png000066400000000000000000000017331265516077000211060ustar00rootroot00000000000000PNG  IHDR ?_PLTEtttrrrsssiiikkk333mmmDDDuuuPPP444\\\EEE}}}gggqqq;;;"""wwwppp 111CCCQQQ!!!eee:::lllMMM$$$|||AAA~~~ FFFXXXnnn000...___<<yf/Y]m޾5$IENDB`phpsysinfo-3.2.5/gfx/images/free-eos.png000066400000000000000000000032141265516077000202000ustar00rootroot00000000000000PNG  IHDR DPLTE@hJMJMMOLMKLNQPQTSUVYZPPRUUUUVUYY[]^GlJl]a^aRtUvWzZzWxbdblkkeqisrtqqgmjkjomnksm{d}qqssrtvuwwr|t{{{~~}}y~]~`~rchkkotv}|srr}}yzuyU]\ZaaMTORZTNYTZoxsrjr{[ÌZ‰bɏcʑeßàâīġɦħɩǫ̩ƪɶɱ̶˵ͺϾ϶ռхŁLjȃˋ˚ˤʭ̭ۼ˲εθδӶҸ׼ڼԽٿRن pHYsHHFk>;IDAT8cC0^y?+k l|Ppm&]Y&f&i&+1J2I;W9}IXԪeZd+Tx~!)$PS})s=lV T˟4/sY%NgU𙓃3.ϽmmSMUYT%|V挳KV_bsHOHf-32.[D/C7+ CM'ɰJg^nx)*jÛ]5ԋw[\y]K>MtWk>-vâ}nc#7U|sCFA}/@~6 _fͧO'fӚO Bl hmBǒ͞չ={lX92Rd;Ni ART~_WyG:{g?{i~bA~"_ +e8 KI=tURHC]A9}V' 2 M^|O N\x7*=g\8qߜqثW$PXT'$86j$JWA ~TNʳrYq.N)GdbOAEVVS-gUMBp_dJ\L\J0U~|w|Uj$?lV)UPГ̑ѫRc2[50K}q4SFj7|"ê Y1߱g޷gwܹ &+={EIENDB`phpsysinfo-3.2.5/gfx/images/gNewSense.png000066400000000000000000000137711265516077000204020ustar00rootroot00000000000000PNG  IHDR/ q!y pHYs B(xIDATx_U 7 / A3Vd OI + )JqM @h ) =: qKI }Y  & # . ~ 8   W,BIKh    " kURvp !$$!5#֕      #~$Z    \m]j cg *5  p r6Z@u    !' $^ .yD'$     #%*WK Q ?;  &0  '#)]0MaXi .L2" /+  +@7 L{@    W6   >< )  ,ռ   T9#藬    83,(2 J:<: (& +8%   nh!@ Y@9I3( > ;O/{zuq鹍C;%! (>"A"^<-*5/E  g @# ,!4  &d c1p M ;! "( AF@z    2 "H|$S    ,d!}-Q   E2=G'!R׷AE >C &# *=WBq+X`}K:6244 +swLn%" 3a8   ?t?l0nA;Xq6 ~@ hZIENDB`phpsysinfo-3.2.5/gfx/images/iycc.png000066400000000000000000000031441265516077000174240ustar00rootroot00000000000000PNG  IHDRĴl;sRGBbKGD pHYs B(xtIME  GϓIDAT8]KWϽu]]]3'xgCD8" `I,-HX$Ȭ0‰m"==goս(FpVgYƍHpC.۵ ~)Z?dZ#IE]þ)ׯ_3M:B(ՙ[sʅN ڟ~Q,˻,_/5If - ¶m=G"eKtBD D~Z&EGY|nQcnb4z/ a4ÊZ"`kߧ baC4[!U3XAn&` H//nrgغ$Q#+R?qu|ؐ-5a.ZVۇxċp}6`0T ilܬP5j]u8/a1a[si`Đ}4]0pf=w)6L+3z$JB܎%8؋mC>_cȻYLU*/= "5F~Ǐ {-C?*`U9yē1#c*O!y8^Q>({^Ê)"Q X7aHT N!0N܏5 7`ywlSL^ZECxZʻv)8fzթRSmXC"í;,^:MnR̮RWX[n+aloW}]ÚThIRދ!S8~K;kr|&څ%1P\|ƾ>L1_ckBh}xY v*C mui^5VVf̭Ryvӵz~WhF|WĐjx c+5{*gO$` M?[jL1bU*9Q1cO TRP+j56]vNŝnt֧bb4[p.&tk6s5\+n, kEaEWNĐ'>ט3ጀi7{˃!IENDB`phpsysinfo-3.2.5/gfx/images/pfSense.png000066400000000000000000000022211265516077000200730ustar00rootroot00000000000000PNG  IHDR szzsRGBgAMA a pHYsodtEXtSoftwarePaint.NET v3.36%IDATXGݗ[UǧV]LFE=XdYZAX DJdjEYTPRHeADQ!K++275;CqffkOTw&cp\.΂`+ ½݆: 4v~0Fz8^;^4TuC>/)| F>:wαiPS Ha7bȋEq ~T2& ^QpC C&hO J8.0h%: dp_ ۑNZ2>,M`ĀJȁAgǗwIo{ N~`F_#PwJ-}J{t|߆@]8 * H2.uQַs\[]"8*]ˉPݼr-aVD_XR;GNp)FU eX]`?3 ]{`,S[`<nVț/ 4UVGL0ܠa$0r,XZ֍sEV7B8c-$Z@&ٯ\ڭ*_&cZ1hY&VÆ&E )X܆[cCje֘fSФv9|yl ڙ}{'7o(3{7_HE>w^)w/wchoq"ΝL: =+oV3ܱoFv| ^+G<NBGe]mrO}{Ma/q|zN/_'os/o?F޺%N6k4߶m{>5kg?}8y,Hm6z10qMX{1;۶m78 48H <##&۶mϛ̌T/|_^^&qY/|!߶mm6߶Z+LdW}olNAGpTnd?n:]~ү7੄<\ .7y#k{ A:U-"5DoF@B@hԧNb( L L˛vY":#7Wg X6aFѧ#}tFuɔLxbdoU|cST*zR_){Rɪ2>7NF__'k $<ǂo R"oÃ~^ ?⟇#y57p#Wb)9E1 UdK]WT~Ba(ؔɮ|eE1)çT%ŹN}`N?Y9mjVLim>:;;;;;;;;;㯆ĉ'N8Yس(C&HmkBF)3mkTSx]YsHFۖ,_펞ElΓ{p|EQR8$e~q asZ<= Y(NQhCU T}We{/Wvos2fO>mۨώ:Taݖ75Vߛ_ kb6ģYӹ6gscp>UV*2VNhvPs5j'ʟpűl tsz!t]Ţ?ڥ>AάߢmPK*6 7MV>;N {4}gccZcY@LPxցAENP0lUٗDF&2M!#|R>@݅2Nd،SQظn5k: f2x3x } O}^v5ˁ 8)LS&La0Ƅn@S44NsimK w08MT>Lxq]%e3)g.VnIY3bkb`V!fZ!ԁړlK|F[Eй g|.P~1*]$4*FeШ A2hԜ< j" ~Gpz*EE"zVBD8 '.ct:,5vt+RCZLLa09 &w &,3JN5 {^".|b6>TOLoۅ]2B:Cd !9|HՈLJ wNkpt$P4Y\LM`c N s1emİ 俚&^aQ~>ScWrɟfc>zAZTχ(@,P+!ǧizď=cM5`#yirȽE36*]jItoe?@OB҆{ea lHɆpH|u#Sd@1|` z ¦1\3sAiiC1i>`p,?+"/01Dg8>5X(j]݁, -lq7ɜCőc#Hq-.Lw8ȼ #Y@.R 30-&|>4qn%`GݓzU>~-E]3rJFLo5 9%92tZ6Cfhٌ&8ځ8hEU~/x̧H$.\$&E&e؄{FDl08@ ^/M&RUVTOqq0^YdycjsPm3=NLϑJ6hBREOh3n.&UCΛvlɽ7K`Cg?+gyx֬q\A$x,|aC~| L@JLfԵ#K2O(vdF.48s!xc|ls+ПZ}G$'h{_PMaՠc(CRwoĭ@*e(d :uy1uO qM?=H\nȬZɌ\rbaD2ƶM9!,mEn(qkf{\Ϩ5!y@x>NIXĥL$]sK1I6G&f&6Әvn A/ +Q.Y!xH&&74M2$4$$ٔ2c C;,X N~H_Ӝu8ZFڣ?yC ~#kb1oPg 8zQ=gAf|2ߒaJC6żt. E"z :BoZN!bg//DXl|@fȽVMq#Ahګl ~أQo HQoa͓M4P0!`M0S%fjlM=ES?ּ QL6N( CY N9 S./mqf%1qk-v?1}[m(&U)x:-Ll f<(_Dw\PiPPɠ-9Kilb@=|ƐS`ĦtN6?f# S Ʀχ4wk)';NH_ 8*DV˓'dDM(X%x>_GK 9.TGj▫uZ Yp[͋6dSBP.7x'kwǙ2b  h#!2 s.#z>_>]2}Q^ TJ1@8c%f inWz}=k},1],cg='3_xhIϟ >#BH͛4t.F {R$d I|FˬLq_CEIHPvu5m=M3%Iճ 2jFƎab ǵfPـ[4[۽]: GTlz=qw>|zy@g/ja]wN"ۯ`]8{O&*BU__yuoN}'DՀn@^(pԕ(gV+Br}Bd(O(}̵pM9bjC+C|dkkuIg]+&*D9z 0{Ax?Dה(T-CQ&/(lt%PT~ak5"i>$;>š'+٨hYcA޹oSESQc"[MCE@!?r:q˖B#'3i0lor0|Xl0V5Yʘ]k?L8_Z5FZE2j"* QΨUUZ9q?{(=[N.[ѩV 616jr41*)Gq Qk̨5I6q0Ɲc:0j#)Wך:FkM˯ZCcEkmҦhe-h:q,_ bA!eScʹ5':\#`ZzPkX{;vp[x^pU63'![CU$\U2n!3$wbꎓ4ʆ2?趠~-Cz1mcA kU5(ZUSKNkZKi=ʥkto[mQ'PB6%C,UU56lԴaL+Ujƚأ\Lq[L3t+d dm-7ۆO)oB9IgDzCuF2IY-%@Л.CZ3(Iܡ#jm6fÆ5/Iܱ')tohiR<ߓ5G綠yT>|Y-z2eN(j%p<(l8 ]mk@uJ,eFWfI,"n]Mڡ 1KYh7_Ab_M[[%Y+[G;q삮a&k8Zf}"ξ=Jں&0k XysV{~#wxL{&+okЯxB/;M 3μؓgv.zc.r]P 9OesZ>G/UZVJjmE_Uѕp}#<7ù԰Yte jPfM.s"W?sߊ Khw;XA_$2'J߷tB΃FpƤ'_V&_cUj*az#6@<~E|Hw8bL6#B})7"^LUj`6#owsa?1^R6DN_ q@"ʹ<ɺҟw"W f06!;&Eq>sػ>N\xvl"Sӄ=$;$K}%+9]JN/r9Kz2Z%+Y]JV/Y݇]ؕdu%+YtZFd[⹷p*RJVWzdv565PGw%+t[ʥj҆1WҺ֕IkWUrӕrZJ/kE*ӕ黝w}9]UՕd[*Y]JV/{U^%+Y]ew;߫w%+uJﻝw}]UҺ֕:+[p/D-!/sBtq`7~GpBdM:OV)V#ӳײWεO=Wymh,Aۄ[N EruC'/V~[?GRCs_0rXe |M-]*K]*Fv%_3.H]v${p/z+Y]E*Y];!8j:;} D(NǾ8٭tߢOgqy$AyS_%Gs?$<Q\ϧ$|ZtHVاC xp5ƒ~b6N|]~ ïz ϣImϲ\9٘it'Ԗ}ϙH퓒<08qE+Ƹ2懡1Ya&Y>?` #.a FA :&`63狀>8=yFzOq=<q3q <ȮKzX<h~F&I:b^Ȧ(@!1s>~*qjY#t>J |϶{෻Qg +fsex'~A"r}Hzeqwys3J܊9 qg11UGpƹs#`Y$r6Zz#ҼX^<wN$3c>!!^9ZAV~QYgI(c#X( qL`E|>s_E;:iXAdO{@%x =ۣ3sh?vi'%ѺSe,sCħ,p :#;С`]'@Wɿva!ש_g|#t2xbㄘH5rJ6di;epb7:AE3d 6"=e ֿy¼|EOTmdG9؄#g,-< qqc%̞CWqMJ)d%d!/zkL?(wŢ1q ' ˅ 4`5A|.Bm~;NڋcV]e*<ހyEQ"asK_Z5rJ=َ\䯋Bϥ"-{pSviA&A2<'$1$ X;d(;& ];]_P͐r FAGLja =X6'"K#bL}`W^h^i724/7R|]Y KvMHqe/kw$Ew;wsg#^{C#{\oާ'صJM;o^wU[֭J}wQ\5F"uF#CK0ow͠/(>KHyt ܲAX#}Ta#8RzT V$|nSlV!#yP]^>^}֟|ۣQeUzi<_ݣ}H4ۦ֤/-/OP,OkM-4|YFOub8 VncYKM9嬱|Oʄv_Zy7LPF5Z_ſ6JOCIfݍմٙL=3kT:Ի{>M"5p 4'XlM:|Lڬk%aQj|vj'0W]vx9迅(0nk2y#ӣQ{17muaâۡt7>vUx$FÊ>zcc>mmpe lMoL}]l>^@>vlKc<bbEOa>fM?uig7 hUgGmУAK,Zt@WS33*mkBSx]NA0ܣ AU%706!blﶂLfv6#b# ѣn 4\inF{gAtӲlT‘8 'kIߘ [c,=&xnpϣT}1HqQlHاYtl(SA1_ W mkBTWx흍8 FSHI!)$FRHnw HYx3ꇤsaaaaxIǏ'U{o_ھgW9 o'GW {>~Jlo߾)*/N\ϱov[iZ_ձaJΝ/:6O- 92b?Tlk%?_21B sY5>:>c=1Ow y^- ڶ,XzusM#גU]>H_yYv!ۉ_mi Rus]Xm_g)YY)m]y,m z1aaaxEߓGקo/Y\k6xjgH|yu.\aæM&wk#ϐ$?]Mo\Ⱦ,/ڥQ@~6s?)}, l gX #vQg Bٙ^uのuhm?}{].~}v_J;xogJY]޳@.)oqC?}>@Xߘ'-(W? źvƔOʙRv[K?[A}?-wmՑ}g\=c}M ggg DŽ-B^k_g?F? v0||؎=ǧHPgs/hؑI t~{n^}ZyD5XWvO)"c0vY Z|~_%/,p\ɹyΰZ/;/xs_9?Pܯ5ݻ\[y|č8gʱL{? 0 0 _k3>z_\S |<)b|7aaaxn.ta?l^Cvkؽ#~e)3<3^kdlc&jK+o"e<.ʞ`^(3zu l+6v<ï k7]/lc[`On}򚄫 G뎱zt^v2)?;Wmr5ocIz?Ozx{&!ez."ѯ 1Gg{+ҏlw<=}GݽFƨ^)zIpG K֜{{e G12ۭqiumf>.}~a? 0 0 [u+7Svq֭y΅ ?ނ}XwŶv?ߩDZۓ-q/?߳=<~#>Fk"qzrQo 9r,nY[;o:)@-`ק-7({߯S@µK9֠ɸ>:n3 _[_*mtcmC>qSL=<6;ǫsaaa{xˌ\ފpx?0׋#5zяc]x^l򼠕(f:~٣^lin59W~\;?vn6erUbS~v^U O7O(|;+SG4|?f*?rW~2oNٟS9~daևmH6mX[J~s.ym4ٶO|Bd/b5ɿyU? 0 0 0 0 0 0 0.P~*1@G\⟿KrKXs2(ߥ纎J8'>X@▼QQbqwx b)_K|v 1M6kee-2Ǜ59?K^E~9ϱQﱮYF8N?~;:=J<-tĒyNAgC \NXKs)'^Kg\~2}6}Գ)n]Or^j~"{p29w6/.z-v:+M{WJYZ굢`% Ҥl9ힶկ#OUz+U?;sd~vND7*.Y+v:ye;8}~|+ÑޅN9}{Bƞ#txխsXɿkSV/uJ=o G<ջL'L:D]6jfgLz/+ؽ[{rCMYq~[{yy czA;w9zszWHVax3 %mkBTx흍) q ĉ8D^>׻gI@XjjgiЃ`0 `0 ?ϟ|:seQ3|ӧO|:2|.};7eGFO6_Qv]T]^ˮg{>pjzkuo{yye?{-x/ D:3D&򈼹e^Hyi#/OGzϪ߯_~ :sMe#M3Y#=2 QЙ[\s=E8}E>GȩT ڲTg-}VfoSVwzV}./>~!?U1<#}=F[ ~QڋBN..+푹^edLo+[\-k dW(}6q$#?z6Bөi?L7!3O_Q}Пuo[=tkȋM!'}/Ƈdr2_Cﲨ: `0 :8o=+8-4}۞cĥXdq{bUq©ήm!ƶg*ΪU\z[GA=^+ru{LV U?)V>ғ)x|Yҁgi\yi^cUo*= !TY?rfgWsʽVn*VX#=Fϫ+[F~yH\L~[O҇h5ݵTow|Sfӟ+);F;:x )/OS yUo2e)Ve3'wgGg=J^`0  ľu kU,Ksؑ5nY,bXw{ w&3QהNQev ]ƷgcH˞i{A3I8hwduwUIWq8I>+@pQşGcZ\ƪUߝ]/:3d;ɫ:gB9R|GW~w2;fzt|+i5nΟgZY|<1NyŬ|E7k?z/k><=Α}N΅>uWydʬdz `0 *\?W8GY:Dgcg< 2+'W6qn؟{ru"wU쏘~c#T?+y{Q,,^qF/Xv8.֩g3}ȸOP ~n%hUG4(_sn|W}Tg&x^c,Fѭ+ <#+}/Uw8BRh_|33!mr\7U9m({ѝpvew[xG]߱?g;,nҽow8]וb?OV=Z_#ve?vN_WrYLo;1g9pV^G~>[_vNOS3 `0Q[ veO\k^8֔v<Zbz\Opbn$~}oz3ј mK vU]^iNWA#x딫jt q :E= z%օq)CcYEqyRG-+u (K\hP'*^ء^q=m=y|Kvūe\rȊ4={W1;=ݷxp;o@>ȘT\Ԏ+C=*ɫ|GJOCW]x1.ﵠ9_Eб Vq)v(ʑ}[GwǺ{-oSdו_˞׃2;iT&w*w:g׭SOsj%Z[~_˯d֮+w]7 `0]kIu+eL]ւoA^;=GR?v쯱;<y o$N1紈=:ߥPVu< <&3KyC/4r)i=*/|Ύ^]QNН1qGw>ù{ ?Kv:A}E:_n+{u=rq͓̳]>>d}+|L01`0 leg:׺񶊝`W,3O?]\9P~[kOWiGc~)-<w.3q}'vuw$Vnv(r52S;Wk_Kϔ8B/hEՠ'9w?K;x:x<|@cϽVyc@ۖSw8Bq]=2lBe6V}eR( VeZT4ade2ޒ+nYBTqSߔ<[&=f[|szP)G}{Zׅ3n7jpWwftEw[ǽ;`l? `0 `0 `{~i`oLy>uoi\qK|}7Svu9G쯿c¾#>,jow{ՆݲL=mW2u_8دjo?kD߱mw>#}E:OۡO;y`$jwymkBT6x횉m0]HI!)$FR?6c>>~sm+vuՑνYu8uN?WP>1JsWiV_uKEϸ/rˆ_gKW]ױEYcl,[TYHT}xL#}A GV7^}>iҞ-i;}LJX&TP3T#ߨgJl e'=?͘ona|7>?ǐU%;/mN/IfQփz{G}?v✽3X~j{zTAO^ʰ>?sy|G)PHV2A;ϣ#WiVÇoerq7`di.#HZ &n׿wZuܠ[v]7bU+~|幾g'L%$TW!W"-ȜPHP Ӷ 9[P^(zo">kI_Uq#aKc- {Y}}}c)YH+-/ɬV9Vf׃Na(> ]OGWG?&U’XejuSjZ5Xb7 =ӷ7%;e #jLM' oGxzz?<-υzƨHK[tCCCs}LYHK,AU^53UpZpݻ >>9Sz ܼ*3r`=VVC_I^ɪA@PA-؅ qs^tF~zAen;u2_Cߜ5Lj#n٠Z.~]ta[l!9W}Ge ;\j_eYe/ *?%<$:Nrƹ1){q I;%Oց: Fq?Azj9\-pF}ƁՎ >8KJm32W%w5rlMr$ocGo3LF*uhGGט4| 2-Ec9'}t96ƕ Q?i.W&y5=n{3zw>#g/"CFҧOչ-ȕq0h11:[Z*go=?يO_Wȼ^eBZ|#uOԩWѫ%12u; v꼞G_ӎ;'t<5uf$l*DNFi18ۑH.aNg6 z;z{r:0v^GdF'k-nk1?W;P)MY}|.sMOGPW=<tm3ΝLbGnq#;%# OAq|߆fdgV!T)Viu9nySUE%3cou#'^wEWTn *C'Ʌ+8~ *PW}rе;onJ\J [C?ÖݏҼnvuURnݼ !t/yx)vw>Qo( ȸC?3=O+ye)M娞 ?BQ#F@XCSH^*]60s^"cمOO(-j7 FͷFYA7bצ2c/IV`4o~ܙuAr\PZy-c`bcThY;{ބ}2ǻ%=,P2rT.4E Q1+E=*Ŧ 1в|AV?A}/?Uj߻yŁTE#z?je_, c嵁;N,_~F⭥meYnߚuh1~˕wJJ~zŹg:tG"" &z־@Qk:rrU?~ׯ_{gLN;?k. P##*9C˓ߝxe||w~גk,(tD~5*mkBTx}+(H,"H$"#X$,QԈZs>U{ ..T}6ڳ-F`p]k߅~b  О$wݓٱ|sCoA+q3lOx@(0a+? T,_7s\Ϙ^Bl1)C+k(FyN"8dPC_9>O0&l4Im+nwGrŰ)/tihf ѸX>E)<,6s45zb?J\<OM%O#(76:= ӋYAƒH Ls6MXBcX&ǘJte. 3.je(??Lj=%wZizFTx$kP8Em jAOހ>~؆B9 ֤8UKCvjbL Cy ;mj P. DkwUE€3ܨ8xUJs\ɟ+;}sFQ(KIXݛƨ 1 +KdX];Jģcx$D׷X`i @l̏rnm$^9΄zBGϞQ=nfkDe; <a>,⢞jk0B[p($Ǡp4 nq`XƓ vϵ.xHnorJ5Hu뇗 f a[Z:>36[g RL؍?( &w.7C#~B{] UW 71jk~ecGrD.=K@WDZM0倐0\xvqNZ ># BE )&yA}t?B Ym(WIpɱ |2+\2 )l8tl@Z.Be񅋍RSƃm>dIl'N adĢG3%#)?$s _5=YBR#-k"qGP-e"f%֩-ϓ378M9ϊ,_*n;HEBƱcl~ ˝[/sagIE2,z1t:kLș壋G){7ond{@rP>kwk׽ #kXfyEAB9uM4P=_lgW؇N#_nGpp ,ZUu6ȓVӰ0EK7*|]{75F\ԶzQz! uH>upT٣o3P)[^6` -d&*=%fY<^ط`_6|h3ء>2 Pq7ώ ,NsjF=B` 큳CiU)R鐏@LҮǧmb<2FHRqùFXi䎲OmGA}:*u f:@ʫRH.66jcGOpO- 6HKJU:Jǃv,3DZEƮqq7p?ȌK%ȧ$;?Qr6pP7`a^=R_)m>D3#£ _' Iɭu͋C-Rne㯄ssL<ȭ/R)|Lt_1Lk=rr 4/gEr~PnB[\g[{gYvRW' {Fem1{ wL;7&$xc0 n&u@5sCCձm8Heft x{q(aтa?Q%l4ςxmWI׆GC1kQ3iJh,KRO`ʲ4)%b6B8\pe;u)ko)#WSncRx{[sXv195_0Kՙ7>Tp5ٴl3S"؝LX睫[5m Q="u}pϘ*xbՉ#iM+@Z! Ϯ~jYݬ$?5mtu] %@݅:4h8ۃtu3; ΑO1A/r R*5i&j#Y2:$Z(ad@>'z L뇶6Z8|`6"X1_z' F-я?X^ A:?1;h/KVB' vOnFS ƤQ{=kh7MwXQp\v͓O/. N3HKRlK"q^Wh1wt h@3e6N|I;y?8t[[! $,ήLe"z%IކAkRl!3u8ځy?_W)AbCO!rza5Sn֗#<43y6"R߃CQ&>[# BHǽ{vekOTlq(UH͵h ݔ8,@tՂL{p/*L"d_y k,4 G̖bD>,.ok"D;|7[.DCA#ilϟI֬Dq]+eE _-- ڰc^Lq1~CCC9gNH8BkhJ#Z-`VoMa 9r$պZ-hkh ?C$ ^tď9d(8P݅]ڶw[wl;dn׆oKd Hބ(DInI M_(5)6H/Y1 QRk,nXHʉ?>df&6^EJmt{CCc`0ʅv5x<\9Yc}106"״!֏9dl:' 1H"z'7QqɌ#KR./CVgQȬ\ `?d1yuM6Ƶ8ZX]8^pwQE &1frRKi$GݜЕh3'{;;~FK37ku<pdʎ+C RMzƏ7)nҀ lEGyl:̑IoBS%|ЕsTulebA}Aʹ10A{KʘӺtjdLI=r PRg_LbR Şl?␔)![Fo wi&k^CV(t@pW2{hxHGRn͉eCbxԉ6GQd27\ثdS=\Ff*0ۣOP5(rZߙxQZ>~GAeN-jY7Ҿn;n?ӹ"Px}/NW:݊&׾:x" ꭥу;R펔 c䛅љElmG§a= h¨BG_uYnZ쫭FYs U"zM&:Gnu.DX5Xn;}ԫ%XO?~2&Frjj8 yA*W I9/ub)Zl: s 85J>~iI3Yԕ;:#hELם[ROd^GA˩f~Y!En0~/A Km>^WYq"<цF*c:xw|͞w%ehRgd9̕v3v Dgh>>?3hYDkgC(ʹƒԕSԜ| 2Q94(?OGQ34 fccPopTYaW(>@tX4`LGٞpɄaŰl\[9c26U M6f,'C4i?W~psϠ?kAKrŵk@I|>^xs?\`,D̒5W^w DMXf_8<%|8_왉pP1Wlm߃f?4:́_Ԕv M;k:p_sj؎qw]$F}y ,b'N=o0, ~M YR46+!}@~ujctCP.Y(x׎z?70WXFܣo3z0c8RGg0 TU򄽻w"/4֏CQ`[{Ocn]+{{ N!33+5]qpj' r9FDȬ)~: 9Gmx2-?sraG"yvUpa;Ră A\& ?#n 0eed~oq嶭!!DzP^H)>oȑ.ļԶ=Hy7S-M ?8ycߧq|#5"2Б lm#UeΤVbM͘jAc7Z ]> 4gb s 2WRsKg6 's8qzTT[R[w)I95xWj #!nN+zPڔ KgTE,?{^RDݥ=Ru^zîc&D'i74SJߔ&HUG[crͦ<׿~4}څh;lpAZ%XZ;tQ?yk1+Ƴu6[ Dc4Ɯ*dB#!}e>samhG3c^8u9󼵕⸈߂UyB;f "Yi=D =4&|C3g]~WgjhSIXU"1A5Fr4{AljwTt6</N \Rta| i>T.Wo>>xϯY{緷m,J{gg}v~)]s!?wXGFl!7U|Cnfﳅ:.@mq%臔Ru?.:aBֺE#Gg'yXDuSWNJD)21ѵVagWPqȒ s?¶@g")s\T{f3go^w:^"{d#!φt},nyWFKv„X4|VB~,˘_&fjp/WԍwaO H 3I`u1ͤ+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_Wݚw)$IDATXŗKo{{^8| %+!E$8pb@YDYc#Q@bDRd"=C9]U^tp@ 1a:sn=?R~_jT66Gy_5S ^"96rVapo+*`lll>M>wGa\^q;ۑKe蜥9bLfsWbȰ\.^_߼ϘdC`ރ,z0$ xÓɀR*?*L=5===|…' [[[PY2uTT"BY% /ٙ{X]٠\^l^ry*jEaFQ&^YK#ǫ8qk-/f晜i׫xjL (y1ιV 1< qzD`޾̍[uL`9s?ϽϾdiB6i&Jg lVjY`cO?؉WqMrWөiV7lD&YIrβOT-Da&$L4333Vef 7pUB*8nշ"]:ηߖZaiJyq=%Uyz=!biF/J6#ɍf_Sޡ- "( qq*b6%/(:{xgW8{86" ^Q#\DeyGOs>k+U1jf[T"LX{td# GOrY+Y[C!71I78n'P\|Jsc <8t Lb%QI5F6 lmM2d1wAYM:h_aJK ǢS} S$"TIҤRݪ&3^묭=Cݧ2p@#K HyǍhUC6EĬd ib\D1b4Ʊ|ގ?F Vgtwi(nʋ%֗ɄgсǵiM JPg9v;w~qP(ZܺukTy72A9K+o{(]{ 󿜟voWaK.`样J8>O,uuuE_Η IENDB`phpsysinfo-3.2.5/gfx/logo_32.gif000066400000000000000000000024051265516077000164540ustar00rootroot00000000000000GIF89a .,"$&$*,.,2464:<><2464><$"$$&$,*,,.,424464<:<<><BDFDJLNLRTVTZ\^\^\ jl nl rt vt z| ~|bdfdjlnlrtDBDDFDLNLTVT\Z\\^\ljllnltrttvt|z| !, QH0Ç#JlXċ)RǏ Cr0!ɓ(S\ir0cA8sxгhO@( ӧD!@}pA`A >dTJV@)T@h)Dp T(O@"E 6Q 6!@ K  Hpa!(AKPh"%F&bA@\Î=Drxн(;|rظ a qD <+e -fR&0tw7M$QHq @Vtv!AAv(5(E RxCt~8ލ@^ .z u@0Z'`7,Xs&0ؙ6 ТVXA` `ttZRZ jhlzh ht> )3;phpsysinfo-3.2.5/gfx/next.gif000066400000000000000000000015751265516077000161750ustar00rootroot00000000000000GIF89atvtĄ䌊Ԭ􄂄̤씒ܴ!,Z"\X ÅJHQ p c+ @Ȩ I )`0 (QbDG'*80€;phpsysinfo-3.2.5/gfx/prev.gif000066400000000000000000000015751265516077000161730ustar00rootroot00000000000000GIF89atvtĄ䌊Ԭ􄂄̤씒ܴ!,ZH *xp„ BH*&0(&` 4Q"XQ?fX8'УNؐ)€;phpsysinfo-3.2.5/gfx/reload.gif000066400000000000000000000016471265516077000164650ustar00rootroot00000000000000GIF89a#`Д9|2\TNJȅtg_f[(j$E=RJnfnd! ,` * `@#.@X#GAZ, !Gtȑsl̆t `J4`@L98@$T ZH@ .`UԪN2Q'M;phpsysinfo-3.2.5/gfx/right_black.gif000066400000000000000000000001011265516077000174500ustar00rootroot00000000000000GIF89a!,h˼|:4A;phpsysinfo-3.2.5/gfx/right_gray.gif000066400000000000000000000001011265516077000173360ustar00rootroot00000000000000GIF89a!,h˼|:4A;phpsysinfo-3.2.5/gfx/sort_asc.gif000066400000000000000000000002031265516077000170170ustar00rootroot00000000000000GIF89a!,0Ij ٗ`(мla ;AF,ȤrTF;phpsysinfo-3.2.5/gfx/sort_both.gif000066400000000000000000000002261265516077000172120ustar00rootroot00000000000000GIF89a! ,CIj ٗ`e$2S. oJA F)l(oB+j+܋$-KH<(zD0;phpsysinfo-3.2.5/gfx/sort_desc.gif000066400000000000000000000002011265516077000171650ustar00rootroot00000000000000GIF89a!,.I8ͻ`(ќhCh6GCC A:0 ;phpsysinfo-3.2.5/gfx/treeTable/000077500000000000000000000000001265516077000164275ustar00rootroot00000000000000phpsysinfo-3.2.5/gfx/treeTable/blank.gif000066400000000000000000000000671265516077000202100ustar00rootroot00000000000000GIF89a!,ڋ>;phpsysinfo-3.2.5/gfx/treeTable/tv-collapsable-last.gif000066400000000000000000000002011265516077000227600ustar00rootroot00000000000000GIF89a!,.p9] 'R@Sf`*t X!<Ȥ;phpsysinfo-3.2.5/gfx/treeTable/tv-collapsable.gif000066400000000000000000000001321265516077000220220ustar00rootroot00000000000000GIF89a!,+?ʟsR{'P$twa60i"`{;phpsysinfo-3.2.5/gfx/treeTable/tv-expandable-last.gif000066400000000000000000000002031265516077000226040ustar00rootroot00000000000000GIF89a!,00]֞ 7R ԞK-*)0-I/gl.#;phpsysinfo-3.2.5/gfx/treeTable/tv-expandable.gif000066400000000000000000000002051265516077000216450ustar00rootroot00000000000000GIF89a!,20]֞ 7R ԞK-*)0-I/D6Y;phpsysinfo-3.2.5/gfx/treeTable/tv-item-last.gif000066400000000000000000000001021265516077000214350ustar00rootroot00000000000000GIF89a!,ʟsj.֕K!F扦f;phpsysinfo-3.2.5/gfx/treeTable/tv-item.gif000066400000000000000000000001061265516077000205000ustar00rootroot00000000000000GIF89a!,ʟsj.֕KYA)yFmZ;phpsysinfo-3.2.5/gfx/treeTable/vertline.gif000066400000000000000000000001041265516077000207410ustar00rootroot00000000000000GIF89a!,ʟsj.֕Kfؘ=;phpsysinfo-3.2.5/includes/000077500000000000000000000000001265516077000155425ustar00rootroot00000000000000phpsysinfo-3.2.5/includes/autoloader.inc.php000066400000000000000000000045251265516077000211700ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: autoloader.inc.php 660 2012-08-27 11:08:40Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ error_reporting(E_ALL | E_STRICT); /** * automatic loading classes when using them * * @param string $class_name name of the class which must be loaded * * @return void */ function __autoload($class_name) { //$class_name = str_replace('-', '', $class_name); /* case-insensitive folders */ $dirs = array('/plugins/'.strtolower($class_name).'/', '/includes/mb/', '/includes/ups/'); foreach ($dirs as $dir) { if (file_exists(APP_ROOT.$dir.'class.'.strtolower($class_name).'.inc.php')) { include_once APP_ROOT.$dir.'class.'.strtolower($class_name).'.inc.php'; return; } } /* case-sensitive folders */ $dirs = array('/includes/', '/includes/interface/', '/includes/to/', '/includes/to/device/', '/includes/os/', '/includes/plugin/', '/includes/xml/', '/includes/web/', '/includes/error/', '/includes/js/', '/includes/output/'); foreach ($dirs as $dir) { if (file_exists(APP_ROOT.$dir.'class.'.$class_name.'.inc.php')) { include_once APP_ROOT.$dir.'class.'.$class_name.'.inc.php'; return; } } $error = PSI_Error::singleton(); $error->addError("_autoload(\"".$class_name."\")", "autoloading of class file (class.".$class_name.".inc.php) failed!"); $error->errorsAsXML(); } /** * sets a user-defined error handler function * * @param integer $level contains the level of the error raised, as an integer. * @param string $message contains the error message, as a string. * @param string $file which contains the filename that the error was raised in, as a string. * @param integer $line which contains the line number the error was raised at, as an integer. * * @return void */ function errorHandlerPsi($level, $message, $file, $line) { $error = PSI_Error::singleton(); $error->addPhpError("errorHandlerPsi : ", "Level : ".$level." Message : ".$message." File : ".$file." Line : ".$line); } set_error_handler('errorHandlerPsi'); phpsysinfo-3.2.5/includes/class.CommonFunctions.inc.php000066400000000000000000000533121265516077000232540ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.CommonFunctions.inc.php 699 2012-09-15 11:57:13Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * class with common functions used in all places * * @category PHP * @package PSI * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class CommonFunctions { private static function _parse_log_file($string) { if (defined('PSI_LOG') && is_string(PSI_LOG) && (strlen(PSI_LOG)>0) && ((substr(PSI_LOG, 0, 1)=="-") || (substr(PSI_LOG, 0, 1)=="+"))) { $log_file = substr(PSI_LOG, 1); if (file_exists($log_file)) { $contents = @file_get_contents($log_file); if ($contents && preg_match("/^\-\-\-[^-\r\n]+\-\-\- ".preg_quote($string, '/')."\r?\n/m", $contents, $matches, PREG_OFFSET_CAPTURE)) { $findIndex = $matches[0][1]; if (preg_match("/\r?\n/m", $contents, $matches, PREG_OFFSET_CAPTURE, $findIndex)) { $startIndex = $matches[0][1]+1; if (preg_match("/^\-\-\-[^-\r\n]+\-\-\- /m", $contents, $matches, PREG_OFFSET_CAPTURE, $startIndex)) { $stopIndex = $matches[0][1]; return substr($contents, $startIndex, $stopIndex-$startIndex); } else { return substr($contents, $startIndex); } } } } } return false; } /** * Find a system program, do also path checking when not running on WINNT * on WINNT we simply return the name with the exe extension to the program name * * @param string $strProgram name of the program * * @return string complete path and name of the program */ private static function _findProgram($strProgram) { $path_parts = pathinfo($strProgram); if (empty($path_parts['basename'])) { return; } $arrPath = array(); if ((PSI_OS == 'WINNT') && empty($path_parts['extension'])) { $strProgram .= '.exe'; $path_parts = pathinfo($strProgram); } if (empty($path_parts['dirname']) || ($path_parts['dirname'] == '.')) { if (PSI_OS == 'WINNT') { $arrPath = preg_split('/;/', getenv("Path"), -1, PREG_SPLIT_NO_EMPTY); } else { $arrPath = preg_split('/:/', getenv("PATH"), -1, PREG_SPLIT_NO_EMPTY); } if (defined('PSI_ADD_PATHS') && is_string(PSI_ADD_PATHS)) { if (preg_match(ARRAY_EXP, PSI_ADD_PATHS)) { $arrPath = array_merge(eval(PSI_ADD_PATHS), $arrPath); // In this order so $addpaths is before $arrPath when looking for a program } else { $arrPath = array_merge(array(PSI_ADD_PATHS), $arrPath); // In this order so $addpaths is before $arrPath when looking for a program } } } else { array_push($arrPath, $path_parts['dirname']); $strProgram = $path_parts['basename']; } //add some default paths if we still have no paths here if (empty($arrPath) && PSI_OS != 'WINNT') { if (PSI_OS == 'Android') { array_push($arrPath, '/system/bin'); } else { array_push($arrPath, '/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin', '/usr/local/sbin'); } } $exceptPath = ""; if ((PSI_OS == 'WINNT') && (($windir = getenv("WinDir")) !== false)) { $windir = strtolower($windir); foreach ($arrPath as $strPath) { if ((strtolower($strPath) == $windir."\\system32") && is_dir($windir."\\SysWOW64")) { $exceptPath = $windir."\\sysnative"; array_push($arrPath, $exceptPath); break; } } } elseif (PSI_OS == 'Android') { $exceptPath = '/system/bin'; } // If open_basedir defined, fill the $open_basedir array with authorized paths,. (Not tested when no open_basedir restriction) if ((bool) ini_get('open_basedir')) { if (PSI_OS == 'WINNT') { $open_basedir = preg_split('/;/', ini_get('open_basedir'), -1, PREG_SPLIT_NO_EMPTY); } else { $open_basedir = preg_split('/:/', ini_get('open_basedir'), -1, PREG_SPLIT_NO_EMPTY); } } foreach ($arrPath as $strPath) { // Path with trailing slash if (PSI_OS == 'WINNT') { $strPathS = rtrim($strPath, "\\")."\\"; } else { $strPathS = rtrim($strPath, "/")."/"; } // To avoid "open_basedir restriction in effect" error when testing paths if restriction is enabled if (isset($open_basedir)) { $inBaseDir = false; if (PSI_OS == 'WINNT') { foreach ($open_basedir as $openbasedir) { if (substr($openbasedir, -1)=="\\") { $str_Path = $strPathS; } else { $str_Path = $strPath; } if (stripos($str_Path, $openbasedir) === 0) { $inBaseDir = true; break; } } } else { foreach ($open_basedir as $openbasedir) { if (substr($openbasedir, -1)=="/") { $str_Path = $strPathS; } else { $str_Path = $strPath; } if (strpos($str_Path, $openbasedir) === 0) { $inBaseDir = true; break; } } } if ($inBaseDir == false) { continue; } } if (($strPath !== $exceptPath) && !is_dir($strPath)) { continue; } if (PSI_OS == 'WINNT') { $strProgrammpath = rtrim($strPath, "\\")."\\".$strProgram; } else { $strProgrammpath = rtrim($strPath, "/")."/".$strProgram; } if (is_executable($strProgrammpath)) { return $strProgrammpath; } } } /** * Execute a system program. return a trim()'d result. * does very crude pipe checking. you need ' | ' for it to work * ie $program = CommonFunctions::executeProgram('netstat', '-anp | grep LIST'); * NOT $program = CommonFunctions::executeProgram('netstat', '-anp|grep LIST'); * * @param string $strProgramname name of the program * @param string $strArgs arguments to the program * @param string &$strBuffer output of the command * @param boolean $booErrorRep en- or disables the reporting of errors which should be logged * * @return boolean command successfull or not */ public static function executeProgram($strProgramname, $strArgs, &$strBuffer, $booErrorRep = true) { if (defined('PSI_LOG') && is_string(PSI_LOG) && (strlen(PSI_LOG)>0) && ((substr(PSI_LOG, 0, 1)=="-") || (substr(PSI_LOG, 0, 1)=="+"))) { $out = self::_parse_log_file("Executing: ".trim($strProgramname.' '.$strArgs)); if ($out == false) { if (substr(PSI_LOG, 0, 1)=="-") { $strBuffer = ''; return false; } } else { $strBuffer = $out; return true; } } $strBuffer = ''; $strError = ''; $pipes = array(); $strProgram = self::_findProgram($strProgramname); $error = PSI_Error::singleton(); if (!$strProgram) { if ($booErrorRep) { $error->addError('find_program('.$strProgramname.')', 'program not found on the machine'); } return false; } // see if we've gotten a |, if we have we need to do path checking on the cmd if ($strArgs) { $arrArgs = preg_split('/ /', $strArgs, -1, PREG_SPLIT_NO_EMPTY); for ($i = 0, $cnt_args = count($arrArgs); $i < $cnt_args; $i++) { if ($arrArgs[$i] == '|') { $strCmd = $arrArgs[$i + 1]; $strNewcmd = self::_findProgram($strCmd); $strArgs = preg_replace("/\| ".$strCmd.'/', '| "'.$strNewcmd.'"', $strArgs); } } } $descriptorspec = array(0=>array("pipe", "r"), 1=>array("pipe", "w"), 2=>array("pipe", "w")); if (defined("PSI_MODE_POPEN") && PSI_MODE_POPEN === true) { if (PSI_OS == 'WINNT') { $process = $pipes[1] = popen('"'.$strProgram.'" '.$strArgs." 2>nul", "r"); } else { $process = $pipes[1] = popen('"'.$strProgram.'" '.$strArgs." 2>/dev/null", "r"); } } else { $process = proc_open('"'.$strProgram.'" '.$strArgs, $descriptorspec, $pipes); } if (is_resource($process)) { self::_timeoutfgets($pipes, $strBuffer, $strError); if (defined("PSI_MODE_POPEN") && PSI_MODE_POPEN === true) { $return_value = pclose($pipes[1]); } else { fclose($pipes[0]); fclose($pipes[1]); fclose($pipes[2]); // It is important that you close any pipes before calling // proc_close in order to avoid a deadlock $return_value = proc_close($process); } } else { if ($booErrorRep) { $error->addError($strProgram, "\nOpen process error"); } return false; } $strError = trim($strError); $strBuffer = trim($strBuffer); if (defined('PSI_LOG') && is_string(PSI_LOG) && (strlen(PSI_LOG)>0) && (substr(PSI_LOG, 0, 1)!="-") && (substr(PSI_LOG, 0, 1)!="+")) { error_log("---".gmdate('r T')."--- Executing: ".trim($strProgramname.' '.$strArgs)."\n".$strBuffer."\n", 3, PSI_LOG); } if (! empty($strError)) { if ($booErrorRep) { $error->addError($strProgram, $strError."\nReturn value: ".$return_value); } return $return_value == 0; } return true; } /** * read a file and return the content as a string * * @param string $strFileName name of the file which should be read * @param string &$strRet content of the file (reference) * @param integer $intLines control how many lines should be read * @param integer $intBytes control how many bytes of each line should be read * @param boolean $booErrorRep en- or disables the reporting of errors which should be logged * * @return boolean command successfull or not */ public static function rfts($strFileName, &$strRet, $intLines = 0, $intBytes = 4096, $booErrorRep = true) { if (defined('PSI_LOG') && is_string(PSI_LOG) && (strlen(PSI_LOG)>0) && ((substr(PSI_LOG, 0, 1)=="-") || (substr(PSI_LOG, 0, 1)=="+"))) { $out = self::_parse_log_file("Reading: ".$strFileName); if ($out == false) { if (substr(PSI_LOG, 0, 1)=="-") { $strRet = ''; return false; } } else { $strRet = $out; return true; } } $strFile = ""; $intCurLine = 1; $error = PSI_Error::singleton(); if (file_exists($strFileName)) { if (is_readable($strFileName)) { if ($fd = fopen($strFileName, 'r')) { while (!feof($fd)) { $strFile .= fgets($fd, $intBytes); if ($intLines <= $intCurLine && $intLines != 0) { break; } else { $intCurLine++; } } fclose($fd); $strRet = $strFile; if (defined('PSI_LOG') && is_string(PSI_LOG) && (strlen(PSI_LOG)>0) && (substr(PSI_LOG, 0, 1)!="-") && (substr(PSI_LOG, 0, 1)!="+")) { if ((strlen($strRet)>0)&&(substr($strRet, -1)!="\n")) { error_log("---".gmdate('r T')."--- Reading: ".$strFileName."\n".$strRet."\n", 3, PSI_LOG); } else { error_log("---".gmdate('r T')."--- Reading: ".$strFileName."\n".$strRet, 3, PSI_LOG); } } } else { if ($booErrorRep) { $error->addError('fopen('.$strFileName.')', 'file can not read by phpsysinfo'); } return false; } } else { if ($booErrorRep) { $error->addError('fopen('.$strFileName.')', 'file permission error'); } return false; } } else { if ($booErrorRep) { $error->addError('file_exists('.$strFileName.')', 'the file does not exist on your machine'); } return false; } return true; } /** * file exists * * @param string $strFileName name of the file which should be check * * @return boolean command successfull or not */ public static function fileexists($strFileName) { if (defined('PSI_LOG') && is_string(PSI_LOG) && (strlen(PSI_LOG)>0) && ((substr(PSI_LOG, 0, 1)=="-") || (substr(PSI_LOG, 0, 1)=="+"))) { $log_file = substr(PSI_LOG, 1); if (file_exists($log_file) && ($contents = @file_get_contents($log_file)) && preg_match("/^\-\-\-[^-\n]+\-\-\- ".preg_quote("Reading: ".$strFileName, '/')."\n/m", $contents)) { return true; } else { if (substr(PSI_LOG, 0, 1)=="-") { return false; } } } return file_exists($strFileName); } /** * reads a directory and return the name of the files and directorys in it * * @param string $strPath path of the directory which should be read * @param boolean $booErrorRep en- or disables the reporting of errors which should be logged * * @return array content of the directory excluding . and .. */ public static function gdc($strPath, $booErrorRep = true) { $arrDirectoryContent = array(); $error = PSI_Error::singleton(); if (is_dir($strPath)) { if ($handle = opendir($strPath)) { while (($strFile = readdir($handle)) !== false) { if ($strFile != "." && $strFile != "..") { $arrDirectoryContent[] = $strFile; } } closedir($handle); } else { if ($booErrorRep) { $error->addError('opendir('.$strPath.')', 'directory can not be read by phpsysinfo'); } } } else { if ($booErrorRep) { $error->addError('is_dir('.$strPath.')', 'directory does not exist on your machine'); } } return $arrDirectoryContent; } /** * Check for needed php extensions * * We need that extensions for almost everything * This function will return a hard coded * XML string (with headers) if the SimpleXML extension isn't loaded. * Then it will terminate the script. * See bug #1787137 * * @param array $arrExt additional extensions for which a check should run * * @return void */ public static function checkForExtensions($arrExt = array()) { if ((strcasecmp(PSI_SYSTEM_CODEPAGE, "UTF-8") == 0) || (strcasecmp(PSI_SYSTEM_CODEPAGE, "CP437") == 0)) $arrReq = array('simplexml', 'pcre', 'xml', 'dom'); elseif (PSI_OS == "WINNT") $arrReq = array('simplexml', 'pcre', 'xml', 'mbstring', 'dom', 'com_dotnet'); else $arrReq = array('simplexml', 'pcre', 'xml', 'mbstring', 'dom'); $extensions = array_merge($arrExt, $arrReq); $text = ""; $error = false; $text .= "\n"; $text .= "\n"; $text .= " \n"; foreach ($extensions as $extension) { if (!extension_loaded($extension)) { $text .= " checkForExtensions\n"; $text .= " phpSysInfo requires the ".$extension." extension to php in order to work properly.\n"; $error = true; } } $text .= " \n"; $text .= ""; if ($error) { header("Content-Type: text/xml\n\n"); echo $text; die(); } } /** * get the content of stdout/stderr with the option to set a timeout for reading * * @param array $pipes array of file pointers for stdin, stdout, stderr (proc_open()) * @param string &$out target string for the output message (reference) * @param string &$err target string for the error message (reference) * @param integer $timeout timeout value in seconds (default value is 30) * * @return void */ private static function _timeoutfgets($pipes, &$out, &$err, $timeout = 30) { $w = null; $e = null; if (defined("PSI_MODE_POPEN") && PSI_MODE_POPEN === true) { $pipe2 = false; } else { $pipe2 = true; } while (!(feof($pipes[1]) && (!$pipe2 || feof($pipes[2])))) { if ($pipe2) { $read = array($pipes[1], $pipes[2]); } else { $read = array($pipes[1]); } $n = stream_select($read, $w, $e, $timeout); if ($n === false) { error_log('stream_select: failed !'); break; } elseif ($n === 0) { error_log('stream_select: timeout expired !'); break; } foreach ($read as $r) { if ($r == $pipes[1]) { $out .= fread($r, 4096); } elseif (feof($pipes[1]) && $pipe2 && ($r == $pipes[2])) {//read STDERR after STDOUT $err .= fread($r, 4096); } } } } /** * function for getting a list of values in the specified context * optionally filter this list, based on the list from third parameter * * @param $wmi holds the COM object that we pull the WMI data from * @param string $strClass name of the class where the values are stored * @param array $strValue filter out only needed values, if not set all values of the class are returned * * @return array content of the class stored in an array */ public static function getWMI($wmi, $strClass, $strValue = array()) { $arrData = array(); if ($wmi) { $value = ""; try { $objWEBM = $wmi->Get($strClass); $arrProp = $objWEBM->Properties_; $arrWEBMCol = $objWEBM->Instances_(); foreach ($arrWEBMCol as $objItem) { if (is_array($arrProp)) { reset($arrProp); } $arrInstance = array(); foreach ($arrProp as $propItem) { $value = $objItem->{$propItem->Name}; //instead exploitable eval("\$value = \$objItem->".$propItem->Name.";"); if (empty($strValue)) { if (is_string($value)) $arrInstance[$propItem->Name] = trim($value); else $arrInstance[$propItem->Name] = $value; } else { if (in_array($propItem->Name, $strValue)) { if (is_string($value)) $arrInstance[$propItem->Name] = trim($value); else $arrInstance[$propItem->Name] = $value; } } } $arrData[] = $arrInstance; } } catch (Exception $e) { if (PSI_DEBUG) { $error = PSI_Error::singleton(); $error->addError($e->getCode(), $e->getMessage()); } } } return $arrData; } /** * get all configured plugins from phpsysinfo.ini (file must be included and processed before calling this function) * * @return array */ public static function getPlugins() { if (defined('PSI_PLUGINS') && is_string(PSI_PLUGINS)) { if (preg_match(ARRAY_EXP, PSI_PLUGINS)) { return eval(strtolower(PSI_PLUGINS)); } else { return array(strtolower(PSI_PLUGINS)); } } else { return array(); } } } phpsysinfo-3.2.5/includes/class.Parser.inc.php000066400000000000000000000316541265516077000213740ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.Parser.inc.php 604 2012-07-10 07:31:34Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * parser class with common used parsing metods * * @category PHP * @package PSI * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Parser { /** * parsing the output of lspci command * * @return Array */ public static function lspci($debug = PSI_DEBUG) { $arrResults = array(); if (CommonFunctions::executeProgram("lspci", "", $strBuf, $debug)) { $arrLines = preg_split("/\n/", $strBuf, -1, PREG_SPLIT_NO_EMPTY); foreach ($arrLines as $strLine) { $arrParams = preg_split('/ /', trim($strLine), 2); if (count($arrParams) == 2) $strName = $arrParams[1]; else $strName = "unknown"; $strName = preg_replace('/\(.*\)/', '', $strName); $dev = new HWDevice(); $dev->setName($strName); $arrResults[] = $dev; } } return $arrResults; } /** * parsing the output of df command * * @param string $df_param additional parameter for df command * * @return array */ public static function df($df_param = "") { $arrResult = array(); if (CommonFunctions::executeProgram('mount', '', $mount, PSI_DEBUG)) { $mount = preg_split("/\n/", $mount, -1, PREG_SPLIT_NO_EMPTY); foreach ($mount as $mount_line) { if (preg_match("/(\S+) on ([\S ]+) type (.*) \((.*)\)/", $mount_line, $mount_buf)) { $parm = array(); $parm['mountpoint'] = trim($mount_buf[2]); $parm['fstype'] = $mount_buf[3]; $parm['name'] = $mount_buf[1]; if (PSI_SHOW_MOUNT_OPTION) $parm['options'] = $mount_buf[4]; $mount_parm[] = $parm; } elseif (preg_match("/(\S+) is (.*) mounted on (\S+) \(type (.*)\)/", $mount_line, $mount_buf)) { $parm = array(); $parm['mountpoint'] = trim($mount_buf[3]); $parm['fstype'] = $mount_buf[4]; $parm['name'] = $mount_buf[1]; if (PSI_SHOW_MOUNT_OPTION) $parm['options'] = $mount_buf[2]; $mount_parm[] = $parm; } elseif (preg_match("/(\S+) (.*) on (\S+) \((.*)\)/", $mount_line, $mount_buf)) { $parm = array(); $parm['mountpoint'] = trim($mount_buf[3]); $parm['fstype'] = $mount_buf[2]; $parm['name'] = $mount_buf[1]; if (PSI_SHOW_MOUNT_OPTION) $parm['options'] = $mount_buf[4]; $mount_parm[] = $parm; } elseif (preg_match("/(\S+) on ([\S ]+) \((\S+)(,\s(.*))?\)/", $mount_line, $mount_buf)) { $parm = array(); $parm['mountpoint'] = trim($mount_buf[2]); $parm['fstype'] = $mount_buf[3]; $parm['name'] = $mount_buf[1]; if (PSI_SHOW_MOUNT_OPTION) $parm['options'] = isset($mount_buf[5]) ? $mount_buf[5] : ''; $mount_parm[] = $parm; } } } elseif (CommonFunctions::rfts("/etc/mtab", $mount)) { $mount = preg_split("/\n/", $mount, -1, PREG_SPLIT_NO_EMPTY); foreach ($mount as $mount_line) { if (preg_match("/(\S+) (\S+) (\S+) (\S+) ([0-9]+) ([0-9]+)/", $mount_line, $mount_buf)) { $parm = array(); $mount_point = preg_replace("/\\\\040/i", ' ', $mount_buf[2]); //space as \040 $parm['mountpoint'] = $mount_point; $parm['fstype'] = $mount_buf[3]; $parm['name'] = $mount_buf[1]; if (PSI_SHOW_MOUNT_OPTION) $parm['options'] = $mount_buf[4]; $mount_parm[] = $parm; } } } if (CommonFunctions::executeProgram('df', '-k '.$df_param, $df, PSI_DEBUG) && ($df!=="")) { $df = preg_split("/\n/", $df, -1, PREG_SPLIT_NO_EMPTY); if (PSI_SHOW_INODES) { if (CommonFunctions::executeProgram('df', '-i '.$df_param, $df2, PSI_DEBUG)) { $df2 = preg_split("/\n/", $df2, -1, PREG_SPLIT_NO_EMPTY); // Store inode use% in an associative array (df_inodes) for later use foreach ($df2 as $df2_line) { if (preg_match("/^(\S+).*\s([0-9]+)%/", $df2_line, $inode_buf)) { $df_inodes[$inode_buf[1]] = $inode_buf[2]; } } } } foreach ($df as $df_line) { $df_buf1 = preg_split("/(\%\s)/", $df_line, 3); if (count($df_buf1) < 2) { continue; } if (preg_match("/(.*)(\s+)(([0-9]+)(\s+)([0-9]+)(\s+)([\-0-9]+)(\s+)([0-9]+)$)/", $df_buf1[0], $df_buf2)) { if (count($df_buf1) == 3) { $df_buf = array($df_buf2[1], $df_buf2[4], $df_buf2[6], $df_buf2[8], $df_buf2[10], $df_buf1[2]); } else { $df_buf = array($df_buf2[1], $df_buf2[4], $df_buf2[6], $df_buf2[8], $df_buf2[10], $df_buf1[1]); } if (count($df_buf) == 6) { $df_buf[5] = trim($df_buf[5]); $dev = new DiskDevice(); $dev->setName(trim($df_buf[0])); if ($df_buf[2] < 0) { $dev->setTotal($df_buf[3] * 1024); $dev->setUsed($df_buf[3] * 1024); } else { $dev->setTotal($df_buf[1] * 1024); $dev->setUsed($df_buf[2] * 1024); if ($df_buf[3]>0) { $dev->setFree($df_buf[3] * 1024); } } if (PSI_SHOW_MOUNT_POINT) $dev->setMountPoint($df_buf[5]); $notwas = true; if (isset($mount_parm)) { foreach ($mount_parm as $mount_param) { //name and mountpoint find if (($mount_param['name']===trim($df_buf[0])) && ($mount_param['mountpoint']===$df_buf[5])) { $dev->setFsType($mount_param['fstype']); if (PSI_SHOW_MOUNT_OPTION) { if (PSI_SHOW_MOUNT_CREDENTIALS) { $dev->setOptions($mount_param['options']); } else { $mpo=$mount_param['options']; $mpo=preg_replace('/(^guest,)|(^guest$)|(,guest$)/i', '', $mpo); $mpo=preg_replace('/,guest,/i', ',', $mpo); $mpo=preg_replace('/(^user=[^,]*,)|(^user=[^,]*$)|(,user=[^,]*$)/i', '', $mpo); $mpo=preg_replace('/,user=[^,]*,/i', ',', $mpo); $mpo=preg_replace('/(^username=[^,]*,)|(^username=[^,]*$)|(,username=[^,]*$)/i', '', $mpo); $mpo=preg_replace('/,username=[^,]*,/i', ',', $mpo); $mpo=preg_replace('/(^password=[^,]*,)|(^password=[^,]*$)|(,password=[^,]*$)/i', '', $mpo); $mpo=preg_replace('/,password=[^,]*,/i', ',', $mpo); $dev->setOptions($mpo); } } $notwas = false; break; } } if ($notwas) foreach ($mount_parm as $mount_param) { //mountpoint find if ($mount_param['mountpoint']===$df_buf[5]) { $dev->setFsType($mount_param['fstype']); if (PSI_SHOW_MOUNT_OPTION) { if (PSI_SHOW_MOUNT_CREDENTIALS) { $dev->setOptions($mount_param['options']); } else { $mpo=$mount_param['options']; $mpo=preg_replace('/(^guest,)|(^guest$)|(,guest$)/i', '', $mpo); $mpo=preg_replace('/,guest,/i', ',', $mpo); $mpo=preg_replace('/(^user=[^,]*,)|(^user=[^,]*$)|(,user=[^,]*$)/i', '', $mpo); $mpo=preg_replace('/,user=[^,]*,/i', ',', $mpo); $mpo=preg_replace('/(^username=[^,]*,)|(^username=[^,]*$)|(,username=[^,]*$)/i', '', $mpo); $mpo=preg_replace('/,username=[^,]*,/i', ',', $mpo); $mpo=preg_replace('/(^password=[^,]*,)|(^password=[^,]*$)|(,password=[^,]*$)/i', '', $mpo); $mpo=preg_replace('/,password=[^,]*,/i', ',', $mpo); $dev->setOptions($mpo); } } $notwas = false; break; } } } if ($notwas) { $dev->setFsType('unknown'); } if (PSI_SHOW_INODES && isset($df_inodes[trim($df_buf[0])])) { $dev->setPercentInodesUsed($df_inodes[trim($df_buf[0])]); } $arrResult[] = $dev; } } } } else { if (isset($mount_parm)) { foreach ($mount_parm as $mount_param) { $total = disk_total_space($mount_param['mountpoint']); if (($mount_param['fstype'] != 'none') && ($total > 0)) { $dev = new DiskDevice(); $dev->setName($mount_param['name']); $dev->setFsType($mount_param['fstype']); if (PSI_SHOW_MOUNT_POINT) $dev->setMountPoint($mount_param['mountpoint']); $dev->setTotal($total); $free = disk_free_space($mount_param['mountpoint']); if ($free > 0) { $dev->setFree($free); } else { $free = 0; } if ($total > $free) $dev->setUsed($total - $free); if (PSI_SHOW_MOUNT_OPTION) { if (PSI_SHOW_MOUNT_CREDENTIALS) { $dev->setOptions($mount_param['options']); } else { $mpo=$mount_param['options']; $mpo=preg_replace('/(^guest,)|(^guest$)|(,guest$)/i', '', $mpo); $mpo=preg_replace('/,guest,/i', ',', $mpo); $mpo=preg_replace('/(^user=[^,]*,)|(^user=[^,]*$)|(,user=[^,]*$)/i', '', $mpo); $mpo=preg_replace('/,user=[^,]*,/i', ',', $mpo); $mpo=preg_replace('/(^username=[^,]*,)|(^username=[^,]*$)|(,username=[^,]*$)/i', '', $mpo); $mpo=preg_replace('/,username=[^,]*,/i', ',', $mpo); $mpo=preg_replace('/(^password=[^,]*,)|(^password=[^,]*$)|(,password=[^,]*$)/i', '', $mpo); $mpo=preg_replace('/,password=[^,]*,/i', ',', $mpo); $dev->setOptions($mpo); } } $arrResult[] = $dev; } } } } return $arrResult; } } phpsysinfo-3.2.5/includes/error/000077500000000000000000000000001265516077000166735ustar00rootroot00000000000000phpsysinfo-3.2.5/includes/error/class.PSI_Error.inc.php000066400000000000000000000207451265516077000230740ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.Error.inc.php 569 2012-04-16 06:08:18Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * class for the error handling in phpsysinfo * * @category PHP * @package PSI_Error * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class PSI_Error { /** * holds the instance of this class * * @static * @var object */ private static $_instance; /** * holds the error messages * * @var array */ private $_arrErrorList = array(); /** * current number ob errors * * @var integer */ private $_errors = 0; /** * initalize some used vars */ private function __construct() { $this->_errors = 0; $this->_arrErrorList = array(); } /** * Singleton function * * @return Error instance of the class */ public static function singleton() { if (!isset(self::$_instance)) { $c = __CLASS__; self::$_instance = new $c; } return self::$_instance; } /** * triggers an error when somebody tries to clone the object * * @return void */ public function __clone() { trigger_error("Can't be cloned", E_USER_ERROR); } /** * adds an phpsysinfo error to the internal list * * @param string $strCommand Command, which cause the Error * @param string $strMessage additional Message, to describe the Error * * @return void */ public function addError($strCommand, $strMessage) { $this->_addError($strCommand, $this->_trace($strMessage)); } /** * adds an error to the internal list * * @param string $strCommand Command, which cause the Error * @param string $strMessage message, that describe the Error * * @return void */ private function _addError($strCommand, $strMessage) { $index = count($this->_arrErrorList) + 1; $this->_arrErrorList[$index]['command'] = $strCommand; $this->_arrErrorList[$index]['message'] = $strMessage; $this->_errors++; } /** * add a config error to the internal list * * @param object $strCommand Command, which cause the Error * @param object $strMessage additional Message, to describe the Error * * @return void */ public function addConfigError($strCommand, $strMessage) { $this->_addError($strCommand, "Wrong Value in phpsysinfo.ini for ".$strMessage); } /** * add a php error to the internal list * * @param object $strCommand Command, which cause the Error * @param object $strMessage additional Message, to describe the Error * * @return void */ public function addPhpError($strCommand, $strMessage) { $this->_addError($strCommand, "PHP throws a error\n".$strMessage); } /** * adds a waraning to the internal list * * @param string $strMessage Warning message to display * * @return void */ public function addWarning($strMessage) { $index = count($this->_arrErrorList) + 1; $this->_arrErrorList[$index]['command'] = "WARN"; $this->_arrErrorList[$index]['message'] = $strMessage; } /** * converts the internal error and warning list to a XML file * * @return void */ public function errorsAsXML() { $dom = new DOMDocument('1.0', 'UTF-8'); $root = $dom->createElement("phpsysinfo"); $dom->appendChild($root); $xml = new SimpleXMLExtended(simplexml_import_dom($dom), 'UTF-8'); $generation = $xml->addChild('Generation'); $generation->addAttribute('version', PSI_VERSION_STRING); $generation->addAttribute('timestamp', time()); $xmlerr = $xml->addChild("Errors"); foreach ($this->_arrErrorList as $arrLine) { // $error = $xmlerr->addCData('Error', $arrLine['message']); $error = $xmlerr->addChild('Error'); $error->addAttribute('Message', $arrLine['message']); $error->addAttribute('Function', $arrLine['command']); } header("Cache-Control: no-cache, must-revalidate\n"); header("Content-Type: text/xml\n\n"); echo $xml->getSimpleXmlElement()->asXML(); exit(); } /** * add the errors to an existing xml document * * @param String $encoding encoding * * @return SimpleXmlElement */ public function errorsAddToXML($encoding) { $dom = new DOMDocument('1.0', 'UTF-8'); $root = $dom->createElement("Errors"); $dom->appendChild($root); $xml = simplexml_import_dom($dom); $xmlerr = new SimpleXMLExtended($xml, $encoding); foreach ($this->_arrErrorList as $arrLine) { // $error = $xmlerr->addCData('Error', $arrLine['message']); $error = $xmlerr->addChild('Error'); $error->addAttribute('Message', $arrLine['message']); $error->addAttribute('Function', $arrLine['command']); } return $xmlerr->getSimpleXmlElement(); } /** * check if errors exists * * @return boolean true if are errors logged, false if not */ public function errorsExist() { if ($this->_errors > 0) { return true; } else { return false; } } /** * generate a function backtrace for error diagnostic, function is genearally based on code submitted in the php reference page * * @param string $strMessage additional message to display * * @return string formatted string of the backtrace */ private function _trace($strMessage) { $arrTrace = array_reverse(debug_backtrace()); $strFunc = ''; $strBacktrace = htmlspecialchars($strMessage)."\n\n"; foreach ($arrTrace as $val) { // avoid the last line, which says the error is from the error class if ($val == $arrTrace[count($arrTrace) - 1]) { break; } $strBacktrace .= str_replace(APP_ROOT, ".", $val['file']).' on line '.$val['line']; if ($strFunc) { $strBacktrace .= ' in function '.$strFunc; } if ($val['function'] == 'include' || $val['function'] == 'require' || $val['function'] == 'include_once' || $val['function'] == 'require_once') { $strFunc = ''; } else { $strFunc = $val['function'].'('; if (isset($val['args'][0])) { $strFunc .= ' '; $strComma = ''; foreach ($val['args'] as $val) { $strFunc .= $strComma.$this->_printVar($val); $strComma = ', '; } $strFunc .= ' '; } $strFunc .= ')'; } $strBacktrace .= "\n"; } return $strBacktrace; } /** * convert some special vars into better readable output * * @param mixed $var value, which should be formatted * * @return string formatted string */ private function _printVar($var) { if (is_string($var)) { $search = array("\x00", "\x0a", "\x0d", "\x1a", "\x09"); $replace = array('\0', '\n', '\r', '\Z', '\t'); return ('"'.str_replace($search, $replace, $var).'"'); } elseif (is_bool($var)) { if ($var) { return ('true'); } else { return ('false'); } } elseif (is_array($var)) { $strResult = 'array( '; $strComma = ''; foreach ($var as $key=>$val) { $strResult .= $strComma.$this->_printVar($key).' => '.$this->_printVar($val); $strComma = ', '; } $strResult .= ' )'; return ($strResult); } // anything else, just let php try to print it return (var_export($var, true)); } } phpsysinfo-3.2.5/includes/interface/000077500000000000000000000000001265516077000175025ustar00rootroot00000000000000phpsysinfo-3.2.5/includes/interface/class.PSI_Interface_OS.inc.php000066400000000000000000000025501265516077000251050ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.PSI_Interface_OS.inc.php 263 2009-06-22 13:01:52Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * define which methods a os class for phpsysinfo must implement * to be recognized and fully work without errors, these are the methods which * are called from outside to include the information in the main application * * @category PHP * @package PSI_Interfaces * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ interface PSI_Interface_OS { /** * get a special encoding from os where phpsysinfo is running * * @return string */ public function getEncoding(); /** * build the os information * * @return void */ public function build(); /** * get the filled or unfilled (with default values) system object * * @return System */ public function getSys(); } phpsysinfo-3.2.5/includes/interface/class.PSI_Interface_Output.inc.php000066400000000000000000000017411265516077000260650ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.PSI_Interface_Output.inc.php 214 2009-05-25 08:32:40Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * define which methods a output class for phpsysinfo must implement * to be recognized and fully work without errors * * @category PHP * @package PSI_Interfaces * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ interface PSI_Interface_Output { /** * generate the output * * @return void */ public function run(); } phpsysinfo-3.2.5/includes/interface/class.PSI_Interface_Plugin.inc.php000066400000000000000000000024341265516077000260230ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.PSI_Interface_Plugin.inc.php 273 2009-06-24 11:40:09Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * define which methods a plugin class for phpsysinfo must implement * to be recognized and fully work without errors, these are the methods which * are called from outside to include the information in the main application * * @category PHP * @package PSI_Interfaces * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ interface PSI_Interface_Plugin { /** * doing all tasks before the xml can be build * * @return void */ public function execute(); /** * build the xml * * @return SimpleXMLObject entire XML content for the plugin which than can be appended to the main XML */ public function xml(); } phpsysinfo-3.2.5/includes/interface/class.PSI_Interface_Sensor.inc.php000066400000000000000000000023601265516077000260340ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.PSI_Interface_Sensor.inc.php 263 2009-06-22 13:01:52Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * define which methods every sensor class for phpsysinfo must implement * to be recognized and fully work without errors, these are the methods which * are called from outside to include the information in the main application * * @category PHP * @package PSI_Interfaces * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ interface PSI_Interface_Sensor { /** * build the mbinfo information * * @return void */ public function build(); /** * get the filled or unfilled (with default values) MBInfo object * * @return MBInfo */ public function getMBInfo(); } phpsysinfo-3.2.5/includes/interface/class.PSI_Interface_UPS.inc.php000066400000000000000000000021651265516077000252350ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.PSI_Interface_UPS.inc.php 263 2009-06-22 13:01:52Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * define which methods a ups class for phpsysinfo must implement * to be recognized and fully work without errors * * @category PHP * @package PSI_Interfaces * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ interface PSI_Interface_UPS { /** * build the ups information * * @return void */ public function build(); /** * get the filled or unfilled (with default values) UPSInfo object * * @return UPSInfo */ public function getUPSInfo(); } phpsysinfo-3.2.5/includes/js/000077500000000000000000000000001265516077000161565ustar00rootroot00000000000000phpsysinfo-3.2.5/includes/js/README000066400000000000000000000007621265516077000170430ustar00rootroot00000000000000versions, links and simple description of used files =========================================================== class.JavaScriptPacker.inc.php --------- VERSION : 1.1+FF4 URL : http://dean.edwards.name DESC : Downloaded from http://dean.edwards.name/download/ http://joliclic.free.fr/php/javascript-packer/en/ + Firefox 4 fix LICENSE : LGPL 2.1 (http://creativecommons.org/licenses/LGPL/2.1/) USED : define('PSI_JS_COMPRESSION', 'None'); or define('PSI_JS_COMPRESSION', 'Normal'); phpsysinfo-3.2.5/includes/js/class.JavaScriptPacker.inc.php000066400000000000000000000655321265516077000237520ustar00rootroot00000000000000pack(); * * or * * $myPacker = new JavaScriptPacker($script, 'Normal', true, false); * $packed = $myPacker->pack(); * * or (default values) * * $myPacker = new JavaScriptPacker($script); * $packed = $myPacker->pack(); * * * params of the constructor : * $script: the JavaScript to pack, string. * $encoding: level of encoding, int or string : * 0,10,62,95 or 'None', 'Numeric', 'Normal', 'High ASCII'. * default: 62. * $fastDecode: include the fast decoder in the packed result, boolean. * default : true. * $specialChars: if you are flagged your private and local variables * in the script, boolean. * default: false. * * The pack() method return the compressed JavasScript, as a string. * * see http://dean.edwards.name/packer/usage/ for more information. * * Notes : * # need PHP 5 . Tested with PHP 5.1.2, 5.1.3, 5.1.4, 5.2.3 * * # The packed result may be different than with the Dean Edwards * version, but with the same length. The reason is that the PHP * function usort to sort array don't necessarily preserve the * original order of two equal member. The Javascript sort function * in fact preserve this order (but that's not require by the * ECMAScript standard). So the encoded keywords order can be * different in the two results. * * # Be careful with the 'High ASCII' Level encoding if you use * UTF-8 in your files... */ class JavaScriptPacker { // constants const IGNORE = '$1'; // validate parameters private $_script = ''; private $_encoding = 62; private $_fastDecode = true; private $_specialChars = false; private $LITERAL_ENCODING = array( 'None' => 0, 'Numeric' => 10, 'Normal' => 62, 'High ASCII' => 95 ); public function __construct($_script, $_encoding = 62, $_fastDecode = true, $_specialChars = false) { $this->_script = $_script . "\n"; if (array_key_exists($_encoding, $this->LITERAL_ENCODING)) $_encoding = $this->LITERAL_ENCODING[$_encoding]; $this->_encoding = min((int) $_encoding, 95); $this->_fastDecode = $_fastDecode; $this->_specialChars = $_specialChars; } public function pack() { $this->_addParser('_basicCompression'); if ($this->_specialChars) $this->_addParser('_encodeSpecialChars'); if ($this->_encoding) $this->_addParser('_encodeKeywords'); // go! return $this->_pack($this->_script); } // apply all parsing routines private function _pack($script) { for ($i = 0; isset($this->_parsers[$i]); $i++) { $script = call_user_func(array(&$this, $this->_parsers[$i]), $script); } return $script; } // keep a list of parsing functions, they'll be executed all at once private $_parsers = array(); private function _addParser($parser) { $this->_parsers[] = $parser; } // zero encoding - just removal of white space and comments private function _basicCompression($script) { $parser = new ParseMaster(); // make safe $parser->escapeChar = '\\'; // protect strings $parser->add('/\'[^\'\\n\\r]*\'/', self::IGNORE); $parser->add('/"[^"\\n\\r]*"/', self::IGNORE); // remove comments $parser->add('/\\/\\/[^\\n\\r]*[\\n\\r]/', ' '); $parser->add('/\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\//', ' '); // protect regular expressions $parser->add('/\\s+(\\/[^\\/\\n\\r\\*][^\\/\\n\\r]*\\/g?i?)/', '$2'); // IGNORE $parser->add('/[^\\w\\x24\\/\'"*)\\?:]\\/[^\\/\\n\\r\\*][^\\/\\n\\r]*\\/g?i?/', self::IGNORE); // remove: ;;; doSomething(); if ($this->_specialChars) $parser->add('/;;;[^\\n\\r]+[\\n\\r]/'); // remove redundant semi-colons $parser->add('/\\(;;\\)/', self::IGNORE); // protect for (;;) loops $parser->add('/;+\\s*([};])/', '$2'); // apply the above $script = $parser->exec($script); // remove white-space $parser->add('/(\\b|\\x24)\\s+(\\b|\\x24)/', '$2 $3'); $parser->add('/([+\\-])\\s+([+\\-])/', '$2 $3'); $parser->add('/\\s+/', ''); // done return $parser->exec($script); } private function _encodeSpecialChars($script) { $parser = new ParseMaster(); // replace: $name -> n, $$name -> na $parser->add('/((\\x24+)([a-zA-Z$_]+))(\\d*)/', array('fn' => '_replace_name') ); // replace: _name -> _0, double-underscore (__name) is ignored $regexp = '/\\b_[A-Za-z\\d]\\w*/'; // build the word list $keywords = $this->_analyze($script, $regexp, '_encodePrivate'); // quick ref $encoded = $keywords['encoded']; $parser->add($regexp, array( 'fn' => '_replace_encoded', 'data' => $encoded ) ); return $parser->exec($script); } private function _encodeKeywords($script) { // escape high-ascii values already in the script (i.e. in strings) if ($this->_encoding > 62) $script = $this->_escape95($script); // create the parser $parser = new ParseMaster(); $encode = $this->_getEncoder($this->_encoding); // for high-ascii, don't encode single character low-ascii $regexp = ($this->_encoding > 62) ? '/\\w\\w+/' : '/\\w+/'; // build the word list $keywords = $this->_analyze($script, $regexp, $encode); $encoded = $keywords['encoded']; // encode $parser->add($regexp, array( 'fn' => '_replace_encoded', 'data' => $encoded ) ); if (empty($script)) return $script; else { //$res = $parser->exec($script); //$res = $this->_bootStrap($res, $keywords); //return $res; return $this->_bootStrap($parser->exec($script), $keywords); } } private function _analyze($script, $regexp, $encode) { // analyse // retreive all words in the script $all = array(); preg_match_all($regexp, $script, $all); $_sorted = array(); // list of words sorted by frequency $_encoded = array(); // dictionary of word->encoding $_protected = array(); // instances of "protected" words $all = $all[0]; // simulate the javascript comportement of global match if (!empty($all)) { $unsorted = array(); // same list, not sorted $protected = array(); // "protected" words (dictionary of word->"word") $value = array(); // dictionary of charCode->encoding (eg. 256->ff) $this->_count = array(); // word->count $i = count($all); $j = 0; //$word = null; // count the occurrences - used for sorting later do { --$i; $word = '$' . $all[$i]; if (!isset($this->_count[$word])) { $this->_count[$word] = 0; $unsorted[$j] = $word; // make a dictionary of all of the protected words in this script // these are words that might be mistaken for encoding //if (is_string($encode) && method_exists($this, $encode)) $values[$j] = call_user_func(array(&$this, $encode), $j); $protected['$' . $values[$j]] = $j++; } // increment the word counter $this->_count[$word]++; } while ($i > 0); // prepare to sort the word list, first we must protect // words that are also used as codes. we assign them a code // equivalent to the word itself. // e.g. if "do" falls within our encoding range // then we store keywords["do"] = "do"; // this avoids problems when decoding $i = count($unsorted); do { $word = $unsorted[--$i]; if (isset($protected[$word]) /*!= null*/) { $_sorted[$protected[$word]] = substr($word, 1); $_protected[$protected[$word]] = true; $this->_count[$word] = 0; } } while ($i); // sort the words by frequency // Note: the javascript and php version of sort can be different : // in php manual, usort : // " If two members compare as equal, // their order in the sorted array is undefined." // so the final packed script is different of the Dean's javascript version // but equivalent. // the ECMAscript standard does not guarantee this behaviour, // and thus not all browsers (e.g. Mozilla versions dating back to at // least 2003) respect this. usort($unsorted, array(&$this, '_sortWords')); $j = 0; // because there are "protected" words in the list // we must add the sorted words around them do { if (!isset($_sorted[$i])) $_sorted[$i] = substr($unsorted[$j++], 1); $_encoded[$_sorted[$i]] = $values[$i]; } while (++$i < count($unsorted)); } return array( 'sorted' => $_sorted, 'encoded' => $_encoded, 'protected' => $_protected); } private $_count = array(); private function _sortWords($match1, $match2) { return $this->_count[$match2] - $this->_count[$match1]; } // build the boot function used for loading and decoding private function _bootStrap($packed, $keywords) { $ENCODE = $this->_safeRegExp('$encode\\($count\\)'); // $packed: the packed script $packed = "'" . $this->_escape($packed) . "'"; // $ascii: base for encoding $ascii = min(count($keywords['sorted']), $this->_encoding); if ($ascii == 0) $ascii = 1; // $count: number of words contained in the script $count = count($keywords['sorted']); // $keywords: list of words contained in the script foreach ($keywords['protected'] as $i=>$value) { $keywords['sorted'][$i] = ''; } // convert from a string to an array ksort($keywords['sorted']); $keywords = "'" . implode('|', $keywords['sorted']) . "'.split('|')"; $encode = ($this->_encoding > 62) ? '_encode95' : $this->_getEncoder($ascii); $encode = $this->_getJSFunction($encode); $encode = preg_replace('/_encoding/', '$ascii', $encode); $encode = preg_replace('/arguments\\.callee/', '$encode', $encode); $inline = '\\$count' . ($ascii > 10 ? '.toString(\\$ascii)' : ''); // $decode: code snippet to speed up decoding if ($this->_fastDecode) { // create the decoder $decode = $this->_getJSFunction('_decodeBody'); if ($this->_encoding > 62) $decode = preg_replace('/\\\\w/', '[\\xa1-\\xff]', $decode); // perform the encoding inline for lower ascii values elseif ($ascii < 36) $decode = preg_replace($ENCODE, $inline, $decode); // special case: when $count==0 there are no keywords. I want to keep // the basic shape of the unpacking funcion so i'll frig the code... if ($count == 0) $decode = preg_replace($this->_safeRegExp('($count)\\s*=\\s*1'), '$1=0', $decode, 1); } // boot function $unpack = $this->_getJSFunction('_unpack'); if ($this->_fastDecode) { // insert the decoder $this->buffer = $decode; $unpack = preg_replace_callback('/\\{/', array(&$this, '_insertFastDecode'), $unpack, 1); } $unpack = preg_replace('/"/', "'", $unpack); if ($this->_encoding > 62) { // high-ascii // get rid of the word-boundaries for regexp matches $unpack = preg_replace('/\'\\\\\\\\b\'\s*\\+|\\+\s*\'\\\\\\\\b\'/', '', $unpack); } if ($ascii > 36 || $this->_encoding > 62 || $this->_fastDecode) { // insert the encode function $this->buffer = $encode; $unpack = preg_replace_callback('/\\{/', array(&$this, '_insertFastEncode'), $unpack, 1); } else { // perform the encoding inline $unpack = preg_replace($ENCODE, $inline, $unpack); } // pack the boot function too $unpackPacker = new JavaScriptPacker($unpack, 0, false, true); $unpack = $unpackPacker->pack(); // arguments $params = array($packed, $ascii, $count, $keywords); if ($this->_fastDecode) { $params[] = 0; $params[] = '{}'; } $params = implode(',', $params); // the whole thing //Firefox 4 fix, old: return 'eval(' . $unpack . '(' . $params . "))\n"; return "(typeof setTimeout=='function'?setTimeout:eval)(" . $unpack . "(" . $params . "));\n"; } private $buffer; private function _insertFastDecode($match) { return '{' . $this->buffer . ';'; } private function _insertFastEncode($match) { return '{$encode=' . $this->buffer . ';'; } // mmm.. ..which one do i need ?? private function _getEncoder($ascii) { return $ascii > 10 ? $ascii > 36 ? $ascii > 62 ? '_encode95' : '_encode62' : '_encode36' : '_encode10'; } // zero encoding // characters: 0123456789 private function _encode10($charCode) { return $charCode; } // inherent base36 support // characters: 0123456789abcdefghijklmnopqrstuvwxyz private function _encode36($charCode) { return base_convert($charCode, 10, 36); } // hitch a ride on base36 and add the upper case alpha characters // characters: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ private function _encode62($charCode) { $res = ''; if ($charCode >= $this->_encoding) { $res = $this->_encode62((int) ($charCode / $this->_encoding)); } $charCode = $charCode % $this->_encoding; if ($charCode > 35) return $res . chr($charCode + 29); else return $res . base_convert($charCode, 10, 36); } // use high-ascii values // characters: ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ private function _encode95($charCode) { $res = ''; if ($charCode >= $this->_encoding) $res = $this->_encode95($charCode / $this->_encoding); return $res . chr(($charCode % $this->_encoding) + 161); } private function _safeRegExp($string) { return '/'.preg_replace('/\$/', '\\\$', $string).'/'; } private function _encodePrivate($charCode) { return "_" . $charCode; } // protect characters used by the parser private function _escape($script) { return preg_replace('/([\\\\\'])/', '\\\$1', $script); } // protect high-ascii characters already in the script private function _escape95($script) { return preg_replace_callback( '/[\\xa1-\\xff]/', array(&$this, '_escape95Bis'), $script ); } private function _escape95Bis($match) { return '\x'.((string) dechex(ord($match))); } private function _getJSFunction($aName) { if (defined('self::JSFUNCTION'.$aName)) return constant('self::JSFUNCTION'.$aName); else return ''; } // JavaScript Functions used. // Note : In Dean's version, these functions are converted // with 'String(aFunctionName);'. // This internal conversion complete the original code, ex : // 'while (aBool) anAction();' is converted to // 'while (aBool) { anAction(); }'. // The JavaScript functions below are corrected. // unpacking function - this is the boot strap function // data extracted from this packing routine is passed to // this function when decoded in the target // NOTE ! : without the ';' final. const JSFUNCTION_unpack = 'function ($packed, $ascii, $count, $keywords, $encode, $decode) { while ($count--) { if ($keywords[$count]) { $packed = $packed.replace(new RegExp(\'\\\\b\' + $encode($count) + \'\\\\b\', \'g\'), $keywords[$count]); } } return $packed; }'; /* 'function ($packed, $ascii, $count, $keywords, $encode, $decode) { while ($count--) if ($keywords[$count]) $packed = $packed.replace(new RegExp(\'\\\\b\' + $encode($count) + \'\\\\b\', \'g\'), $keywords[$count]); return $packed; }'; */ // code-snippet inserted into the unpacker to speed up decoding const JSFUNCTION_decodeBody = //_decode = function () { // does the browser support String.replace where the // replacement value is a function? ' if (!\'\'.replace(/^/, String)) { // decode all the values we need while ($count--) { $decode[$encode($count)] = $keywords[$count] || $encode($count); } // global replacement function $keywords = [function ($encoded) {return $decode[$encoded]}]; // generic match $encode = function () {return \'\\\\w+\'}; // reset the loop counter - we are now doing a global replace $count = 1; } '; //}; /* ' if (!\'\'.replace(/^/, String)) { // decode all the values we need while ($count--) $decode[$encode($count)] = $keywords[$count] || $encode($count); // global replacement function $keywords = [function ($encoded) {return $decode[$encoded]}]; // generic match $encode = function () {return\'\\\\w+\'}; // reset the loop counter - we are now doing a global replace $count = 1; }'; */ // zero encoding // characters: 0123456789 const JSFUNCTION_encode10 = 'function ($charCode) { return $charCode; }';//;'; // inherent base36 support // characters: 0123456789abcdefghijklmnopqrstuvwxyz const JSFUNCTION_encode36 = 'function ($charCode) { return $charCode.toString(36); }';//;'; // hitch a ride on base36 and add the upper case alpha characters // characters: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ const JSFUNCTION_encode62 = 'function ($charCode) { return ($charCode < _encoding ? \'\' : arguments.callee(parseInt($charCode / _encoding))) + (($charCode = $charCode % _encoding) > 35 ? String.fromCharCode($charCode + 29) : $charCode.toString(36)); }'; // use high-ascii values // characters: ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ const JSFUNCTION_encode95 = 'function ($charCode) { return ($charCode < _encoding ? \'\' : arguments.callee($charCode / _encoding)) + String.fromCharCode($charCode % _encoding + 161); }'; } class ParseMaster { public $ignoreCase = false; public $escapeChar = ''; // constants const EXPRESSION = 0; const REPLACEMENT = 1; const LENGTH = 2; // used to determine nesting levels private $GROUPS = '/\\(/';//g private $SUB_REPLACE = '/\\$\\d/'; private $INDEXED = '/^\\$\\d+$/'; private $TRIM = '/([\'"])\\1\\.(.*)\\.\\1\\1$/'; private $ESCAPE = '/\\\./';//g private $QUOTE = '/\'/'; private $DELETED = '/\\x01[^\\x01]*\\x01/';//g public function add($expression, $replacement = '') { // count the number of sub-expressions // - add one because each pattern is itself a sub-expression $length = 1 + preg_match_all($this->GROUPS, $this->_internalEscape((string) $expression), $out); // treat only strings $replacement if (is_string($replacement)) { // does the pattern deal with sub-expressions? if (preg_match($this->SUB_REPLACE, $replacement)) { // a simple lookup? (e.g. "$2") if (preg_match($this->INDEXED, $replacement)) { // store the index (used for fast retrieval of matched strings) $replacement = (int) (substr($replacement, 1)) - 1; } else { // a complicated lookup (e.g. "Hello $2 $1") // build a function to do the lookup $quote = preg_match($this->QUOTE, $this->_internalEscape($replacement)) ? '"' : "'"; $replacement = array( 'fn' => '_backReferences', 'data' => array( 'replacement' => $replacement, 'length' => $length, 'quote' => $quote ) ); } } } // pass the modified arguments if (!empty($expression)) $this->_add($expression, $replacement, $length); else $this->_add('/^$/', $replacement, $length); } public function exec($string) { // execute the global replacement $this->_escaped = array(); // simulate the _patterns.toSTring of Dean $regexp = '/'; foreach ($this->_patterns as $reg) { $regexp .= '(' . substr($reg[self::EXPRESSION], 1, -1) . ')|'; } $regexp = substr($regexp, 0, -1) . '/'; $regexp .= ($this->ignoreCase) ? 'i' : ''; $string = $this->_escape($string, $this->escapeChar); $string = preg_replace_callback( $regexp, array( &$this, '_replacement' ), $string ); $string = $this->_unescape($string, $this->escapeChar); return preg_replace($this->DELETED, '', $string); } public function reset() { // clear the patterns collection so that this object may be re-used $this->_patterns = array(); } // private private $_escaped = array(); // escaped characters private $_patterns = array(); // patterns stored by index // create and add a new pattern to the patterns collection private function _add() { $arguments = func_get_args(); $this->_patterns[] = $arguments; } // this is the global replace function (it's quite complicated) private function _replacement($arguments) { if (empty($arguments)) return ''; $i = 1; $j = 0; // loop through the patterns while (isset($this->_patterns[$j])) { $pattern = $this->_patterns[$j++]; // do we have a result? if (isset($arguments[$i]) && ($arguments[$i] != '')) { $replacement = $pattern[self::REPLACEMENT]; if (is_array($replacement) && isset($replacement['fn'])) { if (isset($replacement['data'])) $this->buffer = $replacement['data']; return call_user_func(array(&$this, $replacement['fn']), $arguments, $i); } elseif (is_int($replacement)) { return $arguments[$replacement + $i]; } $delete = ($this->escapeChar == '' || strpos($arguments[$i], $this->escapeChar) === false) ? '' : "\x01" . $arguments[$i] . "\x01"; return $delete . $replacement; // skip over references to sub-expressions } else { $i += $pattern[self::LENGTH]; } } } private function _backReferences($match, $offset) { $replacement = $this->buffer['replacement']; $quote = $this->buffer['quote']; $i = $this->buffer['length']; while ($i) { $replacement = str_replace('$'.$i--, $match[$offset + $i], $replacement); } return $replacement; } private function _replace_name($match, $offset) { $length = strlen($match[$offset + 2]); $start = $length - max($length - strlen($match[$offset + 3]), 0); return substr($match[$offset + 1], $start, $length) . $match[$offset + 4]; } private function _replace_encoded($match, $offset) { return $this->buffer[$match[$offset]]; } // php : we cannot pass additional data to preg_replace_callback, // and we cannot use &$this in create_function, so let's go to lower level private $buffer; // encode escaped characters private function _escape($string, $escapeChar) { if ($escapeChar) { $this->buffer = $escapeChar; return preg_replace_callback( '/\\' . $escapeChar . '(.)' .'/', array(&$this, '_escapeBis'), $string ); } else { return $string; } } private function _escapeBis($match) { $this->_escaped[] = $match[1]; return $this->buffer; } // decode escaped characters private function _unescape($string, $escapeChar) { if ($escapeChar) { $regexp = '/'.'\\'.$escapeChar.'/'; $this->buffer = array('escapeChar'=> $escapeChar, 'i' => 0); return preg_replace_callback( $regexp, array(&$this, '_unescapeBis'), $string ); } else { return $string; } } private function _unescapeBis() { if (isset($this->_escaped[$this->buffer['i']]) && $this->_escaped[$this->buffer['i']] != '') { $temp = $this->_escaped[$this->buffer['i']]; } else { $temp = ''; } $this->buffer['i']++; return $this->buffer['escapeChar'] . $temp; } private function _internalEscape($string) { return preg_replace($this->ESCAPE, '', $string); } } phpsysinfo-3.2.5/includes/mb/000077500000000000000000000000001265516077000161405ustar00rootroot00000000000000phpsysinfo-3.2.5/includes/mb/class.coretemp.inc.php000066400000000000000000000104311265516077000223420ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.coretemp.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting hardware temperature information through sysctl * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @author William Johansson * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Coretemp extends Sensors { /** * get temperature information * * @return void */ private function _temperature() { if (PSI_OS == 'Linux') { $hwpaths = glob("/sys/devices/platform/coretemp.*/", GLOB_NOSORT); if (($totalh = count($hwpaths)) > 0) { $buf = ""; for ($h = 0; $h < $totalh; $h++) { $tempsensor = glob($hwpaths[$h]."temp*_input", GLOB_NOSORT); if (($total = count($tempsensor)) > 0) { $buf = ""; for ($i = 0; $i < $total; $i++) if (CommonFunctions::rfts($tempsensor[$i], $buf, 1, 4096, false) && (trim($buf) != "")) { $dev = new SensorDevice(); $dev->setValue(trim($buf)/1000); $label = preg_replace("/_input$/", "_label", $tempsensor[$i]); $crit = preg_replace("/_input$/", "_crit", $tempsensor[$i]); $max = preg_replace("/_input$/", "_max", $tempsensor[$i]); $crit_alarm = preg_replace("/_input$/", "_crit_alarm", $tempsensor[$i]); if (CommonFunctions::fileexists($label) && CommonFunctions::rfts($label, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setName(trim($buf)); } else { $labelname = trim(preg_replace("/_input$/", "", pathinfo($tempsensor[$i], PATHINFO_BASENAME))); if ($labelname !== "") { $dev->setName($labelname); } else { $dev->setName('unknown'); } } if (CommonFunctions::fileexists($crit) && CommonFunctions::rfts($crit, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setMax(trim($buf)/1000); if (CommonFunctions::fileexists($crit_alarm) && CommonFunctions::rfts($crit_alarm, $buf, 1, 4096, false) && (trim($buf) === "1")) { $dev->setEvent("Critical Alarm"); } } elseif (CommonFunctions::fileexists($max) && CommonFunctions::rfts($max, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setMax(trim($buf)/1000); } $this->mbinfo->setMbTemp($dev); } } } } } else { $smp = 1; CommonFunctions::executeProgram('sysctl', '-n kern.smp.cpus', $smp); for ($i = 0; $i < $smp; $i++) { $temp = 0; if (CommonFunctions::executeProgram('sysctl', '-n dev.cpu.'.$i.'.temperature', $temp)) { $temp = preg_replace('/C/', '', $temp); $dev = new SensorDevice(); $dev->setName("CPU ".($i + 1)); $dev->setValue($temp); // $dev->setMax(70); $this->mbinfo->setMbTemp($dev); } } } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_temperature(); } } phpsysinfo-3.2.5/includes/mb/class.freeipmi.inc.php000066400000000000000000000127031265516077000223300ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.freeipmi.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting information from ipmi-sensors * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class FreeIPMI extends Sensors { /** * content to parse * * @var array */ private $_lines = array(); /** * fill the private content var through command or data access */ public function __construct() { parent::__construct(); switch (defined('PSI_SENSOR_FREEIPMI_ACCESS')?strtolower(PSI_SENSOR_FREEIPMI_ACCESS):'command') { case 'command': CommonFunctions::executeProgram('ipmi-sensors', '--output-sensor-thresholds', $lines); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; case 'data': if (CommonFunctions::rfts(APP_ROOT.'/data/freeipmi.txt', $lines)) { $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_FREEIPMI_ACCESS'); break; } } /** * get temperature information * * @return void */ private function _temperature() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "Temperature" && $buffer[11] != "N/A" && $buffer[4] == "C") { $dev = new SensorDevice(); $dev->setName($buffer[1]); $dev->setValue($buffer[3]); if ($buffer[9] != "N/A") $dev->setMax($buffer[9]); if ($buffer[11] != "'OK'") $dev->setEvent(trim($buffer[11], "'")); $this->mbinfo->setMbTemp($dev); } } } /** * get voltage information * * @return void */ private function _voltage() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "Voltage" && $buffer[11] != "N/A" && $buffer[4] == "V") { $dev = new SensorDevice(); $dev->setName($buffer[1]); $dev->setValue($buffer[3]); if ($buffer[6] != "N/A") $dev->setMin($buffer[6]); if ($buffer[9] != "N/A") $dev->setMax($buffer[9]); if ($buffer[11] != "'OK'") $dev->setEvent(trim($buffer[11], "'")); $this->mbinfo->setMbVolt($dev); } } } /** * get fan information * * @return void */ private function _fans() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "Fan" && $buffer[11] != "N/A" && $buffer[4] == "RPM") { $dev = new SensorDevice(); $dev->setName($buffer[1]); $dev->setValue($buffer[3]); if ($buffer[6] != "N/A") { $dev->setMin($buffer[6]); } elseif (($buffer[9] != "N/A") && ($buffer[9]<$buffer[3])) { //max instead min issue $dev->setMin($buffer[9]); } if ($buffer[11] != "'OK'") $dev->setEvent(trim($buffer[11], "'")); $this->mbinfo->setMbFan($dev); } } } /** * get power information * * @return void */ private function _power() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "Current" && $buffer[11] != "N/A" && $buffer[4] == "W") { $dev = new SensorDevice(); $dev->setName($buffer[1]); $dev->setValue($buffer[3]); if ($buffer[9] != "N/A") $dev->setMax($buffer[9]); if ($buffer[11] != "'OK'") $dev->setEvent(trim($buffer[11], "'")); $this->mbinfo->setMbPower($dev); } } } /** * get current information * * @return void */ private function _current() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "Current" && $buffer[11] != "N/A" && $buffer[4] == "A") { $dev = new SensorDevice(); $dev->setName($buffer[1]); $dev->setValue($buffer[3]); if ($buffer[9] != "N/A") $dev->setMax($buffer[9]); if ($buffer[11] != "'OK'") $dev->setEvent(trim($buffer[11], "'")); $this->mbinfo->setMbCurrent($dev); } } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_temperature(); $this->_voltage(); $this->_fans(); $this->_power(); $this->_current(); } } phpsysinfo-3.2.5/includes/mb/class.hddtemp.inc.php000066400000000000000000000122471265516077000221600ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.hddtemp.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting information from hddtemp * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @author T.A. van Roermund * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class HDDTemp extends Sensors { /** * get the temperature information from hddtemp * access is available through tcp or command * * @return array temperatures in array */ private function _temperature() { $ar_buf = array(); switch (defined('PSI_SENSOR_HDDTEMP_ACCESS')?strtolower(PSI_SENSOR_HDDTEMP_ACCESS):'command') { case 'tcp': $lines = ''; // Timo van Roermund: connect to the hddtemp daemon, use a 5 second timeout. $fp = @fsockopen('localhost', 7634, $errno, $errstr, 5); // if connected, read the output of the hddtemp daemon if ($fp) { while (!feof($fp)) { $lines .= fread($fp, 1024); } fclose($fp); } else { $this->error->addError("HDDTemp error", $errno.", ".$errstr); } $lines = str_replace("||", "|\n|", $lines); $ar_buf = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; case 'command': $strDrives = ""; $strContent = ""; $hddtemp_value = ""; if (CommonFunctions::rfts("/proc/diskstats", $strContent, 0, 4096, false)) { $arrContent = preg_split("/\n/", $strContent, -1, PREG_SPLIT_NO_EMPTY); foreach ($arrContent as $strLine) { preg_match("/^\s(.*)\s([a-z]*)\s(.*)/", $strLine, $arrSplit); if (! empty($arrSplit[2])) { $strDrive = '/dev/'.$arrSplit[2]; if (file_exists($strDrive)) { $strDrives = $strDrives.$strDrive.' '; } } } } else { if (CommonFunctions::rfts("/proc/partitions", $strContent, 0, 4096, false)) { $arrContent = preg_split("/\n/", $strContent, -1, PREG_SPLIT_NO_EMPTY); foreach ($arrContent as $strLine) { if (!preg_match("/^\s(.*)\s([\/a-z0-9]*(\/disc))\s(.*)/", $strLine, $arrSplit)) { preg_match("/^\s(.*)\s([a-z]*)\s(.*)/", $strLine, $arrSplit); } if (! empty($arrSplit[2])) { $strDrive = '/dev/'.$arrSplit[2]; if (file_exists($strDrive)) { $strDrives = $strDrives.$strDrive.' '; } } } } } if (trim($strDrives) == "") { break; } if (CommonFunctions::executeProgram("hddtemp", $strDrives, $hddtemp_value, PSI_DEBUG)) { $hddtemp_value = preg_split("/\n/", $hddtemp_value, -1, PREG_SPLIT_NO_EMPTY); foreach ($hddtemp_value as $line) { $temp = preg_split("/:\s/", $line, 3); if (count($temp) == 3 && preg_match("/^[0-9]/", $temp[2])) { preg_match("/^([0-9]*)(.*)/", $temp[2], $ar_temp); $temp[2] = trim($ar_temp[1]); $temp[3] = trim($ar_temp[2]); array_push($ar_buf, "|".implode("|", $temp)."|"); } } } break; default: $this->error->addConfigError("temperature()", "PSI_HDD_TEMP"); break; } // Timo van Roermund: parse the info from the hddtemp daemon. foreach ($ar_buf as $line) { $data = array(); if (preg_match("/\|(.*)\|(.*)\|(.*)\|(.*)\|/", $line, $data)) { if (trim($data[3]) != "ERR") { // get the info we need $dev = new SensorDevice(); $dev->setName($data[1] . ' (' . (strpos($data[2], " ")?substr($data[2], 0, strpos($data[2], " ")):$data[2]) . ')'); if (is_numeric($data[3])) { $dev->setValue($data[3]); } // $dev->setMax(60); $this->mbinfo->setMbTemp($dev); } } } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_temperature(); } } phpsysinfo-3.2.5/includes/mb/class.healthd.inc.php000066400000000000000000000110001265516077000221260ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.healthd.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting information from healthd * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Healthd extends Sensors { /** * content to parse * * @var array */ private $_lines = array(); /** * fill the private content var through command or data access */ public function __construct() { parent::__construct(); switch (defined('PSI_SENSOR_HEALTHD_ACCESS')?strtolower(PSI_SENSOR_HEALTHD_ACCESS):'command') { case 'command': $lines = ""; CommonFunctions::executeProgram('healthdc', '-t', $lines); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; case 'data': if (CommonFunctions::rfts(APP_ROOT.'/data/healthd.txt', $lines)) { $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_HEALTHD_ACCESS'); break; } } /** * get temperature information * * @return void */ private function _temperature() { $ar_buf = preg_split("/\t+/", $this->_lines); $dev1 = new SensorDevice(); $dev1->setName('temp1'); $dev1->setValue($ar_buf[1]); // $dev1->setMax(70); $this->mbinfo->setMbTemp($dev1); $dev2 = new SensorDevice(); $dev2->setName('temp1'); $dev2->setValue($ar_buf[2]); // $dev2->setMax(70); $this->mbinfo->setMbTemp($dev2); $dev3 = new SensorDevice(); $dev3->setName('temp1'); $dev3->setValue($ar_buf[3]); // $dev3->setMax(70); $this->mbinfo->setMbTemp($dev3); } /** * get fan information * * @return void */ private function _fans() { $ar_buf = preg_split("/\t+/", $this->_lines); $dev1 = new SensorDevice(); $dev1->setName('fan1'); $dev1->setValue($ar_buf[4]); // $dev1->setMin(3000); $this->mbinfo->setMbFan($dev1); $dev2 = new SensorDevice(); $dev2->setName('fan2'); $dev2->setValue($ar_buf[5]); // $dev2->setMin(3000); $this->mbinfo->setMbFan($dev2); $dev3 = new SensorDevice(); $dev3->setName('fan3'); $dev3->setValue($ar_buf[6]); // $dev3->setMin(3000); $this->mbinfo->setMbFan($dev3); } /** * get voltage information * * @return array voltage in array with lable */ private function _voltage() { $ar_buf = preg_split("/\t+/", $this->_lines); $dev1 = new SensorDevice(); $dev1->setName('Vcore1'); $dev1->setValue($ar_buf[7]); $this->mbinfo->setMbVolt($dev1); $dev2 = new SensorDevice(); $dev2->setName('Vcore2'); $dev2->setValue($ar_buf[8]); $this->mbinfo->setMbVolt($dev2); $dev3 = new SensorDevice(); $dev3->setName('3volt'); $dev3->setValue($ar_buf[9]); $this->mbinfo->setMbVolt($dev3); $dev4 = new SensorDevice(); $dev4->setName('+5Volt'); $dev4->setValue($ar_buf[10]); $this->mbinfo->setMbVolt($dev4); $dev5 = new SensorDevice(); $dev5->setName('+12Volt'); $dev5->setValue($ar_buf[11]); $this->mbinfo->setMbVolt($dev5); $dev6 = new SensorDevice(); $dev6->setName('-12Volt'); $dev6->setValue($ar_buf[12]); $this->mbinfo->setMbVolt($dev6); $dev7 = new SensorDevice(); $dev7->setName('-5Volt'); $dev7->setValue($ar_buf[13]); $this->mbinfo->setMbVolt($dev7); } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_temperature(); $this->_fans(); $this->_voltage(); } } phpsysinfo-3.2.5/includes/mb/class.hwmon.inc.php000066400000000000000000000265111265516077000216620ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.hwmon.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting hardware temperature information through sysctl * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @author William Johansson * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Hwmon extends Sensors { /** * get temperature information * * @return void */ private function _temperature($hwpath) { $sensor = glob($hwpath."temp*_input", GLOB_NOSORT); if (($total = count($sensor)) > 0) { $buf = ""; for ($i = 0; $i < $total; $i++) if (CommonFunctions::rfts($sensor[$i], $buf, 1, 4096, false) && (trim($buf) != "")) { $dev = new SensorDevice(); $dev->setValue(trim($buf)/1000); $label = preg_replace("/_input$/", "_label", $sensor[$i]); $crit = preg_replace("/_input$/", "_crit", $sensor[$i]); $max = preg_replace("/_input$/", "_max", $sensor[$i]); $crit_alarm = preg_replace("/_input$/", "_crit_alarm", $sensor[$i]); if (CommonFunctions::fileexists($label) && CommonFunctions::rfts($label, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setName(trim($buf)); } else { $labelname = trim(preg_replace("/_input$/", "", pathinfo($sensor[$i], PATHINFO_BASENAME))); if ($labelname !== "") { $dev->setName($labelname); } else { $dev->setName('unknown'); } } if (CommonFunctions::fileexists($crit) && CommonFunctions::rfts($crit, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setMax(trim($buf)/1000); if (CommonFunctions::fileexists($crit_alarm) && CommonFunctions::rfts($crit_alarm, $buf, 1, 4096, false) && (trim($buf) === "1")) { $dev->setEvent("Critical Alarm"); } } elseif (CommonFunctions::fileexists($max) && CommonFunctions::rfts($max, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setMax(trim($buf)/1000); } $this->mbinfo->setMbTemp($dev); } } } /** * get voltage information * * @return void */ private function _voltage($hwpath) { $sensor = glob($hwpath."in*_input", GLOB_NOSORT); if (($total = count($sensor)) > 0) { $buf = ""; for ($i = 0; $i < $total; $i++) if (CommonFunctions::rfts($sensor[$i], $buf, 1, 4096, false) && (trim($buf) != "")) { $dev = new SensorDevice(); $dev->setValue(trim($buf)/1000); $label = preg_replace("/_input$/", "_label", $sensor[$i]); $alarm = preg_replace("/_input$/", "_alarm", $sensor[$i]); $max = preg_replace("/_input$/", "_max", $sensor[$i]); $min = preg_replace("/_input$/", "_min", $sensor[$i]); if (CommonFunctions::fileexists($label) && CommonFunctions::rfts($label, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setName(trim($buf)); } else { $labelname = trim(preg_replace("/_input$/", "", pathinfo($sensor[$i], PATHINFO_BASENAME))); if ($labelname !== "") { $dev->setName($labelname); } else { $dev->setName('unknown'); } } if (CommonFunctions::fileexists($max) && CommonFunctions::rfts($max, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setMax(trim($buf)/1000); } if (CommonFunctions::fileexists($min) && CommonFunctions::rfts($min, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setMin(trim($buf)/1000); } if (CommonFunctions::fileexists($alarm) && CommonFunctions::rfts($alarm, $buf, 1, 4096, false) && (trim($buf) === "1")) { $dev->setEvent("Alarm"); } $this->mbinfo->setMbVolt($dev); } } } /** * get fan information * * @return void */ private function _fans($hwpath) { $sensor = glob($hwpath."fan*_input", GLOB_NOSORT); if (($total = count($sensor)) > 0) { $buf = ""; for ($i = 0; $i < $total; $i++) if (CommonFunctions::rfts($sensor[$i], $buf, 1, 4096, false) && (trim($buf) != "")) { $dev = new SensorDevice(); $dev->setValue(trim($buf)); $label = preg_replace("/_input$/", "_label", $sensor[$i]); $alarm = preg_replace("/_input$/", "_alarm", $sensor[$i]); $fullmax = preg_replace("/_input$/", "_full_speed", $sensor[$i]); $max = preg_replace("/_input$/", "_max", $sensor[$i]); $min = preg_replace("/_input$/", "_min", $sensor[$i]); if (CommonFunctions::fileexists($label) && CommonFunctions::rfts($label, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setName(trim($buf)); } else { $labelname = trim(preg_replace("/_input$/", "", pathinfo($sensor[$i], PATHINFO_BASENAME))); if ($labelname !== "") { $dev->setName($labelname); } else { $dev->setName('unknown'); } } if (CommonFunctions::fileexists($fullmax) && CommonFunctions::rfts($fullmax, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setMax(trim($buf)); } elseif (CommonFunctions::fileexists($max) && CommonFunctions::rfts($max, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setMax(trim($buf)); } if (CommonFunctions::fileexists($min) && CommonFunctions::rfts($min, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setMin(trim($buf)); } if (CommonFunctions::fileexists($alarm) && CommonFunctions::rfts($alarm, $buf, 1, 4096, false) && (trim($buf) === "1")) { $dev->setEvent("Alarm"); } $this->mbinfo->setMbFan($dev); } } } /** * get power information * * @return void */ private function _power($hwpath) { $sensor = glob($hwpath."power*_input", GLOB_NOSORT); if (($total = count($sensor)) > 0) { $buf = ""; for ($i = 0; $i < $total; $i++) if (CommonFunctions::rfts($sensor[$i], $buf, 1, 4096, false) && (trim($buf) != "")) { $dev = new SensorDevice(); $dev->setValue(trim($buf)); $label = preg_replace("/_input$/", "_label", $sensor[$i]); $alarm = preg_replace("/_input$/", "_alarm", $sensor[$i]); $max = preg_replace("/_input$/", "_max", $sensor[$i]); $min = preg_replace("/_input$/", "_min", $sensor[$i]); if (CommonFunctions::fileexists($label) && CommonFunctions::rfts($label, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setName(trim($buf)); } else { $labelname = trim(preg_replace("/_input$/", "", pathinfo($sensor[$i], PATHINFO_BASENAME))); if ($labelname !== "") { $dev->setName($labelname); } else { $dev->setName('unknown'); } } if (CommonFunctions::fileexists($max) && CommonFunctions::rfts($max, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setMax(trim($buf)); } if (CommonFunctions::fileexists($min) && CommonFunctions::rfts($min, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setMin(trim($buf)); } if (CommonFunctions::fileexists($alarm) && CommonFunctions::rfts($alarm, $buf, 1, 4096, false) && (trim($buf) === "1")) { $dev->setEvent("Alarm"); } $this->mbinfo->setMbPower($dev); } } } /** * get current information * * @return void */ private function _current($hwpath) { $sensor = glob($hwpath."curr*_input", GLOB_NOSORT); if (($total = count($sensor)) > 0) { $buf = ""; for ($i = 0; $i < $total; $i++) if (CommonFunctions::rfts($sensor[$i], $buf, 1, 4096, false) && (trim($buf) != "")) { $dev = new SensorDevice(); $dev->setValue(trim($buf)/1000); $label = preg_replace("/_input$/", "_label", $sensor[$i]); $alarm = preg_replace("/_input$/", "_alarm", $sensor[$i]); $max = preg_replace("/_input$/", "_max", $sensor[$i]); $min = preg_replace("/_input$/", "_min", $sensor[$i]); if (CommonFunctions::fileexists($label) && CommonFunctions::rfts($label, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setName(trim($buf)); } else { $labelname = trim(preg_replace("/_input$/", "", pathinfo($sensor[$i], PATHINFO_BASENAME))); if ($labelname !== "") { $dev->setName($labelname); } else { $dev->setName('unknown'); } } if (CommonFunctions::fileexists($max) && CommonFunctions::rfts($max, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setMax(trim($buf)/1000); } if (CommonFunctions::fileexists($min) && CommonFunctions::rfts($min, $buf, 1, 4096, false) && (trim($buf) != "")) { $dev->setMin(trim($buf)/1000); } if (CommonFunctions::fileexists($alarm) && CommonFunctions::rfts($alarm, $buf, 1, 4096, false) && (trim($buf) === "1")) { $dev->setEvent("Alarm"); } $this->mbinfo->setMbCurrent($dev); } } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $hwpaths = glob("/sys/class/hwmon/hwmon*/device/", GLOB_NOSORT); if (($totalh = count($hwpaths)) > 0) { for ($h = 0; $h < $totalh; $h++) { $this->_temperature($hwpaths[$h]); $this->_voltage($hwpaths[$h]); $this->_fans($hwpaths[$h]); $this->_power($hwpaths[$h]); $this->_current($hwpaths[$h]); } } } } phpsysinfo-3.2.5/includes/mb/class.hwsensors.inc.php000066400000000000000000000127321265516077000225650ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.hwsensors.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting information from hwsensors * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class HWSensors extends Sensors { /** * content to parse * * @var array */ private $_lines = array(); /** * fill the private content var through command */ public function __construct() { parent::__construct(); $lines = ""; // CommonFunctions::executeProgram('sysctl', '-w hw.sensors', $lines); CommonFunctions::executeProgram('sysctl', 'hw.sensors', $lines); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } /** * get temperature information * * @return void */ private function _temperature() { foreach ($this->_lines as $line) { if (preg_match('/^hw\.sensors\.[0-9]+=[^\s,]+,\s+([^,]+),\s+temp,\s+([0-9\.]+)\s+degC.*$/', $line, $ar_buf)) { $dev = new SensorDevice(); $dev->setName($ar_buf[1]); $dev->setValue($ar_buf[2]); $this->mbinfo->setMbTemp($dev); } elseif (preg_match('/^hw\.sensors\.[0-9]+=[^\s,]+,\s+([^,]+),\s+([0-9\.]+)\s+degC$/', $line, $ar_buf)) { $dev = new SensorDevice(); $dev->setName($ar_buf[1]); $dev->setValue($ar_buf[2]); $this->mbinfo->setMbTemp($dev); } elseif (preg_match('/^hw\.sensors\.[^\.]+\.(.*)=([0-9\.]+)\s+degC\s+\((.*)\)$/', $line, $ar_buf)) { $dev = new SensorDevice(); $dev->setName($ar_buf[3]); $dev->setValue($ar_buf[2]); $this->mbinfo->setMbTemp($dev); } elseif (preg_match('/^hw\.sensors\.[^\.]+\.(.*)=([0-9\.]+)\s+degC$/', $line, $ar_buf)) { $dev = new SensorDevice(); $dev->setName($ar_buf[1]); $dev->setValue($ar_buf[2]); $this->mbinfo->setMbTemp($dev); } } } /** * get fan information * * @return void */ private function _fans() { foreach ($this->_lines as $line) { if (preg_match('/^hw\.sensors\.[0-9]+=[^\s,]+,\s+([^,]+),\s+fanrpm,\s+([0-9\.]+)\s+RPM.*$/', $line, $ar_buf)) { $dev = new SensorDevice(); $dev->setName($ar_buf[1]); $dev->setValue($ar_buf[2]); $this->mbinfo->setMbFan($dev); } elseif (preg_match('/^hw\.sensors\.[0-9]+=[^\s,]+,\s+([^,]+),\s+([0-9\.]+)\s+RPM$/', $line, $ar_buf)) { $dev = new SensorDevice(); $dev->setName($ar_buf[1]); $dev->setValue($ar_buf[2]); $this->mbinfo->setMbFan($dev); } elseif (preg_match('/^hw\.sensors\.[^\.]+\.(.*)=([0-9\.]+)\s+RPM\s+\((.*)\)$/', $line, $ar_buf)) { $dev = new SensorDevice(); $dev->setName($ar_buf[3]); $dev->setValue($ar_buf[2]); $this->mbinfo->setMbFan($dev); } elseif (preg_match('/^hw\.sensors\.[^\.]+\.(.*)=([0-9\.]+)\s+RPM$/', $line, $ar_buf)) { $dev = new SensorDevice(); $dev->setName($ar_buf[1]); $dev->setValue($ar_buf[2]); $this->mbinfo->setMbFan($dev); } } } /** * get voltage information * * @return void */ private function _voltage() { foreach ($this->_lines as $line) { if (preg_match('/^hw\.sensors\.[0-9]+=[^\s,]+,\s+([^,]+),\s+volts_dc,\s+([0-9\.]+)\s+V.*$/', $line, $ar_buf)) { $dev = new SensorDevice(); $dev->setName($ar_buf[1]); $dev->setValue($ar_buf[2]); $this->mbinfo->setMbVolt($dev); } elseif (preg_match('/^hw\.sensors\.[0-9]+=[^\s,]+,\s+([^,]+),\s+([0-9\.]+)\s+V\sDC$/', $line, $ar_buf)) { $dev = new SensorDevice(); $dev->setName($ar_buf[1]); $dev->setValue($ar_buf[2]); $this->mbinfo->setMbVolt($dev); } elseif (preg_match('/^hw\.sensors\.[^\.]+\.(.*)=([0-9\.]+)\s+VDC\s+\((.*)\)$/', $line, $ar_buf)) { $dev = new SensorDevice(); $dev->setName($ar_buf[3]); $dev->setValue($ar_buf[2]); $this->mbinfo->setMbVolt($dev); } elseif (preg_match('/^hw\.sensors\.[^\.]+\.(.*)=([0-9\.]+)\s+VDC$/', $line, $ar_buf)) { $dev = new SensorDevice(); $dev->setName($ar_buf[1]); $dev->setValue($ar_buf[2]); $this->mbinfo->setMbVolt($dev); } } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_temperature(); $this->_voltage(); $this->_fans(); } } phpsysinfo-3.2.5/includes/mb/class.ipmi.inc.php000066400000000000000000000142241265516077000214660ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.ipmi.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting information from ipmitool * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class IPMI extends Sensors { /** * content to parse * * @var array */ private $_lines = array(); /** * fill the private content var through command or data access */ public function __construct() { parent::__construct(); switch (defined('PSI_SENSOR_IPMI_ACCESS')?strtolower(PSI_SENSOR_IPMI_ACCESS):'command') { case 'command': CommonFunctions::executeProgram('ipmitool', 'sensor', $lines); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; case 'data': if (CommonFunctions::rfts(APP_ROOT.'/data/ipmi.txt', $lines)) { $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_IPMI_ACCESS'); break; } } /** * get temperature information * * @return void */ private function _temperature() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "degrees C" && $buffer[3] != "na") { $dev = new SensorDevice(); $dev->setName($buffer[0]); $dev->setValue($buffer[1]); if ($buffer[8] != "na") $dev->setMax($buffer[8]); switch ($buffer[3]) { case "nr": $dev->setEvent("Non-Recoverable"); break; case "cr": $dev->setEvent("Critical"); break; case "nc": $dev->setEvent("Non-Critical"); break; } $this->mbinfo->setMbTemp($dev); } } } /** * get voltage information * * @return void */ private function _voltage() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "Volts" && $buffer[3] != "na") { $dev = new SensorDevice(); $dev->setName($buffer[0]); $dev->setValue($buffer[1]); if ($buffer[5] != "na") $dev->setMin($buffer[5]); if ($buffer[8] != "na") $dev->setMax($buffer[8]); switch ($buffer[3]) { case "nr": $dev->setEvent("Non-Recoverable"); break; case "cr": $dev->setEvent("Critical"); break; case "nc": $dev->setEvent("Non-Critical"); break; } $this->mbinfo->setMbVolt($dev); } } } /** * get fan information * * @return void */ private function _fans() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "RPM" && $buffer[3] != "na") { $dev = new SensorDevice(); $dev->setName($buffer[0]); $dev->setValue($buffer[1]); if ($buffer[8] != "na") { $dev->setMin($buffer[8]); } elseif (($buffer[5] != "na") && ($buffer[5]<$buffer[1])) { //max instead min issue $dev->setMin($buffer[5]); } switch ($buffer[3]) { case "nr": $dev->setEvent("Non-Recoverable"); break; case "cr": $dev->setEvent("Critical"); break; case "nc": $dev->setEvent("Non-Critical"); break; } $this->mbinfo->setMbFan($dev); } } } /** * get power information * * @return void */ private function _power() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "Watts" && $buffer[3] != "na") { $dev = new SensorDevice(); $dev->setName($buffer[0]); $dev->setValue($buffer[1]); if ($buffer[8] != "na") $dev->setMax($buffer[8]); switch ($buffer[3]) { case "nr": $dev->setEvent("Non-Recoverable"); break; case "cr": $dev->setEvent("Critical"); break; case "nc": $dev->setEvent("Non-Critical"); break; } $this->mbinfo->setMbPower($dev); } } } /** * get current information * * @return void */ private function _current() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "Amps" && $buffer[3] != "na") { $dev = new SensorDevice(); $dev->setName($buffer[0]); $dev->setValue($buffer[1]); if ($buffer[8] != "na") $dev->setMax($buffer[8]); switch ($buffer[3]) { case "nr": $dev->setEvent("Non-Recoverable"); break; case "cr": $dev->setEvent("Critical"); break; case "nc": $dev->setEvent("Non-Critical"); break; } $this->mbinfo->setMbCurrent($dev); } } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_temperature(); $this->_voltage(); $this->_fans(); $this->_power(); $this->_current(); } } phpsysinfo-3.2.5/includes/mb/class.ipmiutil.inc.php000066400000000000000000000221041265516077000223600ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.ipmiutil.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting information from ipmi-sensors * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class IPMIutil extends Sensors { /** * content to parse * * @var array */ private $_lines = array(); /** * fill the private content var through command or data access */ public function __construct() { parent::__construct(); switch (defined('PSI_SENSOR_IPMIUTIL_ACCESS')?strtolower(PSI_SENSOR_IPMIUTIL_ACCESS):'command') { case 'command': CommonFunctions::executeProgram('ipmiutil', 'sensor -stw', $lines); $this->_lines = preg_split("/\r?\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; case 'data': if (CommonFunctions::rfts(APP_ROOT.'/data/ipmiutil.txt', $lines)) { $this->_lines = preg_split("/\r?\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_IPMIUTIL_ACCESS'); break; } } /** * get temperature information * * @return void */ private function _temperature() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if (isset($buffer[2]) && $buffer[2] == "Temperature" && $buffer[1] == "Full" && isset($buffer[6]) && preg_match("/^(\S+)\sC$/", $buffer[6], $value)) { $dev = new SensorDevice(); $dev->setName($buffer[4]); $dev->setValue($value[1]); if (isset($buffer[7]) && $buffer[7] == "Thresholds") { if ((isset($buffer[8]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[8], $limits)) ||(isset($buffer[9]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[9], $limits)) ||(isset($buffer[10]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[10], $limits)) ||(isset($buffer[11]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[11], $limits))) { $dev->setMax($limits[1]); } } if ($buffer[5] != "OK") $dev->setEvent($buffer[5]); $this->mbinfo->setMbTemp($dev); } } } /** * get voltage information * * @return void */ private function _voltage() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if (isset($buffer[2]) && $buffer[2] == "Voltage" && $buffer[1] == "Full" && isset($buffer[6]) && preg_match("/^(\S+)\sV$/", $buffer[6], $value)) { $dev = new SensorDevice(); $dev->setName($buffer[4]); $dev->setValue($value[1]); if (isset($buffer[7]) && $buffer[7] == "Thresholds") { if ((isset($buffer[8]) && preg_match("/^lo-crit\s(\S+)\s*$/", $buffer[8], $limits)) ||(isset($buffer[9]) && preg_match("/^lo-crit\s(\S+)\s*$/", $buffer[9], $limits)) ||(isset($buffer[10]) && preg_match("/^lo-crit\s(\S+)\s*$/", $buffer[10], $limits)) ||(isset($buffer[11]) && preg_match("/^lo-crit\s(\S+)\s*$/", $buffer[11], $limits))) { $dev->setMin($limits[1]); } if ((isset($buffer[8]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[8], $limits)) ||(isset($buffer[9]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[9], $limits)) ||(isset($buffer[10]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[10], $limits)) ||(isset($buffer[11]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[11], $limits))) { $dev->setMax($limits[1]); } } if ($buffer[5] != "OK") $dev->setEvent($buffer[5]); $this->mbinfo->setMbVolt($dev); } } } /** * get fan information * * @return void */ private function _fans() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if (isset($buffer[2]) && $buffer[2] == "Fan" && $buffer[1] == "Full" && isset($buffer[6]) && preg_match("/^(\S+)\sRPM$/", $buffer[6], $value)) { $dev = new SensorDevice(); $dev->setName($buffer[4]); $dev->setValue($value[1]); if (isset($buffer[7]) && $buffer[7] == "Thresholds") { if ((isset($buffer[8]) && preg_match("/^lo-crit\s(\S+)\s*$/", $buffer[8], $limits)) ||(isset($buffer[9]) && preg_match("/^lo-crit\s(\S+)\s*$/", $buffer[9], $limits)) ||(isset($buffer[10]) && preg_match("/^lo-crit\s(\S+)\s*$/", $buffer[10], $limits)) ||(isset($buffer[11]) && preg_match("/^lo-crit\s(\S+)\s*$/", $buffer[11], $limits))) { $dev->setMin($limits[1]); } elseif ((isset($buffer[8]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[8], $limits)) ||(isset($buffer[9]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[9], $limits)) ||(isset($buffer[10]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[10], $limits)) ||(isset($buffer[11]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[11], $limits))) { if ($limits[1]<$value[1]) {//max instead min issue $dev->setMin($limits[1]); } } } if ($buffer[5] != "OK") $dev->setEvent($buffer[5]); $this->mbinfo->setMbFan($dev); } } } /** * get power information * * @return void */ private function _power() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if (isset($buffer[2]) && $buffer[2] == "Current" && $buffer[1] == "Full" && isset($buffer[6]) && preg_match("/^(\S+)\sW$/", $buffer[6], $value)) { $dev = new SensorDevice(); $dev->setName($buffer[4]); $dev->setValue($value[1]); if (isset($buffer[7]) && $buffer[7] == "Thresholds") { if ((isset($buffer[8]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[8], $limits)) ||(isset($buffer[9]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[9], $limits)) ||(isset($buffer[10]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[10], $limits)) ||(isset($buffer[11]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[11], $limits))) { $dev->setMax($limits[1]); } } if ($buffer[5] != "OK") $dev->setEvent($buffer[5]); $this->mbinfo->setMbPower($dev); } } } /** * get current information * * @return void */ private function _current() { foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if (isset($buffer[2]) && $buffer[2] == "Current" && $buffer[1] == "Full" && isset($buffer[6]) && preg_match("/^(\S+)\sA$/", $buffer[6], $value)) { $dev = new SensorDevice(); $dev->setName($buffer[4]); $dev->setValue($value[1]); if (isset($buffer[7]) && $buffer[7] == "Thresholds") { if ((isset($buffer[8]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[8], $limits)) ||(isset($buffer[9]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[9], $limits)) ||(isset($buffer[10]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[10], $limits)) ||(isset($buffer[11]) && preg_match("/^hi-crit\s(\S+)\s*$/", $buffer[11], $limits))) { $dev->setMax($limits[1]); } } if ($buffer[5] != "OK") $dev->setEvent($buffer[5]); $this->mbinfo->setMbCurrent($dev); } } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_temperature(); $this->_voltage(); $this->_fans(); $this->_power(); $this->_current(); } } phpsysinfo-3.2.5/includes/mb/class.k8temp.inc.php000066400000000000000000000046531265516077000217450ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.k8temp.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting information from k8temp * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class K8Temp extends Sensors { /** * content to parse * * @var array */ private $_lines = array(); /** * fill the private array */ public function __construct() { parent::__construct(); switch (defined('PSI_SENSOR_K8TEMP_ACCESS')?strtolower(PSI_SENSOR_K8TEMP_ACCESS):'command') { case 'command': $lines = ""; CommonFunctions::executeProgram('k8temp', '', $lines); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; case 'data': if (CommonFunctions::rfts(APP_ROOT.'/data/k8temp.txt', $lines)) { $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_K8TEMP_ACCESS'); break; } } /** * get temperature information * * @return void */ private function _temperature() { foreach ($this->_lines as $line) { if (preg_match('/(.*):\s*(\d*)/', $line, $data)) { if ($data[2] > 0) { $dev = new SensorDevice(); $dev->setName($data[1]); // $dev->setMax('70.0'); if ($data[2] < 250) { $dev->setValue($data[2]); } $this->mbinfo->setMbTemp($dev); } } } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_temperature(); } } phpsysinfo-3.2.5/includes/mb/class.lmsensors.inc.php000066400000000000000000000333251265516077000225600ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.lmsensors.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting information from lmsensor * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class LMSensors extends Sensors { /** * content to parse * * @var array */ private $_lines = array(); /** * fill the private content var through command or data access */ public function __construct() { parent::__construct(); switch (defined('PSI_SENSOR_LMSENSORS_ACCESS')?strtolower(PSI_SENSOR_LMSENSORS_ACCESS):'command') { case 'command': if (CommonFunctions::executeProgram("sensors", "", $lines)) { // Martijn Stolk: Dirty fix for misinterpreted output of sensors, // where info could come on next line when the label is too long. $lines = str_replace(":\n", ":", $lines); $lines = str_replace("\n\n", "\n", $lines); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; case 'data': if (CommonFunctions::rfts(APP_ROOT.'/data/lmsensors.txt', $lines)) { $lines = str_replace(":\n", ":", $lines); $lines = str_replace("\n\n", "\n", $lines); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_LMSENSORS_ACCESS'); break; } } /** * get temperature information * * @return void */ private function _temperature() { $ar_buf = array(); foreach ($this->_lines as $line) { $data = array(); if (preg_match("/(.*):(.*)\((.*)=(.*),(.*)=(.*)\)(.*)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*)\((.*)=(.*)\)(.*)/", $line, $data)) { ; } else { preg_match("/(.*):(.*)/", $line, $data); } if (count($data) > 1) { $temp = substr(trim($data[2]), -1); switch ($temp) { case "C": // case "F": array_push($ar_buf, $line); } } } foreach ($ar_buf as $line) { $data = array(); if (preg_match("/(.*):(.*).C[ ]*\((.*)=(.*).C,(.*)=(.*).C\)(.*)\)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*).C[ ]*\((.*)=(.*).C,(.*)=(.*).C\)(.*)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*).C[ ]*\((.*)=(.*).C\)(.*)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*).C[ \t]+/", $line, $data)) { ; } else { preg_match("/(.*):(.*).C$/", $line, $data); } foreach ($data as $key=>$value) { if (preg_match("/^\+?(-?[0-9\.]+).?$/", trim($value), $newvalue)) { $data[$key] = 0+trim($newvalue[1]); } else { $data[$key] = trim($value); } } $dev = new SensorDevice(); if (strlen($data[1]) == 4) { if ($data[1][0] == "T") { if ($data[1][1] == "A") { $data[1] = $data[1] . " Ambient"; } elseif ($data[1][1] == "C") { $data[1] = $data[1] . " CPU"; } elseif ($data[1][1] == "G") { $data[1] = $data[1] . " GPU"; } elseif ($data[1][1] == "H") { $data[1] = $data[1] . " Harddisk"; } elseif ($data[1][1] == "L") { $data[1] = $data[1] . " LCD"; } elseif ($data[1][1] == "O") { $data[1] = $data[1] . " ODD"; } elseif ($data[1][1] == "B") { $data[1] = $data[1] . " Battery"; } if ($data[1][3] == "H") { $data[1] = $data[1] . " Heatsink"; } elseif ($data[1][3] == "P") { $data[1] = $data[1] . " Proximity"; } elseif ($data[1][3] == "D") { $data[1] = $data[1] . " Die"; } } } $dev->setName($data[1]); $dev->setValue($data[2]); if (isset($data[6]) && $data[2] <= $data[6]) { $dev->setMax(max($data[4], $data[6])); } elseif (isset($data[4]) && $data[2] <= $data[4]) { $dev->setMax($data[4]); } if (preg_match("/\sALARM(\s*)$/", $line)) { $dev->setEvent("Alarm"); } $this->mbinfo->setMbTemp($dev); } } /** * get fan information * * @return void */ private function _fans() { $ar_buf = array(); foreach ($this->_lines as $line) { $data = array(); if (preg_match("/(.*):(.*)\((.*)=(.*),(.*)=(.*)\)(.*)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*)\((.*)=(.*)\)(.*)/", $line, $data)) { ; } else { preg_match("/(.*):(.*)/", $line, $data); } if (count($data) > 1) { $temp = substr(trim($data[2]), -4); switch ($temp) { case " RPM": array_push($ar_buf, $line); } } } foreach ($ar_buf as $line) { $data = array(); if (preg_match("/(.*):(.*) RPM[ ]*\((.*)=(.*) RPM,(.*)=(.*)\)(.*)\)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*) RPM[ ]*\((.*)=(.*) RPM,(.*)=(.*)\)(.*)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*) RPM[ ]*\((.*)=(.*) RPM\)(.*)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*) RPM[ \t]+/", $line, $data)) { ; } else { preg_match("/(.*):(.*) RPM$/", $line, $data); } $dev = new SensorDevice(); $dev->setName(trim($data[1])); $dev->setValue(trim($data[2])); if (isset($data[4])) { $dev->setMin(trim($data[4])); } if (preg_match("/\sALARM(\s*)$/", $line)) { $dev->setEvent("Alarm"); } $this->mbinfo->setMbFan($dev); } } /** * get voltage information * * @return void */ private function _voltage() { $ar_buf = array(); foreach ($this->_lines as $line) { $data = array(); if (preg_match("/(.*):(.*)\((.*)=(.*),(.*)=(.*)\)(.*)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*)\(/", $line, $data)) { ; } else { preg_match("/(.*):(.*)/", $line, $data); } if (count($data) > 1) { $temp = substr(trim($data[2]), -2); switch ($temp) { case " V": array_push($ar_buf, $line); } } } foreach ($ar_buf as $line) { $data = array(); if (preg_match("/(.*):(.*) V[ ]*\((.*)=(.*) V,(.*)=(.*) V\)(.*)\)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*) V[ ]*\((.*)=(.*) V,(.*)=(.*) V\)(.*)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*) V[ \t]+/", $line, $data)) { ; } else { preg_match("/(.*):(.*) V$/", $line, $data); } foreach ($data as $key=>$value) { if (preg_match("/^\+?(-?[0-9\.]+)$/", trim($value), $newvalue)) { $data[$key] = 0+trim($newvalue[1]); } else { $data[$key] = trim($value); } } if (isset($data[1])) { $dev = new SensorDevice(); $dev->setName($data[1]); $dev->setValue($data[2]); if (isset($data[4])) { $dev->setMin($data[4]); } if (isset($data[6])) { $dev->setMax($data[6]); } if (preg_match("/\sALARM(\s*)$/", $line)) { $dev->setEvent("Alarm"); } $this->mbinfo->setMbVolt($dev); } } } /** * get power information * * @return void */ private function _power() { $ar_buf = array(); foreach ($this->_lines as $line) { $data = array(); if (preg_match("/(.*):(.*)\((.*)=(.*),(.*)=(.*)\)(.*)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*)\((.*)=(.*)\)(.*)/", $line, $data)) { ; } else { preg_match("/(.*):(.*)/", $line, $data); } if (count($data) > 1) { $temp = substr(trim($data[2]), -2); switch ($temp) { case " W": array_push($ar_buf, $line); } } } foreach ($ar_buf as $line) { $data = array(); /* not tested yet if (preg_match("/(.*):(.*) W[ ]*\((.*)=(.*) W,(.*)=(.*) W\)(.*)\)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*) W[ ]*\((.*)=(.*) W,(.*)=(.*) W\)(.*)/", $line, $data)) { ; } else */ if (preg_match("/(.*):(.*) W[ ]*\((.*)=(.*) W\)(.*)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*) W[ \t]+/", $line, $data)) { ; } else { preg_match("/(.*):(.*) W$/", $line, $data); } foreach ($data as $key=>$value) { if (preg_match("/^\+?([0-9\.]+).?$/", trim($value), $newvalue)) { $data[$key] = trim($newvalue[1]); } else { $data[$key] = trim($value); } } $dev = new SensorDevice(); $dev->setName($data[1]); $dev->setValue($data[2]); if (isset($data[6]) && $data[2] <= $data[6]) { $dev->setMax(max($data[4], $data[6])); } elseif (isset($data[4]) && $data[2] <= $data[4]) { $dev->setMax($data[4]); } if (preg_match("/\sALARM(\s*)$/", $line)) { $dev->setEvent("Alarm"); } $this->mbinfo->setMbPower($dev); } } /** * get current information * * @return void */ private function _current() { $ar_buf = array(); foreach ($this->_lines as $line) { $data = array(); if (preg_match("/(.*):(.*)\((.*)=(.*),(.*)=(.*)\)(.*)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*)\((.*)=(.*)\)(.*)/", $line, $data)) { ; } else { preg_match("/(.*):(.*)/", $line, $data); } if (count($data) > 1) { $temp = substr(trim($data[2]), -2); switch ($temp) { case " A": array_push($ar_buf, $line); } } } foreach ($ar_buf as $line) { $data = array(); /* not tested yet if (preg_match("/(.*):(.*) A[ ]*\((.*)=(.*) A,(.*)=(.*) A\)(.*)\)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*) A[ ]*\((.*)=(.*) A,(.*)=(.*) A\)(.*)/", $line, $data)) { ; } else */ if (preg_match("/(.*):(.*) A[ ]*\((.*)=(.*) A\)(.*)/", $line, $data)) { ; } elseif (preg_match("/(.*):(.*) A[ \t]+/", $line, $data)) { ; } else { preg_match("/(.*):(.*) A$/", $line, $data); } foreach ($data as $key=>$value) { if (preg_match("/^\+?([0-9\.]+).?$/", trim($value), $newvalue)) { $data[$key] = trim($newvalue[1]); } else { $data[$key] = trim($value); } } $dev = new SensorDevice(); $dev->setName($data[1]); $dev->setValue($data[2]); if (isset($data[6]) && $data[2] <= $data[6]) { $dev->setMax(max($data[4], $data[6])); } elseif (isset($data[4]) && $data[2] <= $data[4]) { $dev->setMax($data[4]); } if (preg_match("/\sALARM(\s*)$/", $line)) { $dev->setEvent("Alarm"); } $this->mbinfo->setMbCurrent($dev); } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_temperature(); $this->_voltage(); $this->_fans(); $this->_power(); $this->_current(); } } phpsysinfo-3.2.5/includes/mb/class.mbm5.inc.php000066400000000000000000000070531265516077000213720ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.mbm5.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting information from Motherboard Monitor 5 * information retrival through csv file * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class MBM5 extends Sensors { /** * array with the names of the labels * * @var array */ private $_buf_label = array(); /** * array withe the values * * @var array */ private $_buf_value = array(); /** * read the MBM5.csv file and fill the private arrays */ public function __construct() { parent::__construct(); $delim = "/;/"; CommonFunctions::rfts(APP_ROOT."/data/MBM5.csv", $buffer); if (strpos($buffer, ";") === false) { $delim = "/,/"; } $buffer = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY); $this->_buf_label = preg_split($delim, substr($buffer[0], 0, -2), -1, PREG_SPLIT_NO_EMPTY); $this->_buf_value = preg_split($delim, substr($buffer[1], 0, -2), -1, PREG_SPLIT_NO_EMPTY); } /** * get temperature information * * @return void */ private function _temperature() { for ($intPosi = 3; $intPosi < 6; $intPosi++) { if ($this->_buf_value[$intPosi] == 0) { continue; } preg_match("/([0-9\.])*/", str_replace(",", ".", $this->_buf_value[$intPosi]), $hits); $dev = new SensorDevice(); $dev->setName($this->_buf_label[$intPosi]); $dev->setValue($hits[0]); // $dev->setMax(70); $this->mbinfo->setMbTemp($dev); } } /** * get fan information * * @return void */ private function _fans() { for ($intPosi = 13; $intPosi < 16; $intPosi++) { if (!isset($this->_buf_value[$intPosi])) { continue; } preg_match("/([0-9\.])*/", str_replace(",", ".", $this->_buf_value[$intPosi]), $hits); $dev = new SensorDevice(); $dev->setName($this->_buf_label[$intPosi]); $dev->setValue($hits[0]); // $dev->setMin(3000); $this->mbinfo->setMbFan($dev); } } /** * get voltage information * * @return void */ private function _voltage() { for ($intPosi = 6; $intPosi < 13; $intPosi++) { if ($this->_buf_value[$intPosi] == 0) { continue; } preg_match("/([0-9\.])*/", str_replace(",", ".", $this->_buf_value[$intPosi]), $hits); $dev = new SensorDevice(); $dev->setName($this->_buf_label[$intPosi]); $dev->setValue($hits[0]); $this->mbinfo->setMbVolt($dev); } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_fans(); $this->_temperature(); $this->_voltage(); } } phpsysinfo-3.2.5/includes/mb/class.mbmon.inc.php000066400000000000000000000077361265516077000216520ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.mbmon.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting information from mbmon * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class MBMon extends Sensors { /** * content to parse * * @var array */ private $_lines = array(); /** * fill the private content var through tcp, command or data access */ public function __construct() { parent::__construct(); switch (defined('PSI_SENSOR_MBMON_ACCESS')?strtolower(PSI_SENSOR_MBMON_ACCESS):'command') { case 'tcp': $fp = fsockopen("localhost", 411, $errno, $errstr, 5); if ($fp) { $lines = ""; while (!feof($fp)) { $lines .= fread($fp, 1024); } $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } else { $this->error->addError("fsockopen()", $errno." ".$errstr); } break; case 'command': CommonFunctions::executeProgram('mbmon', '-c 1 -r', $lines, PSI_DEBUG); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; case 'data': if (CommonFunctions::rfts(APP_ROOT.'/data/mbmon.txt', $lines)) { $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_MBMON_ACCESS'); break; } } /** * get temperature information * * @return void */ private function _temperature() { foreach ($this->_lines as $line) { if (preg_match('/^(TEMP\d*)\s*:\s*(.*)$/D', $line, $data)) { if ($data[2] <> '0') { $dev = new SensorDevice(); $dev->setName($data[1]); // $dev->setMax(70); if ($data[2] < 250) { $dev->setValue($data[2]); } $this->mbinfo->setMbTemp($dev); } } } } /** * get fan information * * @return void */ private function _fans() { foreach ($this->_lines as $line) { if (preg_match('/^(FAN\d*)\s*:\s*(.*)$/D', $line, $data)) { if ($data[2] <> '0') { $dev = new SensorDevice(); $dev->setName($data[1]); $dev->setValue($data[2]); // $dev->setMax(3000); $this->mbinfo->setMbFan($dev); } } } } /** * get voltage information * * @return void */ private function _voltage() { foreach ($this->_lines as $line) { if (preg_match('/^(V.*)\s*:\s*(.*)$/D', $line, $data)) { if ($data[2] <> '+0.00') { $dev = new SensorDevice(); $dev->setName($data[1]); $dev->setValue($data[2]); $this->mbinfo->setMbVolt($dev); } } } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return void */ public function build() { $this->_temperature(); $this->_voltage(); $this->_fans(); } } phpsysinfo-3.2.5/includes/mb/class.ohm.inc.php000066400000000000000000000100241265516077000213050ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.ohm.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting information from Open Hardware Monitor * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class OHM extends Sensors { /** * holds the COM object that we pull all the WMI data from * * @var Object */ private $_buf = array(); /** * fill the private content var */ public function __construct() { parent::__construct(); $_wmi = null; // don't set this params for local connection, it will not work $strHostname = ''; $strUser = ''; $strPassword = ''; try { // initialize the wmi object $objLocator = new COM('WbemScripting.SWbemLocator'); if ($strHostname == "") { $_wmi = $objLocator->ConnectServer($strHostname, 'root\OpenHardwareMonitor'); } else { $_wmi = $objLocator->ConnectServer($strHostname, 'root\OpenHardwareMonitor', $strHostname.'\\'.$strUser, $strPassword); } } catch (Exception $e) { $this->error->addError("WMI connect error", "PhpSysInfo can not connect to the WMI interface for OpenHardwareMonitor data."); } if ($_wmi) { $this->_buf = CommonFunctions::getWMI($_wmi, 'Sensor', array('Parent', 'Name', 'SensorType', 'Value')); } } /** * get temperature information * * @return void */ private function _temperature() { if ($this->_buf) foreach ($this->_buf as $buffer) { if ($buffer['SensorType'] == "Temperature") { $dev = new SensorDevice(); $dev->setName($buffer['Parent'].' '.$buffer['Name']); $dev->setValue($buffer['Value']); $this->mbinfo->setMbTemp($dev); } } } /** * get voltage information * * @return void */ private function _voltage() { if ($this->_buf) foreach ($this->_buf as $buffer) { if ($buffer['SensorType'] == "Voltage") { $dev = new SensorDevice(); $dev->setName($buffer['Parent'].' '.$buffer['Name']); $dev->setValue($buffer['Value']); $this->mbinfo->setMbVolt($dev); } } } /** * get fan information * * @return void */ private function _fans() { if ($this->_buf) foreach ($this->_buf as $buffer) { if ($buffer['SensorType'] == "Fan") { $dev = new SensorDevice(); $dev->setName($buffer['Parent'].' '.$buffer['Name']); $dev->setValue($buffer['Value']); $this->mbinfo->setMbFan($dev); } } } /** * get power information * * @return void */ private function _power() { if ($this->_buf) foreach ($this->_buf as $buffer) { if ($buffer['SensorType'] == "Power") { $dev = new SensorDevice(); $dev->setName($buffer['Parent'].' '.$buffer['Name']); $dev->setValue($buffer['Value']); $this->mbinfo->setMbPower($dev); } } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_temperature(); $this->_voltage(); $this->_fans(); $this->_power(); } } phpsysinfo-3.2.5/includes/mb/class.pitemp.inc.php000066400000000000000000000041261265516077000220260ustar00rootroot00000000000000 * @copyright 2012 Marc Hillesheim * @link http://pi.no-ip.biz */ class PiTemp extends Sensors { private function _temperature() { $temp = null; $temp_max = null; if (!CommonFunctions::rfts('/sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input', $temp, 0, 4096, false)) { // Not Banana Pi CommonFunctions::rfts('/sys/class/thermal/thermal_zone0/temp', $temp); CommonFunctions::rfts('/sys/class/thermal/thermal_zone0/trip_point_0_temp', $temp_max, 0, 4096, PSI_DEBUG); } if (!is_null($temp) && (trim($temp) != "")) { $dev = new SensorDevice(); $dev->setName("CPU 1"); $dev->setValue($temp / 1000); if (!is_null($temp_max) && (trim($temp_max) != "") && ($temp_max > 0)) { $dev->setMax($temp_max / 1000); } $this->mbinfo->setMbTemp($dev); } } private function _voltage() { $volt = null; if (CommonFunctions::rfts('/sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/axp20-supplyer.28/power_supply/ac/voltage_now', $volt, 0, 4096, false) && !is_null($volt) && (trim($volt) != "")) { // Banana Pi $dev = new SensorDevice(); $dev->setName("Voltage 1"); $dev->setValue($volt / 1000000); $this->mbinfo->setMbVolt($dev); } } private function _current() { $current = null; if (CommonFunctions::rfts('/sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/axp20-supplyer.28/power_supply/ac/current_now', $current, 0, 4096, false) && !is_null($current) && (trim($current) != "")) { // Banana Pi $dev = new SensorDevice(); $dev->setName("Current 1"); $dev->setValue($current / 1000000); $this->mbinfo->setMbCurrent($dev); } } public function build() { $this->_temperature(); $this->_voltage(); $this->_current(); } } phpsysinfo-3.2.5/includes/mb/class.qtssnmp.inc.php000066400000000000000000000061701265516077000222360ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.qtssnmp.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting hardware temperature information through snmpwalk * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @author William Johansson * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class QTSsnmp extends Sensors { /** * get temperature information * * @return void */ private function _temperature() { if (CommonFunctions::executeProgram("/Apps/opt/bin/snmpwalk", "-Ona -c public -v 1 -r 1 127.0.0.1 .1.3.6.1.4.1.24681.1.2.5.0", $buffer, PSI_DEBUG) && preg_match('/^[\.\d]+ = STRING:\s\"?(\d+)\sC/', $buffer, $data)) { $dev = new SensorDevice(); $dev->setName("CPU"); $dev->setValue($data[1]); $this->mbinfo->setMbTemp($dev); } if (CommonFunctions::executeProgram("/Apps/opt/bin/snmpwalk", "-Ona -c public -v 1 -r 1 127.0.0.1 .1.3.6.1.4.1.24681.1.2.6.0", $buffer, PSI_DEBUG) && preg_match('/^[\.\d]+ = STRING:\s\"?(\d+)\sC/', $buffer, $data)) { $dev = new SensorDevice(); $dev->setName("System"); $dev->setValue($data[1]); $this->mbinfo->setMbTemp($dev); } if (CommonFunctions::executeProgram("/Apps/opt/bin/snmpwalk", "-Ona -c public -v 1 -r 1 127.0.0.1 .1.3.6.1.4.1.24681.1.2.11.1.3", $buffer, PSI_DEBUG)) { $lines = preg_split('/\r?\n/', $buffer); foreach ($lines as $line) if (preg_match('/^[\.\d]+\.(\d+) = STRING:\s\"?(\d+)\sC/', $line, $data)) { $dev = new SensorDevice(); $dev->setName("HDD ".$data[1]); $dev->setValue($data[2]); $this->mbinfo->setMbTemp($dev); } } } /** * get fan information * * @return void */ private function _fans() { if (CommonFunctions::executeProgram("/Apps/opt/bin/snmpwalk", "-Ona -c public -v 1 -r 1 127.0.0.1 .1.3.6.1.4.1.24681.1.2.15.1.3", $buffer, PSI_DEBUG)) { $lines = preg_split('/\r?\n/', $buffer); foreach ($lines as $line) if (preg_match('/^[\.\d]+\.(\d+) = STRING:\s\"?(\d+)\sRPM/', $line, $data)) { $dev = new SensorDevice(); $dev->setName("Fan ".$data[1]); $dev->setValue($data[2]); $this->mbinfo->setMbFan($dev); } } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_temperature(); $this->_fans(); } } phpsysinfo-3.2.5/includes/mb/class.sensors.inc.php000066400000000000000000000027101265516077000222210ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.sensors.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * Basic OS functions for all OS classes * * @category PHP * @package PSI sensors class * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ abstract class Sensors implements PSI_Interface_Sensor { /** * object for error handling * * @var Error */ protected $error; /** * object for the information * * @var MBInfo */ protected $mbinfo; /** * build the global Error object */ public function __construct() { $this->error = PSI_Error::singleton(); $this->mbinfo = new MBInfo(); } /** * get the filled or unfilled (with default values) MBInfo object * * @see PSI_Interface_Sensor::getMBInfo() * * @return MBInfo */ final public function getMBInfo() { $this->build(); return $this->mbinfo; } } phpsysinfo-3.2.5/includes/mb/class.speedfan.inc.php000066400000000000000000000104611265516077000223140ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.qtssnmp.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting hardware temperature information through snmpwalk * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @author William Johansson * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class SpeedFan extends Sensors { /* * variable, which holds the content of the command * @var array */ private $_filecontent = array(); public function __construct() { parent::__construct(); switch (defined('PSI_SENSOR_SPEEDFAN_ACCESS')?strtolower(PSI_SENSOR_SPEEDFAN_ACCESS):'command') { case 'command': if (CommonFunctions::executeProgram("SpeedFanGet.exe", "", $buffer, PSI_DEBUG) && (strlen($buffer) > 0)) { if (preg_match("/^Temperatures:\s+(.+)$/m", $buffer, $out)) { $this->_filecontent["temp"] = $out[1]; } if (preg_match("/^Fans:\s+(.+)$/m", $buffer, $out)) { $this->_filecontent["fans"] = $out[1]; } if (preg_match("/^Voltages:\s+(.+)$/m", $buffer, $out)) { $this->_filecontent["volt"] = $out[1]; } } break; case 'data': if (CommonFunctions::rfts(APP_ROOT.'/data/speedfan.txt', $buffer) && (strlen($buffer) > 0)) { if (preg_match("/^Temperatures:\s+(.+)$/m", $buffer, $out)) { $this->_filecontent["temp"] = $out[1]; } if (preg_match("/^Fans:\s+(.+)$/m", $buffer, $out)) { $this->_filecontent["fans"] = $out[1]; } if (preg_match("/^Voltages:\s+(.+)$/m", $buffer, $out)) { $this->_filecontent["volt"] = $out[1]; } } break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_SPEEDFAN_ACCESS'); break; } } /** * get temperature information * * @return void */ private function _temperature() { if (isset($this->_filecontent["temp"]) && (trim($this->_filecontent["temp"]) !== "")) { $values = preg_split("/ /", trim($this->_filecontent["temp"])); foreach ($values as $id=>$value) { $dev = new SensorDevice(); $dev->setName("temp".$id); $dev->setValue($value); $this->mbinfo->setMbTemp($dev); } } } /** * get fan information * * @return void */ private function _fans() { if (isset($this->_filecontent["fans"]) && (trim($this->_filecontent["fans"]) !== "")) { $values = preg_split("/ /", trim($this->_filecontent["fans"])); foreach ($values as $id=>$value) { $dev = new SensorDevice(); $dev->setName("fan".$id); $dev->setValue($value); $this->mbinfo->setMbFan($dev); } } } /** * get voltage information * * @return void */ private function _voltage() { if (isset($this->_filecontent["volt"]) && (trim($this->_filecontent["volt"]) !== "")) { $values = preg_split("/ /", trim($this->_filecontent["volt"])); foreach ($values as $id=>$value) { $dev = new SensorDevice(); $dev->setName("in".$id); $dev->setValue($value); $this->mbinfo->setMbVolt($dev); } } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_temperature(); $this->_fans(); $this->_voltage(); } } phpsysinfo-3.2.5/includes/mb/class.thermalzone.inc.php000066400000000000000000000131071265516077000230570ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.ohm.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting information from Thermal Zone WMI class * * @category PHP * @package PSI_Sensor * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class ThermalZone extends Sensors { /** * holds the COM object that we pull all the WMI data from * * @var Object */ private $_buf = array(); /** * fill the private content var */ public function __construct() { parent::__construct(); if (PSI_OS == 'WINNT') { $_wmi = null; // don't set this params for local connection, it will not work $strHostname = ''; $strUser = ''; $strPassword = ''; try { // initialize the wmi object $objLocator = new COM('WbemScripting.SWbemLocator'); if ($strHostname == "") { $_wmi = $objLocator->ConnectServer($strHostname, 'root\WMI'); } else { $_wmi = $objLocator->ConnectServer($strHostname, 'root\WMI', $strHostname.'\\'.$strUser, $strPassword); } } catch (Exception $e) { $this->error->addError("WMI connect error", "PhpSysInfo can not connect to the WMI interface for ThermalZone data."); } if ($_wmi) { $this->_buf = CommonFunctions::getWMI($_wmi, 'MSAcpi_ThermalZoneTemperature', array('InstanceName', 'CriticalTripPoint', 'CurrentTemperature')); } } } /** * get temperature information * * @return void */ private function _temperature() { if (PSI_OS == 'WINNT') { if ($this->_buf) foreach ($this->_buf as $buffer) { if (isset($buffer['CurrentTemperature']) && (($value = ($buffer['CurrentTemperature'] - 2732)/10) > -100)) { $dev = new SensorDevice(); if (isset($buffer['InstanceName']) && preg_match("/([^\\\\ ]+)$/", $buffer['InstanceName'], $outbuf)) { $dev->setName('ThermalZone '.$outbuf[1]); } else { $dev->setName('ThermalZone THM0_0'); } $dev->setValue($value); if (isset($buffer['CriticalTripPoint']) && (($maxvalue = ($buffer['CriticalTripPoint'] - 2732)/10) > 0)) { $dev->setMax($maxvalue); } $this->mbinfo->setMbTemp($dev); } } } else { $notwas = true; foreach (glob('/sys/class/thermal/thermal_zone*/') as $thermalzone) { $thermalzonetemp = $thermalzone.'temp'; $temp = null; if (CommonFunctions::rfts($thermalzonetemp, $temp, 0, 4096, false) && !is_null($temp) && (trim($temp) != "")) { if ($temp >= 1000) { $temp = $temp / 1000; } if ($temp > -40) { $dev = new SensorDevice(); $dev->setValue($temp); $temp_type = null; if (CommonFunctions::rfts($thermalzone.'type', $temp_type, 0, 4096, false) && !is_null($temp_type) && (trim($temp_type) != "")) { $dev->setName($temp_type); } else { $dev->setName("ThermalZone"); } $temp_max = null; if (CommonFunctions::rfts($thermalzone.'trip_point_0_temp', $temp_max, 0, 4096, false) && !is_null($temp_max) && (trim($temp_max) != "") && ($temp_max > 0)) { if ($temp_max >= 1000) { $temp_max = $temp_max / 1000; } $dev->setMax($temp_max); } $notwas = false; $this->mbinfo->setMbTemp($dev); } } } if ($notwas) { foreach (glob('/proc/acpi/thermal_zone/TH*/temperature') as $thermalzone) { $temp = null; if (CommonFunctions::rfts($thermalzone, $temp, 1, 4096, false) && !is_null($temp) && (trim($temp) != "")) { $dev = new SensorDevice(); if (preg_match("/^\/proc\/acpi\/thermal_zone\/(.+)\/temperature$/", $thermalzone, $name)) { $dev->setName("ThermalZone ".$name[1]); } else { $dev->setName("ThermalZone"); } $dev->setValue(trim(substr($temp, 23, 4))); $this->mbinfo->setMbTemp($dev); } } } } } /** * get the information * * @see PSI_Interface_Sensor::build() * * @return Void */ public function build() { $this->_temperature(); } } phpsysinfo-3.2.5/includes/os/000077500000000000000000000000001265516077000161635ustar00rootroot00000000000000phpsysinfo-3.2.5/includes/os/class.AIX.inc.php000066400000000000000000000247501265516077000212010ustar00rootroot00000000000000 * @copyright 2011 Krzysztof Paz * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.AIX.inc.php 287 2009-06-26 12:11:59Z Krzysztof Paz, IBM POLSKA * @link http://phpsysinfo.sourceforge.net */ /** * IBM AIX sysinfo class * get all the required information from IBM AIX system * * @category PHP * @package PSI AIX OS class * @author Krzysztof Paz (kpaz@gazeta.pl) based on Michael Cramer * @copyright 2011 Krzysztof Paz * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class AIX extends OS { private $_aixdata = array(); /** * Virtual Host Name * @return void */ private function _hostname() { /* if (PSI_USE_VHOST === true) { $this->sys->setHostname(getenv('SERVER_NAME')); } else { if (CommonFunctions::executeProgram('hostname', '', $ret)) { $this->sys->setHostname($ret); } } */ $this->sys->setHostname(getenv('SERVER_NAME')); } /** * IBM AIX Version * @return void */ private function _kernel() { if (CommonFunctions::executeProgram('oslevel', '', $ret1) && CommonFunctions::executeProgram('oslevel', '-s', $ret2)) { $this->sys->setKernel($ret1 . ' (' . $ret2 . ')'); } } /** * UpTime * time the system is running * @return void */ private function _uptime() { if (CommonFunctions::executeProgram('uptime', '', $buf)) { if (preg_match("/up (\d+) days,\s*(\d+):(\d+),/", $buf, $ar_buf) || preg_match("/up (\d+) day,\s*(\d+):(\d+),/", $buf, $ar_buf)) { $min = $ar_buf[3]; $hours = $ar_buf[2]; $days = $ar_buf[1]; $this->sys->setUptime($days * 86400 + $hours * 3600 + $min * 60); } } } /** * Processor Load * optionally create a loadbar * @return void */ private function _loadavg() { if (CommonFunctions::executeProgram('uptime', '', $buf)) { if (preg_match("/average: (.*), (.*), (.*)$/", $buf, $ar_buf)) { $this->sys->setLoad($ar_buf[1].' '.$ar_buf[2].' '.$ar_buf[3]); } } } /** * CPU information * All of the tags here are highly architecture dependant * @return void */ private function _cpuinfo() { $ncpu = 0; $tcpu = ""; $vcpu = ""; $ccpu = ""; $scpu = ""; foreach ($this->readaixdata() as $line) { if (preg_match("/^Number Of Processors:\s+(\d+)/", $line, $ar_buf)) { $ncpu = $ar_buf[1]; } if (preg_match("/^Processor Type:\s+(.+)/", $line, $ar_buf)) { $tcpu = $ar_buf[1]; } if (preg_match("/^Processor Version:\s+(.+)/", $line, $ar_buf)) { $vcpu = $ar_buf[1]; } if (preg_match("/^CPU Type:\s+(.+)/", $line, $ar_buf)) { $ccpu = $ar_buf[1]; } if (preg_match("/^Processor Clock Speed:\s+(\d+)\s/", $line, $ar_buf)) { $scpu = $ar_buf[1]; } } for ($i = 0; $i < $ncpu; $i++) { $dev = new CpuDevice(); if (trim($tcpu) != "") { $cpu = trim($tcpu); if (trim($vcpu) != "") $cpu .= " ".trim($vcpu); if (trim($ccpu) != "") $cpu .= " ".trim($ccpu); $dev->setModel($cpu); } if (trim($scpu) != "") { $dev->setCpuSpeed(trim($scpu)); } $this->sys->setCpus($dev); } } /** * PCI devices * @return void */ private function _pci() { foreach ($this->readaixdata() as $line) { if (preg_match("/^[\*\+]\s\S+\s+\S+\s+(.*PCI.*)/", $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName(trim($ar_buf[1])); $this->sys->setPciDevices($dev); } } } /** * IDE devices * @return void */ private function _ide() { foreach ($this->readaixdata() as $line) { if (preg_match("/^[\*\+]\s\S+\s+\S+\s+(.*IDE.*)/", $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName(trim($ar_buf[1])); $this->sys->setIdeDevices($dev); } } } /** * SCSI devices * @return void */ private function _scsi() { foreach ($this->readaixdata() as $line) { if (preg_match("/^[\*\+]\s\S+\s+\S+\s+(.*SCSI.*)/", $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName(trim($ar_buf[1])); $this->sys->setScsiDevices($dev); } } } /** * USB devices * @return void */ private function _usb() { foreach ($this->readaixdata() as $line) { if (preg_match("/^[\*\+]\s\S+\s+\S+\s+(.*USB.*)/", $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName(trim($ar_buf[1])); $this->sys->setUsbDevices($dev); } } } /** * Network devices * includes also rx/tx bytes * @return void */ private function _network() { if (CommonFunctions::executeProgram('netstat', '-ni | tail -n +2', $netstat)) { $lines = preg_split("/\n/", $netstat, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { $ar_buf = preg_split("/\s+/", $line); if (! empty($ar_buf[0]) && ! empty($ar_buf[3])) { $dev = new NetDevice(); $dev->setName($ar_buf[0]); $dev->setRxBytes($ar_buf[4]); $dev->setTxBytes($ar_buf[6]); $dev->setErrors($ar_buf[5] + $ar_buf[7]); //$dev->setDrops($ar_buf[8]); $this->sys->setNetDevices($dev); } } } } /** * Physical memory information and Swap Space information * @return void */ private function _memory() { $mems = ""; $tswap = ""; $pswap = ""; foreach ($this->readaixdata() as $line) { if (preg_match("/^Good Memory Size:\s+(\d+)\s+MB/", $line, $ar_buf)) { $mems = $ar_buf[1]; } if (preg_match("/^\s*Total Paging Space:\s+(\d+)MB/", $line, $ar_buf)) { $tswap = $ar_buf[1]; } if (preg_match("/^\s*Percent Used:\s+(\d+)%/", $line, $ar_buf)) { $pswap = $ar_buf[1]; } } if (trim($mems) != "") { $mems = $mems*1024*1024; $this->sys->setMemTotal($mems); $memu = 0; $memf = 0; if (CommonFunctions::executeProgram('svmon', '-G', $buf)) { if (preg_match("/^memory\s+\d+\s+(\d+)\s+/", $buf, $ar_buf)) { $memu = $ar_buf[1]*1024*4; $memf = $mems - $memu; } } $this->sys->setMemUsed($memu); $this->sys->setMemFree($memf); // $this->sys->setMemApplication($mems); // $this->sys->setMemBuffer($mems); // $this->sys->setMemCache($mems); } if (trim($tswap) != "") { $dev = new DiskDevice(); $dev->setName("SWAP"); $dev->setFsType('swap'); $dev->setTotal($tswap * 1024 * 1024); if (trim($pswap) != "") { $dev->setUsed($dev->getTotal() * $pswap / 100); } $dev->setFree($dev->getTotal() - $dev->getUsed()); $this->sys->setSwapDevices($dev); } } /** * filesystem information * * @return void */ private function _filesystems() { if (CommonFunctions::executeProgram('df', '-kP', $df, PSI_DEBUG)) { $mounts = preg_split("/\n/", $df, -1, PREG_SPLIT_NO_EMPTY); if (CommonFunctions::executeProgram('mount', '-v', $s, PSI_DEBUG)) { $lines = preg_split("/\n/", $s, -1, PREG_SPLIT_NO_EMPTY); while (list(, $line) = each($lines)) { $a = preg_split('/ /', $line, -1, PREG_SPLIT_NO_EMPTY); $fsdev[$a[0]] = $a[4]; } } foreach ($mounts as $mount) { $ar_buf = preg_split("/\s+/", $mount, 6); $dev = new DiskDevice(); $dev->setName($ar_buf[0]); $dev->setTotal($ar_buf[1] * 1024); $dev->setUsed($ar_buf[2] * 1024); $dev->setFree($ar_buf[3] * 1024); $dev->setMountPoint($ar_buf[5]); if (isset($fsdev[$ar_buf[0]])) { $dev->setFsType($fsdev[$ar_buf[0]]); } $this->sys->setDiskDevices($dev); } } } /** * Distribution * * @return void */ private function _distro() { $this->sys->setDistribution('IBM AIX'); $this->sys->setDistributionIcon('AIX.png'); } /** * IBM AIX informations by K.PAZ * @return void */ private function readaixdata() { if (count($this->_aixdata) === 0) { if (CommonFunctions::executeProgram('prtconf', '', $bufr)) { $this->_aixdata = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); } } return $this->_aixdata; } /** * get the information * * @see PSI_Interface_OS::build() * * @return Void */ public function build() { $this->error->addError("WARN", "The AIX version of phpSysInfo is a work in progress, some things currently don't work"); $this->_distro(); $this->_hostname(); $this->_kernel(); $this->_uptime(); $this->_users(); $this->_loadavg(); $this->_cpuinfo(); $this->_pci(); $this->_ide(); $this->_scsi(); $this->_usb(); $this->_network(); $this->_memory(); $this->_filesystems(); } } phpsysinfo-3.2.5/includes/os/class.Android.inc.php000066400000000000000000000221211265516077000221260ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.Linux.inc.php 712 2012-12-05 14:09:18Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * Android sysinfo class * get all the required information from Android system * * @category PHP * @package PSI Android OS class * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Android extends Linux { /** * call parent constructor */ public function __construct() { parent::__construct(); } /** * Kernel Version * * @return void */ private function _kernel() { if (CommonFunctions::rfts('/proc/version', $strBuf, 1)) { if (preg_match('/version (.*?) /', $strBuf, $ar_buf)) { $result = $ar_buf[1]; if (preg_match('/SMP/', $strBuf)) { $result .= ' (SMP)'; } $this->sys->setKernel($result); } } } /** * Number of Users * * @return void */ protected function _users() { $this->sys->setUsers(1); } /** * filesystem information * * @return void */ private function _filesystems() { if (CommonFunctions::executeProgram('df', '2>/dev/null ', $df, PSI_DEBUG)) { $df = preg_split("/\n/", $df, -1, PREG_SPLIT_NO_EMPTY); if (CommonFunctions::executeProgram('mount', '', $mount, PSI_DEBUG)) { $mount = preg_split("/\n/", $mount, -1, PREG_SPLIT_NO_EMPTY); foreach ($mount as $mount_line) { $mount_buf = preg_split('/\s+/', $mount_line); if (count($mount_buf) == 6) { $mount_parm[$mount_buf[1]]['fstype'] = $mount_buf[2]; if (PSI_SHOW_MOUNT_OPTION) $mount_parm[$mount_buf[1]]['options'] = $mount_buf[3]; $mount_parm[$mount_buf[1]]['mountdev'] = $mount_buf[0]; } } foreach ($df as $df_line) { if ((preg_match("/^(\/\S+)(\s+)(([0-9\.]+)([KMGT])(\s+)([0-9\.]+)([KMGT])(\s+)([0-9\.]+)([KMGT])(\s+))/", $df_line, $df_buf) || preg_match("/^(\/[^\s\:]+)\:(\s+)(([0-9\.]+)([KMGT])(\s+total\,\s+)([0-9\.]+)([KMGT])(\s+used\,\s+)([0-9\.]+)([KMGT])(\s+available))/", $df_line, $df_buf)) && !preg_match('/^\/mnt\/asec\/com\./', $df_buf[1])) { $dev = new DiskDevice(); if (PSI_SHOW_MOUNT_POINT) $dev->setMountPoint($df_buf[1]); if ($df_buf[5] == 'K') $dev->setTotal($df_buf[4] * 1024); elseif ($df_buf[5] == 'M') $dev->setTotal($df_buf[4] * 1024*1024); elseif ($df_buf[5] == 'G') $dev->setTotal($df_buf[4] * 1024*1024*1024); elseif ($df_buf[5] == 'T') $dev->setTotal($df_buf[4] * 1024*1024*1024*1024); if ($df_buf[8] == 'K') $dev->setUsed($df_buf[7] * 1024); elseif ($df_buf[8] == 'M') $dev->setUsed($df_buf[7] * 1024*1024); elseif ($df_buf[8] == 'G') $dev->setUsed($df_buf[7] * 1024*1024*1024); elseif ($df_buf[8] == 'T') $dev->setUsed($df_buf[7] * 1024*1024*1024*1024); if ($df_buf[11] == 'K') $dev->setFree($df_buf[10] * 1024); elseif ($df_buf[11] == 'M') $dev->setFree($df_buf[10] * 1024*1024); elseif ($df_buf[11] == 'G') $dev->setFree($df_buf[10] * 1024*1024*1024); elseif ($df_buf[11] == 'T') $dev->setFree($df_buf[10] * 1024*1024*1024*1024); if (isset($mount_parm[$df_buf[1]])) { $dev->setFsType($mount_parm[$df_buf[1]]['fstype']); $dev->setName($mount_parm[$df_buf[1]]['mountdev']); if (PSI_SHOW_MOUNT_OPTION) { if (PSI_SHOW_MOUNT_CREDENTIALS) { $dev->setOptions($mount_parm[$df_buf[1]]['options']); } else { $mpo=$mount_parm[$df_buf[1]]['options']; $mpo=preg_replace('/(^guest,)|(^guest$)|(,guest$)/i', '', $mpo); $mpo=preg_replace('/,guest,/i', ',', $mpo); $mpo=preg_replace('/(^user=[^,]*,)|(^user=[^,]*$)|(,user=[^,]*$)/i', '', $mpo); $mpo=preg_replace('/,user=[^,]*,/i', ',', $mpo); $mpo=preg_replace('/(^username=[^,]*,)|(^username=[^,]*$)|(,username=[^,]*$)/i', '', $mpo); $mpo=preg_replace('/,username=[^,]*,/i', ',', $mpo); $mpo=preg_replace('/(^password=[^,]*,)|(^password=[^,]*$)|(,password=[^,]*$)/i', '', $mpo); $mpo=preg_replace('/,password=[^,]*,/i', ',', $mpo); $dev->setOptions($mpo); } } } $this->sys->setDiskDevices($dev); } } } } } /** * Distribution * * @return void */ protected function _distro() { $buf = ""; if (CommonFunctions::rfts('/system/build.prop', $lines, 0, 4096, false) && preg_match('/^ro\.build\.version\.release=([^\n]+)/m', $lines, $ar_buf)) { $buf = trim($ar_buf[1]); } if (is_null($buf) || ($buf == "")) { $this->sys->setDistribution('Android'); } else { if (preg_match('/^(\d+\.\d+)/', $buf, $ver) && ($list = @parse_ini_file(APP_ROOT."/data/osnames.ini", true)) && isset($list['Android'][$ver[1]])) { $buf.=' '.$list['Android'][$ver[1]]; } $this->sys->setDistribution('Android '.$buf); } $this->sys->setDistributionIcon('Android.png'); } /** * Machine * * @return void */ private function _machine() { if (CommonFunctions::rfts('/system/build.prop', $lines, 0, 4096, false)) { $buf = ""; if (preg_match('/^ro\.product\.manufacturer=([^\n]+)/m', $lines, $ar_buf)) { $buf .= ' '.trim($ar_buf[1]); } if (preg_match('/^ro\.product\.model=([^\n]+)/m', $lines, $ar_buf) && (trim($buf) !== trim($ar_buf[1]))) { $buf .= ' '.trim($ar_buf[1]); } if (preg_match('/^ro\.semc\.product\.name=([^\n]+)/m', $lines, $ar_buf)) { $buf .= ' '.trim($ar_buf[1]); } if (trim($buf) != "") { $this->sys->setMachine(trim($buf)); } } } /** * PCI devices * * @return array */ private function _pci() { if (CommonFunctions::executeProgram('lspci', '', $bufr, false)) { $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe as $buf) { $device = preg_split("/ /", $buf, 4); if (isset($device[3]) && trim($device[3]) != "") { $dev = new HWDevice(); $dev->setName('Class '.trim($device[2]).' Device '.trim($device[3])); $this->sys->setPciDevices($dev); } } } } /** * USB devices * * @return array */ private function _usb() { if (file_exists('/dev/bus/usb') && CommonFunctions::executeProgram('lsusb', '', $bufr, false)) { $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe as $buf) { $device = preg_split("/ /", $buf, 6); if (isset($device[5]) && trim($device[5]) != "") { $dev = new HWDevice(); $dev->setName(trim($device[5])); $this->sys->setUsbDevices($dev); } } } } /** * get the information * * @see PSI_Interface_OS::build() * * @return Void */ public function build() { $this->_distro(); $this->_hostname(); $this->_kernel(); $this->_machine(); $this->_uptime(); $this->_users(); $this->_cpuinfo(); $this->_pci(); $this->_usb(); $this->_i2c(); $this->_network(); $this->_memory(); $this->_filesystems(); $this->_loadavg(); $this->_processes(); } } phpsysinfo-3.2.5/includes/os/class.BSDCommon.inc.php000066400000000000000000000431161265516077000223360ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.BSDCommon.inc.php 621 2012-07-29 18:49:04Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * BSDCommon class * get all the required information for BSD Like systems * no need to implement in every class the same methods * * @category PHP * @package PSI BSDCommon OS class * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ abstract class BSDCommon extends OS { /** * content of the syslog * * @var array */ private $_dmesg = array(); /** * regexp1 for cpu information out of the syslog * * @var string */ private $_CPURegExp1 = "//"; /** * regexp2 for cpu information out of the syslog * * @var string */ private $_CPURegExp2 = "//"; /** * regexp1 for scsi information out of the syslog * * @var string */ private $_SCSIRegExp1 = "//"; /** * regexp2 for scsi information out of the syslog * * @var string */ private $_SCSIRegExp2 = "//"; /** * regexp1 for pci information out of the syslog * * @var string */ private $_PCIRegExp1 = "//"; /** * regexp1 for pci information out of the syslog * * @var string */ private $_PCIRegExp2 = "//"; /** * call parent constructor */ public function __construct() { parent::__construct(); } /** * setter for cpuregexp1 * * @param string $value value to set * * @return void */ protected function setCPURegExp1($value) { $this->_CPURegExp1 = $value; } /** * setter for cpuregexp2 * * @param string $value value to set * * @return void */ protected function setCPURegExp2($value) { $this->_CPURegExp2 = $value; } /** * setter for scsiregexp1 * * @param string $value value to set * * @return void */ protected function setSCSIRegExp1($value) { $this->_SCSIRegExp1 = $value; } /** * setter for scsiregexp2 * * @param string $value value to set * * @return void */ protected function setSCSIRegExp2($value) { $this->_SCSIRegExp2 = $value; } /** * setter for pciregexp1 * * @param string $value value to set * * @return void */ protected function setPCIRegExp1($value) { $this->_PCIRegExp1 = $value; } /** * setter for pciregexp2 * * @param string $value value to set * * @return void */ protected function setPCIRegExp2($value) { $this->_PCIRegExp2 = $value; } /** * read /var/run/dmesg.boot, but only if we haven't already * * @return array */ protected function readdmesg() { if (count($this->_dmesg) === 0) { if (PSI_OS != "Darwin") { if (CommonFunctions::rfts('/var/run/dmesg.boot', $buf, 0, 4096, false) || CommonFunctions::rfts('/var/log/dmesg.boot', $buf, 0, 4096, false) || CommonFunctions::rfts('/var/run/dmesg.boot', $buf)) { // Once again but with debug $parts = preg_split("/rebooting|Uptime/", $buf, -1, PREG_SPLIT_NO_EMPTY); $this->_dmesg = preg_split("/\n/", $parts[count($parts) - 1], -1, PREG_SPLIT_NO_EMPTY); } } } return $this->_dmesg; } /** * get a value from sysctl command * * @param string $key key for the value to get * * @return string */ protected function grabkey($key) { $buf = ""; if (CommonFunctions::executeProgram('sysctl', "-n $key", $buf, PSI_DEBUG)) { return $buf; } else { return ''; } } /** * Virtual Host Name * * @return void */ protected function hostname() { if (PSI_USE_VHOST === true) { $this->sys->setHostname(getenv('SERVER_NAME')); } else { if (CommonFunctions::executeProgram('hostname', '', $buf, PSI_DEBUG)) { $this->sys->setHostname($buf); } } } /** * Kernel Version * * @return void */ protected function kernel() { $s = $this->grabkey('kern.version'); $a = preg_split('/:/', $s); if (isset($a[2])) { $this->sys->setKernel($a[0].$a[1].':'.$a[2]); } else { $this->sys->setKernel($s); } } /** * Processor Load * optionally create a loadbar * * @return void */ protected function loadavg() { $s = $this->grabkey('vm.loadavg'); $s = preg_replace('/{ /', '', $s); $s = preg_replace('/ }/', '', $s); $this->sys->setLoad($s); if (PSI_LOAD_BAR && (PSI_OS != "Darwin")) { if ($fd = $this->grabkey('kern.cp_time')) { // Find out the CPU load // user + sys = load // total = total preg_match($this->_CPURegExp2, $fd, $res); $load = $res[2] + $res[3] + $res[4]; // cpu.user + cpu.sys $total = $res[2] + $res[3] + $res[4] + $res[5]; // cpu.total // we need a second value, wait 1 second befor getting (< 1 second no good value will occour) sleep(1); $fd = $this->grabkey('kern.cp_time'); preg_match($this->_CPURegExp2, $fd, $res); $load2 = $res[2] + $res[3] + $res[4]; $total2 = $res[2] + $res[3] + $res[4] + $res[5]; $this->sys->setLoadPercent((100 * ($load2 - $load)) / ($total2 - $total)); } } } /** * CPU information * * @return void */ protected function cpuinfo() { $dev = new CpuDevice(); if (PSI_OS == "NetBSD") { if ($model = $this->grabkey('machdep.cpu_brand')) { $dev->setModel($model); } if ($cpuspeed = $this->grabkey('machdep.tsc_freq')) { $dev->setCpuSpeed(round($cpuspeed / 1000000)); } } if ($dev->getModel() === "") { $dev->setModel($this->grabkey('hw.model')); } $notwas = true; foreach ($this->readdmesg() as $line) { if ($notwas) { if (preg_match($this->_CPURegExp1, $line, $ar_buf)) { if ($dev->getCpuSpeed() === 0) { $dev->setCpuSpeed(round($ar_buf[2])); } $notwas = false; } } else { if (preg_match("/ Origin| Features/", $line, $ar_buf)) { if (preg_match("/ Features2[ ]*=.*<(.*)>/", $line, $ar_buf)) { $feats = preg_split("/,/", strtolower(trim($ar_buf[1])), -1, PREG_SPLIT_NO_EMPTY); foreach ($feats as $feat) { if (($feat=="vmx") || ($feat=="svm")) { $dev->setVirt($feat); break 2; } } break; } } else break; } } $ncpu = $this->grabkey('hw.ncpu'); if (is_null($ncpu) || (trim($ncpu) == "") || (!($ncpu >= 1))) $ncpu = 1; for ($ncpu ; $ncpu > 0 ; $ncpu--) { $this->sys->setCpus($dev); } } /** * SCSI devices * get the scsi device information out of dmesg * * @return void */ protected function scsi() { foreach ($this->readdmesg() as $line) { if (preg_match($this->_SCSIRegExp1, $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName($ar_buf[1].": ".$ar_buf[2]); $this->sys->setScsiDevices($dev); } elseif (preg_match($this->_SCSIRegExp2, $line, $ar_buf)) { /* duplication security */ $notwas = true; foreach ($this->sys->getScsiDevices() as $finddev) { if ($notwas && (substr($finddev->getName(), 0, strpos($finddev->getName(), ': ')) == $ar_buf[1])) { $finddev->setCapacity($ar_buf[2] * 2048 * 1.049); $notwas = false; break; } } if ($notwas) { $dev = new HWDevice(); $dev->setName($ar_buf[1]); $dev->setCapacity($ar_buf[2] * 2048 * 1.049); $this->sys->setScsiDevices($dev); } } } /* cleaning */ foreach ($this->sys->getScsiDevices() as $finddev) { if (strpos($finddev->getName(), ': ') !== false) $finddev->setName(substr(strstr($finddev->getName(), ': '), 2)); } } /** * parsing the output of pciconf command * * @return Array */ protected function pciconf() { $arrResults = array(); $intS = 0; if (CommonFunctions::executeProgram("pciconf", "-lv", $strBuf, PSI_DEBUG)) { $arrTemp = array(); $arrBlocks = preg_split("/\n\S/", $strBuf, -1, PREG_SPLIT_NO_EMPTY); foreach ($arrBlocks as $strBlock) { $arrLines = preg_split("/\n/", $strBlock, -1, PREG_SPLIT_NO_EMPTY); $vend = null; foreach ($arrLines as $strLine) { if (preg_match("/\sclass=0x([a-fA-F0-9]{4})[a-fA-F0-9]{2}\s.*\schip=0x([a-fA-F0-9]{4})([a-fA-F0-9]{4})\s/", $strLine, $arrParts)) { $arrTemp[$intS] = 'Class '.$arrParts[1].': Device '.$arrParts[3].':'.$arrParts[2]; $vend = ''; } elseif (preg_match("/(.*) = '(.*)'/", $strLine, $arrParts)) { if (trim($arrParts[1]) == "vendor") { $vend = trim($arrParts[2]); } elseif (trim($arrParts[1]) == "device") { if (($vend !== null) && ($vend !== '')) { $arrTemp[$intS] = $vend." - ".trim($arrParts[2]); } else { $arrTemp[$intS] = trim($arrParts[2]); $vend = ''; } } } } if ($vend !== null) { $intS++; } } foreach ($arrTemp as $name) { $dev = new HWDevice(); $dev->setName($name); $arrResults[] = $dev; } } return $arrResults; } /** * PCI devices * get the pci device information out of dmesg * * @return void */ protected function pci() { if ((!$results = Parser::lspci(false)) && (!$results = $this->pciconf())) { foreach ($this->readdmesg() as $line) { if (preg_match($this->_PCIRegExp1, $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName($ar_buf[1].": ".$ar_buf[2]); $results[] = $dev; } elseif (preg_match($this->_PCIRegExp2, $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName($ar_buf[1].": ".$ar_buf[2]); $results[] = $dev; } } } foreach ($results as $dev) { $this->sys->setPciDevices($dev); } } /** * IDE devices * get the ide device information out of dmesg * * @return void */ protected function ide() { foreach ($this->readdmesg() as $line) { if (preg_match('/^(ad[0-9]+): (.*)MB <(.*)> (.*) (.*)/', $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName($ar_buf[1].": ".$ar_buf[3]); $dev->setCapacity($ar_buf[2] * 1024); $this->sys->setIdeDevices($dev); } elseif (preg_match('/^(acd[0-9]+): (.*) <(.*)> (.*)/', $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName($ar_buf[1].": ".$ar_buf[3]); $this->sys->setIdeDevices($dev); } elseif (preg_match('/^(ada[0-9]+): <(.*)> (.*)/', $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName($ar_buf[1].": ".$ar_buf[2]); $this->sys->setIdeDevices($dev); } elseif (preg_match('/^(ada[0-9]+): (.*)MB \((.*)\)/', $line, $ar_buf)) { /* duplication security */ $notwas = true; foreach ($this->sys->getIdeDevices() as $finddev) { if ($notwas && (substr($finddev->getName(), 0, strpos($finddev->getName(), ': ')) == $ar_buf[1])) { $finddev->setCapacity($ar_buf[2] * 1024); $notwas = false; break; } } if ($notwas) { $dev = new HWDevice(); $dev->setName($ar_buf[1]); $dev->setCapacity($ar_buf[2] * 1024); $this->sys->setIdeDevices($dev); } } } /* cleaning */ foreach ($this->sys->getIdeDevices() as $finddev) { if (strpos($finddev->getName(), ': ') !== false) $finddev->setName(substr(strstr($finddev->getName(), ': '), 2)); } } /** * Physical memory information and Swap Space information * * @return void */ protected function memory() { if (PSI_OS == 'FreeBSD' || PSI_OS == 'OpenBSD') { // vmstat on fbsd 4.4 or greater outputs kbytes not hw.pagesize // I should probably add some version checking here, but for now // we only support fbsd 4.4 $pagesize = 1024; } else { $pagesize = $this->grabkey('hw.pagesize'); } if (CommonFunctions::executeProgram('vmstat', '', $vmstat, PSI_DEBUG)) { $lines = preg_split("/\n/", $vmstat, -1, PREG_SPLIT_NO_EMPTY); $ar_buf = preg_split("/\s+/", trim($lines[2]), 19); if (PSI_OS == 'NetBSD' || PSI_OS == 'DragonFly') { $this->sys->setMemFree($ar_buf[4] * 1024); } else { $this->sys->setMemFree($ar_buf[4] * $pagesize); } $this->sys->setMemTotal($this->grabkey('hw.physmem')); $this->sys->setMemUsed($this->sys->getMemTotal() - $this->sys->getMemFree()); if (((PSI_OS == 'OpenBSD' || PSI_OS == 'NetBSD') && CommonFunctions::executeProgram('swapctl', '-l -k', $swapstat, PSI_DEBUG)) || CommonFunctions::executeProgram('swapinfo', '-k', $swapstat, PSI_DEBUG)) { $lines = preg_split("/\n/", $swapstat, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { $ar_buf = preg_split("/\s+/", $line, 6); if (($ar_buf[0] != 'Total') && ($ar_buf[0] != 'Device')) { $dev = new DiskDevice(); $dev->setMountPoint($ar_buf[0]); $dev->setName("SWAP"); $dev->setFsType('swap'); $dev->setTotal($ar_buf[1] * 1024); $dev->setUsed($ar_buf[2] * 1024); $dev->setFree($dev->getTotal() - $dev->getUsed()); $this->sys->setSwapDevices($dev); } } } } } /** * USB devices * get the ide device information out of dmesg * * @return void */ protected function usb() { foreach ($this->readdmesg() as $line) { // if (preg_match('/^(ugen[0-9\.]+): <(.*)> (.*) (.*)/', $line, $ar_buf)) { // $dev->setName($ar_buf[1].": ".$ar_buf[2]); if (preg_match('/^(u[a-z]+[0-9]+): <([^,]*)(.*)> on (usbus[0-9]+)/', $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName($ar_buf[2]); $this->sys->setUSBDevices($dev); } } } /** * filesystem information * * @return void */ protected function filesystems() { $arrResult = Parser::df(); foreach ($arrResult as $dev) { $this->sys->setDiskDevices($dev); } } /** * Distribution * * @return void */ protected function distro() { if (CommonFunctions::executeProgram('uname', '-s', $result, PSI_DEBUG)) { $this->sys->setDistribution($result); } } /** * get the information * * @see PSI_Interface_OS::build() * * @return Void */ public function build() { $this->distro(); $this->memory(); $this->ide(); $this->pci(); $this->cpuinfo(); $this->filesystems(); $this->kernel(); $this->loadavg(); $this->hostname(); $this->scsi(); $this->usb(); $this->_users(); } } phpsysinfo-3.2.5/includes/os/class.Darwin.inc.php000066400000000000000000000443111265516077000217770ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.Darwin.inc.php 638 2012-08-24 09:40:48Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * Darwin sysinfo class * get all the required information from Darwin system * information may be incomplete * * @category PHP * @package PSI Darwin OS class * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Darwin extends BSDCommon { /** * define the regexp for log parser */ /* public function __construct() { parent::__construct(); $this->error->addWarning("The Darwin version of phpSysInfo is a work in progress, some things currently don't work!"); $this->setCPURegExp1("/CPU: (.*) \((.*)-MHz (.*)\)/"); $this->setCPURegExp2("/(.*) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)/"); $this->setSCSIRegExp1("/^(.*): <(.*)> .*SCSI.*device/"); } */ /** * get a value from sysctl command * * @param string $key key of the value to get * * @return string */ protected function grabkey($key) { if (CommonFunctions::executeProgram('sysctl', $key, $s, PSI_DEBUG)) { $s = preg_replace('/'.$key.': /', '', $s); $s = preg_replace('/'.$key.' = /', '', $s); return $s; } else { return ''; } } /** * get a value from ioreg command * * @param string $key key of the value to get * * @return string */ private function _grabioreg($key) { if (CommonFunctions::executeProgram('ioreg', '-c "'.$key.'"', $s, PSI_DEBUG)) { /* delete newlines */ $s = preg_replace("/\s+/", " ", $s); /* new newlines */ $s = preg_replace("/[\|\t ]*\+\-o/", "\n", $s); /* combine duplicate whitespaces and some chars */ $s = preg_replace("/[\|\t ]+/", " ", $s); $lines = preg_split("/\n/", $s, -1, PREG_SPLIT_NO_EMPTY); $out = ""; foreach ($lines as $line) { if (preg_match('/^([^<]*) sys->setUptime(time() - $data); } else { /* kern.boottime= 1096732600 */ $this->sys->setUptime(time() - $a); } } } /** * get CPU information * * @return void */ protected function cpuinfo() { $dev = new CpuDevice(); if (CommonFunctions::executeProgram('hostinfo', '| grep "Processor type"', $buf, PSI_DEBUG)) { $dev->setModel(preg_replace('/Processor type: /', '', $buf)); $buf=$this->grabkey('hw.model'); if (!is_null($buf) && (trim($buf) != "")) { $this->sys->setMachine(trim($buf)); if (CommonFunctions::rfts(APP_ROOT.'/data/ModelTranslation.txt', $buffer)) { $buffer = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY); foreach ($buffer as $line) { $ar_buf = preg_split("/:/", $line, 3); if (trim($buf) === trim($ar_buf[0])) { $dev->setModel(trim($ar_buf[2])); $this->sys->setMachine($this->sys->getMachine().' - '.trim($ar_buf[1])); break; } } } } $buf=$this->grabkey('machdep.cpu.brand_string'); if (!is_null($buf) && (trim($buf) != "") && ((trim($buf) != "i486 (Intel 80486)") || ($dev->getModel() == ""))) { $dev->setModel(trim($buf)); } $buf=$this->grabkey('machdep.cpu.features'); if (!is_null($buf) && (trim($buf) != "")) { if (preg_match("/ VMX/", $buf)) { $dev->setVirt("vmx"); } elseif (preg_match("/ SVM/", $buf)) { $dev->setVirt("svm"); } } } $dev->setCpuSpeed(round($this->grabkey('hw.cpufrequency') / 1000000)); $dev->setBusSpeed(round($this->grabkey('hw.busfrequency') / 1000000)); $bufn=$this->grabkey('hw.cpufrequency_min'); $bufx=$this->grabkey('hw.cpufrequency_max'); if (!is_null($bufn) && (trim($bufn) != "") && !is_null($bufx) && (trim($bufx) != "") && ($bufn != $bufx)) { $dev->setCpuSpeedMin(round($bufn / 1000000)); $dev->setCpuSpeedMax(round($bufx / 1000000)); } $buf=$this->grabkey('hw.l2cachesize'); if (!is_null($buf) && (trim($buf) != "")) { $dev->setCache(round($buf)); } $ncpu = $this->grabkey('hw.ncpu'); if (is_null($ncpu) || (trim($ncpu) == "") || (!($ncpu >= 1))) $ncpu = 1; for ($ncpu ; $ncpu > 0 ; $ncpu--) { $this->sys->setCpus($dev); } } /** * get the pci device information out of ioreg * * @return void */ protected function pci() { if (!$arrResults = Parser::lspci(false)) { //no lspci port $s = $this->_grabioreg('IOPCIDevice'); $lines = preg_split("/\n/", $s, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { $dev = new HWDevice(); if (!preg_match('/"IOName" = "([^"]*)"/', $line, $ar_buf)) { $ar_buf = preg_split("/[\s@]+/", $line, 19); } if (preg_match('/"model" = setName(trim($ar_buf[1]). ": ".trim($ar_buf2[1])); } else { $dev->setName(trim($ar_buf[1])); } $this->sys->setPciDevices($dev); } } else { foreach ($arrResults as $dev) { $this->sys->setPciDevices($dev); } } } /** * get the ide device information out of ioreg * * @return void */ protected function ide() { $s = $this->_grabioreg('IOATABlockStorageDevice'); $lines = preg_split("/\n/", $s, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { $dev = new HWDevice(); if (!preg_match('/"Product Name"="([^"]*)"/', $line, $ar_buf)) $ar_buf = preg_split("/[\s@]+/", $line, 19); $dev->setName(trim($ar_buf[1])); $this->sys->setIdeDevices($dev); } $s = $this->_grabioreg('IOAHCIBlockStorageDevice'); $lines = preg_split("/\n/", $s, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { $dev = new HWDevice(); if (!preg_match('/"Product Name"="([^"]*)"/', $line, $ar_buf)) $ar_buf = preg_split("/[\s@]+/", $line, 19); $dev->setName(trim($ar_buf[1])); $this->sys->setIdeDevices($dev); } } /** * get the usb device information out of ioreg * * @return void */ protected function usb() { $s = $this->_grabioreg('IOUSBDevice'); $lines = preg_split("/\n/", $s, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { $dev = new HWDevice(); if (!preg_match('/"USB Product Name" = "([^"]*)"/', $line, $ar_buf)) $ar_buf = preg_split("/[\s@]+/", $line, 19); $dev->setName(trim($ar_buf[1])); $this->sys->setUsbDevices($dev); } } /** * get the scsi device information out of ioreg * * @return void */ protected function scsi() { $s = $this->_grabioreg('IOBlockStorageServices'); $lines = preg_split("/\n/", $s, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { $dev = new HWDevice(); if (!preg_match('/"Product Name"="([^"]*)"/', $line, $ar_buf)) $ar_buf = preg_split("/[\s@]+/", $line, 19); $dev->setName(trim($ar_buf[1])); $this->sys->setScsiDevices($dev); } } /** * get memory and swap information * * @return void */ protected function memory() { $s = $this->grabkey('hw.memsize'); if (CommonFunctions::executeProgram('vm_stat', '', $pstat, PSI_DEBUG)) { // calculate free memory from page sizes (each page = 4096) if (preg_match('/^Pages free:\s+(\S+)/m', $pstat, $free_buf)) { if (preg_match('/^Anonymous pages:\s+(\S+)/m', $pstat, $anon_buf) && preg_match('/^Pages wired down:\s+(\S+)/m', $pstat, $wire_buf) && preg_match('/^File-backed pages:\s+(\S+)/m', $pstat, $fileb_buf)) { // OS X 10.9 or never $this->sys->setMemFree($free_buf[1] * 4 * 1024); $this->sys->setMemApplication(($anon_buf[1]+$wire_buf[1]) * 4 * 1024); $this->sys->setMemCache($fileb_buf[1] * 4 * 1024); if (preg_match('/^Pages occupied by compressor:\s+(\S+)/m', $pstat, $compr_buf)) { $this->sys->setMemBuffer($compr_buf[1] * 4 * 1024); } } else { if (preg_match('/^Pages speculative:\s+(\S+)/m', $pstat, $spec_buf)) { $this->sys->setMemFree(($free_buf[1]+$spec_buf[1]) * 4 * 1024); } else { $this->sys->setMemFree($free_buf[1] * 4 * 1024); } $appMemory = 0; if (preg_match('/^Pages wired down:\s+(\S+)/m', $pstat, $wire_buf)) { $appMemory += $wire_buf[1] * 4 * 1024; } if (preg_match('/^Pages active:\s+(\S+)/m', $pstat, $active_buf)) { $appMemory += $active_buf[1] * 4 * 1024; } $this->sys->setMemApplication($appMemory); if (preg_match('/^Pages inactive:\s+(\S+)/m', $pstat, $inactive_buf)) { $this->sys->setMemCache($inactive_buf[1] * 4 * 1024); } } } else { $lines = preg_split("/\n/", $pstat, -1, PREG_SPLIT_NO_EMPTY); $ar_buf = preg_split("/\s+/", $lines[1], 19); $this->sys->setMemFree($ar_buf[2] * 4 * 1024); } $this->sys->setMemTotal($s); $this->sys->setMemUsed($this->sys->getMemTotal() - $this->sys->getMemFree()); if (CommonFunctions::executeProgram('sysctl', 'vm.swapusage | colrm 1 22', $swapBuff, PSI_DEBUG)) { $swap1 = preg_split('/M/', $swapBuff); $swap2 = preg_split('/=/', $swap1[1]); $swap3 = preg_split('/=/', $swap1[2]); $dev = new DiskDevice(); $dev->setName('SWAP'); $dev->setMountPoint('SWAP'); $dev->setFsType('swap'); $dev->setTotal($swap1[0] * 1024 * 1024); $dev->setUsed($swap2[1] * 1024 * 1024); $dev->setFree($swap3[1] * 1024 * 1024); $this->sys->setSwapDevices($dev); } } } /** * get the thunderbolt device information out of ioreg * * @return void */ protected function _tb() { $s = $this->_grabioreg('IOThunderboltPort'); $lines = preg_split("/\n/", $s, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { $dev = new HWDevice(); if (!preg_match('/"Description" = "([^"]*)"/', $line, $ar_buf)) $ar_buf = preg_split("/[\s@]+/", $line, 19); $dev->setName(trim($ar_buf[1])); $this->sys->setTbDevices($dev); } } /** * get network information * * @return void */ private function _network() { if (CommonFunctions::executeProgram('netstat', '-nbdi | cut -c1-24,42- | grep Link', $netstat, PSI_DEBUG)) { $lines = preg_split("/\n/", $netstat, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { $ar_buf = preg_split("/\s+/", $line, 10); if (!empty($ar_buf[0])) { $dev = new NetDevice(); $dev->setName($ar_buf[0]); $dev->setTxBytes($ar_buf[8]); $dev->setRxBytes($ar_buf[5]); $dev->setErrors($ar_buf[4] + $ar_buf[7]); if (isset($ar_buf[10])) { $dev->setDrops($ar_buf[10]); } if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS) && (CommonFunctions::executeProgram('ifconfig', $ar_buf[0].' 2>/dev/null', $bufr2, PSI_DEBUG))) { $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe2 as $buf2) { if (preg_match('/^\s+ether\s+(\S+)/i', $buf2, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').preg_replace('/:/', '-', strtoupper($ar_buf2[1]))); elseif (preg_match('/^\s+inet\s+(\S+)\s+netmask/i', $buf2, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1]); elseif ((preg_match('/^\s+inet6\s+([^\s%]+)\s+prefixlen/i', $buf2, $ar_buf2) || preg_match('/^\s+inet6\s+([^\s%]+)%\S+\s+prefixlen/i', $buf2, $ar_buf2)) && ($ar_buf2[1]!="::") && !preg_match('/^fe80::/i', $ar_buf2[1])) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').strtolower($ar_buf2[1])); elseif (preg_match('/^\s+media:\s+/i', $buf2) && preg_match('/[\(\s](\d+)(G*)base/i', $buf2, $ar_buf2)) { if (isset($ar_buf2[2]) && strtoupper($ar_buf2[2])=="G") { $unit = "G"; } else { $unit = "M"; } if (preg_match('/[<\s]([^\s<]+)-duplex/i', $buf2, $ar_buf3)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1].$unit.'b/s '.strtolower($ar_buf3[1])); else $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1].$unit.'b/s'); } } } $this->sys->setNetDevices($dev); } } } } /** * get icon name * * @return void */ protected function distro() { $this->sys->setDistributionIcon('Darwin.png'); if (!CommonFunctions::executeProgram('system_profiler', 'SPSoftwareDataType', $buffer, PSI_DEBUG)) { parent::distro(); } else { $arrBuff = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY); foreach ($arrBuff as $line) { $arrLine = preg_split("/:/", $line, -1, PREG_SPLIT_NO_EMPTY); if (trim($arrLine[0]) === "System Version") { $distro = trim($arrLine[1]); if (preg_match('/(^Mac OS)|(^OS X)/', $distro)) { $this->sys->setDistributionIcon('Apple.png'); if (preg_match('/((^Mac OS X Server)|(^Mac OS X)|(^OS X Server)|(^OS X)) (\d+\.\d+)/', $distro, $ver) && ($list = @parse_ini_file(APP_ROOT."/data/osnames.ini", true)) && isset($list['OS X'][$ver[6]])) { $distro.=' '.$list['OS X'][$ver[6]]; } } $this->sys->setDistribution($distro); return; } } } } /** * Processes * * @return void */ protected function _processes() { if (CommonFunctions::executeProgram('ps', 'aux', $bufr, PSI_DEBUG)) { $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); $processes['*'] = 0; foreach ($lines as $line) { if (preg_match("/^\S+\s+\d+\s+\S+\s+\S+\s+\d+\s+\d+\s+\S+\s+(\w)/", $line, $ar_buf)) { $processes['*']++; $state = $ar_buf[1]; if ($state == 'U') $state = 'D'; //linux format elseif ($state == 'I') $state = 'S'; elseif ($state == 'D') $state = 'd'; //invalid if (isset($processes[$state])) { $processes[$state]++; } else { $processes[$state] = 1; } } } if ($processes['*'] > 0) { $this->sys->setProcesses($processes); } } } /** * get the information * * @see PSI_Interface_OS::build() * * @return Void */ public function build() { parent::build(); $this->_uptime(); $this->_network(); $this->_processes(); $this->_tb(); } } phpsysinfo-3.2.5/includes/os/class.DragonFly.inc.php000066400000000000000000000111331265516077000224340ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.DragonFly.inc.php 287 2009-06-26 12:11:59Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * DragonFly sysinfo class * get all the required information from DragonFly system * * @category PHP * @package PSI DragonFly OS class * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class DragonFly extends BSDCommon { /** * define the regexp for log parser */ public function __construct() { parent::__construct(); $this->setCPURegExp1("/^cpu(.*)\, (.*) MHz/"); $this->setCPURegExp2("/^(.*) at scsibus.*: <(.*)> .*/"); $this->setSCSIRegExp2("/^(da[0-9]+): (.*)MB /"); $this->setPCIRegExp1("/(.*): <(.*)>(.*) (pci|legacypci)[0-9]+$/"); $this->setPCIRegExp2("/(.*): <(.*)>.* at [0-9\.]+$/"); } /** * UpTime * time the system is running * * @return void */ private function _uptime() { $a = $this->grab_key('kern.boottime'); preg_match("/sec = ([0-9]+)/", $a, $buf); $this->sys->setUptime(time() - $buf[1]); } /** * get network information * * @return array */ private function _network() { CommonFunctions::executeProgram('netstat', '-nbdi | cut -c1-25,44- | grep "^[a-z]*[0-9][ \t].*Link"', $netstat_b); CommonFunctions::executeProgram('netstat', '-ndi | cut -c1-25,44- | grep "^[a-z]*[0-9][ \t].*Link"', $netstat_n); $lines_b = preg_split("/\n/", $netstat_b, -1, PREG_SPLIT_NO_EMPTY); $lines_n = preg_split("/\n/", $netstat_n, -1, PREG_SPLIT_NO_EMPTY); for ($i = 0, $max = sizeof($lines_b); $i < $max; $i++) { $ar_buf_b = preg_split("/\s+/", $lines_b[$i]); $ar_buf_n = preg_split("/\s+/", $lines_n[$i]); if (!empty($ar_buf_b[0]) && (!empty($ar_buf_n[5]) || ($ar_buf_n[5] === "0"))) { $dev = new NetDevice(); $dev->setName($ar_buf_b[0]); $dev->setTxBytes($ar_buf_b[8]); $dev->setRxBytes($ar_buf_b[5]); $dev->setErrors($ar_buf_n[4] + $ar_buf_n[6]); $dev->setDrops($ar_buf_n[8]); $this->sys->setNetDevices($dev); } } } /** * get the ide information * * @return array */ protected function ide() { foreach ($this->readdmesg() as $line) { if (preg_match('/^(.*): (.*) <(.*)> at (ata[0-9]+\-(.*)) (.*)/', $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName($ar_buf[1]); if (!preg_match("/^acd[0-9]+(.*)/", $ar_buf[1])) { $dev->setCapacity($ar_buf[2] * 1024); } $this->sys->setIdeDevices($dev); } } } /** * get icon name * * @return void */ private function _distroicon() { $this->sys->setDistributionIcon('DragonFly.png'); } /** * Processes * * @return void */ protected function _processes() { if (CommonFunctions::executeProgram('ps', 'aux', $bufr, PSI_DEBUG)) { $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); $processes['*'] = 0; foreach ($lines as $line) { if (preg_match("/^\S+\s+\d+\s+\S+\s+\S+\s+\d+\s+\d+\s+\S+\s+(\w)/", $line, $ar_buf)) { $processes['*']++; $state = $ar_buf[1]; if ($state == 'I') $state = 'S'; //linux format if (isset($processes[$state])) { $processes[$state]++; } else { $processes[$state] = 1; } } } if ($processes['*'] > 0) { $this->sys->setProcesses($processes); } } } /** * get the information * * @see BSDCommon::build() * * @return Void */ public function build() { parent::build(); $this->_distroicon(); $this->_network(); $this->_uptime(); $this->_processes(); } } phpsysinfo-3.2.5/includes/os/class.FreeBSD.inc.php000066400000000000000000000203401265516077000217610ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.FreeBSD.inc.php 696 2012-09-09 11:24:04Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * FreeBSD sysinfo class * get all the required information from FreeBSD system * * @category PHP * @package PSI FreeBSD OS class * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class FreeBSD extends BSDCommon { /** * define the regexp for log parser */ public function __construct() { parent::__construct(); $this->setCPURegExp1("/CPU: (.*) \((.*)-MHz (.*)\)/"); $this->setCPURegExp2("/(.*) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)/"); $this->setSCSIRegExp1("/^(.*): <(.*)> .*SCSI.*device/"); $this->setSCSIRegExp2("/^(da[0-9]+): (.*)MB /"); $this->setPCIRegExp1("/(.*): <(.*)>(.*) pci[0-9]+$/"); $this->setPCIRegExp2("/(.*): <(.*)>.* at [.0-9]+ irq/"); } /** * UpTime * time the system is running * * @return void */ private function _uptime() { $s = preg_split('/ /', $this->grabkey('kern.boottime')); $a = preg_replace('/,/', '', $s[3]); $this->sys->setUptime(time() - $a); } /** * get network information * * @return void */ private function _network() { $dev = null; if (CommonFunctions::executeProgram('netstat', '-nibd', $netstat, PSI_DEBUG)) { $lines = preg_split("/\n/", $netstat, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { $ar_buf = preg_split("/\s+/", $line); if (!empty($ar_buf[0])) { if (preg_match('/^setName($ar_buf[0]); if (strlen($ar_buf[3]) < 17) { /* no Address */ if (isset($ar_buf[11]) && (trim($ar_buf[11]) != '')) { /* Idrop column exist*/ $dev->setTxBytes($ar_buf[9]); $dev->setRxBytes($ar_buf[6]); $dev->setErrors($ar_buf[4] + $ar_buf[8]); $dev->setDrops($ar_buf[11] + $ar_buf[5]); } else { $dev->setTxBytes($ar_buf[8]); $dev->setRxBytes($ar_buf[5]); $dev->setErrors($ar_buf[4] + $ar_buf[7]); $dev->setDrops($ar_buf[10]); } } else { if (isset($ar_buf[12]) && (trim($ar_buf[12]) != '')) { /* Idrop column exist*/ $dev->setTxBytes($ar_buf[10]); $dev->setRxBytes($ar_buf[7]); $dev->setErrors($ar_buf[5] + $ar_buf[9]); $dev->setDrops($ar_buf[12] + $ar_buf[6]); } else { $dev->setTxBytes($ar_buf[9]); $dev->setRxBytes($ar_buf[6]); $dev->setErrors($ar_buf[5] + $ar_buf[8]); $dev->setDrops($ar_buf[11]); } } if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS) && (CommonFunctions::executeProgram('ifconfig', $ar_buf[0].' 2>/dev/null', $bufr2, PSI_DEBUG))) { $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe2 as $buf2) { if (preg_match('/^\s+ether\s+(\S+)/i', $buf2, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').preg_replace('/:/', '-', strtoupper($ar_buf2[1]))); elseif (preg_match('/^\s+inet\s+(\S+)\s+netmask/i', $buf2, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1]); elseif ((preg_match('/^\s+inet6\s+([^\s%]+)\s+prefixlen/i', $buf2, $ar_buf2) || preg_match('/^\s+inet6\s+([^\s%]+)%\S+\s+prefixlen/i', $buf2, $ar_buf2)) && ($ar_buf2[1]!="::") && !preg_match('/^fe80::/i', $ar_buf2[1])) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').strtolower($ar_buf2[1])); elseif (preg_match('/^\s+media:\s+/i', $buf2) && preg_match('/[\(\s](\d+)(G*)base/i', $buf2, $ar_buf2)) { if (isset($ar_buf2[2]) && strtoupper($ar_buf2[2])=="G") { $unit = "G"; } else { $unit = "M"; } if (preg_match('/[<\s]([^\s<]+)-duplex/i', $buf2, $ar_buf3)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1].$unit.'b/s '.strtolower($ar_buf3[1])); else $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1].$unit.'b/s'); } } } $this->sys->setNetDevices($dev); } } } } } /** * get icon name and distro extended check * * @return void */ private function _distroicon() { if (extension_loaded('pfSense') && CommonFunctions::rfts('/etc/version', $version, 1, 4096, false) && (trim($version) != '')) { // pfSense detection $this->sys->setDistribution('pfSense '. trim($version)); $this->sys->setDistributionIcon('pfSense.png'); } else { $this->sys->setDistributionIcon('FreeBSD.png'); } } /** * extend the memory information with additional values * * @return void */ private function _memoryadditional() { $pagesize = $this->grabkey("hw.pagesize"); $this->sys->setMemCache($this->grabkey("vm.stats.vm.v_cache_count") * $pagesize); $this->sys->setMemApplication(($this->grabkey("vm.stats.vm.v_active_count") + $this->grabkey("vm.stats.vm.v_wire_count")) * $pagesize); $this->sys->setMemBuffer($this->sys->getMemUsed() - $this->sys->getMemApplication() - $this->sys->getMemCache()); } /** * Processes * * @return void */ protected function _processes() { if (CommonFunctions::executeProgram('ps', 'aux', $bufr, PSI_DEBUG)) { $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); $processes['*'] = 0; foreach ($lines as $line) { if (preg_match("/^\S+\s+\d+\s+\S+\s+\S+\s+\d+\s+\d+\s+\S+\s+(\w)/", $line, $ar_buf)) { $processes['*']++; $state = $ar_buf[1]; if ($state == 'L') $state = 'D'; //linux format elseif ($state == 'I') $state = 'S'; if (isset($processes[$state])) { $processes[$state]++; } else { $processes[$state] = 1; } } } if ($processes['*'] > 0) { $this->sys->setProcesses($processes); } } } /** * get the information * * @see BSDCommon::build() * * @return Void */ public function build() { parent::build(); $this->_memoryadditional(); $this->_distroicon(); $this->_network(); $this->_uptime(); $this->_processes(); } } phpsysinfo-3.2.5/includes/os/class.HPUX.inc.php000066400000000000000000000301221265516077000213320ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.HPUX.inc.php 596 2012-07-05 19:37:48Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * HP-UX sysinfo class * get all the required information from HP-UX system * * @category PHP * @package PSI HPUX OS class * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class HPUX extends OS { /** * Virtual Host Name * * @return void */ private function _hostname() { if (PSI_USE_VHOST === true) { $this->sys->setHostname(getenv('SERVER_NAME')); } else { if (CommonFunctions::executeProgram('hostname', '', $ret)) { $this->sys->setHostname($ret); } } } /** * HP-UX Version * * @return void */ private function _kernel() { if (CommonFunctions::executeProgram('uname', '-srvm', $ret)) { $this->sys->setKernel($ret); } } /** * UpTime * time the system is running * * @return void */ private function _uptime() { if (CommonFunctions::executeProgram('uptime', '', $buf)) { if (preg_match("/up (\d+) days,\s*(\d+):(\d+),/", $buf, $ar_buf)) { $min = $ar_buf[3]; $hours = $ar_buf[2]; $days = $ar_buf[1]; $this->sys->setUptime($days * 86400 + $hours * 3600 + $min * 60); } } } /** * Processor Load * optionally create a loadbar * * @return void */ private function _loadavg() { if (CommonFunctions::executeProgram('uptime', '', $buf)) { if (preg_match("/average: (.*), (.*), (.*)$/", $buf, $ar_buf)) { $this->sys->setLoad($ar_buf[1].' '.$ar_buf[2].' '.$ar_buf[3]); } } } /** * CPU information * All of the tags here are highly architecture dependant * * @return void */ private function _cpuinfo() { if (CommonFunctions::rfts('/proc/cpuinfo', $bufr)) { $processors = preg_split('/\s?\n\s?\n/', trim($bufr)); foreach ($processors as $processor) { $dev = new CpuDevice(); $details = preg_split("/\n/", $processor, -1, PREG_SPLIT_NO_EMPTY); foreach ($details as $detail) { $arrBuff = preg_split('/\s+:\s+/', trim($detail)); if (count($arrBuff) == 2) { switch (strtolower($arrBuff[0])) { case 'model name': case 'cpu': $dev->setModel($arrBuff[1]); break; case 'cpu mhz': case 'clock': $dev->setCpuSpeed($arrBuff[1]); break; case 'cycle frequency [hz]': $dev->setCpuSpeed($arrBuff[1] / 1000000); break; case 'cpu0clktck': $dev->setCpuSpeed(hexdec($arrBuff[1]) / 1000000); // Linux sparc64 break; case 'l2 cache': case 'cache size': $dev->setCache(preg_replace("/[a-zA-Z]/", "", $arrBuff[1]) * 1024); break; case 'bogomips': case 'cpu0bogo': $dev->setBogomips($arrBuff[1]); break; } } } } } } /** * PCI devices * * @return void */ private function _pci() { if (CommonFunctions::rfts('/proc/pci', $bufr)) { $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe as $buf) { if (preg_match('/^\s*Bus\s/', $buf)) { $device = true; continue; } if ($device) { $dev = new HWDevice(); $dev->setName(preg_replace('/\([^\)]+\)\.$/', '', trim($buf))); $this->sys->setPciDevices($dev); /* list($key, $value) = preg_split('/: /', $buf, 2); if (!preg_match('/bridge/i', $key) && !preg_match('/USB/i', $key)) { $dev = new HWDevice(); $dev->setName(preg_replace('/\([^\)]+\)\.$/', '', trim($value))); $this->sys->setPciDevices($dev); } */ $device = false; } } } } /** * IDE devices * * @return void */ private function _ide() { $bufd = CommonFunctions::gdc('/proc/ide', false); foreach ($bufd as $file) { if (preg_match('/^hd/', $file)) { $dev = new HWDevice(); $dev->setName(trim($file)); if (CommonFunctions::rfts("/proc/ide/".$file."/media", $buf, 1)) { if (trim($buf) == 'disk') { if (CommonFunctions::rfts("/proc/ide/".$file."/capacity", $buf, 1, 4096, false)) { $dev->setCapacity(trim($buf) * 512 / 1024); } } } $this->sys->setIdeDevices($dev); } } } /** * SCSI devices * * @return void */ private function _scsi() { $get_type = false; if (CommonFunctions::rfts('/proc/scsi/scsi', $bufr, 0, 4096, PSI_DEBUG)) { $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe as $buf) { if (preg_match('/Vendor: (.*) Model: (.*) Rev: (.*)/i', $buf, $dev)) { $get_type = true; continue; } if ($get_type) { preg_match('/Type:\s+(\S+)/i', $buf, $dev_type); $dev = new HWDevice(); $dev->setName($dev[1].' '.$dev[2].' ('.$dev_type[1].')'); $this->sys->setScsiDevices($dev); $get_type = false; } } } } /** * USB devices * * @return void */ private function _usb() { if (CommonFunctions::rfts('/proc/bus/usb/devices', $bufr, 0, 4096, false)) { $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe as $buf) { if (preg_match('/^T/', $buf)) { $devnum += 1; $results[$devnum] = ""; } elseif (preg_match('/^S:/', $buf)) { list($key, $value) = preg_split('/: /', $buf, 2); list($key, $value2) = preg_split('/=/', $value, 2); if (trim($key) != "SerialNumber") { $results[$devnum] .= " ".trim($value2); } } } foreach ($results as $var) { $dev = new HWDevice(); $dev->setName($var); $this->sys->setUsbDevices($dev); } } } /** * Network devices * includes also rx/tx bytes * * @return void */ private function _network() { if (CommonFunctions::executeProgram('netstat', '-ni | tail -n +2', $netstat)) { $lines = preg_split("/\n/", $netstat, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { $ar_buf = preg_split("/\s+/", $line); if (! empty($ar_buf[0]) && ! empty($ar_buf[3])) { $dev = new NetDevice(); $dev->setName($ar_buf[0]); $dev->setRxBytes($ar_buf[4]); $dev->setTxBytes($ar_buf[6]); $dev->setErrors($ar_buf[5] + $ar_buf[7]); $dev->setDrops($ar_buf[8]); $this->sys->setNetDevices($dev); } } } } /** * Physical memory information and Swap Space information * * @return void */ private function _memory() { if (CommonFunctions::rfts('/proc/meminfo', $bufr)) { $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe as $buf) { if (preg_match('/Mem:\s+(.*)$/', $buf, $ar_buf)) { $ar_buf = preg_split('/\s+/', $ar_buf[1], 6); $this->sys->setMemTotal($ar_buf[0]); $this->sys->setMemUsed($ar_buf[1]); $this->sys->setMemFree($ar_buf[2]); $this->sys->setMemApplication($ar_buf[3]); $this->sys->setMemBuffer($ar_buf[4]); $this->sys->setMemCache($ar_buf[5]); } // Get info on individual swap files if (CommonFunctions::rfts('/proc/swaps', $swaps)) { $swapdevs = preg_split("/\n/", $swaps, -1, PREG_SPLIT_NO_EMPTY); for ($i = 1, $max = (sizeof($swapdevs) - 1); $i < $max; $i++) { $ar_buf = preg_split('/\s+/', $swapdevs[$i], 6); $dev = new DiskDevice(); $dev->setMountPoint($ar_buf[0]); $dev->setName("SWAP"); $dev->setFsType('swap'); $dev->setTotal($ar_buf[2] * 1024); $dev->setUsed($ar_buf[3] * 1024); $dev->setFree($dev->getTotal() - $dev->getUsed()); $this->sys->setSwapDevices($dev); } } } } } /** * filesystem information * * @return void */ private function _filesystems() { if (CommonFunctions::executeProgram('df', '-kP', $df, PSI_DEBUG)) { $mounts = preg_split("/\n/", $df, -1, PREG_SPLIT_NO_EMPTY); if (CommonFunctions::executeProgram('mount', '-v', $s, PSI_DEBUG)) { $lines = preg_split("/\n/", $s, -1, PREG_SPLIT_NO_EMPTY); while (list(, $line) = each($lines)) { $a = preg_split('/ /', $line, -1, PREG_SPLIT_NO_EMPTY); $fsdev[$a[0]] = $a[4]; } } foreach ($mounts as $mount) { $ar_buf = preg_split("/\s+/", $mount, 6); $dev = new DiskDevice(); $dev->setName($ar_buf[0]); $dev->setTotal($ar_buf[1] * 1024); $dev->setUsed($ar_buf[2] * 1024); $dev->setFree($ar_buf[3] * 1024); $dev->setMountPoint($ar_buf[5]); if (isset($fsdev[$ar_buf[0]])) { $dev->setFsType($fsdev[$ar_buf[0]]); } $this->sys->setDiskDevices($dev); } } } /** * Distribution * * @return void */ private function _distro() { $this->sys->setDistribution('HP-UX'); $this->sys->setDistributionIcon('HPUX.png'); } /** * get the information * * @see PSI_Interface_OS::build() * * @return Void */ public function build() { $this->_distro(); $this->_hostname(); $this->_kernel(); $this->_uptime(); $this->_users(); $this->_loadavg(); $this->_cpuinfo(); $this->_pci(); $this->_ide(); $this->_scsi(); $this->_usb(); $this->_network(); $this->_memory(); $this->_filesystems(); } } phpsysinfo-3.2.5/includes/os/class.Haiku.inc.php000066400000000000000000000322311265516077000216120ustar00rootroot00000000000000 * @copyright 2012 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.Haiku.inc.php 687 2012-09-06 20:54:49Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * Haiku sysinfo class * get all the required information from Haiku system * * @category PHP * @package PSI Haiku OS class * @author Mieczyslaw Nalewaj * @copyright 2012 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Haiku extends OS { /** * call parent constructor */ public function __construct() { parent::__construct(); } /** * get the cpu information * * @return array */ protected function _cpuinfo() { if (CommonFunctions::executeProgram('sysinfo', '-cpu', $bufr, PSI_DEBUG)) { $cpus = preg_split("/\nCPU #\d+/", $bufr, -1, PREG_SPLIT_NO_EMPTY); $cpuspeed = ""; foreach ($cpus as $cpu) { if (preg_match("/^.*running at (\d+)MHz/", $cpu, $ar_buf)) { $cpuspeed = $ar_buf[1]; } elseif (preg_match("/^: \"(.*)\"/", $cpu, $ar_buf)) { $dev = new CpuDevice(); $dev->setModel($ar_buf[1]); $arrLines = preg_split("/\n/", $cpu, -1, PREG_SPLIT_NO_EMPTY); foreach ($arrLines as $Line) { if (preg_match("/^\s+Data TLB:\s+(.*)K-byte/", $Line, $Line_buf)) { $dev->setCache(max($Line_buf[1]*1024, $dev->getCache())); } elseif (preg_match("/^\s+Data TLB:\s+(.*)M-byte/", $Line, $Line_buf)) { $dev->setCache(max($Line_buf[1]*1024*1024, $dev->getCache())); } elseif (preg_match("/^\s+Data TLB:\s+(.*)G-byte/", $Line, $Line_buf)) { $dev->setCache(max($Line_buf[1]*1024*1024*1024, $dev->getCache())); } elseif (preg_match("/\s+VMX/", $Line, $Line_buf)) { $dev->setVirt("vmx"); } elseif (preg_match("/\s+SVM/", $Line, $Line_buf)) { $dev->setVirt("svm"); } } if ($cpuspeed != "")$dev->setCpuSpeed($cpuspeed); $this->sys->setCpus($dev); //echo ">>>>>".$cpu; } } } } /** * PCI devices * get the pci device information * * @return void */ protected function _pci() { if (CommonFunctions::executeProgram('listdev', '', $bufr, PSI_DEBUG)) { // $devices = preg_split("/^device |\ndevice /", $bufr, -1, PREG_SPLIT_NO_EMPTY); $devices = preg_split("/^device /m", $bufr, -1, PREG_SPLIT_NO_EMPTY); foreach ($devices as $device) { $ar_buf = preg_split("/\n/", $device); if (count($ar_buf) >= 3) { if (preg_match("/^([^\(\[\n]*)/", $device, $ar_buf2)) { if (preg_match("/^[^\(]*\((.*)\)/", $device, $ar_buf3)) { $ar_buf2[1] = $ar_buf3[1]; } $name = trim($ar_buf2[1]).": "; if (preg_match("/^\s+vendor\s+[0-9a-fA-F]{4}:\s+(.*)/", $ar_buf[1], $ar_buf3)) { $name .=$ar_buf3[1]." "; } if (preg_match("/^\s+device\s+[0-9a-fA-F]{4}:\s+(.*)/", $ar_buf[2], $ar_buf3)) { $name .=$ar_buf3[1]." "; } $dev = new HWDevice(); $dev->setName(trim($name)); $this->sys->setPciDevices($dev); } } } } } /** * USB devices * get the usb device information * * @return void */ protected function _usb() { if (CommonFunctions::executeProgram('listusb', '', $bufr, PSI_DEBUG)) { $devices = preg_split("/\n/", $bufr); foreach ($devices as $device) { if (preg_match("/^\S+\s+\S+\s+\"(.*)\"\s+\"(.*)\"/", $device, $ar_buf)) { $dev = new HWDevice(); $dev->setName(trim($ar_buf[1]." ".$ar_buf[2])); $this->sys->setUSBDevices($dev); } } } } /** * Haiku Version * * @return void */ private function _kernel() { if (CommonFunctions::executeProgram('uname', '-rvm', $ret)) { $this->sys->setKernel($ret); } } /** * Distribution * * @return void */ protected function _distro() { if (CommonFunctions::executeProgram('uname', '-sr', $ret)) $this->sys->setDistribution($ret); else $this->sys->setDistribution('Haiku'); $this->sys->setDistributionIcon('Haiku.png'); } /** * UpTime * time the system is running * * @return void */ private function _uptime() { if (CommonFunctions::executeProgram('uptime', '-u', $buf)) { if (preg_match("/^up (\d+) minute[s]?/", $buf, $ar_buf)) { $min = $ar_buf[1]; $this->sys->setUptime($min * 60); } elseif (preg_match("/^up (\d+) hour[s]?, (\d+) minute[s]?/", $buf, $ar_buf)) { $min = $ar_buf[2]; $hours = $ar_buf[1]; $this->sys->setUptime($hours * 3600 + $min * 60); } elseif (preg_match("/^up (\d+) day[s]?, (\d+) hour[s]?, (\d+) minute[s]?/", $buf, $ar_buf)) { $min = $ar_buf[3]; $hours = $ar_buf[2]; $days = $ar_buf[1]; $this->sys->setUptime($days * 86400 + $hours * 3600 + $min * 60); } } } /** * Processor Load * optionally create a loadbar * * @return void */ private function _loadavg() { if (CommonFunctions::executeProgram('top', '-n 1 -i 1', $buf)) { if (preg_match("/\s+(\S+)%\s+TOTAL\s+\(\S+%\s+idle time/", $buf, $ar_buf)) { $this->sys->setLoad($ar_buf[1]); if (PSI_LOAD_BAR) { $this->sys->setLoadPercent(round($ar_buf[1])); } } } } /** * Number of Users * * @return void */ protected function _users() { $this->sys->setUsers(1); } /** * Virtual Host Name * * @return void */ private function _hostname() { if (PSI_USE_VHOST === true) { $this->sys->setHostname(getenv('SERVER_NAME')); } else { if (CommonFunctions::executeProgram('uname', '-n', $result, PSI_DEBUG)) { $ip = gethostbyname($result); if ($ip != $result) { $this->sys->setHostname(gethostbyaddr($ip)); } } } } /** * Physical memory information and Swap Space information * * @return void */ private function _memory() { if (CommonFunctions::executeProgram('sysinfo', '-mem', $bufr, PSI_DEBUG)) { if (preg_match("/(.*)bytes free\s+\(used\/max\s+(.*)\s+\/\s+(.*)\)\s*\n\s+\(cached\s+(.*)\)/", $bufr, $ar_buf)) { $this->sys->setMemTotal($ar_buf[3]); $this->sys->setMemFree($ar_buf[1]); $this->sys->setMemCache($ar_buf[4]); $this->sys->setMemUsed($ar_buf[2]); } } if (CommonFunctions::executeProgram('vmstat', '', $bufr, PSI_DEBUG)) { if (preg_match("/max swap space:\s+(.*)\nfree swap space:\s+(.*)\n/", $bufr, $ar_buf)) { if ($ar_buf[1]>0) { $dev = new DiskDevice(); $dev->setMountPoint("/boot/common/var/swap"); $dev->setName("SWAP"); $dev->setTotal($ar_buf[1]); $dev->setFree($ar_buf[2]); $dev->setUSed($ar_buf[1]-$ar_buf[2]); $this->sys->setSwapDevices($dev); } } } } /** * filesystem information * * @return void */ private function _filesystems() { if (CommonFunctions::executeProgram('df', '-b', $df, PSI_DEBUG)) { $df = preg_split("/\n/", $df, -1, PREG_SPLIT_NO_EMPTY); foreach ($df as $df_line) { $ar_buf = preg_split("/\s+/", $df_line); if ((substr($df_line, 0, 1) == "/") && (count($ar_buf) == 6)) { $dev = new DiskDevice(); $dev->setMountPoint($ar_buf[0]); $dev->setName($ar_buf[5]); $dev->setFsType($ar_buf[1]); $dev->setOptions($ar_buf[4]); $dev->setTotal($ar_buf[2] * 1024); $dev->setFree($ar_buf[3] * 1024); $dev->setUsed($dev->getTotal() - $dev->getFree()); $this->sys->setDiskDevices($dev); } } } } /** * network information * * @return void */ private function _network() { if (CommonFunctions::executeProgram('ifconfig', '', $bufr, PSI_DEBUG)) { $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); $was = false; foreach ($lines as $line) { if (preg_match("/^(\S+)/", $line, $ar_buf)) { if ($was) { $dev->setErrors($errors); $dev->setDrops($drops); $this->sys->setNetDevices($dev); } $errors = 0; $drops = 0; $dev = new NetDevice(); $dev->setName($ar_buf[1]); $was = true; } else { if ($was) { if (preg_match('/\sReceive:\s\d+\spackets,\s(\d+)\serrors,\s(\d+)\sbytes,\s\d+\smcasts,\s(\d+)\sdropped/i', $line, $ar_buf2)) { $errors +=$ar_buf2[1]; $drops +=$ar_buf2[3]; $dev->setRxBytes($ar_buf2[2]); } elseif (preg_match('/\sTransmit:\s\d+\spackets,\s(\d+)\serrors,\s(\d+)\sbytes,\s\d+\smcasts,\s(\d+)\sdropped/i', $line, $ar_buf2)) { $errors +=$ar_buf2[1]; $drops +=$ar_buf2[3]; $dev->setTxBytes($ar_buf2[2]); } if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) { if (preg_match('/\sEthernet,\s+Address:\s(\S*)/i', $line, $ar_buf2)) $dev->setInfo(preg_replace('/:/', '-', strtoupper($ar_buf2[1]))); elseif (preg_match('/^\s+inet\saddr:\s(\S*),/i', $line, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1]); elseif (preg_match('/^\s+inet6\saddr:\s(\S*),/i', $line, $ar_buf2) && ($ar_buf2[1]!="::") && !preg_match('/^fe80::/i', $ar_buf2[1])) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').strtolower($ar_buf2[1])); } } } } if ($was) { $dev->setErrors($errors); $dev->setDrops($drops); $this->sys->setNetDevices($dev); } } } /** * Processes * * @return void */ protected function _processes() { if (CommonFunctions::executeProgram('ps', '', $bufr, PSI_DEBUG)) { $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); $processes['*'] = 0; foreach ($lines as $line) { if (preg_match("/^(kernel_team|\/)/", $line, $ar_buf)) { $processes['*']++; } } if ($processes['*'] > 0) { $processes[' '] = $processes['*']; $this->sys->setProcesses($processes); } } } /** * get the information * * @return Void */ public function build() { $this->error->addError("WARN", "The Haiku version of phpSysInfo is a work in progress, some things currently don't work"); $this->_distro(); $this->_hostname(); $this->_kernel(); $this->_uptime(); $this->_users(); $this->_loadavg(); $this->_pci(); $this->_usb(); $this->_cpuinfo(); $this->_memory(); $this->_filesystems(); $this->_network(); $this->_processes(); } } phpsysinfo-3.2.5/includes/os/class.Linux.inc.php000066400000000000000000001727351265516077000216660ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.Linux.inc.php 712 2012-12-05 14:09:18Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * Linux sysinfo class * get all the required information from Linux system * * @category PHP * @package PSI Linux OS class * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Linux extends OS { /** * Assoc array of all CPUs loads. */ protected $_cpu_loads; /** * call parent constructor */ public function __construct() { parent::__construct(); } /** * Machine * * @return void */ private function _machine() { if ((CommonFunctions::rfts('/var/log/dmesg', $result, 0, 4096, false) && preg_match('/^[\s\[\]\.\d]*DMI:\s*(.*)/m', $result, $ar_buf)) ||(CommonFunctions::executeProgram('dmesg', '', $result, false) && preg_match('/^[\s\[\]\.\d]*DMI:\s*(.*)/m', $result, $ar_buf))) { $this->sys->setMachine(trim($ar_buf[1])); } else { //data from /sys/devices/virtual/dmi/id/ $machine = ""; $product = ""; $board = ""; $bios = ""; if (CommonFunctions::rfts('/sys/devices/virtual/dmi/id/board_vendor', $buf, 1, 4096, false) && (trim($buf)!="")) { $machine = trim($buf); } if (CommonFunctions::rfts('/sys/devices/virtual/dmi/id/product_name', $buf, 1, 4096, false) && (trim($buf)!="")) { $product = trim($buf); } if (CommonFunctions::rfts('/sys/devices/virtual/dmi/id/board_name', $buf, 1, 4096, false) && (trim($buf)!="")) { $board = trim($buf); } if (CommonFunctions::rfts('/sys/devices/virtual/dmi/id/bios_version', $buf, 1, 4096, false) && (trim($buf)!="")) { $bios = trim($buf); } if (CommonFunctions::rfts('/sys/devices/virtual/dmi/id/bios_date', $buf, 1, 4096, false) && (trim($buf)!="")) { $bios = trim($bios." ".trim($buf)); } if ($product != "") { $machine .= " ".$product; } if ($board != "") { $machine .= "/".$board; } if ($bios != "") { $machine .= ", BIOS ".$bios; } if ($machine != "") { $this->sys->setMachine(trim($machine)); } elseif (CommonFunctions::fileexists($filename="/etc/config/uLinux.conf") // QNAP detection && CommonFunctions::rfts($filename, $buf, 0, 4096, false) && preg_match("/^Rsync\sModel\s*=\s*QNAP/m", $buf) && CommonFunctions::fileexists($filename="/etc/platform.conf") // Platform detection && CommonFunctions::rfts($filename, $buf, 0, 4096, false) && preg_match("/^DISPLAY_NAME\s*=\s*(\S+)/m", $buf, $mach_buf) && ($mach_buf[1]!=="")) { $this->sys->setMachine("QNAP ".$mach_buf[1]); } } } /** * Hostname * * @return void */ protected function _hostname() { if (PSI_USE_VHOST === true) { $this->sys->setHostname(getenv('SERVER_NAME')); } else { if (CommonFunctions::rfts('/proc/sys/kernel/hostname', $result, 1)) { $result = trim($result); $ip = gethostbyname($result); if ($ip != $result) { $this->sys->setHostname(gethostbyaddr($ip)); } } } } /** * Kernel Version * * @return void */ private function _kernel() { $result = ""; if (CommonFunctions::executeProgram($uname="uptrack-uname", '-r', $strBuf, false) || // show effective kernel if ksplice uptrack is installed CommonFunctions::executeProgram($uname="uname", '-r', $strBuf, PSI_DEBUG)) { $result = $strBuf; if (CommonFunctions::executeProgram($uname, '-v', $strBuf, PSI_DEBUG)) { if (preg_match('/SMP/', $strBuf)) { $result .= ' (SMP)'; } } if (CommonFunctions::executeProgram($uname, '-m', $strBuf, PSI_DEBUG)) { $result .= ' '.$strBuf; } } elseif (CommonFunctions::rfts('/proc/version', $strBuf, 1) && preg_match('/version (.*?) /', $strBuf, $ar_buf)) { $result = $ar_buf[1]; if (preg_match('/SMP/', $strBuf)) { $result .= ' (SMP)'; } } if ($result != "") { if (CommonFunctions::rfts('/proc/self/cgroup', $strBuf2, 0, 4096, false)) { if (preg_match('/:\/lxc\//m', $strBuf2)) { $result .= ' [lxc]'; } elseif (preg_match('/:\/docker\//m', $strBuf2)) { $result .= ' [docker]'; } elseif (preg_match('/:\/system\.slice\/docker\-/m', $strBuf2)) { $result .= ' [docker]'; } } $this->sys->setKernel($result); } } /** * UpTime * time the system is running * * @return void */ protected function _uptime() { CommonFunctions::rfts('/proc/uptime', $buf, 1); $ar_buf = preg_split('/ /', $buf); $this->sys->setUptime(trim($ar_buf[0])); } /** * Processor Load * optionally create a loadbar * * @return void */ protected function _loadavg() { if (CommonFunctions::rfts('/proc/loadavg', $buf)) { $result = preg_split("/\s/", $buf, 4); // don't need the extra values, only first three unset($result[3]); $this->sys->setLoad(implode(' ', $result)); } if (PSI_LOAD_BAR) { $this->sys->setLoadPercent($this->_parseProcStat('cpu')); } } /** * fill the load for a individual cpu, through parsing /proc/stat for the specified cpu * * @param String $cpuline cpu for which load should be meassured * * @return Integer */ protected function _parseProcStat($cpuline) { if (is_null($this->_cpu_loads)) { $this->_cpu_loads = array(); if (CommonFunctions::rfts('/proc/stat', $buf)) { if (preg_match_all('/^(cpu[0-9]*) (.*)/m', $buf, $matches, PREG_SET_ORDER)) { foreach ($matches as $line) { $cpu = $line[1]; $buf2 = $line[2]; $this->_cpu_loads[$cpu] = array(); $ab = 0; $ac = 0; $ad = 0; $ae = 0; sscanf($buf2, "%Ld %Ld %Ld %Ld", $ab, $ac, $ad, $ae); $this->_cpu_loads[$cpu]['load'] = $ab + $ac + $ad; // cpu.user + cpu.sys $this->_cpu_loads[$cpu]['total'] = $ab + $ac + $ad + $ae; // cpu.total } } } // we need a second value, wait 1 second befor getting (< 1 second no good value will occour) if (PSI_LOAD_BAR) { sleep(1); } if (CommonFunctions::rfts('/proc/stat', $buf)) { if (preg_match_all('/^(cpu[0-9]*) (.*)/m', $buf, $matches, PREG_SET_ORDER)) { foreach ($matches as $line) { $cpu = $line[1]; $buf2 = $line[2]; $ab = 0; $ac = 0; $ad = 0; $ae = 0; sscanf($buf2, "%Ld %Ld %Ld %Ld", $ab, $ac, $ad, $ae); $load2 = $ab + $ac + $ad; // cpu.user + cpu.sys $total2 = $ab + $ac + $ad + $ae; // cpu.total $total = $this->_cpu_loads[$cpu]['total']; $load = $this->_cpu_loads[$cpu]['load']; $this->_cpu_loads[$cpu] = 0; if ($total > 0 && $total2 > 0 && $load > 0 && $load2 > 0 && $total2 != $total && $load2 != $load) { $this->_cpu_loads[$cpu] = (100 * ($load2 - $load)) / ($total2 - $total); } } } } } if (isset($this->_cpu_loads[$cpuline])) { return $this->_cpu_loads[$cpuline]; } return 0; } /** * CPU information * All of the tags here are highly architecture dependant. * * @return void */ protected function _cpuinfo() { if (CommonFunctions::rfts('/proc/cpuinfo', $bufr)) { $processors = preg_split('/\s?\n\s?\n/', trim($bufr)); $procname = null; foreach ($processors as $processor) { $proc = null; $arch = null; $dev = new CpuDevice(); $details = preg_split("/\n/", $processor, -1, PREG_SPLIT_NO_EMPTY); foreach ($details as $detail) { $arrBuff = preg_split('/\s*:\s*/', trim($detail)); if (count($arrBuff) == 2) { switch (strtolower($arrBuff[0])) { case 'processor': $proc = trim($arrBuff[1]); if (is_numeric($proc)) { if (strlen($procname)>0) { $dev->setModel($procname); } } else { $procname = $proc; $dev->setModel($procname); } break; case 'model name': case 'cpu model': case 'cpu type': case 'cpu': $dev->setModel($arrBuff[1]); break; case 'cpu mhz': case 'clock': if ($arrBuff[1] > 0) { //openSUSE fix $dev->setCpuSpeed($arrBuff[1]); } break; case 'cycle frequency [hz]': $dev->setCpuSpeed($arrBuff[1] / 1000000); break; case 'cpu0clktck': $dev->setCpuSpeed(hexdec($arrBuff[1]) / 1000000); // Linux sparc64 break; case 'l2 cache': case 'cache size': $dev->setCache(preg_replace("/[a-zA-Z]/", "", $arrBuff[1]) * 1024); break; case 'initial bogomips': case 'bogomips': case 'cpu0bogo': $dev->setBogomips($arrBuff[1]); break; case 'flags': if (preg_match("/ vmx/", $arrBuff[1])) { $dev->setVirt("vmx"); } elseif (preg_match("/ svm/", $arrBuff[1])) { $dev->setVirt("svm"); } elseif (preg_match("/ hypervisor/", $arrBuff[1])) { $dev->setVirt("hypervisor"); } break; case 'i size': case 'd size': if ($dev->getCache() === null) { $dev->setCache($arrBuff[1] * 1024); } else { $dev->setCache($dev->getCache() + ($arrBuff[1] * 1024)); } break; case 'cpu architecture': $arch = trim($arrBuff[1]); break; } } } // sparc64 specific code follows // This adds the ability to display the cache that a CPU has // Originally made by Sven Blumenstein in 2004 // Modified by Tom Weustink in 2004 $sparclist = array('SUNW,UltraSPARC@0,0', 'SUNW,UltraSPARC-II@0,0', 'SUNW,UltraSPARC@1c,0', 'SUNW,UltraSPARC-IIi@1c,0', 'SUNW,UltraSPARC-II@1c,0', 'SUNW,UltraSPARC-IIe@0,0'); foreach ($sparclist as $name) { if (CommonFunctions::rfts('/proc/openprom/'.$name.'/ecache-size', $buf, 1, 32, false)) { $dev->setCache(base_convert($buf, 16, 10)); } } // sparc64 specific code ends // XScale detection code if (($arch === "5TE") && ($dev->getBogomips() != null)) { $dev->setCpuSpeed($dev->getBogomips()); //BogoMIPS are not BogoMIPS on this CPU, it's the speed $dev->setBogomips(null); // no BogoMIPS available, unset previously set BogoMIPS } if ($proc != null) { if (!is_numeric($proc)) { $proc = 0; } // variable speed processors specific code follows if (CommonFunctions::rfts('/sys/devices/system/cpu/cpu'.$proc.'/cpufreq/cpuinfo_cur_freq', $buf, 1, 4096, false)) { $dev->setCpuSpeed($buf / 1000); } elseif (CommonFunctions::rfts('/sys/devices/system/cpu/cpu'.$proc.'/cpufreq/scaling_cur_freq', $buf, 1, 4096, false)) { $dev->setCpuSpeed($buf / 1000); } if (CommonFunctions::rfts('/sys/devices/system/cpu/cpu'.$proc.'/cpufreq/cpuinfo_max_freq', $buf, 1, 4096, false)) { $dev->setCpuSpeedMax($buf / 1000); } if (CommonFunctions::rfts('/sys/devices/system/cpu/cpu'.$proc.'/cpufreq/cpuinfo_min_freq', $buf, 1, 4096, false)) { $dev->setCpuSpeedMin($buf / 1000); } // variable speed processors specific code ends if (PSI_LOAD_BAR) { $dev->setLoad($this->_parseProcStat('cpu'.$proc)); } if (CommonFunctions::rfts('/proc/acpi/thermal_zone/THRM/temperature', $buf, 1, 4096, false)) { $dev->setTemp(substr($buf, 25, 2)); } if ($dev->getModel() === "") { $dev->setModel("unknown"); } $this->sys->setCpus($dev); } } } } /** * PCI devices * * @return void */ private function _pci() { if ($arrResults = Parser::lspci()) { foreach ($arrResults as $dev) { $this->sys->setPciDevices($dev); } } elseif (CommonFunctions::rfts('/proc/pci', $strBuf, 0, 4096, false)) { $booDevice = false; $arrBuf = preg_split("/\n/", $strBuf, -1, PREG_SPLIT_NO_EMPTY); foreach ($arrBuf as $strLine) { if (preg_match('/^\s*Bus\s/', $strLine)) { $booDevice = true; continue; } if ($booDevice) { $dev = new HWDevice(); $dev->setName(preg_replace('/\([^\)]+\)\.$/', '', trim($strLine))); $this->sys->setPciDevices($dev); /* list($strKey, $strValue) = preg_split('/: /', $strLine, 2); if (!preg_match('/bridge/i', $strKey) && !preg_match('/USB/i ', $strKey)) { $dev = new HWDevice(); $dev->setName(preg_replace('/\([^\)]+\)\.$/', '', trim($strValue))); $this->sys->setPciDevices($dev); } */ $booDevice = false; } } } else { $pcidevices = glob('/sys/bus/pci/devices/*/uevent', GLOB_NOSORT); if (($total = count($pcidevices)) > 0) { $buf = ""; for ($i = 0; $i < $total; $i++) { if (CommonFunctions::rfts($pcidevices[$i], $buf, 0, 4096, false) && (trim($buf) != "")) { $pcibuf = ""; if (preg_match("/^PCI_CLASS=(\S+)/m", trim($buf), $subbuf)) { $pcibuf = "Class ".$subbuf[1].":"; } if (preg_match("/^PCI_ID=(\S+)/m", trim($buf), $subbuf)) { $pcibuf .= " Device ".$subbuf[1]; } if (preg_match("/^DRIVER=(\S+)/m", trim($buf), $subbuf)) { $pcibuf .= " Driver ".$subbuf[1]; } $dev = new HWDevice(); if (trim($pcibuf) != "") { $dev->setName(trim($pcibuf)); } else { $dev->setName("unknown"); } $this->sys->setPciDevices($dev); } } } } } /** * IDE devices * * @return void */ private function _ide() { $bufd = CommonFunctions::gdc('/proc/ide', false); foreach ($bufd as $file) { if (preg_match('/^hd/', $file)) { $dev = new HWDevice(); $dev->setName(trim($file)); if (CommonFunctions::rfts("/proc/ide/".$file."/media", $buf, 1)) { if (trim($buf) == 'disk') { if (CommonFunctions::rfts("/proc/ide/".$file."/capacity", $buf, 1, 4096, false) || CommonFunctions::rfts("/sys/block/".$file."/size", $buf, 1, 4096, false)) { $dev->setCapacity(trim($buf) * 512 / 1024); } } } if (CommonFunctions::rfts("/proc/ide/".$file."/model", $buf, 1)) { $dev->setName($dev->getName().": ".trim($buf)); } $this->sys->setIdeDevices($dev); } } } /** * SCSI devices * * @return void */ private function _scsi() { $get_type = false; $device = null; if (CommonFunctions::executeProgram('lsscsi', '-c', $bufr, PSI_DEBUG) || CommonFunctions::rfts('/proc/scsi/scsi', $bufr, 0, 4096, PSI_DEBUG)) { $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe as $buf) { if (preg_match('/Vendor: (.*) Model: (.*) Rev: (.*)/i', $buf, $devices)) { $get_type = true; $device = $devices; continue; } if ($get_type) { preg_match('/Type:\s+(\S+)/i', $buf, $dev_type); $dev = new HWDevice(); $dev->setName($device[1].' '.$device[2].' ('.$dev_type[1].')'); $this->sys->setScsiDevices($dev); $get_type = false; } } } } /** * USB devices * * @return array */ private function _usb() { $devnum = -1; if (CommonFunctions::executeProgram('lsusb', '', $bufr, PSI_DEBUG) && (trim($bufr) !== "")) { $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe as $buf) { $device = preg_split("/ /", $buf, 7); if (isset($device[6]) && trim($device[6]) != "") { $dev = new HWDevice(); $dev->setName(trim($device[6])); $this->sys->setUsbDevices($dev); } elseif (isset($device[5]) && trim($device[5]) != "") { $dev = new HWDevice(); $dev->setName("unknown"); $this->sys->setUsbDevices($dev); } } } elseif (CommonFunctions::rfts('/proc/bus/usb/devices', $bufr, 0, 4096, false)) { $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe as $buf) { if (preg_match('/^T/', $buf)) { $devnum += 1; $results[$devnum] = ""; } elseif (preg_match('/^S:/', $buf)) { list($key, $value) = preg_split('/: /', $buf, 2); list($key, $value2) = preg_split('/=/', $value, 2); if ((trim($key) == "Manufacturer") && (preg_match("/^linux\s/i", trim($value2)))) { $value2 = "Linux"; } if (trim($key) != "SerialNumber") { $results[$devnum] .= " ".trim($value2); } } } foreach ($results as $var) { $dev = new HWDevice(); $var = trim($var); if ($var != "") { $dev->setName($var); } else { $dev->setName("unknown"); } $this->sys->setUsbDevices($dev); } } else { $usbdevices = glob('/sys/bus/usb/devices/*/idProduct', GLOB_NOSORT); if (($total = count($usbdevices)) > 0) { $buf = ""; for ($i = 0; $i < $total; $i++) { if (CommonFunctions::rfts($usbdevices[$i], $buf, 1, 4096, false) && (trim($buf) != "")) { //is readable $product = preg_replace("/\/idProduct$/", "/product", $usbdevices[$i]); $manufacturer = preg_replace("/\/idProduct$/", "/manufacturer", $usbdevices[$i]); $usbbuf = ""; if (CommonFunctions::fileexists($manufacturer) && CommonFunctions::rfts($manufacturer, $buf, 1, 4096, false) && (trim($buf) != "")) { if (preg_match("/^linux\s/i", trim($buf))) { $usbbuf = "Linux"; } else { $usbbuf = trim($buf); } } if (CommonFunctions::fileexists($product) && CommonFunctions::rfts($product, $buf, 1, 4096, false) && (trim($buf) != "")) { $usbbuf .= " ".trim($buf); } $dev = new HWDevice(); if (trim($usbbuf) != "") { $dev->setName(trim($usbbuf)); } else { $dev->setName("unknown"); } $this->sys->setUsbDevices($dev); } } } } } /** * I2C devices * * @return void */ protected function _i2c() { $i2cdevices = glob('/sys/bus/i2c/devices/*/name', GLOB_NOSORT); if (($total = count($i2cdevices)) > 0) { $buf = ""; for ($i = 0; $i < $total; $i++) { if (CommonFunctions::rfts($i2cdevices[$i], $buf, 1, 4096, false) && (trim($buf) != "")) { $dev = new HWDevice(); $dev->setName(trim($buf)); $this->sys->setI2cDevices($dev); } } } } /** * Network devices * includes also rx/tx bytes * * @return void */ protected function _network() { if (CommonFunctions::rfts('/proc/net/dev', $bufr, 0, 4096, PSI_DEBUG)) { $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe as $buf) { if (preg_match('/:/', $buf)) { list($dev_name, $stats_list) = preg_split('/:/', $buf, 2); $stats = preg_split('/\s+/', trim($stats_list)); $dev = new NetDevice(); $dev->setName(trim($dev_name)); $dev->setRxBytes($stats[0]); $dev->setTxBytes($stats[8]); $dev->setErrors($stats[2] + $stats[10]); $dev->setDrops($stats[3] + $stats[11]); if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) { if ((CommonFunctions::executeProgram('ip', 'addr show '.trim($dev_name), $bufr2, PSI_DEBUG) && (trim($bufr2)!="")) || CommonFunctions::executeProgram('ifconfig', trim($dev_name).' 2>/dev/null', $bufr2, PSI_DEBUG)) { $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY); $macaddr = ""; foreach ($bufe2 as $buf2) { // if (preg_match('/^'.trim($dev_name).'\s+Link\sencap:Ethernet\s+HWaddr\s(\S+)/i', $buf2, $ar_buf2) if (preg_match('/\s+encap:Ethernet\s+HWaddr\s(\S+)/i', $buf2, $ar_buf2) || preg_match('/^\s+ether\s+(\S+)\s+txqueuelen/i', $buf2, $ar_buf2) || preg_match('/^\s+link\/ether\s+(\S+)\s+brd/i', $buf2, $ar_buf2)) //ip $macaddr = preg_replace('/:/', '-', strtoupper($ar_buf2[1])); elseif (preg_match('/^\s+inet\saddr:(\S+)\s+P-t-P:(\S+)/i', $buf2, $ar_buf2) || preg_match('/^\s+inet\s+(\S+)\s+netmask.+destination\s+(\S+)/i', $buf2, $ar_buf2) || preg_match('/^\s+inet\s+([^\/\s]+).*peer\s+([^\/\s]+).*\s+scope\s((global)|(host))/i', $buf2, $ar_buf2)) { //ip if ($ar_buf2[1] != $ar_buf2[2]) { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1].";:".$ar_buf2[2]); } else { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1]); } } elseif (preg_match('/^\s+inet\saddr:(\S+)/i', $buf2, $ar_buf2) || preg_match('/^\s+inet\s+(\S+)\s+netmask/i', $buf2, $ar_buf2) || preg_match('/^'.trim($dev_name).':\s+ip\s+(\S+)\s+mask/i', $buf2, $ar_buf2) || preg_match('/^\s+inet6\saddr:\s([^\/\s]+)(.+)\s+Scope:[GH]/i', $buf2, $ar_buf2) || preg_match('/^\s+inet6\s+(\S+)\s+prefixlen(.+)(()|())/i', $buf2, $ar_buf2) || preg_match('/^\s+inet6?\s+([^\/\s]+).*\s+scope\s((global)|(host))/i', $buf2, $ar_buf2)) //ip $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').strtolower($ar_buf2[1])); } } if ($macaddr != "") { $dev->setInfo($macaddr.($dev->getInfo()?';'.$dev->getInfo():'')); } if (CommonFunctions::rfts('/sys/class/net/'.trim($dev_name).'/speed', $buf, 1, 4096, false) && (trim($buf)!="") && ($buf > 0) && ($buf < 65535)) { $speed = trim($buf); if ($speed > 1000) { $speed = $speed/1000; $unit = "G"; } else { $unit = "M"; } if (CommonFunctions::rfts('/sys/class/net/'.trim($dev_name).'/duplex', $buf, 1, 4096, false) && (trim($buf)!="")) { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$speed.$unit.'b/s '.strtolower(trim($buf))); } else { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$speed.$unit.'b/s'); } } } $this->sys->setNetDevices($dev); } } } elseif (CommonFunctions::executeProgram('ip', 'addr show', $bufr, PSI_DEBUG) && (trim($bufr)!="")) { $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); $was = false; foreach ($lines as $line) { if (preg_match("/^\d+:\s+([^\s:]+)/", $line, $ar_buf)) { if ($was) { if ($macaddr != "") { $dev->setInfo($macaddr.($dev->getInfo()?';'.$dev->getInfo():'')); } if ($speedinfo != "") { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$speedinfo); } $this->sys->setNetDevices($dev); } $speedinfo = ""; $macaddr = ""; $dev = new NetDevice(); $dev->setName($ar_buf[1]); if (CommonFunctions::executeProgram('ip', '-s link show '.$ar_buf[1], $bufr2, PSI_DEBUG) && (trim($bufr2)!="") && preg_match("/\n\s+RX:\s[^\n]+\n\s+(\d+)\s+\d+\s+(\d+)\s+(\d+)[^\n]+\n\s+TX:\s[^\n]+\n\s+(\d+)\s+\d+\s+(\d+)\s+(\d+)/m", $bufr2, $ar_buf2)) { $dev->setRxBytes($ar_buf2[1]); $dev->setTxBytes($ar_buf2[4]); $dev->setErrors($ar_buf2[2]+$ar_buf2[5]); $dev->setDrops($ar_buf2[3]+$ar_buf2[6]); } $was = true; if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) { if (CommonFunctions::rfts('/sys/class/net/'.$ar_buf[1].'/speed', $buf, 1, 4096, false) && (trim($buf)!="")) { $speed = trim($buf); if ($speed > 1000) { $speed = $speed/1000; $unit = "G"; } else { $unit = "M"; } if (CommonFunctions::rfts('/sys/class/net/'.$ar_buf[1].'/duplex', $buf, 1, 4096, false) && (trim($buf)!="")) { $speedinfo = $speed.$unit.'b/s '.strtolower(trim($buf)); } else { $speedinfo = $speed.$unit.'b/s'; } } } } else { if ($was) { if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) { if (preg_match('/^\s+link\/ether\s+(\S+)\s+brd/i', $line, $ar_buf2)) $macaddr = preg_replace('/:/', '-', strtoupper($ar_buf2[1])); elseif (preg_match('/^\s+inet\s+([^\/\s]+).*peer\s+([^\/\s]+).*\s+scope\s((global)|(host))/i', $line, $ar_buf2)) { if ($ar_buf2[1] != $ar_buf2[2]) { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1].";:".$ar_buf2[2]); } else { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1]); } } elseif (preg_match('/^\s+inet6?\s+([^\/\s]+).*\s+scope\s((global)|(host))/i', $line, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').strtolower($ar_buf2[1])); } } } } if ($was) { if ($macaddr != "") { $dev->setInfo($macaddr.($dev->getInfo()?';'.$dev->getInfo():'')); } if ($speedinfo != "") { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$speedinfo); } $this->sys->setNetDevices($dev); } } elseif (CommonFunctions::executeProgram('ifconfig', '-a', $bufr, PSI_DEBUG)) { $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); $was = false; foreach ($lines as $line) { if (preg_match("/^([^\s:]+)/", $line, $ar_buf)) { if ($was) { $dev->setErrors($errors); $dev->setDrops($drops); if ($macaddr != "") { $dev->setInfo($macaddr.($dev->getInfo()?';'.$dev->getInfo():'')); } if ($speedinfo != "") { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$speedinfo); } $this->sys->setNetDevices($dev); } $errors = 0; $drops = 0; $speedinfo = ""; $macaddr = ""; $dev = new NetDevice(); $dev->setName($ar_buf[1]); $was = true; if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) { if (CommonFunctions::rfts('/sys/class/net/'.$ar_buf[1].'/speed', $buf, 1, 4096, false) && (trim($buf)!="")) { $speed = trim($buf); if ($speed > 1000) { $speed = $speed/1000; $unit = "G"; } else { $unit = "M"; } if (CommonFunctions::rfts('/sys/class/net/'.$ar_buf[1].'/duplex', $buf, 1, 4096, false) && (trim($buf)!="")) { $speedinfo = $speed.$unit.'b/s '.strtolower(trim($buf)); } else { $speedinfo = $speed.$unit.'b/s'; } } if (preg_match('/^'.$ar_buf[1].'\s+Link\sencap:Ethernet\s+HWaddr\s(\S+)/i', $line, $ar_buf2)) $macaddr = preg_replace('/:/', '-', strtoupper($ar_buf2[1])); elseif (preg_match('/^'.$ar_buf[1].':\s+ip\s+(\S+)\s+mask/i', $line, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1]); } } else { if ($was) { if (preg_match('/\sRX bytes:(\d+)\s/i', $line, $ar_buf2)) { $dev->setRxBytes($ar_buf2[1]); } if (preg_match('/\sTX bytes:(\d+)\s/i', $line, $ar_buf2)) { $dev->setTxBytes($ar_buf2[1]); } if (preg_match('/\sRX packets:\d+\serrors:(\d+)\sdropped:(\d+)/i', $line, $ar_buf2)) { $errors +=$ar_buf2[1]; $drops +=$ar_buf2[2]; } elseif (preg_match('/\sTX packets:\d+\serrors:(\d+)\sdropped:(\d+)/i', $line, $ar_buf2)) { $errors +=$ar_buf2[1]; $drops +=$ar_buf2[2]; } if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) { if (preg_match('/\s+encap:Ethernet\s+HWaddr\s(\S+)/i', $line, $ar_buf2) || preg_match('/^\s+ether\s+(\S+)\s+txqueuelen/i', $line, $ar_buf2)) $macaddr = preg_replace('/:/', '-', strtoupper($ar_buf2[1])); elseif (preg_match('/^\s+inet\saddr:(\S+)\s+P-t-P:(\S+)/i', $line, $ar_buf2) || preg_match('/^\s+inet\s+(\S+)\s+netmask.+destination\s+(\S+)/i', $line, $ar_buf2)) { if ($ar_buf2[1] != $ar_buf2[2]) { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1].";:".$ar_buf2[2]); } else { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1]); } } elseif (preg_match('/^\s+inet\saddr:(\S+)/i', $line, $ar_buf2) || preg_match('/^\s+inet\s+(\S+)\s+netmask/i', $line, $ar_buf2) || preg_match('/^\s+inet6\saddr:\s([^\/\s]+)(.+)\s+Scope:[GH]/i', $line, $ar_buf2) || preg_match('/^\s+inet6\s+(\S+)\s+prefixlen(.+)(()|())/i', $line, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').strtolower($ar_buf2[1])); } } } } if ($was) { $dev->setErrors($errors); $dev->setDrops($drops); if ($macaddr != "") { $dev->setInfo($macaddr.($dev->getInfo()?';'.$dev->getInfo():'')); } if ($speedinfo != "") { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$speedinfo); } $this->sys->setNetDevices($dev); } } } /** * Physical memory information and Swap Space information * * @return void */ protected function _memory() { if (CommonFunctions::rfts('/proc/meminfo', $mbuf)) { $bufe = preg_split("/\n/", $mbuf, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe as $buf) { if (preg_match('/^MemTotal:\s+(.*)\s*kB/i', $buf, $ar_buf)) { $this->sys->setMemTotal($ar_buf[1] * 1024); } elseif (preg_match('/^MemFree:\s+(.*)\s*kB/i', $buf, $ar_buf)) { $this->sys->setMemFree($ar_buf[1] * 1024); } elseif (preg_match('/^Cached:\s+(.*)\s*kB/i', $buf, $ar_buf)) { $this->sys->setMemCache($ar_buf[1] * 1024); } elseif (preg_match('/^Buffers:\s+(.*)\s*kB/i', $buf, $ar_buf)) { $this->sys->setMemBuffer($ar_buf[1] * 1024); } } $this->sys->setMemUsed($this->sys->getMemTotal() - $this->sys->getMemFree()); // values for splitting memory usage if ($this->sys->getMemCache() !== null && $this->sys->getMemBuffer() !== null) { $this->sys->setMemApplication($this->sys->getMemUsed() - $this->sys->getMemCache() - $this->sys->getMemBuffer()); } if (CommonFunctions::rfts('/proc/swaps', $sbuf, 0, 4096, false)) { $swaps = preg_split("/\n/", $sbuf, -1, PREG_SPLIT_NO_EMPTY); unset($swaps[0]); foreach ($swaps as $swap) { $ar_buf = preg_split('/\s+/', $swap, 5); $dev = new DiskDevice(); $dev->setMountPoint($ar_buf[0]); $dev->setName("SWAP"); $dev->setTotal($ar_buf[2] * 1024); $dev->setUsed($ar_buf[3] * 1024); $dev->setFree($dev->getTotal() - $dev->getUsed()); $this->sys->setSwapDevices($dev); } } } } /** * filesystem information * * @return void */ private function _filesystems() { $df_args = ""; $hideFstypes = array(); if (defined('PSI_HIDE_FS_TYPES') && is_string(PSI_HIDE_FS_TYPES)) { if (preg_match(ARRAY_EXP, PSI_HIDE_FS_TYPES)) { $hideFstypes = eval(PSI_HIDE_FS_TYPES); } else { $hideFstypes = array(PSI_HIDE_FS_TYPES); } } foreach ($hideFstypes as $Fstype) { $df_args .= "-x $Fstype "; } if ($df_args !== "") { $df_args = trim($df_args); //trim spaces $arrResult = Parser::df("-P $df_args 2>/dev/null"); } else { $arrResult = Parser::df("-P 2>/dev/null"); } foreach ($arrResult as $dev) { $this->sys->setDiskDevices($dev); } } /** * Distribution * * @return void */ protected function _distro() { $this->sys->setDistribution("Linux"); $list = @parse_ini_file(APP_ROOT."/data/distros.ini", true); if (!$list) { return; } // We have the '2>/dev/null' because Ubuntu gives an error on this command which causes the distro to be unknown if (CommonFunctions::executeProgram('lsb_release', '-a 2>/dev/null', $distro_info, PSI_DEBUG) && (strlen($distro_info) > 0)) { $distro_tmp = preg_split("/\n/", $distro_info, -1, PREG_SPLIT_NO_EMPTY); foreach ($distro_tmp as $info) { $info_tmp = preg_split('/:/', $info, 2); if (isset($distro_tmp[0]) && !is_null($distro_tmp[0]) && (trim($distro_tmp[0]) != "") && isset($distro_tmp[1]) && !is_null($distro_tmp[1]) && (trim($distro_tmp[1]) != "")) { $distro[trim($info_tmp[0])] = trim($info_tmp[1]); } } if (!isset($distro['Distributor ID']) && !isset($distro['Description'])) { // Systems like StartOS if (isset($distro_tmp[0]) && !is_null($distro_tmp[0]) && (trim($distro_tmp[0]) != "")) { $this->sys->setDistribution(trim($distro_tmp[0])); if (preg_match('/^(\S+)\s*/', $distro_tmp[0], $id_buf) && isset($list[trim($id_buf[1])]['Image'])) { $this->sys->setDistributionIcon($list[trim($id_buf[1])]['Image']); } } } else { if (isset($distro['Description']) && preg_match('/^NAME=\s*(.+)\s*$/', $distro['Description'], $name_tmp)) { $distro['Description'] = $name_tmp[1]; } if (isset($distro['Description']) && ($distro['Description'] != "n/a") && (!isset($distro['Distributor ID']) || (($distro['Distributor ID'] != "n/a") && ($distro['Description'] != $distro['Distributor ID'])))) { $this->sys->setDistribution($distro['Description']); if (isset($distro['Release']) && ($distro['Release'] != "n/a") && ($distro['Release'] != $distro['Description']) && strstr($distro['Release'], ".")){ if (preg_match("/^(\d+)\.[0]+$/", $distro['Release'], $match_buf)) { $tofind = $match_buf[1]; } else { $tofind = $distro['Release']; } if (!preg_match("/^".$tofind."[\s\.]|[\(\[]".$tofind."[\.\)\]]|\s".$tofind."$|\s".$tofind."[\s\.]/", $distro['Description'])) { $this->sys->setDistribution($this->sys->getDistribution()." ".$distro['Release']); } } } elseif (isset($distro['Distributor ID']) && ($distro['Distributor ID'] != "n/a")) { $this->sys->setDistribution($distro['Distributor ID']); if (isset($distro['Release']) && ($distro['Release'] != "n/a")) { $this->sys->setDistribution($this->sys->getDistribution()." ".$distro['Release']); } if (isset($distro['Codename']) && ($distro['Codename'] != "n/a")) { $this->sys->setDistribution($this->sys->getDistribution()." (".$distro['Codename'].")"); } } if (isset($distro['Distributor ID']) && ($distro['Distributor ID'] != "n/a") && isset($list[$distro['Distributor ID']]['Image'])) { $this->sys->setDistributionIcon($list[$distro['Distributor ID']]['Image']); } } } else { /* default error handler */ if (function_exists('errorHandlerPsi')) { restore_error_handler(); } /* fatal errors only */ $old_err_rep = error_reporting(); error_reporting(E_ERROR); // Fall back in case 'lsb_release' does not exist but exist /etc/lsb-release if (CommonFunctions::fileexists($filename="/etc/lsb-release") && CommonFunctions::rfts($filename, $buf, 0, 4096, false) && preg_match('/^DISTRIB_ID="?([^"\n]+)"?/m', $buf, $id_buf)) { if (preg_match('/^DISTRIB_DESCRIPTION="?([^"\n]+)"?/m', $buf, $desc_buf) && (trim($desc_buf[1])!=trim($id_buf[1]))) { $this->sys->setDistribution(trim($desc_buf[1])); if (preg_match('/^DISTRIB_RELEASE="?([^"\n]+)"?/m', $buf, $vers_buf) && (trim($vers_buf[1])!=trim($desc_buf[1])) && strstr($vers_buf[1], ".")){ if (preg_match("/^(\d+)\.[0]+$/", trim($vers_buf[1]), $match_buf)) { $tofind = $match_buf[1]; } else { $tofind = trim($vers_buf[1]); } if (!preg_match("/^".$tofind."[\s\.]|[\(\[]".$tofind."[\.\)\]]|\s".$tofind."$|\s".$tofind."[\s\.]/", trim($desc_buf[1]))) { $this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1])); } } } else { if (isset($list[trim($id_buf[1])]['Name'])) { $this->sys->setDistribution(trim($list[trim($id_buf[1])]['Name'])); } else { $this->sys->setDistribution(trim($id_buf[1])); } if (preg_match('/^DISTRIB_RELEASE="?([^"\n]+)"?/m', $buf, $vers_buf)) { $this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1])); } if (preg_match('/^DISTRIB_CODENAME="?([^"\n]+)"?/m', $buf, $vers_buf)) { $this->sys->setDistribution($this->sys->getDistribution()." (".trim($vers_buf[1]).")"); } } if (isset($list[trim($id_buf[1])]['Image'])) { $this->sys->setDistributionIcon($list[trim($id_buf[1])]['Image']); } } else { // otherwise find files specific for distribution foreach ($list as $section=>$distribution) { if (!isset($distribution['Files'])) { continue; } else { foreach (preg_split("/;/", $distribution['Files'], -1, PREG_SPLIT_NO_EMPTY) as $filename) { if (CommonFunctions::fileexists($filename)) { $distro = $distribution; if (isset($distribution['Mode'])&&(strtolower($distribution['Mode'])=="detection")) { $buf = ""; } elseif (isset($distribution['Mode'])&&(strtolower($distribution['Mode'])=="execute")) { if (!CommonFunctions::executeProgram($filename, '2>/dev/null', $buf, PSI_DEBUG)) { $buf = ""; } } else { if (!CommonFunctions::rfts($filename, $buf, 1, 4096, false)) { $buf = ""; } elseif (isset($distribution['Mode'])&&(strtolower($distribution['Mode'])=="analyse")) { if (preg_match('/^(\S+)\s*/', preg_replace('/^Red\s+/', 'Red', $buf), $id_buf) && isset($list[trim($id_buf[1])]['Image'])) { $distro = $list[trim($id_buf[1])]; } } } if (isset($distro['Image'])) { $this->sys->setDistributionIcon($distro['Image']); } if (isset($distribution['Name'])) { if (is_null($buf) || (trim($buf) == "")) { $this->sys->setDistribution($distribution['Name']); } else { $this->sys->setDistribution($distribution['Name']." ".trim($buf)); } } else { if (is_null($buf) || (trim($buf) == "")) { $this->sys->setDistribution($section); } else { $this->sys->setDistribution(trim($buf)); } } if (isset($distribution['Files2'])) { foreach (preg_split("/;/", $distribution['Files2'], -1, PREG_SPLIT_NO_EMPTY) as $filename2) { if (CommonFunctions::fileexists($filename2) && CommonFunctions::rfts($filename2, $buf, 0, 4096, false)) { if (preg_match('/^majorversion="?([^"\n]+)"?/m', $buf, $maj_buf) && preg_match('/^minorversion="?([^"\n]+)"?/m', $buf, $min_buf)) { $distr2=$maj_buf[1].'.'.$min_buf[1]; if (preg_match('/^buildphase="?([^"\n]+)"?/m', $buf, $pha_buf) && ($pha_buf[1]!=="0")) { $distr2.='.'.$pha_buf[1]; } if (preg_match('/^buildnumber="?([^"\n]+)"?/m', $buf, $num_buf)) { $distr2.='-'.$num_buf[1]; } if (preg_match('/^builddate="?([^"\n]+)"?/m', $buf, $dat_buf)) { $distr2.=' ('.$dat_buf[1].')'; } $this->sys->setDistribution($this->sys->getDistribution()." ".$distr2); } else { $distr2=trim(substr($buf, 0, strpos($buf, "\n"))); if (!is_null($distr2) && ($distr2 != "")) { $this->sys->setDistribution($this->sys->getDistribution()." ".$distr2); } } break; } } } break 2; } } } } } // if the distribution is still unknown if ($this->sys->getDistribution() == "Linux") { if (CommonFunctions::fileexists($filename="/etc/DISTRO_SPECS") && CommonFunctions::rfts($filename, $buf, 0, 4096, false) && preg_match('/^DISTRO_NAME=\'(.+)\'/m', $buf, $id_buf)) { if (isset($list[trim($id_buf[1])]['Name'])) { $dist = trim($list[trim($id_buf[1])]['Name']); } else { $dist = trim($id_buf[1]); } if (preg_match('/^DISTRO_VERSION=(.+)/m', $buf, $vers_buf)) { $this->sys->setDistribution(trim($dist." ".trim($vers_buf[1]))); } else { $this->sys->setDistribution($dist); } if (isset($list[trim($id_buf[1])]['Image'])) { $this->sys->setDistributionIcon($list[trim($id_buf[1])]['Image']); } else { if (isset($list['Puppy']['Image'])) { $this->sys->setDistributionIcon($list['Puppy']['Image']); } } } elseif ((CommonFunctions::fileexists($filename="/etc/distro-release") && CommonFunctions::rfts($filename, $buf, 1, 4096, false) && !is_null($buf) && (trim($buf) != "")) || (CommonFunctions::fileexists($filename="/etc/system-release") && CommonFunctions::rfts($filename, $buf, 1, 4096, false) && !is_null($buf) && (trim($buf) != ""))) { $this->sys->setDistribution(trim($buf)); if (preg_match('/^(\S+)\s*/', preg_replace('/^Red\s+/', 'Red', $buf), $id_buf) && isset($list[trim($id_buf[1])]['Image'])) { $this->sys->setDistributionIcon($list[trim($id_buf[1])]['Image']); } } elseif (CommonFunctions::fileexists($filename="/etc/solydxk/info") && CommonFunctions::rfts($filename, $buf, 0, 4096, false) && preg_match('/^DISTRIB_ID="?([^"\n]+)"?/m', $buf, $id_buf)) { if (preg_match('/^DESCRIPTION="?([^"\n]+)"?/m', $buf, $desc_buf) && (trim($desc_buf[1])!=trim($id_buf[1]))) { $this->sys->setDistribution(trim($desc_buf[1])); } else { if (isset($list[trim($id_buf[1])]['Name'])) { $this->sys->setDistribution(trim($list[trim($id_buf[1])]['Name'])); } else { $this->sys->setDistribution(trim($id_buf[1])); } if (preg_match('/^RELEASE="?([^"\n]+)"?/m', $buf, $vers_buf)) { $this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1])); } if (preg_match('/^CODENAME="?([^"\n]+)"?/m', $buf, $vers_buf)) { $this->sys->setDistribution($this->sys->getDistribution()." (".trim($vers_buf[1]).")"); } } if (isset($list[trim($id_buf[1])]['Image'])) { $this->sys->setDistributionIcon($list[trim($id_buf[1])]['Image']); } else { $this->sys->setDistributionIcon($list['SolydXK']['Image']); } } elseif (CommonFunctions::fileexists($filename="/etc/os-release") && CommonFunctions::rfts($filename, $buf, 0, 4096, false) && (preg_match('/^TAILS_VERSION_ID="?([^"\n]+)"?/m', $buf, $tid_buf) || preg_match('/^NAME="?([^"\n]+)"?/m', $buf, $id_buf))) { if (preg_match('/^TAILS_VERSION_ID="?([^"\n]+)"?/m', $buf, $tid_buf)) { if (preg_match('/^TAILS_PRODUCT_NAME="?([^"\n]+)"?/m', $buf, $desc_buf)) { $this->sys->setDistribution(trim($desc_buf[1])." ".trim($tid_buf[1])); } else { if (isset($list['Tails']['Name'])) { $this->sys->setDistribution(trim($list['Tails']['Name'])." ".trim($tid_buf[1])); } else { $this->sys->setDistribution('Tails'." ".trim($tid_buf[1])); } } $this->sys->setDistributionIcon($list['Tails']['Image']); } else { if (preg_match('/^PRETTY_NAME="?([^"\n]+)"?/m', $buf, $desc_buf) && !preg_match('/\$/', $desc_buf[1])) { //if is not defined by variable $this->sys->setDistribution(trim($desc_buf[1])); } else { if (isset($list[trim($id_buf[1])]['Name'])) { $this->sys->setDistribution(trim($list[trim($id_buf[1])]['Name'])); } else { $this->sys->setDistribution(trim($id_buf[1])); } if (preg_match('/^VERSION="?([^"\n]+)"?/m', $buf, $vers_buf)) { $this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1])); } elseif (preg_match('/^VERSION_ID="?([^"\n]+)"?/m', $buf, $vers_buf)) { $this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1])); } } if (isset($list[trim($id_buf[1])]['Image'])) { $this->sys->setDistributionIcon($list[trim($id_buf[1])]['Image']); } } } elseif (CommonFunctions::fileexists($filename="/etc/debian_version")) { if (!CommonFunctions::rfts($filename, $buf, 1, 4096, false)) { $buf = ""; } if (isset($list['Debian']['Image'])) { $this->sys->setDistributionIcon($list['Debian']['Image']); } if (isset($list['Debian']['Name'])) { if (is_null($buf) || (trim($buf) == "")) { $this->sys->setDistribution($list['Debian']['Name']); } else { $this->sys->setDistribution($list['Debian']['Name']." ".trim($buf)); } } else { if (is_null($buf) || (trim($buf) == "")) { $this->sys->setDistribution('Debian'); } else { $this->sys->setDistribution(trim($buf)); } } } elseif (CommonFunctions::fileexists($filename="/etc/config/uLinux.conf") && CommonFunctions::rfts($filename, $buf, 0, 4096, false) && preg_match("/^Rsync\sModel\s*=\s*QNAP/m", $buf) && preg_match("/^Version\s*=\s*([\d\.]+)\r?\nBuild\sNumber\s*=\s*(\S+)/m", $buf, $ver_buf)) { $buf = $ver_buf[1]."-".$ver_buf[2]; if (isset($list['QTS']['Image'])) { $this->sys->setDistributionIcon($list['QTS']['Image']); } if (isset($list['QTS']['Name'])) { $this->sys->setDistribution($list['QTS']['Name']." ".trim($buf)); } else { $this->sys->setDistribution(trim($buf)); } } } /* restore error level */ error_reporting($old_err_rep); /* restore error handler */ if (function_exists('errorHandlerPsi')) { set_error_handler('errorHandlerPsi'); } } } /** * Processes * * @return void */ protected function _processes() { $process = glob('/proc/*/status', GLOB_NOSORT); if (($total = count($process)) > 0) { $processes['*'] = 0; $buf = ""; for ($i = 0; $i < $total; $i++) { if (CommonFunctions::rfts($process[$i], $buf, 0, 4096, false)) { $processes['*']++; //current total if (preg_match('/^State:\s+(\w)/m', $buf, $state)) { if (isset($processes[$state[1]])) { $processes[$state[1]]++; } else { $processes[$state[1]] = 1; } } } } if (!($processes['*'] > 0)) { $processes['*'] = $processes[' '] = $total; //all unknown } $this->sys->setProcesses($processes); } } /** * get the information * * @see PSI_Interface_OS::build() * * @return Void */ public function build() { $this->_distro(); $this->_hostname(); $this->_kernel(); $this->_machine(); $this->_uptime(); $this->_users(); $this->_cpuinfo(); $this->_pci(); $this->_ide(); $this->_scsi(); $this->_usb(); $this->_i2c(); $this->_network(); $this->_memory(); $this->_filesystems(); $this->_loadavg(); $this->_processes(); } } phpsysinfo-3.2.5/includes/os/class.Minix.inc.php000066400000000000000000000252141265516077000216400ustar00rootroot00000000000000 * @copyright 2012 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.Minix.inc.php 687 2012-09-06 20:54:49Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * Minix sysinfo class * get all the required information from Minix system * * @category PHP * @package PSI Minix OS class * @author Mieczyslaw Nalewaj * @copyright 2012 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Minix extends OS { /** * content of the syslog * * @var array */ private $_dmesg = array(); /** * call parent constructor */ public function __construct() { parent::__construct(); } /** * read /var/log/messages, but only if we haven't already * * @return array */ protected function readdmesg() { if (count($this->_dmesg) === 0) { if (CommonFunctions::rfts('/var/log/messages', $buf)) { $parts = preg_split("/kernel: APIC/", $buf, -1, PREG_SPLIT_NO_EMPTY); // $parts = preg_split("/ syslogd: restart\n/", $buf, -1, PREG_SPLIT_NO_EMPTY); $this->_dmesg = preg_split("/\n/", $parts[count($parts) - 1], -1, PREG_SPLIT_NO_EMPTY); } } return $this->_dmesg; } /** * get the cpu information * * @return array */ protected function _cpuinfo() { if (CommonFunctions::rfts('/proc/cpuinfo', $bufr, 0, 4096, false)) { $processors = preg_split('/\s?\n\s?\n/', trim($bufr)); foreach ($processors as $processor) { $_n = ""; $_f = ""; $_m = ""; $_s = ""; $dev = new CpuDevice(); $details = preg_split("/\n/", $processor, -1, PREG_SPLIT_NO_EMPTY); foreach ($details as $detail) { $arrBuff = preg_split('/\s+:\s+/', trim($detail)); if (count($arrBuff) == 2) { switch (strtolower($arrBuff[0])) { case 'model name': $_n = $arrBuff[1]; break; case 'cpu mhz': $dev->setCpuSpeed($arrBuff[1]); break; case 'cpu family': $_f = $arrBuff[1]; break; case 'model': $_m = $arrBuff[1]; break; case 'stepping': $_s = $arrBuff[1]; break; case 'flags': if (preg_match("/ vmx/", $arrBuff[1])) { $dev->setVirt("vmx"); } elseif (preg_match("/ svm/", $arrBuff[1])) { $dev->setVirt("svm"); } break; } } } if ($_n == "") $_n="CPU"; if ($_f != "") $_n.=" Family ".$_f; if ($_m != "") $_n.=" Model ".$_m; if ($_s != "") $_n.=" Stepping ".$_s; $dev->SetModel($_n); $this->sys->setCpus($dev); } } else foreach ($this->readdmesg() as $line) { if (preg_match('/kernel: (CPU .*) freq (.*) MHz/', $line, $ar_buf)) { $dev = new CpuDevice(); $dev->setModel($ar_buf[1]); $dev->setCpuSpeed($ar_buf[2]); $this->sys->setCpus($dev); } } } /** * PCI devices * get the pci device information out of dmesg * * @return void */ protected function _pci() { if (CommonFunctions::rfts('/proc/pci', $strBuf, 0, 4096, false)) { $arrLines = preg_split("/\n/", $strBuf, -1, PREG_SPLIT_NO_EMPTY); foreach ($arrLines as $strLine) { $arrParams = preg_split('/\s+/', trim($strLine), 4); if (count($arrParams) == 4) $strName = $arrParams[3]; else $strName = "unknown"; $strName = preg_replace('/\(.*\)/', '', $strName); $dev = new HWDevice(); $dev->setName($strName); $arrResults[] = $dev; } foreach ($arrResults as $dev) { $this->sys->setPciDevices($dev); } } if (!(isset($arrResults) && is_array($arrResults)) && ($results = Parser::lspci())) { /* if access error: chmod 4755 /usr/bin/lspci */ foreach ($results as $dev) { $this->sys->setPciDevices($dev); } } } /** * Minix Version * * @return void */ private function _kernel() { foreach ($this->readdmesg() as $line) { if (preg_match('/kernel: MINIX (.*) \((.*)\)/', $line, $ar_buf)) { $branch = $ar_buf[2]; } } if (CommonFunctions::executeProgram('uname', '-rvm', $ret)) { if (isset($branch)) $this->sys->setKernel($ret.' ('.$branch.')'); else $this->sys->setKernel($ret); } } /** * Distribution * * @return void */ protected function _distro() { if (CommonFunctions::executeProgram('uname', '-sr', $ret)) $this->sys->setDistribution($ret); else $this->sys->setDistribution('Minix'); $this->sys->setDistributionIcon('Minix.png'); } /** * UpTime * time the system is running * * @return void */ private function _uptime() { if (CommonFunctions::executeProgram('uptime', '', $buf)) { if (preg_match("/up (\d+) days,\s*(\d+):(\d+),/", $buf, $ar_buf)) { $min = $ar_buf[3]; $hours = $ar_buf[2]; $days = $ar_buf[1]; $this->sys->setUptime($days * 86400 + $hours * 3600 + $min * 60); } elseif (preg_match("/up (\d+):(\d+),/", $buf, $ar_buf)) { $min = $ar_buf[2]; $hours = $ar_buf[1]; $this->sys->setUptime($hours * 3600 + $min * 60); } } } /** * Processor Load * optionally create a loadbar * * @return void */ private function _loadavg() { if (CommonFunctions::executeProgram('uptime', '', $buf)) { if (preg_match("/load averages: (.*), (.*), (.*)$/", $buf, $ar_buf)) { $this->sys->setLoad($ar_buf[1].' '.$ar_buf[2].' '.$ar_buf[3]); } } } /** * Virtual Host Name * * @return void */ private function _hostname() { if (PSI_USE_VHOST === true) { $this->sys->setHostname(getenv('SERVER_NAME')); } else { if (CommonFunctions::executeProgram('uname', '-n', $result, PSI_DEBUG)) { $ip = gethostbyname($result); if ($ip != $result) { $this->sys->setHostname(gethostbyaddr($ip)); } } } } /** * Physical memory information and Swap Space information * * @return void */ private function _memory() { if (CommonFunctions::rfts('/proc/meminfo', $bufr, 1, 4096, false)) { $ar_buf = preg_split('/\s+/', trim($bufr)); if (count($ar_buf) >= 5) { $this->sys->setMemTotal($ar_buf[0]*$ar_buf[1]); $this->sys->setMemFree($ar_buf[0]*$ar_buf[2]); $this->sys->setMemCache($ar_buf[0]*$ar_buf[4]); $this->sys->setMemUsed($ar_buf[0]*($ar_buf[1]-$ar_buf[2])); } } } /** * filesystem information * * @return void */ private function _filesystems() { $arrResult = Parser::df("-P 2>/dev/null"); foreach ($arrResult as $dev) { $this->sys->setDiskDevices($dev); } } /** * network information * * @return void */ private function _network() { if (CommonFunctions::executeProgram('ifconfig', '-a', $bufr, PSI_DEBUG)) { $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { if (preg_match("/^([^\s:]+):\saddress\s(\S+)\snetmask/", $line, $ar_buf)) { $dev = new NetDevice(); $dev->setName($ar_buf[1]); if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) { $dev->setInfo($ar_buf[2]); } $this->sys->setNetDevices($dev); } } } } /** * Processes * * @return void */ protected function _processes() { if (CommonFunctions::executeProgram('ps', 'alx', $bufr, PSI_DEBUG)) { $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); $processes['*'] = 0; foreach ($lines as $line) { if (preg_match("/^\s(\w)\s/", $line, $ar_buf)) { $processes['*']++; $state = $ar_buf[1]; if ($state == 'W') $state = 'D'; //linux format elseif ($state == 'D') $state = 'd'; //invalid if (isset($processes[$state])) { $processes[$state]++; } else { $processes[$state] = 1; } } } if ($processes['*'] > 0) { $this->sys->setProcesses($processes); } } } /** * get the information * * @return Void */ public function build() { $this->error->addError("WARN", "The Minix version of phpSysInfo is a work in progress, some things currently don't work"); $this->_distro(); $this->_hostname(); $this->_kernel(); $this->_uptime(); $this->_users(); $this->_loadavg(); $this->_pci(); $this->_cpuinfo(); $this->_memory(); $this->_filesystems(); $this->_network(); $this->_processes(); } } phpsysinfo-3.2.5/includes/os/class.NetBSD.inc.php000066400000000000000000000157641265516077000216440ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.NetBSD.inc.php 287 2009-06-26 12:11:59Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * NetBSD sysinfo class * get all the required information from NetBSD systems * * @category PHP * @package PSI NetBSD OS class * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class NetBSD extends BSDCommon { /** * define the regexp for log parser */ public function __construct() { parent::__construct(); $this->setCPURegExp1("/^cpu(.*)\, (.*) MHz/"); $this->setCPURegExp2("/user = (.*), nice = (.*), sys = (.*), intr = (.*), idle = (.*)/"); $this->setSCSIRegExp1("/^(.*) at scsibus.*: <(.*)> .*/"); $this->setSCSIRegExp2("/^(da[0-9]+): (.*)MB /"); $this->setPCIRegExp1("/(.*) at pci[0-9]+ dev [0-9]* function [0-9]*: (.*)$/"); $this->setPCIRegExp2("/\"(.*)\" (.*).* at [.0-9]+ irq/"); } /** * UpTime * time the system is running * * @return void */ private function _uptime() { $a = $this->grabkey('kern.boottime'); $this->sys->setUptime(time() - $a); } /** * get network information * * @return void */ private function _network() { CommonFunctions::executeProgram('netstat', '-nbdi | cut -c1-25,44- | grep "^[a-z]*[0-9][ \t].*Link"', $netstat_b); CommonFunctions::executeProgram('netstat', '-ndi | cut -c1-25,44- | grep "^[a-z]*[0-9][ \t].*Link"', $netstat_n); $lines_b = preg_split("/\n/", $netstat_b, -1, PREG_SPLIT_NO_EMPTY); $lines_n = preg_split("/\n/", $netstat_n, -1, PREG_SPLIT_NO_EMPTY); for ($i = 0, $max = sizeof($lines_b); $i < $max; $i++) { $ar_buf_b = preg_split("/\s+/", $lines_b[$i]); $ar_buf_n = preg_split("/\s+/", $lines_n[$i]); if (!empty($ar_buf_b[0]) && (!empty($ar_buf_n[3]) || ($ar_buf_n[3] === "0"))) { $dev = new NetDevice(); $dev->setName($ar_buf_b[0]); $dev->setTxBytes($ar_buf_b[4]); $dev->setRxBytes($ar_buf_b[3]); $dev->setDrops($ar_buf_n[8]); $dev->setErrors($ar_buf_n[4] + $ar_buf_n[6]); if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS) && (CommonFunctions::executeProgram('ifconfig', $ar_buf_b[0].' 2>/dev/null', $bufr2, PSI_DEBUG))) { $speedinfo = ""; $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe2 as $buf2) { if (preg_match('/^\s+address:\s+(\S+)/i', $buf2, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').preg_replace('/:/', '-', strtoupper($ar_buf2[1]))); elseif (preg_match('/^\s+inet\s+(\S+)\s+netmask/i', $buf2, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1]); elseif ((preg_match('/^\s+inet6\s+([^\s%]+)\s+prefixlen/i', $buf2, $ar_buf2) || preg_match('/^\s+inet6\s+([^\s%]+)%\S+\s+prefixlen/i', $buf2, $ar_buf2)) && ($ar_buf2[1]!="::") && !preg_match('/^fe80::/i', $ar_buf2[1])) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').strtolower($ar_buf2[1])); elseif (preg_match('/^\s+media:\s+/i', $buf2) && preg_match('/[\(\s](\d+)(G*)base/i', $buf2, $ar_buf2)) { if (isset($ar_buf2[2]) && strtoupper($ar_buf2[2])=="G") { $unit = "G"; } else { $unit = "M"; } if (preg_match('/\s(\S+)-duplex/i', $buf2, $ar_buf3)) $speedinfo = $ar_buf2[1].$unit.'b/s '.strtolower($ar_buf3[1]); else $speedinfo = $ar_buf2[1].$unit.'b/s'; } } if ($speedinfo != "") $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$speedinfo); } $this->sys->setNetDevices($dev); } } } /** * IDE information * * @return void */ protected function ide() { foreach ($this->readdmesg() as $line) { if (preg_match('/^(.*) at (pciide|wdc|atabus|atapibus)[0-9]+ (.*): <(.*)>/', $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName($ar_buf[1]); // now loop again and find the capacity foreach ($this->readdmesg() as $line2) { if (preg_match("/^(".$ar_buf[1]."): (.*), (.*), (.*)MB, .*$/", $line2, $ar_buf_n)) { $dev->setCapacity($ar_buf_n[4] * 2048 * 1.049); } elseif (preg_match("/^(".$ar_buf[1]."): (.*) MB, (.*), (.*), .*$/", $line2, $ar_buf_n)) { $dev->setCapacity($ar_buf_n[2] * 2048); } } $this->sys->setIdeDevices($dev); } } } /** * get icon name * * @return void */ private function _distroicon() { $this->sys->setDistributionIcon('NetBSD.png'); } /** * Processes * * @return void */ protected function _processes() { if (CommonFunctions::executeProgram('ps', 'aux', $bufr, PSI_DEBUG)) { $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); $processes['*'] = 0; foreach ($lines as $line) { if (preg_match("/^\S+\s+\d+\s+\S+\s+\S+\s+\d+\s+\d+\s+\S+\s+(\w)/", $line, $ar_buf)) { $processes['*']++; $state = $ar_buf[1]; if ($state == 'O') $state = 'R'; //linux format elseif ($state == 'I') $state = 'S'; if (isset($processes[$state])) { $processes[$state]++; } else { $processes[$state] = 1; } } } if ($processes['*'] > 0) { $this->sys->setProcesses($processes); } } } /** * get the information * * @see BSDCommon::build() * * @return Void */ public function build() { parent::build(); $this->_distroicon(); $this->_network(); $this->_uptime(); $this->_processes(); } } phpsysinfo-3.2.5/includes/os/class.OS.inc.php000066400000000000000000000105641265516077000210770ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.OS.inc.php 699 2012-09-15 11:57:13Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * Basic OS functions for all OS classes * * @category PHP * @package PSI OS class * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ abstract class OS implements PSI_Interface_OS { /** * object for error handling * * @var Error */ protected $error; /** * @var System */ protected $sys; /** * build the global Error object */ public function __construct() { $this->error = PSI_Error::singleton(); $this->sys = new System(); } /** * get os specific encoding * * @see PSI_Interface_OS::getEncoding() * * @return string */ public function getEncoding() { return PSI_SYSTEM_CODEPAGE; } /** * get os specific language * * @see PSI_Interface_OS::getLanguage() * * @return string */ public function getLanguage() { return PSI_SYSTEM_LANG; } /** * Number of Users * * @return void */ protected function _users() { if (CommonFunctions::executeProgram('who', '', $strBuf, PSI_DEBUG)) { if (strlen($strBuf) > 0) { $lines = preg_split('/\n/', $strBuf); $this->sys->setUsers(count($lines)); } } elseif (CommonFunctions::executeProgram('uptime', '', $buf, PSI_DEBUG) && preg_match("/,\s+(\d+)\s+user[s]?,/", $buf, $ar_buf)) { //} elseif (CommonFunctions::executeProgram('uptime', '', $buf) && preg_match("/,\s+(\d+)\s+user[s]?,\s+load average[s]?:\s+(.*),\s+(.*),\s+(.*)$/", $buf, $ar_buf)) { $this->sys->setUsers($ar_buf[1]); } else { $processlist = glob('/proc/*/cmdline', GLOB_NOSORT); if (($total = count($processlist)) > 0) { $count = 0; $buf = ""; for ($i = 0; $i < $total; $i++) { if (CommonFunctions::rfts($processlist[$i], $buf, 0, 4096, false)) { $name = str_replace(chr(0), ' ', trim($buf)); if (preg_match("/^-/", $name)) { $count++; } } } if ($count > 0) { $this->sys->setUsers($count); } } } } /** * IP of the Host * * @return void */ protected function _ip() { if (PSI_USE_VHOST === true) { if ((($result = getenv('SERVER_ADDR')) || ($result = getenv('LOCAL_ADDR'))) //is server address defined && !strstr($result, '.') && strstr($result, ':')){ //is IPv6, quick version of preg_match('/\(([[0-9A-Fa-f\:]+)\)/', $result) $dnsrec = dns_get_record($this->sys->getHostname(), DNS_AAAA); if (isset($dnsrec[0]['ipv6'])) { //is DNS IPv6 record $this->sys->setIp($dnsrec[0]['ipv6']); //from DNS (avoid IPv6 NAT translation) } else { $this->sys->setIp(preg_replace('/^::ffff:/i', '', $result)); //from SERVER_ADDR or LOCAL_ADDR } } else { $this->sys->setIp(gethostbyname($this->sys->getHostname())); //IPv4 only } } else { if (($result = getenv('SERVER_ADDR')) || ($result = getenv('LOCAL_ADDR'))) { $this->sys->setIp(preg_replace('/^::ffff:/i', '', $result)); } else { $this->sys->setIp(gethostbyname($this->sys->getHostname())); } } } /** * get the filled or unfilled (with default values) System object * * @see PSI_Interface_OS::getSys() * * @return System */ final public function getSys() { $this->build(); $this->_ip(); return $this->sys; } } phpsysinfo-3.2.5/includes/os/class.OpenBSD.inc.php000066400000000000000000000201261265516077000220030ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.OpenBSD.inc.php 621 2012-07-29 18:49:04Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * OpenBSD sysinfo class * get all the required information from OpenBSD systems * * @category PHP * @package PSI OpenBSD OS class * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class OpenBSD extends BSDCommon { /** * define the regexp for log parser */ public function __construct() { parent::__construct(); // $this->setCPURegExp1("/^cpu(.*) (.*) MHz/"); $this->setCPURegExp2("/(.*),(.*),(.*),(.*),(.*)/"); $this->setSCSIRegExp1("/^(.*) at scsibus.*: <(.*)> .*/"); $this->setSCSIRegExp2("/^(da[0-9]+): (.*)MB /"); $this->setPCIRegExp1("/(.*) at pci[0-9]+ .* \"(.*)\"/"); $this->setPCIRegExp2("/\"(.*)\" (.*).* at [.0-9]+ irq/"); } /** * UpTime * time the system is running * * @return void */ private function _uptime() { $a = $this->grabkey('kern.boottime'); $this->sys->setUptime(time() - $a); } /** * get network information * * @return void */ private function _network() { CommonFunctions::executeProgram('netstat', '-nbdi | cut -c1-25,44- | grep Link | grep -v \'* \'', $netstat_b, PSI_DEBUG); CommonFunctions::executeProgram('netstat', '-ndi | cut -c1-25,44- | grep Link | grep -v \'* \'', $netstat_n, PSI_DEBUG); $lines_b = preg_split("/\n/", $netstat_b, -1, PREG_SPLIT_NO_EMPTY); $lines_n = preg_split("/\n/", $netstat_n, -1, PREG_SPLIT_NO_EMPTY); for ($i = 0, $max = sizeof($lines_b); $i < $max; $i++) { $ar_buf_b = preg_split("/\s+/", $lines_b[$i]); $ar_buf_n = preg_split("/\s+/", $lines_n[$i]); if (!empty($ar_buf_b[0]) && (!empty($ar_buf_n[3]) || ($ar_buf_n[3] === "0"))) { $dev = new NetDevice(); $dev->setName($ar_buf_b[0]); $dev->setTxBytes($ar_buf_b[4]); $dev->setRxBytes($ar_buf_b[3]); $dev->setErrors($ar_buf_n[4] + $ar_buf_n[6]); $dev->setDrops($ar_buf_n[8]); if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS) && (CommonFunctions::executeProgram('ifconfig', $ar_buf_b[0].' 2>/dev/null', $bufr2, PSI_DEBUG))) { $speedinfo = ""; $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe2 as $buf2) { if (preg_match('/^\s+lladdr\s+(\S+)/i', $buf2, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').preg_replace('/:/', '-', strtoupper($ar_buf2[1]))); elseif (preg_match('/^\s+inet\s+(\S+)\s+netmask/i', $buf2, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1]); elseif ((preg_match('/^\s+inet6\s+([^\s%]+)\s+prefixlen/i', $buf2, $ar_buf2) || preg_match('/^\s+inet6\s+([^\s%]+)%\S+\s+prefixlen/i', $buf2, $ar_buf2)) && ($ar_buf2[1]!="::") && !preg_match('/^fe80::/i', $ar_buf2[1])) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').strtolower($ar_buf2[1])); elseif (preg_match('/^\s+media:\s+/i', $buf2) && preg_match('/[\(\s](\d+)(G*)base/i', $buf2, $ar_buf2)) { if (isset($ar_buf2[2]) && strtoupper($ar_buf2[2])=="G") { $unit = "G"; } else { $unit = "M"; } if (preg_match('/\s(\S+)-duplex/i', $buf2, $ar_buf3)) $speedinfo = $ar_buf2[1].$unit.'b/s '.strtolower($ar_buf3[1]); else $speedinfo = $ar_buf2[1].$unit.'b/s'; } } if ($speedinfo != "") $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$speedinfo); } $this->sys->setNetDevices($dev); } } } /** * IDE information * * @return void */ protected function ide() { foreach ($this->readdmesg() as $line) { if (preg_match('/^(.*) at pciide[0-9]+ (.*): <(.*)>/', $line, $ar_buf)) { $dev = new HWDevice(); $dev->setName($ar_buf[0]); // now loop again and find the capacity foreach ($this->readdmesg() as $line2) { if (preg_match("/^(".$ar_buf[0]."): (.*), (.*), (.*)MB, .*$/", $line2, $ar_buf_n)) { $dev->setCapacity($ar_buf_n[4] * 2048 * 1.049); } } $this->sys->setIdeDevices($dev); } } } /** * get CPU information * * @return void */ protected function cpuinfo() { $dev = new CpuDevice(); $dev->setModel($this->grabkey('hw.model')); $dev->setCpuSpeed($this->grabkey('hw.cpuspeed')); $was = false; foreach ($this->readdmesg() as $line) { if (preg_match("/^cpu[0-9]+: (.*)/", $line, $ar_buf)) { $was = true; if (preg_match("/^cpu[0-9]+: (\d+)([KM])B (.*) L2 cache/", $line, $ar_buf2)) { if ($ar_buf2[2]=="M") { $dev->setCache($ar_buf2[1]*1024*1024); } elseif ($ar_buf2[2]=="K") { $dev->setCache($ar_buf2[1]*1024); } } else { $feats = preg_split("/,/", strtolower(trim($ar_buf[1])), -1, PREG_SPLIT_NO_EMPTY); foreach ($feats as $feat) { if (($feat=="vmx") || ($feat=="svm")) { $dev->setVirt($feat); } } } } elseif ($was) { break; } } $ncpu = $this->grabkey('hw.ncpu'); if (is_null($ncpu) || (trim($ncpu) == "") || (!($ncpu >= 1))) $ncpu = 1; for ($ncpu ; $ncpu > 0 ; $ncpu--) { $this->sys->setCpus($dev); } } /** * get icon name * * @return void */ private function _distroicon() { $this->sys->setDistributionIcon('OpenBSD.png'); } /** * Processes * * @return void */ protected function _processes() { if (CommonFunctions::executeProgram('ps', 'aux', $bufr, PSI_DEBUG)) { $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); $processes['*'] = 0; foreach ($lines as $line) { if (preg_match("/^\S+\s+\d+\s+\S+\s+\S+\s+\d+\s+\d+\s+\S+\s+(\w)/", $line, $ar_buf)) { $processes['*']++; $state = $ar_buf[1]; if ($state == 'I') $state = 'S'; //linux format if (isset($processes[$state])) { $processes[$state]++; } else { $processes[$state] = 1; } } } if ($processes['*'] > 0) { $this->sys->setProcesses($processes); } } } /** * get the information * * @see BSDCommon::build() * * @return Void */ public function build() { parent::build(); $this->_distroicon(); $this->_network(); $this->_uptime(); $this->_processes(); } } phpsysinfo-3.2.5/includes/os/class.QNX.inc.php000066400000000000000000000147561265516077000212330ustar00rootroot00000000000000 * @copyright 2012 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.QNX.inc.php 687 2012-09-06 20:54:49Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * QNX sysinfo class * get all the required information from QNX system * * @category PHP * @package PSI QNX OS class * @author Mieczyslaw Nalewaj * @copyright 2012 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class QNX extends OS { /** * content of the syslog * * @var array */ private $_dmesg = array(); /** * call parent constructor */ public function __construct() { parent::__construct(); } /** * get the cpu information * * @return array */ protected function _cpuinfo() { if (CommonFunctions::executeProgram('pidin', 'info', $buf) && preg_match('/^Processor\d+: (.*)/m', $buf)) { $lines = preg_split("/\n/", $buf, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { if (preg_match('/^Processor\d+: (.+)/', $line, $proc)) { $dev = new CpuDevice(); $dev->SetModel(trim($proc[1])); if (preg_match('/(\d+)MHz/', $proc[1], $mhz)) { $dev->setCpuSpeed($mhz[1]); } $this->sys->setCpus($dev); } } } } /** * QNX Version * * @return void */ private function _kernel() { if (CommonFunctions::executeProgram('uname', '-rvm', $ret)) { $this->sys->setKernel($ret); } } /** * Distribution * * @return void */ protected function _distro() { if (CommonFunctions::executeProgram('uname', '-sr', $ret)) $this->sys->setDistribution($ret); else $this->sys->setDistribution('QNX'); $this->sys->setDistributionIcon('QNX.png'); } /** * UpTime * time the system is running * * @return void */ private function _uptime() { if (CommonFunctions::executeProgram('pidin', 'info', $buf) && preg_match('/^.* BootTime:(.*)/', $buf, $bstart) && CommonFunctions::executeProgram('date', '', $bstop)) { /* default error handler */ if (function_exists('errorHandlerPsi')) { restore_error_handler(); } /* fatal errors only */ $old_err_rep = error_reporting(); error_reporting(E_ERROR); $uptime = strtotime($bstop)-strtotime($bstart[1]); if ($uptime > 0) $this->sys->setUptime($uptime); /* restore error level */ error_reporting($old_err_rep); /* restore error handler */ if (function_exists('errorHandlerPsi')) { set_error_handler('errorHandlerPsi'); } } } /** * Number of Users * * @return void */ protected function _users() { $this->sys->setUsers(1); } /** * Virtual Host Name * * @return void */ private function _hostname() { if (PSI_USE_VHOST === true) { $this->sys->setHostname(getenv('SERVER_NAME')); } else { if (CommonFunctions::executeProgram('uname', '-n', $result, PSI_DEBUG)) { $ip = gethostbyname($result); if ($ip != $result) { $this->sys->setHostname(gethostbyaddr($ip)); } } } } /** * Physical memory information and Swap Space information * * @return void */ private function _memory() { if (CommonFunctions::executeProgram('pidin', 'info', $buf) && preg_match('/^.* FreeMem:(\S+)Mb\/(\S+)Mb/', $buf, $memm)) { $this->sys->setMemTotal(1024*1024*$memm[2]); $this->sys->setMemFree(1024*1024*$memm[1]); $this->sys->setMemUsed(1024*1024*($memm[2]-$memm[1])); } } /** * filesystem information * * @return void */ private function _filesystems() { $arrResult = Parser::df("-P 2>/dev/null"); foreach ($arrResult as $dev) { $this->sys->setDiskDevices($dev); } } /** * network information * * @return void */ private function _network() { if (CommonFunctions::executeProgram('ifconfig', '', $bufr, PSI_DEBUG)) { $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); $was = false; foreach ($lines as $line) { if (preg_match("/^([^\s:]+)/", $line, $ar_buf)) { if ($was) { $this->sys->setNetDevices($dev); } $dev = new NetDevice(); $dev->setName($ar_buf[1]); $was = true; } else { if ($was) { if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) { if (preg_match('/^\s+address:\s*(\S+)/i', $line, $ar_buf2)) { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').preg_replace('/:/', '-', strtoupper($ar_buf2[1]))); } elseif (preg_match('/^\s+inet\s+(\S+)\s+netmask/i', $line, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1]); } } } } if ($was) { $this->sys->setNetDevices($dev); } } } /** * get the information * * @return Void */ public function build() { $this->error->addError("WARN", "The QNX version of phpSysInfo is a work in progress, some things currently don't work"); $this->_distro(); $this->_hostname(); $this->_kernel(); $this->_uptime(); $this->_users(); $this->_cpuinfo(); $this->_memory(); $this->_filesystems(); $this->_network(); } } phpsysinfo-3.2.5/includes/os/class.SunOS.inc.php000066400000000000000000000305721265516077000215660ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.SunOS.inc.php 687 2012-09-06 20:54:49Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * SunOS sysinfo class * get all the required information from SunOS systems * * @category PHP * @package PSI SunOS OS class * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class SunOS extends OS { /** * Extract kernel values via kstat() interface * * @param string $key key for kstat programm * * @return string */ private function _kstat($key) { if (CommonFunctions::executeProgram('kstat', '-p d '.$key, $m, PSI_DEBUG) && ($m!=="")) { list($key, $value) = preg_split("/\t/", $m, 2); return trim($value); } else { return ''; } } /** * Virtual Host Name * * @return void */ private function _hostname() { if (PSI_USE_VHOST === true) { $this->sys->setHostname(getenv('SERVER_NAME')); } else { if (CommonFunctions::executeProgram('uname', '-n', $result, PSI_DEBUG)) { $ip = gethostbyname($result); if ($ip != $result) { $this->sys->setHostname(gethostbyaddr($ip)); } } } } /** * Kernel Version * * @return void */ private function _kernel() { if (CommonFunctions::executeProgram('uname', '-s', $os, PSI_DEBUG) && ($os!="")) { if (CommonFunctions::executeProgram('uname', '-r', $version, PSI_DEBUG) && ($version!="")) { $os.=' '.$version; } if (CommonFunctions::executeProgram('uname', '-v', $subversion, PSI_DEBUG) && ($subversion!="")) { $os.=' ('.$subversion.')'; } if (CommonFunctions::executeProgram('uname', '-i', $platform, PSI_DEBUG) && ($platform!="")) { $os.=' '.$platform; } $this->sys->setKernel($os); } } /** * UpTime * time the system is running * * @return void */ private function _uptime() { $this->sys->setUptime(time() - $this->_kstat('unix:0:system_misc:boot_time')); } /** * Processor Load * optionally create a loadbar * * @return void */ private function _loadavg() { $load1 = $this->_kstat('unix:0:system_misc:avenrun_1min'); $load5 = $this->_kstat('unix:0:system_misc:avenrun_5min'); $load15 = $this->_kstat('unix:0:system_misc:avenrun_15min'); $this->sys->setLoad(round($load1 / 256, 2).' '.round($load5 / 256, 2).' '.round($load15 / 256, 2)); } /** * CPU information * * @return void */ private function _cpuinfo() { if (CommonFunctions::executeProgram('kstat', '-p d cpu_info:*:cpu_info*:core_id', $m, PSI_DEBUG) && ($m!=="")) { $cpuc = count(preg_split('/\n/', $m, -1, PREG_SPLIT_NO_EMPTY)); for ($cpu=0; $cpu < $cpuc; $cpu++) { $dev = new CpuDevice(); if (($buf = $this->_kstat('cpu_info:'.$cpu.':cpu_info'.$cpu.':clock_MHz')) !== "") { $dev->setCpuSpeed($buf); } if (($buf = $this->_kstat('cpu_info:'.$cpu.':cpu_info'.$cpu.':current_clock_Hz')) !== "") { $dev->setCpuSpeedMax($buf/1000000); } if (($buf =$this->_kstat('cpu_info:'.$cpu.':cpu_info'.$cpu.':brand')) !== "") { $dev->setModel($buf); } elseif (($buf =$this->_kstat('cpu_info:'.$cpu.':cpu_info'.$cpu.':cpu_type')) !== "") { $dev->setModel($buf); } elseif (CommonFunctions::executeProgram('uname', '-p', $buf, PSI_DEBUG) && ($buf!="")) { $dev->setModel($buf); } elseif (CommonFunctions::executeProgram('uname', '-i', $buf, PSI_DEBUG) && ($buf!="")) { $dev->setModel($buf); } $this->sys->setCpus($dev); } } } /** * Network devices * * @return void */ private function _network() { if (CommonFunctions::executeProgram('netstat', '-ni | awk \'(NF ==10){print;}\'', $netstat, PSI_DEBUG)) { $lines = preg_split("/\n/", $netstat, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { $ar_buf = preg_split("/\s+/", $line); if (!empty($ar_buf[0]) && $ar_buf[0] !== 'Name') { $dev = new NetDevice(); $dev->setName($ar_buf[0]); $results[$ar_buf[0]]['errs'] = $ar_buf[5] + $ar_buf[7]; if (preg_match('/^(\D+)(\d+)$/', $ar_buf[0], $intf)) { $prefix = $intf[1].':'.$intf[2].':'.$intf[1].$intf[2].':'; } elseif (preg_match('/^(\D.*)(\d+)$/', $ar_buf[0], $intf)) { $prefix = $intf[1].':'.$intf[2].':mac:'; } else { $prefix = ""; } if ($prefix !== "") { $cnt = $this->_kstat($prefix.'drop'); if ($cnt > 0) { $dev->setDrops($cnt); } $cnt = $this->_kstat($prefix.'obytes64'); if ($cnt > 0) { $dev->setTxBytes($cnt); } $cnt = $this->_kstat($prefix.'rbytes64'); if ($cnt > 0) { $dev->setRxBytes($cnt); } } if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) { if (CommonFunctions::executeProgram('ifconfig', $ar_buf[0], $bufr2, PSI_DEBUG) && ($bufr2!=="")) { $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe2 as $buf2) { if (preg_match('/^\s+ether\s+(\S+)/i', $buf2, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').preg_replace('/:/', '-', strtoupper($ar_buf2[1]))); elseif (preg_match('/^\s+inet\s+(\S+)\s+netmask/i', $buf2, $ar_buf2)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1]); } } if (CommonFunctions::executeProgram('ifconfig', $ar_buf[0].' inet6', $bufr2, PSI_DEBUG) && ($bufr2!=="")) { $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY); foreach ($bufe2 as $buf2) { if (preg_match('/^\s+inet6\s+([^\s\/]+)/i', $buf2, $ar_buf2) && ($ar_buf2[1]!="::") && !preg_match('/^fe80::/i', $ar_buf2[1])) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').strtolower($ar_buf2[1])); } } } $this->sys->setNetDevices($dev); } } } } /** * Physical memory information and Swap Space information * * @return void */ private function _memory() { $pagesize = $this->_kstat('unix:0:seg_cache:slab_size'); $this->sys->setMemTotal($this->_kstat('unix:0:system_pages:pagestotal') * $pagesize); $this->sys->setMemUsed($this->_kstat('unix:0:system_pages:pageslocked') * $pagesize); $this->sys->setMemFree($this->_kstat('unix:0:system_pages:pagesfree') * $pagesize); $dev = new DiskDevice(); $dev->setName('SWAP'); $dev->setFsType('swap'); $dev->setMountPoint('SWAP'); $dev->setTotal($this->_kstat('unix:0:vminfo:swap_avail') / 1024); $dev->setUsed($this->_kstat('unix:0:vminfo:swap_alloc') / 1024); $dev->setFree($this->_kstat('unix:0:vminfo:swap_free') / 1024); $this->sys->setSwapDevices($dev); } /** * filesystem information * * @return void */ private function _filesystems() { if (CommonFunctions::executeProgram('df', '-k', $df, PSI_DEBUG)) { $df = preg_replace('/\n\s/m', ' ', $df); $mounts = preg_split("/\n/", $df, -1, PREG_SPLIT_NO_EMPTY); foreach ($mounts as $mount) { $ar_buf = preg_split('/\s+/', $mount, 6); if (!empty($ar_buf[0]) && $ar_buf[0] !== 'Filesystem') { $dev = new DiskDevice(); $dev->setName($ar_buf[0]); $dev->setTotal($ar_buf[1] * 1024); $dev->setUsed($ar_buf[2] * 1024); $dev->setFree($ar_buf[3] * 1024); $dev->setMountPoint($ar_buf[5]); if (CommonFunctions::executeProgram('df', '-n', $dftypes, PSI_DEBUG)) { $mounttypes = preg_split("/\n/", $dftypes, -1, PREG_SPLIT_NO_EMPTY); foreach ($mounttypes as $type) { $ty_buf = preg_split('/:/', $type, 2); if (trim($ty_buf[0]) == $dev->getMountPoint()) { $dev->setFsType($ty_buf[1]); break; } } } elseif (CommonFunctions::executeProgram('df', '-T', $dftypes, PSI_DEBUG)) { $dftypes = preg_replace('/\n\s/m', ' ', $dftypes); $mounttypes = preg_split("/\n/", $dftypes, -1, PREG_SPLIT_NO_EMPTY); foreach ($mounttypes as $type) { $ty_buf = preg_split("/\s+/", $type, 3); if ($ty_buf[0] == $dev->getName()) { $dev->setFsType($ty_buf[1]); break; } } } $this->sys->setDiskDevices($dev); } } } } /** * Distribution Icon * * @return void */ private function _distro() { $this->sys->setDistribution('SunOS'); $this->sys->setDistributionIcon('SunOS.png'); } /** * Processes * * @return void */ protected function _processes() { if (CommonFunctions::executeProgram('ps', 'aux', $bufr, PSI_DEBUG)) { $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); $processes['*'] = 0; foreach ($lines as $line) { if (preg_match("/^\S+\s+\d+\s+\S+\s+\S+\s+\d+\s+\d+\s+\S+\s+(\w)/", $line, $ar_buf)) { $processes['*']++; $state = $ar_buf[1]; if ($state == 'O') $state = 'R'; //linux format elseif ($state == 'W') $state = 'D'; elseif ($state == 'D') $state = 'd'; //invalid if (isset($processes[$state])) { $processes[$state]++; } else { $processes[$state] = 1; } } } if ($processes['*'] > 0) { $this->sys->setProcesses($processes); } } } /** * get the information * * @see PSI_Interface_OS::build() * * @return Void */ public function build() { $this->error->addError("WARN", "The SunOS version of phpSysInfo is a work in progress, some things currently don't work"); $this->_distro(); $this->_hostname(); $this->_kernel(); $this->_uptime(); $this->_users(); $this->_loadavg(); $this->_cpuinfo(); $this->_network(); $this->_memory(); $this->_filesystems(); $this->_processes(); } } phpsysinfo-3.2.5/includes/os/class.WINNT.inc.php000066400000000000000000000631571265516077000214630ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.WINNT.inc.php 699 2012-09-15 11:57:13Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * WINNT sysinfo class * get all the required information from WINNT systems * information are retrieved through the WMI interface * * @category PHP * @package PSI WINNT OS class * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class WINNT extends OS { /** * holds the COM object that we pull all the WMI data from * * @var Object */ private $_wmi = null; /** * holds all devices, which are in the system * * @var array */ private $_wmidevices; /** * store language encoding of the system to convert some output to utf-8 * * @var string */ private $_codepage = null; /** * store language of the system * * @var string */ private $_syslang = null; /** * build the global Error object and create the WMI connection */ public function __construct() { parent::__construct(); // don't set this params for local connection, it will not work $strHostname = ''; $strUser = ''; $strPassword = ''; try { // initialize the wmi object $objLocator = new COM('WbemScripting.SWbemLocator'); if ($strHostname == "") { $this->_wmi = $objLocator->ConnectServer(); } else { $this->_wmi = $objLocator->ConnectServer($strHostname, 'root\CIMv2', $strHostname.'\\'.$strUser, $strPassword); } } catch (Exception $e) { $this->error->addError("WMI connect error", "PhpSysInfo can not connect to the WMI interface for security reasons.\nCheck an authentication mechanism for the directory where phpSysInfo is installed."); } $this->_getCodeSet(); } /** * store the codepage of the os for converting some strings to utf-8 * * @return void */ private function _getCodeSet() { $buffer = CommonFunctions::getWMI($this->_wmi, 'Win32_OperatingSystem', array('CodeSet', 'OSLanguage')); if ($buffer) { $this->_codepage = 'windows-'.$buffer[0]['CodeSet']; $lang = ""; if (is_readable(APP_ROOT.'/data/languages.ini') && ($langdata = @parse_ini_file(APP_ROOT.'/data/languages.ini', true))) { if (isset($langdata['WINNT'][$buffer[0]['OSLanguage']])) { $lang = $langdata['WINNT'][$buffer[0]['OSLanguage']]; } } if ($lang == "") { $lang = 'Unknown'; } $this->_syslang = $lang.' ('.$buffer[0]['OSLanguage'].')'; } } /** * retrieve different device types from the system based on selector * * @param string $strType type of the devices that should be returned * * @return array list of devices of the specified type */ private function _devicelist($strType) { if (empty($this->_wmidevices)) { $this->_wmidevices = CommonFunctions::getWMI($this->_wmi, 'Win32_PnPEntity', array('Name', 'PNPDeviceID')); } $list = array(); foreach ($this->_wmidevices as $device) { if (substr($device['PNPDeviceID'], 0, strpos($device['PNPDeviceID'], "\\") + 1) == ($strType."\\")) { $list[] = $device['Name']; } } return $list; } /** * Host Name * * @return void */ private function _hostname() { if (PSI_USE_VHOST === true) { if ($hnm = getenv('SERVER_NAME')) $this->sys->setHostname($hnm); } else { $buffer = CommonFunctions::getWMI($this->_wmi, 'Win32_ComputerSystem', array('Name')); if ($buffer) { $result = $buffer[0]['Name']; $ip = gethostbyname($result); if ($ip != $result) { $long = ip2long($ip); if (($long >= 167772160 && $long <= 184549375) || ($long >= -1408237568 && $long <= -1407188993) || ($long >= -1062731776 && $long <= -1062666241) || ($long >= 2130706432 && $long <= 2147483647) || $long == -1) { $this->sys->setHostname($result); //internal ip } else { $this->sys->setHostname(gethostbyaddr($ip)); } } } else { if ($hnm = getenv('COMPUTERNAME')) $this->sys->setHostname($hnm); } } } /** * UpTime * time the system is running * * @return void */ private function _uptime() { $result = 0; date_default_timezone_set('UTC'); $buffer = CommonFunctions::getWMI($this->_wmi, 'Win32_OperatingSystem', array('LastBootUpTime', 'LocalDateTime')); if ($buffer) { $byear = intval(substr($buffer[0]['LastBootUpTime'], 0, 4)); $bmonth = intval(substr($buffer[0]['LastBootUpTime'], 4, 2)); $bday = intval(substr($buffer[0]['LastBootUpTime'], 6, 2)); $bhour = intval(substr($buffer[0]['LastBootUpTime'], 8, 2)); $bminute = intval(substr($buffer[0]['LastBootUpTime'], 10, 2)); $bseconds = intval(substr($buffer[0]['LastBootUpTime'], 12, 2)); $lyear = intval(substr($buffer[0]['LocalDateTime'], 0, 4)); $lmonth = intval(substr($buffer[0]['LocalDateTime'], 4, 2)); $lday = intval(substr($buffer[0]['LocalDateTime'], 6, 2)); $lhour = intval(substr($buffer[0]['LocalDateTime'], 8, 2)); $lminute = intval(substr($buffer[0]['LocalDateTime'], 10, 2)); $lseconds = intval(substr($buffer[0]['LocalDateTime'], 12, 2)); $boottime = mktime($bhour, $bminute, $bseconds, $bmonth, $bday, $byear); $localtime = mktime($lhour, $lminute, $lseconds, $lmonth, $lday, $lyear); $result = $localtime - $boottime; $this->sys->setUptime($result); } } /** * Number of Users * * @return void */ protected function _users() { if (CommonFunctions::executeProgram("quser", "", $strBuf, false) && (strlen($strBuf) > 0)) { $lines = preg_split('/\n/', $strBuf); $users = count($lines)-1; } else { $users = 0; $buffer = CommonFunctions::getWMI($this->_wmi, 'Win32_Process', array('Caption')); foreach ($buffer as $process) { if (strtoupper($process['Caption']) == strtoupper('explorer.exe')) { $users++; } } } $this->sys->setUsers($users); } /** * Distribution * * @return void */ private function _distro() { $buffer = CommonFunctions::getWMI($this->_wmi, 'Win32_OperatingSystem', array('Version', 'ServicePackMajorVersion', 'Caption', 'OSArchitecture')); if ($buffer) { $kernel = $buffer[0]['Version']; if ($buffer[0]['ServicePackMajorVersion'] > 0) { $kernel .= ' SP'.$buffer[0]['ServicePackMajorVersion']; } if (isset($buffer[0]['OSArchitecture']) && preg_match("/^(\d+)/", $buffer[0]['OSArchitecture'], $bits)) { $this->sys->setKernel($kernel.' ('.$bits[1].'-bit)'); } elseif (($allCpus = CommonFunctions::getWMI($this->_wmi, 'Win32_Processor', array('AddressWidth'))) && isset($allCpus[0]['AddressWidth'])) { $this->sys->setKernel($kernel.' ('.$allCpus[0]['AddressWidth'].'-bit)'); } else { $this->sys->setKernel($kernel); } $this->sys->setDistribution($buffer[0]['Caption']); if ((($kernel[1] == ".") && ($kernel[0] <5)) || (substr($kernel, 0, 4) == "5.0.")) $icon = 'Win2000.png'; elseif ((substr($kernel, 0, 4) == "6.0.") || (substr($kernel, 0, 4) == "6.1.")) $icon = 'WinVista.png'; elseif ((substr($kernel, 0, 4) == "6.2.") || (substr($kernel, 0, 4) == "6.3.") || (substr($kernel, 0, 4) == "6.4.") || (substr($kernel, 0, 5) == "10.0.")) $icon = 'Win8.png'; else $icon = 'WinXP.png'; $this->sys->setDistributionIcon($icon); } elseif (CommonFunctions::executeProgram("cmd", "/c ver 2>nul", $ver_value, false)) { if (preg_match("/ReactOS\r?\nVersion\s+(.+)/", $ver_value, $ar_temp)) { $this->sys->setDistribution("ReactOS"); $this->sys->setKernel($ar_temp[1]); $this->sys->setDistributionIcon('ReactOS.png'); } elseif (preg_match("/^(Microsoft [^\[]*)\s*\[\D*\s*(.+)\]/", $ver_value, $ar_temp)) { $this->sys->setDistribution($ar_temp[1]); $this->sys->setKernel($ar_temp[2]); $this->sys->setDistributionIcon('Win2000.png'); } else { $this->sys->setDistribution("WinNT"); $this->sys->setDistributionIcon('Win2000.png'); } } else { $this->sys->setDistribution("WinNT"); $this->sys->setDistributionIcon('Win2000.png'); } } /** * Processor Load * optionally create a loadbar * * @return void */ private function _loadavg() { $loadavg = ""; $sum = 0; $buffer = CommonFunctions::getWMI($this->_wmi, 'Win32_Processor', array('LoadPercentage')); if ($buffer) { foreach ($buffer as $load) { $value = $load['LoadPercentage']; $loadavg .= $value.' '; $sum += $value; } $this->sys->setLoad(trim($loadavg)); if (PSI_LOAD_BAR) { $this->sys->setLoadPercent($sum / count($buffer)); } } } /** * CPU information * * @return void */ private function _cpuinfo() { $allCpus = CommonFunctions::getWMI($this->_wmi, 'Win32_Processor', array('Name', 'L2CacheSize', 'CurrentClockSpeed', 'ExtClock', 'NumberOfCores', 'MaxClockSpeed')); foreach ($allCpus as $oneCpu) { $coreCount = 1; if (isset($oneCpu['NumberOfCores'])) { $coreCount = $oneCpu['NumberOfCores']; } for ($i = 0; $i < $coreCount; $i++) { $cpu = new CpuDevice(); $cpu->setModel($oneCpu['Name']); $cpu->setCache($oneCpu['L2CacheSize'] * 1024); $cpu->setCpuSpeed($oneCpu['CurrentClockSpeed']); $cpu->setBusSpeed($oneCpu['ExtClock']); if ($oneCpu['CurrentClockSpeed'] < $oneCpu['MaxClockSpeed']) $cpu->setCpuSpeedMax($oneCpu['MaxClockSpeed']); $this->sys->setCpus($cpu); } } } /** * Machine information * * @return void */ private function _machine() { $buffer = CommonFunctions::getWMI($this->_wmi, 'Win32_ComputerSystem', array('Manufacturer', 'Model')); if ($buffer) { $buf = ""; if (isset($buffer[0]['Manufacturer'])) { $buf .= ' '.$buffer[0]['Manufacturer']; } if (isset($buffer[0]['Model'])) { $buf .= ' '.$buffer[0]['Model']; } if (trim($buf) != "") { $this->sys->setMachine(trim($buf)); } } } /** * Hardwaredevices * * @return void */ private function _hardware() { foreach ($this->_devicelist('PCI') as $pciDev) { $dev = new HWDevice(); $dev->setName($pciDev); $this->sys->setPciDevices($dev); } foreach ($this->_devicelist('IDE') as $ideDev) { $dev = new HWDevice(); $dev->setName($ideDev); $this->sys->setIdeDevices($dev); } foreach ($this->_devicelist('SCSI') as $scsiDev) { $dev = new HWDevice(); $dev->setName($scsiDev); $this->sys->setScsiDevices($dev); } foreach ($this->_devicelist('USB') as $usbDev) { $dev = new HWDevice(); $dev->setName($usbDev); $this->sys->setUsbDevices($dev); } } /** * Network devices * * @return void */ private function _network() { $allDevices = CommonFunctions::getWMI($this->_wmi, 'Win32_PerfRawData_Tcpip_NetworkInterface', array('Name', 'BytesSentPersec', 'BytesTotalPersec', 'BytesReceivedPersec', 'PacketsReceivedErrors', 'PacketsReceivedDiscarded', 'CurrentBandwidth')); $allNetworkAdapterConfigurations = CommonFunctions::getWMI($this->_wmi, 'Win32_NetworkAdapterConfiguration', array('Description', 'MACAddress', 'IPAddress', 'SettingID')); $allNetworkAdapter = CommonFunctions::getWMI($this->_wmi, 'Win32_NetworkAdapter', array('Name', 'GUID', 'Speed')); foreach ($allDevices as $device) { $dev = new NetDevice(); $name = $device['Name']; if (preg_match('/^isatap\.({[A-Fa-f0-9\-]*})/', $name, $ar_name)) { //isatap device foreach ($allNetworkAdapterConfigurations as $NetworkAdapterConfiguration) { if ($ar_name[1]==$NetworkAdapterConfiguration['SettingID']) { $dev->setName($NetworkAdapterConfiguration['Description']); if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) { $dev->setInfo(preg_replace('/:/', '-', strtoupper($NetworkAdapterConfiguration['MACAddress']))); if (isset($NetworkAdapterConfiguration['IPAddress'])) foreach($NetworkAdapterConfiguration['IPAddress'] as $ipaddres) if (($ipaddres!="0.0.0.0") && ($ipaddres!="::") && !preg_match('/^fe80::/i', $ipaddres)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').strtolower($ipaddres)); } break; } } if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) { $speedinfo = null; foreach ($allNetworkAdapter as $NetworkAdapter) { if ($ar_name[1]==$NetworkAdapter['GUID']) { if (!empty($NetworkAdapter['Speed']) && ($NetworkAdapter['Speed']!=="9223372036854775807")) { if ($NetworkAdapter['Speed'] > 1000000000) { $speedinfo = ($NetworkAdapter['Speed']/1000000000)."Gb/s"; } else { $speedinfo = ($NetworkAdapter['Speed']/1000000)."Mb/s"; } } break; } } if (($speedinfo !== null) && ($speedinfo !== "")) { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$speedinfo); } elseif (($speedinfo = $device['CurrentBandwidth']) >= 1000000) { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').($speedinfo/1000000)."Mb/s"); } } } if ($dev->getName() == "") { //no isatap or no isatap description $cname=preg_replace('/[^A-Za-z0-9]/', '_', $name); //convert to canonical if (preg_match('/\s-\s([^-]*)$/', $name, $ar_name)) $name=substr($name, 0, strlen($name)-strlen($ar_name[0])); $dev->setName($name); if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) { foreach ($allNetworkAdapterConfigurations as $NetworkAdapterConfiguration) { if (preg_replace('/[^A-Za-z0-9]/', '_', $NetworkAdapterConfiguration['Description']) === $cname) { if ($dev->getInfo() !== null) { $dev->setInfo(''); //multiple with the same name } else { $dev->setInfo(preg_replace('/:/', '-', strtoupper($NetworkAdapterConfiguration['MACAddress']))); if (isset($NetworkAdapterConfiguration['IPAddress'])) foreach($NetworkAdapterConfiguration['IPAddress'] as $ipaddres) if (($ipaddres!="0.0.0.0") && !preg_match('/^fe80::/i', $ipaddres)) $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').strtolower($ipaddres)); } } } $speedinfo = null; foreach ($allNetworkAdapter as $NetworkAdapter) { if (preg_replace('/[^A-Za-z0-9]/', '_', $NetworkAdapter['Name']) === $cname) { if ($speedinfo !== null) { $speedinfo = ""; //multiple with the same name } else { if (!empty($NetworkAdapter['Speed']) && ($NetworkAdapter['Speed']!=="9223372036854775807")) { if ($NetworkAdapter['Speed'] > 1000000000) { $speedinfo = ($NetworkAdapter['Speed']/1000000000)."Gb/s"; } else { $speedinfo = ($NetworkAdapter['Speed']/1000000)."Mb/s"; } } else { $speedinfo = ""; } } } } if (($speedinfo !== null) && ($speedinfo !== "")) { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$speedinfo); } elseif (($speedinfo = $device['CurrentBandwidth']) >= 1000000) { $dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').($speedinfo/1000000)."Mb/s"); } } } // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_perfrawdata_tcpip_networkinterface.asp // there is a possible bug in the wmi interfaceabout uint32 and uint64: http://www.ureader.com/message/1244948.aspx, so that // magative numbers would occour, try to calculate the nagative value from total - positive number $txbytes = $device['BytesSentPersec']; $rxbytes = $device['BytesReceivedPersec']; if (($txbytes < 0) && ($rxbytes < 0)) { $txbytes += 4294967296; $rxbytes += 4294967296; } elseif ($txbytes < 0) { if ($device['BytesTotalPersec'] > $rxbytes) $txbytes = $device['BytesTotalPersec'] - $rxbytes; else $txbytes += 4294967296; } elseif ($rxbytes < 0) { if ($device['BytesTotalPersec'] > $txbytes) $rxbytes = $device['BytesTotalPersec'] - $txbytes; else $rxbytes += 4294967296; } $dev->setTxBytes($txbytes); $dev->setRxBytes($rxbytes); $dev->setErrors($device['PacketsReceivedErrors']); $dev->setDrops($device['PacketsReceivedDiscarded']); $this->sys->setNetDevices($dev); } } /** * Physical memory information and Swap Space information * * @link http://msdn2.microsoft.com/En-US/library/aa394239.aspx * @link http://msdn2.microsoft.com/en-us/library/aa394246.aspx * @return void */ private function _memory() { $buffer = CommonFunctions::getWMI($this->_wmi, "Win32_OperatingSystem", array('TotalVisibleMemorySize', 'FreePhysicalMemory')); if ($buffer) { $this->sys->setMemTotal($buffer[0]['TotalVisibleMemorySize'] * 1024); $this->sys->setMemFree($buffer[0]['FreePhysicalMemory'] * 1024); $this->sys->setMemUsed($this->sys->getMemTotal() - $this->sys->getMemFree()); } $buffer = CommonFunctions::getWMI($this->_wmi, 'Win32_PageFileUsage'); foreach ($buffer as $swapdevice) { $dev = new DiskDevice(); $dev->setName("SWAP"); $dev->setMountPoint($swapdevice['Name']); $dev->setTotal($swapdevice['AllocatedBaseSize'] * 1024 * 1024); $dev->setUsed($swapdevice['CurrentUsage'] * 1024 * 1024); $dev->setFree($dev->getTotal() - $dev->getUsed()); $dev->setFsType('swap'); $this->sys->setSwapDevices($dev); } } /** * filesystem information * * @return void */ private function _filesystems() { $typearray = array('Unknown', 'No Root Directory', 'Removable Disk', 'Local Disk', 'Network Drive', 'Compact Disc', 'RAM Disk'); $floppyarray = array('Unknown', '5 1/4 in.', '3 1/2 in.', '3 1/2 in.', '3 1/2 in.', '3 1/2 in.', '5 1/4 in.', '5 1/4 in.', '5 1/4 in.', '5 1/4 in.', '5 1/4 in.', 'Other', 'HD', '3 1/2 in.', '3 1/2 in.', '5 1/4 in.', '5 1/4 in.', '3 1/2 in.', '3 1/2 in.', '5 1/4 in.', '3 1/2 in.', '3 1/2 in.', '8 in.'); $buffer = CommonFunctions::getWMI($this->_wmi, 'Win32_LogicalDisk', array('Name', 'Size', 'FreeSpace', 'FileSystem', 'DriveType', 'MediaType')); foreach ($buffer as $filesystem) { $dev = new DiskDevice(); $dev->setMountPoint($filesystem['Name']); $dev->setFsType($filesystem['FileSystem']); if ($filesystem['Size'] > 0) { $dev->setTotal($filesystem['Size']); $dev->setFree($filesystem['FreeSpace']); $dev->setUsed($filesystem['Size'] - $filesystem['FreeSpace']); } if ($filesystem['MediaType'] != "" && $filesystem['DriveType'] == 2) { $dev->setName($typearray[$filesystem['DriveType']]." (".$floppyarray[$filesystem['MediaType']].")"); } else { $dev->setName($typearray[$filesystem['DriveType']]); } $this->sys->setDiskDevices($dev); } if (!$buffer && ($this->sys->getDistribution()=="ReactOS")) { // test for command 'free' on current disk if (CommonFunctions::executeProgram("cmd", "/c free 2>nul", $out_value, true)) { for ($letter='A'; $letter!='AA'; $letter++) if (CommonFunctions::executeProgram("cmd", "/c free ".$letter.": 2>nul", $out_value, false)) { if (preg_match('/\n\s*([\d\.\,]+).*\n\s*([\d\.\,]+).*\n\s*([\d\.\,]+).*$/', $out_value, $out_dig)) { $size = preg_replace('/(\.)|(\,)/', '', $out_dig[1]); $used = preg_replace('/(\.)|(\,)/', '', $out_dig[2]); $free = preg_replace('/(\.)|(\,)/', '', $out_dig[3]); if ($used + $free == $size) { $dev = new DiskDevice(); $dev->setMountPoint($letter.":"); $dev->setFsType('Unknown'); $dev->setTotal($size); $dev->setFree($free); $dev->setUsed($used); $this->sys->setDiskDevices($dev); } } } } } } /** * get os specific encoding * * @see OS::getEncoding() * * @return string */ public function getEncoding() { return $this->_codepage; } /** * get os specific language * * @see OS::getLanguage() * * @return string */ public function getLanguage() { return $this->_syslang; } public function _processes() { $processes['*'] = 0; if (CommonFunctions::executeProgram("qprocess", "*", $strBuf, false) && (strlen($strBuf) > 0)) { $lines = preg_split('/\n/', $strBuf); $processes['*'] = (count($lines)-1) - 3 ; //correction for process "qprocess *" } if ($processes['*'] <= 0) { $buffer = CommonFunctions::getWMI($this->_wmi, 'Win32_Process', array('Caption')); $processes['*'] = count($buffer); } $processes[' '] = $processes['*']; $this->sys->setProcesses($processes); } /** * get the information * * @see PSI_Interface_OS::build() * * @return Void */ public function build() { $this->_distro(); if ($this->sys->getDistribution()=="ReactOS") { $this->error->addError("WARN", "The ReactOS version of phpSysInfo is a work in progress, some things currently don't work"); } $this->_hostname(); $this->_users(); $this->_machine(); $this->_uptime(); $this->_cpuinfo(); $this->_network(); $this->_hardware(); $this->_filesystems(); $this->_memory(); $this->_loadavg(); $this->_processes(); } } phpsysinfo-3.2.5/includes/output/000077500000000000000000000000001265516077000171025ustar00rootroot00000000000000phpsysinfo-3.2.5/includes/output/class.Output.inc.php000066400000000000000000000026371265516077000227770ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.Output.inc.php 569 2012-04-16 06:08:18Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * basic output functions for all output formats * * @category PHP * @package PSI_Output * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ abstract class Output { /** * error object for logging errors * * @var Error */ protected $error; /** * call the parent constructor and check for needed extensions */ public function __construct() { $this->error = PSI_Error::singleton(); $this->_checkConfig(); CommonFunctions::checkForExtensions(); } /** * read the config file and check for existence * * @return void */ private function _checkConfig() { include_once APP_ROOT.'/read_config.php'; if ($this->error->errorsExist()) { $this->error->errorsAsXML(); } } } phpsysinfo-3.2.5/includes/output/class.Template.inc.php000066400000000000000000000037131265516077000232460ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.Output.inc.php 315 2009-09-02 15:48:31Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * basic output functions for all output formats * * @category PHP * @package PSI_Output * @author Damien Roth * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Template { /** * Vars used in the template * * @Array */ private $_vars; /** * Template file * * @String */ private $_file; /** * Constructor * * @param String $file the template file name */ public function __construct($file=null) { $this->_file = $file; $this->_vars = array(); } /** * Set a template variable. * * @param string variable name * @param string variable value */ public function set($name, $value) { $this->_vars[$name] = is_object($value) ? $value->fetch() : $value; } /** * Open, parse, and return the template file. * * @param string $file * * @return string */ public function fetch($file=null) { if (!$file) { $file = $this->_file; } // Extract the vars to local namespace extract($this->_vars); // Start output buffering ob_start(); include(APP_ROOT.$file); // Get the contents of the buffer $contents = ob_get_contents(); // End buffering and discard ob_end_clean(); return $contents; } } phpsysinfo-3.2.5/includes/output/class.Webpage.inc.php000066400000000000000000000134361265516077000230500ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.Webpage.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * generate the dynamic webpage * * @category PHP * @package PSI_Web * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Webpage extends Output implements PSI_Interface_Output { /** * configured indexname * * @var String */ private $_indexname; /** * configured language * * @var String */ private $_language; /** * configured template * * @var String */ private $_template; /** * all available templates * * @var Array */ private $_templates = array(); /** * configured bootstrap template * * @var String */ private $_bootstrap_template; /** * all available bootstrap templates * * @var Array */ private $_bootstrap_templates = array(); /** * all available languages * * @var Array */ private $_languages = array(); /** * configured show picklist language * * @var boolean */ private $_pick_language; /** * configured show picklist template * * @var boolean */ private $_pick_template; /** * check for all extensions that are needed, initialize needed vars and read phpsysinfo.ini */ public function __construct($indexname="dynamic") { $this->_indexname = $indexname; parent::__construct(); $this->_getTemplateList(); $this->_getLanguageList(); } /** * checking phpsysinfo.ini setting for template, if not supportet set phpsysinfo.css as default * checking phpsysinfo.ini setting for language, if not supported set en as default * * @return void */ private function _checkTemplateLanguage() { if (!defined("PSI_DEFAULT_TEMPLATE") || (($this->_template = strtolower(trim(PSI_DEFAULT_TEMPLATE))) == "") || !file_exists(APP_ROOT.'/templates/'.$this->_template.".css")) { $this->_template = 'phpsysinfo'; } if (!defined("PSI_DEFAULT_BOOTSTRAP_TEMPLATE") || (($this->_bootstrap_template = strtolower(trim(PSI_DEFAULT_BOOTSTRAP_TEMPLATE))) == "") || !file_exists(APP_ROOT.'/templates/'.$this->_bootstrap_template.".css")) { $this->_bootstrap_template = 'phpsysinfo'; } $this->_pick_template = !defined("PSI_SHOW_PICKLIST_TEMPLATE") || (PSI_SHOW_PICKLIST_TEMPLATE !== false); if (!defined("PSI_DEFAULT_LANG") || (($this->_language = strtolower(trim(PSI_DEFAULT_LANG))) == "") || !file_exists(APP_ROOT.'/language/'.$this->_language.".xml")) { $this->_language = 'en'; } $this->_pick_language = !defined("PSI_SHOW_PICKLIST_LANG") || (PSI_SHOW_PICKLIST_LANG !== false); } /** * get all available tamplates and store them in internal array * * @return void */ private function _getTemplateList() { $dirlist = CommonFunctions::gdc(APP_ROOT.'/templates/'); sort($dirlist); foreach ($dirlist as $file) { $tpl_ext = substr($file, strlen($file) - 4); $tpl_name = substr($file, 0, strlen($file) - 4); if ($tpl_ext === ".css") { if (preg_match("/(\S+)_bootstrap$/", $tpl_name, $ar_buf)) { array_push($this->_bootstrap_templates, $ar_buf[1]); } else { array_push($this->_templates, $tpl_name); } } } } /** * get all available translations and store them in internal array * * @return void */ private function _getLanguageList() { $dirlist = CommonFunctions::gdc(APP_ROOT.'/language/'); sort($dirlist); foreach ($dirlist as $file) { $lang_ext = substr($file, strlen($file) - 4); $lang_name = substr($file, 0, strlen($file) - 4); if ($lang_ext == ".xml") { array_push($this->_languages, $lang_name); } } } /** * render the page * * @return void */ public function run() { $this->_checkTemplateLanguage(); $tpl = new Template("/templates/html/index_".$this->_indexname.".html"); $tpl->set("template", $this->_template); $tpl->set("templates", $this->_templates); $tpl->set("bootstraptemplate", $this->_bootstrap_template); $tpl->set("bootstraptemplates", $this->_bootstrap_templates); $tpl->set("picktemplate", $this->_pick_template); $tpl->set("language", $this->_language); $tpl->set("languages", $this->_languages); $tpl->set("picklanguage", $this->_pick_language); $tpl->set("showCPUListExpanded", defined('PSI_SHOW_CPULIST_EXPANDED') ? (PSI_SHOW_CPULIST_EXPANDED ? 'true' : 'false') : 'true'); $tpl->set("showCPUInfoExpanded", defined('PSI_SHOW_CPUINFO_EXPANDED') ? (PSI_SHOW_CPUINFO_EXPANDED ? 'true' : 'false') : 'false'); $tpl->set("showNetworkInfosExpanded", defined('PSI_SHOW_NETWORK_INFOS_EXPANDED') ? (PSI_SHOW_NETWORK_INFOS_EXPANDED ? 'true' : 'false') : 'false'); $tpl->set("showMemoryInfosExpanded", defined('PSI_SHOW_MEMORY_INFOS_EXPANDED') ? (PSI_SHOW_MEMORY_INFOS_EXPANDED ? 'true' : 'false') : 'false'); echo $tpl->fetch(); } } phpsysinfo-3.2.5/includes/output/class.WebpageXML.inc.php000066400000000000000000000123251265516077000234250ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.WebpageXML.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * class for xml output * * @category PHP * @package PSI_XML * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class WebpageXML extends Output implements PSI_Interface_Output { /** * xml object that holds the generated xml * * @var XML */ private $_xml; /** * only plugin xml * * @var boolean */ private $_pluginRequest = false; /** * complete xml * * @var boolean */ private $_completeXML = false; /** * name of the plugin * * @var string */ private $_pluginName = null; /** * generate the output * * @return void */ private function _prepare() { if (!$this->_pluginRequest) { // Figure out which OS we are running on, and detect support if (!file_exists(APP_ROOT.'/includes/os/class.'.PSI_OS.'.inc.php')) { $this->error->addError("file_exists(class.".PSI_OS.".inc.php)", PSI_OS." is not currently supported"); } // check if there is a valid sensor configuration in phpsysinfo.ini $foundsp = array(); if (defined('PSI_SENSOR_PROGRAM') && is_string(PSI_SENSOR_PROGRAM)) { if (preg_match(ARRAY_EXP, PSI_SENSOR_PROGRAM)) { $sensorprograms = eval(strtolower(PSI_SENSOR_PROGRAM)); } else { $sensorprograms = array(strtolower(PSI_SENSOR_PROGRAM)); } foreach ($sensorprograms as $sensorprogram) { if (!file_exists(APP_ROOT.'/includes/mb/class.'.$sensorprogram.'.inc.php')) { $this->error->addError("file_exists(class.".htmlspecialchars($sensorprogram).".inc.php)", "specified sensor program is not supported"); } else { $foundsp[] = $sensorprogram; } } } /** * motherboard information * * @var serialized array */ define('PSI_MBINFO', serialize($foundsp)); // check if there is a valid ups configuration in phpsysinfo.ini $foundup = array(); if (defined('PSI_UPS_PROGRAM') && is_string(PSI_UPS_PROGRAM)) { if (preg_match(ARRAY_EXP, PSI_UPS_PROGRAM)) { $upsprograms = eval(strtolower(PSI_UPS_PROGRAM)); } else { $upsprograms = array(strtolower(PSI_UPS_PROGRAM)); } foreach ($upsprograms as $upsprogram) { if (!file_exists(APP_ROOT.'/includes/ups/class.'.$upsprogram.'.inc.php')) { $this->error->addError("file_exists(class.".htmlspecialchars($upsprogram).".inc.php)", "specified UPS program is not supported"); } else { $foundup[] = $upsprogram; } } } /** * ups information * * @var serialized array */ define('PSI_UPSINFO', serialize($foundup)); // if there are errors stop executing the script until they are fixed if ($this->error->errorsExist()) { $this->error->errorsAsXML(); } } // Create the XML if ($this->_pluginRequest) { $this->_xml = new XML(false, $this->_pluginName); } else { $this->_xml = new XML($this->_completeXML); } } /** * render the output * * @return void */ public function run() { header("Cache-Control: no-cache, must-revalidate\n"); header("Content-Type: text/xml\n\n"); $xml = $this->_xml->getXml(); echo $xml->asXML(); } /** * get XML as pure string * * @return string */ public function getXMLString() { $xml = $this->_xml->getXml(); return $xml->asXML(); } /** * set parameters for the XML generation process * * @param boolean $completeXML switch for complete xml with all plugins * @param string $plugin name of the plugin * * @return void */ public function __construct($completeXML, $plugin = null) { parent::__construct(); if ($completeXML) { $this->_completeXML = true; } if ($plugin) { if (in_array(strtolower($plugin), CommonFunctions::getPlugins())) { $this->_pluginName = $plugin; $this->_pluginRequest = true; } } $this->_prepare(); } } phpsysinfo-3.2.5/includes/output/class.WebpageXSLT.inc.php000066400000000000000000000027651265516077000235660ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.WebpageXSLT.inc.php 569 2012-04-16 06:08:18Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * generate a static webpage with xslt trasformation of the xml * * @category PHP * @package PSI_Web * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class WebpageXSLT extends WebpageXML implements PSI_Interface_Output { /** * call the parent constructor */ public function __construct() { parent::__construct(false, null); } /** * generate the static page * * @return void */ public function run() { CommonFunctions::checkForExtensions(array('xsl')); $xmlfile = $this->getXMLString(); $xslfile = "phpsysinfo.xslt"; $domxml = new DOMDocument(); $domxml->loadXML($xmlfile); $domxsl = new DOMDocument(); $domxsl->load($xslfile); $xsltproc = new XSLTProcessor; $xsltproc->importStyleSheet($domxsl); echo $xsltproc->transformToXML($domxml); } } phpsysinfo-3.2.5/includes/plugin/000077500000000000000000000000001265516077000170405ustar00rootroot00000000000000phpsysinfo-3.2.5/includes/plugin/class.PSI_Plugin.inc.php000066400000000000000000000111141265516077000233740ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.PSI_Plugin.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * basic functions to get a plugin working in phpSysinfo * every plugin must implement this abstract class to be a valid plugin, main tasks * of this class are reading the configuration file and check for the required files * (*.js, lang/en.xml) to get everything working, if we have errors here we log them * to our global error object * * @category PHP * @package PSI_Plugin * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ abstract class PSI_Plugin implements PSI_Interface_Plugin { /** * name of the plugin (classname) * * @var string */ private $_plugin_name = ""; /** * full directory path of the plugin * * @var string */ private $_plugin_base = ""; /** * global object for error handling * * @var Error */ protected $global_error = ""; /** * xml tamplate with header * * @var SimpleXMLExtended */ protected $xml; /** * build the global Error object, read the configuration and check if all files are available * for a minimalistic function of the plugin * * @param String $plugin_name name of the plugin * @param String $enc target encoding * * @return void */ public function __construct($plugin_name, $enc) { $this->global_error = PSI_Error::Singleton(); if (trim($plugin_name) != "") { $this->_plugin_name = $plugin_name; $this->_plugin_base = APP_ROOT."/plugins/".strtolower($this->_plugin_name)."/"; $this->_checkfiles(); $this->_getconfig(); } else { $this->global_error->addError("__construct()", "Parent constructor called without Plugin-Name!"); } $this->_createXml($enc); } /** * read the plugin configuration file, if we have one in the plugin directory * * @return void */ private function _getconfig() { if ((!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_ACCESS')) && (!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_FILE'))) { $this->global_error->addError("config.ini", "Config for plugin ".$this->_plugin_name." not exist!"); } } /** * check if there is a default translation file availabe and also the required js file for * appending the content of the plugin to the main webpage * * @return void */ private function _checkfiles() { if (!file_exists($this->_plugin_base."js/".strtolower($this->_plugin_name).".js")) { $this->global_error->addError("file_exists(".$this->_plugin_base."js/".strtolower($this->_plugin_name).".js)", "JS-File for Plugin '".$this->_plugin_name."' is missing!"); } else { if (!is_readable($this->_plugin_base."js/".strtolower($this->_plugin_name).".js")) { $this->global_error->addError("is_readable(".$this->_plugin_base."js/".strtolower($this->_plugin_name).".js)", "JS-File for Plugin '".$this->_plugin_name."' is not readable but present!"); } } if (!file_exists($this->_plugin_base."lang/en.xml")) { $this->global_error->addError("file_exists(".$this->_plugin_base."lang/en.xml)", "At least an english translation must exist for the plugin!"); } else { if (!is_readable($this->_plugin_base."lang/en.xml")) { $this->global_error->addError("is_readable(".$this->_plugin_base."js/".$this->_plugin_name.".js)", "The english translation can't be read but is present!"); } } } /** * create the xml template where plugin information are added to * * @param String $enc target encoding * * @return Void */ private function _createXml($enc) { $dom = new DOMDocument('1.0', 'UTF-8'); $root = $dom->createElement("Plugin_".$this->_plugin_name); $dom->appendChild($root); $this->xml = new SimpleXMLExtended(simplexml_import_dom($dom), $enc); } } phpsysinfo-3.2.5/includes/to/000077500000000000000000000000001265516077000161645ustar00rootroot00000000000000phpsysinfo-3.2.5/includes/to/class.MBInfo.inc.php000066400000000000000000000071301265516077000216640ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.MBInfo.inc.php 253 2009-06-17 13:07:50Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * MBInfo TO class * * @category PHP * @package PSI_TO * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class MBInfo { /** * array with SensorDevices for temperatures * * @see SensorDevice * * @var Array */ private $_mbTemp = array(); /** * array with SensorDevices for fans * * @see SensorDevice * * @var Array */ private $_mbFan = array(); /** * array with SensorDevices for voltages * * @see SensorDevice * * @var Array */ private $_mbVolt = array(); /** * array with SensorDevices for power * * @see SensorDevice * * @var Array */ private $_mbPower = array(); /** * array with SensorDevices for apmers * * @see SensorDevice * * @var Array */ private $_mbCurrent = array(); /** * Returns $_mbFan. * * @see System::$_mbFan * * @return Array */ public function getMbFan() { return $this->_mbFan; } /** * Sets $_mbFan. * * @param SensorDevice $mbFan fan device * * @see System::$_mbFan * * @return Void */ public function setMbFan($mbFan) { array_push($this->_mbFan, $mbFan); } /** * Returns $_mbTemp. * * @see System::$_mbTemp * * @return Array */ public function getMbTemp() { return $this->_mbTemp; } /** * Sets $_mbTemp. * * @param Sensor $mbTemp temp device * * @see System::$_mbTemp * * @return Void */ public function setMbTemp($mbTemp) { array_push($this->_mbTemp, $mbTemp); } /** * Returns $_mbVolt. * * @see System::$_mbVolt * * @return Array */ public function getMbVolt() { return $this->_mbVolt; } /** * Sets $_mbVolt. * * @param Sensor $mbVolt voltage device * * @see System::$_mbVolt * * @return Void */ public function setMbVolt($mbVolt) { array_push($this->_mbVolt, $mbVolt); } /** * Returns $_mbPower. * * @see System::$_mbPower * * @return Array */ public function getMbPower() { return $this->_mbPower; } /** * Sets $_mbPower. * * @param Sensor $mbPower power device * * @see System::$_mbPower * * @return Void */ public function setMbPower($mbPower) { array_push($this->_mbPower, $mbPower); } /** * Returns $_mbCurrent. * * @see System::$_mbCurrent * * @return Array */ public function getMbCurrent() { return $this->_mbCurrent; } /** * Sets $_mbCurrent. * * @param Sensor $mbCurrent current device * * @see System::$_mbCurrent * * @return Void */ public function setMbCurrent($mbCurrent) { array_push($this->_mbCurrent, $mbCurrent); } } phpsysinfo-3.2.5/includes/to/class.System.inc.php000066400000000000000000000536451265516077000220520ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.System.inc.php 255 2009-06-17 13:39:41Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * System TO class * * @category PHP * @package PSI_TO * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class System { /** * name of the host where phpSysInfo runs * * @var String */ private $_hostname = "localhost"; /** * ip of the host where phpSysInfo runs * * @var String */ private $_ip = "127.0.0.1"; /** * detailed Information about the kernel * * @var String */ private $_kernel = "Unknown"; /** * name of the distribution * * @var String */ private $_distribution = "Unknown"; /** * icon of the distribution (must be available in phpSysInfo) * * @var String */ private $_distributionIcon = "unknown.png"; /** * detailed Information about the machine name * * @var String */ private $_machine = ""; /** * time in sec how long the system is running * * @var Integer */ private $_uptime = 0; /** * count of users that are currently logged in * * @var Integer */ private $_users = 0; /** * load of the system * * @var String */ private $_load = ""; /** * load of the system in percent (all cpus, if more than one) * * @var Integer */ private $_loadPercent = null; /** * array with cpu devices * * @see CpuDevice * * @var Array */ private $_cpus = array(); /** * array with network devices * * @see NetDevice * * @var Array */ private $_netDevices = array(); /** * array with pci devices * * @see HWDevice * * @var Array */ private $_pciDevices = array(); /** * array with ide devices * * @see HWDevice * * @var Array */ private $_ideDevices = array(); /** * array with scsi devices * * @see HWDevice * * @var Array */ private $_scsiDevices = array(); /** * array with usb devices * * @see HWDevice * * @var Array */ private $_usbDevices = array(); /** * array with thunderbolt devices * * @see HWDevice * * @var Array */ private $_tbDevices = array(); /** * array with I2C devices * * @see HWDevice * * @var Array */ private $_i2cDevices = array(); /** * array with disk devices * * @see DiskDevice * * @var Array */ private $_diskDevices = array(); /** * free memory in bytes * * @var Integer */ private $_memFree = 0; /** * total memory in bytes * * @var Integer */ private $_memTotal = 0; /** * used memory in bytes * * @var Integer */ private $_memUsed = 0; /** * used memory by applications in bytes * * @var Integer */ private $_memApplication = null; /** * used memory for buffers in bytes * * @var Integer */ private $_memBuffer = null; /** * used memory for cache in bytes * * @var Integer */ private $_memCache = null; /** * array with swap devices * * @see DiskDevice * * @var Array */ private $_swapDevices = array(); /** * array of types of processes * * @var Array */ private $_processes = array(); /** * remove duplicate Entries and Count * * @param Array $arrDev list of HWDevices * * @see HWDevice * * @return Array */ public static function removeDupsAndCount($arrDev) { $result = array(); foreach ($arrDev as $dev) { if (count($result) === 0) { array_push($result, $dev); } else { $found = false; foreach ($result as $tmp) { if ($dev->equals($tmp)) { $tmp->setCount($tmp->getCount() + 1); $found = true; break; } } if (!$found) { array_push($result, $dev); } } } return $result; } /** * return percent of used memory * * @see System::_memUsed * @see System::_memTotal * * @return Integer */ public function getMemPercentUsed() { if ($this->_memTotal > 0) { return round($this->_memUsed / $this->_memTotal * 100); } else { return 0; } } /** * return percent of used memory for applications * * @see System::_memApplication * @see System::_memTotal * * @return Integer */ public function getMemPercentApplication() { if ($this->_memApplication !== null) { if (($this->_memApplication > 0) && ($this->_memTotal > 0)) { return round($this->_memApplication / $this->_memTotal * 100); } else { return 0; } } else { return null; } } /** * return percent of used memory for cache * * @see System::_memCache * @see System::_memTotal * * @return Integer */ public function getMemPercentCache() { if ($this->_memCache !== null) { if (($this->_memCache > 0) && ($this->_memTotal > 0)) { if (($this->_memApplication !== null) && ($this->_memApplication > 0)) { return round(($this->_memCache + $this->_memApplication) / $this->_memTotal * 100) - $this->getMemPercentApplication(); } else { return round($this->_memCache / $this->_memTotal * 100); } } else { return 0; } } else { return null; } } /** * return percent of used memory for buffer * * @see System::_memBuffer * @see System::_memTotal * * @return Integer */ public function getMemPercentBuffer() { if ($this->_memBuffer !== null) { if (($this->_memBuffer > 0) && ($this->_memTotal > 0)) { if (($this->_memCache !== null) && ($this->_memCache > 0)) { if (($this->_memApplication !== null) && ($this->_memApplication > 0)) { return round(($this->_memBuffer + $this->_memApplication + $this->_memCache) / $this->_memTotal * 100) - $this->getMemPercentApplication() - $this->getMemPercentCache(); } else { return round(($this->_memBuffer + $this->_memCache) / $this->_memTotal * 100) - $this->getMemPercentCache(); } } elseif (($this->_memApplication !== null) && ($this->_memApplication > 0)) { return round(($this->_memBuffer + $this->_memApplication) / $this->_memTotal * 100) - $this->getMemPercentApplication(); } else { return round($this->_memBuffer / $this->_memTotal * 100); } } else { return 0; } } else { return null; } } /** * Returns total free swap space * * @see System::_swapDevices * @see DiskDevice::getFree() * * @return Integer */ public function getSwapFree() { if (count($this->_swapDevices) > 0) { $free = 0; foreach ($this->_swapDevices as $dev) { $free += $dev->getFree(); } return $free; } return null; } /** * Returns total swap space * * @see System::_swapDevices * @see DiskDevice::getTotal() * * @return Integer */ public function getSwapTotal() { if (count($this->_swapDevices) > 0) { $total = 0; foreach ($this->_swapDevices as $dev) { $total += $dev->getTotal(); } return $total; } else { return null; } } /** * Returns total used swap space * * @see System::_swapDevices * @see DiskDevice::getUsed() * * @return Integer */ public function getSwapUsed() { if (count($this->_swapDevices) > 0) { $used = 0; foreach ($this->_swapDevices as $dev) { $used += $dev->getUsed(); } return $used; } else { return null; } } /** * return percent of total swap space used * * @see System::getSwapUsed() * @see System::getSwapTotal() * * @return Integer */ public function getSwapPercentUsed() { if ($this->getSwapTotal() !== null) { if ($this->getSwapTotal() > 0) { return round($this->getSwapUsed() / $this->getSwapTotal() * 100); } else { return 0; } } else { return null; } } /** * Returns $_distribution. * * @see System::$_distribution * * @return String */ public function getDistribution() { return $this->_distribution; } /** * Sets $_distribution. * * @param String $distribution distributionname * * @see System::$_distribution * * @return Void */ public function setDistribution($distribution) { $this->_distribution = $distribution; } /** * Returns $_distributionIcon. * * @see System::$_distributionIcon * * @return String */ public function getDistributionIcon() { return $this->_distributionIcon; } /** * Sets $_distributionIcon. * * @param String $distributionIcon distribution icon * * @see System::$_distributionIcon * * @return Void */ public function setDistributionIcon($distributionIcon) { $this->_distributionIcon = $distributionIcon; } /** * Returns $_hostname. * * @see System::$_hostname * * @return String */ public function getHostname() { return $this->_hostname; } /** * Sets $_hostname. * * @param String $hostname hostname * * @see System::$_hostname * * @return Void */ public function setHostname($hostname) { $this->_hostname = $hostname; } /** * Returns $_ip. * * @see System::$_ip * * @return String */ public function getIp() { return $this->_ip; } /** * Sets $_ip. * * @param String $ip IP * * @see System::$_ip * * @return Void */ public function setIp($ip) { $this->_ip = $ip; } /** * Returns $_kernel. * * @see System::$_kernel * * @return String */ public function getKernel() { return $this->_kernel; } /** * Sets $_kernel. * * @param String $kernel kernelname * * @see System::$_kernel * * @return Void */ public function setKernel($kernel) { $this->_kernel = $kernel; } /** * Returns $_load. * * @see System::$_load * * @return String */ public function getLoad() { return $this->_load; } /** * Sets $_load. * * @param String $load current system load * * @see System::$_load * * @return Void */ public function setLoad($load) { $this->_load = $load; } /** * Returns $_loadPercent. * * @see System::$_loadPercent * * @return Integer */ public function getLoadPercent() { return $this->_loadPercent; } /** * Sets $_loadPercent. * * @param Integer $loadPercent load percent * * @see System::$_loadPercent * * @return Void */ public function setLoadPercent($loadPercent) { $this->_loadPercent = $loadPercent; } /** * Returns $_machine. * * @see System::$_machine * * @return String */ public function getMachine() { return $this->_machine; } /** * Sets $_machine. * * @param Interger $machine machine * * @see System::$_machine * * @return Void */ public function setMachine($machine) { $this->_machine = $machine; } /** * Returns $_uptime. * * @see System::$_uptime * * @return Integer */ public function getUptime() { return $this->_uptime; } /** * Sets $_uptime. * * @param Interger $uptime uptime * * @see System::$_uptime * * @return Void */ public function setUptime($uptime) { $this->_uptime = $uptime; } /** * Returns $_users. * * @see System::$_users * * @return Integer */ public function getUsers() { return $this->_users; } /** * Sets $_users. * * @param Integer $users user count * * @see System::$_users * * @return Void */ public function setUsers($users) { $this->_users = $users; } /** * Returns $_cpus. * * @see System::$_cpus * * @return Array */ public function getCpus() { return $this->_cpus; } /** * Sets $_cpus. * * @param Cpu $cpus cpu device * * @see System::$_cpus * @see CpuDevice * * @return Void */ public function setCpus($cpus) { array_push($this->_cpus, $cpus); } /** * Returns $_netDevices. * * @see System::$_netDevices * * @return Array */ public function getNetDevices() { return $this->_netDevices; } /** * Sets $_netDevices. * * @param NetDevice $netDevices network device * * @see System::$_netDevices * @see NetDevice * * @return Void */ public function setNetDevices($netDevices) { array_push($this->_netDevices, $netDevices); } /** * Returns $_pciDevices. * * @see System::$_pciDevices * * @return Array */ public function getPciDevices() { return $this->_pciDevices; } /** * Sets $_pciDevices. * * @param HWDevice $pciDevices pci device * * @see System::$_pciDevices * @see HWDevice * * @return Void */ public function setPciDevices($pciDevices) { array_push($this->_pciDevices, $pciDevices); } /** * Returns $_ideDevices. * * @see System::$_ideDevices * * @return Array */ public function getIdeDevices() { return $this->_ideDevices; } /** * Sets $_ideDevices. * * @param HWDevice $ideDevices ide device * * @see System::$_ideDevices * @see HWDevice * * @return Void */ public function setIdeDevices($ideDevices) { array_push($this->_ideDevices, $ideDevices); } /** * Returns $_scsiDevices. * * @see System::$_scsiDevices * * @return Array */ public function getScsiDevices() { return $this->_scsiDevices; } /** * Sets $_scsiDevices. * * @param HWDevice $scsiDevices scsi devices * * @see System::$_scsiDevices * @see HWDevice * * @return Void */ public function setScsiDevices($scsiDevices) { array_push($this->_scsiDevices, $scsiDevices); } /** * Returns $_usbDevices. * * @see System::$_usbDevices * * @return Array */ public function getUsbDevices() { return $this->_usbDevices; } /** * Sets $_usbDevices. * * @param HWDevice $usbDevices usb device * * @see System::$_usbDevices * @see HWDevice * * @return Void */ public function setUsbDevices($usbDevices) { array_push($this->_usbDevices, $usbDevices); } /** * Returns $_tbDevices. * * @see System::$_tbDevices * * @return Array */ public function getTbDevices() { return $this->_tbDevices; } /** * Sets $_tbDevices. * * @param HWDevice $tbDevices thunderbolt device * * @see System::$_tbDevices * @see HWDevice * * @return Void */ public function setTbDevices($tbDevices) { array_push($this->_tbDevices, $tbDevices); } /** * Returns $_i2cDevices. * * @see System::$_i2cDevices * * @return Array */ public function getI2cDevices() { return $this->_i2cDevices; } /** * Sets $_i2cDevices. * * @param HWDevice $i2cDevices I2C device * * @see System::$_i2cDevices * @see HWDevice * * @return Void */ public function setI2cDevices($i2cDevices) { array_push($this->_i2cDevices, $i2cDevices); } /** * Returns $_diskDevices. * * @see System::$_diskDevices * * @return Array */ public function getDiskDevices() { return $this->_diskDevices; } /** * Sets $_diskDevices. * * @param DiskDevice $diskDevices disk device * * @see System::$_diskDevices * @see DiskDevice * * @return void */ public function setDiskDevices($diskDevices) { array_push($this->_diskDevices, $diskDevices); } /** * Returns $_memApplication. * * @see System::$_memApplication * * @return Integer */ public function getMemApplication() { return $this->_memApplication; } /** * Sets $_memApplication. * * @param Integer $memApplication application memory * * @see System::$_memApplication * * @return Void */ public function setMemApplication($memApplication) { $this->_memApplication = $memApplication; } /** * Returns $_memBuffer. * * @see System::$_memBuffer * * @return Integer */ public function getMemBuffer() { return $this->_memBuffer; } /** * Sets $_memBuffer. * * @param Integer $memBuffer buffer memory * * @see System::$_memBuffer * * @return Void */ public function setMemBuffer($memBuffer) { $this->_memBuffer = $memBuffer; } /** * Returns $_memCache. * * @see System::$_memCache * * @return Integer */ public function getMemCache() { return $this->_memCache; } /** * Sets $_memCache. * * @param Integer $memCache cache memory * * @see System::$_memCache * * @return Void */ public function setMemCache($memCache) { $this->_memCache = $memCache; } /** * Returns $_memFree. * * @see System::$_memFree * * @return Integer */ public function getMemFree() { return $this->_memFree; } /** * Sets $_memFree. * * @param Integer $memFree free memory * * @see System::$_memFree * * @return Void */ public function setMemFree($memFree) { $this->_memFree = $memFree; } /** * Returns $_memTotal. * * @see System::$_memTotal * * @return Integer */ public function getMemTotal() { return $this->_memTotal; } /** * Sets $_memTotal. * * @param Integer $memTotal total memory * * @see System::$_memTotal * * @return Void */ public function setMemTotal($memTotal) { $this->_memTotal = $memTotal; } /** * Returns $_memUsed. * * @see System::$_memUsed * * @return Integer */ public function getMemUsed() { return $this->_memUsed; } /** * Sets $_memUsed. * * @param Integer $memUsed used memory * * @see System::$_memUsed * * @return Void */ public function setMemUsed($memUsed) { $this->_memUsed = $memUsed; } /** * Returns $_swapDevices. * * @see System::$_swapDevices * * @return Array */ public function getSwapDevices() { return $this->_swapDevices; } /** * Sets $_swapDevices. * * @param DiskDevice $swapDevices swap devices * * @see System::$_swapDevices * @see DiskDevice * * @return Void */ public function setSwapDevices($swapDevices) { array_push($this->_swapDevices, $swapDevices); } /** * Returns $_processes. * * @see System::$_processes * * @return Array */ public function getProcesses() { return $this->_processes; } /** * Sets $_proceses. * * @param $processes array of types of processes * * @see System::$_processes * * @return Void */ public function setProcesses($processes) { $this->_processes = $processes; /* foreach ($processes as $proc_type=>$proc_count) { $this->_processes[$proc_type] = $proc_count; } */ } } phpsysinfo-3.2.5/includes/to/class.UPSInfo.inc.php000066400000000000000000000025101265516077000220320ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.UPSInfo.inc.php 329 2009-09-07 11:21:44Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * MBInfo TO class * * @category PHP * @package PSI_TO * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class UPSInfo { /** * array with upsdivices * * @see UPSDevice * * @var Array */ private $_upsDevices = array(); /** * Returns $_upsDevices. * * @see UPSInfo::$_upsDevices * * @return Array */ public function getUpsDevices() { return $this->_upsDevices; } /** * Sets $_upsDevices. * * @param UPSDevice $upsDevices upsdevice * * @see UPSInfo::$_upsDevices * * @return Void */ public function setUpsDevices($upsDevices) { array_push($this->_upsDevices, $upsDevices); } } phpsysinfo-3.2.5/includes/to/device/000077500000000000000000000000001265516077000174235ustar00rootroot00000000000000phpsysinfo-3.2.5/includes/to/device/class.CpuDevice.inc.php000066400000000000000000000136631265516077000236700ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.CpuDevice.inc.php 411 2010-12-28 22:32:52Z Jacky672 $ * @link http://phpsysinfo.sourceforge.net */ /** * CpuDevice TO class * * @category PHP * @package PSI_TO * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class CpuDevice { /** * model of the cpu * * @var String */ private $_model = ""; /** * speed of the cpu in hertz * * @var Integer */ private $_cpuSpeed = 0; /** * max speed of the cpu in hertz * * @var Integer */ private $_cpuSpeedMax = 0; /** * min speed of the cpu in hertz * * @var Integer */ private $_cpuSpeedMin = 0; /** * cache size in bytes, if available * * @var Integer */ private $_cache = null; /** * virtualization, if available * * @var String */ private $_virt = null; /** * busspeed in hertz, if available * * @var Integer */ private $_busSpeed = null; /** * temperature of the cpu, if available * * @var Integer */ private $_temp = null; /** * bogomips of the cpu, if available * * @var Integer */ private $_bogomips = null; /** * current load in percent of the cpu, if available * * @var Integer */ private $_load = null; /** * Returns $_bogomips. * * @see Cpu::$_bogomips * * @return Integer */ public function getBogomips() { return $this->_bogomips; } /** * Sets $_bogomips. * * @param Integer $bogomips bogompis * * @see Cpu::$_bogomips * * @return Void */ public function setBogomips($bogomips) { $this->_bogomips = $bogomips; } /** * Returns $_busSpeed. * * @see Cpu::$_busSpeed * * @return Integer */ public function getBusSpeed() { return $this->_busSpeed; } /** * Sets $_busSpeed. * * @param Integer $busSpeed busspeed * * @see Cpu::$_busSpeed * * @return Void */ public function setBusSpeed($busSpeed) { $this->_busSpeed = $busSpeed; } /** * Returns $_cache. * * @see Cpu::$_cache * * @return Integer */ public function getCache() { return $this->_cache; } /** * Sets $_cache. * * @param Integer $cache cache size * * @see Cpu::$_cache * * @return Void */ public function setCache($cache) { $this->_cache = $cache; } /** * Returns $_virt. * * @see Cpu::$_virt * * @return String */ public function getVirt() { return $this->_virt; } /** * Sets $_virt. * * @param String $_virt * * @see Cpu::$_virt * * @return Void */ public function setVirt($virt) { $this->_virt = $virt; } /** * Returns $_cpuSpeed. * * @see Cpu::$_cpuSpeed * * @return Integer */ public function getCpuSpeed() { return $this->_cpuSpeed; } /** * Returns $_cpuSpeedMax. * * @see Cpu::$_cpuSpeedMAx * * @return Integer */ public function getCpuSpeedMax() { return $this->_cpuSpeedMax; } /** * Returns $_cpuSpeedMin. * * @see Cpu::$_cpuSpeedMin * * @return Integer */ public function getCpuSpeedMin() { return $this->_cpuSpeedMin; } /** * Sets $_cpuSpeed. * * @param Integer $cpuSpeed cpuspeed * * @see Cpu::$_cpuSpeed * * @return Void */ public function setCpuSpeed($cpuSpeed) { $this->_cpuSpeed = $cpuSpeed; } /** * Sets $_cpuSpeedMax. * * @param Integer $cpuSpeedMax cpuspeedmax * * @see Cpu::$_cpuSpeedMax * * @return Void */ public function setCpuSpeedMax($cpuSpeedMax) { $this->_cpuSpeedMax = $cpuSpeedMax; } /** * Sets $_cpuSpeedMin. * * @param Integer $cpuSpeedMin cpuspeedmin * * @see Cpu::$_cpuSpeedMin * * @return Void */ public function setCpuSpeedMin($cpuSpeedMin) { $this->_cpuSpeedMin = $cpuSpeedMin; } /** * Returns $_model. * * @see Cpu::$_model * * @return String */ public function getModel() { return $this->_model; } /** * Sets $_model. * * @param String $model cpumodel * * @see Cpu::$_model * * @return Void */ public function setModel($model) { $this->_model = $model; } /** * Returns $_temp. * * @see Cpu::$_temp * * @return Integer */ public function getTemp() { return $this->_temp; } /** * Sets $_temp. * * @param Integer $temp temperature * * @see Cpu::$_temp * * @return Void */ public function setTemp($temp) { $this->_temp = $temp; } /** * Returns $_load. * * @see CpuDevice::$_load * * @return Integer */ public function getLoad() { return $this->_load; } /** * Sets $_load. * * @param Integer $load load percent * * @see CpuDevice::$_load * * @return Void */ public function setLoad($load) { $this->_load = $load; } } phpsysinfo-3.2.5/includes/to/device/class.DiskDevice.inc.php000066400000000000000000000127021265516077000240240ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.DiskDevice.inc.php 252 2009-06-17 13:06:44Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * DiskDevice TO class * * @category PHP * @package PSI_TO * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class DiskDevice { /** * name of the disk device * * @var String */ private $_name = ""; /** * type of the filesystem on the disk device * * @var String */ private $_fsType = ""; /** * diskspace that is free in bytes * * @var Integer */ private $_free = 0; /** * diskspace that is used in bytes * * @var Integer */ private $_used = 0; /** * total diskspace * * @var Integer */ private $_total = 0; /** * mount point of the disk device if available * * @var String */ private $_mountPoint = null; /** * additional options of the device, like mount options * * @var String */ private $_options = null; /** * inodes usage in percent if available * * @var */ private $_percentInodesUsed = null; /** * Returns PercentUsed calculated when function is called from internal values * * @see DiskDevice::$_total * @see DiskDevice::$_used * * @return Integer */ public function getPercentUsed() { if ($this->_total > 0) { return round($this->_used / $this->_total * 100); } else { return 0; } } /** * Returns $_PercentInodesUsed. * * @see DiskDevice::$_PercentInodesUsed * * @return Integer */ public function getPercentInodesUsed() { return $this->_percentInodesUsed; } /** * Sets $_PercentInodesUsed. * * @param Integer $percentInodesUsed inodes percent * * @see DiskDevice::$_PercentInodesUsed * * @return Void */ public function setPercentInodesUsed($percentInodesUsed) { $this->_percentInodesUsed = $percentInodesUsed; } /** * Returns $_free. * * @see DiskDevice::$_free * * @return Integer */ public function getFree() { return $this->_free; } /** * Sets $_free. * * @param Integer $free free bytes * * @see DiskDevice::$_free * * @return Void */ public function setFree($free) { $this->_free = $free; } /** * Returns $_fsType. * * @see DiskDevice::$_fsType * * @return String */ public function getFsType() { return $this->_fsType; } /** * Sets $_fsType. * * @param String $fsType filesystemtype * * @see DiskDevice::$_fsType * * @return Void */ public function setFsType($fsType) { $this->_fsType = $fsType; } /** * Returns $_mountPoint. * * @see DiskDevice::$_mountPoint * * @return String */ public function getMountPoint() { return $this->_mountPoint; } /** * Sets $_mountPoint. * * @param String $mountPoint mountpoint * * @see DiskDevice::$_mountPoint * * @return Void */ public function setMountPoint($mountPoint) { $this->_mountPoint = $mountPoint; } /** * Returns $_name. * * @see DiskDevice::$_name * * @return String */ public function getName() { return $this->_name; } /** * Sets $_name. * * @param String $name device name * * @see DiskDevice::$_name * * @return Void */ public function setName($name) { $this->_name = $name; } /** * Returns $_options. * * @see DiskDevice::$_options * * @return String */ public function getOptions() { return $this->_options; } /** * Sets $_options. * * @param String $options additional options * * @see DiskDevice::$_options * * @return Void */ public function setOptions($options) { $this->_options = $options; } /** * Returns $_total. * * @see DiskDevice::$_total * * @return Integer */ public function getTotal() { return $this->_total; } /** * Sets $_total. * * @param Integer $total total bytes * * @see DiskDevice::$_total * * @return Void */ public function setTotal($total) { $this->_total = $total; } /** * Returns $_used. * * @see DiskDevice::$_used * * @return Integer */ public function getUsed() { return $this->_used; } /** * Sets $_used. * * @param Integer $used used bytes * * @see DiskDevice::$_used * * @return Void */ public function setUsed($used) { $this->_used = $used; } } phpsysinfo-3.2.5/includes/to/device/class.HWDevice.inc.php000066400000000000000000000052471265516077000234560ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.HWDevice.inc.php 255 2009-06-17 13:39:41Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * HWDevice TO class * * @category PHP * @package PSI_TO * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class HWDevice { /** * name of the device * * @var String */ private $_name = ""; /** * capacity of the device, if not available it will be null * * @var Integer */ private $_capacity = null; /** * count of the device * * @var Integer */ private $_count = 1; /** * compare a given device with the internal one * * @param HWDevice $dev device that should be compared * * @return boolean */ public function equals(HWDevice $dev) { if ($dev->getName() === $this->_name && $dev->getCapacity() === $this->_capacity) { return true; } else { return false; } } /** * Returns $_capacity. * * @see HWDevice::$_capacity * * @return Integer */ public function getCapacity() { return $this->_capacity; } /** * Sets $_capacity. * * @param Integer $capacity device capacity * * @see HWDevice::$_capacity * * @return Void */ public function setCapacity($capacity) { $this->_capacity = $capacity; } /** * Returns $_name. * * @see HWDevice::$_name * * @return String */ public function getName() { return $this->_name; } /** * Sets $_name. * * @param String $name device name * * @see HWDevice::$_name * * @return Void */ public function setName($name) { $this->_name = $name; } /** * Returns $_count. * * @see HWDevice::$_count * * @return Integer */ public function getCount() { return $this->_count; } /** * Sets $_count. * * @param Integer $count device count * * @see HWDevice::$_count * * @return Void */ public function setCount($count) { $this->_count = $count; } } phpsysinfo-3.2.5/includes/to/device/class.NetDevice.inc.php000066400000000000000000000074211265516077000236620ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.NetDevice.inc.php 547 2012-03-22 09:44:38Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * NetDevice TO class * * @category PHP * @package PSI_TO * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class NetDevice { /** * name of the device * * @var String */ private $_name = ""; /** * transmitted bytes * * @var Integer */ private $_txBytes = 0; /** * received bytes * * @var Integer */ private $_rxBytes = 0; /** * counted error packages * * @var Integer */ private $_errors = 0; /** * counted droped packages * * @var Integer */ private $_drops = 0; /** * string with info * * @var String */ private $_info = null; /** * Returns $_drops. * * @see NetDevice::$_drops * * @return Integer */ public function getDrops() { return $this->_drops; } /** * Sets $_drops. * * @param Integer $drops dropped packages * * @see NetDevice::$_drops * * @return Void */ public function setDrops($drops) { $this->_drops = $drops; } /** * Returns $_errors. * * @see NetDevice::$_errors * * @return Integer */ public function getErrors() { return $this->_errors; } /** * Sets $_errors. * * @param Integer $errors error packages * * @see NetDevice::$_errors * * @return Void */ public function setErrors($errors) { $this->_errors = $errors; } /** * Returns $_name. * * @see NetDevice::$_name * * @return String */ public function getName() { return $this->_name; } /** * Sets $_name. * * @param String $name device name * * @see NetDevice::$_name * * @return Void */ public function setName($name) { $this->_name = $name; } /** * Returns $_rxBytes. * * @see NetDevice::$_rxBytes * * @return Integer */ public function getRxBytes() { return $this->_rxBytes; } /** * Sets $_rxBytes. * * @param Integer $rxBytes received bytes * * @see NetDevice::$_rxBytes * * @return Void */ public function setRxBytes($rxBytes) { $this->_rxBytes = $rxBytes; } /** * Returns $_txBytes. * * @see NetDevice::$_txBytes * * @return Integer */ public function getTxBytes() { return $this->_txBytes; } /** * Sets $_txBytes. * * @param Integer $txBytes transmitted bytes * * @see NetDevice::$_txBytes * * @return Void */ public function setTxBytes($txBytes) { $this->_txBytes = $txBytes; } /** * Returns $_info. * * @see NetDevice::$_info * * @return String */ public function getInfo() { return $this->_info; } /** * Sets $_info. * * @param String $info info string * * @see NetDevice::$_info * * @return Void */ public function setInfo($info) { $this->_info = $info; } } phpsysinfo-3.2.5/includes/to/device/class.SensorDevice.inc.php000066400000000000000000000062661265516077000244130ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.SensorDevice.inc.php 592 2012-07-03 10:55:51Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * SensorDevice TO class * * @category PHP * @package PSI_TO * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class SensorDevice { /** * name of the sensor * * @var String */ private $_name = ""; /** * current value of the sensor * * @var Integer */ private $_value = 0; /** * maximum value of the sensor * * @var Integer */ private $_max = null; /** * minimum value of the sensor * * @var Integer */ private $_min = null; /** * event of the sensor * * @var String */ private $_event = ""; /** * Returns $_max. * * @see Sensor::$_max * * @return Integer */ public function getMax() { return $this->_max; } /** * Sets $_max. * * @param Integer $max maximum value * * @see Sensor::$_max * * @return Void */ public function setMax($max) { $this->_max = $max; } /** * Returns $_min. * * @see Sensor::$_min * * @return Integer */ public function getMin() { return $this->_min; } /** * Sets $_min. * * @param Integer $min minimum value * * @see Sensor::$_min * * @return Void */ public function setMin($min) { $this->_min = $min; } /** * Returns $_name. * * @see Sensor::$_name * * @return String */ public function getName() { return $this->_name; } /** * Sets $_name. * * @param String $name sensor name * * @see Sensor::$_name * * @return Void */ public function setName($name) { $this->_name = $name; } /** * Returns $_value. * * @see Sensor::$_value * * @return Integer */ public function getValue() { return $this->_value; } /** * Sets $_value. * * @param Integer $value current value * * @see Sensor::$_value * * @return Void */ public function setValue($value) { $this->_value = $value; } /** * Returns $_event. * * @see Sensor::$_event * * @return String */ public function getEvent() { return $this->_event; } /** * Sets $_event. * * @param String $event sensor event * * @see Sensor::$_event * * @return Void */ public function setEvent($event) { $this->_event = $event; } } phpsysinfo-3.2.5/includes/to/device/class.UPSDevice.inc.php000066400000000000000000000227201265516077000236020ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.UPSDevice.inc.php 262 2009-06-22 10:48:33Z bigmichi1 $ * @link http://phpsysinfo.sourceforge.net */ /** * UPSDevice TO class * * @category PHP * @package PSI_TO * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class UPSDevice { /** * name of the ups * * @var String */ private $_name = ""; /** * model of the ups * * @var String */ private $_model = ""; /** * mode of the ups * * @var String */ private $_mode = ""; /** * last start time * * @var String */ private $_startTime = ""; /** * status of the ups * * @var String */ private $_status = ""; /** * temperature of the ups * * @var Integer */ private $_temperatur = null; /** * outages count * * @var Integer */ private $_outages = null; /** * date of last outtage * * @var String */ private $_lastOutage = null; /** * date of last outage finish * * @var String */ private $_lastOutageFinish = null; /** * line volt * * @var Integer */ private $_lineVoltage = null; /** * line freq * * @var Integer */ private $_lineFrequency = null; /** * current load of the ups in percent * * @var Integer */ private $_load = null; /** * battery installation date * * @var String */ private $_batteryDate = null; /** * current battery volt * * @var Integer */ private $_batteryVoltage = null; /** * current charge in percent of the battery * * @var Integer */ private $_batterCharge = null; /** * time left * * @var String */ private $_timeLeft = null; /** * Returns $_batterCharge. * * @see UPSDevice::$_batterCharge * * @return integer */ public function getBatterCharge() { return $this->_batterCharge; } /** * Sets $_batterCharge. * * @param Integer $batterCharge battery charge * * @see UPSDevice::$_batterCharge * * @return void */ public function setBatterCharge($batterCharge) { $this->_batterCharge = $batterCharge; } /** * Returns $_batteryDate. * * @see UPSDevice::$_batteryDate * * @return String */ public function getBatteryDate() { return $this->_batteryDate; } /** * Sets $_batteryDate. * * @param object $batteryDate battery date * * @see UPSDevice::$_batteryDate * * @return Void */ public function setBatteryDate($batteryDate) { $this->_batteryDate = $batteryDate; } /** * Returns $_batteryVoltage. * * @see UPSDevice::$_batteryVoltage * * @return Integer */ public function getBatteryVoltage() { return $this->_batteryVoltage; } /** * Sets $_batteryVoltage. * * @param object $batteryVoltage battery volt * * @see UPSDevice::$_batteryVoltage * * @return Void */ public function setBatteryVoltage($batteryVoltage) { $this->_batteryVoltage = $batteryVoltage; } /** * Returns $_lastOutage. * * @see UPSDevice::$_lastOutage * * @return String */ public function getLastOutage() { return $this->_lastOutage; } /** * Sets $_lastOutage. * * @param String $lastOutage last Outage * * @see UPSDevice::$lastOutage * * @return Void */ public function setLastOutage($lastOutage) { $this->_lastOutage = $lastOutage; } /** * Returns $_lastOutageFinish. * * @see UPSDevice::$_lastOutageFinish * * @return String */ public function getLastOutageFinish() { return $this->_lastOutageFinish; } /** * Sets $_lastOutageFinish. * * @param String $lastOutageFinish last outage finish * * @see UPSDevice::$_lastOutageFinish * * @return Void */ public function setLastOutageFinish($lastOutageFinish) { $this->_lastOutageFinish = $lastOutageFinish; } /** * Returns $_lineVoltage. * * @see UPSDevice::$_lineVoltage * * @return Integer */ public function getLineVoltage() { return $this->_lineVoltage; } /** * Sets $_lineVoltage. * * @param Integer $lineVoltage line voltage * * @see UPSDevice::$_lineVoltage * * @return Void */ public function setLineVoltage($lineVoltage) { $this->_lineVoltage = $lineVoltage; } /** * Returns $_lineFrequency. * * @see UPSDevice::$_lineFrequency * * @return Integer */ public function getLineFrequency() { return $this->_lineFrequency; } /** * Sets $_lineFrequency. * * @param Integer $lineFrequency line frequency * * @see UPSDevice::$_lineFrequency * * @return Void */ public function setLineFrequency($lineFrequency) { $this->_lineFrequency = $lineFrequency; } /** * Returns $_load. * * @see UPSDevice::$_load * * @return Integer */ public function getLoad() { return $this->_load; } /** * Sets $_load. * * @param Integer $load current load * * @see UPSDevice::$_load * * @return Void */ public function setLoad($load) { $this->_load = $load; } /** * Returns $_mode. * * @see UPSDevice::$_mode * * @return String */ public function getMode() { return $this->_mode; } /** * Sets $_mode. * * @param String $mode mode * * @see UPSDevice::$_mode * * @return Void */ public function setMode($mode) { $this->_mode = $mode; } /** * Returns $_model. * * @see UPSDevice::$_model * * @return String */ public function getModel() { return $this->_model; } /** * Sets $_model. * * @param String $model model * * @see UPSDevice::$_model * * @return Void */ public function setModel($model) { $this->_model = $model; } /** * Returns $_name. * * @see UPSDevice::$_name * * @return String */ public function getName() { return $this->_name; } /** * Sets $_name. * * @param String $name name * * @see UPSDevice::$_name * * @return Void */ public function setName($name) { $this->_name = $name; } /** * Returns $_outages. * * @see UPSDevice::$_outages * * @return Integer */ public function getOutages() { return $this->_outages; } /** * Sets $_outages. * * @param Integer $outages outages count * * @see UPSDevice::$_outages * * @return Void */ public function setOutages($outages) { $this->_outages = $outages; } /** * Returns $_startTime. * * @see UPSDevice::$_startTime * * @return String */ public function getStartTime() { return $this->_startTime; } /** * Sets $_startTime. * * @param String $startTime startTime * * @see UPSDevice::$_startTime * * @return Void */ public function setStartTime($startTime) { $this->_startTime = $startTime; } /** * Returns $_status. * * @see UPSDevice::$_status * * @return String */ public function getStatus() { return $this->_status; } /** * Sets $_status. * * @param String $status status * * @see UPSDevice::$_status * * @return Void */ public function setStatus($status) { $this->_status = $status; } /** * Returns $_temperatur. * * @see UPSDevice::$_temperatur * * @return Integer */ public function getTemperatur() { return $this->_temperatur; } /** * Sets $_temperatur. * * @param Integer $temperatur temperature * * @see UPSDevice::$_temperatur * * @return Void */ public function setTemperatur($temperatur) { $this->_temperatur = $temperatur; } /** * Returns $_timeLeft. * * @see UPSDevice::$_timeLeft * * @return String */ public function getTimeLeft() { return $this->_timeLeft; } /** * Sets $_timeLeft. * * @param String $timeLeft time left * * @see UPSDevice::$_timeLeft * * @return Void */ public function setTimeLeft($timeLeft) { $this->_timeLeft = $timeLeft; } } phpsysinfo-3.2.5/includes/ups/000077500000000000000000000000001265516077000163515ustar00rootroot00000000000000phpsysinfo-3.2.5/includes/ups/class.apcupsd.inc.php000066400000000000000000000115131265516077000223760ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.apcupsd.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting ups information from apcupsd program * * @category PHP * @package PSI_UPS * @author Michael Cramer * @author Artem Volk * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Apcupsd extends UPS { /** * internal storage for all gathered data * * @var Array */ private $_output = array(); /** * get all information from all configured ups in phpsysinfo.ini and store output in internal array */ public function __construct() { parent::__construct(); if (defined('PSI_UPS_APCUPSD_LIST') && is_string(PSI_UPS_APCUPSD_LIST)) { if (preg_match(ARRAY_EXP, PSI_UPS_APCUPSD_LIST)) { $upses = eval(PSI_UPS_APCUPSD_LIST); } else { $upses = array(PSI_UPS_APCUPSD_LIST); } foreach ($upses as $ups) { CommonFunctions::executeProgram('apcaccess', 'status '.trim($ups), $temp); if (! empty($temp)) { $this->_output[] = $temp; } } } else { //use default if address and port not defined CommonFunctions::executeProgram('apcaccess', 'status', $temp); if (! empty($temp)) { $this->_output[] = $temp; } } } /** * parse the input and store data in resultset for xml generation * * @return Void */ private function _info() { foreach ($this->_output as $ups) { $dev = new UPSDevice(); // General info if (preg_match('/^UPSNAME\s*:\s*(.*)$/m', $ups, $data)) { $dev->setName(trim($data[1])); } if (preg_match('/^MODEL\s*:\s*(.*)$/m', $ups, $data)) { $model=trim($data[1]); if (preg_match('/^APCMODEL\s*:\s*(.*)$/m', $ups, $data)) { $dev->setModel($model.' ('.trim($data[1]).')'); } else { $dev->setModel($model); } } if (preg_match('/^UPSMODE\s*:\s*(.*)$/m', $ups, $data)) { $dev->setMode(trim($data[1])); } if (preg_match('/^STARTTIME\s*:\s*(.*)$/m', $ups, $data)) { $dev->setStartTime(trim($data[1])); } if (preg_match('/^STATUS\s*:\s*(.*)$/m', $ups, $data)) { $dev->setStatus(trim($data[1])); } if (preg_match('/^ITEMP\s*:\s*(.*)$/m', $ups, $data)) { $dev->setTemperatur(trim($data[1])); } // Outages if (preg_match('/^NUMXFERS\s*:\s*(.*)$/m', $ups, $data)) { $dev->setOutages(trim($data[1])); } if (preg_match('/^LASTXFER\s*:\s*(.*)$/m', $ups, $data)) { $dev->setLastOutage(trim($data[1])); } if (preg_match('/^XOFFBATT\s*:\s*(.*)$/m', $ups, $data)) { $dev->setLastOutageFinish(trim($data[1])); } // Line if (preg_match('/^LINEV\s*:\s*(\d*\.\d*)(.*)$/m', $ups, $data)) { $dev->setLineVoltage(trim($data[1])); } if (preg_match('/^LINEFREQ\s*:\s*(\d*\.\d*)(.*)$/m', $ups, $data)) { $dev->setLineFrequency(trim($data[1])); } if (preg_match('/^LOADPCT\s*:\s*(\d*\.\d*)(.*)$/m', $ups, $data)) { $dev->setLoad(trim($data[1])); } // Battery if (preg_match('/^BATTDATE\s*:\s*(.*)$/m', $ups, $data)) { $dev->setBatteryDate(trim($data[1])); } if (preg_match('/^BATTV\s*:\s*(\d*\.\d*)(.*)$/m', $ups, $data)) { $dev->setBatteryVoltage(trim($data[1])); } if (preg_match('/^BCHARGE\s*:\s*(\d*\.\d*)(.*)$/m', $ups, $data)) { $dev->setBatterCharge(trim($data[1])); } if (preg_match('/^TIMELEFT\s*:\s*(\d*\.\d*)(.*)$/m', $ups, $data)) { $dev->setTimeLeft(trim($data[1])); } $this->upsinfo->setUpsDevices($dev); } } /** * get the information * * @see PSI_Interface_UPS::build() * * @return Void */ public function build() { $this->_info(); } } phpsysinfo-3.2.5/includes/ups/class.nut.inc.php000066400000000000000000000114131265516077000215440ustar00rootroot00000000000000 * @author Anders Häggström * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.nut.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting ups information from upsc program * * @category PHP * @package PSI_UPS * @author Artem Volk * @author Anders Häggström * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Nut extends UPS { /** * internal storage for all gathered data * * @var array */ private $_output = array(); /** * get all information from all configured ups and store output in internal array */ public function __construct() { parent::__construct(); if (defined('PSI_UPS_NUT_LIST') && is_string(PSI_UPS_NUT_LIST)) { if (preg_match(ARRAY_EXP, PSI_UPS_NUT_LIST)) { $upses = eval(PSI_UPS_NUT_LIST); } else { $upses = array(PSI_UPS_NUT_LIST); } foreach ($upses as $ups) { CommonFunctions::executeProgram('upsc', '-l '.trim($ups), $output); $ups_names = preg_split("/\n/", $output, -1, PREG_SPLIT_NO_EMPTY); foreach ($ups_names as $ups_name) { CommonFunctions::executeProgram('upsc', trim($ups_name).'@'.trim($ups), $temp); if (! empty($temp)) { $this->_output[trim($ups_name).'@'.trim($ups)] = $temp; } } } } else { //use default if address and port not defined CommonFunctions::executeProgram('upsc', '-l', $output); $ups_names = preg_split("/\n/", $output, -1, PREG_SPLIT_NO_EMPTY); foreach ($ups_names as $ups_name) { CommonFunctions::executeProgram('upsc', trim($ups_name), $temp); if (! empty($temp)) { $this->_output[trim($ups_name)] = $temp; } } } } /** * parse the input and store data in resultset for xml generation * * @return array */ private function _info() { if (! empty($this->_output)) { foreach ($this->_output as $name=>$value) { $temp = preg_split("/\n/", $value, -1, PREG_SPLIT_NO_EMPTY); $ups_data = array(); foreach ($temp as $value) { $line = preg_split('/: /', $value, 2); $ups_data[$line[0]] = isset($line[1]) ? trim($line[1]) : ''; } $dev = new UPSDevice(); //General $dev->setName($name); if (isset($ups_data['ups.model'])) { $dev->setModel($ups_data['ups.model']); } if (isset($ups_data['driver.name'])) { $dev->setMode($ups_data['driver.name']); } if (isset($ups_data['ups.status'])) { $dev->setStatus($ups_data['ups.status']); } //Line if (isset($ups_data['input.voltage'])) { $dev->setLineVoltage($ups_data['input.voltage']); } if (isset($ups_data['input.frequency'])) { $dev->setLineFrequency($ups_data['input.frequency']); } if (isset($ups_data['ups.load'])) { $dev->setLoad($ups_data['ups.load']); } //Battery if (isset($ups_data['battery.voltage'])) { $dev->setBatteryVoltage($ups_data['battery.voltage']); } if (isset($ups_data['battery.charge'])) { $dev->setBatterCharge($ups_data['battery.charge']); } if (isset($ups_data['battery.runtime'])) { $dev->setTimeLeft(round($ups_data['battery.runtime']/60, 2)); } //Temperature if (isset($ups_data['ups.temperature'])) { $dev->setTemperatur($ups_data['ups.temperature']); } $this->upsinfo->setUpsDevices($dev); } } } /** * get the information * * @see PSI_Interface_UPS::build() * * @return Void */ public function build() { $this->_info(); } } phpsysinfo-3.2.5/includes/ups/class.pmset.inc.php000066400000000000000000000047101265516077000220700ustar00rootroot00000000000000 * @copyright 2014 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.nut.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting ups information from pmset program * * @category PHP * @package PSI_UPS * @author Robert Pelletier * @copyright 2014 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Pmset extends UPS { /** * internal storage for all gathered data * * @var array */ private $_output = array(); /** * get all information from all configured ups and store output in internal array */ public function __construct() { parent::__construct(); CommonFunctions::executeProgram('pmset', '-g batt', $temp); if (! empty($temp)) { $this->_output[] = $temp; } } /** * parse the input and store data in resultset for xml generation * * @return array */ private function _info() { $model = array(); $percCharge = array(); $lines = explode(PHP_EOL, implode($this->_output)); $dev = new UPSDevice(); $model = explode('FW:', $lines[1]); if (strpos($model[0], 'InternalBattery') === false) { $percCharge = explode(';', $lines[1]); $dev->setName('UPS'); if ($model !== false) { $dev->setModel(substr(trim($model[0]), 1)); } if ($percCharge !== false) { $dev->setBatterCharge(trim(substr($percCharge[0], -4, 3))); $dev->setStatus(trim($percCharge[1])); if (isset($percCharge[2])) { $time = explode(':', $percCharge[2]); $hours = $time[0]; $minutes = $hours*60+substr($time[1], 0, 2); $dev->setTimeLeft($minutes); } } $this->upsinfo->setUpsDevices($dev); } } /** * get the information * * @see PSI_Interface_UPS::build() * * @return Void */ public function build() { $this->_info(); } } phpsysinfo-3.2.5/includes/ups/class.powersoftplus.inc.php000066400000000000000000000071121265516077000236730ustar00rootroot00000000000000 * @copyright 2014 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.powersoftplus.inc.php 661 2014-06-13 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting ups information from powersoftplus program * * @category PHP * @package PSI_UPS * @author Mieczyslaw Nalewaj * @copyright 2014 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class PowerSoftPlus extends UPS { /** * internal storage for all gathered data * * @var Array */ private $_output = array(); /** * get all information from all configured ups in phpsysinfo.ini and store output in internal array */ public function __construct() { parent::__construct(); CommonFunctions::executeProgram('powersoftplus', '-p', $temp); if (! empty($temp)) { $this->_output[] = $temp; } } /** * parse the input and store data in resultset for xml generation * * @return Void */ private function _info() { foreach ($this->_output as $ups) { $dev = new UPSDevice(); // General info $dev->setName("EVER"); $dev->setMode("PowerSoftPlus"); $maxpwr = 0; $load = null; if (preg_match('/^Identifier: UPS Model\s*:\s*(.*)$/m', $ups, $data)) { $dev->setModel(trim($data[1])); if (preg_match('/\s(\d*)[^\d]*$/', trim($data[1]), $number)) { $maxpwr=$number[1]*0.65; } } if (preg_match('/^Current UPS state\s*:\s*(.*)$/m', $ups, $data)) { $dev->setStatus(trim($data[1])); } if (preg_match('/^Output load\s*:\s*(.*)\s\[\%\]$/m', $ups, $data)) { $load = trim($data[1]); } //wrong Output load issue if (($load == 0) && ($maxpwr != 0) && preg_match('/^Effective power\s*:\s*(.*)\s\[W\]$/m', $ups, $data)) { $load = 100.0*trim($data[1])/$maxpwr; } if ($load != null) { $dev->setLoad($load); } // Battery if (preg_match('/^Battery voltage\s*:\s*(.*)\s\[Volt\]$/m', $ups, $data)) { $dev->setBatteryVoltage(trim($data[1])); } if (preg_match('/^Battery state\s*:\s*(.*)$/m', $ups, $data)) { if (preg_match('/^At full capacity$/', trim($data[1]))) { $dev->setBatterCharge(100); } elseif (preg_match('/^(Discharged)|(Depleted)$/', trim($data[1]))) { $dev->setBatterCharge(0); } } // Line if (preg_match('/^Input voltage\s*:\s*(.*)\s\[Volt\]$/m', $ups, $data)) { $dev->setLineVoltage(trim($data[1])); } if (preg_match('/^Input frequency\s*:\s*(.*)\s\[Hz\]$/m', $ups, $data)) { $dev->setLineFrequency(trim($data[1])); } $this->upsinfo->setUpsDevices($dev); } } /** * get the information * * @see PSI_Interface_UPS::build() * * @return Void */ public function build() { $this->_info(); } } phpsysinfo-3.2.5/includes/ups/class.snmpups.inc.php000066400000000000000000000320471265516077000224510ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.apcupsd.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * getting ups information from SNMPups program * * @category PHP * @package PSI_UPS * @author Michael Cramer * @author Artem Volk * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class SNMPups extends UPS { /** * internal storage for all gathered data * * @var Array */ private $_output = array(); /** * get all information from all configured ups in phpsysinfo.ini and store output in internal array */ public function __construct() { parent::__construct(); switch (strtolower(PSI_UPS_SNMPUPS_ACCESS)) { case 'command': if (defined('PSI_UPS_SNMPUPS_LIST') && is_string(PSI_UPS_SNMPUPS_LIST)) { if (preg_match(ARRAY_EXP, PSI_UPS_SNMPUPS_LIST)) { $upss = eval(PSI_UPS_SNMPUPS_LIST); } else { $upss = array(PSI_UPS_SNMPUPS_LIST); } foreach ($upss as $ups) { CommonFunctions::executeProgram("snmpwalk", "-Ona -c public -v 1 -r 1 ".$ups." .1.3.6.1.4.1.318.1.1.1.1", $buffer, PSI_DEBUG); if (strlen($buffer) > 0) { $this->_output[$ups] = $buffer; $buffer = ""; CommonFunctions::executeProgram("snmpwalk", "-Ona -c public -v 1 -r 1 ".$ups." .1.3.6.1.4.1.318.1.1.1.2", $buffer, PSI_DEBUG); if (strlen($buffer) > 0) { $this->_output[$ups] .= "\n".$buffer; } $buffer = ""; CommonFunctions::executeProgram("snmpwalk", "-Ona -c public -v 1 -r 1 ".$ups." .1.3.6.1.4.1.318.1.1.1.3", $buffer, PSI_DEBUG); if (strlen($buffer) > 0) { $this->_output[$ups] .= "\n".$buffer; } $buffer = ""; CommonFunctions::executeProgram("snmpwalk", "-Ona -c public -v 1 -r 1 ".$ups." .1.3.6.1.4.1.318.1.1.1.4", $buffer, PSI_DEBUG); if (strlen($buffer) > 0) { $this->_output[$ups] .= "\n".$buffer; } } } } break; case 'php-snmp': if (!extension_loaded("snmp")) { $this->error->addError("Requirements error", "SNMPups plugin requires the snmp extension to php in order to work properly"); break; } snmp_set_valueretrieval(SNMP_VALUE_LIBRARY); snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC); if (defined('PSI_UPS_SNMPUPS_LIST') && is_string(PSI_UPS_SNMPUPS_LIST)) { if (preg_match(ARRAY_EXP, PSI_UPS_SNMPUPS_LIST)) { $upss = eval(PSI_UPS_SNMPUPS_LIST); } else { $upss = array(PSI_UPS_SNMPUPS_LIST); } foreach ($upss as $ups) { if (! PSI_DEBUG) { restore_error_handler(); /* default error handler */ $old_err_rep = error_reporting(); error_reporting(E_ERROR); /* fatal errors only */ } $bufferarr=snmprealwalk($ups, "public", ".1.3.6.1.4.1.318.1.1.1.1", 1000000, 1); if (! PSI_DEBUG) { error_reporting($old_err_rep); /* restore error level */ set_error_handler('errorHandlerPsi'); /* restore error handler */ } if (! empty($bufferarr)) { $buffer=""; foreach ($bufferarr as $id=>$string) { $buffer .= $id." = ".$string."\n"; } if (! PSI_DEBUG) { restore_error_handler(); /* default error handler */ $old_err_rep = error_reporting(); error_reporting(E_ERROR); /* fatal errors only */ } $bufferarr2=snmprealwalk($ups, "public", ".1.3.6.1.4.1.318.1.1.1.2", 1000000, 1); $bufferarr3=snmprealwalk($ups, "public", ".1.3.6.1.4.1.318.1.1.1.3", 1000000, 1); $bufferarr4=snmprealwalk($ups, "public", ".1.3.6.1.4.1.318.1.1.1.4", 1000000, 1); if (! PSI_DEBUG) { error_reporting($old_err_rep); /* restore error level */ set_error_handler('errorHandlerPsi'); /* restore error handler */ } if (! empty($bufferarr2)) { foreach ($bufferarr2 as $id=>$string) { $buffer .= $id." = ".$string."\n"; } if (! empty($bufferarr3)) { foreach ($bufferarr3 as $id=>$string) { $buffer .= $id." = ".$string."\n"; } } } if (! empty($bufferarr4)) { foreach ($bufferarr4 as $id=>$string) { $buffer .= $id." = ".$string."\n"; } } if (strlen(trim($buffer)) > 0) { $this->_output[$ups] = $buffer; } } } } break; default: $this->error->addError("switch(PSI_UPS_SNMPUPS_ACCESS)", "Bad SNMPups configuration in phpsysinfo.ini"); break; } } /** * parse the input and store data in resultset for xml generation * * @return Void */ private function _info() { if (empty($this->_output)) { return; } foreach ($this->_output as $result) { $dev = new UPSDevice(); $status = ""; $status2 = ""; $status3 = ""; $dev->setMode("SNMP"); if (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.1\.1\.2\.0 = STRING:\s(.*)/m', $result, $data)) { $dev->setName(trim($data[1], "\" \r\t")); } if (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.1\.1\.1\.0 = STRING:\s(.*)/m', $result, $data)) { $dev->setModel(trim($data[1], "\" \r\t")); } if (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.4\.1\.1\.0 = INTEGER:\s(.*)/m', $result, $data)) { switch (trim($data[1])) { case 1: $status = "Unknown"; break; case 2: $status = "On Line"; break; case 3: $status = "On Battery"; break; case 4: $status = "On Smart Boost"; break; case 5: $status = "Timed Sleeping"; break; case 6: $status = "Software Bypass"; break; case 7: $status = "Off"; break; case 8: $status = "Rebooting"; break; case 9: $status = "Switched Bypass"; break; case 10:$status = "Hardware Failure Bypass"; break; case 11:$status = "Sleeping Until Power Returns"; break; case 12:$status = "On Smart Trim"; break; default: $status = "Unknown state (".trim($data[1]).")"; break; } } if (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.2\.1\.1\.0 = INTEGER:\s(.*)/m', $result, $data)) { $batstat = ""; switch (trim($data[1])) { case 1: $batstat = "Battery Unknown"; break; case 2: break; case 3: $batstat = "Battery Low"; break; default: $batstat = "Battery Unknown (".trim($data[1]).")"; break; } if ($batstat !== "") { if ($status !== "") { $status .= ", ".$batstat; } else { $status = $batstat; } } } if (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.2\.2\.4\.0 = INTEGER:\s(.*)/m', $result, $data)) { $batstat = ""; switch (trim($data[1])) { case 1: break; case 2: $batstat = "Replace Battery"; break; default: $batstat = "Replace Battery (".trim($data[1]).")"; break; } if ($batstat !== "") { if ($status !== "") { $status .= ", ".$batstat; } else { $status = $batstat; } } } if ($status !== "") { $dev->setStatus(trim($status)); } if (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.3\.3\.1\.0 = Gauge32:\s(.*)/m', $result, $data)) { $dev->setLineVoltage(trim($data[1])/10); } elseif (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.3\.2\.1\.0 = Gauge32:\s(.*)/m', $result, $data)) { $dev->setLineVoltage(trim($data[1])); } if (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.4\.3\.3\.0 = Gauge32:\s(.*)/m', $result, $data)) { $dev->setLoad(trim($data[1])/10); } elseif (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.4\.2\.3\.0 = Gauge32:\s(.*)/m', $result, $data)) { $dev->setLoad(trim($data[1])); } if (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.2\.3\.4\.0 = INTEGER:\s(.*)/m', $result, $data)) { $dev->setBatteryVoltage(trim($data[1])/10); } elseif (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.2\.2\.8\.0 = INTEGER:\s(.*)/m', $result, $data)) { $dev->setBatteryVoltage(trim($data[1])); } if (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.2\.3\.1\.0 = Gauge32:\s(.*)/m', $result, $data)) { $dev->setBatterCharge(trim($data[1])/10); } elseif (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.2\.2\.1\.0 = Gauge32:\s(.*)/m', $result, $data)) { $dev->setBatterCharge(trim($data[1])); } if (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.2\.2\.3\.0 = Timeticks:\s\((\d*)\)/m', $result, $data)) { $dev->setTimeLeft(trim($data[1])/6000); } if (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.2\.3\.2\.0 = Gauge32:\s(.*)/m', $result, $data)) { $dev->setTemperatur(trim($data[1])/10); } elseif (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.2\.2\.2\.0 = Gauge32:\s(.*)/m', $result, $data)) { $dev->setTemperatur(trim($data[1])); } if (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.2\.1\.3\.0 = STRING:\s(.*)/m', $result, $data)) { $dev->setBatteryDate(trim($data[1], "\" \r\t")); } if (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.3\.3\.4\.0 = Gauge32:\s(.*)/m', $result, $data)) { $dev->setLineFrequency(trim($data[1])/10); } elseif (preg_match('/^\.1\.3\.6\.1\.4\.1\.318\.1\.1\.1\.3\.2\.4\.0 = Gauge32:\s(.*)/m', $result, $data)) { $dev->setLineFrequency(trim($data[1])); } $this->upsinfo->setUpsDevices($dev); } } /** * get the information * * @see PSI_Interface_UPS::build() * * @return Void */ public function build() { $this->_info(); } } phpsysinfo-3.2.5/includes/ups/class.ups.inc.php000066400000000000000000000026311265516077000215470ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.ups.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * Basic UPS functions for all UPS classes * * @category PHP * @package PSI_UPS * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ abstract class UPS implements PSI_Interface_UPS { /** * object for error handling * * @var Error */ public $error; /** * main object for ups information * * @var UPSInfo */ protected $upsinfo; /** * build the global Error object */ public function __construct() { $this->error = PSI_Error::singleton(); $this->upsinfo = new UPSInfo(); } /** * build and return the ups information * * @see PSI_Interface_UPS::getUPSInfo() * * @return UPSInfo */ final public function getUPSInfo() { $this->build(); return $this->upsinfo; } } phpsysinfo-3.2.5/includes/xml/000077500000000000000000000000001265516077000163425ustar00rootroot00000000000000phpsysinfo-3.2.5/includes/xml/class.SimpleXMLExtended.inc.php000066400000000000000000000167521265516077000242350ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.SimpleXMLExtended.inc.php 610 2012-07-11 19:12:12Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * class extends the SimpleXML element for including some special functions, like encoding stuff and cdata support * * @category PHP * @package PSI_XML * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class SimpleXMLExtended { /** * store the encoding that is used for conversation to utf8 * * @var String base encoding */ private $_encoding = null; /** * SimpleXMLElement to which every call is delegated * * @var SimpleXMLElement delegated SimpleXMLElement */ private $_SimpleXmlElement = null; /** * _CP437toUTF8Table for code page conversion for CP437 * * @var _CP437toUTF8Table array */ private static $_CP437toUTF8Table = array( "\xC3\x87","\xC3\xBC","\xC3\xA9","\xC3\xA2", "\xC3\xA4","\xC3\xA0","\xC3\xA5","\xC3\xA7", "\xC3\xAA","\xC3\xAB","\xC3\xA8","\xC3\xAF", "\xC3\xAE","\xC3\xAC","\xC3\x84","\xC3\x85", "\xC3\x89","\xC3\xA6","\xC3\x86","\xC3\xB4", "\xC3\xB6","\xC3\xB2","\xC3\xBB","\xC3\xB9", "\xC3\xBF","\xC3\x96","\xC3\x9C","\xC3\xA2", "\xC2\xA3","\xC3\xA5","\xE2\x82\xA7","\xC6\x92", "\xC3\xA1","\xC3\xAD","\xC3\xB3","\xC3\xBA", "\xC3\xB1","\xC3\x91","\xC2\xAA","\xC2\xBA", "\xC2\xBF","\xE2\x8C\x90","\xC2\xAC","\xC2\xBD", "\xC2\xBC","\xC2\xA1","\xC2\xAB","\xC2\xBB", "\xE2\x96\x91","\xE2\x96\x92","\xE2\x96\x93","\xE2\x94\x82", "\xE2\x94\xA4","\xE2\x95\xA1","\xE2\x95\xA2","\xE2\x95\x96", "\xE2\x95\x95","\xE2\x95\xA3","\xE2\x95\x91","\xE2\x95\x97", "\xE2\x95\x9D","\xE2\x95\x9C","\xE2\x95\x9B","\xE2\x94\x90", "\xE2\x94\x94","\xE2\x94\xB4","\xE2\x94\xAC","\xE2\x94\x9C", "\xE2\x94\x80","\xE2\x94\xBC","\xE2\x95\x9E","\xE2\x95\x9F", "\xE2\x95\x9A","\xE2\x95\x94","\xE2\x95\xA9","\xE2\x95\xA6", "\xE2\x95\xA0","\xE2\x95\x90","\xE2\x95\xAC","\xE2\x95\xA7", "\xE2\x95\xA8","\xE2\x95\xA4","\xE2\x95\xA5","\xE2\x95\x99", "\xE2\x95\x98","\xE2\x95\x92","\xE2\x95\x93","\xE2\x95\xAB", "\xE2\x95\xAA","\xE2\x94\x98","\xE2\x94\x8C","\xE2\x96\x88", "\xE2\x96\x84","\xE2\x96\x8C","\xE2\x96\x90","\xE2\x96\x80", "\xCE\xB1","\xC3\x9F","\xCE\x93","\xCF\x80", "\xCE\xA3","\xCF\x83","\xC2\xB5","\xCF\x84", "\xCE\xA6","\xCE\x98","\xCE\xA9","\xCE\xB4", "\xE2\x88\x9E","\xCF\x86","\xCE\xB5","\xE2\x88\xA9", "\xE2\x89\xA1","\xC2\xB1","\xE2\x89\xA5","\xE2\x89\xA4", "\xE2\x8C\xA0","\xE2\x8C\xA1","\xC3\xB7","\xE2\x89\x88", "\xC2\xB0","\xE2\x88\x99","\xC2\xB7","\xE2\x88\x9A", "\xE2\x81\xBF","\xC2\xB2","\xE2\x96\xA0","\xC2\xA0"); /** * create a new extended SimpleXMLElement and set encoding if specified * * @param SimpleXMLElement $xml base xml element * @param String $encoding base encoding that should be used for conversation to utf8 * * @return void */ public function __construct($xml, $encoding = null) { if ($encoding != null) { $this->_encoding = $encoding; } $this->_SimpleXmlElement = $xml; } /** * insert a child element with or without a value, also doing conversation of name and if value is set to utf8 * * @param String $name name of the child element * @param String $value a value that should be insert to the child * * @return SimpleXMLExtended extended child SimpleXMLElement */ public function addChild($name, $value = null) { $nameUtf8 = $this->_toUTF8($name); if ($value == null) { return new SimpleXMLExtended($this->_SimpleXmlElement->addChild($nameUtf8), $this->_encoding); } else { $valueUtf8 = htmlspecialchars($this->_toUTF8($value)); return new SimpleXMLExtended($this->_SimpleXmlElement->addChild($nameUtf8, $valueUtf8), $this->_encoding); } } /** * insert a child with cdata section * * @param String $name name of the child element * @param String $cdata data for CDATA section * * @return SimpleXMLExtended extended child SimpleXMLElement */ public function addCData($name, $cdata) { $nameUtf8 = $this->_toUTF8($name); $node = $this->_SimpleXmlElement->addChild($nameUtf8); $domnode = dom_import_simplexml($node); $no = $domnode->ownerDocument; $domnode->appendChild($no->createCDATASection($cdata)); return new SimpleXMLExtended($node, $this->_encoding); } /** * add a attribute to a child and convert name and value to utf8 * * @param String $name name of the attribute * @param String $value value of the attribute * * @return Void */ public function addAttribute($name, $value) { $nameUtf8 = $this->_toUTF8($name); $valueUtf8 = htmlspecialchars($this->_toUTF8($value)); $this->_SimpleXmlElement->addAttribute($nameUtf8, $valueUtf8); } /** * append a xml-tree to another xml-tree * * @param SimpleXMLElement $new_child child that should be appended * * @return Void */ public function combinexml(SimpleXMLElement $new_child) { $node1 = dom_import_simplexml($this->_SimpleXmlElement); $dom_sxe = dom_import_simplexml($new_child); $node2 = $node1->ownerDocument->importNode($dom_sxe, true); $node1->appendChild($node2); } /** * convert a string into an UTF-8 string * * @param String $str string to convert * * @return String UTF-8 string */ private function _toUTF8($str) { if ($this->_encoding != null) { if (strcasecmp($this->_encoding, "UTF-8") == 0) { return trim($str); } elseif (strcasecmp($this->_encoding, "CP437") == 0) { $str = trim($str); $strr = ""; if (($strl = strlen($str)) > 0) for ($i = 0; $i < $strl; $i++) { $strc = substr($str, $i, 1); if ($strc < 128) $strr.=$strc; else $strr.=$_CP437toUTF8Table[$strc-128]; } return $strr; } else { $enclist = mb_list_encodings(); if (in_array($this->_encoding, $enclist)) { return mb_convert_encoding(trim($str), 'UTF-8', $this->_encoding); } elseif (function_exists("iconv")) { return iconv($this->_encoding, 'UTF-8', trim($str)); } else { return mb_convert_encoding(trim($str), 'UTF-8'); } } } else { return mb_convert_encoding(trim($str), 'UTF-8'); } } /** * Returns the SimpleXmlElement * * @return SimpleXmlElement entire xml as SimpleXmlElement */ public function getSimpleXmlElement() { return $this->_SimpleXmlElement; } } phpsysinfo-3.2.5/includes/xml/class.XML.inc.php000066400000000000000000000717151265516077000214020ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.XML.inc.php 699 2012-09-15 11:57:13Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * class for generation of the xml * * @category PHP * @package PSI_XML * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class XML { /** * Sysinfo object where the information retrieval methods are included * * @var PSI_Interface_OS */ private $_sysinfo; /** * @var System */ private $_sys = null; /** * xml object with the xml content * * @var SimpleXMLExtended */ private $_xml; /** * object for error handling * * @var Error */ private $_errors; /** * array with all enabled plugins (name) * * @var array */ private $_plugins; /** * plugin name if pluginrequest * * @var string */ private $_plugin = ''; /** * generate a xml for a plugin or for the main app * * @var boolean */ private $_plugin_request = false; /** * generate the entire xml with all plugins or only a part of the xml (main or plugin) * * @var boolean */ private $_complete_request = false; /** * doing some initial tasks * - generate the xml structure with the right header elements * - get the error object for error output * - get a instance of the sysinfo object * * @param boolean $complete generate xml with all plugins or not * @param string $pluginname name of the plugin * * @return void */ public function __construct($complete = false, $pluginname = "") { $this->_errors = PSI_Error::singleton(); if ($pluginname == "") { $this->_plugin_request = false; $this->_plugin = ''; } else { $this->_plugin_request = true; $this->_plugin = $pluginname; } if ($complete) { $this->_complete_request = true; } else { $this->_complete_request = false; } $os = PSI_OS; $this->_sysinfo = new $os(); $this->_plugins = CommonFunctions::getPlugins(); $this->_xmlbody(); } /** * generate common information * * @return void */ private function _buildVitals() { $vitals = $this->_xml->addChild('Vitals'); $vitals->addAttribute('Hostname', $this->_sys->getHostname()); $vitals->addAttribute('IPAddr', $this->_sys->getIp()); $vitals->addAttribute('Kernel', $this->_sys->getKernel()); $vitals->addAttribute('Distro', $this->_sys->getDistribution()); $vitals->addAttribute('Distroicon', $this->_sys->getDistributionIcon()); $vitals->addAttribute('Uptime', $this->_sys->getUptime()); $vitals->addAttribute('Users', $this->_sys->getUsers()); $vitals->addAttribute('LoadAvg', $this->_sys->getLoad()); if ($this->_sys->getLoadPercent() !== null) { $vitals->addAttribute('CPULoad', $this->_sys->getLoadPercent()); } if ($this->_sysinfo->getLanguage() !== null) { $vitals->addAttribute('SysLang', $this->_sysinfo->getLanguage()); } if ($this->_sysinfo->getEncoding() !== null) { $vitals->addAttribute('CodePage', $this->_sysinfo->getEncoding()); } //processes if (($procss = $this->_sys->getProcesses()) !== null) { if (isset($procss['*']) && (($procall = $procss['*']) > 0)) { $vitals->addAttribute('Processes', $procall); if (!isset($procss[' ']) || !($procss[' '] > 0)) { // not unknown $procsum = 0; if (isset($procss['R']) && (($proctmp = $procss['R']) > 0)) { $vitals->addAttribute('ProcessesRunning', $proctmp); $procsum += $proctmp; } if (isset($procss['S']) && (($proctmp = $procss['S']) > 0)) { $vitals->addAttribute('ProcessesSleeping', $proctmp); $procsum += $proctmp; } if (isset($procss['T']) && (($proctmp = $procss['T']) > 0)) { $vitals->addAttribute('ProcessesStopped', $proctmp); $procsum += $proctmp; } if (isset($procss['Z']) && (($proctmp = $procss['Z']) > 0)) { $vitals->addAttribute('ProcessesZombie', $proctmp); $procsum += $proctmp; } if (isset($procss['D']) && (($proctmp = $procss['D']) > 0)) { $vitals->addAttribute('ProcessesWaiting', $proctmp); $procsum += $proctmp; } if (($proctmp = $procall - $procsum) > 0) { $vitals->addAttribute('ProcessesOther', $proctmp); } } } } $vitals->addAttribute('OS', PSI_OS); } /** * generate the network information * * @return void */ private function _buildNetwork() { $hideDevices = array(); $network = $this->_xml->addChild('Network'); if (defined('PSI_HIDE_NETWORK_INTERFACE')) { if (is_string(PSI_HIDE_NETWORK_INTERFACE)) { if (preg_match(ARRAY_EXP, PSI_HIDE_NETWORK_INTERFACE)) { $hideDevices = eval(PSI_HIDE_NETWORK_INTERFACE); } else { $hideDevices = array(PSI_HIDE_NETWORK_INTERFACE); } } elseif (PSI_HIDE_NETWORK_INTERFACE === true) { return; } } foreach ($this->_sys->getNetDevices() as $dev) { if (!in_array(trim($dev->getName()), $hideDevices)) { $device = $network->addChild('NetDevice'); $device->addAttribute('Name', $dev->getName()); $device->addAttribute('RxBytes', $dev->getRxBytes()); $device->addAttribute('TxBytes', $dev->getTxBytes()); $device->addAttribute('Err', $dev->getErrors()); $device->addAttribute('Drops', $dev->getDrops()); if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS && $dev->getInfo()) $device->addAttribute('Info', $dev->getInfo()); } } } /** * generate the hardware information * * @return void */ private function _buildHardware() { $dev = new HWDevice(); $hardware = $this->_xml->addChild('Hardware'); if ($this->_sys->getMachine() != "") { $hardware->addAttribute('Name', $this->_sys->getMachine()); } $pci = null; foreach (System::removeDupsAndCount($this->_sys->getPciDevices()) as $dev) { if ($pci === null) $pci = $hardware->addChild('PCI'); $tmp = $pci->addChild('Device'); $tmp->addAttribute('Name', $dev->getName()); $tmp->addAttribute('Count', $dev->getCount()); } $usb = null; foreach (System::removeDupsAndCount($this->_sys->getUsbDevices()) as $dev) { if ($usb === null) $usb = $hardware->addChild('USB'); $tmp = $usb->addChild('Device'); $tmp->addAttribute('Name', $dev->getName()); $tmp->addAttribute('Count', $dev->getCount()); } $ide = null; foreach (System::removeDupsAndCount($this->_sys->getIdeDevices()) as $dev) { if ($ide === null) $ide = $hardware->addChild('IDE'); $tmp = $ide->addChild('Device'); $tmp->addAttribute('Name', $dev->getName()); $tmp->addAttribute('Count', $dev->getCount()); if ($dev->getCapacity() !== null) { $tmp->addAttribute('Capacity', $dev->getCapacity()); } } $scsi = null; foreach (System::removeDupsAndCount($this->_sys->getScsiDevices()) as $dev) { if ($scsi === null) $scsi = $hardware->addChild('SCSI'); $tmp = $scsi->addChild('Device'); $tmp->addAttribute('Name', $dev->getName()); $tmp->addAttribute('Count', $dev->getCount()); if ($dev->getCapacity() !== null) { $tmp->addAttribute('Capacity', $dev->getCapacity()); } } $tb = null; foreach (System::removeDupsAndCount($this->_sys->getTbDevices()) as $dev) { if ($tb === null) $tb = $hardware->addChild('TB'); $tmp = $tb->addChild('Device'); $tmp->addAttribute('Name', $dev->getName()); $tmp->addAttribute('Count', $dev->getCount()); } $i2c = null; foreach (System::removeDupsAndCount($this->_sys->getI2cDevices()) as $dev) { if ($i2c === null) $i2c = $hardware->addChild('I2C'); $tmp = $i2c->addChild('Device'); $tmp->addAttribute('Name', $dev->getName()); $tmp->addAttribute('Count', $dev->getCount()); } $cpu = null; foreach ($this->_sys->getCpus() as $oneCpu) { if ($cpu === null) $cpu = $hardware->addChild('CPU'); $tmp = $cpu->addChild('CpuCore'); $tmp->addAttribute('Model', $oneCpu->getModel()); if ($oneCpu->getCpuSpeed() !== 0) { $tmp->addAttribute('CpuSpeed', $oneCpu->getCpuSpeed()); } if ($oneCpu->getCpuSpeedMax() !== 0) { $tmp->addAttribute('CpuSpeedMax', $oneCpu->getCpuSpeedMax()); } if ($oneCpu->getCpuSpeedMin() !== 0) { $tmp->addAttribute('CpuSpeedMin', $oneCpu->getCpuSpeedMin()); } if ($oneCpu->getTemp() !== null) { $tmp->addAttribute('CpuTemp', $oneCpu->getTemp()); } if ($oneCpu->getBusSpeed() !== null) { $tmp->addAttribute('BusSpeed', $oneCpu->getBusSpeed()); } if ($oneCpu->getCache() !== null) { $tmp->addAttribute('Cache', $oneCpu->getCache()); } if ($oneCpu->getVirt() !== null) { $tmp->addAttribute('Virt', $oneCpu->getVirt()); } if ($oneCpu->getBogomips() !== null) { $tmp->addAttribute('Bogomips', $oneCpu->getBogomips()); } if ($oneCpu->getLoad() !== null) { $tmp->addAttribute('Load', $oneCpu->getLoad()); } } } /** * generate the memory information * * @return void */ private function _buildMemory() { $memory = $this->_xml->addChild('Memory'); $memory->addAttribute('Free', $this->_sys->getMemFree()); $memory->addAttribute('Used', $this->_sys->getMemUsed()); $memory->addAttribute('Total', $this->_sys->getMemTotal()); $memory->addAttribute('Percent', $this->_sys->getMemPercentUsed()); if (($this->_sys->getMemApplication() !== null) || ($this->_sys->getMemBuffer() !== null) || ($this->_sys->getMemCache() !== null)) { $details = $memory->addChild('Details'); if ($this->_sys->getMemApplication() !== null) { $details->addAttribute('App', $this->_sys->getMemApplication()); $details->addAttribute('AppPercent', $this->_sys->getMemPercentApplication()); } if ($this->_sys->getMemBuffer() !== null) { $details->addAttribute('Buffers', $this->_sys->getMemBuffer()); $details->addAttribute('BuffersPercent', $this->_sys->getMemPercentBuffer()); } if ($this->_sys->getMemCache() !== null) { $details->addAttribute('Cached', $this->_sys->getMemCache()); $details->addAttribute('CachedPercent', $this->_sys->getMemPercentCache()); } } if (count($this->_sys->getSwapDevices()) > 0) { $swap = $memory->addChild('Swap'); $swap->addAttribute('Free', $this->_sys->getSwapFree()); $swap->addAttribute('Used', $this->_sys->getSwapUsed()); $swap->addAttribute('Total', $this->_sys->getSwapTotal()); $swap->addAttribute('Percent', $this->_sys->getSwapPercentUsed()); $i = 1; foreach ($this->_sys->getSwapDevices() as $dev) { $swapMount = $swap->addChild('Mount'); $this->_fillDevice($swapMount, $dev, $i++); } } } /** * fill a xml element with atrributes from a disk device * * @param SimpleXmlExtended $mount Xml-Element * @param DiskDevice $dev DiskDevice * @param Integer $i counter * * @return Void */ private function _fillDevice(SimpleXMLExtended $mount, DiskDevice $dev, $i) { $mount->addAttribute('MountPointID', $i); if ($dev->getFsType()!=="") $mount->addAttribute('FSType', $dev->getFsType()); $mount->addAttribute('Name', $dev->getName()); $mount->addAttribute('Free', sprintf("%.0f", $dev->getFree())); $mount->addAttribute('Used', sprintf("%.0f", $dev->getUsed())); $mount->addAttribute('Total', sprintf("%.0f", $dev->getTotal())); $mount->addAttribute('Percent', $dev->getPercentUsed()); if (PSI_SHOW_MOUNT_OPTION === true) { if ($dev->getOptions() !== null) { $mount->addAttribute('MountOptions', preg_replace("/,/", ", ", $dev->getOptions())); } } if ($dev->getPercentInodesUsed() !== null) { $mount->addAttribute('Inodes', $dev->getPercentInodesUsed()); } if (PSI_SHOW_MOUNT_POINT === true) { $mount->addAttribute('MountPoint', $dev->getMountPoint()); } } /** * generate the filesysteminformation * * @return void */ private function _buildFilesystems() { $hideMounts = $hideFstypes = $hideDisks = array(); $i = 1; if (defined('PSI_HIDE_MOUNTS') && is_string(PSI_HIDE_MOUNTS)) { if (preg_match(ARRAY_EXP, PSI_HIDE_MOUNTS)) { $hideMounts = eval(PSI_HIDE_MOUNTS); } else { $hideMounts = array(PSI_HIDE_MOUNTS); } } if (defined('PSI_HIDE_FS_TYPES') && is_string(PSI_HIDE_FS_TYPES)) { if (preg_match(ARRAY_EXP, PSI_HIDE_FS_TYPES)) { $hideFstypes = eval(PSI_HIDE_FS_TYPES); } else { $hideFstypes = array(PSI_HIDE_FS_TYPES); } } if (defined('PSI_HIDE_DISKS')) { if (is_string(PSI_HIDE_DISKS)) { if (preg_match(ARRAY_EXP, PSI_HIDE_DISKS)) { $hideDisks = eval(PSI_HIDE_DISKS); } else { $hideDisks = array(PSI_HIDE_DISKS); } } elseif (PSI_HIDE_DISKS === true) { return; } } $fs = $this->_xml->addChild('FileSystem'); foreach ($this->_sys->getDiskDevices() as $disk) { if (!in_array($disk->getMountPoint(), $hideMounts, true) && !in_array($disk->getFsType(), $hideFstypes, true) && !in_array($disk->getName(), $hideDisks, true)) { $mount = $fs->addChild('Mount'); $this->_fillDevice($mount, $disk, $i++); } } } /** * generate the motherboard information * * @return void */ private function _buildMbinfo() { $mbinfo = $this->_xml->addChild('MBInfo'); $temp = $fan = $volt = $power = $current = null; if (sizeof(unserialize(PSI_MBINFO))>0) { foreach (unserialize(PSI_MBINFO) as $mbinfoclass) { $mbinfo_data = new $mbinfoclass(); $mbinfo_detail = $mbinfo_data->getMBInfo(); foreach ($mbinfo_detail->getMbTemp() as $dev) { if ($temp == null) { $temp = $mbinfo->addChild('Temperature'); } $item = $temp->addChild('Item'); $item->addAttribute('Label', $dev->getName()); $item->addAttribute('Value', $dev->getValue()); if ($dev->getMax() !== null) { $item->addAttribute('Max', $dev->getMax()); } if (defined('PSI_SENSOR_EVENTS') && PSI_SENSOR_EVENTS && $dev->getEvent() !== "") { $item->addAttribute('Event', $dev->getEvent()); } } foreach ($mbinfo_detail->getMbFan() as $dev) { if ($fan == null) { $fan = $mbinfo->addChild('Fans'); } $item = $fan->addChild('Item'); $item->addAttribute('Label', $dev->getName()); $item->addAttribute('Value', $dev->getValue()); if ($dev->getMin() !== null) { $item->addAttribute('Min', $dev->getMin()); } if (defined('PSI_SENSOR_EVENTS') && PSI_SENSOR_EVENTS && $dev->getEvent() !== "") { $item->addAttribute('Event', $dev->getEvent()); } } foreach ($mbinfo_detail->getMbVolt() as $dev) { if ($volt == null) { $volt = $mbinfo->addChild('Voltage'); } $item = $volt->addChild('Item'); $item->addAttribute('Label', $dev->getName()); $item->addAttribute('Value', $dev->getValue()); if ($dev->getMin() !== null) { $item->addAttribute('Min', $dev->getMin()); } if ($dev->getMax() !== null) { $item->addAttribute('Max', $dev->getMax()); } if (defined('PSI_SENSOR_EVENTS') && PSI_SENSOR_EVENTS && $dev->getEvent() !== "") { $item->addAttribute('Event', $dev->getEvent()); } } foreach ($mbinfo_detail->getMbPower() as $dev) { if ($power == null) { $power = $mbinfo->addChild('Power'); } $item = $power->addChild('Item'); $item->addAttribute('Label', $dev->getName()); $item->addAttribute('Value', $dev->getValue()); if ($dev->getMax() !== null) { $item->addAttribute('Max', $dev->getMax()); } if (defined('PSI_SENSOR_EVENTS') && PSI_SENSOR_EVENTS && $dev->getEvent() !== "") { $item->addAttribute('Event', $dev->getEvent()); } } foreach ($mbinfo_detail->getMbCurrent() as $dev) { if ($current == null) { $current = $mbinfo->addChild('Current'); } $item = $current->addChild('Item'); $item->addAttribute('Label', $dev->getName()); $item->addAttribute('Value', $dev->getValue()); if ($dev->getMax() !== null) { $item->addAttribute('Max', $dev->getMax()); } if (defined('PSI_SENSOR_EVENTS') && PSI_SENSOR_EVENTS && $dev->getEvent() !== "") { $item->addAttribute('Event', $dev->getEvent()); } } } } } /** * generate the ups information * * @return void */ private function _buildUpsinfo() { $upsinfo = $this->_xml->addChild('UPSInfo'); if (defined('PSI_UPS_APCUPSD_CGI_ENABLE') && PSI_UPS_APCUPSD_CGI_ENABLE) { $upsinfo->addAttribute('ApcupsdCgiLinks', true); } if (sizeof(unserialize(PSI_UPSINFO))>0) { foreach (unserialize(PSI_UPSINFO) as $upsinfoclass) { $upsinfo_data = new $upsinfoclass(); $upsinfo_detail = $upsinfo_data->getUPSInfo(); foreach ($upsinfo_detail->getUpsDevices() as $ups) { $item = $upsinfo->addChild('UPS'); $item->addAttribute('Name', $ups->getName()); if ($ups->getModel() !== "") { $item->addAttribute('Model', $ups->getModel()); } $item->addAttribute('Mode', $ups->getMode()); if ($ups->getStartTime() !== "") { $item->addAttribute('StartTime', $ups->getStartTime()); } $item->addAttribute('Status', $ups->getStatus()); if ($ups->getTemperatur() !== null) { $item->addAttribute('Temperature', $ups->getTemperatur()); } if ($ups->getOutages() !== null) { $item->addAttribute('OutagesCount', $ups->getOutages()); } if ($ups->getLastOutage() !== null) { $item->addAttribute('LastOutage', $ups->getLastOutage()); } if ($ups->getLastOutageFinish() !== null) { $item->addAttribute('LastOutageFinish', $ups->getLastOutageFinish()); } if ($ups->getLineVoltage() !== null) { $item->addAttribute('LineVoltage', $ups->getLineVoltage()); } if ($ups->getLineFrequency() !== null) { $item->addAttribute('LineFrequency', $ups->getLineFrequency()); } if ($ups->getLoad() !== null) { $item->addAttribute('LoadPercent', $ups->getLoad()); } if ($ups->getBatteryDate() !== null) { $item->addAttribute('BatteryDate', $ups->getBatteryDate()); } if ($ups->getBatteryVoltage() !== null) { $item->addAttribute('BatteryVoltage', $ups->getBatteryVoltage()); } if ($ups->getBatterCharge() !== null) { $item->addAttribute('BatteryChargePercent', $ups->getBatterCharge()); } if ($ups->getTimeLeft() !== null) { $item->addAttribute('TimeLeftMinutes', $ups->getTimeLeft()); } } } } } /** * generate the xml document * * @return void */ private function _buildXml() { if (!$this->_plugin_request || $this->_complete_request) { if (version_compare("5.2", PHP_VERSION, ">")) { $this->_errors->addError("ERROR", "PHP 5.2 or greater is required, some things may not work correctly"); } if ($this->_sys === null) { if (PSI_DEBUG === true) { // unstable version check if (!is_numeric(substr(PSI_VERSION, -1))) { $this->_errors->addError("WARN", "This is an unstable version of phpSysInfo, some things may not work correctly"); } // Safe mode check $safe_mode = @ini_get("safe_mode") ? true : false; if ($safe_mode) { $this->_errors->addError("WARN", "PhpSysInfo requires to set off 'safe_mode' in 'php.ini'"); } // Include path check $include_path = @ini_get("include_path"); if ($include_path && ($include_path!="")) { $include_path = preg_replace("/(:)|(;)/", "\n", $include_path); if (preg_match("/^\.$/m", $include_path)) { $include_path = "."; } } if ($include_path != ".") { $this->_errors->addError("WARN", "PhpSysInfo requires '.' inside the 'include_path' in php.ini"); } // popen mode check if (defined("PSI_MODE_POPEN") && PSI_MODE_POPEN === true) { $this->_errors->addError("WARN", "Installed version of PHP does not support proc_open() function, popen() is used"); } } $this->_sys = $this->_sysinfo->getSys(); } $this->_buildVitals(); $this->_buildNetwork(); $this->_buildHardware(); $this->_buildMemory(); $this->_buildFilesystems(); $this->_buildMbinfo(); $this->_buildUpsinfo(); } $this->_buildPlugins(); $this->_xml->combinexml($this->_errors->errorsAddToXML($this->_sysinfo->getEncoding())); } /** * get the xml object * * @return string */ public function getXml() { $this->_buildXml(); return $this->_xml->getSimpleXmlElement(); } /** * include xml-trees of the plugins to the main xml * * @return void */ private function _buildPlugins() { $pluginroot = $this->_xml->addChild("Plugins"); if (($this->_plugin_request || $this->_complete_request) && count($this->_plugins) > 0) { $plugins = array(); if ($this->_complete_request) { $plugins = $this->_plugins; } if ($this->_plugin_request) { $plugins = array($this->_plugin); } foreach ($plugins as $plugin) { $object = new $plugin($this->_sysinfo->getEncoding()); $object->execute(); $oxml = $object->xml(); if (sizeof($oxml) > 0) { $pluginroot->combinexml($oxml); } } } } /** * build the xml structure where the content can be inserted * * @return void */ private function _xmlbody() { $dom = new DOMDocument('1.0', 'UTF-8'); $root = $dom->createElement("tns:phpsysinfo"); $root->setAttribute('xmlns:tns', 'http://phpsysinfo.sourceforge.net/'); $root->setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); $root->setAttribute('xsi:schemaLocation', 'http://phpsysinfo.sourceforge.net/ phpsysinfo3.xsd'); $dom->appendChild($root); $this->_xml = new SimpleXMLExtended(simplexml_import_dom($dom), $this->_sysinfo->getEncoding()); $generation = $this->_xml->addChild('Generation'); $generation->addAttribute('version', PSI_VERSION_STRING); $generation->addAttribute('timestamp', time()); $options = $this->_xml->addChild('Options'); $options->addAttribute('tempFormat', defined('PSI_TEMP_FORMAT') ? strtolower(PSI_TEMP_FORMAT) : 'c'); $options->addAttribute('byteFormat', defined('PSI_BYTE_FORMAT') ? strtolower(PSI_BYTE_FORMAT) : 'auto_binary'); if (defined('PSI_REFRESH')) { if (PSI_REFRESH === false) { $options->addAttribute('refresh', 0); } elseif (PSI_REFRESH === true) { $options->addAttribute('refresh', 1); } else { $options->addAttribute('refresh', PSI_REFRESH); } } else { $options->addAttribute('refresh', 60000); } if (defined('PSI_FS_USAGE_THRESHOLD')) { if (PSI_FS_USAGE_THRESHOLD === true) { $options->addAttribute('threshold', 1); } elseif ((PSI_FS_USAGE_THRESHOLD !== false) && (PSI_FS_USAGE_THRESHOLD >= 1) && (PSI_FS_USAGE_THRESHOLD <= 99)) { $options->addAttribute('threshold', PSI_FS_USAGE_THRESHOLD); } } else { $options->addAttribute('threshold', 90); } if (count($this->_plugins) > 0) { if ($this->_plugin_request) { $plug = $this->_xml->addChild('UsedPlugins'); $plug->addChild('Plugin')->addAttribute('name', $this->_plugin); } elseif ($this->_complete_request) { $plug = $this->_xml->addChild('UsedPlugins'); foreach ($this->_plugins as $plugin) { $plug->addChild('Plugin')->addAttribute('name', $plugin); } /* } else { $plug = $this->_xml->addChild('UnusedPlugins'); foreach ($this->_plugins as $plugin) { $plug->addChild('Plugin')->addAttribute('name', $plugin); } */ } } } } phpsysinfo-3.2.5/index.php000066400000000000000000000046561265516077000155670ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: index.php 687 2012-09-06 20:54:49Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * define the application root path on the webserver * @var string */ define('APP_ROOT', dirname(__FILE__)); /** * internal xml or external * external is needed when running in static mode * * @var boolean */ define('PSI_INTERNAL_XML', false); if (version_compare("5.1.3", PHP_VERSION, ">")) { die("PHP 5.1.3 or greater is required!!!"); } if (!extension_loaded("pcre")) { die("phpSysInfo requires the pcre extension to php in order to work properly."); } require_once APP_ROOT.'/includes/autoloader.inc.php'; // Load configuration require_once APP_ROOT.'/read_config.php'; if (!defined('PSI_CONFIG_FILE') || !defined('PSI_DEBUG')) { $tpl = new Template("/templates/html/error_config.html"); echo $tpl->fetch(); die(); } // redirect to page with and without javascript $display = strtolower(isset($_GET['disp']) ? $_GET['disp'] : PSI_DEFAULT_DISPLAY_MODE); switch ($display) { case "static": $webpage = new WebpageXSLT(); $webpage->run(); break; case "dynamic": $webpage = new Webpage(); $webpage->run(); break; case "xml": $webpage = new WebpageXML(true, null); $webpage->run(); break; case "bootstrap": /* $tpl = new Template("/templates/html/index_bootstrap.html"); echo $tpl->fetch(); */ $webpage = new Webpage("bootstrap"); $webpage->run(); break; case "auto": $tpl = new Template("/templates/html/index_all.html"); echo $tpl->fetch(); break; default: $defaultdisplay = strtolower(PSI_DEFAULT_DISPLAY_MODE); switch ($defaultdisplay) { case "static": $webpage = new WebpageXSLT(); $webpage->run(); break; case "dynamic": $webpage = new Webpage(); $webpage->run(); break; case "bootstrap": $webpage = new Webpage("bootstrap"); $webpage->run(); break; default: $tpl = new Template("/templates/html/index_all.html"); echo $tpl->fetch(); break; } break; } phpsysinfo-3.2.5/js.php000066400000000000000000000057241265516077000150710ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: js.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * application root path * * @var string */ define('APP_ROOT', dirname(__FILE__)); require_once APP_ROOT.'/includes/autoloader.inc.php'; require_once APP_ROOT.'/read_config.php'; $file = isset($_GET['name']) ? basename(htmlspecialchars($_GET['name'])) : null; $plugin = isset($_GET['plugin']) ? basename(htmlspecialchars($_GET['plugin'])) : null; $script = null; if ($file != null && $plugin == null) { if (strtolower(substr($file, 0, 6)) == 'jquery') { $script = APP_ROOT.'/js/jQuery/'.$file; } elseif (strtolower(substr($file, 0, 10)) == 'phpsysinfo') { $script = APP_ROOT.'/js/phpSysInfo/'.$file; } else { $script = APP_ROOT.'/js/vendor/'.$file; } } elseif ($file == null && $plugin != null) { $script = APP_ROOT.'/plugins/'.strtolower($plugin).'/js/'.strtolower($plugin); } elseif ($file != null && $plugin != null) { $script = APP_ROOT.'/plugins/'.strtolower($plugin).'/js/'.strtolower($file); } if ($script != null) { $scriptjs = $script.'.js'; $scriptmin = $script.'.min.js'; $compression = false; header("content-type: application/x-javascript"); if ((!defined("PSI_DEBUG") || (PSI_DEBUG !== true)) && defined("PSI_JS_COMPRESSION")) { $compression = strtolower(PSI_JS_COMPRESSION); } switch ($compression) { case "normal": if (file_exists($scriptmin) && is_readable($scriptmin)) { $filecontent = file_get_contents($scriptmin); echo $filecontent; } elseif (file_exists($scriptjs) && is_readable($scriptjs)) { $filecontent = file_get_contents($scriptjs); $packer = new JavaScriptPacker($filecontent); echo $packer->pack(); } break; case "none": if (file_exists($scriptjs) && is_readable($scriptjs)) { $filecontent = file_get_contents($scriptjs); $packer = new JavaScriptPacker($filecontent, 0); echo $packer->pack(); } elseif (file_exists($scriptmin) && is_readable($scriptmin)) { $filecontent = file_get_contents($scriptmin); echo $filecontent; } break; default: if (file_exists($scriptjs) && is_readable($scriptjs)) { $filecontent = file_get_contents($scriptjs); } elseif (file_exists($scriptmin) && is_readable($scriptmin)) { $filecontent = file_get_contents($scriptmin); } else break; echo $filecontent; break; } } phpsysinfo-3.2.5/js/000077500000000000000000000000001265516077000143505ustar00rootroot00000000000000phpsysinfo-3.2.5/js/jQuery/000077500000000000000000000000001265516077000156275ustar00rootroot00000000000000phpsysinfo-3.2.5/js/jQuery/README000066400000000000000000000053321265516077000165120ustar00rootroot00000000000000versions, links and simple description of used jquery files =========================================================== jquery.js --------- VERSION : 2.2.0 URL : http://jquery.com/ DESC : jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. USED : used for the entire userinterface jquery-1.js --------- VERSION : 1.12.0 URL : http://jquery.com/ DESC : jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. USED : used for the entire userinterface jquery.dataTables.js -------------------- VERSION : 1.8.2+jquery1.9fix URL : http://plugins.jquery.com/project/DataTables DESC : dataTables is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes. USED : provide tablesorting for the filesystem table jquery.nyroModal.js ------------------- VERSION : 1.6.2+jquery1.8fix URL : http://plugins.jquery.com/project/nyroModal DESC : nyroModal is a high customizable modal window plugin. USED : provide a modal dialog, that is shown when errors are found during execution of the php parsers, or lets say in this way: if there are error elements in the xml file jquery.timers.js ---------------- VERSION : 0.1 URL : http://plugins.jquery.com/project/Timer DESC : provides a cleaner way to handle intervals USED : automatic reloading of the entire page jquery.jgrowl.js ---------------- VERSION : 1.2.6+jquery1.9fix+jquery3fix URL : http://plugins.jquery.com/project/jGrowl DESC : jGrowl is a jQuery plugin that raises unobtrusive messages within the browser, similar to the way that OS X's Growl Framework works USED : show alert and error message jquery.treeTable.js ------------------- VERSION : 2009-06-22+statefix+spanfix+altfix URL : http://plugins.jquery.com/project/jQTreeTable; http://www.hanpau.com/index.php?page=jqtreetable DESC : Take a plain html table, wrap the rows you want collapsing/expanding in a tbody tag with an id of treetable, map each row to it's parent row, set some options, and let jQTreeTable take it from there. USED : Hardware, Memory, UPS blocks jquery.ifixpng.js ------------------- VERSION : 2.1 (23/04/2008)+jquery1.8fix URL : http://jquery.khurshid.com DESC : Designed to fix that problem by applying appropriate filters to user specified elements, while keeping all element tags intact. USED : used for the entire userinterface $Id: README 702 2012-09-21 16:52:32Z namiltd $ phpsysinfo-3.2.5/js/jQuery/README_bootstrap000066400000000000000000000025541265516077000206120ustar00rootroot00000000000000versions, links and simple description of used jquery files =========================================================== jquery.js --------- VERSION : 2.2.0 URL : http://jquery.com/ DESC : jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. USED : used for the entire userinterface jquery-1.js --------- VERSION : 1.12.0 URL : http://jquery.com/ DESC : jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. USED : used for the entire userinterface jquery.treegrid.js ------------------- VERSION : 0.3.0 URL : http://plugins.jquery.com/treegrid/; http://maxazan.github.io/jquery-treegrid/ DESC : TreeGrid is a lightweight and flexible jQuery plugin to create a tree grid component that renders hierarchical, nested and flat data in a table. USED : Hardware, Memory, UPS blocks jquery.ifixpng.js ------------------- VERSION : 2.1 (23/04/2008)+jquery1.8fix URL : http://jquery.khurshid.com DESC : Designed to fix that problem by applying appropriate filters to user specified elements, while keeping all element tags intact. USED : used for the entire userinterface phpsysinfo-3.2.5/js/jQuery/jquery-1.js000066400000000000000000010764211265516077000176550ustar00rootroot00000000000000/*! * jQuery JavaScript Library v1.12.0 * http://jquery.com/ * * Includes Sizzle.js * http://sizzlejs.com/ * * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2016-01-08T19:56Z */ (function( global, factory ) { if ( typeof module === "object" && typeof module.exports === "object" ) { // For CommonJS and CommonJS-like environments where a proper `window` // is present, execute the factory and get jQuery. // For environments that do not have a `window` with a `document` // (such as Node.js), expose a factory as module.exports. // This accentuates the need for the creation of a real `window`. // e.g. var jQuery = require("jquery")(window); // See ticket #14549 for more info. module.exports = global.document ? factory( global, true ) : function( w ) { if ( !w.document ) { throw new Error( "jQuery requires a window with a document" ); } return factory( w ); }; } else { factory( global ); } // Pass this if window is not defined yet }(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { // Support: Firefox 18+ // Can't be in strict mode, several libs including ASP.NET trace // the stack via arguments.caller.callee and Firefox dies if // you try to trace through "use strict" call chains. (#13335) //"use strict"; var deletedIds = []; var document = window.document; var slice = deletedIds.slice; var concat = deletedIds.concat; var push = deletedIds.push; var indexOf = deletedIds.indexOf; var class2type = {}; var toString = class2type.toString; var hasOwn = class2type.hasOwnProperty; var support = {}; var version = "1.12.0", // Define a local copy of jQuery jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if not included) return new jQuery.fn.init( selector, context ); }, // Support: Android<4.1, IE<9 // Make sure we trim BOM and NBSP rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, // Matches dashed string for camelizing rmsPrefix = /^-ms-/, rdashAlpha = /-([\da-z])/gi, // Used by jQuery.camelCase as callback to replace() fcamelCase = function( all, letter ) { return letter.toUpperCase(); }; jQuery.fn = jQuery.prototype = { // The current version of jQuery being used jquery: version, constructor: jQuery, // Start with an empty selector selector: "", // The default length of a jQuery object is 0 length: 0, toArray: function() { return slice.call( this ); }, // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { return num != null ? // Return just the one element from the set ( num < 0 ? this[ num + this.length ] : this[ num ] ) : // Return all the elements in a clean array slice.call( this ); }, // Take an array of elements and push it onto the stack // (returning the new matched element set) pushStack: function( elems ) { // Build a new jQuery matched element set var ret = jQuery.merge( this.constructor(), elems ); // Add the old object onto the stack (as a reference) ret.prevObject = this; ret.context = this.context; // Return the newly-formed element set return ret; }, // Execute a callback for every element in the matched set. each: function( callback ) { return jQuery.each( this, callback ); }, map: function( callback ) { return this.pushStack( jQuery.map( this, function( elem, i ) { return callback.call( elem, i, elem ); } ) ); }, slice: function() { return this.pushStack( slice.apply( this, arguments ) ); }, first: function() { return this.eq( 0 ); }, last: function() { return this.eq( -1 ); }, eq: function( i ) { var len = this.length, j = +i + ( i < 0 ? len : 0 ); return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); }, end: function() { return this.prevObject || this.constructor(); }, // For internal use only. // Behaves like an Array's method, not like a jQuery method. push: push, sort: deletedIds.sort, splice: deletedIds.splice }; jQuery.extend = jQuery.fn.extend = function() { var src, copyIsArray, copy, name, options, clone, target = arguments[ 0 ] || {}, i = 1, length = arguments.length, deep = false; // Handle a deep copy situation if ( typeof target === "boolean" ) { deep = target; // skip the boolean and the target target = arguments[ i ] || {}; i++; } // Handle case when target is a string or something (possible in deep copy) if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { target = {}; } // extend jQuery itself if only one argument is passed if ( i === length ) { target = this; i--; } for ( ; i < length; i++ ) { // Only deal with non-null/undefined values if ( ( options = arguments[ i ] ) != null ) { // Extend the base object for ( name in options ) { src = target[ name ]; copy = options[ name ]; // Prevent never-ending loop if ( target === copy ) { continue; } // Recurse if we're merging plain objects or arrays if ( deep && copy && ( jQuery.isPlainObject( copy ) || ( copyIsArray = jQuery.isArray( copy ) ) ) ) { if ( copyIsArray ) { copyIsArray = false; clone = src && jQuery.isArray( src ) ? src : []; } else { clone = src && jQuery.isPlainObject( src ) ? src : {}; } // Never move original objects, clone them target[ name ] = jQuery.extend( deep, clone, copy ); // Don't bring in undefined values } else if ( copy !== undefined ) { target[ name ] = copy; } } } } // Return the modified object return target; }; jQuery.extend( { // Unique for each copy of jQuery on the page expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), // Assume jQuery is ready without the ready module isReady: true, error: function( msg ) { throw new Error( msg ); }, noop: function() {}, // See test/unit/core.js for details concerning isFunction. // Since version 1.3, DOM methods and functions like alert // aren't supported. They return false on IE (#2968). isFunction: function( obj ) { return jQuery.type( obj ) === "function"; }, isArray: Array.isArray || function( obj ) { return jQuery.type( obj ) === "array"; }, isWindow: function( obj ) { /* jshint eqeqeq: false */ return obj != null && obj == obj.window; }, isNumeric: function( obj ) { // parseFloat NaNs numeric-cast false positives (null|true|false|"") // ...but misinterprets leading-number strings, particularly hex literals ("0x...") // subtraction forces infinities to NaN // adding 1 corrects loss of precision from parseFloat (#15100) var realStringObj = obj && obj.toString(); return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; }, isEmptyObject: function( obj ) { var name; for ( name in obj ) { return false; } return true; }, isPlainObject: function( obj ) { var key; // Must be an Object. // Because of IE, we also have to check the presence of the constructor property. // Make sure that DOM nodes and window objects don't pass through, as well if ( !obj || jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { return false; } try { // Not own constructor property must be Object if ( obj.constructor && !hasOwn.call( obj, "constructor" ) && !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { return false; } } catch ( e ) { // IE8,9 Will throw exceptions on certain host objects #9897 return false; } // Support: IE<9 // Handle iteration over inherited properties before own properties. if ( !support.ownFirst ) { for ( key in obj ) { return hasOwn.call( obj, key ); } } // Own properties are enumerated firstly, so to speed up, // if last one is own, then all properties are own. for ( key in obj ) {} return key === undefined || hasOwn.call( obj, key ); }, type: function( obj ) { if ( obj == null ) { return obj + ""; } return typeof obj === "object" || typeof obj === "function" ? class2type[ toString.call( obj ) ] || "object" : typeof obj; }, // Workarounds based on findings by Jim Driscoll // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context globalEval: function( data ) { if ( data && jQuery.trim( data ) ) { // We use execScript on Internet Explorer // We use an anonymous function so that context is window // rather than jQuery in Firefox ( window.execScript || function( data ) { window[ "eval" ].call( window, data ); // jscs:ignore requireDotNotation } )( data ); } }, // Convert dashed to camelCase; used by the css and data modules // Microsoft forgot to hump their vendor prefix (#9572) camelCase: function( string ) { return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); }, nodeName: function( elem, name ) { return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); }, each: function( obj, callback ) { var length, i = 0; if ( isArrayLike( obj ) ) { length = obj.length; for ( ; i < length; i++ ) { if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { break; } } } else { for ( i in obj ) { if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { break; } } } return obj; }, // Support: Android<4.1, IE<9 trim: function( text ) { return text == null ? "" : ( text + "" ).replace( rtrim, "" ); }, // results is for internal usage only makeArray: function( arr, results ) { var ret = results || []; if ( arr != null ) { if ( isArrayLike( Object( arr ) ) ) { jQuery.merge( ret, typeof arr === "string" ? [ arr ] : arr ); } else { push.call( ret, arr ); } } return ret; }, inArray: function( elem, arr, i ) { var len; if ( arr ) { if ( indexOf ) { return indexOf.call( arr, elem, i ); } len = arr.length; i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; for ( ; i < len; i++ ) { // Skip accessing in sparse arrays if ( i in arr && arr[ i ] === elem ) { return i; } } } return -1; }, merge: function( first, second ) { var len = +second.length, j = 0, i = first.length; while ( j < len ) { first[ i++ ] = second[ j++ ]; } // Support: IE<9 // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) if ( len !== len ) { while ( second[ j ] !== undefined ) { first[ i++ ] = second[ j++ ]; } } first.length = i; return first; }, grep: function( elems, callback, invert ) { var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; // Go through the array, only saving the items // that pass the validator function for ( ; i < length; i++ ) { callbackInverse = !callback( elems[ i ], i ); if ( callbackInverse !== callbackExpect ) { matches.push( elems[ i ] ); } } return matches; }, // arg is for internal usage only map: function( elems, callback, arg ) { var length, value, i = 0, ret = []; // Go through the array, translating each of the items to their new values if ( isArrayLike( elems ) ) { length = elems.length; for ( ; i < length; i++ ) { value = callback( elems[ i ], i, arg ); if ( value != null ) { ret.push( value ); } } // Go through every key on the object, } else { for ( i in elems ) { value = callback( elems[ i ], i, arg ); if ( value != null ) { ret.push( value ); } } } // Flatten any nested arrays return concat.apply( [], ret ); }, // A global GUID counter for objects guid: 1, // Bind a function to a context, optionally partially applying any // arguments. proxy: function( fn, context ) { var args, proxy, tmp; if ( typeof context === "string" ) { tmp = fn[ context ]; context = fn; fn = tmp; } // Quick check to determine if target is callable, in the spec // this throws a TypeError, but we will just return undefined. if ( !jQuery.isFunction( fn ) ) { return undefined; } // Simulated bind args = slice.call( arguments, 2 ); proxy = function() { return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); }; // Set the guid of unique handler to the same of original handler, so it can be removed proxy.guid = fn.guid = fn.guid || jQuery.guid++; return proxy; }, now: function() { return +( new Date() ); }, // jQuery.support is not used in Core but other projects attach their // properties to it so it needs to exist. support: support } ); // JSHint would error on this code due to the Symbol not being defined in ES5. // Defining this global in .jshintrc would create a danger of using the global // unguarded in another place, it seems safer to just disable JSHint for these // three lines. /* jshint ignore: start */ if ( typeof Symbol === "function" ) { jQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ]; } /* jshint ignore: end */ // Populate the class2type map jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), function( i, name ) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); } ); function isArrayLike( obj ) { // Support: iOS 8.2 (not reproducible in simulator) // `in` check used to prevent JIT error (gh-2145) // hasOwn isn't used here due to false negatives // regarding Nodelist length in IE var length = !!obj && "length" in obj && obj.length, type = jQuery.type( obj ); if ( type === "function" || jQuery.isWindow( obj ) ) { return false; } return type === "array" || length === 0 || typeof length === "number" && length > 0 && ( length - 1 ) in obj; } var Sizzle = /*! * Sizzle CSS Selector Engine v2.2.1 * http://sizzlejs.com/ * * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2015-10-17 */ (function( window ) { var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, // Local document vars setDocument, document, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains, // Instance-specific data expando = "sizzle" + 1 * new Date(), preferredDoc = window.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), sortOrder = function( a, b ) { if ( a === b ) { hasDuplicate = true; } return 0; }, // General-purpose constants MAX_NEGATIVE = 1 << 31, // Instance methods hasOwn = ({}).hasOwnProperty, arr = [], pop = arr.pop, push_native = arr.push, push = arr.push, slice = arr.slice, // Use a stripped-down indexOf as it's faster than native // http://jsperf.com/thor-indexof-vs-for/5 indexOf = function( list, elem ) { var i = 0, len = list.length; for ( ; i < len; i++ ) { if ( list[i] === elem ) { return i; } } return -1; }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", // Regular expressions // http://www.w3.org/TR/css3-selectors/#whitespace whitespace = "[\\x20\\t\\r\\n\\f]", // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + // Operator (capture 2) "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + ")(?:\\((" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: // 1. quoted (capture 3; capture 4 or capture 5) "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + // 2. simple (capture 6) "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + // 3. anything else (capture 2) ".*" + ")\\)|)", // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter rwhitespace = new RegExp( whitespace + "+", "g" ), rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), rpseudo = new RegExp( pseudos ), ridentifier = new RegExp( "^" + identifier + "$" ), matchExpr = { "ID": new RegExp( "^#(" + identifier + ")" ), "CLASS": new RegExp( "^\\.(" + identifier + ")" ), "TAG": new RegExp( "^(" + identifier + "|[*])" ), "ATTR": new RegExp( "^" + attributes ), "PSEUDO": new RegExp( "^" + pseudos ), "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), // For use in libraries implementing .is() // We use this for POS matching in `select` "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) }, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rnative = /^[^{]+\{\s*\[native \w/, // Easily-parseable/retrievable ID or TAG or CLASS selectors rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, rescape = /'|\\/g, // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), funescape = function( _, escaped, escapedWhitespace ) { var high = "0x" + escaped - 0x10000; // NaN means non-codepoint // Support: Firefox<24 // Workaround erroneous numeric interpretation of +"0x" return high !== high || escapedWhitespace ? escaped : high < 0 ? // BMP codepoint String.fromCharCode( high + 0x10000 ) : // Supplemental Plane codepoint (surrogate pair) String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); }, // Used for iframes // See setDocument() // Removing the function wrapper causes a "Permission Denied" // error in IE unloadHandler = function() { setDocument(); }; // Optimize for push.apply( _, NodeList ) try { push.apply( (arr = slice.call( preferredDoc.childNodes )), preferredDoc.childNodes ); // Support: Android<4.0 // Detect silently failing push.apply arr[ preferredDoc.childNodes.length ].nodeType; } catch ( e ) { push = { apply: arr.length ? // Leverage slice if possible function( target, els ) { push_native.apply( target, slice.call(els) ); } : // Support: IE<9 // Otherwise append directly function( target, els ) { var j = target.length, i = 0; // Can't trust NodeList.length while ( (target[j++] = els[i++]) ) {} target.length = j - 1; } }; } function Sizzle( selector, context, results, seed ) { var m, i, elem, nid, nidselect, match, groups, newSelector, newContext = context && context.ownerDocument, // nodeType defaults to 9, since context defaults to document nodeType = context ? context.nodeType : 9; results = results || []; // Return early from calls with invalid selector or context if ( typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { return results; } // Try to shortcut find operations (as opposed to filters) in HTML documents if ( !seed ) { if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { setDocument( context ); } context = context || document; if ( documentIsHTML ) { // If the selector is sufficiently simple, try using a "get*By*" DOM method // (excepting DocumentFragment context, where the methods don't exist) if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { // ID selector if ( (m = match[1]) ) { // Document context if ( nodeType === 9 ) { if ( (elem = context.getElementById( m )) ) { // Support: IE, Opera, Webkit // TODO: identify versions // getElementById can match elements by name instead of ID if ( elem.id === m ) { results.push( elem ); return results; } } else { return results; } // Element context } else { // Support: IE, Opera, Webkit // TODO: identify versions // getElementById can match elements by name instead of ID if ( newContext && (elem = newContext.getElementById( m )) && contains( context, elem ) && elem.id === m ) { results.push( elem ); return results; } } // Type selector } else if ( match[2] ) { push.apply( results, context.getElementsByTagName( selector ) ); return results; // Class selector } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { push.apply( results, context.getElementsByClassName( m ) ); return results; } } // Take advantage of querySelectorAll if ( support.qsa && !compilerCache[ selector + " " ] && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { if ( nodeType !== 1 ) { newContext = context; newSelector = selector; // qSA looks outside Element context, which is not what we want // Thanks to Andrew Dupont for this workaround technique // Support: IE <=8 // Exclude object elements } else if ( context.nodeName.toLowerCase() !== "object" ) { // Capture the context ID, setting it first if necessary if ( (nid = context.getAttribute( "id" )) ) { nid = nid.replace( rescape, "\\$&" ); } else { context.setAttribute( "id", (nid = expando) ); } // Prefix every selector in the list groups = tokenize( selector ); i = groups.length; nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; while ( i-- ) { groups[i] = nidselect + " " + toSelector( groups[i] ); } newSelector = groups.join( "," ); // Expand context for sibling selectors newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; } if ( newSelector ) { try { push.apply( results, newContext.querySelectorAll( newSelector ) ); return results; } catch ( qsaError ) { } finally { if ( nid === expando ) { context.removeAttribute( "id" ); } } } } } } // All others return select( selector.replace( rtrim, "$1" ), context, results, seed ); } /** * Create key-value caches of limited size * @returns {function(string, object)} Returns the Object data after storing it on itself with * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) * deleting the oldest entry */ function createCache() { var keys = []; function cache( key, value ) { // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) if ( keys.push( key + " " ) > Expr.cacheLength ) { // Only keep the most recent entries delete cache[ keys.shift() ]; } return (cache[ key + " " ] = value); } return cache; } /** * Mark a function for special use by Sizzle * @param {Function} fn The function to mark */ function markFunction( fn ) { fn[ expando ] = true; return fn; } /** * Support testing using an element * @param {Function} fn Passed the created div and expects a boolean result */ function assert( fn ) { var div = document.createElement("div"); try { return !!fn( div ); } catch (e) { return false; } finally { // Remove from its parent by default if ( div.parentNode ) { div.parentNode.removeChild( div ); } // release memory in IE div = null; } } /** * Adds the same handler for all of the specified attrs * @param {String} attrs Pipe-separated list of attributes * @param {Function} handler The method that will be applied */ function addHandle( attrs, handler ) { var arr = attrs.split("|"), i = arr.length; while ( i-- ) { Expr.attrHandle[ arr[i] ] = handler; } } /** * Checks document order of two siblings * @param {Element} a * @param {Element} b * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b */ function siblingCheck( a, b ) { var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE ); // Use IE sourceIndex if available on both nodes if ( diff ) { return diff; } // Check if b follows a if ( cur ) { while ( (cur = cur.nextSibling) ) { if ( cur === b ) { return -1; } } } return a ? 1 : -1; } /** * Returns a function to use in pseudos for input types * @param {String} type */ function createInputPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); return name === "input" && elem.type === type; }; } /** * Returns a function to use in pseudos for buttons * @param {String} type */ function createButtonPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); return (name === "input" || name === "button") && elem.type === type; }; } /** * Returns a function to use in pseudos for positionals * @param {Function} fn */ function createPositionalPseudo( fn ) { return markFunction(function( argument ) { argument = +argument; return markFunction(function( seed, matches ) { var j, matchIndexes = fn( [], seed.length, argument ), i = matchIndexes.length; // Match elements found at the specified indexes while ( i-- ) { if ( seed[ (j = matchIndexes[i]) ] ) { seed[j] = !(matches[j] = seed[j]); } } }); }); } /** * Checks a node for validity as a Sizzle context * @param {Element|Object=} context * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value */ function testContext( context ) { return context && typeof context.getElementsByTagName !== "undefined" && context; } // Expose support vars for convenience support = Sizzle.support = {}; /** * Detects XML nodes * @param {Element|Object} elem An element or a document * @returns {Boolean} True iff elem is a non-HTML XML node */ isXML = Sizzle.isXML = function( elem ) { // documentElement is verified for cases where it doesn't yet exist // (such as loading iframes in IE - #4833) var documentElement = elem && (elem.ownerDocument || elem).documentElement; return documentElement ? documentElement.nodeName !== "HTML" : false; }; /** * Sets document-related variables once based on the current document * @param {Element|Object} [doc] An element or document object to use to set the document * @returns {Object} Returns the current document */ setDocument = Sizzle.setDocument = function( node ) { var hasCompare, parent, doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { return document; } // Update global variables document = doc; docElem = document.documentElement; documentIsHTML = !isXML( document ); // Support: IE 9-11, Edge // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) if ( (parent = document.defaultView) && parent.top !== parent ) { // Support: IE 11 if ( parent.addEventListener ) { parent.addEventListener( "unload", unloadHandler, false ); // Support: IE 9 - 10 only } else if ( parent.attachEvent ) { parent.attachEvent( "onunload", unloadHandler ); } } /* Attributes ---------------------------------------------------------------------- */ // Support: IE<8 // Verify that getAttribute really returns attributes and not properties // (excepting IE8 booleans) support.attributes = assert(function( div ) { div.className = "i"; return !div.getAttribute("className"); }); /* getElement(s)By* ---------------------------------------------------------------------- */ // Check if getElementsByTagName("*") returns only elements support.getElementsByTagName = assert(function( div ) { div.appendChild( document.createComment("") ); return !div.getElementsByTagName("*").length; }); // Support: IE<9 support.getElementsByClassName = rnative.test( document.getElementsByClassName ); // Support: IE<10 // Check if getElementById returns elements by name // The broken getElementById methods don't pick up programatically-set names, // so use a roundabout getElementsByName test support.getById = assert(function( div ) { docElem.appendChild( div ).id = expando; return !document.getElementsByName || !document.getElementsByName( expando ).length; }); // ID find and filter if ( support.getById ) { Expr.find["ID"] = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var m = context.getElementById( id ); return m ? [ m ] : []; } }; Expr.filter["ID"] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { return elem.getAttribute("id") === attrId; }; }; } else { // Support: IE6/7 // getElementById is not reliable as a find shortcut delete Expr.find["ID"]; Expr.filter["ID"] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return node && node.value === attrId; }; }; } // Tag Expr.find["TAG"] = support.getElementsByTagName ? function( tag, context ) { if ( typeof context.getElementsByTagName !== "undefined" ) { return context.getElementsByTagName( tag ); // DocumentFragment nodes don't have gEBTN } else if ( support.qsa ) { return context.querySelectorAll( tag ); } } : function( tag, context ) { var elem, tmp = [], i = 0, // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too results = context.getElementsByTagName( tag ); // Filter out possible comments if ( tag === "*" ) { while ( (elem = results[i++]) ) { if ( elem.nodeType === 1 ) { tmp.push( elem ); } } return tmp; } return results; }; // Class Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { return context.getElementsByClassName( className ); } }; /* QSA/matchesSelector ---------------------------------------------------------------------- */ // QSA and matchesSelector support // matchesSelector(:active) reports false when true (IE9/Opera 11.5) rbuggyMatches = []; // qSa(:focus) reports false when true (Chrome 21) // We allow this because of a bug in IE8/9 that throws an error // whenever `document.activeElement` is accessed on an iframe // So, we allow :focus to pass through QSA all the time to avoid the IE error // See http://bugs.jquery.com/ticket/13378 rbuggyQSA = []; if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { // Build QSA regex // Regex strategy adopted from Diego Perini assert(function( div ) { // Select is set to empty string on purpose // This is to test IE's treatment of not explicitly // setting a boolean content attribute, // since its presence should be enough // http://bugs.jquery.com/ticket/12359 docElem.appendChild( div ).innerHTML = "" + ""; // Support: IE8, Opera 11-12.16 // Nothing should be selected when empty strings follow ^= or $= or *= // The test attribute must be unknown in Opera but "safe" for WinRT // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section if ( div.querySelectorAll("[msallowcapture^='']").length ) { rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); } // Support: IE8 // Boolean attributes and "value" are not treated correctly if ( !div.querySelectorAll("[selected]").length ) { rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { rbuggyQSA.push("~="); } // Webkit/Opera - :checked should return selected option elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked // IE8 throws error here and will not see later tests if ( !div.querySelectorAll(":checked").length ) { rbuggyQSA.push(":checked"); } // Support: Safari 8+, iOS 8+ // https://bugs.webkit.org/show_bug.cgi?id=136851 // In-page `selector#id sibing-combinator selector` fails if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { rbuggyQSA.push(".#.+[+~]"); } }); assert(function( div ) { // Support: Windows 8 Native Apps // The type and name attributes are restricted during .innerHTML assignment var input = document.createElement("input"); input.setAttribute( "type", "hidden" ); div.appendChild( input ).setAttribute( "name", "D" ); // Support: IE8 // Enforce case-sensitivity of name attribute if ( div.querySelectorAll("[name=d]").length ) { rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) // IE8 throws error here and will not see later tests if ( !div.querySelectorAll(":enabled").length ) { rbuggyQSA.push( ":enabled", ":disabled" ); } // Opera 10-11 does not throw on post-comma invalid pseudos div.querySelectorAll("*,:x"); rbuggyQSA.push(",.*:"); }); } if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector) )) ) { assert(function( div ) { // Check to see if it's possible to do matchesSelector // on a disconnected node (IE 9) support.disconnectedMatch = matches.call( div, "div" ); // This should fail with an exception // Gecko does not error, returns false instead matches.call( div, "[s!='']:x" ); rbuggyMatches.push( "!=", pseudos ); }); } rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); /* Contains ---------------------------------------------------------------------- */ hasCompare = rnative.test( docElem.compareDocumentPosition ); // Element contains another // Purposefully self-exclusive // As in, an element does not contain itself contains = hasCompare || rnative.test( docElem.contains ) ? function( a, b ) { var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode; return a === bup || !!( bup && bup.nodeType === 1 && ( adown.contains ? adown.contains( bup ) : a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 )); } : function( a, b ) { if ( b ) { while ( (b = b.parentNode) ) { if ( b === a ) { return true; } } } return false; }; /* Sorting ---------------------------------------------------------------------- */ // Document order sorting sortOrder = hasCompare ? function( a, b ) { // Flag for duplicate removal if ( a === b ) { hasDuplicate = true; return 0; } // Sort on method existence if only one input has compareDocumentPosition var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; if ( compare ) { return compare; } // Calculate position if both inputs belong to the same document compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? a.compareDocumentPosition( b ) : // Otherwise we know they are disconnected 1; // Disconnected nodes if ( compare & 1 || (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { // Choose the first element that is related to our preferred document if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { return -1; } if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { return 1; } // Maintain original order return sortInput ? ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 0; } return compare & 4 ? -1 : 1; } : function( a, b ) { // Exit early if the nodes are identical if ( a === b ) { hasDuplicate = true; return 0; } var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [ a ], bp = [ b ]; // Parentless nodes are either documents or disconnected if ( !aup || !bup ) { return a === document ? -1 : b === document ? 1 : aup ? -1 : bup ? 1 : sortInput ? ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 0; // If the nodes are siblings, we can do a quick check } else if ( aup === bup ) { return siblingCheck( a, b ); } // Otherwise we need full lists of their ancestors for comparison cur = a; while ( (cur = cur.parentNode) ) { ap.unshift( cur ); } cur = b; while ( (cur = cur.parentNode) ) { bp.unshift( cur ); } // Walk down the tree looking for a discrepancy while ( ap[i] === bp[i] ) { i++; } return i ? // Do a sibling check if the nodes have a common ancestor siblingCheck( ap[i], bp[i] ) : // Otherwise nodes in our document sort first ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0; }; return document; }; Sizzle.matches = function( expr, elements ) { return Sizzle( expr, null, null, elements ); }; Sizzle.matchesSelector = function( elem, expr ) { // Set document vars if needed if ( ( elem.ownerDocument || elem ) !== document ) { setDocument( elem ); } // Make sure that attribute selectors are quoted expr = expr.replace( rattributeQuotes, "='$1']" ); if ( support.matchesSelector && documentIsHTML && !compilerCache[ expr + " " ] && ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { try { var ret = matches.call( elem, expr ); // IE 9's matchesSelector returns false on disconnected nodes if ( ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document // fragment in IE 9 elem.document && elem.document.nodeType !== 11 ) { return ret; } } catch (e) {} } return Sizzle( expr, document, null, [ elem ] ).length > 0; }; Sizzle.contains = function( context, elem ) { // Set document vars if needed if ( ( context.ownerDocument || context ) !== document ) { setDocument( context ); } return contains( context, elem ); }; Sizzle.attr = function( elem, name ) { // Set document vars if needed if ( ( elem.ownerDocument || elem ) !== document ) { setDocument( elem ); } var fn = Expr.attrHandle[ name.toLowerCase() ], // Don't get fooled by Object.prototype properties (jQuery #13807) val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? fn( elem, name, !documentIsHTML ) : undefined; return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute( name ) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; }; Sizzle.error = function( msg ) { throw new Error( "Syntax error, unrecognized expression: " + msg ); }; /** * Document sorting and removing duplicates * @param {ArrayLike} results */ Sizzle.uniqueSort = function( results ) { var elem, duplicates = [], j = 0, i = 0; // Unless we *know* we can detect duplicates, assume their presence hasDuplicate = !support.detectDuplicates; sortInput = !support.sortStable && results.slice( 0 ); results.sort( sortOrder ); if ( hasDuplicate ) { while ( (elem = results[i++]) ) { if ( elem === results[ i ] ) { j = duplicates.push( i ); } } while ( j-- ) { results.splice( duplicates[ j ], 1 ); } } // Clear input after sorting to release objects // See https://github.com/jquery/sizzle/pull/225 sortInput = null; return results; }; /** * Utility function for retrieving the text value of an array of DOM nodes * @param {Array|Element} elem */ getText = Sizzle.getText = function( elem ) { var node, ret = "", i = 0, nodeType = elem.nodeType; if ( !nodeType ) { // If no nodeType, this is expected to be an array while ( (node = elem[i++]) ) { // Do not traverse comment nodes ret += getText( node ); } } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { // Use textContent for elements // innerText usage removed for consistency of new lines (jQuery #11153) if ( typeof elem.textContent === "string" ) { return elem.textContent; } else { // Traverse its children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { ret += getText( elem ); } } } else if ( nodeType === 3 || nodeType === 4 ) { return elem.nodeValue; } // Do not include comment or processing instruction nodes return ret; }; Expr = Sizzle.selectors = { // Can be adjusted by the user cacheLength: 50, createPseudo: markFunction, match: matchExpr, attrHandle: {}, find: {}, relative: { ">": { dir: "parentNode", first: true }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: true }, "~": { dir: "previousSibling" } }, preFilter: { "ATTR": function( match ) { match[1] = match[1].replace( runescape, funescape ); // Move the given value to match[3] whether quoted or unquoted match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); if ( match[2] === "~=" ) { match[3] = " " + match[3] + " "; } return match.slice( 0, 4 ); }, "CHILD": function( match ) { /* matches from matchExpr["CHILD"] 1 type (only|nth|...) 2 what (child|of-type) 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) 4 xn-component of xn+y argument ([+-]?\d*n|) 5 sign of xn-component 6 x of xn-component 7 sign of y-component 8 y of y-component */ match[1] = match[1].toLowerCase(); if ( match[1].slice( 0, 3 ) === "nth" ) { // nth-* requires argument if ( !match[3] ) { Sizzle.error( match[0] ); } // numeric x and y parameters for Expr.filter.CHILD // remember that false/true cast respectively to 0/1 match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); // other types prohibit arguments } else if ( match[3] ) { Sizzle.error( match[0] ); } return match; }, "PSEUDO": function( match ) { var excess, unquoted = !match[6] && match[2]; if ( matchExpr["CHILD"].test( match[0] ) ) { return null; } // Accept quoted arguments as-is if ( match[3] ) { match[2] = match[4] || match[5] || ""; // Strip excess characters from unquoted arguments } else if ( unquoted && rpseudo.test( unquoted ) && // Get excess from tokenize (recursively) (excess = tokenize( unquoted, true )) && // advance to the next closing parenthesis (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { // excess is a negative index match[0] = match[0].slice( 0, excess ); match[2] = unquoted.slice( 0, excess ); } // Return only captures needed by the pseudo filter method (type and argument) return match.slice( 0, 3 ); } }, filter: { "TAG": function( nodeNameSelector ) { var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); return nodeNameSelector === "*" ? function() { return true; } : function( elem ) { return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; }; }, "CLASS": function( className ) { var pattern = classCache[ className + " " ]; return pattern || (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && classCache( className, function( elem ) { return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); }); }, "ATTR": function( name, operator, check ) { return function( elem ) { var result = Sizzle.attr( elem, name ); if ( result == null ) { return operator === "!="; } if ( !operator ) { return true; } result += ""; return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf( check ) === 0 : operator === "*=" ? check && result.indexOf( check ) > -1 : operator === "$=" ? check && result.slice( -check.length ) === check : operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : false; }; }, "CHILD": function( type, what, argument, first, last ) { var simple = type.slice( 0, 3 ) !== "nth", forward = type.slice( -4 ) !== "last", ofType = what === "of-type"; return first === 1 && last === 0 ? // Shortcut for :nth-*(n) function( elem ) { return !!elem.parentNode; } : function( elem, context, xml ) { var cache, uniqueCache, outerCache, node, nodeIndex, start, dir = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false; if ( parent ) { // :(first|last|only)-(child|of-type) if ( simple ) { while ( dir ) { node = elem; while ( (node = node[ dir ]) ) { if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { return false; } } // Reverse direction for :only-* (if we haven't yet done so) start = dir = type === "only" && !start && "nextSibling"; } return true; } start = [ forward ? parent.firstChild : parent.lastChild ]; // non-xml :nth-child(...) stores cache data on `parent` if ( forward && useCache ) { // Seek `elem` from a previously-cached index // ...in a gzip-friendly way node = parent; outerCache = node[ expando ] || (node[ expando ] = {}); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || (outerCache[ node.uniqueID ] = {}); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; diff = nodeIndex && cache[ 2 ]; node = nodeIndex && parent.childNodes[ nodeIndex ]; while ( (node = ++nodeIndex && node && node[ dir ] || // Fallback to seeking `elem` from the start (diff = nodeIndex = 0) || start.pop()) ) { // When found, cache indexes on `parent` and break if ( node.nodeType === 1 && ++diff && node === elem ) { uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; break; } } } else { // Use previously-cached element index if available if ( useCache ) { // ...in a gzip-friendly way node = elem; outerCache = node[ expando ] || (node[ expando ] = {}); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || (outerCache[ node.uniqueID ] = {}); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; diff = nodeIndex; } // xml :nth-child(...) // or :nth-last-child(...) or :nth(-last)?-of-type(...) if ( diff === false ) { // Use the same loop as above to seek `elem` from the start while ( (node = ++nodeIndex && node && node[ dir ] || (diff = nodeIndex = 0) || start.pop()) ) { if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { // Cache the index of each encountered element if ( useCache ) { outerCache = node[ expando ] || (node[ expando ] = {}); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || (outerCache[ node.uniqueID ] = {}); uniqueCache[ type ] = [ dirruns, diff ]; } if ( node === elem ) { break; } } } } } // Incorporate the offset, then check against cycle size diff -= last; return diff === first || ( diff % first === 0 && diff / first >= 0 ); } }; }, "PSEUDO": function( pseudo, argument ) { // pseudo-class names are case-insensitive // http://www.w3.org/TR/selectors/#pseudo-classes // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters // Remember that setFilters inherits from pseudos var args, fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || Sizzle.error( "unsupported pseudo: " + pseudo ); // The user may use createPseudo to indicate that // arguments are needed to create the filter function // just as Sizzle does if ( fn[ expando ] ) { return fn( argument ); } // But maintain support for old signatures if ( fn.length > 1 ) { args = [ pseudo, pseudo, "", argument ]; return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? markFunction(function( seed, matches ) { var idx, matched = fn( seed, argument ), i = matched.length; while ( i-- ) { idx = indexOf( seed, matched[i] ); seed[ idx ] = !( matches[ idx ] = matched[i] ); } }) : function( elem ) { return fn( elem, 0, args ); }; } return fn; } }, pseudos: { // Potentially complex pseudos "not": markFunction(function( selector ) { // Trim the selector passed to compile // to avoid treating leading and trailing // spaces as combinators var input = [], results = [], matcher = compile( selector.replace( rtrim, "$1" ) ); return matcher[ expando ] ? markFunction(function( seed, matches, context, xml ) { var elem, unmatched = matcher( seed, null, xml, [] ), i = seed.length; // Match elements unmatched by `matcher` while ( i-- ) { if ( (elem = unmatched[i]) ) { seed[i] = !(matches[i] = elem); } } }) : function( elem, context, xml ) { input[0] = elem; matcher( input, null, xml, results ); // Don't keep the element (issue #299) input[0] = null; return !results.pop(); }; }), "has": markFunction(function( selector ) { return function( elem ) { return Sizzle( selector, elem ).length > 0; }; }), "contains": markFunction(function( text ) { text = text.replace( runescape, funescape ); return function( elem ) { return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; }; }), // "Whether an element is represented by a :lang() selector // is based solely on the element's language value // being equal to the identifier C, // or beginning with the identifier C immediately followed by "-". // The matching of C against the element's language value is performed case-insensitively. // The identifier C does not have to be a valid language name." // http://www.w3.org/TR/selectors/#lang-pseudo "lang": markFunction( function( lang ) { // lang value must be a valid identifier if ( !ridentifier.test(lang || "") ) { Sizzle.error( "unsupported lang: " + lang ); } lang = lang.replace( runescape, funescape ).toLowerCase(); return function( elem ) { var elemLang; do { if ( (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { elemLang = elemLang.toLowerCase(); return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; } } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); return false; }; }), // Miscellaneous "target": function( elem ) { var hash = window.location && window.location.hash; return hash && hash.slice( 1 ) === elem.id; }, "root": function( elem ) { return elem === docElem; }, "focus": function( elem ) { return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); }, // Boolean properties "enabled": function( elem ) { return elem.disabled === false; }, "disabled": function( elem ) { return elem.disabled === true; }, "checked": function( elem ) { // In CSS3, :checked should return both checked and selected elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked var nodeName = elem.nodeName.toLowerCase(); return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); }, "selected": function( elem ) { // Accessing this property makes selected-by-default // options in Safari work properly if ( elem.parentNode ) { elem.parentNode.selectedIndex; } return elem.selected === true; }, // Contents "empty": function( elem ) { // http://www.w3.org/TR/selectors/#empty-pseudo // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), // but not by others (comment: 8; processing instruction: 7; etc.) // nodeType < 6 works because attributes (2) do not appear as children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { if ( elem.nodeType < 6 ) { return false; } } return true; }, "parent": function( elem ) { return !Expr.pseudos["empty"]( elem ); }, // Element/input types "header": function( elem ) { return rheader.test( elem.nodeName ); }, "input": function( elem ) { return rinputs.test( elem.nodeName ); }, "button": function( elem ) { var name = elem.nodeName.toLowerCase(); return name === "input" && elem.type === "button" || name === "button"; }, "text": function( elem ) { var attr; return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && // Support: IE<8 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); }, // Position-in-collection "first": createPositionalPseudo(function() { return [ 0 ]; }), "last": createPositionalPseudo(function( matchIndexes, length ) { return [ length - 1 ]; }), "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { return [ argument < 0 ? argument + length : argument ]; }), "even": createPositionalPseudo(function( matchIndexes, length ) { var i = 0; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; }), "odd": createPositionalPseudo(function( matchIndexes, length ) { var i = 1; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; }), "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; --i >= 0; ) { matchIndexes.push( i ); } return matchIndexes; }), "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; ++i < length; ) { matchIndexes.push( i ); } return matchIndexes; }) } }; Expr.pseudos["nth"] = Expr.pseudos["eq"]; // Add button/input type pseudos for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { Expr.pseudos[ i ] = createInputPseudo( i ); } for ( i in { submit: true, reset: true } ) { Expr.pseudos[ i ] = createButtonPseudo( i ); } // Easy API for creating new setFilters function setFilters() {} setFilters.prototype = Expr.filters = Expr.pseudos; Expr.setFilters = new setFilters(); tokenize = Sizzle.tokenize = function( selector, parseOnly ) { var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[ selector + " " ]; if ( cached ) { return parseOnly ? 0 : cached.slice( 0 ); } soFar = selector; groups = []; preFilters = Expr.preFilter; while ( soFar ) { // Comma and first run if ( !matched || (match = rcomma.exec( soFar )) ) { if ( match ) { // Don't consume trailing commas as valid soFar = soFar.slice( match[0].length ) || soFar; } groups.push( (tokens = []) ); } matched = false; // Combinators if ( (match = rcombinators.exec( soFar )) ) { matched = match.shift(); tokens.push({ value: matched, // Cast descendant combinators to space type: match[0].replace( rtrim, " " ) }); soFar = soFar.slice( matched.length ); } // Filters for ( type in Expr.filter ) { if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || (match = preFilters[ type ]( match ))) ) { matched = match.shift(); tokens.push({ value: matched, type: type, matches: match }); soFar = soFar.slice( matched.length ); } } if ( !matched ) { break; } } // Return the length of the invalid excess // if we're just parsing // Otherwise, throw an error or return tokens return parseOnly ? soFar.length : soFar ? Sizzle.error( selector ) : // Cache the tokens tokenCache( selector, groups ).slice( 0 ); }; function toSelector( tokens ) { var i = 0, len = tokens.length, selector = ""; for ( ; i < len; i++ ) { selector += tokens[i].value; } return selector; } function addCombinator( matcher, combinator, base ) { var dir = combinator.dir, checkNonElements = base && dir === "parentNode", doneName = done++; return combinator.first ? // Check against closest ancestor/preceding element function( elem, context, xml ) { while ( (elem = elem[ dir ]) ) { if ( elem.nodeType === 1 || checkNonElements ) { return matcher( elem, context, xml ); } } } : // Check against all ancestor/preceding elements function( elem, context, xml ) { var oldCache, uniqueCache, outerCache, newCache = [ dirruns, doneName ]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching if ( xml ) { while ( (elem = elem[ dir ]) ) { if ( elem.nodeType === 1 || checkNonElements ) { if ( matcher( elem, context, xml ) ) { return true; } } } } else { while ( (elem = elem[ dir ]) ) { if ( elem.nodeType === 1 || checkNonElements ) { outerCache = elem[ expando ] || (elem[ expando ] = {}); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); if ( (oldCache = uniqueCache[ dir ]) && oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { // Assign to newCache so results back-propagate to previous elements return (newCache[ 2 ] = oldCache[ 2 ]); } else { // Reuse newcache so results back-propagate to previous elements uniqueCache[ dir ] = newCache; // A match means we're done; a fail means we have to keep checking if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { return true; } } } } } }; } function elementMatcher( matchers ) { return matchers.length > 1 ? function( elem, context, xml ) { var i = matchers.length; while ( i-- ) { if ( !matchers[i]( elem, context, xml ) ) { return false; } } return true; } : matchers[0]; } function multipleContexts( selector, contexts, results ) { var i = 0, len = contexts.length; for ( ; i < len; i++ ) { Sizzle( selector, contexts[i], results ); } return results; } function condense( unmatched, map, filter, context, xml ) { var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null; for ( ; i < len; i++ ) { if ( (elem = unmatched[i]) ) { if ( !filter || filter( elem, context, xml ) ) { newUnmatched.push( elem ); if ( mapped ) { map.push( i ); } } } } return newUnmatched; } function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { if ( postFilter && !postFilter[ expando ] ) { postFilter = setMatcher( postFilter ); } if ( postFinder && !postFinder[ expando ] ) { postFinder = setMatcher( postFinder, postSelector ); } return markFunction(function( seed, results, context, xml ) { var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, // Get initial elements from seed or context elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), // Prefilter to get matcher input, preserving a map for seed-results synchronization matcherIn = preFilter && ( seed || !selector ) ? condense( elems, preMap, preFilter, context, xml ) : elems, matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, postFinder || ( seed ? preFilter : preexisting || postFilter ) ? // ...intermediate processing is necessary [] : // ...otherwise use results directly results : matcherIn; // Find primary matches if ( matcher ) { matcher( matcherIn, matcherOut, context, xml ); } // Apply postFilter if ( postFilter ) { temp = condense( matcherOut, postMap ); postFilter( temp, [], context, xml ); // Un-match failing elements by moving them back to matcherIn i = temp.length; while ( i-- ) { if ( (elem = temp[i]) ) { matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); } } } if ( seed ) { if ( postFinder || preFilter ) { if ( postFinder ) { // Get the final matcherOut by condensing this intermediate into postFinder contexts temp = []; i = matcherOut.length; while ( i-- ) { if ( (elem = matcherOut[i]) ) { // Restore matcherIn since elem is not yet a final match temp.push( (matcherIn[i] = elem) ); } } postFinder( null, (matcherOut = []), temp, xml ); } // Move matched elements from seed to results to keep them synchronized i = matcherOut.length; while ( i-- ) { if ( (elem = matcherOut[i]) && (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { seed[temp] = !(results[temp] = elem); } } } // Add elements to results, through postFinder if defined } else { matcherOut = condense( matcherOut === results ? matcherOut.splice( preexisting, matcherOut.length ) : matcherOut ); if ( postFinder ) { postFinder( null, results, matcherOut, xml ); } else { push.apply( results, matcherOut ); } } }); } function matcherFromTokens( tokens ) { var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[ tokens[0].type ], implicitRelative = leadingRelative || Expr.relative[" "], i = leadingRelative ? 1 : 0, // The foundational matcher ensures that elements are reachable from top-level context(s) matchContext = addCombinator( function( elem ) { return elem === checkContext; }, implicitRelative, true ), matchAnyContext = addCombinator( function( elem ) { return indexOf( checkContext, elem ) > -1; }, implicitRelative, true ), matchers = [ function( elem, context, xml ) { var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( (checkContext = context).nodeType ? matchContext( elem, context, xml ) : matchAnyContext( elem, context, xml ) ); // Avoid hanging onto element (issue #299) checkContext = null; return ret; } ]; for ( ; i < len; i++ ) { if ( (matcher = Expr.relative[ tokens[i].type ]) ) { matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; } else { matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); // Return special upon seeing a positional matcher if ( matcher[ expando ] ) { // Find the next relative operator (if any) for proper handling j = ++i; for ( ; j < len; j++ ) { if ( Expr.relative[ tokens[j].type ] ) { break; } } return setMatcher( i > 1 && elementMatcher( matchers ), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*` tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) ).replace( rtrim, "$1" ), matcher, i < j && matcherFromTokens( tokens.slice( i, j ) ), j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), j < len && toSelector( tokens ) ); } matchers.push( matcher ); } } return elementMatcher( matchers ); } function matcherFromGroupMatchers( elementMatchers, setMatchers ) { var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function( seed, context, xml, results, outermost ) { var elem, j, matcher, matchedCount = 0, i = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, // We must always have either seed elements or outermost context elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), // Use integer dirruns iff this is the outermost matcher dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), len = elems.length; if ( outermost ) { outermostContext = context === document || context || outermost; } // Add elements passing elementMatchers directly to results // Support: IE<9, Safari // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id for ( ; i !== len && (elem = elems[i]) != null; i++ ) { if ( byElement && elem ) { j = 0; if ( !context && elem.ownerDocument !== document ) { setDocument( elem ); xml = !documentIsHTML; } while ( (matcher = elementMatchers[j++]) ) { if ( matcher( elem, context || document, xml) ) { results.push( elem ); break; } } if ( outermost ) { dirruns = dirrunsUnique; } } // Track unmatched elements for set filters if ( bySet ) { // They will have gone through all possible matchers if ( (elem = !matcher && elem) ) { matchedCount--; } // Lengthen the array for every element, matched or not if ( seed ) { unmatched.push( elem ); } } } // `i` is now the count of elements visited above, and adding it to `matchedCount` // makes the latter nonnegative. matchedCount += i; // Apply set filters to unmatched elements // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` // equals `i`), unless we didn't visit _any_ elements in the above loop because we have // no element matchers and no seed. // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that // case, which will result in a "00" `matchedCount` that differs from `i` but is also // numerically zero. if ( bySet && i !== matchedCount ) { j = 0; while ( (matcher = setMatchers[j++]) ) { matcher( unmatched, setMatched, context, xml ); } if ( seed ) { // Reintegrate element matches to eliminate the need for sorting if ( matchedCount > 0 ) { while ( i-- ) { if ( !(unmatched[i] || setMatched[i]) ) { setMatched[i] = pop.call( results ); } } } // Discard index placeholder values to get only actual matches setMatched = condense( setMatched ); } // Add matches to results push.apply( results, setMatched ); // Seedless set matches succeeding multiple successful matchers stipulate sorting if ( outermost && !seed && setMatched.length > 0 && ( matchedCount + setMatchers.length ) > 1 ) { Sizzle.uniqueSort( results ); } } // Override manipulation of globals by nested matchers if ( outermost ) { dirruns = dirrunsUnique; outermostContext = contextBackup; } return unmatched; }; return bySet ? markFunction( superMatcher ) : superMatcher; } compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { var i, setMatchers = [], elementMatchers = [], cached = compilerCache[ selector + " " ]; if ( !cached ) { // Generate a function of recursive functions that can be used to check each element if ( !match ) { match = tokenize( selector ); } i = match.length; while ( i-- ) { cached = matcherFromTokens( match[i] ); if ( cached[ expando ] ) { setMatchers.push( cached ); } else { elementMatchers.push( cached ); } } // Cache the compiled function cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); // Save selector and tokenization cached.selector = selector; } return cached; }; /** * A low-level selection function that works with Sizzle's compiled * selector functions * @param {String|Function} selector A selector or a pre-compiled * selector function built with Sizzle.compile * @param {Element} context * @param {Array} [results] * @param {Array} [seed] A set of elements to match against */ select = Sizzle.select = function( selector, context, results, seed ) { var i, tokens, token, type, find, compiled = typeof selector === "function" && selector, match = !seed && tokenize( (selector = compiled.selector || selector) ); results = results || []; // Try to minimize operations if there is only one selector in the list and no seed // (the latter of which guarantees us context) if ( match.length === 1 ) { // Reduce context if the leading compound selector is an ID tokens = match[0] = match[0].slice( 0 ); if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; if ( !context ) { return results; // Precompiled matchers will still verify ancestry, so step up a level } else if ( compiled ) { context = context.parentNode; } selector = selector.slice( tokens.shift().value.length ); } // Fetch a seed set for right-to-left matching i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; while ( i-- ) { token = tokens[i]; // Abort if we hit a combinator if ( Expr.relative[ (type = token.type) ] ) { break; } if ( (find = Expr.find[ type ]) ) { // Search, expanding context for leading sibling combinators if ( (seed = find( token.matches[0].replace( runescape, funescape ), rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context )) ) { // If seed is empty or no tokens remain, we can return early tokens.splice( i, 1 ); selector = seed.length && toSelector( tokens ); if ( !selector ) { push.apply( results, seed ); return results; } break; } } } } // Compile and execute a filtering function if one is not provided // Provide `match` to avoid retokenization if we modified the selector above ( compiled || compile( selector, match ) )( seed, context, !documentIsHTML, results, !context || rsibling.test( selector ) && testContext( context.parentNode ) || context ); return results; }; // One-time assignments // Sort stability support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; // Support: Chrome 14-35+ // Always assume duplicates if they aren't passed to the comparison function support.detectDuplicates = !!hasDuplicate; // Initialize against the default document setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) // Detached nodes confoundingly follow *each other* support.sortDetached = assert(function( div1 ) { // Should return 1, but returns 4 (following) return div1.compareDocumentPosition( document.createElement("div") ) & 1; }); // Support: IE<8 // Prevent attribute/property "interpolation" // http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx if ( !assert(function( div ) { div.innerHTML = ""; return div.firstChild.getAttribute("href") === "#" ; }) ) { addHandle( "type|href|height|width", function( elem, name, isXML ) { if ( !isXML ) { return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); } }); } // Support: IE<9 // Use defaultValue in place of getAttribute("value") if ( !support.attributes || !assert(function( div ) { div.innerHTML = ""; div.firstChild.setAttribute( "value", "" ); return div.firstChild.getAttribute( "value" ) === ""; }) ) { addHandle( "value", function( elem, name, isXML ) { if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { return elem.defaultValue; } }); } // Support: IE<9 // Use getAttributeNode to fetch booleans when getAttribute lies if ( !assert(function( div ) { return div.getAttribute("disabled") == null; }) ) { addHandle( booleans, function( elem, name, isXML ) { var val; if ( !isXML ) { return elem[ name ] === true ? name.toLowerCase() : (val = elem.getAttributeNode( name )) && val.specified ? val.value : null; } }); } return Sizzle; })( window ); jQuery.find = Sizzle; jQuery.expr = Sizzle.selectors; jQuery.expr[ ":" ] = jQuery.expr.pseudos; jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; jQuery.text = Sizzle.getText; jQuery.isXMLDoc = Sizzle.isXML; jQuery.contains = Sizzle.contains; var dir = function( elem, dir, until ) { var matched = [], truncate = until !== undefined; while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { if ( elem.nodeType === 1 ) { if ( truncate && jQuery( elem ).is( until ) ) { break; } matched.push( elem ); } } return matched; }; var siblings = function( n, elem ) { var matched = []; for ( ; n; n = n.nextSibling ) { if ( n.nodeType === 1 && n !== elem ) { matched.push( n ); } } return matched; }; var rneedsContext = jQuery.expr.match.needsContext; var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); var risSimple = /^.[^:#\[\.,]*$/; // Implement the identical functionality for filter and not function winnow( elements, qualifier, not ) { if ( jQuery.isFunction( qualifier ) ) { return jQuery.grep( elements, function( elem, i ) { /* jshint -W018 */ return !!qualifier.call( elem, i, elem ) !== not; } ); } if ( qualifier.nodeType ) { return jQuery.grep( elements, function( elem ) { return ( elem === qualifier ) !== not; } ); } if ( typeof qualifier === "string" ) { if ( risSimple.test( qualifier ) ) { return jQuery.filter( qualifier, elements, not ); } qualifier = jQuery.filter( qualifier, elements ); } return jQuery.grep( elements, function( elem ) { return ( jQuery.inArray( elem, qualifier ) > -1 ) !== not; } ); } jQuery.filter = function( expr, elems, not ) { var elem = elems[ 0 ]; if ( not ) { expr = ":not(" + expr + ")"; } return elems.length === 1 && elem.nodeType === 1 ? jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { return elem.nodeType === 1; } ) ); }; jQuery.fn.extend( { find: function( selector ) { var i, ret = [], self = this, len = self.length; if ( typeof selector !== "string" ) { return this.pushStack( jQuery( selector ).filter( function() { for ( i = 0; i < len; i++ ) { if ( jQuery.contains( self[ i ], this ) ) { return true; } } } ) ); } for ( i = 0; i < len; i++ ) { jQuery.find( selector, self[ i ], ret ); } // Needed because $( selector, context ) becomes $( context ).find( selector ) ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); ret.selector = this.selector ? this.selector + " " + selector : selector; return ret; }, filter: function( selector ) { return this.pushStack( winnow( this, selector || [], false ) ); }, not: function( selector ) { return this.pushStack( winnow( this, selector || [], true ) ); }, is: function( selector ) { return !!winnow( this, // If this is a positional/relative selector, check membership in the returned set // so $("p:first").is("p:last") won't return true for a doc with two "p". typeof selector === "string" && rneedsContext.test( selector ) ? jQuery( selector ) : selector || [], false ).length; } } ); // Initialize a jQuery object // A central reference to the root jQuery(document) var rootjQuery, // A simple way to check for HTML strings // Prioritize #id over to avoid XSS via location.hash (#9521) // Strict HTML recognition (#11290: must start with <) rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, init = jQuery.fn.init = function( selector, context, root ) { var match, elem; // HANDLE: $(""), $(null), $(undefined), $(false) if ( !selector ) { return this; } // init accepts an alternate rootjQuery // so migrate can support jQuery.sub (gh-2101) root = root || rootjQuery; // Handle HTML strings if ( typeof selector === "string" ) { if ( selector.charAt( 0 ) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { // Assume that strings that start and end with <> are HTML and skip the regex check match = [ null, selector, null ]; } else { match = rquickExpr.exec( selector ); } // Match html or make sure no context is specified for #id if ( match && ( match[ 1 ] || !context ) ) { // HANDLE: $(html) -> $(array) if ( match[ 1 ] ) { context = context instanceof jQuery ? context[ 0 ] : context; // scripts is true for back-compat // Intentionally let the error be thrown if parseHTML is not present jQuery.merge( this, jQuery.parseHTML( match[ 1 ], context && context.nodeType ? context.ownerDocument || context : document, true ) ); // HANDLE: $(html, props) if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { for ( match in context ) { // Properties of context are called as methods if possible if ( jQuery.isFunction( this[ match ] ) ) { this[ match ]( context[ match ] ); // ...and otherwise set as attributes } else { this.attr( match, context[ match ] ); } } } return this; // HANDLE: $(#id) } else { elem = document.getElementById( match[ 2 ] ); // Check parentNode to catch when Blackberry 4.6 returns // nodes that are no longer in the document #6963 if ( elem && elem.parentNode ) { // Handle the case where IE and Opera return items // by name instead of ID if ( elem.id !== match[ 2 ] ) { return rootjQuery.find( selector ); } // Otherwise, we inject the element directly into the jQuery object this.length = 1; this[ 0 ] = elem; } this.context = document; this.selector = selector; return this; } // HANDLE: $(expr, $(...)) } else if ( !context || context.jquery ) { return ( context || root ).find( selector ); // HANDLE: $(expr, context) // (which is just equivalent to: $(context).find(expr) } else { return this.constructor( context ).find( selector ); } // HANDLE: $(DOMElement) } else if ( selector.nodeType ) { this.context = this[ 0 ] = selector; this.length = 1; return this; // HANDLE: $(function) // Shortcut for document ready } else if ( jQuery.isFunction( selector ) ) { return typeof root.ready !== "undefined" ? root.ready( selector ) : // Execute immediately if ready is not present selector( jQuery ); } if ( selector.selector !== undefined ) { this.selector = selector.selector; this.context = selector.context; } return jQuery.makeArray( selector, this ); }; // Give the init function the jQuery prototype for later instantiation init.prototype = jQuery.fn; // Initialize central reference rootjQuery = jQuery( document ); var rparentsprev = /^(?:parents|prev(?:Until|All))/, // methods guaranteed to produce a unique set when starting from a unique set guaranteedUnique = { children: true, contents: true, next: true, prev: true }; jQuery.fn.extend( { has: function( target ) { var i, targets = jQuery( target, this ), len = targets.length; return this.filter( function() { for ( i = 0; i < len; i++ ) { if ( jQuery.contains( this, targets[ i ] ) ) { return true; } } } ); }, closest: function( selectors, context ) { var cur, i = 0, l = this.length, matched = [], pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? jQuery( selectors, context || this.context ) : 0; for ( ; i < l; i++ ) { for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { // Always skip document fragments if ( cur.nodeType < 11 && ( pos ? pos.index( cur ) > -1 : // Don't pass non-elements to Sizzle cur.nodeType === 1 && jQuery.find.matchesSelector( cur, selectors ) ) ) { matched.push( cur ); break; } } } return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); }, // Determine the position of an element within // the matched set of elements index: function( elem ) { // No argument, return index in parent if ( !elem ) { return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; } // index in selector if ( typeof elem === "string" ) { return jQuery.inArray( this[ 0 ], jQuery( elem ) ); } // Locate the position of the desired element return jQuery.inArray( // If it receives a jQuery object, the first element is used elem.jquery ? elem[ 0 ] : elem, this ); }, add: function( selector, context ) { return this.pushStack( jQuery.uniqueSort( jQuery.merge( this.get(), jQuery( selector, context ) ) ) ); }, addBack: function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter( selector ) ); } } ); function sibling( cur, dir ) { do { cur = cur[ dir ]; } while ( cur && cur.nodeType !== 1 ); return cur; } jQuery.each( { parent: function( elem ) { var parent = elem.parentNode; return parent && parent.nodeType !== 11 ? parent : null; }, parents: function( elem ) { return dir( elem, "parentNode" ); }, parentsUntil: function( elem, i, until ) { return dir( elem, "parentNode", until ); }, next: function( elem ) { return sibling( elem, "nextSibling" ); }, prev: function( elem ) { return sibling( elem, "previousSibling" ); }, nextAll: function( elem ) { return dir( elem, "nextSibling" ); }, prevAll: function( elem ) { return dir( elem, "previousSibling" ); }, nextUntil: function( elem, i, until ) { return dir( elem, "nextSibling", until ); }, prevUntil: function( elem, i, until ) { return dir( elem, "previousSibling", until ); }, siblings: function( elem ) { return siblings( ( elem.parentNode || {} ).firstChild, elem ); }, children: function( elem ) { return siblings( elem.firstChild ); }, contents: function( elem ) { return jQuery.nodeName( elem, "iframe" ) ? elem.contentDocument || elem.contentWindow.document : jQuery.merge( [], elem.childNodes ); } }, function( name, fn ) { jQuery.fn[ name ] = function( until, selector ) { var ret = jQuery.map( this, fn, until ); if ( name.slice( -5 ) !== "Until" ) { selector = until; } if ( selector && typeof selector === "string" ) { ret = jQuery.filter( selector, ret ); } if ( this.length > 1 ) { // Remove duplicates if ( !guaranteedUnique[ name ] ) { ret = jQuery.uniqueSort( ret ); } // Reverse order for parents* and prev-derivatives if ( rparentsprev.test( name ) ) { ret = ret.reverse(); } } return this.pushStack( ret ); }; } ); var rnotwhite = ( /\S+/g ); // Convert String-formatted options into Object-formatted ones function createOptions( options ) { var object = {}; jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { object[ flag ] = true; } ); return object; } /* * Create a callback list using the following parameters: * * options: an optional list of space-separated options that will change how * the callback list behaves or a more traditional option object * * By default a callback list will act like an event callback list and can be * "fired" multiple times. * * Possible options: * * once: will ensure the callback list can only be fired once (like a Deferred) * * memory: will keep track of previous values and will call any callback added * after the list has been fired right away with the latest "memorized" * values (like a Deferred) * * unique: will ensure a callback can only be added once (no duplicate in the list) * * stopOnFalse: interrupt callings when a callback returns false * */ jQuery.Callbacks = function( options ) { // Convert options from String-formatted to Object-formatted if needed // (we check in cache first) options = typeof options === "string" ? createOptions( options ) : jQuery.extend( {}, options ); var // Flag to know if list is currently firing firing, // Last fire value for non-forgettable lists memory, // Flag to know if list was already fired fired, // Flag to prevent firing locked, // Actual callback list list = [], // Queue of execution data for repeatable lists queue = [], // Index of currently firing callback (modified by add/remove as needed) firingIndex = -1, // Fire callbacks fire = function() { // Enforce single-firing locked = options.once; // Execute callbacks for all pending executions, // respecting firingIndex overrides and runtime changes fired = firing = true; for ( ; queue.length; firingIndex = -1 ) { memory = queue.shift(); while ( ++firingIndex < list.length ) { // Run callback and check for early termination if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && options.stopOnFalse ) { // Jump to end and forget the data so .add doesn't re-fire firingIndex = list.length; memory = false; } } } // Forget the data if we're done with it if ( !options.memory ) { memory = false; } firing = false; // Clean up if we're done firing for good if ( locked ) { // Keep an empty list if we have data for future add calls if ( memory ) { list = []; // Otherwise, this object is spent } else { list = ""; } } }, // Actual Callbacks object self = { // Add a callback or a collection of callbacks to the list add: function() { if ( list ) { // If we have memory from a past run, we should fire after adding if ( memory && !firing ) { firingIndex = list.length - 1; queue.push( memory ); } ( function add( args ) { jQuery.each( args, function( _, arg ) { if ( jQuery.isFunction( arg ) ) { if ( !options.unique || !self.has( arg ) ) { list.push( arg ); } } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { // Inspect recursively add( arg ); } } ); } )( arguments ); if ( memory && !firing ) { fire(); } } return this; }, // Remove a callback from the list remove: function() { jQuery.each( arguments, function( _, arg ) { var index; while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { list.splice( index, 1 ); // Handle firing indexes if ( index <= firingIndex ) { firingIndex--; } } } ); return this; }, // Check if a given callback is in the list. // If no argument is given, return whether or not list has callbacks attached. has: function( fn ) { return fn ? jQuery.inArray( fn, list ) > -1 : list.length > 0; }, // Remove all callbacks from the list empty: function() { if ( list ) { list = []; } return this; }, // Disable .fire and .add // Abort any current/pending executions // Clear all callbacks and values disable: function() { locked = queue = []; list = memory = ""; return this; }, disabled: function() { return !list; }, // Disable .fire // Also disable .add unless we have memory (since it would have no effect) // Abort any pending executions lock: function() { locked = true; if ( !memory ) { self.disable(); } return this; }, locked: function() { return !!locked; }, // Call all callbacks with the given context and arguments fireWith: function( context, args ) { if ( !locked ) { args = args || []; args = [ context, args.slice ? args.slice() : args ]; queue.push( args ); if ( !firing ) { fire(); } } return this; }, // Call all the callbacks with the given arguments fire: function() { self.fireWith( this, arguments ); return this; }, // To know if the callbacks have already been called at least once fired: function() { return !!fired; } }; return self; }; jQuery.extend( { Deferred: function( func ) { var tuples = [ // action, add listener, listener list, final state [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], [ "notify", "progress", jQuery.Callbacks( "memory" ) ] ], state = "pending", promise = { state: function() { return state; }, always: function() { deferred.done( arguments ).fail( arguments ); return this; }, then: function( /* fnDone, fnFail, fnProgress */ ) { var fns = arguments; return jQuery.Deferred( function( newDefer ) { jQuery.each( tuples, function( i, tuple ) { var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; // deferred[ done | fail | progress ] for forwarding actions to newDefer deferred[ tuple[ 1 ] ]( function() { var returned = fn && fn.apply( this, arguments ); if ( returned && jQuery.isFunction( returned.promise ) ) { returned.promise() .progress( newDefer.notify ) .done( newDefer.resolve ) .fail( newDefer.reject ); } else { newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); } } ); } ); fns = null; } ).promise(); }, // Get a promise for this deferred // If obj is provided, the promise aspect is added to the object promise: function( obj ) { return obj != null ? jQuery.extend( obj, promise ) : promise; } }, deferred = {}; // Keep pipe for back-compat promise.pipe = promise.then; // Add list-specific methods jQuery.each( tuples, function( i, tuple ) { var list = tuple[ 2 ], stateString = tuple[ 3 ]; // promise[ done | fail | progress ] = list.add promise[ tuple[ 1 ] ] = list.add; // Handle state if ( stateString ) { list.add( function() { // state = [ resolved | rejected ] state = stateString; // [ reject_list | resolve_list ].disable; progress_list.lock }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); } // deferred[ resolve | reject | notify ] deferred[ tuple[ 0 ] ] = function() { deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); return this; }; deferred[ tuple[ 0 ] + "With" ] = list.fireWith; } ); // Make the deferred a promise promise.promise( deferred ); // Call given func if any if ( func ) { func.call( deferred, deferred ); } // All done! return deferred; }, // Deferred helper when: function( subordinate /* , ..., subordinateN */ ) { var i = 0, resolveValues = slice.call( arguments ), length = resolveValues.length, // the count of uncompleted subordinates remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, // the master Deferred. // If resolveValues consist of only a single Deferred, just use that. deferred = remaining === 1 ? subordinate : jQuery.Deferred(), // Update function for both resolve and progress values updateFunc = function( i, contexts, values ) { return function( value ) { contexts[ i ] = this; values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; if ( values === progressValues ) { deferred.notifyWith( contexts, values ); } else if ( !( --remaining ) ) { deferred.resolveWith( contexts, values ); } }; }, progressValues, progressContexts, resolveContexts; // add listeners to Deferred subordinates; treat others as resolved if ( length > 1 ) { progressValues = new Array( length ); progressContexts = new Array( length ); resolveContexts = new Array( length ); for ( ; i < length; i++ ) { if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { resolveValues[ i ].promise() .progress( updateFunc( i, progressContexts, progressValues ) ) .done( updateFunc( i, resolveContexts, resolveValues ) ) .fail( deferred.reject ); } else { --remaining; } } } // if we're not waiting on anything, resolve the master if ( !remaining ) { deferred.resolveWith( resolveContexts, resolveValues ); } return deferred.promise(); } } ); // The deferred used on DOM ready var readyList; jQuery.fn.ready = function( fn ) { // Add the callback jQuery.ready.promise().done( fn ); return this; }; jQuery.extend( { // Is the DOM ready to be used? Set to true once it occurs. isReady: false, // A counter to track how many items to wait for before // the ready event fires. See #6781 readyWait: 1, // Hold (or release) the ready event holdReady: function( hold ) { if ( hold ) { jQuery.readyWait++; } else { jQuery.ready( true ); } }, // Handle when the DOM is ready ready: function( wait ) { // Abort if there are pending holds or we're already ready if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { return; } // Remember that the DOM is ready jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be if ( wait !== true && --jQuery.readyWait > 0 ) { return; } // If there are functions bound, to execute readyList.resolveWith( document, [ jQuery ] ); // Trigger any bound ready events if ( jQuery.fn.triggerHandler ) { jQuery( document ).triggerHandler( "ready" ); jQuery( document ).off( "ready" ); } } } ); /** * Clean-up method for dom ready events */ function detach() { if ( document.addEventListener ) { document.removeEventListener( "DOMContentLoaded", completed ); window.removeEventListener( "load", completed ); } else { document.detachEvent( "onreadystatechange", completed ); window.detachEvent( "onload", completed ); } } /** * The ready event handler and self cleanup method */ function completed() { // readyState === "complete" is good enough for us to call the dom ready in oldIE if ( document.addEventListener || window.event.type === "load" || document.readyState === "complete" ) { detach(); jQuery.ready(); } } jQuery.ready.promise = function( obj ) { if ( !readyList ) { readyList = jQuery.Deferred(); // Catch cases where $(document).ready() is called // after the browser event has already occurred. // we once tried to use readyState "interactive" here, // but it caused issues like the one // discovered by ChrisS here: // http://bugs.jquery.com/ticket/12282#comment:15 if ( document.readyState === "complete" ) { // Handle it asynchronously to allow scripts the opportunity to delay ready window.setTimeout( jQuery.ready ); // Standards-based browsers support DOMContentLoaded } else if ( document.addEventListener ) { // Use the handy event callback document.addEventListener( "DOMContentLoaded", completed ); // A fallback to window.onload, that will always work window.addEventListener( "load", completed ); // If IE event model is used } else { // Ensure firing before onload, maybe late but safe also for iframes document.attachEvent( "onreadystatechange", completed ); // A fallback to window.onload, that will always work window.attachEvent( "onload", completed ); // If IE and not a frame // continually check to see if the document is ready var top = false; try { top = window.frameElement == null && document.documentElement; } catch ( e ) {} if ( top && top.doScroll ) { ( function doScrollCheck() { if ( !jQuery.isReady ) { try { // Use the trick by Diego Perini // http://javascript.nwbox.com/IEContentLoaded/ top.doScroll( "left" ); } catch ( e ) { return window.setTimeout( doScrollCheck, 50 ); } // detach all dom ready events detach(); // and execute any waiting functions jQuery.ready(); } } )(); } } } return readyList.promise( obj ); }; // Kick off the DOM ready check even if the user does not jQuery.ready.promise(); // Support: IE<9 // Iteration over object's inherited properties before its own var i; for ( i in jQuery( support ) ) { break; } support.ownFirst = i === "0"; // Note: most support tests are defined in their respective modules. // false until the test is run support.inlineBlockNeedsLayout = false; // Execute ASAP in case we need to set body.style.zoom jQuery( function() { // Minified: var a,b,c,d var val, div, body, container; body = document.getElementsByTagName( "body" )[ 0 ]; if ( !body || !body.style ) { // Return for frameset docs that don't have a body return; } // Setup div = document.createElement( "div" ); container = document.createElement( "div" ); container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; body.appendChild( container ).appendChild( div ); if ( typeof div.style.zoom !== "undefined" ) { // Support: IE<8 // Check if natively block-level elements act like inline-block // elements when setting their display to 'inline' and giving // them layout div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; if ( val ) { // Prevent IE 6 from affecting layout for positioned elements #11048 // Prevent IE from shrinking the body in IE 7 mode #12869 // Support: IE<8 body.style.zoom = 1; } } body.removeChild( container ); } ); ( function() { var div = document.createElement( "div" ); // Support: IE<9 support.deleteExpando = true; try { delete div.test; } catch ( e ) { support.deleteExpando = false; } // Null elements to avoid leaks in IE. div = null; } )(); var acceptData = function( elem ) { var noData = jQuery.noData[ ( elem.nodeName + " " ).toLowerCase() ], nodeType = +elem.nodeType || 1; // Do not set data on non-element DOM nodes because it will not be cleared (#8335). return nodeType !== 1 && nodeType !== 9 ? false : // Nodes accept data unless otherwise specified; rejection can be conditional !noData || noData !== true && elem.getAttribute( "classid" ) === noData; }; var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /([A-Z])/g; function dataAttr( elem, key, data ) { // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); data = elem.getAttribute( name ); if ( typeof data === "string" ) { try { data = data === "true" ? true : data === "false" ? false : data === "null" ? null : // Only convert to a number if it doesn't change the string +data + "" === data ? +data : rbrace.test( data ) ? jQuery.parseJSON( data ) : data; } catch ( e ) {} // Make sure we set the data so it isn't changed later jQuery.data( elem, key, data ); } else { data = undefined; } } return data; } // checks a cache object for emptiness function isEmptyDataObject( obj ) { var name; for ( name in obj ) { // if the public data object is empty, the private is still empty if ( name === "data" && jQuery.isEmptyObject( obj[ name ] ) ) { continue; } if ( name !== "toJSON" ) { return false; } } return true; } function internalData( elem, name, data, pvt /* Internal Use Only */ ) { if ( !acceptData( elem ) ) { return; } var ret, thisCache, internalKey = jQuery.expando, // We have to handle DOM nodes and JS objects differently because IE6-7 // can't GC object references properly across the DOM-JS boundary isNode = elem.nodeType, // Only DOM nodes need the global jQuery cache; JS object data is // attached directly to the object so GC can occur automatically cache = isNode ? jQuery.cache : elem, // Only defining an ID for JS objects if its cache already exists allows // the code to shortcut on the same path as a DOM node with no cache id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; // Avoid doing any more work than we need to when trying to get data on an // object that has no data at all if ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) && data === undefined && typeof name === "string" ) { return; } if ( !id ) { // Only DOM nodes need a new unique ID for each element since their data // ends up in the global cache if ( isNode ) { id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; } else { id = internalKey; } } if ( !cache[ id ] ) { // Avoid exposing jQuery metadata on plain JS objects when the object // is serialized using JSON.stringify cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; } // An object can be passed to jQuery.data instead of a key/value pair; this gets // shallow copied over onto the existing cache if ( typeof name === "object" || typeof name === "function" ) { if ( pvt ) { cache[ id ] = jQuery.extend( cache[ id ], name ); } else { cache[ id ].data = jQuery.extend( cache[ id ].data, name ); } } thisCache = cache[ id ]; // jQuery data() is stored in a separate object inside the object's internal data // cache in order to avoid key collisions between internal data and user-defined // data. if ( !pvt ) { if ( !thisCache.data ) { thisCache.data = {}; } thisCache = thisCache.data; } if ( data !== undefined ) { thisCache[ jQuery.camelCase( name ) ] = data; } // Check for both converted-to-camel and non-converted data property names // If a data property was specified if ( typeof name === "string" ) { // First Try to find as-is property data ret = thisCache[ name ]; // Test for null|undefined property data if ( ret == null ) { // Try to find the camelCased property ret = thisCache[ jQuery.camelCase( name ) ]; } } else { ret = thisCache; } return ret; } function internalRemoveData( elem, name, pvt ) { if ( !acceptData( elem ) ) { return; } var thisCache, i, isNode = elem.nodeType, // See jQuery.data for more information cache = isNode ? jQuery.cache : elem, id = isNode ? elem[ jQuery.expando ] : jQuery.expando; // If there is already no cache entry for this object, there is no // purpose in continuing if ( !cache[ id ] ) { return; } if ( name ) { thisCache = pvt ? cache[ id ] : cache[ id ].data; if ( thisCache ) { // Support array or space separated string names for data keys if ( !jQuery.isArray( name ) ) { // try the string as a key before any manipulation if ( name in thisCache ) { name = [ name ]; } else { // split the camel cased version by spaces unless a key with the spaces exists name = jQuery.camelCase( name ); if ( name in thisCache ) { name = [ name ]; } else { name = name.split( " " ); } } } else { // If "name" is an array of keys... // When data is initially created, via ("key", "val") signature, // keys will be converted to camelCase. // Since there is no way to tell _how_ a key was added, remove // both plain key and camelCase key. #12786 // This will only penalize the array argument path. name = name.concat( jQuery.map( name, jQuery.camelCase ) ); } i = name.length; while ( i-- ) { delete thisCache[ name[ i ] ]; } // If there is no data left in the cache, we want to continue // and let the cache object itself get destroyed if ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) { return; } } } // See jQuery.data for more information if ( !pvt ) { delete cache[ id ].data; // Don't destroy the parent cache unless the internal data object // had been the only thing left in it if ( !isEmptyDataObject( cache[ id ] ) ) { return; } } // Destroy the cache if ( isNode ) { jQuery.cleanData( [ elem ], true ); // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) /* jshint eqeqeq: false */ } else if ( support.deleteExpando || cache != cache.window ) { /* jshint eqeqeq: true */ delete cache[ id ]; // When all else fails, undefined } else { cache[ id ] = undefined; } } jQuery.extend( { cache: {}, // The following elements (space-suffixed to avoid Object.prototype collisions) // throw uncatchable exceptions if you attempt to set expando properties noData: { "applet ": true, "embed ": true, // ...but Flash objects (which have this classid) *can* handle expandos "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" }, hasData: function( elem ) { elem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ]; return !!elem && !isEmptyDataObject( elem ); }, data: function( elem, name, data ) { return internalData( elem, name, data ); }, removeData: function( elem, name ) { return internalRemoveData( elem, name ); }, // For internal use only. _data: function( elem, name, data ) { return internalData( elem, name, data, true ); }, _removeData: function( elem, name ) { return internalRemoveData( elem, name, true ); } } ); jQuery.fn.extend( { data: function( key, value ) { var i, name, data, elem = this[ 0 ], attrs = elem && elem.attributes; // Special expections of .data basically thwart jQuery.access, // so implement the relevant behavior ourselves // Gets all values if ( key === undefined ) { if ( this.length ) { data = jQuery.data( elem ); if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { i = attrs.length; while ( i-- ) { // Support: IE11+ // The attrs elements can be null (#14894) if ( attrs[ i ] ) { name = attrs[ i ].name; if ( name.indexOf( "data-" ) === 0 ) { name = jQuery.camelCase( name.slice( 5 ) ); dataAttr( elem, name, data[ name ] ); } } } jQuery._data( elem, "parsedAttrs", true ); } } return data; } // Sets multiple values if ( typeof key === "object" ) { return this.each( function() { jQuery.data( this, key ); } ); } return arguments.length > 1 ? // Sets one value this.each( function() { jQuery.data( this, key, value ); } ) : // Gets one value // Try to fetch any internally stored data first elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; }, removeData: function( key ) { return this.each( function() { jQuery.removeData( this, key ); } ); } } ); jQuery.extend( { queue: function( elem, type, data ) { var queue; if ( elem ) { type = ( type || "fx" ) + "queue"; queue = jQuery._data( elem, type ); // Speed up dequeue by getting out quickly if this is just a lookup if ( data ) { if ( !queue || jQuery.isArray( data ) ) { queue = jQuery._data( elem, type, jQuery.makeArray( data ) ); } else { queue.push( data ); } } return queue || []; } }, dequeue: function( elem, type ) { type = type || "fx"; var queue = jQuery.queue( elem, type ), startLength = queue.length, fn = queue.shift(), hooks = jQuery._queueHooks( elem, type ), next = function() { jQuery.dequeue( elem, type ); }; // If the fx queue is dequeued, always remove the progress sentinel if ( fn === "inprogress" ) { fn = queue.shift(); startLength--; } if ( fn ) { // Add a progress sentinel to prevent the fx queue from being // automatically dequeued if ( type === "fx" ) { queue.unshift( "inprogress" ); } // clear up the last queue stop function delete hooks.stop; fn.call( elem, next, hooks ); } if ( !startLength && hooks ) { hooks.empty.fire(); } }, // not intended for public consumption - generates a queueHooks object, // or returns the current one _queueHooks: function( elem, type ) { var key = type + "queueHooks"; return jQuery._data( elem, key ) || jQuery._data( elem, key, { empty: jQuery.Callbacks( "once memory" ).add( function() { jQuery._removeData( elem, type + "queue" ); jQuery._removeData( elem, key ); } ) } ); } } ); jQuery.fn.extend( { queue: function( type, data ) { var setter = 2; if ( typeof type !== "string" ) { data = type; type = "fx"; setter--; } if ( arguments.length < setter ) { return jQuery.queue( this[ 0 ], type ); } return data === undefined ? this : this.each( function() { var queue = jQuery.queue( this, type, data ); // ensure a hooks for this queue jQuery._queueHooks( this, type ); if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { jQuery.dequeue( this, type ); } } ); }, dequeue: function( type ) { return this.each( function() { jQuery.dequeue( this, type ); } ); }, clearQueue: function( type ) { return this.queue( type || "fx", [] ); }, // Get a promise resolved when queues of a certain type // are emptied (fx is the type by default) promise: function( type, obj ) { var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function() { if ( !( --count ) ) { defer.resolveWith( elements, [ elements ] ); } }; if ( typeof type !== "string" ) { obj = type; type = undefined; } type = type || "fx"; while ( i-- ) { tmp = jQuery._data( elements[ i ], type + "queueHooks" ); if ( tmp && tmp.empty ) { count++; tmp.empty.add( resolve ); } } resolve(); return defer.promise( obj ); } } ); ( function() { var shrinkWrapBlocksVal; support.shrinkWrapBlocks = function() { if ( shrinkWrapBlocksVal != null ) { return shrinkWrapBlocksVal; } // Will be changed later if needed. shrinkWrapBlocksVal = false; // Minified: var b,c,d var div, body, container; body = document.getElementsByTagName( "body" )[ 0 ]; if ( !body || !body.style ) { // Test fired too early or in an unsupported environment, exit. return; } // Setup div = document.createElement( "div" ); container = document.createElement( "div" ); container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; body.appendChild( container ).appendChild( div ); // Support: IE6 // Check if elements with layout shrink-wrap their children if ( typeof div.style.zoom !== "undefined" ) { // Reset CSS: box-sizing; display; margin; border div.style.cssText = // Support: Firefox<29, Android 2.3 // Vendor-prefix box-sizing "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + "box-sizing:content-box;display:block;margin:0;border:0;" + "padding:1px;width:1px;zoom:1"; div.appendChild( document.createElement( "div" ) ).style.width = "5px"; shrinkWrapBlocksVal = div.offsetWidth !== 3; } body.removeChild( container ); return shrinkWrapBlocksVal; }; } )(); var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; var isHidden = function( elem, el ) { // isHidden might be called from jQuery#filter function; // in that case, element will be second argument elem = el || elem; return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); }; function adjustCSS( elem, prop, valueParts, tween ) { var adjusted, scale = 1, maxIterations = 20, currentValue = tween ? function() { return tween.cur(); } : function() { return jQuery.css( elem, prop, "" ); }, initial = currentValue(), unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), // Starting value computation is required for potential unit mismatches initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && rcssNum.exec( jQuery.css( elem, prop ) ); if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { // Trust units reported by jQuery.css unit = unit || initialInUnit[ 3 ]; // Make sure we update the tween properties later on valueParts = valueParts || []; // Iteratively approximate from a nonzero starting point initialInUnit = +initial || 1; do { // If previous iteration zeroed out, double until we get *something*. // Use string for doubling so we don't accidentally see scale as unchanged below scale = scale || ".5"; // Adjust and apply initialInUnit = initialInUnit / scale; jQuery.style( elem, prop, initialInUnit + unit ); // Update scale, tolerating zero or NaN from tween.cur() // Break the loop if scale is unchanged or perfect, or if we've just had enough. } while ( scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations ); } if ( valueParts ) { initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified adjusted = valueParts[ 1 ] ? initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : +valueParts[ 2 ]; if ( tween ) { tween.unit = unit; tween.start = initialInUnit; tween.end = adjusted; } } return adjusted; } // Multifunctional method to get and set values of a collection // The value/s can optionally be executed if it's a function var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { var i = 0, length = elems.length, bulk = key == null; // Sets many values if ( jQuery.type( key ) === "object" ) { chainable = true; for ( i in key ) { access( elems, fn, i, key[ i ], true, emptyGet, raw ); } // Sets one value } else if ( value !== undefined ) { chainable = true; if ( !jQuery.isFunction( value ) ) { raw = true; } if ( bulk ) { // Bulk operations run against the entire set if ( raw ) { fn.call( elems, value ); fn = null; // ...except when executing function values } else { bulk = fn; fn = function( elem, key, value ) { return bulk.call( jQuery( elem ), value ); }; } } if ( fn ) { for ( ; i < length; i++ ) { fn( elems[ i ], key, raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) ) ); } } } return chainable ? elems : // Gets bulk ? fn.call( elems ) : length ? fn( elems[ 0 ], key ) : emptyGet; }; var rcheckableType = ( /^(?:checkbox|radio)$/i ); var rtagName = ( /<([\w:-]+)/ ); var rscriptType = ( /^$|\/(?:java|ecma)script/i ); var rleadingWhitespace = ( /^\s+/ ); var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|" + "details|dialog|figcaption|figure|footer|header|hgroup|main|" + "mark|meter|nav|output|picture|progress|section|summary|template|time|video"; function createSafeFragment( document ) { var list = nodeNames.split( "|" ), safeFrag = document.createDocumentFragment(); if ( safeFrag.createElement ) { while ( list.length ) { safeFrag.createElement( list.pop() ); } } return safeFrag; } ( function() { var div = document.createElement( "div" ), fragment = document.createDocumentFragment(), input = document.createElement( "input" ); // Setup div.innerHTML = "
a"; // IE strips leading whitespace when .innerHTML is used support.leadingWhitespace = div.firstChild.nodeType === 3; // Make sure that tbody elements aren't automatically inserted // IE will insert them into empty tables support.tbody = !div.getElementsByTagName( "tbody" ).length; // Make sure that link elements get serialized correctly by innerHTML // This requires a wrapper element in IE support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; // Makes sure cloning an html5 element does not cause problems // Where outerHTML is undefined, this still works support.html5Clone = document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; // Check if a disconnected checkbox will retain its checked // value of true after appended to the DOM (IE6/7) input.type = "checkbox"; input.checked = true; fragment.appendChild( input ); support.appendChecked = input.checked; // Make sure textarea (and checkbox) defaultValue is properly cloned // Support: IE6-IE11+ div.innerHTML = ""; support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; // #11217 - WebKit loses check when the name is after the checked attribute fragment.appendChild( div ); // Support: Windows Web Apps (WWA) // `name` and `type` must use .setAttribute for WWA (#14901) input = document.createElement( "input" ); input.setAttribute( "type", "radio" ); input.setAttribute( "checked", "checked" ); input.setAttribute( "name", "t" ); div.appendChild( input ); // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 // old WebKit doesn't clone checked state correctly in fragments support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; // Support: IE<9 // Cloned elements keep attachEvent handlers, we use addEventListener on IE9+ support.noCloneEvent = !!div.addEventListener; // Support: IE<9 // Since attributes and properties are the same in IE, // cleanData must set properties to undefined rather than use removeAttribute div[ jQuery.expando ] = 1; support.attributes = !div.getAttribute( jQuery.expando ); } )(); // We have to close these tags to support XHTML (#13200) var wrapMap = { option: [ 1, "" ], legend: [ 1, "
", "
" ], area: [ 1, "", "" ], // Support: IE8 param: [ 1, "", "" ], thead: [ 1, "", "
" ], tr: [ 2, "", "
" ], col: [ 2, "", "
" ], td: [ 3, "", "
" ], // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, // unless wrapped in a div with non-breaking characters in front of it. _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] }; // Support: IE8-IE9 wrapMap.optgroup = wrapMap.option; wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; wrapMap.th = wrapMap.td; function getAll( context, tag ) { var elems, elem, i = 0, found = typeof context.getElementsByTagName !== "undefined" ? context.getElementsByTagName( tag || "*" ) : typeof context.querySelectorAll !== "undefined" ? context.querySelectorAll( tag || "*" ) : undefined; if ( !found ) { for ( found = [], elems = context.childNodes || context; ( elem = elems[ i ] ) != null; i++ ) { if ( !tag || jQuery.nodeName( elem, tag ) ) { found.push( elem ); } else { jQuery.merge( found, getAll( elem, tag ) ); } } } return tag === undefined || tag && jQuery.nodeName( context, tag ) ? jQuery.merge( [ context ], found ) : found; } // Mark scripts as having already been evaluated function setGlobalEval( elems, refElements ) { var elem, i = 0; for ( ; ( elem = elems[ i ] ) != null; i++ ) { jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[ i ], "globalEval" ) ); } } var rhtml = /<|&#?\w+;/, rtbody = / from table fragments if ( !support.tbody ) { // String was a , *may* have spurious elem = tag === "table" && !rtbody.test( elem ) ? tmp.firstChild : // String was a bare or wrap[ 1 ] === "
" && !rtbody.test( elem ) ? tmp : 0; j = elem && elem.childNodes.length; while ( j-- ) { if ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), "tbody" ) && !tbody.childNodes.length ) { elem.removeChild( tbody ); } } } jQuery.merge( nodes, tmp.childNodes ); // Fix #12392 for WebKit and IE > 9 tmp.textContent = ""; // Fix #12392 for oldIE while ( tmp.firstChild ) { tmp.removeChild( tmp.firstChild ); } // Remember the top-level container for proper cleanup tmp = safe.lastChild; } } } // Fix #11356: Clear elements from fragment if ( tmp ) { safe.removeChild( tmp ); } // Reset defaultChecked for any radios and checkboxes // about to be appended to the DOM in IE 6/7 (#8060) if ( !support.appendChecked ) { jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); } i = 0; while ( ( elem = nodes[ i++ ] ) ) { // Skip elements already in the context collection (trac-4087) if ( selection && jQuery.inArray( elem, selection ) > -1 ) { if ( ignored ) { ignored.push( elem ); } continue; } contains = jQuery.contains( elem.ownerDocument, elem ); // Append to fragment tmp = getAll( safe.appendChild( elem ), "script" ); // Preserve script evaluation history if ( contains ) { setGlobalEval( tmp ); } // Capture executables if ( scripts ) { j = 0; while ( ( elem = tmp[ j++ ] ) ) { if ( rscriptType.test( elem.type || "" ) ) { scripts.push( elem ); } } } } tmp = null; return safe; } ( function() { var i, eventName, div = document.createElement( "div" ); // Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events) for ( i in { submit: true, change: true, focusin: true } ) { eventName = "on" + i; if ( !( support[ i ] = eventName in window ) ) { // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) div.setAttribute( eventName, "t" ); support[ i ] = div.attributes[ eventName ].expando === false; } } // Null elements to avoid leaks in IE. div = null; } )(); var rformElems = /^(?:input|select|textarea)$/i, rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, rtypenamespace = /^([^.]*)(?:\.(.+)|)/; function returnTrue() { return true; } function returnFalse() { return false; } // Support: IE9 // See #13393 for more info function safeActiveElement() { try { return document.activeElement; } catch ( err ) { } } function on( elem, types, selector, data, fn, one ) { var origFn, type; // Types can be a map of types/handlers if ( typeof types === "object" ) { // ( types-Object, selector, data ) if ( typeof selector !== "string" ) { // ( types-Object, data ) data = data || selector; selector = undefined; } for ( type in types ) { on( elem, type, selector, data, types[ type ], one ); } return elem; } if ( data == null && fn == null ) { // ( types, fn ) fn = selector; data = selector = undefined; } else if ( fn == null ) { if ( typeof selector === "string" ) { // ( types, selector, fn ) fn = data; data = undefined; } else { // ( types, data, fn ) fn = data; data = selector; selector = undefined; } } if ( fn === false ) { fn = returnFalse; } else if ( !fn ) { return elem; } if ( one === 1 ) { origFn = fn; fn = function( event ) { // Can use an empty set, since event contains the info jQuery().off( event ); return origFn.apply( this, arguments ); }; // Use same guid so caller can remove using origFn fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); } return elem.each( function() { jQuery.event.add( this, types, fn, data, selector ); } ); } /* * Helper functions for managing events -- not part of the public interface. * Props to Dean Edwards' addEvent library for many of the ideas. */ jQuery.event = { global: {}, add: function( elem, types, handler, data, selector ) { var tmp, events, t, handleObjIn, special, eventHandle, handleObj, handlers, type, namespaces, origType, elemData = jQuery._data( elem ); // Don't attach events to noData or text/comment nodes (but allow plain objects) if ( !elemData ) { return; } // Caller can pass in an object of custom data in lieu of the handler if ( handler.handler ) { handleObjIn = handler; handler = handleObjIn.handler; selector = handleObjIn.selector; } // Make sure that the handler has a unique ID, used to find/remove it later if ( !handler.guid ) { handler.guid = jQuery.guid++; } // Init the element's event structure and main handler, if this is the first if ( !( events = elemData.events ) ) { events = elemData.events = {}; } if ( !( eventHandle = elemData.handle ) ) { eventHandle = elemData.handle = function( e ) { // Discard the second event of a jQuery.event.trigger() and // when an event is called after a page has unloaded return typeof jQuery !== "undefined" && ( !e || jQuery.event.triggered !== e.type ) ? jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : undefined; }; // Add elem as a property of the handle fn to prevent a memory leak // with IE non-native events eventHandle.elem = elem; } // Handle multiple events separated by a space types = ( types || "" ).match( rnotwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; type = origType = tmp[ 1 ]; namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // There *must* be a type, no attaching namespace-only handlers if ( !type ) { continue; } // If event changes its type, use the special event handlers for the changed type special = jQuery.event.special[ type ] || {}; // If selector defined, determine special event api type, otherwise given type type = ( selector ? special.delegateType : special.bindType ) || type; // Update special based on newly reset type special = jQuery.event.special[ type ] || {}; // handleObj is passed to all event handlers handleObj = jQuery.extend( { type: type, origType: origType, data: data, handler: handler, guid: handler.guid, selector: selector, needsContext: selector && jQuery.expr.match.needsContext.test( selector ), namespace: namespaces.join( "." ) }, handleObjIn ); // Init the event handler queue if we're the first if ( !( handlers = events[ type ] ) ) { handlers = events[ type ] = []; handlers.delegateCount = 0; // Only use addEventListener/attachEvent if the special events handler returns false if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { // Bind the global event handler to the element if ( elem.addEventListener ) { elem.addEventListener( type, eventHandle, false ); } else if ( elem.attachEvent ) { elem.attachEvent( "on" + type, eventHandle ); } } } if ( special.add ) { special.add.call( elem, handleObj ); if ( !handleObj.handler.guid ) { handleObj.handler.guid = handler.guid; } } // Add to the element's handler list, delegates in front if ( selector ) { handlers.splice( handlers.delegateCount++, 0, handleObj ); } else { handlers.push( handleObj ); } // Keep track of which events have ever been used, for event optimization jQuery.event.global[ type ] = true; } // Nullify elem to prevent memory leaks in IE elem = null; }, // Detach an event or set of events from an element remove: function( elem, types, handler, selector, mappedTypes ) { var j, handleObj, tmp, origCount, t, events, special, handlers, type, namespaces, origType, elemData = jQuery.hasData( elem ) && jQuery._data( elem ); if ( !elemData || !( events = elemData.events ) ) { return; } // Once for each type.namespace in types; type may be omitted types = ( types || "" ).match( rnotwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; type = origType = tmp[ 1 ]; namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // Unbind all events (on this namespace, if provided) for the element if ( !type ) { for ( type in events ) { jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); } continue; } special = jQuery.event.special[ type ] || {}; type = ( selector ? special.delegateType : special.bindType ) || type; handlers = events[ type ] || []; tmp = tmp[ 2 ] && new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); // Remove matching events origCount = j = handlers.length; while ( j-- ) { handleObj = handlers[ j ]; if ( ( mappedTypes || origType === handleObj.origType ) && ( !handler || handler.guid === handleObj.guid ) && ( !tmp || tmp.test( handleObj.namespace ) ) && ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { handlers.splice( j, 1 ); if ( handleObj.selector ) { handlers.delegateCount--; } if ( special.remove ) { special.remove.call( elem, handleObj ); } } } // Remove generic event handler if we removed something and no more handlers exist // (avoids potential for endless recursion during removal of special event handlers) if ( origCount && !handlers.length ) { if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { jQuery.removeEvent( elem, type, elemData.handle ); } delete events[ type ]; } } // Remove the expando if it's no longer used if ( jQuery.isEmptyObject( events ) ) { delete elemData.handle; // removeData also checks for emptiness and clears the expando if empty // so use it instead of delete jQuery._removeData( elem, "events" ); } }, trigger: function( event, data, elem, onlyHandlers ) { var handle, ontype, cur, bubbleType, special, tmp, i, eventPath = [ elem || document ], type = hasOwn.call( event, "type" ) ? event.type : event, namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; cur = tmp = elem = elem || document; // Don't do events on text and comment nodes if ( elem.nodeType === 3 || elem.nodeType === 8 ) { return; } // focus/blur morphs to focusin/out; ensure we're not firing them right now if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { return; } if ( type.indexOf( "." ) > -1 ) { // Namespaced trigger; create a regexp to match event type in handle() namespaces = type.split( "." ); type = namespaces.shift(); namespaces.sort(); } ontype = type.indexOf( ":" ) < 0 && "on" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string event = event[ jQuery.expando ] ? event : new jQuery.Event( type, typeof event === "object" && event ); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) event.isTrigger = onlyHandlers ? 2 : 3; event.namespace = namespaces.join( "." ); event.rnamespace = event.namespace ? new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : null; // Clean up the event in case it is being reused event.result = undefined; if ( !event.target ) { event.target = elem; } // Clone any incoming data and prepend the event, creating the handler arg list data = data == null ? [ event ] : jQuery.makeArray( data, [ event ] ); // Allow special events to draw outside the lines special = jQuery.event.special[ type ] || {}; if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { return; } // Determine event propagation path in advance, per W3C events spec (#9951) // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { bubbleType = special.delegateType || type; if ( !rfocusMorph.test( bubbleType + type ) ) { cur = cur.parentNode; } for ( ; cur; cur = cur.parentNode ) { eventPath.push( cur ); tmp = cur; } // Only add window if we got to document (e.g., not plain obj or detached DOM) if ( tmp === ( elem.ownerDocument || document ) ) { eventPath.push( tmp.defaultView || tmp.parentWindow || window ); } } // Fire handlers on the event path i = 0; while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); if ( handle ) { handle.apply( cur, data ); } // Native handler handle = ontype && cur[ ontype ]; if ( handle && handle.apply && acceptData( cur ) ) { event.result = handle.apply( cur, data ); if ( event.result === false ) { event.preventDefault(); } } } event.type = type; // If nobody prevented the default action, do it now if ( !onlyHandlers && !event.isDefaultPrevented() ) { if ( ( !special._default || special._default.apply( eventPath.pop(), data ) === false ) && acceptData( elem ) ) { // Call a native DOM method on the target with the same name name as the event. // Can't use an .isFunction() check here because IE6/7 fails that test. // Don't do default actions on window, that's where global variables be (#6170) if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { // Don't re-trigger an onFOO event when we call its FOO() method tmp = elem[ ontype ]; if ( tmp ) { elem[ ontype ] = null; } // Prevent re-triggering of the same event, since we already bubbled it above jQuery.event.triggered = type; try { elem[ type ](); } catch ( e ) { // IE<9 dies on focus/blur to hidden element (#1486,#12518) // only reproducible on winXP IE8 native, not IE9 in IE8 mode } jQuery.event.triggered = undefined; if ( tmp ) { elem[ ontype ] = tmp; } } } } return event.result; }, dispatch: function( event ) { // Make a writable jQuery.Event from the native event object event = jQuery.event.fix( event ); var i, j, ret, matched, handleObj, handlerQueue = [], args = slice.call( arguments ), handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event args[ 0 ] = event; event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { return; } // Determine handlers handlerQueue = jQuery.event.handlers.call( this, event, handlers ); // Run delegates first; they may want to stop propagation beneath us i = 0; while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { event.currentTarget = matched.elem; j = 0; while ( ( handleObj = matched.handlers[ j++ ] ) && !event.isImmediatePropagationStopped() ) { // Triggered event must either 1) have no namespace, or 2) have namespace(s) // a subset or equal to those in the bound event (both can have no namespace). if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { event.handleObj = handleObj; event.data = handleObj.data; ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || handleObj.handler ).apply( matched.elem, args ); if ( ret !== undefined ) { if ( ( event.result = ret ) === false ) { event.preventDefault(); event.stopPropagation(); } } } } } // Call the postDispatch hook for the mapped type if ( special.postDispatch ) { special.postDispatch.call( this, event ); } return event.result; }, handlers: function( event, handlers ) { var i, matches, sel, handleObj, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; // Support (at least): Chrome, IE9 // Find delegate handlers // Black-hole SVG instance trees (#13180) // // Support: Firefox<=42+ // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) if ( delegateCount && cur.nodeType && ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { /* jshint eqeqeq: false */ for ( ; cur != this; cur = cur.parentNode || this ) { /* jshint eqeqeq: true */ // Don't check non-elements (#13208) // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { matches = []; for ( i = 0; i < delegateCount; i++ ) { handleObj = handlers[ i ]; // Don't conflict with Object.prototype properties (#13203) sel = handleObj.selector + " "; if ( matches[ sel ] === undefined ) { matches[ sel ] = handleObj.needsContext ? jQuery( sel, this ).index( cur ) > -1 : jQuery.find( sel, this, null, [ cur ] ).length; } if ( matches[ sel ] ) { matches.push( handleObj ); } } if ( matches.length ) { handlerQueue.push( { elem: cur, handlers: matches } ); } } } } // Add the remaining (directly-bound) handlers if ( delegateCount < handlers.length ) { handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); } return handlerQueue; }, fix: function( event ) { if ( event[ jQuery.expando ] ) { return event; } // Create a writable copy of the event object and normalize some properties var i, prop, copy, type = event.type, originalEvent = event, fixHook = this.fixHooks[ type ]; if ( !fixHook ) { this.fixHooks[ type ] = fixHook = rmouseEvent.test( type ) ? this.mouseHooks : rkeyEvent.test( type ) ? this.keyHooks : {}; } copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; event = new jQuery.Event( originalEvent ); i = copy.length; while ( i-- ) { prop = copy[ i ]; event[ prop ] = originalEvent[ prop ]; } // Support: IE<9 // Fix target property (#1925) if ( !event.target ) { event.target = originalEvent.srcElement || document; } // Support: Safari 6-8+ // Target should not be a text node (#504, #13143) if ( event.target.nodeType === 3 ) { event.target = event.target.parentNode; } // Support: IE<9 // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) event.metaKey = !!event.metaKey; return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; }, // Includes some event props shared by KeyEvent and MouseEvent props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), fixHooks: {}, keyHooks: { props: "char charCode key keyCode".split( " " ), filter: function( event, original ) { // Add which for key events if ( event.which == null ) { event.which = original.charCode != null ? original.charCode : original.keyCode; } return event; } }, mouseHooks: { props: ( "button buttons clientX clientY fromElement offsetX offsetY " + "pageX pageY screenX screenY toElement" ).split( " " ), filter: function( event, original ) { var body, eventDoc, doc, button = original.button, fromElement = original.fromElement; // Calculate pageX/Y if missing and clientX/Y available if ( event.pageX == null && original.clientX != null ) { eventDoc = event.target.ownerDocument || document; doc = eventDoc.documentElement; body = eventDoc.body; event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); } // Add relatedTarget, if necessary if ( !event.relatedTarget && fromElement ) { event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; } // Add which for click: 1 === left; 2 === middle; 3 === right // Note: button is not normalized, so don't use it if ( !event.which && button !== undefined ) { event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); } return event; } }, special: { load: { // Prevent triggered image.load events from bubbling to window.load noBubble: true }, focus: { // Fire native event if possible so blur/focus sequence is correct trigger: function() { if ( this !== safeActiveElement() && this.focus ) { try { this.focus(); return false; } catch ( e ) { // Support: IE<9 // If we error on focus to hidden element (#1486, #12518), // let .trigger() run the handlers } } }, delegateType: "focusin" }, blur: { trigger: function() { if ( this === safeActiveElement() && this.blur ) { this.blur(); return false; } }, delegateType: "focusout" }, click: { // For checkbox, fire native event so checked state will be right trigger: function() { if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { this.click(); return false; } }, // For cross-browser consistency, don't fire native .click() on links _default: function( event ) { return jQuery.nodeName( event.target, "a" ); } }, beforeunload: { postDispatch: function( event ) { // Support: Firefox 20+ // Firefox doesn't alert if the returnValue field is not set. if ( event.result !== undefined && event.originalEvent ) { event.originalEvent.returnValue = event.result; } } } }, // Piggyback on a donor event to simulate a different one simulate: function( type, elem, event ) { var e = jQuery.extend( new jQuery.Event(), event, { type: type, isSimulated: true // Previously, `originalEvent: {}` was set here, so stopPropagation call // would not be triggered on donor event, since in our own // jQuery.event.stopPropagation function we had a check for existence of // originalEvent.stopPropagation method, so, consequently it would be a noop. // // Guard for simulated events was moved to jQuery.event.stopPropagation function // since `originalEvent` should point to the original event for the // constancy with other events and for more focused logic } ); jQuery.event.trigger( e, null, elem ); if ( e.isDefaultPrevented() ) { event.preventDefault(); } } }; jQuery.removeEvent = document.removeEventListener ? function( elem, type, handle ) { // This "if" is needed for plain objects if ( elem.removeEventListener ) { elem.removeEventListener( type, handle ); } } : function( elem, type, handle ) { var name = "on" + type; if ( elem.detachEvent ) { // #8545, #7054, preventing memory leaks for custom events in IE6-8 // detachEvent needed property on element, by name of that event, // to properly expose it to GC if ( typeof elem[ name ] === "undefined" ) { elem[ name ] = null; } elem.detachEvent( name, handle ); } }; jQuery.Event = function( src, props ) { // Allow instantiation without the 'new' keyword if ( !( this instanceof jQuery.Event ) ) { return new jQuery.Event( src, props ); } // Event object if ( src && src.type ) { this.originalEvent = src; this.type = src.type; // Events bubbling up the document may have been marked as prevented // by a handler lower down the tree; reflect the correct value. this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: IE < 9, Android < 4.0 src.returnValue === false ? returnTrue : returnFalse; // Event type } else { this.type = src; } // Put explicitly provided properties onto the event object if ( props ) { jQuery.extend( this, props ); } // Create a timestamp if incoming event doesn't have one this.timeStamp = src && src.timeStamp || jQuery.now(); // Mark it as fixed this[ jQuery.expando ] = true; }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html jQuery.Event.prototype = { constructor: jQuery.Event, isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, isImmediatePropagationStopped: returnFalse, preventDefault: function() { var e = this.originalEvent; this.isDefaultPrevented = returnTrue; if ( !e ) { return; } // If preventDefault exists, run it on the original event if ( e.preventDefault ) { e.preventDefault(); // Support: IE // Otherwise set the returnValue property of the original event to false } else { e.returnValue = false; } }, stopPropagation: function() { var e = this.originalEvent; this.isPropagationStopped = returnTrue; if ( !e || this.isSimulated ) { return; } // If stopPropagation exists, run it on the original event if ( e.stopPropagation ) { e.stopPropagation(); } // Support: IE // Set the cancelBubble property of the original event to true e.cancelBubble = true; }, stopImmediatePropagation: function() { var e = this.originalEvent; this.isImmediatePropagationStopped = returnTrue; if ( e && e.stopImmediatePropagation ) { e.stopImmediatePropagation(); } this.stopPropagation(); } }; // Create mouseenter/leave events using mouseover/out and event-time checks // so that event delegation works in jQuery. // Do the same for pointerenter/pointerleave and pointerover/pointerout // // Support: Safari 7 only // Safari sends mouseenter too often; see: // https://code.google.com/p/chromium/issues/detail?id=470258 // for the description of the bug (it existed in older Chrome versions as well). jQuery.each( { mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function( orig, fix ) { jQuery.event.special[ orig ] = { delegateType: fix, bindType: fix, handle: function( event ) { var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target. // NB: No relatedTarget if the mouse left/entered the browser window if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { event.type = handleObj.origType; ret = handleObj.handler.apply( this, arguments ); event.type = fix; } return ret; } }; } ); // IE submit delegation if ( !support.submit ) { jQuery.event.special.submit = { setup: function() { // Only need this for delegated form submit events if ( jQuery.nodeName( this, "form" ) ) { return false; } // Lazy-add a submit handler when a descendant form may potentially be submitted jQuery.event.add( this, "click._submit keypress._submit", function( e ) { // Node name check avoids a VML-related crash in IE (#9807) var elem = e.target, form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? // Support: IE <=8 // We use jQuery.prop instead of elem.form // to allow fixing the IE8 delegated submit issue (gh-2332) // by 3rd party polyfills/workarounds. jQuery.prop( elem, "form" ) : undefined; if ( form && !jQuery._data( form, "submit" ) ) { jQuery.event.add( form, "submit._submit", function( event ) { event._submitBubble = true; } ); jQuery._data( form, "submit", true ); } } ); // return undefined since we don't need an event listener }, postDispatch: function( event ) { // If form was submitted by the user, bubble the event up the tree if ( event._submitBubble ) { delete event._submitBubble; if ( this.parentNode && !event.isTrigger ) { jQuery.event.simulate( "submit", this.parentNode, event ); } } }, teardown: function() { // Only need this for delegated form submit events if ( jQuery.nodeName( this, "form" ) ) { return false; } // Remove delegated handlers; cleanData eventually reaps submit handlers attached above jQuery.event.remove( this, "._submit" ); } }; } // IE change delegation and checkbox/radio fix if ( !support.change ) { jQuery.event.special.change = { setup: function() { if ( rformElems.test( this.nodeName ) ) { // IE doesn't fire change on a check/radio until blur; trigger it on click // after a propertychange. Eat the blur-change in special.change.handle. // This still fires onchange a second time for check/radio after blur. if ( this.type === "checkbox" || this.type === "radio" ) { jQuery.event.add( this, "propertychange._change", function( event ) { if ( event.originalEvent.propertyName === "checked" ) { this._justChanged = true; } } ); jQuery.event.add( this, "click._change", function( event ) { if ( this._justChanged && !event.isTrigger ) { this._justChanged = false; } // Allow triggered, simulated change events (#11500) jQuery.event.simulate( "change", this, event ); } ); } return false; } // Delegated event; lazy-add a change handler on descendant inputs jQuery.event.add( this, "beforeactivate._change", function( e ) { var elem = e.target; if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "change" ) ) { jQuery.event.add( elem, "change._change", function( event ) { if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { jQuery.event.simulate( "change", this.parentNode, event ); } } ); jQuery._data( elem, "change", true ); } } ); }, handle: function( event ) { var elem = event.target; // Swallow native change events from checkbox/radio, we already triggered them above if ( this !== elem || event.isSimulated || event.isTrigger || ( elem.type !== "radio" && elem.type !== "checkbox" ) ) { return event.handleObj.handler.apply( this, arguments ); } }, teardown: function() { jQuery.event.remove( this, "._change" ); return !rformElems.test( this.nodeName ); } }; } // Support: Firefox // Firefox doesn't have focus(in | out) events // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 // // Support: Chrome, Safari // focus(in | out) events fire after focus & blur events, // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order // Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 if ( !support.focusin ) { jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { // Attach a single capturing handler on the document while someone wants focusin/focusout var handler = function( event ) { jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); }; jQuery.event.special[ fix ] = { setup: function() { var doc = this.ownerDocument || this, attaches = jQuery._data( doc, fix ); if ( !attaches ) { doc.addEventListener( orig, handler, true ); } jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); }, teardown: function() { var doc = this.ownerDocument || this, attaches = jQuery._data( doc, fix ) - 1; if ( !attaches ) { doc.removeEventListener( orig, handler, true ); jQuery._removeData( doc, fix ); } else { jQuery._data( doc, fix, attaches ); } } }; } ); } jQuery.fn.extend( { on: function( types, selector, data, fn ) { return on( this, types, selector, data, fn ); }, one: function( types, selector, data, fn ) { return on( this, types, selector, data, fn, 1 ); }, off: function( types, selector, fn ) { var handleObj, type; if ( types && types.preventDefault && types.handleObj ) { // ( event ) dispatched jQuery.Event handleObj = types.handleObj; jQuery( types.delegateTarget ).off( handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler ); return this; } if ( typeof types === "object" ) { // ( types-object [, selector] ) for ( type in types ) { this.off( type, selector, types[ type ] ); } return this; } if ( selector === false || typeof selector === "function" ) { // ( types [, fn] ) fn = selector; selector = undefined; } if ( fn === false ) { fn = returnFalse; } return this.each( function() { jQuery.event.remove( this, types, fn, selector ); } ); }, trigger: function( type, data ) { return this.each( function() { jQuery.event.trigger( type, data, this ); } ); }, triggerHandler: function( type, data ) { var elem = this[ 0 ]; if ( elem ) { return jQuery.event.trigger( type, data, elem, true ); } } } ); var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ), rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, // Support: IE 10-11, Edge 10240+ // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ rnoInnerhtml = /\s*$/g, safeFragment = createSafeFragment( document ), fragmentDiv = safeFragment.appendChild( document.createElement( "div" ) ); // Support: IE<8 // Manipulating tables requires a tbody function manipulationTarget( elem, content ) { return jQuery.nodeName( elem, "table" ) && jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? elem.getElementsByTagName( "tbody" )[ 0 ] || elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : elem; } // Replace/restore the type attribute of script elements for safe DOM manipulation function disableScript( elem ) { elem.type = ( jQuery.find.attr( elem, "type" ) !== null ) + "/" + elem.type; return elem; } function restoreScript( elem ) { var match = rscriptTypeMasked.exec( elem.type ); if ( match ) { elem.type = match[ 1 ]; } else { elem.removeAttribute( "type" ); } return elem; } function cloneCopyEvent( src, dest ) { if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { return; } var type, i, l, oldData = jQuery._data( src ), curData = jQuery._data( dest, oldData ), events = oldData.events; if ( events ) { delete curData.handle; curData.events = {}; for ( type in events ) { for ( i = 0, l = events[ type ].length; i < l; i++ ) { jQuery.event.add( dest, type, events[ type ][ i ] ); } } } // make the cloned public data object a copy from the original if ( curData.data ) { curData.data = jQuery.extend( {}, curData.data ); } } function fixCloneNodeIssues( src, dest ) { var nodeName, e, data; // We do not need to do anything for non-Elements if ( dest.nodeType !== 1 ) { return; } nodeName = dest.nodeName.toLowerCase(); // IE6-8 copies events bound via attachEvent when using cloneNode. if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { data = jQuery._data( dest ); for ( e in data.events ) { jQuery.removeEvent( dest, e, data.handle ); } // Event data gets referenced instead of copied if the expando gets copied too dest.removeAttribute( jQuery.expando ); } // IE blanks contents when cloning scripts, and tries to evaluate newly-set text if ( nodeName === "script" && dest.text !== src.text ) { disableScript( dest ).text = src.text; restoreScript( dest ); // IE6-10 improperly clones children of object elements using classid. // IE10 throws NoModificationAllowedError if parent is null, #12132. } else if ( nodeName === "object" ) { if ( dest.parentNode ) { dest.outerHTML = src.outerHTML; } // This path appears unavoidable for IE9. When cloning an object // element in IE9, the outerHTML strategy above is not sufficient. // If the src has innerHTML and the destination does not, // copy the src.innerHTML into the dest.innerHTML. #10324 if ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) { dest.innerHTML = src.innerHTML; } } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { // IE6-8 fails to persist the checked state of a cloned checkbox // or radio button. Worse, IE6-7 fail to give the cloned element // a checked appearance if the defaultChecked value isn't also set dest.defaultChecked = dest.checked = src.checked; // IE6-7 get confused and end up setting the value of a cloned // checkbox/radio button to an empty string instead of "on" if ( dest.value !== src.value ) { dest.value = src.value; } // IE6-8 fails to return the selected option to the default selected // state when cloning options } else if ( nodeName === "option" ) { dest.defaultSelected = dest.selected = src.defaultSelected; // IE6-8 fails to set the defaultValue to the correct value when // cloning other types of input fields } else if ( nodeName === "input" || nodeName === "textarea" ) { dest.defaultValue = src.defaultValue; } } function domManip( collection, args, callback, ignored ) { // Flatten any nested arrays args = concat.apply( [], args ); var first, node, hasScripts, scripts, doc, fragment, i = 0, l = collection.length, iNoClone = l - 1, value = args[ 0 ], isFunction = jQuery.isFunction( value ); // We can't cloneNode fragments that contain checked, in WebKit if ( isFunction || ( l > 1 && typeof value === "string" && !support.checkClone && rchecked.test( value ) ) ) { return collection.each( function( index ) { var self = collection.eq( index ); if ( isFunction ) { args[ 0 ] = value.call( this, index, self.html() ); } domManip( self, args, callback, ignored ); } ); } if ( l ) { fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); first = fragment.firstChild; if ( fragment.childNodes.length === 1 ) { fragment = first; } // Require either new content or an interest in ignored elements to invoke the callback if ( first || ignored ) { scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); hasScripts = scripts.length; // Use the original fragment for the last item // instead of the first because it can end up // being emptied incorrectly in certain situations (#8070). for ( ; i < l; i++ ) { node = fragment; if ( i !== iNoClone ) { node = jQuery.clone( node, true, true ); // Keep references to cloned scripts for later restoration if ( hasScripts ) { // Support: Android<4.1, PhantomJS<2 // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( scripts, getAll( node, "script" ) ); } } callback.call( collection[ i ], node, i ); } if ( hasScripts ) { doc = scripts[ scripts.length - 1 ].ownerDocument; // Reenable scripts jQuery.map( scripts, restoreScript ); // Evaluate executable scripts on first document insertion for ( i = 0; i < hasScripts; i++ ) { node = scripts[ i ]; if ( rscriptType.test( node.type || "" ) && !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { if ( node.src ) { // Optional AJAX dependency, but won't run scripts if not present if ( jQuery._evalUrl ) { jQuery._evalUrl( node.src ); } } else { jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ) .replace( rcleanScript, "" ) ); } } } } // Fix #11809: Avoid leaking memory fragment = first = null; } } return collection; } function remove( elem, selector, keepData ) { var node, elems = selector ? jQuery.filter( selector, elem ) : elem, i = 0; for ( ; ( node = elems[ i ] ) != null; i++ ) { if ( !keepData && node.nodeType === 1 ) { jQuery.cleanData( getAll( node ) ); } if ( node.parentNode ) { if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { setGlobalEval( getAll( node, "script" ) ); } node.parentNode.removeChild( node ); } } return elem; } jQuery.extend( { htmlPrefilter: function( html ) { return html.replace( rxhtmlTag, "<$1>" ); }, clone: function( elem, dataAndEvents, deepDataAndEvents ) { var destElements, node, clone, i, srcElements, inPage = jQuery.contains( elem.ownerDocument, elem ); if ( support.html5Clone || jQuery.isXMLDoc( elem ) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { clone = elem.cloneNode( true ); // IE<=8 does not properly clone detached, unknown element nodes } else { fragmentDiv.innerHTML = elem.outerHTML; fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); } if ( ( !support.noCloneEvent || !support.noCloneChecked ) && ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 destElements = getAll( clone ); srcElements = getAll( elem ); // Fix all IE cloning issues for ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) { // Ensure that the destination node is not null; Fixes #9587 if ( destElements[ i ] ) { fixCloneNodeIssues( node, destElements[ i ] ); } } } // Copy the events from the original to the clone if ( dataAndEvents ) { if ( deepDataAndEvents ) { srcElements = srcElements || getAll( elem ); destElements = destElements || getAll( clone ); for ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) { cloneCopyEvent( node, destElements[ i ] ); } } else { cloneCopyEvent( elem, clone ); } } // Preserve script evaluation history destElements = getAll( clone, "script" ); if ( destElements.length > 0 ) { setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); } destElements = srcElements = node = null; // Return the cloned set return clone; }, cleanData: function( elems, /* internal */ forceAcceptData ) { var elem, type, id, data, i = 0, internalKey = jQuery.expando, cache = jQuery.cache, attributes = support.attributes, special = jQuery.event.special; for ( ; ( elem = elems[ i ] ) != null; i++ ) { if ( forceAcceptData || acceptData( elem ) ) { id = elem[ internalKey ]; data = id && cache[ id ]; if ( data ) { if ( data.events ) { for ( type in data.events ) { if ( special[ type ] ) { jQuery.event.remove( elem, type ); // This is a shortcut to avoid jQuery.event.remove's overhead } else { jQuery.removeEvent( elem, type, data.handle ); } } } // Remove cache only if it was not already removed by jQuery.event.remove if ( cache[ id ] ) { delete cache[ id ]; // Support: IE<9 // IE does not allow us to delete expando properties from nodes // IE creates expando attributes along with the property // IE does not have a removeAttribute function on Document nodes if ( !attributes && typeof elem.removeAttribute !== "undefined" ) { elem.removeAttribute( internalKey ); // Webkit & Blink performance suffers when deleting properties // from DOM nodes, so set to undefined instead // https://code.google.com/p/chromium/issues/detail?id=378607 } else { elem[ internalKey ] = undefined; } deletedIds.push( id ); } } } } } } ); jQuery.fn.extend( { // Keep domManip exposed until 3.0 (gh-2225) domManip: domManip, detach: function( selector ) { return remove( this, selector, true ); }, remove: function( selector ) { return remove( this, selector ); }, text: function( value ) { return access( this, function( value ) { return value === undefined ? jQuery.text( this ) : this.empty().append( ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) ); }, null, value, arguments.length ); }, append: function() { return domManip( this, arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.appendChild( elem ); } } ); }, prepend: function() { return domManip( this, arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.insertBefore( elem, target.firstChild ); } } ); }, before: function() { return domManip( this, arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this ); } } ); }, after: function() { return domManip( this, arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this.nextSibling ); } } ); }, empty: function() { var elem, i = 0; for ( ; ( elem = this[ i ] ) != null; i++ ) { // Remove element nodes and prevent memory leaks if ( elem.nodeType === 1 ) { jQuery.cleanData( getAll( elem, false ) ); } // Remove any remaining nodes while ( elem.firstChild ) { elem.removeChild( elem.firstChild ); } // If this is a select, ensure that it displays empty (#12336) // Support: IE<9 if ( elem.options && jQuery.nodeName( elem, "select" ) ) { elem.options.length = 0; } } return this; }, clone: function( dataAndEvents, deepDataAndEvents ) { dataAndEvents = dataAndEvents == null ? false : dataAndEvents; deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; return this.map( function() { return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); } ); }, html: function( value ) { return access( this, function( value ) { var elem = this[ 0 ] || {}, i = 0, l = this.length; if ( value === undefined ) { return elem.nodeType === 1 ? elem.innerHTML.replace( rinlinejQuery, "" ) : undefined; } // See if we can take a shortcut and just use innerHTML if ( typeof value === "string" && !rnoInnerhtml.test( value ) && ( support.htmlSerialize || !rnoshimcache.test( value ) ) && ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { value = jQuery.htmlPrefilter( value ); try { for ( ; i < l; i++ ) { // Remove element nodes and prevent memory leaks elem = this[ i ] || {}; if ( elem.nodeType === 1 ) { jQuery.cleanData( getAll( elem, false ) ); elem.innerHTML = value; } } elem = 0; // If using innerHTML throws an exception, use the fallback method } catch ( e ) {} } if ( elem ) { this.empty().append( value ); } }, null, value, arguments.length ); }, replaceWith: function() { var ignored = []; // Make the changes, replacing each non-ignored context element with the new content return domManip( this, arguments, function( elem ) { var parent = this.parentNode; if ( jQuery.inArray( this, ignored ) < 0 ) { jQuery.cleanData( getAll( this ) ); if ( parent ) { parent.replaceChild( elem, this ); } } // Force callback invocation }, ignored ); } } ); jQuery.each( { appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function( name, original ) { jQuery.fn[ name ] = function( selector ) { var elems, i = 0, ret = [], insert = jQuery( selector ), last = insert.length - 1; for ( ; i <= last; i++ ) { elems = i === last ? this : this.clone( true ); jQuery( insert[ i ] )[ original ]( elems ); // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() push.apply( ret, elems.get() ); } return this.pushStack( ret ); }; } ); var iframe, elemdisplay = { // Support: Firefox // We have to pre-define these values for FF (#10227) HTML: "block", BODY: "block" }; /** * Retrieve the actual display of a element * @param {String} name nodeName of the element * @param {Object} doc Document object */ // Called only from within defaultDisplay function actualDisplay( name, doc ) { var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), display = jQuery.css( elem[ 0 ], "display" ); // We don't have any data stored on the element, // so use "detach" method as fast way to get rid of the element elem.detach(); return display; } /** * Try to determine the default display value of an element * @param {String} nodeName */ function defaultDisplay( nodeName ) { var doc = document, display = elemdisplay[ nodeName ]; if ( !display ) { display = actualDisplay( nodeName, doc ); // If the simple way fails, read from inside an iframe if ( display === "none" || !display ) { // Use the already-created iframe if possible iframe = ( iframe || jQuery( "'); $('iframe', modal.tmp) .css({ width: currentSettings.width, height: currentSettings.height }) .error(loadingError) .load(formDataLoaded); debug('Form Data Load: '+jFrom.attr('action')); showModal(); showContentOrLoading(); } else if (currentSettings.type == 'image') { debug('Image Load: '+url); var title = jFrom.attr('title') || currentSettings.defaultImgAlt; initModal(); modal.tmp.html('').find('img').attr('alt', title); modal.tmp.css({lineHeight: 0}); $('img', modal.tmp) .error(loadingError) .load(function() { debug('Image Loaded: '+this.src); $(this).unbind('load'); var w = modal.tmp.width(); var h = modal.tmp.height(); modal.tmp.css({lineHeight: ''}); resized.width = w; resized.height = h; setCurrentSettings({ width: w, height: h, imgWidth: w, imgHeight: h }); initSettingsSize.width = w; initSettingsSize.height = h; setCurrentSettings({overflow: 'visible'}, 'cssOpt', 'content'); modal.dataReady = true; if (modal.loadingShown || modal.transition) showContentOrLoading(); }) .attr('src', url); showModal(); } else if (currentSettings.type == 'iframeForm') { initModal(); modal.tmp.html(''); debug('Iframe Form Load: '+url); $('iframe', modal.tmp).eq(0) .css({ width: '100%', height: $.support.boxModel? '99%' : '100%' }) .load(iframeLoaded); modal.dataReady = true; showModal(); } else if (currentSettings.type == 'iframe') { initModal(); modal.tmp.html(''); debug('Iframe Load: '+url); $('iframe', modal.tmp).eq(0) .css({ width: '100%', height: $.support.boxModel? '99%' : '100%' }) .load(iframeLoaded); modal.dataReady = true; showModal(); } else if (currentSettings.type) { // Could be every other kind of type or a dom selector debug('Content: '+currentSettings.type); initModal(); modal.tmp.html(currentSettings.content); var w = modal.tmp.width(); var h = modal.tmp.height(); var div = $(currentSettings.type); if (div.length) { setCurrentSettings({type: 'div'}); w = div.width(); h = div.height(); if (contentElt) contentEltLast = contentElt; contentElt = div; modal.tmp.append(div.contents()); } initSettingsSize.width = w; initSettingsSize.height = h; setCurrentSettings({ width: w, height: h }); if (modal.tmp.html()) modal.dataReady = true; else loadingError(); if (!modal.ready) showModal(); else endHideContent(); } else { debug('Ajax Load: '+url); setCurrentSettings({type: 'ajax'}); var data = currentSettings.ajax.data || {}; if (currentSettings.selector) { if (typeof data == "string") { data+= '&'+currentSettings.selIndicator+'='+currentSettings.selector.substring(1); } else { data[currentSettings.selIndicator] = currentSettings.selector.substring(1); } } showModal(); $.ajax($.extend(true, currentSettings.ajax, { url: url, success: ajaxLoaded, error: loadingError, data: data })); } } else if (currentSettings.content) { // Raw content not from a DOM element debug('Content: '+currentSettings.type); setCurrentSettings({type: 'manual'}); initModal(); modal.tmp.html($('
').html(currentSettings.content).contents()); if (modal.tmp.html()) modal.dataReady = true; else loadingError(); showModal(); } else { // What should we show here? nothing happen } } // Update the current settings // object settings // string deep1 first key where overwrite the settings // string deep2 second key where overwrite the settings function setDefaultCurrentSettings(settings) { debug('setDefaultCurrentSettings'); currentSettings = $.extend(true, {}, $.fn.nyroModal.settings, settings); setMargin(); } function setCurrentSettings(settings, deep1, deep2) { if (modal.started) { if (deep1 && deep2) { $.extend(true, currentSettings[deep1][deep2], settings); } else if (deep1) { $.extend(true, currentSettings[deep1], settings); } else { if (modal.animContent) { if ('width' in settings) { if (!modal.resizing) { settings.setWidth = settings.width; shouldResize = true; } delete settings['width']; } if ('height' in settings) { if (!modal.resizing) { settings.setHeight = settings.height; shouldResize = true; } delete settings['height']; } } $.extend(true, currentSettings, settings); } } else { if (deep1 && deep2) { $.extend(true, $.fn.nyroModal.settings[deep1][deep2], settings); } else if (deep1) { $.extend(true, $.fn.nyroModal.settings[deep1], settings); } else { $.extend(true, $.fn.nyroModal.settings, settings); } } } // Set the margin for postionning the element. Useful for IE6 function setMarginScroll() { if (isIE6 && !modal.blocker) { if (document.documentElement) { currentSettings.marginScrollLeft = document.documentElement.scrollLeft; currentSettings.marginScrollTop = document.documentElement.scrollTop; } else { currentSettings.marginScrollLeft = document.body.scrollLeft; currentSettings.marginScrollTop = document.body.scrollTop; } } else { currentSettings.marginScrollLeft = 0; currentSettings.marginScrollTop = 0; } } // Set the margin for the content function setMargin() { setMarginScroll(); currentSettings.marginLeft = -(currentSettings.width+currentSettings.borderW)/2; currentSettings.marginTop = -(currentSettings.height+currentSettings.borderH)/2; if (!modal.blocker) { currentSettings.marginLeft+= currentSettings.marginScrollLeft; currentSettings.marginTop+= currentSettings.marginScrollTop; } } // Set the margin for the current loading function setMarginLoading() { setMarginScroll(); var outer = getOuter(modal.loading); currentSettings.marginTopLoading = -(modal.loading.height() + outer.h.border + outer.h.padding)/2; currentSettings.marginLeftLoading = -(modal.loading.width() + outer.w.border + outer.w.padding)/2; if (!modal.blocker) { currentSettings.marginLeftLoading+= currentSettings.marginScrollLeft; currentSettings.marginTopLoading+= currentSettings.marginScrollTop; } } // Set the modal Title function setTitle() { var title = $('h1#nyroModalTitle', modal.contentWrapper); if (title.length) title.text(currentSettings.title); else modal.contentWrapper.prepend('

'+currentSettings.title+'

'); } // Init the nyroModal div by settings the CSS elements and hide needed elements function initModal() { debug('initModal'); if (!modal.full) { if (currentSettings.debug) setCurrentSettings({color: 'white'}, 'cssOpt', 'bg'); var full = { zIndex: currentSettings.zIndexStart, position: 'fixed', top: 0, left: 0, width: '100%', height: '100%' }; var contain = body; var iframeHideIE = ''; if (currentSettings.blocker) { modal.blocker = contain = $(currentSettings.blocker); var pos = modal.blocker.offset(); var w = modal.blocker.outerWidth(); var h = modal.blocker.outerHeight(); if (isIE6) { setCurrentSettings({ height: '100%', width: '100%', top: 0, left: 0 }, 'cssOpt', 'bg'); } modal.blockerVars = { top: pos.top, left: pos.left, width: w, height: h }; var plusTop = (/msie/.test(userAgent) ?0:getCurCSS(body.get(0), 'borderTopWidth')); var plusLeft = (/msie/.test(userAgent) ?0:getCurCSS(body.get(0), 'borderLeftWidth')); full = { position: 'absolute', top: pos.top + plusTop, left: pos.left + plusLeft, width: w, height: h }; } else if (isIE6) { body.css({ marginLeft: 0, marginRight: 0 }); var w = body.width(); var h = $(window).height()+'px'; if ($(window).height() >= body.outerHeight()) { h = body.outerHeight()+'px'; } else w+= 20; w += 'px'; body.css({ width: w, height: h, position: 'static', overflow: 'hidden' }); $('html').css({overflow: 'hidden'}); setCurrentSettings({ cssOpt: { bg: { position: 'absolute', zIndex: currentSettings.zIndexStart+1, height: '110%', width: '110%', top: currentSettings.marginScrollTop+'px', left: currentSettings.marginScrollLeft+'px' }, wrapper: { zIndex: currentSettings.zIndexStart+2 }, loading: { zIndex: currentSettings.zIndexStart+3 } } }); iframeHideIE = $('') .css($.extend({}, currentSettings.cssOpt.bg, { opacity: 0, zIndex: 50, border: 'none' })); } contain.append($('
').hide()); modal.full = $('#nyroModalFull') .css(full) .show(); modal.bg = $('#nyroModalBg') .css($.extend({ backgroundColor: currentSettings.bgColor }, currentSettings.cssOpt.bg)) .before(iframeHideIE); modal.bg.bind('click.nyroModal', clickBg); modal.loading = $('#nyroModalLoading') .css(currentSettings.cssOpt.loading) .hide(); modal.contentWrapper = $('#nyroModalWrapper') .css(currentSettings.cssOpt.wrapper) .hide(); modal.content = $('#nyroModalContent'); modal.tmp = $('#nyrModalTmp').hide(); // To stop the mousewheel if the the plugin is available if ($.isFunction($.fn.mousewheel)) { modal.content.mousewheel(function(e, d) { var elt = modal.content.get(0); if ((d > 0 && elt.scrollTop == 0) || (d < 0 && elt.scrollHeight - elt.scrollTop == elt.clientHeight)) { e.preventDefault(); e.stopPropagation(); } }); } $(document).bind('keydown.nyroModal', keyHandler); modal.content.css({width: 'auto', height: 'auto'}); modal.contentWrapper.css({width: 'auto', height: 'auto'}); if (!currentSettings.blocker && currentSettings.windowResize) { $(window).bind('resize.nyroModal', function() { window.clearTimeout(windowResizeTimeout); windowResizeTimeout = window.setTimeout(windowResizeHandler, 200); }); } } } function windowResizeHandler() { $.nyroModalSettings(initSettingsSize); } // Show the modal (ie: the background and then the loading if needed or the content directly) function showModal() { debug('showModal'); if (!modal.ready) { initModal(); modal.anim = true; currentSettings.showBackground(modal, currentSettings, endBackground); } else { modal.anim = true; modal.transition = true; currentSettings.showTransition(modal, currentSettings, function(){endHideContent();modal.anim=false;showContentOrLoading();}); } } // Called when user click on background function clickBg(e) { if (!currentSettings.modal) removeModal(); } // Used for the escape key or the arrow in the gallery type function keyHandler(e) { if (e.keyCode == 27) { if (!currentSettings.modal) removeModal(); } else if (currentSettings.gallery && modal.ready && modal.dataReady && !modal.anim && !modal.transition) { if (e.keyCode == 39 || e.keyCode == 40) { e.preventDefault(); $.nyroModalNext(); return false; } else if (e.keyCode == 37 || e.keyCode == 38) { e.preventDefault(); $.nyroModalPrev(); return false; } } } // Determine the filetype regarding the link DOM element function fileType() { var from = currentSettings.from; var url; if (from && from.nodeName) { var jFrom = $(from); url = jFrom.attr(from.nodeName.toLowerCase() == 'form' ? 'action' : 'href'); if (!url) url = location.href.substring(window.location.host.length+7); currentSettings.url = url; if (jFrom.attr('rev') == 'modal') currentSettings.modal = true; currentSettings.title = jFrom.attr('title'); if (from && from.rel && from.rel.toLowerCase() != 'nofollow') { var indexSpace = from.rel.indexOf(' '); currentSettings.gallery = indexSpace > 0 ? from.rel.substr(0, indexSpace) : from.rel; } var imgType = imageType(url, from); if (imgType) return imgType; if (isSwf(url)) return 'swf'; var iframe = false; if (from.target && from.target.toLowerCase() == '_blank' || (from.hostname && from.hostname.replace(/:\d*$/,'') != window.location.hostname.replace(/:\d*$/,''))) { iframe = true; } if (from.nodeName.toLowerCase() == 'form') { if (iframe) return 'iframeForm'; setCurrentSettings(extractUrlSel(url)); if (jFrom.attr('enctype') == 'multipart/form-data') return 'formData'; return 'form'; } if (iframe) return 'iframe'; } else { url = currentSettings.url; if (!currentSettings.content) currentSettings.from = true; if (!url) return null; if (isSwf(url)) return 'swf'; var reg1 = new RegExp("^http://|https://", "g"); if (url.match(reg1)) return 'iframe'; } var imgType = imageType(url, from); if (imgType) return imgType; var tmp = extractUrlSel(url); setCurrentSettings(tmp); if (!tmp.url) return tmp.selector; } function imageType(url, from) { var image = new RegExp(currentSettings.regexImg, 'i'); if (image.test(url)) { return 'image'; } } function isSwf(url) { var swf = new RegExp('[^\.]\.(swf)\s*$', 'i'); return swf.test(url); } function extractUrlSel(url) { var ret = { url: null, selector: null }; if (url) { var hash = getHash(url); var hashLoc = getHash(window.location.href); var curLoc = window.location.href.substring(0, window.location.href.length - hashLoc.length); var req = url.substring(0, url.length - hash.length); if (req == curLoc || req == $('base').attr('href')) { ret.selector = hash; } else { ret.url = req; ret.selector = hash; } } return ret; } // Called when the content cannot be loaded or tiemout reached function loadingError() { debug('loadingError'); modal.error = true; if (!modal.ready) return; if ($.isFunction(currentSettings.handleError)) currentSettings.handleError(modal, currentSettings); modal.loading .addClass(currentSettings.errorClass) .html(currentSettings.contentError); $(currentSettings.closeSelector, modal.loading) .unbind('click.nyroModal') .bind('click.nyroModal', removeModal); setMarginLoading(); modal.loading .css({ marginTop: currentSettings.marginTopLoading+'px', marginLeft: currentSettings.marginLeftLoading+'px' }); } // Put the content from modal.tmp to modal.content function fillContent() { debug('fillContent'); if (!modal.tmp.html()) return; modal.content.html(modal.tmp.contents()); modal.tmp.empty(); wrapContent(); if (currentSettings.type == 'iframeForm') { $(currentSettings.from) .attr('target', 'nyroModalIframe') .data('nyroModalprocessing', 1) .submit() .attr('target', '_blank') .removeData('nyroModalprocessing'); } if (!currentSettings.modal) modal.wrapper.prepend(currentSettings.closeButton); if ($.isFunction(currentSettings.endFillContent)) currentSettings.endFillContent(modal, currentSettings); modal.content.append(modal.scripts); $(currentSettings.closeSelector, modal.contentWrapper) .unbind('click.nyroModal') .bind('click.nyroModal', removeModal); $(currentSettings.openSelector, modal.contentWrapper).nyroModal(getCurrentSettingsNew()); } // Get the current settings to be used in new links function getCurrentSettingsNew() { return callingSettings; var currentSettingsNew = $.extend(true, {}, currentSettings); if (resized.width) currentSettingsNew.width = null; else currentSettingsNew.width = initSettingsSize.width; if (resized.height) currentSettingsNew.height = null; else currentSettingsNew.height = initSettingsSize.height; currentSettingsNew.cssOpt.content.overflow = 'auto'; return currentSettingsNew; } // Wrap the content and update the modal size if needed function wrapContent() { debug('wrapContent'); var wrap = $(currentSettings.wrap[currentSettings.type]); modal.content.append(wrap.children().remove()); modal.contentWrapper.wrapInner(wrap); if (currentSettings.gallery) { // Set the action for the next and prev button (or remove them) modal.content.append(currentSettings.galleryLinks); gallery.links = $('[rel="'+currentSettings.gallery+'"], [rel^="'+currentSettings.gallery+' "]'); gallery.index = gallery.links.index(currentSettings.from); if (currentSettings.galleryCounts && $.isFunction(currentSettings.galleryCounts)) currentSettings.galleryCounts(gallery.index + 1, gallery.links.length, modal, currentSettings); var currentSettingsNew = getCurrentSettingsNew(); var linkPrev = getGalleryLink(-1); if (linkPrev) { var prev = $('.nyroModalPrev', modal.contentWrapper) .attr('href', linkPrev.attr('href')) .click(function(e) { e.preventDefault(); $.nyroModalPrev(); return false; }); if (isIE6 && currentSettings.type == 'swf') { prev.before($('').css({ position: prev.css('position'), top: prev.css('top'), left: prev.css('left'), width: prev.width(), height: prev.height(), opacity: 0, border: 'none' })); } } else { $('.nyroModalPrev', modal.contentWrapper).remove(); } var linkNext = getGalleryLink(1); if (linkNext) { var next = $('.nyroModalNext', modal.contentWrapper) .attr('href', linkNext.attr('href')) .click(function(e) { e.preventDefault(); $.nyroModalNext(); return false; }); if (isIE6 && currentSettings.type == 'swf') { next.before($('') .css($.extend({}, { position: next.css('position'), top: next.css('top'), left: next.css('left'), width: next.width(), height: next.height(), opacity: 0, border: 'none' }))); } } else { $('.nyroModalNext', modal.contentWrapper).remove(); } } calculateSize(); } function getGalleryLink(dir) { if (currentSettings.gallery) { if (!currentSettings.ltr) dir *= -1; var index = gallery.index + dir; if (index >= 0 && index < gallery.links.length) return gallery.links.eq(index); else if (currentSettings.galleryLoop) { if (index < 0) return gallery.links.eq(gallery.links.length-1); else return gallery.links.eq(0); } } return false; } // Calculate the size for the contentWrapper function calculateSize(resizing) { debug('calculateSize'); modal.wrapper = modal.contentWrapper.children('div:first'); resized.width = false; resized.height = false; if (false && !currentSettings.windowResizing) { initSettingsSize.width = currentSettings.width; initSettingsSize.height = currentSettings.height; } if (currentSettings.autoSizable && (!currentSettings.width || !currentSettings.height)) { modal.contentWrapper .css({ opacity: 0, width: 'auto', height: 'auto' }) .show(); var tmp = { width: 'auto', height: 'auto' }; if (currentSettings.width) { tmp.width = currentSettings.width; } else if (currentSettings.type == 'iframe') { tmp.width = currentSettings.minWidth; } if (currentSettings.height) { tmp.height = currentSettings.height; } else if (currentSettings.type == 'iframe') { tmp.height = currentSettings.minHeight; } modal.content.css(tmp); if (!currentSettings.width) { currentSettings.width = modal.content.outerWidth(true); resized.width = true; } if (!currentSettings.height) { currentSettings.height = modal.content.outerHeight(true); resized.height = true; } modal.contentWrapper.css({opacity: 1}); if (!resizing) modal.contentWrapper.hide(); } if (currentSettings.type != 'image' && currentSettings.type != 'swf') { currentSettings.width = Math.max(currentSettings.width, currentSettings.minWidth); currentSettings.height = Math.max(currentSettings.height, currentSettings.minHeight); } var outerWrapper = getOuter(modal.contentWrapper); var outerWrapper2 = getOuter(modal.wrapper); var outerContent = getOuter(modal.content); var tmp = { content: { width: currentSettings.width, height: currentSettings.height }, wrapper2: { width: currentSettings.width + outerContent.w.total, height: currentSettings.height + outerContent.h.total }, wrapper: { width: currentSettings.width + outerContent.w.total + outerWrapper2.w.total, height: currentSettings.height + outerContent.h.total + outerWrapper2.h.total } }; if (currentSettings.resizable) { var maxHeight = modal.blockerVars? modal.blockerVars.height : $(window).height() - outerWrapper.h.border - (tmp.wrapper.height - currentSettings.height); var maxWidth = modal.blockerVars? modal.blockerVars.width : $(window).width() - outerWrapper.w.border - (tmp.wrapper.width - currentSettings.width); maxHeight-= currentSettings.padding*2; maxWidth-= currentSettings.padding*2; if (tmp.content.height > maxHeight || tmp.content.width > maxWidth) { // We're gonna resize the modal as it will goes outside the view port if (currentSettings.type == 'image' || currentSettings.type == 'swf') { // An image is resized proportionnaly var useW = currentSettings.imgWidth?currentSettings.imgWidth : currentSettings.width; var useH = currentSettings.imgHeight?currentSettings.imgHeight : currentSettings.height; var diffW = tmp.content.width - useW; var diffH = tmp.content.height - useH; if (diffH < 0) diffH = 0; if (diffW < 0) diffW = 0; var calcH = maxHeight - diffH; var calcW = maxWidth - diffW; var ratio = Math.min(calcH/useH, calcW/useW); calcW = Math.floor(useW*ratio); calcH = Math.floor(useH*ratio); tmp.content.height = calcH + diffH; tmp.content.width = calcW + diffW; } else { // For an HTML content, we simply decrease the size tmp.content.height = Math.min(tmp.content.height, maxHeight); tmp.content.width = Math.min(tmp.content.width, maxWidth); } tmp.wrapper2 = { width: tmp.content.width + outerContent.w.total, height: tmp.content.height + outerContent.h.total }; tmp.wrapper = { width: tmp.content.width + outerContent.w.total + outerWrapper2.w.total, height: tmp.content.height + outerContent.h.total + outerWrapper2.h.total }; } } if (currentSettings.type == 'swf') { $('object, embed', modal.content) .attr('width', tmp.content.width) .attr('height', tmp.content.height); } else if (currentSettings.type == 'image') { $('img', modal.content).css({ width: tmp.content.width, height: tmp.content.height }); } modal.content.css($.extend({}, tmp.content, currentSettings.cssOpt.content)); modal.wrapper.css($.extend({}, tmp.wrapper2, currentSettings.cssOpt.wrapper2)); if (!resizing) modal.contentWrapper.css($.extend({}, tmp.wrapper, currentSettings.cssOpt.wrapper)); if (currentSettings.type == 'image' && currentSettings.addImageDivTitle) { // Adding the title for the image $('img', modal.content).removeAttr('alt'); var divTitle = $('div', modal.content); if (currentSettings.title != currentSettings.defaultImgAlt && currentSettings.title) { if (divTitle.length == 0) { divTitle = $('
'+currentSettings.title+'
'); modal.content.append(divTitle); } if (currentSettings.setWidthImgTitle) { var outerDivTitle = getOuter(divTitle); divTitle.css({width: (tmp.content.width + outerContent.w.padding - outerDivTitle.w.total)+'px'}); } } else if (divTitle.length = 0) { divTitle.remove(); } } if (currentSettings.title) setTitle(); tmp.wrapper.borderW = outerWrapper.w.border; tmp.wrapper.borderH = outerWrapper.h.border; setCurrentSettings(tmp.wrapper); setMargin(); } function removeModal(e) { debug('removeModal'); if (e) e.preventDefault(); if (modal.full && modal.ready) { $(document).unbind('keydown.nyroModal'); if (!currentSettings.blocker) $(window).unbind('resize.nyroModal'); modal.ready = false; modal.anim = true; modal.closing = true; if (modal.loadingShown || modal.transition) { currentSettings.hideLoading(modal, currentSettings, function() { modal.loading.hide(); modal.loadingShown = false; modal.transition = false; currentSettings.hideBackground(modal, currentSettings, endRemove); }); } else { if (fixFF) modal.content.css({position: ''}); // Fix Issue #10, remove the attribute modal.wrapper.css({overflow: 'hidden'}); // Used to fix a visual issue when hiding modal.content.css({overflow: 'hidden'}); // Used to fix a visual issue when hiding $('iframe', modal.content).hide(); // Fix issue 359 if ($.isFunction(currentSettings.beforeHideContent)) { currentSettings.beforeHideContent(modal, currentSettings, function() { currentSettings.hideContent(modal, currentSettings, function() { endHideContent(); currentSettings.hideBackground(modal, currentSettings, endRemove); }); }); } else { currentSettings.hideContent(modal, currentSettings, function() { endHideContent(); currentSettings.hideBackground(modal, currentSettings, endRemove); }); } } } if (e) return false; } function showContentOrLoading() { debug('showContentOrLoading'); if (modal.ready && !modal.anim) { if (modal.dataReady) { if (modal.tmp.html()) { modal.anim = true; if (modal.transition) { fillContent(); modal.animContent = true; currentSettings.hideTransition(modal, currentSettings, function() { modal.loading.hide(); modal.transition = false; modal.loadingShown = false; endShowContent(); }); } else { currentSettings.hideLoading(modal, currentSettings, function() { modal.loading.hide(); modal.loadingShown = false; fillContent(); setMarginLoading(); setMargin(); modal.animContent = true; currentSettings.showContent(modal, currentSettings, endShowContent); }); } } } else if (!modal.loadingShown && !modal.transition) { modal.anim = true; modal.loadingShown = true; if (modal.error) loadingError(); else modal.loading.html(currentSettings.contentLoading); $(currentSettings.closeSelector, modal.loading) .unbind('click.nyroModal') .bind('click.nyroModal', removeModal); setMarginLoading(); currentSettings.showLoading(modal, currentSettings, function(){modal.anim=false;showContentOrLoading();}); } } } // ------------------------------------------------------- // Private Data Loaded callback // ------------------------------------------------------- function ajaxLoaded(data) { debug('AjaxLoaded: '+this.url); if (currentSettings.selector) { var tmp = {}; var i = 0; // Looking for script to store them data = data .replace(/\r\n/gi,'nyroModalLN') .replace(//gi, function(x) { tmp[i] = x; return ''; }); data = $('
'+data+'
').find(currentSettings.selector).html() .replace(/
\n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += "
" + genlang(31, false) + "" + genlang(34, true) + "" + genlang(32, false) + "" + genlang(33, true) + "" + genlang(35, true) + "" + genlang(36, true) + "" + genlang(37, true) + "
  " + genlang(38, false) + "
\n"; $("#filesystem").append(html); filesystemTable = $("#filesystemTable").dataTable({ "bPaginate": false, "bLengthChange": false, "bFilter": false, "bSort": true, "bInfo": false, "bProcessing": true, "bAutoWidth": false, "bStateSave": true, "aoColumns": [{ "sType": 'span-string', "sWidth": "100px" }, { "sType": 'span-string', "sWidth": "50px" }, { "sType": 'span-string', "sWidth": "200px" }, { "sType": 'span-number' }, { "sType": 'span-number', "sWidth": "80px", "sClass": "right" }, { "sType": 'span-number', "sWidth": "80px", "sClass": "right" }, { "sType": 'span-number', "sWidth": "80px", "sClass": "right" }] }); } /** * fill all errors from the xml in the error div element in the document and show the error icon * @param {jQuery} xml phpSysInfo-XML */ function populateErrors(xml) { var values = false; $("Errors Error", xml).each(function getError(id) { // $("#errorlist").append("" + $(this).attr("Function") + "

" + $(this).text() + "

"); $("#errorlist").append("" + $(this).attr("Function") + "

" + $(this).attr("Message") + "

"); values = true; }); if (values) { $("#warn").css("display", "inline"); $("#loadwarn").css("display", "inline"); } } /** * show the page * @param {jQuery} xml phpSysInfo-XML */ function displayPage(xml) { var versioni = ""; $("#loader").hide(); $("#container").fadeIn("slow"); versioni = $("Generation", xml).attr("version").toString(); $("#version").html(versioni); } /** * format seconds to a better readable statement with days, hours and minutes * @param {Number} sec seconds that should be formatted * @return {String} html string with no breaking spaces and translation statements */ function formatUptime(sec) { var txt = "", intMin = 0, intHours = 0, intDays = 0; intMin = sec / 60; intHours = intMin / 60; intDays = Math.floor(intHours / 24); intHours = Math.floor(intHours - (intDays * 24)); intMin = Math.floor(intMin - (intDays * 60 * 24) - (intHours * 60)); if (intDays) { txt += intDays.toString() + " " + genlang(48, false) + " "; } if (intHours) { txt += intHours.toString() + " " + genlang(49, false) + " "; } return txt + intMin.toString() + " " + genlang(50, false); } /** * format a given MHz value to a better readable statement with the right suffix * @param {Number} mhertz mhertz value that should be formatted * @return {String} html string with no breaking spaces and translation statements */ function formatHertz(mhertz) { if (mhertz && mhertz < 1000) { return mhertz.toString() + " " + genlang(92, true); } else { if (mhertz && mhertz >= 1000) { return round(mhertz / 1000, 2) + " " + genlang(93, true); } else { return ""; } } } /** * format the byte values into a user friendly value with the corespondenting unit expression
support is included * for binary and decimal output
user can specify a constant format for all byte outputs or the output is formated * automatically so that every value can be read in a user friendly way * @param {Number} bytes value that should be converted in the corespondenting format, which is specified in the phpsysinfo.ini * @param {jQuery} xml phpSysInfo-XML * @return {String} string of the converted bytes with the translated unit expression */ function formatBytes(bytes, xml) { var byteFormat = "", show = ""; $("Options", xml).each(function getByteFormat(id) { byteFormat = $(this).attr("byteFormat"); }); switch (byteFormat.toLowerCase()) { case "pib": show += round(bytes / Math.pow(1024, 5), 2); show += " " + genlang(90, true); break; case "tib": show += round(bytes / Math.pow(1024, 4), 2); show += " " + genlang(86, true); break; case "gib": show += round(bytes / Math.pow(1024, 3), 2); show += " " + genlang(87, true); break; case "mib": show += round(bytes / Math.pow(1024, 2), 2); show += " " + genlang(88, true); break; case "kib": show += round(bytes / Math.pow(1024, 1), 2); show += " " + genlang(89, true); break; case "pb": show += round(bytes / Math.pow(1000, 5), 2); show += " " + genlang(91, true); break; case "tb": show += round(bytes / Math.pow(1000, 4), 2); show += " " + genlang(85, true); break; case "gb": show += round(bytes / Math.pow(1000, 3), 2); show += " " + genlang(41, true); break; case "mb": show += round(bytes / Math.pow(1000, 2), 2); show += " " + genlang(40, true); break; case "kb": show += round(bytes / Math.pow(1000, 1), 2); show += " " + genlang(39, true); break; case "b": show += bytes; show += " " + genlang(96, true); break; case "auto_decimal": if (bytes > Math.pow(1000, 5)) { show += round(bytes / Math.pow(1000, 5), 2); show += " " + genlang(91, true); } else { if (bytes > Math.pow(1000, 4)) { show += round(bytes / Math.pow(1000, 4), 2); show += " " + genlang(85, true); } else { if (bytes > Math.pow(1000, 3)) { show += round(bytes / Math.pow(1000, 3), 2); show += " " + genlang(41, true); } else { if (bytes > Math.pow(1000, 2)) { show += round(bytes / Math.pow(1000, 2), 2); show += " " + genlang(40, true); } else { if (bytes > Math.pow(1000, 1)) { show += round(bytes / Math.pow(1000, 1), 2); show += " " + genlang(39, true); } else { show += bytes; show += " " + genlang(96, true); } } } } } break; default: if (bytes > Math.pow(1024, 5)) { show += round(bytes / Math.pow(1024, 5), 2); show += " " + genlang(90, true); } else { if (bytes > Math.pow(1024, 4)) { show += round(bytes / Math.pow(1024, 4), 2); show += " " + genlang(86, true); } else { if (bytes > Math.pow(1024, 3)) { show += round(bytes / Math.pow(1024, 3), 2); show += " " + genlang(87, true); } else { if (bytes > Math.pow(1024, 2)) { show += round(bytes / Math.pow(1024, 2), 2); show += " " + genlang(88, true); } else { if (bytes > Math.pow(1024, 1)) { show += round(bytes / Math.pow(1024, 1), 2); show += " " + genlang(89, true); } else { show += bytes; show += " " + genlang(96, true); } } } } } } return show; } /** * format a celcius temperature to fahrenheit and also append the right suffix * @param {String} degreeC temperature in celvius * @param {jQuery} xml phpSysInfo-XML * @return {String} html string with no breaking spaces and translation statements */ function formatTemp(degreeC, xml) { var tempFormat = "", degree = 0; $("Options", xml).each(function getOptions(id) { tempFormat = $(this).attr("tempFormat").toString().toLowerCase(); }); degree = parseFloat(degreeC); if (isNaN(degreeC)) { return "---"; } else { switch (tempFormat) { case "f": return round((((9 * degree) / 5) + 32), 1) + " " + genlang(61, true); case "c": return round(degree, 1) + " " + genlang(60, true); case "c-f": return round(degree, 1) + " " + genlang(60, true) + "
(" + round((((9 * degree) / 5) + 32), 1) + " " + genlang(61, true) + ")"; case "f-c": return round((((9 * degree) / 5) + 32), 1) + " " + genlang(61, true) + "
(" + round(degree, 1) + " " + genlang(60, true) + ")"; } } } /** * create a visual HTML bar from a given size, the layout of that bar can be costumized through the bar css-class * @param {Number} size barclass * @return {String} HTML string which contains the full layout of the bar */ function createBar(size, barclass) { if (barclass === undefined) { barclass = "bar"; } return "
 
 " + size + "%"; } /** * (re)fill the vitals block with the values from the given xml * @param {jQuery} xml phpSysInfo-XML */ function refreshVitals(xml) { var hostname = "", ip = "", kernel = "", distro = "", icon = "", uptime = "", users = 0, loadavg = ""; var processes = 0, prunning = 0, psleeping = 0, pstopped = 0, pzombie = 0, pwaiting = 0, pother = 0; var syslang = "", codepage = ""; var lastboot = 0; var timestamp = parseInt($("Generation", xml).attr("timestamp"), 10)*1000; //server time var not_first = false; if (isNaN(timestamp)) timestamp = Number(new Date()); //client time $("Vitals", xml).each(function getVitals(id) { hostname = $(this).attr("Hostname"); ip = $(this).attr("IPAddr"); kernel = $(this).attr("Kernel"); distro = $(this).attr("Distro"); icon = $(this).attr("Distroicon"); uptime = formatUptime(parseInt($(this).attr("Uptime"), 10)); lastboot = new Date(timestamp - (parseInt($(this).attr("Uptime"), 10)*1000)); users = parseInt($(this).attr("Users"), 10); loadavg = $(this).attr("LoadAvg"); if ($(this).attr("CPULoad") !== undefined) { loadavg = loadavg + "
" + createBar(parseInt($(this).attr("CPULoad"), 10)); } if ($(this).attr("SysLang") !== undefined) { syslang = $(this).attr("SysLang"); document.getElementById("s_syslang_tr").style.display=''; } if ($(this).attr("CodePage") !== undefined) { codepage = $(this).attr("CodePage"); if ($(this).attr("SysLang") !== undefined) { document.getElementById("s_codepage_tr1").style.display=''; } else { document.getElementById("s_codepage_tr2").style.display=''; } } //processes if ($(this).attr("Processes") !== undefined) { processes = parseInt($(this).attr("Processes"), 10); if ((($(this).attr("CodePage") !== undefined) && ($(this).attr("SysLang") == undefined)) || (($(this).attr("CodePage") == undefined) && ($(this).attr("SysLang") !== undefined))) { document.getElementById("s_processes_tr1").style.display=''; } else { document.getElementById("s_processes_tr2").style.display=''; } } if ($(this).attr("ProcessesRunning") !== undefined) { prunning = parseInt($(this).attr("ProcessesRunning"), 10); } if ($(this).attr("ProcessesSleeping") !== undefined) { psleeping = parseInt($(this).attr("ProcessesSleeping"), 10); } if ($(this).attr("ProcessesStopped") !== undefined) { pstopped = parseInt($(this).attr("ProcessesStopped"), 10); } if ($(this).attr("ProcessesZombie") !== undefined) { pzombie = parseInt($(this).attr("ProcessesZombie"), 10); } if ($(this).attr("ProcessesWaiting") !== undefined) { pwaiting = parseInt($(this).attr("ProcessesWaiting"), 10); } if ($(this).attr("ProcessesOther") !== undefined) { pother = parseInt($(this).attr("ProcessesOther"), 10); } document.title = "System information: " + hostname + " (" + ip + ")"; $("#s_hostname_title").html(hostname); $("#s_ip_title").html(ip); $("#s_hostname").html(hostname); $("#s_ip").html(ip); $("#s_kernel").html(kernel); $("#s_distro").html("Icon " + distro); //onload IE6 PNG fix $("#s_uptime").html(uptime); if (typeof(lastboot.toUTCString)==="function") { $("#s_lastboot").html(lastboot.toUTCString()); //toUTCstring() or toLocaleString() } else { //deprecated $("#s_lastboot").html(lastboot.toGMTString()); //toGMTString() or toLocaleString() } $("#s_users").html(users); $("#s_loadavg").html(loadavg); $("#s_syslang").html(syslang); $("#s_codepage_1").html(codepage); $("#s_codepage_2").html(codepage); $("#s_processes_1").html(processes); $("#s_processes_2").html(processes); if (prunning || psleeping || pstopped || pzombie || pwaiting || pother) { $("#s_processes_1").append(" ("); $("#s_processes_2").append(" ("); var typelist = {running:111,sleeping:112,stopped:113,zombie:114,waiting:115,other:116}; for (var proc_type in typelist) { if (eval("p" + proc_type)) { if (not_first) { $("#s_processes_1").append(", "); $("#s_processes_2").append(", "); } $("#s_processes_1").append(eval("p" + proc_type) + " " + genlang(typelist[proc_type], true)); $("#s_processes_2").append(eval("p" + proc_type) + " " + genlang(typelist[proc_type], true)); not_first = true; } } $("#s_processes_1").append(") "); $("#s_processes_2").append(") "); } }); } /** * build the cpu information as table rows * @param {jQuery} xml phpSysInfo-XML * @param {Array} tree array that holds the positions for treetable plugin * @param {Number} rootposition position of the parent element * @param {Array} collapsed array that holds all collapsed elements hwne opening page */ function fillCpu(xml, tree, rootposition, collapsed) { var cpucount = 0, html = ""; $("Hardware CPU CpuCore", xml).each(function getCpuCore(cpuCoreId) { var model = "", speed = 0, bus = 0, cache = 0, bogo = 0, temp = 0, load = 0, speedmax = 0, speedmin = 0, cpucoreposition = 0, virt = ""; cpucount += 1; model = $(this).attr("Model"); speed = parseInt($(this).attr("CpuSpeed"), 10); speedmax = parseInt($(this).attr("CpuSpeedMax"), 10); speedmin = parseInt($(this).attr("CpuSpeedMin"), 10); cache = parseInt($(this).attr("Cache"), 10); virt = $(this).attr("Virt"); bus = parseInt($(this).attr("BusSpeed"), 10); temp = parseInt($(this).attr("Cputemp"), 10); bogo = parseInt($(this).attr("Bogomips"), 10); load = parseInt($(this).attr("Load"), 10); if (!showCPUListExpanded) { collapsed.push(rootposition); } html += "" + model + "\n"; cpucoreposition = tree.push(rootposition); if (!showCPUInfoExpanded) { collapsed.push(cpucoreposition); } if (!isNaN(speed)) { html += "" + genlang(13, true) + ":" + formatHertz(speed) + "\n"; tree.push(cpucoreposition); } if (!isNaN(speedmax)) { html += "" + genlang(100, true) + ":" + formatHertz(speedmax) + "\n"; tree.push(cpucoreposition); } if (!isNaN(speedmin)) { html += "" + genlang(101, true) + ":" + formatHertz(speedmin) + "\n"; tree.push(cpucoreposition); } if (!isNaN(cache)) { html += "" + genlang(15, true) + ":" + formatBytes(cache) + "\n"; tree.push(cpucoreposition); } if (virt != undefined) { html += "" + genlang(94, true) + ":" + virt + "\n"; tree.push(cpucoreposition); } if (!isNaN(bus)) { html += "" + genlang(14, true) + ":" + formatHertz(bus) + "\n"; tree.push(cpucoreposition); } if (!isNaN(bogo)) { html += "" + genlang(16, true) + ":" + bogo.toString() + "\n"; tree.push(cpucoreposition); } if (!isNaN(temp)) { html += "" + genlang(51, true) + ":" + formatTemp(temp, xml) + "\n"; tree.push(cpucoreposition); } if (!isNaN(load)) { html += "" + genlang(9, true) + ":" + createBar(load) + "\n"; tree.push(cpucoreposition); } }); if (cpucount === 0) { html += "" + genlang(42, true) + "\n"; tree.push(rootposition); } return html; } function countCpu(xml) { var cpucount = 0; $("Hardware CPU CpuCore", xml).each(function getCpuCore(cpuCoreId) { cpucount += 1; }); return cpucount; } /** * build rows for a treetable out of the hardwaredevices * @param {jQuery} xml phpSysInfo-XML * @param {String} type type of the hardware device * @param {Array} tree array that holds the positions for treetable plugin * @param {Number} rootposition position of the parent element */ function fillHWDevice(xml, type, tree, rootposition) { var devicecount = 0, html = ""; $("Hardware " + type + " Device", xml).each(function getPciDevice(deviceId) { var name = "", count = 0; devicecount += 1; name = $(this).attr("Name"); count = parseInt($(this).attr("Count"), 10); if (!isNaN(count) && count > 1) { name = "(" + count + "x) " + name; } html += "" + name + "\n"; tree.push(rootposition); }); if (devicecount === 0) { html += "" + genlang(42, true) + "\n"; tree.push(rootposition); } return html; } function countHWDevice(xml, type) { var devicecount = 0; $("Hardware " + type + " Device", xml).each(function getPciDevice(deviceId) { devicecount += 1; }); return devicecount; } /** * (re)fill the hardware block with the values from the given xml * @param {jQuery} xml phpSysInfo-XML */ function refreshHardware(xml) { var html = "", tree = [], closed = [], index = 0, machine = ""; $("#hardware").empty(); html += "

" + genlang(10, false) + "

\n"; html += " \n"; html += " \n"; $("Hardware", xml).each(function getMachine(id) { machine = $(this).attr("Name"); }); if ((machine !== undefined) && (machine != "")) { html += " \n"; html += "\n"; tree.push(tree.push(0)); } if (countCpu(xml)) { html += " \n"; html += fillCpu(xml, tree, tree.push(0), closed); } if (countHWDevice(xml, 'PCI')) { html += " \n"; index = tree.push(0); closed.push(index); html += fillHWDevice(xml, 'PCI', tree, index); } if (countHWDevice(xml, 'IDE')) { html += " \n"; index = tree.push(0); closed.push(index); html += fillHWDevice(xml, 'IDE', tree, index); } if (countHWDevice(xml, 'SCSI')) { html += " \n"; index = tree.push(0); closed.push(index); html += fillHWDevice(xml, 'SCSI', tree, index); } if (countHWDevice(xml, 'USB')) { html += " \n"; index = tree.push(0); closed.push(index); html += fillHWDevice(xml, 'USB', tree, index); } if (countHWDevice(xml, 'TB')) { html += " \n"; index = tree.push(0); closed.push(index); html += fillHWDevice(xml, 'TB', tree, index); } if (countHWDevice(xml, 'I2C')) { html += " \n"; index = tree.push(0); closed.push(index); html += fillHWDevice(xml, 'I2C', tree, index); } html += " \n"; html += "
" + genlang(107, false) + "
" + machine + "
" + genlang(11, false) + "
" + genlang(17, false) + "
" + genlang(18, false) + "
" + genlang(19, false) + "
" + genlang(20, false) + "
" + genlang(117, false) + "
" + genlang(118, false) + "
\n"; $("#hardware").append(html); $("#HardwareTree").jqTreeTable(tree, { openImg: "./gfx/treeTable/tv-collapsable.gif", shutImg: "./gfx/treeTable/tv-expandable.gif", leafImg: "./gfx/treeTable/tv-item.gif", lastOpenImg: "./gfx/treeTable/tv-collapsable-last.gif", lastShutImg: "./gfx/treeTable/tv-expandable-last.gif", lastLeafImg: "./gfx/treeTable/tv-item-last.gif", vertLineImg: "./gfx/treeTable/vertline.gif", blankImg: "./gfx/treeTable/blank.gif", collapse: closed, column: 0, striped: true, highlight: false, state: false }); } /** *(re)fill the network block with the values from the given xml * @param {jQuery} xml phpSysInfo-XML */ function refreshNetwork(xml) { var tree = [], closed = [], html0= "", html1= "" ,html = "", isinfo = false; $("#network").empty(); html0 += "

" + genlang(21, false) + "

\n"; html1 += " \n"; html1 += " \n"; html1 += " " + genlang(22, true) + "\n"; html1 += " " + genlang(23, true) + "\n"; html1 += " " + genlang(24, true) + "\n"; html1 += " " + genlang(25, true) + "\n"; html1 += " \n"; html1 += " \n"; $("Network NetDevice", xml).each(function getDevice(id) { var name = "", rx = 0, tx = 0, er = 0, dr = 0, info = "", networkindex = 0; name = $(this).attr("Name"); rx = parseInt($(this).attr("RxBytes"), 10); tx = parseInt($(this).attr("TxBytes"), 10); er = parseInt($(this).attr("Err"), 10); dr = parseInt($(this).attr("Drops"), 10); html +="" + name + "" + formatBytes(rx, xml) + "" + formatBytes(tx, xml) + "" + er.toString() + "/" + dr.toString() + ""; networkindex = tree.push(0); info = $(this).attr("Info"); if ( (info !== undefined) && (info != "") ) { var i = 0, infos = info.replace(/:/g, ":").split(";"); /* split long addresses */ isinfo = true; for(i = 0; i < infos.length; i++){ html +="" + infos[i] + ""; tree.push(networkindex); } if (!showNetworkInfosExpanded) { closed.push(networkindex); } } }); html += "\n"; html += "\n"; if (isinfo) { html0 += "\n"; html1 += " \n"; } else { html0 += "
\n"; html1 += " \n"; } $("#network").append(html0+html1+html); if (isinfo) $("#NetworkTree").jqTreeTable(tree, { openImg: "./gfx/treeTable/tv-collapsable.gif", shutImg: "./gfx/treeTable/tv-expandable.gif", leafImg: "./gfx/treeTable/tv-item.gif", lastOpenImg: "./gfx/treeTable/tv-collapsable-last.gif", lastShutImg: "./gfx/treeTable/tv-expandable-last.gif", lastLeafImg: "./gfx/treeTable/tv-item-last.gif", vertLineImg: "./gfx/treeTable/vertline.gif", blankImg: "./gfx/treeTable/blank.gif", collapse: closed, column: 0, striped: true, highlight: false, state: false }); } /** * (re)fill the memory block with the values from the given xml * @param {jQuery} xml phpSysInfo-XML */ function refreshMemory(xml) { var html = "", tree = [], closed = []; $("#memory").empty(); html += "

" + genlang(27, false) + "

\n"; html += "
\n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; $("Memory", xml).each(function getMemory(id) { var free = 0, total = 0, used = 0, percent = 0, memoryindex = 0; free = parseInt($(this).attr("Free"), 10); used = parseInt($(this).attr("Used"), 10); total = parseInt($(this).attr("Total"), 10); percent = parseInt($(this).attr("Percent"), 10); html += ""; memoryindex = tree.push(0); $("Memory Details", xml).each(function getMemorydetails(id) { var app = 0, appp = 0, buff = 0, buffp = 0, cached = 0, cachedp = 0; app = parseInt($(this).attr("App"), 10); appp = parseInt($(this).attr("AppPercent"), 10); buff = parseInt($(this).attr("Buffers"), 10); buffp = parseInt($(this).attr("BuffersPercent"), 10); cached = parseInt($(this).attr("Cached"), 10); cachedp = parseInt($(this).attr("CachedPercent"), 10); if (!isNaN(app)) { html += ""; tree.push(memoryindex); } if (!isNaN(cached)) { html += ""; tree.push(memoryindex); } if (!isNaN(buff)) { html += ""; tree.push(memoryindex); } if (!isNaN(app) || !isNaN(buff) || !isNaN(cached)) { if (!showMemoryInfosExpanded) { closed.push(memoryindex); } } }); }); $("Memory Swap", xml).each(function getSwap(id) { var free = 0, total = 0, used = 0, percent = 0, swapindex = 0; free = parseInt($(this).attr("Free"), 10); used = parseInt($(this).attr("Used"), 10); total = parseInt($(this).attr("Total"), 10); percent = parseInt($(this).attr("Percent"), 10); html += ""; swapindex = tree.push(0); $("Memory Swap Mount", xml).each(function getDevices(id) { var free = 0, total = 0, used = 0, percent = 0, mpoint = "", mpid = 0; if (!showMemoryInfosExpanded) { closed.push(swapindex); } free = parseInt($(this).attr("Free"), 10); used = parseInt($(this).attr("Used"), 10); total = parseInt($(this).attr("Total"), 10); percent = parseInt($(this).attr("Percent"), 10); mpid = parseInt($(this).attr("MountPointID"), 10); mpoint = $(this).attr("MountPoint"); if (mpoint === undefined) { mpoint = mpid; } html += ""; tree.push(swapindex); }); }); html += " \n"; html += "
" + genlang(34, true) + "" + genlang(33, true) + "" + genlang(35, true) + "" + genlang(36, true) + "" + genlang(37, true) + "
" + genlang(28, false) + "" + createBar(percent) + "" + formatBytes(free, xml) + "" + formatBytes(used, xml) + "" + formatBytes(total, xml) + "
" + genlang(64, false) + "" + createBar(appp) + " " + formatBytes(app, xml) + " 
" + genlang(66, false) + "" + createBar(cachedp) + " " + formatBytes(cached, xml) + " 
" + genlang(65, false) + "" + createBar(buffp) + " " + formatBytes(buff, xml) + " 
" + genlang(29, false) + "" + createBar(percent) + "" + formatBytes(free, xml) + "" + formatBytes(used, xml) + "" + formatBytes(total, xml) + "
" + mpoint + "" + createBar(percent) + "" + formatBytes(free, xml) + "" + formatBytes(used, xml) + "" + formatBytes(total, xml) + "
\n"; $("#memory").append(html); $("#MemoryTree").jqTreeTable(tree, { openImg: "./gfx/treeTable/tv-collapsable.gif", shutImg: "./gfx/treeTable/tv-expandable.gif", leafImg: "./gfx/treeTable/tv-item.gif", lastOpenImg: "./gfx/treeTable/tv-collapsable-last.gif", lastShutImg: "./gfx/treeTable/tv-expandable-last.gif", lastLeafImg: "./gfx/treeTable/tv-item-last.gif", vertLineImg: "./gfx/treeTable/vertline.gif", blankImg: "./gfx/treeTable/blank.gif", collapse: closed, column: 0, striped: true, highlight: false, state: false }); } /** * (re)fill the filesystems block with the values from the given xml

* appends the filesystems (each in a row) to the filesystem table in the tbody
before the rows are inserted the entire * tbody is cleared * @param {jQuery} xml phpSysInfo-XML */ function refreshFilesystems(xml) { var total_usage = 0, total_used = 0, total_free = 0, total_size = 0, threshold = 0; filesystemTable.fnClearTable(); $("Options", xml).each(function getThreshold(id) { threshold = parseInt($(this).attr("threshold"), 10); }); $("FileSystem Mount", xml).each(function getMount(mid) { var mpoint = "", mpid = 0, type = "", name = "", free = 0, used = 0, size = 0, percent = 0, options = "", inodes = 0, inodes_text = "", options_text = ""; mpid = parseInt($(this).attr("MountPointID"), 10); type = $(this).attr("FSType"); name = $(this).attr("Name"); free = parseInt($(this).attr("Free"), 10); used = parseInt($(this).attr("Used"), 10); size = parseInt($(this).attr("Total"), 10); percent = parseInt($(this).attr("Percent"), 10); options = $(this).attr("MountOptions"); inodes = parseInt($(this).attr("Inodes"), 10); mpoint = $(this).attr("MountPoint"); if (mpoint === undefined) { mpoint = mpid; } if (options !== undefined) { options_text = "
(" + options + ")"; } if (!isNaN(inodes)) { inodes_text = " (" + inodes.toString() + "%)"; } if (!isNaN(threshold) && (percent >= threshold)) { filesystemTable.fnAddData(["" + mpoint + "" + mpoint, "" + type + "" + type, "" + name + "" + name + options_text, "" + percent.toString() + "" + createBar(percent, "barwarn") + inodes_text, "" + free.toString() + "" + formatBytes(free, xml), "" + used.toString() + "" + formatBytes(used, xml), "" + size.toString() + "" + formatBytes(size, xml)]); } else { filesystemTable.fnAddData(["" + mpoint + "" + mpoint, "" + type + "" + type, "" + name + "" + name + options_text, "" + percent.toString() + "" + createBar(percent) + inodes_text, "" + free.toString() + "" + formatBytes(free, xml), "" + used.toString() + "" + formatBytes(used, xml), "" + size.toString() + "" + formatBytes(size, xml)]); } total_used += used; total_free += free; total_size += size; total_usage = round((total_used / total_size) * 100, 2); }); if (!isNaN(threshold) && (total_usage >= threshold)) { $("#s_fs_total").html(createBar(total_usage, "barwarn")); } else { $("#s_fs_total").html(createBar(total_usage)); } $("#s_fs_tfree").html(formatBytes(total_free, xml)); $("#s_fs_tused").html(formatBytes(total_used, xml)); $("#s_fs_tsize").html(formatBytes(total_size, xml)); } /** * (re)fill the temperature block with the values from the given xml

* build the block content for the temperature block, this includes normal temperature information in the XML * and also the HDDTemp information, if there are no information the entire table will be removed * to avoid HTML warnings * @param {jQuery} xml phpSysInfo-XML */ function refreshTemp(xml) { var values = false; $("#tempTable tbody").empty(); $("MBInfo Temperature Item", xml).each(function getTemperatures(id) { var label = "", value = "", limit = 0, _limit = "", event = ""; label = $(this).attr("Label"); value = $(this).attr("Value").replace(/\+/g, ""); limit = ($(this).attr("Max") !== undefined) ? parseFloat($(this).attr("Max").replace(/\+/g, "")) : 'NaN'; if (isFinite(limit)) _limit = formatTemp(limit, xml); event = $(this).attr("Event"); if (event !== undefined) label += " \"!\""; $("#tempTable tbody").append("" + label + "" + formatTemp(value, xml) + "" + _limit + ""); values = true; }); if (values) { $("#temp").show(); } else { $("#temp").remove(); } } /** * (re)fill the voltage block with the values from the given xml

* build the voltage information into a separate block, if there is no voltage information available the * entire table will be removed to avoid HTML warnings * @param {jQuery} xml phpSysInfo-XML */ function refreshVoltage(xml) { var values = false; $("#voltageTable tbody").empty(); $("MBInfo Voltage Item", xml).each(function getVoltages(id) { var label = "", value = 0, max = 0, min = 0, _min = "", _max = "", event = ""; label = $(this).attr("Label"); value = parseFloat($(this).attr("Value")); max = parseFloat($(this).attr("Max")); if (isFinite(max)) _max = round(max, 2) + " " + genlang(62, true); min = parseFloat($(this).attr("Min")); if (isFinite(min)) _min = round(min, 2) + " " + genlang(62, true); event = $(this).attr("Event"); if (event !== undefined) label += " \"!\""; $("#voltageTable tbody").append("" + label + "" + round(value, 2) + " " + genlang(62, true) + "" + _min + "" + _max + ""); values = true; }); if (values) { $("#voltage").show(); } else { $("#voltage").remove(); } } /** * (re)fill the fan block with the values from the given xml

* build the fan information into a separate block, if there is no fan information available the * entire table will be removed to avoid HTML warnings * @param {jQuery} xml phpSysInfo-XML */ function refreshFan(xml) { var values = false; $("#fanTable tbody").empty(); $("MBInfo Fans Item", xml).each(function getFans(id) { var label = "", value = 0, min = 0, _min = "", event = ""; label = $(this).attr("Label"); value = parseFloat($(this).attr("Value")); min = parseFloat($(this).attr("Min")); if (isFinite(min)) _min = round(min,0) + " " + genlang(63, true); event = $(this).attr("Event"); if (event !== undefined) label += " \"!\""; $("#fanTable tbody").append("" + label + "" + round(value,0) + " " + genlang(63, true) + "" + _min + ""); values = true; }); if (values) { $("#fan").show(); } else { $("#fan").remove(); } } /** * (re)fill the power block with the values from the given xml

* build the power information into a separate block, if there is no power information available the * entire table will be removed to avoid HTML warnings * @param {jQuery} xml phpSysInfo-XML */ function refreshPower(xml) { var values = false; $("#powerTable tbody").empty(); $("MBInfo Power Item", xml).each(function getPowers(id) { var label = "", value = "", limit = 0, _limit = "", event = ""; label = $(this).attr("Label"); value = $(this).attr("Value").replace(/\+/g, ""); limit = ($(this).attr("Max") !== undefined) ? parseFloat($(this).attr("Max").replace(/\+/g, "")) : 'NaN'; if (isFinite(limit)) _limit = round(limit, 2) + " " + genlang(103, true); event = $(this).attr("Event"); if (event !== undefined) label += " \"!\""; $("#powerTable tbody").append("" + label + "" + round(value, 2) + " " + genlang(103, true) + "" + _limit + ""); values = true; }); if (values) { $("#power").show(); } else { $("#power").remove(); } } /** * (re)fill the current block with the values from the given xml

* build the current information into a separate block, if there is no current information available the * entire table will be removed to avoid HTML warnings * @param {jQuery} xml phpSysInfo-XML */ function refreshCurrent(xml) { var values = false; $("#currentTable tbody").empty(); $("MBInfo Current Item", xml).each(function getCurrents(id) { var label = "", value = "", limit = 0, _limit = "", event = ""; label = $(this).attr("Label"); value = $(this).attr("Value").replace(/\+/g, ""); limit = ($(this).attr("Max") !== undefined) ? parseFloat($(this).attr("Max").replace(/\+/g, "")) : 'NaN'; if (isFinite(limit)) _limit = round(limit, 2) + " " + genlang(106, true); event = $(this).attr("Event"); if (event !== undefined) label += " \"!\""; $("#currentTable tbody").append("" + label + "" + round(value, 2) + " " + genlang(106, true) + "" + _limit + ""); values = true; }); if (values) { $("#current").show(); } else { $("#current").remove(); } } /** * (re)fill the ups block with the values from the given xml

* build the ups information into a separate block, if there is no ups information available the * entire table will be removed to avoid HTML warnings * @param {jQuery} xml phpSysInfo-XML */ function refreshUps(xml) { var add_apcupsd_cgi_links = ($("[ApcupsdCgiLinks='1']", xml).length > 0); var html = "", tree = [], closed = [], index = 0, values = false; html += "

" + genlang(68, false) + "

\n"; html += " \n"; html += " \n"; $("#ups").empty(); $("UPSInfo UPS", xml).each(function getUps(id) { var name = "", model = "", mode = "", start_time = "", upsstatus = "", temperature = "", outages_count = "", last_outage = "", last_outage_finish = "", line_voltage = "", line_frequency = "", load_percent = "", battery_date = "", battery_voltage = "", battery_charge_percent = "", time_left_minutes = ""; name = $(this).attr("Name"); model = $(this).attr("Model"); mode = $(this).attr("Mode"); start_time = $(this).attr("StartTime"); upsstatus = $(this).attr("Status"); temperature = $(this).attr("Temperature"); outages_count = $(this).attr("OutagesCount"); last_outage = $(this).attr("LastOutage"); last_outage_finish = $(this).attr("LastOutageFinish"); line_voltage = $(this).attr("LineVoltage"); line_frequency = $(this).attr("LineFrequency"); load_percent = parseInt($(this).attr("LoadPercent"), 10); battery_date = $(this).attr("BatteryDate"); battery_voltage = $(this).attr("BatteryVoltage"); battery_charge_percent = parseInt($(this).attr("BatteryChargePercent"), 10); time_left_minutes = $(this).attr("TimeLeftMinutes"); html += "\n"; index = tree.push(0); if (model !== undefined) { html += "\n"; tree.push(index); } if (start_time !== undefined) { html += "\n"; tree.push(index); } if (upsstatus !== undefined) { html += "\n"; tree.push(index); } if (temperature !== undefined) { html += "\n"; tree.push(index); } if (outages_count !== undefined) { html += "\n"; tree.push(index); } if (last_outage !== undefined) { html += "\n"; tree.push(index); } if (last_outage_finish !== undefined) { html += "\n"; tree.push(index); } if (line_voltage !== undefined) { html += "\n"; tree.push(index); } if (line_frequency !== undefined) { html += "\n"; tree.push(index); } if (!isNaN(load_percent)) { html += "\n"; tree.push(index); } if (battery_date !== undefined) { html += "\n"; tree.push(index); } if (battery_voltage !== undefined) { html += "\n"; tree.push(index); } if (!isNaN(battery_charge_percent)) { html += "\n"; tree.push(index); } if (time_left_minutes !== undefined) { html += "\n"; tree.push(index); } values=true; }); html += " \n"; html += "
" + name + " (" + mode + ")
" + genlang(70, true) + "" + model + "
" + genlang(72, true) + "" + start_time + "
" + genlang(73, true) + "" + upsstatus + "
" + genlang(84, true) + "" + temperature + "
" + genlang(74, true) + "" + outages_count + "
" + genlang(75, true) + "" + last_outage + "
" + genlang(76, true) + "" + last_outage_finish + "
" + genlang(77, true) + "" + line_voltage + " " + genlang(82, true) + "
" + genlang(108, true) + "" + line_frequency + " " + genlang(109, true) + "
" + genlang(78, true) + "" + createBar(load_percent) + "
" + genlang(104, true) + "" + battery_date + "
" + genlang(79, true) + "" + battery_voltage + " " + genlang(82, true) + "
" + genlang(80, true) + "" + createBar(battery_charge_percent) + "
" + genlang(81, true) + "" + time_left_minutes + " " + genlang(83, true) + "
\n"; if (add_apcupsd_cgi_links){ html += " (" + genlang(99, false) + ")\n"; } $("#ups").append(html); if (values) { $("#UPSTree").jqTreeTable(tree, { openImg: "./gfx/treeTable/tv-collapsable.gif", shutImg: "./gfx/treeTable/tv-expandable.gif", leafImg: "./gfx/treeTable/tv-item.gif", lastOpenImg: "./gfx/treeTable/tv-collapsable-last.gif", lastShutImg: "./gfx/treeTable/tv-expandable-last.gif", lastLeafImg: "./gfx/treeTable/tv-item-last.gif", vertLineImg: "./gfx/treeTable/vertline.gif", blankImg: "./gfx/treeTable/blank.gif", collapse: closed, column: 0, striped: true, highlight: false, state: false }); $("#ups").show(); } else { $("#ups").remove(); } } /** * reload the page, this means all values are refreshed, except the plugins */ function reload() { $.ajax({ url: 'xml.php', dataType: 'xml', error: function error() { $.jGrowl("Error loading XML document!"); }, success: function buildblocks(xml) { refreshVitals(xml); refreshNetwork(xml); refreshHardware(xml); refreshMemory(xml); refreshFilesystems(xml); refreshVoltage(xml); refreshFan(xml); refreshTemp(xml); refreshPower(xml); refreshCurrent(xml); refreshUps(xml); for (var i = 0; i < plugin_liste.length; i += 1) { try { //dynamic call window[plugin_liste[i].toLowerCase() + '_request'](); } catch (err) { } } $('.stripeMe tr:nth-child(even)').addClass('even'); langcounter = 1; } }); } /** * set a reload timer for the page * @param {jQuery} xml phpSysInfo-XML */ function settimer(xml) { $("Options", xml).each(function getRefreshTime(id) { var options, refresh = ""; options = $("Options", xml).get(id); refresh = $(this).attr("refresh"); if (refresh !== '0') { $.timer(refresh, reload); } }); } $(document).ready(function buildpage() { var i = 0, cookie_template = null, cookie_language = null; showCPUListExpanded = $("#showCPUListExpanded").val().toString()==="true"; showCPUInfoExpanded = $("#showCPUInfoExpanded").val().toString()==="true"; showNetworkInfosExpanded = $("#showNetworkInfosExpanded").val().toString()==="true"; showMemoryInfosExpanded = $("#showMemoryInfosExpanded").val().toString()==="true"; if ($("#language option").length < 2) { current_language = $("#language").val().toString(); changeLanguage(); for (i = 0; i < plugin_liste.length; i += 1) { changeLanguage(plugin_liste[i]); } } else { cookie_language = readCookie("psi_language"); if (cookie_language !== null) { current_language = cookie_language; $("#language").val(current_language); } else { current_language = $("#language").val().toString(); } changeLanguage(); for (i = 0; i < plugin_liste.length; i += 1) { changeLanguage(plugin_liste[i]); } $('#language').show(); $('span[id=lang_045]').show(); $("#language").change(function changeLang() { var i = 0; current_language = $("#language").val().toString(); createCookie('psi_language', current_language, 365); changeLanguage(); for (i = 0; i < plugin_liste.length; i += 1) { changeLanguage(plugin_liste[i]); } return false; }); } if ($("#template option").length < 2) { switchStyle($("#template").val().toString()); } else { cookie_template = readCookie("psi_template"); if (cookie_template !== null) { $("#template").val(cookie_template); } switchStyle($("#template").val().toString()); $('#template').show(); $('span[id=lang_044]').show(); $("#template").change(function changeTemplate() { switchStyle($("#template").val().toString()); createCookie('psi_template', $("#template").val().toString(), 365); return false; }); } filesystemtable(); $.ajax({ url: 'xml.php', dataType: 'xml', error: function error() { $.jGrowl("Error loading XML document!", { sticky: true }); }, success: function buildblocks(xml) { populateErrors(xml); refreshVitals(xml); refreshHardware(xml); refreshNetwork(xml); refreshMemory(xml); refreshFilesystems(xml); refreshTemp(xml); refreshVoltage(xml); refreshFan(xml); refreshPower(xml); refreshCurrent(xml); refreshUps(xml); displayPage(xml); settimer(xml); $('.stripeMe tr:nth-child(even)').addClass('even'); langcounter = 1; } }); $("#errors").nyroModal(); }); jQuery.fn.dataTableExt.oSort['span-string-asc'] = function sortStringAsc(a, b) { var x = "", y = ""; x = a.substring(a.indexOf(">") + 1, a.indexOf("") + 1, b.indexOf(" y) ? 1 : 0)); }; jQuery.fn.dataTableExt.oSort['span-string-desc'] = function sortStringDesc(a, b) { var x = "", y = ""; x = a.substring(a.indexOf(">") + 1, a.indexOf("") + 1, b.indexOf(" y) ? -1 : 0)); }; jQuery.fn.dataTableExt.oSort['span-number-asc'] = function sortNumberAsc(a, b) { var x = 0, y = 0; x = parseInt(a.substring(a.indexOf(">") + 1, a.indexOf("") + 1, b.indexOf(" y) ? 1 : 0)); }; jQuery.fn.dataTableExt.oSort['span-number-desc'] = function sortNumberDesc(a, b) { var x = 0, y = 0; x = parseInt(a.substring(a.indexOf(">") + 1, a.indexOf("") + 1, b.indexOf(" y) ? -1 : 0)); }; /** * generate the block element for a specific plugin that is available * @param {String} plugin name of the plugin * @param {Number} translationid id of the translated headline in the plugin translation file * @param {Boolean} reload controls if a reload button should be appended to the headline * @return {String} HTML string which contains the full layout of the block */ function buildBlock(plugin, translationid, reload) { var block = "", reloadpic = ""; if (reload) { reloadpic = "\"reload\" "; } block += "
\n"; block += "

" + reloadpic + genlang(translationid, false, plugin) + "

\n"; block += "
\n"; return block; } /** * translate a plugin and add this plugin to the internal plugin-list, this is only needed once and shouldn't be called more than once * @param {String} plugin name of the plugin that should be translated */ function plugin_translate(plugin) { plugin_liste.pushIfNotExist(plugin); changeLanguage(plugin); } /** * generate a formatted datetime string of the current datetime * @return {String} formatted datetime string */ function datetime() { var date, day = 0, month = 0, year = 0, hour = 0, minute = 0, days = "", months = "", years = "", hours = "", minutes = ""; date = new Date(); day = date.getDate(); month = date.getMonth() + 1; year = date.getFullYear(); hour = date.getHours(); minute = date.getMinutes(); // format values smaller that 10 with a leading 0 days = (day < 10) ? "0" + day.toString() : day.toString(); months = (month < 10) ? "0" + month.toString() : month.toString(); years = (year < 1000) ? year.toString() : year.toString(); minutes = (minute < 10) ? "0" + minute.toString() : minute.toString(); hours = (hour < 10) ? "0" + hour.toString() : hour.toString(); return days + "." + months + "." + years + " - " + hours + ":" + minutes; } Array.prototype.pushIfNotExist = function(val) { if (typeof(val) == 'undefined' || val == '') { return; } val = $.trim(val); if ($.inArray(val, this) == -1) { this.push(val); } }; /** * insert dynamically a js script file into the website * @param {String} name name of the script that should be included */ /* function appendjs(name) { var scrptE, hdEl; scrptE = document.createElement("script"); hdEl = document.getElementsByTagName("head")[0]; scrptE.setAttribute("src", name); scrptE.setAttribute("type", "text/javascript"); hdEl.appendChild(scrptE); } */ /** * insert dynamically a css file into the website * @param {String} name name of the css file that should be included */ /* function appendcss(name) { var scrptE, hdEl; scrptE = document.createElement("link"); hdEl = document.getElementsByTagName("head")[0]; scrptE.setAttribute("type", "text/css"); scrptE.setAttribute("rel", "stylesheet"); scrptE.setAttribute("href", name); hdEl.appendChild(scrptE); } */ phpsysinfo-3.2.5/js/phpSysInfo/phpsysinfo_bootstrap.js000066400000000000000000001555301265516077000233200ustar00rootroot00000000000000//var data_dbg; /** * load the given translation an translate the entire page

retrieving the translation is done through a * ajax call * @private * @param {String} lang language for which the translation should be loaded * @param {String} plugin if plugin is given, the plugin translation file will be read instead of the main translation file * @param {String} plugname internal plugin name * @return {jQuery} translation jQuery-Object */ var langxml = [], langcounter = 1, langarr = [], current_language = "", plugins = [], plugin_liste = [], showCPUListExpanded, showCPUInfoExpanded, showNetworkInfosExpanded; /** * Fix PNG loading on IE6 or below */ function PNGload(png) { if (typeof(png.ifixpng)==='function') { //IE6 PNG fix png.ifixpng('./gfx/blank.gif'); } } /** * generate a cookie, if not exist, and add an entry to it

* inspired by http://www.quirksmode.org/js/cookies.html * @param {String} name name that holds the value * @param {String} value value that needs to be stored * @param {Number} days how many days the entry should be valid in the cookie */ function createCookie(name, value, days) { var date = new Date(), expires = ""; if (days) { date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); if (typeof(date.toUTCString)==="function") { expires = "; expires=" + date.toUTCString(); } else { //deprecated expires = "; expires=" + date.toGMTString(); } } else { expires = ""; } document.cookie = name + "=" + value + expires + "; path=/"; } /** * read a value out of a cookie and return the value

* inspired by http://www.quirksmode.org/js/cookies.html * @param {String} name name of the value that should be retrieved * @return {String} */ function readCookie(name) { var nameEQ = "", ca = [], c = ''; nameEQ = name + "="; ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i += 1) { c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1, c.length); } if (!c.indexOf(nameEQ)) { return c.substring(nameEQ.length, c.length); } } return null; } /** * activates a given style and disables the old one in the document * @param {String} template template that should be activated */ function switchStyle(template) { $('link[rel*=style][title]').each(function getTitle(i) { if (this.getAttribute('title') === 'PSI_Template') { this.setAttribute('href', 'templates/' + template + "_bootstrap.css"); } }); } /** * load the given translation an translate the entire page

retrieving the translation is done through a * ajax call * @private * @param {String} plugin if plugin is given, the plugin translation file will be read instead of the main translation file * @param {String} plugname internal plugin name * @return {jQuery} translation jQuery-Object */ function getLanguage(plugin, plugname) { var getLangUrl = ""; if (current_language) { getLangUrl = 'language/language.php?lang=' + current_language; if (plugin) { getLangUrl += "&plugin=" + plugin; } } else { getLangUrl = 'language/language.php'; if (plugin) { getLangUrl += "?plugin=" + plugin; } } $.ajax({ url: getLangUrl, type: 'GET', dataType: 'xml', timeout: 100000, async: false, error: function error() { $.jGrowl("Error loading language!"); }, success: function buildblocks(xml) { var idexp; langxml[plugname] = xml; if (langarr[plugname] === undefined) { langarr.push(plugname); langarr[plugname] = []; } $("expression", langxml[plugname]).each(function langstore(id) { idexp = $("expression", xml).get(id); langarr[plugname][this.getAttribute('id')] = $("exp", idexp).text().toString().replace(/\//g, "/"); }); } }); } /** * internal function to get a given translation out of the translation file * @param {Number} langId id of the translation expression * @param {String} [plugin] name of the plugin * @return {String} translation string */ function getTranslationString(langId, plugin) { var plugname = current_language + "_"; if (plugin === undefined) { plugname += "phpSysInfo"; } else { plugname += plugin; } if (langxml[plugname] === undefined) { langxml.push(plugname); getLanguage(plugin, plugname); } return langarr[plugname][langId.toString()]; } /** * generate a span tag with an unique identifier to be html valid * @param {Number} id translation id in the xml file * @param {Boolean} generate generate lang_id in span tag or use given value * @param {String} [plugin] name of the plugin for which the tag should be generated * @return {String} string which contains generated span tag for translation string */ function genlang(id, generate, plugin) { var html = "", idString = "", plugname = ""; if (plugin === undefined) { plugname = ""; } else { plugname = plugin.toLowerCase(); } if (id < 100) { if (id < 10) { idString = "00" + id.toString(); } else { idString = "0" + id.toString(); } } else { idString = id.toString(); } if (plugin) { idString = "plugin_" + plugname + "_" + idString; } if (generate) { html += ""; langcounter += 1; } else { html += ""; } html += getTranslationString(idString, plugin) + ""; return html; } /** * translates all expressions based on the translation xml file
* translation expressions must be in the format <span id="lang???"></span>, where ??? is * the number of the translated expression in the xml file

if a translated expression is not found in the xml * file nothing would be translated, so the initial value which is inside the span tag is displayed * @param {String} [plugin] name of the plugin */ function changeLanguage(plugin) { var langId = "", langStr = ""; $('span[id*=lang_]').each(function translate(i) { langId = this.getAttribute('id').substring(5); if (langId.indexOf('-') !== -1) { langId = langId.substring(0, langId.indexOf('-')); //remove the unique identifier } langStr = getTranslationString(langId, plugin); if (langStr !== undefined) { if (langStr.length > 0) { this.innerHTML = langStr; } } }); } function reload(initiate) { $("#errorbutton").css("visibility", "hidden"); $("#errors").empty(); $.ajax({ dataType: "json", url: "xml.php?json", error: function(jqXHR, status, thrownError) {; if ((status === "parsererror") && (typeof(xmlDoc = $.parseXML(jqXHR.responseText)) === "object")) { var errs = 0; try { $(xmlDoc).find("Error").each(function() { $("#errors").append("
  • "+$(this)[0]["attributes"]["Function"].nodeValue+" - "+$(this)[0]["attributes"]["Message"].nodeValue.replace(/\n/g, "
    ")+"

  • "); errs++; }); } catch (err) { } if (errs > 0) { $("#errorbutton").css("visibility", "visible"); $("#output").show(); } } }, success: function (data) { // console.log(data); // data_dbg = data; if ((initiate === true) && (data["Options"] !== undefined) && (data["Options"]["@attributes"] !== undefined) && ((refrtime = data["Options"]["@attributes"]["refresh"]) !== undefined) && (refrtime !== "0")) { setInterval(reload, refrtime); } renderErrors(data); renderVitals(data); renderHardware(data); renderMemory(data); renderFilesystem(data); renderNetwork(data); renderVoltage(data); renderTemperature(data); renderFans(data); renderPower(data); renderCurrent(data); renderUPS(data); changeLanguage(); $("#select").show(); $("#output").show(); } }); for (var i = 0; i < plugins.length; i++) { plugin_request(plugins[i]); if ($("#reload_"+plugins[i]).length > 0) { $("#reload_"+plugins[i]).attr("title", "reload"); } } if (initiate === true) { for (var i = 0; i < plugins.length; i++) { if ($("#reload_"+plugins[i]).length > 0) { $("#reload_"+plugins[i]).click(function() { plugin_request(this.id.substring(7)); //cut "reload_" from name $(this).attr("title", datetime()); }); } } } } /** * load the plugin json via ajax */ function plugin_request(pluginname) { $.ajax({ dataType: "json", url: "xml.php?plugin=" + pluginname + "&json", pluginname: pluginname, success: function (data) { try { // dynamic call window['renderPlugin_' + this.pluginname](data); changeLanguage(this.pluginname); plugin_liste.pushIfNotExist(this.pluginname); } catch (err) { } renderErrors(data); } }); } $(document).ready(function () { var cookie_template = null, cookie_language = null, plugtmp = ""; $(document).ajaxStart(function () { $("#loader").css("visibility", "visible"); }); $(document).ajaxStop(function () { $("#loader").css("visibility", "hidden"); }); sorttable.init(); $.getScript( "./js.php?name=bootstrap", function(data, status, jqxhr) { showCPUListExpanded = $("#showCPUListExpanded").val().toString()==="true"; showCPUInfoExpanded = $("#showCPUInfoExpanded").val().toString()==="true"; showNetworkInfosExpanded = $("#showNetworkInfosExpanded").val().toString()==="true"; plugtmp = $("#plugins").val().toString(); if (plugtmp.length >0 ){ plugins = plugtmp.split(','); } if ($("#language option").length < 2) { current_language = $("#language").val().toString(); /* not visible any objects changeLanguage(); */ /* plugin_liste not initialized yet for (var i = 0; i < plugin_liste.length; i += 1) { changeLanguage(plugin_liste[i]); } */ } else { cookie_language = readCookie("psi_language"); if (cookie_language !== null) { current_language = cookie_language; $("#language").val(current_language); } else { current_language = $("#language").val().toString(); } /* not visible any objects changeLanguage(); */ /* plugin_liste not initialized yet for (var i = 0; i < plugin_liste.length; i += 1) { changeLanguage(plugin_liste[i]); } */ $('#language').show(); $('span[id=lang_045]').show(); $("#language").change(function changeLang() { current_language = $("#language").val().toString(); createCookie('psi_language', current_language, 365); changeLanguage(); for (var i = 0; i < plugin_liste.length; i++) { changeLanguage(plugin_liste[i]); } return false; }); } if ($("#template option").length < 2) { switchStyle($("#template").val().toString()); } else { cookie_template = readCookie("psi_bootstrap_template"); if (cookie_template !== null) { $("#template").val(cookie_template); } switchStyle($("#template").val().toString()); $('#template').show(); $('span[id=lang_044]').show(); $("#template").change(function changeTemplate() { switchStyle($("#template").val().toString()); createCookie('psi_bootstrap_template', $("#template").val().toString(), 365); return false; }); } reload(true); $(".logo").click(function () { reload(); }); }); }); Array.prototype.push_attrs=function(element) { for (var i = 0; i < element.length ; i++) { this.push(element[i]["@attributes"]); } return i; }; function items(data) { if (data !== undefined) { if ((data.length > 0) && (data[0] !== undefined) && (data[0]["@attributes"] !== undefined)) { return data; } else if (data["@attributes"] !== undefined ) { return [data]; } else { return []; } } else { return []; } } function renderVitals(data) { var directives = { Uptime: { html: function () { return formatUptime(this["Uptime"]); } }, LastBoot: { text: function () { var lastboot; var timestamp = 0; if ((data["Generation"] !== undefined) && (data["Generation"]["@attributes"] !== undefined) && (data["Generation"]["@attributes"]["timestamp"] !== undefined) ) { timestamp = parseInt(data["Generation"]["@attributes"]["timestamp"])*1000; //server time if (isNaN(timestamp)) timestamp = Number(new Date()); //client time } else { timestamp = Number(new Date()); //client time } lastboot = new Date(timestamp - (parseInt(this["Uptime"])*1000)); if (typeof(lastboot.toUTCString) === "function") { return lastboot.toUTCString(); //toUTCstring() or toLocaleString() } else { //deprecated return lastboot.toGMTString(); //toGMTString() or toLocaleString() } } }, Distro: { html: function () { return '' + " " +this["Distro"]; //onload IE6 PNG fix } }, LoadAvg: { html: function () { if (this["CPULoad"] !== undefined) { return '
    '+this["LoadAvg"] + '
    ' + '
    ' + '
    ' + round(this["CPULoad"],0) + '%
    '; } else { return this["LoadAvg"]; } } }, Processes: { html: function () { var processes = "", p111 = 0, p112 = 0, p113 = 0, p114 = 0, p115 = 0, p116 = 0; var not_first = false; processes = parseInt(this["Processes"]); if (this["ProcessesRunning"] !== undefined) { p111 = parseInt(this["ProcessesRunning"]); } if (this["ProcessesSleeping"] !== undefined) { p112 = parseInt(this["ProcessesSleeping"]); } if (this["ProcessesStopped"] !== undefined) { p113 = parseInt(this["ProcessesStopped"]); } if (this["ProcessesZombie"] !== undefined) { p114 = parseInt(this["ProcessesZombie"]); } if (this["ProcessesWaiting"] !== undefined) { p115 = parseInt(this["ProcessesWaiting"]); } if (this["ProcessesOther"] !== undefined) { p116 = parseInt(this["ProcessesOther"]); } if (p111 || p112 || p113 || p114 || p115 || p116) { processes += " ("; for (var proc_type in {111:0,112:1,113:2,114:3,115:4,116:5}) { if (eval("p" + proc_type)) { if (not_first) { processes += ", "; } processes += eval("p" + proc_type) + String.fromCharCode(160) + genlang(proc_type, false); not_first = true; } } processes += ")"; } return processes; } } }; if (data["Vitals"]["@attributes"]["SysLang"] === undefined) { $("#tr_SysLang").hide(); } if (data["Vitals"]["@attributes"]["CodePage"] === undefined) { $("#tr_CodePage").hide(); } if (data["Vitals"]["@attributes"]["Processes"] === undefined) { $("#tr_Processes").hide(); } $('#vitals').render(data["Vitals"]["@attributes"], directives); $("#block_vitals").show(); } function renderHardware(data) { var directives = { Model: { text: function () { return this["Model"]; } }, CpuSpeed: { html: function () { return formatHertz(this["CpuSpeed"]); } }, CpuSpeedMax: { html: function () { return formatHertz(this["CpuSpeedMax"]); } }, CpuSpeedMin: { html: function () { return formatHertz(this["CpuSpeedMin"]); } }, Cache: { html: function () { return formatBytes(this["Cache"], data["Options"]["@attributes"]["byteFormat"]); } }, BusSpeed: { html: function () { return formatHertz(this["BusSpeed"]); } }, Cputemp: { html: function () { return formatTemp(this["Cputemp"], data["Options"]["@attributes"]["tempFormat"]); } }, Bogomips: { text: function () { return parseInt(this["Bogomips"]); } }, Load: { html: function () { return '
    ' + '
    ' + '
    ' + round(this["Load"],0) + '%
    '; } } }; var hw_directives = { hwName: { text: function() { return this["Name"]; } }, hwCount: { text: function() { if (this["Count"] == "1") { return ""; } return this["Count"]; } } }; var html=""; if ((data["Hardware"]["@attributes"] !== undefined) && (data["Hardware"]["@attributes"]["Name"] !== undefined)) { html+=""; html+=""+genlang(107, false)+""; //Machine html+=""; html+=""; html+=""; } var paramlist = {CpuSpeed:13,CpuSpeedMax:100,CpuSpeedMin:101,Cache:15,Virt:94,BusSpeed:14,Bogomips:16,Cputemp:51,Load:9}; try { var datas = items(data["Hardware"]["CPU"]["CpuCore"]); for (var i = 0; i < datas.length; i++) { if (i == 0) { html+=""; html+="CPU"; html+="" + genlang(119, false) + ":"; //Number of processors html+=""; html+=""; } html+=""; html+=""; html+=""; html+=""; html+=""; for (var proc_param in paramlist) { if (datas[i]["@attributes"][proc_param] !== undefined) { html+=""; html+=""; html+="" + genlang(paramlist[proc_param], true) + ""; html+=""; html+=""; } } } } catch (err) { $("#hardware-CPU").hide(); } for (var hw_type in {PCI:0,IDE:1,SCSI:2,USB:3,TB:4,I2C:5}) { try { var datas = items(data["Hardware"][hw_type]["Device"]); for (var i = 0; i < datas.length; i++) { if (i == 0) { html+=""; html+="" + hw_type + ""; html+="" + genlang('120', true) + ":"; //Number of devices html+=""; html+=""; } html+=""; html+=""; html+=""; html+=""; html+=""; } } catch (err) { $("#hardware-data"+hw_type).hide(); } } $("#hardware-data").empty().append(html); if ((data["Hardware"]["@attributes"] !== undefined) && (data["Hardware"]["@attributes"]["Name"] !== undefined)) { $('#hardware-Machine').render(data["Hardware"]["@attributes"]); } try { var datas = items(data["Hardware"]["CPU"]["CpuCore"]); for (var i = 0; i < datas.length; i++) { $('#hardware-CPU-'+ i).render(datas[i]["@attributes"]); for (var proc_param in paramlist) { if (datas[i]["@attributes"][proc_param] !== undefined) { $('#hardware-CPU-'+ i +'-'+proc_param).render(datas[i]["@attributes"], directives); } } } if (i > 0) { $("#CPUCount").html(i); } } catch (err) { $("#hardware-CPU").hide(); } for (var hw_type in {PCI:0,IDE:1,SCSI:2,USB:3,TB:4,I2C:5}) { try { var licz = 0; var datas = items(data["Hardware"][hw_type]["Device"]); for (var i = 0; i < datas.length; i++) { $('#hardware-'+hw_type+'-'+ i).render(datas[i]["@attributes"], hw_directives); if (datas[i]["@attributes"]["Count"] !== undefined) { licz += parseInt(datas[i]["@attributes"]["Count"]); } else { licz++; } } if (i > 0) { $("#" + hw_type + "Count").html(licz); } } catch (err) { $("#hardware-"+hw_type).hide(); } } $('#hardware').treegrid({ initialState: 'collapsed', expanderExpandedClass: 'normalicon normalicon-down', expanderCollapsedClass: 'normalicon normalicon-right' }); if (showCPUListExpanded) { try { $('#hardware-CPU').treegrid('expand'); } catch (err) { } } if (showCPUInfoExpanded && showCPUListExpanded) { try { var datas = items(data["Hardware"]["CPU"]["CpuCore"]); for (var i = 0; i < datas.length; i++) { $('#hardware-CPU-'+i).treegrid('expand'); } } catch (err) { } } $("#block_hardware").show(); } function renderMemory(data) { var directives = { Total: { html: function () { return formatBytes(this["@attributes"]["Total"], data["Options"]["@attributes"]["byteFormat"]); } }, Free: { html: function () { return formatBytes(this["@attributes"]["Free"], data["Options"]["@attributes"]["byteFormat"]); } }, Used: { html: function () { return formatBytes(this["@attributes"]["Used"], data["Options"]["@attributes"]["byteFormat"]); } }, Usage: { html: function () { if ((this["Details"] === undefined) || (this["Details"]["@attributes"] === undefined)) { return '
    ' + '
    ' + '
    ' + this["@attributes"]["Percent"] + '%
    '; } else { var rest = parseInt(this["@attributes"]["Percent"]); var html = '
    '; if ((this["Details"]["@attributes"]["AppPercent"] !== undefined) && (this["Details"]["@attributes"]["AppPercent"] > 0)) { html += '
    '; rest -= parseInt(this["Details"]["@attributes"]["AppPercent"]); } if ((this["Details"]["@attributes"]["CachedPercent"] !== undefined) && (this["Details"]["@attributes"]["CachedPercent"] > 0)) { html += '
    '; rest -= parseInt(this["Details"]["@attributes"]["CachedPercent"]); } if ((this["Details"]["@attributes"]["BuffersPercent"] !== undefined) && (this["Details"]["@attributes"]["BuffersPercent"] > 0)) { html += '
    '; rest -= parseInt(this["Details"]["@attributes"]["BuffersPercent"]); } if (rest > 0) { html += '
    '; } html += '
    '; html += '
    ' + 'Total: ' + this["@attributes"]["Percent"] + '% ' + '('; var not_first = false; if (this["Details"]["@attributes"]["AppPercent"] !== undefined) { html += genlang(64, false) + ': '+ this["Details"]["@attributes"]["AppPercent"] + '%'; //Kernel + apps not_first = true; } if (this["Details"]["@attributes"]["CachedPercent"] !== undefined) { if (not_first) html += ' - '; html += genlang(66, false) + ': ' + this["Details"]["@attributes"]["CachedPercent"] + '%'; //Cache not_first = true; } if (this["Details"]["@attributes"]["BuffersPercent"] !== undefined) { if (not_first) html += ' - '; html += genlang(65, false) + ': ' + this["Details"]["@attributes"]["BuffersPercent"] + '%'; //Buffers } html += ')
    '; return html; } } }, Type: { html: function () { return genlang(28, false); //Physical Memory } } }; var directive_swap = { Total: { html: function () { return formatBytes(this["Total"], data["Options"]["@attributes"]["byteFormat"]); } }, Free: { html: function () { return formatBytes(this["Free"], data["Options"]["@attributes"]["byteFormat"]); } }, Used: { html: function () { return formatBytes(this["Used"], data["Options"]["@attributes"]["byteFormat"]); } }, Usage: { html: function () { return '
    ' + '
    ' + '
    ' + this["Percent"] + '%
    '; } }, Name: { html: function () { return this['Name'] + '
    ' + ((this["MountPoint"] !== undefined) ? this["MountPoint"] : this["MountPointID"]); } } }; var data_memory = []; if (data["Memory"]["Swap"] !== undefined) { var datas = items(data["Memory"]["Swap"]["Mount"]); data_memory.push_attrs(datas); $('#swap-data').render(data_memory, directive_swap); $('#swap-data').show(); } else { $('#swap-data').hide(); } $('#memory-data').render(data["Memory"], directives); $("#block_memory").show(); } function renderFilesystem(data) { var directives = { Total: { html: function () { return formatBytes(this["Total"], data["Options"]["@attributes"]["byteFormat"]); } }, Free: { html: function () { return formatBytes(this["Free"], data["Options"]["@attributes"]["byteFormat"]); } }, Used: { html: function () { return formatBytes(this["Used"], data["Options"]["@attributes"]["byteFormat"]); } }, MountPoint: { text: function () { return ((this["MountPoint"] !== undefined) ? this["MountPoint"] : this["MountPointID"]); } }, Name: { html: function () { return this["Name"] + ((this["MountOptions"] !== undefined) ? '
    (' + this["MountOptions"] + ')' : ''); } }, Percent: { html: function () { return '
    ' + '
    = parseInt(data["Options"]["@attributes"]["threshold"]))) ? 'progress-bar progress-bar-danger' : 'progress-bar progress-bar-info') + '" style="width:' + this["Percent"] + '% ;">
    ' + '
    ' + '
    ' + this["Percent"] + '% ' + ((this["Inodes"] !== undefined) ? '(' + this["Inodes"] + '%)' : '') + '
    '; } } }; try { var fs_data = []; var datas = items(data["FileSystem"]["Mount"]); var total = {Total:0,Free:0,Used:0}; for (var i = 0; i < datas.length; i++) { fs_data.push(datas[i]["@attributes"]); total["Total"] += parseInt(datas[i]["@attributes"]["Total"]); total["Free"] += parseInt(datas[i]["@attributes"]["Free"]); total["Used"] += parseInt(datas[i]["@attributes"]["Used"]); total["Percent"] = (total["Total"] !== 0) ? round((total["Used"] / total["Total"]) * 100, 2) : 0; } if (i > 0) { $('#filesystem-data').render(fs_data, directives); $('#filesystem-foot').render(total, directives); $('#filesystem_MountPoint').removeClass("sorttable_sorted"); //reset sort order // sorttable.innerSortFunction.apply(document.getElementById('filesystem_MountPoint'), []); sorttable.innerSortFunction.apply($('#filesystem_MountPoint')[0], []); $("#block_filesystem").show(); } else { $("#block_filesystem").hide(); } } catch (err) { $("#block_filesystem").hide(); } } function renderNetwork(data) { var directives = { RxBytes: { html: function () { return formatBytes(this["RxBytes"], data["Options"]["@attributes"]["byteFormat"]); } }, TxBytes: { html: function () { return formatBytes(this["TxBytes"], data["Options"]["@attributes"]["byteFormat"]); } }, Drops: { html: function () { return this["Err"] + "/" + this["Drops"]; } } }; var html = ""; try { var network_data = []; var datas = items(data["Network"]["NetDevice"]); for (var i = 0; i < datas.length; i++) { html+=""; html+=""; html+=""; html+=""; html+=""; html+=""; var info = datas[i]["@attributes"]["Info"]; if ( (info !== undefined) && (info !== "") ) { var infos = info.replace(/:/g, ":").split(";"); /* split long addresses */ for (var j = 0; j < infos.length; j++){ html +="" + infos[j] + ""; } } } $("#network-data").empty().append(html); if (i > 0) { for (var i = 0; i < datas.length; i++) { $('#network-' + i).render(datas[i]["@attributes"], directives); } $('#network').treegrid({ initialState: showNetworkInfosExpanded?'expanded':'collapsed', expanderExpandedClass: 'normalicon normalicon-down', expanderCollapsedClass: 'normalicon normalicon-right' }); $("#block_network").show(); } else { $("#block_network").hide(); } } catch (err) { $("#block_network").hide(); } } function renderVoltage(data) { var directives = { Value: { text: function () { return this["Value"] + String.fromCharCode(160) + "V"; } }, Min: { text: function () { if (this["Min"] !== undefined) return this["Min"] + String.fromCharCode(160) + "V"; } }, Max: { text: function () { if (this["Max"] !== undefined) return this["Max"] + String.fromCharCode(160) + "V"; } }, Label: { html: function () { if (this["Event"] === undefined) return this["Label"]; else return this["Label"] + " \"!\""; } } }; try { var voltage_data = []; var datas = items(data["MBInfo"]["Voltage"]["Item"]); if (voltage_data.push_attrs(datas) > 0) { $('#voltage-data').render(voltage_data, directives); $("#block_voltage").show(); } else { $("#block_voltage").hide(); } } catch (err) { $("#block_voltage").hide(); } } function renderTemperature(data) { var directives = { Value: { html: function () { return formatTemp(this["Value"], data["Options"]["@attributes"]["tempFormat"]); } }, Max: { html: function () { if (this["Max"] !== undefined) return formatTemp(this["Max"], data["Options"]["@attributes"]["tempFormat"]); } }, Label: { html: function () { if (this["Event"] === undefined) return this["Label"]; else return this["Label"] + " \"!\""; } } }; try { var temperature_data = []; var datas = items(data["MBInfo"]["Temperature"]["Item"]); if (temperature_data.push_attrs(datas) > 0) { $('#temperature-data').render(temperature_data, directives); $("#block_temperature").show(); } else { $("#block_temperature").hide(); } } catch (err) { $("#block_temperature").hide(); } } function renderFans(data) { var directives = { Value: { html: function () { return this["Value"] + String.fromCharCode(160) + genlang(63, true); //RPM } }, Min: { html: function () { if (this["Min"] !== undefined) return this["Min"] + String.fromCharCode(160) + genlang(63, true); //RPM } }, Label: { html: function () { if (this["Event"] === undefined) return this["Label"]; else return this["Label"] + " \"!\""; } } }; try { var fans_data = []; var datas = items(data["MBInfo"]["Fans"]["Item"]); if (fans_data.push_attrs(datas) > 0) { $('#fans-data').render(fans_data, directives); $("#block_fans").show(); } else { $("#block_fans").hide(); } } catch (err) { $("#block_fans").hide(); } } function renderPower(data) { var directives = { Value: { text: function () { return this["Value"] + String.fromCharCode(160) + "W"; } }, Max: { text: function () { if (this["Max"] !== undefined) return this["Max"] + String.fromCharCode(160) + "W"; } }, Label: { html: function () { if (this["Event"] === undefined) return this["Label"]; else return this["Label"] + " \"!\""; } } }; try { var power_data = []; var datas = items(data["MBInfo"]["Power"]["Item"]); if (power_data.push_attrs(datas) > 0) { $('#power-data').render(power_data, directives); $("#block_power").show(); } else { $("#block_power").hide(); } } catch (err) { $("#block_power").hide(); } } function renderCurrent(data) { var directives = { Value: { text: function () { return this["Value"] + String.fromCharCode(160) + "A"; } }, Max: { text: function () { if (this["Max"] !== undefined) return this["Max"] + String.fromCharCode(160) + "A"; } }, Label: { html: function () { if (this["Event"] === undefined) return this["Label"]; else return this["Label"] + " \"!\""; } } }; try { var current_data = []; var datas = items(data["MBInfo"]["Current"]["Item"]); if (current_data.push_attrs(datas) > 0) { $('#current-data').render(current_data, directives); $("#block_current").show(); } else { $("#block_current").hide(); } } catch (err) { $("#block_current").hide(); } } function renderUPS(data) { var directives = { Name: { text: function () { return this["Name"] + ((this["Mode"] !== undefined) ? " (" + this["Mode"] + ")" : ""); } }, LineVoltage: { html: function () { return this["LineVoltage"] + String.fromCharCode(160) + genlang(82, true); //V } }, LineFrequency: { html: function () { return this["LineFrequency"] + String.fromCharCode(160) + genlang(109, true); //Hz } }, BatteryVoltage: { html: function () { return this["BatteryVoltage"] + String.fromCharCode(160) + genlang(82, true);; //V } }, TimeLeftMinutes: { html: function () { return this["TimeLeftMinutes"] + String.fromCharCode(160) + genlang(83, true); //minutes } }, LoadPercent: { html: function () { return '
    ' + '
    ' + '
    ' + round(this["LoadPercent"],0) + '%
    '; } }, BatteryChargePercent: { html: function () { return '
    ' + '
    ' + '
    ' + round(this["BatteryChargePercent"],0) + '%
    '; } } }; if ((data["UPSInfo"] !== undefined) && (items(data["UPSInfo"]["UPS"]).length > 0)) { var html=""; var paramlist = {Model:70,StartTime:72,Status:73,Temperature:84,OutagesCount:74,LastOutage:75,LastOutageFinish:76,LineVoltage:77,LineFrequency:108,LoadPercent:78,BatteryDate:104,BatteryVoltage:79,BatteryChargePercent:80,TimeLeftMinutes:81}; try { var datas = items(data["UPSInfo"]["UPS"]); for (var i = 0; i < datas.length; i++) { html+=""; html+=""; html+=""; html+=""; for (var proc_param in paramlist) { if (datas[i]["@attributes"][proc_param] !== undefined) { html+=""; html+="" + genlang(paramlist[proc_param], true) + ""; html+=""; html+=""; } } } } catch (err) { } if ((data["UPSInfo"]["@attributes"] !== undefined) && (data["UPSInfo"]["@attributes"]["ApcupsdCgiLinks"] === "1")) { html+=""; html+="(Details)"; html+=""; html+=""; } $("#ups-data").empty().append(html); try { var datas = items(data["UPSInfo"]["UPS"]); for (var i = 0; i < datas.length; i++) { $('#ups-'+ i).render(datas[i]["@attributes"], directives); for (var proc_param in paramlist) { if (datas[i]["@attributes"][proc_param] !== undefined) { $('#ups-'+ i +'-'+proc_param).render(datas[i]["@attributes"], directives); } } } } catch (err) { } $('#ups').treegrid({ initialState: 'expanded', expanderExpandedClass: 'normalicon normalicon-down', expanderCollapsedClass: 'normalicon normalicon-right' }); $("#block_ups").show(); } else { $("#block_ups").hide(); } } function renderErrors(data) { try { var datas = items(data["Errors"]["Error"]); for (var i = 0; i < datas.length; i++) { $("#errors").append("
  • "+datas[i]["@attributes"]["Function"]+" - "+datas[i]["@attributes"]["Message"].replace(/\n/g, "
    ")+"

  • "); } if (i > 0) { $("#errorbutton").css("visibility", "visible"); } } catch (err) { $("#errorbutton").css("visibility", "hidden"); } } /** * format seconds to a better readable statement with days, hours and minutes * @param {Number} sec seconds that should be formatted * @return {String} html string with no breaking spaces and translation statemen */ function formatUptime(sec) { var txt = "", intMin = 0, intHours = 0, intDays = 0; intMin = sec / 60; intHours = intMin / 60; intDays = Math.floor(intHours / 24); intHours = Math.floor(intHours - (intDays * 24)); intMin = Math.floor(intMin - (intDays * 60 * 24) - (intHours * 60)); if (intDays) { txt += intDays.toString() + String.fromCharCode(160) + genlang(48, false) + String.fromCharCode(160); //days } if (intHours) { txt += intHours.toString() + String.fromCharCode(160) + genlang(49, false) + String.fromCharCode(160); //hours } return txt + intMin.toString() + String.fromCharCode(160) + genlang(50, false); //Minutes } /** * format a celcius temperature to fahrenheit and also append the right suffix * @param {String} degreeC temperature in celvius * @param {jQuery} xml phpSysInfo-XML * @return {String} html string with no breaking spaces and translation statements */ function formatTemp(degreeC, tempFormat) { var degree = 0; if (tempFormat === undefined) { tempFormat = "c"; } degree = parseFloat(degreeC); if (isNaN(degreeC)) { return "---"; } else { switch (tempFormat.toLowerCase()) { case "f": return round((((9 * degree) / 5) + 32), 1) + String.fromCharCode(160) + genlang(61, true); case "c": return round(degree, 1) + String.fromCharCode(160) + genlang(60, true); case "c-f": return round(degree, 1) + String.fromCharCode(160) + genlang(60, true) + "
    (" + round((((9 * degree) / 5) + 32), 1) + String.fromCharCode(160) + genlang(61, true) + ")"; case "f-c": return round((((9 * degree) / 5) + 32), 1) + String.fromCharCode(160) + genlang(61, true) + "
    (" + round(degree, 1) + String.fromCharCode(160) + genlang(60, true) + ")"; } } } /** * format a given MHz value to a better readable statement with the right suffix * @param {Number} mhertz mhertz value that should be formatted * @return {String} html string with no breaking spaces and translation statements */ function formatHertz(mhertz) { if (mhertz && mhertz < 1000) { return mhertz.toString() + String.fromCharCode(160) + genlang(92, true); } else { if (mhertz && mhertz >= 1000) { return round(mhertz / 1000, 2) + String.fromCharCode(160) + genlang(93, true); } else { return ""; } } } /** * format the byte values into a user friendly value with the corespondenting unit expression
    support is included * for binary and decimal output
    user can specify a constant format for all byte outputs or the output is formated * automatically so that every value can be read in a user friendly way * @param {Number} bytes value that should be converted in the corespondenting format, which is specified in the phpsysinfo.ini * @param {jQuery} xml phpSysInfo-XML * @return {String} string of the converted bytes with the translated unit expression */ function formatBytes(bytes, byteFormat) { var show = ""; if (byteFormat === undefined) { byteFormat = "auto_binary"; } switch (byteFormat.toLowerCase()) { case "pib": show += round(bytes / Math.pow(1024, 5), 2); show += String.fromCharCode(160) + genlang(90, true); break; case "tib": show += round(bytes / Math.pow(1024, 4), 2); show += String.fromCharCode(160) + genlang(86, true); break; case "gib": show += round(bytes / Math.pow(1024, 3), 2); show += String.fromCharCode(160) + genlang(87, true); break; case "mib": show += round(bytes / Math.pow(1024, 2), 2); show += String.fromCharCode(160) + genlang(88, true); break; case "kib": show += round(bytes / Math.pow(1024, 1), 2); show += String.fromCharCode(160) + genlang(89, true); break; case "pb": show += round(bytes / Math.pow(1000, 5), 2); show += String.fromCharCode(160) + genlang(91, true); break; case "tb": show += round(bytes / Math.pow(1000, 4), 2); show += String.fromCharCode(160) + genlang(85, true); break; case "gb": show += round(bytes / Math.pow(1000, 3), 2); show += String.fromCharCode(160) + genlang(41, true); break; case "mb": show += round(bytes / Math.pow(1000, 2), 2); show += String.fromCharCode(160) + genlang(40, true); break; case "kb": show += round(bytes / Math.pow(1000, 1), 2); show += String.fromCharCode(160) + genlang(39, true); break; case "b": show += bytes; show += String.fromCharCode(160) + genlang(96, true); break; case "auto_decimal": if (bytes > Math.pow(1000, 5)) { show += round(bytes / Math.pow(1000, 5), 2); show += String.fromCharCode(160) + genlang(91, true); } else { if (bytes > Math.pow(1000, 4)) { show += round(bytes / Math.pow(1000, 4), 2); show += String.fromCharCode(160) + genlang(85, true); } else { if (bytes > Math.pow(1000, 3)) { show += round(bytes / Math.pow(1000, 3), 2); show += String.fromCharCode(160) + genlang(41, true); } else { if (bytes > Math.pow(1000, 2)) { show += round(bytes / Math.pow(1000, 2), 2); show += String.fromCharCode(160) + genlang(40, true); } else { if (bytes > Math.pow(1000, 1)) { show += round(bytes / Math.pow(1000, 1), 2); show += String.fromCharCode(160) + genlang(39, true); } else { show += bytes; show += String.fromCharCode(160) + genlang(96, true); } } } } } break; default: if (bytes > Math.pow(1024, 5)) { show += round(bytes / Math.pow(1024, 5), 2); show += String.fromCharCode(160) + genlang(90, true); } else { if (bytes > Math.pow(1024, 4)) { show += round(bytes / Math.pow(1024, 4), 2); show += String.fromCharCode(160) + genlang(86, true); } else { if (bytes > Math.pow(1024, 3)) { show += round(bytes / Math.pow(1024, 3), 2); show += String.fromCharCode(160) + genlang(87, true); } else { if (bytes > Math.pow(1024, 2)) { show += round(bytes / Math.pow(1024, 2), 2); show += String.fromCharCode(160) + genlang(88, true); } else { if (bytes > Math.pow(1024, 1)) { show += round(bytes / Math.pow(1024, 1), 2); show += String.fromCharCode(160) + genlang(89, true); } else { show += bytes; show += String.fromCharCode(160) + genlang(96, true); } } } } } } return show; } Array.prototype.pushIfNotExist = function(val) { if (typeof(val) == 'undefined' || val == '') { return; } val = $.trim(val); if ($.inArray(val, this) == -1) { this.push(val); } }; /** * generate a formatted datetime string of the current datetime * @return {String} formatted datetime string */ function datetime() { var date, day = 0, month = 0, year = 0, hour = 0, minute = 0, days = "", months = "", years = "", hours = "", minutes = ""; date = new Date(); day = date.getDate(); month = date.getMonth() + 1; year = date.getFullYear(); hour = date.getHours(); minute = date.getMinutes(); // format values smaller that 10 with a leading 0 days = (day < 10) ? "0" + day.toString() : day.toString(); months = (month < 10) ? "0" + month.toString() : month.toString(); years = (year < 1000) ? year.toString() : year.toString(); minutes = (minute < 10) ? "0" + minute.toString() : minute.toString(); hours = (hour < 10) ? "0" + hour.toString() : hour.toString(); return days + "." + months + "." + years + " - " + hours + ":" + minutes; } /** * round a given value to the specified precision, difference to Math.round() is that there * will be appended Zeros to the end if the precision is not reached (0.1 gets rounded to 0.100 when precision is set to 3) * @param {Number} x value to round * @param {Number} n precision * @return {String} */ function round(x, n) { var e = 0, k = ""; if (n < 0 || n > 14) { return 0; } if (n === 0) { return Math.round(x); } else { e = Math.pow(10, n); k = (Math.round(x * e) / e).toString(); if (k.indexOf('.') === -1) { k += '.'; } k += e.toString().substring(1); return k.substring(0, k.indexOf('.') + n + 1); } } phpsysinfo-3.2.5/js/vendor/000077500000000000000000000000001265516077000156455ustar00rootroot00000000000000phpsysinfo-3.2.5/js/vendor/README000066400000000000000000000032111265516077000165220ustar00rootroot00000000000000versions, links and simple description of used jquery files =========================================================== bootstrap.min.js --------- VERSION : 3.3.6 URL : http://getbootstrap.com/ DESC : Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web USED : used for the entire bootstrap userinterface transparency.js --------- VERSION : 0.10.0 URL : http://leonidas.github.io/transparency/ DESC : Transparency is a minimal template engine for jQuery. It maps JSON objects to DOM elements with zero configuration. Just call .render() USED : used for the entire bootstrap userinterface html5shiv-printshiv.js --------- VERSION : 3.7.2 URL : https://github.com/aFarkas/html5shiv/ DESC : Enabling HTML5 Shiv Script and Print Support on old IE6-9 Browser Safari 4.x and Firefox 3.x USED : used for the entire bootstrap userinterface console-shim.js --------- VERSION : URL : https://github.com/liamnewmarch/console-shim/ DESC : Shim to make browsers store console messages without Dev Tools open (e.g. IE9) USED : used for the entire bootstrap userinterface sorttable.js --------- VERSION : 2+2014.12.25.12_fix-noinit URL : http://www.kryogenix.org/code/browser/sorttable/ DESC : Make all your tables sortable USED : used for the entire bootstrap userinterface html5shiv-printshiv.js --------- VERSION : 1.4.2+accesserrorfix URL : https://github.com/scottjehl/Respond/ DESC : A fast & lightweight polyfill for min/max-width CSS3 Media Queries (for IE 6-8, and more) USED : used for the entire bootstrap userinterface phpsysinfo-3.2.5/js/vendor/bootstrap.min.js000066400000000000000000001100041265516077000207760ustar00rootroot00000000000000/*! * Bootstrap v3.3.6 (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under the MIT license */ if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
    ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);phpsysinfo-3.2.5/js/vendor/console-shim.js000066400000000000000000000022351265516077000206050ustar00rootroot00000000000000/* https://github.com/liamnewmarch/console-shim 2014 CC-BY @liamnewmarch */ if (!('console' in window)) { (function() { var Console, __console; Console = function() { var check, key, log, methods, _i, _len, _ref; this.__buffer = []; log = function() { return this.__buffer.push(arguments); }; methods = 'assert count debug dir dirxml error exception info log trace warn'; _ref = methods.split(' '); for (_i = 0, _len = _ref.length; _i < _len; _i++) { key = _ref[_i]; this[key] = log; } check = setInterval(function() { var data, func, _j, _len1, _ref1, _ref2; if ((((_ref1 = window.console) != null ? _ref1.log : void 0) != null) && !console.__buffer) { clearInterval(check); func = Function.prototype.bind ? Function.prototype.bind.call(console.log, console) : console.log; _ref2 = __console.__buffer; for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { data = _ref2[_j]; func.apply(console, data); } } }, 1000); }; return __console = window.console = new Console(); })(); } phpsysinfo-3.2.5/js/vendor/html5shiv-printshiv.js000066400000000000000000000374171265516077000221660ustar00rootroot00000000000000/** * @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed */ ;(function(window, document) { /*jshint evil:true */ /** version */ var version = '3.7.2'; /** Preset options */ var options = window.html5 || {}; /** Used to skip problem elements */ var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; /** Not all elements can be cloned in IE **/ var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i; /** Detect whether the browser supports default html5 styles */ var supportsHtml5Styles; /** Name of the expando, to work with multiple documents or to re-shiv one document */ var expando = '_html5shiv'; /** The id for the the documents expando */ var expanID = 0; /** Cached data for each document */ var expandoData = {}; /** Detect whether the browser supports unknown elements */ var supportsUnknownElements; (function() { try { var a = document.createElement('a'); a.innerHTML = ''; //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles supportsHtml5Styles = ('hidden' in a); supportsUnknownElements = a.childNodes.length == 1 || (function() { // assign a false positive if unable to shiv (document.createElement)('a'); var frag = document.createDocumentFragment(); return ( typeof frag.cloneNode == 'undefined' || typeof frag.createDocumentFragment == 'undefined' || typeof frag.createElement == 'undefined' ); }()); } catch(e) { // assign a false positive if detection fails => unable to shiv supportsHtml5Styles = true; supportsUnknownElements = true; } }()); /*--------------------------------------------------------------------------*/ /** * Creates a style sheet with the given CSS text and adds it to the document. * @private * @param {Document} ownerDocument The document. * @param {String} cssText The CSS text. * @returns {StyleSheet} The style element. */ function addStyleSheet(ownerDocument, cssText) { var p = ownerDocument.createElement('p'), parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; p.innerHTML = 'x'; return parent.insertBefore(p.lastChild, parent.firstChild); } /** * Returns the value of `html5.elements` as an array. * @private * @returns {Array} An array of shived element node names. */ function getElements() { var elements = html5.elements; return typeof elements == 'string' ? elements.split(' ') : elements; } /** * Extends the built-in list of html5 elements * @memberOf html5 * @param {String|Array} newElements whitespace separated list or array of new element names to shiv * @param {Document} ownerDocument The context document. */ function addElements(newElements, ownerDocument) { var elements = html5.elements; if(typeof elements != 'string'){ elements = elements.join(' '); } if(typeof newElements != 'string'){ newElements = newElements.join(' '); } html5.elements = elements +' '+ newElements; shivDocument(ownerDocument); } /** * Returns the data associated to the given document * @private * @param {Document} ownerDocument The document. * @returns {Object} An object of data. */ function getExpandoData(ownerDocument) { var data = expandoData[ownerDocument[expando]]; if (!data) { data = {}; expanID++; ownerDocument[expando] = expanID; expandoData[expanID] = data; } return data; } /** * returns a shived element for the given nodeName and document * @memberOf html5 * @param {String} nodeName name of the element * @param {Document} ownerDocument The context document. * @returns {Object} The shived element. */ function createElement(nodeName, ownerDocument, data){ if (!ownerDocument) { ownerDocument = document; } if(supportsUnknownElements){ return ownerDocument.createElement(nodeName); } if (!data) { data = getExpandoData(ownerDocument); } var node; if (data.cache[nodeName]) { node = data.cache[nodeName].cloneNode(); } else if (saveClones.test(nodeName)) { node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); } else { node = data.createElem(nodeName); } // Avoid adding some elements to fragments in IE < 9 because // * Attributes like `name` or `type` cannot be set/changed once an element // is inserted into a document/fragment // * Link elements with `src` attributes that are inaccessible, as with // a 403 response, will cause the tab/window to crash // * Script elements appended to fragments will execute when their `src` // or `text` property is set return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node; } /** * returns a shived DocumentFragment for the given document * @memberOf html5 * @param {Document} ownerDocument The context document. * @returns {Object} The shived DocumentFragment. */ function createDocumentFragment(ownerDocument, data){ if (!ownerDocument) { ownerDocument = document; } if(supportsUnknownElements){ return ownerDocument.createDocumentFragment(); } data = data || getExpandoData(ownerDocument); var clone = data.frag.cloneNode(), i = 0, elems = getElements(), l = elems.length; for(;i+~])(' + getElements().join('|') + ')(?=[[\\s,>+~#.:]|$)', 'gi'), replacement = '$1' + shivNamespace + '\\:$2'; while (index--) { pair = parts[index] = parts[index].split('}'); pair[pair.length - 1] = pair[pair.length - 1].replace(reElements, replacement); parts[index] = pair.join('}'); } return parts.join('{'); } /** * Removes the given wrappers, leaving the original elements. * @private * @params {Array} wrappers An array of printable wrappers. */ function removeWrappers(wrappers) { var index = wrappers.length; while (index--) { wrappers[index].removeNode(); } } /*--------------------------------------------------------------------------*/ /** * Shivs the given document for print. * @memberOf html5 * @param {Document} ownerDocument The document to shiv. * @returns {Document} The shived document. */ function shivPrint(ownerDocument) { var shivedSheet, wrappers, data = getExpandoData(ownerDocument), namespaces = ownerDocument.namespaces, ownerWindow = ownerDocument.parentWindow; if (!supportsShivableSheets || ownerDocument.printShived) { return ownerDocument; } if (typeof namespaces[shivNamespace] == 'undefined') { namespaces.add(shivNamespace); } function removeSheet() { clearTimeout(data._removeSheetTimer); if (shivedSheet) { shivedSheet.removeNode(true); } shivedSheet= null; } ownerWindow.attachEvent('onbeforeprint', function() { removeSheet(); var imports, length, sheet, collection = ownerDocument.styleSheets, cssText = [], index = collection.length, sheets = Array(index); // convert styleSheets collection to an array while (index--) { sheets[index] = collection[index]; } // concat all style sheet CSS text while ((sheet = sheets.pop())) { // IE does not enforce a same origin policy for external style sheets... // but has trouble with some dynamically created stylesheets if (!sheet.disabled && reMedia.test(sheet.media)) { try { imports = sheet.imports; length = imports.length; } catch(er){ length = 0; } for (index = 0; index < length; index++) { sheets.push(imports[index]); } try { cssText.push(sheet.cssText); } catch(er){} } } // wrap all HTML5 elements with printable elements and add the shived style sheet cssText = shivCssText(cssText.reverse().join('')); wrappers = addWrappers(ownerDocument); shivedSheet = addStyleSheet(ownerDocument, cssText); }); ownerWindow.attachEvent('onafterprint', function() { // remove wrappers, leaving the original elements, and remove the shived style sheet removeWrappers(wrappers); clearTimeout(data._removeSheetTimer); data._removeSheetTimer = setTimeout(removeSheet, 500); }); ownerDocument.printShived = true; return ownerDocument; } /*--------------------------------------------------------------------------*/ // expose API html5.type += ' print'; html5.shivPrint = shivPrint; // shiv for print shivPrint(document); }(this, document)); phpsysinfo-3.2.5/js/vendor/respond.js000066400000000000000000000237501265516077000176640ustar00rootroot00000000000000/* Respond.js: min/max-width media query polyfill. (c) Scott Jehl. MIT Lic. j.mp/respondjs */ (function( w ){ "use strict"; //exposed namespace var respond = {}; w.respond = respond; //define update even in native-mq-supporting browsers, to avoid errors respond.update = function(){}; //define ajax obj var requestQueue = [], xmlHttp = (function() { var xmlhttpmethod = false; try { xmlhttpmethod = new w.XMLHttpRequest(); } catch( e ){ xmlhttpmethod = new w.ActiveXObject( "Microsoft.XMLHTTP" ); } return function(){ return xmlhttpmethod; }; })(), //tweaked Ajax functions from Quirksmode ajax = function( url, callback ) { var req = xmlHttp(); if (!req){ return; } try { req.open( "GET", url, true ); req.onreadystatechange = function () { if ( req.readyState !== 4 || req.status !== 200 && req.status !== 304 ){ return; } callback( req.responseText ); }; if ( req.readyState === 4 ){ return; } req.send( null ); } catch ( e ) { } }, isUnsupportedMediaQuery = function( query ) { return query.replace( respond.regex.minmaxwh, '' ).match( respond.regex.other ); }; //expose for testing respond.ajax = ajax; respond.queue = requestQueue; respond.unsupportedmq = isUnsupportedMediaQuery; respond.regex = { media: /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi, keyframes: /@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi, comments: /\/\*[^*]*\*+([^/][^*]*\*+)*\//gi, urls: /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g, findStyles: /@media *([^\{]+)\{([\S\s]+?)$/, only: /(only\s+)?([a-zA-Z]+)\s?/, minw: /\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/, maxw: /\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/, minmaxwh: /\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi, other: /\([^\)]*\)/g }; //expose media query support flag for external use respond.mediaQueriesSupported = w.matchMedia && w.matchMedia( "only all" ) !== null && w.matchMedia( "only all" ).matches; //if media queries are supported, exit here if( respond.mediaQueriesSupported ){ return; } //define vars var doc = w.document, docElem = doc.documentElement, mediastyles = [], rules = [], appendedEls = [], parsedSheets = {}, resizeThrottle = 30, head = doc.getElementsByTagName( "head" )[0] || docElem, base = doc.getElementsByTagName( "base" )[0], links = head.getElementsByTagName( "link" ), lastCall, resizeDefer, //cached container for 1em value, populated the first time it's needed eminpx, // returns the value of 1em in pixels getEmValue = function() { var ret, div = doc.createElement('div'), body = doc.body, originalHTMLFontSize = docElem.style.fontSize, originalBodyFontSize = body && body.style.fontSize, fakeUsed = false; div.style.cssText = "position:absolute;font-size:1em;width:1em"; if( !body ){ body = fakeUsed = doc.createElement( "body" ); body.style.background = "none"; } // 1em in a media query is the value of the default font size of the browser // reset docElem and body to ensure the correct value is returned docElem.style.fontSize = "100%"; body.style.fontSize = "100%"; body.appendChild( div ); if( fakeUsed ){ docElem.insertBefore( body, docElem.firstChild ); } ret = div.offsetWidth; if( fakeUsed ){ docElem.removeChild( body ); } else { body.removeChild( div ); } // restore the original values docElem.style.fontSize = originalHTMLFontSize; if( originalBodyFontSize ) { body.style.fontSize = originalBodyFontSize; } //also update eminpx before returning ret = eminpx = parseFloat(ret); return ret; }, //enable/disable styles applyMedia = function( fromResize ){ var name = "clientWidth", docElemProp = docElem[ name ], currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[ name ] || docElemProp, styleBlocks = {}, lastLink = links[ links.length-1 ], now = (new Date()).getTime(); //throttle resize calls if( fromResize && lastCall && now - lastCall < resizeThrottle ){ w.clearTimeout( resizeDefer ); resizeDefer = w.setTimeout( applyMedia, resizeThrottle ); return; } else { lastCall = now; } for( var i in mediastyles ){ if( mediastyles.hasOwnProperty( i ) ){ var thisstyle = mediastyles[ i ], min = thisstyle.minw, max = thisstyle.maxw, minnull = min === null, maxnull = max === null, em = "em"; if( !!min ){ min = parseFloat( min ) * ( min.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); } if( !!max ){ max = parseFloat( max ) * ( max.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); } // if there's no media query at all (the () part), or min or max is not null, and if either is present, they're true if( !thisstyle.hasquery || ( !minnull || !maxnull ) && ( minnull || currWidth >= min ) && ( maxnull || currWidth <= max ) ){ if( !styleBlocks[ thisstyle.media ] ){ styleBlocks[ thisstyle.media ] = []; } styleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] ); } } } //remove any existing respond style element(s) for( var j in appendedEls ){ if( appendedEls.hasOwnProperty( j ) ){ if( appendedEls[ j ] && appendedEls[ j ].parentNode === head ){ head.removeChild( appendedEls[ j ] ); } } } appendedEls.length = 0; //inject active styles, grouped by media type for( var k in styleBlocks ){ if( styleBlocks.hasOwnProperty( k ) ){ var ss = doc.createElement( "style" ), css = styleBlocks[ k ].join( "\n" ); ss.type = "text/css"; ss.media = k; //originally, ss was appended to a documentFragment and sheets were appended in bulk. //this caused crashes in IE in a number of circumstances, such as when the HTML element had a bg image set, so appending beforehand seems best. Thanks to @dvelyk for the initial research on this one! head.insertBefore( ss, lastLink.nextSibling ); if ( ss.styleSheet ){ ss.styleSheet.cssText = css; } else { ss.appendChild( doc.createTextNode( css ) ); } //push to appendedEls to track for later removal appendedEls.push( ss ); } } }, //find media blocks in css text, convert to style blocks translate = function( styles, href, media ){ var qs = styles.replace( respond.regex.comments, '' ) .replace( respond.regex.keyframes, '' ) .match( respond.regex.media ), ql = qs && qs.length || 0; //try to get CSS path href = href.substring( 0, href.lastIndexOf( "/" ) ); var repUrls = function( css ){ return css.replace( respond.regex.urls, "$1" + href + "$2$3" ); }, useMedia = !ql && media; //if path exists, tack on trailing slash if( href.length ){ href += "/"; } //if no internal queries exist, but media attr does, use that //note: this currently lacks support for situations where a media attr is specified on a link AND //its associated stylesheet has internal CSS media queries. //In those cases, the media attribute will currently be ignored. if( useMedia ){ ql = 1; } for( var i = 0; i < ql; i++ ){ var fullq, thisq, eachq, eql; //media attr if( useMedia ){ fullq = media; rules.push( repUrls( styles ) ); } //parse for styles else{ fullq = qs[ i ].match( respond.regex.findStyles ) && RegExp.$1; rules.push( RegExp.$2 && repUrls( RegExp.$2 ) ); } eachq = fullq.split( "," ); eql = eachq.length; for( var j = 0; j < eql; j++ ){ thisq = eachq[ j ]; if( isUnsupportedMediaQuery( thisq ) ) { continue; } mediastyles.push( { media : thisq.split( "(" )[ 0 ].match( respond.regex.only ) && RegExp.$2 || "all", rules : rules.length - 1, hasquery : thisq.indexOf("(") > -1, minw : thisq.match( respond.regex.minw ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ), maxw : thisq.match( respond.regex.maxw ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ) } ); } } applyMedia(); }, //recurse through request queue, get css text makeRequests = function(){ if( requestQueue.length ){ var thisRequest = requestQueue.shift(); ajax( thisRequest.href, function( styles ){ translate( styles, thisRequest.href, thisRequest.media ); parsedSheets[ thisRequest.href ] = true; // by wrapping recursive function call in setTimeout // we prevent "Stack overflow" error in IE7 w.setTimeout(function(){ makeRequests(); },0); } ); } }, //loop stylesheets, send text content to translate ripCSS = function(){ for( var i = 0; i < links.length; i++ ){ var sheet = links[ i ], href = sheet.href, media = sheet.media, isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet"; //only links plz and prevent re-parsing if( !!href && isCSS && !parsedSheets[ href ] ){ // selectivizr exposes css through the rawCssText expando if (sheet.styleSheet && sheet.styleSheet.rawCssText) { translate( sheet.styleSheet.rawCssText, href, media ); parsedSheets[ href ] = true; } else { if( (!/^([a-zA-Z:]*\/\/)/.test( href ) && !base) || href.replace( RegExp.$1, "" ).split( "/" )[0] === w.location.host ){ // IE7 doesn't handle urls that start with '//' for ajax request // manually add in the protocol if ( href.substring(0,2) === "//" ) { href = w.location.protocol + href; } requestQueue.push( { href: href, media: media } ); } } } } makeRequests(); }; //translate CSS ripCSS(); //expose update for re-running respond later on respond.update = ripCSS; //expose getEmValue respond.getEmValue = getEmValue; //adjust on resize function callMedia(){ applyMedia( true ); } if( w.addEventListener ){ w.addEventListener( "resize", callMedia, false ); } else if( w.attachEvent ){ w.attachEvent( "onresize", callMedia ); } })(this); phpsysinfo-3.2.5/js/vendor/sorttable.js000066400000000000000000000376121265516077000202130ustar00rootroot00000000000000/* SortTable version 2+2014.12.25_fix-noinit 7th April 2007 Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/ 25th December 2014 Fixed behavior of multiple sortable tables in same page. Redefinition of sortfwdind and sortrevind icons. Mieczyslaw Nalewaj (namiltd@users.sourceforge.net) 19th November 20145 Disabled autostart after loading. You have to run sorttable.init() at the beginning of the code, or makeSortable for each table. Mieczyslaw Nalewaj (namiltd@users.sourceforge.net) Instructions: Download this file Add to your HTML Add class="sortable" to any table you'd like to make sortable Click on the headers to sort Thanks to many, many people for contributions and suggestions. Licenced as X11: http://www.kryogenix.org/code/browser/licence.html This basically means: do what you want with it. */ sorttable = { init: function() { // quit if this function has already been called if (arguments.callee.done) return; // flag this function so we don't do the same thing twice arguments.callee.done = true; if (!document.createElement || !document.getElementsByTagName) return; sorttable.DATE_RE = /^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/; forEach(document.getElementsByTagName('table'), function(table) { if (table.className.search(/\bsortable\b/) != -1) { sorttable.makeSortable(table); } }); }, makeSortable: function(table) { if (table.getElementsByTagName('thead').length == 0) { // table doesn't have a tHead. Since it should have, create one and // put the first table row in it. the = document.createElement('thead'); the.appendChild(table.rows[0]); table.insertBefore(the,table.firstChild); } // Safari doesn't support table.tHead, sigh if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0]; if (table.tHead.rows.length != 1) return; // can't cope with two header rows // Sorttable v1 put rows with a class of "sortbottom" at the bottom (as // "total" rows, for example). This is B&R, since what you're supposed // to do is put them in a tfoot. So, if there are sortbottom rows, // for backwards compatibility, move them to tfoot (creating it if needed). sortbottomrows = []; for (var i=0; i 12) { // definitely dd/mm return sorttable.sort_ddmm; } else if (second > 12) { return sorttable.sort_mmdd; } else { // looks like a date, but we can't tell which, so assume // that it's dd/mm (English imperialism!) and keep looking sortfn = sorttable.sort_ddmm; } } } } return sortfn; }, getInnerText: function(node) { // gets the text we want to use for sorting for a cell. // strips leading and trailing whitespace. // this is *not* a generic getInnerText function; it's special to sorttable. // for example, you can override the cell text with a customkey attribute. // it also gets .value for fields. if (!node) return ""; hasInputs = (typeof node.getElementsByTagName == 'function') && node.getElementsByTagName('input').length; if (node.getAttribute("sorttable_customkey") != null) { return node.getAttribute("sorttable_customkey"); } else if (typeof node.textContent != 'undefined' && !hasInputs) { return node.textContent.replace(/^\s+|\s+$/g, ''); } else if (typeof node.innerText != 'undefined' && !hasInputs) { return node.innerText.replace(/^\s+|\s+$/g, ''); } else if (typeof node.text != 'undefined' && !hasInputs) { return node.text.replace(/^\s+|\s+$/g, ''); } else { switch (node.nodeType) { case 3: if (node.nodeName.toLowerCase() == 'input') { return node.value.replace(/^\s+|\s+$/g, ''); } case 4: return node.nodeValue.replace(/^\s+|\s+$/g, ''); break; case 1: case 11: var innerText = ''; for (var i = 0; i < node.childNodes.length; i++) { innerText += sorttable.getInnerText(node.childNodes[i]); } return innerText.replace(/^\s+|\s+$/g, ''); break; default: return ''; } } }, reverse: function(tbody) { // reverse the rows in a tbody newrows = []; for (var i=0; i=0; i--) { tbody.appendChild(newrows[i]); } delete newrows; }, /* sort functions each sort function takes two parameters, a and b you are comparing a[0] and b[0] */ sort_numeric: function(a,b) { aa = parseFloat(a[0].replace(/[^0-9.-]/g,'')); if (isNaN(aa)) aa = 0; bb = parseFloat(b[0].replace(/[^0-9.-]/g,'')); if (isNaN(bb)) bb = 0; return aa-bb; }, sort_alpha: function(a,b) { if (a[0]==b[0]) return 0; if (a[0] 0 ) { var q = list[i]; list[i] = list[i+1]; list[i+1] = q; swap = true; } } // for t--; if (!swap) break; for(var i = t; i > b; --i) { if ( comp_func(list[i], list[i-1]) < 0 ) { var q = list[i]; list[i] = list[i-1]; list[i-1] = q; swap = true; } } // for b++; } // while(swap) } }; // written by Dean Edwards, 2005 // with input from Tino Zijdel, Matthias Miller, Diego Perini // http://dean.edwards.name/weblog/2005/10/add-event/ function dean_addEvent(element, type, handler) { if (element.addEventListener) { element.addEventListener(type, handler, false); } else { // assign each event handler a unique ID if (!handler.$$guid) handler.$$guid = dean_addEvent.guid++; // create a hash table of event types for the element if (!element.events) element.events = {}; // create a hash table of event handlers for each element/event pair var handlers = element.events[type]; if (!handlers) { handlers = element.events[type] = {}; // store the existing event handler (if there is one) if (element["on" + type]) { handlers[0] = element["on" + type]; } } // store the event handler in the hash table handlers[handler.$$guid] = handler; // assign a global event handler to do all the work element["on" + type] = handleEvent; } }; // a counter used to create unique IDs dean_addEvent.guid = 1; function removeEvent(element, type, handler) { if (element.removeEventListener) { element.removeEventListener(type, handler, false); } else { // delete the event handler from the hash table if (element.events && element.events[type]) { delete element.events[type][handler.$$guid]; } } }; function handleEvent(event) { var returnValue = true; // grab the event object (IE uses a global event object) event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event); // get a reference to the hash table of event handlers var handlers = this.events[event.type]; // execute each event handler for (var i in handlers) { this.$$handleEvent = handlers[i]; if (this.$$handleEvent(event) === false) { returnValue = false; } } return returnValue; }; function fixEvent(event) { // add W3C standard event methods event.preventDefault = fixEvent.preventDefault; event.stopPropagation = fixEvent.stopPropagation; return event; }; fixEvent.preventDefault = function() { this.returnValue = false; }; fixEvent.stopPropagation = function() { this.cancelBubble = true; }; // Dean's forEach: http://dean.edwards.name/base/forEach.js /* forEach, version 1.0 Copyright 2006, Dean Edwards License: http://www.opensource.org/licenses/mit-license.php */ // array-like enumeration if (!Array.forEach) { // mozilla already supports this Array.forEach = function(array, block, context) { for (var i = 0; i < array.length; i++) { block.call(context, array[i], i, array); } }; } // generic enumeration Function.prototype.forEach = function(object, block, context) { for (var key in object) { if (typeof this.prototype[key] == "undefined") { block.call(context, object[key], key, object); } } }; // character enumeration String.forEach = function(string, block, context) { Array.forEach(string.split(""), function(chr, index) { block.call(context, chr, index, string); }); }; // globally resolve forEach enumeration var forEach = function(object, block, context) { if (object) { var resolve = Object; // default if (object instanceof Function) { // functions have a "length" property resolve = Function; } else if (object.forEach instanceof Function) { // the object implements a custom forEach method so use that object.forEach(block, context); return; } else if (typeof object == "string") { // the object is a string resolve = String; } else if (typeof object.length == "number") { // the object is array-like resolve = Array; } resolve.forEach(object, block, context); } }; phpsysinfo-3.2.5/js/vendor/transparency.js000066400000000000000000000533631265516077000207260ustar00rootroot00000000000000(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o= 0 || element.el.name === key || element.el.getAttribute('data-bind') === key; }; Transparency.clone = function(node) { return $(node).clone()[0]; }; Transparency.jQueryPlugin = helpers.chainable(function(models, directives, options) { var context, _i, _len, _results; _results = []; for (_i = 0, _len = this.length; _i < _len; _i++) { context = this[_i]; _results.push(Transparency.render(context, models, directives, options)); } return _results; }); if ((typeof jQuery !== "undefined" && jQuery !== null) || (typeof Zepto !== "undefined" && Zepto !== null)) { $ = jQuery || Zepto; if ($ != null) { $.fn.render = Transparency.jQueryPlugin; } } if (typeof module !== "undefined" && module !== null ? module.exports : void 0) { module.exports = Transparency; } if (typeof window !== "undefined" && window !== null) { window.Transparency = Transparency; } if (typeof define !== "undefined" && define !== null ? define.amd : void 0) { define(function() { return Transparency; }); } },{"../lib/lodash.js":7,"./context":3,"./helpers":5}],2:[function(require,module,exports){ var Attribute, AttributeFactory, BooleanAttribute, Class, Html, Text, helpers, _, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; _ = require('../lib/lodash'); helpers = require('./helpers'); module.exports = AttributeFactory = { Attributes: {}, createAttribute: function(element, name) { var Attr; Attr = AttributeFactory.Attributes[name] || Attribute; return new Attr(element, name); } }; Attribute = (function() { function Attribute(el, name) { this.el = el; this.name = name; this.templateValue = this.el.getAttribute(this.name) || ''; } Attribute.prototype.set = function(value) { this.el[this.name] = value; return this.el.setAttribute(this.name, value.toString()); }; return Attribute; })(); BooleanAttribute = (function(_super) { var BOOLEAN_ATTRIBUTES, name, _i, _len; __extends(BooleanAttribute, _super); BOOLEAN_ATTRIBUTES = ['hidden', 'async', 'defer', 'autofocus', 'formnovalidate', 'disabled', 'autofocus', 'formnovalidate', 'multiple', 'readonly', 'required', 'checked', 'scoped', 'reversed', 'selected', 'loop', 'muted', 'autoplay', 'controls', 'seamless', 'default', 'ismap', 'novalidate', 'open', 'typemustmatch', 'truespeed']; for (_i = 0, _len = BOOLEAN_ATTRIBUTES.length; _i < _len; _i++) { name = BOOLEAN_ATTRIBUTES[_i]; AttributeFactory.Attributes[name] = BooleanAttribute; } function BooleanAttribute(el, name) { this.el = el; this.name = name; this.templateValue = this.el.getAttribute(this.name) || false; } BooleanAttribute.prototype.set = function(value) { this.el[this.name] = value; if (value) { return this.el.setAttribute(this.name, this.name); } else { return this.el.removeAttribute(this.name); } }; return BooleanAttribute; })(Attribute); Text = (function(_super) { __extends(Text, _super); AttributeFactory.Attributes['text'] = Text; function Text(el, name) { var child; this.el = el; this.name = name; this.templateValue = ((function() { var _i, _len, _ref, _results; _ref = this.el.childNodes; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { child = _ref[_i]; if (child.nodeType === helpers.TEXT_NODE) { _results.push(child.nodeValue); } } return _results; }).call(this)).join(''); this.children = _.toArray(this.el.children); if (!(this.textNode = this.el.firstChild)) { this.el.appendChild(this.textNode = this.el.ownerDocument.createTextNode('')); } else if (this.textNode.nodeType !== helpers.TEXT_NODE) { this.textNode = this.el.insertBefore(this.el.ownerDocument.createTextNode(''), this.textNode); } } Text.prototype.set = function(text) { var child, _i, _len, _ref, _results; while (child = this.el.firstChild) { this.el.removeChild(child); } this.textNode.nodeValue = text; this.el.appendChild(this.textNode); _ref = this.children; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { child = _ref[_i]; _results.push(this.el.appendChild(child)); } return _results; }; return Text; })(Attribute); Html = (function(_super) { __extends(Html, _super); AttributeFactory.Attributes['html'] = Html; function Html(el) { this.el = el; this.templateValue = ''; this.children = _.toArray(this.el.children); } Html.prototype.set = function(html) { var child, _i, _len, _ref, _results; while (child = this.el.firstChild) { this.el.removeChild(child); } this.el.innerHTML = html + this.templateValue; _ref = this.children; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { child = _ref[_i]; _results.push(this.el.appendChild(child)); } return _results; }; return Html; })(Attribute); Class = (function(_super) { __extends(Class, _super); AttributeFactory.Attributes['class'] = Class; function Class(el) { Class.__super__.constructor.call(this, el, 'class'); } return Class; })(Attribute); },{"../lib/lodash":7,"./helpers":5}],3:[function(require,module,exports){ var Context, Instance, after, before, chainable, cloneNode, _ref; _ref = require('./helpers'), before = _ref.before, after = _ref.after, chainable = _ref.chainable, cloneNode = _ref.cloneNode; Instance = require('./instance'); module.exports = Context = (function() { var attach, detach; detach = chainable(function() { this.parent = this.el.parentNode; if (this.parent) { this.nextSibling = this.el.nextSibling; return this.parent.removeChild(this.el); } }); attach = chainable(function() { if (this.parent) { if (this.nextSibling) { return this.parent.insertBefore(this.el, this.nextSibling); } else { return this.parent.appendChild(this.el); } } }); function Context(el, Transparency) { this.el = el; this.Transparency = Transparency; this.template = cloneNode(this.el); this.instances = [new Instance(this.el, this.Transparency)]; this.instanceCache = []; } Context.prototype.render = before(detach)(after(attach)(chainable(function(models, directives, options) { var children, index, instance, model, _i, _len, _results; while (models.length < this.instances.length) { this.instanceCache.push(this.instances.pop().remove()); } while (models.length > this.instances.length) { instance = this.instanceCache.pop() || new Instance(cloneNode(this.template), this.Transparency); this.instances.push(instance.appendTo(this.el)); } _results = []; for (index = _i = 0, _len = models.length; _i < _len; index = ++_i) { model = models[index]; instance = this.instances[index]; children = []; _results.push(instance.prepare(model, children).renderValues(model, children).renderDirectives(model, index, directives).renderChildren(model, children, directives, options)); } return _results; }))); return Context; })(); },{"./helpers":5,"./instance":6}],4:[function(require,module,exports){ var AttributeFactory, Checkbox, Element, ElementFactory, Input, Radio, Select, TextArea, VoidElement, helpers, _, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; _ = require('../lib/lodash.js'); helpers = require('./helpers'); AttributeFactory = require('./attributeFactory'); module.exports = ElementFactory = { Elements: { input: {} }, createElement: function(el) { var El, name; if ('input' === (name = el.nodeName.toLowerCase())) { El = ElementFactory.Elements[name][el.type.toLowerCase()] || Input; } else { El = ElementFactory.Elements[name] || Element; } return new El(el); } }; Element = (function() { function Element(el) { this.el = el; this.attributes = {}; this.childNodes = _.toArray(this.el.childNodes); this.nodeName = this.el.nodeName.toLowerCase(); this.classNames = this.el.className.split(' '); this.originalAttributes = {}; } Element.prototype.empty = function() { var child; while (child = this.el.firstChild) { this.el.removeChild(child); } return this; }; Element.prototype.reset = function() { var attribute, name, _ref, _results; _ref = this.attributes; _results = []; for (name in _ref) { attribute = _ref[name]; _results.push(attribute.set(attribute.templateValue)); } return _results; }; Element.prototype.render = function(value) { return this.attr('text', value); }; Element.prototype.attr = function(name, value) { var attribute, _base; attribute = (_base = this.attributes)[name] || (_base[name] = AttributeFactory.createAttribute(this.el, name, value)); if (value != null) { attribute.set(value); } return attribute; }; Element.prototype.renderDirectives = function(model, index, attributes) { var directive, name, value, _results; _results = []; for (name in attributes) { if (!__hasProp.call(attributes, name)) continue; directive = attributes[name]; if (!(typeof directive === 'function')) { continue; } value = directive.call(model, { element: this.el, index: index, value: this.attr(name).templateValue }); if (value != null) { _results.push(this.attr(name, value)); } else { _results.push(void 0); } } return _results; }; return Element; })(); Select = (function(_super) { __extends(Select, _super); ElementFactory.Elements['select'] = Select; function Select(el) { Select.__super__.constructor.call(this, el); this.elements = helpers.getElements(el); } Select.prototype.render = function(value) { var option, _i, _len, _ref, _results; value = value.toString(); _ref = this.elements; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { option = _ref[_i]; if (option.nodeName === 'option') { _results.push(option.attr('selected', option.el.value === value)); } } return _results; }; return Select; })(Element); VoidElement = (function(_super) { var VOID_ELEMENTS, nodeName, _i, _len; __extends(VoidElement, _super); function VoidElement() { return VoidElement.__super__.constructor.apply(this, arguments); } VOID_ELEMENTS = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']; for (_i = 0, _len = VOID_ELEMENTS.length; _i < _len; _i++) { nodeName = VOID_ELEMENTS[_i]; ElementFactory.Elements[nodeName] = VoidElement; } VoidElement.prototype.attr = function(name, value) { if (name !== 'text' && name !== 'html') { return VoidElement.__super__.attr.call(this, name, value); } }; return VoidElement; })(Element); Input = (function(_super) { __extends(Input, _super); function Input() { return Input.__super__.constructor.apply(this, arguments); } Input.prototype.render = function(value) { return this.attr('value', value); }; return Input; })(VoidElement); TextArea = (function(_super) { __extends(TextArea, _super); function TextArea() { return TextArea.__super__.constructor.apply(this, arguments); } ElementFactory.Elements['textarea'] = TextArea; return TextArea; })(Input); Checkbox = (function(_super) { __extends(Checkbox, _super); function Checkbox() { return Checkbox.__super__.constructor.apply(this, arguments); } ElementFactory.Elements['input']['checkbox'] = Checkbox; Checkbox.prototype.render = function(value) { return this.attr('checked', Boolean(value)); }; return Checkbox; })(Input); Radio = (function(_super) { __extends(Radio, _super); function Radio() { return Radio.__super__.constructor.apply(this, arguments); } ElementFactory.Elements['input']['radio'] = Radio; return Radio; })(Checkbox); },{"../lib/lodash.js":7,"./attributeFactory":2,"./helpers":5}],5:[function(require,module,exports){ var ElementFactory, expando, html5Clone, _getElements; ElementFactory = require('./elementFactory'); exports.before = function(decorator) { return function(method) { return function() { decorator.apply(this, arguments); return method.apply(this, arguments); }; }; }; exports.after = function(decorator) { return function(method) { return function() { method.apply(this, arguments); return decorator.apply(this, arguments); }; }; }; exports.chainable = exports.after(function() { return this; }); exports.onlyWith$ = function(fn) { if ((typeof jQuery !== "undefined" && jQuery !== null) || (typeof Zepto !== "undefined" && Zepto !== null)) { return (function($) { return fn(arguments); })(jQuery || Zepto); } }; exports.getElements = function(el) { var elements; elements = []; _getElements(el, elements); return elements; }; _getElements = function(template, elements) { var child, _results; child = template.firstChild; _results = []; while (child) { if (child.nodeType === exports.ELEMENT_NODE) { elements.push(new ElementFactory.createElement(child)); _getElements(child, elements); } _results.push(child = child.nextSibling); } return _results; }; exports.ELEMENT_NODE = 1; exports.TEXT_NODE = 3; html5Clone = function() { return document.createElement('nav').cloneNode(true).outerHTML !== '<:nav>'; }; exports.cloneNode = (typeof document === "undefined" || document === null) || html5Clone() ? function(node) { return node.cloneNode(true); } : function(node) { var cloned, element, _i, _len, _ref; cloned = Transparency.clone(node); if (cloned.nodeType === exports.ELEMENT_NODE) { cloned.removeAttribute(expando); _ref = cloned.getElementsByTagName('*'); for (_i = 0, _len = _ref.length; _i < _len; _i++) { element = _ref[_i]; element.removeAttribute(expando); } } return cloned; }; expando = 'transparency'; exports.data = function(element) { return element[expando] || (element[expando] = {}); }; exports.nullLogger = function() {}; exports.consoleLogger = function() { return console.log(arguments); }; exports.log = exports.nullLogger; },{"./elementFactory":4}],6:[function(require,module,exports){ var Instance, chainable, helpers, _, __hasProp = {}.hasOwnProperty; _ = require('../lib/lodash.js'); chainable = (helpers = require('./helpers')).chainable; module.exports = Instance = (function() { function Instance(template, Transparency) { this.Transparency = Transparency; this.queryCache = {}; this.childNodes = _.toArray(template.childNodes); this.elements = helpers.getElements(template); } Instance.prototype.remove = chainable(function() { var node, _i, _len, _ref, _results; _ref = this.childNodes; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { node = _ref[_i]; _results.push(node.parentNode.removeChild(node)); } return _results; }); Instance.prototype.appendTo = chainable(function(parent) { var node, _i, _len, _ref, _results; _ref = this.childNodes; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { node = _ref[_i]; _results.push(parent.appendChild(node)); } return _results; }); Instance.prototype.prepare = chainable(function(model) { var element, _i, _len, _ref, _results; _ref = this.elements; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { element = _ref[_i]; element.reset(); _results.push(helpers.data(element.el).model = model); } return _results; }); Instance.prototype.renderValues = chainable(function(model, children) { var element, key, value, _results; if (_.isElement(model) && (element = this.elements[0])) { return element.empty().el.appendChild(model); } else if (typeof model === 'object') { _results = []; for (key in model) { if (!__hasProp.call(model, key)) continue; value = model[key]; if (value != null) { if (_.isString(value) || _.isNumber(value) || _.isBoolean(value) || _.isDate(value)) { _results.push((function() { var _i, _len, _ref, _results1; _ref = this.matchingElements(key); _results1 = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { element = _ref[_i]; _results1.push(element.render(value)); } return _results1; }).call(this)); } else if (typeof value === 'object') { _results.push(children.push(key)); } else { _results.push(void 0); } } } return _results; } }); Instance.prototype.renderDirectives = chainable(function(model, index, directives) { var attributes, element, key, _results; _results = []; for (key in directives) { if (!__hasProp.call(directives, key)) continue; attributes = directives[key]; if (!(typeof attributes === 'object')) { continue; } if (typeof model !== 'object') { model = { value: model }; } _results.push((function() { var _i, _len, _ref, _results1; _ref = this.matchingElements(key); _results1 = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { element = _ref[_i]; _results1.push(element.renderDirectives(model, index, attributes)); } return _results1; }).call(this)); } return _results; }); Instance.prototype.renderChildren = chainable(function(model, children, directives, options) { var element, key, _i, _len, _results; _results = []; for (_i = 0, _len = children.length; _i < _len; _i++) { key = children[_i]; _results.push((function() { var _j, _len1, _ref, _results1; _ref = this.matchingElements(key); _results1 = []; for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) { element = _ref[_j]; _results1.push(this.Transparency.render(element.el, model[key], directives[key], options)); } return _results1; }).call(this)); } return _results; }); Instance.prototype.matchingElements = function(key) { var el, elements, _base; elements = (_base = this.queryCache)[key] || (_base[key] = (function() { var _i, _len, _ref, _results; _ref = this.elements; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { el = _ref[_i]; if (this.Transparency.matcher(el, key)) { _results.push(el); } } return _results; }).call(this)); helpers.log("Matching elements for '" + key + "':", elements); return elements; }; return Instance; })(); },{"../lib/lodash.js":7,"./helpers":5}],7:[function(require,module,exports){ var _ = {}; _.toString = Object.prototype.toString; _.toArray = function(obj) { var arr = new Array(obj.length); for (var i = 0; i < obj.length; i++) { arr[i] = obj[i]; } return arr; }; _.isString = function(obj) { return _.toString.call(obj) == '[object String]'; }; _.isNumber = function(obj) { return _.toString.call(obj) == '[object Number]'; }; _.isArray = Array.isArray || function(obj) { return _.toString.call(obj) === '[object Array]'; }; _.isDate = function(obj) { return _.toString.call(obj) === '[object Date]'; }; _.isElement = function(obj) { return !!(obj && obj.nodeType === 1); }; _.isPlainValue = function(obj) { var type; type = typeof obj; return (type !== 'object' && type !== 'function') || exports.isDate(obj); }; _.isBoolean = function(obj) { return obj === true || obj === false; }; module.exports = _; },{}]},{},[1]); phpsysinfo-3.2.5/language/000077500000000000000000000000001265516077000155175ustar00rootroot00000000000000phpsysinfo-3.2.5/language/ast.xml000066400000000000000000000241341265516077000170340ustar00rootroot00000000000000 Información del sistema Vitales del sistema Nome del sirvidor Direiciones IP Versión del nucléu Nome de la distribución Tiempu operativu Usuarios anguaño Medies d'usu Información del hardware Procesadores Modelu Velocidá de la CPU Velocidá de BUS Tamamñu de la caché Sistema Bogomips Dispositivos PCI Dispositivos IDE Dispositivos SCSI Dispositivios USB Usu de la rede Dispositivu Recibíos Unvios Fallos/Perdes Conexones de rede feches Usu de la memoria Memoria física Memoria de volcáu Sistemes de ficheros montaos Puntu de monstaxe Partición Usu Tipu Llibre Usáu Tamañu Total kB MB GB nengún Capacidá Plantía Llingua Unviar Fechu con díes hores minutos Temperatura Voltaxe Ventiladoes Valor Min Max Causes Llimite Etiqueta C F V RPM Nucléu y aplicaciones Buffers En caché Saltar a Información UPS Nome Modelu Modu Entamó Estáu Cortes Causa del útlimu corte Fin del últimu corte Voltaxe de la llinia Carga en porcentaxe Voltaxe de la batería Carga de la batería Tiempu restante de les bateríes V minutos Temperatura TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other Dispositivios TB Dispositivios I2C Number of processors Number of devices phpsysinfo-3.2.5/language/bg.xml000066400000000000000000000257501265516077000166420ustar00rootroot00000000000000 Системна информация Обща инфорамция Име на системата IP адрес Версия на ядрото Име на дистрибуцията Време на работа Активни потребители Средно натоварване Установен хардуер Процесори Модел Честота на CPU Честота на BUS Размер на кешa Bogomips за системата PCI устройства IDE устройства SCSI устройства USB устройства Ползваемост на мрежите Устройство Получени Изпратени Грешки/Изпуснати Установени мрежови връзки Ползваемост на оперативната памет Физическа памет Swap диск Монтирани файлови системи Монтирана Дял Процент на използване Тип Свободни Използвани Общ обем Всичко kB MB GB няма Капацитет Тема Език Изпрати Генерирано от дена часа минути Температура Напрежение Вентилатори Стойност Мин Макс Хистерезис Предел Име C F V Об/мин Ядро + приложения Буфери Кеширани Отиди на Информация за UPS Име Модел Режим Време на включване Състояние Прехвърляния към батерия Причина за последното прехвърляне Време на последното прехвърляне Напрежение на линията Процент на натовареност Напрежение на батерията Заряд на батерията Оставащо време на батерията V минути Температура TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB устройства I2C устройства Number of processors Number of devices phpsysinfo-3.2.5/language/ca.xml000066400000000000000000000241251265516077000166300ustar00rootroot00000000000000 Informació del Servidor Vitals Nom del Servidor Direccions IP Versió del Kernel Nom Distribució Temps en actiu Usuaris actuales Mitjana d'ús Informació del Hardware Procesadors Model Velocitat CPU Velocitat BUS Mida memòria CAU Sistema Bogomips Dispositius PCI Dispositius IDE Dispositius SCSI Dispositius USB Ús de la xarxa Dispositius Rebuts Enviats Err/Perduts Connexions de Xarxa Establertes Ús de la memòria Memòria Física Disc Swap Sistema d'arxius Muntats Punt de muntatge Partició Ús Tipus Lliure Usada Mida Total kB MB GB cap Mida Plantilla Llenguatge Enviat Creat per dies hores minuts Temperatura Voltaje Ventiladors Valor Mín Màx Histèresi Límit Etiqueta C F V RPM Kernel + aplicacions Buffers Memòria cau Saltar a Informació UPS Nom Model Mode Iniciat Estat Interrupcions Causa última interrupció Temps última interrupció Voltatge de la línia Percentatge carregat Voltatge bateria Càrrega de la bateria Vida restant de les bateries V minuts Temperatura TB TiB GiB MiB KiB PiB PB MHz GHz Virtualització Darrera arrencada B Idioma del Sistema Pàgina de Codi Detalls CPU Velocitat Màx CPU Velocitat Mín Energia W Data de la bateria Actual A Màquina Línia de freqüència Hz Processos corrent reposant aturat zombi esperant altre Dispositius TB Dispositius I2C Number of processors Number of devices phpsysinfo-3.2.5/language/cz.xml000066400000000000000000000242161265516077000166620ustar00rootroot00000000000000 Informace o systému Základní informace Kanonické jméno hostitele Poslouchající IP Verze jádra Název distribuce Čas od spuštění Přihlášení uživatelé Průměrné zatížení Informace o hardware Procesory Model Rychlost procesoru Rychlost sběrnice Velikost cache Bogomipsy systému PCI zařízení IDE zařízení SCSI zařízení USB zařízení Využití sítě Zařízení Přijaté Odeslané Chyby/Zahozené Navázaná síťová spojení Využití paměti Fyzická paměť Odkládací prostor na disku (Swap) Připojené souborové systémy Přípojný bod Oddíl Využití Typ Volné Použité Velikost Celkem kB MB GB nic Kapacita Téma vzhledu Jazyk Odeslat Vytvořeno s dní hodin minut Teplota Napětí Ventilátory Hodnota Min Max Hystereze Limit Název C F V RPM Jádro + aplikace Zásobníky Mezipaměť Skoč na Záložní zdroj Název Model Režim Čas od spuštění Stav Výpadky Důvod posledního výpadku Čas posledního výpadku Vstupní napětí Aktuální zátížení Napětí na baterii Stav nabití Zbývající záložní čas V minuty Teplota TB TiB GiB MiB KiB PiB PB MHz GHz Virtualizace Poslední spuštění B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB zařízení I2C zařízení Number of processors Number of devices phpsysinfo-3.2.5/language/da.xml000066400000000000000000000236451265516077000166370ustar00rootroot00000000000000 Systeminformation Systemdetaljer Værtsnavn IP-adresse Kernelversion Distribution Oppetid Antal brugere Last gennemsnit Hardwareinformation Processorer Model CPU frekvens BUS frekvens Cachestørrelse System Bogomips PCI enheder IDE enheder SCSI enheder USB enheder Netværk Enhed Modtaget Sendt Fejl/Tabt Etablerede netværskforbindelser Hukommelsesforbrug Fysisk hukommelse Disk Swap Filsystemer Sti Partition I brug Type Ledig Brugt Størrelse Totalt kB MB GB ingen Kapasitet Tema Sprog Send Genereret med dage timer minutter Temperatur Spænding Blæsere Værdi Min Maks Hysterese Grænse Mærke C F V RPM Kernel + applikationer Buffere Cached Vis UPS information Navn Model Mode Startet Status Udfald Årsag til sidste udfald Tidspunkt for sidste udfald Forsyningspænding Procent belastet Batteri spænding Batteri ladning Tid tilbage for batteridrift V minutter Temperatur TB TiB GiB MiB KiB PiB PB MHz GHz Virtualisering Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB enheder I2C enheder Number of processors Number of devices phpsysinfo-3.2.5/language/de.xml000066400000000000000000000241111265516077000166300ustar00rootroot00000000000000 System Information System Übersicht Zugewiesener Hostname Überwachte IP Kernel Version Distributionsname Betriebszeit Eingeloggte Benutzer Auslastung Hardware Übersicht Prozessoren Modell Taktfrequenz BUS Speed Cachegröße System Bogomips PCI Geräte IDE Geräte SCSI Geräte USB Geräte Netzwerk-Auslastung Schnittstellen Empfangen Gesendet Fehler/Verworfen Aktive Netzwerkverbindungen Arbeiteitsspeicher-Auslastung Physikalischer Speicher Auslagerungsdatei Angemeldete Dateisysteme Mount Partition Prozentuale Auslastung Typ Frei Belegt Größe Gesamt kB MB GB keine Kapazität Designvorlage Sprache Ändern Erstellt von Tage Stunden Minuten Temperaturen Spannungen Lüfter Wert Min Max Hysteresis Limit Bezeichnung °C °F V Umin Kernel + Anwendungen Puffer Cache Springe zu USV Information Name Model Modus Startzeit Status Ausfälle Letzter Ausfallgrund Letzter Ausfallzeitpunkt Leitungsspannung Auslastung Batteriespannung Batterieladezustand Batterielaufzeit V Minuten Temperatur TB TiB GiB MiB KiB PiB PB MHz GHz Virtualisierung Letzter Start B System Sprache Codepage Details CPU-Geschwindigkeit Max CPU-Geschwindigkeit Min Leistung W Akku Datum Stromstärke A Maschine Netzfrequenz Hz Prozesse laufend schlafend gestoppt zombie wartend andere TB Geräte I2C Geräte Anzahl Prozessoren Anzahl Geräte phpsysinfo-3.2.5/language/en.xml000066400000000000000000000235741265516077000166560ustar00rootroot00000000000000 System information System Vital Canonical Hostname Listening IP Kernel Version Distro Name Uptime Current Users Load Averages Hardware Information Processors Model CPU Speed BUS Speed Cache Size System Bogomips PCI Devices IDE Devices SCSI Devices USB Devices Network Usage Device Received Sent Err/Drop Established Network Connections Memory Usage Physical Memory Disk Swap Mounted Filesystems Mountpoint Partition Usage Type Free Used Size Totals kB MB GB none Capacity Template Language Submit Created by days hours minutes Temperature Voltage Fans Value Min Max Hysteresis Limit Label C F V RPM Kernel + applications Buffers Cached Jump to UPS information Name Model Mode Started Status Outages Last outage cause Last outage timestamp Line voltage Load percent Battery voltage Battery charge Time left on batteries V minutes Temperature TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB Devices I2C Devices Number of processors Number of devices phpsysinfo-3.2.5/language/es.xml000066400000000000000000000241061265516077000166530ustar00rootroot00000000000000 Información del Servidor Vitales Nombre del Servidor Direcciones IP Versión del Kernel Nombre Distribución Último arranque Usuarios actuales Promedio de uso Información del Hardware Procesadores Modelo Velocidad CPU Velocidad BUS Tamaño Cache Sistema Bogomips Dispositivos PCI Dispositivos IDE Dispositivos SCSI Dispositivos USB Uso de la red Dispositivo Recibidos Enviados Errores/Perdidos Conexiones de Red Establecidas Uso de la memoria Memoria Física Disco Swap Sistema archivos Montados Punto de montaje Partición Uso Tipo Libre Usada Tamaño Total kB MB GB ninguno Tamaño Template Lenguaje Enviado Creado por días horas minutos Temperatura Voltaje Ventiladores Valor Min Max Histéresis Límite Etiqueta C F V RPM Kernel + aplicaciones Buffers Cache Bifurcación Información UPS Nombre Modelo Modo Iniciado Estado Interrupciones Causa última interrupción Tiempo última interrupción Voltaje de la línea Porcentaje cargado Voltaje batería Carga de la batería Vida restante de las baterías V minutos Temperatura TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other Dispositivos TB Dispositivos I2C Number of processors Number of devices phpsysinfo-3.2.5/language/et.xml000066400000000000000000000240321265516077000166520ustar00rootroot00000000000000 Süsteemi informatsioon Süsteemist Lühidalt Kanooniline masinanimi Kuulav IP Kerneli versioon Distributsioon Elusolek Kasutajaid hetkel Koormuse keskmised Riistvara Informatsioon Protsessoreid Mudel CPU Kiirus BUS Kiirus Puhvri Suurus Süsteemi Bogomips PCI Seadmed IDE Seadmed SCSI Seadmed USB Seadmed Võrgukasutus Seade Saadud Saadetud Vigu/Drop Established Network Connections Mälukasutus Füüsiline Mälu Saalemälu kettal Ühendatud Failisüsteemid Ühenduspunkt Kettaosa Kasutus Tüüp Vaba Kasutuses Suurus Kokku kB MB GB pole Mahutavus Väljanägemine Keel Submit Statistika toob teieni päeva tundi minutit Temperatuur Pinge Ventilaatorid Hetkeväärtus Min Max Hüsterees Piirväärtus Sõlmenimi C F V RPM Kernel + rakendused Puhvrid Vahepuhvrid/cache Hüppa UPS informatsioon Nimi Mudel Reshiim Käivitatud Staatus Katkestusi Viimase katkestuse põhjustas Viimase katkestuse ajatempel Liini pinge Koormuse Aku pinge Aku laetus Akudel töötamiseks jäänud aega V minutit Temperatuur TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB Seadmed I2C Seadmed Number of processors Number of devices phpsysinfo-3.2.5/language/fi.xml000066400000000000000000000237661265516077000166550ustar00rootroot00000000000000 Järjestelmä Tärkeät tiedot Kanoninen isäntänimi IP-osoite Ytimen versio Distron nimi Uptime Nykyiset käyttäjät Keskimääräinen kuorma Laitteisto Prosessorit Malli CPU:n kellotaajuus BUS:n kellotaajuus Välimuistin koko Järjestelmän Bogomipsit PCI laitteet IDE laitteet SCSI laitteet USB laitteet Verkon käyttö Laite Vastaanotettu Lähetetty Err/Drop Vakiintuneet yhteydet Muistin käyttö Fyysinen muisti Levy Swap Kiinnitetyt tiedostojärjestelmät Kiinnitetty Partitiot Käytössä Tyyppi Vapaana Käytetty Koko Yhteensä kB MB GB ei Kapasiteetti Teema Kieli Muokkaa Luonut päivää tuntia minuuttia Lämpö Voltti Tuulettimet Arvo Min Max Hystereesi Rajoitus Leima C F V RPM Ydin + ohjelmistot Puskurit Välimuistissa Hyppää UPS tietoja Nimi Tyyppi Moodi Aloitettu Tila Katkoksia Viimeisen katkoksen syy Viimeisimmän katkoksen aikaleima Linjan jännite Kuorma prosentteina Akun jännite Akun kuorma Aikaa jäljellä akuissa V minuuttia Lämpö TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB laitteet I2C laitteet Number of processors Number of devices phpsysinfo-3.2.5/language/fr.xml000066400000000000000000000240521265516077000166530ustar00rootroot00000000000000 Informations système Système Nom d'hôte canonique Adresse IP Version du noyau Distribution Durée d'activité Utilisateurs Charge système Informations matériel Processeurs Modèle Fréquence CPU Fréquence BUS Taille cache Bogomips Périphériques PCI Péripériques IDE Périphériques SCSI Périphériques USB Réseau Périphérique Réception Envoi Err/Drop Connections réseau établies Utilisation mémoire Mémoire physique Swap disque Systèmes de fichiers montés Point de montage Partition Utilisation Type Libre Occupé Taille Totaux ko Mo Go aucun Capacité Modèle Langue Validé Créé par jours heures minutes Température Tension Ventilateurs Valeur Min Max Hystérésis Limite Valeur C F V RPM Noyau + applications Buffers Cached Aller à Informations UPS Nom Modèle Mode Démarré Statut Interruptions Cause dernière interruption Fin dernière interruption Tension Charge Tension Batterie Charge Batterie Autonomie Batterie V minutes Température To Tio Gio Mio Kio Pio Po MHz GHz Virtualisation Dernier démarrage B Langue du système Codage de la page Détails Vitesse CPU Max Vitesse CPU Min Puissance W Battery date Current A Machine Line frequency Hz Processus running sleeping stopped zombie waiting other Périphériques TB Périphériques I2C Number of processors Number of devices phpsysinfo-3.2.5/language/gl.xml000066400000000000000000000240261265516077000166470ustar00rootroot00000000000000 Información do servidor Características principais Nome do servidor Direccións IP Versión do Kernel Nome da distribución Último arranque Usuarios actuais Promedio de uso Información do hardware Procesadores Modelo Velocidade CPU Velocidade BUS Tamaño Caché Sistema Bogomips Dispositivos PCI Dispositivos IDE Dispositivos SCSI Dispositivos USB Uso da rede Dispositivo Recibidos Enviados Erros/Perdidos Conexións de rede establecidas Uso da memoria Memoria Física Disco Swap Sistema archivos Montados Punto de montaxe Partición Uso Tipo Libre Usada Tamaño Total kB MB GB ningÚn Tamaño Tema Linguaxe Enviado Creado por días horas minutos Temperatura Voltaxe Ventiladores Valor Min Max Histéresis Límite Etiqueta C F V RPM Kernel + aplicaciones Buffers Cache Bifurcación UPS information Name Model Mode Started Status Outages Last outage cause Last outage timestamp Line voltage Load percent Battery voltage Battery charge Time left on batteries V minutes Temperature TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other Dispositivos TB Dispositivos I2C Number of processors Number of devices phpsysinfo-3.2.5/language/gr.xml000066400000000000000000000252711265516077000166600ustar00rootroot00000000000000 Πληροφορίες Συστήματος Στοιχεία Συστήματος Ονομασία Διεύθυνση IP Έκδοση Πυρήνα Διανομή Ενεργό για Ενεργοί χρήστες Φόρτο λειτουργίας Πληροφορίες Υλικού Επεξεργαστές Μοντέλο Ταχύτητα Επεξεργαστή Ταχύτητα Διαύλου Μέγεθος Cache Bogomips Συστήματος Συσκευές PCI Συσκευές IDE Συσκευές SCSI Συσκευές USB Χρήση Δικτύου Συσκευή Λήφθησαν Απεστάλησαν Λάθη/Απορριπτέα Ενεργές Δικτυακές Συνδέσεις Χρήση Μνήμης Φυσική Μνήμη Δίσκος Swap Ενεργές Αποθηκευτικές Μονάδες Mountpoint Partition Χρήση Τύπος Ελεύθερο Κατειλημμένο Σύνολο Σύνολο kB MB GB κανένα Χωρητικότητα Εμφάνιση Γλώσσα Καταχώρηση Παράχθηκε με το ημέρες ώρες λεπτά Θερμοκρασίες Τάσεις Ψύξη Τιμή Eλάχιστο Μέγιστο Υστέριση Όριο Υποσύστημα °C °F V RPM Πυρήνας + εφαρμογές Buffers Cached Jump to Πληροφορίες UPS Όνομα Μοντέλο Mode Ενεργό από Κατάσταση Διακοπές Λόγος διακοπής Τελευταία διακοπή Τάση γραμμής Φόρτο Τάση μπαταρίας Φόρτιση μπαταρίας Χρόνος μπαταριών V λεπτά Θερμοκρασία TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Τελευταία εκκίνηση B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other Συσκευές TB Συσκευές I2C Number of processors Number of devices phpsysinfo-3.2.5/language/he.xml000066400000000000000000000247661265516077000166540ustar00rootroot00000000000000 מידע המערכת נתוני מערכת שם השרת כתובת אינטר\אינרה-נט גרסת הליבה הפצה זמן ריצה משתמשים מחוברים עומס ממוצע מידע על החומרה מעבדים דגם מהירות מעבד מהירות חריץ הרחבה גודל מטמון System Bogomips התקני PCI התקני IDE שירותי SCSI התקנים אוניברסליים (USB) ניצולת רשת התקן התקבל נשלח נפילות\תקלות חיבורים קיימים זיכרון בשימוש זיכרון פיזי דיסק החלפה מערכות קבצים מחוברות נקודת חיבור מחיצה בשימוש סוג פנוי משומש גודל סה"כ kB MB GB none נפח תבנית שפה שליחה נוצר על ידי ימים שעות דקות טמפרטורה מתח מאווררים ערך מינימאלי מקסימאלי Hysteresis גבול תווית C F V RPM ליבה ותוכנה אוגר Cached קפוץ ל מידע אל פסק שם דגם מצב זמן הפעלה מצב הפסקות חשבמל הפסקת חשמל אחרונה חתימת זמן של הפסקת חשמל אחרונה מתח הקו אחוזי עומס מתח סוללה אחות טעינת סוללה זמן שנשאר לשימוש בסוללה V דקות טמפרטורה TB TiB GiB MiB KiB PiB PB MHz GHz הדמיה (וירטואליזציה) עליית מערכת אחרוה B שפת מערכת ההפעלה קוד שפה פרטים מהירות מעבד הגבוהה ביותר מהירות המעבד הנמוכה ביותר כוח W תאריך סוללה Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other התקני TB התקני I2C Number of processors Number of devices phpsysinfo-3.2.5/language/hu.xml000066400000000000000000000240101265516077000166520ustar00rootroot00000000000000 Rendszer információk Alapvető információk Hosztnév Figyelt IP Kernel Verzió Distro Név Uptime Jelenlegi Felhasználok Terheltség Hardver Információk Processzorok Model CPU Sebesség BUS Sebesség Cache Méret Rendszer Bogomips PCI Eszközök IDE Eszközök SCSI Eszközök USB Eszközök Hálózat Használat Eszköz Fogadott Küldött Hibás/Eldobott Hálózati Csatlakozások Memória Használat Fizikai Memória Lemez Swap Csatlakoztatott File Rendszerek Csatlakozási pont Partíció Használt Típus Szabad Felhasznált Méret Összes kB MB GB nincs Kapacitás Sablon Nyelv Rendben Készítette: nap óra perc Hőmérsékletek Feszültségek Ventilátorok Érték Min Max Hiszterézis Limit Címke C F V RPM Kernel + Alkalmazások Bufferek Cached Ugrás ide: UPS information Name Model Mode Started Status Outages Last outage cause Last outage timestamp Line voltage Load percent Battery voltage Battery charge Time left on batteries V minutes Temperature TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB Eszközök I2C Eszközök Number of processors Number of devices phpsysinfo-3.2.5/language/is.xml000066400000000000000000000242421265516077000166600ustar00rootroot00000000000000 Kerfisupplýsingar Aðalupplýsingar kerfis Vélarnafn IP tala vélar Útgáfa kjarna Nafn stýrikerfis Upptími Tengdir notendur Meðal álag vélar Upplýsingar um vélbúnað Örgjörvar Týpa Klukkuhraði örgjörva Brautarhraði Stærð flýtiminnis Örgjörvakjarni PCI jaðartæki IDE jaðartæki SCSI jaðartæki USB jaðartæki Notkun á neti Jaðartæki Móttekið Sent Villur/Pakkatap Upplýsingar nettengingar Minnisnotkun Vinnsluminni Sýndarminni Tengd skráarkerfi Tengipunktur Disksneið Hlutfall af heildarstærð Tegund Laust Notað Stærð Samtals kB MB GB Ekkert Heildarstærð Sniðmát Tungumál Senda Búið til af dagar klukkustundir mínútur Hitastig Spenna Viftur Gildi Lægst Hæst ðvörun lýkur Aðvörun byrjar Nafn mælis C F V RPM Kjarni + viðbætur Biðminni Skyndiminni Skoða Upplýsingar varaaflgjafa Nafn Týpa Hamur Byrjaði Staða Útsláttur rafmagns Ástæða síðasta rafmagnsútsláttar Tími síðasta rafmagnsútsláttar Línu spenna Tími notað af rafhlöðu Rafhlöðustraumur Rafhlöðuhleðsla Tími sem er eftir af rafhlöðu V mínútur Hitastig TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB jaðartæki I2C jaðartæki Number of processors Number of devices phpsysinfo-3.2.5/language/it.xml000066400000000000000000000237601265516077000166650ustar00rootroot00000000000000 Informazioni sul sistema Informazioni Vitali Nome del Server Indirizzo IP Verisione del Kernel Distribuzione Tempo di Esercizio Utenti Collegati Carico Medio Informazioni Hardware Processori Modello Velocità CPU Velocità BUS Dimensione Cache Bogomips del Sistema Unità PCI Unità IDE Unità SCSI Unità USB Utilizzo della Rete Dispositivo Recevuti Inviati Errori/Perdite Connessioni di Rete Stabilite Utilizzo della Memoria Memoria Fisica Disco di Swap Filesystems Montati Punto di Mount Partizione Uso Percentuale Tipo Libero Usato Dimensione Totali kB MB GB Nessuna presente Capacità Template Lingua Invia Creato da giorni ore minuti Temperatura Voltaggio Ventole Valore Min Max Isteresi Limite Etichetta C F V RPM Kernel + applicazioni Buffer Cache Vai A UPS information Name Model Mode Started Status Outages Last outage cause Last outage timestamp Line voltage Load percent Battery voltage Battery charge Time left on batteries V minutes Temperature TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other Unità TB Unità I2C Number of processors Number of devices phpsysinfo-3.2.5/language/ja.xml000066400000000000000000000243531265516077000166420ustar00rootroot00000000000000 システム情報 システム基本情報 ホスト名 待受けIPアドレス カーネルバージョン ディストリビューション / OS 起動時間 ログインユーザー数 ロードアベレージ ハードウェア情報 プロセッサー数 モデル名 周波数 バススピード キャッシュサイズ システムBogomips PCIデバイス IDEデバイス SCSIデバイス USBデバイス ネットワーク使用状況 デバイス 受信 送信 エラー/破棄 接続中ネットワーク メモリー使用状況 物理メモリー ディスクスワップ マウント済みファイルシステム マウントポイント パーティション 使用率 タイプ 空き 使用中 サイズ 合計 kB MB GB 無し 容量 テンプレート 言語 Submit Created by 時間 温度 電圧 ファン Value Min Max Hysteresis Limit Label C F V RPM カーネル + アプリケーション バッファー キャッシュ Jump to UPS情報 UPS名 モデル名 モード 開始日時 状態 供給停止回数 最終供給停止理由 最終供給停止日時 Line voltage 負荷率 バッテリー電圧 バッテリー充電率 バッテリー残り時間 V 温度 TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TBデバイス I2Cデバイス Number of processors Number of devices phpsysinfo-3.2.5/language/ko.xml000066400000000000000000000237431265516077000166630ustar00rootroot00000000000000 시스템 정보 현재 시스템 상황 Canonical 호스트명 Listening IP 커널 버전 제품명 사용시간 현재 사용자들 평균 사용현황 하드웨어 정보 프로세스 모델 CPU 속도 BUS 속도 캐쉬 크기 자체 테스트 클럭 PCI 장치들 IDE 장치들 SCSI 장치들 USB 장치들 네트워크 사용량 장치 받음 보냄 에러/실패 접속된 네트워크 메모리 사용량 물리적 메모리 디스크 스왑 마운트된 시스템 마운트지점 파티션 사용량 타입 남은 공간 사용 공간 크기 합계 kB MB GB none 용량 스킨 언어 Submit 제작소 : 온도 Voltage Fans Value 최소 최대 Hysteresis Limit Label C F V RPM 커널 + 어플리케이션 버퍼 캐쉬 Jump to UPS 정보 이름 모델 Mode Started 상태 Outages Last outage cause Last outage timestamp Line voltage Load percent Battery voltage 배터리 충전 Time left on batteries V 온도 TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB 장치들 I2C 장치들 Number of processors Number of devices phpsysinfo-3.2.5/language/language.php000066400000000000000000000035571265516077000200250ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: language.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ // Set the correct content-type header. header("Content-Type: text/xml\n\n"); /** * default language * * @var String */ $lang = 'en'; /** * default pluginname * * @var String */ $plugin = ''; /** * application root path * * @var string */ define('APP_ROOT', realpath(dirname((__FILE__)).'/../')); include_once APP_ROOT.'/read_config.php'; if (defined('PSI_DEFAULT_LANG')) { $lang = PSI_DEFAULT_LANG; } if (isset($_GET['lang']) && (trim($_GET['lang'])!=="") && !preg_match('/[^A-Za-z\-_]/', $_GET['lang']) && file_exists(APP_ROOT.'/language/'.$_GET['lang'].'.xml')) { $lang = $_GET['lang']; } if (isset($_GET['plugin'])) { if ((trim($_GET['plugin'])!=="") && !preg_match('/[^A-Za-z\-_]/', $_GET['plugin'])) { $plugin = $_GET['plugin']; if (file_exists(APP_ROOT.'/plugins/'.strtolower($plugin).'/lang/'.$lang.'.xml')) { echo file_get_contents(APP_ROOT.'/plugins/'.strtolower($plugin).'/lang/'.$lang.'.xml'); } elseif (file_exists(APP_ROOT.'/plugins/'.strtolower($plugin).'/lang/en.xml')) { echo file_get_contents(APP_ROOT.'/plugins/'.strtolower($plugin).'/lang/en.xml'); } } } else { if (file_exists(APP_ROOT.'/language/'.$lang.'.xml')) { echo file_get_contents(APP_ROOT.'/language/'.$lang.'.xml'); } else { echo file_get_contents(APP_ROOT.'/language/en.xml'); } } phpsysinfo-3.2.5/language/nl.xml000066400000000000000000000237071265516077000166630ustar00rootroot00000000000000 Systeem Informatie Systeem Overzicht Toegewezen naam IP adres Kernelversie Distributie Uptime Huidige gebruikers Gemiddelde belasting Hardware overzicht Processors Model CPU snelheid BUS snelheid Cache grootte Systeem Bogomips PCI Apparaten IDE Apparaten SCSI Apparaten USB Apparaten Netwerkgebruik Apparaat Ontvangen Verzonden Err/Drop Aktieve Netwerkverbindingen Geheugengebruik Fysiek geheugen Swap geheugen Aangesloten bestandssystemen Mount Partitie Percentage gebruikt Type Vrij Gebruikt Grootte Totaal kB MB GB geen Capaciteit Opmaak Taal Toepassen Gegenereerd door dagen uren minuten Temperatuur Voltage Fans Waarde Min Max Hysteresis Limiet Omschrijving °C °F V RPM Kernel + Aplicaties Buffers Cached Ga naar UPS information Name Model Mode Started Status Outages Last outage cause Last outage timestamp Line voltage Load percent Battery voltage Battery charge Time left on batteries V minutes Temperature TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB Apparaten I2C Apparaten Number of processors Number of devices phpsysinfo-3.2.5/language/no.xml000066400000000000000000000235631265516077000166660ustar00rootroot00000000000000 Systeminformasjon Systemdetaljer Vertsnavn IP-adrssse Kernelversjon Distribusjon Oppetid Antall brukere Last gjennomsnitt Hardwareinformasjon Prosessorer Model CPU frekvens BUS frekvens Cachestørrelse System Bogomips PCI enheter IDE enheter SCSI enhenter USB enheter Nettverk Enhet Mottatt Sendt Err/Drop Established Network Connections Minnebruk Fysisk minne Disk Swap Filsystemer Bane Partisjon Bruk Type Ledig Brukt Størrelse Totalt kB MB GB ingen Kapasitet Tema Språk Send Generert med dager timer minutter Temperatur Spenning Vifter Verdi Min Maks Hysterese Grense Merke C F V RPM Kernel + applikasjoner Buffere Cached Vis UPS information Name Model Mode Started Status Outages Last outage cause Last outage timestamp Line voltage Load percent Battery voltage Battery charge Time left on batteries V minutes Temperature TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB enheter I2C enheter Number of processors Number of devices phpsysinfo-3.2.5/language/pl.xml000066400000000000000000000241011265516077000166520ustar00rootroot00000000000000 Informacja o systemie Stan systemu Nazwa kanoniczna hosta IP nasłuchujący Wersja jądra Nazwa dystrybucji Czas pracy Zalogowani użytkownicy Obciążenie średnie Informacja o sprzęcie Procesory Model Częstotliwość Szyna Rozmiar cache Liczba BogoMips Urządzenia PCI Urządzenia IDE Urządzenia SCSI Urządzenia USB Sieć Urządzenie Odebrano Wysłano Błędy/Porzucone Nawiązane połączenia sieciowe Wykorzystanie pamięci Pamięć fizyczna Pamięć swap Zamontowane systemy plików Punkt montowania Partycja Procentowo zajęte Typ Wolne Zajęte Rozmiar Całkowite kB MB GB brak Rozmiar Szablon Język Wyślij Utworzone przez dni godzin minut Temperatura Napięcie Wentylatory Wartość Min Max Histereza Limit Nazwa °C °F V RPM Jądro i aplikacje Bufory Cache Skocz do Informacja o UPS Nazwa Model Tryb Wystartował Status Zaniki Ostatni zanik Czas ostatniego zaniku Napięcie linii Procent obciążenia Napięcie baterii Naładowanie baterii Utrzyma na bateriach V minut Temperatura TB TiB GiB MiB KiB PiB PB MHz GHz Wirtualizacja Wystartował B Język systemu Strona kodowa Szczegóły Częstotliwość Max Częstotliwość Min Moc W Data baterii Prąd A Maszyna Częstotliwość linii Hz Procesy uruchomione uśpione zatrzymane zombi oczekujące inne Urządzenia TB Urządzenia I2C Liczba procesorów Liczba urządzeń phpsysinfo-3.2.5/language/pt-br.xml000066400000000000000000000242031265516077000172660ustar00rootroot00000000000000 Informação do Sistema Sistema Vital Nome do Host Canônico Ouvindo o IP Versão do Kernel Distribução Ativo Usuários Ativos Carga Média Informação do Hardware Processadores Modelo CPU velocidade BUS velocidade Tamanho do Cache Bogomips do Sistema Periféricos PCI Periféricos IDE Periféricos SCSI Periféricos USB Uso da Rede Dispositivo Recebido Enviado Erro/Perdido Conexões de Rede Estabilizadas Uso da Memória Memória Física Swap do Disco Sistemas de Arquivos Montados Ponto Montado Partição Percentual Tipo Livre Usado Tamanho Totais kB MB GB nenhum Capacidade Estilo Idioma Submeter Criado por dias horas minutos Temperatura Voltagem Ventiladores Valor Min Max Hysteresis Limite Rótulos C F V RPM Kernel + aplicações Buffers Cached Ir para Informação do UPS Nome Modelo Modo Iniciado Status Queda Causa da Última Queda Último registro de Queda Voltagem de linha Carga porcentual Voltagem da bateria Carga da bateria Tempo restante das baterias V minutos Temperatura TB TiB GiB MiB KiB PiB PB MHz GHz Virtualização Último boot B Idioma do Sistema Página de código Detalhes CPU Speed Max CPU Speed Min Power W Data da bateria Corrente A Máquina Frequência da linha Hz Processos executando dormindo parado zombie esperando outro Periféricos TB Periféricos I2C Number of processors Number of devices phpsysinfo-3.2.5/language/pt-pt.xml000066400000000000000000000240421265516077000173070ustar00rootroot00000000000000 Informação do Sistema Sistema Hostname IP Versão do Kernel Distribuição Ativo Utilizadores Ativos Carga Média Informação de Hardware Processadores Modelo Velocidade CPU Velocidade BUS Tamanho da Cache Bogomips do Sistema Periféricos PCI Periféricos IDE Periféricos SCSI Periféricos USB Utilização da Rede Dispositivo Recebido Enviado Erro/Perdido Conexões de Rede Estabelecidas Utilização da Memória Memória Física Swap do Disco Sistemas de ficheiros Ponto Montado Partição Percentagem Tipo Livre Usado Tamanho Totais kB MB GB nenhum Capacidade Estilo Idioma Submeter Criado por dias horas minutos Temperatura Tensão Ventiladores Valor Min Max Hysteresis Limite Rótulos C F V RPM Kernel + aplicações Buffers Cached Ir para Informação da UPS Nome Modelo Modo Iniciado Estado Queda Causa da última falha Último registo de falha Tensão da linha Carga percentual Tensão da bateria Carga da bateria Tempo restante da bateria V minutos Temperatura TB TiB GiB MiB KiB PiB PB MHz GHz Virtualização Último arranque B Linguagem do sistema Codificação Detalhes Máx CPU freq Min CPU freq Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other Periféricos TB Periféricos I2C Number of processors Number of devices phpsysinfo-3.2.5/language/ro.xml000066400000000000000000000241431265516077000166650ustar00rootroot00000000000000 Informații despre sistem Informații vitale Numele canonic Adresă IP Kernel Version Nume Distribuție Timp de Viață Utilizatori Curenți Încărcarea Sistemului Informații Hardware Procesoare Model Viteza CPU Viteză BUS Marime Cache Bogomips Sistem Dispozitive PCI Dispozitive IDE Dispozitive SCSI Dispozitive USB Utilizarea Rețelei Dispozitiv Recepționat Trimis Erori/Drop Conexiuni Rețea Stabilite Utilizarea Memoriei Memorie Fizică Swap Disc Sisteme de Fișiere Montate Punct Montare Partiție Procent Utilizare Tip Liber Utilizat Mărime Total kB MB GB Nici Unul Capacitate Model Limbă Actualizează Creat de zile ore minute Temperatură Tensiune Ventilatoare Valoare Minim Maxim Histeresis Limită Etichetă C F V RPM Kernel + applicații Buffers Cache-uit Sari la Informații UPS Nume Model Mod Pornit la Stare Număr Opriri Ultima cauză a opririi Data ultimei opriri Tensiunea Rețelei Procent Încărcare Tensiunea Bateriei Încărcarea Bateriei Timp rămas pe baterie V minute Temperatură TB TiB GiB MiB KiB PiB PB MHz GHz Virtualizare Ultima pornire B Limba Sistenului de Operare Code Page Detalii Viteză Maximă CPU Viteză Minimă CPU Power W Dată baterie Actual A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other Dispozitive TB Dispozitive I2C Number of processors Number of devices phpsysinfo-3.2.5/language/ru.xml000066400000000000000000000264551265516077000167030ustar00rootroot00000000000000 Системная информация Общая информация Имя системы IP-адрес Версия ядра Операционная система Время работы Активных пользователей Средняя загрузка Установленное оборудование Количество процессоров Модель Частота процессора Частота системной шины Размер кэша Производительность в bogomips PCI устройства IDE устройства SCSI устройства USB устройства Использование сети Устройство Получено Отправлено Ошибки/Падения Установлено сетевых подключений Использование памяти Физическая память Файл подкачки Смонтированные файловые системы Точка монтирования Устройство Использовано Тип Свободно Занято Общий размер Всего кб Мб Гб Отсутствуют Вместимость Шаблон Язык Применить Сгенерировано с помощью дней часов минут Температура Напряжение Вентиляторы Значение Минимум Максимум Гистерезис Лимит Значение C F В Об/мин Ядро + приложения Буферы Кэшировано Перейти к ИБП Название Модель Режим Время включения Состояние Переходы на батарею Причина последнего перехода Время последнего перехода Напряжение сети Нагрузка Напряжение батареи Уровень заряда батареи Время работы на батареях В мин. Температура TB TiB GiB MiB KiB PiB PB MHz GHz Виртуализация Система загружена B Язык системы Кодировка страницы Подробнее Максимальная скорость CPU Минимальная скорость CPU Мощность W Дата батареи Ток A Машина Чистота сети Гц Процессы работают спят остановлены повисли ждущие Другое TB устройства I2C устройства Number of processors Number of devices phpsysinfo-3.2.5/language/sk.xml000066400000000000000000000241101265516077000166540ustar00rootroot00000000000000 Informácie o systéme Základ Systému Kanonické Meno Hostiteľa Načúvajúca IP Verzia Jadra Meno Distribúcie Čas od Spustenia Súčasný Užívatelia Priemer Zaťaženia Informácie o Hardware Procesory Model Rýchlosť procesora Rýchlosť zbernice Veľkosť cache Bogomipy Systému PCI Zariadenia IDE Zariadenia SCSI Zariadenia USB Zariadenia Využitie Siete Zariadenie Prijatých Odoslaných Chyby/Zahodené Vytvorené Sieťove Spojenia Využitie Pamäte Fyzická Pamäť Odkladací Priestor na Disku (Swap) Pripojené Súborové Systémy Miesto pripojenia Partícia Využitie Typ Voľné Použité Veľkosť Spolu kB MB GB nič Kapacita Predloha Jazyk Odoslať Vytvorené s dní hodín minút Teplota Voltáž Ventilátory Hodnota Min Max Hysterézia Limit Názov C F V OZM(RPM) Jadro + aplikácie Buffery Cache Skoč na UPS information Name Model Mode Started Status Outages Last outage cause Last outage timestamp Line voltage Load percent Battery voltage Battery charge Time left on batteries V minutes Temperature TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB Zariadenia I2C Zariadenia Number of processors Number of devices phpsysinfo-3.2.5/language/sl.xml000066400000000000000000000241051265516077000166610ustar00rootroot00000000000000 Sistemske informacije Stanje sistema Gostitelj IP naslov strežnika Verzija jedra Ime distribucije Čas neprekinjenega delovanja Trenutni uporabniki Povprečna obremenitev Informacije o strojni opremi Procesorji Oznaka Takt CPE Hitrost vodila Velikost predpomnilnika BogoMIPS PCI naprave IDE naprave SCSI naprave USB naprave Stanje omrežja Naprava Prejeto Poslano Napake/Zavrženo Vzpostavljena omrežna povezava Poraba pomnilnika Fizični pomnilnik (RAM) Izmenjalni pomnilnik (SWAP) Vpeti datotečni sistemi Priklopna točka Particija Poraba Tip Prosto Porabljeno Velikost Skupaj kB MB GB brez Kapaciteta Shema Jezik Potrdi Generirano s pomočjo dni ur minut Temperatura Napetost Ventilatorji Vrednost Min Max Histereza Omejitev Oznaka C F V RPM Jedro + programje Medpomnilniki Predpomnjeno Skoči na UPS informacije Ime Oznaka Način Zagnan Stanje Izpadi Razlog zadnjega izpada Čas zadnjega izpada Omrežna napetost Obremenitev (%) Napetost baterije Moč baterije Čas do izpraznitve V min Temparatura TB TiB GiB MiB KiB PiB PB MHz GHz Virtualizacija Zadnji zagon B Sistemski jezik Kodiranje Podrobnosti Takt CPE (max) Takt CPE (min) Moč W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB naprave I2C naprave Number of processors Number of devices phpsysinfo-3.2.5/language/sv.xml000066400000000000000000000236741265516077000167050ustar00rootroot00000000000000 Systeminformation Allmän information Värdnamn IP-adress Kernel Version Dist Namn Drifttid Aktuella användare Medelbelastning Hårdvaruinformation Processorer Modell Klockfrekvens BUS-frekvens Cachestorlek Bogomips PCI-enheter IDE-enheter SCSI-enheter USB-enheter Nätverksanvändning Enheter Mottaget Skickat Fel/Förlorat Established Network Connections Minnesanvändning Fysiskt minne Växlingsfil Monterade filsystem Monteringspunkt Partition Kapacitetsutnyttjande Typ Ledigt Använt Storlek Totalt kB MB GB inga Kapacitet Mall Språk Skicka Skapad av dagar timmar minuter Temperature Voltage Fläktar Värde Min Max Hysteresis Gräns Label C F V RPM Kernel + applications Buffers Cached Hoppa till UPS information Name Model Mode Started Status Outages Last outage cause Last outage timestamp Line voltage Load percent Battery voltage Battery charge Time left on batteries V minutes Temperature TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB-enheter I2C-enheter Number of processors Number of devices phpsysinfo-3.2.5/language/th.xml000066400000000000000000000253351265516077000166640ustar00rootroot00000000000000 รายละเอียดเครื่อง ข้อมูลระบบ ชื่อเครื่อง ไอพี Kernel Version ระบบปฏิบัติการ เวลารวมใช้งาน จำนวนผู้ใช้งานปัจจุบัน Load Averages ข้อมูลอุปกรณ์ โพรเซสเซอร์ โมเดล ความเร็ว ซีพียู คาวมเร็ว บัส ขนาดแคช System Bogomips อุปกรณ์ PCI อุปกรณ์ IDE อุปกรณ์ SCSI อุปกรณ์ USB การใช้งาน ระบบเน็ตเวิร์ค อุปกรณ์ รับ ส่ง Err/Drop Established Network Connections การใช้งาน แรม Physical Memory Disk Swap ข้อมูลการใช้งาน ฮาร์ดดิส ไดรว์ ตำแหน่ง ดิส การใช้งาน ชนิด คงเหลือ ใช้งาน ขนาด รวม kB MB GB none Capacity เทมเพลท ภาษา ตกลง สร้างโดย วัน ชั่วโมง นาที อุณหภูมิ Voltage Fans Value ต่ำสุด สูงสุด Hysteresis จำกัด Label C F V RPM Kernel + applications Buffers แคช Jump to ข้อมูล UPS ชื่อ โมเดล โหมด เริ่ม สถานะ Outages Last outage cause Last outage timestamp Line voltage Load percent Battery voltage Battery charge Time left on batteries V minutes Temperature TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization เวลาการปิดเครื่องล่าสุด B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other อุปกรณ์ TB อุปกรณ์ I2C Number of processors Number of devices phpsysinfo-3.2.5/language/tr.xml000066400000000000000000000236421265516077000166750ustar00rootroot00000000000000 Sistem Bilgisi System Özeti Sunucu Adı IP Kernel Versiyon Dağıtım Adı Uptime Aktif Kullanıcı Yük Ortalamaları Donanım Bilgisi İşlemciler Model CPU Speed BUS Speed Cache Size Sistem Bogomips PCI Aygıtlar IDE Aygıtlar SCSI Aygıtlar USB Aygıtlar Ağ Kullanımı Aygıt Alındı Yollandı Err/Drop Kurulan Ağ Bağlantıları Hafıza kullanımı Fiziksel hafıza Takas Alanı Bağlı dosya sistemleri Bağlamanoktası Bölüm Kullanım Tip Boş Kullanım Boyut Toplam kB MB GB yok Kapasite Şablon Dil Gönder Oluşturan gün saat dakika Sıcaklık Voltaj Fans Value Min Max Hysteresis Limit Label C F V RPM Kernel + applications Buffers Cached Jump to UPS bilgisi Adı Model Mode Başlangıç Durum Outages Last outage cause Last outage timestamp Hat voltajı Yük oranı Batarya voltajı Batarya şarj oranı Batarya kalan süre V dakika Sıcaklık TB TiB GiB MiB KiB PiB PB MHz GHz Sanallaştırma Son Açılış B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB Aygıtlar I2C Aygıtlar Number of processors Number of devices phpsysinfo-3.2.5/language/translation-plugin.xsd000066400000000000000000000024741265516077000221000ustar00rootroot00000000000000 phpsysinfo-3.2.5/language/translation.xsd000066400000000000000000000024521265516077000206000ustar00rootroot00000000000000 phpsysinfo-3.2.5/language/tw.xml000066400000000000000000000236501265516077000167010ustar00rootroot00000000000000 系統資料 主要資料 主機名稱 連線 IP (Listen) 核心版本 Linux 名稱 運作時間 目前的使用者 平均負荷 硬體資料 處理器 型號 CPU 速度 BUS 速度 快取大小 系統 Bogomips PCI 設備 IDE 設備 SCSI 設備 USB 設備 網路使用率 設備 收到 送出 錯誤/訊號遺失 連結網路 記憶使用率 實體記憶 硬碟備存 (Disk Swap) 掛載檔案系統 掛載位置 硬碟分割 使用率 類型 可用 已用 大小 總共 kB MB GB 沒有 限制 佈景 語言 送出 建立於 小時 分鐘 溫度 電壓 風扇 數值 最小 最大 Hysteresis 限制 標籤 C F V RPM 核心跟軟體 緩衝 快取 跳到 電源資料 名稱 型號 模式 已啟動 狀態 中斷 上次中斷原因 上次中斷時間 線路電壓 負荷百分比 電池電壓 電池總額 電磁餘額時間 V 溫度 TB TiB GiB MiB KiB PiB PB MHz GHz 虛擬化 Last boot B System Language Code Page Details CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB 設備 I2C 設備 Number of processors Number of devices phpsysinfo-3.2.5/language/uk.xml000066400000000000000000000255531265516077000166720ustar00rootroot00000000000000 Системна інформація Загальна інформація Ім'я системи IP-адреса Версія ядра Назва дістрибутиву Час роботи Користувачі Середне навантаження Апаратні засоби Процесори Модель Частота Частота шини Розмір кешу Продуктивніть у Bogomips PCI пристрої IDE пристрої SCSI пристрої USB пристрої Використання мережі Пристрій Отримано Відправлено Err/Drop Встановлені мережеві з'єднання Використання пам'яті Фізична пам'ять Файл підкачки Змонтовані файлові системи Точка монтування Розділ диску Використання Тип Вільно Використано Розмір Загальний розмір Кб Мб Гб Відсутні Ємкість Шаблон Мова Змінити Згенеровано за допомогою дні години хвилини Температура Напруга Кулери Значення Мінімум Максимум Гістерезис Ліміт Назва C F В RPM Ядро + програми Буфери Закешовано Перейти до ДБЖ Ім'я Модель Режим Час ввімкнення Стан Кількість переходів на батарею Причина останнього переходу Част останнього переходу Напруга мережі Навантаження Напруга батареї Рівень заряду батареї Час роботи на батареях В мін. Температура TB TiB GiB MiB KiB PiB PB MHz GHz Virtualization Last boot B System Language Code Page Докладніше CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB пристрої I2C пристрої Number of processors Number of devices phpsysinfo-3.2.5/language/zh.xml000066400000000000000000000236461265516077000166750ustar00rootroot00000000000000 系统信息 主要信息 主机名称 监听IP 内核版本 发行版名称 运行时间 当前用户 平均负载 硬件信息 处理器 型号 CPU 速度 BUS 速度 缓存大小 系统 Bogomips PCI 设备 IDE 设备 SCSI 设备 USB 设备 网络使用率 设备 已接收 已发送 错误/丢包 网络链接 内存使用率 物理内存 磁盘交换区 已挂载文件系统 挂载位置 硬盘分区 使用率 类型 可用 已用 大小 总共 kB MB GB 没有 限制 主题 语言 提交 创建于 小时 分钟 温度 电压 风扇 数值 最小 最大 滞后 限制 标签 C F V RPM 内核与应用 缓冲 缓存 跳转到 电源信息 名称 型号 模式 已启动 状态 中断 上次中断原因 上次中断时间 线路电压 负载百分比 电池电压 电池点亮总额 电池剩余时间 V 温度 TB TiB GiB MiB KiB PiB PB MHz GHz 虚拟化 上次启动 B 系统语言 系统编码 详细信息 CPU Speed Max CPU Speed Min Power W Battery date Current A Machine Line frequency Hz Processes running sleeping stopped zombie waiting other TB 设备 I2C 设备 Number of processors Number of devices phpsysinfo-3.2.5/phpsysinfo.ini.new000066400000000000000000000502001265516077000174240ustar00rootroot00000000000000; PSI Config File ; ; @category PHP ; @package PSI ; @author Michael Cramer ; @copyright 2009 phpSysInfo ; @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License ; @version SVN: $Id: phpsysinfo.ini.new 705 2012-11-11 00:33:29Z namiltd $ ; @link http://phpsysinfo.sourceforge.net [main] ; ******************************** ; MAIN PARAMETERS ; ******************************** ; Turn on debugging of some functions and include errors and warnings in xml and provide a popup for displaying errors ; - false : no debug information are stored in xml or displayed ; - true : debug information stored in xml and displayed *be careful if set this to true, may include sensitive information from your pc* ; DEBUG=false ; Turn on logging/unlogging of functions executeProgram() and rfts() ; example : executeProgram () and rfts () record the results to the "/tmp/phpsysinfo.log" file ; LOG="/tmp/phpsysinfo.log" ; example : executeProgram () and rfts () read the results from the "/tmp/phpsysinfo.log" file ; LOG="-/tmp/phpsysinfo.log" ; example : executeProgram () and rfts () read the results from the "/tmp/phpsysinfo.log" file ; LOG="+/tmp/phpsysinfo.log", if lack in the log file it runs normally ; LOG=false ; Turn on/off compression for JavaScript file ; - JS_COMPRESSION=false //no compression (recommended with slow processor) ; - JS_COMPRESSION="None" //code minimizing ; - JS_COMPRESSION="Normal" //code packing ; JS_COMPRESSION="Normal" ; Additional paths where to look for installed programs ; Example : ADD_PATHS="/opt/bin,/opt/sbin" ; ADD_PATHS=false ; List of IP addresses of clients authorized to run ; Example : ALLOWED="127.0.0.1,192.168.1.48" //allowed IP 127.0.0.1 and 192.168.1.48 ; ALLOWED=false //no IP checking ; ALLOWED=false ; Plugins that should be included in xml and output ; List of plugins should look like "plugin,plugin,plugin". See /plugins directory ; - PLUGINS="MDStatus,PS" //list of plugins ; - PLUGINS=false //no plugins ; included plugins: ; - MDStatus - show the raid status and whats currently going on ; - DMRaid - show the software raid status ; - PS - show a process tree of all running processes ; - PSStatus - show a graphical representation if a process is running or not ; - Quotas - show a table with all quotas that are active and there current state ; - SMART - show S.M.A.R.T. information from drives that support it ; - BAT - show battery state on a laptop ; - IPMIInfo - show IPMI status ; - UpdateNotifier - show update notifications (only for Ubuntu server) ; - SNMPPInfo - show printers info via SNMP ; - Uprecords - show uprecords info ; PLUGINS=false ; ******************************** ; DISPLAY PARAMETERS ; ******************************** ; Define the default display mode ; auto: let user browser choose the mode ; dynamic: use javascript to refresh data ; static: static page (use metatag to reload page) ; bootstrap: use twitter bootstrap template ; DEFAULT_DISPLAY_MODE="auto" ; Define the default language ; DEFAULT_LANG="en" ; Define the default template ; DEFAULT_TEMPLATE="phpsysinfo" ; Define the default template for frontend "bootstrap" ; DEFAULT_BOOTSTRAP_TEMPLATE="phpsysinfo" ; Show or hide language picklist ; SHOW_PICKLIST_LANG=true ; Show or hide template picklist ; SHOW_PICKLIST_TEMPLATE=true ; Show CPU list expanded ; SHOW_CPULIST_EXPANDED=true ; Show CPU info expanded ; SHOW_CPUINFO_EXPANDED=false ; Show memory infos expanded ; SHOW_MEMORY_INFOS_EXPANDED=false ; Define the interval for refreshing data in ms ; - 0 : disabled ; - 1000 : 1 second ; Default is 60 seconds ; REFRESH=60000 ; Show a graph for current cpuload ; - true : displayed, but it's a performance hit (because we have to wait to get a value, 1 second) ; - false : will not be displayed ; LOAD_BAR=false ; Display the virtual host name and address ; - Default is canonical host name and address ; - Use USE_VHOST=true to display virtual host name. ; USE_VHOST=false ; Controls the units & format for network, memory and filesystem ; - 1 KiB = 2^10 bytes = 1,024 bytes ; - 1 KB = 10^3 bytes = 1,000 bytes ; - "B" everything is in Byte ; - "PiB" everything is in PeBiByte ; - "TiB" everything is in TeBiByte ; - "GiB" everything is in GiBiByte ; - "MiB" everything is in MeBiByte ; - "KiB" everything is in KiBiByte ; - "auto_binary" everything is automatic done if value is to big for, e.g MiB then it will be in GiB ; - "PB" everything is in PetaByte ; - "TB" everything is in TeraByte ; - "GB" everything is in GigaByte ; - "MB" everything is in MegaByte ; - "KB" everything is in KiloByte ; - "auto_decimal" everything is automatic done if value is to big for, e.g MB then it will be in GB ; BYTE_FORMAT="auto_binary" ; Format in which temperature is displayed ; - "c" shown in celsius ; - "f" shown in fahrenheit ; - "c-f" both shown first celsius and fahrenheit in braces ; - "f-c" both shown first fahrenheit and celsius in braces ; TEMP_FORMAT="c" ; ******************************** ; SENSORS PARAMETERS ; ******************************** ; Define the motherboard monitoring program ; We support the following programs far ; - HDDtemp http://www.guzu.net/linux/hddtemp.php (Linux) ; - LMSensors http://www.lm-sensors.org/ (Linux) ; - Healthd http://healthd.thehousleys.net/ (FreeBSD) ; - HWSensors http://www.openbsd.org/ (OpenBSD) ; - MBMon http://www.nt.phys.kyushu-u.ac.jp/shimizu/download/download.html (FreeBSD/Linux/NetBSD/OpenBSD) ; - MBM5 http://mbm.livewiredev.com/ (data from file data/MBM5.csv - WinNT) ; - Coretemp No addon tool neded (FreeBSD/Linux) ; - IPMI http://openipmi.sourceforge.net/ (Linux) ; - FreeIPMI http://www.gnu.org/software/freeipmi/ (FreeBSD/Linux/OpenBSD/SunOS) ; - IPMIutil http://ipmiutil.sourceforge.net/ (Darwin/FreeBSD/Linux/SunOS/WinNT) ; - K8Temp http://hur.st/k8temp/ (DragonFly/FreeBSD/NetBSD/OpenBSD) ; - PiTemp No addon tool neded (Raspberry Pi and Banana Pi - Linux) ; - OHM http://openhardwaremonitor.org/ (WinNT) ; - ThermalZone No addon tool neded (WinNT/Linux/Android) ; - QTSsnmp SNMP service enabled and snmp-utils package installed: opkg install snmp-utils (QNAP - QTS Linux) ; - Hwmon No addon tool neded (Linux) ; - SpeedFan http://www.almico.com/speedfan.php (required tool packaged in: tools/speedfan/SpeedFanGet_bin.zip) (WinNT) ; ; Example: If you want to use lmsensors : SENSOR_PROGRAM="LMSensors" ; If you want to use lmsensors and IPMI: SENSOR_PROGRAM="LMSensors,IPMI" ; SENSOR_PROGRAM=false ; Show events of sensors ; - true : show events ; - false : do not show events ; SENSOR_EVENTS=true ; Some sensors programs contain an additional configuration in the relevant sections [sensor_...] ; ******************************** ; FILESYSTEM PARAMETERS ; ******************************** ; Show mount point ; - true : show mount point ; - false : do not show mount point ; SHOW_MOUNT_POINT=true ; Show mount option ; - true : show mount option ; - false : do not show mount option ; SHOW_MOUNT_OPTION=true ; Show mount credentials ; - true : show mount credentials ; - false : do not show mount credentials ; SHOW_MOUNT_CREDENTIALS=false ; Show inode usage ; - true : display used inodes in percent ; - false : hide them ; SHOW_INODES=true ; Hide mounts ; Example : HIDE_MOUNTS="/home,/usr" ; HIDE_MOUNTS="" ; Hide filesystem types ; Example : HIDE_FS_TYPES="tmpfs,devtmpfs,usbfs,bstfolder" ; HIDE_FS_TYPES="" ; Hide partitions ; Example : HIDE_DISKS="rootfs,/dev/sda1" ; HIDE_DISKS=true //hide all partitions ; HIDE_DISKS="" ; Filesystem usage warning threshold in percent ; - 0 : disabled ; - 90 : 90% ; Default is 90% ; FS_USAGE_THRESHOLD=90 ; ******************************** ; NETWORK PARAMETERS ; ******************************** ; Hide network interfaces ; Example : HIDE_NETWORK_INTERFACE="eth0,sit0" ; HIDE_NETWORK_INTERFACE=true //hide all network interfaces ; HIDE_NETWORK_INTERFACE="" ; Show network interfaces infos for Linux, Android, FreeBSD, NetBSD, OpenBSD, Haiku, Darwin, SunOS, Minix, QNX and WinNT ; Example : SHOW_NETWORK_INFOS=true ; SHOW_NETWORK_INFOS=true ; Show network infos expanded ; SHOW_NETWORK_INFOS_EXPANDED=false ; ******************************** ; UPS PARAMETERS ; ******************************** ; Define the ups monitoring program ; We support the following programs so far ; - Apcupsd http://www.apcupsd.com/ ; - Nut http://www.networkupstools.org/ ; - PowerSoftPlus http://ever.eu/ ; - pmset based on the result of the command "pmset -g batt" on Darwin system ; - SNMPups monitoring via Simple Network Management Protocol (SNMP) ; ; Example: If you want to use Apcupsd : UPS_PROGRAM="Apcupsd" ; If you want to use Apcupsd and Nut : UPS_PROGRAM="Apcupsd,Nut" ; UPS_PROGRAM=false ; Apcupsd supports multiple UPSes ; You can specify comma delimited list in the form : or :. The defaults are: 127.0.0.1:3551 ; See the following parameters in apcupsd.conf: NETSERVER, NISIP, NISPORT ; It uses the defaults if not specified. ; UPS_APCUPSD_LIST=false ; Apcupsd has a CGI monitoring utility called apcupsd-cgi ; You can set the parameter below to true if you have it installed - this will add apcupsd-cgi links to the UPS tree ; UPS_APCUPSD_CGI_ENABLE=false ; Nut supports multiple UPSes ; You can specify comma delimited list in the form : or :. The defaults are: 127.0.0.1:3493 ; See the following parameters in upsd.conf: LISTEN ; It uses the defaults if not specified. ; UPS_NUT_LIST=false ; SNMPups supports multiple UPSes ; You can specify comma delimited list in the form : or :. The default port is 161 ; List must be specified. ; UPS_SNMPUPS_LIST=false ; define how to access the SNMP data ; - "php-snmp" execute php snmprealwalk function (php-snmp module must be installed) ; - "command" execute snmpwalk command ; UPS_SNMPUPS_ACCESS="php-snmp" ; ******************************** ; SENSORS PROGRAMS PARAMETERS ; ******************************** [sensor_hddtemp] ; Hddtemp motherboard monitoring program configuration ; ; If the hddtemp program is available we can read the temperature, if hdd is smart capable ; !!ATTENTION!! hddtemp might be a security issue ; - ACCESS="command" //read data from 'hddtemp' command (must be set suid) ; - ACCESS="tcp" //read data from hddtemp deamon (localhost:7634) ; ACCESS="command" [sensor_lmsensors] ; LMSensors motherboard monitoring program configuration ; ; - ACCESS="command" //read data from 'sensors' command ; - ACCESS="data" //read data from file data/lmsensors.txt ; ACCESS="command" [sensor_healthd] ; Healthd motherboard monitoring program configuration ; ; - ACCESS="command" //read data from 'healthdc' command ; - ACCESS="data" //read data from file data/healthd.txt ; ACCESS="command" [sensor_mbmon] ; MBMon motherboard monitoring program configuration ; ; - ACCESS="command" //read data from 'mbmon -c 1 -r' command ; - ACCESS="data" //read data from file data/mbmon.txt ; - ACCESS="tcp" //read data from mbmon deamon (localhost:411) ; ACCESS="command" [sensor_ipmi] ; IPMI motherboard monitoring program configuration ; ; - ACCESS="command" //read data from 'ipmitool sensor' command ; - ACCESS="data" //read data from file data/ipmi.txt ; ACCESS="command" [sensor_freeipmi] ; FreeIPMI motherboard monitoring program configuration ; ; - ACCESS="command" //read data from 'ipmi-sensors --output-sensor-thresholds' program ; - ACCESS="data" //read data from file data/freeipmi.txt ; ACCESS="command" [sensor_ipmiutil] ; IPMIutil motherboard monitoring program configuration ; ; - ACCESS="command" //read data from 'ipmiutil sensor -stw' command ; - ACCESS="data" //read data from file data/ipmiutil.txt ; ACCESS="command" [sensor_k8temp] ; K8Temp motherboard monitoring program configuration ; ; - ACCESS="command" //read data from 'k8temp' command ; - ACCESS="data" //read data from file data/k8temp.txt ; ACCESS="command" [sensor_speedfan] ; SpeedFan motherboard monitoring program configuration ; ; - ACCESS="command" //read data from 'speedfanget' command ; - ACCESS="data" //read data from file data/speedfan.txt ; ACCESS="command" ; ******************************** ; PLUGINS PARAMETERS ; ******************************** [bat] ; BAT Plugin configuration ; define how to access the battery statistic data ; - "command" read data from /proc/acpi/battery/BAT0/info and /proc/acpi/battery/BAT0/state ; on newer kernel or on Android read files from /sys/class/power_supply/ on Darwin read data from 'ioreg -w0 -l -n AppleSmartBattery -r' command on FreeBSD read data from 'acpiconf -i batt' command on OpenBSD read data from 'sysctl hw.sensors.acpibat0' command ; - "data" (a file must be available in the data directory of the phpsysinfo installation ; with the filename "bat_info.txt" and "bat_state.txt"; content is the output ; from "cat /proc/acpi/battery/BAT0/info" and "cat /proc/acpi/battery/BAT0/state") ; ACCESS="command" ; define the battery device (no matter for WinNT, FreeBSD, Darwin and some Android and Linux) ; DEVICE="BAT0" [ipmiinfo] ; ipmiinfo Plugin configuration ; define how to access the IPMI statistic data ; - "command" ipmitool command is run everytime the block gets refreshed or build ; if access error execute first: chmod 666 /dev/ipmi0 ; - "data" (a file must be available in the data directory of the phpsysinfo installation ; with the filename "ipmiinfo.txt"; content is the output from "ipmitool sensor") ; ACCESS="command" [mdstatus] ; MDStatus Plugin configuration ; define how to access the mdstat statistic data ; - "file" /proc/mdstat is read ; - "data" (a file must be available in the data directory of the phpsysinfo installation ; with the filename "mdstat.txt"; content is the output from "cat /proc/mdstat") ; ACCESS="file" ; Hide RAID devices ; Example : HIDE_RAID_DEVICES="md127" ; HIDE_RAID_DEVICES="" [dmraid] ; DMRaid Plugin configuration ; define how to access the dmraid statistic data ; - "command" dmraid command is run everytime the block gets refreshed or build ; if access error try execute first: chmod 4755 /sbin/dmraid ; This method is not recommended for safety reasons! ; - "data" (a file must be available in the data directory of the phpsysinfo installation ; with the filename "dmraid.txt"; content is generated by command "dmraid -s -vv >dmraid.txt 2>&1") ; ACCESS="command" ; Hide RAID devices ; Example : HIDE_RAID_DEVICES=".ddf1_disks" ; HIDE_RAID_DEVICES="" [ps] ; PS Plugin configuration ; define how to access the ps statistic data ; - "command" ps command is run everytime the block gets refreshed or build / on WINNT ; information is retrieved everytime through WMI ; - "data" (a file must be available in the data directory of the phpsysinfo installation ; with the filename "ps.txt"; content is the output from "ps -axo pid,ppid,pmem,args") ; ACCESS="command" ; Show kthreadd child list expanded ; SHOW_KTHREADD_EXPANDED=true [psstatus] ; PSStatus Plugin configuration ; define how to access the psstatus statistic data ; - "command" pidof command is run everytime the block gets refreshed or build / on WINNT ; information is retrieved everytime through WMI ; - "data" a file must be available in the data directory of the phpsysinfo installation ; with the filename "psstatus.txt"; content is the output from ; for ps in "apache2" "mysqld" "sshd"; do echo $ps "|" `pidof -s $ps`; done ; ACCESS="command" ; Regular expression search in the process name (e.g. "ddclient.*") ; - true : Regular expression search (used pgrep command) ; - false : Normal search (used pidof command) ; USE_REGEX=false ; controls which processes are checked if they are running ; ; string contains a list of process names that are checked, names are seperated by a comma (on WINNT names must end with '.exe') ; PROCESSES="mysqld, sshd, explorer.exe" [quotas] ; Quotas Plugin configuration ; define how to access the repquota statistic data ; - "command" repquota command is run everytime the block gets refreshed or build ; - "data" (a file must be available in the data directory of the phpsysinfo installation with the filename "quotas.txt"; content is the output from "repquota -au") ; ACCESS="command" [smart] ; SMART Plugin configuration ; Smartctl program ; If the smartctl program is available we can read S.M.A.R.T informations ; - "command" smartctl command is run everytime the block gets refreshed or build ; if error: Smartctl open device: /dev/sda failed: Permission denied ; Not recommended method: ; execute: chmod 4755 /usr/sbin/smartctl ; - "data" (a file must be available in the data directory of the ; phpsysinfo installation with the filename "smart{disk_number}.txt"; ; content is the output from "smartctl --all device") ; ACCESS="command" ; Smartctl devices to monitor ; If the smartctl support is enabled, those disks information will be displayed ; - DEVICES="/dev/hda,/dev/hdb" //Will display those two disks informations ; You also can specify --device option value for smartctl command surrounded by parentheses eg: ; - DEVICES="(marvell)/dev/sda" ; or ; - DEVICES="(megaraid.0)/dev/sda" //comma in --device option value is replaced by a dot ; DEVICES="/dev/sda, /dev/sdb" ; Smartctl ID# and column name from "Vendor Specific SMART Attributes with Thresholds" table ; If the smartctl support is enabled, enter the ID#-COLUMN_NAME from "Vendor Specific SMART Attributes with Thresholds" table from smartctl output. ; or for no SCSI devices: ID#-COLUMN_NAME-REPLACEMENT_ID# where REPLACEMENT_ID# is an alternative ID number. ; COLUMN_NAME of this ID# will be displayed in the phpsysinfo S.M.A.R.T table. If you want RAW_VALUE to be displayed for the temperature (ID# 194) enter 194-RAW_VALUE ; - IDS="194-VALUE,4-VALUE,009-RAW_VALUE" //ID#-COLUMN_NAME, ID#-COLUMN_NAME, etc... ; IDS="005-RAW_VALUE,194-RAW_VALUE,4-RAW_VALUE,009-RAW_VALUE,012-RAW_VALUE,193-RAW_VALUE-225,001-RAW_VALUE,007-RAW_VALUE,200-RAW_VALUE,197-RAW_VALUE,198-RAW_VALUE" [snmppinfo] ; SNMPPInfo Plugin configuration ; define how to access the SNMP Printer Info statistic data ; - "php-snmp" execute php snmprealwalk function (php-snmp module must be installed) ; - "command" execute snmpwalk command ; - "data" a file must be available in the data directory of the ; phpsysinfo installation with the filename "snmppinfo{printer_number}.txt"; ; content is the output from: ; LANG=C LC_ALL=C snmpwalk -On -c public -v 1 {printer_address} .1.3.6.1.2.1.1.5 > snmppinfo{printer_number}.txt ; LANG=C LC_ALL=C snmpwalk -On -c public -v 1 {printer_address} .1.3.6.1.2.1.43.11.1.1 >> snmppinfo{printer_number}.txt ; LANG=C LC_ALL=C snmpwalk -On -c public -v 1 {printer_address} .1.3.6.1.2.1.43.18.1.1 >> snmppinfo{printer_number}.txt ; ACCESS="php-snmp" ;define the Printer devices ; ; string contains a list of printer addresses that are checked ; DEVICES="192.168.0.5, 192.168.0.9" [updatenotifier] ; Update Notifier Plugin configuration ; define the update info file format ; - true: Ubuntu Landscape format (file: /var/lib/update-notifier/updates-available) ; - false: universal format (format: A;B) ; A: total packages to update ; B: security packages to update ; UBUNTU_LANDSCAPE_FORMAT=true ; define the update info file ; FILE="/var/lib/update-notifier/updates-available" [uprecords] ; Uprecords Plugin configuration ; define how to access the uprecords statistic data ; - "command" uprecords command is run everytime the block gets refreshed or build ; if access error try execute first: chmod 4755 /usr/bin/uprecords ; This method is not recommended for safety reasons! ; - "data" (a file must be available in the data directory of the phpsysinfo installation ; with the filename "uprecords.txt"; content is the output from "TZ=GMT uprecords -a -w") ; ACCESS="command" ; define the maximum number of entries to show (for command access) ; default is 10 ; MAX_ENTRIES = 10 phpsysinfo-3.2.5/phpsysinfo.xslt000066400000000000000000002420001265516077000170500ustar00rootroot00000000000000 <xsl:text>phpSysInfo</xsl:text>

    System information : ( )

    System Vital

    Canonical Hostname
    Listening IP
    Kernel Version
    Distro Name file:/// &nbsp; &nbsp;
    Uptime Days Hours Minutes
    Current Users
    Load Averages <br/>
    &nbsp;
    &nbsp; %
    System Language
    Code Page
    Processes

    Hardware Information

    Machine
    Processors
    Model
    CPU Speed MHz
    CPU Speed Max MHz
    CPU Speed Min MHz
    Bus Speed MHz
    Cache Size KiB
    Virtualization
    System Bogomips

    PCI Devices

    IDE Devices

    • ( KiB)

    SCSI Devices

    • ( KiB)

    USB Devices

    TB Devices

    I2C Devices

    Memory Usage

    Type Usage Free Used Size
    Physical Memory
    &nbsp;
    &nbsp; %
    KiB KiB KiB
    - Kernel + applications
    &nbsp;
    &nbsp; %
    KiB
    - Cached
    &nbsp;
    &nbsp; %
    KiB
    - Buffers
    &nbsp;
    &nbsp; %
    KiB
    Disk Swap
    &nbsp;
    &nbsp; %
    KiB KiB KiB
    -
    &nbsp;
    &nbsp; %
    KiB KiB KiB

    Mounted Filesystems

    Mountpoint Type Partition Usage Free Used Size
    &nbsp;
    &nbsp; % ( %)
    KiB KiB KiB

    Network Usage

    Device Received Send Err/Drop
    KiB &nbsp; KiB /
    phpsysinfo-3.2.5/phpsysinfo3.xsd000066400000000000000000000450131265516077000167440ustar00rootroot00000000000000 phpsysinfo-3.2.5/plugins/000077500000000000000000000000001265516077000154155ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/bat/000077500000000000000000000000001265516077000161635ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/bat/bat_bootstrap.html000066400000000000000000000073421265516077000217220ustar00rootroot00000000000000 phpsysinfo-3.2.5/plugins/bat/class.bat.inc.php000066400000000000000000000774341265516077000213350ustar00rootroot00000000000000ConnectServer(); } else { $_cim = $objLocatorCIM->ConnectServer($strHostname, 'root\CIMv2', $strHostname.'\\'.$strUser, $strPassword); } // initialize the wmi object $objLocatorWMI = new COM('WbemScripting.SWbemLocator'); if ($strHostname == "") { $_wmi = $objLocatorWMI->ConnectServer($strHostname, 'root\WMI'); } else { $_wmi = $objLocatorWMI->ConnectServer($strHostname, 'root\WMI', $strHostname.'\\'.$strUser, $strPassword); } } catch (Exception $e) { $this->global_error->addError("WMI connect error", "PhpSysInfo can not connect to the WMI interface for security reasons.\nCheck an authentication mechanism for the directory where phpSysInfo is installed."); } $buffer_info = ''; $buffer_state = ''; $bufferWB = CommonFunctions::getWMI($_cim, 'Win32_Battery', array('EstimatedChargeRemaining', 'DesignVoltage', 'BatteryStatus', 'Chemistry')); if (sizeof($bufferWB)>0) { $capacity = ''; if (isset($bufferWB[0]['EstimatedChargeRemaining'])) { $capacity = $bufferWB[0]['EstimatedChargeRemaining']; } if (isset($bufferWB[0]['BatteryStatus'])) { switch ($bufferWB[0]['BatteryStatus']) { case 1: $batstat = 'Discharging'; break; case 2: $batstat = 'AC connected'; break; case 3: $batstat = 'Fully Charged'; break; case 4: $batstat = 'Low'; break; case 5: $batstat = 'Critical'; break; case 6: $batstat = 'Charging'; break; case 7: $batstat = 'Charging and High'; break; case 8: $batstat = 'Charging and Low'; break; case 9: $batstat = 'Charging and Critical'; break; case 10: $batstat = 'Undefined'; break; case 11: $batstat = 'Partially Charged'; break; default: $batstat = ''; } if ($batstat != '') $buffer_state .= 'POWER_SUPPLY_STATUS='.$batstat."\n"; } $techn = ''; if (isset($bufferWB[0]['Chemistry'])) { switch ($bufferWB[0]['Chemistry']) { case 1: $techn = 'Other'; break; case 2: $techn = 'Unknown'; break; case 3: $techn = 'PbAc'; break; case 4: $techn = 'NiCd'; break; case 5: $techn = 'NiMH'; break; case 6: $techn = 'Li-ion'; break; case 7: $techn = 'Zinc-air'; break; case 8: $techn = 'Li-poly'; break; } } $bufferWPB = CommonFunctions::getWMI($_cim, 'Win32_PortableBattery', array('DesignVoltage', 'Chemistry', 'DesignCapacity', 'FullChargeCapacity')); if (isset($bufferWPB[0]['DesignVoltage'])) { $buffer_info .= 'POWER_SUPPLY_VOLTAGE_MIN_DESIGN='.($bufferWPB[0]['DesignVoltage']*1000)."\n"; } // sometimes Chemistry from Win32_Battery returns 2 but Win32_PortableBattery returns e.g. 6 if ((($techn == '') || ($techn == 'Unknown')) && isset($bufferWPB[0]['Chemistry'])) { switch ($bufferWPB[0]['Chemistry']) { case 1: $techn = 'Other'; break; case 2: $techn = 'Unknown'; break; case 3: $techn = 'PbAc'; break; case 4: $techn = 'NiCd'; break; case 5: $techn = 'NiMH'; break; case 6: $techn = 'Li-ion'; break; case 7: $techn = 'Zinc-air'; break; case 8: $techn = 'Li-poly'; break; } } if ($techn != '') $buffer_info .= 'POWER_SUPPLY_TECHNOLOGY='.$techn."\n"; $bufferBS = CommonFunctions::getWMI($_wmi, 'BatteryStatus', array('RemainingCapacity', 'Voltage')); if (sizeof($bufferBS)>0) { if (isset($bufferBS[0]['RemainingCapacity']) && ($bufferBS[0]['RemainingCapacity']>0)) { $buffer_state .= 'POWER_SUPPLY_ENERGY_NOW='.($bufferBS[0]['RemainingCapacity']*1000)."\n"; $capacity = ''; } if (isset($bufferBS[0]['Voltage']) && ($bufferBS[0]['Voltage']>0)) { $buffer_state .= 'POWER_SUPPLY_VOLTAGE_NOW='.($bufferBS[0]['Voltage']*1000)."\n"; } elseif (isset($bufferWB[0]['DesignVoltage'])) { $buffer_state .= 'POWER_SUPPLY_VOLTAGE_NOW='.($bufferWB[0]['DesignVoltage']*1000)."\n"; } } if (!isset($bufferWPB[0]['FullChargeCapacity'])) { $bufferBFCC = CommonFunctions::getWMI($_wmi, 'BatteryFullChargedCapacity', array('FullChargedCapacity')); if ((sizeof($bufferBFCC)>0) && isset($bufferBFCC[0]['FullChargedCapacity'])) { $bufferWPB[0]['FullChargeCapacity'] = $bufferBFCC[0]['FullChargedCapacity']; } } if (isset($bufferWPB[0]['FullChargeCapacity'])) { $buffer_info .= 'POWER_SUPPLY_ENERGY_FULL='.($bufferWPB[0]['FullChargeCapacity']*1000)."\n"; if ($capacity != '') $buffer_state .= 'POWER_SUPPLY_ENERGY_NOW='.(round($capacity*$bufferWPB[0]['FullChargeCapacity']*10)."\n"); if (isset($bufferWPB[0]['DesignCapacity']) && ($bufferWPB[0]['DesignCapacity']!=0)) $buffer_info .= 'POWER_SUPPLY_ENERGY_FULL_DESIGN='.($bufferWPB[0]['DesignCapacity']*1000)."\n"; } elseif (isset($bufferWPB[0]['DesignCapacity'])) { $buffer_info .= 'POWER_SUPPLY_ENERGY_FULL_DESIGN='.($bufferWPB[0]['DesignCapacity']*1000)."\n"; if ($capacity != '') $buffer_state .= 'POWER_SUPPLY_ENERGY_NOW='.(round($capacity*$bufferWPB[0]['DesignCapacity']*10)."\n"); } else { if ($capacity != '') $buffer_state .= 'POWER_SUPPLY_CAPACITY='.$capacity."\n"; } $bufferBCC = CommonFunctions::getWMI($_wmi, 'BatteryCycleCount', array('CycleCount')); if ((sizeof($bufferBCC)>0) && isset($bufferBCC[0]['CycleCount']) && ($bufferBCC[0]['CycleCount']>0)) { $buffer_info .= 'POWER_SUPPLY_CYCLE_COUNT='.$bufferBCC[0]['CycleCount']."\n"; } } } elseif (PSI_OS == 'Darwin') { $buffer_info = ''; $buffer_state = ''; CommonFunctions::executeProgram('ioreg', '-w0 -l -n AppleSmartBattery -r', $buffer_info, false); } elseif (PSI_OS == 'FreeBSD') { $buffer_info = ''; $buffer_state = ''; CommonFunctions::executeProgram('acpiconf', '-i batt', $buffer_info, false); } elseif (PSI_OS == 'OpenBSD') { $buffer_info = ''; $buffer_state = ''; CommonFunctions::executeProgram('sysctl', 'hw.sensors.acpibat0', $buffer_info, false); } else { $buffer_info = ''; $buffer_state = ''; $bat_name = PSI_PLUGIN_BAT_DEVICE; $rfts_bi = CommonFunctions::rfts('/proc/acpi/battery/'.$bat_name.'/info', $buffer_info, 0, 4096, false); $rfts_bs = CommonFunctions::rfts('/proc/acpi/battery/'.$bat_name.'/state', $buffer_state, 0, 4096, false); if (!$rfts_bi && !$rfts_bs) { $buffer_info = ''; $buffer_state = ''; if (!CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/uevent', $buffer_info, 0, 4096, false)) { if (CommonFunctions::rfts('/sys/class/power_supply/battery/uevent', $buffer_info, 0, 4096, false)) { $bat_name = 'battery'; } else { CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/uevent', $buffer_info, 0, 4096, PSI_DEBUG); // Once again but with debug } } if (CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/voltage_min_design', $buffer1, 1, 4096, false)) { $buffer_state .= 'POWER_SUPPLY_VOLTAGE_MIN_DESIGN='.$buffer1."\n"; } if (CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/voltage_max_design', $buffer1, 1, 4096, false)) { $buffer_state .= 'POWER_SUPPLY_VOLTAGE_MAX_DESIGN='.$buffer1."\n"; } if (CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/voltage_now', $buffer1, 1, 4096, false)) { $buffer_state .= 'POWER_SUPPLY_VOLTAGE_NOW='.$buffer1."\n"; } if (CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/energy_full', $buffer1, 1, 4096, false)) { $buffer_state .= 'POWER_SUPPLY_ENERGY_FULL='.$buffer1."\n"; } if (CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/energy_now', $buffer1, 1, 4096, false)) { $buffer_state .= 'POWER_SUPPLY_ENERGY_NOW='.$buffer1."\n"; } if (CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/charge_full', $buffer1, 1, 4096, false)) { $buffer_state .= 'POWER_SUPPLY_CHARGE_FULL='.$buffer1."\n"; } if (CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/charge_now', $buffer1, 1, 4096, false)) { $buffer_state .= 'POWER_SUPPLY_CHARGE_NOW='.$buffer1."\n"; } if (CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/capacity', $buffer1, 1, 4096, false)) { $buffer_state .= 'POWER_SUPPLY_CAPACITY='.$buffer1; } if (CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/technology', $buffer1, 1, 4096, false)) { $buffer_state .= 'POWER_SUPPLY_TECHNOLOGY='.$buffer1; } if (CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/status', $buffer1, 1, 4096, false)) { $buffer_state .= 'POWER_SUPPLY_STATUS='.$buffer1; } if (CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/batt_temp', $buffer1, 1, 4096, false)) { $buffer_state .= 'POWER_SUPPLY_TEMP='.$buffer1; } if (CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/batt_vol', $buffer1, 1, 4096, false)) { $buffer_state .= 'POWER_SUPPLY_VOLTAGE_NOW='.$buffer1; } if (CommonFunctions::rfts('/sys/class/power_supply/'.$bat_name.'/health', $buffer1, 1, 4096, false)) { $buffer_state .= 'POWER_SUPPLY_HEALTH='.$buffer1; } } } break; case 'data': CommonFunctions::rfts(APP_ROOT."/data/bat_info.txt", $buffer_info); CommonFunctions::rfts(APP_ROOT."/data/bat_state.txt", $buffer_state); break; default: $this->global_error->addConfigError("__construct()", "PSI_PLUGIN_BAT_ACCESS"); break; } $this->_filecontent['info'] = preg_split("/\n/", $buffer_info, -1, PREG_SPLIT_NO_EMPTY); $this->_filecontent['state'] = preg_split("/\n/", $buffer_state, -1, PREG_SPLIT_NO_EMPTY); } /** * doing all tasks to get the required informations that the plugin needs * result is stored in an internal array * * @return void */ public function execute() { if (empty($this->_filecontent)) { return; } foreach ($this->_filecontent['info'] as $roworig) { $roworig = trim($roworig); if (preg_match('/^[dD]esign capacity:\s*(.*) (.*)$/', $roworig, $data)) { $bat['design_capacity'] = $data[1]; if (!isset($bat['capacity_unit'])) { $bat['capacity_unit'] = trim($data[2]); } elseif ($bat['capacity_unit'] != trim($data[2])) { $bat['capacity_unit'] = "???"; } } elseif (preg_match('/^[lL]ast full capacity:\s*(.*) (.*)$/', $roworig, $data)) { $bat['full_capacity'] = $data[1]; if (!isset($bat['capacity_unit'])) { $bat['capacity_unit'] = trim($data[2]); } elseif ($bat['capacity_unit'] != trim($data[2])) { $bat['capacity_unit'] = "???"; } } elseif (preg_match('/^cycle count:\s*(.*)$/', $roworig, $data) && ($data[1]>0)) { $bat['cycle_count'] = $data[1]; } elseif (preg_match('/^[dD]esign voltage:\s*(.*) (.*)$/', $roworig, $data)) { if ($data[2]=="mV") { // uV or mV detection $bat['design_voltage'] = $data[1]; } else { $bat['design_voltage'] = round($data[1]/1000); } } elseif (preg_match('/^battery type:\s*(.*)$/', $roworig, $data)) { $bat['battery_type'] = $data[1]; } elseif (preg_match('/^POWER_SUPPLY_CYCLE_COUNT=(.*)$/', $roworig, $data) && ($data[1]>0)) { $bat['cycle_count'] = $data[1]; } elseif (preg_match('/^POWER_SUPPLY_VOLTAGE_MIN_DESIGN=(.*)$/', $roworig, $data)) { if ($data[1]<100000) { // uV or mV detection $bat['design_voltage'] = $data[1]; } else { $bat['design_voltage'] = round($data[1]/1000); } } elseif (preg_match('/^POWER_SUPPLY_VOLTAGE_MAX_DESIGN=(.*)$/', $roworig, $data)) { if ($data[1]<100000) { // uV or mV detection $bat['design_voltage_max'] = $data[1]; } else { $bat['design_voltage_max'] = round($data[1]/1000); } } elseif (preg_match('/^POWER_SUPPLY_ENERGY_FULL=(.*)$/', $roworig, $data)) { $bat['full_capacity'] = ($data[1]/1000); if (!isset($bat['capacity_unit'])) { $bat['capacity_unit'] = "mWh"; } elseif ($bat['capacity_unit'] != "mWh") { $bat['capacity_unit'] = "???"; } } elseif (preg_match('/^POWER_SUPPLY_CHARGE_FULL=(.*)$/', $roworig, $data)) { $bat['full_capacity'] = ($data[1]/1000); if (!isset($bat['capacity_unit'])) { $bat['capacity_unit'] = "mAh"; } elseif ($bat['capacity_unit'] != "mAh") { $bat['capacity_unit'] = "???"; } } elseif (preg_match('/^POWER_SUPPLY_ENERGY_NOW=(.*)$/', $roworig, $data)) { if (!isset($bat['capacity_unit']) || ($bat['capacity_unit'] == "mWh")) { $bat['capacity_unit'] = "mWh"; $bat['remaining_capacity'] = ($data[1]/1000); } } elseif (preg_match('/^POWER_SUPPLY_CHARGE_NOW=(.*)$/', $roworig, $data)) { if (!isset($bat['capacity_unit']) || ($bat['capacity_unit'] == "mAh")) { $bat['capacity_unit'] = "mAh"; $bat['remaining_capacity'] = ($data[1]/1000); } /* auxiary */ } elseif (preg_match('/^POWER_SUPPLY_ENERGY_FULL_DESIGN=(.*)$/', $roworig, $data)) { $bat['design_capacity'] = ($data[1]/1000); if (!isset($bat['capacity_unit'])) { $bat['capacity_unit'] = "mWh"; } elseif ($bat['capacity_unit'] != "mWh") { $bat['capacity_unit'] = "???"; } } elseif (preg_match('/^POWER_SUPPLY_CHARGE_FULL_DESIGN=(.*)$/', $roworig, $data)) { $bat['design_capacity'] = ($data[1]/1000); if (!isset($bat['capacity_unit'])) { $bat['capacity_unit'] = "mAh"; } elseif ($bat['capacity_unit'] != "mAh") { $bat['capacity_unit'] = "???"; } } elseif (preg_match('/^POWER_SUPPLY_VOLTAGE_NOW=(.*)$/', $roworig, $data)) { if ($data[1]<100000) { // uV or mV detection $bat['present_voltage'] = $data[1]; } else { $bat['present_voltage'] = round($data[1]/1000); } } elseif (preg_match('/^POWER_SUPPLY_CAPACITY=(.*)$/', $roworig, $data)) { $bat['capacity'] = $data[1]; } elseif (preg_match('/^POWER_SUPPLY_TEMP=(.*)$/', $roworig, $data)) { $bat['battery_temperature'] = $data[1]/10; } elseif (preg_match('/^POWER_SUPPLY_TECHNOLOGY=(.*)$/', $roworig, $data)) { $bat['battery_type'] = $data[1]; } elseif (preg_match('/^POWER_SUPPLY_STATUS=(.*)$/', $roworig, $data)) { $bat['charging_state'] = $data[1]; } elseif (preg_match('/^POWER_SUPPLY_HEALTH=(.*)$/', $roworig, $data)) { $bat['battery_condition'] = $data[1]; /* Darwin */ } elseif (preg_match('/^"MaxCapacity"\s*=\s*(.*)$/', $roworig, $data)) { $bat['full_capacity'] = $data[1]; } elseif (preg_match('/^"CurrentCapacity"\s*=\s*(.*)$/', $roworig, $data)) { $bat['remaining_capacity'] = $data[1]; } elseif (preg_match('/^"Voltage"\s*=\s*(.*)$/', $roworig, $data)) { $bat['present_voltage'] = $data[1]; } elseif (preg_match('/^"BatteryType"\s*=\s*"(.*)"$/', $roworig, $data)) { $bat['battery_type'] = $data[1]; } elseif (preg_match('/^"Temperature"\s*=\s*(.*)$/', $roworig, $data)) { if ($data[1]>0) $bat['battery_temperature'] = $data[1]/100; } elseif (preg_match('/^"DesignCapacity"\s*=\s*(.*)$/', $roworig, $data)) { $bat['design_capacity'] = $data[1]; } elseif (preg_match('/^"CycleCount"\s*=\s*(.*)$/', $roworig, $data) && ($data[1]>0)) { $bat['cycle_count'] = $data[1]; /* auxiary */ } elseif (preg_match('/^"FullyCharged"\s*=\s*Yes$/', $roworig, $data)) { $bat['charging_state_f'] = true; } elseif (preg_match('/^"IsCharging"\s*=\s*Yes$/', $roworig, $data)) { $bat['charging_state_i'] = true; } elseif (preg_match('/^"ExternalConnected"\s*=\s*Yes$/', $roworig, $data)) { $bat['charging_state_e'] = true; /* FreeBSD */ } elseif (preg_match('/^Type:\s*(.*)$/', $roworig, $data)) { $bat['battery_type'] = $data[1]; } elseif (preg_match('/^State:\s*(.*)$/', $roworig, $data)) { $bat['charging_state'] = $data[1]; } elseif (preg_match('/^Present voltage:\s*(.*) (.*)$/', $roworig, $data)) { if ($data[2]=="mV") { // uV or mV detection $bat['present_voltage'] = $data[1]; } else { $bat['present_voltage'] = round($data[1]/1000); } } elseif (preg_match('/^Voltage:\s*(.*) (.*)$/', $roworig, $data)) { if ($data[2]=="mV") { // uV or mV detection $bat['present_voltage'] = $data[1]; } else { $bat['present_voltage'] = round($data[1]/1000); } } elseif (preg_match('/^Remaining capacity:\s*(.*)%$/', $roworig, $data)) { $bat['capacity'] = $data[1]; /* OpenBSD */ } elseif (preg_match('/^hw.sensors.acpibat0.volt0=(.*) VDC \(voltage\)$/', $roworig, $data)) { $bat['design_voltage'] = 1000*$data[1]; } elseif (preg_match('/^hw.sensors.acpibat0.volt1=(.*) VDC \(current voltage\)$/', $roworig, $data)) { $bat['present_voltage'] = 1000*$data[1]; } elseif (preg_match('/^hw.sensors.acpibat0.watthour0=(.*) Wh \(last full capacity\)$/', $roworig, $data)) { $bat['full_capacity'] = 1000*$data[1]; if (!isset($bat['capacity_unit'])) { $bat['capacity_unit'] = "mWh"; } elseif ($bat['capacity_unit'] != "mWh") { $bat['capacity_unit'] = "???"; } } elseif (preg_match('/^hw.sensors.acpibat0.watthour4=(.*) Wh \(design capacity\)$/', $roworig, $data)) { $bat['design_capacity'] = 1000*$data[1]; if (!isset($bat['capacity_unit'])) { $bat['capacity_unit'] = "mWh"; } elseif ($bat['capacity_unit'] != "mWh") { $bat['capacity_unit'] = "???"; } } elseif (preg_match('/^hw.sensors.acpibat0.watthour3=(.*) Wh \(remaining capacity\)/', $roworig, $data)) { $bat['remaining_capacity'] = 1000*$data[1]; if (!isset($bat['capacity_unit'])) { $bat['capacity_unit'] = "mWh"; } elseif ($bat['capacity_unit'] != "mWh") { $bat['capacity_unit'] = "???"; } } elseif (preg_match('/^hw.sensors.acpibat0.raw0=.* \((.*)\)/', $roworig, $data)) { $bat['charging_state'] = $data[1]; } } foreach ($this->_filecontent['state'] as $roworig) { $roworig = trim($roworig); if (preg_match('/^remaining capacity:\s*(.*) (.*)$/', $roworig, $data)) { if (!isset($bat['capacity_unit']) || ($bat['capacity_unit'] == trim($data[2]))) { $bat['capacity_unit'] = trim($data[2]); $bat['remaining_capacity'] = $data[1]; } } elseif (preg_match('/^present voltage:\s*(.*) (.*)$/', $roworig, $data)) { if ($data[2]=="mV") { // uV or mV detection $bat['present_voltage'] = $data[1]; } else { $bat['present_voltage'] = round($data[1]/1000); } } elseif (preg_match('/^charging state:\s*(.*)$/', $roworig, $data)) { $bat['charging_state'] = $data[1]; } elseif (preg_match('/^POWER_SUPPLY_VOLTAGE_MIN_DESIGN=(.*)$/', $roworig, $data)) { if ($data[1]<100000) { // uV or mV detection $bat['design_voltage'] = $data[1]; } else { $bat['design_voltage'] = round($data[1]/1000); } } elseif (preg_match('/^POWER_SUPPLY_VOLTAGE_MAX_DESIGN=(.*)$/', $roworig, $data)) { if ($data[1]<100000) { // uV or mV detection $bat['design_voltage_max'] = $data[1]; } else { $bat['design_voltage_max'] = round($data[1]/1000); } } elseif (preg_match('/^POWER_SUPPLY_ENERGY_FULL=(.*)$/', $roworig, $data)) { $bat['full_capacity'] = ($data[1]/1000); if (!isset($bat['capacity_unit'])) { $bat['capacity_unit'] = "mWh"; } elseif ($bat['capacity_unit'] != "mWh") { $bat['capacity_unit'] = "???"; } } elseif (preg_match('/^POWER_SUPPLY_CHARGE_FULL=(.*)$/', $roworig, $data)) { $bat['full_capacity'] = ($data[1]/1000); if (!isset($bat['capacity_unit'])) { $bat['capacity_unit'] = "mAh"; } elseif ($bat['capacity_unit'] != "mAh") { $bat['capacity_unit'] = "???"; } } elseif (preg_match('/^POWER_SUPPLY_ENERGY_NOW=(.*)$/', $roworig, $data)) { if (!isset($bat['capacity_unit']) || ($bat['capacity_unit'] == "mWh")) { $bat['capacity_unit'] = "mWh"; $bat['remaining_capacity'] = ($data[1]/1000); } } elseif (preg_match('/^POWER_SUPPLY_CHARGE_NOW=(.*)$/', $roworig, $data)) { if (!isset($bat['capacity_unit']) || ($bat['capacity_unit'] == "mAh")) { $bat['capacity_unit'] = "mAh"; $bat['remaining_capacity'] = ($data[1]/1000); } } elseif (preg_match('/^POWER_SUPPLY_VOLTAGE_NOW=(.*)$/', $roworig, $data)) { if ($data[1]<100000) { // uV or mV detection $bat['present_voltage'] = $data[1]; } else { $bat['present_voltage'] = round($data[1]/1000); } } elseif (preg_match('/^POWER_SUPPLY_CAPACITY=(.*)$/', $roworig, $data)) { $bat['capacity'] = $data[1]; } elseif (preg_match('/^POWER_SUPPLY_TEMP=(.*)$/', $roworig, $data)) { $bat['battery_temperature'] = $data[1]/10; } elseif (preg_match('/^POWER_SUPPLY_TECHNOLOGY=(.*)$/', $roworig, $data)) { $bat['battery_type'] = $data[1]; } elseif (preg_match('/^POWER_SUPPLY_STATUS=(.*)$/', $roworig, $data)) { $bat['charging_state'] = $data[1]; } elseif (preg_match('/^POWER_SUPPLY_HEALTH=(.*)$/', $roworig, $data)) { $bat['battery_condition'] = $data[1]; } } if (isset($bat)) $this->_result[0] = $bat; } /** * generates the XML content for the plugin * * @return SimpleXMLElement entire XML content for the plugin */ public function xml() { foreach ($this->_result as $bat_item) { $xmlbat = $this->xml->addChild("Bat"); if ((!isset($bat_item['remaining_capacity']) || (isset($bat_item['full_capacity']) && ($bat_item['full_capacity'] == 0))) && isset($bat_item['capacity']) && ($bat_item['capacity']>=0)) { if (isset($bat_item['capacity_unit']) && ($bat_item['capacity_unit'] !== "???") && (isset($bat_item['full_capacity']) && ($bat_item['full_capacity'] > 0))) { $xmlbat->addAttribute("CapacityUnit", $bat_item['capacity_unit']); $xmlbat->addAttribute("RemainingCapacity", round($bat_item['capacity']*$bat_item['full_capacity']/100)); $xmlbat->addAttribute("FullCapacity", $bat_item['full_capacity']); if (isset($bat_item['design_capacity'])) { $xmlbat->addAttribute("DesignCapacity", $bat_item['design_capacity']); } } else { $xmlbat->addAttribute("FullCapacity", 100); $xmlbat->addAttribute("RemainingCapacity", $bat_item['capacity']); $xmlbat->addAttribute("CapacityUnit", "%"); } } else { if (isset($bat_item['full_capacity'])) { if (isset($bat_item['design_capacity'])) { $xmlbat->addAttribute("DesignCapacity", $bat_item['design_capacity']); } $xmlbat->addAttribute("FullCapacity", $bat_item['full_capacity']); } elseif (isset($bat_item['design_capacity'])) { $xmlbat->addAttribute("FullCapacity", $bat_item['design_capacity']); } if (isset($bat_item['remaining_capacity'])) { $xmlbat->addAttribute("RemainingCapacity", $bat_item['remaining_capacity']); } if (isset($bat_item['capacity_unit'])) { $xmlbat->addAttribute("CapacityUnit", $bat_item['capacity_unit']); } } if (isset($bat_item['design_voltage'])) { $xmlbat->addAttribute("DesignVoltage", $bat_item['design_voltage']); if (isset($bat_item['design_voltage_max']) && ($bat_item['design_voltage_max'] != $bat_item['design_voltage'])) { $xmlbat->addAttribute("DesignVoltageMax", $bat_item['design_voltage_max']); } } elseif (isset($bat_item['design_voltage_max'])) { $xmlbat->addAttribute("DesignVoltage", $bat_item['design_voltage_max']); } if (isset($bat_item['present_voltage'])) { $xmlbat->addAttribute("PresentVoltage", $bat_item['present_voltage']); } if (isset($bat_item['charging_state'])) { $xmlbat->addAttribute("ChargingState", $bat_item['charging_state']); } else { if (isset($bat_item['charging_state_i'])) { $xmlbat->addAttribute("ChargingState", 'Charging'); } elseif (!isset($bat_item['charging_state_e'])) { $xmlbat->addAttribute("ChargingState", 'Discharging'); } elseif (isset($bat_item['charging_state_f'])) { $xmlbat->addAttribute("ChargingState", 'Fully Charged'); } else { $xmlbat->addAttribute("ChargingState", 'Unknown state'); } } if (isset($bat_item['battery_type'])) { $xmlbat->addAttribute("BatteryType", $bat_item['battery_type']); } if (isset($bat_item['battery_temperature'])) { $xmlbat->addAttribute("BatteryTemperature", $bat_item['battery_temperature']); } if (isset($bat_item['battery_condition'])) { $xmlbat->addAttribute("BatteryCondition", $bat_item['battery_condition']); } if (isset($bat_item['cycle_count'])) { $xmlbat->addAttribute("CycleCount", $bat_item['cycle_count']); } } return $this->xml->getSimpleXmlElement(); } } phpsysinfo-3.2.5/plugins/bat/js/000077500000000000000000000000001265516077000165775ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/bat/js/bat.js000066400000000000000000000165321265516077000177120ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script * * http://phpsysinfo.sourceforge.net/ * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ // // $Id: bat.js 661 2012-08-27 11:26:39Z namiltd $ // /*global $, jQuery, buildBlock, datetime, plugin_translate, genlang, createBar */ "use strict"; var bat_show = false, bat_table; /** * insert content into table * @param {jQuery} xml plugin-XML */ function bat_populate(xml) { bat_table.fnClearTable(); $("Plugins Plugin_BAT Bat", xml).each(function bat_getitem(idp) { var DesignCapacity = "", FullCapacity = "", Capacity = "", DesignVoltage = "", BatteryType = "",RemainingCapacity = "", PresentVoltage = "", ChargingState = "", BatteryTemperature = "", BatteryCondition = "", CapacityUnit = "", CycleCount = "", DesignVoltageMax = ""; DesignCapacity = $(this).attr("DesignCapacity"); FullCapacity = $(this).attr("FullCapacity"); DesignVoltage = $(this).attr("DesignVoltage"); BatteryType = $(this).attr("BatteryType"); RemainingCapacity = $(this).attr("RemainingCapacity"); PresentVoltage = $(this).attr("PresentVoltage"); ChargingState = $(this).attr("ChargingState"); BatteryTemperature = $(this).attr("BatteryTemperature"); BatteryCondition = $(this).attr("BatteryCondition"); CapacityUnit = $(this).attr("CapacityUnit"); CycleCount = $(this).attr("CycleCount"); DesignVoltageMax = $(this).attr("DesignVoltageMax"); if (CapacityUnit == undefined) { CapacityUnit = "mWh"; } if ((CapacityUnit == "%") && (RemainingCapacity != undefined)) { bat_table.fnAddData([genlang(4, false, "BAT"), createBar(round(parseInt(RemainingCapacity, 10),0)), ' ']); } else { if (DesignCapacity != undefined) { bat_table.fnAddData([genlang(3, false, "BAT"), DesignCapacity+' '+CapacityUnit, ' ']); } if (FullCapacity == undefined) { if (RemainingCapacity != undefined) bat_table.fnAddData([genlang(4, false, "BAT"), RemainingCapacity+' '+CapacityUnit, ' ']); } else { if (DesignCapacity == undefined) { bat_table.fnAddData([genlang(14, false, "BAT"), FullCapacity+' '+CapacityUnit, ' ']); } else { bat_table.fnAddData([genlang(14, false, "BAT"), FullCapacity+' '+CapacityUnit, createBar(parseInt(DesignCapacity, 10) != 0 ? round(parseInt(FullCapacity, 10) / parseInt(DesignCapacity, 10) * 100, 0) : 0)]); } if (RemainingCapacity != undefined) bat_table.fnAddData([genlang(4, false, "BAT"), RemainingCapacity+' '+CapacityUnit, createBar(parseInt(FullCapacity, 10) != 0 ? round(parseInt(RemainingCapacity, 10) / parseInt(FullCapacity, 10) * 100, 0) : 0)]); } } if (ChargingState != undefined) { bat_table.fnAddData([genlang(9, false, "BAT"), ChargingState, ' ']); } if (DesignVoltage != undefined) { if (DesignVoltageMax != undefined) { bat_table.fnAddData([genlang(5, false, "BAT"), DesignVoltage+' mV', DesignVoltageMax+' mV']); } else { bat_table.fnAddData([genlang(5, false, "BAT"), DesignVoltage+' mV', ' ']); } } else if (DesignVoltageMax != undefined) { bat_table.fnAddData([genlang(5, false, "BAT"), DesignVoltageMax+' mV', ' ']); } if (PresentVoltage != undefined) { bat_table.fnAddData([genlang(6, false, "BAT"), PresentVoltage+' mV', ' ']); } if (BatteryType != undefined) { bat_table.fnAddData([genlang(10, false, "BAT"), BatteryType, ' ']); } if (BatteryTemperature != undefined) { bat_table.fnAddData([genlang(11, false, "BAT"), formatTemp(BatteryTemperature, xml), ' ']); } if (BatteryCondition != undefined) { bat_table.fnAddData([genlang(12, false, "BAT"), BatteryCondition, ' ']); } if (CycleCount != undefined) { bat_table.fnAddData([genlang(13, false, "BAT"), CycleCount, ' ']); } bat_show = true; }); } /** * fill the plugin block with table structure */ function bat_buildTable() { var html = ""; html += "\n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += "
    " + genlang(7, false, "BAT") + "" + genlang(8, false, "BAT") + " 
    \n"; $("#Plugin_BAT").append(html); } /** * load the xml via ajax */ function bat_request() { $("#Reload_BATTable").attr("title", "reload"); $.ajax({ url: "xml.php?plugin=BAT", dataType: "xml", error: function bat_error() { $.jGrowl("Error loading XML document for Plugin BAT!"); }, success: function bat_buildblock(xml) { populateErrors(xml); bat_populate(xml); if (bat_show) { plugin_translate("BAT"); $("#Plugin_BAT").show(); } } }); } $(document).ready(function bat_buildpage() { $("#footer").before(buildBlock("BAT", 1, true)); $("#Plugin_BAT").css("width", "451px"); bat_buildTable(); bat_table = $("#Plugin_BATTable").dataTable({ "bPaginate": false, "bLengthChange": false, "bFilter": false, "bSort": false, "bInfo": false, "bProcessing": true, "bAutoWidth": false, "bStateSave": true, "aoColumns": [{ "sType": 'span-string' }, { "sType": 'span-string' }, { "sType": 'span-string' }] }); bat_request(); $("#Reload_BATTable").click(function bat_reload(id) { bat_request(); $(this).attr("title", datetime()); }); }); phpsysinfo-3.2.5/plugins/bat/js/bat_bootstrap.js000066400000000000000000000102551265516077000220030ustar00rootroot00000000000000function renderPlugin_bat(data) { var directives = { DesignCapacity: { html: function () { var CapacityUnit = (this["CapacityUnit"] !== undefined) ? this["CapacityUnit"] : 'mWh'; return this["DesignCapacity"] + String.fromCharCode(160) + CapacityUnit; } }, FullCapacity: { html: function () { var CapacityUnit = (this["CapacityUnit"] !== undefined) ? this["CapacityUnit"] : 'mWh'; return this["FullCapacity"] + String.fromCharCode(160) + CapacityUnit; } }, FullCapacityBar: { html: function () { var CapacityUnit = (this["CapacityUnit"] !== undefined) ? this["CapacityUnit"] : 'mWh'; if (( CapacityUnit !== "%" ) && (this["DesignCapacity"] !== undefined)){ var percent = (this["DesignCapacity"] != 0) ? round(100*this["FullCapacity"]/this["DesignCapacity"],0) : 0; return '
    ' + '
    ' + percent + '%
    '; } else { return ''; } } }, RemainingCapacity: { html: function () { var CapacityUnit = (this["CapacityUnit"] !== undefined) ? this["CapacityUnit"] : 'mWh'; if ( CapacityUnit === "%" ) { return '
    ' + '
    ' + round(this["RemainingCapacity"],0) + '%
    '; } else { return this["RemainingCapacity"] + String.fromCharCode(160) + CapacityUnit; } } }, RemainingCapacityBar: { html: function () { var CapacityUnit = (this["CapacityUnit"] !== undefined) ? this["CapacityUnit"] : 'mWh'; if (( CapacityUnit !== "%" ) && (this["FullCapacity"] !== undefined)){ var percent = (this["FullCapacity"] != 0) ? round(100*this["RemainingCapacity"]/this["FullCapacity"],0) : 0; return '
    ' + '
    ' + percent + '%
    '; } else { return ''; } } }, PresentVoltage: { text: function () { return this['PresentVoltage'] + String.fromCharCode(160) + 'mV'; } }, BatteryTemperature: { html: function () { return formatTemp(this["BatteryTemperature"], data["Options"]["@attributes"]["tempFormat"]); } }, DesignVoltage: { text: function () { return this['DesignVoltage']+String.fromCharCode(160) + 'mV'; } }, DesignVoltageMax: { text: function () { return (this["DesignVoltageMax"] !== undefined) ? this['DesignVoltageMax']+String.fromCharCode(160) + 'mV' : ''; } } }; if ((data['Plugins']['Plugin_BAT'] !== undefined) && (data['Plugins']['Plugin_BAT']["Bat"] !== undefined) && (data['Plugins']['Plugin_BAT']["Bat"]["@attributes"] !== undefined)){ $('#bat').render(data['Plugins']['Plugin_BAT']["Bat"]["@attributes"], directives); var attr = data['Plugins']['Plugin_BAT']["Bat"]["@attributes"]; for (bat_param in {DesignCapacity:0,FullCapacity:1,RemainingCapacity:2,ChargingState:3,DesignVoltage:4,PresentVoltage:5,BatteryType:6,BatteryTemperature:7,BatteryCondition:8,CycleCount:9}) { if (attr[bat_param] !== undefined) { $('#bat_' + bat_param).show(); } } if (attr["CapacityUnit"] === "%") { $('#bat_DesignCapacity').hide(); $('#bat_FullCapacity').hide(); } $('#block_bat').show(); } else { $('#block_bat').hide(); } } phpsysinfo-3.2.5/plugins/bat/lang/000077500000000000000000000000001265516077000171045ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/bat/lang/cz.xml000066400000000000000000000037071265516077000202510ustar00rootroot00000000000000 Stav baterie Aktualizováno Konstrukční kapacita Zbývající kapacita Konstrukční napětí Aktuální napětí Položky Hodnoty Stav nabíjení Battery Type Battery Temperature Battery Condition Cycle Count Plná kapacita phpsysinfo-3.2.5/plugins/bat/lang/de.xml000066400000000000000000000036641265516077000202270ustar00rootroot00000000000000 Akku-Status Letzte Aktualisierung Bemeskapazität Übrige Kapazität Bemessungsspannung Momentane Spannung Dinge Werte Ladezustand Akku-Typ Akku-Temperatur Akku-Zustand Cycle Count Volle Kapazität phpsysinfo-3.2.5/plugins/bat/lang/en.xml000066400000000000000000000036531265516077000202370ustar00rootroot00000000000000 Battery Status Last refresh Design capacity Remaining capacity Design voltage Present voltage Items Values Charging state Battery Type Battery Temperature Battery Condition Cycle Count Full capacity phpsysinfo-3.2.5/plugins/bat/lang/fr.xml000066400000000000000000000036751265516077000202500ustar00rootroot00000000000000 Etat des batteries Dernière actualisation Capacité d'origine Capacité restante Tension d'origine Tension actuelle Elements Valeurs Etat Battery Type Battery Temperature Battery Condition Cycle Count Capacité pleine phpsysinfo-3.2.5/plugins/bat/lang/pl.xml000066400000000000000000000037231265516077000202460ustar00rootroot00000000000000 Status Baterii Ostatnie odświeżenie Pojemność znamionowa Pojemność aktualna Napięcie znamionowe Napięcie aktualne Parametry Wartości Stan ładowania Typ ogniw Temperatura ogniw Kondycja ogniw Cykli ładowania Pojemność pełna phpsysinfo-3.2.5/plugins/bat/lang/ro.xml000066400000000000000000000036701265516077000202540ustar00rootroot00000000000000 Stare Baterie Ultimul refresh Capacitate Design Capacitate rămasă Voltaj design Voltaj prezent Elemente Valori Stare de Încărcare Tip Baterie Temperatura Baterie Condiții Baterie Cycle Count Capacitate maximă phpsysinfo-3.2.5/plugins/bat/lang/ru.xml000066400000000000000000000042471265516077000202630ustar00rootroot00000000000000 Состояние батареи Последние обновление Проектная мощность Оставшийся объем Проектное напряжение Фактическое напряжение Элементы Значение Состояние зарядки Тип батареи Температура батареи Состояние аккумулятора Циклы Полная мощность phpsysinfo-3.2.5/plugins/dmraid/000077500000000000000000000000001265516077000166555ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/dmraid/class.dmraid.inc.php000066400000000000000000000162221265516077000225050ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.dmraid.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * dmraid Plugin, which displays software RAID status * * @category PHP * @package PSI_Plugin_DMRaid * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class DMRaid extends PSI_Plugin { /** * variable, which holds the content of the command * @var array */ private $_filecontent = ""; /** * variable, which holds the result before the xml is generated out of this array * @var array */ private $_result = array(); /** * read the data into an internal array and also call the parent constructor * * @param String $enc encoding */ public function __construct($enc) { $buffer = ""; parent::__construct(__CLASS__, $enc); switch (strtolower(PSI_PLUGIN_DMRAID_ACCESS)) { case 'command': CommonFunctions::executeProgram("dmraid", "-s -vv 2>&1", $buffer); break; case 'data': CommonFunctions::rfts(APP_ROOT."/data/dmraid.txt", $buffer); break; default: $this->global_error->addConfigError("__construct()", "PSI_PLUGIN_DMRAID_ACCESS"); break; } if (trim($buffer) != "") { $this->_filecontent = preg_split("/(\r?\n\*\*\* )|(\r?\n--> )/", $buffer, -1, PREG_SPLIT_NO_EMPTY); } else { $this->_filecontent = array(); } } /** * doing all tasks to get the required informations that the plugin needs * result is stored in an internal array
    the array is build like a tree, * so that it is possible to get only a specific process with the childs * * @return void */ public function execute() { if (empty($this->_filecontent)) { return; } $group = ""; foreach ($this->_filecontent as $block) { if (preg_match('/^(NOTICE: )|(ERROR: )/m', $block)) { $group = ""; $lines = preg_split("/\r?\n/", $block, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { if (preg_match('/^NOTICE: added\s+\/dev\/(.+)\s+to RAID set\s+\"(.+)\"/', $line, $partition)) { $this->_result['devices'][$partition[2]]['partitions'][$partition[1]]['status'] = "ok"; } elseif (preg_match('/^ERROR: .* device\s+\/dev\/(.+)\s+(.+)\s+in RAID set\s+\"(.+)\"/', $line, $partition)) { if ($partition[2]=="broken") { $this->_result['devices'][$partition[3]]['partitions'][$partition[1]]['status'] = 'F'; } else { $this->_result['devices'][$partition[3]]['partitions'][$partition[1]]['status'] = 'W'; } } } } else { if (preg_match('/^Group superset\s+(.+)/m', $block, $arrname)) { $group = trim($arrname[1]); } if (preg_match('/^name\s*:\s*(.*)/m', $block, $arrname)) { if ($group=="") { $group = trim($arrname[1]); } $this->_result['devices'][$group]['name'] = $arrname[1]; if (preg_match('/^size\s*:\s*(.*)/m', $block, $size)) { $this->_result['devices'][$group]['size'] = trim($size[1]); } if (preg_match('/^stride\s*:\s*(.*)/m', $block, $stride)) { $this->_result['devices'][$group]['stride'] = trim($stride[1]); } if (preg_match('/^type\s*:\s*(.*)/m', $block, $type)) { $this->_result['devices'][$group]['type'] = trim($type[1]); } if (preg_match('/^status\s*:\s*(.*)/m', $block, $status)) { $this->_result['devices'][$group]['status'] = trim($status[1]); } if (preg_match('/^subsets\s*:\s*(.*)/m', $block, $subsets)) { $this->_result['devices'][$group]['subsets'] = trim($subsets[1]); } if (preg_match('/^devs\s*:\s*(.*)/m', $block, $devs)) { $this->_result['devices'][$group]['devs'] = trim($devs[1]); } if (preg_match('/^spares\s*:\s*(.*)/m', $block, $spares)) { $this->_result['devices'][$group]['spares'] = trim($spares[1]); } $group = ""; } } } } /** * generates the XML content for the plugin * * @return SimpleXMLObject entire XML content for the plugin */ public function xml() { if (empty($this->_result)) { return $this->xml->getSimpleXmlElement(); } $hideRaids = array(); if (defined('PSI_PLUGIN_DMRAID_HIDE_RAID_DEVICES') && is_string(PSI_PLUGIN_DMRAID_HIDE_RAID_DEVICES)) { if (preg_match(ARRAY_EXP, PSI_PLUGIN_DMRAID_HIDE_RAID_DEVICES)) { $hideRaids = eval(PSI_PLUGIN_DMRAID_HIDE_RAID_DEVICES); } else { $hideRaids = array(PSI_PLUGIN_DMRAID_HIDE_RAID_DEVICES); } } foreach ($this->_result['devices'] as $key=>$device) { if (!in_array($key, $hideRaids, true)) { $dev = $this->xml->addChild("Raid"); $dev->addAttribute("Device_Name", $key); $dev->addAttribute("Type", $device["type"]); $dev->addAttribute("Disk_Status", $device["status"]); $dev->addAttribute("Name", $device["name"]); $dev->addAttribute("Size", $device["size"]); $dev->addAttribute("Stride", $device["stride"]); $dev->addAttribute("Subsets", $device["subsets"]); $dev->addAttribute("Devs", $device["devs"]); $dev->addAttribute("Spares", $device["spares"]); $disks = $dev->addChild("Disks"); if (isset($device['partitions']) && sizeof($device['partitions']>0)) foreach ($device['partitions'] as $diskkey=>$disk) { $disktemp = $disks->addChild("Disk"); $disktemp->addAttribute("Name", $diskkey); if ($device["status"]=='ok') { $disktemp->addAttribute("Status", $disk['status']); } else { $disktemp->addAttribute("Status", 'W'); } } } } return $this->xml->getSimpleXmlElement(); } } phpsysinfo-3.2.5/plugins/dmraid/css/000077500000000000000000000000001265516077000174455ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/dmraid/css/dmraid.css000066400000000000000000000003531265516077000214200ustar00rootroot00000000000000/* $Id: dmraid.css 661 2012-08-27 11:26:39Z namiltd $ */ .plugin_dmraid_biun { text-align: center; margin-bottom: 5px; margin-right: 20px; float: left; width: 64px; } img.plugin_dmraid_biun { margin: auto; } phpsysinfo-3.2.5/plugins/dmraid/dmraid_bootstrap.html000066400000000000000000000007701265516077000231040ustar00rootroot00000000000000 phpsysinfo-3.2.5/plugins/dmraid/gfx/000077500000000000000000000000001265516077000174415ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/dmraid/gfx/error.png000066400000000000000000000070411265516077000213020ustar00rootroot00000000000000PNG  IHDR<<:r IDATh͛yly?!R$uZe|}IgX$uɐaG2햶K$(ņ: 놴I CdU#|Ȗuز$ E^R6%%i_(>y~縷Rr3!X jj_VEeG'0-2&- $'FG}i\ <~Fjk#kCuHX|h2-fIbq+10oA)K Ŏ[m-FB}:X&d`H["44<^PtTK}:;7|ը:Z~-ʖe4L EEh "pl._lع3~~uB^?F444 J[K&1FiOP9〔H@UᩯK;|z+~?%dmҪ˞6oۈ s2i TRI8(&*]|aϛo+rSkP=Fh)Ƴa{ßy|?W|k:dtlqߊZ:={XzS]cw,eUo@xgy#?|/9О]m+?.IPh*x{{_zr8P1w:WE\eF\_!4+Ş4ٿ6eˏ6[Njrha%H'gHoUň҂ZW{G Ow I1dYԜ[̎%G*dٳ}wb/jSnZw0Kʯ2@ڞ?.*.GbUݠRMNnU3&$/, Oߺ]0I%A[OZQ{2B -7ٶee 4Ȣ\!Ý757U-ϕgsyNd:V^u@&fY$ՍXX[2cVW_lپ9EZfYGI)(LH'@)Up֮nlڨ>^2p+B0S\2J)Ǜ3H+4>x_Jxsu+6H_\i.AZ%/>&m+kݵ_[;/5bY XTT+aVFj˜dey(H+4C86*SzZB'hXڵYoQP]5aE*2e3.])YPsljwf]Q`Φ0d%W|yL= \ ^逪a y՚VTT`YX-PIvXBՑiPKBtv6HHK;Ln`[iC71-P`iX >WTT;Yy>.T@"|]W1`  ii 8]Q%H }ȴyXH#L!CzD4apzĶiRV!p`MZ`BzLL\q8ɑt2ii]FEw 2H;O+˨d-P*%U>mmR/QXlid2LM!ʹr=>c Ԏ͈Pnwř1H 7?k' >'=~ߟDtԕoo`ҀM~4xyr&iw"*Mx[)"Ҋ硗Q q\DIcNEomIPaqaFiSז+8wqwm.2^8ujHf*<(Vݚ9~Dxj9sJC3c?9~ s R-Oe[X's=pbzjw{1Rߤ(>qkmDv_Dc*m"VS]Ԗw= U-WG} )EY᣽z?x6lB ˛QvʄAylz1ؒR#CǻFmيy*FʜT|[r$<>%ŏ'G2睞s1;vTqЖlL;9å:r^|`_Q9&{' Vˢ̞ kmjg!5C|v4L%NB(wjy:6o?8_$o6쭱 qmv>hxM( AfȒu_ ZЏ;@1>oE%ɚ7feI9z6rӟ}ۗڎ7HcD8iZ%D6[1)>z$ @/'z?|OD`9|1Gܑ|wc#_\VgUg#S_)4vz4n+ BQP4 _ZpH\蛤Tw[Qq=hRs"g{PgZ/[9LuOǣJ4T$K LfD)GvXo~;lVTp& * ;-a6,T@誮kjZiXLpypI<~V90T8Ge}P5ܳ^t`_NU4Xdve6f`p{^zケ` @E s?m`I0#s,3ob/w.B8tC˞닾kʁTs`0܀pAVsJK)|%s_yRNQ >Wqh1U9`E䁖sʎ9gwJaYor*y\9ץ^[ݒX|n,g0 IIENDB`phpsysinfo-3.2.5/plugins/dmraid/gfx/harddrivefail.png000066400000000000000000000075201265516077000227570ustar00rootroot00000000000000PNG  IHDR<<:rIDATh[ypUtf&3x! 9\!A%EЭ-vڪtk]tղv\Yܲܪ,%X " b !Iȝ= dvtK~D3MߧÁ1 x0aÀ+yiժU]]]A"kDϯU]]}zkM477CJ%_t{87/sϞ=ң ttt2e}u?F&5k,u9 =%\`(wp<{D>f@D[0uT-2 2qRUU3f %2<~'H 3zW 't=3g Bڪv)Ǔc9q<YӦMCNNNg^1{N/9s'.`v:UAeB,-ٯp&&`YY읥6) StB!Ǻ;4իWyUN<ڝ TxRߋj5%|bR`i_4gvf`6+5VO&jhx5_1AϞ߃`(ya$jU GH~s#t4>O8ULkXQM^s_~#&B 8E)]M}]fw5\=H?=2x6 y0!a4e]HQctqX-d%֦\CںEb ?*O.Ƞguym{Z޵cyy aa*RLȌ?xd+f0gGv@I;{v;j`;%yttT.B^h#}y3B}J:,x~ ūd/:RXnR)=c,^5AQ0-JR12MaٰG㏿DQ:CMÂXq}x>%~ Rw.ն}S&BT7#rf:pOFڳ]~ oB]PCDanXH2{ =kL[G~(V)IU4:[DL-7#k9kF h7#_C1|}R)J|M$d2IY^*E9E⁎C2H8D1gw(ؿ O,ᇲ;Vµm"DmoX^ɪHZ K\;)DMg/N-[ ?z>}Mm&uŊv]Kj= Csi0Q55Y+ RSjiD@[?fg~y8ӋՍDsivzaƍ}aeֆ8͡eӔk(}֩e@^Ogf8}}vw#MbZWZ:_ْ-\1_Y{&ߥ9VӋ4G[,l~#P dС1ޮMG "KZM _52$:KtmfN*4mX<+ Wlâ25-o|զ>VXL \!3GHa.$?#sL9"S໾8%U̟B| KVMS\LEv2 @7aÀ?TIENDB`phpsysinfo-3.2.5/plugins/dmraid/gfx/harddriveok.png000066400000000000000000000071331265516077000224550ustar00rootroot00000000000000PNG  IHDR<<:r"IDATh[yPU<PA( qJĈi&fW't4$1d3i֦il6[&$b4A↲,E[z;뽏!53Μ{9ۿs8N-~d}|}?C?n:3FFF(K\x| <>|pxi׌7شiӳ'BCC>>>NwqJVxpp~{p~~_۷ 9Ar}o)=j`8p`suu+֮IR0yaa!V\ RtZ=#())A@@I /ʤdժUX,NsۙhkTǨ4S{#qjÒS^^=znR%@>h"mdd$$y㠩}q mc&1jŊ${4۷o70,^zX~^Sh^,[ L ׯ__=i֭[g8Ңq1B}ü'p 34ЈS"99~l2U2!-Bfe`"+217gg Hh>$zַ䭑Pg~gFO25kHLpGC K$8.Jd|'Glll_3>ʝTs5)wXMz˸ػ1&&f:Ÿbj!FT_{WJU-yQJ0{iy>bBaIITԤFUA)QqE[5cÆ )^^n],+VwI8</z_ynFnc'\h>'ZYBD3cۂ J͛nU&;ÓEjU{ z"eW}8r=Fr^L3 pL{3PtI] D ˼FjRKPɖX` ){9i)V>T``zvy\\ܢ4Y9O6)4OM"(5@JyX@`` f3g@d-Ƒ3/9 K ~ƆQLr%K.aw @NRL<-ʒvIuz&jJ-ԈadNҺxS U#{I.ZD̃]#(Etn_Vׯ_\#%#,(Q2B}65"HܣP1.s&%,m hx #NXfh y !an$V.֌XOf*)>>>9,YNHI v$mi]eMy]Z%4V+:;;Ȍp,K N$ 58_{إ;v0(0l[%)3u`PQ%On=I2'X2t&·οy50|t~#!E.ڋHhgΩ_Φr৞zgKZHu<)វ|CKMQ{VrE;0hDBtZ?N2pq~%d2Sfë$ɀ$9RI5Fɷ8V|z+06HϬ!FK+CcTRibԓ$ewr0ތ?]w ØMeL89 FfZzt¾uiE5^qn'R+cWh<$u}Óq/0u8Gu >ͨCDԲ)%T@왗ʑ7A@CS+Wg{7Z7'v^UK;$:=rwŘ+2S/ߗ44'DRd-^S9trTQ9ظ!I8^q GSKQJ9ՉKC'63Cf5)7O!%1v.ژ*05S{13ң/*U!J; c~w5gp[b9𥳐,eHMHEKƌ({!L7qa7Zg irY{G*AȩdTTɷv>*σy^,jGCo %~iLD{5)Jq@܍ Ex4B"Y `vʪBc!FZC3(4$V ߬)O5Dm>6lT?o(w ᨿQ3ѳTlÙ".*ݷ+HVډ1qR^ƻzWGˊvΥ*-YO[R6g$v%c<$Ǭǥk3buLmYLǝhrUCóY1w2;{ѻ$"<;"SJR)vXPP҉'E'D˞Z~leGqM/IFڼpI¤')}_Q@aosx'ޓ7%s됙|krwG9]j>!OAZӁ"s͎>hXqN σj Xfp8Ѵ)8_XV~qu:z x^9X0K6/+v&<˭';# o~~gۖN:,@u*>!&X/ҹˋŅ# 4]ᚚ^ޥ7c$.1^o_ mڽ3e.A.F܆5wkZY )4T!H!{4ACXs4T?'z:*c&[aIENDB`phpsysinfo-3.2.5/plugins/dmraid/gfx/harddrivespare.png000066400000000000000000000033251265516077000231550ustar00rootroot00000000000000PNG  IHDR<<IDATXˏGU=;3wlyu,-&va p,HX'@r )C G$DC0 Y{ggCWTcw,Eⲳڮ}V |>LdW.2A@}ƻ2/zU@v XƙOP( ,RjH^E"!/gkghrECJBvBEIHs lY.^ľN?y(,00^sT!(Z<ȉ+_[n~[e!E{`(Ơs^{kk;(Ρ֛?LgYX=:{x<-xz]{s l19 K{o&}Ic5ah,;q #W5} y <'~=cb1EO+ 5L\r:DZIENDB`phpsysinfo-3.2.5/plugins/dmraid/gfx/harddrivewarn.png000066400000000000000000000070221265516077000230100ustar00rootroot00000000000000PNG  IHDR<<:rgAMA a pHYs(JtEXtSoftwarePaint.NET v3.36% IDAThCytUCqCQ@pd2̸!%b@@q "# ,dAUDP#dfXÎIޒjJn~c?:Kׯ_V/VaVaVa粐۵k׌Ծ}2աCv)+ |pk]tOPP^{-?<<ٯ_?K->}\'_н{+DzW^y/kݛ6oLgϞsΩ-]JgΜ)ӧO+:uX'OT:qD?رcJؿw^:t(3ֱܻcǭ , A.]˗/ʕ+C8x҅ Ο?s0&??vI|/oӡWv>\qD_2bѣGuŹСC633SJ(ۧٳGp8hĈ}g|1cƨZ2e/$VAxlm6}WwF[={>?еkה{eA~]V-c}5:޺o"qGe,1g5KtɓoUn ,11Q8#px@MF"8F"ɱ#XF_k׮9u o޸֭[&/@o~X2w'fϢ >\e0 G^H3(@B8,T766JMMΝ;ƾz߸EDDx˗+`|!0fH+Y~[r 43FYW_N:hƝfV`pX2iv\>|]UA߭wp6R޹駟y%߸?n„ *u=:PWstPW,#)}q9ϳ _sS耘!uPVFҁ" sРA3qA8 j>\®`!Xwޭurr2QZ9{lUθ(&N0+PWrT+`\]v y@)8BO'*BEXa80Vo5B:da /iGGgP֜@:C?[~a]ZP6VfFBYao|I0\L" B Y]+Ыr$#GHxH|)oa0{%}a@7|CNnɵ[kTPP.&*!ֱ TA~5u' oOyϒ=q_/Ɵ#)~t,%KT0| ^kk۶mpHTQ 毸/`:*:~??l1ZA '~F_ll,˵wZLL*gXn>1YL\B{2QPl1RCoz^6 踝K' K>^qdo߾] ,׸0f9JPfHcM"goX\)iŠ1FB wq9 2D1@1n1Fuh0<GY'u#M9*q>]~%|(' iiixwW^w KRRRT`.fI#h|^^ YviCjXXЧ>Ӭ>aSq+ߑGI###+D[đi*xg˝2ne`}fP g@k߭#GR6m%;`FFN ^ލ͒c:r~Aj@Q&,-%Δn6Hds,1xP2DtJXkX-^O4ƍWf]lDvx4}TA<)g4P{8ôG  Q0fุ88qY#**J0̚5 cZŋ_gȠܘl^7gJjV8X 5iк[\l^nZX4)iӦ 3Je9>NBu] Yhy[rʮY|͜z4=D2qg bxԉi"׫[4^3tcS !_NL7u|YX^,|0~1@4bby';}FW0r|R;Xd2?SxV\[vwwbp?5eZjP]ΐ}57^cب {F**_㿿wDIENDB`phpsysinfo-3.2.5/plugins/dmraid/js/000077500000000000000000000000001265516077000172715ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/dmraid/js/dmraid.js000066400000000000000000000171051265516077000210730ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script * * http://phpsysinfo.sourceforge.net/ * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ // // $Id: dmraid.js 679 2012-09-04 10:10:11Z namiltd $ // /*global $, jQuery, buildBlock, genlang, createBar, plugin_translate, datetime */ "use strict"; var dmraid_show = false; /** * get the details of the raid * @param {jQuery} xml part of the plugin-XML * @param {number} id id of the device */ function dmraid_buildinfos(xml, id) { var html = "", devname = "", devstatus = "", devtype = "",devsize = 0, devstride = 0, devsubsets = 0, devdevs = 0, devspares = 0, button = ""; devname = $(xml).attr("Name"); devstatus = $(xml).attr("Disk_Status"); devtype = $(xml).attr("Type"); devsize = parseInt($(xml).attr("Size"), 10); devstride = parseInt($(xml).attr("Stride"), 10); devsubsets = parseInt($(xml).attr("Subsets"), 10); devdevs = parseInt($(xml).attr("Devs"), 10); devspares = parseInt($(xml).attr("Spares"), 10); html += "" + genlang(4, true, "DMRaid") + "" + devname + ""; html += "" + genlang(5, true, "DMRaid") + "" + devstatus + ""; html += "" + genlang(6, true, "DMRaid") + "" + devtype + ""; html += "" + genlang(7, true, "DMRaid") + "" + devsize + ""; html += "" + genlang(8, true, "DMRaid") + "" + devstride + ""; html += "" + genlang(9, true, "DMRaid") + "" + devsubsets + ""; html += "" + genlang(10, true, "DMRaid") + "" + devdevs + ""; html += "" + genlang(11, true, "DMRaid") + "" + devspares + ""; button += "

    \"plus\"" + genlang(3, true, "DMRaid") + "

    "; button += "

    \"minus\"" + genlang(3, true, "DMRaid") + "

    "; button += "" + html + "
    "; return button; } /** * choose the right diskdrive icon * @param {jQuery} xml part of the plugin-XML */ function dmraid_diskicon(xml) { var html = ""; $("Disks Disk", xml).each(function dmraid_getdisk(id) { var diskstatus = "", diskname = "", img = "", alt = ""; html += "
    "; diskstatus = $(this).attr("Status"); diskname = $(this).attr("Name"); switch (diskstatus) { case "ok": img = "harddriveok.png"; alt = "ok"; break; case "F": img = "harddrivefail.png"; alt = "fail"; break; case "S": img = "harddrivespare.png"; alt = "spare"; break; case "W": img = "harddrivewarn.png"; alt = "fail"; break; default: // alert("--" + diskstatus + "--"); img = "error.png"; alt = "error"; break; } html += "\"""; //onload IE6 PNG fix html += "" + diskname + ""; html += "
    "; }); return html; } /** * fill the plugin block * @param {jQuery} xml plugin-XML */ function dmraid_populate(xml) { var htmltypes = ""; $("#Plugin_DMRaidTable").empty(); $("#Plugin_DMRaidTable").append(""); $("Plugins Plugin_DMRaid Raid", xml).each(function dmraid_getdevice(id) { var htmldisks = "", htmldisklist = "", topic = "", name = "", buildedaction = ""; name = $(this).attr("Device_Name"); htmldisklist += dmraid_diskicon(this); htmldisks += ""; htmldisks += ""; htmldisks += ""; htmldisks += "
    " + htmldisklist + "
    " + dmraid_buildinfos($(this), id) + "
    "; if (id) { topic = ""; } else { topic = genlang(2, false, "DMRaid"); } $("#Plugin_DMRaidTable").append("" + topic + "
    " + name + "
    " + htmldisks + ""); $("#sPlugin_DMRaid_Info" + id).click(function dmraid_showinfo() { $("#Plugin_DMRaid_InfoTable" + id).slideDown("slow"); $("#sPlugin_DMRaid_Info" + id).hide(); $("#hPlugin_DMRaid_Info" + id).show(); }); $("#hPlugin_DMRaid_Info" + id).click(function dmraid_hideinfo() { $("#Plugin_DMRaid_InfoTable" + id).slideUp("slow"); $("#hPlugin_DMRaid_Info" + id).hide(); $("#sPlugin_DMRaid_Info" + id).show(); }); dmraid_show = true; }); $("#Plugin_DMRaidTable").append(""); } /** * load the xml via ajax */ function dmraid_request() { $("#Reload_DMRaidTable").attr("title", "reload"); $.ajax({ url: "xml.php?plugin=DMRaid", dataType: "xml", error: function dmraid_error() { $.jGrowl("Error loading XML document for Plugin DMRaid"); }, success: function dmraid_buildblock(xml) { populateErrors(xml); dmraid_populate(xml); if (dmraid_show) { plugin_translate("DMRaid"); $("#Plugin_DMRaid").show(); } } }); } $(document).ready(function dmraid_buildpage() { var html = ""; $("#footer").before(buildBlock("DMRaid", 1, true)); html += " \n"; html += "
    \n"; $("#Plugin_DMRaid").append(html); $("#Plugin_DMRaid").css("width", "915px"); dmraid_request(); $("#Reload_DMRaidTable").click(function dmraid_reload(id) { dmraid_request(); $(this).attr("title", datetime()); }); }); phpsysinfo-3.2.5/plugins/dmraid/js/dmraid_bootstrap.js000066400000000000000000000120061265516077000231630ustar00rootroot00000000000000function renderPlugin_dmraid(data) { function raid_diskicon(data) { var html = ""; var img = "", alt = ""; html += "
    "; switch (data["Status"]) { case "ok": img = "harddriveok.png"; alt = "ok"; break; case "F": img = "harddrivefail.png"; alt = "fail"; break; case "S": img = "harddrivespare.png"; alt = "spare"; break; case "W": img = "harddrivewarn.png"; alt = "warning"; break; default: // alert("--" + data["Status"] + "--"); img = "error.png"; alt = "error"; break; } html += "\"""; //onload IE6 PNG fix html += "" + data["Name"] + ""; html += "
    "; return html; } if (data['Plugins']['Plugin_DMRaid'] !== undefined) { var dmitems = items(data['Plugins']['Plugin_DMRaid']['Raid']); if (dmitems.length > 0) { var html = ''; for (var i = 0; i < dmitems.length ; i++) { if (i) { html += ""; } else { html += ""+genlang(2, false, 'dmraid')+""; } if (dmitems[i]['Disks'] !== undefined) { html += ""; html += ""; html += "
    "; var diskitems = items(dmitems[i]['Disks']['Disk']); for (var j = 0; j < diskitems.length ; j++) { html += raid_diskicon(diskitems[j]["@attributes"]); } html += "
    "; html += ""; html += ""; html += ""; // Name html += ""; // Status html += ""; // RAID-Type html += "";// Size html += ""; // Stride html += ""; // Subsets html += ""; // Devices html += ""; // Spares html += "
    " + dmitems[i]["@attributes"]["Device_Name"] + "
    "+genlang(4, true, 'dmraid')+"" + dmitems[i]["@attributes"]["Name"] + "
    "+genlang(5, true, 'dmraid')+"" + dmitems[i]["@attributes"]["Disk_Status"] + "
    "+genlang(6, true, 'dmraid')+"" + dmitems[i]["@attributes"]["Type"] + "
    "+genlang(7, true, 'dmraid')+"" + parseInt(dmitems[i]["@attributes"]["Size"]) + "
    "+genlang(8, true, 'dmraid')+"" + parseInt(dmitems[i]["@attributes"]["Stride"]) + "
    "+genlang(9, true, 'dmraid')+"" + parseInt(dmitems[i]["@attributes"]["Subsets"]) + "
    "+genlang(10, true, 'dmraid')+"" + parseInt(dmitems[i]["@attributes"]["Devs"]) + "
    "+genlang(11, true, 'dmraid')+"" + parseInt(dmitems[i]["@attributes"]["Spares"]) + "
    "; html += "
    "; } html +=""; } $('#dmraid-data').empty().append(html); for (var i = 0; i < dmitems.length ; i++) { if (dmitems[i]['Disks'] !== undefined) { $('#dmraid-'+i).treegrid({ initialState: 'collapsed', expanderExpandedClass: 'normalicon normalicon-down', expanderCollapsedClass: 'normalicon normalicon-right' }); } } $('#block_dmraid').show(); } else { $('#block_dmraid').hide(); } } else { $('#block_dmraid').hide(); } } phpsysinfo-3.2.5/plugins/dmraid/lang/000077500000000000000000000000001265516077000175765ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/dmraid/lang/en.xml000066400000000000000000000030721265516077000207240ustar00rootroot00000000000000 RAID Status RAID-Devices Additional Information Name Status RAID-Type Size Stride Subsets Devices Spares phpsysinfo-3.2.5/plugins/dmraid/lang/fr.xml000066400000000000000000000030421265516077000207260ustar00rootroot00000000000000 Statut RAID Périphériques RAID Informations additionnelles Nom Status Type de RAID Taille Granularité Sous-ensembles Périphériques Rechanges phpsysinfo-3.2.5/plugins/dmraid/lang/ro.xml000066400000000000000000000031001265516077000207320ustar00rootroot00000000000000 Stare RAID Dispozitive RAID Informații Aditionale Nume Stare Tip RAID Dimensiune Pas Subseturi Dispozitive Piese phpsysinfo-3.2.5/plugins/dmraid/lang/ru.xml000066400000000000000000000031731265516077000207520ustar00rootroot00000000000000 RAID Статус RAID-Устройств Дополнительная Информация Имя Статус RAID-Тип Размер Шаг Подмножество Устройство Резервировано phpsysinfo-3.2.5/plugins/ipmiinfo/000077500000000000000000000000001265516077000172275ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/ipmiinfo/class.ipmiinfo.inc.php000066400000000000000000000215211265516077000234270ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.ipmiinfo.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * ipmiinfo plugin, which displays all ipmi informations available * * @category PHP * @package PSI_Plugin_ipmiinfo * @author Mieczyslaw Nalewaj * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class ipmiinfo extends PSI_Plugin { private $_lines; public function __construct($enc) { parent::__construct(__CLASS__, $enc); $this->_lines = array(); } /** * get temperature information * * @return array temperatures in array with label */ private function temperatures() { $result = array(); $i = 0; foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "degrees C" && $buffer[3] != "na") { $result[$i]['label'] = $buffer[0]; $result[$i]['value'] = $buffer[1]; $result[$i]['state'] = $buffer[3]; if ($buffer[8] != "na") $result[$i]['max'] = $buffer[8]; $i++; } } return $result; } /** * get voltages information * * @return array voltage in array with label */ private function voltages() { $result = array(); $i = 0; foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "Volts" && $buffer[3] != "na") { $result[$i]['label'] = $buffer[0]; $result[$i]['value'] = $buffer[1]; $result[$i]['state'] = $buffer[3]; if ($buffer[5] != "na") $result[$i]['min'] = $buffer[5]; if ($buffer[8] != "na") $result[$i]['max'] = $buffer[8]; $i++; } } return $result; } /** * get fans information * * @return array fans in array with label */ private function fans() { $result = array(); $i = 0; foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "RPM" && $buffer[3] != "na") { $result[$i]['label'] = $buffer[0]; $result[$i]['value'] = $buffer[1]; $result[$i]['state'] = $buffer[3]; if ($buffer[8] != "na") $result[$i]['min'] = $buffer[8]; $i++; } } return $result; } /** * get powers information * * @return array misc in array with label */ private function powers() { $result = array(); $i = 0; foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "Watts" && $buffer[3] != "na") { $result[$i]['label'] = $buffer[0]; $result[$i]['value'] = $buffer[1]; $result[$i]['state'] = $buffer[3]; if ($buffer[8] != "na") $result[$i]['max'] = $buffer[8]; $i++; } } return $result; } /** * get currents information * * @return array misc in array with label */ private function currents() { $result = array(); $i = 0; foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "Amps" && $buffer[3] != "na") { $result[$i]['label'] = $buffer[0]; $result[$i]['value'] = $buffer[1]; $result[$i]['state'] = $buffer[3]; if ($buffer[8] != "na") $result[$i]['max'] = $buffer[8]; $i++; } } return $result; } /** * get misc information * * @return array misc in array with label */ private function misc() { $result = array(); $i = 0; foreach ($this->_lines as $line) { $buffer = preg_split("/\s*\|\s*/", $line); if ($buffer[2] == "discrete" && $buffer[3] != "na") { $result[$i]['label'] = $buffer[0]; $result[$i]['value'] = $buffer[1]; $result[$i]['state'] = $buffer[3]; $i++; } } return $result; } public function execute() { $this->_lines = array(); switch (strtolower(PSI_PLUGIN_IPMIINFO_ACCESS)) { case 'command': $lines = ""; if (CommonFunctions::executeProgram('ipmitool', 'sensor', $lines) && !empty($lines)) $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; case 'data': if (CommonFunctions::rfts(APP_ROOT."/data/ipmiinfo.txt", $lines) && !empty($lines)) $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; default: $this->error->addConfigError('__construct()', 'PSI_PLUGIN_IPMIINFO_ACCESS'); break; } } public function xml() { if (empty($this->_lines)) return $this->xml->getSimpleXmlElement(); $arrBuff = $this->temperatures(); if (sizeof($arrBuff) > 0) { $temp = $this->xml->addChild("Temperatures"); foreach ($arrBuff as $arrValue) { $item = $temp->addChild('Item'); $item->addAttribute('Label', $arrValue['label']); $item->addAttribute('Value', $arrValue['value']); $item->addAttribute('State', $arrValue['state']); if (isset($arrValue['Max'])) $item->addAttribute('Max', $arrValue['Max']); } } $arrBuff = $this->voltages(); if (sizeof($arrBuff) > 0) { $volt = $this->xml->addChild('Voltages'); foreach ($arrBuff as $arrValue) { $item = $volt->addChild('Item'); $item->addAttribute('Label', $arrValue['label']); $item->addAttribute('Value', $arrValue['value']); $item->addAttribute('State', $arrValue['state']); if (isset($arrValue['Min'])) $item->addAttribute('Min', $arrValue['min']); if (isset($arrValue['Max'])) $item->addAttribute('Max', $arrValue['max']); } } $arrBuff = $this->fans(); if (sizeof($arrBuff) > 0) { $fan = $this->xml->addChild('Fans'); foreach ($arrBuff as $arrValue) { $item = $fan->addChild('Item'); $item->addAttribute('Label', $arrValue['label']); $item->addAttribute('Value', $arrValue['value']); $item->addAttribute('State', $arrValue['state']); if (isset($arrValue['Min'])) $item->addAttribute('Min', $arrValue['min']); } } $arrBuff = $this->powers(); if (sizeof($arrBuff) > 0) { $misc = $this->xml->addChild('Powers'); foreach ($arrBuff as $arrValue) { $item = $misc->addChild('Item'); $item->addAttribute('Label', $arrValue['label']); $item->addAttribute('Value', $arrValue['value']); $item->addAttribute('State', $arrValue['state']); if (isset($arrValue['Max'])) $item->addAttribute('Max', $arrValue['max']); } } $arrBuff = $this->currents(); if (sizeof($arrBuff) > 0) { $misc = $this->xml->addChild('Currents'); foreach ($arrBuff as $arrValue) { $item = $misc->addChild('Item'); $item->addAttribute('Label', $arrValue['label']); $item->addAttribute('Value', $arrValue['value']); $item->addAttribute('State', $arrValue['state']); if (isset($arrValue['Max'])) $item->addAttribute('Max', $arrValue['max']); } } $arrBuff = $this->misc(); if (sizeof($arrBuff) > 0) { $misc = $this->xml->addChild('Misc'); foreach ($arrBuff as $arrValue) { $item = $misc->addChild('Item'); $item->addAttribute('Label', $arrValue['label']); $item->addAttribute('Value', $arrValue['value']); $item->addAttribute('State', $arrValue['state']); } } return $this->xml->getSimpleXmlElement(); } } phpsysinfo-3.2.5/plugins/ipmiinfo/ipmiinfo_bootstrap.html000066400000000000000000000012671265516077000240320ustar00rootroot00000000000000 phpsysinfo-3.2.5/plugins/ipmiinfo/js/000077500000000000000000000000001265516077000176435ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/ipmiinfo/js/ipmiinfo.js000066400000000000000000000144421265516077000220200ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script * * http://phpsysinfo.sourceforge.net/ * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ //$Id: ipmiinfo.js 661 2012-08-27 11:26:39Z namiltd $ /*global $, jQuery, buildBlock, datetime, plugin_translate, genlang, createBar */ "use strict"; var ipmiinfo_show = false; /** * insert content into table * @param {jQuery} xml plugin-XML */ function ipmiinfo_populate(xml) { var html = ""; $("#Plugin_ipmiinfoTable").html(" "); $("Plugins Plugin_ipmiinfo Temperatures Item", xml).each(function ipmiinfo_getitem(idp) { if(idp==0) { html += "" + genlang(3, false, "ipmiinfo") + "\n"; } html += " \n"; html += " " + $(this).attr("Label") + "\n"; html += " " + $(this).attr("Value") + "\n"; html += " \n"; ipmiinfo_show = true; }); $("Plugins Plugin_ipmiinfo Fans Item", xml).each(function ipmiinfo_getitem(idp) { if(idp==0) { html += "" + genlang(4, false, "ipmiinfo") + "\n"; } html += " \n"; html += " " + $(this).attr("Label") + "\n"; html += " " + $(this).attr("Value") + "\n"; html += " \n"; ipmiinfo_show = true; }); $("Plugins Plugin_ipmiinfo Voltages Item", xml).each(function ipmiinfo_getitem(idp) { if(idp==0) { html += "" + genlang(5, false, "ipmiinfo") + "\n"; } html += " \n"; html += " " + $(this).attr("Label") + "\n"; html += " " + $(this).attr("Value") + "\n"; html += " \n"; ipmiinfo_show = true; }); $("Plugins Plugin_ipmiinfo Currents Item", xml).each(function ipmiinfo_getitem(idp) { if(idp==0) { html += "" + genlang(7, false, "ipmiinfo") + "\n"; } html += " \n"; html += " " + $(this).attr("Label") + "\n"; html += " " + $(this).attr("Value") + "\n"; html += " \n"; ipmiinfo_show = true; }); $("Plugins Plugin_ipmiinfo Powers Item", xml).each(function ipmiinfo_getitem(idp) { if(idp==0) { html += "" + genlang(8, false, "ipmiinfo") + "\n"; } html += " \n"; html += " " + $(this).attr("Label") + "\n"; html += " " + $(this).attr("Value") + "\n"; html += " \n"; ipmiinfo_show = true; }); $("Plugins Plugin_ipmiinfo Misc Item", xml).each(function ipmiinfo_getitem(idp) { if(idp==0) { html += "" + genlang(6, false, "ipmiinfo") + "\n"; } html += " \n"; html += " " + $(this).attr("Label") + "\n"; html += " " + $(this).attr("Value") + "\n"; html += " \n"; ipmiinfo_show = true; }); $("#Plugin_ipmiinfoTable").append(html); $('#Plugin_ipmiinfoTable tr:nth-child(even)').addClass('even'); } function ipmiinfo_buildTable() { var html = ""; html += "\n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += "
    \n"; $("#Plugin_ipmiinfo").append(html); } /** * load the xml via ajax */ function ipmiinfo_request() { $("#Reload_ipmiinfoTable").attr("title", "reload"); $.ajax({ url: "xml.php?plugin=ipmiinfo", dataType: "xml", error: function ipmiinfo_error() { $.jGrowl("Error loading XML document for Plugin ipmiinfo!"); }, success: function ipmiinfo_buildblock(xml) { populateErrors(xml); ipmiinfo_populate(xml); if (ipmiinfo_show) { plugin_translate("ipmiinfo"); $("#Plugin_ipmiinfo").show(); } } }); } $(document).ready(function ipmiinfo_buildpage() { $("#footer").before(buildBlock("ipmiinfo", 1, true)); $("#Plugin_ipmiinfo").css("width", "451px"); ipmiinfo_buildTable(); ipmiinfo_request(); $("#Reload_ipmiinfoTable").click(function ipmiinfo_reload(id) { ipmiinfo_request(); $(this).attr("title", datetime()); }); }); phpsysinfo-3.2.5/plugins/ipmiinfo/js/ipmiinfo_bootstrap.js000066400000000000000000000023561265516077000241160ustar00rootroot00000000000000function renderPlugin_ipmiinfo(data) { var directives = { Label: { html: function () { if (this["Value"] == undefined) { return '' + this["Label"] + ''; } else { return this["Label"]; } } } }; if (data['Plugins']['Plugin_ipmiinfo'] !== undefined) { var data_ipmiinfo = []; var valuelist = {Temperatures:3, Voltages:4, Fans:5, Powers:8, Currents:7, Misc:6}; for (var ipmiinfo_value in valuelist) { if (data['Plugins']['Plugin_ipmiinfo'][ipmiinfo_value] !== undefined) { var datas = items(data['Plugins']['Plugin_ipmiinfo'][ipmiinfo_value]["Item"]); if (datas.length > 0) { data_ipmiinfo.push({Label:genlang(valuelist[ipmiinfo_value], false ,'ipmiinfo')}); data_ipmiinfo.push_attrs(datas); } } } if (data_ipmiinfo.length > 0) { $('#ipmiinfo-data').render(data_ipmiinfo, directives); $('#block_ipmiinfo').show(); } else { $('#block_ipmiinfo').hide(); } } else { $('#block_ipmiinfo').hide(); } } phpsysinfo-3.2.5/plugins/ipmiinfo/lang/000077500000000000000000000000001265516077000201505ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/ipmiinfo/lang/cz.xml000066400000000000000000000025341265516077000213120ustar00rootroot00000000000000 IPMI informace Aktualizováno Teploty [°C] Větráky [RPM] Napětí [V] Různé [0/1] Currents [A] Powers [W] phpsysinfo-3.2.5/plugins/ipmiinfo/lang/de.xml000066400000000000000000000025541265516077000212700ustar00rootroot00000000000000 IPMI Status Letzte Aktualisierung Temperaturen [°C] Lüfter [RPM] Spannungen [V] Misc [0/1] Currents [A] Powers [W] phpsysinfo-3.2.5/plugins/ipmiinfo/lang/en.xml000066400000000000000000000025301265516077000212740ustar00rootroot00000000000000 IPMI Status Last refresh Temperatures [°C] Fans [RPM] Voltages [V] Misc [0/1] Currents [A] Powers [W] phpsysinfo-3.2.5/plugins/ipmiinfo/lang/fr.xml000066400000000000000000000025471265516077000213110ustar00rootroot00000000000000 Etat IPMI Dernière actualisation Températures [°c] Ventilateurs [RPM] Tensions [V] Divers [0/1] Currents [A] Powers [W] phpsysinfo-3.2.5/plugins/ipmiinfo/lang/pl.xml000066400000000000000000000025461265516077000213140ustar00rootroot00000000000000 IPMI Status Ostatnie odświeżenie Temperatury [°C] Wentylatory [RPM] Napięcia [V] Różne [0/1] Prądy [A] Moce [W] phpsysinfo-3.2.5/plugins/ipmiinfo/lang/ro.xml000066400000000000000000000025401265516077000213130ustar00rootroot00000000000000 Stare IPMI Ultimul refresh Temperaturi [°C] Ventilatoare [RPM] Tensiuni [V] Diverse [0/1] Amperi [A] Wați [W] phpsysinfo-3.2.5/plugins/ipmiinfo/lang/ru.xml000066400000000000000000000027051265516077000213240ustar00rootroot00000000000000 IPMI Статус Последнее обновление Температура [°C] Вентиляторы [ОБ/мин] Напряжение [V] Разное [0/1] Ток [A] Напряжение [W] phpsysinfo-3.2.5/plugins/mdstatus/000077500000000000000000000000001265516077000172615ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/mdstatus/class.mdstatus.inc.php000066400000000000000000000253751265516077000235260ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.mdstatus.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * mdstatus Plugin, which displays a snapshot of the kernel's RAID/md state * a simple view which shows supported types and RAID-Devices which are determined by * parsing the "/proc/mdstat" file, another way is to provide * a file with the output of the /proc/mdstat file, so there is no need to run a execute by the * webserver, the format of the command is written down in the phpsysinfo.ini file, where also * the method of getting the information is configured * * @category PHP * @package PSI_Plugin_MDStatus * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class MDStatus extends PSI_Plugin { /** * variable, which holds the content of the command * @var array */ private $_filecontent = ""; /** * variable, which holds the result before the xml is generated out of this array * @var array */ private $_result = array(); /** * read the data into an internal array and also call the parent constructor * * @param String $enc encoding */ public function __construct($enc) { $buffer = ""; parent::__construct(__CLASS__, $enc); switch (strtolower(PSI_PLUGIN_MDSTATUS_ACCESS)) { case 'file': CommonFunctions::rfts("/proc/mdstat", $buffer); break; case 'data': CommonFunctions::rfts(APP_ROOT."/data/mdstat.txt", $buffer); break; default: $this->global_error->addConfigError("__construct()", "PSI_PLUGIN_MDSTATUS_ACCESS"); break; } if (trim($buffer) != "") { $this->_filecontent = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY); } else { $this->_filecontent = array(); } } /** * doing all tasks to get the required informations that the plugin needs * result is stored in an internal array
    the array is build like a tree, * so that it is possible to get only a specific process with the childs * * @return void */ public function execute() { if (empty($this->_filecontent)) { return; } // get the supported types if (preg_match('/[a-zA-Z]* : (\[([a-z0-9])*\]([ \n]))+/', $this->_filecontent[0], $res)) { $parts = preg_split("/ : /", $res[0]); $parts = preg_split("/ /", $parts[1]); $count = 0; foreach ($parts as $types) { if (trim($types) != "") { $this->_result['supported_types'][$count++] = substr(trim($types), 1, -1); } } } // get disks if (preg_match("/^read_ahead/", $this->_filecontent[1])) { $count = 2; } else { $count = 1; } $cnt_filecontent = count($this->_filecontent); do { $parts = preg_split("/ : /", $this->_filecontent[$count]); $dev = trim($parts[0]); if (count($parts) == 2) { $details = preg_split('/ /', $parts[1]); if (!strstr($details[0], 'inactive')) { $this->_result['devices'][$dev]['level'] = $details[1]; } else { $this->_result['devices'][$dev]['level'] = "none"; } $this->_result['devices'][$dev]['status'] = $details[0]; for ($i = 2, $cnt_details = count($details); $i < $cnt_details; $i++) { preg_match('/(([a-z0-9])+)(\[([0-9]+)\])(\([SF ]\))?/', trim($details[$i]), $partition); if (count($partition) == 5 || count($partition) == 6) { $this->_result['devices'][$dev]['partitions'][$partition[1]]['raid_index'] = substr(trim($partition[3]), 1, -1); if (isset($partition[5])) { $search = array("(", ")"); $replace = array("", ""); $this->_result['devices'][$dev]['partitions'][$partition[1]]['status'] = str_replace($search, $replace, trim($partition[5])); } else { $this->_result['devices'][$dev]['partitions'][$partition[1]]['status'] = "ok"; } } } $count++; $optionline = $this->_filecontent[$count - 1].$this->_filecontent[$count]; if (preg_match('/([^\sk]*)k chunk/', $optionline, $chunksize)) { $this->_result['devices'][$dev]['chunk_size'] = $chunksize[1]; } else { $this->_result['devices'][$dev]['chunk_size'] = -1; } if ($pos = strpos($optionline, "super non-persistent")) { $this->_result['devices'][$dev]['pers_superblock'] = 0; } else { $this->_result['devices'][$dev]['pers_superblock'] = 1; } if ($pos = strpos($optionline, "algorithm")) { $this->_result['devices'][$dev]['algorithm'] = trim(substr($optionline, $pos + 9, 2)); } else { $this->_result['devices'][$dev]['algorithm'] = -1; } if (preg_match('/(\[[0-9]?\/[0-9]\])/', $optionline, $res)) { $slashpos = strpos($res[0], '/'); $this->_result['devices'][$dev]['registered'] = substr($res[0], 1, $slashpos - 1); $this->_result['devices'][$dev]['active'] = substr($res[0], $slashpos + 1, strlen($res[0]) - $slashpos - 2); } else { $this->_result['devices'][$dev]['registered'] = -1; $this->_result['devices'][$dev]['active'] = -1; } if (preg_match(('/([a-z]+)( *)=( *)([0-9\.]+)%/'), $this->_filecontent[$count + 1], $res) || (preg_match(('/([a-z]+)( *)=( *)([0-9\.]+)/'), $optionline, $res))) { list($this->_result['devices'][$dev]['action']['name'], $this->_result['devices'][$dev]['action']['percent']) = preg_split("/=/", str_replace("%", "", $res[0])); if (preg_match(('/([a-z]*=[0-9\.]+[a-z]+)/'), $this->_filecontent[$count + 1], $res)) { $time = preg_split("/=/", $res[0]); list($this->_result['devices'][$dev]['action']['finish_time'], $this->_result['devices'][$dev]['action']['finish_unit']) = sscanf($time[1], '%f%s'); } else { $this->_result['devices'][$dev]['action']['finish_time'] = -1; $this->_result['devices'][$dev]['action']['finish_unit'] = -1; } } else { $this->_result['devices'][$dev]['action']['name'] = -1; $this->_result['devices'][$dev]['action']['percent'] = -1; $this->_result['devices'][$dev]['action']['finish_time'] = -1; $this->_result['devices'][$dev]['action']['finish_unit'] = -1; } } else { $count++; } } while ($cnt_filecontent > $count); $lastline = $this->_filecontent[$cnt_filecontent - 2]; if (strpos($lastline, "unused devices") !== false) { $parts = preg_split("/:/", $lastline); $search = array("<", ">"); $replace = array("", ""); $this->_result['unused_devs'] = trim(str_replace($search, $replace, $parts[1])); } else { $this->_result['unused_devs'] = -1; } } /** * generates the XML content for the plugin * * @return SimpleXMLObject entire XML content for the plugin */ public function xml() { if (empty($this->_result)) { return $this->xml->getSimpleXmlElement(); } $hideRaids = array(); if (defined('PSI_PLUGIN_MDSTATUS_HIDE_RAID_DEVICES') && is_string(PSI_PLUGIN_MDSTATUS_HIDE_RAID_DEVICES)) { if (preg_match(ARRAY_EXP, PSI_PLUGIN_MDSTATUS_HIDE_RAID_DEVICES)) { $hideRaids = eval(PSI_PLUGIN_MDSTATUS_HIDE_RAID_DEVICES); } else { $hideRaids = array(PSI_PLUGIN_MDSTATUS_HIDE_RAID_DEVICES); } } $sup = $this->xml->addChild("Supported_Types"); foreach ($this->_result['supported_types'] as $type) { $typ = $sup->addChild("Type"); $typ->addAttribute("Name", $type); } if (isset($this->_result['devices'])) foreach ($this->_result['devices'] as $key=>$device) { if (!in_array($key, $hideRaids, true)) { $dev = $this->xml->addChild("Raid"); $dev->addAttribute("Device_Name", $key); $dev->addAttribute("Level", $device["level"]); $dev->addAttribute("Disk_Status", $device["status"]); $dev->addAttribute("Chunk_Size", $device["chunk_size"]); $dev->addAttribute("Persistend_Superblock", $device["pers_superblock"]); $dev->addAttribute("Algorithm", $device["algorithm"]); $dev->addAttribute("Disks_Registered", $device["registered"]); $dev->addAttribute("Disks_Active", $device["active"]); $action = $dev->addChild("Action"); $action->addAttribute("Percent", $device['action']['percent']); $action->addAttribute("Name", $device['action']['name']); $action->addAttribute("Time_To_Finish", $device['action']['finish_time']); $action->addAttribute("Time_Unit", $device['action']['finish_unit']); $disks = $dev->addChild("Disks"); foreach ($device['partitions'] as $diskkey=>$disk) { $disktemp = $disks->addChild("Disk"); $disktemp->addAttribute("Name", $diskkey); $disktemp->addAttribute("Status", $disk['status']); $disktemp->addAttribute("Index", $disk['raid_index']); } } } if ($this->_result['unused_devs'] !== - 1) { $unDev = $this->xml->addChild("Unused_Devices"); $unDev->addAttribute("Devices", $this->_result['unused_devs']); } return $this->xml->getSimpleXmlElement(); } } phpsysinfo-3.2.5/plugins/mdstatus/css/000077500000000000000000000000001265516077000200515ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/mdstatus/css/mdstatus.css000066400000000000000000000003611265516077000224270ustar00rootroot00000000000000/* $Id: mdstatus.css 661 2012-08-27 11:26:39Z namiltd $ */ .plugin_mdstatus_biun { text-align: center; margin-bottom: 5px; margin-right: 20px; float: left; width: 64px; } img.plugin_mdstatus_biun { margin: auto; } phpsysinfo-3.2.5/plugins/mdstatus/gfx/000077500000000000000000000000001265516077000200455ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/mdstatus/gfx/error.png000066400000000000000000000070411265516077000217060ustar00rootroot00000000000000PNG  IHDR<<:r IDATh͛yly?!R$uZe|}IgX$uɐaG2햶K$(ņ: 놴I CdU#|Ȗuز$ E^R6%%i_(>y~縷Rr3!X jj_VEeG'0-2&- $'FG}i\ <~Fjk#kCuHX|h2-fIbq+10oA)K Ŏ[m-FB}:X&d`H["44<^PtTK}:;7|ը:Z~-ʖe4L EEh "pl._lع3~~uB^?F444 J[K&1FiOP9〔H@UᩯK;|z+~?%dmҪ˞6oۈ s2i TRI8(&*]|aϛo+rSkP=Fh)Ƴa{ßy|?W|k:dtlqߊZ:={XzS]cw,eUo@xgy#?|/9О]m+?.IPh*x{{_zr8P1w:WE\eF\_!4+Ş4ٿ6eˏ6[Njrha%H'gHoUň҂ZW{G Ow I1dYԜ[̎%G*dٳ}wb/jSnZw0Kʯ2@ڞ?.*.GbUݠRMNnU3&$/, Oߺ]0I%A[OZQ{2B -7ٶee 4Ȣ\!Ý757U-ϕgsyNd:V^u@&fY$ՍXX[2cVW_lپ9EZfYGI)(LH'@)Up֮nlڨ>^2p+B0S\2J)Ǜ3H+4>x_Jxsu+6H_\i.AZ%/>&m+kݵ_[;/5bY XTT+aVFj˜dey(H+4C86*SzZB'hXڵYoQP]5aE*2e3.])YPsljwf]Q`Φ0d%W|yL= \ ^逪a y՚VTT`YX-PIvXBՑiPKBtv6HHK;Ln`[iC71-P`iX >WTT;Yy>.T@"|]W1`  ii 8]Q%H }ȴyXH#L!CzD4apzĶiRV!p`MZ`BzLL\q8ɑt2ii]FEw 2H;O+˨d-P*%U>mmR/QXlid2LM!ʹr=>c Ԏ͈Pnwř1H 7?k' >'=~ߟDtԕoo`ҀM~4xyr&iw"*Mx[)"Ҋ硗Q q\DIcNEomIPaqaFiSז+8wqwm.2^8ujHf*<(Vݚ9~Dxj9sJC3c?9~ s R-Oe[X's=pbzjw{1Rߤ(>qkmDv_Dc*m"VS]Ԗw= U-WG} )EY᣽z?x6lB ˛QvʄAylz1ؒR#CǻFmيy*FʜT|[r$<>%ŏ'G2睞s1;vTqЖlL;9å:r^|`_Q9&{' Vˢ̞ kmjg!5C|v4L%NB(wjy:6o?8_$o6쭱 qmv>hxM( AfȒu_ ZЏ;@1>oE%ɚ7feI9z6rӟ}ۗڎ7HcD8iZ%D6[1)>z$ @/'z?|OD`9|1Gܑ|wc#_\VgUg#S_)4vz4n+ BQP4 _ZpH\蛤Tw[Qq=hRs"g{PgZ/[9LuOǣJ4T$K LfD)GvXo~;lVTp& * ;-a6,T@誮kjZiXLpypI<~V90T8Ge}P5ܳ^t`_NU4Xdve6f`p{^zケ` @E s?m`I0#s,3ob/w.B8tC˞닾kʁTs`0܀pAVsJK)|%s_yRNQ >Wqh1U9`E䁖sʎ9gwJaYor*y\9ץ^[ݒX|n,g0 IIENDB`phpsysinfo-3.2.5/plugins/mdstatus/gfx/harddrivefail.png000066400000000000000000000075201265516077000233630ustar00rootroot00000000000000PNG  IHDR<<:rIDATh[ypUtf&3x! 9\!A%EЭ-vڪtk]tղv\Yܲܪ,%X " b !Iȝ= dvtK~D3MߧÁ1 x0aÀ+yiժU]]]A"kDϯU]]}zkM477CJ%_t{87/sϞ=ң ttt2e}u?F&5k,u9 =%\`(wp<{D>f@D[0uT-2 2qRUU3f %2<~'H 3zW 't=3g Bڪv)Ǔc9q<YӦMCNNNg^1{N/9s'.`v:UAeB,-ٯp&&`YY읥6) StB!Ǻ;4իWyUN<ڝ TxRߋj5%|bR`i_4gvf`6+5VO&jhx5_1AϞ߃`(ya$jU GH~s#t4>O8ULkXQM^s_~#&B 8E)]M}]fw5\=H?=2x6 y0!a4e]HQctqX-d%֦\CںEb ?*O.Ƞguym{Z޵cyy aa*RLȌ?xd+f0gGv@I;{v;j`;%yttT.B^h#}y3B}J:,x~ ūd/:RXnR)=c,^5AQ0-JR12MaٰG㏿DQ:CMÂXq}x>%~ Rw.ն}S&BT7#rf:pOFڳ]~ oB]PCDanXH2{ =kL[G~(V)IU4:[DL-7#k9kF h7#_C1|}R)J|M$d2IY^*E9E⁎C2H8D1gw(ؿ O,ᇲ;Vµm"DmoX^ɪHZ K\;)DMg/N-[ ?z>}Mm&uŊv]Kj= Csi0Q55Y+ RSjiD@[?fg~y8ӋՍDsivzaƍ}aeֆ8͡eӔk(}֩e@^Ogf8}}vw#MbZWZ:_ْ-\1_Y{&ߥ9VӋ4G[,l~#P dС1ޮMG "KZM _52$:KtmfN*4mX<+ Wlâ25-o|զ>VXL \!3GHa.$?#sL9"S໾8%U̟B| KVMS\LEv2 @7aÀ?TIENDB`phpsysinfo-3.2.5/plugins/mdstatus/gfx/harddriveok.png000066400000000000000000000071331265516077000230610ustar00rootroot00000000000000PNG  IHDR<<:r"IDATh[yPU<PA( qJĈi&fW't4$1d3i֦il6[&$b4A↲,E[z;뽏!53Μ{9ۿs8N-~d}|}?C?n:3FFF(K\x| <>|pxi׌7شiӳ'BCC>>>NwqJVxpp~{p~~_۷ 9Ar}o)=j`8p`suu+֮IR0yaa!V\ RtZ=#())A@@I /ʤdժUX,NsۙhkTǨ4S{#qjÒS^^=znR%@>h"mdd$$y㠩}q mc&1jŊ${4۷o70,^zX~^Sh^,[ L ׯ__=i֭[g8Ңq1B}ü'p 34ЈS"99~l2U2!-Bfe`"+217gg Hh>$zַ䭑Pg~gFO25kHLpGC K$8.Jd|'Glll_3>ʝTs5)wXMz˸ػ1&&f:Ÿbj!FT_{WJU-yQJ0{iy>bBaIITԤFUA)QqE[5cÆ )^^n],+VwI8</z_ynFnc'\h>'ZYBD3cۂ J͛nU&;ÓEjU{ z"eW}8r=Fr^L3 pL{3PtI] D ˼FjRKPɖX` ){9i)V>T``zvy\\ܢ4Y9O6)4OM"(5@JyX@`` f3g@d-Ƒ3/9 K ~ƆQLr%K.aw @NRL<-ʒvIuz&jJ-ԈadNҺxS U#{I.ZD̃]#(Etn_Vׯ_\#%#,(Q2B}65"HܣP1.s&%,m hx #NXfh y !an$V.֌XOf*)>>>9,YNHI v$mi]eMy]Z%4V+:;;Ȍp,K N$ 58_{إ;v0(0l[%)3u`PQ%On=I2'X2t&·οy50|t~#!E.ڋHhgΩ_Φr৞zgKZHu<)វ|CKMQ{VrE;0hDBtZ?N2pq~%d2Sfë$ɀ$9RI5Fɷ8V|z+06HϬ!FK+CcTRibԓ$ewr0ތ?]w ØMeL89 FfZzt¾uiE5^qn'R+cWh<$u}Óq/0u8Gu >ͨCDԲ)%T@왗ʑ7A@CS+Wg{7Z7'v^UK;$:=rwŘ+2S/ߗ44'DRd-^S9trTQ9ظ!I8^q GSKQJ9ՉKC'63Cf5)7O!%1v.ژ*05S{13ң/*U!J; c~w5gp[b9𥳐,eHMHEKƌ({!L7qa7Zg irY{G*AȩdTTɷv>*σy^,jGCo %~iLD{5)Jq@܍ Ex4B"Y `vʪBc!FZC3(4$V ߬)O5Dm>6lT?o(w ᨿQ3ѳTlÙ".*ݷ+HVډ1qR^ƻzWGˊvΥ*-YO[R6g$v%c<$Ǭǥk3buLmYLǝhrUCóY1w2;{ѻ$"<;"SJR)vXPP҉'E'D˞Z~leGqM/IFڼpI¤')}_Q@aosx'ޓ7%s됙|krwG9]j>!OAZӁ"s͎>hXqN σj Xfp8Ѵ)8_XV~qu:z x^9X0K6/+v&<˭';# o~~gۖN:,@u*>!&X/ҹˋŅ# 4]ᚚ^ޥ7c$.1^o_ mڽ3e.A.F܆5wkZY )4T!H!{4ACXs4T?'z:*c&[aIENDB`phpsysinfo-3.2.5/plugins/mdstatus/gfx/harddrivespare.png000066400000000000000000000033251265516077000235610ustar00rootroot00000000000000PNG  IHDR<<IDATXˏGU=;3wlyu,-&va p,HX'@r )C G$DC0 Y{ggCWTcw,Eⲳڮ}V |>LdW.2A@}ƻ2/zU@v XƙOP( ,RjH^E"!/gkghrECJBvBEIHs lY.^ľN?y(,00^sT!(Z<ȉ+_[n~[e!E{`(Ơs^{kk;(Ρ֛?LgYX=:{x<-xz]{s l19 K{o&}Ic5ah,;q #W5} y <'~=cb1EO+ 5L\r:DZIENDB`phpsysinfo-3.2.5/plugins/mdstatus/js/000077500000000000000000000000001265516077000176755ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/mdstatus/js/mdstatus.js000066400000000000000000000230471265516077000221050ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script * * http://phpsysinfo.sourceforge.net/ * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ // // $Id: mdstatus.js 679 2012-09-04 10:10:11Z namiltd $ // /*global $, jQuery, buildBlock, genlang, createBar, plugin_translate, datetime */ "use strict"; //appendcss("./plugins/MDStatus/css/MDStatus.css"); var mdstatus_show = false; /** * get the details of the raid * @param {jQuery} xml part of the plugin-XML * @param {number} id id of the device */ function mdstatus_buildinfos(xml, id) { var html = "", devstatus = "", devlevel = "", devchunk = 0, devsuper = 0, devalgo = 0, devactive = 0, devregis = 0, button = ""; devstatus = $(xml).attr("Disk_Status"); devlevel = $(xml).attr("Level"); devchunk = parseInt($(xml).attr("Chunk_Size"), 10); devsuper = parseInt($(xml).attr("Persistent_Superblock"), 10); devalgo = parseInt($(xml).attr("Algorithm"), 10); devactive = parseInt($(xml).attr("Disks_Active"), 10); devregis = parseInt($(xml).attr("Disks_Registered"), 10); html += "" + genlang(5, true, "MDStatus") + "" + devstatus + ""; html += "" + genlang(6, true, "MDStatus") + "" + devlevel + ""; if (devchunk !== -1) { html += "" + genlang(7, true, "MDStatus") + "" + devchunk + "K"; } if (devalgo !== -1) { html += "" + genlang(8, true, "MDStatus") + "" + devalgo + ""; } if (devsuper !== -1) { html += "" + genlang(9, true, "MDStatus") + "" + genlang(10, true, "MDStatus") + ""; } else { html += "" + genlang(9, true, "MDStatus") + "" + genlang(11, true, "MDStatus") + ""; } if (devactive !== -1 && devregis !== -1) { html += "" + genlang(12, true, "MDStatus") + "" + devregis + "/" + devactive + ""; } button += "

    \"plus\"" + genlang(4, true, "MDStatus") + "

    "; button += "

    \"minus\"" + genlang(4, true, "MDStatus") + "

    "; button += "" + html + "
    "; return button; } /** * generate a html string with the current action on the disks * @param {jQuery} xml part of the plugin-XML */ function mdstatus_buildaction(xml) { var html = "", name = "", time = "", tunit = "", percent = 0; $("Action", xml).each(function mdstatus_getaction(id) { name = $(this).attr("Name"); if (parseInt(name, 10) !== -1) { time = $(this).attr("Time_To_Finish"); tunit = $(this).attr("Time_Unit"); percent = parseFloat($(this).attr("Percent")); html += "
    "; html += genlang(13, true, "MDStatus") + ": " + name + "
    "; html += createBar(percent); html += "
    "; html += genlang(14, true, "MDStatus") + ": " + time + " " + tunit; html += "
    "; } }); return html; } /** * choose the right diskdrive icon * @param {jQuery} xml part of the plugin-XML */ function mdstatus_diskicon(xml) { var html = ""; $("Disks Disk", xml).each(function mdstatus_getdisk(id) { var diskstatus = "", diskname = "", img = "", alt = ""; html += "
    "; diskstatus = $(this).attr("Status"); diskname = $(this).attr("Name"); switch (diskstatus) { case "ok": img = "harddriveok.png"; alt = "ok"; break; case "F": img = "harddrivefail.png"; alt = "fail"; break; case "S": img = "harddrivespare.png"; alt = "spare"; break; default: // alert("--" + diskstatus + "--"); img = "error.png"; alt = "error"; break; } html += "\"""; //onload IE6 PNG fix html += "" + diskname + ""; html += "
    "; }); return html; } /** * fill the plugin block * @param {jQuery} xml plugin-XML */ function mdstatus_populate(xml) { var htmltypes = ""; $("#Plugin_MDStatusTable").empty(); $("#Plugin_MDStatusTable").append(""); $("Plugins Plugin_MDStatus Supported_Types Type", xml).each(function mdstatus_getsupportedtypes(id) { // htmltypes += "
  • " + $(this).attr("Name") + "
  • "; htmltypes += "" + $(this).attr("Name") + " "; }); if (htmltypes.length > 0) { htmltypes = "
      " + htmltypes + "
    "; $("#Plugin_MDStatusTable").append("" + genlang(2, false, "MDStatus") + "" + htmltypes + ""); mdstatus_show = true; } $("Plugins Plugin_MDStatus Raid", xml).each(function mdstatus_getdevice(id) { var htmldisks = "", htmldisklist = "", topic = "", name = "", buildedaction = ""; name = $(this).attr("Device_Name"); htmldisklist += mdstatus_diskicon(this); htmldisks += ""; htmldisks += ""; buildedaction = mdstatus_buildaction($(this)); if (buildedaction) { htmldisks += ""; } htmldisks += ""; htmldisks += "
    " + htmldisklist + "
    " + buildedaction + "
    " + mdstatus_buildinfos($(this), id) + "
    "; if (id) { topic = ""; } else { topic = genlang(3, false, "MDStatus"); } $("#Plugin_MDStatusTable").append("" + topic + "
    " + name + "
    " + htmldisks + ""); $("#sPlugin_MDStatus_Info" + id).click(function mdstatus_showinfo() { $("#Plugin_MDStatus_InfoTable" + id).slideDown("slow"); $("#sPlugin_MDStatus_Info" + id).hide(); $("#hPlugin_MDStatus_Info" + id).show(); }); $("#hPlugin_MDStatus_Info" + id).click(function mdstatus_hideinfo() { $("#Plugin_MDStatus_InfoTable" + id).slideUp("slow"); $("#hPlugin_MDStatus_Info" + id).hide(); $("#sPlugin_MDStatus_Info" + id).show(); }); mdstatus_show = true; }); if ($("Plugins Plugin_MDStatus Unused_Devices", xml).length > 0) { $("#Plugin_MDStatusTable").append("" + genlang(15, true, "MDStatus") + "" + $(this).attr("Devices") + ""); mdstatus_show = true; } $("#Plugin_MDStatusTable").append(""); } /** * load the xml via ajax */ function mdstatus_request() { $("#Reload_MDStatusTable").attr("title", "reload"); $.ajax({ url: "xml.php?plugin=MDStatus", dataType: "xml", error: function mdstatus_error() { $.jGrowl("Error loading XML document for Plugin MDStatus"); }, success: function mdstatus_buildblock(xml) { populateErrors(xml); mdstatus_populate(xml); if (mdstatus_show) { plugin_translate("MDStatus"); $("#Plugin_MDStatus").show(); } } }); } $(document).ready(function mdstatus_buildpage() { var html = ""; $("#footer").before(buildBlock("MDStatus", 1, true)); html += " \n"; html += "
    \n"; $("#Plugin_MDStatus").append(html); $("#Plugin_MDStatus").css("width", "915px"); mdstatus_request(); $("#Reload_MDStatusTable").click(function mdstatus_reload(id) { mdstatus_request(); $(this).attr("title", datetime()); }); }); phpsysinfo-3.2.5/plugins/mdstatus/js/mdstatus_bootstrap.js000066400000000000000000000165151265516077000242040ustar00rootroot00000000000000function renderPlugin_mdstatus(data) { function raid_buildaction(data) { var html = "", name = "", percent = 0; if (data !== undefined) { name = data['Name']; if ((name !== undefined) && (parseInt(name) !== -1)) { percent = Math.round(parseFloat(data['Percent'])); html += "
    " + genlang(13, true,'mdstatus') + ":" + String.fromCharCode(160) + name + "
    "; html += '
    ' + '
    ' + '
    ' + percent + '%
    '; html += genlang(14, true,'mdstatus') + ":" + String.fromCharCode(160) + data['Time_To_Finish'] + String.fromCharCode(160) + data['Time_Unit']; html += "
    "; } } return html; } function raid_diskicon(data) { var html = ""; var img = "", alt = ""; html += "
    "; switch (data["Status"]) { case "ok": img = "harddriveok.png"; alt = "ok"; break; case "F": img = "harddrivefail.png"; alt = "fail"; break; case "S": img = "harddrivespare.png"; alt = "spare"; break; case "W": img = "harddrivewarn.png"; alt = "warning"; break; default: // alert("--" + data["Status"] + "--"); img = "error.png"; alt = "error"; break; } html += "\"""; //onload IE6 PNG fix html += "" + data["Name"] + ""; html += "
    "; return html; } if (data['Plugins']['Plugin_MDStatus'] !== undefined) { $('#mdstatus-data').empty(); if (data['Plugins']['Plugin_MDStatus']['Supported_Types'] !== undefined) { var stitems = items(data['Plugins']['Plugin_MDStatus']['Supported_Types']['Type']); if (stitems.length > 0) { var htmltypes = ""+genlang(2, false, 'mdstatus')+""; for (var i = 0; i < stitems.length ; i++) { htmltypes += stitems[i]["@attributes"]["Name"] + " "; } htmltypes += ""; $('#mdstatus-data').append(htmltypes); $('#block_mdstatus').show(); } else { $('#block_mdstatus').hide(); } } else { $('#block_mdstatus').hide(); } var mditems = items(data['Plugins']['Plugin_MDStatus']['Raid']); if (mditems.length > 0) { var html = ''; for (var i = 0; i < mditems.length ; i++) { if (i) { html += ""; } else { html += ""+genlang(3, false, 'mdstatus')+""; } if (mditems[i]['Disks'] !== undefined) { var devchunk = parseInt(mditems[i]["@attributes"]["Chunk_Size"]); var devsuper = parseInt(mditems[i]["@attributes"]["Persistent_Superblock"]); var devalgo = parseInt(mditems[i]["@attributes"]["Algorithm"]); var devactive = parseInt(mditems[i]["@attributes"]["Disks_Active"]); var devregis = parseInt(mditems[i]["@attributes"]["Disks_Registered"]); html += ""; html += ""; if (mditems[i]['Action'] !== undefined) { var buildedaction = raid_buildaction(mditems[i]['Action']['@attributes']); if (buildedaction) { html += ""; } } html += ""; html += "
    "; var diskitems = items(mditems[i]['Disks']['Disk']); for (var j = 0; j < diskitems.length ; j++) { html += raid_diskicon(diskitems[j]["@attributes"]); } html += "
    " + buildedaction + "
    "; html += ""; html += ""; html += ""; html += ""; if (devchunk !== -1) { html += ""; } if (devalgo !== -1) { html += ""; } if (devsuper !== -1) { html += ""; } else { html += ""; } if (devactive !== -1 && devregis !== -1) { html += ""; } html += "
    " + mditems[i]["@attributes"]["Device_Name"] + "
    "+genlang(5, true,'mdstatus')+"" + mditems[i]["@attributes"]["Disk_Status"] + "
    "+genlang(6, true ,'mdstatus')+"" + mditems[i]["@attributes"]["Level"] + "
    "+genlang(7, true,'mdstatus')+"" + devchunk + "K
    "+genlang(8, true ,'mdstatus')+"" + devalgo + "
    "+genlang(9, true, 'mdstatus')+"available
    "+genlang(9, true, 'mdstatus')+"not available
    "+genlang(12, true, 'mdstatus')+"" + devregis + "/" + devactive + "
    "; html += "
    "; } html +=""; } $('#mdstatus-data').append(html); for (var i = 0; i < mditems.length ; i++) { if (mditems[i]['Disks'] !== undefined) { $('#mdstatus-'+i).treegrid({ initialState: 'collapsed', expanderExpandedClass: 'normalicon normalicon-down', expanderCollapsedClass: 'normalicon normalicon-right' }); } } } } else { $('#block_mdstatus').hide(); } } phpsysinfo-3.2.5/plugins/mdstatus/lang/000077500000000000000000000000001265516077000202025ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/mdstatus/lang/cz.xml000066400000000000000000000043441265516077000213450ustar00rootroot00000000000000 Stav RAIDu Poodporované typy RAID RAID-zařízení Dodatečné informace Stav Úroveň RAIDu Velikost proužku Algoritmus Persistentní Superblock dostupný nedostupný Registrovné/aktivní disky Aktuální činnost Čas dokončení Nevyužité disky Aktualizováno phpsysinfo-3.2.5/plugins/mdstatus/lang/de.xml000066400000000000000000000043401265516077000213150ustar00rootroot00000000000000 RAID Status Unterstützte RAID-Typen RAID-Geräte Zusätzliche Informationen Status RAID-Level Blockgröße Algorithmus Persistenter Superblock verfügbar nicht verfügbar Registrierte/Aktive Platten Aktuelle Aktion Fertig in Unbenutzte Platten Zuletzt aktualisiert phpsysinfo-3.2.5/plugins/mdstatus/lang/en.xml000066400000000000000000000043001265516077000213230ustar00rootroot00000000000000 RAID Status Supported RAID-Types RAID-Devices Additional Information Status RAID-Level Chunk Size Algorithm Persistent Superblock available not available Registered/Active Disks Current Action Finishing in Unused Disks Last refresh phpsysinfo-3.2.5/plugins/mdstatus/lang/fr.xml000066400000000000000000000043561265516077000213430ustar00rootroot00000000000000 Statut RAID Type de RAID supporté Périphériques RAID Informations additionnelles Statut Type de RAID Granularité Algorithme Superblocs persistants disponible non disponible Disques Enregistrés/Actives Action courante Temps restant Disques inutilisés Dernière actualisation phpsysinfo-3.2.5/plugins/mdstatus/lang/gr.xml000066400000000000000000000046251265516077000213430ustar00rootroot00000000000000 Κατάσταση RAID Υποστηριζόμενοι τύποι RAID Αλυσίδες RAID Πρόσθετες πληροφορίες Κατάσταση Τύπος RAID Μέγεθος Chunk Αλγόριθμος Μόνιμο Superblock διαθέσιμο μη διαθέσιμο Δηλωμένοι/Ενεργοί Δίσκοι Τρέχουσα ενέργεια Ολοκληρώνεται σε Αχρησιμοποίητοι Δίσκοι Ενημέρωση phpsysinfo-3.2.5/plugins/mdstatus/lang/ro.xml000066400000000000000000000043251265516077000213500ustar00rootroot00000000000000 Stare RAID Tipuri de RAID suportate Dispozitive RAID Informații Aditionale Stare Nivele RAID Chunk Size Algoritm Superblock persistente disponibil indisponibil Înregistrate/Discuri Active Acțiune curentă finisare în Discuri defolosite Ultimul refresh phpsysinfo-3.2.5/plugins/mdstatus/lang/ru.xml000066400000000000000000000047071265516077000213620ustar00rootroot00000000000000 RAID Статус Поддерживаются типы RAID RAID-Устройства Дополнительные сведения Статус RAID-Уровень Размер блока Алгоритм Постоянный суперблок доступен не доступен Зарегистрировано/Активных Дисков Текущее действие Окончание в Неиспользуемые диски Последнее обновление phpsysinfo-3.2.5/plugins/mdstatus/mdstatus_bootstrap.html000066400000000000000000000010021265516077000241010ustar00rootroot00000000000000 phpsysinfo-3.2.5/plugins/ps/000077500000000000000000000000001265516077000160375ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/ps/class.ps.inc.php000066400000000000000000000261601265516077000210530ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.ps.inc.php 692 2012-09-08 17:12:08Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * process Plugin, which displays all running processes * a simple tree view which is filled with the running processes which are determined by * calling the "ps" command line utility, another way is to provide * a file with the output of the ps utility, so there is no need to run a execute by the * webserver, the format of the command is written down in the phpsysinfo.ini file, where also * the method of getting the information is configured * * @category PHP * @package PSI_Plugin_PS * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class PS extends PSI_Plugin { /** * variable, which holds the content of the command * @var array */ private $_filecontent = array(); /** * variable, which holds the result before the xml is generated out of this array * @var array */ private $_result = array(); /** * read the data into an internal array and also call the parent constructor * * @param String $enc encoding */ public function __construct($enc) { parent::__construct(__CLASS__, $enc); switch (strtolower(PSI_PLUGIN_PS_ACCESS)) { case 'command': if (PSI_OS == 'WINNT') { try { $objLocator = new COM("WbemScripting.SWbemLocator"); $wmi = $objLocator->ConnectServer(); $os_wmi = $wmi->InstancesOf('Win32_OperatingSystem'); foreach ($os_wmi as $os) { $memtotal = $os->TotalVisibleMemorySize * 1024; } $process_wmi = $wmi->InstancesOf('Win32_Process'); foreach ($process_wmi as $process) { if (strlen(trim($process->CommandLine)) > 0) { $ps = trim($process->CommandLine); } else { $ps = trim($process->Caption); } if (trim($process->ProcessId) != 0) { $memusage = round(trim($process->WorkingSetSize) * 100 / $memtotal, 1); //ParentProcessId //Unique identifier of the process that creates a process. Process identifier numbers are reused, so they //only identify a process for the lifetime of that process. It is possible that the process identified by //ParentProcessId is terminated, so ParentProcessId may not refer to a running process. It is also //possible that ParentProcessId incorrectly refers to a process that reuses a process identifier. You can //use the CreationDate property to determine whether the specified parent was created after the process //represented by this Win32_Process instance was created. //=> subtrees of processes may be missing (WHAT TODO?!?) $this->_filecontent[] = trim($process->ProcessId)." ".trim($process->ParentProcessId)." ".$memusage." ".$ps; } } } catch (Exception $e) { } } else { CommonFunctions::executeProgram("ps", "axo pid,ppid,pmem,args", $buffer, PSI_DEBUG); if (((PSI_OS == 'Linux') || (PSI_OS == 'Android')) && (!preg_match("/^[^\n]+\n\s*\d+\s+\d+\s+[\d\.]+\s+.+/", $buffer))) { //alternative method if no data if (CommonFunctions::rfts('/proc/meminfo', $mbuf)) { $bufe = preg_split("/\n/", $mbuf, -1, PREG_SPLIT_NO_EMPTY); $totalmem = 0; foreach ($bufe as $buf) { if (preg_match('/^MemTotal:\s+(.*)\s*kB/i', $buf, $ar_buf)) { $totalmem = $ar_buf[1]; break; } } $buffer = " PID PPID %MEM COMMAND\n"; $processlist = glob('/proc/*/status', GLOB_NOSORT); if (($total = count($processlist)) > 0) { natsort($processlist); //first sort $prosess = array(); foreach ($processlist as $processitem) { //second sort $process[] = $processitem; } $buf = ""; for ($i = 0; $i < $total; $i++) { if (CommonFunctions::rfts($process[$i], $buf, 0, 4096, false)) { if (($totalmem != 0) && (preg_match('/^VmRSS:\s+(\d+)\s+kB/m', $buf, $tmppmem))) { $pmem = round(100 * $tmppmem[1] / $totalmem, 1); } else { $pmem = 0; } $name = null; if (CommonFunctions::rfts(substr($process[$i], 0, strlen($process[$i])-6)."cmdline", $namebuf, 0, 4096, false)) { $name = str_replace(chr(0), ' ', trim($namebuf)); } if (preg_match('/^Pid:\s+(\d+)/m', $buf, $tmppid) && preg_match('/^PPid:\s+(\d+)/m', $buf, $tmpppid) && preg_match('/^Name:\s+(.+)/m', $buf, $tmpargs)) { $pid = $tmppid[1]; $ppid = $tmpppid[1]; $args = $tmpargs[1]; if ($name !== null) { if ($name !== "") { $args = $name; } else { $args = "[".$args."]"; } } $buffer .= $pid." ".$ppid." ".$pmem." ".$args."\n"; } } } } } } } break; case 'data': CommonFunctions::rfts(APP_ROOT."/data/ps.txt", $buffer); break; default: $this->global_error->addConfigError("__construct()", "PSI_PLUGIN_PS_ACCESS"); break; } if (PSI_OS != 'WINNT') { if (trim($buffer) != "") { $this->_filecontent = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY); unset($this->_filecontent[0]); } else { $this->_filecontent = array(); } } } /** * doing all tasks to get the required informations that the plugin needs * result is stored in an internal array
    the array is build like a tree, * so that it is possible to get only a specific process with the childs * * @return void */ public function execute() { if (empty($this->_filecontent)) { return; } $items = array(); foreach ($this->_filecontent as $roworig) { $row = preg_split("/[\s]+/", trim($roworig), 4); if (count($row) != 4) { break; } foreach ($row as $key=>$val) { $items[$row[0]][$key] = $val; } if ($row[1] !== $row[0]) { $items[$row[1]]['childs'][$row[0]] = &$items[$row[0]]; } } foreach ($items as $item) { //find zombie if (!isset($item[0])) { foreach ($item["childs"] as $subitem) { $zombie = $subitem[1]; if ($zombie != 0) { $items[$zombie]["0"] = $zombie; $items[$zombie]["1"] = "0"; $items[$zombie]["2"] = "0"; $items[$zombie]["3"] = "unknown"; $items[0]['childs'][$zombie] = &$items[$zombie]; } break; //first is sufficient } } } if (isset($items[0])) { $this->_result = $items[0]; } else { $_result = array(); } } /** * generates the XML content for the plugin * * @return SimpleXMLElement entire XML content for the plugin */ public function xml() { if ($this->_result) { $positions = array(0=>0); $this->_addchild($this->_result['childs'], $this->xml, $positions); } return $this->xml->getSimpleXmlElement(); } /** * recursive function to allow appending child processes to a parent process * * @param Array $child part of the array which should be appended to the XML * @param SimpleXMLExtended $xml XML-Object to which the array content is appended * @param Array &$positions array with parent positions in xml structure * * @return SimpleXMLExtended Object with the appended array content */ private function _addchild($child, SimpleXMLExtended $xml, &$positions) { foreach ($child as $key=>$value) { $xmlnode = $xml->addChild("Process"); if (isset($value[0])) { array_push($positions, $value[0]); $xmlnode->addAttribute('PID', $value[0]); $parentid = array_search($value[1], $positions); $xmlnode->addAttribute('ParentID', $parentid); $xmlnode->addAttribute('PPID', $value[1]); $xmlnode->addAttribute('MemoryUsage', $value[2]); $xmlnode->addAttribute('Name', $value[3]); if (PSI_OS !== 'WINNT') { if ($parentid === 1) { $xmlnode->addAttribute('Expanded', 0); } if (defined('PSI_PLUGIN_PS_SHOW_KTHREADD_EXPANDED') && (PSI_PLUGIN_PS_SHOW_KTHREADD_EXPANDED === false) && ($value[3] === "[kthreadd]")) { $xmlnode->addAttribute('Expanded', 0); } } } if (isset($value['childs'])) { $this->_addChild($value['childs'], $xml, $positions); } } return $xml; } } phpsysinfo-3.2.5/plugins/ps/js/000077500000000000000000000000001265516077000164535ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/ps/js/ps.js000066400000000000000000000112471265516077000174400ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script * * http://phpsysinfo.sourceforge.net/ * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ // // $Id: ps.js 661 2012-08-27 11:26:39Z namiltd $ // /*global $, jQuery, buildBlock, datetime, plugin_translate, createBar, genlang */ "use strict"; var ps_show = false; /** * build the table where content is inserted * @param {jQuery} xml plugin-XML */ function ps_buildTable(xml) { var html = "", tree = [], closed = [2]; $("#Plugin_PS #Plugin_PSTable").remove(); html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; $("Plugins Plugin_PS Process", xml).each(function ps_getprocess(id) { var close = 0, pid = 0, ppid = 0, name = "", percent = 0, parentId = 0, expanded = 0; name = $(this).attr("Name"); parentId = parseInt($(this).attr("ParentID"), 10); pid = parseInt($(this).attr("PID"), 10); ppid = parseInt($(this).attr("PPID"), 10); percent = parseInt($(this).attr("MemoryUsage"), 10); expanded = parseInt($(this).attr("Expanded"), 10); html += " \n"; close = tree.push(parentId); if (!isNaN(expanded) && (expanded === 0)) { closed.push(close); } ps_show = true; }); html += " \n"; html += "
    " + genlang(3, false, "PS") + "" + genlang(4, false, "PS") + "" + genlang(5, false, "PS") + "" + genlang(6, false, "PS") + "
    " + name + "" + pid + "" + ppid + "" + createBar(percent) + "
    \n"; $("#Plugin_PS").append(html); $("#Plugin_PSTable").jqTreeTable(tree, { openImg: "./gfx/treeTable/tv-collapsable.gif", shutImg: "./gfx/treeTable/tv-expandable.gif", leafImg: "./gfx/treeTable/tv-item.gif", lastOpenImg: "./gfx/treeTable/tv-collapsable-last.gif", lastShutImg: "./gfx/treeTable/tv-expandable-last.gif", lastLeafImg: "./gfx/treeTable/tv-item-last.gif", vertLineImg: "./gfx/treeTable/vertline.gif", blankImg: "./gfx/treeTable/blank.gif", collapse: closed, column: 0, striped: true, highlight: false, state: false }); } /** * load the xml via ajax */ function ps_request() { $("#Reload_PSTable").attr("title", "reload"); $.ajax({ url: "xml.php?plugin=PS", dataType: "xml", error: function ps_error() { $.jGrowl("Error loading XML document for Plugin PS!"); }, success: function ps_buildblock(xml) { populateErrors(xml); ps_buildTable(xml); if (ps_show) { plugin_translate("PS"); $("#Plugin_PS").show(); } } }); } $(document).ready(function ps_buildpage() { $("#footer").before(buildBlock("PS", 1, true)); $("#Plugin_PS").css("width", "915px"); ps_request(); $("#Reload_PSTable").click(function ps_reload(id) { ps_request(); $(this).attr("title", datetime()); }); }); phpsysinfo-3.2.5/plugins/ps/js/ps_bootstrap.js000066400000000000000000000045011265516077000215300ustar00rootroot00000000000000function renderPlugin_ps(data) { var directives = { MemoryUsage: { html: function () { return '
    ' + '
    ' + this["MemoryUsage"] + '%
    '; } }, Name: { html: function () { return this["Name"]; } } }; if (data['Plugins']['Plugin_PS'] !== undefined) { var psitems = items(data['Plugins']['Plugin_PS']['Process']); if (psitems.length > 0) { var html = "", ps_item = [], expanded = 1; for (var i = 0; i < psitems.length ; i++) { ps_item = psitems[i]["@attributes"]; if (ps_item["ParentID"]==="0") { html+=""; } else { html+=""; } html+=""; html+=""; html+=""; html+=""; html+=""; } $("#ps-data").empty().append(html); $('#ps').treegrid({ initialState: 'expanded', expanderExpandedClass: 'normalicon normalicon-down', expanderCollapsedClass: 'normalicon normalicon-right' }); for (var i = 0; i < psitems.length ; i++) { ps_item = psitems[i]["@attributes"]; $('#ps-'+(i+1)).render(ps_item, directives); expanded = ps_item["Expanded"]; if ((expanded !== undefined) && (expanded === "0")) { $('#ps-'+(i+1)).treegrid('collapse'); } } $('#block_ps').show(); } else { $('#block_ps').hide(); } } else { $('#block_ps').hide(); } } phpsysinfo-3.2.5/plugins/ps/lang/000077500000000000000000000000001265516077000167605ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/ps/lang/cz.xml000066400000000000000000000020431265516077000201150ustar00rootroot00000000000000 Procesy Aktualizováno Příkaz PID Rodičovský PID Spotřeba paměti phpsysinfo-3.2.5/plugins/ps/lang/de.xml000066400000000000000000000020531265516077000200720ustar00rootroot00000000000000 Prozess Status Letzte Aktualisierung Befehl Prozess ID Eltern ID Speichernutzung phpsysinfo-3.2.5/plugins/ps/lang/en.xml000066400000000000000000000020421265516077000201020ustar00rootroot00000000000000 Process Status Last refresh Command Process ID Parent ID Memory Usage phpsysinfo-3.2.5/plugins/ps/lang/fr.xml000066400000000000000000000021031265516077000201050ustar00rootroot00000000000000 Etat des processus Dernière actualisation Commande ID processus ID processus père Utilisation mémoire phpsysinfo-3.2.5/plugins/ps/lang/gr.xml000066400000000000000000000021611265516077000201120ustar00rootroot00000000000000 Διεργασίες Συστήματος Ενημέρωση Εντολή ID Διεργασίας ID Κύριας Διεργασίας Χρήση Μνήμης phpsysinfo-3.2.5/plugins/ps/lang/pl.xml000066400000000000000000000020671265516077000201220ustar00rootroot00000000000000 Status Procesów Ostatnie odświeżenie Polecenie PID PID rodzica Wykorzystanie pamięci phpsysinfo-3.2.5/plugins/ps/lang/ro.xml000066400000000000000000000020451265516077000201230ustar00rootroot00000000000000 Stare proces Ultimul refresh Comanda ID Proces ID Parinte Utilizare Memorie phpsysinfo-3.2.5/plugins/ps/lang/ru.xml000066400000000000000000000022151265516077000201300ustar00rootroot00000000000000 Статус процессов Последнее обновление Команда ID процесса ID родителя Использовано памяти phpsysinfo-3.2.5/plugins/ps/ps_bootstrap.html000066400000000000000000000016211265516077000214440ustar00rootroot00000000000000 phpsysinfo-3.2.5/plugins/psstatus/000077500000000000000000000000001265516077000173035ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/psstatus/class.psstatus.inc.php000066400000000000000000000154731265516077000235700ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.psstatus.inc.php 692 2012-09-08 17:12:08Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * process Plugin, which displays the status of configured processes * a simple view which shows a process name and the status * status determined by calling the "pidof" command line utility, another way is to provide * a file with the output of the pidof utility, so there is no need to run a executeable by the * webserver, the format of the command is written down in the phpsysinfo.ini file, where also * the method of getting the information is configured * processes that should be checked are also defined in phpsysinfo.ini * * @category PHP * @package PSI_Plugin_PSStatus * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class PSStatus extends PSI_Plugin { /** * variable, which holds the content of the command * @var array */ private $_filecontent = array(); /** * variable, which holds the result before the xml is generated out of this array * @var array */ private $_result = array(); /** * read the data into an internal array and also call the parent constructor * * @param String $enc target encoding */ public function __construct($enc) { parent::__construct(__CLASS__, $enc); switch (strtolower(PSI_PLUGIN_PSSTATUS_ACCESS)) { case 'command': if (PSI_OS == 'WINNT') { try { $objLocator = new COM("WbemScripting.SWbemLocator"); $wmi = $objLocator->ConnectServer(); $process_wmi = $wmi->InstancesOf('Win32_Process'); foreach ($process_wmi as $process) { $this->_filecontent[] = array(strtolower(trim($process->Caption)), trim($process->ProcessId)); } } catch (Exception $e) { } } else { if (defined('PSI_PLUGIN_PSSTATUS_PROCESSES') && is_string(PSI_PLUGIN_PSSTATUS_PROCESSES)) { if (preg_match(ARRAY_EXP, PSI_PLUGIN_PSSTATUS_PROCESSES)) { $processes = eval(PSI_PLUGIN_PSSTATUS_PROCESSES); } else { $processes = array(PSI_PLUGIN_PSSTATUS_PROCESSES); } if (defined('PSI_PLUGIN_PSSTATUS_USE_REGEX') && PSI_PLUGIN_PSSTATUS_USE_REGEX === true) { foreach ($processes as $process) { CommonFunctions::executeProgram("pgrep", "-n -x ".$process, $buffer, PSI_DEBUG); if (strlen($buffer) > 0) { $this->_filecontent[] = array($process, $buffer); } } } else { foreach ($processes as $process) { CommonFunctions::executeProgram("pidof", "-s ".$process, $buffer, PSI_DEBUG); if (strlen($buffer) > 0) { $this->_filecontent[] = array($process, $buffer); } } } } } break; case 'data': CommonFunctions::rfts(APP_ROOT."/data/psstatus.txt", $buffer); $processes = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY); foreach ($processes as $process) { $ps = preg_split("/[\s]?\|[\s]?/", $process, -1, PREG_SPLIT_NO_EMPTY); if (count($ps) == 2) { $this->_filecontent[] = array(trim($ps[0]), trim($ps[1])); } } break; default: $this->global_error->addError("switch(PSI_PLUGIN_PSSTATUS_ACCESS)", "Bad psstatus configuration in phpsysinfo.ini"); break; } } /** * doing all tasks to get the required informations that the plugin needs * result is stored in an internal array
    the array is build like a tree, * so that it is possible to get only a specific process with the childs * * @return void */ public function execute() { if (empty($this->_filecontent)) { return; } if (defined('PSI_PLUGIN_PSSTATUS_PROCESSES') && is_string(PSI_PLUGIN_PSSTATUS_PROCESSES)) { if (preg_match(ARRAY_EXP, PSI_PLUGIN_PSSTATUS_PROCESSES)) { $processes = eval(PSI_PLUGIN_PSSTATUS_PROCESSES); } else { $processes = array(PSI_PLUGIN_PSSTATUS_PROCESSES); } if ((PSI_OS == 'WINNT') && (strtolower(PSI_PLUGIN_PSSTATUS_ACCESS) == 'command')) { foreach ($processes as $process) { if ($this->_recursiveinarray(strtolower($process), $this->_filecontent)) { $this->_result[] = array($process, true); } else { $this->_result[] = array($process, false); } } } else { foreach ($processes as $process) { if ($this->_recursiveinarray($process, $this->_filecontent)) { $this->_result[] = array($process, true); } else { $this->_result[] = array($process, false); } } } } } /** * generates the XML content for the plugin * * @return SimpleXMLElement entire XML content for the plugin */ public function xml() { foreach ($this->_result as $ps) { $xmlps = $this->xml->addChild("Process"); $xmlps->addAttribute("Name", $ps[0]); $xmlps->addAttribute("Status", $ps[1] ? 1 : 0); } return $this->xml->getSimpleXmlElement(); } /** * checks an array recursive if an value is in, extended version of in_array() * * @param mixed $needle what to find * @param array $haystack where to find * * @return boolean true - found
    false - not found */ private function _recursiveinarray($needle, $haystack) { foreach ($haystack as $stalk) { if ($needle == $stalk || (is_array($stalk) && $this->_recursiveinarray($needle, $stalk))) { return true; } } return false; } } phpsysinfo-3.2.5/plugins/psstatus/css/000077500000000000000000000000001265516077000200735ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/psstatus/css/psstatus.css000066400000000000000000000001751265516077000224760ustar00rootroot00000000000000/* $Id: psstatus.css 661 2012-08-27 11:26:39Z namiltd $ */ #plugin_psstatusTable thead tr .header { cursor: pointer; } phpsysinfo-3.2.5/plugins/psstatus/gfx/000077500000000000000000000000001265516077000200675ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/psstatus/gfx/offline.gif000066400000000000000000000017401265516077000222020ustar00rootroot00000000000000GIF89aNL24nl"$BD^\~|JL*,BDfdVTvt&$FD􆄄><!,'H&" + status.toString() + "
    \"online\""; } else { state = "" + status.toString() + "\"offline\""; } psstatus_table.fnAddData(["" + name + "" + name, state]); psstatus_show = true; }); } /** * fill the plugin block with table structure */ function psstatus_buildTable() { var html = ""; html += "\n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += "
    " + genlang(3, false, "PSStatus") + "" + genlang(4, false, "PSStatus") + "
    \n"; $("#Plugin_PSStatus").append(html); psstatus_table = $("#Plugin_PSStatusTable").dataTable({ "bPaginate": false, "bLengthChange": false, "bFilter": false, "bSort": true, "bInfo": false, "bProcessing": true, "bAutoWidth": false, "bStateSave": true, "aoColumns": [{ "sType": 'span-string' }, { "sType": 'span-number' }] }); } /** * load the xml via ajax */ function psstatus_request() { $("#Reload_PSStatusTable").attr("title", "reload"); $.ajax({ url: "xml.php?plugin=PSStatus", dataType: "xml", error: function psstatus_error() { $.jGrowl("Error loading XML document for Plugin PSStatus!"); }, success: function psstatus_buildblock(xml) { populateErrors(xml); psstatus_populate(xml); if (psstatus_show) { plugin_translate("PSStatus"); $("#Plugin_PSStatus").show(); } } }); } $(document).ready(function psstatus_buildpage() { $("#footer").before(buildBlock("PSStatus", 1, true)); $("#Plugin_PSStatus").css("width", "451px"); psstatus_buildTable(); psstatus_request(); $("#Reload_PSStatusTable").click(function psstatus_reload(id) { psstatus_request(); $(this).attr("title", datetime()); }); }); phpsysinfo-3.2.5/plugins/psstatus/js/psstatus_bootstrap.js000066400000000000000000000015151265516077000242420ustar00rootroot00000000000000function renderPlugin_psstatus(data) { var directives = { Status: { text: function () { return (this['Status'] === "1") ? "ON" : "OFF"; } } }; if (data['Plugins']['Plugin_PSStatus'] !== undefined) { var psitems = items(data['Plugins']['Plugin_PSStatus']['Process']); if (psitems.length > 0) { var ps_memory = []; ps_memory.push_attrs(psitems); $('#psstatus-data').render(ps_memory, directives); $('#psstatus_Name').removeClass("sorttable_sorted"); // reset sort order sorttable.innerSortFunction.apply($('#psstatus_Name')[0], []); $('#block_psstatus').show(); } else { $('#block_psstatus').hide(); } } else { $('#block_psstatus').hide(); } } phpsysinfo-3.2.5/plugins/psstatus/lang/000077500000000000000000000000001265516077000202245ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/psstatus/lang/cz.xml000066400000000000000000000015621265516077000213660ustar00rootroot00000000000000 Stav procesů Aktualizováno Název Stav phpsysinfo-3.2.5/plugins/psstatus/lang/de.xml000066400000000000000000000015701265516077000213410ustar00rootroot00000000000000 Prozess Status Letzte Aktualisierung Name Status phpsysinfo-3.2.5/plugins/psstatus/lang/en.xml000066400000000000000000000015611265516077000213530ustar00rootroot00000000000000 Process Status Last refresh Name Status phpsysinfo-3.2.5/plugins/psstatus/lang/fr.xml000066400000000000000000000015731265516077000213630ustar00rootroot00000000000000 Etat des processus Dernière actualisation Nom Etat phpsysinfo-3.2.5/plugins/psstatus/lang/gr.xml000066400000000000000000000016611265516077000213620ustar00rootroot00000000000000 Κατάσταση Κρίσιμων Διεργασιών Ενημέρωση Διεργασία Κατάσταση phpsysinfo-3.2.5/plugins/psstatus/lang/pl.xml000066400000000000000000000016001265516077000213560ustar00rootroot00000000000000 Status Procesów Ostatnie odświeżenie Nazwa Status phpsysinfo-3.2.5/plugins/psstatus/lang/ro.xml000066400000000000000000000015561265516077000213750ustar00rootroot00000000000000 Stare proces Ultimul refresh Nume Stare phpsysinfo-3.2.5/plugins/psstatus/lang/ru.xml000066400000000000000000000016661265516077000214050ustar00rootroot00000000000000 Статус служб Последнее обновление Имя службы Статус phpsysinfo-3.2.5/plugins/psstatus/psstatus_bootstrap.html000066400000000000000000000020221265516077000241500ustar00rootroot00000000000000 phpsysinfo-3.2.5/plugins/quotas/000077500000000000000000000000001265516077000167315ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/quotas/class.quotas.inc.php000066400000000000000000000117501265516077000226360ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.quotas.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * Quotas Plugin, which displays all quotas on the machine * display all quotas in a sortable table with the current values which are determined by * calling the "repquota" command line utility, another way is to provide * a file with the output of the repquota utility, so there is no need to run a execute by the * webserver, the format of the command is written down in the phpsysinfo.ini file, where also * the method of getting the information is configured * * @category PHP * @package PSI_Plugin_Quotas * @author Michael Cramer * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class Quotas extends PSI_Plugin { /** * variable, which holds the content of the command * @var array */ private $_filecontent = array(); /** * variable, which holds the result before the xml is generated out of this array * @var array */ private $_result = array(); /** * read the data into an internal array and also call the parent constructor * * @param String $enc target encoding */ public function __construct($enc) { parent::__construct(__CLASS__, $enc); switch (strtolower(PSI_PLUGIN_QUOTAS_ACCESS)) { case 'command': CommonFunctions::executeProgram("repquota", "-au", $buffer, PSI_DEBUG); break; case 'data': CommonFunctions::rfts(APP_ROOT."/data/quotas.txt", $buffer); break; default: $this->global_error->addConfigError("__construct()", "PSI_PLUGIN_QUOTAS_ACCESS"); break; } if (trim($buffer) != "") { $this->_filecontent = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY); unset($this->_filecontent[0]); } else { $this->_filecontent = array(); } } /** * doing all tasks to get the required informations that the plugin needs * result is stored in an internal array
    the array is build like a tree, * so that it is possible to get only a specific process with the childs * * @return void */ public function execute() { $i = 0; $quotas = array(); foreach ($this->_filecontent as $thisline) { $thisline = preg_replace("/([\s]--)/", "", $thisline); $thisline = preg_split("/(\s)/e", $thisline, -1, PREG_SPLIT_NO_EMPTY); if (count($thisline) == 7) { $quotas[$i]['user'] = str_replace("--", "", $thisline[0]); $quotas[$i]['byte_used'] = $thisline[1] * 1024; $quotas[$i]['byte_soft'] = $thisline[2] * 1024; $quotas[$i]['byte_hard'] = $thisline[3] * 1024; if ($thisline[3] != 0) { $quotas[$i]['byte_percent_used'] = round((($quotas[$i]['byte_used'] / $quotas[$i]['byte_hard']) * 100), 1); } else { $quotas[$i]['byte_percent_used'] = 0; } $quotas[$i]['file_used'] = $thisline[4]; $quotas[$i]['file_soft'] = $thisline[5]; $quotas[$i]['file_hard'] = $thisline[6]; if ($thisline[6] != 0) { $quotas[$i]['file_percent_used'] = round((($quotas[$i]['file_used'] / $quotas[$i]['file_hard']) * 100), 1); } else { $quotas[$i]['file_percent_used'] = 0; } $i++; } } $this->_result = $quotas; } /** * generates the XML content for the plugin * * @return SimpleXMLElement entire XML content for the plugin */ public function xml() { foreach ($this->_result as $quota) { $quotaChild = $this->xml->addChild("Quota"); $quotaChild->addAttribute("User", $quota['user']); $quotaChild->addAttribute("ByteUsed", $quota['byte_used']); $quotaChild->addAttribute("ByteSoft", $quota['byte_soft']); $quotaChild->addAttribute("ByteHard", $quota['byte_hard']); $quotaChild->addAttribute("BytePercentUsed", $quota['byte_percent_used']); $quotaChild->addAttribute("FileUsed", $quota['file_used']); $quotaChild->addAttribute("FileSoft", $quota['file_soft']); $quotaChild->addAttribute("FileHard", $quota['file_hard']); $quotaChild->addAttribute("FilePercentUsed", $quota['file_percent_used']); } return $this->xml->getSimpleXmlElement(); } } phpsysinfo-3.2.5/plugins/quotas/css/000077500000000000000000000000001265516077000175215ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/quotas/css/quotas.css000066400000000000000000000002211265516077000215420ustar00rootroot00000000000000/* $Id: quotas.css 661 2012-08-27 11:26:39Z namiltd $ */ #plugin_quotasTable thead tr .header { cursor: pointer; text-align: center; } phpsysinfo-3.2.5/plugins/quotas/js/000077500000000000000000000000001265516077000173455ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/quotas/js/quotas.js000066400000000000000000000136421265516077000212250ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script * * http://phpsysinfo.sourceforge.net/ * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ // // $Id: quotas.js 661 2012-08-27 11:26:39Z namiltd $ // /*global $, jQuery, buildBlock, datetime, plugin_translate, genlang, formatBytes, createBar */ "use strict"; var quotas_show = false, quotas_table; //appendcss("./plugins/Quotas/css/Quotas.css"); /** * insert content into table * @param {jQuery} xml plugin-XML */ function quotas_populate(xml) { quotas_table.fnClearTable(); $("Plugins Plugin_Quotas Quota", xml).each(function quotas_getquota(id) { var user = "", bused = 0, bsoft = 0, bhard = 0, bpuse = 0, fpuse = 0, fused = 0, fsoft = 0, fhard = 0; user = $(this).attr("User"); bused = parseInt($(this).attr("ByteUsed"), 10); bsoft = parseInt($(this).attr("ByteSoft"), 10); bhard = parseInt($(this).attr("ByteHard"), 10); bpuse = parseInt($(this).attr("BytePercentUsed"), 10); fused = parseInt($(this).attr("FileUsed"), 10); fsoft = parseInt($(this).attr("FileSoft"), 10); fhard = parseInt($(this).attr("FileHard"), 10); fpuse = parseInt($(this).attr("FilePercentUsed"), 10); quotas_table.fnAddData(["" + user + "" + user, "" + bused + "" + formatBytes(bused, xml), "" + bsoft + "" + formatBytes(bsoft, xml), "" + bhard + "" + formatBytes(bhard, xml), "" + bpuse + "" + createBar(bpuse), "" + fused + "" + fused, "" + fsoft + "" + fsoft, "" + fhard + "" + fhard, "" + fpuse + "" + createBar(fpuse)]); quotas_show = true; }); } /** * fill the plugin block with table structure */ function quotas_buildTable() { var html = ""; html += "\n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += "
    " + genlang(3, false, "Quotas") + "" + genlang(4, false, "Quotas") + "" + genlang(5, false, "Quotas") + "" + genlang(6, false, "Quotas") + "" + genlang(7, false, "Quotas") + "" + genlang(8, false, "Quotas") + "" + genlang(9, false, "Quotas") + "" + genlang(10, false, "Quotas") + "" + genlang(11, false, "Quotas") + "
    \n"; $("#Plugin_Quotas").append(html); quotas_table = $("#Plugin_QuotasTable").dataTable({ "bPaginate": false, "bLengthChange": false, "bFilter": false, "bSort": true, "bInfo": false, "bProcessing": true, "bAutoWidth": false, "bStateSave": true, "aoColumns": [{ "sType": 'span-string' }, { "sType": 'span-number' }, { "sType": 'span-number' }, { "sType": 'span-number' }, { "sType": 'span-number' }, { "sType": 'span-number' }, { "sType": 'span-number' }, { "sType": 'span-number' }, { "sType": 'span-number' }] }); } /** * load the xml via ajax */ function quotas_request() { $("#Reload_QuotasTable").attr("title", "reload"); $.ajax({ url: "xml.php?plugin=Quotas", dataType: "xml", error: function quotas_error() { $.jGrowl("Error loading XML document for Plugin quotas!"); }, success: function quotas_buildblock(xml) { populateErrors(xml); quotas_populate(xml); if (quotas_show) { plugin_translate("Quotas"); $("#Plugin_Quotas").show(); } } }); } $(document).ready(function quotas_buildpage() { $("#footer").before(buildBlock("Quotas", 1, true)); $("#Plugin_Quotas").css("width", "915px"); quotas_buildTable(); quotas_request(); $("#Reload_QuotasTable").click(function quotas_reload(id) { quotas_request(); $(this).attr("title", datetime()); }); }); phpsysinfo-3.2.5/plugins/quotas/js/quotas_bootstrap.js000066400000000000000000000035141265516077000233170ustar00rootroot00000000000000function renderPlugin_quotas(data) { var directives = { ByteUsed: { html: function () { return formatBytes(this["ByteUsed"], data["Options"]["@attributes"]["byteFormat"]); } }, ByteSoft: { html: function () { return formatBytes(this["ByteSoft"], data["Options"]["@attributes"]["byteFormat"]); } }, ByteHard: { html: function () { return formatBytes(this["ByteHard"], data["Options"]["@attributes"]["byteFormat"]); } }, BytePercentUsed: { html: function () { return '
    ' + '
    ' + this["BytePercentUsed"] + '%
    '; } }, FilePercentUsed: { html: function () { return '
    ' + '
    ' + this["FilePercentUsed"] + '%
    '; } } }; if (data['Plugins']['Plugin_Quotas'] !== undefined) { var qtitems = items(data['Plugins']['Plugin_Quotas']['Quota']); if (qtitems.length > 0) { var qt_memory = []; qt_memory.push_attrs(qtitems); $('#quotas-data').render(qt_memory, directives); $('#quotas_User').removeClass("sorttable_sorted"); // reset sort order sorttable.innerSortFunction.apply($('#quotas_User')[0], []); $('#block_quotas').show(); } else { $('#block_quotas').hide(); } } else { $('#block_quotas').hide(); } } phpsysinfo-3.2.5/plugins/quotas/lang/000077500000000000000000000000001265516077000176525ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/quotas/lang/cz.xml000066400000000000000000000032101265516077000210040ustar00rootroot00000000000000 Stav kvót aktualizováno Uživatel Využité místo Měkký limit Tvrdý limit Procento využití Počet soouborů Měkký souborový limit Tvrdý souborový limit Procento využití souborů phpsysinfo-3.2.5/plugins/quotas/lang/de.xml000066400000000000000000000032361265516077000207700ustar00rootroot00000000000000 Quota Status Letze Aktualisierung Benutzer Bytes (Belegt) Bytes (Soft Limit) Bytes (Hard Limit) Bytes (Belegt Prozent) Dateien (Benutzt) Dateien (Soft Limit) Dateien (Hard Limit) Dateien (Benutzt Prozent) phpsysinfo-3.2.5/plugins/quotas/lang/en.xml000066400000000000000000000031161265516077000207770ustar00rootroot00000000000000 Quota Status Last Refresh User Bytes Used Bytes Soft Bytes Hard Bytes Used Percent Files Used Files Soft Files Hard Files Used Percent phpsysinfo-3.2.5/plugins/quotas/lang/fr.xml000066400000000000000000000032541265516077000210070ustar00rootroot00000000000000 Etat des quotas Dernière actualisation Utilisateurs Espace utilisés Espace limite souple Espace limite stricte Pourcentage espace utilisés Inodes utilisés Inodes limite souple Inodes limite stricte Pourcentage inodes utilisés phpsysinfo-3.2.5/plugins/quotas/lang/pl.xml000066400000000000000000000032431265516077000210110ustar00rootroot00000000000000 Status Quoty Ostatnie odświeżenie Użytkownik Bajtów wykorzystanych Miękki limit bajtów Twardy limit bajtów Procentowo bajtów Plików wykorzystanych Miękki limit plików Twardy limit plików Procentowo plików phpsysinfo-3.2.5/plugins/quotas/lang/ro.xml000066400000000000000000000031601265516077000210140ustar00rootroot00000000000000 Stare Quota Ultimul refresh Utilizator Bytes Folositi Bytes Soft Bytes Hard Bytes Percent Folosiți Fișiere Folosite Fișiere Soft Fișiere Hard Fișiere Percent Folosite phpsysinfo-3.2.5/plugins/quotas/lang/ru.xml000066400000000000000000000034231265516077000210240ustar00rootroot00000000000000 Состояние Квоты Последнее обновление Пользователь Используется Программы Жесткий диск Процентов Файлы Используется Файлов программ Файлы на жестком диске Проценты файлов phpsysinfo-3.2.5/plugins/quotas/quotas_bootstrap.html000066400000000000000000000047201265516077000232330ustar00rootroot00000000000000 phpsysinfo-3.2.5/plugins/smart/000077500000000000000000000000001265516077000165435ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/smart/class.smart.inc.php000066400000000000000000000330051265516077000222570ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.smart.inc.php 707 2012-11-28 10:20:49Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * SMART plugin, which displays all SMART informations available * * @category PHP * @package PSI_Plugin_SMART * @author Antoine Bertin * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 3.0 * @link http://phpsysinfo.sourceforge.net */ class SMART extends PSI_Plugin { /** * variable, which holds the content of the command * @var array */ private $_filecontent = array(); /** * variable, which holds the result before the xml is generated out of this array * @var array */ private $_result = array(); /** * variable, which holds PSI_PLUGIN_SMART_IDS well formated datas * @var array */ private $_ids = array(); /** * read the data into an internal array and also call the parent constructor * * @param String $enc target encoding */ public function __construct($enc) { parent::__construct(__CLASS__, $enc); switch (strtolower(PSI_PLUGIN_SMART_ACCESS)) { case 'command': if (defined('PSI_PLUGIN_SMART_DEVICES') && is_string(PSI_PLUGIN_SMART_DEVICES)) { if (preg_match(ARRAY_EXP, PSI_PLUGIN_SMART_DEVICES)) { $disks = eval(PSI_PLUGIN_SMART_DEVICES); } else { $disks = array(PSI_PLUGIN_SMART_DEVICES); } foreach ($disks as $disk) { if (trim($disk) != "") { $diskdev = ""; if (preg_match("/\s*\(([^\(\(]*)\)\s*(.*)/", $disk, $devdisk)) { $diskname = trim($devdisk[2]); if (trim($devdisk[1]) != "") { $diskdev = "--device ".preg_replace('/\./', ',', trim($devdisk[1])); } } else { $diskname = trim($disk); } $buffer = ""; if (trim($diskname != "") && (CommonFunctions::executeProgram('smartctl', '--all'.' '.$diskdev.' '.$diskname, $buffer, PSI_DEBUG))) { $this->_filecontent[trim($disk)] = $buffer; } } } } if (defined('PSI_PLUGIN_SMART_IDS') && is_string(PSI_PLUGIN_SMART_IDS)) { if (preg_match(ARRAY_EXP, PSI_PLUGIN_SMART_IDS)) { $fullIds = eval(PSI_PLUGIN_SMART_IDS); } else { $fullIds = array(PSI_PLUGIN_SMART_IDS); } foreach ($fullIds as $fullId) { $arrFullId = preg_split('/-/', $fullId); $this->_ids[intval($arrFullId[0])] = strtolower($arrFullId[1]); if (!empty($arrFullId[2])) $this->_ids[intval($arrFullId[2])] = "#replace-".intval($arrFullId[0]); } } break; case 'data': if (defined('PSI_PLUGIN_SMART_DEVICES') && is_string(PSI_PLUGIN_SMART_DEVICES)) { if (preg_match(ARRAY_EXP, PSI_PLUGIN_SMART_DEVICES)) { $disks = eval(PSI_PLUGIN_SMART_DEVICES); } else { $disks = array(PSI_PLUGIN_SMART_DEVICES); } $dn=0; foreach ($disks as $disk) { $buffer=""; if (CommonFunctions::rfts(APP_ROOT."/data/smart{$dn}.txt", $buffer) && !empty($buffer)) { $this->_filecontent[$disk] = $buffer; } $dn++; } } if (defined('PSI_PLUGIN_SMART_IDS') && is_string(PSI_PLUGIN_SMART_IDS)) { if (preg_match(ARRAY_EXP, PSI_PLUGIN_SMART_IDS)) { $fullIds = eval(PSI_PLUGIN_SMART_IDS); } else { $fullIds = array(PSI_PLUGIN_SMART_IDS); } foreach ($fullIds as $fullId) { $arrFullId = preg_split('/-/', $fullId); $this->_ids[intval($arrFullId[0])] = strtolower($arrFullId[1]); if (!empty($arrFullId[2])) $this->_ids[intval($arrFullId[2])] = "#replace-".intval($arrFullId[0]); } } break; default: $this->global_error->addError("switch(PSI_PLUGIN_SMART_ACCESS)", "Bad SMART configuration in phpsysinfo.ini"); break; } } /** * doing all tasks to get the required informations that the plugin needs * result is stored in an internal array * * @return void */ public function execute() { if (empty($this->_filecontent) || empty($this->_ids)) { return; } foreach ($this->_filecontent as $disk=>$result) { // set the start and end offset in the result string at the beginning and end respectively // just in case we don't find the two strings, so that it still works as expected. $startIndex = 0; $endIndex = 0; $vendorInfos = ""; // locate the beginning string offset for the attributes if (preg_match('/(Vendor Specific SMART Attributes with Thresholds)/', $result, $matches, PREG_OFFSET_CAPTURE)) $startIndex = $matches[0][1]; // locate the end string offset for the attributes, this is usually right before string "SMART Error Log Version" or "SMART Error Log not supported" or "Error SMART Error Log Read failed" (hopefully every output has it!) if (preg_match('/(SMART Error Log Version)|(SMART Error Log not supported)|(Error SMART Error Log Read failed)/', $result, $matches, PREG_OFFSET_CAPTURE)) $endIndex = $matches[0][1]; if ($startIndex && $endIndex && ($endIndex>$startIndex)) $vendorInfos = preg_split("/\n/", substr($result, $startIndex, $endIndex - $startIndex)); if (!empty($vendorInfos)) { $labels = preg_split('/\s+/', $vendorInfos[1]); foreach ($labels as $k=>$v) { $labels[$k] = str_replace('#', '', strtolower($v)); } $i = 0; // Line number foreach ($vendorInfos as $line) { $line = preg_replace('/^\s+/', '', $line); $values = preg_split('/\s+/', $line); if (count($values) > count($labels)) { $values = array_slice($values, 0, count($labels), true); } $j = 0; $found = false; foreach ($values as $value) { if ((in_array($value, array_keys($this->_ids)) && $labels[$j] == 'id')) { $arrFullVa = preg_split('/-/', $this->_ids[$value]); if (($arrFullVa[0]=="#replace") && !empty($arrFullVa[1])) $value=$arrFullVa[1]; } if (((in_array($value, array_keys($this->_ids)) && $labels[$j] == 'id') || ($found && (in_array($labels[$j], array_values($this->_ids)))) || ($found && $labels[$j] == 'attribute_name'))) { $this->_result[$disk][$i][$labels[$j]] = $value; $found = true; } $j++; } $i++; } } else { //SCSI devices if (!empty($this->_ids[1]) && ($this->_ids[1]=="raw_value")) { preg_match('/read\: (.*)\n/', $result, $lines); if (!empty($lines) && !empty($lines[0])) { $values=preg_split('/\s+/', $lines[0]); if (!empty($values) && ($values[7]!=null)) { $vals=preg_split('/[,\.]/', $values[7]); $this->_result[$disk][0]['id'] = 1; $this->_result[$disk][0]['attribute_name'] = "Raw_Read_Error_Rate"; $this->_result[$disk][0]['raw_value'] = $vals[0]; } } } if (!empty($this->_ids[5]) && ($this->_ids[5]=="raw_value")) { preg_match('/Elements in grown defect list\: (.*)\n/', $result, $lines); if (!empty($lines) && !empty($lines[0])) { $values=preg_split('/\s+/', $lines[0]); if (!empty($values) && ($values[5]!=null)) { $vals=preg_split('/[,\.]/', $values[5]); $this->_result[$disk][1]['id'] = 5; $this->_result[$disk][1]['attribute_name'] = "Reallocated_Sector_Ct"; $this->_result[$disk][1]['raw_value'] = $vals[0]; } } } if (!empty($this->_ids[9]) && ($this->_ids[9]=="raw_value")) { preg_match('/ number of hours powered up = (.*)\n/', $result, $lines); if (!empty($lines) && !empty($lines[0])) { $values=preg_split('/\s+/', $lines[0]); if (!empty($values) && ($values[7]!=null)) { $vals=preg_split('/[,\.]/', $values[7]); $this->_result[$disk][2]['id'] = 9; $this->_result[$disk][2]['attribute_name'] = "Power_On_Hours"; $this->_result[$disk][2]['raw_value'] = $vals[0]; } } } if (!empty($this->_ids[194]) && ($this->_ids[194]=="raw_value")) { preg_match('/Current Drive Temperature\: (.*)\n/', $result, $lines); if (!empty($lines) && !empty($lines[0])) { $values=preg_split('/\s+/', $lines[0]); if (!empty($values) && ($values[3]!=null)) { $vals=preg_split('/[,\.]/', $values[3]); $this->_result[$disk][3]['id'] = 194; $this->_result[$disk][3]['attribute_name'] = "Temperature_Celsius"; $this->_result[$disk][3]['raw_value'] = $vals[0]; } } } } } //Usage test $newIds = array(); foreach ($this->_ids as $id=>$column_name) { $found = 0; foreach ($this->_result as $diskName=>$diskInfos) { if ($found!=2) foreach ($diskInfos as $lineInfos) { if ($found!=2) { $found = 0; foreach ($lineInfos as $label=>$value) { if (($found==0) && ($label=="id") && ($value==$id)) $found = 1; if (($found==1) && ($label==$column_name)) $found = 2; } } } } if ($found==2) $newIds[$id] = $this->_ids[$id]; } $this->_ids = $newIds; } /** * generates the XML content for the plugin * * @return SimpleXMLObject entire XML content for the plugin */ public function xml() { if (empty($this->_result) || empty($this->_ids)) { return $this->xml->getSimpleXmlElement(); } $columnsChild = $this->xml->addChild('columns'); // Fill the xml with preferences foreach ($this->_ids as $id=>$column_name) { $columnChild = $columnsChild->addChild('column'); $columnChild->addAttribute('id', $id); $columnChild->addAttribute('name', $column_name); } $disksChild = $this->xml->addChild('disks'); // Now fill the xml with S.M.A.R.T datas foreach ($this->_result as $diskName=>$diskInfos) { $diskChild = $disksChild->addChild('disk'); $diskChild->addAttribute('name', $diskName); foreach ($diskInfos as $lineInfos) { $lineChild = $diskChild->addChild('attribute'); if (($lineInfos['id'] == 9) && ($lineInfos['attribute_name'] == "Power_On_Hours_and_Msec")) { $lineInfos['attribute_name'] = "Power_On_Hours"; $raw_value = preg_split("/h/", $lineInfos['raw_value'], -1, PREG_SPLIT_NO_EMPTY); $lineInfos['raw_value'] = $raw_value[0]; } foreach ($lineInfos as $label=>$value) { $lineChild->addAttribute($label, $value); } } } return $this->xml->getSimpleXmlElement(); } } phpsysinfo-3.2.5/plugins/smart/css/000077500000000000000000000000001265516077000173335ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/smart/css/smart.css000066400000000000000000000001641265516077000211740ustar00rootroot00000000000000/* $Id: smart.css 661 2012-08-27 11:26:39Z namiltd $ */ #Plugin_SMARTTable tbody tr td { text-align: right; } phpsysinfo-3.2.5/plugins/smart/js/000077500000000000000000000000001265516077000171575ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/smart/js/smart.js000066400000000000000000000126221265516077000206460ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script * * http://phpsysinfo.sourceforge.net/ * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ //$Id: smart.js 707 2012-11-28 10:20:49Z namiltd $ /*global $, jQuery, genlang, formatTemp, plugin_translate, buildBlock, datetime */ "use strict"; var smart_show = false, smart_table; //appendcss("./plugins/SMART/css/SMART.css"); /** * fill the plugin block with table structure */ function smart_buildTable(xml) { var html = ""; html += "\n"; html += " \n"; html += " \n"; html += " \n"; $("Plugins Plugin_SMART columns column", xml).each(function smart_table_header() { html += " \n"; }); html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += "
    " + genlang(3, false, "SMART") + "" + genlang(100 + parseInt($(this).attr("id"), 10), false, "SMART") + "
    \n"; $("#Plugin_SMART").append(html); smart_table = $("#Plugin_SMARTTable").dataTable({ "bPaginate": false, "bLengthChange": false, "bFilter": false, "bSort": true, "bInfo": false, "bProcessing": true, "bAutoWidth": false, "bStateSave": true }); } /** * insert content into table * @param {jQuery} xml plugin-XML */ function smart_populate(xml) { var name = "", columns = []; smart_table.fnClearTable(); // Get datas that the user want to be displayed $("Plugins Plugin_SMART columns column", xml).each(function smart_find_columns() { columns[parseInt($(this).attr("id"), 10)] = $(this).attr("name"); }); // Now we add selected datas in the table $("Plugins Plugin_SMART disks disk", xml).each(function smart_fill_table() { var values = [], display = [], i; name = $(this).attr("name"); $(this).find("attribute").each(function smart_fill_data() { if (columns[parseInt($(this).attr("id"), 10)] && columns[parseInt($(this).attr("id"), 10)] !== "") { values[parseInt($(this).attr("id"), 10)] = $(this).attr(columns[parseInt($(this).attr("id"), 10)]); } }); display.push("" + name + "" + name); // On "columns" so we get the right order // fixed for Firefox (fix wrong order) $("Plugins Plugin_SMART columns column", xml).each(function smart_find_columns() { i = parseInt($(this).attr("id"), 10); if (typeof(values[i])==='undefined') { display.push(""); } else if (i === 194) { display.push("" + values[i] + "" + formatTemp(values[i], xml)); } else { display.push("" + values[i] + "" + values[i]); } // } }); smart_table.fnAddData(display); }); smart_show = true; } /** * load the xml via ajax */ function smart_request() { $("#Reload_SMARTTable").attr("title", "reload"); $.ajax({ url: "xml.php?plugin=SMART", dataType: "xml", error: function smart_error() { $.jGrowl("Error loading XML document for Plugin SMART"); }, success: function smart_buildBlock(xml) { populateErrors(xml); if ((smart_table === undefined) || (typeof(smart_table) !== "object")) { smart_buildTable(xml); } smart_populate(xml); if (smart_show) { plugin_translate("SMART"); $("#Plugin_SMART").show(); } } }); } $(document).ready(function smart_buildpage() { var html = ""; $("#footer").before(buildBlock("SMART", 1, true)); $("#Plugin_SMART").css("width", "915px"); smart_request(); $("#Reload_SMARTTable").click(function smart_reload(id) { smart_request(); $(this).attr("title", datetime()); }); }); phpsysinfo-3.2.5/plugins/smart/js/smart_bootstrap.js000066400000000000000000000103271265516077000227430ustar00rootroot00000000000000function renderPlugin_smart(data) { if ((data['Plugins']['Plugin_SMART'] !== undefined) && (data['Plugins']['Plugin_SMART']["columns"] !== undefined) && (items(data['Plugins']['Plugin_SMART']["columns"]["column"]).length > 0) && (data['Plugins']['Plugin_SMART']["disks"] !== undefined) && (items(data['Plugins']['Plugin_SMART']["disks"]["disk"]).length > 0)) { var smartitems = items(data['Plugins']['Plugin_SMART']["columns"]["column"]); var smartnames = { 1:"plugin_smart_101", // "Raw Read Error Rate", 2:"plugin_smart_102", // "Throughput Performance", 3:"plugin_smart_103", // "Spin Up Time", 4:"plugin_smart_104", // "Start Stop Count", 5:"plugin_smart_105", // "Reallocated Sector Ct", 7:"plugin_smart_106", // "Seek Error Rate", 8:"plugin_smart_108", // "Seek Time Performance", 9:"plugin_smart_109", // "Power On Hours", 10:"plugin_smart_110", // "Spin Retry Count", 11:"plugin_smart_111", // "Calibration Retry Count", 12:"plugin_smart_112", // "Power Cycle Count", 190:"plugin_smart_290", // "Airflow Temperature", 191:"plugin_smart_291", // "G-sense Error Rate", 192:"plugin_smart_292", // "Power-Off Retract Count", 193:"plugin_smart_293", // "Load Cycle Count", 194:"plugin_smart_294", // "Temperature", 195:"plugin_smart_295", // "Hardware ECC Recovered", 196:"plugin_smart_296", // "Reallocated Event Count", 197:"plugin_smart_297", // "Current Pending Sector", 198:"plugin_smart_298", // "Offline Uncorr.", 199:"plugin_smart_299", // "UDMA CRC Error Count", 200:"plugin_smart_300", // "Multi Zone Error Rate", 201:"plugin_smart_301", // "Soft Read Error Rate", 202:"plugin_smart_302", // "Data Address Mark Errors", 223:"plugin_smart_323", // "Load Retry Count", 225:"plugin_smart_325", }; // "Load Cycle Count" var html = ''; html+=""; html+=""; html+=""+genlang(3, false, 'smart')+""; // Name for (var i = 0; i < smartitems.length ; i++) { smartid = smartitems[i]["@attributes"]["id"]; if (smartnames[smartid] !== undefined) { html+=""+ genlang(100+parseInt(smartid), false, 'smart') + ""; } else { html+=""+ smartid + ""; } } html+=""; html+=""; var diskitems = items(data['Plugins']['Plugin_SMART']["disks"]["disk"]); html += ''; for (var i = 0; i < diskitems.length; i++) { html += ''; html += ''+ diskitems[i]["@attributes"]["name"] + ''; attribitems = items(diskitems[i]["attribute"]); var valarray = []; for (var j = 0;j < attribitems.length; j++) { valarray[attribitems[j]["@attributes"]["id"]] = attribitems[j]["@attributes"]["raw_value"]; } for (var j = 0; j < smartitems.length; j++) { var smartid = smartitems[j]["@attributes"]["id"]; var itemvalue = valarray[smartid]; if ((itemvalue !== undefined) && (itemvalue !== '' )) { if (smartid === "194") { html += '' + formatTemp(itemvalue, data["Options"]["@attributes"]["tempFormat"]) + ''; } else { html += '' + itemvalue + ''; } } else { html += ''; } } html += ''; } html += ''; $('#smart').empty().append(html); $('#smart').addClass("sortable"); sorttable.makeSortable($('#smart')[0]); sorttable.innerSortFunction.apply($('#smart_name')[0], []); $('#block_smart').show(); } else { $('#block_smart').hide(); } } phpsysinfo-3.2.5/plugins/smart/lang/000077500000000000000000000000001265516077000174645ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/smart/lang/cz.xml000066400000000000000000000075451265516077000206350ustar00rootroot00000000000000 S.M.A.R.T Informace Aktualizováno Název Raw Read Error Rate Throughput Performance Spin Up Time Start Stop Count Reallocated Sector Ct Seek Error Rate Seek Time Performance Power On Hours Spin Retry Count Calibration Retry Count Power Cycle Count Airflow Temperature G-sense Error Rate Power-Off Retract Count Load Cycle Count Temperature Hardware ECC Recovered Reallocated Event Count Current Pending Sector Offline Uncorr. UDMA CRC Error Count Multi Zone Error Rate Soft Read Error Rate Data Address Mark Errors Load Retry Count Load Cycle Count phpsysinfo-3.2.5/plugins/smart/lang/en.xml000066400000000000000000000075441265516077000206220ustar00rootroot00000000000000 S.M.A.R.T Informations Last refresh Name Raw Read Error Rate Throughput Performance Spin Up Time Start Stop Count Reallocated Sector Ct Seek Error Rate Seek Time Performance Power On Hours Spin Retry Count Calibration Retry Count Power Cycle Count Airflow Temperature G-sense Error Rate Power-Off Retract Count Load Cycle Count Temperature Hardware ECC Recovered Reallocated Event Count Current Pending Sector Offline Uncorr. UDMA CRC Error Count Multi Zone Error Rate Soft Read Error Rate Data Address Mark Errors Load Retry Count Load Cycle Count phpsysinfo-3.2.5/plugins/smart/lang/fr.xml000066400000000000000000000075551265516077000206310ustar00rootroot00000000000000 Informations S.M.A.R.T Dernière actualisation: Nom Raw Read Error Rate Throughput Performance Spin Up Time Start Stop Count Reallocated Sector Ct Seek Error Rate Seek Time Performance Power On Hours Spin Retry Count Calibration Retry Count Power Cycle Count Airflow Temperature G-sense Error Rate Power-Off Retract Count Load Cycle Count Temperature Hardware ECC Recovered Reallocated Event Count Current Pending Sector Offline Uncorr. UDMA CRC Error Count Multi Zone Error Rate Soft Read Error Rate Data Address Mark Errors Load Retry Count Load Cycle Count phpsysinfo-3.2.5/plugins/smart/lang/gr.xml000066400000000000000000000076541265516077000206320ustar00rootroot00000000000000 Πληροφορίες S.M.A.R.T Ενημέρωση Συσκευή Raw Read Error Rate Throughput Performance Spin Up Time Start Stop Count Ανακτημένοι Τομείς Seek Error Rate Seek Time Performance Ώρες λειτουργίας Spin Retry Count Calibration Retry Count Power Cycle Count Θερμοκρασία Αέρος G-sense Error Rate Power-Off Retract Count Load Cycle Count Θερμοκρασία Hardware ECC Recovered Reallocated Event Count Current Pending Sector Offline Uncorr. UDMA CRC Error Count Multi Zone Error Rate Soft Read Error Rate Data Address Mark Errors Load Retry Count Load Cycle Count phpsysinfo-3.2.5/plugins/smart/lang/pl.xml000066400000000000000000000075571265516077000206370ustar00rootroot00000000000000 Informacje S.M.A.R.T Ostatnie odświeżenie Nazwa Raw Read Error Rate Throughput Performance Spin Up Time Start Stop Count Reallocated Sector Ct Seek Error Rate Seek Time Performance Power On Hours Spin Retry Count Calibration Retry Count Power Cycle Count Airflow Temperature G-sense Error Rate Power-Off Retract Count Load Cycle Count Temperature Hardware ECC Recovered Reallocated Event Count Current Pending Sector Offline Uncorr. UDMA CRC Error Count Multi Zone Error Rate Soft Read Error Rate Data Address Mark Errors Load Retry Count Load Cycle Count phpsysinfo-3.2.5/plugins/smart/lang/ro.xml000066400000000000000000000075431265516077000206370ustar00rootroot00000000000000 Informații S.M.A.R.T Ultimul refresh Nume Raw Read Error Rate Throughput Performance Spin Up Time Start Stop Count Reallocated Sector Ct Seek Error Rate Seek Time Performance Power On Hours Spin Retry Count Calibration Retry Count Power Cycle Count Airflow Temperature G-sense Error Rate Power-Off Retract Count Load Cycle Count Temperature Hardware ECC Recovered Reallocated Event Count Current Pending Sector Offline Uncorr. UDMA CRC Error Count Multi Zone Error Rate Soft Read Error Rate Data Address Mark Errors Load Retry Count Load Cycle Count phpsysinfo-3.2.5/plugins/smart/lang/ru.xml000066400000000000000000000035401265516077000206360ustar00rootroot00000000000000 Состояние Квоты Последнее обновление Пользователь Байт Используется Байт Программ Байтов Жесткий диск Байт Используется Проценты Файлы Используемые Файлы Программ Файлы Жесткий диск Файлов Используется Проценты phpsysinfo-3.2.5/plugins/smart/smart_bootstrap.html000066400000000000000000000006761265516077000226650ustar00rootroot00000000000000 phpsysinfo-3.2.5/plugins/snmppinfo/000077500000000000000000000000001265516077000174265ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/snmppinfo/class.snmppinfo.inc.php000066400000000000000000000270351265516077000240330ustar00rootroot00000000000000 * @copyright 2011 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.snmppinfo.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * SNMPPInfo Plugin, which displays battery state * * @category PHP * @package PSI_Plugin_SNMPPInfo * @author Mieczyslaw Nalewaj * @copyright 2011 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version $Id: class.snmppinfo.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ class SNMPPInfo extends PSI_Plugin { /** * variable, which holds the content of the command * @var array */ private $_filecontent = array(); /** * variable, which holds the result before the xml is generated out of this array * @var array */ private $_result = array(); /** * read the data into an internal array and also call the parent constructor * * @param String $enc encoding */ public function __construct($enc) { parent::__construct(__CLASS__, $enc); switch (strtolower(PSI_PLUGIN_SNMPPINFO_ACCESS)) { case 'command': if (defined('PSI_PLUGIN_SNMPPINFO_DEVICES') && is_string(PSI_PLUGIN_SNMPPINFO_DEVICES)) { if (preg_match(ARRAY_EXP, PSI_PLUGIN_SNMPPINFO_DEVICES)) { $printers = eval(PSI_PLUGIN_SNMPPINFO_DEVICES); } else { $printers = array(PSI_PLUGIN_SNMPPINFO_DEVICES); } foreach ($printers as $printer) { CommonFunctions::executeProgram("snmpwalk", "-Ona -c public -v 1 -r 1 ".$printer." .1.3.6.1.2.1.1.5", $buffer, PSI_DEBUG); if (strlen($buffer) > 0) { $this->_filecontent[$printer] = $buffer; CommonFunctions::executeProgram("snmpwalk", "-Ona -c public -v 1 -r 1 ".$printer." .1.3.6.1.2.1.43.11.1.1", $buffer2, PSI_DEBUG); if (strlen($buffer2) > 0) { $this->_filecontent[$printer] .= "\n".$buffer2; } CommonFunctions::executeProgram("snmpwalk", "-Ona -c public -v 1 -r 1 ".$printer." .1.3.6.1.2.1.43.18.1.1", $buffer3, PSI_DEBUG); if (strlen($buffer3) > 0) { $this->_filecontent[$printer] .= "\n".$buffer3; } } } } break; case 'php-snmp': if (!extension_loaded("snmp")) { $this->global_error->addError("Requirements error", "SNMPPInfo plugin requires the snmp extension to php in order to work properly"); break; } snmp_set_valueretrieval(SNMP_VALUE_LIBRARY); snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC); if (defined('PSI_PLUGIN_SNMPPINFO_DEVICES') && is_string(PSI_PLUGIN_SNMPPINFO_DEVICES)) { if (preg_match(ARRAY_EXP, PSI_PLUGIN_SNMPPINFO_DEVICES)) { $printers = eval(PSI_PLUGIN_SNMPPINFO_DEVICES); } else { $printers = array(PSI_PLUGIN_SNMPPINFO_DEVICES); } foreach ($printers as $printer) { if (! PSI_DEBUG) { restore_error_handler(); /* default error handler */ $old_err_rep = error_reporting(); error_reporting(E_ERROR); /* fatal errors only */ } $bufferarr=snmprealwalk($printer, "public", ".1.3.6.1.2.1.1.5", 1000000, 1); if (! PSI_DEBUG) { error_reporting($old_err_rep); /* restore error level */ set_error_handler('errorHandlerPsi'); /* restore error handler */ } if (! empty($bufferarr)) { $buffer=""; foreach ($bufferarr as $id=>$string) { $buffer .= $id." = ".$string."\n"; } if (! PSI_DEBUG) { restore_error_handler(); /* default error handler */ $old_err_rep = error_reporting(); error_reporting(E_ERROR); /* fatal errors only */ } $bufferarr2=snmprealwalk($printer, "public", ".1.3.6.1.2.1.43.11.1.1", 1000000, 1); if (! PSI_DEBUG) { error_reporting($old_err_rep); /* restore error level */ set_error_handler('errorHandlerPsi'); /* restore error handler */ } if (! empty($bufferarr2)) { foreach ($bufferarr2 as $id=>$string) { $buffer .= $id." = ".$string."\n"; } } if (! PSI_DEBUG) { restore_error_handler(); /* default error handler */ $old_err_rep = error_reporting(); error_reporting(E_ERROR); /* fatal errors only */ } $bufferarr3=snmprealwalk($printer, "public", ".1.3.6.1.2.1.43.18.1.1", 1000000, 1); if (! PSI_DEBUG) { error_reporting($old_err_rep); /* restore error level */ set_error_handler('errorHandlerPsi'); /* restore error handler */ } if (! empty($bufferarr3)) { foreach ($bufferarr3 as $id=>$string) { $buffer .= $id." = ".$string."\n"; } } if (strlen(trim($buffer)) > 0) { $this->_filecontent[$printer] = $buffer; } } } } break; case 'data': if (defined('PSI_PLUGIN_SNMPPINFO_DEVICES') && is_string(PSI_PLUGIN_SNMPPINFO_DEVICES)) { if (preg_match(ARRAY_EXP, PSI_PLUGIN_SNMPPINFO_DEVICES)) { $printers = eval(PSI_PLUGIN_SNMPPINFO_DEVICES); } else { $printers = array(PSI_PLUGIN_SNMPPINFO_DEVICES); } $pn=0; foreach ($printers as $printer) { $buffer=""; if (CommonFunctions::rfts(APP_ROOT."/data/snmppinfo{$pn}.txt", $buffer) && !empty($buffer)) { $this->_filecontent[$printer] = $buffer; } $pn++; } } break; default: $this->global_error->addError("switch(PSI_PLUGIN_SNMPPINFO_ACCESS)", "Bad SNMPPInfo configuration in phpsysinfo.ini"); break; } } /** * doing all tasks to get the required informations that the plugin needs * result is stored in an internal array * * @return void */ public function execute() { if (empty($this->_filecontent)) { return; } foreach ($this->_filecontent as $printer=>$result) { $lines = preg_split('/\r?\n/', $result); foreach ($lines as $line) { if (preg_match('/^\.1\.3\.6\.1\.2\.1\.43\.11\.1\.1\.6\.1\.(.*) = STRING:\s(.*)/', $line, $data)) { $this->_result[$printer][$data[1]]['prtMarkerSuppliesDescription']=trim($data[2], "\""); } elseif (preg_match('/^\.1\.3\.6\.1\.2\.1\.43\.11\.1\.1\.7\.1\.(.*) = INTEGER:\s(.*)/', $line, $data)) { $this->_result[$printer][$data[1]]['prtMarkerSuppliesSupplyUnit']=$data[2]; } elseif (preg_match('/^\.1\.3\.6\.1\.2\.1\.43\.11\.1\.1\.8\.1\.(.*) = INTEGER:\s(.*)/', $line, $data)) { $this->_result[$printer][$data[1]]['prtMarkerSuppliesMaxCapacity']=$data[2]; } elseif (preg_match('/^\.1\.3\.6\.1\.2\.1\.43\.11\.1\.1\.9\.1\.(.*) = INTEGER:\s(.*)/', $line, $data)) { $this->_result[$printer][$data[1]]['prtMarkerSuppliesLevel']=$data[2]; } elseif (preg_match('/^\.1\.3\.6\.1\.2\.1\.1\.5\.0 = STRING:\s(.*)/', $line, $data)) { $this->_result[$printer][0]['prtMarkerSuppliesDescription']=trim($data[1], "\"");; } elseif (preg_match('/^\.1\.3\.6\.1\.2\.1\.43\.18\.1\.1\.8\.1\.(.*) = STRING:\s(.*)/', $line, $data)) { $this->_result[$printer][99][$data[1]]["message"]=trim($data[2], "\""); } elseif (preg_match('/^\.1\.3\.6\.1\.2\.1\.43\.18\.1\.1\.2\.1\.(.*) = INTEGER:\s(.*)/', $line, $data)) { $this->_result[$printer][99][$data[1]]["severity"]=$data[2]; } } } } /** * generates the XML content for the plugin * * @return SimpleXMLElement entire XML content for the plugin */ public function xml() { foreach ($this->_result as $printer=>$markersupplies_item) { $xmlsnmppinfo_printer = $this->xml->addChild("Printer"); $xmlsnmppinfo_printer->addAttribute("Device", $printer); foreach ($markersupplies_item as $marker=>$snmppinfo_item) { if ($marker==0) { $xmlsnmppinfo_printer->addAttribute("Name", $snmppinfo_item['prtMarkerSuppliesDescription']); } elseif ($marker==99) { foreach ($snmppinfo_item as $item=>$iarr) { if (isset($iarr["message"]) && $iarr["message"] != "") { $xmlsnmppinfo_errors = $xmlsnmppinfo_printer->addChild("PrinterMessage"); $xmlsnmppinfo_errors->addAttribute("Message", $iarr["message"]); $xmlsnmppinfo_errors->addAttribute("Severity", $iarr["severity"]); } } } else { $xmlsnmppinfo = $xmlsnmppinfo_printer->addChild("MarkerSupplies"); $xmlsnmppinfo->addAttribute("Description", isset($snmppinfo_item['prtMarkerSuppliesDescription']) ? $snmppinfo_item['prtMarkerSuppliesDescription'] : ""); $xmlsnmppinfo->addAttribute("SupplyUnit", isset($snmppinfo_item['prtMarkerSuppliesSupplyUnit']) ? $snmppinfo_item['prtMarkerSuppliesSupplyUnit'] : ""); $xmlsnmppinfo->addAttribute("MaxCapacity", isset($snmppinfo_item['prtMarkerSuppliesMaxCapacity']) ? $snmppinfo_item['prtMarkerSuppliesMaxCapacity'] : ""); $xmlsnmppinfo->addAttribute("Level", isset($snmppinfo_item['prtMarkerSuppliesLevel']) ? $snmppinfo_item['prtMarkerSuppliesLevel'] : ""); } } } return $this->xml->getSimpleXmlElement(); } } phpsysinfo-3.2.5/plugins/snmppinfo/js/000077500000000000000000000000001265516077000200425ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/snmppinfo/js/snmppinfo.js000066400000000000000000000126361265516077000224210ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script * * http://phpsysinfo.sourceforge.net/ * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ // // $Id: snmppinfo.js 661 2012-08-27 11:26:39Z namiltd $ // /*global $, jQuery, buildBlock, datetime, plugin_translate, createBar, genlang */ "use strict"; var snmppinfo_show = false; /** * build the table where content is inserted * @param {jQuery} xml plugin-XML */ function snmppinfo_buildTable(xml) { var html = "", tree = [], closed = []; $("#Plugin_SNMPPInfo #Plugin_SNMPPInfoTable").remove(); html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; var lastdev="", index = 0 ; $("Plugins Plugin_SNMPPInfo Printer MarkerSupplies", xml).each(function snmppinfo_getprinters(id) { var close = 0, name = "", device = "", desc = "", unit = 0, max = 0, level = 0, percent = 0, units = ""; name = $(this).parent().attr("Name"); device = $(this).parent().attr("Device"); desc = $(this).attr("Description"); unit = parseInt($(this).attr("SupplyUnit"), 10); max = parseInt($(this).attr("MaxCapacity"), 10); level = parseInt($(this).attr("Level"), 10); if (max>0 && (level>=0) && (level<=max) ) { percent = Math.round(100*level/max); units = level+" / "+max; } else if (max==-2 && (level>=0) && (level<=100) ) { percent = level; units = level+" / 100"; } else if (level==-3) { percent = 100; units = genlang(6, false, "SNMPPInfo") } else { percent = 0; units = genlang(7, false, "SNMPPInfo") } if (device!=lastdev) { html += " \n"; index = tree.push(0); lastdev = device; } html += " \n"; tree.push(index); snmppinfo_show = true; }); html += " \n"; html += "
    " + genlang(3, false, "SNMPPInfo") + "" + genlang(4, false, "SNMPPInfo") + "" + genlang(5, false, "SNMPPInfo") + "
    " + device + " (" + name + ")
    " + desc + "" + createBar(percent) +"" + units +"
    \n"; $("#Plugin_SNMPPInfo").append(html); $("#Plugin_SNMPPInfoTable").jqTreeTable(tree, { openImg: "./gfx/treeTable/tv-collapsable.gif", shutImg: "./gfx/treeTable/tv-expandable.gif", leafImg: "./gfx/treeTable/tv-item.gif", lastOpenImg: "./gfx/treeTable/tv-collapsable-last.gif", lastShutImg: "./gfx/treeTable/tv-expandable-last.gif", lastLeafImg: "./gfx/treeTable/tv-item-last.gif", vertLineImg: "./gfx/treeTable/vertline.gif", blankImg: "./gfx/treeTable/blank.gif", collapse: closed, column: 0, striped: true, highlight: false, state: false }); } /** * load the xml via ajax */ function snmppinfo_request() { $("#Reload_SNMPPInfoTable").attr("title", "reload"); $.ajax({ url: "xml.php?plugin=SNMPPInfo", dataType: "xml", error: function snmppinfo_error() { $.jGrowl("Error loading XML document for Plugin SNMPPInfo!"); }, success: function snmppinfo_buildblock(xml) { populateErrors(xml); snmppinfo_buildTable(xml); if (snmppinfo_show) { plugin_translate("SNMPPInfo"); $("#Plugin_SNMPPInfo").show(); } } }); } $(document).ready(function snmppinfo_buildpage() { $("#footer").before(buildBlock("SNMPPInfo", 1, true)); $("#Plugin_SNMPPInfo").css("width", "451px"); snmppinfo_request(); $("#Reload_SNMPPInfoTable").click(function snmppinfo_reload(id) { snmppinfo_request(); $(this).attr("title", datetime()); }); }); phpsysinfo-3.2.5/plugins/snmppinfo/js/snmppinfo_bootstrap.js000066400000000000000000000076121265516077000245140ustar00rootroot00000000000000function renderPlugin_snmppinfo(data) { var directives = { Device: { text: function () { var Name = (this["Name"] !== undefined) ? (' (' + this["Name"] + ')'): ''; return this["Device"] + Name; } }, Percent: { html: function () { var max = parseInt(this["MaxCapacity"]); var level = parseInt(this["Level"]); var percent = 0; if (max>0 && (level>=0) && (level<=max) ) { percent = Math.round(100*level/max); } else if (max==-2 && (level>=0) && (level<=100) ) { percent = level; } else if (level==-3) { percent = 100; } return '
    ' + '
    ' + percent + '%
    '; } }, Units: { html: function () { var max = parseInt(this["MaxCapacity"]); var level = parseInt(this["Level"]); if (max>0 && (level>=0) && (level<=max) ) { return level+" / "+max; } else if (max==-2 && (level>=0) && (level<=100) ) { return level+" / 100"; } else if (level==-3) { return genlang(6, false, 'snmppinfo'); // enough } else { return getlang(7, false, 'snmppinfo'); // unknown } } } }; if (data['Plugins']['Plugin_SNMPPInfo'] !== undefined) { var printers = items(data['Plugins']['Plugin_SNMPPInfo']['Printer']); if (printers.length > 0) { var html = ""; for (var i = 0; i < printers.length; i++) { html+=""; html+=""; html+=""; html+=""; html+=""; try { var datas = items(printers[i]["MarkerSupplies"]); for (var j = 0; j < datas.length; j++) { html+=""; html+=""; html+=""; html+=""; html+=""; } } catch (err) { $("#snmppinfo-" + i).hide(); } } $("#snmppinfo-data").empty().append(html); for (var i = 0; i < printers.length; i++) { $('#snmppinfo-'+ i).render(printers[i]["@attributes"], directives); try { var datas = items(printers[i]["MarkerSupplies"]); for (var j = 0; j < datas.length; j++) { $('#snmppinfo-'+ i+ "-" + j).render(datas[j]["@attributes"], directives); } } catch (err) { $("#snmppinfo-" + i).hide(); } } $('#snmppinfo').treegrid({ initialState: 'expanded', expanderExpandedClass: 'normalicon normalicon-down', expanderCollapsedClass: 'normalicon normalicon-right' }); $('#block_snmppinfo').show(); } else { $('#block_snmppinfo').hide(); } } else { $('#block_snmppinfo').hide(); } } phpsysinfo-3.2.5/plugins/snmppinfo/lang/000077500000000000000000000000001265516077000203475ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/snmppinfo/lang/cz.xml000066400000000000000000000023671265516077000215150ustar00rootroot00000000000000 Informace o tiskárnách Poslední aktualizace Tiskárna Procenta Jednotky dostatek neznámé phpsysinfo-3.2.5/plugins/snmppinfo/lang/de.xml000066400000000000000000000023631265516077000214650ustar00rootroot00000000000000 Drucker Information Letzte Aktualisierung Drucker Prozent Units genug unbekannt phpsysinfo-3.2.5/plugins/snmppinfo/lang/en.xml000066400000000000000000000023431265516077000214750ustar00rootroot00000000000000 Printer Information Last refresh Printer Percent Units enough unknown phpsysinfo-3.2.5/plugins/snmppinfo/lang/fr.xml000066400000000000000000000022551265516077000215040ustar00rootroot00000000000000 Imprimantes Dernière actualisation Imprimante Pourcent Unité suffisamment inconnu phpsysinfo-3.2.5/plugins/snmppinfo/lang/pl.xml000066400000000000000000000023461265516077000215110ustar00rootroot00000000000000 Drukarki Ostatnie odświeżenie Drukarka Procent Jednostek dość nieznany phpsysinfo-3.2.5/plugins/snmppinfo/lang/ro.xml000066400000000000000000000023611265516077000215130ustar00rootroot00000000000000 Informații Imprimantă Ultimul refresh Imprimantă Procent Unități suficient necunoscut phpsysinfo-3.2.5/plugins/snmppinfo/lang/ru.xml000066400000000000000000000025201265516077000215160ustar00rootroot00000000000000 Информация о принтерах Последнее обновление Принтер Процент Еденицы достаточно неизвестный phpsysinfo-3.2.5/plugins/snmppinfo/snmppinfo_bootstrap.html000066400000000000000000000016021265516077000244210ustar00rootroot00000000000000 phpsysinfo-3.2.5/plugins/updatenotifier/000077500000000000000000000000001265516077000204375ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/updatenotifier/class.updatenotifier.inc.php000066400000000000000000000065711265516077000260570ustar00rootroot00000000000000 * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.updatenotifier.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ /** * UpdateNotifier Plugin, which displays update notification from Ubuntu Landscape system * * @category PHP * @package PSI_Plugin_UpdateNotifier * @author Damien ROTH * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version $Id: class.updatenotifier.inc.php 661 2012-08-27 11:26:39Z namiltd $ * @link http://phpsysinfo.sourceforge.net */ class UpdateNotifier extends PSI_Plugin { /** * variable, which holds the content of the command * @var array */ private $_filecontent = array(); /** * variable, which holds the result before the xml is generated out of this array * @var array */ private $_result = array(); /** * read the data into an internal array and also call the parent constructor * * @param String $enc encoding */ public function __construct($enc) { parent::__construct(__CLASS__, $enc); CommonFunctions::rfts(PSI_PLUGIN_UPDATENOTIFIER_FILE, $buffer_info); // Remove blank lines $this->_filecontent = preg_split("/\n/", $buffer_info, -1, PREG_SPLIT_NO_EMPTY); } /** * doing all tasks to get the required informations that the plugin needs * result is stored in an internal array * * @return void */ public function execute() { if (empty($this->_filecontent)) { return; } if (PSI_PLUGIN_UPDATENOTIFIER_UBUNTU_LANDSCAPE_FORMAT === true) { /* Ubuntu Landscape format: - line 1: packages to update - line 2: security packages to update */ if (count($this->_filecontent) == 2) { foreach ($this->_filecontent as $line) { list($num, $text) = explode(" ", $line, 2); $this->_result[] = $num; } } else { $this->global_error->addWarning("Unable to parse UpdateNotifier file"); } } else { /* Universal format: A;B - A: packages to update - B: security packages to update */ if (count($this->_filecontent) == 1 && strpos($this->_filecontent[0], ";") !== false) { $this->_result = explode(";", $this->_filecontent[0]); } else { $this->global_error->addWarning("Unable to parse UpdateNotifier file"); } } } /** * generates the XML content for the plugin * * @return SimpleXMLElement entire XML content for the plugin */ public function xml() { if (!empty($this->_result)) { $xmluu = $this->xml->addChild("UpdateNotifier"); $xmluu->addChild("packages", $this->_result[0]); $xmluu->addChild("security", $this->_result[1]); } return $this->xml->getSimpleXmlElement(); } } phpsysinfo-3.2.5/plugins/updatenotifier/js/000077500000000000000000000000001265516077000210535ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/updatenotifier/js/updatenotifier.js000066400000000000000000000103411265516077000244320ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script * * http://phpsysinfo.sourceforge.net/ * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ /*global $, jQuery, buildBlock, datetime, plugin_translate, genlang, createBar */ "use strict"; var UpdateNotifier_show = false, UpdateNotifier_table; /** * insert content into table * @param {jQuery} xml plugin-XML */ function updatenotifier_populate(xml) { var html = ""; $("Plugins Plugin_UpdateNotifier UpdateNotifier", xml).each(function(idp) { var packages = "", security = ""; packages = $("packages", this).text(); security = $("security", this).text(); //UpdateNotifier_table.fnAddData([packages]); //UpdateNotifier_table.fnAddData([security]); html = " \n"; html += " " + packages + " " + genlang(3, false, "UpdateNotifier") + "\n"; html += " \n"; html += " \n"; html += " " + security + " " + genlang(4, false, "UpdateNotifier") + "\n"; html += " \n"; $("#Plugin_UpdateNotifier tbody").empty().append(html); if ((packages == 0) && (security == 0)) { $("#UpdateNotifierTable-info").html(genlang(5, false, "UpdateNotifier")); } else { $("#UpdateNotifierTable-info").html(genlang(2, false, "UpdateNotifier")); } UpdateNotifier_show = true; }); } /** * fill the plugin block with table structure */ function updatenotifier_buildTable() { var html = ""; html += "\n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += "
    " + genlang(2, false, "UpdateNotifier") + "
    \n"; $("#Plugin_UpdateNotifier").append(html); } /** * load the xml via ajax */ function updatenotifier_request() { $("#Reload_UpdateNotifierTable").attr("title", "reload"); $.ajax({ url: "xml.php?plugin=UpdateNotifier", dataType: "xml", error: function () { $.jGrowl("Error loading XML document for Plugin UpdateNotifier!"); }, success: function updatenotifier_buildblock(xml) { populateErrors(xml); updatenotifier_populate(xml); if (UpdateNotifier_show) { plugin_translate("UpdateNotifier"); $("#Plugin_UpdateNotifier").show(); } } }); } $(document).ready(function() { $("#footer").before(buildBlock("UpdateNotifier", 1, true)); $("#Plugin_UpdateNotifier").css("width", "451px"); updatenotifier_buildTable(); updatenotifier_request(); $("#Reload_UpdateNotifierTable").click(function updatenotifier_reload(id) { updatenotifier_request(); $(this).attr("title", datetime()); }); }); phpsysinfo-3.2.5/plugins/updatenotifier/js/updatenotifier_bootstrap.js000066400000000000000000000017601265516077000265340ustar00rootroot00000000000000function renderPlugin_updatenotifier(data) { var directives = { updateNotifierNbPackages: { text: function () { return this['packages']; } }, updateNotifierNbSecPackages: { text: function () { return this['security']; } } }; if ((data['Plugins']['Plugin_UpdateNotifier'] !== undefined) && (data['Plugins']['Plugin_UpdateNotifier']["UpdateNotifier"] !== undefined)){ $('#updatenotifier').render(data['Plugins']['Plugin_UpdateNotifier']["UpdateNotifier"], directives); if ((data['Plugins']['Plugin_UpdateNotifier']["UpdateNotifier"]["packages"] == 0) && (data['Plugins']['Plugin_UpdateNotifier']["UpdateNotifier"]["security"] == 0) ) { $("#updatenotifier-info").html(""+genlang(5, false, 'updatenotifier')+""); } $('#block_updatenotifier').show(); } else { $('#block_updatenotifier').hide(); } } phpsysinfo-3.2.5/plugins/updatenotifier/lang/000077500000000000000000000000001265516077000213605ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/updatenotifier/lang/cz.xml000066400000000000000000000027071265516077000225240ustar00rootroot00000000000000 Notifikátor aktualizací Jsou dostupné aktualizace! balíčků je připraveno k aktualizaci. balíčků obsahuje bezpečnostní aktualizace. Žádné aktualizace jsou dostupné Number of packages Number of security packages phpsysinfo-3.2.5/plugins/updatenotifier/lang/de.xml000066400000000000000000000026331265516077000224760ustar00rootroot00000000000000 Updates Notifier Updates verfügbar Pakete können aktualisiert werden. Updates sind Sicherheits-Updates. Keine Updates verfügbar Anzahl Pakete Anzahl Sicherheitspakete phpsysinfo-3.2.5/plugins/updatenotifier/lang/en.xml000066400000000000000000000026001265516077000225020ustar00rootroot00000000000000 Updates Notifier Updates available packages can be updated. updates are security updates. No updates available Number of packages Number of security packages phpsysinfo-3.2.5/plugins/updatenotifier/lang/fr.xml000066400000000000000000000026461265516077000225210ustar00rootroot00000000000000 Updates Notifier Mises à jour disponibles paquets peuvent être mit à jour. mises à jour concernent la sécurité. Pas de mises à jour disponibles Number of packages Number of security packages phpsysinfo-3.2.5/plugins/updatenotifier/lang/pl.xml000066400000000000000000000026651265516077000225260ustar00rootroot00000000000000 Updates Notifier Aktualizacje dostępne pakietów do aktualizacji. to aktualizacje zabezpieczeń. Brak dostępnych aktualizacji Liczba pakietów aktualizacyjnych Liczba pakietów aktualizacji zabezpieczeń phpsysinfo-3.2.5/plugins/updatenotifier/lang/ro.xml000066400000000000000000000026261265516077000225300ustar00rootroot00000000000000 Updates Notifier Actualizări Disponibile Pachetele pot fi actualizate. Sunt actualizări de securitate. Nu actualizări disponibile Number of packages Number of security packages phpsysinfo-3.2.5/plugins/updatenotifier/lang/ru.xml000066400000000000000000000030121265516077000225240ustar00rootroot00000000000000 Оповещения об обновлениях Доступно обновление Пакеты могут быть обновлены. Обновления безопасности. Нет доступных обновлений Number of packages Number of security packages phpsysinfo-3.2.5/plugins/updatenotifier/updatenotifier_bootstrap.html000066400000000000000000000016641265516077000264530ustar00rootroot00000000000000 phpsysinfo-3.2.5/plugins/uprecords/000077500000000000000000000000001265516077000174235ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/uprecords/class.uprecords.inc.php000066400000000000000000000101451265516077000240170ustar00rootroot00000000000000 * @copyright 2014 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: class.uprecords.inc.php 661 2014-01-08 11:26:39Z aolah76 $ * @link http://phpsysinfo.sourceforge.net */ /** * Uprecords plugin, which displays all uprecords informations available * * @category PHP * @package PSI_Plugin_Uprecords * @author Ambrus Sandor Olah * @copyright 2014 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version Release: 1.0 * @link http://phpsysinfo.sourceforge.net */ class uprecords extends PSI_Plugin { private $_lines; public function __construct($enc) { parent::__construct(__CLASS__, $enc); $this->_lines = array(); } /** * get uprecords information * * @return array uprecords in array with label */ private function uprecords() { $result = array(); $i = 0; foreach ($this->_lines as $line) { if (($i > 1) and (strpos($line, '---') === false)) { $buffer = preg_split("/\s*[ |]\s+/", ltrim(ltrim($line, '->'), ' ')); if (strpos($line, '->') !== false) { $buffer[0] = '-> '.$buffer[0]; } if (count($buffer) > 4) { $buffer[3] = $buffer[3].' '.$buffer[4]; } $result[$i]['hash'] = $buffer[0]; $result[$i]['Uptime'] = $buffer[1]; $result[$i]['System'] = $buffer[2]; //Date formating $result[$i]['Bootup'] = preg_replace("/^(\S+)(\s+)/", "$1,$2", preg_replace("/^(\S+\s+\S+\s+)(\d)(\s+)/", "$1 0$2$3", $buffer[3]." GMT")); } $i++; } return $result; } public function execute() { $this->_lines = array(); switch (strtolower(PSI_PLUGIN_UPRECORDS_ACCESS)) { case 'command': $lines = ""; $oldtz=getenv("TZ"); putenv("TZ=GMT"); $options = ""; if (defined('PSI_PLUGIN_UPRECORDS_MAX_ENTRIES')) { if (PSI_PLUGIN_UPRECORDS_MAX_ENTRIES === false) { $options=" -m 0"; } elseif (PSI_PLUGIN_UPRECORDS_MAX_ENTRIES === true) { $options=" -m 1"; } elseif ((PSI_PLUGIN_UPRECORDS_MAX_ENTRIES > 1) && (PSI_PLUGIN_UPRECORDS_MAX_ENTRIES != 10)) { $options=" -m ".PSI_PLUGIN_UPRECORDS_MAX_ENTRIES; } } if (CommonFunctions::executeProgram('uprecords', '-a -w'.$options, $lines) && !empty($lines)) $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); putenv("TZ=".$oldtz); break; case 'data': if (CommonFunctions::rfts(APP_ROOT."/data/uprecords.txt", $lines) && !empty($lines)) $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; default: $this->error->addConfigError('__construct()', 'PSI_PLUGIN_UPRECORDS_ACCESS'); break; } } public function xml() { if (empty($this->_lines)) return $this->xml->getSimpleXmlElement(); $arrBuff = $this->uprecords(); if (sizeof($arrBuff) > 0) { $uprecords = $this->xml->addChild("Uprecords"); foreach ($arrBuff as $arrValue) { $item = $uprecords->addChild('Item'); $item->addAttribute('hash', $arrValue['hash']); $item->addAttribute('Uptime', $arrValue['Uptime']); $item->addAttribute('System', $arrValue['System']); $item->addAttribute('Bootup', $arrValue['Bootup']); } } return $this->xml->getSimpleXmlElement(); } } phpsysinfo-3.2.5/plugins/uprecords/js/000077500000000000000000000000001265516077000200375ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/uprecords/js/uprecords.js000066400000000000000000000107111265516077000224030ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script * * http://phpsysinfo.sourceforge.net/ * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ //$Id: uprecords.js 661 2014-01-08 11:26:39 aolah76 $ /*global $, jQuery, buildBlock, datetime, plugin_translate, genlang, createBar */ "use strict"; var uprecords_show = false; /** * insert content into table * @param {jQuery} xml plugin-XML */ function uprecords_populate(xml) { var html = ""; $("Plugins Plugin_uprecords uprecords Item", xml).each(function uprecords_getitem(idp) { html += " \n"; html += " " + $(this).attr("hash") + "\n"; html += " " + $(this).attr("Uptime") + "\n"; html += " " + $(this).attr("System") + "\n"; /* var lastboot = new Date($(this).attr("Bootup")); if (typeof(lastboot.toUTCString)==="function") { html += " " + lastboot.toUTCString() + "\n"; } else { //deprecated html += " " + lastboot.toGMTString() + "\n"; } */ html += " " + $(this).attr("Bootup") + "\n"; html += " \n"; uprecords_show = true; }); $("#Plugin_uprecordsTable-tbody").empty().append(html); $('#Plugin_uprecordsTable tr:nth-child(even)').addClass('even'); } function uprecords_buildTable() { var html = ""; html += "\n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += " \n"; html += "
    " + genlang(101, false, "uprecords") + "" + genlang(102, false, "uprecords") + "" + genlang(103, false, "uprecords") + "" + genlang(104, false, "uprecords") + "
    \n"; $("#Plugin_uprecords").append(html); } /** * load the xml via ajax */ function uprecords_request() { $("#Reload_uprecordsTable").attr("title", "reload"); $.ajax({ url: "xml.php?plugin=uprecords", dataType: "xml", error: function uprecords_error() { $.jGrowl("Error loading XML document for Plugin uprecords!"); }, success: function uprecords_buildblock(xml) { populateErrors(xml); uprecords_populate(xml); if (uprecords_show) { plugin_translate("uprecords"); $("#Plugin_uprecords").show(); } } }); } $(document).ready(function uprecords_buildpage() { $("#footer").before(buildBlock("uprecords", 1, true)); $("#Plugin_uprecords").css("width", "915px"); uprecords_buildTable(); uprecords_request(); $("#Reload_uprecordsTable").click(function uprecords_reload(id) { uprecords_request(); $(this).attr("title", datetime()); }); }); phpsysinfo-3.2.5/plugins/uprecords/js/uprecords_bootstrap.js000066400000000000000000000013471265516077000245050ustar00rootroot00000000000000function renderPlugin_uprecords(data) { var directives = { hash: { html: function () { return this["hash"]; } } }; if ((data['Plugins']['Plugin_uprecords'] !== undefined) && (data['Plugins']['Plugin_uprecords']['Uprecords'] !== undefined)) { var upitems = items(data['Plugins']['Plugin_uprecords']['Uprecords']['Item']); if (upitems.length > 0) { var up_memory = []; up_memory.push_attrs(upitems); $('#uprecords-data').render(up_memory, directives); $('#block_uprecords').show(); } else { $('#block_uprecords').hide(); } } else { $('#block_uprecords').hide(); } } phpsysinfo-3.2.5/plugins/uprecords/lang/000077500000000000000000000000001265516077000203445ustar00rootroot00000000000000phpsysinfo-3.2.5/plugins/uprecords/lang/en.xml000066400000000000000000000021501265516077000214660ustar00rootroot00000000000000 Uprecords Last refresh # Uptime System Boot up phpsysinfo-3.2.5/plugins/uprecords/lang/fr.xml000066400000000000000000000020641265516077000214770ustar00rootroot00000000000000 Uprecords Dernière actualisation # Uptime Système Démarrage phpsysinfo-3.2.5/plugins/uprecords/lang/hu.xml000066400000000000000000000022011265516077000214750ustar00rootroot00000000000000 Uprecords Last refresh # Uptime Rendszer Rendszerindítás időpontja phpsysinfo-3.2.5/plugins/uprecords/lang/pl.xml000066400000000000000000000021741265516077000215050ustar00rootroot00000000000000 Uprecords Last refresh # Czas pracy System Wystartował phpsysinfo-3.2.5/plugins/uprecords/lang/ro.xml000066400000000000000000000021441265516077000215070ustar00rootroot00000000000000 Uprecords Ultimul refresh # Uptime System Boot up phpsysinfo-3.2.5/plugins/uprecords/lang/ru.xml000066400000000000000000000022641265516077000215200ustar00rootroot00000000000000 Состояное системы Последние обновление # Аптайм Система Загружено phpsysinfo-3.2.5/plugins/uprecords/uprecords_bootstrap.html000066400000000000000000000023571265516077000244230ustar00rootroot00000000000000 phpsysinfo-3.2.5/read_config.php000066400000000000000000000304241265516077000167100ustar00rootroot00000000000000$group) { if (strtoupper($name)=="MAIN") { $name_prefix='PSI_'; } elseif (strtoupper(substr($name, 0, 7))=="SENSOR_") { $name_prefix='PSI_'.strtoupper($name).'_'; } else { $name_prefix='PSI_PLUGIN_'.strtoupper($name).'_'; } foreach ($group as $param=>$value) { if ((trim($value)==="") || (trim($value)==="0")) { define($name_prefix.strtoupper($param), false); } elseif (trim($value)==="1") { define($name_prefix.strtoupper($param), true); } else { if (strstr($value, ',')) { define($name_prefix.strtoupper($param), 'return '.var_export(preg_split('/\s*,\s*/', trim($value), -1, PREG_SPLIT_NO_EMPTY), 1).';'); } else { define($name_prefix.strtoupper($param), trim($value)); } } } } } if (defined('PSI_ALLOWED') && is_string(PSI_ALLOWED)) { if (preg_match(ARRAY_EXP, PSI_ALLOWED)) { $allowed = eval(strtolower(PSI_ALLOWED)); } else { $allowed = array(strtolower(PSI_ALLOWED)); } if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) { $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } else { if (isset($_SERVER["HTTP_CLIENT_IP"])) { $ip = $_SERVER["HTTP_CLIENT_IP"]; } else { $ip = $_SERVER["REMOTE_ADDR"]; } } $ip = preg_replace("/^::ffff:/", "", strtolower($ip)); if (!in_array($ip, $allowed, true)) { echo "Client IP address not allowed"; die(); } } /* default error handler */ if (function_exists('errorHandlerPsi')) { restore_error_handler(); } /* fatal errors only */ $old_err_rep = error_reporting(); error_reporting(E_ERROR); /* get git revision */ if (file_exists(APP_ROOT.'/.git/HEAD')) { $contents = @file_get_contents(APP_ROOT.'/.git/HEAD'); if ($contents && preg_match("/^ref:\s+(.*)\/([^\/\s]*)/m", $contents, $matches)) { $contents = @file_get_contents(APP_ROOT.'/.git/'.$matches[1]."/".$matches[2]); if ($contents && preg_match("/^([^\s]*)/m", $contents, $revision)) { define('PSI_VERSION_STRING', PSI_VERSION ."-".$matches[2]."-".substr($revision[1], 0, 7)); } else { define('PSI_VERSION_STRING', PSI_VERSION ."-".$matches[2]); } } } /* get svn revision */ if (!defined('PSI_VERSION_STRING') && file_exists(APP_ROOT.'/.svn/entries')) { $contents = @file_get_contents(APP_ROOT.'/.svn/entries'); if ($contents && preg_match("/dir\n(.+)/", $contents, $matches)) { define('PSI_VERSION_STRING', PSI_VERSION."-r".$matches[1]); } else { define('PSI_VERSION_STRING', PSI_VERSION); } } if (!defined('PSI_VERSION_STRING')) { define('PSI_VERSION_STRING', PSI_VERSION); } if (!defined('PSI_OS')) { //if not overloaded in phpsysinfo.ini /* get Linux code page */ if (PHP_OS == 'Linux') { if (file_exists('/etc/sysconfig/i18n')) { $contents = @file_get_contents('/etc/sysconfig/i18n'); } elseif (file_exists('/etc/default/locale')) { $contents = @file_get_contents('/etc/default/locale'); } elseif (file_exists('/etc/locale.conf')) { $contents = @file_get_contents('/etc/locale.conf'); } elseif (file_exists('/etc/sysconfig/language')) { $contents = @file_get_contents('/etc/sysconfig/language'); } elseif (file_exists('/etc/profile.d/lang.sh')) { $contents = @file_get_contents('/etc/profile.d/lang.sh'); } elseif (file_exists('/etc/profile')) { $contents = @file_get_contents('/etc/profile'); } else { $contents = false; if (file_exists('/system/build.prop')) { //Android define('PSI_OS', 'Android'); if (!defined('PSI_MODE_POPEN')) { //if not overloaded in phpsysinfo.ini if (!function_exists("proc_open")) { //proc_open function test by executing 'pwd' command define('PSI_MODE_POPEN', true); //use popen() function - no stderr error handling } else { $out = ''; $err = ''; $pipes = array(); $descriptorspec = array(0=>array("pipe", "r"), 1=>array("pipe", "w"), 2=>array("pipe", "w")); $process = proc_open("pwd 2>/dev/null ", $descriptorspec, $pipes); if (!is_resource($process)) { define('PSI_MODE_POPEN', true); } else { $w = null; $e = null; while (!(feof($pipes[1]) || feof($pipes[2]))) { $read = array($pipes[1], $pipes[2]); $n = stream_select($read, $w, $e, 5); if (($n === false) || ($n === 0)) { break; } foreach ($read as $r) { if ($r == $pipes[1]) { $out .= fread($r, 4096); } if ($r == $pipes[2]) { $err .= fread($r, 4096); } } } if (is_null($out) || (trim($out) == "") || (substr(trim($out), 0, 1) != "/")) { define('PSI_MODE_POPEN', true); } fclose($pipes[0]); fclose($pipes[1]); fclose($pipes[2]); // It is important that you close any pipes before calling // proc_close in order to avoid a deadlock proc_close($process); } } } } } if (!(defined('PSI_SYSTEM_CODEPAGE') && defined('PSI_SYSTEM_LANG')) //also if both not overloaded in phpsysinfo.ini && $contents && (preg_match('/^(LANG="?[^"\n]*"?)/m', $contents, $matches) || preg_match('/^RC_(LANG="?[^"\n]*"?)/m', $contents, $matches) || preg_match('/^\s*export (LANG="?[^"\n]*"?)/m', $contents, $matches))) { if (!defined('PSI_SYSTEM_CODEPAGE') && @exec($matches[1].' locale -k LC_CTYPE 2>/dev/null', $lines)) { //if not overloaded in phpsysinfo.ini foreach ($lines as $line) { if (preg_match('/^charmap="?([^"]*)/', $line, $matches2)) { define('PSI_SYSTEM_CODEPAGE', $matches2[1]); break; } } } if (!defined('PSI_SYSTEM_LANG') && @exec($matches[1].' locale 2>/dev/null', $lines)) { //also if not overloaded in phpsysinfo.ini foreach ($lines as $line) { if (preg_match('/^LC_MESSAGES="?([^\."@]*)/', $line, $matches2)) { $lang = ""; if (is_readable(APP_ROOT.'/data/languages.ini') && ($langdata = @parse_ini_file(APP_ROOT.'/data/languages.ini', true))) { if (isset($langdata['Linux']['_'.$matches2[1]])) { $lang = $langdata['Linux']['_'.$matches2[1]]; } } if ($lang == "") { $lang = 'Unknown'; } define('PSI_SYSTEM_LANG', $lang.' ('.$matches2[1].')'); break; } } } } } elseif (PHP_OS == 'Haiku') { if (!(defined('PSI_SYSTEM_CODEPAGE') && defined('PSI_SYSTEM_LANG')) //also if both not overloaded in phpsysinfo.ini && @exec('locale -m 2>/dev/null', $lines)) { foreach ($lines as $line) { if (preg_match('/^"?([^\."]*)\.?([^"]*)/', $line, $matches2)) { if (!defined('PSI_SYSTEM_CODEPAGE') && isset($matches2[2]) && !is_null($matches2[2]) && (trim($matches2[2]) != "")) { //also if not overloaded in phpsysinfo.ini define('PSI_SYSTEM_CODEPAGE', $matches2[2]); } if (!defined('PSI_SYSTEM_LANG')) { //if not overloaded in phpsysinfo.ini $lang = ""; if (is_readable(APP_ROOT.'/data/languages.ini') && ($langdata = @parse_ini_file(APP_ROOT.'/data/languages.ini', true))) { if (isset($langdata['Linux']['_'.$matches2[1]])) { $lang = $langdata['Linux']['_'.$matches2[1]]; } } if ($lang == "") { $lang = 'Unknown'; } define('PSI_SYSTEM_LANG', $lang.' ('.$matches2[1].')'); } break; } } } } elseif (PHP_OS == 'Darwin') { if (!defined('PSI_SYSTEM_LANG') //if not overloaded in phpsysinfo.ini && @exec('defaults read /Library/Preferences/.GlobalPreferences AppleLocale 2>/dev/null', $lines)) { $lang = ""; if (is_readable(APP_ROOT.'/data/languages.ini') && ($langdata = @parse_ini_file(APP_ROOT.'/data/languages.ini', true))) { if (isset($langdata['Linux']['_'.$lines[0]])) { $lang = $langdata['Linux']['_'.$lines[0]]; } } if ($lang == "") { $lang = 'Unknown'; } define('PSI_SYSTEM_LANG', $lang.' ('.$lines[0].')'); } } } if (!defined('PSI_OS')) { define('PSI_OS', PHP_OS); } if (!defined('PSI_SYSTEM_LANG')) { define('PSI_SYSTEM_LANG', null); } if (!defined('PSI_SYSTEM_CODEPAGE')) { //if not overloaded in phpsysinfo.ini if ((PSI_OS=='Android') || (PSI_OS=='Darwin')) { define('PSI_SYSTEM_CODEPAGE', 'UTF-8'); } elseif (PSI_OS=='Minix') { define('PSI_SYSTEM_CODEPAGE', 'CP437'); } else { define('PSI_SYSTEM_CODEPAGE', null); } } if (!defined('PSI_JSON_ISSUE')) { //if not overloaded in phpsysinfo.ini if (simplexml_load_string("\n") !== simplexml_load_string("")) { // json_encode issue test define('PSI_JSON_ISSUE', true); // Problem must be solved } } /* restore error level */ error_reporting($old_err_rep); /* restore error handler */ if (function_exists('errorHandlerPsi')) { set_error_handler('errorHandlerPsi'); } } phpsysinfo-3.2.5/sample/000077500000000000000000000000001265516077000152155ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/000077500000000000000000000000001265516077000174215ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/4MLinux/000077500000000000000000000000001265516077000207215ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/4MLinux/10.0-server.txt000066400000000000000000000000561265516077000233450ustar00rootroot00000000000000----------/etc/4MLinux-version---------- 10.0 phpsysinfo-3.2.5/sample/distrotest/ALT/000077500000000000000000000000001265516077000200415ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/ALT/6.0.0.txt000066400000000000000000000007211265516077000212430ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: n/a Distributor ID: ALT Description: ALT Linux 6.0.0 Centaurus (Cheiron) Release: 6.0.0 Codename: Cheiron ----------/etc/altlinux-release---------- ALT Linux 6.0.0 Centaurus (Cheiron) ----------/etc/fedora-release---------- ALT Linux 6.0.0 Centaurus (Cheiron) ----------/etc/redhat-release---------- ALT Linux 6.0.0 Centaurus (Cheiron) ----------/etc/system-release---------- ALT Linux 6.0.0 Centaurus (Cheiron) phpsysinfo-3.2.5/sample/distrotest/ALT/7.0.0-Simply.txt000066400000000000000000000010531265516077000225160ustar00rootroot00000000000000----------/etc/altlinux-release---------- Simply Linux 7.0.0 (Dory) ----------/etc/fedora-release---------- Simply Linux 7.0.0 (Dory) ----------/etc/os-release---------- NAME="Simply Linux" VERSION="7.0.0 (Dory)" ID=altlinux VERSION_ID=7.0.0 PRETTY_NAME="Simply Linux 7.0.0 (Dory)" ANSI_COLOR="1;36" CPE_NAME="cpe:/o:alt linux:slinux:7.0.0" HOME_URL="http://simplylinux.ru/" BUG_REPORT_URL="https://bugs.altlinux.org/" ----------/etc/redhat-release---------- Simply Linux 7.0.0 (Dory) ----------/etc/system-release---------- Simply Linux 7.0.0 (Dory) phpsysinfo-3.2.5/sample/distrotest/ALT/7.0.1.txt000066400000000000000000000011311265516077000212410ustar00rootroot00000000000000----------/etc/altlinux-release---------- ALT Linux 7.0.1 Centaurus (Pholus) ----------/etc/fedora-release---------- ALT Linux 7.0.1 Centaurus (Pholus) ----------/etc/os-release---------- NAME="ALT Linux" VERSION="7.0.1 (Pholus)" ID=altlinux VERSION_ID=6.9.0 PRETTY_NAME="ALT Linux 7.0.1 Centaurus (Pholus)" ANSI_COLOR="1;33" CPE_NAME="cpe:/o:alt linux:centaurus:7.0.1" HOME_URL="http://altlinux.ru/" BUG_REPORT_URL="https://bugs.altlinux.org/" ----------/etc/redhat-release---------- ALT Linux 7.0.1 Centaurus (Pholus) ----------/etc/system-release---------- ALT Linux 7.0.1 Centaurus (Pholus) phpsysinfo-3.2.5/sample/distrotest/Alpine/000077500000000000000000000000001265516077000206315ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Alpine/2.6.4.txt000066400000000000000000000000561265516077000220420ustar00rootroot00000000000000----------/etc/alpine-release---------- 2.6.4 phpsysinfo-3.2.5/sample/distrotest/Amazon/000077500000000000000000000000001265516077000206465ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Amazon/2013.09.txt000066400000000000000000000005061265516077000222240ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: AmazonAMI Description: Amazon Linux AMI release 2013.09 Release: 2013.09 Codename: n/a ----------/etc/system-release---------- Amazon Linux AMI release 2013.09 phpsysinfo-3.2.5/sample/distrotest/Arch/000077500000000000000000000000001265516077000202765ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Arch/2011.08.19-ISO.txt000066400000000000000000000000721265516077000225270ustar00rootroot00000000000000----------/etc/arch-release---------- Arch Linux Live ISO phpsysinfo-3.2.5/sample/distrotest/Arch/2013.11.01.txt000066400000000000000000000004141265516077000220620ustar00rootroot00000000000000----------/etc/arch-release---------- ----------/etc/os-release---------- NAME="Arch Linux" ID=arch PRETTY_NAME="Arch Linux" ANSI_COLOR="0;36" HOME_URL="https://www.archlinux.org/" SUPPORT_URL="https://bbs.archlinux.org/" BUG_REPORT_URL="https://bugs.archlinux.org/" phpsysinfo-3.2.5/sample/distrotest/Arch/2014.01.05.txt000066400000000000000000000010351265516077000220660ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: 1.4 Distributor ID: Arch Description: Arch Linux Release: rolling Codename: n/a ----------/etc/arch-release---------- Arch Linux release ----------/etc/lsb-release---------- LSB_VERSION=1.4 DISTRIB_ID=Arch DISTRIB_RELEASE=rolling DISTRIB_DESCRIPTION="Arch Linux" ----------/etc/os-release---------- NAME="Arch Linux" ID=arch PRETTY_NAME="Arch Linux" ANSI_COLOR="0;36" HOME_URL="https://www.archlinux.org/" SUPPORT_URL="https://bbs.archlinux.org/" BUG_REPORT_URL="https://bugs.archlinux.org/" phpsysinfo-3.2.5/sample/distrotest/BOSS/000077500000000000000000000000001265516077000201675ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/BOSS/1.0-server.txt000066400000000000000000000005241265516077000225330ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: core-2.0-noarch:core-3.0-noarch:core-3.1-noarch:core-2.0-ia32:core-3.0-ia32:core-3.1-ia32 Distributor ID: BOSS Server Beta Description: BOSS Server Beta GNU/Linux anant Release: anant Codename: 1.0 ----------/etc/boss_version---------- anant ----------/etc/debian_version---------- lenny/sid phpsysinfo-3.2.5/sample/distrotest/BOSS/5.0.txt000066400000000000000000000010051265516077000212260ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: BOSS Description: BOSS GNU/Linux 5.0 (anokha) Release: 5.0 Codename: anokha ----------/etc/os-release---------- PRETTY_NAME="BOSS GNU/Linux 5.0 (anokha)" NAME="BOSS GNU/Linux" VERSION_ID="5.0" VERSION="5.0 (anokha)" ID=debian ANSI_COLOR="1;31" HOME_URL="http://www.bosslinux.in/" SUPPORT_URL="http://www.bosslinux.in/support-centre" BUG_REPORT_URL="http://bugzilla.bosslinux.in/" ----------/etc/boss_version---------- 5.0 ----------/etc/debian_version---------- 7.0 phpsysinfo-3.2.5/sample/distrotest/Calculate/000077500000000000000000000000001265516077000213165ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Calculate/13.11.txt000066400000000000000000000004661265516077000225300ustar00rootroot00000000000000----------/etc/gentoo-release---------- Calculate Linux Desktop 13.11 XFCE ----------/etc/os-release---------- NAME=Gentoo ID=gentoo PRETTY_NAME="Gentoo/Linux" ANSI_COLOR="1;32" HOME_URL="http://www.gentoo.org/" SUPPORT_URL="http://www.gentoo.org/main/en/support.xml" BUG_REPORT_URL="https://bugs.gentoo.org/" phpsysinfo-3.2.5/sample/distrotest/Canaima/000077500000000000000000000000001265516077000207525ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Canaima/4.1.txt000066400000000000000000000011271265516077000220160ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Canaima Description: Canaima GNU/Linux 4.1 (kukenan) Release: 4.1 Codename: kukenan ----------/etc/os-release---------- PRETTY_NAME="Canaima GNU/Linux 4.1 (kukenan)" NAME="Canaima GNU/Linux" VERSION_ID="4.1" VERSION="4.1 (kukenan)" ID=canaima ANSI_COLOR="1;31" HOME_URL="http://http://canaima.softwarelibre.gob.ve/" SUPPORT_URL="http://http://canaima.softwarelibre.gob.ve/Soporte" BUG_REPORT_URL="http://http://trac.canaima.softwarelibre.gob.ve/canaima/" ----------/etc/canaima_version---------- 4.1 ----------/etc/debian_version---------- Canaima phpsysinfo-3.2.5/sample/distrotest/CentOS/000077500000000000000000000000001265516077000205545ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/CentOS/5.6.txt000066400000000000000000000005571265516077000216340ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch Distributor ID: CentOS Description: CentOS release 5.6 (Final) Release: 5.6 Codename: Final ----------/etc/redhat-release---------- CentOS release 5.6 (Final) phpsysinfo-3.2.5/sample/distrotest/CentOS/6.5-SF.txt000066400000000000000000000003111265516077000221260ustar00rootroot00000000000000----------/etc/centos-release---------- CentOS release 6.5 (Final) ----------/etc/redhat-release---------- CentOS release 6.5 (Final) ----------/etc/system-release---------- CentOS release 6.5 (Final) phpsysinfo-3.2.5/sample/distrotest/CentOS/6.5.txt000066400000000000000000000012371265516077000216300ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: CentOS Description: CentOS release 6.5 (Final) Release: 6.5 Codename: Final ----------/etc/centos-release---------- CentOS release 6.5 (Final) ----------/etc/lsb-release---------- LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch ----------/etc/redhat-release---------- CentOS release 6.5 (Final) ----------/etc/system-release---------- CentOS release 6.5 (Final) phpsysinfo-3.2.5/sample/distrotest/CentOS/7.1.1503.txt000066400000000000000000000012271265516077000222130ustar00rootroot00000000000000----------/etc/centos-release---------- CentOS Linux release 7.1.1503 (Core) ----------/etc/os-release---------- NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7" ----------/etc/redhat-release---------- CentOS Linux release 7.1.1503 (Core) ----------/etc/system-release---------- CentOS Linux release 7.1.1503 (Core) phpsysinfo-3.2.5/sample/distrotest/Chakra/000077500000000000000000000000001265516077000206125ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Chakra/2013.02.txt000066400000000000000000000010301265516077000221520ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: n/a Distributor ID: Chakra Description: Chakra Release: 2013.02 Codename: Benz ----------/etc/chakra-release---------- ----------/etc/lsb-release---------- DISTRIB_ID="Chakra" DISTRIB_RELEASE="2013.02" DISTRIB_CODENAME="Benz" DISTRIB_DESCRIPTION="Chakra" ----------/etc/os-release---------- NAME="The Chakra-Project" VERSION="Benz" ID=chakra PRETTY_NAME="The Chakra-Project (Benz)" ANSI_COLOR="0;36" HOME_URL="http://www.chakra-linux.org/" BUG_REPORT_URL="http://chakra-linux.org/bugs/" phpsysinfo-3.2.5/sample/distrotest/ClearOS/000077500000000000000000000000001265516077000207115ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/ClearOS/6.4.0-Beta.txt000066400000000000000000000004031265516077000227650ustar00rootroot00000000000000----------/etc/clearos-release---------- ClearOS Community release 6.4.0 Beta (Beta 2) ----------/etc/redhat-release---------- ClearOS Community release 6.4.0 Beta (Beta 2) ----------/etc/system-release---------- ClearOS Community release 6.4.0 Beta (Beta 2) phpsysinfo-3.2.5/sample/distrotest/Cloud/000077500000000000000000000000001265516077000204675ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Cloud/5.10.txt000066400000000000000000000010201265516077000216040ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch Distributor ID: CloudLinuxServer Description: CloudLinux Server release 5.10 (Georgy Beregovoy) Release: 5.10 Codename: GeorgyBeregovoy ----------/etc/CloudLinux-release---------- CloudLinux Server release 5.10 (Georgy Beregovoy) ----------/etc/redhat-release---------- CloudLinux Server release 5.10 (Georgy Beregovoy) phpsysinfo-3.2.5/sample/distrotest/Cloud/6.4.txt000066400000000000000000000011551265516077000215410ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: CloudLinuxServer Description: CloudLinux Server release 6.4 Release: 6.4 Codename: n/a ----------/etc/lsb-release---------- LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch ----------/etc/redhat-release---------- CloudLinux Server release 6.4 ----------/etc/system-release---------- CloudLinux Server release 6.4 phpsysinfo-3.2.5/sample/distrotest/CoreOS/000077500000000000000000000000001265516077000205535ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/CoreOS/367.1.0.txt000066400000000000000000000005731265516077000221350ustar00rootroot00000000000000----------/etc/lsb-release---------- DISTRIB_ID=CoreOS DISTRIB_RELEASE=367.1.0 DISTRIB_CODENAME="Red Dog" DISTRIB_DESCRIPTION="CoreOS 367.1.0" ----------/etc/os-release---------- NAME=CoreOS ID=coreos VERSION=367.1.0 VERSION_ID=367.1.0 BUILD_ID= PRETTY_NAME="CoreOS 367.1.0" ANSI_COLOR="1;32" HOME_URL="https://coreos.com/" BUG_REPORT_URL="https://github.com/coreos/bugs/issues" phpsysinfo-3.2.5/sample/distrotest/Crux/000077500000000000000000000000001265516077000203425ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Crux/2.8.txt000066400000000000000000000000631265516077000214110ustar00rootroot00000000000000----------/usr/bin/crux---------- CRUX version 2.8 phpsysinfo-3.2.5/sample/distrotest/Debian/000077500000000000000000000000001265516077000206035ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Debian/5.0.3.txt000066400000000000000000000000561265516077000220100ustar00rootroot00000000000000----------/etc/debian_version---------- 5.0.3 phpsysinfo-3.2.5/sample/distrotest/Debian/6.0.6.txt000066400000000000000000000002671265516077000220200ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Debian Description: Debian GNU/Linux 6.0.6 (squeeze) Release: 6.0.6 Codename: squeeze ----------/etc/debian_version---------- 6.0.6 phpsysinfo-3.2.5/sample/distrotest/Debian/8-20140106-netinstall.txt000066400000000000000000000003261265516077000245620ustar00rootroot00000000000000----------/etc/default-release---------- jessie ----------/etc/lsb-release---------- DISTRIB_ID=Debian DISTRIB_DESCRIPTION="Debian GNU/Linux installer" DISTRIB_RELEASE="8 (jessie) - installer build 20140106-00:05" phpsysinfo-3.2.5/sample/distrotest/Debian/8-20140106.txt000066400000000000000000000006701265516077000224110ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Debian Description: Debian GNU/Linux testing (jessie) Release: testing Codename: jessie ----------/etc/os-release---------- PRETTY_NAME="Debian GNU/Linux jessie/sid" NAME="Debian GNU/Linux" ID=debian ANSI_COLOR="1;31" HOME_URL="http://www.debian.org/" SUPPORT_URL="http://www.debian.org/support/" BUG_REPORT_URL="http://bugs.debian.org/" ----------/etc/debian_version---------- jessie/sid phpsysinfo-3.2.5/sample/distrotest/Deepin/000077500000000000000000000000001265516077000206255ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Deepin/2013.txt000066400000000000000000000011241265516077000217510ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: LinuxDeepin Description: LinuxDeepin 2013 Release: 2013 Codename: raring ----------/etc/lsb-release---------- DISTRIB_ID=LinuxDeepin DISTRIB_RELEASE=2013 DISTRIB_CODENAME=raring DISTRIB_DESCRIPTION="LinuxDeepin 2013" ----------/etc/os-release---------- NAME="Ubuntu" VERSION="13.04, Raring Ringtail" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 13.04" VERSION_ID="13.04" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Eisfair/000077500000000000000000000000001265516077000210035ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Eisfair/1-2.6.5.txt000066400000000000000000000003411265516077000223500ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: n/a Distributor ID: eisfair project Description: eisfair-1 Release: 2.6.5 Codename: n/a ----------/etc/version---------- 2.6.5 ----------/etc/eisfair-system---------- eisfair-1 phpsysinfo-3.2.5/sample/distrotest/Eisfair/2-1.8.1.txt000066400000000000000000000001311265516077000223430ustar00rootroot00000000000000----------/etc/version---------- 1.8.1 ----------/etc/eisfair-system---------- eisfair-2 phpsysinfo-3.2.5/sample/distrotest/Fedora/000077500000000000000000000000001265516077000206215ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Fedora/20-lsb.txt000066400000000000000000000016611265516077000223650ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch Distributor ID: Fedora Description: Fedora release 20 (Heisenbug) Release: 20 Codename: Heisenbug ----------/etc/fedora-release---------- Fedora release 20 (Heisenbug) ----------/etc/os-release---------- NAME=Fedora VERSION="20 (Heisenbug)" ID=fedora VERSION_ID=20 PRETTY_NAME="Fedora 20 (Heisenbug)" ANSI_COLOR="0;34" CPE_NAME="cpe:/o:fedoraproject:fedora:20" HOME_URL="https://fedoraproject.org/" BUG_REPORT_URL="https://bugzilla.redhat.com/" REDHAT_BUGZILLA_PRODUCT="Fedora" REDHAT_BUGZILLA_PRODUCT_VERSION=20 REDHAT_SUPPORT_PRODUCT="Fedora" REDHAT_SUPPORT_PRODUCT_VERSION=20 ----------/etc/redhat-release---------- Fedora release 20 (Heisenbug) ----------/etc/system-release---------- Fedora release 20 (Heisenbug) phpsysinfo-3.2.5/sample/distrotest/Fedora/20.txt000066400000000000000000000011551265516077000216050ustar00rootroot00000000000000----------/etc/fedora-release---------- Fedora release 20 (Heisenbug) ----------/etc/os-release---------- NAME=Fedora VERSION="20 (Heisenbug)" ID=fedora VERSION_ID=20 PRETTY_NAME="Fedora 20 (Heisenbug)" ANSI_COLOR="0;34" CPE_NAME="cpe:/o:fedoraproject:fedora:20" HOME_URL="https://fedoraproject.org/" BUG_REPORT_URL="https://bugzilla.redhat.com/" REDHAT_BUGZILLA_PRODUCT="Fedora" REDHAT_BUGZILLA_PRODUCT_VERSION=20 REDHAT_SUPPORT_PRODUCT="Fedora" REDHAT_SUPPORT_PRODUCT_VERSION=20 ----------/etc/redhat-release---------- Fedora release 20 (Heisenbug) ----------/etc/system-release---------- Fedora release 20 (Heisenbug) phpsysinfo-3.2.5/sample/distrotest/Fedora/4.txt000066400000000000000000000005341265516077000215270ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: 1.3 Distributor ID: FedoraCore Description: Fedora Core release 4 (Stentz) Release: 4 Codename: Stentz ----------/etc/fedora-release---------- Fedora Core release 4 (Stentz) ----------/etc/lsb-release---------- LSB_VERSION="1.3" ----------/etc/redhat-release---------- Fedora Core release 4 (Stentz) phpsysinfo-3.2.5/sample/distrotest/Foresight/000077500000000000000000000000001265516077000213535ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Foresight/2.5.3.txt000066400000000000000000000000621265516077000225570ustar00rootroot00000000000000----------/etc/distro-release---------- Foresight phpsysinfo-3.2.5/sample/distrotest/Frugalware/000077500000000000000000000000001265516077000215205ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Frugalware/1.9.txt000066400000000000000000000003561265516077000225740ustar00rootroot00000000000000----------/etc/frugalware-release---------- Frugalware 1.9 (Arcturus) ----------/etc/os-release---------- NAME="Frugalware" VERSION="1.9 (Arcturus)" ID=frugalware VERSION_ID="1.9" PRETTY_NAME="Frugalware 1.9 (Arcturus)" ANSI_COLOR="1;36" phpsysinfo-3.2.5/sample/distrotest/Fuduntu/000077500000000000000000000000001265516077000210535ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Fuduntu/2013.2.txt000066400000000000000000000013401265516077000223370ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: Fuduntu Description: n/a Release: 2013.2 Codename: Punny Name Serious Distro ----------/etc/fedora-release---------- Fuduntu 2013.2 (Punny Name Serious Distro) ----------/etc/fuduntu-release---------- Fuduntu 2013.2 (Punny Name Serious Distro) ----------/etc/lsb-release---------- DISTRIB_ID=Fuduntu DISTRIB_RELEASE=2013.2 DISTRIB_CODENAME=Fuduntu DISTRIB_DESCRIPTION="Punny Name Serious Distro" ----------/etc/redhat-release---------- Fuduntu 2013.2 (Punny Name Serious Distro) ----------/etc/system-release---------- Fuduntu 2013.2 (Punny Name Serious Distro) phpsysinfo-3.2.5/sample/distrotest/Generations/000077500000000000000000000000001265516077000216775ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Generations/3.1.txt000066400000000000000000000011531265516077000227410ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: core-3.1-noarch Distributor ID: generations Description: Generations Linux Release: 3.1 Codename: vortex ----------/etc/lsb-release---------- DISTRIB_ID="generations" DISTRIB_DESCRIPTION="Generations Linux" DISTRIB_RELEASE="3.1" DISTRIB_CODENAME="vortex" LSB_VERSION="core-3.1-noarch" ----------/etc/os-release---------- # http://www.freedesktop.org/software/systemd/man/os-release.html NAME="Generations Linux" VERSION="3.1 (vortex)" ID=generations VERSION_ID=3.1 PRETTY_NAME="$NAME $VERSION" HOME_URL="http://softcraft.org" BUILD_ID="2013-05-04 1527" ANSI_COLOR="1;34" phpsysinfo-3.2.5/sample/distrotest/Gentoo/000077500000000000000000000000001265516077000206545ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Gentoo/2.2-NAME.txt000066400000000000000000000007521265516077000224400ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: n/a Distributor ID: Gentoo Description: NAME=Gentoo Release: n/a Codename: n/a ----------/etc/gentoo-release---------- Gentoo Base System release 2.2 ----------/etc/lsb-release---------- DISTRIB_ID="Gentoo" ----------/etc/os-release---------- NAME=Gentoo ID=gentoo PRETTY_NAME="Gentoo/Linux" ANSI_COLOR="1;32" HOME_URL="http://www.gentoo.org/" SUPPORT_URL="http://www.gentoo.org/main/en/support.xml" BUG_REPORT_URL="https://bugs.gentoo.org/" phpsysinfo-3.2.5/sample/distrotest/Gentoo/2.2.txt000066400000000000000000000007751265516077000217270ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: n/a Distributor ID: Gentoo Description: Gentoo Base System release 2.2 Release: 2.2 Codename: n/a ----------/etc/gentoo-release---------- Gentoo Base System release 2.2 ----------/etc/lsb-release---------- DISTRIB_ID="Gentoo" ----------/etc/os-release---------- NAME=Gentoo ID=gentoo PRETTY_NAME="Gentoo/Linux" ANSI_COLOR="1;32" HOME_URL="http://www.gentoo.org/" SUPPORT_URL="http://www.gentoo.org/main/en/support.xml" BUG_REPORT_URL="https://bugs.gentoo.org/" phpsysinfo-3.2.5/sample/distrotest/Gobo/000077500000000000000000000000001265516077000203075ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Gobo/015.beta2.txt000066400000000000000000000000641265516077000223510ustar00rootroot00000000000000----------/etc/GoboLinuxVersion---------- 015.beta2 phpsysinfo-3.2.5/sample/distrotest/Handy/000077500000000000000000000000001265516077000204645ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Handy/2.0.txt000066400000000000000000000032201265516077000215210ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: core-2.0-ia32:core-2.0-noarch:core-3.0-ia32:core-3.0-noarch:core-3.1-ia32:core-3.1-noarch:core-3.2-ia32:core-3.2-noarch:core-4.0-ia32:core-4.0-noarch:core-4.1-ia32:core-4.1-noarch:cxx-3.0-ia32:cxx-3.0-noarch:cxx-3.1-ia32:cxx-3.1-noarch:cxx-3.2-ia32:cxx-3.2-noarch:cxx-4.0-ia32:cxx-4.0-noarch:cxx-4.1-ia32:cxx-4.1-noarch:desktop-3.1-ia32:desktop-3.1-noarch:desktop-3.2-ia32:desktop-3.2-noarch:desktop-4.0-ia32:desktop-4.0-noarch:desktop-4.1-ia32:desktop-4.1-noarch:graphics-2.0-ia32:graphics-2.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch:graphics-3.1-ia32:graphics-3.1-noarch:graphics-3.2-ia32:graphics-3.2-noarch:graphics-4.0-ia32:graphics-4.0-noarch:graphics-4.1-ia32:graphics-4.1-noarch:languages-3.2-ia32:languages-3.2-noarch:languages-4.0-ia32:languages-4.0-noarch:languages-4.1-ia32:languages-4.1-noarch:multimedia-3.2-ia32:multimedia-3.2-noarch:multimedia-4.0-ia32:multimedia-4.0-noarch:multimedia-4.1-ia32:multimedia-4.1-noarch:printing-3.2-ia32:printing-3.2-noarch:printing-4.0-ia32:printing-4.0-noarch:printing-4.1-ia32:printing-4.1-noarch:qt4-3.1-ia32:qt4-3.1-noarch:security-4.0-ia32:security-4.0-noarch:security-4.1-ia32:security-4.1-noarch Distributor ID: HandyLinux Description: HandyLinux GNU/Linux 8.0 (jessie) Release: 8.0 Codename: jessie ----------/etc/os-release---------- PRETTY_NAME="Debian GNU/Linux 8 (jessie)" NAME="Debian GNU/Linux" VERSION_ID="8" VERSION="8 (jessie)" ID=debian HOME_URL="http://www.debian.org/" SUPPORT_URL="http://www.debian.org/support/" BUG_REPORT_URL="https://bugs.debian.org/" ----------/etc/debian_version---------- 8.0 ----------/etc/handylinux_version---------- HandyLinux-2.0 phpsysinfo-3.2.5/sample/distrotest/HipServ/000077500000000000000000000000001265516077000210015ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/HipServ/2.6.txt000066400000000000000000000000601265516077000220430ustar00rootroot00000000000000----------/etc/redhat-release---------- HipServ phpsysinfo-3.2.5/sample/distrotest/IPFire/000077500000000000000000000000001265516077000205375ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/IPFire/2.13.txt000066400000000000000000000001041265516077000216560ustar00rootroot00000000000000----------/etc/system-release---------- IPFire 2.13 (i586) - core74 phpsysinfo-3.2.5/sample/distrotest/KaOS/000077500000000000000000000000001265516077000202165ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/KaOS/2014.0301.txt000066400000000000000000000006701265516077000217320ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: n/a Distributor ID: KaOS Description: KaOS Release: 2014.0301 Codename: n/a ----------/etc/KaOS-release---------- KaOS release 2014.0301 ----------/etc/lsb-release---------- DISTRIB_ID="KaOS" DISTRIB_RELEASE="2014.0301" DISTRIB_DESCRIPTION="KaOS" ----------/etc/os-release---------- NAME="KaOS" VERSION="2014" ID=kaos PRETTY_NAME="KaOS (2014)" ANSI_COLOR="0;36" HOME_URL="http://kaosx.us/" phpsysinfo-3.2.5/sample/distrotest/Korora/000077500000000000000000000000001265516077000206565ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Korora/20.txt000066400000000000000000000013411265516077000216370ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch Distributor ID: Korora Description: Korora release 20 (Peach) Release: 20 Codename: Peach ----------/etc/fedora-release---------- Korora release 20 (Peach) ----------/etc/os-release---------- NAME=Korora VERSION="20 (Peach)" ID=korora VERSION_ID=20 PRETTY_NAME="Korora 20 (Peach)" ANSI_COLOR="0;34" CPE_NAME="cpe:/o:kororaproject:korora:20" HOME_URL="https://kororaproject.org/" ----------/etc/redhat-release---------- Korora release 20 (Peach) ----------/etc/system-release---------- Korora release 20 (Peach) phpsysinfo-3.2.5/sample/distrotest/Linaro/000077500000000000000000000000001265516077000206455ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Linaro/13.12.txt000066400000000000000000000010721265516077000220520ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Linaro Description: Linaro 13.12 Release: 13.12 Codename: saucy ----------/etc/lsb-release---------- DISTRIB_ID=Linaro DISTRIB_RELEASE=13.12 DISTRIB_CODENAME=saucy DISTRIB_DESCRIPTION="Linaro 13.12" ----------/etc/os-release---------- NAME="Linaro" VERSION="13.12" ID=linaro ID_LIKE=debian PRETTY_NAME="Linaro 13.12" VERSION_ID="13.12" HOME_URL="http://www.linaro.org/" SUPPORT_URL="http://linaro.zendesk.com/" BUG_REPORT_URL="http://bugs.launchpad.net/linaro-ubuntu" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Lunar/000077500000000000000000000000001265516077000205025ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Lunar/1.7.0-rc2.txt000066400000000000000000000007321265516077000223740ustar00rootroot00000000000000----------/etc/lsb-release---------- DISTRIB_ID="Lunar Linux" DISTRIB_RELEASE="1.7.0-rc2-x86_64" DISTRIB_CODENAME="Sinus Successus" DISTRIB_DESCRIPTION="Lunar Linux 1.7.0-rc2-x86_64 (Sinus Successus - 20140913)" ----------/etc/os-release---------- NAME="Lunar Linux" VERSION="1.7.0-rc2-x86_64 (Sinus Successus)" ID=lunar VERSION_ID=1.7.0-rc2-x86_64 PRETTY_NAME="Lunar Linux 1.7.0-rc2-x86_64 (Sinus Successus - 20140913)" ANSI_COLOR="1;34" HOME_URL="http://lunar-linux.org/" phpsysinfo-3.2.5/sample/distrotest/Mageia/000077500000000000000000000000001265516077000206045ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Mageia/4.txt000066400000000000000000000020461265516077000215120ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: * Distributor ID: Mageia Description: Mageia 4 Release: 4 Codename: thornicroft ----------/etc/lsb-release---------- LSB_VERSION= DISTRIB_ID="Mageia" DISTRIB_RELEASE=4 DISTRIB_CODENAME=thornicroft DISTRIB_DESCRIPTION="Mageia 4" ----------/etc/mageia-release---------- Mageia release 4 (Cauldron) for x86_64 ----------/etc/mandrake-release---------- Mageia release 4 (Cauldron) for x86_64 ----------/etc/mandrakelinux-release---------- Mageia release 4 (Cauldron) for x86_64 ----------/etc/mandriva-release---------- Mageia release 4 (Cauldron) for x86_64 ----------/etc/os-release---------- NAME="Mageia" VERSION="4" ID=mageia ID_LIKE="mandriva fedora" PRETTY_NAME="Mageia 4" ANSI_COLOR="1;36" HOME_URL="http://www.mageia.org/" SUPPORT_URL="http://www.mageia.org/support/" BUG_REPORT_URL="https://bugs.mageia.org/" ----------/etc/redhat-release---------- Mageia release 4 (Cauldron) for x86_64 ----------/etc/version---------- 4 0.5 cauldron ----------/etc/release---------- Mageia release 4 (Cauldron) for x86_64 phpsysinfo-3.2.5/sample/distrotest/Mandrake/000077500000000000000000000000001265516077000211435ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Mandrake/2011.0.txt000066400000000000000000000014751265516077000224340ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: * Distributor ID: MandrivaLinux Description: Mandriva Linux 2011.0 Release: 2011.0 Codename: turtle ----------/etc/lsb-release---------- LSB_VERSION= DISTRIB_ID=MandrivaLinux DISTRIB_RELEASE=2011.0 DISTRIB_CODENAME=turtle DISTRIB_DESCRIPTION="Mandriva Linux 2011.0" ----------/etc/mandrake-release---------- Mandriva Linux release 2011.0 (Official) for x86_64 ----------/etc/mandrakelinux-release---------- Mandriva Linux release 2011.0 (Official) for x86_64 ----------/etc/mandriva-release---------- Mandriva Linux release 2011.0 (Official) for x86_64 ----------/etc/redhat-release---------- Mandriva Linux release 2011.0 (Official) for x86_64 ----------/etc/version---------- 2011.0.0 2 cooker ----------/etc/release---------- Mandriva Linux release 2011.0 (Official) for x86_64 phpsysinfo-3.2.5/sample/distrotest/Mandrake/9.2.txt000066400000000000000000000007251265516077000222200ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: 1.3 Distributor ID: Mandrake Description: Mandrake Linux Release: 9.2 Codename: FiveStar ----------/etc/lsb-release---------- LSB_VERSION=1.3 DISTRIB_ID=Mandrake DISTRIB_RELEASE=9.2 DISTRIB_CODENAME=FiveStar DISTRIB_DESCRIPTION="Mandrake Linux" ----------/etc/mandrake-release---------- Mandrake Linux release 9.2 (FiveStar) for i586 ----------/etc/redhat-release---------- Mandrake Linux release 9.2 (FiveStar) for i586 phpsysinfo-3.2.5/sample/distrotest/Manjaro/000077500000000000000000000000001265516077000210105ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Manjaro/0.8.8.txt000066400000000000000000000010711265516077000222230ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: n/a Distributor ID: ManjaroLinux Description: Manjaro Linux Release: 0.8.8 Codename: Ascella ----------/etc/lsb-release---------- DISTRIB_ID=ManjaroLinux DISTRIB_RELEASE=0.8.8 DISTRIB_CODENAME=Ascella DISTRIB_DESCRIPTION="Manjaro Linux" ----------/etc/manjaro-release---------- Manjaro Linux ----------/etc/os-release---------- NAME="Manjaro Linux" ID=manjaro PRETTY_NAME="Manjaro Linux" ANSI_COLOR="1;32" HOME_URL="http://www.manjaro.org/" SUPPORT_URL="http://www.manjaro.org/" BUG_REPORT_URL="http://bugs.manjaro.org/" phpsysinfo-3.2.5/sample/distrotest/Mer/000077500000000000000000000000001265516077000201445ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Mer/0.2011.txt000066400000000000000000000013771265516077000214360ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :core-3.1-ia32:core-3.1-noarch:core-3.2-ia32:core-3.2-noarch:core-4.0-ia32:core-4.0-noarch:desktop-3.1-ia32:desktop-3.1-noarch:desktop-3.2-ia32:desktop-3.2-noarch:desktop-4.0-ia32:desktop-4.0-noarch Distributor ID: Mer Description: Mer release 0.2011 (Mer) Release: 0.2011 Codename: Mer ----------/etc/meego-release---------- Mer release 0.2011 (Mer) BUILD: Jolla-1.0.8.19-SDK_Build_Engine-i486 ----------/etc/mer-release---------- Mer release 0.2011 (Mer) BUILD: Jolla-1.0.8.19-SDK_Build_Engine-i486 ----------/etc/moblin-release---------- Mer release 0.2011 (Mer) BUILD: Jolla-1.0.8.19-SDK_Build_Engine-i486 ----------/etc/system-release---------- Mer release 0.2011 (Mer) BUILD: Jolla-1.0.8.19-SDK_Build_Engine-i486 phpsysinfo-3.2.5/sample/distrotest/Mint/000077500000000000000000000000001265516077000203305ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Mint/13.txt000066400000000000000000000004671265516077000213230ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: LinuxMint Description: Linux Mint 13 Maya Release: 13 Codename: maya ----------/etc/lsb-release---------- DISTRIB_ID=LinuxMint DISTRIB_RELEASE=13 DISTRIB_CODENAME=maya DISTRIB_DESCRIPTION="Linux Mint 13 Maya" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Mint/14.txt000066400000000000000000000007371265516077000213240ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: LinuxMint Description: Linux Mint 14 Nadia Release: 14 Codename: nadia ----------/etc/lsb-release---------- DISTRIB_ID=LinuxMint DISTRIB_RELEASE=14 DISTRIB_CODENAME=nadia DISTRIB_DESCRIPTION="Linux Mint 14 Nadia" ----------/etc/os-release---------- NAME="Ubuntu" VERSION="12.10, Quantal Quetzal" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu quantal (12.10)" VERSION_ID="12.10" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Mint/15.txt000066400000000000000000000011241265516077000213140ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: LinuxMint Description: Linux Mint 15 Olivia Release: 15 Codename: olivia ----------/etc/lsb-release---------- DISTRIB_ID=LinuxMint DISTRIB_RELEASE=15 DISTRIB_CODENAME=olivia DISTRIB_DESCRIPTION="Linux Mint 15 Olivia" ----------/etc/os-release---------- NAME="Ubuntu" VERSION="13.04, Raring Ringtail" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 13.04" VERSION_ID="13.04" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Netrunner/000077500000000000000000000000001265516077000214015ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Netrunner/13.06-SE.txt000066400000000000000000000012211265516077000231120ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: NetrunnerSE Description: Netrunner 5 SE Enigma (13.06) Release: 13.06 Codename: enigma-1306 ----------/etc/lsb-release---------- DISTRIB_ID=NetrunnerSE DISTRIB_RELEASE=13.06 DISTRIB_CODENAME=enigma-1306 DISTRIB_DESCRIPTION="Netrunner 5 SE Enigma (13.06)" ----------/etc/os-release---------- NAME="Netrunner" VERSION="13.06, Enigma" ID=netrunner ID_LIKE=debian PRETTY_NAME="Netrunner 5 Enigma (13.06)" VERSION_ID="13.06" HOME_URL="www.netrunner-os.com" SUPPORT_URL="forums.netrunner-os.com" BUG_REPORT_URL="https://github.com/netrunner/netrunner-feedback" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Netrunner/13.06.txt000066400000000000000000000012071265516077000226110ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Netrunner Description: Netrunner 5 Enigma (13.06) Release: 13.06 Codename: enigma-1306 ----------/etc/lsb-release---------- DISTRIB_ID=Netrunner DISTRIB_RELEASE=13.06 DISTRIB_CODENAME=enigma-1306 DISTRIB_DESCRIPTION="Netrunner 5 Enigma (13.06)" ----------/etc/os-release---------- NAME="Netrunner" VERSION="13.06, Enigma" ID=netrunner ID_LIKE=debian PRETTY_NAME="Netrunner 5 Enigma (13.06)" VERSION_ID="13.06" HOME_URL="www.netrunner-os.com" SUPPORT_URL="forums.netrunner-os.com" BUG_REPORT_URL="https://github.com/netrunner/netrunner-feedback" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Netrunner/2014.04.txt000066400000000000000000000011361265516077000227530ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: n/a Distributor ID: Netrunner Description: Netrunner Rolling Release: 2014.04 Codename: Rolling ----------/etc/lsb-release---------- DISTRIB_ID=Netrunner DISTRIB_RELEASE=2014.04 DISTRIB_CODENAME=Rolling DISTRIB_DESCRIPTION="Netrunner Rolling" ----------/etc/manjaro-release---------- Manjaro Linux ----------/etc/os-release---------- NAME="Netrunner Rolling" ID=netrunner PRETTY_NAME="Netrunner Rolling" ANSI_COLOR="1;32" HOME_URL="www.netrunner-os.com" SUPPORT_URL="forums.netrunner-os.com" BUG_REPORT_URL="https://github.com/netrunner/netrunner-feedback" phpsysinfo-3.2.5/sample/distrotest/NixOS/000077500000000000000000000000001265516077000204215ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/NixOS/13.10.txt000066400000000000000000000003221265516077000216210ustar00rootroot00000000000000----------/etc/os-release---------- NAME=NixOS ID=nixos VERSION="13.10.35686.3bcfa7b (Aardvark)" VERSION_ID="13.10.35686.3bcfa7b" PRETTY_NAME="NixOS 13.10.35686.3bcfa7b (Aardvark)" HOME_URL="http://nixos.org/" phpsysinfo-3.2.5/sample/distrotest/OpenMamba/000077500000000000000000000000001265516077000212605ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/OpenMamba/3.0.1.txt000066400000000000000000000021631265516077000224620ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: core-4.1-noarch:core-4.1-x86-64 Distributor ID: openmamba Description: openmamba release 3.0.1 for x86_64 (milestone3) Release: 3.0.1 Codename: milestone3 ----------/etc/lsb-release---------- DISTRIB_ID=openmamba DISTRIB_RELEASE=2.90.0 DISTRIB_CODENAME=rolling DISTRIB_DESCRIPTION="openmamba 2.90.0" LSB_VERSION=core-4.1-x86-64:core-4.1-noarch ----------/etc/openmamba-release---------- openmamba release 3.0.1 for x86_64 (milestone3) ----------/etc/os-release---------- NAME=openmamba VERSION="3.0.1 (milestone3)" ID=openmamba VERSION_ID="3.0.1" PRETTY_NAME="openmamba GNU/Linux 3.0.1 for x86_64 (milestone3)" ANSI_COLOR="0;32" CPE_NAME="cpe:/o:openmamba:openmamba:3.0.1" HOME_URL="http://www.openmamba.org/" BUG_REPORT_URL="http://bugs.openmamba.org/" OPENMAMBA_MILESTONE="milestone3" OPENMAMBA_CODENAME="milestone3" OPENMAMBA_FORUM_URL="http://forum.openmamba.org/" OPENMAMBA_GIT_URL="http://gitlab.mambasoft.it/openmamba/" OPENMAMBA_WEBBUILD_URL="http://www.openmamba.org/distribution/webbuild.php" ----------/etc/system-release---------- openmamba release 3.0.1 for x86_64 (milestone3) phpsysinfo-3.2.5/sample/distrotest/OpenMandriva/000077500000000000000000000000001265516077000220045ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/OpenMandriva/2013.0-RC1.txt000066400000000000000000000027611265516077000236610ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: * Distributor ID: OpenMandrivaLinux Description: OpenMandriva Lx 2013.0 Release: 2013.0 Codename: oxygen ----------/etc/distro-release---------- OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64 ----------/etc/lsb-release---------- LSB_VERSION= DISTRIB_ID=OpenMandrivaLinux DISTRIB_RELEASE=2013.0 DISTRIB_CODENAME=oxygen DISTRIB_DESCRIPTION="OpenMandriva Lx 2013.0" ----------/etc/mandrake-release---------- OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64 ----------/etc/mandrakelinux-release---------- OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64 ----------/etc/mandriva-release---------- OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64 ----------/etc/os-release---------- NAME="OpenMandriva Lx" VERSION="2013.0 RC1 (Oxygen)" ID="openmandriva_association" VERSION_ID=2013.0 BUILD_ID=20131104.12 PRETTY_NAME="OpenMandriva Lx 2013.0 RC1 (Oxygen)" ANSI_COLOR="1;43" CPE_NAME="cpe:/o:openmandriva_association:openmandriva_lx:2013.0" HOME_URL="http://openmandriva.org/" BUG_REPORT_URL="https://issues.openmandriva.org/" ----------/etc/redhat-release---------- OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64 ----------/etc/rosa-release---------- OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64 ----------/etc/system-release---------- OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64 ----------/etc/version---------- 2013.0.0 4 RC1 (Oxygen) ----------/etc/release---------- OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64 phpsysinfo-3.2.5/sample/distrotest/Oracle/000077500000000000000000000000001265516077000206265ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Oracle/5.10-el.txt000066400000000000000000000011121265516077000223430ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch Distributor ID: EnterpriseEnterpriseServer Description: Enterprise Linux Enterprise Linux Server release 5.10 (Carthage) Release: 5.10 Codename: Carthage ----------/etc/enterprise-release---------- Enterprise Linux Enterprise Linux Server release 5.10 (Carthage) ----------/etc/oracle-release---------- Oracle Linux Server release 5.10 ----------/etc/redhat-release---------- Red Hat Enterprise Linux Server release 5.10 (Tikanga) phpsysinfo-3.2.5/sample/distrotest/Oracle/6.3.txt000066400000000000000000000007621265516077000217020ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: OracleServer Description: Oracle Linux Server release 6.3 Release: 6.3 Codename: n/a ----------/etc/oracle-release---------- Oracle Linux Server release 6.3 ----------/etc/redhat-release---------- Red Hat Enterprise Linux Server release 6.3 (Santiago) ----------/etc/system-release---------- Oracle Linux Server release 6.3 phpsysinfo-3.2.5/sample/distrotest/PCLinuxOS/000077500000000000000000000000001265516077000212055ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/PCLinuxOS/2012.06.txt000066400000000000000000000015711265516077000225620ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: lsb-3.1-ia32:lsb-3.1-noarch:* Distributor ID: PCLinuxOS Description: PCLinuxOS Release: 2012 Codename: PCLinuxOS ----------/etc/lsb-release---------- LSB_VERSION=lsb-3.1-ia32:lsb-3.1-noarch:* DISTRIB_ID=PCLinuxOS DISTRIB_RELEASE= DISTRIB_CODENAME= DISTRIB_DESCRIPTION="PCLinuxOS" ----------/etc/version---------- 2012 1 PCLinuxOS ----------/etc/mandrake-release---------- PCLinuxOS release 2012 (PCLinuxOS) for i586 ----------/etc/mandrakelinux-release---------- PCLinuxOS release 2012 (PCLinuxOS) for i586 ----------/etc/mandriva-release---------- PCLinuxOS release 2012 (PCLinuxOS) for i586 ----------/etc/pclinuxos-release---------- PCLinuxOS release 2012 (PCLinuxOS) for i586 ----------/etc/redhat-release---------- PCLinuxOS release 2012 (PCLinuxOS) for i586 ----------/etc/release---------- PCLinuxOS release 2012 (PCLinuxOS) for i586 phpsysinfo-3.2.5/sample/distrotest/PLD/000077500000000000000000000000001265516077000200405ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/PLD/2.99.txt000066400000000000000000000000711265516077000212000ustar00rootroot00000000000000----------/etc/pld-release---------- 2.99 PLD Linux (Th) phpsysinfo-3.2.5/sample/distrotest/PLD/3.0.txt000066400000000000000000000004601265516077000211010ustar00rootroot00000000000000----------/etc/pld-release---------- 3.0 PLD Linux (Th) ----------/etc/os-release---------- NAME="PLD Linux" ID="pld" VERSION_ID="3.0" PRETTY_NAME="PLD Linux 3.0 (Th)" ANSI_COLOR="0;32" CPE_NAME="cpe:/o:pld-linux:pld:3.0" HOME_URL="http://www.pld-linux.org/" BUG_REPORT_URL="https://bugs.pld-linux.org/" phpsysinfo-3.2.5/sample/distrotest/Parsix/000077500000000000000000000000001265516077000206675ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Parsix/5.0.txt000066400000000000000000000010211265516077000217240ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Parsix Description: Parsix GNU/Linux 5.0 (lombardo) Release: 5.0 Codename: lombardo ----------/etc/os-release---------- PRETTY_NAME="Parsix GNU/Linux 4.0 (gloria)" NAME="Parsix GNU/Linux" VERSION_ID="4.0" VERSION="4.0 (gloria)" ID=parsix ANSI_COLOR="1;31" HOME_URL="http://www.parsix.org/" SUPPORT_URL="http://forums.parsix.org/" BUG_REPORT_URL="http://bugs.parsix.org/" ----------/etc/parsix-version---------- Parsix GNU/Linux 5.0r1 ----------/etc/debian_version---------- 7.0 phpsysinfo-3.2.5/sample/distrotest/Parsix/6.0.txt000066400000000000000000000010161265516077000217310ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Parsix Description: Parsix GNU/Linux 6.0 (trev) Release: 6.0 Codename: trev ----------/etc/os-release---------- PRETTY_NAME="Parsix GNU/Linux 4.0 (gloria)" NAME="Parsix GNU/Linux" VERSION_ID="4.0" VERSION="4.0 (gloria)" ID=parsix ANSI_COLOR="1;31" HOME_URL="http://www.parsix.org/" SUPPORT_URL="http://forums.parsix.org/" BUG_REPORT_URL="http://bugs.parsix.org/" ----------/etc/parsix-version---------- Parsix GNU/Linux 6.0-TEST-1 ----------/etc/debian_version---------- 7.0 phpsysinfo-3.2.5/sample/distrotest/Pear/000077500000000000000000000000001265516077000203105ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Pear/5.00.txt000066400000000000000000000004711265516077000214350ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: PearLinux Description: Pear Linux 5 Release: 5.00 Codename: sunsprite ----------/etc/lsb-release---------- DISTRIB_ID=PearLinux DISTRIB_RELEASE=5.00 DISTRIB_CODENAME=sunsprite DISTRIB_DESCRIPTION="Pear Linux 5" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Pear/6.1-LTS.txt000066400000000000000000000010171265516077000220140ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: PearLinux Description: Pear Linux 6.1 LTS Release: 6.1 Codename: Bartlett ----------/etc/lsb-release---------- DISTRIB_ID=PearLinux DISTRIB_RELEASE=6.1 DISTRIB_CODENAME=Bartlett DISTRIB_DESCRIPTION="Pear Linux 6.1 LTS" DISTRIB_EDITION="32 bit PAE" ----------/etc/os-release---------- NAME="Ubuntu" VERSION="12.04.1 LTS, Precise Pangolin" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu precise (12.04.1 LTS)" VERSION_ID="12.04" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Pear/6.1.txt000066400000000000000000000007621265516077000213620ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Pear Linux Description: Pear Linux 6.1 Release: 6.1 Codename: Bartlett ----------/etc/lsb-release---------- DISTRIB_ID="Pear Linux" DISTRIB_RELEASE="6.1" DISTRIB_CODENAME="Bartlett" DISTRIB_DESCRIPTION="Pear Linux 6.1" ----------/etc/os-release---------- NAME="Ubuntu" VERSION="12.04.1 LTS, Precise Pangolin" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu precise (12.04.1 LTS)" VERSION_ID="12.04" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Pear/7.0.txt000066400000000000000000000007421265516077000213600ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: PearOS Description: Pear OS 7 64 bits Release: 7.0 Codename: Corella ----------/etc/lsb-release---------- DISTRIB_ID="PearOS" DISTRIB_RELEASE="7.0" DISTRIB_CODENAME="Corella" DISTRIB_DESCRIPTION="Pear OS 7 64 bits" ----------/etc/os-release---------- NAME="Ubuntu" VERSION="12.10, Quantal Quetzal" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu quantal (12.10)" VERSION_ID="12.10" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Peppermint/000077500000000000000000000000001265516077000215445ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Peppermint/3.txt000066400000000000000000000004711265516077000224510ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Peppermint Description: Peppermint Three Release: 3 Codename: precise ----------/etc/lsb-release---------- DISTRIB_ID=Peppermint DISTRIB_RELEASE=3 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Peppermint Three" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Peppermint/4-20131113.txt000066400000000000000000000011061265516077000233370ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Peppermint Description: Peppermint Four Release: 4 Codename: raring ----------/etc/lsb-release---------- DISTRIB_ID=Peppermint DISTRIB_RELEASE=4 DISTRIB_CODENAME=raring DISTRIB_DESCRIPTION="Peppermint Four" ----------/etc/os-release---------- NAME="Peppermint" VERSION="Four" ID=peppermint ID_LIKE=debian PRETTY_NAME="Peppermint Four" VERSION_ID="4" HOME_URL="http://peppermintos.com/" SUPPORT_URL="http://peppermintos.net/" BUG_REPORT_URL="http://bugs.launchpad.net/peppermint/" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Pisi/000077500000000000000000000000001265516077000203255ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Pisi/1.0.txt000066400000000000000000000006111265516077000213620ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: n/a Distributor ID: PisiLinux Description: Pisi GNU/Linux 1.0 Release: 1.0 Codename: n/a ----------/etc/lsb-release---------- DISTRIB_ID="PisiLinux" DISTRIB_RELEASE="1.0" DISTRIB_DESCRIPTION="Pisi GNU/Linux 1.0" DISTRIB_CODENAME="" ----------/etc/pisilinux-release---------- Pisi_Linux 1.0 ----------/etc/system-release---------- Pisi_Linux 1.0 phpsysinfo-3.2.5/sample/distrotest/Porteus/000077500000000000000000000000001265516077000210625ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Porteus/2.1.txt000066400000000000000000000007331265516077000221260ustar00rootroot00000000000000----------/etc/os-release---------- NAME=Slackware VERSION="14.0" ID=slackware VERSION_ID=14.0 PRETTY_NAME="Slackware 14.0" ANSI_COLOR="0;34" CPE_NAME="cpe:/o:slackware:slackware_linux:14.0" HOME_URL="http://slackware.com/" SUPPORT_URL="http://www.linuxquestions.org/questions/slackware-14/" BUG_REPORT_URL="http://www.linuxquestions.org/questions/slackware-14/" ----------/etc/porteus-version---------- Porteus-v2.1 ----------/etc/slackware-version---------- Slackware 14.0 phpsysinfo-3.2.5/sample/distrotest/Puppy/000077500000000000000000000000001265516077000205365ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Puppy/431.txt000066400000000000000000000007471265516077000216160ustar00rootroot00000000000000----------/etc/DISTRO_SPECS---------- #One or more words that identify this distribution: DISTRO_NAME='Puppy' #A three-digit numeric value, version number of this distribution: DISTRO_VERSION=431 #The distro whose binary packages were used to build this distribution: DISTRO_BINARY_COMPAT='puppy' #Prefix for some filenames: exs: pupsave.2fs, pup-431.sfs DISTRO_FILE_PREFIX='pup' #The version of the distro whose binary packages were used to build this distro: DISTRO_COMPAT_VERSION='4' phpsysinfo-3.2.5/sample/distrotest/Puppy/5.3-wary.txt000066400000000000000000000020621265516077000225640ustar00rootroot00000000000000----------/etc/DISTRO_SPECS---------- #One or more words that identify this distribution: DISTRO_NAME='Wary Puppy' #version number of this distribution: DISTRO_VERSION=5.3 #The distro whose binary packages were used to build this distribution: DISTRO_BINARY_COMPAT='puppy' #Prefix for some filenames: exs: warysave.2fs, wary-5.1.3.4.sfs DISTRO_FILE_PREFIX='wary' #The version of the distro whose binary packages were used to build this distro: DISTRO_COMPAT_VERSION='wary5' #the kernel pet package used: DISTRO_KERNEL_PET='linux_kernel-2.6.32.59-uni-i486-aufs-w5.pet' DISTRO_TARGETARCH='x86' #16-byte alpha-numeric ID-string appended to vmlinuz, puppy_wary_5.3.sfs, zdrv_wary_5.3.sfs and devx.sfs: DISTRO_IDSTRING='w120404071421ZZZZ5.3XXXXXXXXXXXX' #Puppy default filenames... #Note, the 'SFS' files below are what the 'init' script in initrd.gz searches for, #for the partition, path and actual files loaded, see PUPSFS and ZDRV in /etc/rc.d/PUPSTATE DISTRO_PUPPYSFS='puppy_wary_5.3.sfs' DISTRO_ZDRVSFS='zdrv_wary_5.3.sfs' DISTRO_PUPPYDATE='Apr 2012' DISTRO_XORG_AUTO='no' phpsysinfo-3.2.5/sample/distrotest/Puppy/5.3.3-slacko.txt000066400000000000000000000020611265516077000232160ustar00rootroot00000000000000----------/etc/DISTRO_SPECS---------- #One or more words that identify this distribution: DISTRO_NAME='Slacko Puppy' #version number of this distribution: DISTRO_VERSION=5.3.3 #The distro whose binary packages were used to build this distribution: DISTRO_BINARY_COMPAT='slackware' #Prefix for some filenames: exs: slackosave.2fs, slacko-5.3.3.sfs DISTRO_FILE_PREFIX='slacko' #The version of the distro whose binary packages were used to build this distro: DISTRO_COMPAT_VERSION='13.37' #the kernel pet package used: DISTRO_KERNEL_PET='linux_kernel-3.1.10-patched_s_4gA.pet' #16-byte alpha-numeric ID-string appended to vmlinuz, puppy_slacko_5.3.3.sfs, zdrv_slacko_5.3.3.sfs and devx.sfs: DISTRO_IDSTRING='s120505091759ZZZZ5.3.3XXXXXXXXXX' #Puppy default filenames... #Note, the 'SFS' files below are what the 'init' script in initrd.gz searches for, #for the partition, path and actual files loaded, see PUPSFS and ZDRV in /etc/rc.d/PUPSTATE DISTRO_PUPPYSFS='puppy_slacko_5.3.3.sfs' DISTRO_ZDRVSFS='zdrv_slacko_5.3.3.sfs' DISTRO_PUPPYDATE='May 2012' DISTRO_XORG_AUTO='yes' phpsysinfo-3.2.5/sample/distrotest/Puppy/528-lucid.txt000066400000000000000000000020751265516077000227170ustar00rootroot00000000000000----------/etc/DISTRO_SPECS---------- #One or more words that identify this distribution: DISTRO_NAME='Lucid ' #A three-digit numeric value, version number of this distribution: DISTRO_VERSION=528 #A two-digit numeric value, minor-version number of this distribution: DISTRO_MINOR_VERSION=00 #The distro whose binary packages were used to build this distribution: DISTRO_BINARY_COMPAT='ubuntu' #Prefix for some filenames: exs: lupusave.2fs, lupu-528.sfs DISTRO_FILE_PREFIX='lupu' #The version of the distro whose binary packages were used to build this distro: DISTRO_COMPAT_VERSION='lucid' #the kernel pet package used: DISTRO_KERNEL_PET='linux_kernel-2.6.33.2-tickless_smp_patched-L3.pet' #16-byte alpha-numeric ID-string appended to vmlinuz, lupu_528.sfs, zl528332.sfs and devx.sfs: DISTRO_IDSTRING='l528120404231153' #Puppy default filenames... #Note, the 'SFS' files below are what the 'init' script in initrd.gz searches for, #for the partition, path and actual files loaded, see PUPSFS and ZDRV in /etc/rc.d/PUPSTATE DISTRO_PUPPYSFS='lupu_528.sfs' DISTRO_ZDRVSFS='zl528332.sfs' phpsysinfo-3.2.5/sample/distrotest/QTS/000077500000000000000000000000001265516077000200705ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/QTS/3.1.2.txt000066400000000000000000000120011265516077000212640ustar00rootroot00000000000000----------/etc/config/uLinux.conf---------- [System] Model = TS-439 Internal Model = TS-439 Server comment = american Version = 3.1.2 Build Number = 1014T Time Zone = America/Phoenix Enable Daylight Saving Time = TRUE Workgroup = DODOES Code Page = 437 System Device = /dev/sdx Test Mode = FALSE Auto Create Raid = raid0 Wan Access = TRUE Lan Access = TRUE Web Access Port = 8080 E2KEY Support = FALSE Rsync Support = TRUE Rsync Model = QNAP FS Type = ext3 Auto PowerOn = FALSE Quota Type = vfsv0 Write Connection Log = 0 Booting = 0 Server Name = american UPNP_UUID = 76c5f8aa-558a-40f7-a07e-3f4ea6ab79ff Redundant Power Enable = FALSE [Test] Test Program = /sbin/test/Self-test-main [NTP] USE NTP Server = FALSE NTP Server IP = pool.ntp.org Enable NTP Server = FALSE Server1 IP = Server2 IP = Sercer3 IP = Interval = 1 TimeUnit = DAY [Alert] Alert Level = 0 SMTP IP = 0.0.0.0 Alert Mail = SMS Mode = 0 [Network] Interface Number = 2 DNS = 0.0.0.0 WINS IP = 0.0.0.0 WINS Enable = False BONDING Support = TRUE BONDING01 = Interface1 BONDING02 = Interface2 Domain Name Server 1 = 0.0.0.0 Domain Name Server 2 = 0.0.0.0 [bond0] Bonding Mode = 4 Configure = TRUE Use DHCP = TRUE Usage = DHCP IP Address = 169.254.100.100 Subnet Mask = 255.255.0.0 Broadcast = 169.254.255.255 Gateway = 169.254.100.100 Speed = auto MTU = 1500 [eth0] Configure = False Use DHCP = TRUE Usage = DHCP IP Address = 169.254.100.100 Subnet Mask = 255.255.0.0 Broadcast = 192.168.255.255 Gateway = 169.254.100.100 Speed = auto MTU = 1500 [eth1] Configure = False Use DHCP = TRUE Usage = DHCP IP Address = 169.254.100.100 Subnet Mask = 255.255.0.0 Broadcast = 192.168.255.255 Gateway = 169.254.100.100 Speed = auto MTU = 1500 [Samba] Enable = TRUE [Appletalk] Enable = TRUE Default Zone = * [SNMP] Server Enable = FALSE [WebFS] Enable = TRUE Web Root Path = /WWW [QWEB] Enable = 1 Port = 80 [QPHOTO] Enable = TRUE [BTDownload] Enable = TRUE Max_Running = 3 Qget_Support = TRUE Download_Folder = /share/Qdownload/ Total Job = 0 Run List Job = 0 Pause List Job = 0 Finish List Job = 0 Overwrite List = 0 Max Download Rate = 0 Max Upload Rate = 0 Port Range From = 6881 Port Range To = 6999 UPnP Port Forwarding = 0 encrypt = 0 DT Time = 1 S1 Enable = 0 S2 Enable = 0 [NVR] Enable = FALSE Support = TRUE [Storage] Auto Init = FALSE Disk Drive Number = 4 Drive 1 = sda Drive 2 = sdb Drive 3 = sdc Drive 4 = sdd Disk Check On Boot = Error Auto Fix Disk Check Errors = TRUE Support RAID 5 = FALSE SUPPORT HOTSWAP = TRUE Support Hot Spare = FALSE Support LVM = FALSE Encrypt_sda3 = FALSE Encrypt_sdb3 = FALSE Encrypt_sdc3 = FALSE Encrypt_md0 = FALSE [Disk] Drive 1 EXIST = 1 Drive 2 EXIST = 1 Drive 3 EXIST = 1 Drive 4 EXIST = 0 Drive 5 EXIST = 0 Drive 13 EXIST = 0 Drive 9 EXIST = 1 [FTP] ServerName = ProFTPD Enable = False Port = 21 MaxInstances = 30 User = guest Group = guest DefaultRoot = /share MaxAnonymous = 30 AllowAnonymous = False Unicode = 0 CharsetRemote = 999 SSL MODE = 1 Passive Enabled = 1 Bandwidth Enabled = 0 Max connection per account = 10 EnableUserWanIp = FALSE WanIp = [DHCP Server] Enable = FALSE Start Range = 169.254.1.100 End Range = 169.254.1.200 Max Lease Time = 86400 [Printers] Support = FALSE Enable = False Name = Comment = Printer port on NAS Phy exist = 0 Phy exist2 = 0 Phy exist3 = 0 Phy exist4 = 0 Phy exist5 = 0 [LOGO] Show PIC Index = 1 PIC Counter = 10 Default LOGO Image Path = /etc/config/logo/default_logo_img.gif Upload LOGO Image Path = /etc/config/logo/upload_logo_img.gif PIC1 LOGO Image Path = /etc/config/logo/pic1_logo_img.gif PIC2 LOGO Image Path = /etc/config/logo/pic2_logo_img.gif PIC3 LOGO Image Path = /etc/config/logo/pic3_logo_img.gif PIC4 LOGO Image Path = /etc/config/logo/pic4_logo_img.gif PIC5 LOGO Image Path = /etc/config/logo/pic5_logo_img.gif LOGO Image Size Limitation = 20480 [UPS] Support = TRUE Serial UPS = FALSE Snmp UPS = TRUE Daemon Type = 1 UPS IP = 0.0.0.0 Enable = FALSE UPS Type = PhxTec-A1000 Shutdown System In = 5 ValidCOM = 1 AC Power = OK Battery Power = OK [Misc] Disk StandBy Timeout = 5 Disk StandBy Timeout Enable = TRUE Disk Free Size Alert = 3072 Disk Free Size Alert Enable = TRUE Buzzer Warning Enable = TRUE Wake On Lan = FALSE System Started = TRUE Configured = TRUE Reset Password Switch = TRUE Custom Temp = 0 system low temp = 40 system high temp = 48 [HWTEST] mini PCI = Agere Systems [MySQL] Enable = FALSE DB_Init = FALSE [LOGIN] SSH Enable = TRUE SSH Port = 22 TELNET Enable = FALSE TELNET Port = 13131 [Index] Qphoto_LOGO = FALSE Qdownlod_LOGO = FALSE [iSCSI] Company Info = 2004-04.com.qnap Model Name = TS-439 [END_FLAG] [usb copy] usb_copy_avail = 1 lock flag = 0 usb copying = 0 copy func old = 0 copy func = 0 internal = Qusb copy type = 0 [UPnP Service] Enable = TRUE [NFS] Enable = TRUE [TwonkyMedia] Enable = TRUE [iTune] Enable = TRUE Password Enabled = 0 Code Page = CP437 [Bonjour Service] Web = 1 Web Service Name = american SAMBA = 1 SAMBA Service Name = american(SAMBA) AFP = 1 AFP Service Name = american(AFP) SSH = 0 SSH Service Name = american(SSH) FTP = 0 FTP Service Name = american(FTP) [QRAID1] device name = phpsysinfo-3.2.5/sample/distrotest/Qubes/000077500000000000000000000000001265516077000205005ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Qubes/3.0.txt000066400000000000000000000006601265516077000215430ustar00rootroot00000000000000----------/etc/fedora-release---------- Qubes release 3.0 (R3.0) ----------/etc/os-release---------- NAME=Qubes VERSION="3.0 (R3.0)" ID=qubes VERSION_ID=3.0 PRETTY_NAME="Qubes 3.0 (R3.0)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:ITL:qubes:3.0" ----------/etc/qubes-release---------- Qubes release 3.0 (R3.0) ----------/etc/redhat-release---------- Qubes release 3.0 (R3.0) ----------/etc/system-release---------- Qubes release 3.0 (R3.0) phpsysinfo-3.2.5/sample/distrotest/ROSA/000077500000000000000000000000001265516077000201655ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/ROSA/2012.0.0-11-LTS.txt000066400000000000000000000030221265516077000224620ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch:core-4.1-amd64:core-4.1-noarch:cxx-3.1-amd64:cxx-3.1-noarch:cxx-3.2-amd64:cxx-3.2-noarch:graphics-3.1-amd64:graphics-3.1-noarch:graphics-3.2-amd64:graphics-3.2-noarch:lsb-2.0-amd64:lsb-2.0-noarch:lsb-3.0-amd64:lsb-3.0-noarch:lsb-3.1-amd64:lsb-3.1-noarch:lsb-3.2-amd64:lsb-3.2-noarch:lsb-4.0-amd64:lsb-4.0-noarch:lsb-4.1-amd64:lsb-4.1-noarch Distributor ID: RosaDesktop.Marathon Description: ROSA Linux 2012.0 Release: 2012.0 Codename: marathon ----------/etc/lsb-release---------- LSB_VERSION= DISTRIB_ID=RosaDesktop.Marathon DISTRIB_RELEASE=2012.0 DISTRIB_CODENAME=marathon DISTRIB_DESCRIPTION="ROSA Linux 2012.0" ----------/etc/version---------- 2012.0.0 11 rosalts ----------/etc/release---------- ROSA release 2012.0 (LTS) for x86_64 ----------/etc/mandrake-release---------- ROSA release 2012.0 (LTS) for x86_64 ----------/etc/mandrakelinux-release---------- ROSA release 2012.0 (LTS) for x86_64 ----------/etc/mandriva-release---------- ROSA release 2012.0 (LTS) for x86_64 ----------/etc/redhat-release---------- ROSA release 2012.0 (LTS) for x86_64 ----------/etc/os-release---------- NAME="ROSA Marathon" VERSION="Free 2012.0 LTS" ID=rosa VERSION_ID=2012lts PRETTY_NAME="ROSA Marathon Free 2012.0 LTS" ANSI_COLOR="1;43" CPE_NAME="cpe:/o:rosa:rosalinux:2012.0" HOME_URL="http://www.rosalinux.com/" BUG_REPORT_URL="https://bugs.rosalinux.com/" phpsysinfo-3.2.5/sample/distrotest/ROSA/2012.0.0-6-LTS.txt000066400000000000000000000014061265516077000224120ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: * Distributor ID: ROSA Description: ROSA Linux 2012.0 Release: 2012.0 Codename: turtle ----------/etc/lsb-release---------- LSB_VERSION= DISTRIB_ID=ROSA MarathonLinux DISTRIB_RELEASE=2012.0 DISTRIB_CODENAME=turtle DISTRIB_DESCRIPTION="ROSA Linux 2012.0" ----------/etc/version---------- 2012.0.0 6 rosalts ----------/etc/release---------- ROSA Linux release 2012.0 (LTS) for x86_64 ----------/etc/mandrake-release---------- ROSA Linux release 2012.0 (LTS) for x86_64 ----------/etc/mandrakelinux-release---------- ROSA Linux release 2012.0 (LTS) for x86_64 ----------/etc/mandriva-release---------- ROSA Linux release 2012.0 (LTS) for x86_64 ----------/etc/redhat-release---------- ROSA Linux release 2012.0 (LTS) for x86_64 phpsysinfo-3.2.5/sample/distrotest/ROSA/2012.1.0-20.txt000066400000000000000000000021611265516077000220260ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: * Distributor ID: RosaDesktop.Fresh Description: ROSA RosaDesktop.Fresh 2012.1 Release: 2012.1 Codename: belka ----------/etc/lsb-release---------- LSB_VERSION= DISTRIB_ID=RosaDesktop.Fresh DISTRIB_RELEASE=2012.1 DISTRIB_CODENAME=belka DISTRIB_DESCRIPTION="ROSA RosaDesktop.Fresh 2012.1" ----------/etc/version---------- 2012.1.0 20 rosa ----------/etc/release---------- ROSA Desktop Fresh R2 release 2012.1 for x86_64 ----------/etc/mandrake-release---------- ROSA Desktop Fresh R2 release 2012.1 for x86_64 ----------/etc/mandrakelinux-release---------- ROSA Desktop Fresh R2 release 2012.1 for x86_64 ----------/etc/mandriva-release---------- ROSA Desktop Fresh R2 release 2012.1 for x86_64 ----------/etc/redhat-release---------- ROSA Desktop Fresh R2 release 2012.1 for x86_64 ----------/etc/os-release---------- NAME="ROSA Desktop Fresh" VERSION="EE 2012.1 Desktop" ID=rosa VERSION_ID=2012.1 PRETTY_NAME="ROSA Desktop Fresh EE 2012.1 Desktop" ANSI_COLOR="1;43" CPE_NAME="cpe:/o:rosa:rosalinux:2012.1" HOME_URL="http://www.rosalinux.com/" BUG_REPORT_URL="https://bugs.rosalinux.com/" phpsysinfo-3.2.5/sample/distrotest/ROSA/6.5-Server.txt000066400000000000000000000014101265516077000224760ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: ROSAEnterpriseServer Description: ROSA Enterprise Linux Server release 6.5 (Helium) Release: 6.5 Codename: Helium ----------/etc/lsb-release---------- LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch ----------/etc/redhat-release---------- ROSA Enterprise Linux Server release 6.5 (Helium) ----------/etc/rosa-release---------- ROSA Enterprise Linux Server release 6.5 (Helium) ----------/etc/system-release---------- ROSA Enterprise Linux Server release 6.5 (Helium) phpsysinfo-3.2.5/sample/distrotest/Raspbian/000077500000000000000000000000001265516077000211605ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Raspbian/7.txt000066400000000000000000000005661265516077000220760ustar00rootroot00000000000000----------/etc/os-release---------- PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)" NAME="Raspbian GNU/Linux" VERSION_ID="7" VERSION="7 (wheezy)" ID=raspbian ID_LIKE=debian ANSI_COLOR="1;31" HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" ----------/etc/debian_version---------- 7.1 phpsysinfo-3.2.5/sample/distrotest/Raspbian/8.0.txt000066400000000000000000000007531265516077000222330ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Raspbian Description: Raspbian GNU/Linux 8.0 (jessie) Release: 8.0 Codename: jessie ----------/etc/os-release---------- PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)" NAME="Raspbian GNU/Linux" VERSION_ID="8" VERSION="8 (jessie)" ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" ----------/etc/debian_version---------- 8.0 phpsysinfo-3.2.5/sample/distrotest/RedFlag/000077500000000000000000000000001265516077000207255ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/RedFlag/8.0.txt000066400000000000000000000012421265516077000217720ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: 4.1 Distributor ID: Red Flag inWise Description: Red Flag Linux Release: v8.0 Codename: zhurong ----------/etc/lsb-release---------- LSB_VERSION=4.1 DISTRIB_ID="Red Flag inWise" DISTRIB_RELEASE=v8.0 DISTRIB_DESCRIPTION="Red Flag Linux" DISTRIB_CODENAME=zhurong ----------/etc/os-release---------- NAME="Red Flag inWise" ID=redflag PRETTY_NAME="Red Flag inWise" ANSI_COLOR="0;36" HOME_URL="http://www.redflag-linux.com/" SUPPORT_URL="http://www.redflag-linux.com/" ----------/etc/redflag-release---------- Red Flag inWise V8.0 (zhurong) ----------/etc/system-release---------- Red Flag inWise V8.0 (zhurong) v8.0-13.04.01.1305 phpsysinfo-3.2.5/sample/distrotest/RedHat/000077500000000000000000000000001265516077000205705ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/RedHat/6.0.txt000066400000000000000000000007441265516077000216410ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch Distributor ID: RedHatEnterpriseServer Description: Red Hat Enterprise Linux Server release 6.0 (Santiago) Release: 6.0 Codename: Santiago ----------/etc/redhat-release---------- Red Hat Enterprise Linux Server release 6.0 (Santiago) ----------/etc/system-release---------- Red Hat Enterprise Linux Server release 6.0 (Santiago) phpsysinfo-3.2.5/sample/distrotest/RedHat/7.0-Beta.txt000066400000000000000000000012071265516077000225060ustar00rootroot00000000000000----------/etc/os-release---------- NAME="Red Hat Enterprise Linux Everything" VERSION="7.0 (Maipo)" ID="rhel" VERSION_ID="7.0" PRETTY_NAME="Red Hat Enterprise Linux Everything 7.0 (Maipo)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:redhat:enterprise_linux:7.0:beta:everything" REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7" REDHAT_BUGZILLA_PRODUCT_VERSION=7.0 REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux" REDHAT_SUPPORT_PRODUCT_VERSION=7.0 ----------/etc/redhat-release---------- Red Hat Enterprise Linux Everything release 7.0 Beta (Maipo) ----------/etc/system-release---------- Red Hat Enterprise Linux Everything release 7.0 Beta (Maipo) phpsysinfo-3.2.5/sample/distrotest/SMEServer/000077500000000000000000000000001265516077000212345ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/SMEServer/8.1beta3.txt000066400000000000000000000006751265516077000232320ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch Distributor ID: SMEServer Description: SME Server release 8.1beta3 Release: 8.1beta3 Codename: n/a ----------/etc/e-smith-release---------- SME Server release 8.1beta3 ----------/etc/redhat-release---------- SME Server release 8.1beta3 phpsysinfo-3.2.5/sample/distrotest/SMEServer/9.0beta3.txt000066400000000000000000000004201265516077000232160ustar00rootroot00000000000000----------/etc/centos-release---------- CentOS release 6.5 (Final) ----------/etc/e-smith-release---------- SME Server release 9.0beta3 ----------/etc/redhat-release---------- SME Server release 9.0beta3 ----------/etc/system-release---------- SME Server release 9.0beta3 phpsysinfo-3.2.5/sample/distrotest/SMS/000077500000000000000000000000001265516077000200635ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/SMS/2.0.5.txt000066400000000000000000000006401265516077000212660ustar00rootroot00000000000000----------/etc/os-release---------- NAME=SMS VERSION="2.0.5" ID=sms VERSION_ID=2.0.5 PRETTY_NAME="Superb! Mini Server 2.0" ANSI_COLOR="0;34" CPE_NAME="cpe:/o:superb_mini_server:sms:2.0" HOME_URL="http://sms.it-ccs.com/" SUPPORT_URL="http://sms.it-ccs.com/forum/" BUG_REPORT_URL="http://sms.it-ccs.com/forum/" ----------/etc/slackware-version---------- Slackware 14.0 ----------/etc/sms-version---------- SMS64 2.0.5 phpsysinfo-3.2.5/sample/distrotest/Sabayon/000077500000000000000000000000001265516077000210155ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Sabayon/14.01.txt000066400000000000000000000011641265516077000222230ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: n/a Distributor ID: Sabayon Description: Sabayon Linux amd64 14.01 Release: n/a Codename: n/a ----------/etc/gentoo-release---------- Gentoo Base System release 2.2 ----------/etc/lsb-release---------- DISTRIB_ID="Sabayon" ----------/etc/os-release---------- NAME=Sabayon ID=sabayon PRETTY_NAME="Sabayon/Linux" ANSI_COLOR="1;32" HOME_URL="http://www.sabayon.org/" SUPPORT_URL="http://forum.sabayon.org/" BUG_REPORT_URL="https://bugs.sabayon.org/" ----------/etc/sabayon-release---------- Sabayon Linux amd64 14.01 ----------/etc/system-release---------- Sabayon Linux amd64 14.01 phpsysinfo-3.2.5/sample/distrotest/Salix/000077500000000000000000000000001265516077000205015ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Salix/14.0.txt000066400000000000000000000007451265516077000216320ustar00rootroot00000000000000----------/etc/os-release---------- NAME=Slackware VERSION="14.0" ID=slackware VERSION_ID=14.0 PRETTY_NAME="Slackware 14.0" ANSI_COLOR="0;34" CPE_NAME="cpe:/o:slackware:slackware_linux:14.0" HOME_URL="http://slackware.com/" SUPPORT_URL="http://www.linuxquestions.org/questions/slackware-14/" BUG_REPORT_URL="http://www.linuxquestions.org/questions/slackware-14/" ----------/etc/slackware-version---------- Slackware 14.0 ----------/etc/salix-update-notifier.conf---------- interval=2h phpsysinfo-3.2.5/sample/distrotest/Scientific/000077500000000000000000000000001265516077000215015ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Scientific/6.3-lsb.txt000066400000000000000000000006461265516077000233340ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: Scientific Description: Scientific Linux release 6.3 (Carbon) Release: 6.3 Codename: Carbon ----------/etc/redhat-release---------- Scientific Linux release 6.3 (Carbon) ----------/etc/system-release---------- Scientific Linux release 6.3 (Carbon) phpsysinfo-3.2.5/sample/distrotest/Scientific/6.3.txt000066400000000000000000000002341265516077000225470ustar00rootroot00000000000000----------/etc/redhat-release---------- Scientific Linux release 6.3 (Carbon) ----------/etc/system-release---------- Scientific Linux release 6.3 (Carbon) phpsysinfo-3.2.5/sample/distrotest/Scientific/6.4.txt000066400000000000000000000012311265516077000225460ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: ScientificFermi Description: Scientific Linux Fermi release 6.4 (Ramsey) Release: 6.4 Codename: Ramsey ----------/etc/lsb-release---------- LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch ----------/etc/redhat-release---------- Scientific Linux Fermi release 6.4 (Ramsey) ----------/etc/system-release---------- Scientific Linux Fermi release 6.4 (Ramsey) phpsysinfo-3.2.5/sample/distrotest/Semplice/000077500000000000000000000000001265516077000211625ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Semplice/6.txt000066400000000000000000000010521265516077000220660ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Semplice Description: Semplice 6 Release: 6 Codename: heaven ----------/etc/lsb-release---------- DISTRIB_ID=Semplice DISTRIB_RELEASE=6 DISTRIB_CODENAME=heaven DISTRIB_DESCRIPTION="Semplice 6" ----------/etc/os-release---------- NAME=Semplice VERSION="6" ID=semplice VERSION_ID=6 PRETTY_NAME="Semplice 6 (Stairway to Heaven)" HOME_URL="http://semplice-linux.org" BUG_REPORT_URL="https://github.com/semplice" ----------/etc/debian_version---------- jessie/sid ----------/etc/semplice_version---------- 6 phpsysinfo-3.2.5/sample/distrotest/Slackware/000077500000000000000000000000001265516077000213355ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Slackware/14.0.txt000066400000000000000000000006451265516077000224650ustar00rootroot00000000000000----------/etc/os-release---------- NAME=Slackware VERSION="14.0" ID=slackware VERSION_ID=14.0 PRETTY_NAME="Slackware 14.0" ANSI_COLOR="0;34" CPE_NAME="cpe:/o:slackware:slackware_linux:14.0" HOME_URL="http://slackware.com/" SUPPORT_URL="http://www.linuxquestions.org/questions/slackware-14/" BUG_REPORT_URL="http://www.linuxquestions.org/questions/slackware-14/" ----------/etc/slackware-version---------- Slackware 14.0 phpsysinfo-3.2.5/sample/distrotest/Slax/000077500000000000000000000000001265516077000203305ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Slax/7.0.1.txt000066400000000000000000000007341265516077000215400ustar00rootroot00000000000000----------/etc/os-release---------- NAME=Slackware VERSION="14.0" ID=slackware VERSION_ID=14.0 PRETTY_NAME="Slackware 14.0" ANSI_COLOR="0;34" CPE_NAME="cpe:/o:slackware:slackware_linux:14.0" HOME_URL="http://slackware.com/" SUPPORT_URL="http://www.linuxquestions.org/questions/slackware-14/" BUG_REPORT_URL="http://www.linuxquestions.org/questions/slackware-14/" ----------/etc/slackware-version---------- Slackware 14.0 ----------/etc/slax-version---------- Slax 7.0.1 32bit phpsysinfo-3.2.5/sample/distrotest/SliTaz/000077500000000000000000000000001265516077000206275ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/SliTaz/2014.02.16-cooking.txt000066400000000000000000000000601265516077000240460ustar00rootroot00000000000000----------/etc/slitaz-release---------- cooking phpsysinfo-3.2.5/sample/distrotest/Solus/000077500000000000000000000000001265516077000205265ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Solus/1.0-rc1.txt000066400000000000000000000013451265516077000222530ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: 1.4 Distributor ID: Solus Description: Solus Operating System Release: 1.0 Codename: shannon ----------/etc/lsb-release---------- LSB_VERSION=1.4 DISTRIB_ID=Solus DISTRIB_DESCRIPTION="Solus Operating System" DISTRIB_RELEASE=1.0 DISTRIB_CODENAME=shannon ----------/etc/os-release---------- NAME="Solus Operating System" VERSION=1.0 ID=solus-project VERSION_ID=1.0 PRETTY_NAME="Solus Operating System 1.0" ANSI_COLOR="1;34" HOME_URL="https://www.solus-project.com" SUPPORT_URL="https://www.solus-project.com/forums/" BUG_REPORT_URL="https://www.solus-project.com/project/core" ----------/etc/solus-release---------- Solus Operating System 1.0 ----------/etc/image-version---------- 0.201544.4.0 phpsysinfo-3.2.5/sample/distrotest/SolusOS/000077500000000000000000000000001265516077000207705ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/SolusOS/1.3.txt000066400000000000000000000004761265516077000220410ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: SolusOS Description: SolusOS Eveline 64-bit Release: 1.3 Codename: Eveline ----------/etc/lsb-release---------- DISTRIB_ID=SolusOS DISTRIB_RELEASE=1.3 DISTRIB_CODENAME=Eveline DISTRIB_DESCRIPTION="SolusOS Eveline 64-bit" ----------/etc/debian_version---------- 6.0.6 phpsysinfo-3.2.5/sample/distrotest/SolusOS/2-alpha7.txt000066400000000000000000000012131265516077000230410ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: SolusOS Description: SolusOS 2 Alpha 7 Release: Alpha Codename: Two ----------/etc/lsb-release---------- DISTRIB_ID=SolusOS DISTRIB_RELEASE=Alpha DISTRIB_CODENAME=Two DISTRIB_DESCRIPTION="SolusOS 2 Alpha 7" ----------/etc/os-release---------- PRETTY_NAME="Debian GNU/Linux 7.0 (wheezy)" NAME="Debian GNU/Linux" VERSION_ID="7.0" VERSION="7.0 (wheezy)" ID=ubuntu ANSI_COLOR="1;31" HOME_URL="http://www.debian.org/" SUPPORT_URL="http://www.debian.org/support/" BUG_REPORT_URL="http://bugs.debian.org/" ----------/etc/debian_version---------- 7.0 ----------/etc/solusos_version---------- SolusOS 2 Alpha phpsysinfo-3.2.5/sample/distrotest/SolydXK/000077500000000000000000000000001265516077000207565ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/SolydXK/2014.01-K.txt000066400000000000000000000014761265516077000225240ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: SolydXK Description: SolydXK Release: 1 Codename: testing ----------/etc/lsb-release---------- DISTRIB_ID=SolydXK DISTRIB_RELEASE=1 DISTRIB_CODENAME=testing DISTRIB_DESCRIPTION="SolydXK" ----------/etc/os-release---------- PRETTY_NAME="Debian GNU/Linux jessie/sid" NAME="Debian GNU/Linux" ID=debian ANSI_COLOR="1;31" HOME_URL="http://www.debian.org/" SUPPORT_URL="http://www.debian.org/support/" BUG_REPORT_URL="http://bugs.debian.org/" ----------/etc/debian_version---------- jessie/sid ----------/etc/solydxk/info---------- RELEASE=1 CODENAME=testing EDITION=solydx64 DESCRIPTION="SolydXK" DESKTOP=KDE DISTRIB_ID=SolydXK TOOLKIT=QT NEW_FEATURES_URL=http://www.solydxk.com RELEASE_NOTES_URL=http://www.solydxk.com USER_GUIDE_URL=http://www.solydxk.com GRUB_TITLE=SolydX 64-bit phpsysinfo-3.2.5/sample/distrotest/SolydXK/2014.01-X.txt000066400000000000000000000011061265516077000225270ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: SolydXK Description: SolydXK Release: 1 Codename: testing ----------/etc/lsb-release---------- DISTRIB_ID=SolydXK DISTRIB_RELEASE=1 DISTRIB_CODENAME=testing DISTRIB_DESCRIPTION="SolydXK" ----------/etc/debian_version---------- jessie/sid ----------/etc/solydxk/info---------- RELEASE=1 CODENAME=testing EDITION=solydx64 DESCRIPTION="SolydXK" DESKTOP=Xfce DISTRIB_ID=SolydXK TOOLKIT=GTK NEW_FEATURES_URL=http://www.solydxk.com RELEASE_NOTES_URL=http://www.solydxk.com USER_GUIDE_URL=http://www.solydxk.com GRUB_TITLE=SolydX 64-bit phpsysinfo-3.2.5/sample/distrotest/StartOS/000077500000000000000000000000001265516077000207605ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/StartOS/5.0.txt000066400000000000000000000002161265516077000220220ustar00rootroot00000000000000----------lsb_release -a---------- StartOS release 5.0 (Braveheart) ----------/etc/startos-release---------- StartOS release 5.0 (Braveheart) phpsysinfo-3.2.5/sample/distrotest/StartOS/6.0.txt000066400000000000000000000002201265516077000220160ustar00rootroot00000000000000----------lsb_release -a---------- StartOS release 6.0 (Dark Knight) ----------/etc/startos-release---------- StartOS release 6.0 (Dark Knight) phpsysinfo-3.2.5/sample/distrotest/SteamOS/000077500000000000000000000000001265516077000207345ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/SteamOS/1.0-beta.txt000066400000000000000000000011611265516077000227030ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: SteamOS Description: SteamOS 1.0 Release: 1.0 Codename: alchemist ----------/etc/lsb-release---------- DISTRIB_ID=SteamOS DISTRIB_RELEASE=1.0 DISTRIB_CODENAME=alchemist DISTRIB_DESCRIPTION="SteamOS 1.0" ----------/etc/os-release---------- PRETTY_NAME="SteamOS GNU/Linux 7 (alchemist)" NAME="SteamOS GNU/Linux" VERSION_ID="1" VERSION="1 (alchemist)" ID=steamos ID_LIKE=debian ANSI_COLOR="1;31" HOME_URL="http://www.steampowered.com/" SUPPORT_URL="http://support.steampowered.com/" BUG_REPORT_URL="http://support.steampowered.com/" ----------/etc/debian_version---------- 7.1 phpsysinfo-3.2.5/sample/distrotest/Synology/000077500000000000000000000000001265516077000212445ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Synology/4.1-2668.txt000066400000000000000000000125631265516077000227210ustar00rootroot00000000000000----------/etc/synoinfo.conf---------- unique="synology_bromolow_3612xs" company_title="Synology" # system options timezone="Sarajevo" language="def" maillang="enu" codepage="plk" defquota="5" defshare="public" defgroup="users" defright="writeable" eventsmtp="" eventmail1="" eventmail2="" eventauth="no" eventuser="" eventpasscrypted="" configured="yes" admin_port="5000" secure_admin_port="5001" pswdprotect="no" supportweb="yes" supportphoto="yes" support_download="yes" supportmysql="yes" supportquota="yes" supportitunes="yes" supportddns="yes" supportfilestation="yes" supportssl="yes" supportssh="yes" supportHTTPS="yes" supportNFS="yes" supportrsrcmon="yes" supportmemtest="yes" supportmount="yes" # service options runsamba="yes" runapple="yes" runftpd="no" ftpport="21" syslogport="514" ftp_trans_ext_ip="no" ftpflowcontrol="no" ftpmaxuploadrate="0" ftpmaxdownloadrate="0" ftpanonymouslogin="no" diskcache="on" standbytimer="20" standby_force="yes" enableguest="no" usbbkp="yes" usbcopy="no" netbkp="yes" runnetbkp="no" runmysql="no" supportmediaservice="yes" runmediaservice="no" supportups="yes" ddns_update="no" ddns_select="" ddns_reclaim_interval_mins="3" portmap_admin="no" portmap_ftp="no" portmap_http="no" portmap_http_add="no" portmap_netbkp="no" portmap_netbkp_encrypt="no" php_openbasedir_customize="no" ss_sync_event_player="yes" ss_cms="yes" ss_vs="yes" run_bonjour_printer_service="yes" tunnel_enable="no" printer_driver_host="http://download.synology.com/airprint/DSM4.1" # service limitations maxaccounts="4096" maxgroups="512" maxshares="512" maxservices="1024" maxdisks="12" maxprinters="2" maxlogsize="64" maxvhost="30" # UI options (limitations) company="synology" supplang="enu,cht,chs,krn,ger,fre,ita,spn,jpn,dan,nor,sve,nld,rus,plk,ptb,ptg,hun,trk,csy" product="DiskStation" manager="Synology DiskStation" vender="Synology Inc." mailfrom="Synology DiskStation" updateurl="http://www.synology.com/" win98autodisconnect="yes" wins="none" AppleTalk="eth0" default_ip="dhcp" default_mask="" default_gateway="" hostname="DiskStation" ntpdate_period="daily" ntpdate_server="" ntpdate_server_backup="" run_ntp_client="no" run_ntp_server="no" sdkversion="no" allowanonymous="yes" httpport="80" defaultfs="ext4" addport="no" supportuart2="yes" runafp="yes" oplock_disabled="no" # SMS options smsserver="clickatell" smsport="80" smstemplate="https://api.clickatell.com/http/sendmsg?user=@@USER@@&password=@@PASS@@&api_id=3148203&to=@@PHONE@@&text=@@TEXT@@" smssepchar="+" smsuser="" smspass="" smsphone1="" smsphone2="" smsssl="yes" smstest="no" smsneedinterval="no" smsinterval="1" # VS60 options vs_version="1.1" # DSM auto update default server rss_server="http://update.synology.com/autoupdate/genRSS.php" # Synology package update default server package_server="http://update.synology.com/packageupdate/getpackages.php" # Push Service Server address pushservice_server_1="https://sns1.synology.com:8089/api/" pushservice_server_2="https://sns2.synology.com:8089/api/" # Redirect Server address redirect_server="https://gofile.me/" package_update_channel="stable" upnpmodelurl="" upnpmodelname="DS3612xs" upnpmanufacturerurl="http://www.synology.com/" runupnp="no" upnpfriendlyname="DiskStation Device" upnpdevicetype="DiskStation" upnpmodeldescription="DiskStation UPnP Device" esataportcfg="0xff000" support_wireless="yes" support_synopkg="yes" disk_warning_percent="0.01" vpn_conn_max="20" eth3_mtu="1500" eth0_wol_options="d" supportldap="yes" supportfileindex="yes" support_timebkp_server="yes" support_transcode_mp3="yes" supportsmart="yes" supportphotopersonal="yes" s2s_task_max="16" supportext4="yes" support_iscsi_target="yes" synobios="bromolow" supportMFP="yes" eth5_mtu="1500" pgsql_sys_max_connections="100" eth2_wol_options="d" sysctl_kernel.sem="250 32000 32 256" supportntfswrite="yes" audio_support_eq="yes" support_syno_hybrid_raid="yes" max_volumes="1024" eth0_mtu="1500" supportSATA="yes" supportsystemperature="yes" eth7_mtu="1500" timebkp_max_task="16" supportrcpower="yes" support_wol="yes" support_ha="yes" support_vaai="yes" support_wimax="yes" supportsystempwarning="yes" use_reserved_more_gdt="yes" eth2_mtu="1500" supportMTU="yes" surveillance_camera_max="50" supportsurveillance="yes" s2s_watches_max="1024000" sfmaxworkercount="128" supportraidcross="yes" supportVLAN="yes" support_iscsi_lunbkp="yes" enableRCPower="no" support_share_encryption="yes" usbportcfg="0xf00000" support_webinstall="yes" support_s2s="yes" maxlanport="8" supportdomain="yes" supportvideostation="yes" mfp_manualtimer="300" eth4_mtu="1500" supportbootinst="yes" eth1_wol_options="d" support_synoacl="yes" eunitseq="sdm,sdq" max_iscsitrgs="64" max_iscsiluns="512" supportTc="yes" supportstartupd="yes" buzzeroffcfg="0x00" supportsnapshot="yes" supportdcacheui="yes" support_iscsi_target_block="yes" mfp_autotimer="60" support_auto_poweron="yes" eth6_mtu="1500" eth3_wol_options="d" internalportcfg="0xfff" max_lunbkp_srv="16" wol_enabled_options="g" buzzeroffen="0x1f" support_fan_adjust_dual_mode="yes" eth1_mtu="1500" support_mtd_serial="yes" sfmaxusercount="16" php_cache_size="64" support_audio="yes" supportraid="yes" iscsi_target_type="lio" # Fixed items eventtest="off" codepage_apple="1850" usb_standbytimer="0" runweb="no" runphoto="no" runaudiostation="no" runsurveillance="no" runpgsql="yes" runssh="yes" ----------/etc/VERSION---------- majorversion="4" minorversion="1" buildphase="0" buildnumber="2668" builddate="2012/12/11" phpsysinfo-3.2.5/sample/distrotest/Tails/000077500000000000000000000000001265516077000204755ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Tails/0.22.1.txt000066400000000000000000000002071265516077000217550ustar00rootroot00000000000000----------/etc/os-release---------- TAILS_PRODUCT_NAME="Tails" TAILS_VERSION_ID="0.22.1" ----------/etc/debian_version---------- 6.0.8 phpsysinfo-3.2.5/sample/distrotest/Tanglu/000077500000000000000000000000001265516077000206535ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Tanglu/2.0-beta2.txt000066400000000000000000000011261265516077000227060ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Tanglu Description: Tanglu GNU/Linux 2 (Bartholomea Annulata) Release: 2 Codename: bartholomea ----------/etc/lsb-release---------- DISTRIB_ID=Tanglu DISTRIB_RELEASE=2 DISTRIB_CODENAME=bartholomea DISTRIB_DESCRIPTION="Tanglu GNU/Linux 2 (Bartholomea Annulata)" ----------/etc/os-release---------- PRETTY_NAME="Tanglu GNU/Linux 2 (Bartholomea Annulata)" NAME="Tanglu GNU/Linux" VERSION_ID="2" VERSION="2 (bartholomea)" ID=tanglu HOME_URL="http://www.tanglu.org/" BUG_REPORT_URL="http://bugs.tanglu.org/" ----------/etc/debian_version---------- 7.5 phpsysinfo-3.2.5/sample/distrotest/TinyCore/000077500000000000000000000000001265516077000211555ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/TinyCore/5.0.alpha4.txt000066400000000000000000000000751265516077000233720ustar00rootroot00000000000000----------/usr/share/doc/tc/release.txt---------- 5.0.alpha4 phpsysinfo-3.2.5/sample/distrotest/Tizen/000077500000000000000000000000001265516077000205125ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Tizen/2.2.0-Magnolia.txt000066400000000000000000000004321265516077000234360ustar00rootroot00000000000000----------/etc/os-release---------- NAME="Tizen" VERSION="2.2.0, Magnolia" ID=tizen PRETTY_NAME="Tizen Magnolia (2.2.0)" VERSION_ID="2.2.0" ----------/etc/system-release---------- Tizen release 2.2.0 (Magnolia) ----------/etc/tizen-release----------- Tizen release 2.2.0 (Magnolia) phpsysinfo-3.2.5/sample/distrotest/Tizen/2.2.0-Tizen.txt000066400000000000000000000004201265516077000227750ustar00rootroot00000000000000----------/etc/os-release---------- NAME="Tizen" VERSION="2.2.0, (Tizen)" ID=tizen PRETTY_NAME="Tizen 2.2.0 (Tizen)" VERSION_ID="2.2.0" ----------/etc/system-release---------- Tizen release 2.2.0 (Tizen) ----------/etc/tizen-release----------- Tizen release 2.2.0 (Tizen) phpsysinfo-3.2.5/sample/distrotest/Trisquel/000077500000000000000000000000001265516077000212315ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Trisquel/6.0.txt000066400000000000000000000007441265516077000223020ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Trisquel Description: Trisquel 6.0 Release: 6.0 Codename: toutatis ----------/etc/lsb-release---------- DISTRIB_ID=Trisquel DISTRIB_RELEASE=6.0 DISTRIB_CODENAME=toutatis DISTRIB_DESCRIPTION="Trisquel 6.0" ----------/etc/os-release---------- NAME="Ubuntu" VERSION="12.04.1 LTS, Precise Pangolin" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu precise (12.04.1 LTS)" VERSION_ID="12.04" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Turbo/000077500000000000000000000000001265516077000205145ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Turbo/12.5.txt000066400000000000000000000001221265516077000216350ustar00rootroot00000000000000----------/etc/turbolinux-release---------- Turbolinux Client 12.5 (Magny-cours2) phpsysinfo-3.2.5/sample/distrotest/Ubuntu/000077500000000000000000000000001265516077000207035ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Ubuntu/10.04.txt000066400000000000000000000003011265516077000221000ustar00rootroot00000000000000----------/etc/lsb-release---------- DISTRIB_ID=Ubuntu DISTRIB_RELEASE=10.04 DISTRIB_CODENAME=lucid DISTRIB_DESCRIPTION="Ubuntu 10.04.3 LTS" ----------/etc/debian_version---------- squeeze/sid phpsysinfo-3.2.5/sample/distrotest/Ubuntu/12.04.txt000066400000000000000000000007561265516077000221200ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Ubuntu Description: Ubuntu 12.04.3 LTS Release: 12.04 Codename: precise ----------/etc/lsb-release---------- DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.04 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Ubuntu 12.04.3 LTS" ----------/etc/os-release---------- NAME="Ubuntu" VERSION="12.04.3 LTS, Precise Pangolin" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu precise (12.04.3 LTS)" VERSION_ID="12.04" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Ubuntu/13.10.txt000066400000000000000000000011031265516077000221010ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Ubuntu Description: Ubuntu 13.10 Release: 13.10 Codename: saucy ----------/etc/lsb-release---------- DISTRIB_ID=Ubuntu DISTRIB_RELEASE=13.10 DISTRIB_CODENAME=saucy DISTRIB_DESCRIPTION="Ubuntu 13.10" ----------/etc/os-release---------- NAME="Ubuntu" VERSION="13.10, Saucy Salamander" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 13.10" VERSION_ID="13.10" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/UltimateEdition/000077500000000000000000000000001265516077000225215ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/UltimateEdition/3.9.txt000066400000000000000000000010571265516077000235760ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Ultimate_Edition Description: Ultimate Edition 3.9 Release: 3.9 Codename: raring ----------/etc/lsb-release---------- DISTRIB_ID=Ultimate_Edition DISTRIB_RELEASE=3.9 DISTRIB_CODENAME=raring DISTRIB_DESCRIPTION="Ultimate Edition 3.9" ----------/etc/os-release---------- NAME="Ultimate_Edition" VERSION=ultimate-edition-3.9-x64, "raring" ID=ultimate ID_LIKE=debian PRETTY_NAME="Ultimate_Edition (ultimate-edition-3.9-x64)" VERSION_ID=ultimate-edition-3.9-x64 ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Vector/000077500000000000000000000000001265516077000206635ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Vector/647.0.txt000066400000000000000000000002301265516077000220750ustar00rootroot00000000000000----------/etc/slackware-version---------- Slackware 13.37.0 ----------/etc/vector-version---------- Vlocity Linux 647.0 STD FINAL built on JUL-12-2012 phpsysinfo-3.2.5/sample/distrotest/VortexBox/000077500000000000000000000000001265516077000213615ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/VortexBox/2.2.txt000066400000000000000000000003771265516077000224320ustar00rootroot00000000000000----------/etc/fedora-release---------- Fedora release 16 (Verne) ----------/etc/redhat-release---------- Fedora release 16 (Verne) ----------/etc/system-release---------- Fedora release 16 (Verne) ----------/etc/vortexbox/vortexbox-version---------- 2.2 phpsysinfo-3.2.5/sample/distrotest/VortexBox/2.3-beta.txt000066400000000000000000000012461265516077000233400ustar00rootroot00000000000000----------/etc/fedora-release---------- Fedora release 20 (Heisenbug) ----------/etc/os-release---------- NAME=Fedora VERSION="20 (Heisenbug)" ID=fedora VERSION_ID=20 PRETTY_NAME="Fedora 20 (Heisenbug)" ANSI_COLOR="0;34" CPE_NAME="cpe:/o:fedoraproject:fedora:20" HOME_URL="https://fedoraproject.org/" BUG_REPORT_URL="https://bugzilla.redhat.com/" REDHAT_BUGZILLA_PRODUCT="Fedora" REDHAT_BUGZILLA_PRODUCT_VERSION=20 REDHAT_SUPPORT_PRODUCT="Fedora" REDHAT_SUPPORT_PRODUCT_VERSION=20 ----------/etc/redhat-release---------- Fedora release 20 (Heisenbug) ----------/etc/system-release---------- Fedora release 20 (Heisenbug) ----------/etc/vortexbox/vortexbox-version---------- 2.3 phpsysinfo-3.2.5/sample/distrotest/Zenwalk/000077500000000000000000000000001265516077000210345ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Zenwalk/7.4.txt000066400000000000000000000003641265516077000221100ustar00rootroot00000000000000----------/etc/os-release---------- NAME=Zenwalk VERSION="7.4" ID=Zenwalk VERSION_ID="7.4" PRETTY_NAME="Zenwalk 7.4" HOME_URL="http://www.zenwalk.org/" ----------/etc/slackware-version---------- 7.4 ----------/etc/zenwalk-version---------- 7.4 phpsysinfo-3.2.5/sample/distrotest/Zorin/000077500000000000000000000000001265516077000205225ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/Zorin/6.txt000066400000000000000000000007241265516077000214330ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Zorin Description: Zorin OS 6 Release: 6 Codename: precise ----------/etc/lsb-release---------- DISTRIB_ID=Zorin DISTRIB_RELEASE=6 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Zorin OS 6" ----------/etc/os-release---------- NAME="Ubuntu" VERSION="12.04.1 LTS, Precise Pangolin" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu precise (12.04.1 LTS)" VERSION_ID="12.04" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Zorin/7.txt000066400000000000000000000010661265516077000214340ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Zorin Description: Zorin OS 7 Release: 7 Codename: raring ----------/etc/lsb-release---------- DISTRIB_ID=Zorin DISTRIB_RELEASE=7 DISTRIB_CODENAME=raring DISTRIB_DESCRIPTION="Zorin OS 7" ----------/etc/os-release---------- NAME="Ubuntu" VERSION="13.04, Raring Ringtail" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 13.04" VERSION_ID="13.04" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/Zorin/8.txt000066400000000000000000000010451265516077000214320ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: Zorin Description: Zorin OS 8 Release: 8 Codename: saucy ----------/etc/lsb-release---------- DISTRIB_ID=Zorin DISTRIB_RELEASE=8 DISTRIB_CODENAME=saucy DISTRIB_DESCRIPTION="Zorin OS 8" ----------/etc/os-release---------- NAME="Zorin OS" VERSION="8" ID=Zorin OS ID_LIKE=ubuntu PRETTY_NAME="Zorin OS 8" VERSION_ID="8" HOME_URL="http://www.zorin-os.com/" SUPPORT_URL="http://www.zorin-os.com/help/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/antiX/000077500000000000000000000000001265516077000205045ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/antiX/2012.07.06.txt000066400000000000000000000004071265516077000223030ustar00rootroot00000000000000----------/etc/os-release---------- PRETTY_NAME="Debian GNU/Linux wheezy/sid" NAME="Debian GNU/Linux" ID=debian ANSI_COLOR="1;31" ----------/etc/antix-version---------- antiX-full Edelweißpiraten 06 August 2012 ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/elementaryOS/000077500000000000000000000000001265516077000220305ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/elementaryOS/0.2.txt000066400000000000000000000007411265516077000230720ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: elementary OS Description: elementary OS Luna Release: 0.2 Codename: luna ----------/etc/lsb-release---------- DISTRIB_ID="elementary OS" DISTRIB_RELEASE=0.2 DISTRIB_CODENAME=luna DISTRIB_DESCRIPTION="elementary OS Luna" ----------/etc/os-release---------- NAME="elementary OS" VERSION="0.2 Luna" ID=elementary OS ID_LIKE=ubuntu PRETTY_NAME="elementary OS Luna" VERSION_ID="0.2" ----------/etc/debian_version---------- wheezy/sid phpsysinfo-3.2.5/sample/distrotest/gNewSense/000077500000000000000000000000001265516077000213175ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/gNewSense/3.0.txt000066400000000000000000000005241265516077000223610ustar00rootroot00000000000000----------lsb_release -a---------- Distributor ID: gNewSense Description: gNewSense GNU/Linux 3.0 (parkes) Release: 3.0 Codename: parkes ----------/etc/lsb-release---------- DISTRIB_ID=gNewSense DISTRIB_RELEASE=3.0 DISTRIB_CODENAME=parkes DISTRIB_DESCRIPTION="gNewSense GNU/Linux 3.0 (parkes)" ----------/etc/debian_version---------- 6.0.6 phpsysinfo-3.2.5/sample/distrotest/openSUSE/000077500000000000000000000000001265516077000210625ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/distrotest/openSUSE/11.3.txt000066400000000000000000000003331265516077000222040ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: n/a Distributor ID: SUSE LINUX Description: openSUSE 11.3 (x86_64) Release: 11.3 Codename: n/a ----------/etc/SuSE-release---------- openSUSE 11.3 (x86_64) VERSION = 11.3 phpsysinfo-3.2.5/sample/distrotest/openSUSE/13.1.txt000066400000000000000000000010001265516077000221740ustar00rootroot00000000000000----------lsb_release -a---------- LSB Version: n/a Distributor ID: openSUSE project Description: openSUSE 13.1 Milestone 3 (x86_64) Release: 13.1 Codename: Bottle ----------/etc/SuSE-release---------- openSUSE 13.1 Milestone 3 (x86_64) VERSION = 13.1 CODENAME = Bottle ----------/etc/os-release---------- NAME=openSUSE VERSION="13.1 Milestone 3 (Bottle)" VERSION_ID="13.1milstone3" PRETTY_NAME="openSUSE 13.1 Milestone 3 (Bottle) (x86_64)" ID=opensuse ANSI_COLOR="0;32" CPE_NAME="cpe:/o:opensuse:opensuse:13.1" phpsysinfo-3.2.5/sample/logs/000077500000000000000000000000001265516077000161615ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/logs/log_android21.txt000066400000000000000000000303521265516077000213510ustar00rootroot00000000000000---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /system/build.prop ##### Merging of the /util/data/semc_kernel_time_stamp.prop file ##### ro.build.date=Fri Dec 17 18:35:45 2010 ro.build.date.utc=1292582145 ro.build.user=SEMCUser ro.build.host=SEMCHost ##### Final patch of properties ##### ro.build.product=E15i ro.build.description=E15i-user 2.1-update1 2.1.1.A.0.16 238 test-keys ro.product.brand=SEMC ro.product.name=E15i_1252-3596 ro.product.device=E15i ro.product.board=delta ro.build.version.incremental=73_d ro.build.tags=release-keys ro.build.fingerprint=SEMC/E15i_1252-3596/E15i/delta:2.1-update1/2.1.1.A.0.16/73_d:user/release-keys ######################## Customized property values ######################### ro.semc.version.cust=1252-3596 ro.semc.version.cust_revision=R4B ro.semc.enable.fast_dormancy=true ro.config.ringtone=t-mobile_ringtone.ogg ro.config.notification_sound=t-mobile_message.ogg ro.camera.sound.forced=1 ro.voicemail.dialing-number=+48602950000 ######################################################################### #ro.config.ringtone=sony_ericsson.ogg #ro.config.notification_sound=notification.ogg ro.semc.content.number=PA4 ################# Updating of the SW Version ################# ro.semc.version.fs_revision=2.1.1.A.0.16 ro.build.id=2.1.1.A.0.16 ro.build.display.id=2.1.1.A.0.16 ##### Values from product package metadata ##### ro.product.model=E15i ro.semc.ms_type_id=AAD-3880091-BV ro.semc.version.fs=ORANGE-1-8 ro.semc.product.name=Xperia X8 ro.semc.product.device=E15 # begin build properties # autogenerated by buildinfo.sh #ro.build.id=2.1.1.A.0.16 #ro.build.display.id=2.1.1.A.0.16 #ro.build.version.incremental=238 ro.build.version.sdk=7 ro.build.version.codename=REL ro.build.version.release=2.1-update1 #ro.build.date=Sun Jan 30 20:24:08 CST 2011 #ro.build.date.utc=1296390248 ro.build.type=user #ro.build.user=hudsonslave #ro.build.host=cnbjlx3512 #ro.build.tags=test-keys #ro.product.model=shakira #ro.product.brand=Sony-Ericsson #ro.product.name=shakira #ro.product.device=shakira #ro.product.board=delta ro.product.cpu.abi=armeabi ro.product.manufacturer=Sony Ericsson ro.product.locale.language=en ro.product.locale.region=GB ro.wifi.channels= ro.board.platform=msm7k # ro.build.product is obsolete; use ro.product.device #ro.build.product=shakira # Do not try to parse ro.build.description or .fingerprint #ro.build.description=shakira-user 2.1-update1 2.1.1.A.0.16 238 test-keys #ro.build.fingerprint=Sony-Ericsson/shakira/shakira/delta:2.1-update1/2.1.1.A.0.16/238:user/test-keys # end build properties # # system.prop for shakira # rild.libpath=/system/lib/libril-qc-1.so rild.libargs=-d /dev/smd0 wifi.interface = wlan0 ro.sf.lcd_density=160 ro.semc.def_screen_orientation=sensor ro.semc.timescape_keys=X8_key ro.semc.timescape_model=1_handed ro.semc.sound_effects_enabled=false ro.workaround.noautofocus=1 persist.rild.nitz_plmn= persist.rild.nitz_long_ons_0= persist.rild.nitz_long_ons_1= persist.rild.nitz_long_ons_2= persist.rild.nitz_long_ons_3= persist.rild.nitz_short_ons_0= persist.rild.nitz_short_ons_1= persist.rild.nitz_short_ons_2= persist.rild.nitz_short_ons_3= persist.ro.ril.sms_sync_sending=1 DEVICE_PROVISIONED=1 # Constant values for Battery test in Service menu. ro.semc.batt.capacity=950 ro.semc.batt.test.consumption=150 ro.semc.batt.test.z_threshold=30 dalvik.vm.heapsize=24m kernel.log=default ro.telephony.call_ring.multiple=false debug.sf.hw=1 keyguard.no_require_sim=true # # ADDITIONAL_BUILD_PROPERTIES # #ro.config.notification_sound=OnTheHunt.ogg ro.config.alarm_alert=Alarm_Classic.ogg ro.setupwizard.mode=DISABLED ro.com.google.gmsversion=2.1_r11 ro.com.google.clientidbase=android-sonyericsson net.bt.name=Android ro.config.sync=yes dalvik.vm.stack-trace-file=/data/anr/traces.txt ro.drm.active.num=4 ro.drm.active.0=semc,1 ro.drm.active.1=cmla,0 ro.drm.active.2=viaccess,0 ro.drm.active.3=marlin,1 ---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /proc/sys/kernel/hostname localhost ---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /proc/version Linux version 2.6.29 (SEMCUser@SEMCHost) (gcc version 4.4.0 (GCC) ) #1 PREEMPT Fri Dec 17 18:35:45 2010 ---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /proc/uptime 2003.04 0.00 ---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /proc/cpuinfo Processor : ARMv6-compatible processor rev 5 (v6l) BogoMIPS : 599.65 Features : swp half thumb fastmult vfp edsp java CPU implementer : 0x41 CPU architecture: 6TEJ CPU variant : 0x1 CPU part : 0xb36 CPU revision : 5 Hardware : SEMC Delta Revision : 0000 Serial : 0000000000000000 ---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 600000 ---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq 600000 ---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq 245760 ---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /proc/stat cpu 86055 8531 23906 69411 12010 7 103 0 0 cpu0 86055 8531 23906 69411 12010 7 103 0 0 intr 8171919 11514 0 0 0 0 0 0 14363 501285 0 0 4 0 0 0 0 57488 0 0 18127 18154 406183 0 0 6436007 1 175242 142506 0 0 0 0 0 0 176802 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39658 0 0 0 0 0 0 0 0 26 14 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 167624 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6856 0 0 0 0 0 0 0 0 60 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 15100441 btime 1368263477 processes 3738 procs_running 1 procs_blocked 1 ---Sat, 11 May 2013 09:44:41 +0000 GMT--- Reading: /proc/stat cpu 86101 8531 23914 69419 12048 7 103 0 0 cpu0 86101 8531 23914 69419 12048 7 103 0 0 intr 8172501 11517 0 0 0 0 0 0 14368 501580 0 0 4 0 0 0 0 57530 0 0 18141 18168 406207 0 0 6436007 1 175247 142510 0 0 0 0 0 0 176889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39660 0 0 0 0 0 0 0 0 26 14 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 167708 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6859 0 0 0 0 0 0 0 0 60 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 15101320 btime 1368263477 processes 3738 procs_running 1 procs_blocked 0 ---Sat, 11 May 2013 09:44:41 +0000 GMT--- Reading: /proc/net/dev Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 2089060 2577 0 0 0 0 0 0 2089060 2577 0 0 0 0 0 0 dummy0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 rmnet0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 rmnet1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 rmnet2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 usb0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 wlan0:27900154 20327 0 0 0 0 0 0 817017 9503 0 0 0 0 0 0 ---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig lo 2>/dev/null lo: ip 127.0.0.1 mask 255.0.0.0 flags [up loopback running] ---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig dummy0 2>/dev/null ---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig rmnet0 2>/dev/null ---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig rmnet1 2>/dev/null ---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig rmnet2 2>/dev/null ---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig usb0 2>/dev/null ---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig sit0 2>/dev/null ---Sat, 11 May 2013 09:44:42 +0000 GMT--- Executing: ifconfig wlan0 2>/dev/null wlan0: ip 192.168.1.2 mask 255.255.255.0 flags [up broadcast running multicast] ---Sat, 11 May 2013 09:44:42 +0000 GMT--- Reading: /proc/meminfo MemTotal: 179788 kB MemFree: 2664 kB Buffers: 148 kB Cached: 26572 kB SwapCached: 0 kB Active: 75404 kB Inactive: 78812 kB Active(anon): 62080 kB Inactive(anon): 66112 kB Active(file): 13324 kB Inactive(file): 12700 kB Unevictable: 284 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 32 kB Writeback: 0 kB AnonPages: 127780 kB Mapped: 24760 kB Slab: 6744 kB SReclaimable: 1768 kB SUnreclaim: 4976 kB PageTables: 7272 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 89892 kB Committed_AS: 2647024 kB VmallocTotal: 696320 kB VmallocUsed: 53040 kB VmallocChunk: 602116 kB ---Sat, 11 May 2013 09:44:42 +0000 GMT--- Executing: df 2>/dev/null /dev: 89892K total, 12K used, 89880K available (block size 4096) /sqlite_stmt_journals: 4096K total, 8K used, 4088K available (block size 4096) /system: 210944K total, 190756K used, 20188K available (block size 4096) /data: 216832K total, 117836K used, 98996K available (block size 4096) /cache: 51200K total, 15756K used, 35444K available (block size 4096) /sdcard: 992860K total, 967764K used, 25096K available (block size 4096) ---Sat, 11 May 2013 09:44:42 +0000 GMT--- Executing: mount rootfs / rootfs ro 0 0 tmpfs /dev tmpfs rw,mode=755 0 0 devpts /dev/pts devpts rw,mode=600 0 0 proc /proc proc rw 0 0 sysfs /sys sysfs rw 0 0 tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0 /dev/block/mtdblock0 /system yaffs2 ro 0 0 /dev/block/mtdblock2 /data yaffs2 rw,nosuid,nodev 0 0 /dev/block/mtdblock1 /cache yaffs2 rw,nosuid,nodev 0 0 DxDrmServerIpc /data/DxDrm/fuse fuse.DxDrmServerIpc rw,nosuid,nodev,user_id=0,group_id=0,allow_other 0 0 /dev/block//vold/179:0 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0 ---Sat, 11 May 2013 09:44:42 +0000 GMT--- Reading: /proc/loadavg 9.64 10.21 9.25 1/368 3761 ---Sat, 11 May 2013 09:44:42 +0000 GMT--- Reading: /proc/stat cpu 86106 8531 23923 69419 12048 7 103 0 0 cpu0 86106 8531 23923 69419 12048 7 103 0 0 intr 8172553 11517 0 0 0 0 0 0 14368 501597 0 0 4 0 0 0 0 57530 0 0 18141 18168 406228 0 0 6436010 1 175247 142510 0 0 0 0 0 0 176889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39660 0 0 0 0 0 0 0 0 26 14 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 167719 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6859 0 0 0 0 0 0 0 0 60 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 15101414 btime 1368263477 processes 3758 procs_running 1 procs_blocked 0 ---Sat, 11 May 2013 09:44:43 +0000 GMT--- Reading: /proc/stat cpu 86108 8531 23924 69516 12048 7 103 0 0 cpu0 86108 8531 23924 69516 12048 7 103 0 0 intr 8172829 11517 0 0 0 0 0 0 14386 501712 0 0 4 0 0 0 0 57534 0 0 18142 18169 406228 0 0 6436010 1 175250 142513 0 0 0 0 0 0 176934 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39661 0 0 0 0 0 0 0 0 26 14 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 167804 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6859 0 0 0 0 0 0 0 0 60 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 15101638 btime 1368263477 processes 3758 procs_running 1 procs_blocked 0 phpsysinfo-3.2.5/sample/logs/log_android412.txt000066400000000000000000000467771265516077000214570ustar00rootroot00000000000000---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /system/build.prop # begin build properties # autogenerated by buildinfo.sh ro.build.id=JZO54K ro.build.display.id=Jelly Blur 4.1.2 JZ054K eng.tiestobunio.20130507.120822 shakira test-keys ro.build.version.incremental=eng.tiestobunio.20130507.120822 ro.build.version.sdk=16 ro.build.version.codename=REL ro.build.version.release=4.1.2 ro.build.date=Tue May 7 12:08:22 EURO 2013 ro.build.date.utc=12082214 ro.build.type=user ro.build.user=tiestobunio ro.build.host=toshiba ro.build.tags=test-keys ro.product.model=E15i ro.product.brand=SEMC ro.product.name=LT30p_1269-0608 ro.product.device=shakira ro.product.board=shakira ro.product.cpu.abi=armeabi-v6l ro.product.cpu.abi2=armeabi ro.product.manufacturer=Sony Ericsson ro.wifi.channels= ro.board.platform=msm7x27 # ro.build.product is obsolete; use ro.product.device ro.build.product=shakira # Do not try to parse ro.build.description or .fingerprint ro.build.description=LT30p-user 4.0.4 7.0.A.3.195 PPP_xw test-keys ro.build.fingerprint=Sony/LT30p_1269-0608/LT30p:4.0.4/7.0.A.3.195/PPP_xw:user/release-keys ro.build.characteristics=default ro.cm.device=shakira # end build properties # # ADDITIONAL_BUILD_PROPERTIES # ro.sf.lcd_density=160 keyguard.no_require_sim=true ro.url.legal=http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html ro.url.legal.android_privacy=http://www.google.com/intl/%s/mobile/android/basic/privacy.html ro.com.google.clientidbase=android-google ro.com.android.wifi-watchlist=GoogleGuest ro.setupwizard.enterprise_mode=1 ro.com.android.dateformat=MM-dd-yyyy ro.com.android.dataroaming=false ro.cm.version=Jelly Blur CM10 V4.5 ro.modversion=Jelly Blur CM10 ro.min.kernel.version=2.6.32.60-nAa ro.min.kernel.revision=05 persist.sys.themeId=sytem persist.sys.themePackageName=com.system.theme.jellybean ro.media.dec.jpeg.memcap=10000000 rild.libpath=/system/lib/libril-qc-1.so rild.libargs=-d/dev/smd0 ro.ril.hep=1 ro.ril.hsdpa.category=10 ro.ril.enable.dtm=1 ro.ril.enable.3g.prefix=1 ro.ril.hsxpa=2 ro.ril.gprsclass=10 ro.ril.hsupa.category=6 ro.ril.disable.power.collapse=1 ro.telephony.ril_class=SemcRIL wifi.interface=wlan0 wifi.softap.interface=wlan0 wifi.softapconcurrent.interface=wlan0 wifi.supplicant_scan_interval=45 ro.ril.def.agps.mode=2 ro.ril.def.agps.feature=1 persist.sys.use_16bpp_alpha=1 persist.sys.use_dithering=0 persist.sys.force_hw_ui=true ro.telephony.default_network=0 ro.telephony.call_ring.delay=1000 ro.telephony.call_ring.multiple=false ro.com.google.locationfeatures=1 ro.com.google.networklocation=1 ro.ril.enable.a52=1 ro.ril.enable.a53=1 ro.telephony.ril.v3=icccardstatus,skipbrokendatacall,signalstrength,datacall ro.telephony.ril_skip_locked=true ro.media.enc.file.format=3gp,mp4 ro.media.enc.vid.codec=m4v,h263 ro.media.enc.vid.h263.width=176,640 ro.media.enc.vid.h263.height=144,480 ro.media.enc.vid.h263.bps=64000,1600000 ro.media.enc.vid.h263.fps=1,30 ro.media.enc.vid.m4v.width=176,640 ro.media.enc.vid.m4v.height=144,480 ro.media.enc.vid.m4v.bps=64000,1600000 ro.media.enc.vid.m4v.fps=1,30 ro.media.dec.aud.wma.enabled=1 ro.media.dec.vid.wmv.enabled=1 settings.display.autobacklight=1 media.stagefright.enable-player=true media.stagefright.enable-meta=true media.stagefright.enable-scan=true media.stagefright.enable-http=true windowsmgr.max_events_per_sec=200 debug.camcorder.disablemeta=1 dalvik.vm.dexopt-flags=v=a,o=v,m=y,u=y dalvik.vm.checkjni=0 dalvik.vm.dexopt-data-only=1 dalvik.vm.lockprof.threshold=500 dalvik.vm.execution-mode=int:jit dalvik.vm.verify_bytecode=false dalvik.vm.heapsize=32m debug.sf.hw=1 debug.composition.type=mdp debug.gr.numframebuffers=1 ro.max.fling_velocity=4000 debug.qctwa.statusbar=1 debug.qctwa.preservebuf=1 hwui.render_dirty_regions=false hwui.disable_vsync=true debug.mdpcomp.logs=0 debug.sf.no_hw_vsync=1 hwui.print_config=choice debug.enabletr=false debug.hwui.render_dirty_regions=false debug.hwui.disable_vsync=true com.qc.hardware=true persist.service.zram=1 ro.zram.default=18 persist.sys.usb.config=mtp,adb persist.service.adb.enable=1 ro.opengles.version=131072 ro.product.locale.language=en ro.product.locale.region=US ro.service.swiqi.supported=true persist.service.swiqi.enable=1 persist.ro.ril.sms_sync_sending=1 persist.android.strictmode=0 debug.performance.tuning=1 video.accelerate.hw=1 pm.sleep_mode=1 persist.pmem.camera=4000000 ro.config.ringtone=CyanTone.ogg ro.config.notification_sound=CyanMessage.ogg ro.config.alarm_alert=CyanAlarm.ogg net.bt.name=Android dalvik.vm.stack-trace-file=/data/anr/traces.txt # Fast Reboot persist.sys.purgeable_assets=1 # Render UI With GPU debug.sf.hw=1 #Perfomance Engine persist.rild.nitz_plmn= persist.rild.nitz_long_ons_0= persist.rild.nitz_long_ons_1= persist.rild.nitz_long_ons_2= persist.rild.nitz_long_ons_3= persist.rild.nitz_short_ons_0= persist.rild.nitz_short_ons_1= persist.rild.nitz_short_ons_2= persist.rild.nitz_short_ons_3= #Disable blur debug.hwui.render_dirty_regions=false # Force use of GPU on 2D rendering # persist.sys.force_hw_ui=true # Proximity Tweaks ro.lge.proximity.delay=25 mot.proximity.delay=25 # Fast Reboot persist.sys.shutdown.mode=hibernate ro.config.hw_quickpoweron=true #Disable blur debug.hwui.render_dirty_regions=false # Force use of GPU on 2D rendering # persist.sys.force_hw_ui=true # Proximity Tweaks ro.lge.proximity.delay=25 mot.proximity.delay=25 # Frees More RAM persist.sys.purgeable_assets=1 ro.HOME_APP_ADJ=1 ro.mot.eri.losalert.delay=1000 ro.config.hw_fast_dormancy=1 ro.ril.enable.amr.wideband=1 ro.config.hw_fast_dormancy=1 ro.config.hw_quickpoweron=true #Media quality improvements media.stagefright.enable-player=true media.stagefright.enable-meta=true media.stagefright.enable-scan=true media.stagefright.enable-http=true media.stagefright.enable-record=true ro.media.enc.jpeg.quality=100 ro.media.dec.jpeg.memcap=8000000 ro.media.enc.hprof.vid.bps=8000000 ro.media.enc.hprof.vid.fps=75 video.accelerate.hw=1 #Other Performance Tweaks ENFORCE_PROCESS_LIMIT=false persist.android.strictmode=0 persist.service.lgospd.enable=0 persist.service.pcsync.enable=0 ro.min_pointer_dur=1 ro.telephony.call_ring.delay=0 ro.sec.proximity.delay=0 ro.HOME_APP_ADJ=1 debug.composition.type=gpu persist.sys.NV_FPSLIMIT=60 dev.pm.dyn_samplingrate=1---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/sys/kernel/hostname localhost ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/version Linux version 2.6.32.60-nAa-05 (nobodyAtall@palikari) (gcc version 4.7.3 20121106 (prerelease) (Linaro GCC 4.7-2012.11) ) #1096 PREEMPT Sat Mar 16 20:04:00 EET 2013 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/uptime 1727.18 325.01 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/cpuinfo Processor : ARMv6-compatible processor rev 5 (v6l) BogoMIPS : 599.65 Features : swp half thumb fastmult vfp edsp java CPU implementer : 0x41 CPU architecture: 6TEJ CPU variant : 0x1 CPU part : 0xb36 CPU revision : 5 Hardware : SEMC Delta Revision : 0000 Serial : 0000000000000000 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 604800 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq 864000 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq 122880 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/uevent POWER_SUPPLY_NAME=battery POWER_SUPPLY_TYPE=Battery POWER_SUPPLY_STATUS=Charging POWER_SUPPLY_PRESENT=1 POWER_SUPPLY_HEALTH=Good POWER_SUPPLY_TECHNOLOGY=Li-poly POWER_SUPPLY_CAPACITY=100 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/capacity 100 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_temp 330 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_vol 4181 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/technology Li-poly ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/status Charging ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/health Good ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/stat cpu 67446 9149 43018 32501 20250 9 64 0 0 cpu0 67446 9149 43018 32501 20250 9 64 0 0 intr 9106653 10362 0 0 0 0 0 0 0 422747 0 0 11 0 0 0 0 37498 0 0 22911 33276 743963 0 9145 7167599 0 187062 0 0 0 0 0 0 0 431029 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18635 0 0 0 0 0 0 0 0 33 26 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13079 0 0 0 0 9266 0 0 0 0 0 0 0 0 5 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 18521396 btime 1368381847 processes 5477 procs_running 4 procs_blocked 3 softirq 271689 0 130976 444 2408 0 0 46075 0 1139 90647 ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Reading: /proc/stat cpu 67450 9149 43024 32501 20340 9 64 0 0 cpu0 67450 9149 43024 32501 20340 9 64 0 0 intr 9116370 10380 0 0 0 0 0 0 0 422818 0 0 11 0 0 0 0 37498 0 0 22911 33276 744057 0 9145 7176941 0 187062 0 0 0 0 0 0 0 431213 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18635 0 0 0 0 0 0 0 0 33 26 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13087 0 0 0 0 9266 0 0 0 0 0 0 0 0 5 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 18540445 btime 1368381847 processes 5477 procs_running 1 procs_blocked 1 softirq 271729 0 131004 444 2408 0 0 46078 0 1140 90655 ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Reading: /proc/net/dev Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 4906465 3467 0 0 0 0 0 0 4906465 3467 0 0 0 0 0 0 dummy0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 rmnet0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 rmnet1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 rmnet2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 rmnet3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 rmnet4: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 rmnet5: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 rmnet6: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 rmnet7: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ip6tnl0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 wlan0:23784505 16344 0 0 0 0 0 0 481451 5463 0 0 0 0 0 0 ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig lo 2>/dev/null lo: ip 127.0.0.1 mask 255.0.0.0 flags [up loopback running] ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig dummy0 2>/dev/null ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet0 2>/dev/null ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet1 2>/dev/null ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet2 2>/dev/null ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet3 2>/dev/null ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet4 2>/dev/null ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet5 2>/dev/null ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet6 2>/dev/null ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet7 2>/dev/null ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig sit0 2>/dev/null ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig ip6tnl0 2>/dev/null ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig wlan0 2>/dev/null wlan0: ip 192.168.1.3 mask 255.255.255.0 flags [up broadcast running multicast] ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Reading: /proc/meminfo MemTotal: 190820 kB MemFree: 13680 kB Buffers: 160 kB Cached: 28056 kB SwapCached: 8788 kB Active: 68900 kB Inactive: 68544 kB Active(anon): 54804 kB Inactive(anon): 55032 kB Active(file): 14096 kB Inactive(file): 13512 kB Unevictable: 544 kB Mlocked: 0 kB SwapTotal: 34340 kB SwapFree: 808 kB Dirty: 60 kB Writeback: 0 kB AnonPages: 101708 kB Mapped: 20516 kB Shmem: 64 kB Slab: 11880 kB SReclaimable: 2900 kB SUnreclaim: 8980 kB KernelStack: 3816 kB PageTables: 3764 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 129748 kB Committed_AS: 1438480 kB VmallocTotal: 565248 kB VmallocUsed: 34984 kB VmallocChunk: 472740 kB ---Sun, 12 May 2013 18:32:55 +0000 GMT--- Reading: /proc/swaps Filename Type Size Used Priority /dev/block/zram0 partition 34340 33532 -1 ---Sun, 12 May 2013 18:32:56 +0000 GMT--- Executing: df 2>/dev/null Filesystem Size Used Free Blksize /cache 5M 996K 4M 4096 /dev 93.2M 84K 93.1M 4096 /mnt/asec 93.2M 0K 93.2M 4096 /mnt/obb 93.2M 0K 93.2M 4096 /system 261M 211M 50M 4096 /data 191.8M 141.9M 49.9M 4096 /storage/sdcard0 969.6M 669.3M 300.3M 4096 /mnt/asec/com.ghisler.tcplugins.WebDAV-1 2M 588K 1.4M 4096 /mnt/asec/org.connectbot-1 2M 764K 1.3M 4096 /mnt/asec/jackpal.androidterm-1 2M 456K 1.6M 4096 /mnt/asec/com.opera.browser-1 26M 24.7M 1.3M 4096 /mnt/asec/com.ghisler.tcplugins.LAN-1 2M 352K 1.7M 4096 /mnt/asec/com.ghisler.tcplugins.FTP-1 2M 408K 1.6M 4096 /mnt/asec/com.ghisler.android.TotalCommander-1 3M 1.2M 1.8M 4096 /mnt/asec/ru.zdevs.zarchiver-1 6M 4.3M 1.7M 4096 /mnt/asec/pl.redefine.ipla-2 14M 12.3M 1.7M 4096 /mnt/asec/mobi.infolife.appbackup-1 2M 428K 1.6M 4096 /mnt/asec/com.skype.raider-1 18M 16.7M 1.3M 4096 /mnt/asec/pl.vod-1 2M 472K 1.5M 4096 /mnt/asec/org.mozilla.firefox-1 23M 21.3M 1.7M 4096 ---Sun, 12 May 2013 18:32:56 +0000 GMT--- Executing: mount rootfs / rootfs rw,nodiratime,relatime 0 0 /dev/block/mtdblock1 /cache yaffs2 rw,nosuid,nodev,nodiratime,relatime 0 0 tmpfs /dev tmpfs rw,nosuid,noatime,mode=755 0 0 devpts /dev/pts devpts rw,noatime,mode=600 0 0 proc /proc proc rw,noatime 0 0 sysfs /sys sysfs rw,noatime 0 0 tmpfs /mnt/asec tmpfs rw,noatime,mode=755,gid=1000 0 0 tmpfs /mnt/obb tmpfs rw,noatime,mode=755,gid=1000 0 0 /dev/block/mtdblock0 /system yaffs2 ro,relatime 0 0 /dev/block/mtdblock2 /data yaffs2 rw,nosuid,nodev,nodiratime,relatime 0 0 /dev/block/vold/179:0 /storage/sdcard0 vfat rw,dirsync,nosuid,nodev,noexec,noatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0 /dev/block/vold/179:0 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,noatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0 tmpfs /storage/sdcard0/.android_secure tmpfs ro,noatime,size=0k,mode=000 0 0 /dev/block/dm-0 /mnt/asec/com.ghisler.tcplugins.WebDAV-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0 /dev/block/dm-1 /mnt/asec/org.connectbot-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0 /dev/block/dm-2 /mnt/asec/jackpal.androidterm-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0 /dev/block/dm-3 /mnt/asec/com.opera.browser-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0 /dev/block/dm-4 /mnt/asec/com.ghisler.tcplugins.LAN-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0 /dev/block/dm-5 /mnt/asec/com.ghisler.tcplugins.FTP-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0 /dev/block/dm-6 /mnt/asec/com.ghisler.android.TotalCommander-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0 /dev/block/dm-7 /mnt/asec/ru.zdevs.zarchiver-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0 /dev/block/dm-8 /mnt/asec/pl.redefine.ipla-2 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0 /dev/block/dm-9 /mnt/asec/mobi.infolife.appbackup-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0 /dev/block/dm-10 /mnt/asec/com.skype.raider-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0 /dev/block/dm-11 /mnt/asec/pl.vod-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0 /dev/block/dm-12 /mnt/asec/org.mozilla.firefox-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0 ---Sun, 12 May 2013 18:32:56 +0000 GMT--- Reading: /proc/loadavg 11.23 11.98 10.79 1/475 5508 ---Sun, 12 May 2013 18:32:56 +0000 GMT--- Reading: /proc/stat cpu 67462 9149 43044 32501 20340 9 64 0 0 cpu0 67462 9149 43044 32501 20340 9 64 0 0 intr 9116804 10380 0 0 0 0 0 0 0 422857 0 0 11 0 0 0 0 37498 0 0 22911 33276 744135 0 9145 7177210 0 187062 0 0 0 0 0 0 0 431259 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18635 0 0 0 0 0 0 0 0 33 26 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13089 0 0 0 0 9266 0 0 0 0 0 0 0 0 5 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 18541338 btime 1368381847 processes 5507 procs_running 1 procs_blocked 1 softirq 271870 0 131036 444 2408 0 0 46083 0 1140 90759 ---Sun, 12 May 2013 18:32:57 +0000 GMT--- Reading: /proc/stat cpu 67462 9149 43054 32528 20404 9 64 0 0 cpu0 67462 9149 43054 32528 20404 9 64 0 0 intr 9126517 10380 0 0 0 0 0 0 0 422931 0 0 11 0 0 0 0 37498 0 0 22911 33276 744138 0 9145 7186654 0 187062 0 0 0 0 0 0 0 431443 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18635 0 0 0 0 0 0 0 0 33 26 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13097 0 0 0 0 9266 0 0 0 0 0 0 0 0 5 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 18560395 btime 1368381847 processes 5507 procs_running 1 procs_blocked 0 softirq 271904 0 131064 444 2408 0 0 46086 0 1140 90762 phpsysinfo-3.2.5/sample/logs/log_bluestacks.txt000066400000000000000000000241701265516077000217270ustar00rootroot00000000000000---Mon, 29 Apr 2013 07:33:51 +0000 GMT--- Reading: /system/build.prop # begin build properties # autogenerated by buildinfo.sh ro.build.id=GRJ22 ro.build.display.id=generic_x86-eng 2.3.4 GRJ22 eng.build.20121017.125534 test-keys ro.build.version.incremental=eng.build.20121017.125534 ro.build.version.sdk=10 ro.build.version.codename=REL ro.build.version.release=2.3.4 ro.build.date=Wed Oct 17 14:18:50 IST 2012 ro.build.date.utc=1350463730 ro.build.type=eng ro.build.user=build ro.build.host=BuildServer ro.build.tags=test-keys ro.product.model=BlueStacks ro.product.brand=BlueStacks ro.product.name=BlueStacks ro.product.device=Virtual ro.product.board= ro.product.cpu.abi=armeabi-v7a ro.product.cpu.abi2=armeabi ro.product.manufacturer=BlueStacks ro.product.locale.language=en ro.product.locale.region=US ro.wifi.channels= ro.board.platform= # ro.build.product is obsolete; use ro.product.device ro.build.product=Virtual # Do not try to parse ro.build.description or .fingerprint ro.build.description=generic_x86-eng 2.3.4 GRJ22 eng.build.20121017.125534 test-keys ro.build.fingerprint=generic_x86/generic_x86/generic_x86:2.3.4/GRJ22/eng.build.20121017.125534:eng/test-keys # end build properties # # ADDITIONAL_BUILD_PROPERTIES # ro.config.notification_sound=OnTheHunt.ogg ro.config.alarm_alert=Alarm_Classic.ogg ro.com.android.dataroaming=true ro.kernel.android.checkjni=1 ro.setupwizard.mode=OPTIONAL net.bt.name=Android dalvik.vm.stack-trace-file=/data/anr/traces.txt ---Mon, 29 Apr 2013 07:33:51 +0000 GMT--- Reading: /proc/sys/kernel/hostname localhost ---Mon, 29 Apr 2013 07:33:51 +0000 GMT--- Reading: /proc/version Linux version 2.6.38-android-x86+ (build@BuildServer) (gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) ) #1 PREEMPT Thu Oct 25 09:38:01 IST 2012 ---Mon, 29 Apr 2013 07:33:51 +0000 GMT--- Reading: /proc/uptime 59.49 39.40 ---Mon, 29 Apr 2013 07:33:51 +0000 GMT--- Reading: /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 58 model name : Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz stepping : 9 cpu MHz : 2594.000 cache size : 3072 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx rdtscp lm constant_tsc arch_perfmon pebs bts nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 x2apic popcnt aes avx f16c rdrnd lahf_lm ida arat epb pln pts dts tpr_shadow vnmi flexpriority ept vpid bogomips : 33449.57 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management: ---Mon, 29 Apr 2013 07:33:51 +0000 GMT--- Reading: /proc/stat cpu 1240 219 360 3940 188 0 2 0 0 0 cpu0 1240 219 360 3940 188 0 2 0 0 0 intr 23405 5949 0 156 9791 26 627 0 3513 0 10 0 3329 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 91556 btime 1367220772 processes 1274 procs_running 5 procs_blocked 1 softirq 19636 0 5734 0 1838 0 0 89 0 0 11975 ---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Reading: /proc/stat cpu 1318 219 364 3959 188 0 2 0 0 0 cpu0 1318 219 364 3959 188 0 2 0 0 0 intr 23660 6050 0 156 9827 26 627 0 3514 0 10 0 3446 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 92554 btime 1367220772 processes 1276 procs_running 2 procs_blocked 0 softirq 19850 0 5831 0 1839 0 0 89 0 0 12091 ---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Reading: /proc/net/dev Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 642215 258 0 0 0 0 0 0 642215 258 0 0 0 0 0 0 eth0: 4201926 3512 0 0 0 0 0 0 1127382 2464 0 0 0 0 0 0 ---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Executing: ifconfig lo 2>/dev/null lo: ip 127.0.0.1 mask 255.0.0.0 flags [up loopback running] ---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Executing: ifconfig eth0 2>/dev/null eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast] ---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Reading: /proc/meminfo MemTotal: 758548 kB MemFree: 112792 kB Buffers: 55744 kB Cached: 332496 kB SwapCached: 0 kB Active: 288288 kB Inactive: 330996 kB Active(anon): 235068 kB Inactive(anon): 32692 kB Active(file): 53220 kB Inactive(file): 298304 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 3564 kB Writeback: 0 kB AnonPages: 231016 kB Mapped: 83540 kB Shmem: 36744 kB Slab: 12632 kB SReclaimable: 7296 kB SUnreclaim: 5336 kB KernelStack: 3232 kB PageTables: 4624 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 379272 kB Committed_AS: 2100224 kB VmallocTotal: 237564 kB VmallocUsed: 28128 kB VmallocChunk: 178684 kB DirectMap4k: 0 kB DirectMap4M: 0 kB ---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Executing: df 2>/dev/null Filesystem Size Used Free Blksize / 370M 436K 369M 4096 /mnt 370M 436K 369M 4096 / 370M 436K 369M 4096 /system 153M 145M 7M 4096 /cache 370M 3M 366M 4096 /data 1G 324M 1G 4096 /dev 370M 72K 370M 4096 /mnt/asec 370M 0K 370M 4096 /mnt/obb 370M 0K 370M 4096 /mnt/sdcard 1G 163M 1G 4096 /mnt/sdcard/bstfolder/PublicDocuments 149G 123G 25G 4096 /mnt/sdcard/bstfolder/Documents 149G 123G 25G 4096 /mnt/sdcard/bstfolder/Pictures 149G 123G 25G 4096 /mnt/sdcard/bstfolder/BstSharedFolder 149G 123G 25G 4096 /mnt/sdcard/bstfolder/PublicPictures 149G 123G 25G 4096 ---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Executing: mount rootfs / rootfs rw 0 0 proc /proc proc rw,relatime 0 0 sys /sys sysfs rw,relatime 0 0 /dev/sda1 /mnt ext4 ro,relatime,barrier=1,data=ordered 0 0 tmpfs / tmpfs ro,relatime 0 0 /dev/loop0 /sfs squashfs ro,relatime 0 0 /dev/loop1 /system ext4 ro,relatime,barrier=1,data=ordered 0 0 tmpfs /cache tmpfs rw,relatime 0 0 /dev/sdb1 /data ext4 rw,relatime,barrier=1,data=ordered 0 0 tmpfs /dev tmpfs rw,relatime,mode=755 0 0 devpts /dev/pts devpts rw,relatime,mode=600 0 0 proc /proc proc rw,relatime 0 0 sysfs /sys sysfs rw,relatime 0 0 tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0 tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0 /dev/block/vold/8:33 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0 /dev/block/vold/8:33 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0 tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0 PublicDocuments /mnt/sdcard/bstfolder/PublicDocuments bstfolder rw,nosuid,nodev,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702 0 0 Documents /mnt/sdcard/bstfolder/Documents bstfolder rw,nosuid,nodev,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702 0 0 Pictures /mnt/sdcard/bstfolder/Pictures bstfolder rw,nosuid,nodev,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702 0 0 BstSharedFolder /mnt/sdcard/bstfolder/BstSharedFolder bstfolder rw,nosuid,nodev,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702 0 0 PublicPictures /mnt/sdcard/bstfolder/PublicPictures bstfolder rw,nosuid,nodev,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702 0 0 ---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Reading: /proc/loadavg 2.77 0.77 0.26 2/400 1284 ---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Reading: /proc/stat cpu 1318 219 364 3960 188 0 2 0 0 0 cpu0 1318 219 364 3960 188 0 2 0 0 0 intr 23669 6051 0 156 9829 31 627 0 3514 0 10 0 3447 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 92638 btime 1367220772 processes 1284 procs_running 2 procs_blocked 0 softirq 19852 0 5832 0 1839 0 0 89 0 0 12092 ---Mon, 29 Apr 2013 07:33:53 +0000 GMT--- Reading: /proc/stat cpu 1320 219 365 4058 188 0 2 0 0 0 cpu0 1320 219 365 4058 188 0 2 0 0 0 intr 23890 6152 0 156 9829 31 627 0 3514 0 10 0 3567 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 93138 btime 1367220772 processes 1284 procs_running 2 procs_blocked 0 softirq 20059 0 5925 0 1839 0 0 89 0 0 12206 phpsysinfo-3.2.5/sample/logs/log_debian7.txt000066400000000000000000000174271265516077000211070ustar00rootroot00000000000000---Mon, 06 May 2013 12:38:18 +0000 GMT--- Executing: lsb_release -a 2>/dev/null Distributor ID: Debian Description: Debian GNU/Linux 7.0 (wheezy) Release: 7.0 Codename: wheezy ---Mon, 06 May 2013 12:38:18 +0000 GMT--- Reading: /proc/sys/kernel/hostname testowy ---Mon, 06 May 2013 12:38:18 +0000 GMT--- Executing: uname -r 3.2.0-4-amd64 ---Mon, 06 May 2013 12:38:18 +0000 GMT--- Executing: uname -v #1 SMP Debian 3.2.41-2 ---Mon, 06 May 2013 12:38:18 +0000 GMT--- Executing: uname -m x86_64 ---Mon, 06 May 2013 12:38:18 +0000 GMT--- Reading: /proc/uptime 163.27 99.71 ---Mon, 06 May 2013 12:38:18 +0000 GMT--- Executing: who mietekn tty7 May 6 14:36 (:0) mietekn pts/0 May 6 14:36 (:0.0) ---Mon, 06 May 2013 12:38:18 +0000 GMT--- Reading: /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 58 model name : Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz stepping : 9 cpu MHz : 2702.529 cache size : 6144 KB fpu : yes fpu_exception : yes cpuid level : 5 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc up rep_good nopl pni monitor ssse3 lahf_lm bogomips : 5405.05 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management: ---Mon, 06 May 2013 12:38:18 +0000 GMT--- Executing: lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01) 00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter 00:03.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 40) 00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service 00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01) 00:06.0 USB controller: Apple Inc. KeyLargo/Intrepid USB 00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08) ---Mon, 06 May 2013 12:38:19 +0000 GMT--- Executing: lsusb Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet ---Mon, 06 May 2013 12:38:19 +0000 GMT--- Reading: /proc/net/dev Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 548340 347 0 0 0 0 0 0 548340 347 0 0 0 0 0 0 eth0: 2710 14 0 0 0 0 0 0 11766 90 0 0 0 0 0 0 ---Mon, 06 May 2013 12:38:19 +0000 GMT--- Executing: ifconfig lo 2>/dev/null lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:347 errors:0 dropped:0 overruns:0 frame:0 TX packets:347 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:548340 (535.4 KiB) TX bytes:548340 (535.4 KiB) ---Mon, 06 May 2013 12:38:19 +0000 GMT--- Executing: ifconfig eth0 2>/dev/null eth0 Link encap:Ethernet HWaddr 08:00:27:da:5a:52 inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:feda:5a52/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:14 errors:0 dropped:0 overruns:0 frame:0 TX packets:90 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2710 (2.6 KiB) TX bytes:11766 (11.4 KiB) Interrupt:10 Base address:0xd020 ---Mon, 06 May 2013 12:38:19 +0000 GMT--- Reading: /proc/meminfo MemTotal: 1027016 kB MemFree: 416792 kB Buffers: 27908 kB Cached: 240008 kB SwapCached: 0 kB Active: 339608 kB Inactive: 213396 kB Active(anon): 285704 kB Inactive(anon): 312 kB Active(file): 53904 kB Inactive(file): 213084 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 392188 kB SwapFree: 392188 kB Dirty: 1032 kB Writeback: 0 kB AnonPages: 285032 kB Mapped: 78396 kB Shmem: 972 kB Slab: 24632 kB SReclaimable: 12076 kB SUnreclaim: 12556 kB KernelStack: 2272 kB PageTables: 18520 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 905696 kB Committed_AS: 1393264 kB VmallocTotal: 34359738367 kB VmallocUsed: 5092 kB VmallocChunk: 34359733275 kB HardwareCorrupted: 0 kB AnonHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 40896 kB DirectMap2M: 1007616 kB ---Mon, 06 May 2013 12:38:19 +0000 GMT--- Reading: /proc/swaps Filename Type Size Used Priority /dev/sda5 partition 392188 0 -1 ---Mon, 06 May 2013 12:38:19 +0000 GMT--- Executing: df -k -P 2>/dev/null Filesystem 1024-blocks Used Available Capacity Mounted on rootfs 7867856 3799840 3668352 51% / udev 10240 0 10240 0% /dev tmpfs 102704 612 102092 1% /run /dev/disk/by-uuid/ba660f60-9c33-4be6-b545-4919e9e0cfcd 7867856 3799840 3668352 51% / tmpfs 5120 0 5120 0% /run/lock tmpfs 283840 224 283616 1% /run/shm /dev/sr0 58094 58094 0 100% /media/cdrom0 ---Mon, 06 May 2013 12:38:19 +0000 GMT--- Executing: df -i -P 2>/dev/null Filesystem Inodes IUsed IFree IUse% Mounted on rootfs 499712 152037 347675 31% / udev 126863 358 126505 1% /dev tmpfs 128377 326 128051 1% /run /dev/disk/by-uuid/ba660f60-9c33-4be6-b545-4919e9e0cfcd 499712 152037 347675 31% / tmpfs 128377 2 128375 1% /run/lock tmpfs 128377 6 128371 1% /run/shm /dev/sr0 0 0 0 - /media/cdrom0 ---Mon, 06 May 2013 12:38:19 +0000 GMT--- Executing: mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=126863,mode=755) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=102704k,mode=755) /dev/disk/by-uuid/ba660f60-9c33-4be6-b545-4919e9e0cfcd on / type ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=283840k) rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime) /dev/sr0 on /media/cdrom0 type iso9660 (ro,nosuid,nodev,noexec,relatime,user=mietekn) ---Mon, 06 May 2013 12:38:19 +0000 GMT--- Reading: /proc/loadavg 0.34 0.36 0.15 1/283 3745 phpsysinfo-3.2.5/sample/logs/log_sf.txt000066400000000000000000000755421265516077000202100ustar00rootroot00000000000000---Mon, 03 Jun 2013 11:37:11 +0000 GMT--- Reading: /etc/centos-release CentOS release 6.3 (Final) ---Mon, 03 Jun 2013 11:37:11 +0000 GMT--- Reading: /proc/sys/kernel/hostname sfp-web-6.v30.ch3.sourceforge.com ---Mon, 03 Jun 2013 11:37:11 +0000 GMT--- Executing: uname -r 2.6.32-358.6.1.el6.sog20130514.x86_64 ---Mon, 03 Jun 2013 11:37:11 +0000 GMT--- Executing: uname -v #1 SMP Tue May 14 17:31:39 UTC 2013 ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: uname -m x86_64 ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/uptime 1694267.18 4577690.73 ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: who ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 13 model name : QEMU Virtual CPU version (cpu64-rhel6) stepping : 3 cpu MHz : 1994.999 cache size : 4096 KB fpu : yes fpu_exception : yes cpuid level : 4 wp : yes flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm bogomips : 3989.99 clflush size : 64 cache_alignment : 64 address sizes : 44 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 13 model name : QEMU Virtual CPU version (cpu64-rhel6) stepping : 3 cpu MHz : 1994.999 cache size : 4096 KB fpu : yes fpu_exception : yes cpuid level : 4 wp : yes flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm bogomips : 3989.99 clflush size : 64 cache_alignment : 64 address sizes : 44 bits physical, 48 bits virtual power management: processor : 2 vendor_id : GenuineIntel cpu family : 6 model : 13 model name : QEMU Virtual CPU version (cpu64-rhel6) stepping : 3 cpu MHz : 1994.999 cache size : 4096 KB fpu : yes fpu_exception : yes cpuid level : 4 wp : yes flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm bogomips : 3989.99 clflush size : 64 cache_alignment : 64 address sizes : 44 bits physical, 48 bits virtual power management: processor : 3 vendor_id : GenuineIntel cpu family : 6 model : 13 model name : QEMU Virtual CPU version (cpu64-rhel6) stepping : 3 cpu MHz : 1994.999 cache size : 4096 KB fpu : yes fpu_exception : yes cpuid level : 4 wp : yes flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm bogomips : 3989.99 clflush size : 64 cache_alignment : 64 address sizes : 44 bits physical, 48 bits virtual power management: processor : 4 vendor_id : GenuineIntel cpu family : 6 model : 13 model name : QEMU Virtual CPU version (cpu64-rhel6) stepping : 3 cpu MHz : 1994.999 cache size : 4096 KB fpu : yes fpu_exception : yes cpuid level : 4 wp : yes flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm bogomips : 3989.99 clflush size : 64 cache_alignment : 64 address sizes : 44 bits physical, 48 bits virtual power management: processor : 5 vendor_id : GenuineIntel cpu family : 6 model : 13 model name : QEMU Virtual CPU version (cpu64-rhel6) stepping : 3 cpu MHz : 1994.999 cache size : 4096 KB fpu : yes fpu_exception : yes cpuid level : 4 wp : yes flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm bogomips : 3989.99 clflush size : 64 cache_alignment : 64 address sizes : 44 bits physical, 48 bits virtual power management: processor : 6 vendor_id : GenuineIntel cpu family : 6 model : 13 model name : QEMU Virtual CPU version (cpu64-rhel6) stepping : 3 cpu MHz : 1994.999 cache size : 4096 KB fpu : yes fpu_exception : yes cpuid level : 4 wp : yes flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm bogomips : 3989.99 clflush size : 64 cache_alignment : 64 address sizes : 44 bits physical, 48 bits virtual power management: processor : 7 vendor_id : GenuineIntel cpu family : 6 model : 13 model name : QEMU Virtual CPU version (cpu64-rhel6) stepping : 3 cpu MHz : 1994.999 cache size : 4096 KB fpu : yes fpu_exception : yes cpuid level : 4 wp : yes flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm bogomips : 3989.99 clflush size : 64 cache_alignment : 64 address sizes : 44 bits physical, 48 bits virtual power management: ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: pidof -s mysqld ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] 00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01) 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03) 00:03.0 Ethernet controller: Red Hat, Inc Virtio network device 00:04.0 RAM memory: Red Hat, Inc Virtio memory balloon ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: ATA Model: QEMU HARDDISK Rev: 0.12 Type: Direct-Access ANSI SCSI revision: 05 ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: pidof -s explorer.exe ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /home/project-web/phpsysinfo/htdocs/phpsysinfo/data/quotas.txt Mon Dec 6 09:00:00 EST 2004 1K Block limits File limits User used soft hard grace used soft hard grace cherylstaff-- 2755724 0 0 15678 0 0 brucestaff -- 5738512 0 0 7830 0 0 ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: lsusb ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/net/dev Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo:27320003601847 234655896121 0 0 0 0 0 0 27320003601847 234655896121 0 0 0 0 0 0 eth0:4165329584450 11931631683 0 0 0 0 0 0 3108966577870 13127032084 0 0 0 0 0 0 ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: ifconfig lo 2>/dev/null lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:234655903698 errors:0 dropped:0 overruns:0 frame:0 TX packets:234655903698 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:27320004466384 (24.8 TiB) TX bytes:27320004466384 (24.8 TiB) ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: ifconfig eth0 2>/dev/null eth0 Link encap:Ethernet HWaddr 02:00:AC:1D:1E:42 inet addr:172.29.30.66 Bcast:172.29.30.255 Mask:255.255.255.0 inet6 addr: fe80::acff:fe1d:1e42/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:11931632533 errors:0 dropped:0 overruns:0 frame:0 TX packets:13127033096 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4165329803095 (3.7 TiB) TX bytes:3108966767181 (2.8 TiB) ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/meminfo MemTotal: 8059140 kB MemFree: 648372 kB Buffers: 22880 kB Cached: 4231260 kB SwapCached: 2492 kB Active: 3013816 kB Inactive: 3212256 kB Active(anon): 946280 kB Inactive(anon): 1026516 kB Active(file): 2067536 kB Inactive(file): 2185740 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 1015800 kB SwapFree: 963348 kB Dirty: 13700 kB Writeback: 4 kB AnonPages: 1969672 kB Mapped: 175844 kB Shmem: 812 kB Slab: 1073848 kB SReclaimable: 711992 kB SUnreclaim: 361856 kB KernelStack: 2928 kB PageTables: 33512 kB NFS_Unstable: 148 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 5045368 kB Committed_AS: 3170052 kB VmallocTotal: 34359738367 kB VmallocUsed: 26224 kB VmallocChunk: 34359683252 kB HardwareCorrupted: 0 kB AnonHugePages: 77824 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 8180 kB DirectMap2M: 8380416 kB ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/swaps Filename Type Size Used Priority /dev/dm-0 partition 1015800 52452 -1 ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: df -k -P 2>/dev/null ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: df -i -P 2>/dev/null ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /home/project-web/phpsysinfo/htdocs/phpsysinfo/data/smart0.txt smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/ Device: SEAGATE ST3146855LW Version: 0003 Serial number: 3LN1GA[rest of serial number redacted] Device type: disk Transport protocol: Parallel SCSI (SPI-4) Local Time is: Sat Jan 30 21:59:56 2010 CET Device supports SMART and is Enabled Temperature Warning Enabled SMART Health Status: OK Current Drive Temperature: 39 C Drive Trip Temperature: 68 C Elements in grown defect list: 0 Vendor (Seagate) cache information Blocks sent to initiator = 1490558074 Blocks received from initiator = 624662611 Blocks read from cache and sent to initiator = 2900209651 Number of read and write commands whose size <= segment size = 386699414 Number of read and write commands whose size > segment size = 28 Vendor (Seagate/Hitachi) factory information number of hours powered up = 14959.20 number of minutes until next internal SMART test = 44 Error counter log: Errors Corrected by Total Correction Gigabytes Total ECC rereads/ errors algorithm processed uncorrected fast | delayed rewrites corrected invocations [10^9 bytes] errors read: 6663270 0 0 6663270 6663270 5100.626 0 write: 0 0 0 0 0 12594895028.099 0 verify: 22626 0 0 22626 22626 28.314 0 Non-medium error count: 3 [GLTSD (Global Logging Target Save Disable) set. Enable Save with '-S on'] SMART Self-test log Num Test Status segment LifeTime LBA_first_err [SK ASC ASQ] Description number (hours) # 1 Background long Interrupted ('-X' switch) - 14371 - [- - -] Long (extended) Self Test duration: 1367 seconds [22.8 minutes] ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: mount proc on /proc type proc (rw) ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/loadavg 14.01 16.10 16.01 18/358 6013 ---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /home/project-web/phpsysinfo/htdocs/phpsysinfo/data/mdstat.txt Personalities : [linear] [raid0] [raid1] [raid5] [hsm] read_ahead 1024 sectors md0 : active raid5 sdd1[3] sdc6[2] sdb6[1] sda5[0] 633984 blocks level 5, 32k chunk, algorithm 2 [4/4] [UUUU] unused devices: ---Mon, 03 Jun 2013 11:37:13 +0000 GMT--- Reading: /home/project-web/phpsysinfo/htdocs/phpsysinfo/data/bat_info.txt present: yes design capacity: 50000 mWh last full capacity: 50000 mWh battery technology: rechargeable design voltage: 10000 mV design capacity warning: 100 mWh design capacity low: 50 mWh capacity granularity 1: 1 mWh capacity granularity 2: 1 mWh model number: 1 serial number: 0 battery type: VBOX OEM info: innotek ---Mon, 03 Jun 2013 11:37:13 +0000 GMT--- Reading: /home/project-web/phpsysinfo/htdocs/phpsysinfo/data/bat_state.txt present: yes capacity state: ok charging state: charged present rate: 0 mW remaining capacity: 50000 mWh present voltage: 10000 mV ---Mon, 03 Jun 2013 11:37:14 +0000 GMT--- Reading: /home/project-web/phpsysinfo/htdocs/phpsysinfo/data/ipmiinfo.txt BB +1.2V Vtt | 1.197 | Volts | ok | na | 1.096 | 1.134 | 1.285 | 1.323 | na BB +1.5V AUX | 1.490 | Volts | ok | na | 1.334 | 1.373 | 1.622 | 1.669 | na BB +1.5V | 1.469 | Volts | ok | na | 1.326 | 1.365 | 1.625 | 1.677 | na BB +1.8V | 1.802 | Volts | ok | na | 1.638 | 1.689 | 1.926 | 1.988 | na BB +3.3V | 3.320 | Volts | ok | na | 2.941 | 3.027 | 3.578 | 3.681 | na BB +3.3V STB | 3.337 | Volts | ok | na | 3.027 | 3.113 | 3.509 | 3.612 | na BB +1.5V ESB | 1.490 | Volts | ok | na | 1.357 | 1.404 | 1.591 | 1.638 | na BB +5V | 5.122 | Volts | ok | na | 4.446 | 4.576 | 5.408 | 5.564 | na BB +12V AUX | 12.090 | Volts | ok | na | 10.416 | 10.726 | 13.144 | 13.578 | na BB 0.9V | 0.902 | Volts | ok | na | 0.811 | 0.835 | 0.950 | 0.979 | na Baseboard Temp | 29.000 | degrees C | ok | na | 5.000 | 10.000 | 61.000 | 66.000 | na P1 Therm Margin | -32.000 | degrees C | ok | na | na | na | na | na | na P1 Therm Ctrl % | 0.000 | unspecified | ok | na | na | na | na | 49.530 | na Proc 1 Vcc | 1.203 | Volts | ok | na | na | na | na | na | na Power Unit | 0x0 | discrete | 0x0000| na | na | na | na | na | na BMC Watchdog | 0x0 | discrete | 0x0000| na | na | na | na | na | na Scrty Violation | 0x0 | discrete | 0x0000| na | na | na | na | na | na F-P Diag Int | 0x0 | discrete | 0x0000| na | na | na | na | na | na System Event Log | 0x0 | discrete | 0x0000| na | na | na | na | na | na Session Audit | 0x0 | discrete | 0x0000| na | na | na | na | na | na System Event | 0x0 | discrete | 0x0000| na | na | na | na | na | na BB Vbat | 0x0 | discrete | 0x0000| na | na | na | na | na | na SysACPIPowerStat | 0x0 | discrete | 0x0100| na | na | na | na | na | na Button | 0x0 | discrete | 0x0000| na | na | na | na | na | na SMI Timeout | 0x0 | discrete | 0x0100| na | na | na | na | na | na NMI State | 0x0 | discrete | 0x0100| na | na | na | na | na | na SMI State | 0x0 | discrete | 0x0100| na | na | na | na | na | na Processor 1 Stat | 0x0 | discrete | 0x8000| na | na | na | na | na | na Processor 2 Stat | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link0 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link1 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link3 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link4 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link5 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link6 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link7 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link8 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link9 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link10 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link11 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link12 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link13 | 0x0 | discrete | 0x0000| na | na | na | na | na | na Proc1 VRD Hot | 0x0 | discrete | 0x0000| na | na | na | na | na | na CPU1 Vcc OOR | 0x0 | discrete | 0x0000| na | na | na | na | na | na CPU Popula Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na DIMM A1 | 0x0 | discrete | 0x0400| na | na | na | na | na | na DIMM A2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na DIMM B1 | 0x0 | discrete | 0x0400| na | na | na | na | na | na DIMM B2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na DIMM C1 | 0x0 | discrete | 0x0000| na | na | na | na | na | na DIMM C2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na DIMM D1 | 0x0 | discrete | 0x0000| na | na | na | na | na | na DIMM D2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na MemA Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na MemB Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na MemC Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na MemD Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na B0 Sparing Enb | na | discrete | na | na | na | na | na | na | na B0 Spare Redun | na | discrete | na | na | na | na | na | na | na B1 Sparing Enb | na | discrete | na | na | na | na | na | na | na B1 Spare Redun | na | discrete | na | na | na | na | na | na | na B01 Mirror Enbl | na | discrete | na | na | na | na | na | na | na B01 MirrorRedun | na | discrete | na | na | na | na | na | na | na ---Mon, 03 Jun 2013 11:37:14 +0000 GMT--- Executing: ps axo pid,ppid,pmem,args PID PPID %MEM COMMAND 1 0 0.0 /sbin/init 2 0 0.0 [kthreadd] 3 2 0.0 [migration/0] 4 2 0.0 [ksoftirqd/0] 5 2 0.0 [migration/0] 6 2 0.0 [watchdog/0] 7 2 0.0 [migration/1] 8 2 0.0 [migration/1] 9 2 0.0 [ksoftirqd/1] 10 2 0.0 [watchdog/1] 11 2 0.0 [migration/2] 12 2 0.0 [migration/2] 13 2 0.0 [ksoftirqd/2] 14 2 0.0 [watchdog/2] 15 2 0.0 [migration/3] 16 2 0.0 [migration/3] 17 2 0.0 [ksoftirqd/3] 18 2 0.0 [watchdog/3] 19 2 0.0 [migration/4] 20 2 0.0 [migration/4] 21 2 0.0 [ksoftirqd/4] 22 2 0.0 [watchdog/4] 23 2 0.0 [migration/5] 24 2 0.0 [migration/5] 25 2 0.0 [ksoftirqd/5] 26 2 0.0 [watchdog/5] 27 2 0.0 [migration/6] 28 2 0.0 [migration/6] 29 2 0.0 [ksoftirqd/6] 30 2 0.0 [watchdog/6] 31 2 0.0 [migration/7] 32 2 0.0 [migration/7] 33 2 0.0 [ksoftirqd/7] 34 2 0.0 [watchdog/7] 35 2 0.0 [events/0] 36 2 0.0 [events/1] 37 2 0.0 [events/2] 38 2 0.0 [events/3] 39 2 0.0 [events/4] 40 2 0.0 [events/5] 41 2 0.0 [events/6] 42 2 0.0 [events/7] 43 2 0.0 [cgroup] 44 2 0.0 [khelper] 45 2 0.0 [netns] 46 2 0.0 [async/mgr] 47 2 0.0 [pm] 48 2 0.0 [sync_supers] 49 2 0.0 [bdi-default] 50 2 0.0 [kintegrityd/0] 51 2 0.0 [kintegrityd/1] 52 2 0.0 [kintegrityd/2] 53 2 0.0 [kintegrityd/3] 54 2 0.0 [kintegrityd/4] 55 2 0.0 [kintegrityd/5] 56 2 0.0 [kintegrityd/6] 57 2 0.0 [kintegrityd/7] 58 2 0.0 [kblockd/0] 59 2 0.0 [kblockd/1] 60 2 0.0 [kblockd/2] 61 2 0.0 [kblockd/3] 62 2 0.0 [kblockd/4] 63 2 0.0 [kblockd/5] 64 2 0.0 [kblockd/6] 65 2 0.0 [kblockd/7] 66 2 0.0 [ata/0] 67 2 0.0 [ata/1] 68 2 0.0 [ata/2] 69 2 0.0 [ata/3] 70 2 0.0 [ata/4] 71 2 0.0 [ata/5] 72 2 0.0 [ata/6] 73 2 0.0 [ata/7] 74 2 0.0 [ata_aux] 75 2 0.0 [ksuspend_usbd] 76 2 0.0 [khubd] 77 2 0.0 [kseriod] 78 2 0.0 [md/0] 79 2 0.0 [md/1] 80 2 0.0 [md/2] 81 2 0.0 [md/3] 82 2 0.0 [md/4] 83 2 0.0 [md/5] 84 2 0.0 [md/6] 85 2 0.0 [md/7] 86 2 0.0 [md_misc/0] 87 2 0.0 [md_misc/1] 88 2 0.0 [md_misc/2] 89 2 0.0 [md_misc/3] 90 2 0.0 [md_misc/4] 91 2 0.0 [md_misc/5] 92 2 0.0 [md_misc/6] 93 2 0.0 [md_misc/7] 94 2 0.0 [khungtaskd] 95 2 0.0 [kswapd0] 96 2 0.0 [ksmd] 97 2 0.0 [khugepaged] 98 2 0.0 [aio/0] 99 2 0.0 [aio/1] 100 2 0.0 [aio/2] 101 2 0.0 [aio/3] 102 2 0.0 [aio/4] 103 2 0.0 [aio/5] 104 2 0.0 [aio/6] 105 2 0.0 [aio/7] 106 2 0.0 [crypto/0] 107 2 0.0 [crypto/1] 108 2 0.0 [crypto/2] 109 2 0.0 [crypto/3] 110 2 0.0 [crypto/4] 111 2 0.0 [crypto/5] 112 2 0.0 [crypto/6] 113 2 0.0 [crypto/7] 118 2 0.0 [kthrotld/0] 119 2 0.0 [kthrotld/1] 120 2 0.0 [kthrotld/2] 121 2 0.0 [kthrotld/3] 122 2 0.0 [kthrotld/4] 123 2 0.0 [kthrotld/5] 124 2 0.0 [kthrotld/6] 125 2 0.0 [kthrotld/7] 127 2 0.0 [kpsmoused] 128 2 0.0 [usbhid_resumer] 159 2 0.0 [kstriped] 257 2 0.0 [scsi_eh_0] 258 2 0.0 [scsi_eh_1] 313 2 0.0 [kdmflush] 315 2 0.0 [kdmflush] 330 4796 1.8 /usr/sbin/httpd 335 2 0.0 [flush-253:1] 349 2 0.0 [jbd2/dm-1-8] 350 2 0.0 [ext4-dio-unwrit] 351 2 0.0 [ext4-dio-unwrit] 352 2 0.0 [ext4-dio-unwrit] 353 2 0.0 [ext4-dio-unwrit] 354 2 0.0 [ext4-dio-unwrit] 355 2 0.0 [ext4-dio-unwrit] 356 2 0.0 [ext4-dio-unwrit] 357 2 0.0 [ext4-dio-unwrit] 442 1 0.0 /sbin/udevd -d 610 2 0.0 [virtio-net] 624 2 0.0 [vballoon] 726 30335 0.0 ping 10.0.2.2 773 2 0.0 [kdmflush] 776 2 0.0 [kdmflush] 779 2 0.0 [kdmflush] 782 442 0.0 /sbin/udevd -d 784 2 0.0 [kdmflush] 812 2 0.0 [flush-253:4] 837 2 0.0 [kjournald] 838 2 0.0 [jbd2/dm-2-8] 839 2 0.0 [ext4-dio-unwrit] 840 2 0.0 [ext4-dio-unwrit] 841 2 0.0 [ext4-dio-unwrit] 842 2 0.0 [ext4-dio-unwrit] 843 2 0.0 [ext4-dio-unwrit] 844 2 0.0 [ext4-dio-unwrit] 845 2 0.0 [ext4-dio-unwrit] 846 2 0.0 [ext4-dio-unwrit] 847 2 0.0 [jbd2/dm-3-8] 848 2 0.0 [ext4-dio-unwrit] 849 2 0.0 [ext4-dio-unwrit] 850 2 0.0 [ext4-dio-unwrit] 851 2 0.0 [ext4-dio-unwrit] 852 2 0.0 [ext4-dio-unwrit] 853 2 0.0 [ext4-dio-unwrit] 854 2 0.0 [ext4-dio-unwrit] 855 2 0.0 [ext4-dio-unwrit] 856 2 0.0 [jbd2/dm-4-8] 857 2 0.0 [ext4-dio-unwrit] 858 2 0.0 [ext4-dio-unwrit] 859 2 0.0 [ext4-dio-unwrit] 860 2 0.0 [ext4-dio-unwrit] 861 2 0.0 [ext4-dio-unwrit] 862 2 0.0 [ext4-dio-unwrit] 863 2 0.0 [ext4-dio-unwrit] 864 2 0.0 [ext4-dio-unwrit] 865 2 0.0 [jbd2/dm-5-8] 866 2 0.0 [ext4-dio-unwrit] 867 2 0.0 [ext4-dio-unwrit] 868 2 0.0 [ext4-dio-unwrit] 869 2 0.0 [ext4-dio-unwrit] 870 2 0.0 [ext4-dio-unwrit] 871 2 0.0 [ext4-dio-unwrit] 872 2 0.0 [ext4-dio-unwrit] 873 2 0.0 [ext4-dio-unwrit] 934 2 0.0 [kauditd] 956 330 0.0 ping 10.0.2.2 1132 1 0.0 auditd 1150 1 0.0 /sbin/portreserve 1158 2 0.0 [rpciod/0] 1159 2 0.0 [rpciod/1] 1160 2 0.0 [rpciod/2] 1161 2 0.0 [rpciod/3] 1162 2 0.0 [rpciod/4] 1163 2 0.0 [rpciod/5] 1164 2 0.0 [rpciod/6] 1165 2 0.0 [rpciod/7] 1174 1 0.0 /sbin/rsyslogd -i /var/run/syslogd.pid -c3 1186 1 0.0 irqbalance 1201 1 0.0 rpcbind 1219 1 0.0 rpc.statd 1241 1 0.0 rpc.idmapd 1364 2 0.0 [flush-253:2] 2117 30665 0.3 python /home/project-web/tmda/cgi-bin/moin.cgi 2133 4796 0.5 /usr/sbin/httpd 2246 4796 0.5 /usr/sbin/httpd 2302 4796 0.4 /usr/sbin/httpd 2317 4796 0.5 /usr/sbin/httpd 2318 4796 0.5 /usr/sbin/httpd 2336 4796 0.5 /usr/sbin/httpd 2337 4796 0.5 /usr/sbin/httpd 2338 4796 0.5 /usr/sbin/httpd 2339 4796 0.4 /usr/sbin/httpd 2460 4796 0.5 /usr/sbin/httpd 2669 4796 0.5 /usr/sbin/httpd 3375 24425 0.3 python /home/project-web/openucf/cgi-bin/moin.cgi 4372 4796 0.6 /usr/sbin/httpd 4429 1 0.0 dbus-daemon --system 4453 2 0.0 [kslowd000] 4454 2 0.0 [kslowd001] 4455 2 0.0 [nfsiod] 4456 2 0.0 [lockd] 4481 4796 0.5 /usr/sbin/httpd 4602 1 0.0 hald 4603 4602 0.0 hald-runner 4632 4603 0.0 hald-addon-input: Listening on /dev/input/event1 4667 1 0.0 /usr/sbin/nscd 4682 1 0.0 /usr/sbin/snmpd -LSnd -Lf /dev/null -p /var/run/snmpd.pid -a -c /etc/snmp/snmpd.sfinc-utils.conf 4694 1 0.0 /usr/sbin/sshd 4702 1 0.0 xinetd -stayalive -pidfile /var/run/xinetd.pid 4710 1 0.0 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g 4726 1 1.4 /usr/local/sbin/omnifuse-projects -odev,allow_other --log-info --json-config=/var/local/config/omnifuse-projects.json --log-file=/var/log/omnifuse-projects.log /chroots/prweb/home/project-web 4741 1 0.0 /usr/local/sbin/omnifuse-users -odev,allow_other --log-info --json-config=/var/local/config/omnifuse-users.json --log-file=/var/log/omnifuse-users.log /chroots/prweb/home/user-web 4765 1 0.0 /usr/sbin/abrtd 4769 2302 0.3 python /home/project-web/openucf/cgi-bin/moin.cgi 4773 1 0.0 abrt-dump-oops -d /var/spool/abrt -rwx /var/log/messages 4780 4796 0.3 /usr/sbin/httpd 4796 1 0.4 /usr/sbin/httpd 4812 1 0.0 crond 4867 2 0.0 [flush-0:19] 4870 1 0.0 /usr/sbin/varnishd -P /var/run/varnish.pid -a :6081,:50025,:50026,:50041 -T 127.0.0.1:6082 -f /etc/varnish/default.vcl -t 120 -u varnish -g varnish -S /etc/varnish/secret -s file,/var/lib/varnish/varnish_storage.bin,1G 4896 1 0.0 sh -c /usr/bin/varnishncsa -P /var/run/varnishncsa.pid -f | /usr/local/sbin/filter-varnish-log 4898 4896 3.0 /usr/bin/varnishncsa -P /var/run/varnishncsa.pid -f 4899 4896 0.0 /usr/bin/perl /usr/local/sbin/filter-varnish-log 4912 1 0.0 /usr/sbin/atd 4921 1 0.0 /usr/bin/monit 4928 24370 0.3 python /home/project-web/openucf/cgi-bin/moin.cgi 4956 1 0.0 /var/ossec/bin/ossec-execd 4960 1 0.0 /var/ossec/bin/ossec-agentd 4964 1 0.0 /var/ossec/bin/ossec-logcollector 4968 1 0.0 /var/ossec/bin/ossec-syscheckd 5079 4796 0.4 /usr/sbin/httpd 5161 4796 0.4 /usr/sbin/httpd 5656 1 0.0 /sbin/mingetty /dev/tty1 5658 1 0.0 /sbin/mingetty /dev/tty2 5660 1 0.0 /sbin/mingetty /dev/tty3 5661 1 0.0 /sbin/agetty /dev/ttyS0 115200 vt100-nav 5663 1 0.0 /sbin/mingetty /dev/tty4 5665 1 0.0 /sbin/mingetty /dev/tty5 5667 1 0.0 /sbin/mingetty /dev/tty6 5676 4796 0.4 /usr/sbin/httpd 5883 4796 1.8 /usr/sbin/httpd 5969 27819 0.3 python /home/project-web/openucf/cgi-bin/moin.cgi 6026 5161 0.0 /bin/ps axo pid,ppid,pmem,args 6043 4796 0.0 /usr/sbin/cronolog --symlink=/var/local/log/error_log /var/local/log/%Y/%m/%d/error.log 6047 4796 0.0 /usr/sbin/cronolog --symlink=/var/local/log/access_log /var/local/log/%Y/%m/%d/access_log 6799 2 0.0 [flush-253:5] 7454 5883 0.0 ping 10.0.2.2 9254 442 0.0 /sbin/udevd -d 9403 1 0.2 /usr/bin/perl /var/local/mastertree/host/sfp-web/scripts/split-varnish-log 13285 4796 0.6 /usr/sbin/httpd 13704 4796 0.5 /usr/sbin/httpd 14612 4796 0.2 /usr/sbin/httpd 14835 4796 0.2 /usr/sbin/httpd 16052 4796 0.4 /usr/sbin/httpd 21740 4870 2.4 /usr/sbin/varnishd -P /var/run/varnish.pid -a :6081,:50025,:50026,:50041 -T 127.0.0.1:6082 -f /etc/varnish/default.vcl -t 120 -u varnish -g varnish -S /etc/varnish/secret -s file,/var/lib/varnish/varnish_storage.bin,1G 24370 4796 0.5 /usr/sbin/httpd 24425 4796 0.4 /usr/sbin/httpd 25544 4796 0.4 /usr/sbin/httpd 27739 4796 0.5 /usr/sbin/httpd 27816 4796 0.4 /usr/sbin/httpd 27819 4796 0.5 /usr/sbin/httpd 29216 4796 0.5 /usr/sbin/httpd 30189 4796 1.8 /usr/sbin/httpd 30335 4796 1.8 /usr/sbin/httpd 30645 30189 0.0 ping 10.0.2.2 30665 4796 0.5 /usr/sbin/httpd 32343 4796 1.8 /usr/sbin/httpd 32414 32343 0.0 ping 10.0.2.2 phpsysinfo-3.2.5/sample/main/000077500000000000000000000000001265516077000161415ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/main/1-cpuinfo.txt000066400000000000000000000007401265516077000205040ustar00rootroot00000000000000processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 23 model name : Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz stepping : 10 cpu MHz : 2391.032 cache size : 64 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 constant_tsc up pni monitor bogomips : 4782.06 clflush size : 64 power management: phpsysinfo-3.2.5/sample/main/1-dfiP.txt000066400000000000000000000005411265516077000177220ustar00rootroot00000000000000Filesystem Inode IUsati ILib. IUso% Montato su /dev/sda3 3278576 589607 2688969 18% / udev 218280 1831 216449 1% /dev /dev/sda4 0 0 0 - /home/erendil shm 218280 1 218279 1% /dev/shm /dev/sda1 18072 52 18020 1% /boot phpsysinfo-3.2.5/sample/main/1-dfkP.txt000066400000000000000000000006311265516077000177240ustar00rootroot00000000000000Filesystem 1024-blocks Used Available Capacity Montato su /dev/sda3 51613048 13387836 35603404 28% / udev 10240 148 10092 2% /dev /dev/sda4 2876529360 784104536 2092424824 28% /home/erendil shm 1685172 0 1685172 0% /dev/shm /dev/sda1 69972 37071 29288 56% /boot phpsysinfo-3.2.5/sample/main/1-mount.txt000066400000000000000000000011311265516077000201760ustar00rootroot00000000000000/dev/sda3 on / type ext3 (rw,noatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) udev on /dev type tmpfs (rw,nosuid,relatime,size=10240k,mode=755) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620) /dev/sda4 on /home/erendil type reiserfs (rw,noatime) shm on /dev/shm type tmpfs (rw,noexec,nosuid,nodev) usbfs on /proc/bus/usb type usbfs (rw,noexec,nosuid,devmode=0664,devgid=85) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev) /dev/sda1 on /boot type ext2 (rw,noatime) phpsysinfo-3.2.5/sample/main/README000066400000000000000000000002231265516077000170160ustar00rootroot00000000000000FILE CONTENT OF cpuinfo cat /proc/cpuinfo df df -P mount mount dev cat /proc/net/dev swaps cat /proc/swaps phpsysinfo-3.2.5/sample/main/cpuinfo1.txt000066400000000000000000000007401265516077000204270ustar00rootroot00000000000000processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 23 model name : Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz stepping : 10 cpu MHz : 2391.032 cache size : 64 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 constant_tsc up pni monitor bogomips : 4782.06 clflush size : 64 power management: phpsysinfo-3.2.5/sample/main/cpuinfo2.txt000066400000000000000000000005201265516077000204240ustar00rootroot00000000000000Processor : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 847.05 Features : swp half thumb fastmult vfp edsp java tls CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xb76 CPU revision : 7 Hardware : BCM2708 Revision : 0002 Serial : 000000000abc0ab1 phpsysinfo-3.2.5/sample/main/cpuinfo3.txt000066400000000000000000000006221265516077000204300ustar00rootroot00000000000000Processor : ARMv7 Processor rev 10 (v7l) processor : 0 BogoMIPS : 597.12 processor : 1 BogoMIPS : 597.12 Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x2 CPU part : 0xc09 CPU revision : 10 Hardware : Tuna Revision : 0009 Serial : 01298fc30100203f phpsysinfo-3.2.5/sample/main/cpuinfo4.txt000066400000000000000000000004411265516077000204300ustar00rootroot00000000000000Processor : ARMv7 Processor rev 1 (v7l) processor : 0 BogoMIPS : 1592.52 Features : swp half thumb fastmult vfp edsp neon vfpv3 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x2 CPU part : 0xc09 CPU revision : 1 Hardware : SMDKC210 Revision : 000c Serial : xxxxxxxxxxxxxxxx phpsysinfo-3.2.5/sample/main/cpuinfo5.txt000066400000000000000000000004201265516077000204260ustar00rootroot00000000000000Processor : ARMv7 Processor rev 0 (v7l) BogoMIPS : 366.18 Features : swp half thumb fastmult vfp edsp neon vfpv3 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc08 CPU revision : 0 Hardware : Goldfish Revision : 0000 Serial : 0000000000000000 phpsysinfo-3.2.5/sample/main/cpuinfo6.txt000066400000000000000000000005141265516077000204330ustar00rootroot00000000000000Processor : Feroceon 88FR131 rev 1 (v5l) BogoMIPS : 797.90 Features : swp half thumb fastmult edsp CPU implementer : 0x56 CPU architecture: 5TE CPU variant : 0x2 CPU part : 0x131 CPU revision : 1 Hardware : LaCie Internet Space v2 Revision : 0000 Serial : 0000000000000000 phpsysinfo-3.2.5/sample/main/cpuinfo7.txt000066400000000000000000000007151265516077000204370ustar00rootroot00000000000000Processor: ARM926EJ-S rev 0 (v5l) BogoMIPS: 956.82 Features: swp half thumb fastmult vfp edsp CPU implementer: 0x41 CPU architecture: 5TE CPU variant: 0x1 CPU part: 0x926 CPU revision: 0 Cache type: write-back Cache clean: cp15 c7 ops Cache lockdown: format C Cache format: Harvard I size: 32768 I assoc: 4 I line length: 32 I sets: 256 D size: 32768 D assoc: 4 D line length: 32 D sets: 256 Hardware: Feroceon-MV78XX0 Revision: 0000 Serial: 0000000000000000 phpsysinfo-3.2.5/sample/main/cpuinfo8.txt000066400000000000000000000010671265516077000204410ustar00rootroot00000000000000system type : Sigma Designs TangoX processor : 0 cpu model : MIPS 24K V7.12 FPU V0.0 Initial BogoMIPS : 332.59 wait instruction : yes microsecond timers : yes tlb_entries : 32 extra interrupt vector : yes hardware watchpoint : yes ASEs implemented : mips16 shadow register sets : 1 VCED exceptions : not available VCEI exceptions : not available System bus frequency : 333000000 Hz CPU frequency : 499500000 Hz DSP frequency : 333000000 Hz phpsysinfo-3.2.5/sample/main/cpuinfo9.txt000066400000000000000000000004241265516077000204360ustar00rootroot00000000000000machine : SH7785LCR processor : 0 cpu family : sh4a cpu type : SH7785 cut : 7.x cpu flags : fpu perfctr llsc cache type : split (harvard) icache size : 32KiB (4-way) dcache size : 32KiB (4-way) bogomips : 599.99 phpsysinfo-3.2.5/sample/main/dev1.txt000066400000000000000000000012641265516077000175440ustar00rootroot00000000000000Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 1106222 765 0 0 0 0 0 0 1106222 765 0 0 0 0 0 0 eth0: 1697868 1725 0 0 0 0 0 0 196192 1367 0 0 0 0 0 0 eth1: 479861 421 0 0 0 0 0 0 51152 377 0 0 0 0 0 0 pan0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 phpsysinfo-3.2.5/sample/main/df1.txt000066400000000000000000000031541265516077000173570ustar00rootroot00000000000000Filesystem 1K-blocks Used Available Use% Mounted on /dev/ad0s1a 2 1 1 0% / /dev/ad0s1f 2 1 1 0% /usr /dev/ad0s1e 2 1 1 0% /var /dev/ad4s1e 2 1 1 0% /opt /dev/ad2s1e 2 1 1 0% /opt/glftpd/site/Games /dev/ad5s1e 2 1 1 0% /opt/glftpd/site/Movies /dev/ad1s1c 2 1 1 0% /opt/glftpd/site/Movies2 /dev/ad6s1e 2 1 1 0% /opt/glftpd/site/xbox /dev/vinum/opt1 2 1 1 0% /opt1 procfs 2 1 1 0% /proc //ADMINISTRATOR@GODFATHER/GODFATHER C 2 1 1 0% /usr/home/username/godfather /dev/sda1 2 1 1 0% /mount/sda1 /dev/sda2 2 1 1 0% /mount/sda2 /dev/sda3 2 1 1 0% /mount/sda3 /dev/sda4 2 1 1 0% /mount/sda4 /dev/sda5 2 1 1 0% /mount/sda5 /dev/sda6 2 1 1 0% /mount/sda6 /dev/sda7 2 1 1 0% /mount/sda7 /dev/sda8 2 1 1 0% /mount/sda8 /dev/sda9 2 1 1 0% /mount/sda9 /dev/sda10 2 1 1 0% /mount/sda10 /dev/sda11 2 1 1 0% /mount/sda11 /dev/sda12 2 1 1 0% /mount/sda12 phpsysinfo-3.2.5/sample/main/mount1.txt000066400000000000000000000022471265516077000201320ustar00rootroot00000000000000/dev/ad0s1a on / type ext2 (ufs, local) /dev/ad0s1f on /usr type ext2 (ufs, local, soft-updates) /dev/ad0s1e on /var type ext2 (ufs, local, soft-updates) /dev/ad4s1e on /opt type ext2 (ufs, local, soft-updates) /dev/ad2s1e on /opt/glftpd/site/Games type ext2 (ufs, local, soft-updates) /dev/ad5s1e on /opt/glftpd/site/Movies type ext2 (ufs, local, soft-updates) /dev/ad1s1c on /opt/glftpd/site/Movies2 type ext2 (ufs, local, soft-updates) /dev/ad6s1e on /opt/glftpd/site/xbox type ext2 (ufs, local, soft-updates) /dev/vinum/opt1 on /opt1 type ext2 (ufs, local, soft-updates) procfs on /proc type ext2 (procfs, local) //ADMINISTRATOR@GODFATHER/GODFATHER C on /usr/home/username/godfather type ext2 (smbfs) /dev/sda1 on /mount/sda1 type ext2 (rw) /dev/sda2 on /mount/sda2 type ext2 (rw) /dev/sda3 on /mount/sda3 type ext2 (rw) /dev/sda4 on /mount/sda4 type ext2 (rw) /dev/sda5 on /mount/sda5 type ext2 (rw) /dev/sda6 on /mount/sda6 type ext2 (rw) /dev/sda7 on /mount/sda7 type ext2 (rw) /dev/sda8 on /mount/sda8 type ext2 (rw) /dev/sda9 on /mount/sda9 type ext2 (rw) /dev/sda10 on /mount/sda10 type ext2 (rw) /dev/sda11 on /mount/sda11 type ext2 (rw) /dev/sda12 on /mount/sda12 type ext2 (rw) phpsysinfo-3.2.5/sample/main/pmset1.txt000066400000000000000000000001221265516077000201060ustar00rootroot00000000000000Now drawing from 'AC Power' -InternalBattery-0 100%; charged; 0:00 remaining phpsysinfo-3.2.5/sample/main/pmset2.txt000066400000000000000000000001321265516077000201100ustar00rootroot00000000000000Now drawing from 'Battery Power' -InternalBattery-0 100%; discharging; (no estimate) phpsysinfo-3.2.5/sample/main/pmset3.txt000066400000000000000000000001241265516077000201120ustar00rootroot00000000000000Now drawing from 'AC Power' -Back-UPS XS 900 FW:830.E7 .D USB FW:E7 100%; charging phpsysinfo-3.2.5/sample/main/pmset4.txt000066400000000000000000000001521265516077000201140ustar00rootroot00000000000000Currently drawing from 'UPS Power' -Back-UPS BR 800 FW:9.o4 .D USB FW:o4 98%; discharging; 0:21 remainingphpsysinfo-3.2.5/sample/main/swaps1.txt000066400000000000000000000001501265516077000201140ustar00rootroot00000000000000Filename Type Size Used Priority /dev/sda5 partition 3389672 39216 -1 phpsysinfo-3.2.5/sample/main/vm_stat1.txt000066400000000000000000000010541265516077000204400ustar00rootroot00000000000000Mach Virtual Memory Statistics: (page size of 4096 bytes) Pages free: 33312. Pages active: 27150. Pages inactive: 28122. Pages wired down: 9720. "Translation faults": 18751279. Pages copy-on-write: 72642. Pages zero filled: 17475509. Pages reactivated: 110441. Pageins: 23256. Pageouts: 9390. Object cache: 21657 hits of 216013 lookups (10% hit rate) phpsysinfo-3.2.5/sample/main/vm_stat2.txt000066400000000000000000000011241265516077000204370ustar00rootroot00000000000000Mach Virtual Memory Statistics: (page size of 4096 bytes) Pages free: 90518. Pages active: 205479. Pages inactive: 32417. Pages speculative: 134461. Pages wired down: 61009. "Translation faults": 26323651. Pages copy-on-write: 177180. Pages zero filled: 15230394. Pages reactivated: 3. Pageins: 388108. Pageouts: 0. Object cache: 14 hits of 797355 lookups (0% hit rate) phpsysinfo-3.2.5/sample/main/vm_stat3.txt000066400000000000000000000020021265516077000204340ustar00rootroot00000000000000Mach Virtual Memory Statistics: (page size of 4096 bytes) Pages free: 10618. Pages active: 1894043. Pages inactive: 988141. Pages speculative: 806200. Pages throttled: 0. Pages wired down: 437176. Pages purgeable: 10356. "Translation faults": 2938853787. Pages copy-on-write: 241916814. Pages zero filled: 971743078. Pages reactivated: 379509. Pages purged: 637333. File-backed pages: 1552166. Anonymous pages: 2136218. Pages stored in compressor: 77894. Pages occupied by compressor: 56429. Decompressions: 3639. Compressions: 82391. Pageins: 1973731. Pageouts: 23343. Swapins: 264. Swapouts: 264. phpsysinfo-3.2.5/sample/motherboard/000077500000000000000000000000001265516077000175235ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/motherboard/hwsensors/000077500000000000000000000000001265516077000215565ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/motherboard/hwsensors/hwsensors1.txt000066400000000000000000000011151265516077000244310ustar00rootroot00000000000000hw.sensors.0=lm0, VCORE_A, volts_dc, 1.73 V hw.sensors.1=lm0, VCORE_B, volts_dc, 1.74 V hw.sensors.2=lm0, +3.3V, volts_dc, 3.26 V hw.sensors.3=lm0, +5V, volts_dc, 4.91 V hw.sensors.4=lm0, +12V, volts_dc, 12.28 V hw.sensors.5=lm0, -12V, volts_dc, -11.82 V hw.sensors.6=lm0, -5V, volts_dc, 3.55 V hw.sensors.7=lm0, +5VSB, volts_dc, 4.92 V hw.sensors.8=lm0, VBAT, volts_dc, 3.26 V hw.sensors.9=lm0, Temp1, temp, 33.00 degC / 91.40 degF hw.sensors.10=lm0, Temp2, temp, 22.50 degC / 72.50 degF hw.sensors.11=lm0, Temp3, temp, 127.50 degC / 261.50 degF hw.sensors.12=lm0, Fan1, fanrpm, 4891 RPM phpsysinfo-3.2.5/sample/motherboard/hwsensors/hwsensors2.txt000066400000000000000000000007231265516077000244360ustar00rootroot00000000000000hw.sensors.0=it0, Fan1, 2445 RPM hw.sensors.3=it0, VCORE_A, 1.62 V DC hw.sensors.4=it0, VCORE_B, 2.66 V DC hw.sensors.5=it0, +3.3V, 3.23 V DC hw.sensors.6=it0, +5V, 4.84 V DC hw.sensors.7=it0, +12V, 12.42 V DC hw.sensors.8=it0, Unused, -2.80 V DC hw.sensors.9=it0, -12V, -6.62 V DC hw.sensors.10=it0, +5VSB, 4.84 V DC hw.sensors.11=it0, VBAT, 0.00 V DC hw.sensors.12=it0, Temp 1, 35.00 degC hw.sensors.13=it0, Temp 2, 29.00 degC hw.sensors.14=it0, Temp 3, 45.00 degC phpsysinfo-3.2.5/sample/motherboard/hwsensors/hwsensors3.txt000066400000000000000000000010471265516077000244370ustar00rootroot00000000000000hw.sensors.acpitz0.temp0=21.80 degC (zone temperature) hw.sensors.it0.temp0=25.00 degC hw.sensors.it0.temp1=25.00 degC hw.sensors.it0.temp2=28.00 degC hw.sensors.it0.fan0=3668 RPM hw.sensors.it0.fan2=2033 RPM hw.sensors.it0.volt0=1.52 VDC (VCORE_A) hw.sensors.it0.volt1=2.54 VDC (VCORE_B) hw.sensors.it0.volt2=3.25 VDC (+3.3V) hw.sensors.it0.volt3=4.19 VDC (+5V) hw.sensors.it0.volt4=12.10 VDC (+12V) hw.sensors.it0.volt5=-9.42 VDC (-12V) hw.sensors.it0.volt6=-4.68 VDC (-5V) hw.sensors.it0.volt7=3.87 VDC (+5VSB) hw.sensors.it0.volt8=4.08 VDC (VBAT) phpsysinfo-3.2.5/sample/motherboard/hwsensors/hwsensors4.txt000066400000000000000000000014011265516077000244320ustar00rootroot00000000000000hw.sensors.cpu0.temp0=35.00 degC hw.sensors.cpu1.temp0=35.00 degC hw.sensors.cpu2.temp0=35.00 degC hw.sensors.cpu3.temp0=35.00 degC hw.sensors.acpitz0.temp0=47.00 degC (zone temperature) hw.sensors.acpibat0.volt0=10.80 VDC (voltage) hw.sensors.acpibat0.volt1=12.46 VDC (current voltage) hw.sensors.acpibat0.amphour0=9.39 Ah (last full capacity) hw.sensors.acpibat0.amphour1=0.47 Ah (warning capacity) hw.sensors.acpibat0.amphour2=0.02 Ah (low capacity) hw.sensors.acpibat0.amphour3=9.39 Ah (remaining capacity), OK hw.sensors.acpibat0.raw0=0 (battery full), OK hw.sensors.acpibat0.raw1=0 (rate) hw.sensors.acpiac0.indicator0=On (power supply) hw.sensors.acpithinkpad0.temp0=47.00 degC hw.sensors.acpithinkpad0.temp1=47.00 degC hw.sensors.acpithinkpad0.temp2=47.00 degC phpsysinfo-3.2.5/sample/motherboard/hwsensors/hwsensors5.txt000066400000000000000000000026111265516077000244370ustar00rootroot00000000000000hw.sensors.cpu0.temp0=60.00 degC hw.sensors.cpu1.temp0=60.00 degC hw.sensors.cpu2.temp0=60.00 degC hw.sensors.cpu3.temp0=60.00 degC hw.sensors.acpitz0.temp0=59.00 degC (zone temperature) hw.sensors.acpibat0.volt0=11.10 VDC (voltage) hw.sensors.acpibat0.volt1=12.49 VDC (current voltage) hw.sensors.acpibat0.power0=0.00 W (rate) hw.sensors.acpibat0.watthour0=48.90 Wh (last full capacity) hw.sensors.acpibat0.watthour1=2.44 Wh (warning capacity) hw.sensors.acpibat0.watthour2=0.20 Wh (low capacity) hw.sensors.acpibat0.watthour3=47.90 Wh (remaining capacity), OK hw.sensors.acpibat0.raw0=0 (battery idle), OK hw.sensors.acpiac0.indicator0=On (power supply) hw.sensors.acpithinkpad0.temp0=59.00 degC hw.sensors.acpithinkpad0.temp1=59.00 degC hw.sensors.acpithinkpad0.temp2=59.00 degC hw.sensors.acpithinkpad0.temp3=59.00 degC hw.sensors.acpithinkpad0.temp4=59.00 degC hw.sensors.acpithinkpad0.temp5=59.00 degC hw.sensors.acpithinkpad0.temp6=59.00 degC hw.sensors.acpithinkpad0.temp7=59.00 degC hw.sensors.acpithinkpad0.fan0=3782 RPM hw.sensors.acpidock0.indicator0=Off (not docked) hw.sensors.aps0.temp0=45.00 degC hw.sensors.aps0.temp1=45.00 degC hw.sensors.aps0.indicator0=On (Keyboard Active) hw.sensors.aps0.indicator1=Off (Mouse Active) hw.sensors.aps0.indicator2=On (Lid Open) hw.sensors.aps0.raw0=503 (X_ACCEL) hw.sensors.aps0.raw1=519 (Y_ACCEL) hw.sensors.aps0.raw2=503 (X_VAR) hw.sensors.aps0.raw3=519 (Y_VAR) phpsysinfo-3.2.5/sample/motherboard/ipmi-sensors/000077500000000000000000000000001265516077000221535ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/motherboard/ipmi-sensors/ipmi-sensors1.txt000066400000000000000000000112121265516077000254220ustar00rootroot00000000000000ID | Name | Type | Reading | Units | Lower NR | Lower C | Lower NC | Upper NC | Upper C | Upper NR | Event 64 | BIOS | System Firmware Progress | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A 112 | ACPI State | System ACPI Power State | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 'S0/G0' 160 | System Reset | Module/Board | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 'OK' 208 | CPU Fan | Fan | 2085.94 | RPM | N/A | N/A | N/A | N/A | 771.96 | N/A | 'OK' 272 | Rear Fan | Fan | 1463.27 | RPM | N/A | N/A | N/A | N/A | 771.96 | N/A | 'OK' 336 | System 12V | Voltage | 11.93 | V | N/A | 10.02 | N/A | N/A | 13.16 | N/A | 'OK' 400 | System 5V | Voltage | 5.05 | V | N/A | 4.75 | N/A | N/A | 5.24 | N/A | 'OK' 464 | System AUX 5V | Voltage | 4.94 | V | N/A | 4.75 | N/A | N/A | 5.24 | N/A | 'OK' 528 | System 3.3V | Voltage | 3.22 | V | N/A | 3.14 | N/A | N/A | 3.47 | N/A | 'OK' 592 | System AUX 3.3V | Voltage | 3.31 | V | N/A | 3.14 | N/A | N/A | 3.47 | N/A | 'OK' 656 | CPU Vcore | Voltage | 1.16 | V | N/A | 0.84 | N/A | N/A | 1.61 | N/A | 'OK' 720 | CPU Vterm | Voltage | 1.21 | V | N/A | 1.15 | N/A | N/A | 1.26 | N/A | 'OK' 784 | Memory Vcore | Voltage | 1.78 | V | N/A | 1.71 | N/A | N/A | 1.91 | N/A | 'OK' 848 | Memory Vterm | Voltage | 0.89 | V | N/A | 0.85 | N/A | N/A | 0.94 | N/A | 'OK' 912 | AMB/MCH Vcore | Voltage | 1.50 | V | N/A | 1.43 | N/A | N/A | 1.58 | N/A | 'OK' 976 | PCI System Err | Module/Board | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A 1024 | Mem Recover Err | Memory | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A 1072 | MemUnrecover Er | Memory | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A 1120 | RCPU Diode 1 | Temperature | N/A | C | N/A | N/A | N/A | N/A | 85.00 | N/A | N/A 1184 | Ambient | Temperature | 27.00 | C | N/A | N/A | N/A | N/A | 51.00 | N/A | 'OK' 1248 | Local VRD0 Temp | Temperature | 28.00 | C | N/A | N/A | N/A | N/A | N/A | N/A | 'OK' 1504 | CPU Dmn 0 Temp | Temperature | 53.00 | C | N/A | N/A | N/A | N/A | 85.00 | N/A | 'OK' 1632 | Slots Amb | Temperature | 33.00 | C | N/A | N/A | N/A | N/A | 85.00 | N/A | 'OK' 1696 | 1.8V Amb | Temperature | 46.00 | C | N/A | N/A | N/A | N/A | 85.00 | N/A | 'OK' 2080 | Therm-Trip | Processor | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 'State Deasserted' 2128 | CPU Prochot | Temperature | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 'Limit Not Exceeded' 2176 | LOM Link Status | LAN | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 'State Asserted' 2224 | LO100 Present | Add In Card | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 'Device Removed/Device Absent' 5616 | Watchdog | Watchdog 2 | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A phpsysinfo-3.2.5/sample/motherboard/ipmitool/000077500000000000000000000000001265516077000213575ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/motherboard/ipmitool/ipmitool1.txt000066400000000000000000000174011265516077000240400ustar00rootroot00000000000000BB +1.2V Vtt | 1.197 | Volts | ok | na | 1.096 | 1.134 | 1.285 | 1.323 | na BB +1.5V AUX | 1.490 | Volts | ok | na | 1.334 | 1.373 | 1.622 | 1.669 | na BB +1.5V | 1.469 | Volts | ok | na | 1.326 | 1.365 | 1.625 | 1.677 | na BB +1.8V | 1.802 | Volts | ok | na | 1.638 | 1.689 | 1.926 | 1.988 | na BB +3.3V | 3.320 | Volts | ok | na | 2.941 | 3.027 | 3.578 | 3.681 | na BB +3.3V STB | 3.337 | Volts | ok | na | 3.027 | 3.113 | 3.509 | 3.612 | na BB +1.5V ESB | 1.490 | Volts | ok | na | 1.357 | 1.404 | 1.591 | 1.638 | na BB +5V | 5.122 | Volts | ok | na | 4.446 | 4.576 | 5.408 | 5.564 | na BB +12V AUX | 12.090 | Volts | ok | na | 10.416 | 10.726 | 13.144 | 13.578 | na BB 0.9V | 0.902 | Volts | ok | na | 0.811 | 0.835 | 0.950 | 0.979 | na Baseboard Temp | 29.000 | degrees C | ok | na | 5.000 | 10.000 | 61.000 | 66.000 | na P1 Therm Margin | -32.000 | degrees C | ok | na | na | na | na | na | na P1 Therm Ctrl % | 0.000 | unspecified | ok | na | na | na | na | 49.530 | na Proc 1 Vcc | 1.203 | Volts | ok | na | na | na | na | na | na Power Unit | 0x0 | discrete | 0x0000| na | na | na | na | na | na BMC Watchdog | 0x0 | discrete | 0x0000| na | na | na | na | na | na Scrty Violation | 0x0 | discrete | 0x0000| na | na | na | na | na | na F-P Diag Int | 0x0 | discrete | 0x0000| na | na | na | na | na | na System Event Log | 0x0 | discrete | 0x0000| na | na | na | na | na | na Session Audit | 0x0 | discrete | 0x0000| na | na | na | na | na | na System Event | 0x0 | discrete | 0x0000| na | na | na | na | na | na BB Vbat | 0x0 | discrete | 0x0000| na | na | na | na | na | na SysACPIPowerStat | 0x0 | discrete | 0x0100| na | na | na | na | na | na Button | 0x0 | discrete | 0x0000| na | na | na | na | na | na SMI Timeout | 0x0 | discrete | 0x0100| na | na | na | na | na | na NMI State | 0x0 | discrete | 0x0100| na | na | na | na | na | na SMI State | 0x0 | discrete | 0x0100| na | na | na | na | na | na Processor 1 Stat | 0x0 | discrete | 0x8000| na | na | na | na | na | na Processor 2 Stat | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link0 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link1 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link3 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link4 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link5 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link6 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link7 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link8 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link9 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link10 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link11 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link12 | 0x0 | discrete | 0x0000| na | na | na | na | na | na PCIe Link13 | 0x0 | discrete | 0x0000| na | na | na | na | na | na Proc1 VRD Hot | 0x0 | discrete | 0x0000| na | na | na | na | na | na CPU1 Vcc OOR | 0x0 | discrete | 0x0000| na | na | na | na | na | na CPU Popula Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na DIMM A1 | 0x0 | discrete | 0x0400| na | na | na | na | na | na DIMM A2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na DIMM B1 | 0x0 | discrete | 0x0400| na | na | na | na | na | na DIMM B2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na DIMM C1 | 0x0 | discrete | 0x0000| na | na | na | na | na | na DIMM C2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na DIMM D1 | 0x0 | discrete | 0x0000| na | na | na | na | na | na DIMM D2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na MemA Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na MemB Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na MemC Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na MemD Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na B0 Sparing Enb | na | discrete | na | na | na | na | na | na | na B0 Spare Redun | na | discrete | na | na | na | na | na | na | na B1 Sparing Enb | na | discrete | na | na | na | na | na | na | na B1 Spare Redun | na | discrete | na | na | na | na | na | na | na B01 Mirror Enbl | na | discrete | na | na | na | na | na | na | na B01 MirrorRedun | na | discrete | na | na | na | na | na | na | na phpsysinfo-3.2.5/sample/motherboard/ipmiutil/000077500000000000000000000000001265516077000213575ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/motherboard/ipmiutil/ipmiutil1.txt000066400000000000000000000335051265516077000240430ustar00rootroot00000000000000ipmiutil ver 2.93 isensor: version 2.93 -- BMC version 1.51, IPMI version 2.0 ID | SDRType | Type |SNum| Name |Status| Reading 0001 | Compact | Event Log | 72 | SEL | Absent | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0002 | Compact | Platform Securi | 73 | Intrusion | OK | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 000b | Full | Fan | 30 | Fan1A RPM | OK | 1680.00 RPM | Thresholds| lo-noncr 840.00 | lo-crit 720.00 000c | Full | Fan | 31 | Fan1B RPM | OK | 1560.00 RPM | Thresholds| lo-noncr 840.00 | lo-crit 720.00 000d | Full | Fan | 32 | Fan2A RPM | OK | 2880.00 RPM | Thresholds| lo-noncr 840.00 | lo-crit 720.00 000e | Full | Fan | 33 | Fan2B RPM | OK | 2760.00 RPM | Thresholds| lo-noncr 840.00 | lo-crit 720.00 000f | Full | Fan | 34 | Fan3A RPM | OK | 2880.00 RPM | Thresholds| lo-noncr 840.00 | lo-crit 720.00 0010 | Full | Fan | 35 | Fan3B RPM | OK | 2760.00 RPM | Thresholds| lo-noncr 840.00 | lo-crit 720.00 0011 | Full | Fan | 36 | Fan4A RPM | OK | 2280.00 RPM | Thresholds| lo-noncr 840.00 | lo-crit 720.00 0012 | Full | Fan | 37 | Fan4B RPM | OK | 2160.00 RPM | Thresholds| lo-noncr 840.00 | lo-crit 720.00 0013 | Full | Fan | 38 | Fan5A RPM | OK | 2280.00 RPM | Thresholds| lo-noncr 840.00 | lo-crit 720.00 0014 | Full | Fan | 39 | Fan5B RPM | OK | 2160.00 RPM | Thresholds| lo-noncr 840.00 | lo-crit 720.00 0015 | Full | Temperature | 04 | Inlet Temp | OK | 18.00 C | Thresholds| hi-crit 47.00 | hi-noncr 42.00 | lo-noncr 3.00 | lo-crit -7.00 0016 | Compact | Watchdog_2 | 71 | OS Watchdog | OK | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0017 | Compact | Voltage | 23 | VCORE PG | OK | | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state 0018 | Compact | Voltage | 19 | 3.3V PG | OK | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0019 | Compact | Voltage | 1a | 5V PG | OK | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 001a | Compact | Cable/Interconn | 50 | USB Cable Pres | _ | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 001b | Compact | Entity Presence | 70 | Dedicated NIC | Present | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 001c | Compact | Cable/Interconn | 51 | VGA Cable Pres | _ | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 001d | Compact | Entity Presence | 49 | Presence | OK* | | Entity ID 11.2 (Add-in card), Capab: arm=auto thr=none evts=state 001e | Compact | Entity Presence | 40 | Presence | OK* | | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state 001f | Compact | Voltage | 25 | PLL PG | OK | | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state 0020 | Compact | Voltage | 27 | 1.1V PG | OK | | Entity ID 0.1 (unspecified), Capab: arm=auto thr=none evts=state 0021 | Compact | Voltage | f6 | BP1 5V PG | OK | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0022 | Compact | Entity Presence | 43 | Presence | OK* | | Entity ID 10.2 (Power supply), Capab: arm=auto thr=none evts=state 0023 | Compact | Voltage | 2b | VSA PG | OK | | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state 0024 | Compact | Voltage | 1e | MEM VDDQ PG | OK | | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state 0025 | Compact | Cable/Interconn | 4c | LCD Cable Pres | _ | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0026 | Compact | Voltage | 20 | VTT PG | OK | | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state 0027 | Compact | Entity Presence | 48 | Presence | Present | | Entity ID 11.3 (Add-in card), Capab: arm=auto thr=none evts=state 0028 | Compact | Processor | 60 | Status | ProcPresent | | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state 0029 | Compact | Fan | 75 | Fan Redundancy | Redundant | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 002c | Compact | Cable/Interconn | 64 | Riser Config Err | _ | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 002d | Compact | Voltage | 28 | 1.5V PG | OK | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 002e | Compact | Voltage | 2c | PS2 PG Fail | OK | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 002f | Compact | Voltage | 2d | PS1 PG Fail | OK | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0030 | Compact | Voltage | 14 | MEM VTT PG | OK | | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state 0031 | Compact | Entity Presence | 42 | Presence | OK* | | Entity ID 10.1 (Power supply), Capab: arm=auto thr=none evts=state 0032 | Compact | Critical Interr | 90 | PCIe Slot1 | OK | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0033 | Compact | Critical Interr | 91 | PCIe Slot2 | OK | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0034 | Compact | Critical Interr | 92 | PCIe Slot3 | OK | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0035 | Compact | Critical Interr | 93 | PCIe Slot4 | OK | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0036 | Compact | Memory | c0 | A | OK | | Entity ID 32.1 (Memory device ), Capab: arm=auto thr=none evts=state 0039 | Compact | Board | fa | vFlash | OK | | Entity ID 12.1 (Front panel bd), Capab: arm=auto thr=none evts=state 003a | Compact | Battery | 65 | CMOS Battery | OK | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 003b | Compact | Entity Presence | 54 | Presence | OK* | | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state 003c | Full | Current | 6a | Current 1 | OK | 0.40 A | Thresholds 003d | Full | Current | 6b | Current 2 | OK | 0.20 A | Thresholds 003e | Full | Voltage | 6c | Voltage 1 | OK | 228.00 V | Thresholds 003f | Full | Voltage | 6d | Voltage 2 | OK | 230.00 V | Thresholds 0040 | Compact | Power Supply | 74 | PS Redundancy | Present | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0041 | Compact | Power Supply | 62 | Status | Present | | Entity ID 10.1 (Power supply), Capab: arm=auto thr=none evts=state 0042 | Compact | Power Supply | 63 | Status | Present | | Entity ID 10.2 (Power supply), Capab: arm=auto thr=none evts=state 0043 | Full | Current | 77 | Pwr Consumption | OK | 84.00 W | Thresholds| hi-crit 728.00 | hi-noncr 658.00 0044 | Compact | OEM(c0) | 76 | Power Optimized | Asserted | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0045 | Compact | OEM(c9) | f4 | SD1 | _ | | Entity ID 11.3 (Add-in card), Capab: arm=auto thr=none evts=state 0046 | Compact | OEM(c9) | f5 | SD2 | _ | | Entity ID 11.3 (Add-in card), Capab: arm=auto thr=none evts=state 0047 | Compact | OEM(c9) | 78 | Redundancy | _ | | Entity ID 11.3 (Add-in card), Capab: arm=auto thr=none evts=state 0048 | Compact | Memory | 01 | ECC Corr Err | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0049 | Compact | Memory | 02 | ECC Uncorr Err | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 004a | Compact | Critical Interr | 03 | I/O Channel Chk | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 004b | Compact | Critical Interr | 04 | PCI Parity Err | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 004c | Compact | Critical Interr | 05 | PCI System Err | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 004d | Compact | Event Log | 06 | SBE Log Disabled | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 004e | Compact | Event Log | 07 | Logging Disabled | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 004f | Compact | System Event | 08 | Unknown | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0050 | Compact | Processor | 0a | CPU Protocol Err | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0051 | Compact | Processor | 0b | CPU Bus PERR | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0052 | Compact | Processor | 0c | CPU Init Err | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0053 | Compact | Processor | 0d | CPU Machine Chk | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0054 | Compact | Memory | 11 | Memory Spared | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0055 | Compact | Memory | 12 | Memory Mirrored | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0056 | Compact | Memory | 13 | Memory RAID | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0057 | Compact | Memory | 14 | Memory Added | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0058 | Compact | Memory | 15 | Memory Removed | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0059 | Compact | Memory | 16 | Memory Cfg Err | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 005a | Compact | Memory | 17 | Mem Redun Gain | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 005b | Compact | Critical Interr | 18 | PCIE Fatal Err | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 005c | Compact | Critical Interr | 19 | Chipset Err | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 005d | Compact | OEM(c1) | 1a | Err Reg Pointer | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 005e | Compact | Memory | 1b | Mem ECC Warning | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 005f | Compact | Memory | 1c | Mem CRC Err | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0060 | Compact | Memory | 1d | USB Over-current | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0061 | Compact | System Firmware | 1e | POST Err | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0062 | Compact | Version Change | 1f | Hdwr version err | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0063 | Compact | Memory | 20 | Mem Overtemp | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0064 | Compact | Memory | 21 | Mem Fatal SB CRC | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0065 | Compact | Memory | 22 | Mem Fatal NB CRC | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0066 | Compact | Watchdog_1 | 71 | OS Watchdog Time | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0067 | Compact | Memory | 26 | Non Fatal PCI Er | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0068 | Compact | Memory | 27 | Fatal IO Error | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 0069 | Compact | Memory | 28 | MSR Info Log | Unknown | | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state 006a | Compact | Drive Slot | a0 | Drive 0 | Unused Faulty | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 006b | Compact | Cable/Interconn | e0 | Cable SAS A | _ | | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state 006c | Compact | Cable/Interconn | e1 | Cable SAS B | _ | | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state 006d | Compact | Cable/Interconn | e2 | Cable SAS C | _ | | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state 006e | Compact | Cable/Interconn | e3 | Cable SAS D | _ | | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state 006f | Compact | Cable/Interconn | 58 | Power Cable | _ | | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state 0070 | Compact | Cable/Interconn | 59 | Signal Cable | _ | | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state 0071 | Compact | Voltage | 66 | PFault Fail Safe | Absent | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0072 | Compact | Battery | 68 | ROMB Battery | NotAvailable | | Entity ID 11.2 (Add-in card), Capab: arm=auto thr=none evts=state 0073 | Compact | Battery | 69 | ROMB Battery | NotAvailable | | Entity ID 11.4 (Add-in card), Capab: arm=auto thr=none evts=state 0074 | Compact | Cable/Interconn | 4d | Riser 1 Presence | _ | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0075 | Compact | Cable/Interconn | 4e | Riser 2 Presence | _ | | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state 0077 | Full | Temperature | 0e | Temp | OK | 66.00 C | Thresholds| hi-crit 83.00 | hi-noncr 77.00 | lo-noncr 8.00 | lo-crit 3.00 ipmiutil sensor, completed successfully phpsysinfo-3.2.5/sample/motherboard/lmsensors/000077500000000000000000000000001265516077000215505ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/motherboard/lmsensors/lmsensors1.txt000066400000000000000000000011121265516077000244120ustar00rootroot00000000000000via686a-isa-6000 Adapter: ISA adapter CPU core: +1.72 V (min = +1.99 V, max = +2.49 V) ALARM +2.5V: +0.30 V (min = +2.24 V, max = +2.74 V) ALARM I/O: +3.35 V (min = +2.95 V, max = +3.62 V) +5V: +4.82 V (min = +4.47 V, max = +5.49 V) +12V: +11.45 V (min = +10.79 V, max = +13.18 V) CPU Fan: 0 RPM (min = 3000 RPM, div = 2) ALARM P/S Fan: 0 RPM (min = 3000 RPM, div = 2) SYS Temp: +27.9C (high = +45C, hyst = +40C) CPU Temp: +53.1C (high = +60C, hyst = +55C) SBr Temp: +24.2C (high = +65C, hyst = +60C) phpsysinfo-3.2.5/sample/motherboard/lmsensors/lmsensors10.txt000066400000000000000000000004371265516077000245030ustar00rootroot00000000000000nouveau-pci-0200 Adapter: PCI adapter temp1: +73.0°C (high = +100.0°C, crit = +100.0°C) applesmc-isa-0300 Adapter: ISA adapter Master : 1493 RPM (min = 1500 RPM) TC0D: +49.5°C TC0H: +49.2°C TC0P: +48.2°C TH0P: +48.8°C TN0D: +72.8°C TN0P: +58.5°C TW0P: +56.8°C Tm0P: +128.0°C phpsysinfo-3.2.5/sample/motherboard/lmsensors/lmsensors2.txt000066400000000000000000000017341265516077000244250ustar00rootroot00000000000000w83781d-i2c-0-2d Adapter: SMBus PIIX4 adapter at 5f00 VCore 1: +2.82 V (min = +2.66 V, max = +2.94 V) VCore 2: +1.49 V (min = +2.66 V, max = +2.94 V) ALARM +3.3V: +3.50 V (min = +3.14 V, max = +3.46 V) ALARM +5V: +4.97 V (min = +4.73 V, max = +5.24 V) +12V: +11.92 V (min = +11.37 V, max = +12.59 V) -12V: -11.57 V (min = -12.57 V, max = -11.35 V) -5V: -4.89 V (min = -5.25 V, max = -4.74 V) fan1: 6026 RPM (min = 2657 RPM, div = 2) fan2: 0 RPM (min = 2657 RPM, div = 2) ALARM fan3: 0 RPM (min = 2657 RPM, div = 2) ALARM temp1: +12C (high = +127C, hyst = +0C) temp2: +11.5C (high = +50C, hyst = +49C) temp3: +11.0C (high = +127C, hyst = +0C) vid: +2.800 V alarms: beep_enable: Sound alarm disabled phpsysinfo-3.2.5/sample/motherboard/lmsensors/lmsensors3.txt000066400000000000000000000012371265516077000244240ustar00rootroot00000000000000it87-isa-0290 Adapter: ISA adapter VCore: +1.68 V (min = +1.64 V, max = +1.69 V) DDRVtt: +2.56 V (min = +2.42 V, max = +2.58 V) +3.3V: +3.31 V (min = +3.13 V, max = +3.45 V) +5V: +4.77 V (min = +4.72 V, max = +5.24 V) +12V: +12.52 V (min = +11.36 V, max = +12.72 V) +5VSB: +4.99 V (min = +4.72 V, max = +5.24 V) CPU: 3515 RPM (min = 1997 RPM, div = 4) SYS: 2393 RPM (min = 1997 RPM, div = 4) SYS: +34C (low = +20C, high = +40C) sensor = thermistor max1617-i2c-1-4c Adapter: SMBus Via Pro adapter at 5000 CPU: +44C (low = +30C, high = +70C) phpsysinfo-3.2.5/sample/motherboard/lmsensors/lmsensors4.txt000066400000000000000000000011671265516077000244270ustar00rootroot00000000000000smsc47m1-isa-0680 Adapter: ISA adapter CPU fan: 2507 RPM (min = 640 RPM, div = 8) adm1025-i2c-0-2d Adapter: SMBus I801 adapter at e000 CPU I/O (+1.5V): +1.51 V (min = +1.35 V, max = +1.65 V) CPU Core (+1.75V): +1.72 V (min = +1.66 V, max = +1.84 V) +3.3V: +3.33 V (min = +2.97 V, max = +3.63 V) +5V: +5.21 V (min = +4.50 V, max = +5.50 V) +3.3V standby: +3.27 V (min = +2.97 V, max = +3.63 V) CPU Temp: +34.0 C (low = +10 C, high = +60 C) M/B Temp: +33.0 C (low = +10 C, high = +45 C) vid: +1.750 V (VRM Version 9.0) phpsysinfo-3.2.5/sample/motherboard/lmsensors/lmsensors5.txt000066400000000000000000000013241265516077000244230ustar00rootroot00000000000000eeprom-i2c-0-50 Adapter: SMBus PIIX4 adapter at f0b0 Unknown EEPROM type (54) eeprom-i2c-0-54 Adapter: SMBus PIIX4 adapter at f0b0 Memory type: SDR SDRAM DIMM Memory size (MB): 128 eeprom-i2c-0-55 Adapter: SMBus PIIX4 adapter at f0b0 Memory type: SDR SDRAM DIMM Memory size (MB): 128 eeprom-i2c-0-56 Adapter: SMBus PIIX4 adapter at f0b0 Memory type: SDR SDRAM DIMM Memory size (MB): 128 fscpos-i2c-0-73 Adapter: SMBus PIIX4 adapter at f0b0 temp1: +38.00 C temp2: +28.00 C temp3: failed fan1: 1440 RPM fan2: 0 RPM fan3: 3120 RPM volt12: +11.91 V volt5: +5.12 V voltbatt: +3.15 V phpsysinfo-3.2.5/sample/motherboard/lmsensors/lmsensors6.txt000066400000000000000000000020201265516077000244160ustar00rootroot00000000000000it8716-isa-0228 Adapter: ISA adapter VCore: +0.99 V (min = +0.00 V, max = +4.08 V) VDDR: +1.89 V (min = +0.00 V, max = +4.08 V) +3.3V: +3.38 V (min = +0.00 V, max = +4.08 V) +5V: +5.08 V (min = +0.00 V, max = +6.85 V) +12V: +12.16 V (min = +0.00 V, max = +16.32 V) in5: +3.25 V (min = +0.00 V, max = +4.08 V) in6: +0.10 V (min = +0.00 V, max = +4.08 V) 5VSB: +4.95 V (min = +0.00 V, max = +6.85 V) VBat: +3.26 V fan1: 1374 RPM (min = 0 RPM) fan2: 0 RPM (min = 0 RPM) temp1: +42°C (low = +127°C, high = +127°C) sensor = thermistor temp2: +37°C (low = +127°C, high = +127°C) sensor = thermistor temp3: +28°C (low = +127°C, high = +127°C) sensor = diode vid: +1.000 V k8temp-pci-00c3 Adapter: PCI adapter Core0 Temp: +31°C Core0 Temp: +21°C Core1 Temp: +29°C Core1 Temp: +21°C phpsysinfo-3.2.5/sample/motherboard/lmsensors/lmsensors7.txt000066400000000000000000000017021265516077000244250ustar00rootroot00000000000000asb100-i2c-1-2d Adapter: SMBus nForce2 adapter at 5500 VCore 1: +1.60 V (min = +1.25 V, max = +1.87 V) +3.3V: +3.30 V (min = +2.96 V, max = +3.63 V) +5V: +5.05 V (min = +4.49 V, max = +5.51 V) +12V: +11.55 V (min = +9.55 V, max = +14.41 V) -12V (reserved): -12.07 V (min = -0.00 V, max = -0.00 V) -5V (reserved): -5.06 V (min = -0.00 V, max = -0.00 V) CPU Fan: 11065 RPM (min = -1 RPM, div = 2) Chassis Fan: 2755 RPM (min = -1 RPM, div = 2) Power Fan: 0 RPM (min = -1 RPM, div = 2) M/B Temp: +34 C (high = +80 C, hyst = +75 C) CPU Temp (Intel): +25 C (high = +80 C, hyst = +75 C) Power Temp: -0 C (high = +80 C, hyst = +75 C) CPU Temp (AMD): +25 C (high = +80 C, hyst = +75 C) vid: +1.575 V (VRM Version 9.0) alarms: phpsysinfo-3.2.5/sample/motherboard/lmsensors/lmsensors8.txt000066400000000000000000000011261265516077000244260ustar00rootroot00000000000000coretemp-isa-0000 Adapter: ISA adapter Core 0: +49.0°C (high = +74.0°C, crit = +100.0°C) Core 1: +46.0°C (high = +74.0°C, crit = +100.0°C) fam15h_power-pci-00c4 Adapter: PCI adapter power1: 85.74 W fam15h_power-pci-00c4 Adapter: PCI adapter power1: 71.17 W (crit = 95.04 W) mcp3021-i2c-0-4d Adapter: MPC adapter in0: +0.19 V (min = +0.19 V, max = +0.21 V) curr1: +0.99 A (min = +0.93 A, max = +1.05 A) mcp3021-i2c-1-4d Adapter: MPC adapter in0: +0.40 V (min = +0.40 V, max = +0.41 V) curr1: +2.01 A (min = +1.98 A, max = +2.02 A) phpsysinfo-3.2.5/sample/motherboard/lmsensors/lmsensors9.txt000066400000000000000000000010631265516077000244270ustar00rootroot00000000000000power_meter-acpi-0 Adapter: ACPI interface power1: 4.29 MW (interval = 2.00 s) coretemp-isa-0000 Adapter: ISA adapter Physical id 0: +56.0°C (high = +87.0°C, crit = +97.0°C) Core 0: +54.0°C (high = +87.0°C, crit = +97.0°C) Core 1: +56.0°C (high = +87.0°C, crit = +97.0°C) Core 2: +53.0°C (high = +87.0°C, crit = +97.0°C) Core 3: +53.0°C (high = +87.0°C, crit = +97.0°C) Core 4: +53.0°C (high = +87.0°C, crit = +97.0°C) Core 5: +52.0°C (high = +87.0°C, crit = +97.0°C) phpsysinfo-3.2.5/sample/motherboard/mbm5/000077500000000000000000000000001265516077000203635ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/motherboard/mbm5/MBM51.csv000066400000000000000000000021331265516077000216600ustar00rootroot00000000000000;;;Case;CPU;Sensor 3;Core 0;Core 1;+3.3;+5.00;+12.00;-12.00;-5.00;Fan 1;Fan 2;Fan 3; 23/02/2008;15:45:18;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,23 V;4,92 V;12,28 V;1,54 V;2,29 V;5037 RPM; 23/02/2008;15:44:48;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,25 V;4,89 V;12,28 V;1,54 V;2,34 V;5113 RPM; 23/02/2008;15:44:18;2000 MHz;45 C;53 C;0 C;1,66 V;0,00 V;3,25 V;4,89 V;12,28 V;1,63 V;2,34 V;5113 RPM; 23/02/2008;15:43:48;2000 MHz;45 C;53 C;0 C;1,66 V;0,00 V;3,23 V;4,89 V;12,28 V;1,54 V;2,29 V;5037 RPM; 23/02/2008;15:43:18;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,23 V;4,92 V;12,28 V;1,54 V;2,34 V;5113 RPM; 23/02/2008;15:42:48;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,25 V;4,89 V;12,28 V;1,54 V;2,34 V;5037 RPM; 23/02/2008;15:42:18;2000 MHz;45 C;53 C;0 C;1,66 V;0,00 V;3,23 V;4,89 V;12,40 V;1,63 V;2,34 V;5037 RPM; 23/02/2008;15:41:48;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,25 V;4,89 V;12,28 V;1,54 V;2,29 V;5113 RPM; 23/02/2008;15:41:18;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,23 V;4,87 V;12,34 V;1,63 V;2,34 V;5113 RPM; 23/02/2008;15:40:48;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,23 V;4,89 V;12,28 V;1,46 V;2,29 V;5037 RPM; phpsysinfo-3.2.5/sample/plugin_bat/000077500000000000000000000000001265516077000173415ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/plugin_bat/README000066400000000000000000000002651265516077000202240ustar00rootroot00000000000000FILE CONTENT OF ac_state cat /proc/acpi/ac_adapter/AC/state battery_info cat /proc/acpi/battery/BAT0/info battery_state cat /proc/acpi/battery/BAT0/state phpsysinfo-3.2.5/sample/plugin_bat/ac_state1.txt000066400000000000000000000000411265516077000217410ustar00rootroot00000000000000state: on-line phpsysinfo-3.2.5/sample/plugin_bat/battery_info1.txt000066400000000000000000000006371265516077000226560ustar00rootroot00000000000000present: yes design capacity: 50000 mWh last full capacity: 50000 mWh battery technology: rechargeable design voltage: 10000 mV design capacity warning: 100 mWh design capacity low: 50 mWh capacity granularity 1: 1 mWh capacity granularity 2: 1 mWh model number: 1 serial number: 0 battery type: VBOX OEM info: innotek phpsysinfo-3.2.5/sample/plugin_bat/battery_state1.txt000066400000000000000000000002751265516077000230410ustar00rootroot00000000000000present: yes capacity state: ok charging state: charged present rate: 0 mW remaining capacity: 50000 mWh present voltage: 10000 mV phpsysinfo-3.2.5/sample/plugin_bat/log_LenovoT530.txt000066400000000000000000000023771265516077000225720ustar00rootroot00000000000000---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/uevent POWER_SUPPLY_NAME=BAT0 POWER_SUPPLY_STATUS=Unknown POWER_SUPPLY_PRESENT=1 POWER_SUPPLY_TECHNOLOGY=Li-ion POWER_SUPPLY_CYCLE_COUNT=0 POWER_SUPPLY_VOLTAGE_MIN_DESIGN=10800000 POWER_SUPPLY_VOLTAGE_NOW=12365000 POWER_SUPPLY_POWER_NOW=0 POWER_SUPPLY_ENERGY_FULL_DESIGN=56160000 POWER_SUPPLY_ENERGY_FULL=44350000 POWER_SUPPLY_ENERGY_NOW=43580000 POWER_SUPPLY_CAPACITY=98 POWER_SUPPLY_CAPACITY_LEVEL=Normal POWER_SUPPLY_MODEL_NAME=45N1001 POWER_SUPPLY_MANUFACTURER=SANYO POWER_SUPPLY_SERIAL_NUMBER=18990 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/voltage_min_design 10800000 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/voltage_now 12367000 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/energy_full 44350000 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/energy_now 43580000 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/capacity 98 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/technology Li-ion ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/status Unknown phpsysinfo-3.2.5/sample/plugin_bat/log_android233.txt000066400000000000000000000027661265516077000226260ustar00rootroot00000000000000---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/uevent POWER_SUPPLY_NAME=battery POWER_SUPPLY_STATUS=Charging POWER_SUPPLY_HEALTH=Good POWER_SUPPLY_PRESENT=1 POWER_SUPPLY_TECHNOLOGY=Li-ion POWER_SUPPLY_VOLTAGE_MAX_DESIGN=4300 POWER_SUPPLY_VOLTAGE_MIN_DESIGN=2800 POWER_SUPPLY_VOLTAGE_NOW=4200 POWER_SUPPLY_CAPACITY=100 POWER_SUPPLY_BATT_TEMP=300 POWER_SUPPLY_BATT_TEMP_ADC=82 POWER_SUPPLY_BATT_VOL=4200 POWER_SUPPLY_BATT_VOL_ADC=3707 POWER_SUPPLY_BATT_VF_ADC=0 POWER_SUPPLY_BATT_VOL_ADC_AVER=3707 POWER_SUPPLY_BATT_TEMP_ADC_AVER=82 POWER_SUPPLY_BATT_VOL_AVER=0 POWER_SUPPLY_BATT_TEMP_AVER=15 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/capacity 100 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_temp 300 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_temp_adc 82 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_vol 4200 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/voltage_min_design 2800 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/voltage_max_design 4300 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/technology Li-ion ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/status Charging ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/health Good phpsysinfo-3.2.5/sample/plugin_bat/log_android412.txt000066400000000000000000000015371265516077000226200ustar00rootroot00000000000000---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/uevent POWER_SUPPLY_NAME=battery POWER_SUPPLY_TYPE=Battery POWER_SUPPLY_STATUS=Charging POWER_SUPPLY_PRESENT=1 POWER_SUPPLY_HEALTH=Good POWER_SUPPLY_TECHNOLOGY=Li-poly POWER_SUPPLY_CAPACITY=100 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/capacity 100 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_temp 330 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_vol 4181 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/technology Li-poly ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/status Charging ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/health Good phpsysinfo-3.2.5/sample/plugin_bat/log_android422.txt000066400000000000000000000025411265516077000226150ustar00rootroot00000000000000---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/uevent POWER_SUPPLY_NAME=battery POWER_SUPPLY_STATUS=Charging POWER_SUPPLY_CHARGE_TYPE=Fast POWER_SUPPLY_HEALTH=Good POWER_SUPPLY_PRESENT=1 POWER_SUPPLY_ONLINE=3 POWER_SUPPLY_TECHNOLOGY=Li-ion POWER_SUPPLY_VOLTAGE_MAX_DESIGN=4350000 POWER_SUPPLY_VOLTAGE_MIN_DESIGN=3400000 POWER_SUPPLY_VOLTAGE_NOW=3926715 POWER_SUPPLY_CAPACITY=14 POWER_SUPPLY_CURRENT_MAX=1000000 POWER_SUPPLY_CURRENT_NOW=736500 POWER_SUPPLY_TEMP=308 POWER_SUPPLY_ENERGY_FULL=1940000000 POWER_SUPPLY_CHARGE_NOW=46573 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/capacity 14 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_temp_adc 308 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_vfocv 3920 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/voltage_min_design 3400000 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/voltage_max_design 4350000 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/technology Li-ion ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/status Charging ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/health Good phpsysinfo-3.2.5/sample/plugin_bat/log_darwin_1.txt000066400000000000000000000027661265516077000224620ustar00rootroot00000000000000---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ioreg -w0 -l -n AppleSmartBattery -r +-o AppleSmartBattery { "TimeRemaining" = 0 "AvgTimeToEmpty" = 65535 "InstantTimeToEmpty" = 65535 "ExternalChargeCapable" = Yes "CellVoltage" = (4185,4183,4184,0) "PermanentFailureStatus" = 0 "BatteryInvalidWakeSeconds" = 30 "AdapterInfo" = 0 "MaxCapacity" = 5060 "Voltage" = 12552 "DesignCycleCount70" = 65535 "Manufacturer" = "DP" "Location" = 0 "CurrentCapacity" = 5060 "LegacyBatteryInfo" = {"Amperage"=234,"Flags"=5,"Capacity"=5060,"Current"=5060,"Voltage"=12552,"Cycle Count"=548} "FirmwareSerialNumber" = 60664 "BatteryInstalled" = Yes "PackReserve" = 200 "CycleCount" = 548 "DesignCapacity" = 5770 "OperationStatus" = 58435 "ManufactureDate" = 15764 "AvgTimeToFull" = 0 "BatterySerialNumber" = "9G0520ESBD3MA" "PostDischargeWaitSeconds" = 120 "Temperature" = 3062 "MaxErr" = 1 "ManufacturerData" = <000000000201000201580000024b3663033030310341544c00170000> "FullyCharged" = Yes "InstantAmperage" = 0 "DeviceName" = "bq20z451" "IOGeneralInterest" = "IOCommand is not serializable" "Amperage" = 234 "IsCharging" = No "DesignCycleCount9C" = 1000 "PostChargeWaitSeconds" = 120 "ExternalConnected" = Yes } phpsysinfo-3.2.5/sample/plugin_bat/log_freebsd_1.txt000066400000000000000000000007321265516077000225770ustar00rootroot00000000000000---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: acpiconf -i batt Design capacity: 50000 mWh Last full capacity: 50000 mWh Technology: secondary (rechargeable) Design voltage: 10000 mV Capacity (warn): 100 mWh Capacity (low): 50 mWh Low/warn granularity: 1 mWh Warn/full granularity: 1 mWh Model number: 1 Serial number: 0 Type: VBOX OEM info: innotek State: high Remaining capacity: 100% Remaining time: unknown Present rate: 0 mW Present voltage: 10000 mV phpsysinfo-3.2.5/sample/plugin_bat/log_freebsd_2.txt000066400000000000000000000007351265516077000226030ustar00rootroot00000000000000---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: acpiconf -i batt Design capacity: 4800 mAh Last full capacity: 3824 mAh Technology: secondary (rechargeable) Design voltage: 14800 mV Capacity (warn): 240 mAh Capacity (low): 144 mAh Low/warn granularity: 264 mAh Warn/full granularity: 3780 mAh Model number: Primary Serial number: Type: Lion OEM info: ACER State: discharging Remaining capacity: 95% Remaining time: unknown Present rate: 0 mA Voltage: 16391 mV phpsysinfo-3.2.5/sample/plugin_bat/log_test_1.txt000066400000000000000000000014511265516077000221430ustar00rootroot00000000000000---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/acpi/battery/BAT0/state present: yes capacity state: ok charging state: charged present rate: 0 mA remaining capacity: 1009 mAh present voltage: 12167 mV ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/acpi/battery/BAT0/info present: yes design capacity: 4400 mAh last full capacity: 1009 mAh battery technology: rechargeable design voltage: 10800 mV design capacity warning: 220 mAh design capacity low: 132 mAh cycle count: 0 capacity granularity 1: 264 mAh capacity granularity 2: 3780 mAh model number: Li_Ion_4000mA serial number: 0000 battery type: Lion OEM info: SANYO phpsysinfo-3.2.5/sample/plugin_bat/log_test_2.txt000066400000000000000000000014401265516077000221420ustar00rootroot00000000000000---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/acpi/battery/BAT0/state present: yes capacity state: ok charging state: charged present rate: 0 mW remaining capacity: 70380 mWh present voltage: 12400 mV ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/acpi/battery/BAT0/info present: yes design capacity: 82280 mWh last full capacity: 72420 mWh battery technology: rechargeable design voltage: 10800 mV design capacity warning: 3621 mWh design capacity low: 200 mWh cycle count: 0 capacity granularity 1: 1 mWh capacity granularity 2: 1 mWh model number: 92P1137 serial number: 999 battery type: LION OEM info: SANYO phpsysinfo-3.2.5/sample/plugin_bat/log_vbox.txt000066400000000000000000000023711265516077000217240ustar00rootroot00000000000000---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/uevent POWER_SUPPLY_NAME=BAT0 POWER_SUPPLY_STATUS=Unknown POWER_SUPPLY_PRESENT=1 POWER_SUPPLY_TECHNOLOGY=Unknown POWER_SUPPLY_CYCLE_COUNT=0 POWER_SUPPLY_VOLTAGE_MIN_DESIGN=10000000 POWER_SUPPLY_VOLTAGE_NOW=10000000 POWER_SUPPLY_POWER_NOW=0 POWER_SUPPLY_ENERGY_FULL_DESIGN=50000000 POWER_SUPPLY_ENERGY_FULL=50000000 POWER_SUPPLY_ENERGY_NOW=49000000 POWER_SUPPLY_CAPACITY=98 POWER_SUPPLY_CAPACITY_LEVEL=Normal POWER_SUPPLY_MODEL_NAME=1 POWER_SUPPLY_MANUFACTURER=innotek POWER_SUPPLY_SERIAL_NUMBER=0 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/voltage_min_design 10000000 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/voltage_now 10000000 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/energy_full 50000000 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/energy_now 49000000 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/capacity 98 ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/technology Unknown ---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/status Unknown phpsysinfo-3.2.5/sample/plugin_dmraid/000077500000000000000000000000001265516077000200335ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/plugin_dmraid/dmraid1.txt000066400000000000000000000065311265516077000221220ustar00rootroot00000000000000NOTICE: /dev/sde: asr discovering NOTICE: /dev/sde: ddf1 discovering NOTICE: /dev/sde: hpt37x discovering NOTICE: /dev/sde: hpt45x discovering NOTICE: /dev/sde: isw discovering NOTICE: /dev/sde: isw metadata discovered NOTICE: /dev/sde: jmicron discovering NOTICE: /dev/sde: lsi discovering NOTICE: /dev/sde: nvidia discovering NOTICE: /dev/sde: pdc discovering NOTICE: /dev/sde: sil discovering NOTICE: /dev/sde: via discovering NOTICE: /dev/sdf: asr discovering NOTICE: /dev/sdf: ddf1 discovering NOTICE: /dev/sdf: hpt37x discovering NOTICE: /dev/sdf: hpt45x discovering NOTICE: /dev/sdf: isw discovering NOTICE: /dev/sdf: isw metadata discovered NOTICE: /dev/sdf: jmicron discovering NOTICE: /dev/sdf: lsi discovering NOTICE: /dev/sdf: nvidia discovering NOTICE: /dev/sdf: pdc discovering NOTICE: /dev/sdf: sil discovering NOTICE: /dev/sdf: via discovering NOTICE: /dev/sdb: asr discovering NOTICE: /dev/sdb: ddf1 discovering NOTICE: /dev/sdb: hpt37x discovering NOTICE: /dev/sdb: hpt45x discovering NOTICE: /dev/sdb: isw discovering NOTICE: /dev/sdb: isw metadata discovered NOTICE: /dev/sdb: jmicron discovering NOTICE: /dev/sdb: lsi discovering NOTICE: /dev/sdb: nvidia discovering NOTICE: /dev/sdb: pdc discovering NOTICE: /dev/sdb: sil discovering NOTICE: /dev/sdb: via discovering NOTICE: /dev/sda: asr discovering NOTICE: /dev/sda: ddf1 discovering NOTICE: /dev/sda: hpt37x discovering NOTICE: /dev/sda: hpt45x discovering NOTICE: /dev/sda: isw discovering NOTICE: /dev/sda: isw metadata discovered NOTICE: /dev/sda: jmicron discovering NOTICE: /dev/sda: lsi discovering NOTICE: /dev/sda: nvidia discovering NOTICE: /dev/sda: pdc discovering NOTICE: /dev/sda: sil discovering NOTICE: /dev/sda: via discovering NOTICE: /dev/sdc: asr discovering NOTICE: /dev/sdc: ddf1 discovering NOTICE: /dev/sdc: hpt37x discovering NOTICE: /dev/sdc: hpt45x discovering NOTICE: /dev/sdc: isw discovering NOTICE: /dev/sdc: isw metadata discovered NOTICE: /dev/sdc: jmicron discovering NOTICE: /dev/sdc: lsi discovering NOTICE: /dev/sdc: nvidia discovering NOTICE: /dev/sdc: pdc discovering NOTICE: /dev/sdc: sil discovering NOTICE: /dev/sdc: via discovering NOTICE: /dev/sdd: asr discovering NOTICE: /dev/sdd: ddf1 discovering NOTICE: /dev/sdd: hpt37x discovering NOTICE: /dev/sdd: hpt45x discovering NOTICE: /dev/sdd: isw discovering NOTICE: /dev/sdd: isw metadata discovered NOTICE: /dev/sdd: jmicron discovering NOTICE: /dev/sdd: lsi discovering NOTICE: /dev/sdd: nvidia discovering NOTICE: /dev/sdd: pdc discovering NOTICE: /dev/sdd: sil discovering NOTICE: /dev/sdd: via discovering NOTICE: added /dev/sde to RAID set "isw_jffegbfhc" NOTICE: added /dev/sdf to RAID set "isw_jffegbfhc" NOTICE: added /dev/sdb to RAID set "isw_deagibdgda" NOTICE: added /dev/sda to RAID set "isw_deagibdgda" NOTICE: added /dev/sdc to RAID set "isw_jffegbfhc" NOTICE: added /dev/sdd to RAID set "isw_jffegbfhc" *** Group superset isw_deagibdgda --> Active Subset name : isw_deagibdgda_root size : 125040896 stride : 128 type : mirror status : ok subsets: 0 devs : 2 spares : 0 *** Group superset isw_jffegbfhc --> Active Superset name : isw_jffegbfhc_data size : 3131113472 stride : 128 type : raid01 status : ok subsets: 2 devs : 4 spares : 0 phpsysinfo-3.2.5/sample/plugin_dmraid/dmraid2.txt000066400000000000000000000110361265516077000221170ustar00rootroot00000000000000ERROR: ddf1: seeking device "/dev/dm-4" to 18446744073709421056 ERROR: hpt37x: seeking device "/dev/dm-4" to 4608 ERROR: hpt45x: seeking device "/dev/dm-4" to 18446744073709547008 ERROR: pdc: seeking device "/dev/dm-4" to 137438913024 ERROR: pdc: seeking device "/dev/dm-4" to 137438920192 ERROR: pdc: seeking device "/dev/dm-4" to 137438927360 ERROR: pdc: seeking device "/dev/dm-4" to 137438934528 ERROR: sil: seeking device "/dev/dm-4" to 18446744073709289984 NOTICE: /dev/dm-5: asr discovering NOTICE: /dev/dm-5: ddf1 discovering NOTICE: /dev/dm-5: hpt37x discovering NOTICE: /dev/dm-5: hpt45x discovering NOTICE: /dev/dm-5: isw discovering NOTICE: /dev/dm-5: jmicron discovering NOTICE: /dev/dm-5: lsi discovering NOTICE: /dev/dm-5: nvidia discovering NOTICE: /dev/dm-5: pdc discovering NOTICE: /dev/dm-5: sil discovering NOTICE: /dev/dm-5: via discovering NOTICE: /dev/dm-4: asr discovering NOTICE: /dev/dm-4: ddf1 discovering NOTICE: /dev/dm-4: hpt37x discovering NOTICE: /dev/dm-4: hpt45x discovering NOTICE: /dev/dm-4: isw discovering NOTICE: /dev/dm-4: jmicron discovering NOTICE: /dev/dm-4: lsi discovering NOTICE: /dev/dm-4: nvidia discovering NOTICE: /dev/dm-4: pdc discovering NOTICE: /dev/dm-4: sil discovering NOTICE: /dev/dm-4: via discovering NOTICE: /dev/dm-3: asr discovering NOTICE: /dev/dm-3: ddf1 discovering NOTICE: /dev/dm-3: hpt37x discovering NOTICE: /dev/dm-3: hpt45x discovering NOTICE: /dev/dm-3: isw discovering NOTICE: /dev/dm-3: jmicron discovering NOTICE: /dev/dm-3: lsi discovering NOTICE: /dev/dm-3: nvidia discovering NOTICE: /dev/dm-3: pdc discovering NOTICE: /dev/dm-3: sil discovering NOTICE: /dev/dm-3: via discovering NOTICE: /dev/dm-2: asr discovering NOTICE: /dev/dm-2: ddf1 discovering NOTICE: /dev/dm-2: hpt37x discovering NOTICE: /dev/dm-2: hpt45x discovering NOTICE: /dev/dm-2: isw discovering NOTICE: /dev/dm-2: jmicron discovering NOTICE: /dev/dm-2: lsi discovering NOTICE: /dev/dm-2: nvidia discovering NOTICE: /dev/dm-2: pdc discovering NOTICE: /dev/dm-2: sil discovering NOTICE: /dev/dm-2: via discovering NOTICE: /dev/dm-1: asr discovering NOTICE: /dev/dm-1: ddf1 discovering NOTICE: /dev/dm-1: hpt37x discovering NOTICE: /dev/dm-1: hpt45x discovering NOTICE: /dev/dm-1: isw discovering NOTICE: /dev/dm-1: jmicron discovering NOTICE: /dev/dm-1: lsi discovering NOTICE: /dev/dm-1: nvidia discovering NOTICE: /dev/dm-1: pdc discovering NOTICE: /dev/dm-1: sil discovering NOTICE: /dev/dm-1: via discovering NOTICE: /dev/dm-0: asr discovering NOTICE: /dev/dm-0: ddf1 discovering NOTICE: /dev/dm-0: hpt37x discovering NOTICE: /dev/dm-0: hpt45x discovering NOTICE: /dev/dm-0: isw discovering NOTICE: /dev/dm-0: jmicron discovering NOTICE: /dev/dm-0: lsi discovering NOTICE: /dev/dm-0: nvidia discovering NOTICE: /dev/dm-0: pdc discovering NOTICE: /dev/dm-0: sil discovering NOTICE: /dev/dm-0: via discovering NOTICE: /dev/sda: asr discovering NOTICE: /dev/sda: ddf1 discovering NOTICE: /dev/sda: hpt37x discovering NOTICE: /dev/sda: hpt45x discovering NOTICE: /dev/sda: isw discovering NOTICE: /dev/sda: jmicron discovering NOTICE: /dev/sda: lsi discovering NOTICE: /dev/sda: nvidia discovering NOTICE: /dev/sda: pdc discovering NOTICE: /dev/sda: sil discovering NOTICE: /dev/sda: via discovering NOTICE: /dev/sdc: asr discovering NOTICE: /dev/sdc: ddf1 discovering NOTICE: /dev/sdc: ddf1 metadata discovered NOTICE: /dev/sdc: hpt37x discovering NOTICE: /dev/sdc: hpt45x discovering NOTICE: /dev/sdc: isw discovering NOTICE: /dev/sdc: jmicron discovering NOTICE: /dev/sdc: lsi discovering NOTICE: /dev/sdc: nvidia discovering NOTICE: /dev/sdc: pdc discovering NOTICE: /dev/sdc: sil discovering NOTICE: /dev/sdc: via discovering NOTICE: /dev/sdb: asr discovering NOTICE: /dev/sdb: ddf1 discovering NOTICE: /dev/sdb: ddf1 metadata discovered NOTICE: /dev/sdb: hpt37x discovering NOTICE: /dev/sdb: hpt45x discovering NOTICE: /dev/sdb: isw discovering NOTICE: /dev/sdb: jmicron discovering NOTICE: /dev/sdb: lsi discovering NOTICE: /dev/sdb: nvidia discovering NOTICE: /dev/sdb: pdc discovering NOTICE: /dev/sdb: sil discovering NOTICE: /dev/sdb: via discovering NOTICE: added /dev/sdc to RAID set ".ddf1_disks" NOTICE: added /dev/sdb to RAID set ".ddf1_disks" *** Group superset .ddf1_disks --> Active Subset name : ddf1_RAID1 size : 1953253376 stride : 128 type : mirror status : ok subsets: 0 devs : 2 spares : 0 phpsysinfo-3.2.5/sample/plugin_dmraid/dmraid3.txt000066400000000000000000000007611265516077000221230ustar00rootroot00000000000000ERROR: pdc: device /dev/hde broken in RAID set "pdc_bfcgjjgge" [1/2] ERROR: keeping degraded mirror set "pdc_bfcgjjgge" ERROR: pdc: device /dev/hdg broken in RAID set "pdc_dibachbhfh" [1/2] ERROR: keeping degraded mirror set "pdc_dibachbhfh" *** Set name : pdc_bfcgjjgge size : 78150656 stride : 128 type : mirror status : broken subsets: 0 devs : 1 spares : 0 *** Set name : pdc_dibachbhfh size : 78150656 stride : 128 type : mirror status : broken subsets: 0 devs : 1 spares : 0 phpsysinfo-3.2.5/sample/plugin_dmraid/dmraid4.txt000066400000000000000000000042001265516077000221140ustar00rootroot00000000000000NOTICE: skipping removable device /dev/sdd NOTICE: skipping removable device /dev/sde NOTICE: skipping removable device /dev/sdf NOTICE: skipping removable device /dev/sdg NOTICE: /dev/sdc: asr discovering NOTICE: /dev/sdc: ddf1 discovering NOTICE: /dev/sdc: hpt37x discovering NOTICE: /dev/sdc: hpt45x discovering NOTICE: /dev/sdc: isw discovering NOTICE: /dev/sdc: isw metadata discovered NOTICE: /dev/sdc: jmicron discovering NOTICE: /dev/sdc: lsi discovering NOTICE: /dev/sdc: nvidia discovering NOTICE: /dev/sdc: pdc discovering NOTICE: /dev/sdc: sil discovering NOTICE: /dev/sdc: via discovering NOTICE: /dev/sdb: asr discovering NOTICE: /dev/sdb: ddf1 discovering NOTICE: /dev/sdb: hpt37x discovering NOTICE: /dev/sdb: hpt45x discovering NOTICE: /dev/sdb: isw discovering NOTICE: /dev/sdb: isw metadata discovered NOTICE: /dev/sdb: jmicron discovering NOTICE: /dev/sdb: lsi discovering NOTICE: /dev/sdb: nvidia discovering NOTICE: /dev/sdb: pdc discovering NOTICE: /dev/sdb: sil discovering NOTICE: /dev/sdb: via discovering NOTICE: /dev/sda: asr discovering NOTICE: /dev/sda: ddf1 discovering NOTICE: /dev/sda: hpt37x discovering NOTICE: /dev/sda: hpt45x discovering NOTICE: /dev/sda: isw discovering NOTICE: /dev/sda: jmicron discovering NOTICE: /dev/sda: lsi discovering NOTICE: /dev/sda: nvidia discovering NOTICE: /dev/sda: pdc discovering NOTICE: /dev/sda: sil discovering NOTICE: /dev/sda: via discovering NOTICE: added /dev/sdc to RAID set "isw_bfdbhjciee" NOTICE: added /dev/sdb to RAID set "isw_bccajebghh" ERROR: isw: wrong number of devices in RAID set "isw_bccajebghh_DATA" [1/2] on /dev/sdb ERROR: isw: wrong number of devices in RAID set "isw_bfdbhjciee_DATA" [1/2] on /dev/sdc *** Group superset isw_bccajebghh --> *Inconsistent* Subset name : isw_bccajebghh_DATA size : 1953519872 stride : 128 type : mirror status : inconsistent subsets: 0 devs : 1 spares : 0 *** Group superset isw_bfdbhjciee --> *Inconsistent* Subset name : isw_bfdbhjciee_DATA size : 1953519872 stride : 128 type : mirror status : inconsistent subsets: 0 devs : 1 spares : 0 phpsysinfo-3.2.5/sample/plugin_dmraid/dmraid5.txt000066400000000000000000000011361265516077000221220ustar00rootroot00000000000000NOTICE: added /dev/sdd to RAID set "pdc_cifgjhgjdd-1" NOTICE: added /dev/sde to RAID set "pdc_cifgjhgjdd-1" NOTICE: added /dev/sdc to RAID set "pdc_cifgjhgjdd-0" NOTICE: added /dev/sdb to RAID set "pdc_cifgjhgjdd-0" *** Active Superset name : pdc_cifgjhgjdd size : 3517532672 stride : 128 type : raid10 status : ok subsets: 2 devs : 4 spares : 0 --> Active Subset name : pdc_cifgjhgjdd-0 size : 3517532672 stride : 128 type : stripe status : ok subsets: 0 devs : 2 spares : 0 --> Active Subset name : pdc_cifgjhgjdd-1 size : 3517532672 stride : 128 type : stripe status : ok subsets: 0 devs : 2 spares : 0 phpsysinfo-3.2.5/sample/plugin_mdstat/000077500000000000000000000000001265516077000200675ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/plugin_mdstat/README000066400000000000000000000000761265516077000207520ustar00rootroot00000000000000FILE CONTENT OF raid cat /proc/mdstat phpsysinfo-3.2.5/sample/plugin_mdstat/raid1.txt000066400000000000000000000003301265516077000216240ustar00rootroot00000000000000Personalities : [linear] [raid0] [raid1] [raid5] [hsm] read_ahead 1024 sectors md0 : active raid5 sdd1[3] sdc6[2] sdb6[1] sda5[0] 633984 blocks level 5, 32k chunk, algorithm 2 [4/4] [UUUU] unused devices: phpsysinfo-3.2.5/sample/plugin_mdstat/raid10.txt000066400000000000000000000004441265516077000217120ustar00rootroot00000000000000Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb[5] sda[0] sdd[4] sdc[2] 2197329408 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [U_UU] [>....................] recovery = 0.0% (683200/732443136) finish=592.4min speed=20586K/sec unused devices: phpsysinfo-3.2.5/sample/plugin_mdstat/raid11.txt000066400000000000000000000004461265516077000217150ustar00rootroot00000000000000Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb[5] sda[0] sdd[4] sdc[2] 2197329408 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [U_UU] [>....................] recovery = 2.5% (18700800/732443136) finish=742.1min speed=16028K/sec unused devices: phpsysinfo-3.2.5/sample/plugin_mdstat/raid12.txt000066400000000000000000000004471265516077000217170ustar00rootroot00000000000000Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb[5] sda[0] sdd[4] sdc[2] 2197329408 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [U_UU] [===>.................] recovery = 18.9% (138755104/732443136) finish=482.8min speed=20493K/sec unused devices: phpsysinfo-3.2.5/sample/plugin_mdstat/raid2.txt000066400000000000000000000003331265516077000216300ustar00rootroot00000000000000Personalities : [linear] [raid0] [raid1] [raid5] [hsm] read_ahead 1024 sectors md0 : active raid5 sdd1[3](F) sdc6[2] sdb6[1] sda5[0] 633984 blocks level 5, 32k chunk, algorithm 2 [4/3] [UUU_] unused devices: phpsysinfo-3.2.5/sample/plugin_mdstat/raid3.txt000066400000000000000000000003201265516077000216250ustar00rootroot00000000000000Personalities : [linear] [raid0] [raid1] [raid5] [hsm] read_ahead 1024 sectors md0 : active raid5 sdc6[2] sdb6[1] sda5[0] 633984 blocks level 5, 32k chunk, algorithm 2 [4/3] [UUU_] unused devices: phpsysinfo-3.2.5/sample/plugin_mdstat/raid4.txt000066400000000000000000000003621265516077000216340ustar00rootroot00000000000000Personalities : [linear] [raid0] [raid1] [raid5] [hsm] read_ahead 1024 sectors md0 : active raid5 sdd1[4] sdc6[2] sdb6[1] sda5[0] 633984 blocks level 5, 32k chunk, algorithm 2 [4/3] [UUU_] recovery=7% finish=4.3min unused devices: phpsysinfo-3.2.5/sample/plugin_mdstat/raid5.txt000066400000000000000000000003301265516077000216300ustar00rootroot00000000000000Personalities : [linear] [raid0] [raid1] [raid5] [hsm] read_ahead 1024 sectors md0 : active raid5 sdd1[3] sdc6[2] sdb6[1] sda5[0] 633984 blocks level 5, 32k chunk, algorithm 2 [4/4] [UUUU] unused devices: phpsysinfo-3.2.5/sample/plugin_mdstat/raid6.txt000066400000000000000000000004221265516077000216330ustar00rootroot00000000000000Personalities : [raid6] [raid5] [raid4] md1 : active raid5 hdc4[3] hdc3[1] hdc2[0] 3906816 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_] [===>.................] recovery = 16.5% (324080/1953408) finish=8.1min speed=3315K/sec unused devices: phpsysinfo-3.2.5/sample/plugin_mdstat/raid7.txt000066400000000000000000000002771265516077000216440ustar00rootroot00000000000000Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdi1[3] sde1[2] sdd1[1] sdc1[0] 2197715712 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU] unused devices: phpsysinfo-3.2.5/sample/plugin_mdstat/raid8.txt000066400000000000000000000006441265516077000216430ustar00rootroot00000000000000Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md1 : active raid1 sdb2[2](F) sda2[1] 155181952 blocks super 1.2 [2/1] [_U] md0 : active raid1 sdb1[2] sda1[1] 975296 blocks super 1.2 [2/2] [UU] md2 : active raid5 sdf1[3] sdc1[0] sdd1[1] sde1[2] 1464758784 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU] unused devices: phpsysinfo-3.2.5/sample/plugin_mdstat/raid9.txt000066400000000000000000000004271265516077000216430ustar00rootroot00000000000000Personalities : [raid6] [raid5] [raid4] md0 : active raid6 sda1[0] sdd1[4] sde1[5] sdf1[2] sdb1[1] 2929683456 blocks super 1.2 level 6, 1024k chunk, algorithm 2 [5/5] [UUUUU] bitmap: 0/8 pages [0KB], 65536KB chunk, file: /var/md0_intent unused devices: phpsysinfo-3.2.5/sample/plugin_ps/000077500000000000000000000000001265516077000172155ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/plugin_ps/README000066400000000000000000000001621265516077000200740ustar00rootroot00000000000000FILE CONTENT OF ps1 ps -eo pid,ppid,pmem,args ps2 ps axo pid,ppid,pmem,args phpsysinfo-3.2.5/sample/plugin_ps/ps1.txt000066400000000000000000000032771265516077000204720ustar00rootroot00000000000000 PID PPID %MEM COMMAND 1 0 0.0 init [2] 31822 1 0.0 /sbin/syslogd 31847 1 0.0 /sbin/klogd -x 31861 1 0.0 /usr/sbin/sshd 1357 1 4.3 amavisd (master) 1918 1 0.3 ddclient - sleeping for 50 seconds 1923 1 1.0 /usr/bin/memcached -m 64 -p 11211 -u root 2001 1 0.1 /usr/lib/postfix/master 2006 1 0.0 /usr/sbin/vsftpd 2010 2001 0.1 qmgr -l -t fifo -u 2037 1 0.0 /usr/sbin/cron 3516 1 0.3 /usr/sbin/munin-node 3576 1 0.2 /usr/bin/fetchmail -f /etc/fetchmailrc --pidfile /var/run/fetchmail/fetchmail.pid --syslog 5266 2001 0.1 tlsmgr -l -t unix -u -c 32604 1 0.8 /usr/sbin/apache2 -k start 3097 1 0.0 /usr/bin/freshclam -d --quiet 3599 1 8.7 /usr/sbin/clamd 13505 1 0.0 /bin/sh /usr/bin/mysqld_safe 13545 13505 2.6 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock 13546 13505 0.0 logger -p daemon.err -t mysqld_safe -i -t mysqld 13988 1 0.0 /usr/sbin/dovecot 13989 13988 0.1 dovecot-auth 14041 13988 0.1 managesieve-login 14042 13988 0.1 managesieve-login 30094 13988 0.1 managesieve-login 15381 1357 4.5 amavisd (ch19-avail) 16215 13988 0.2 dovecot-auth -w 6095 2001 0.1 pickup -l -t fifo -u -c 9846 1357 4.4 amavisd (ch1-avail) 11585 13988 0.1 imap-login 22385 13988 0.1 imap-login 22421 32604 1.9 /usr/sbin/apache2 -k start 22424 32604 1.5 /usr/sbin/apache2 -k start 22425 32604 1.1 /usr/sbin/apache2 -k start 22432 32604 1.1 /usr/sbin/apache2 -k start 22433 32604 0.5 /usr/sbin/apache2 -k start 25851 13988 0.1 imap-login 26454 22424 0.0 ps -eo pid,ppid,pmem,args phpsysinfo-3.2.5/sample/plugin_ps/ps2.txt000066400000000000000000000137511265516077000204710ustar00rootroot00000000000000 PID PPID %MEM COMMAND 1 0 0.0 init [5] 2 0 0.0 [kthreadd] 3 2 0.0 [migration/0] 4 2 0.0 [ksoftirqd/0] 5 2 0.0 [events/0] 6 2 0.0 [khelper] 7 2 0.0 [kintegrityd/0] 8 2 0.0 [kblockd/0] 9 2 0.0 [kacpid] 10 2 0.0 [kacpi_notify] 11 2 0.0 [cqueue] 12 2 0.0 [kseriod] 13 2 0.0 [kondemand/0] 14 2 0.0 [pdflush] 15 2 0.0 [pdflush] 16 2 0.0 [kswapd0] 17 2 0.0 [aio/0] 18 2 0.0 [kpsmoused] 54 2 0.0 [ata/0] 55 2 0.0 [ata_aux] 57 2 0.0 [scsi_eh_0] 58 2 0.0 [scsi_eh_1] 202 2 0.0 [ksuspend_usbd] 203 2 0.0 [khubd] 510 2 0.0 [kjournald] 592 1 0.0 /sbin/udevd --daemon 818 2 0.0 [scsi_eh_2] 819 2 0.0 [usb-storage] 1303 2 0.0 [kauditd] 1326 2 0.0 [kstriped] 1363 2 0.0 [kjournald] 1385 1 0.0 /sbin/mount.ntfs-3g /dev/sda1 /windows/C -v -o rw,noexec,nosuid,nodev,users,gid=100,fmask=133,dmask=022,locale=de_DE.UTF-8 1808 1 0.0 /sbin/acpid 1827 1 0.0 /sbin/klogd -c 1 -x 1843 1 0.0 /sbin/syslog-ng 1853 1 0.0 /bin/dbus-daemon --system 1982 1 0.2 /usr/sbin/hald --daemon=yes 1991 1 0.1 /usr/sbin/console-kit-daemon 2054 1982 0.0 hald-runner 2129 2054 0.0 hald-addon-input: Listening on /dev/input/event4 /dev/input/event3 /dev/input/event2 /dev/input/event1 2223 2054 0.0 hald-addon-storage: no polling on /dev/fd0 because it is explicitly disabled 2234 2054 0.0 hald-addon-storage: polling /dev/sdb (every 2 sec) 2235 2054 0.0 hald-addon-storage: polling /dev/sdc (every 2 sec) 2238 2054 0.0 hald-addon-storage: polling /dev/sr0 (every 2 sec) 2246 2054 0.0 hald-addon-acpi: listening on acpid socket /var/run/acpid.socket 2478 1 0.0 /usr/bin/kdm 2492 2478 3.0 /usr/bin/Xorg -br -nolisten tcp :0 vt7 -auth /var/lib/xdm/authdir/authfiles/A:0-StlX1E 2873 1 0.0 /sbin/dhcpcd --netconfig -L -E -c /etc/sysconfig/network/scripts/dhcpcd-hook -t 0 -h linux-mcr eth0 2911 1 0.0 /sbin/rpcbind 3381 1 0.2 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf 3382 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf 3383 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf 3401 1 0.0 /sbin/auditd -s disable 3404 3401 0.0 /sbin/audispd 3422 1 0.0 avahi-daemon: running [linux-mcr.local] 3482 1 0.1 /usr/sbin/cupsd 3671 1 0.0 /usr/sbin/nscd 3701 1 0.0 /usr/sbin/ntpd -p /var/run/ntp/ntpd.pid -g -u ntp:ntp -i /var/lib/ntp -c /etc/ntp.conf 3761 1 0.0 /usr/sbin/smartd 3774 1 0.0 /usr/lib/postfix/master 3800 1 0.0 /usr/sbin/cron 3823 3774 0.0 pickup -l -t fifo -u 3824 3774 0.0 qmgr -l -t fifo -u 3843 1 0.0 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid 3959 1 0.0 /sbin/mingetty --noclear tty1 3961 1 0.0 /sbin/mingetty tty2 3963 1 0.0 /sbin/mingetty tty3 3965 1 0.0 /sbin/mingetty tty4 3975 1 0.0 /sbin/mingetty tty5 3976 1 0.0 /sbin/mingetty tty6 4730 2478 0.1 -:0 4752 1 0.0 /bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session 4753 1 0.0 dbus-launch --autolaunch 9fe5b43331dd16711f578ff44a61a184 --binary-syntax --close-stderr 4777 4730 0.0 /bin/sh /usr/bin/startkde 4960 1 0.0 /bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session 4961 1 0.0 dbus-launch --sh-syntax --exit-with-session 4966 1 0.2 kdeinit4: kdeinit4 Running... 4967 4966 0.5 klauncher 4969 1 1.0 kded4 5008 4777 0.0 kwrapper4 ksmserver 5009 4966 1.4 ksmserver 5011 5009 1.7 kwin -session 1015110b9fd8000124791360500000100220000_1247938211_215332 5017 1 1.7 /usr/bin/knotify4 5018 1 1.5 /usr/bin/krunner 5020 1 2.0 /usr/bin/plasma 5024 1 0.5 /usr/bin/nepomukserver 5026 5024 0.6 /usr/bin/nepomukservicestub nepomukstorage 5027 5024 0.4 /usr/bin/nepomukservicestub nepomukfilewatch 5028 5024 0.4 /usr/bin/nepomukservicestub nepomukontologyloader 5030 1 0.4 /usr/bin/kaccess 5044 4966 0.5 /usr/bin/policykit-kde 5046 1 0.2 /usr/bin/pulseaudio --start 5053 1 1.1 beagled /usr/lib/beagle/BeagleDaemon.exe --replace --bg 5059 1 0.6 /usr/bin/kupdateapplet 5060 1 0.7 /usr/bin/kmix 5062 1 0.5 /usr/bin/klipper 5083 1 0.0 /usr/lib/kde4/libexec/kdesud 5309 1 2.3 amarokapp 5312 1 0.2 kdeinit Running... 5316 1 0.1 dcopserver [kdeinit] --nosid --suicide 5318 5312 0.3 klauncher [kdeinit] --new-startup 5320 1 0.5 kded [kdeinit] --new-startup 5342 5312 0.2 kio_file [kdeinit] file /tmp/ksocket-BigMic 5346 5309 0.5 yauap -noexit 5356 5309 0.1 ruby /opt/kde3/share/apps/amarok/scripts/score_default/score_default.rb 5440 1 0.4 knotify [kdeinit] 5465 1 0.4 /usr/bin/kwalletd 5495 1 1.0 beagled-helper /usr/lib/beagle/IndexHelper.exe 5536 1 0.6 kio_uiserver [kdeinit] 5621 1 1.1 /usr/bin/konsole 5623 5621 0.1 /bin/bash 5648 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf 5661 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf 5710 5623 0.2 /usr/bin/mc -P /tmp/mc-BigMichi1/mc.pwd.5623 5712 5710 0.1 bash -rcfile .bashrc 6305 4966 0.2 kdeinit4: kio_file [kdeinit] file local:/tmp/ksocket-BigMichi1/klauncherMT4967.slave-socket local:/tmp/ksocket-BigMichi1/konquerordx5442.slave-socket 6313 4966 0.0 /bin/sh /usr/bin/firefox 6318 6313 3.5 /usr/lib/firefox/firefox 6320 1 0.1 /usr/lib/GConf/2/gconfd-2 6332 1 0.1 /usr/lib/gvfs/gvfsd 6338 1 0.1 /usr/lib/gvfs//gvfs-fuse-daemon /home/BigMichi1/.gvfs 6389 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf 6390 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf 6395 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf 6737 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf 7003 5712 0.0 ps axo pid,ppid,pmem,args phpsysinfo-3.2.5/sample/plugin_psstatus/000077500000000000000000000000001265516077000204615ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/plugin_psstatus/README000066400000000000000000000002271265516077000213420ustar00rootroot00000000000000FILE CONTENT OF psstatus ps=("apache2" "mysqld" "sshd"); for((i=0;i<${#ps};i++)); do echo ${ps[$i]} "|" `pidof -s ${ps[$i]}` ;done phpsysinfo-3.2.5/sample/plugin_psstatus/psstatus1.txt000066400000000000000000000001071265516077000231670ustar00rootroot00000000000000apache2 | 15776 mysqld | 32349 sshd | 31861 bash | dovecot | 32055 | | phpsysinfo-3.2.5/sample/plugin_quotas/000077500000000000000000000000001265516077000201075ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/plugin_quotas/README000066400000000000000000000000721265516077000207660ustar00rootroot00000000000000FILE CONTENT OF quotas repquota -au phpsysinfo-3.2.5/sample/plugin_quotas/quotas1.txt000066400000000000000000000005321265516077000222450ustar00rootroot00000000000000Mon Dec 6 09:00:00 EST 2004 1K Block limits File limits User used soft hard grace used soft hard grace cherylstaff-- 2755724 0 0 15678 0 0 brucestaff -- 5738512 0 0 7830 0 0 phpsysinfo-3.2.5/sample/plugin_smart/000077500000000000000000000000001265516077000177215ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/plugin_smart/smart0.txt000066400000000000000000000036631265516077000217000ustar00rootroot00000000000000smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/ Device: SEAGATE ST3146855LW Version: 0003 Serial number: 3LN1GA[rest of serial number redacted] Device type: disk Transport protocol: Parallel SCSI (SPI-4) Local Time is: Sat Jan 30 21:59:56 2010 CET Device supports SMART and is Enabled Temperature Warning Enabled SMART Health Status: OK Current Drive Temperature: 39 C Drive Trip Temperature: 68 C Elements in grown defect list: 0 Vendor (Seagate) cache information Blocks sent to initiator = 1490558074 Blocks received from initiator = 624662611 Blocks read from cache and sent to initiator = 2900209651 Number of read and write commands whose size <= segment size = 386699414 Number of read and write commands whose size > segment size = 28 Vendor (Seagate/Hitachi) factory information number of hours powered up = 14959.20 number of minutes until next internal SMART test = 44 Error counter log: Errors Corrected by Total Correction Gigabytes Total ECC rereads/ errors algorithm processed uncorrected fast | delayed rewrites corrected invocations [10^9 bytes] errors read: 6663270 0 0 6663270 6663270 5100.626 0 write: 0 0 0 0 0 12594895028.099 0 verify: 22626 0 0 22626 22626 28.314 0 Non-medium error count: 3 [GLTSD (Global Logging Target Save Disable) set. Enable Save with '-S on'] SMART Self-test log Num Test Status segment LifeTime LBA_first_err [SK ASC ASQ] Description number (hours) # 1 Background long Interrupted ('-X' switch) - 14371 - [- - -] Long (extended) Self Test duration: 1367 seconds [22.8 minutes] phpsysinfo-3.2.5/sample/plugin_smart/smart1.txt000066400000000000000000000102571265516077000216760ustar00rootroot00000000000000smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF INFORMATION SECTION === Device Model: Hitachi HDS722020ALA330 Serial Number: JK1121[rest of serial number redacted] Firmware Version: JKAOA20N User Capacity: 2,000,398,934,016 bytes Device is: Not in smartctl database [for details use: -P showall] ATA Version is: 8 ATA Standard is: ATA-8-ACS revision 4 Local Time is: Tue Dec 1 15:21:30 2009 CST SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: Offline data collection status: (0x84) Offline data collection activity was suspended by an interrupting command from host. Auto Offline Data Collection: Enabled. Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run. Total time to complete Offline data collection: (21742) seconds. Offline data collection capabilities: (0x5b) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. Offline surface scan supported. Self-test supported. No Conveyance Self-test supported. Selective Self-test supported. SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode. Supports SMART auto save timer. Error logging capability: (0x01) Error logging supported. General Purpose Logging supported. Short self-test routine recommended polling time: ( 1) minutes. Extended self-test routine recommended polling time: ( 255) minutes. SCT capabilities: (0x003d) SCT Status supported. SCT Feature Control supported. SCT Data Table supported. SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000b 100 100 016 Pre-fail Always - 0 2 Throughput_Performance 0x0005 134 134 054 Pre-fail Offline - 98 3 Spin_Up_Time 0x0007 123 123 024 Pre-fail Always - 587 (Average 584) 4 Start_Stop_Count 0x0012 100 100 000 Old_age Always - 16 5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0 7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0 8 Seek_Time_Performance 0x0005 114 114 020 Pre-fail Offline - 38 9 Power_On_Hours 0x0012 100 100 000 Old_age Always - 292 10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 16 192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 16 193 Load_Cycle_Count 0x0012 100 100 000 Old_age Always - 16 194 Temperature_Celsius 0x0002 230 230 000 Old_age Always - 27 (Lifetime Min/Max 20/45) 196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0 197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0 SMART Error Log Version: 0 No Errors Logged SMART Self-test log structure revision number 1 No self-tests have been logged. [To run self-tests, use: smartctl -t] SMART Selective self-test log data structure revision number 1 SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS 1 0 0 Not_testing 2 0 0 Not_testing 3 0 0 Not_testing 4 0 0 Not_testing 5 0 0 Not_testing Selective self-test flags (0x0): After scanning selected spans, do NOT read-scan remainder of disk. If Selective self-test is pending on power-up, resume after 0 minute delay. phpsysinfo-3.2.5/sample/plugin_updatenotifier/000077500000000000000000000000001265516077000216155ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/plugin_updatenotifier/ubuntu-landscape000066400000000000000000000000771265516077000250160ustar00rootroot00000000000000 27 packages can be updated. 15 updates are security updates. phpsysinfo-3.2.5/sample/plugin_updatenotifier/universal-format000066400000000000000000000000041265516077000250300ustar00rootroot0000000000000017;5phpsysinfo-3.2.5/sample/processes/000077500000000000000000000000001265516077000172235ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/processes/processes.txt000066400000000000000000000063601265516077000217770ustar00rootroot00000000000000Processes state translation table -----Linux (Android) [R] R Running [S] S Sleeping in an interruptible wait [D] D Waiting in uninterruptible disk sleep [Z] Z Zombie [T] T Stopped (on a signal) or (before Linux 2.6.33) trace stopped t Tracing stop (Linux 2.6.33 onward) W Paging (only before Linux 2.6.0) X Dead (from Linux 2.6.0 onward) x Dead (Linux 2.6.33 to 3.13 only) K Wakekill (Linux 2.6.33 to 3.13 only) W Waking (Linux 2.6.33 to 3.13 only) P Parked (Linux 3.9 to 3.13 only) -----FreeBSD [D] D Marks a process in disk (or other short term, uninterruptible) wait. [S] I Marks a process that is idle (sleeping for longer than about 20 seconds). [D] L Marks a process that is waiting to acquire a lock. [R] R Marks a runnable process. [S] S Marks a process that is sleeping for less than about 20 seconds. [T] T Marks a stopped process. W Marks an idle interrupt thread. [Z] Z Marks a dead process (a ``zombie''). -----NetBSD [D] D Marks a process in disk (or other short term, uninterruptible) wait. [S] I Marks a process that is idle (sleeping for longer than about 20 seconds). [R] O Marks a process running on a processor. [R] R Marks a runnable process, or one that is in the process of creation. [S] S Marks a process that is sleeping for less than about 20 seconds. [T] T Marks a stopped process. U Marks a suspended process. [Z] Z Marks a dead process (a ``zombie''). -----OpenBSD [D] D Marks a process in disk (or other short term, uninterruptible) wait. [S] I Marks a process that is idle (sleeping for longer than about 20 seconds). [R] R Marks a runnable process. [S] S Marks a process that is sleeping for less than about 20 seconds. [T] T Marks a stopped process. [Z] Z Marks a dead process (a ``zombie''). -----Darwin [S] I Marks a process that is idle (sleeping for longer than about 20 seconds). [R] R Marks a runnable process. [S] S Marks a process that is sleeping for less than about 20 seconds. [T] T Marks a stopped process. [D] U Marks a process in uninterruptible wait. [Z] Z Marks a dead process (a ``zombie''). [d] D [invalid state] -----Minix [R] R runnable [S] S sleeping (i.e.,suspended on PM or VFS) [T] T stopped [D] W waiting (on a message) [Z] Z zombie [d] D [invalid state] -----DragonFly B Marks a blocked kernel thread. [D] D Marks a process in disk (or other short term, uninterruptible) wait. [S] I Marks a process that is idle (sleeping for longer than about 20 seconds). J Marks a process which is in jail(2). The hostname of the prison can be found in /proc//status. [R] R Marks a runnable process and is followed by the CPU number. [S] S Marks a process that is sleeping for less than about 20 seconds. [T] T Marks a stopped process. [Z] Z Marks a dead process (a ``zombie''). -----SunOS [R] O Process is running on a processor. [S] S Sleeping: process is waiting for an event to complete. [R] R Runnable: process is on run queue. [T] T Process is stopped, either by a job control signal or because it is being traced. [D] W Waiting: process is waiting for CPU usage to drop to the CPU-caps enforced limits [Z] Z Zombie state: process terminated and parent not waiting. [d] D [invalid state] phpsysinfo-3.2.5/sample/ups/000077500000000000000000000000001265516077000160245ustar00rootroot00000000000000phpsysinfo-3.2.5/sample/ups/1-upscDell2700.txt000066400000000000000000000034341265516077000210130ustar00rootroot00000000000000battery.capacity: 9.00 battery.charge: 96 battery.charge.low: 30 battery.charge.restart: 0 battery.energysave: no battery.runtime: 4963 battery.runtime.low: 180 battery.type: PbAc device.mfr: DELL device.model: Dell UPS Rack/Tower 2700W HV - 230V device.serial: device.type: ups driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.version: 2.6.3 driver.version.data: MGE HID 1.27 driver.version.internal: 0.35 input.frequency: 50.0 input.frequency.nominal: 50 input.transfer.boost.low: 210 input.transfer.high: 286 input.transfer.low: 160 input.transfer.trim.high: 250 input.voltage: 226.0 input.voltage.nominal: 230 outlet.1.autoswitch.charge.low: 0 outlet.1.delay.shutdown: 2147483647 outlet.1.delay.start: 0 outlet.1.desc: PowerShare Outlet 1 outlet.1.id: 1 outlet.1.status: on outlet.1.switchable: yes outlet.2.autoswitch.charge.low: 0 outlet.2.delay.shutdown: 2147483647 outlet.2.delay.start: 1 outlet.2.desc: PowerShare Outlet 2 outlet.2.id: 2 outlet.2.status: on outlet.2.switchable: yes outlet.desc: Main Outlet outlet.id: 0 outlet.switchable: no output.current: 1.40 output.frequency: 50.0 output.frequency.nominal: 50 output.voltage: 226.0 output.voltage.nominal: 230 ups.beeper.status: enabled ups.date: 2012/11/24 ups.delay.shutdown: 20 ups.delay.start: 30 ups.firmware: 01.14.0003 ups.load: 13 ups.load.high: 110 ups.mfr: DELL ups.model: Dell UPS Rack/Tower 2700W HV - 230V ups.power: 333 ups.power.nominal: 2700 ups.productid: ffff ups.realpower: 306 ups.realpower.nominal: 2700 ups.serial: ups.start.battery: yes ups.start.reboot: yes ups.status: OL CHRG ups.test.interval: 7776000 ups.test.result: No test initiated ups.time: 22:45:33 ups.timer.shutdown: 0 ups.timer.start: 0 ups.type: offline / line interactive ups.vendorid: 047c phpsysinfo-3.2.5/sample/ups/1-upscPW5110.txt000066400000000000000000000007001265516077000204500ustar00rootroot00000000000000battery.voltage: 13.5 driver.name: bcmxcp_usb driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.version: 2.2.2 driver.version.internal: 0.14 input.frequency: 49.9 input.voltage: 234 output.current: 0.3 output.frequency: 49.9 output.phases: 1 output.voltage: 234 output.voltage.nominal: 240 ups.firmware: Cont:00.50 Inve:01.50 ups.load: 16.7 ups.model: POWERWARE UPS 700VA ups.power.nominal: 700 ups.serial: ups.status: OLphpsysinfo-3.2.5/sample/ups/1-upscl.txt000066400000000000000000000000061265516077000200450ustar00rootroot00000000000000PW5110phpsysinfo-3.2.5/sample/ups/apcaccess1.txt000066400000000000000000000024541265516077000206000ustar00rootroot00000000000000APC : 001,052,1303 DATE : 2014-06-15 09:53:19 +0200 HOSTNAME : intranet VERSION : 3.14.10 (13 September 2011) redhat UPSNAME : UPS_1 CABLE : Custom Cable Smart DRIVER : APC Smart UPS (any) UPSMODE : Stand Alone STARTTIME: 2014-05-21 17:17:39 +0200 MODEL : SMART-UPS 700 STATUS : ONLINE LINEV : 231.4 Volts LOADPCT : 23.9 Percent Load Capacity BCHARGE : 100.0 Percent TIMELEFT : 6.0 Minutes MBATTCHG : 5 Percent MINTIMEL : 3 Minutes MAXTIME : 0 Seconds MAXLINEV : 232.7 Volts MINLINEV : 230.1 Volts OUTPUTV : 231.4 Volts SENSE : High DWAKE : 000 Seconds DSHUTD : 020 Seconds DLOWBATT : 02 Minutes LOTRANS : 196.0 Volts HITRANS : 253.0 Volts RETPCT : 000.0 Percent ITEMP : 36.9 C Internal ALARMDEL : 5 seconds BATTV : 27.7 Volts LINEFREQ : 50.0 Hz LASTXFER : Line voltage notch or spike NUMXFERS : 8 XONBATT : 2014-06-12 13:25:24 +0200 TONBATT : 0 seconds CUMONBATT: 13 seconds XOFFBATT : 2014-06-12 13:25:26 +0200 SELFTEST : NO STESTI : 336 STATFLAG : 0x07000008 Status Flag DIPSW : 0x00 Dip Switch REG1 : 0x00 Register 1 REG2 : 0x00 Register 2 REG3 : 0x00 Register 3 MANDATE : 12/01/98 SERIALNO : NS9876543210 BATTDATE : 08/01/14 NOMOUTV : 230 Volts NOMBATTV : 24.0 Volts EXTBATTS : 0 FIRMWARE : 50.11.I END APC : 2014-06-15 09:54:07 +0200 phpsysinfo-3.2.5/sample/ups/powersoftplus1.txt000066400000000000000000000014611265516077000216040ustar00rootroot00000000000000PowerSoft Plus v.0.1.6 - EVER UPS monitoring software =========================================================== Current UPS state : Normal mode Alert : - ----------------------------------------------------------- Identifier: UPS Model : SINLINE 1200 Identifier: UPS Version : Firmware: 1.1 Battery state : At full capacity Battery voltage : 27.2 [Volt] Input voltage : 228 [Volt] Input frequency : 50.0 [Hz] Output voltage : 229 [Volt] Output current : 0.4 [A] Effective power : 61 [W] Output load : 0 [%] =========================================================== phpsysinfo-3.2.5/templates/000077500000000000000000000000001265516077000157325ustar00rootroot00000000000000phpsysinfo-3.2.5/templates/aqua.css000066400000000000000000000052161265516077000173770ustar00rootroot00000000000000/* $Id* */ a { text-decoration: none; color: #c03000; } a:hover { text-decoration: underline; }* { margin: 0; padding: 0; } wbr { display: inline-block; } html { height: 100%; background: url("aqua/aq_background.gif"); } body { position: relative; width: 940px; _width: 945px; /* ie6 */ min-height: 100%; overflow: auto; margin: 0 auto; padding: 20px 20px 0 20px; font: 62.5% arial, tahoma, helvetica, sans-serif; color: #000; } h1 { margin: 0 10px; _margin: 0 15px 0 10px; /* ie6 */ padding: 10px 10px; border-top: 1px solid #2971a7; border-bottom: 1px solid #2971a7; font-size: 2em; font-weight: normal; color: #fff; background: #569FD6; } #select { text-align: right; padding: 10px; } #select select { width: 100px; } #vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups { float: left; width: 451px; margin: 10px 0 0 8px; _margin: 10px 4px 0 4px; /* ie6 */ padding: 1px; border: 2px solid #2971a7; background: #fff; } h2 { padding: 5px 10px; font-family: "trebuchet ms"; font-size: 1.2em; font-weight: bold; letter-spacing: 0.0em; text-transform: uppercase; color: #fff; } table { width: 100%; font-size: 1.2em; background-color: #fff; } .plugin { float: left; margin: 10px 0 0 8px; _margin: 10px 4px 0 4px; /* ie6 */ padding: 1px; border: 2px solid #2971a7; background: #fff; } .dataTables_wrapper{ margin: 0 0 0 0 !important; border: 0px !important; } th, td, h3 { padding: 4px 10px 2px 10px; text-align: left; vertical-align: top; } h3 { font-size: 120%; } .even { background: #E4EBF3; } #footer { clear: both; color: #000; margin: 12px; padding: 13px 25px; line-height: 18px; } h1 { background: #2971a7; } h2 { background: #2971a7; text-align: center; } #memory, #filesystem { width: 915px; } .bar { background: #2971a7; } .barwarn { background: #a72971; } p { padding: 4px 10px 2px 10px; line-height: 1.6; text-align: left; vertical-align: top; } #filesystemTable thead tr .header { cursor: pointer; } table tfoot td { color: #2E2E2E; } .right { text-align: right; padding-right: 20px; } #pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable { padding: 0px 30px; } .treeimg { display: table-cell; vertical-align: top; } .treespan { display: table-cell; vertical-align: middle; } .treespanbold { font-weight: bold; display: table-cell; vertical-align: middle; } phpsysinfo-3.2.5/templates/aqua/000077500000000000000000000000001265516077000166615ustar00rootroot00000000000000phpsysinfo-3.2.5/templates/aqua/aq_background.gif000066400000000000000000000004431265516077000221510ustar00rootroot00000000000000GIF89ax䄄lllCCCԭiiisssιϼ AAAGGG,x`'dihlp,tmx|pH,Ȥrl:ШtJyجvzxL.zn|N~kX!;phpsysinfo-3.2.5/templates/blue.css000066400000000000000000000052301265516077000173730ustar00rootroot00000000000000* { margin: 0; padding: 0; } wbr { display: inline-block; } html { background: url("blue/bg.png") #195287; color: #195287; font-size: 100%; height: 100%; } body { font-family: Helvetica, Verdana, Tahoma, Arial, 'Liberation Sans', FreeSans, sans-serif; font-size: .75em; position: relative; margin: 0 auto; min-height: 100%; padding: 20px 20px 0 20px; overflow: auto; width: 940px; _width: 945px; /* ie6 */ } p { padding: 4px 10px 2px 10px; line-height: 1.6; text-align: left; vertical-align: top; } h1 { color: #FFF; font-size: 170%; font-weight: bold; line-height: 1.5em; margin: 0 10px; _margin: 0 15px 0 10px; /* ie6 */ padding: 10px 10px; text-align: center; text-shadow: #444444 2px 2px 3px; } h2 { background-image: url('blue/title.png'); background-color: #195287; color: #fff; font-size: 130%; font-weight: bold; line-height: 1.5em; padding: 3px 10px; /*text-transform: uppercase;*/ text-shadow: #333333 2px 2px 2px; } table { width: 100%; } .plugin { float: left; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; background-color: #F6F6F6; } th, td, h3 { font-size: 100%; padding: 4px 10px 2px 10px; text-align: left; vertical-align: top; } a { text-decoration: none; color: #EFEFEF; } a:hover { text-decoration: underline; } #select { text-align: right; color: #FFF } #select select { width: 100px; } #vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups { background-color: #fff; float: left; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; width: 451px; } #pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable { padding: 0px 30px; } #memory, #filesystem { width: 915px; } #filesystemTable thead tr .header { cursor: pointer; } #footer { clear: both; color: #FFF; margin: 12px; padding: 13px 25px; line-height: 18px; font-size: 80%; text-align: center; } .odd { background-color: #F6F6F6; } .even { background-color: #EFEFEF; } .bar { background-image: url('blue/bar.png'); background-color: #195287; } .barwarn { background-image: url('blue/barwarn.png'); background-color: #871952; } .right { padding-right: 20px; text-align: right; } .treeimg { display: table-cell; vertical-align: top; } .treespan { display: table-cell; vertical-align: midle; } .treespanbold { font-weight: bold; display: table-cell; vertical-align: middle; } phpsysinfo-3.2.5/templates/blue/000077500000000000000000000000001265516077000166615ustar00rootroot00000000000000phpsysinfo-3.2.5/templates/blue/bar.png000066400000000000000000000020531265516077000201330ustar00rootroot00000000000000PNG  IHDR%tEXtSoftwareAdobe ImageReadyqe< iTXtXML:com.adobe.xmp FKPLTE \%c [+i0q+j/p&bV4v!\3v*i%bU [4v*j%b4u0pVTRR$JIDATxڌI0 @weO_Jgƒ8̽sbJD@!=i$r1+lnxe.IENDB`phpsysinfo-3.2.5/templates/blue/barwarn.png000066400000000000000000000017161265516077000210300ustar00rootroot00000000000000PNG  IHDR%PLTE \%c [+i0q+j/p&bV4v!\3v*i%bU [4v*j%b4u0pVTRR4IDATx~    e.mIENDB`phpsysinfo-3.2.5/templates/blue/bg.png000066400000000000000000000227271265516077000177710ustar00rootroot00000000000000PNG  IHDRHtEXtSoftwareAdobe ImageReadyqe< iTXtXML:com.adobe.xmp L8PLTE[bXVL6xB*h [T*jI$`Xa@%bP3r_(eL+jJ"^VC.m5vQ'd4t/n8y)g<{2r1qH`-lW^^:xTZ:IO@~]7vV/n_0oFBGX[+kYEYXS?<=>FKR=ATD]3sN>OMSCGE\c0p6w#_-l!]"]ZN<:Y+*~U|XweS[s/De/ ^" /PqM7ԛNT}9rPc)DJ@=.Gs/{(SUQq:1(U}D"sj,[RmgcY:MQ9Zz^ꕊ'w7NTK֟}_}KPwJ}ܽ}2U{9Zs2_Q'#+_g7TS{Svԉ3}dlA7T|o.O}d?(SU[JB9'ԔjOi(SU-~ }ioG$Yj%'UE2?'n2Uhm*SvԉW1:~rFo꿩h~ͨSUy"%R"_:[M=Fhrԫߗ%Uo.lR{T\-͛2>oFzsYҫ7q(SUo-]Eқ+HT|ގ:QfuRKTr臶zM&F׻P_oBm!}ԇej&Q'fHjJzj+or~(SUKSISF|&j*>oG]KnjSϾvSo6TRRT<8DME?nG:Xs}5:\;\g`LU.}Ǜ3co6NU/|,>t꾦H#u>鏻$U[$ݢӅN&T߯oQSy;DՉ~IQ;Ju{n=2UuTwMT|܎:QuG+P;KQ{KuxLU.UCŅsT|܎:Qu ?st`3D-. ! W#wuUU1yy~թ3pP^40>6zz4L6ޅz uti*^EMU=RKRDMUoktAhs2U9\DMU PoH5uWC)HmcOw;3z:M(窞JS;n{fpvw**a*.HL88QSq;i#+bmQ4N|-ʖ,T\dubm5vv/Tl}qG_h.WpYxúS;8uJ)CQܳGOT}~bQ'Zn}EmԸJVqK_69g}׳-e# *P'[ zO|K%_mrATNo)?יPuJW_Vҳ_ͤ:MoRꖊOl̷R]ɺ_L)} |KR {%~wp[Sٮ9No))ɺoۤ$ |K 'ݪ'Q*_UF-UJ_:x;J~oR-~iA-E9n |Kuïpw[TDgVp|K uBM&IwDu3:-UJ=PRdyjtH'>FgɑڦfIMS󤖩R\G}<-5KŻ]ws>:RQj]=JT3R$L]>fRR=j]Q/\AK|KHmQ^f7GgJ%jVjZ-ݮU}ԯ6zQ"GgK F-6M&m^Fљn(_6éS-aB7XxvWDU_-U*H;(Qk%\c XB+YI^U}et[+,TMQatXXP!,T BP!,T BP!,T o-E>ZX72$[~JA=3POfz䞺yFAx ꛺5uMݒnK=SHSJRIRKRwHRwI}RwJ]RwK=R'SRI;uuuuuF:'CKPN)R$ j5Qꀚ*OMKS3Ʃ9R,ij25Sj+K͖KR F%R"Ijt9RR=j4\6F-ZVHQkURS:%jVjZ-5C.G.5Bm!Am"5Am#@m$5@m%Om&UOm'Nm(UNm)Mm*UMm+Lm,ULm-Km.UKm/J UJ!I"UI#H$UH%G&UG'F(UF)E*UE+D,UD-C.UC/B UB!A"UA#@$U@%]:L8uti@ԑMqcKRK.Gu* ambl1#kO]osON :bBE`"PX,T* BE`"PX,TX* aBX* aBX* aBX* aBX* aBX* aBX*"buĢT BP!,T uN:+mFyj 5Eꃚ$uAMz&JPSRtuj85Gj%5M͓ZfJ SsvR|Uj(DjZ$5I-ZJ RKRsr5jFjZ%5EZVJ QkvR3zjj j jj#j+~*V,T* BE`"PX,T* BŊ aBX* aBXsoξM:6jtNxk)w!X72$[~JA=3POfz䞺yFAx ꛺5uM޲zfc~vĻz:zNHRRwi73>/^+~'uN:+uCz&HPS>IR4j5Uj,5OMZfHSsYRqԳRwK='uK=/J!uJ%I)uI-H:NIQ'Ro=Rg}R_ԽRWRO#uV:/BM:H}P.iRDj>5Yj.N͐HmSyRLaj.5[j/J-HmR&e娗GK RKp\jZ!5FڢVIMQ뤖RCZj ^uT?T=T;T9T7T5T3T1T/T-T+T)T'T%T#T!TTTTTTTTTT T uT uTuTuTuTuty0qҥ SGJ.I,]:ZY*zzzۋzŌz?u=u;56蜊 BE`"PX,T* BE`"PbBX* aBX* aBX* aBX* aBX* aBX* aBXR!,T BP!,9ꬴS^ R'j5Mꁚ(u@Mڧ&KSӥ֩Rmj45Oj)5L͕ڥfKRVRMj$LjZ(5H-ڣKQ˥֨Rc-jNjZ)5DڡVKPV F-6M&mXPX,T* BE`"PX,T* +* aBX* aνM:6t^ o9⭥߅@`޸ːPomԣ)&@=9PO+9{fbS)oּ5u{˶g}⎩g7zNz^ꕺCꔺKꓺS꒺[:!uHNJQި{Ψ{3RG9 u^ꅚ uBM&I]PӤRT}j<5]j!5N͑ڦfIMS󤖩R\]j,5_jZ 5J-ڤIMRˤQ/JQ1jBjZ#EI-Q+R;jjt9pj j jj#j+~j3zj;vjCrjKnjSjj[fjcbjk^jsZj{VjRjNjJjFj'Bj/>j7:j?6jG2jO.jW*j_&jg"jojwj  (aũKSJK+]:X ut9*P!,T phxdt_z3{fwjm9+* BE`"PX,T* BE`bBP!,T BP!,T BP!,T BP!,T BP!,T BP!,T BP#BX* aBXsR?Yi7ڗKPN)R$ j5Qꀚ*OMKS3Ʃ9R,ij25Sj+K͖KR F%R"Ij"PjZ*G-KQ+ƨ5R[*)jRjZ+CKPHP[HmPHMPH-PI P[ISb"PX,T* BE`"PX,T*V,T BP!,T B{um:7PަsB[KQG Bq!8GS Mz2s NWSs$;5 :SPԭykm3SnNK=#--+u)u'u%u#uB:%GNKQHQI}QJ]QK=QgsR?Y 5Aꄚ"AMI=PRdyj:5Cj#M͒I-S3RlYj*@jZ"I-I^-5H-ڣKecr5jFjZ%5EZVJ QkvR3zrR#R&R6R FRVRfRvRԆRԖRԦRԶRRRRRRR.R>RNR^R}nRu~RmԎReԞR]ԮRUԾRMRER=R5R-R%R!R1R ARQäSI.L)Wߗ:V$utAhrT\gBX(+ n/36f:>h۠s*V,T* BE`"PX,T* BŊ aBX* aBX* aBX* aBX* aBX* aBX* a"/+VG,JP!,T BP~Fo/Oz&HPS>IR4j5Uj,5OMZfHSsYR5Yj.N͐HmSyRLaj.5[j/J-HmR&eRBAjXjZ.FHmQuRKJ!jZjZ/Bm 5Bm!Am"5Am#@m$5@m%OŊBE`"PX,T* BE`"PXXP!,T BP!,T um:?ٷPߦBMx o-E. ]zxkO)7q́z:]O]ϑS73h6OA}S潮[=SwL=9/܎xsRRR]RԝRR CuR:-F#uF'E+uE/D:IPgnR/j5Iꂚ&@M:JSR qj65Kj'L͔JRfRQj&HjZ&]zy TjZ, Q˥֨Rc-jNjZ)5DڡVKPQKP[HmPHMPH-PI P[ISISISJS[JuSJUSJ5SKS[KRKRKR;HR{HuRHURH5R;IR{IQIQIQ;JQ{JuQJUQJ5Q;KQ{KPKPKPHPGHuPHUPH5PIPGI.N']:P0utn_}_XQq aBX{8G(ǻ'[SכS7;SmΩXPX,T* BE`"PX,T* +* aBX* aBX* aBX* aBX* aBX* aBX*X(BP!,T BJѾ PLTE.nVX0q)h.n&dT6y6x$aS[!^4v2t'dS0q%aV4w2t"^X5w1q+j!^)g*hU+k,jX,k5x2s3t [Z+k%a$`)h"^&d[4v'eR$2bIDATxڴE@5jP?@2cfLuB{<~qNn R*:_AD)h{x$Hmy ReIENDB`phpsysinfo-3.2.5/templates/clean.css000066400000000000000000000051551265516077000175340ustar00rootroot00000000000000/* $Id: clean.css 518 2011-10-28 08:09:07Z namiltd $ */ a { text-decoration: none; color: #c03000; } a:hover { text-decoration: underline; }* { margin: 0; padding: 0; } wbr { display: inline-block; } html { font-size: 100%; height: 100%; color: #333; } body { font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif; font-size: .75em; position: relative; width: 940px; _width: 945px; /* ie6 */ min-height: 100%; overflow: auto; margin: 0 auto; padding: 20px 20px 0 20px; } h1 { margin: 0 10px; _margin: 0 15px 0 10px; /* ie6 */ padding: 10px 10px; text-align: center; font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif; font-size: 130%; line-height: 1.5em; color: #224970; } #select { text-align: right; } #select select { width: 100px; font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif; } #vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups { float: left; width: 451px; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ color: #000; } h2 { font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif; font-size: 120%; padding: 3px 10px; text-transform: uppercase; line-height: 1.5em; color: #224970; text-align: left; } table { width: 100%; border-top: solid 2px #DADADA; border-bottom: solid 2px #DADADA; background-color: #F3F8FC; } .plugin { float: left; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; } .treeTable { border: none; } th, td, h3 { padding: 4px 10px 2px 10px; text-align: left; vertical-align: top; font-size: 100%; } #footer { clear: both; color: #000; margin: 12px; padding: 13px 25px; line-height: 18px; font-size: 80%; text-align: center; } #memory, #filesystem { width: 915px; } .bar { background-color: #2F659B; } .barwarn { background-color: #9B2F65; } p { padding: 4px 10px 2px 10px; line-height: 1.6; text-align: left; vertical-align: top; } table th { color: #333300; } #filesystemTable thead tr .header { cursor: pointer; } .right { text-align: right; padding-right: 20px; } #pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable { padding: 0px 30px; } .treeimg { display: table-cell; vertical-align: top; } .treespan { display: table-cell; vertical-align: middle; } .treespanbold { font-weight: bold; display: table-cell; vertical-align: middle; } phpsysinfo-3.2.5/templates/cleansyn.css000066400000000000000000000051651265516077000202670ustar00rootroot00000000000000/* $Id: cleansyn.css 518 2015-03-21 10:31:07Z namiltd $ */ a { text-decoration: none; color: #363; } a:hover { text-decoration: underline; }* { margin: 0; padding: 0; } wbr { display: inline-block; } html { font-size: 100%; height: 100%; color: #ddd; } body { font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif; font-size: .75em; position: relative; width: 940px; _width: 945px; /* ie6 */ min-height: 100%; overflow: auto; margin: 0 auto; padding: 20px 20px 0 20px; background-color: #111; } h1 { margin: 0 10px; _margin: 0 15px 0 10px; /* ie6 */ padding: 10px 10px; text-align: center; font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif; font-size: 130%; line-height: 1.5em; color: #fff; } #select { text-align: right; } #select select { width: 100px; font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif; } #vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups { float: left; width: 451px; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ color: #ccc; } h2 { font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif; font-size: 120%; padding: 3px 10px; text-transform: uppercase; line-height: 1.5em; color: #fff; text-align: left; } table { width: 100%; border-top: solid 2px #DADADA; border-bottom: solid 2px #DADADA; background-color: #333; } .plugin { float: left; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; } .treeTable { border: none; } th, td, h3 { padding: 4px 10px 2px 10px; text-align: left; vertical-align: top; font-size: 100%; } #footer { clear: both; color: #bbb; margin: 12px; padding: 13px 25px; line-height: 18px; font-size: 80%; text-align: center; } #memory, #filesystem { width: 915px; } .bar { background-color: #0f0; } .barwarn { background-color: #944; } p { padding: 4px 10px 2px 10px; line-height: 1.6; text-align: left; vertical-align: top; } table th { color: #3a3; } #filesystemTable thead tr .header { cursor: pointer; } .right { text-align: right; padding-right: 20px; } #pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable { padding: 0px 30px; } .treeimg { display: table-cell; vertical-align: top; } .treespan { display: table-cell; vertical-align: middle; } .treespanbold { font-weight: bold; display: table-cell; vertical-align: middle; } phpsysinfo-3.2.5/templates/cream.css000066400000000000000000000046531265516077000175430ustar00rootroot00000000000000/* $Id */ * { margin: 0; padding: 0; } wbr { display: inline-block; } html { background: url("cream/bg.gif") repeat-x #F8F2E3; color: #444B54; font-size: 100%; height: 100%; } body { font-family: Helvetica, Arial, 'Liberation Sans', FreeSans, sans-serif; font-size: .75em; position: relative; margin: 0 auto; min-height: 100%; padding: 20px 20px 0 20px; overflow: auto; width: 940px; _width: 945px; /* ie6 */ } p { padding: 4px 10px 2px 10px; line-height: 1.6; text-align: left; vertical-align: top; } h1 { color: #394047; font-size: 150%; font-weight: normal; line-height: 1.5em; margin: 0 10px; _margin: 0 15px 0 10px; /* ie6 */ padding: 10px 10px; text-align: center; } h2 { background-color: #444B54; color: #fff; font-size: 130%; font-weight: bold; line-height: 1.5em; padding: 3px 10px; text-transform: uppercase; } table { width: 100%; background-color: #fff; } .plugin { float: left; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; background: #fff; } th, td, h3 { font-size: 100%; padding: 4px 10px 2px 10px; text-align: left; vertical-align: top; } a { text-decoration: none; color: #c03000; } a:hover { text-decoration: underline; } #select { text-align: right; } #select select { width: 100px; } #vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups { background-color: #fff; float: left; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; width: 451px; } #pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable { padding: 0px 30px; } #memory, #filesystem { width: 915px; } #filesystemTable thead tr .header { cursor: pointer; } #footer { clear: both; color: #5C5C5C; margin: 12px; padding: 13px 25px; line-height: 18px; font-size: 80%; text-align: center; } .even { background-color: #FBFBF9; } .bar { background-color: #58626D; } .barwarn { background-color: #9B2F65; } .right { padding-right: 20px; text-align: right; } .treeimg { display: table-cell; vertical-align: top; } .treespan { display: table-cell; vertical-align: middle; } .treespanbold { font-weight: bold; display: table-cell; vertical-align: middle; } phpsysinfo-3.2.5/templates/cream/000077500000000000000000000000001265516077000170215ustar00rootroot00000000000000phpsysinfo-3.2.5/templates/cream/bg.gif000066400000000000000000000003331265516077000200770ustar00rootroot00000000000000GIF87a EM@GO?FN9@H6=D0./6=E8@G7?FJR[IQZKS\MU^LT]IPYCJSBIRDLTGOWFNV, `#h6lK,2c |S0X)Ɖr\F(TBZv%x`L.:h|N'<^!;phpsysinfo-3.2.5/templates/dark_bootstrap.css000066400000000000000000000055251265516077000214710ustar00rootroot00000000000000body { font-size: 13px; padding-top: 80px; color: #c8c8c8; background-color: #272b30; } wbr { display: inline-block; } .progress { margin-bottom: 0; } .table td.rightCell, .table th.rightCell { text-align: right; } .percent { text-align: center; } .panel-primary { background-color: #2e3338; border: none; } .navbar { background-color: #3a3f44; border-color: #2b2e32; } .navbar-brand, .navbar-brand:hover { color: #fff; } .treegrid-span { display: table-cell; *float: left; } .treegrid-spanbold { font-weight: bold; display: table-cell; *float: left; } .treegrid-indent { width: 16px; height: 16px; display: table-cell; *float: left; } .treegrid-expander { width: 0px; height: 16px; display: table-cell; *float: left; cursor: pointer; } .normalicon { width: 16px; height: 16px; position: relative; top: 1px; display: table-cell; *float: left; font-style: normal; font-weight: normal; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .normalicon-right:before { content: "\25ba"; } .normalicon-down:before { content: "\25bc"; } /* IE6 fix */ * html .normalicon-right { background: url('../gfx/right_gray.gif') no-repeat; height: 14px; } * html .normalicon-down { background: url('../gfx/down_gray.gif') no-repeat; height: 14px; } /* IE7 fix */ *+html .normalicon-right { background: url('../gfx/right_gray.gif') no-repeat; height: 14px; } *+html .normalicon-down { background: url('../gfx/down_gray.gif') no-repeat; height: 14px; } table.sortable thead th { cursor: pointer; position: relative; top: 0; left: 0; } table.sortable thead th:hover { background: #3e444c; } table.table-hover > tbody > tr:hover { background-color: #49515a; } table.borderless td,table.borderless th { border: none!important; } .table .table { background-color: #2e3338; } .logo { cursor: pointer; } .errorbutton { cursor: pointer; } .select { color: #c8c8c8; } .template { cursor: pointer; color: #333; } .language { cursor: pointer; color: #333; } .panel-heading { background-color: #3e444c!important; border-color: #3e444c!important; } .progress { background-color: #1c1e22; } .progress-bar-success { background-color: #62c462; } .progress-bar-info { background-color: #5bc0de; } .progress-bar-warning { background-color: #f89406; } .progress-bar-danger { background-color: #ee5f5b; } .modal-content { background-color: #2e3338; } .list-group-item { background-color: #2e3338; } .reload { background-image: url("../gfx/reload.gif"); vertical-align: middle; float: right; cursor: pointer; border: 0px; width: 16px; height: 16px; } phpsysinfo-3.2.5/templates/green_bootstrap.css000066400000000000000000000054741265516077000216530ustar00rootroot00000000000000body { font-size: 13px; padding-top: 80px; color: #333; background-color: #fff; } wbr { display: inline-block; } .progress { margin-bottom: 0; } .table td.rightCell, .table th.rightCell { text-align: right; } .percent { text-align: center; } .panel-primary { background-color: #fff; border: none; } .navbar { background-color: #3bc873; border-color: #33b667; } .navbar-brand, .navbar-brand:hover { color: #fff; } .treegrid-span { display: table-cell; *float: left; } .treegrid-spanbold { font-weight: bold; display: table-cell; *float: left; } .treegrid-indent { width: 16px; height: 16px; display: table-cell; *float: left; } .treegrid-expander { width: 0px; height: 16px; display: table-cell; *float: left; cursor: pointer; } .normalicon { width: 16px; height: 16px; position: relative; top: 1px; display: table-cell; *float: left; font-style: normal; font-weight: normal; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .normalicon-right:before { content: "\25ba"; } .normalicon-down:before { content: "\25bc"; } /* IE6 fix */ * html .normalicon-right { background: url('../gfx/right_black.gif') no-repeat; height: 14px; } * html .normalicon-down { background: url('../gfx/down_black.gif') no-repeat; height: 14px; } /* IE7 fix */ *+html .normalicon-right { background: url('../gfx/right_black.gif') no-repeat; height: 14px; } *+html .normalicon-down { background: url('../gfx/down_black.gif') no-repeat; height: 14px; } table.sortable thead th { cursor: pointer; position: relative; top: 0; left: 0; } table.sortable thead th:hover { background: #f0f0f0; } .table-hover > tbody > tr:hover { background-color: #f5f5f5; } table.borderless td,table.borderless th { border: none!important; } .table .table { background-color: #fff; } .logo { cursor: pointer; } .errorbutton { cursor: pointer; } .select { color: #333; } .template { cursor: pointer; color: #333; } .language { cursor: pointer; color: #333; } .panel-heading { background-color: #33b770!important; border-color: #33b770!important; } .progress { background-color: #f5f5f5; } .progress-bar-success { background-color: #5bc0de; } .progress-bar-info { background-color: #5cb85c; } .progress-bar-warning { background-color: #f0ad4e; } .progress-bar-danger { background-color: #d9534f; } .modal-content { background-color: #fff; } .list-group-item { background-color: #fff; } .reload { background-image: url("../gfx/reload.gif"); vertical-align: middle; float: right; cursor: pointer; border: 0px; width: 16px; height: 16px; } phpsysinfo-3.2.5/templates/html/000077500000000000000000000000001265516077000166765ustar00rootroot00000000000000phpsysinfo-3.2.5/templates/html/error_config.html000066400000000000000000000022611265516077000222430ustar00rootroot00000000000000"; ?> phpSysInfo - Error

    phpSysInfo - Error

    phpsysinfo.ini does not exist or is not readable by the webserver in the phpsysinfo directory or is misunderstood.

    Generated by phpSysInfo - 

    phpsysinfo-3.2.5/templates/html/index_all.html000066400000000000000000000033101265516077000215200ustar00rootroot00000000000000"; ?> phpSysInfo - Redirection

    REDIRECTING ...

    Loading redirection target

    In approx. 2 seconds the redirection target page should load.
    If it doesn't please select the link above.

    Generated by phpSysInfo - 

    phpsysinfo-3.2.5/templates/html/index_bootstrap.html000066400000000000000000000471001265516077000227720ustar00rootroot00000000000000 phpSysInfo "/> phpsysinfo-3.2.5/templates/html/index_dynamic.html000066400000000000000000000257211265516077000224060ustar00rootroot00000000000000 phpSysInfo <?php echo PSI_VERSION_STRING ?>

    Loading... please wait!

    phpsysinfo-3.2.5/templates/idash.css000066400000000000000000000051521265516077000175370ustar00rootroot00000000000000/* NextGen Remixed by iDash.pl */ a { text-decoration: none; color: #006; } a:hover { text-decoration: underline; color: #5A7000; } * { margin: 0; padding: 0; } wbr { display: inline-block; } html { height: 100%; background: url("idash/bg.png") repeat-x scroll center top #111; } body { position: relative; width: 940px; _width: 945px; /* ie6 */ min-height: 100%; overflow: auto; margin: 0 auto; padding: 20px 20px 0 20px; font: 0.75em tahoma, arial, sans-serif; color: #CCC; } div#container { margin: -20px -10px 0 -10px; padding: 95px 0 0 0; } h1 { position: absolute; top: 35px; left: 10px; margin: 0; padding: 0px 10px; font-size: 2em; font-weight: normal; color: #FFF; } #select { position: absolute; top: 75px; color: #FFF; right: 30px; width: 370px; text-align: right; } #select select { width: 100px; } #vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups { float: left; width: 451px; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; border: 1px solid #354242; } h2 { padding: 5px 10px; font-family: "trebuchet ms"; font-size: 1.2em; font-weight: bold; letter-spacing: 0.0em; text-transform: uppercase; color: #FFF; /* #7D9100; */ background: #354242; } table { width: 100%; } .plugin { float: left; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; border: 1px solid #354242; } .dataTables_wrapper{ margin: 0 0 0 0 !important; border: 0px !important; } th, td, h3 { padding: 4px 10px 2px 10px; text-align: left; vertical-align: top; } h3 { font-size: 120%; } .even { background: #333; } #footer { color: #777777; clear: both; margin: 12px; padding: 13px 25px; line-height: 18px; text-align: right; } #memory, #filesystem { width: 915px; } .bar { background: #34DA64 url("idash/html.gif"); } .barwarn { background: #e69575 url("idash/htmlwarn.gif"); } p { padding: 4px 10px 2px 10px; line-height: 1.6; text-align: left; vertical-align: top; } .right { text-align: right; padding-right: 20px; } #pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable { padding: 0px 30px; } #lang_047{color:444} .treeimg { display: table-cell; vertical-align: top; } .treespan { display: table-cell; vertical-align: middle; } .treespanbold { font-weight: bold; display: table-cell; vertical-align: middle; } phpsysinfo-3.2.5/templates/idash/000077500000000000000000000000001265516077000170225ustar00rootroot00000000000000phpsysinfo-3.2.5/templates/idash/bg.png000066400000000000000000000732101265516077000201230ustar00rootroot00000000000000PNG  IHDRd$sBIT|dsRGBgAMA a pHYs+tEXtCreation Time11/10/10P{tEXtSoftwareMacromedia Fireworks 8hxAprVWx\SWFQQ*U樤*G*IEЈ(b<"JP]X@@]B"9ͩI$``Noރ Tfdvqy_~}x?SjS_Xl?^כ_)O W5*a՗M7|Y{J̤ףG~gupmL߃w\:.֮@ڛRKT޶zr:}DOeDÔ26OB6擌4qga73ϸ7x㾛^wЍk~KW媟kT7?T/j݆mۨ?VJOUPv PF8==}Dʷ["2Jnz3iBc/-?N4@$_?˅T|1ƎDZeY~sU;l0|L~L>˃A<]~nZq:L8WxQ \TKߜ;*]aq40P^aBx/U묽zp` a#ƿ=#5g!$l_lPW -氥2r--ϲ?c~?RsoCUTwtҁ|uࢶ6bCbŏƢֽo-?|*sQ}7~^@6࿺GCaC_?e/zHȟDCNh3=(zpYޔR Mh =̮*g>5>{?BmBHF?c^ L&nց'{?TH9n_9(?_zʙ*{H$Lmtv9F 'SC聄q ā6:~F|5x93:sZ88 mk* ͇Եx?ǽs>X#?RB8{>QP;ܠjRIr*jPNA:|fESEXHr#=ԽEQpɒ´%i %7顾sMtoY9!_,6_܃ܓ#6ng'lBX~U:̮9*w[ua/ӳkCҮuf>POV=t=k3OGAN!/SDԐOcކ9Oz\=Ȧz}>gNm`]_;MٲSwș=^d 3RNv)r(8G<ښ !{b/gU=+lGgͪ%{\ٮ3s}x=5M&3G{骢 퇩Dʡy#Fp:S!<Ǧϙ߾Gn1j?f# FcC(ct?gAU; U yD,=5s7V}YE;v=0s_{bxFHmkBF)3mkTSx][w8ft:s̙sٝxxhY/INHh:3ugu_lUHHYe7nS"UP.ǍhlLVhw3nN7;iouqŜ;#(5MZZ ~mnt#G3m=8vڹB6}ltcЛ;#Cmoo4N&t=ӝ>CMj}owFtrZRlw:tag5_~``&6S?Ѐ&Lv0)6?WAG׃hCmpu1`n} i߀&s@W"J>h'`DVnmJg=JtN U!%g2,ẽ] tϐ.Cֳ|sNzc\ NER+;Κ\a>l;ΫR56*;Pf03hܕ 5?pd@.! kN!Khm(gKqyzh%N?w?$cXq"ÛdZ 2p\*"ޑeF93(cIl7HH '+W)ȶpGbˆ> lOuFρ N"UfhR1qf::TyucrP];M=ٰ3)li=O`.8`k(<\ D:qsxL 07zE1阭0Id\dB%GfS Pg@WFqѱ!"!bͫTLaңTQC*waLz~U*ld{ubUs$wjYFH0 { 2/L+!L'_7@9V}{N6Ug A3h+iP>XMZ *J %JuZ5Ȧe\8NRֿc֯u+KrI]gj5&=853U.0bVҜqyyp jb-tDKTGW\ʌ9*0:hVX׍^ԉb(7,gt4eU9hayz T1|ms]ꤌ$gz,.걨^t>TPm= @xMky:Rq276֚ aC-l%L댙=bQE­rb޾c|}&hH9두 s(Xf@Ҍ|8T0rٙϳN^d\ 32hQ} phuNr%0Q ̡;P:=Ę-?+̥@ͽcg 0:Zt$n$ȒqHii8t4W11C75}Mtf Ǖch<sS{$K>FA[$IjżгS<ԵӐ@uak8 f [īv.iY6bѡ%QG2BSH.~3"ͷ&ݿ-|JDH!P=Woǘ Qes $9q|D i>E:\ CY0JJjl(/H%3擜$g+"G\rBdg'*Zd>LbzC+CmQ-9L-K&Y*Q%zeŷSQx%pɲdY-e9spxaF| XǞ[ 0Qiށd:ipc݈ ڨoVK7 n}){=Syg yG aUaҪҚGZ Bd!2=r~>iyLZ^)"zȥU$p;Ў#gg瓓r*"'᰷icDOKـlPl&|G[݇ &?L9?LZRZ35iR{V8NX })>SՊhu+|x94\ A$.,@*WG^v)UbaU\?R}ox"E⅕`?J<{ݿ-5xa M)KMR} Y҈/%#ЊsiO;^/ rL|ۂY1DGyI떇RnV{4vtnVJFUCQ.r[6mQ!%$P6G6i@YJaꖯ _4TN noFɆ Gb[J+t*"tkaH]SuۆO(\;{!?͞UTSyEWh@#hy`k执ڲҝgVVitnj_N^߶"0Nr?315Fs[<gx9GIҶ„M;l2D*$cdQ7DmIB1)G^%yYDqQo5"CiҎïKz獈r *LZq}s !eK h17l؈d!ܣsֿEX4Cvz<.P/}'3aw[+P_XZ bU3i g"Hw^B91,d?D{ίomU 5S{ @ CWV%mjwݏ:#'vSI>taHuUu-:8bm OHS^]wc/TKO.a50rxm"l "?N>p*SHmf6HU54xjb b=`L/(uiyD}GHr'twm Fd BvH#|ao ;!>sy./F Ʒ)<-D!6钧K.ysyZH>@%W\]ruw{իI̒K.ٺd;=g_D_O3W%{]ww{".҆xgԵK.=jֈ4K.y钧OWMV0_Wru%W/=WYyw5puWt%Ou^tWru%W^suWu%[^uWw%{O^EK..sr-n+y钧*O/w^^|iI<5:bVk1`3rlj6 =o! 2^֡셩Se* +鎩.Sbw*J8?'1[qŀ," pT4(^ ss_hltP[ǟ&'hC zг1OqJL} O3< XUA>FkHM^7ujLCj9\׷G g֓#H3GOO@\EFPdNl7d335>=O}ϥ:7'#a~aui-^&/S(T?,y;>)v7qǾT~22{z"nyRw| Kg@\#p*1 <5ٯ[+_ʨgԛQT)Y#P}їv8I7ROWc7#bU\+3ۯ4i>9 gܷ.)% G ْD!ON}IZ=4b+fqR4c@^=+X =?z}IyDijOY8"6>G{gJ3 O/8s%Y<ĿQZDP[ 5n_KW~%n@}c_4U,4җ㏏a8F+Ufߨ'|u6if{9>?+&s㰳!&qEdjca:&~D;Km0EzAF]ELgkX4.n;c f^i}5_p,=:J~]Q,)?Gw- )\ՈhʬYQ?̉)n"1_F1()aQ bQ+h(>>q'0d|*v8@,Dhouz4j|8ڴ5kI"a:=[;:K2+N$M1ےF@8:$ Z᙮9$ /%TF؆5 )\d~_PŴhgGG?>30^=j=ɷhKK`yLiA.9КdE1k3ٿh aO:h}"-pY'Hq[CoZ: 3*alY3z~1%SdNW%oϩuӳ#N4='\Kv/su AeJ`v+z]uٽ64]j̩|Z?pqcP?qJ+p=Kl GoK 1`sxV lbX¿xъ(y4A;UYZPeWՀʚ-*,qZ<'N@pimO|jI]܄'8ACvJٿ>e|8Z6#a{3ʭ镤 'K#PE42* _Idޖ ^)}\sIz yjo پ C?qrE0gmr,=,"ͭ=j$|DJ wc6RtU ?l/fV=( N;|e yeUKjL}3WcRffyP]]^%qý[\Gpv/W {<3=JE;ۤO7Yh/NY=̀*2y.EDY(87dMg!+Z/n3 =ZJtNʧRPBD풭t; /Cy߹(޷Ob37pܧ7pOyzwpY=1b{Sp,{8,=7;R)QxS6yR21re`by,Cnɡ]?菡nm:{ ߺ1itIʶQrncc\m~v>@{S+t|Qc1 MZ^as.=IkǮiuw@˜lv١I6t@3Cب>G럣z-l-S#`w[>vsC~з6PMrFGJ5G{nx8oP#h@ٗc5:`.A} 7إ۵ͱPt{xݍomxoe,m;.-li o][D9 ZEz޷"R {pGl$Z8iNzeݙgIo`th:b .IV ukߩcFi]m IhF%_MpêF{ɚzM&zȁ /y.@K[պa:!i}j$R_L4/@{`[=G@W7 ƞn24I]iX6ioC1փC3KNkV=^-ͷ` FH7EUUcMi4%š3Z_VK FwV؎g [U1i{bH:lhVuDz fӬj.ut,`5g&iĝurCº@ 5! 4ak/т݉<&Q6xIN"4I4yx? Vj4\ϭk}jݶ夛-*;-`3vkgڭovsgBTc3q4^h~Jlo߾)*/N\ϱov[iZ_ձaJΝ/:6O- 92b?Tlk%?_21B sY5>:>c=1Ow y^- ڶ,XzusM#גU]>H_yYv!ۉ_mi Rus]Xm_g)YY)m]y,m z1aaaxEߓGקo/Y\k6xjgH|yu.\aæM&wk#ϐ$?]Mo\Ⱦ,/ڥQ@~6s?)}, l gX #vQg Bٙ^uのuhm?}{].~}v_J;xogJY]޳@.)oqC?}>@Xߘ'-(W? źvƔOʙRv[K?[A}?-wmՑ}g\=c}M ggg DŽ-B^k_g?F? v0||؎=ǧHPgs/hؑI t~{n^}ZyD5XWvO)"c0vY Z|~_%/,p\ɹyΰZ/;/xs_9?Pܯ5ݻ\[y|č8gʱL{? 0 0 _k3>z_\S |<)b|7aaaxn.ta?l^Cvkؽ#~e)3<3^kdlc&jK+o"e<.ʞ`^(3zu l+6v<ï k7]/lc[`On}򚄫 G뎱zt^v2)?;Wmr5ocIz?Ozx{&!ez."ѯ 1Gg{+ҏlw<=}GݽFƨ^)zIpG K֜{{e G12ۭqiumf>.}~a? 0 0 [u+7Svq֭y΅ ?ނ}XwŶv?ߩDZۓ-q/?߳=<~#>Fk"qzrQo 9r,nY[;o:)@-`ק-7({߯S@µK9֠ɸ>:n3 _[_*mtcmC>qSL=<6;ǫsaaa{xˌ\ފpx?0׋#5zяc]x^l򼠕(f:~٣^lin59W~\;?vn6erUbS~v^U O7O(|;+SG4|?f*?rW~2oNٟS9~daևmH6mX[J~s.ym4ٶO|Bd/b5ɿyU? 0 0 0 0 0 0 0.P~*1@G\⟿KrKXs2(ߥ纎J8'>X@▼QQbqwx b)_K|v 1M6kee-2Ǜ59?K^E~9ϱQﱮYF8N?~;:=J<-tĒyNAgC \NXKs)'^Kg\~2}6}Գ)n]Or^j~"{p29w6/.z-v:+M{WJYZ굢`% Ҥl9ힶկ#OUz+U?;sd~vND7*.Y+v:ye;8}~|+ÑޅN9}{Bƞ#txխsXɿkSV/uJ=o G<ջL'L:D]6jfgLz/+ؽ[{rCMYq~[{yy czA;w9zszWHVax3 %mkBTx흍) q ĉ8D^>׻gI@XjjgiЃ`0 `0 ?ϟ|:seQ3|ӧO|:2|.};7eGFO6_Qv]T]^ˮg{>pjzkuo{yye?{-x/ D:3D&򈼹e^Hyi#/OGzϪ߯_~ :sMe#M3Y#=2 QЙ[\s=E8}E>GȩT ڲTg-}VfoSVwzV}./>~!?U1<#}=F[ ~QڋBN..+푹^edLo+[\-k dW(}6q$#?z6Bөi?L7!3O_Q}Пuo[=tkȋM!'}/Ƈdr2_Cﲨ: `0 :8o=+8-4}۞cĥXdq{bUq©ήm!ƶg*ΪU\z[GA=^+ru{LV U?)V>ғ)x|Yҁgi\yi^cUo*= !TY?rfgWsʽVn*VX#=Fϫ+[F~yH\L~[O҇h5ݵTow|Sfӟ+);F;:x )/OS yUo2e)Ve3'wgGg=J^`0  ľu kU,Ksؑ5nY,bXw{ w&3QהNQev ]ƷgcH˞i{A3I8hwduwUIWq8I>+@pQşGcZ\ƪUߝ]/:3d;ɫ:gB9R|GW~w2;fzt|+i5nΟgZY|<1NyŬ|E7k?z/k><=Α}N΅>uWydʬdz `0 *\?W8GY:Dgcg< 2+'W6qn؟{ru"wU쏘~c#T?+y{Q,,^qF/Xv8.֩g3}ȸOP ~n%hUG4(_sn|W}Tg&x^c,Fѭ+ <#+}/Uw8BRh_|33!mr\7U9m({ѝpvew[xG]߱?g;,nҽow8]וb?OV=Z_#ve?vN_WrYLo;1g9pV^G~>[_vNOS3 `0Q[ veO\k^8֔v<Zbz\Opbn$~}oz3ј mK vU]^iNWA#x딫jt q :E= z%օq)CcYEqyRG-+u (K\hP'*^ء^q=m=y|Kvūe\rȊ4={W1;=ݷxp;o@>ȘT\Ԏ+C=*ɫ|GJOCW]x1.ﵠ9_Eб Vq)v(ʑ}[GwǺ{-oSdו_˞׃2;iT&w*w:g׭SOsj%Z[~_˯d֮+w]7 `0]kIu+eL]ւoA^;=GR?v쯱;<y o$N1紈=:ߥPVu< <&3KyC/4r)i=*/|Ύ^]QNН1qGw>ù{ ?Kv:A}E:_n+{u=rq͓̳]>>d}+|L01`0 leg:׺񶊝`W,3O?]\9P~[kOWiGc~)-<w.3q}'vuw$Vnv(r52S;Wk_Kϔ8B/hEՠ'9w?K;x:x<|@cϽVyc@ۖSw8Bq]=2lBe6V}eR( VeZT4ade2ޒ+nYBTqSߔ<[&=f[|szP)G}{Zׅ3n7jpWwftEw[ǽ;`l? `0 `0 `{~i`oLy>uoi\qK|}7Svu9G쯿c¾#>,jow{ՆݲL=mW2u_8دjo?kD߱mw>#}E:OۡO;y`$jwymkBT6x횉m0]HI!)$FR?6c>>~sm+vuՑνYu8uN?WP>1JsWiV_uKEϸ/rˆ_gKW]ױEYcl,[TYHT}xL#}A GV7^}>iҞ-i;}LJX&TP3T#ߨgJl e'=?͘ona|7>?ǐU%;/mN/IfQփz{G}?v✽3X~j{zTAO^ʰ>?sy|G)PU{ ..T}6ڳ-F`p]k߅~b  О$wݓٱ|sCoA+q3lOx@(0a+? T,_7s\Ϙ^Bl1)C+k(FyN"8dPC_9>O0&l4Im+nwGrŰ)/tihf ѸX>E)<,6s45zb?J\<OM%O#(76:= ӋYAƒH Ls6MXBcX&ǘJte. 3.je(??Lj=%wZizFTx$kP8Em jAOހ>~؆B9 ֤8UKCvjbL Cy ;mj P. DkwUE€3ܨ8xUJs\ɟ+;}sFQ(KIXݛƨ 1 +KdX];Jģcx$D׷X`i @l̏rnm$^9΄zBGϞQ=nfkDe; <a>,⢞jk0B[p($Ǡp4 nq`XƓ vϵ.xHnorJ5Hu뇗 f a[Z:>36[g RL؍?( &w.7C#~B{] UW 71jk~ecGrD.=K@WDZM0倐0\xvqNZ ># BE )&yA}t?B Ym(WIpɱ |2+\2 )l8tl@Z.Be񅋍RSƃm>dIl'N adĢG3%#)?$s _5=YBR#-k"qGP-e"f%֩-ϓ378M9ϊ,_*n;HEBƱcl~ ˝[/sagIE2,z1t:kLș壋G){7ond{@rP>kwk׽ #kXfyEAB9uM4P=_lgW؇N#_nGpp ,ZUu6ȓVӰ0EK7*|]{75F\ԶzQz! uH>upT٣o3P)[^6` -d&*=%fY<^ط`_6|h3ء>2 Pq7ώ ,NsjF=B` 큳CiU)R鐏@LҮǧmb<2FHRqùFXi䎲OmGA}:*u f:@ʫRH.66jcGOpO- 6HKJU:Jǃv,3DZEƮqq7p?ȌK%ȧ$;?Qr6pP7`a^=R_)m>D3#£ _' Iɭu͋C-Rne㯄ssL<ȭ/R)|Lt_1Lk=rr 4/gEr~PnB[\g[{gYvRW' {Fem1{ wL;7&$xc0 n&u@5sCCձm8Heft x{q(aтa?Q%l4ςxmWI׆GC1kQ3iJh,KRO`ʲ4)%b6B8\pe;u)ko)#WSncRx{[sXv195_0Kՙ7>Tp5ٴl3S"؝LX睫[5m Q="u}pϘ*xbՉ#iM+@Z! Ϯ~jYݬ$?5mtu] %@݅:4h8ۃtu3; ΑO1A/r R*5i&j#Y2:$Z(ad@>'z L뇶6Z8|`6"X1_z' F-я?X^ A:?1;h/KVB' vOnFS ƤQ{=kh7MwXQp\v͓O/. N3HKRlK"q^Wh1wt h@3e6N|I;y?8t[[! $,ήLe"z%IކAkRl!3u8ځy?_W)AbCO!rza5Sn֗#<43y6"R߃CQ&>[# BHǽ{vekOTlq(UH͵h ݔ8,@tՂL{p/*L"d_y k,4 G̖bD>,.ok"D;|7[.DCA#ilϟI֬Dq]+eE _-- ڰc^Lq1~CCC9gNH8BkhJ#Z-`VoMa 9r$պZ-hkh ?C$ ^tď9d(8P݅]ڶw[wl;dn׆oKd Hބ(DInI M_(5)6H/Y1 QRk,nXHʉ?>df&6^EJmt{CCc`0ʅv5x<\9Yc}106"״!֏9dl:' 1H"z'7QqɌ#KR./CVgQȬ\ `?d1yuM6Ƶ8ZX]8^pwQE &1frRKi$GݜЕh3'{;;~FK37ku<pdʎ+C RMzƏ7)nҀ lEGyl:̑IoBS%|ЕsTulebA}Aʹ10A{KʘӺtjdLI=r PRg_LbR Şl?␔)![Fo wi&k^CV(t@pW2{hxHGRn͉eCbxԉ6GQd27\ثdS=\Ff*0ۣOP5(rZߙxQZ>~GAeN-jY7Ҿn;n?ӹ"Px}/NW:݊&׾:x" ꭥу;R펔 c䛅љElmG§a= h¨BG_uYnZ쫭FYs U"zM&:Gnu.DX5Xn;}ԫ%XO?~2&Frjj8 yA*W I9/ub)Zl: s 85J>~iI3Yԕ;:#hELם[ROd^GA˩f~Y!En0~/A Km>^WYq"<цF*c:xw|͞w%ehRgd9̕v3v Dgh>>?3hYDkgC(ʹƒԕSԜ| 2Q94(?OGQ34 fccPopTYaW(>@tX4`LGٞpɄaŰl\[9c26U M6f,'C4i?W~psϠ?kAKrŵk@I|>^xs?\`,D̒5W^w DMXf_8<%|8_왉pP1Wlm߃f?4:́_Ԕv M;k:p_sj؎qw]$F}y ,b'N=o0, ~M YR46+!}@~ujctCP.Y(x׎z?70WXFܣo3z0c8RGg0 TU򄽻w"/4֏CQ`[{Ocn]+{{ N!33+5]qpj' r9FDȬ)~: 9Gmx2-?sraG"yvUpa;Ră A\& ?#n 0eed~oq嶭!!DzP^H)>oȑ.ļԶ=Hy7S-M ?8ycߧq|#5"2Б lm#UeΤVbM͘jAc7Z ]> 4gb s 2WRsKg6 's8qzTT[R[w)I95xWj #!nN+zPڔ KgTE,?{^RDݥ=Ru^zîc&D'i74SJߔ&HUG[crͦ<׿~4}څh;lpAZ%XZ;tQ?yk1+Ƴu6[ Dc4Ɯ*dB#!}e>samhG3c^8u9󼵕⸈߂UyB;f "Yi=D =4&|C3g]~WgjhSIXU"1A5Fr4{AljwTt6</N \Rta| i>T.Wo>>xϯY{緷m,J{gg}v~)]s!?wXGFl!7U|Cnfﳅ:.@mq%臔Ru?.:aBֺE#Gg'yXDuSWNJD)21ѵVagWPqȒ s?¶@g")s\T{f3go^w:^"{d#!φt},nyWFKv„X4|VB~,˘_&fjp/WԍwaO H 3I`u1ͤ+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_Wݚw)%mkBTxmkqrml܌m6L2Bx"$Ix ;#}zz7:[NI =Ӎ6~ۙVO2x5rAj z;^@+F??Q͑i@(n }1r!`!rA~v`?!ߵ?ܗ 1*rƽ!aO.r!߾{eC?>ɺ oސT@?$LC?}-}?uq6r!_쩩pswMCؿ:rsEq|eaڥarUqҒuőkE?.,@>73@<_g@ͷ{a_F?NqoG?1}+r雑agS7"?@ɧk@lJCtrqG.E?8q!r!`|C ߤɞIDAT8O]0 W^ZKOh܀м ̡px;Pq  k/D@Lgk#x=8N f#l8BX" #@w2AT jގsIK:t4$BX.Ǝv1o{!'=бf?6\:ޣ˕~ލIENDB`phpsysinfo-3.2.5/templates/idash/html.gif000066400000000000000000000001701265516077000204530ustar00rootroot00000000000000GIF89a&W4d!,%P1$u֫`z])jl483P;phpsysinfo-3.2.5/templates/idash/htmlwarn.gif000066400000000000000000000001701265516077000213430ustar00rootroot00000000000000GIF89a_u!,%P1$u֫`z])jl483P;phpsysinfo-3.2.5/templates/jstyle_blue.css000066400000000000000000000046611265516077000207740ustar00rootroot00000000000000/* $Id: jstyle_blue.css 518 2011-10-28 08:09:07Z namiltd $ */ a { text-decoration: none; color: #c03000; } a:hover { text-decoration: underline; }* { margin: 0; padding: 0; } wbr { display: inline-block; } html { font-size: 100%; height: 100%; background-color: #f3f1e9; color: #666666; } body { font-family: Verdana, "Bitstream Vera Sans"; font-size: .75em; position: relative; width: 940px; _width: 945px; /* ie6 */ min-height: 100%; overflow: auto; margin: 0 auto; padding: 20px 20px 0 20px; } h1 { margin: 0 10px; _margin: 0 15px 0 10px; /* ie6 */ padding: 10px 10px; text-align: center; color: #fff; font-family: Georgia, serif; font-weight: normal; font-size: 150%; line-height: 1.5em; color: #326ea1; } #select { text-align: right; } #select select { width: 100px; } #vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups { float: left; width: 451px; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; } h2 { font-family: Georgia, serif; font-weight: bold; font-size: 130%; padding: 3px 10px; text-transform: uppercase; line-height: 1.5em; color: #326ea1; border-bottom: 2px solid #326ea1; } table { width: 100%; } .plugin { float: left; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; } th, td, h3 { padding: 4px 10px 2px 10px; text-align: left; vertical-align: top; font-size: 100%; } .even { background: #EBE8DA; } #footer { clear: both; color: #5C5C5C; margin: 12px; padding: 13px 25px; line-height: 18px; font-size: 80%; text-align: center; } #memory, #filesystem { width: 915px; } .bar { background-color: #326edf; } .barwarn { background-color: #df326e; } p { padding: 4px 10px 2px 10px; line-height: 1.6; text-align: left; vertical-align: top; } #filesystemTable thead tr .header { cursor: pointer; } .right { text-align: right; padding-right: 20px; } #pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable { padding: 0px 30px; } .treeimg { display: table-cell; vertical-align: top; } .treespan { display: table-cell; vertical-align: middle; } .treespanbold { font-weight: bold; display: table-cell; vertical-align: middle; } phpsysinfo-3.2.5/templates/jstyle_green.css000066400000000000000000000045121265516077000211400ustar00rootroot00000000000000/* $Id: jstyle_green.css 518 2011-10-28 08:09:07Z namiltd $ */ * { margin:0; padding:0; } wbr { display: inline-block; } html { background-color:#f3f1e9; color:#666; font-size:100%; height:100%; } body { font-family:Verdana, "Bitstream Vera Sans"; font-size:.75em; margin:0 auto; min-height:100%; overflow:auto; padding:20px 20px 0; position:relative; width:940px; _width: 945px; /* ie6 */ } h1 { color:#693; font-family:Georgia, serif; font-size:150%; font-weight:400; line-height:1.5em; margin:0 10px; _margin: 0 15px 0 10px; /* ie6 */ padding:10px; text-align:center; } h2 { border-bottom:2px solid #693; color:#693; font-family:Georgia, serif; font-size:130%; font-weight:700; line-height:1.5em; padding:3px 10px; text-transform:uppercase; } p { line-height:1.6; padding:4px 10px 2px; text-align:left; vertical-align:top; } table { width:100%; } .plugin { float: left; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; } th,td,h3 { font-size:100%; padding:4px 10px 2px; text-align:left; vertical-align:top; } a { color:#c03000; text-decoration:none; } a:hover { text-decoration:underline; } /****/ .bar { background-color:#C1DC70; } .barwarn { background-color:#DC8B70; } .even { background:#EBE8DA; } .right { padding-right:20px; text-align:right; } /****/ #filesystemTable thead tr .header { cursor:pointer; } #pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable { padding:0 30px; } #vitals,#network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups { float:left; margin:10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding:1px; width:451px; } #memory,#filesystem { width:915px; } #select { text-align:right; } #select select { width:100px; } #footer { clear:both; color:#5C5C5C; font-size:80%; line-height:18px; margin:12px; padding:13px 25px; text-align:center; } .treeimg { display: table-cell; vertical-align: top; } .treespan { display: table-cell; vertical-align: middle; } .treespanbold { font-weight: bold; display: table-cell; vertical-align: middle; } phpsysinfo-3.2.5/templates/nextgen.css000066400000000000000000000052141265516077000201160ustar00rootroot00000000000000/* $Id: nextgen.css 518 2011-10-28 08:09:07Z namiltd $ */ a { text-decoration: none; color: #00A; } a:hover { text-decoration: underline; color: #7D9100; } * { margin: 0; padding: 0; } wbr { display: inline-block; } html { height: 100%; background: url("nextgen/nextgen_bg.png") repeat-x scroll center top #F3F1E9; } body { position: relative; width: 940px; _width: 945px; /* ie6 */ min-height: 100%; overflow: auto; margin: 0 auto; padding: 20px 20px 0 20px; font: 0.75em arial, tahoma, helvetica, sans-serif; color: #000; } div#container { margin: -20px -10px 0 -10px; padding: 116px 0 0 0; } h1 { position: absolute; top: 35px; left: 10px; margin: 0; padding: 0px 10px; font-size: 2em; font-weight: normal; color: #fff; } #select { position: absolute; top: 75px; color: #FFF; right: 30px; width: 370px; text-align: right; } #select select { width: 100px; } #vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups { float: left; width: 451px; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; border: 1px solid #354242; } h2 { padding: 5px 10px; font-family: "trebuchet ms"; font-size: 1.2em; font-weight: bold; letter-spacing: 0.0em; text-transform: uppercase; color: #C9DE55; /* #7D9100; */ background: #354242; } table { width: 100%; } .plugin { float: left; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; border: 1px solid #354242; } .dataTables_wrapper{ margin: 0 0 0 0 !important; border: 0px !important; } th, td, h3 { padding: 4px 10px 2px 10px; text-align: left; vertical-align: top; } h3 { font-size: 120%; } .even { background: #DDD; } #footer { color: #777777; clear: both; margin: 12px; padding: 13px 25px; line-height: 18px; text-align: right; } #memory, #filesystem { width: 915px; } .bar { background: #C1DC70 url("../gfx/html.gif"); } .barwarn { background: #DC8B70 url("../gfx/htmlwarn.gif"); } p { padding: 4px 10px 2px 10px; line-height: 1.6; text-align: left; vertical-align: top; } .right { text-align: right; padding-right: 20px; } #pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable { padding: 0px 30px; } .treeimg { display: table-cell; vertical-align: top; } .treespan { display: table-cell; vertical-align: middle; } .treespanbold { font-weight: bold; display: table-cell; vertical-align: middle; } phpsysinfo-3.2.5/templates/nextgen/000077500000000000000000000000001265516077000174025ustar00rootroot00000000000000phpsysinfo-3.2.5/templates/nextgen/nextgen_bg.png000066400000000000000000000730521265516077000222370ustar00rootroot00000000000000PNG  IHDRtӓsBIT|d pHYs  ~tEXtCreation Time11/10/10P{tEXtSoftwareMacromedia Fireworks 8hxAprVWx\SWFQQ*U樤*G*IEЈ(b<"JP]X@@]B"9ͩI$``Noރ Tfdvqy_~}x?SjS_Xl?^כ_)O W5*a՗M7|Y{J̤ףG~gupmL߃w\:.֮@ڛRKT޶zr:}DOeDÔ26OB6擌4qga73ϸ7x㾛^wЍk~KW媟kT7?T/j݆mۨ?VJOUPv PF8==}Dʷ["2Jnz3iBc/-?N4@$_?˅T|1ƎDZeY~sU;l0|L~L>˃A<]~nZq:L8WxQ \TKߜ;*]aq40P^aBx/U묽zp` a#ƿ=#5g!$l_lPW -氥2r--ϲ?c~?RsoCUTwtҁ|uࢶ6bCbŏƢֽo-?|*sQ}7~^@6࿺GCaC_?e/zHȟDCNh3=(zpYޔR Mh =̮*g>5>{?BmBHF?c^ L&nց'{?TH9n_9(?_zʙ*{H$Lmtv9F 'SC聄q ā6:~F|5x93:sZ88 mk* ͇Եx?ǽs>X#?RB8{>QP;ܠjRIr*jPNA:|fESEXHr#=ԽEQpɒ´%i %7顾sMtoY9!_,6_܃ܓ#6ng'lBX~U:̮9*w[ua/ӳkCҮuf>POV=t=k3OGAN!/SDԐOcކ9Oz\=Ȧz}>gNm`]_;MٲSwș=^d 3RNv)r(8G<ښ !{b/gU=+lGgͪ%{\ٮ3s}x=5M&3G{骢 퇩Dʡy#Fp:S!<Ǧϙ߾Gn1j?f# FcC(ct?gAU; U yD,=5s7V}YE;v=0s_{bxFHmkBF)3mkTSx][w8ft:s̙sٝxxhY/INHh:3ugu_lUHHYe7nS"UP.ǍhlLVhw3nN7;iouqŜ;#(5MZZ ~mnt#G3m=8vڹB6}ltcЛ;#Cmoo4N&t=ӝ>CMj}owFtrZRlw:tag5_~``&6S?Ѐ&Lv0)6?WAG׃hCmpu1`n} i߀&s@W"J>h'`DVnmJg=JtN U!%g2,ẽ] tϐ.Cֳ|sNzc\ NER+;Κ\a>l;ΫR56*;Pf03hܕ 5?pd@.! kN!Khm(gKqyzh%N?w?$cXq"ÛdZ 2p\*"ޑeF93(cIl7HH '+W)ȶpGbˆ> lOuFρ N"UfhR1qf::TyucrP];M=ٰ3)li=O`.8`k(<\ D:qsxL 07zE1阭0Id\dB%GfS Pg@WFqѱ!"!bͫTLaңTQC*waLz~U*ld{ubUs$wjYFH0 { 2/L+!L'_7@9V}{N6Ug A3h+iP>XMZ *J %JuZ5Ȧe\8NRֿc֯u+KrI]gj5&=853U.0bVҜqyyp jb-tDKTGW\ʌ9*0:hVX׍^ԉb(7,gt4eU9hayz T1|ms]ꤌ$gz,.걨^t>TPm= @xMky:Rq276֚ aC-l%L댙=bQE­rb޾c|}&hH9두 s(Xf@Ҍ|8T0rٙϳN^d\ 32hQ} phuNr%0Q ̡;P:=Ę-?+̥@ͽcg 0:Zt$n$ȒqHii8t4W11C75}Mtf Ǖch<sS{$K>FA[$IjżгS<ԵӐ@uak8 f [īv.iY6bѡ%QG2BSH.~3"ͷ&ݿ-|JDH!P=Woǘ Qes $9q|D i>E:\ CY0JJjl(/H%3擜$g+"G\rBdg'*Zd>LbzC+CmQ-9L-K&Y*Q%zeŷSQx%pɲdY-e9spxaF| XǞ[ 0Qiށd:ipc݈ ڨoVK7 n}){=Syg yG aUaҪҚGZ Bd!2=r~>iyLZ^)"zȥU$p;Ў#gg瓓r*"'᰷icDOKـlPl&|G[݇ &?L9?LZRZ35iR{V8NX })>SՊhu+|x94\ A$.,@*WG^v)UbaU\?R}ox"E⅕`?J<{ݿ-5xa M)KMR} Y҈/%#ЊsiO;^/ rL|ۂY1DGyI떇RnV{4vtnVJFUCQ.r[6mQ!%$P6G6i@YJaꖯ _4TN noFɆ Gb[J+t*"tkaH]SuۆO(\;{!?͞UTSyEWh@#hy`k执ڲҝgVVitnj_N^߶"0Nr?315Fs[<gx9GIҶ„M;l2D*$cdQ7DmIB1)G^%yYDqQo5"CiҎïKz獈r *LZq}s !eK h17l؈d!ܣsֿEX4Cvz<.P/}'3aw[+P_XZ bU3i g"Hw^B91,d?D{ίomU 5S{ @ CWV%mjwݏ:#'vSI>taHuUu-:8bm OHS^]wc/TKO.a50rxm"l "?N>p*SHmf6HU54xjb b=`L/(uiyD}GHr'twm Fd BvH#|ao ;!>sy./F Ʒ)<-D!6钧K.ysyZH>@%W\]ruw{իI̒K.ٺd;=g_D_O3W%{]ww{".҆xgԵK.=jֈ4K.y钧OWMV0_Wru%W/=WYyw5puWt%Ou^tWru%W^suWu%[^uWw%{O^EK..sr-n+y钧*O/w^^|iI<5:bVk1`3rlj6 =o! 2^֡셩Se* +鎩.Sbw*J8?'1[qŀ," pT4(^ ss_hltP[ǟ&'hC zг1OqJL} O3< XUA>FkHM^7ujLCj9\׷G g֓#H3GOO@\EFPdNl7d335>=O}ϥ:7'#a~aui-^&/S(T?,y;>)v7qǾT~22{z"nyRw| Kg@\#p*1 <5ٯ[+_ʨgԛQT)Y#P}їv8I7ROWc7#bU\+3ۯ4i>9 gܷ.)% G ْD!ON}IZ=4b+fqR4c@^=+X =?z}IyDijOY8"6>G{gJ3 O/8s%Y<ĿQZDP[ 5n_KW~%n@}c_4U,4җ㏏a8F+Ufߨ'|u6if{9>?+&s㰳!&qEdjca:&~D;Km0EzAF]ELgkX4.n;c f^i}5_p,=:J~]Q,)?Gw- )\ՈhʬYQ?̉)n"1_F1()aQ bQ+h(>>q'0d|*v8@,Dhouz4j|8ڴ5kI"a:=[;:K2+N$M1ےF@8:$ Z᙮9$ /%TF؆5 )\d~_PŴhgGG?>30^=j=ɷhKK`yLiA.9КdE1k3ٿh aO:h}"-pY'Hq[CoZ: 3*alY3z~1%SdNW%oϩuӳ#N4='\Kv/su AeJ`v+z]uٽ64]j̩|Z?pqcP?qJ+p=Kl GoK 1`sxV lbX¿xъ(y4A;UYZPeWՀʚ-*,qZ<'N@pimO|jI]܄'8ACvJٿ>e|8Z6#a{3ʭ镤 'K#PE42* _Idޖ ^)}\sIz yjo پ C?qrE0gmr,=,"ͭ=j$|DJ wc6RtU ?l/fV=( N;|e yeUKjL}3WcRffyP]]^%qý[\Gpv/W {<3=JE;ۤO7Yh/NY=̀*2y.EDY(87dMg!+Z/n3 =ZJtNʧRPBD풭t; /Cy߹(޷Ob37pܧ7pOyzwpY=1b{Sp,{8,=7;R)QxS6yR21re`by,Cnɡ]?菡nm:{ ߺ1itIʶQrncc\m~v>@{S+t|Qc1 MZ^as.=IkǮiuw@˜lv١I6t@3Cب>G럣z-l-S#`w[>vsC~з6PMrFGJ5G{nx8oP#h@ٗc5:`.A} 7إ۵ͱPt{xݍomxoe,m;.-li o][D9 ZEz޷"R {pGl$Z8iNzeݙgIo`th:b .IV ukߩcFi]m IhF%_MpêF{ɚzM&zȁ /y.@K[պa:!i}j$R_L4/@{`[=G@W7 ƞn24I]iX6ioC1փC3KNkV=^-ͷ` FH7EUUcMi4%š3Z_VK FwV؎g [U1i{bH:lhVuDz fӬj.ut,`5g&iĝurCº@ 5! 4ak/т݉<&Q6xIN"4I4yx? Vj4\ϭk}jݶ夛-*;-`3vkgڭovsgBTc3q4^h~Jlo߾)*/N\ϱov[iZ_ձaJΝ/:6O- 92b?Tlk%?_21B sY5>:>c=1Ow y^- ڶ,XzusM#גU]>H_yYv!ۉ_mi Rus]Xm_g)YY)m]y,m z1aaaxEߓGקo/Y\k6xjgH|yu.\aæM&wk#ϐ$?]Mo\Ⱦ,/ڥQ@~6s?)}, l gX #vQg Bٙ^uのuhm?}{].~}v_J;xogJY]޳@.)oqC?}>@Xߘ'-(W? źvƔOʙRv[K?[A}?-wmՑ}g\=c}M ggg DŽ-B^k_g?F? v0||؎=ǧHPgs/hؑI t~{n^}ZyD5XWvO)"c0vY Z|~_%/,p\ɹyΰZ/;/xs_9?Pܯ5ݻ\[y|č8gʱL{? 0 0 _k3>z_\S |<)b|7aaaxn.ta?l^Cvkؽ#~e)3<3^kdlc&jK+o"e<.ʞ`^(3zu l+6v<ï k7]/lc[`On}򚄫 G뎱zt^v2)?;Wmr5ocIz?Ozx{&!ez."ѯ 1Gg{+ҏlw<=}GݽFƨ^)zIpG K֜{{e G12ۭqiumf>.}~a? 0 0 [u+7Svq֭y΅ ?ނ}XwŶv?ߩDZۓ-q/?߳=<~#>Fk"qzrQo 9r,nY[;o:)@-`ק-7({߯S@µK9֠ɸ>:n3 _[_*mtcmC>qSL=<6;ǫsaaa{xˌ\ފpx?0׋#5zяc]x^l򼠕(f:~٣^lin59W~\;?vn6erUbS~v^U O7O(|;+SG4|?f*?rW~2oNٟS9~daևmH6mX[J~s.ym4ٶO|Bd/b5ɿyU? 0 0 0 0 0 0 0.P~*1@G\⟿KrKXs2(ߥ纎J8'>X@▼QQbqwx b)_K|v 1M6kee-2Ǜ59?K^E~9ϱQﱮYF8N?~;:=J<-tĒyNAgC \NXKs)'^Kg\~2}6}Գ)n]Or^j~"{p29w6/.z-v:+M{WJYZ굢`% Ҥl9ힶկ#OUz+U?;sd~vND7*.Y+v:ye;8}~|+ÑޅN9}{Bƞ#txխsXɿkSV/uJ=o G<ջL'L:D]6jfgLz/+ؽ[{rCMYq~[{yy czA;w9zszWHVax3 %mkBTx흍) q ĉ8D^>׻gI@XjjgiЃ`0 `0 ?ϟ|:seQ3|ӧO|:2|.};7eGFO6_Qv]T]^ˮg{>pjzkuo{yye?{-x/ D:3D&򈼹e^Hyi#/OGzϪ߯_~ :sMe#M3Y#=2 QЙ[\s=E8}E>GȩT ڲTg-}VfoSVwzV}./>~!?U1<#}=F[ ~QڋBN..+푹^edLo+[\-k dW(}6q$#?z6Bөi?L7!3O_Q}Пuo[=tkȋM!'}/Ƈdr2_Cﲨ: `0 :8o=+8-4}۞cĥXdq{bUq©ήm!ƶg*ΪU\z[GA=^+ru{LV U?)V>ғ)x|Yҁgi\yi^cUo*= !TY?rfgWsʽVn*VX#=Fϫ+[F~yH\L~[O҇h5ݵTow|Sfӟ+);F;:x )/OS yUo2e)Ve3'wgGg=J^`0  ľu kU,Ksؑ5nY,bXw{ w&3QהNQev ]ƷgcH˞i{A3I8hwduwUIWq8I>+@pQşGcZ\ƪUߝ]/:3d;ɫ:gB9R|GW~w2;fzt|+i5nΟgZY|<1NyŬ|E7k?z/k><=Α}N΅>uWydʬdz `0 *\?W8GY:Dgcg< 2+'W6qn؟{ru"wU쏘~c#T?+y{Q,,^qF/Xv8.֩g3}ȸOP ~n%hUG4(_sn|W}Tg&x^c,Fѭ+ <#+}/Uw8BRh_|33!mr\7U9m({ѝpvew[xG]߱?g;,nҽow8]וb?OV=Z_#ve?vN_WrYLo;1g9pV^G~>[_vNOS3 `0Q[ veO\k^8֔v<Zbz\Opbn$~}oz3ј mK vU]^iNWA#x딫jt q :E= z%օq)CcYEqyRG-+u (K\hP'*^ء^q=m=y|Kvūe\rȊ4={W1;=ݷxp;o@>ȘT\Ԏ+C=*ɫ|GJOCW]x1.ﵠ9_Eб Vq)v(ʑ}[GwǺ{-oSdו_˞׃2;iT&w*w:g׭SOsj%Z[~_˯d֮+w]7 `0]kIu+eL]ւoA^;=GR?v쯱;<y o$N1紈=:ߥPVu< <&3KyC/4r)i=*/|Ύ^]QNН1qGw>ù{ ?Kv:A}E:_n+{u=rq͓̳]>>d}+|L01`0 leg:׺񶊝`W,3O?]\9P~[kOWiGc~)-<w.3q}'vuw$Vnv(r52S;Wk_Kϔ8B/hEՠ'9w?K;x:x<|@cϽVyc@ۖSw8Bq]=2lBe6V}eR( VeZT4ade2ޒ+nYBTqSߔ<[&=f[|szP)G}{Zׅ3n7jpWwftEw[ǽ;`l? `0 `0 `{~i`oLy>uoi\qK|}7Svu9G쯿c¾#>,jow{ՆݲL=mW2u_8دjo?kD߱mw>#}E:OۡO;y`$jwymkBT6x횉m0]HI!)$FR?6c>>~sm+vuՑνYu8uN?WP>1JsWiV_uKEϸ/rˆ_gKW]ױEYcl,[TYHT}xL#}A GV7^}>iҞ-i;}LJX&TP3T#ߨgJl e'=?͘ona|7>?ǐU%;/mN/IfQփz{G}?v✽3X~j{zTAO^ʰ>?sy|G)PU{ ..T}6ڳ-F`p]k߅~b  О$wݓٱ|sCoA+q3lOx@(0a+? T,_7s\Ϙ^Bl1)C+k(FyN"8dPC_9>O0&l4Im+nwGrŰ)/tihf ѸX>E)<,6s45zb?J\<OM%O#(76:= ӋYAƒH Ls6MXBcX&ǘJte. 3.je(??Lj=%wZizFTx$kP8Em jAOހ>~؆B9 ֤8UKCvjbL Cy ;mj P. DkwUE€3ܨ8xUJs\ɟ+;}sFQ(KIXݛƨ 1 +KdX];Jģcx$D׷X`i @l̏rnm$^9΄zBGϞQ=nfkDe; <a>,⢞jk0B[p($Ǡp4 nq`XƓ vϵ.xHnorJ5Hu뇗 f a[Z:>36[g RL؍?( &w.7C#~B{] UW 71jk~ecGrD.=K@WDZM0倐0\xvqNZ ># BE )&yA}t?B Ym(WIpɱ |2+\2 )l8tl@Z.Be񅋍RSƃm>dIl'N adĢG3%#)?$s _5=YBR#-k"qGP-e"f%֩-ϓ378M9ϊ,_*n;HEBƱcl~ ˝[/sagIE2,z1t:kLș壋G){7ond{@rP>kwk׽ #kXfyEAB9uM4P=_lgW؇N#_nGpp ,ZUu6ȓVӰ0EK7*|]{75F\ԶzQz! uH>upT٣o3P)[^6` -d&*=%fY<^ط`_6|h3ء>2 Pq7ώ ,NsjF=B` 큳CiU)R鐏@LҮǧmb<2FHRqùFXi䎲OmGA}:*u f:@ʫRH.66jcGOpO- 6HKJU:Jǃv,3DZEƮqq7p?ȌK%ȧ$;?Qr6pP7`a^=R_)m>D3#£ _' Iɭu͋C-Rne㯄ssL<ȭ/R)|Lt_1Lk=rr 4/gEr~PnB[\g[{gYvRW' {Fem1{ wL;7&$xc0 n&u@5sCCձm8Heft x{q(aтa?Q%l4ςxmWI׆GC1kQ3iJh,KRO`ʲ4)%b6B8\pe;u)ko)#WSncRx{[sXv195_0Kՙ7>Tp5ٴl3S"؝LX睫[5m Q="u}pϘ*xbՉ#iM+@Z! Ϯ~jYݬ$?5mtu] %@݅:4h8ۃtu3; ΑO1A/r R*5i&j#Y2:$Z(ad@>'z L뇶6Z8|`6"X1_z' F-я?X^ A:?1;h/KVB' vOnFS ƤQ{=kh7MwXQp\v͓O/. N3HKRlK"q^Wh1wt h@3e6N|I;y?8t[[! $,ήLe"z%IކAkRl!3u8ځy?_W)AbCO!rza5Sn֗#<43y6"R߃CQ&>[# BHǽ{vekOTlq(UH͵h ݔ8,@tՂL{p/*L"d_y k,4 G̖bD>,.ok"D;|7[.DCA#ilϟI֬Dq]+eE _-- ڰc^Lq1~CCC9gNH8BkhJ#Z-`VoMa 9r$պZ-hkh ?C$ ^tď9d(8P݅]ڶw[wl;dn׆oKd Hބ(DInI M_(5)6H/Y1 QRk,nXHʉ?>df&6^EJmt{CCc`0ʅv5x<\9Yc}106"״!֏9dl:' 1H"z'7QqɌ#KR./CVgQȬ\ `?d1yuM6Ƶ8ZX]8^pwQE &1frRKi$GݜЕh3'{;;~FK37ku<pdʎ+C RMzƏ7)nҀ lEGyl:̑IoBS%|ЕsTulebA}Aʹ10A{KʘӺtjdLI=r PRg_LbR Şl?␔)![Fo wi&k^CV(t@pW2{hxHGRn͉eCbxԉ6GQd27\ثdS=\Ff*0ۣOP5(rZߙxQZ>~GAeN-jY7Ҿn;n?ӹ"Px}/NW:݊&׾:x" ꭥу;R펔 c䛅љElmG§a= h¨BG_uYnZ쫭FYs U"zM&:Gnu.DX5Xn;}ԫ%XO?~2&Frjj8 yA*W I9/ub)Zl: s 85J>~iI3Yԕ;:#hELם[ROd^GA˩f~Y!En0~/A Km>^WYq"<цF*c:xw|͞w%ehRgd9̕v3v Dgh>>?3hYDkgC(ʹƒԕSԜ| 2Q94(?OGQ34 fccPopTYaW(>@tX4`LGٞpɄaŰl\[9c26U M6f,'C4i?W~psϠ?kAKrŵk@I|>^xs?\`,D̒5W^w DMXf_8<%|8_왉pP1Wlm߃f?4:́_Ԕv M;k:p_sj؎qw]$F}y ,b'N=o0, ~M YR46+!}@~ujctCP.Y(x׎z?70WXFܣo3z0c8RGg0 TU򄽻w"/4֏CQ`[{Ocn]+{{ N!33+5]qpj' r9FDȬ)~: 9Gmx2-?sraG"yvUpa;Ră A\& ?#n 0eed~oq嶭!!DzP^H)>oȑ.ļԶ=Hy7S-M ?8ycߧq|#5"2Б lm#UeΤVbM͘jAc7Z ]> 4gb s 2WRsKg6 's8qzTT[R[w)I95xWj #!nN+zPڔ KgTE,?{^RDݥ=Ru^zîc&D'i74SJߔ&HUG[crͦ<׿~4}څh;lpAZ%XZ;tQ?yk1+Ƴu6[ Dc4Ɯ*dB#!}e>samhG3c^8u9󼵕⸈߂UyB;f "Yi=D =4&|C3g]~WgjhSIXU"1A5Fr4{AljwTt6</N \Rta| i>T.Wo>>xϯY{緷m,J{gg}v~)]s!?wXGFl!7U|Cnfﳅ:.@mq%臔Ru?.:aBֺE#Gg'yXDuSWNJD)21ѵVagWPqȒ s?¶@g")s\T{f3go^w:^"{d#!φt},nyWFKv„X4|VB~,˘_&fjp/WԍwaO H 3I`u1ͤ+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_Wݚw)%mkBTxmkqrml܌m6L2Bx"$Ix ;#}zz7:[NI =Ӎ6~ۙVO2x5rAj z;^@+F??Q͑i@(n }1r!`!rA~v`?!ߵ?ܗ 1*rƽ!aO.r!߾{eC?>ɺ oސT@?$LC?}-}?uq6r!_쩩pswMCؿ:rsEq|eaڥarUqҒuőkE?.,@>73@<_g@ͷ{a_F?NqoG?1}+r雑agS7"?@ɧk@lJCtrqG.E?8q!r!`|C ߤɞIDAT8R90 #~k>ӹ?!u@:%eޗH$=hCpH A2pDmrr=G?TLht#:yu@R#Z:إqt\) ˇ@P:ұ{x ~~%kIENDB`phpsysinfo-3.2.5/templates/phpsysinfo.css000066400000000000000000000051121265516077000206450ustar00rootroot00000000000000/* $Id: phpsysinfo.css 589 2012-07-01 09:58:44Z namiltd $ */ a { text-decoration: none; color: #c03000; } a:hover { text-decoration: underline; }* { margin: 0; padding: 0; } wbr { display: inline-block; } html { height: 100%; background: url("../gfx/html.gif"); } body { position: relative; width: 940px; _width: 945px; /* ie6 */ min-height: 100%; overflow: auto; margin: 0 auto; padding: 20px 20px 0 20px; font: 0.75em arial, tahoma, helvetica, sans-serif; color: #000; background: #fff url("../gfx/body.gif") repeat-y; _bac\kground: #fff; /* ie6 only */ } h1 { margin: 0 10px; _margin: 0 15px 0 10px; /* ie6 */ padding: 10px 10px; border-top: 1px solid #8A6E5A; border-bottom: 1px solid #8A6E5A; font-size: 2em; font-weight: normal; color: #fff; background: #8A6E5A; } #select { text-align: right; padding: 10px; } #select select { width: 100px; } #vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups { float: left; width: 451px; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; border: 1px solid #5A7E8A; } h2 { padding: 5px 10px; font-family: "trebuchet ms"; font-size: 1.2em; font-weight: bold; letter-spacing: 0.0em; text-transform: uppercase; color: #fff; background: #5A7E8A; } table { width: 100%; } .plugin { float: left; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; border: 1px solid #5A7E8A; } .dataTables_wrapper{ margin: 0 0 0 0 !important; border: 0px !important; } th, td, h3 { padding: 4px 10px 2px 10px; text-align: left; vertical-align: top; } h3 { font-size: 120%; } .even { background: #d6d6d6; } #footer { clear: both; color: #c9c9c9; margin: 12px; padding: 13px 25px; line-height: 18px; } #memory, #filesystem { width: 915px; } .bar { background: #C1DC70 url("../gfx/html.gif"); } .barwarn { background: #DC8B70 url("../gfx/htmlwarn.gif"); } p { padding: 4px 10px 2px 10px; line-height: 1.6; text-align: left; vertical-align: top; } .right { text-align: right; padding-right: 20px; } #pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable { padding: 0px 30px; } .treeimg { display: table-cell; vertical-align: top; } .treespan { display: table-cell; vertical-align: middle; } .treespanbold { font-weight: bold; display: table-cell; vertical-align: middle; } phpsysinfo-3.2.5/templates/phpsysinfo_bootstrap.css000066400000000000000000000043131265516077000227440ustar00rootroot00000000000000body { font-size: 13px; padding-top: 80px; } wbr { display: inline-block; } .progress { margin-bottom: 0; } .table td.rightCell, .table th.rightCell { text-align: right; } .percent { text-align: center; } .panel-primary { border: none; } .navbar { background-color: #3b87c8; border-color: #2d6da3; } .navbar-brand, .navbar-brand:hover { color: #fff; } .treegrid-span { display: table-cell; *float: left; } .treegrid-spanbold { font-weight: bold; display: table-cell; *float: left; } .treegrid-indent { width: 16px; height: 16px; display: table-cell; *float: left; } .treegrid-expander { width: 0px; height: 16px; display: table-cell; *float: left; cursor: pointer; } .normalicon { width: 16px; height: 16px; position: relative; top: 1px; display: table-cell; *float: left; font-style: normal; font-weight: normal; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .normalicon-right:before { content: "\25ba"; } .normalicon-down:before { content: "\25bc"; } /* IE6 fix */ * html .normalicon-right { background: url('../gfx/right_black.gif') no-repeat; height: 14px; } * html .normalicon-down { background: url('../gfx/down_black.gif') no-repeat; height: 14px; } /* IE7 fix */ *+html .normalicon-right { background: url('../gfx/right_black.gif') no-repeat; height: 14px; } *+html .normalicon-down { background: url('../gfx/down_black.gif') no-repeat; height: 14px; } table.sortable thead th { cursor: pointer; position: relative; top: 0; left: 0; } table.sortable thead th:hover { background: #f0f0f0; } table.borderless td,table.borderless th{ border: none!important; } .logo { cursor: pointer; } .errorbutton { cursor: pointer; } .template { cursor: pointer; } .language { cursor: pointer; } .panel-heading { background-color: #337ab7!important; border-color: #337ab7!important; } .reload { background-image: url("../gfx/reload.gif"); vertical-align: middle; float: right; cursor: pointer; border: 0px; width: 16px; height: 16px; }phpsysinfo-3.2.5/templates/phpsysinfo_bootstrap.css.new000066400000000000000000000054741265516077000235450ustar00rootroot00000000000000body { font-size: 13px; padding-top: 80px; color: #333; background-color: #fff; } wbr { display: inline-block; } .progress { margin-bottom: 0; } .table td.rightCell, .table th.rightCell { text-align: right; } .percent { text-align: center; } .panel-primary { background-color: #fff; border: none; } .navbar { background-color: #3b87c8; border-color: #2d6da3; } .navbar-brand, .navbar-brand:hover { color: #fff; } .treegrid-span { display: table-cell; *float: left; } .treegrid-spanbold { font-weight: bold; display: table-cell; *float: left; } .treegrid-indent { width: 16px; height: 16px; display: table-cell; *float: left; } .treegrid-expander { width: 0px; height: 16px; display: table-cell; *float: left; cursor: pointer; } .normalicon { width: 16px; height: 16px; position: relative; top: 1px; display: table-cell; *float: left; font-style: normal; font-weight: normal; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .normalicon-right:before { content: "\25ba"; } .normalicon-down:before { content: "\25bc"; } /* IE6 fix */ * html .normalicon-right { background: url('../gfx/right_black.gif') no-repeat; height: 14px; } * html .normalicon-down { background: url('../gfx/down_black.gif') no-repeat; height: 14px; } /* IE7 fix */ *+html .normalicon-right { background: url('../gfx/right_black.gif') no-repeat; height: 14px; } *+html .normalicon-down { background: url('../gfx/down_black.gif') no-repeat; height: 14px; } table.sortable thead th { cursor: pointer; position: relative; top: 0; left: 0; } table.sortable thead th:hover { background: #f0f0f0; } .table-hover > tbody > tr:hover { background-color: #f5f5f5; } table.borderless td,table.borderless th { border: none!important; } .table .table { background-color: #fff; } .logo { cursor: pointer; } .errorbutton { cursor: pointer; } .select { color: #333; } .template { cursor: pointer; color: #333; } .language { cursor: pointer; color: #333; } .panel-heading { background-color: #337ab7!important; border-color: #337ab7!important; } .progress { background-color: #f5f5f5; } .progress-bar-success { background-color: #5cb85c; } .progress-bar-info { background-color: #5bc0de; } .progress-bar-warning { background-color: #f0ad4e; } .progress-bar-danger { background-color: #d9534f; } .modal-content { background-color: #fff; } .list-group-item { background-color: #fff; } .reload { background-image: url("../gfx/reload.gif"); vertical-align: middle; float: right; cursor: pointer; border: 0px; width: 16px; height: 16px; } phpsysinfo-3.2.5/templates/plugin/000077500000000000000000000000001265516077000172305ustar00rootroot00000000000000phpsysinfo-3.2.5/templates/plugin/jquery.dataTables.css000066400000000000000000000005521265516077000233260ustar00rootroot00000000000000/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * DataTables sorting */ .sorting_asc { background: url('../../gfx/sort_asc.gif') no-repeat center right; } .sorting_desc { background: url('../../gfx/sort_desc.gif') no-repeat center right; } .sorting { background: url('../../gfx/sort_both.gif') no-repeat center right; }phpsysinfo-3.2.5/templates/plugin/jquery.jgrowl.css000066400000000000000000000100201265516077000225550ustar00rootroot00000000000000 div.jGrowl { padding: 10px; z-index: 9999; color: #fff; font-size: 12px; } /** Special IE6 Style Positioning **/ div.ie6 { position: absolute; } div.ie6.top-right { right: auto; bottom: auto; left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); } div.ie6.top-left { left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); } div.ie6.bottom-right { left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); } div.ie6.bottom-left { left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); } div.ie6.center { left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); width: 100%; } /** Normal Style Positions **/ div.jGrowl { position: absolute; } body > div.jGrowl { position: fixed; } div.jGrowl.top-left { left: 0px; top: 0px; } div.jGrowl.top-right { right: 0px; top: 0px; } div.jGrowl.bottom-left { left: 0px; bottom: 0px; } div.jGrowl.bottom-right { right: 0px; bottom: 0px; } div.jGrowl.center { top: 0px; width: 50%; left: 25%; } /** Cross Browser Styling **/ div.center div.jGrowl-notification, div.center div.jGrowl-closer { margin-left: auto; margin-right: auto; } div.jGrowl div.jGrowl-notification, div.jGrowl div.jGrowl-closer { background-color: #000; opacity: .85; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85); zoom: 1; width: 235px; padding: 10px; margin-top: 5px; margin-bottom: 5px; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 1em; text-align: left; display: none; -moz-border-radius: 5px; -webkit-border-radius: 5px; } div.jGrowl div.jGrowl-notification { min-height: 40px; } div.jGrowl div.jGrowl-notification div.jGrowl-header { font-weight: bold; font-size: .85em; } div.jGrowl div.jGrowl-notification div.jGrowl-close { z-index: 99; float: right; font-weight: bold; font-size: 1em; cursor: pointer; } div.jGrowl div.jGrowl-closer { padding-top: 4px; padding-bottom: 4px; cursor: pointer; font-size: .9em; font-weight: bold; text-align: center; } /** Hide jGrowl when printing **/ @media print { div.jGrowl { display: none; } }phpsysinfo-3.2.5/templates/plugin/jquery.treeTable.css000066400000000000000000000011311265516077000231630ustar00rootroot00000000000000/* Copyright: Paul Hanlon Released under the MIT/BSD licence which means you can do anything you want with it, as long as you keep this copyright notice on the page */ .collapsed { display: none; } .tablemain { border-collapse: collapse; padding: 0px; text-align: left; } .tablemain td { margin-left: 3px; } .tree td { padding: 0px 2px 0px 0px; cursor: pointer; } .adeimg, .ttimage, .parimg, .preimg { border: none; margin: 0px; padding: 0px; vertical-align: bottom; width: 16px; height: 16px; } .adeimg, .parimg { cursor: pointer; } phpsysinfo-3.2.5/templates/plugin/nyroModal.full.css000066400000000000000000000055111265516077000226510ustar00rootroot00000000000000div#nyroModalFull { font-size: 12px; color: #777; } div#nyroModalFull div#nyroModalLoading { border: 4px solid #777; width: 150px; height: 150px; text-indent: -9999em; background: #fff url(../../gfx/ajaxLoader.gif) no-repeat; background-position: center; } div#nyroModalFull div#nyroModalLoading.error { border: 4px solid #f66; line-height: 20px; padding: 20px; width: 300px; height: 100px; text-indent: 0; background: #fff; } div#nyroModalFull div#nyroModalWrapper { background: #fff; border: 4px solid #777; } div#nyroModalFull div#nyroModalWrapper a#closeBut { position: absolute; display: block; top: -13px; right: -13px; width: 12px; height: 12px; text-indent: -9999em; background: url(../../gfx/close.gif) no-repeat; outline: 0; } div#nyroModalFull div#nyroModalWrapper h1#nyroModalTitle { margin: 0; padding: 0; position: absolute; top: -22px; left: 5px; font-size: 12px; color: #ddd; } div#nyroModalFull div#nyroModalWrapper div#nyroModalContent { overflow: auto; } div#nyroModalFull div#nyroModalWrapper div.wrapper div#nyroModalContent { padding: 5px; } div#nyroModalFull div#nyroModalWrapper div.wrapperImg div#nyroModalContent { position: relative; overflow: hidden; text-align: center; } div#nyroModalFull div#nyroModalWrapper div.wrapperImg div#nyroModalContent img { vertical-align: baseline; } div#nyroModalFull div#nyroModalWrapper div.wrapperImg div#nyroModalContent div { position: absolute; bottom: 0; left: 0; background: black; padding: 10px; margin: 10px; border: 1px white dotted; overflow: hidden; opacity: 0.2; filter: alpha(opacity=20); } div#nyroModalFull div#nyroModalWrapper div.wrapperImg div#nyroModalContent div:hover { opacity: 0.5; filter: alpha(opacity=50); cursor: help; } div#nyroModalFull div#nyroModalWrapper a.nyroModalPrev, div#nyroModalFull div#nyroModalWrapper a.nyroModalNext { z-index: 105; outline: none; position: absolute; top: 0; height: 100%; width: 40%; cursor: pointer; text-indent: -9999em; background: left 20% no-repeat; background-image: url(data:image/gif;base64,AAAA); /* Trick IE6 */ } div#nyroModalFull div#nyroModalWrapper div.wrapperSwf a.nyroModalPrev, div#nyroModalFull div#nyroModalWrapper div.wrapperSwf a.nyroModalNext, div#nyroModalFull div#nyroModalWrapper div.wrapper a.nyroModalPrev, div#nyroModalFull div#nyroModalWrapper div.wrapper a.nyroModalNext { height: 60%; width: 20%; } div#nyroModalFull div#nyroModalWrapper div#nyroModalContent a.nyroModalPrev { left: 0; } div#nyroModalFull div#nyroModalWrapper div#nyroModalContent a.nyroModalPrev:hover { background-image: url(../../gfx/prev.gif); } div#nyroModalFull div#nyroModalWrapper div#nyroModalContent a.nyroModalNext { right: 0; background-position: right 20%; } div#nyroModalFull div#nyroModalWrapper div#nyroModalContent a.nyroModalNext:hover { background-image: url(../../gfx/next.gif); }phpsysinfo-3.2.5/templates/two.css000066400000000000000000000043221265516077000172560ustar00rootroot00000000000000/* $Id: two.css 518 2011-10-28 08:09:07Z namiltd $ */ a { text-decoration: none; color: #c03000; } a:hover { text-decoration: underline; }* { margin: 0; padding: 0; } wbr { display: inline-block; } html { font-size: 100%; height: 100%; color: #2B2828; background: url("two/gradient.png") repeat-x #EEF2FE; } body { font-family: Verdana, "Bitstream Vera Sans"; font-size: .75em; position: relative; width: 940px; _width: 945px; /* ie6 */ min-height: 100%; overflow: auto; margin: 0 auto; padding: 20px 20px 0 20px; } h1 { margin: 0 10px; _margin: 0 15px 0 10px; /* ie6 */ padding: 10px 10px; text-align: center; color: #fff; font-weight: normal; font-size: 170%; line-height: 1.5em; } #select { color: #fff; text-align: right; margin-bottom: 45px; } #select select { width: 100px; } h2 { font-weight: bold; font-size: 130%; line-height: 1.5em; color: #8B272A; border-bottom: 2px solid #8B272A; } table { width: 100%; } .plugin { float: left; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; } th, td, h3 { padding: 4px 10px 2px 10px; text-align: left; vertical-align: top; font-size: 100%; } #footer { clear: both; color: #5C5C5C; margin: 12px; padding: 13px 25px; line-height: 18px; font-size: 80%; text-align: center; } .bar { background-color: #8B272A; } .barwarn { background-color: #88278B; } #vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups { float: left; width: 451px; margin: 10px 0 0 10px; _margin: 10px 5px 0 5px; /* ie6 */ padding: 1px; } #memory, #filesystem { width: 915px; } #filesystemTable thead tr .header { cursor: pointer; } .right { text-align: right; padding-right: 20px; } #pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable { padding: 0px 30px; } .treeimg { display: table-cell; vertical-align: top; } .treespan { display: table-cell; vertical-align: middle; } .treespanbold { font-weight: bold; display: table-cell; vertical-align: middle; } phpsysinfo-3.2.5/templates/two/000077500000000000000000000000001265516077000165435ustar00rootroot00000000000000phpsysinfo-3.2.5/templates/two/gradient.png000066400000000000000000000010151265516077000210430ustar00rootroot00000000000000PNG  IHDRanq5sBITO pHYs : :dW tEXtSoftwarewww.inkscape.org<PLTE+((/''dhkn q!t"x #{!%~"&#'%(&)'*(,)-+.,/-0.20314253658ˏCTIDATx @D 5Mm$I$I$I$I$I{$@ V0@ @ .PD0K`)L+@ Ni7@ @ V@[=%i%&@ M`@ ح`@ i@ s V@[@@ i7M8,j7|IENDB`phpsysinfo-3.2.5/templates/vendor/000077500000000000000000000000001265516077000172275ustar00rootroot00000000000000phpsysinfo-3.2.5/templates/vendor/bootstrap.min.css000066400000000000000000003546541265516077000225610ustar00rootroot00000000000000/*! * Bootstrap v3.3.6 (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} /*# sourceMappingURL=bootstrap.min.css.map */phpsysinfo-3.2.5/tools/000077500000000000000000000000001265516077000150745ustar00rootroot00000000000000phpsysinfo-3.2.5/tools/MakeRelease.sh000077500000000000000000000011771265516077000176170ustar00rootroot00000000000000#!/bin/sh -x if [ $# -ne 1 ] then echo "Usage : ./tools/MakeRelease " exit fi sed -i "s/PSI_VERSION = '.*'/PSI_VERSION = '$1'/g" includes/class.CommonFunctions.inc.php ARCHIVE_NAME="phpsysinfo-$1.tar.gz" #copy to temp dir rm -rf /tmp/phpsysinfo mkdir /tmp/phpsysinfo cp -R . /tmp/phpsysinfo cd /tmp/phpsysinfo # remove the svn directories find . -type d -name .svn -exec rm -fr {} \; #or find . -iname ".svn" -print0 | xargs -0 rm -r #remove some dirs rm -rf tools sample #remove phpsysinfo.ini rm -rf phpsysinfo.ini .cvsignore .project #create archive cd .. tar -czf $ARCHIVE_NAME phpsysinfo md5sum $ARCHIVE_NAME phpsysinfo-3.2.5/tools/README000066400000000000000000000004501265516077000157530ustar00rootroot00000000000000check.sh - Script for checking *.php files and reformat them MakeRelease.sh - Cleanup the code a bit for a release phpsysinfo.ini - Configuration file for generating documentation with phpDocumentor lint.bat - run php lint on every php file to check for syntax (windows util) phpsysinfo-3.2.5/tools/aptana/000077500000000000000000000000001265516077000163405ustar00rootroot00000000000000phpsysinfo-3.2.5/tools/aptana/js.xml000066400000000000000000000103731265516077000175020ustar00rootroot00000000000000 phpsysinfo-3.2.5/tools/aptana/php.xml000066400000000000000000000222411265516077000176520ustar00rootroot00000000000000 phpsysinfo-3.2.5/tools/check.sh000077500000000000000000000005101265516077000165040ustar00rootroot00000000000000#!/bin/bash FILES=`find ../ \( \( -iwholename '*tool*' -o -iwholename '*lang*' \) -prune -o -iname '*.php' \) -a -type f` for entry in ${FILES}; do php -l ${entry} if [ $? -ne 0 ] then exit; fi done for entry in ${FILES}; do echo "running phpcs --standard=PEAR on ${entry}" phpcs --standard=PEAR ${entry} done phpsysinfo-3.2.5/tools/checkdistro.php000066400000000000000000000167031265516077000201160ustar00rootroot00000000000000"; echo ""; echo " "; echo ""; define('APP_ROOT', dirname(__FILE__).'/..'); require_once APP_ROOT.'/includes/interface/class.PSI_Interface_OS.inc.php'; require_once APP_ROOT.'/includes/os/class.OS.inc.php'; require_once APP_ROOT.'/includes/to/class.System.inc.php'; require_once APP_ROOT.'/includes/os/class.Linux.inc.php'; define('PSI_USE_VHOST', false); define('PSI_DEBUG', false); define('PSI_LOAD_BAR', false); $log_file = ""; $lsb = true; //enable detection lsb_release -a $lsbfile = true; //enable detection /etc/lsb-release class PSI_Error { public static function singleton() { } } class Parser { public static function lspci() { return array(); } public static function df() { return array(); } } class CommonFunctions { private static function _parse_log_file($string) { global $log_file; if (file_exists($log_file)) { $contents = @file_get_contents($log_file); $contents = preg_replace("/\r\n/", "\n", $contents); if ($contents && preg_match("/^\-\-\-\-\-\-\-\-\-\-".preg_quote($string, '/')."\-\-\-\-\-\-\-\-\-\-\n/m", $contents, $matches, PREG_OFFSET_CAPTURE)) { $findIndex = $matches[0][1]; if (preg_match("/\n/m", $contents, $matches, PREG_OFFSET_CAPTURE, $findIndex)) { $startIndex = $matches[0][1]+1; if (preg_match("/^\-\-\-\-\-\-\-\-\-\-/m", $contents, $matches, PREG_OFFSET_CAPTURE, $startIndex)) { $stopIndex = $matches[0][1]; return substr($contents, $startIndex, $stopIndex-$startIndex); } else { return substr($contents, $startIndex); } } } } return false; } public static function rfts($strFileName, &$strRet, $intLines = 0, $intBytes = 4096, $booErrorRep = true) { global $lsb; global $lsbfile; if ($lsb || $lsbfile || ($strFileName != "/etc/lsb-release")) { $strRet=self::_parse_log_file($strFileName); if ($strRet && ($intLines == 1) && (strpos($strRet, "\n") !== false)) { $strRet=trim(substr($strRet, 0, strpos($strRet, "\n"))); } return $strRet; } else { return false; } } public static function executeProgram($strProgramname, $strArgs, &$strBuffer, $booErrorRep = true) { global $lsb; $strBuffer = ''; if ($strProgramname=='lsb_release') { return $lsb && ($strBuffer = self::_parse_log_file('lsb_release -a')); } else { return $strBuffer = self::_parse_log_file($strProgramname); } } public static function fileexists($strFileName) { global $log_file; global $lsb; global $lsbfile; if (file_exists($log_file) && ($lsb || $lsbfile || ($strFileName != "/etc/lsb-release")) && ($contents = @file_get_contents($log_file)) && preg_match("/^\-\-\-\-\-\-\-\-\-\-".preg_quote($strFileName, '/')."\-\-\-\-\-\-\-\-\-\-\r?\n/m", $contents)) { return true; } return false; } public static function gdc() { return array(); } } class _Linux extends Linux { public function build() { parent::_distro(); } } $system = new _Linux(); if ($handle = opendir(APP_ROOT.'/sample/distrotest')) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; while (false !== ($entry = readdir($handle))) { if (($entry!=".")&&($entry!="..")) { if ($shandle = opendir(APP_ROOT."/sample/distrotest/$entry")) { while (false !== ($sentry = readdir($shandle))) { if (($sentry!=".")&&($sentry!="..")) { $log_file=APP_ROOT.'/sample/distrotest/'.$entry.'/'.$sentry; echo ""; echo ""; $lsb = true; $lsbfile = true; $sys=$system->getSys(); $distro=$sys->getDistribution(); $icon=$sys->getDistributionIcon(); if ($icon == '') $icon="unknown.png"; if ($icon != $entry.'.png') echo ""; if ($icon != $entry.'.png') echo ""; $sys->setDistribution(""); $sys->setDistributionIcon(""); $lsb = false; $lsbfile = true; $sys=$system->getSys(); $distro=$sys->getDistribution(); $icon=$sys->getDistributionIcon(); if ($icon == '') $icon="unknown.png"; if ($icon != $entry.'.png') echo ""; if ($icon != $entry.'.png') echo ""; $sys->setDistribution(""); $sys->setDistributionIcon(""); $lsb = false; $lsbfile = false; $sys=$system->getSys(); $distro=$sys->getDistribution(); $icon=$sys->getDistributionIcon(); if ($icon == '') $icon="unknown.png"; if ($icon != $entry.'.png') echo ""; if ($icon != $entry.'.png') echo ""; $sys->setDistribution(""); $sys->setDistributionIcon(""); echo ""; } } closedir($shandle); } } } echo "
    Distrotest sampleDistro NameDistro IconDistro Name (no lsb_release)Distro Icon (no lsb_release)Distro Name (no lsb_release and no /etc/lsb-release)Distro Icon (no lsb_release and no /etc/lsb-release)
    ".$entry.'/'.$sentry.""; else echo ""; echo $distro.""; else echo ""; echo ""; echo $icon.""; else echo ""; echo $distro.""; else echo ""; echo ""; echo $icon.""; else echo ""; echo $distro.""; else echo ""; echo ""; echo $icon."
    "; closedir($handle); } echo ""; phpsysinfo-3.2.5/tools/distrotest.php000066400000000000000000000027201265516077000200120ustar00rootroot00000000000000/dev/null", "r"); if (is_resource($fp)) { $contents=""; $start=true; while (!feof($fp)) { $contents=fgets($fp, 4096); if ($start && (strlen($contents)>0)) { echo "----------lsb_release -a----------\n"; $start=false; } echo $contents; } if ((strlen($contents)>0)&&(substr($contents, -1)!="\n")) { echo "\n"; } pclose($fp); } foreach ($filemaskarray as $filemask) { foreach (glob($filemask) as $filename) { echo "----------".$filename."----------\n"; echo $contents=file_get_contents($filename); if ((strlen($contents)>0)&&(substr($contents, -1)!="\n")) { echo "\n"; } } } phpsysinfo-3.2.5/tools/lint.bat000066400000000000000000000005141265516077000165320ustar00rootroot00000000000000@echo off echo. echo Starting SVN Stat + PHP Lint echo ============================ svn stat |findstr /I /R "\.php$ \.phtml$" >lint.txt for /F "tokens=2 delims= " %%i in (lint.txt) do q:\php53\php.exe -l %%i |findstr /I /B /V "No syntax errors" del lint.txt echo. echo ============================ echo Finished SVN Stat + PHP Lint phpsysinfo-3.2.5/tools/phpsysinfo.ini000066400000000000000000000026641265516077000200070ustar00rootroot00000000000000pear=on filename=Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\plugins\quotas\class.quotas.inc.php,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\xml.php,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\config.php,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\plugins\ps\class.ps.inc.php,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\index.php,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\plugins\psstatus\class.psstatus.inc.php,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\plugins\mdstatus\class.mdstatus.inc.php,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\js.php output=HTML:Smarty:PHP defaultpackagename=__default__ parseprivate=on hidden=off directory=Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\includes\plugin,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\includes\mb,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\includes\ups,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\includes\interface,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\includes\output,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\language,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\includes\xml,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\includes\error,Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\includes\os target=Q:\Documents\Aptana Studio\workspace\phpsysinfo-dev\phpDoc defaultcategoryname=__default__ title=phpSysInfo API Documentation sourcecode=on javadocdesc=off phpsysinfo-3.2.5/tools/speedfan/000077500000000000000000000000001265516077000166615ustar00rootroot00000000000000phpsysinfo-3.2.5/tools/speedfan/SpeedFanGet_bin.zip000066400000000000000000000051311265516077000223620ustar00rootroot00000000000000PK:Hʁ SpeedFanGet.exeX}lS61u66ByHDB)|88/!Y (gcOO<:m>zL*-@Tɉv lNCy; W9{0YBӄ ɿn ^-$nR5Zvc2]v#08;z\yArbҤ#~1ow藬P#J @AǸUJ3N@,3C"$?Om.{ K9Z v9LylDydT(O|>>cϡ=lƪf|/=խ]|H;SR蟓ԕ&)KM:XT1I ]f,#$R gQPQo_KC'%0әiHͷީƚא\ 5 *gE|x'OUv5p7a NlY}I"tp3V9N1Ŋ͊`TߒQoO%2Dm> .K2kTh&P4_`"C#|Pg &cRB1I1HL}A^c}<"`/1V'A O li ꤽ288*PD-PTU4F.? 1V*Xq#1 XlʩI m|혢Y $Dc> cOár^*1Ag^HX̼;FUÚz\s}J#%~RH,xy:ZD: #q=(#%stQdS){D MxxReԬVptaXYg,vji꯰;ؙo YJԞؙuV~@ɇ/Qp bg$1&/C"hEMԸI6._RSV.ؽ%5$Ma?lI[EnVRiq7ovaBMK)KX(˸g!jF!C ,}9jb= +FKIU]'? g2\HO_L j.!Of'y5LH`Tg6U{o$wsÝ@MHbY*"xS+=3zC&ۓN Y;]kUjФWw+@ҁw`2Dp^/WpQ~^5WxMk v97>:|GˠCx 1}0ҵr%&Wϋ7q 0ภ qukE[z>1 Dv(2cy<:oɣh42BGeF$ ȎEnfd#7iG%6pp& O#'C lV.]}pb;{ ۨ?sbLa=(E18fXll NꐷlČcČ_*GR⦶21K`,5*@tEs8n /EMj\SjxO4b8H4kbo*1Ev47>diz/#+g蜒L^  )]95,>c]Dr &kpCͥ^:Rb*^ mcۉzoPyiHSMI+5aqX֥]X-nM HkkaApx^$##S9G9dəoȑ9.GN#99y,G#y$GX$+| Q bE r#ZW?q~SZzs}\?mmG:83%~6vs))r,n-^sgvSay×gx97u3vhʚ^ؽbyqkUPVUXl 0`Nm誼_ucjj=΍ ֆ3N;`> zhoDQ^(uyNWn/e2pSEN<\-fƷyޯYWToٚ- |`=]AV,^tVuNfJ ԾX8o 6[7']n;#;Al y^8 t4uq5#q+*"[(Rۏyx G~]n .`xPzAMjmh/۲mZUxߣ^.^ymPK:Hʁ  SpeedFanGet.exePK= phpsysinfo-3.2.5/tools/speedfan/SpeedFanGet_src.zip000066400000000000000000000023321265516077000224010ustar00rootroot00000000000000PK:H@- Sn compile.cmdsHMWOK*H,PHK/I̳V p PJON.76R.HMMqKsO-K.(PGJH*.),.H,-RPKl:H4 SpeedFanGet.cppVo:Ĵ5P6=McV*E:MU8-#)&wRբJ >|>׎ars)0+R1t[LZ[n$LsHd׊Tf(iT[ES/mǕƪt5\VEvrOƂ?L0a1_E2{f7`$.q4p-gBqrxol(TkuZ ڸhnC2aapFXr(,)aJM.L f!<1_syd@1QSx"1}ׂ7@5U7OѮ >+qN|XiSfGH=3 +"D!dV̇c_bv\4Cb4E@H X5?y)Syf% XХ6fr%{p)&WnW'=a 1N˵b(JDq t08'b >@c>;5sq}9,@.e🊼 I;һ@[wd=/_D+#V7j@ӋbliՒWN9Dd.sUD+Ԉ U * @copyright 2009 phpSysInfo * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @version SVN: $Id: xml.php 614 2012-07-28 09:02:59Z jacky672 $ * @link http://phpsysinfo.sourceforge.net */ /** * application root path * * @var string */ define('APP_ROOT', dirname(__FILE__)); /** * internal xml or external * external is needed when running in static mode * * @var boolean */ define('PSI_INTERNAL_XML', true); require_once APP_ROOT.'/includes/autoloader.inc.php'; // check what xml part should be generated if (isset($_GET['plugin'])) { $plugin = basename(htmlspecialchars($_GET['plugin'])); if ($plugin == "complete") { $output = new WebpageXML(true, null); } elseif ($plugin != "") { $output = new WebpageXML(false, $plugin); } else { unset($output); } } else { $output = new WebpageXML(false, null); } // if $output is correct generate output in proper type if (isset($output) && is_object($output)) { if (isset($_GET['json']) || isset($_GET['jsonp'])) { if (version_compare("5.2", PHP_VERSION, ">")) { echo ''; } else { if (defined('PSI_JSON_ISSUE') && (PSI_JSON_ISSUE)) { $json = json_encode(simplexml_load_string(str_replace(">", ">\n", $output->getXMLString()))); // solving json_encode issue } else { $json = json_encode(simplexml_load_string($output->getXMLString())); } echo isset($_GET['jsonp']) ? (!preg_match('/[^A-Za-z0-9_\?]/', $_GET['callback'])?$_GET['callback']:'') . '('.$json.')' : $json; } } else { $output->run(); } }