Subversion Repositories ALCASAR

Compare Revisions

No changes between revisions

Ignore whitespace Rev 3178 → Rev 3179

/gpl-warning.fr.txt
File deleted
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/readme.txt
File deleted
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/TODO
File deleted
Property changes:
Deleted: svn:keywords
-Id Author Date
\ No newline at end of property
/CHANGELOG
File deleted
Property changes:
Deleted: svn:keywords
-Id Author Date
\ No newline at end of property
/gpl-warning.txt
File deleted
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/CHANGELOG.md
0,0 → 1,972
# ALCASAR CHANGELOG
## 3.6.1 (SVN revision: XXXX)
* NEWS
* CHANGES
* kernel 5.15.126
* Let's Encrypt ACME V3.0.7 - Adapt alcasar script for ECC (Elliptic Curve Cryptography) certificates
* Master branch of ipt_NETFLOW (06/2023)
* nfdump 1.7.3
* intercept.php : improve interface for small devices (mobile phones)
* Remove clamav
* ACC
* Add organism name in menu frame to distinguish several alcasar
* Update jquery-ui (1.13.2), phpsysinfo 3.4.3
* BUGS
* gammu systemd unit : it should wait mysqld to start
* Update NTP option in DHCP response in coova conf file (alcasar-conf.sh)
* Retrieve custom firewall rules & custom filtering services when updating (Thanks to Nicolas REYNAUD)
* Redirection to HTTPS when needed (intercept & status pages)
* SECURITY
* Fix a CSRF+RCE vulnerability in activity.php
* Fix two RCE vulnerabilities in email_registration_back.php & still_connected.php
* WEB
* New infrastructure (DL380 Gen 10 + proxmox 8 + VM-Mageia 9)
* WebSVN 2.8.0 --> 2.8.3
 
# 3.6.0 (SVN revision : 3108)
* NEWS
* Mageia 8 - Kernel 5.15.82
* CHANGES
* Add SHA256 in PAP protocol (coovachilli). Thanks to Paul BAESKENS (aka StaringCat)
* Remove "dnsmasq" resolver used with whitelist filtering system (we now use ipset capabilities of "unbound")
* Let's Encrypt ACME V3.0.5
* Manage the update between versions of Mageia
* ACC
* phpsysinfo 3.4.2 - Vnstat-frontend fork by "tomangert"
* BUGS
* Replace deprecated php functions (php7 --> php8)
* Access the network between ALCASAR and the Router in bypass mode
* WEB
* WebSVN 2.7.0 --> 2.8
 
## 3.5.5 (SVN revision : 3071)
* NEWS
* mail registration service : Thanks to K@M3L & T3RRY (LaPlateforme.io) and to joss_p
* CHANGES
* Add a third RPM repository (http://ftp.free.fr)
* Improve firewall local rules & firewall rules in bypass mode
* Add SMTP to the list of openned ports (for filtered users)
* Adapt user page when HTTPS is enabled with an official certificate (Thanks to Alexandre VEZIN)
* ACC
* Avoid password preload text in password forms
* Improve "let's encrypt" & "Internet connexion" forms
* Add an overlay with spinner on all submit forms (Thanks to Alexandre VEZIN)
* SSH : admin can secure it on INTIF & EXTIF : change the default port & set en "admin_from" IP (Thanks to Alexandre VEZIN)
* Admin can allow/forbid access to the LAN located between ALCASAR and the broadband router (Thanks to Alexandre VEZIN)
* BUGS
* Adapt "alcasar-network.sh" when ALCASAR is in DHCP mode
* Adapt "alcasar-watchdog.sh" when ALCASAR is in multiWAN mode
* WEB
* WebSVN 2.6.1 --> 2.7.0
 
## 3.5.4 (SVN revision: 2979)
* NEWS
* Multi-WAN access with load balancing per user (Thx to Pierre RIVAULT for this great job)
* CHANGES
* kernel 5.10.46 + ipt_NETFLOW 2.6 + Let's Encrypt ACME 2.9.0 + nfdump 1.6.23
* Bypass mode works now also in dhcp
* After the system has been updated (every day at 3 am), check if reboot is needed
* phpsysinfo 3.3.4
* BUGS
* Fix local DNS configuration when installing in dhcp mode
* Fix a display bug for web sites in exception (Thx to Olivier C).
* Fix local DNS configuration when changing the configuration in alcasar.conf
* WEB
* Webserver is updated (mga8 - apache 2.4.48 - apache-svn 1.14.1)
 
## 3.5.3 (SVN revision: 2944)
* NEWS
* WIFI4EU automatic integration via ACC
* CHANGES
* Add the favicon in status page
* Add another filter when importing the blacklist to remove line beginning with a dot
* Improve tcpdump filter when IoT live captures option is enable
* Adapt CA certificate to edge/chrome (add the "Subject Alt Name" - SAN)
* Improve "alcasar-CA.sh" script : can create server certificate for every hostname (not only alcasar.localdomain)
* kernel 5.10.30 + coova-chilli 1.6 + nfdump 1.6.22
* Move all alcasar systemd units in "/etc/systemd" (compliant with Linux file-hierarchy)
* ISO File is now created from a running alcasar system with updated packages.
* ISO file can now boot on more devices (USB, EFI, VM, etc.) with several video configurations : Thanks to Pierre RIVAULT
* BUGS
* Fix a display bug in ACC activity & stat page
* Add the CA chain certificates in Coova in order to allow authentication with the last versions of Chrome/Edge
* When blacklisted, display the categories even if the domain name contains a private prefix (ie mycompagny.whereby.com)
* WEB
* websvn.alcasar.net is updated to V2.6.0
 
## 3.5.2 (SVN revision: 2901)
* NEWS
* ALCASAR can now keep the user authenticated during 24h (attribute "keeping sessions alive (yes/no)")
* Ask the "unbound" Mageia packager to add "--enabled-ipset" for the next Mageia-8. validated : https://bugs.mageia.org/show_bug.cgi?id=27803
* HTTPS login option is now taking care during the update process
* ACC
* Improve IoT capture system
* Manufacturer mac addresses resolution list is now embeded in ALCASAR archive
* Admin can add network addresses in blacklist
* The control of the filenames imported in the blacklist is more strict
* End of spanish translation
* CHANGES
* Status page is now in HTTPS when interception is also in HTTPS
* BUGS
* unbound-whitelist doesn't send DNS requests to the listen port of Dnsmasq (55)
* Bad rights on file "/tmp/current_users.txt"
* fix a radius message
* WEB
* Web site is now in HTTPS
 
## 3.5.1 (SVN revision: 2878)
* NEWS
* Integration of the European “WIFI4EU” system (in the exploitation doc)
* linux-Kernel 5.7.19; ipt-NETFLOW 2.5.1; gammu 1.42
* ACC
* Spanish translation (Thanks to Germán BOWERS)
* CHANGES
* Improve the voucher (tickets) display with a serif font
* Local DNS resolution simplification
* ALCASAR E2guardian html template when intercepted (due to blacklisted-URL or malware detected)
* Retrieve letsencrypt and gammu-smsd configuration when updating
* The status page is now ciphered when the interception page is ciphered.
* BUGS
* Network IP addresses can now be set as exception
* "sudo" RPM isn't automatically loaded
* Several fail2ban fixes & simplifications
 
# 3.5.0 (SVN revision: 2847)
* NEWS
* Mageia7.1 and Linux Kernel 5.6.14
* Remove HAVP & Tinyproxy (replaced by E2guardian & clamd)
* All user pages are now responsive. Thanks to Clément GELINEAU
* Add an additional BL : Malwares Command & Control servers (C&C) from "osint.bambenekconsulting.com/feeds/". Thanks to Sven RATH
* Add IoT live capture (to detect & analyze private data leakage). Thanks to Dorian LEMOINE & Guillaume GELLUSSEAU
* Update processes have been improved
* ACC
* "sysinfo" is displayed with "phpsysinfo 3.3.2"
* global flow statistics generated by "vnstat-dashboard" (instead of "vnstat-frontend")
* Improve the process to import "official" and "Let's encrypt" certificates
* CHANGES
* German translations have been updated. Thanks to Sven RATH
* Improve RPMs controls at the installation stage
* Improve BL auto-update system
* WEB
* starbuck (ALCASAR subversion) has been updated (mageia7 + websvn 2.5.1)
 
# 3.4.0
* NEWS
* Linux Kernel 4.14.131 - ipt_NETFLOW 2.4
* Replace DNSmasq servers with Unbound servers
* Add LDAPS (LDAP SSL) support.
* Add a global group named "default" for all users (the "ldap" group still exists for users authenticated through LDAP/A.D.).
* Add LDAP filter.
* responsive captive page (thx to Aurélien DUBOIS)
* ACC
* Add LDAP configuration assistant.
* CHANGES
* Do not perform LDAP query for authentication of trusted authorized equipment.
* Improve script syntax
* LDAP server is automatically added to the DHCP static IP reservation.
* BUGS
* Fix listening address for nfcapd (was 0.0.0.0 instead of 127.0.0.1)
* Fix some typo
* Fix priority of filter attributes at group creation.
* Fix ignored filters assigned to the default group.
* Fix group attributes in user ticket generation.
* Fix LDAP users login without the "ldap" group created.
* Fix bad certificates chain generation when using default certificates.
* Fix the configuration application for LDAP.
* Fix print info with multiple words in static IP reservation in ACC.
* Fix IP filter in the imputability log report generator.
* SECURITY
* Merge bad username and bad password errors at user login.
 
## 3.3.3
* NEWS
* Linux Kernel 4.14.89
* Add Qwant in safesearch option for whitelist and blacklist
* Improve install on a server with more than 2 network card (add internal interface selector instead of choosing the first one).
* Use a custom blacklist & whitelist description file instead of the default one
* Updating blacklist & "TOR nodes" custom list
* Updating the WebSVN server to V2.5-dev with Tom patches (https://github.com/websvnphp/websvn/commits/master)
* New script to create the ISO file (mageiar) using docker. ISO file is now published on web site.
* BUGS
* Keep custom blacklists when upgrading from dansguardian to e2guardian
* Automatically launch database migration scripts after import user database.
* Improve firewall rules for whitelist users (anti-bypass)
 
## 3.3.2
* NEWS
* Add Bing and Youtube in safesearch option for whitelist and blacklist
* Linux Kernel 4.14.78
* ACC
* Allow "status page must stay open" user/group attribute to be unset in ACC.
* Disconnect users after deleting it and members of a group at its creation and deletion.
* BUGS
* remove "SurfMap" (an addon for NFsen) due to changes of Google Maps terms of use (while waiting for a new graphic display)
* Fix a bug when the username is "alcasar"
* Fix blacklist pureip option
* Call the right script from whitelist ACC configuration page when setting safesearch option
* Fix resolution of Internet domain names that are subdomains of the imported certificate domain.
* Fix user deletion in its filter ipset when its filter is changed (caused an impossible connection if the old filter was the whitelist).
* CHANGES
* Remove pureip option in whitelist ACC configuration page
 
## 3.3.1
* NEWS
* Linux kernel 4.14.69
* Introduce "Alcasar-Reconnect-Timeout" RADIUS attribute (not yet available in ACC).
* Add original "Max-All-Session" RADIUS attribute.
* Update acme.sh (Let's Encrypt client) to v2.7.9.
* Don't display "CERT" menu when HTTPS isn't enable for user's network flows
* Add counter to "CoovaChilli-Max-Total-Octets" (maximum of data exchanged) RADIUS attribute (in order to prevent quota reset on the login).
* ACC
* Remove network check in ACC homepage.
* Remove "Maximum of data downloaded/uploaded" filters.
* CHANGES
* Save SMS status and number in ALCASAR configuration file (persistent to updates).
* Launch Gammu at startup when the SMS service is enabled and check Gammu status in alcasar-daemon.
* Print a dedicated error message for each connection error.
* BUGS
* vnstat : bug when updating version.
* Fix a bug in NfSen during its installation.
* Fix a reload infinity loop in ACC auto-registration when the modem is unplugged.
* Check that username is not empty when creating an ACC profile.
SECU
* Use HTTPS repositories of Mageia.
 
# 3.3.0
* NEWS
* Linux kernel 4.14.56, ipt_NETFLOW 2.3, gammu 1.39
* Replace Apache with Lighttpd
* Replace DansGuardian with E²Guardian
* Add "Maximum of data exchanged daily/monthly" attributes.
* ACC
* Add "nfsen", "fail2ban" and "vnstat" services to the ACC system page.
* Add a timetable to help creation of authorized periods in a week
* CHANGES
* Explode the "Filter-Id" RADIUS attribute into ALCASAR vendor attributes (they can now be set independently and with a good user/group priority).
* Add "Alcasar-Expire-After" RADIUS attribute instead of replace "Max-All-Session".
* Rename "ChilliSpot-*" RADIUS attributes to "CoovaChilli-*".
* Check that the network interfaces are connected before updating ALCASAR.
* local hostnames are now resolved in "/etc/hosts" (better for dnsmasq)
* improve update process (even if the Linux Distribution is updated)
* BUGS
* alcasar.sh : Fix exiting on wrong hardware architecture
* Fix broken fail2ban configuration
* Fix control of "ulogd-*" and "dnsmasq-*" services in ACC.
* Fix imputability logs generation with a password containing spaces.
* Fix configuration of DHCP server for the bypass mode.
* SECURITY
* Reload Fail2Ban rules after a firewall reload (eg: after bypass state changes or Internet reconnections).
 
# 3.2.0
* NEWS
* Works with Mageia6
* Enable HTTPS support for the CoovaChilli JSON API (that allow HTTPS for status.php).
* The disconnection of users without the status page open can be disabled by a user attribute.
* ExFat USBKeys allowed
* ACC
* Print parsed log of MAC address spoofed instead of raw log lines.
* Add a regex validation when add a local DNS host or a static IP address to avoid breaking the dnsmasq service.
* Do not show user/group header menu after deleted it.
* Disconnect an allowed MAC address after deleted it.
* Reconnect an allowed MAC address after disconnecting it when updating RADIUS attributes.
* CHANGES
* Set watchdog interval to 10 minutes.
* Set URL of BL/WL blocked page ressources to ALCASAR hostname instead of blocked domain to prevent cache issues & useless overload.
* LDAP configuration is now saved in ALCASAR conf file
* BUGS
* Fix the open of status.php when the user has a redirection URL attribute defined (force redirection to intercept.php after login instead of WISPr-Redirection-URL attribute value).
* IP address of active users are properly clean from "current_users.txt".
* Fix allowed MAC address detection in ACC activity page.
* Fix a bug when generating 50+ user tickets at once.
* Fix removing a WL through ACC (forgotten line undeleted in alcasar-wl-categories file) and fix a bad character written in configuration file when activate a WL through ACC.
* Fix detection of popups blocking in Safari.
* Get number of open session from the whole history instead of just the last 3 sessions in the status page.
* Remove disallowed characters of login when importing users from a text file.
* Fix ticket generation of users with accented username.
* Fix ALCASAR configuration file parsing in scripts (comments are correctly ignored).
* SECURITY
* Enhances passwords security generated during installation (length: 8 -> 16).
 
## 3.1.4
* NEWS
* Add a link for back to the homepage when the user is disconnected in status.php.
* ACC
* Print group attributes if user attributes are not set in ACC user status.
* CHANGES
* Increase visibility of the status page warning about disconnection when close.
* BUGS
* Fix ACC user/group editor where attributes were not changed.
* Fix PHP errors in ACC user/groupe attributes editor.
* Fix traceability log due to an omission during the migration from ulog to nflog (alcasar-iptables-local-mac-filtered & alcasar-ip-blocked).
* Fix all traceability NFLOG rules by specifying the nfgroup to 1 (since the default group of NFLOG is 0 instead of 1 for ULOG1).
* Remove Fail2Ban NFLOG logs.
 
## 3.1.3
* NEWS
* Add Let's Encrypt integration.
* Change the ALCASAR CA certificate extension to .crt (to be added more easily in Firefox).
* Allow hostname different than "alcasar".
* Check/remove conf file of removed NIC.
* move udev rule for huawei GSM modem in "/lib/udev" ("/etc/udev" will be deprecated)
* ACC
* New network configuration UI (dynamic user-friendly diagram form).
* Show/hide advanced attributes dynamically in user/group creation and edition.
* Print parsed log of Fail2Ban instead of raw log lines.
* New ACC menu (with JS instead of PHP reload).
* Add option to allow unsecure login for user interception.
* BUGS
* Display info field for DHCP static equipment
* Fix bug where the encrypted password is printed in a random column in the ACC user editor.
* SECURITY
* Rename Fail2Ban rule "alcasar_acc-htdigest" to "alcasar_acc" (iptables does not support long name).
* Remove '/usr/bin/openssl' sudo privilege for 'apache' user.
* Escape exec() parameters in ACC to prevent RCE attacks.
* Update NfSen to 1.3.8 (Fix a security vulnerability).
 
## 3.1.2
* NEWS
* An update can be fully performed via SSH
* Linux Kernel (4.4.68)
* Activate coova HTTPS interception (remove our DNS blackhole rules)
* ACC
* download/upload inversion (logical traffic display)
* internationalization & HTML improving
* Add info field in IP static page
* BUGS
* doesn't download unused kernel on update process
* rollback to nfsen 1.3.7 (incompatibility with surfmap)
* Fix importation of official certificate during the loading of ALCASAR configuration files backup.
* SECURITY
* Fix Fail2Ban broken rules (alcasar_mod-evasive,alcasar_acc-htdigest,alcasar_change-pwd) and add SSL compatibility for alcasar_mod-evasive rule.
* Improve ACC log
 
## 3.1.1
* NEWS
* Linux Kernel (4.4.59)
* Migratation of FPDF to wkhtmltopdf (user/vouncher tickets & user file import). (FPDF is removed)
* Update nfsen (1.3.8)
* Repackage wkhtmltopdf without unused wkhtmltoimage executable and wkhtmltox library (32.1 Mo -> 10.6 Mo).
* geoip updating (surfmap)
* Add warning message on user status page (page closed => disconnection).
* Print allowed domains in user home (index.php).
* Add ACC access, Global traffic and Fail2Ban bans to activity report.
* On authentication, redirects to the status page and open the user's URL to a new tab (instead of the reverse).
* ALCASAR update process can be fully performed via SSH (preparing via ACC)
* Print blacklist categories of blocked domain on interception page.
* BUGS
* The users can change their password
* managing uamallowed domain is operational again
* Fix broken SQL library path in autoregistration.php.
* Fix loop redirection after connection in case of imputability logs warn.
* Fix test if installed on a VMware
* Fix ticket print link after user creation.
* SECURITY
* MSEC (HIDS) is enabled by default
* Fix vulnerabilities in the user part (1 SQL injection & 2 XSS).
* Remove ALCASAR version visible in the user part.
 
# 3.1.0
* NEWS
* The status window is now in a tab (no more popup).
* Linux Kernel update (4.4.55) - coova-chilli updated (1.3.2) with IPSEC VPN resolve code (see #255 on coova github)
* network protocols filtering by user
* The user is disconnected when his "status tab" is closed (no more watchdog for that)
* ACC
* Chinese & arab translations
* MAC resolution (manufacturer) is displayed
* temporarely MAC authentication can be made "on the fly"
* some improvements when actions take long time
* Reporting of Week statistics (in PDF)
* the imputability logs can be displayed. All the users will be warned at their next connexion.
* admin connexion logs (when clicking on access counter)
* BUGS
* manual user disconnexion in ACC (french page only)
* import BlackList file : doesn't work with domain name longer than 3 letters (ie : .info)
 
## 3.0.1
* BUGS
* Fix : filter_id when importing an old users database
* Fix : dupplicate/remove users attributes
* Fix : passing trusted websites
 
# 3.0.0
* NEWS
* Mageia 5.0 migration
* ipt-netflow kernel module updated (V2.2) - coova-chilli updated (1.3.1.4)
* HTTPS interception now works
* user login name can be accentuated
* A first BL category (malware) can be update on the fly via rsync
* Wildcard certificate can be used
* a blacklist custom file is added (TOR nodes)
* ACC
* freeradius-web framework has been removed
* all SQL PHP functions have been rewritten (thanks Clément Siccardi & Raphaël PION for this huge work)
* the network settings can be change (lan_ip_@, GW, DNS, etc.)
* a first page in HTML5 (statistic / security)
* group attributes are displayed in the user edit page
* The menu of ACC is displayed according to the profile rights
* reoganisation of OSSI custom files (BL & WL)
* BUGS
* The Whitelist now works fine
* The passwords can be longer than 15 digits
 
## 2.9.2
* NEWS
* importation of official certificate
* Configuration of Dansguardian and DNSMASQ for larger sites
* The SSL level has been improved to avoid recent vulnerabilities (exclude SSLV2 & V3)
* The autosigned certificate has been improved (key lenght : 2048b and sha256 for fingerprint algorithm)
* MAC auth equipments are automatically logged just after creation
* BUGS
* MAC auth equipments in DHCP mode are logout after lease time. They can't be automatically reconnected
* ACC
* PHP : migration of the deprecated functions --> should be continued for the V3
 
## 2.9.1
* BUGS
* Problem with the resolver DNS at the time of the installation
* Configuration with external DHCP
* Problem with LDAP server (sradutmp is no more needed)
* NEWS
* integration of an internal DNS in automatic configuration (alcasar-dns-local.sh)
* "SMS autoregistration" link in the 'intercept' page (if the service is enabled)
* It's now possible to update via ssh
* ACC
* show user info (name & surname) in the "activity" screen (if set)
 
# 2.9.0
* BUGS
* Configuration radius with PAP module (remove a warning)
* Fix an issue when INTIF is a Gb/s card (generic-receive-offload : off)
* NEWS
* Mageia 4.1 migration
* Remove Squid - Add Tinyproxy
* Add the SMS auto-registration system
* Add whitelist filtering (domains and related IP addreses)
* Add IP addresses of the Toulouse blacklist in the firewall targets
* Add whitelist/blacklist/antivirus filtering by users/groups
* Add surfmap plugin (nfsen)
* Store user password in SHA256 instead of MD5 (Thanks to Olivier HOUSSENBAY) and use a random SALT (not same hash for two same passwords)
* Add Network tool statistic : Vnstat
* BL/WL/Antivirus filtering now works with MAC authentication
* ACC
* simplify the user registration menu
* import a file containing a list of blacklist ip addresses or DNS names (ie : CERT)
* reboot or halt the system is now possible
 
## 2.8.1
* BUGS
* a security hole has been patch (EDB-ID: 34595 - OSVDB-ID: 111026)
* In the intercept page, fix the behaviour (loop) when the user writes "logout" as url
* correction in "session time" radius counter (thanks to Olivier HOUSSENBAY)
 
# 2.8.0
* BUGS
* The file "alcasar-services" is now sorted
* New graphic option in grub conf file in order to fix issues with mini-itx-ATOM moterboard
* NEWS
* Firewall-eyes and AWstat are removed from ACC
* The user attribute "Max_total-time" is now "authorized period after the first connection"
* Creation of a netflow probe (kernel module)
* complete network statistics can be viewed in ACC (nfsen)
* The porttracker nfsen module allows to view network statistics by protocols
* The imputability files are now included in a single archive file (one per week)
* The Alcasar name includes the domain name ('localdomain' by default). We prepare the future when we will include the domain name of company.
 
## 2.7.2
* BUGS
* Modify the unit 'radiusd.service in order to wait for mysql
* Creation of an unit 'loadbalancing.service' instead of init.d script
* Removing the rc.local file
* NEWS
* Add fail2ban on the following attacks : ssh, https (ACC admin page), Unix accounts
* Creation of a security page in the ACC : fail2ban alerts, virus stopped by havp+clamav, MAC addresses bloqued by the watchdog process (usurped)
 
## 2.7.1
* BUGS
* Fix multi-users voucher
* Fix a mageia2 bug in network function
* NEWS
* Add 2 examples of "uamalowed and uamdomain" files with several microsoft update domains
* Show the blacklist category in "Acces denied" page
* Watchdog : don't disconnect MAC auth equipments even if they can't be reached (arping)
 
# 2.7
* BUGS
* some corrections in the connection popup
* test if categories enabled of the BL are effectively in the BL (need after an update of the BL)
* NEWS
* Installation with Mageia2
* The URL filter works with the new google safesearch regex ('safe=strict' instead of 'safe=vss')
* The safesearch for google works now with https (redirect on 'nosslsearch' proxy)
* The WhiteList architecture is enabled
* All the documentation has been translated in english
* The security certificate is now signed in sha256
* Balancing connection is now operational and dynamically checks the Internet connectivity
* CHANGES
* HAVP doesn't scan youtube flows (too heavy load / no risk)
* voucher can now be done in multi-users
 
## 2.6.1
* BUGS
* The embedded documentation is in right version
* fix the dhcp static address for eth1 (intif)
* ACC
* show user information when trusted equipment are listed (better than only MAC address)
* main page : doesn't show the date of installation in the version field (can be confused)
* NEWS
* show the GPL
 
# 2.6
* BUGS
* "username" in "userinfo" table is varchar(64) like in others tables of ALCASAR database.
* "activity.php" : don't print "private_ip_address". Update with new "chilli_query" output
* re-activation of COA between radius and coova (radius disconnect the users directly).
* the "url-redirect" attribute now works fine (coovachilli V.1.2.9-1)
* CHANGES
* all "alcasar.info" becomes "alcasar.net" in code
* change the order of http chain (DG --> squid --> HAVP --> Internet) more réactivity and less charge of CPU
* Dansguardian deny domains when requested via proxy http
* The database is checked (and repair) every week
* SECURITY
* The blacklist is now verified before activating (ANSSI need)
* The school/parental control can now filter search engines (google, bing, yahoo, matacrowler, etc.) and Youtube
* NEWS
* When IP addresses in the consultation network are dynamicly allocated, static ip can be reserved in the Alcasar Control Center
* The script "alcasar-https.sh {-on|-off}" enable or disable encryption of authentication flows
* Exceptions of authentication (@MAC) are now managed by Radius (like other users)
* @network and @Host can be blocked by the firewall (conf file : etc/alcasar-ip-blocked). Alacasar Control Center is updated.
* the filtering of LAN between ALCASAR and the Internet GW is no more need.
* DHCP service is more flexible : it can be {off | half | full}
* ACC : admin can now export the curent tracability file
* ACC : admin can define the exception domains that will be showed in intercept page
* A new user attribute "max-all-session" is managed (maximum time a user can be connected)
* ACC : The english translation is more complete.
* clears the script "alcasar-mysql.sh --expire_user" users having an expiry date than 7 days
* user pages translations in portugese
* voucher ticket with logo of organism
* intercept page with exception links
* the needed RPM for ALCASAR can be downloaded with the new script "alcasar-rpm-dowmload.sh"
 
# 2.5
* BUGS
* watchdog of Daemons for service's test
* watchdog (and script alcasar-logout.sh) doesn't logout the macallowed addresses
* reading of alcasar.conf file parameters more securely
* don't download RPMs twice
* allow connexion to an LDAP server on WAN side
* control that watchdog can't execute if already running
* allow FTP in output
* eth1 is no more configured. Tun0 works better (only one arp cache)
* modoarchive is deleted (too many bugs and too hard to debug)
* CHANGES
* new alcasar-iptables.sh script (more logically strutured)
* update phpsysinfo page ("Internet access flag" nom show the right status)
* Authenticate user on Mysql when LDAP server is down
* import users via text file with or without password
* last version of coova-chilli
* SECURITY
* The 8080 (TCP) and 53 (UDP) ports are now hidden on Lan side
* ANSSI code review (sql escape string in PHP)
* remove the apache unused modules
* the blacklist is no more update automaticly
* postfix banner is more secure
* anonymisation of squid (+ remove of 'x_forwarded' rule)
* NEWS
* control eth0 config on startup (no dhcp)
* don't download the last BL version
* remove unused RPM before update the system
* Improve when update is performed via SSH
* allow/deny access to the LAN located between ALCASAR and the Internet gateway (box)
* presentation and installation doc in english
 
# 2.4
* BUGS
* some minor bugs (log rotate, intercept page, squid, ...)
* ACC : correction of the Internet connectivity test flag
* correction of the network filtering flag
* ip filtering exception changes doesn't active protocols exception filter
* remove dual log archive
* correction in "bypass" mode
* correction with squid cache
* The blacklist is automaticly updated once a month
* The distribution is automaticly updated every day
 
# 2.3
* BUGS
* group properties are now written on the voucher
* hold the state of network filter when update
* CHANGES
* simplify official certificate import process
* update with the last version of Coova (1.2.8)
* SECURITY
* end of implementation of ANSSI rules for netfilter
* NEWS
* allow exception of IP addresses (or network addresses) in the authentication process
* ACC : group member is added in user list
 
# 2.2
* BUGS
* A bug with "sudo" is bypassed
* improve the script which display and close users open sessions
* some minor bugs
* CHANGES
* add a central conf file (/usr/local/etc/alcasar.conf)
* IP parameters can be change in central conf file. Apply with the script "alcasar-conf.sh -apply"
* 'alcasar-nf.sh' and 'alcasar-bl.sh' scripts now use the global parameters file (alcasar.conf)
* improve the script which managed the trusted sites and urls
* SECURITY
* close all accounting session when the system goes down or up
* NEWS
* allow change of alcasar IP private address during install stage
* no more question, when upgrating
* blacklist category "ip" is added for url that contains only an ip address (no FQDN)
* allow LDAP/AD connections both on WAN and LAN
* Add a LDAP connectivity test
* possibility to redirect users on a specific URL after login process
* if activate, sshd listen both on LAN and on WAN
* ACC : add the equipment name in the activity window when MAC authenticate
 
# 2.1
* mise en conformité du parefeu avec les préco ANSSI (politiques à DROP + sysctrl)
* amélioration de la fonction bastion en limitant la charge sur l'interface externe (thanks to CPN)
* amélioration de la gestion des RPM 'wget' au lieu de 'curl' et changement de repository en 'live'
* exception au filtrage réseau et DNS (double instance de dnsmasq)
* ajout d'un commentaire pour les exceptions à l'authentification
* possibilité d'imprimer un ticket de session et simplification des champs de saisie (thank's to Geoffroy MUSITELLI)
* nouveau look graphique (thank's to Stéphane Erard)
* page de status via JSON (thank's to Stéphane Weber)
* intégration du filtrage 'safesearch' (filtrage des réponses des moteurs de recherche).
* installation à partir d'un mandriva 2010.2
* diminution des ressource système (travail d'HAVP en mémoire plutôt que sur le disque)
* distinction des fichiers de log (traçabilité - ssh - accès exterieur)
* amélioration du processus de mise à jour (prise en compte du numéro de version)
* simplification du processus de mise à jour (prise en compte mdv 2010.2)
* déplacement du répertoire 'digest' vers /usr/local/etc/
* correction horodatage des logs awstat
* inclusion d'un fichier de nommage DNS local
* inclusion d'un fichier 'alcasar-ethers' permettant la réservation d'adresses IP par Dnsmasq
* inclusion d'un fichier 'alcasar-dns-name' permettant de définir des associations @IP <--> DNS par Dnsmasq
* qq bugs mineurs (ntpd, adresse coova 1.0.0.0, etc.)
 
# 2.0
* mise à jour de la documentation technique
* ajout des switchs en '--' pour remplacer les '-' des scripts
* accès authentifié à la la page de garde du centre de gestion
* Prise en compte du script "alcasar-iptables-local.sh" dans le cadre du ByPass
* Prise en compte des catégories de la BL dans l'interface de gestion
* prise en compte par le watchdog de la redirection usager si panne eth0 ou panne default-gw
* Simplification de la procédure de mise à jour
* Intégration du filtrage de domaine via dnsmasq (DNS-blackhole)
* suppression de named du script d'alcasar
* Intégration des blacklists de dansguardian et formatage pour dnsmasq
* Intégration de la migration du système de la Mandriva
* Intégration de dnsmasq en lieu et place de named et dhcpd ( en mode normal) en bypass dhcpd et toujours présent ...
* Prise en charge du fichier alcasar-iptables-local.sh dans l'update
 
# 1.9
* Adaptation de DHCPD dans les scripts de demarrage
* Mise en place du DHCPD local en lieu et place de DHCP Chilli : "alcasar.sh"
* Ajout de la gestion des quotas sur les usagers et groupe d'usagers.
* Interdiction de créer des usagers ou groupes avec un nom vide ou contenant des espaces
* création RPM 32b et 64b d'havp. Adaptation des scripts.
* intégration havp + clamav
* remplacement de valeur DNS1 et DNS2 quand valeur= vide ; testé
* Réécriture de la procédure d'installation des RPM (téléchargement et test avant install)
* protection du menu "grub"
* Fusion menus "services" et "réseau"
* "page de garde" : simplification + Info sur le filtrage + optimisation
* "menu.php" : prise en compte version 'actuelle' et 'MAJ" dans la page de menu
* prise en compte version 'stable' et 'devel" dans la page de garde
* correction bug (adresse en 0.0.0.0 du menu activité)
* mise en place des properties svn avec $Revision $Date
* mise en place des exceptions au filtrage (web + réseau). Correction bug utf8.
* "alcasar.sh" : modif config carte eth0 (dns local et ifcfg-eth0.default)
* bascule du développement sur subversion
* "alcasar.sh" : debug de la partie "mise à jour" + ajout de la zone reverse (localdomain.rev)
* "alcasar.sh" : correction config coova (les DNS sont pré-renseignés dans la conf par défaut). Ajout de l'entrée "alcasar" dans la zone DNS "localdomain"
* "alcasar.CA" : renommage des "OU" et préparation d'un deuxième certificat serveur pour le CN "alcasar"
* "alcasar.sh", "alcasar-conf.sh" : procedure externe pour créer l'archive des fichiers de conf
* "alcasar.sh", "alcasar-uninstall.sh", "alcasar-CA.sh", "alcasar-conf.sh" : réécriture de la procédure de mise à jour
* "alcasar-iptables.sh" : suppression DNS sur TCP (uniquement UDP)
* "alcasar-urpmi.sh" : prise en compte de la "mirrorlist" centralisée chez Mandriva
* "alcasar.sh" : suppression des daemons ifplugd associés à chaque carte réseau (mii_not_suported=yes)
* durcissement de l'entrée du nom d'organisme (pour les 2 mains gauches ;-) )
* "service.php" : ajout du service "named"
* "alcasar-iptables.sh" : rajout des redirections et autorisations tcp domain dans parefeu
* "alcasar.sh" : activation du DNS bind [install uninstall(alcasar-uninstall.sh) et update]
* "intercept.php" : intégration de la variable "userurl" dans les arguments de la demande d'authentification afin que la page demandée par l'usager soit prise en compte par le cache ARP de chilli (et donc affichée après l'authentification) ouf... ;-)
* "intercept.php" : suppression caractères superflus ("\"). Ajout variable "urladmin" : permet de choisir la page chargée après authentification
* "alcasar.sh" : fonction 'chilli' -> creation du fichier d'exception par @mac (alcasar-macallowed)
* "menu.php", "auth.php", "filtering.php" : modification du menu
* "exception.php" : intégration php de la gestion des exceptions par @MAC + traduction
* "alcasar-iptables-filter.sh" : correction bug sur le nom du chemin du fichier ligne 30
* "alcasar-iptables.sh" : intégration Bind ( mais non activé )
* "alcasar.sh" : + intégration de Bind ( mais non actif pour le moment )
* Intégration de param_bind dans menu -install et -update
* ln et modification de /etc/trusted_network_acl.conf ( LAN autorisé à query )
* radius et update RPM : --> suite aux problèmes d'update RPM ( à affiner si suppression de certains modules radius ( rlm_, etc...)
* rajout/modification de droits msec sur /etc/raddb
* touch sur control-socket, default et inner-tunnel sous /etc/raddb/site-enabled (ln rajoutés par un update RPM de freeradius systématiquement ... et qui empêche le démarrage de radius)
* "alcasar.sh" : mise à jour de l'install ntpd ("ntpdate" étant devenu obsolète)
* "alcasar-uninstall.sh" : suppression des spécificités de la V1.7
* intercept.php : correction bug (compatibilité ie8).
* mise à jour du répertoire "conf/rpms-update" (rpm de "mindi" compatible ext4)
* "alcasar-mondo.sh" : correction proposée par Michel GAUDET
* ajout du processus "sshd" dans la page "système/services".
* "alcasar-radius" : suppression des tags config- de l'ancien plugin ldap.
* "alcasar.sh" : augmentation de la taille des fichiers en "upload" par php (pour l'import de la base usager)
* le service sshd n'est plus lancé automatiquement au démarrage (activable via l'interface de gestion)
* "alcasar-iptables-filter.sh : a voir avec richard pour les conntrack modules pour ftp ...
* "menu.php, filtering.php, activity.php" : prise en compte des @mac autorisée dans la fenêtre "activité" (+ corrections)
 
# 1.8
* "alcasar-bypass.sh" : amélioration du script
* création des 2 scripts d'initialisation des daemons "chilli" et "dansguardian"
* "alcasar.sh" et "alcasar-uninstall.sh" : création de la fonction "dansguardian"
* "alcasar.sh" : intégration du RPM "coova-chilli" réalisé par Mandriva.
* mise à jour des docs
* "alcasar-iptable-bypass.sh" : adaptation à la dernière version de netfilter.
* "alcasar-iptable-filter.sh" : traitement du filtrage ICMP
* "alcasar.sh" : désactivation par défaut du filtrage WEB et du filtrage réseau
* "alcasar-iptables.sh" + "alcasar-iptables-filter.sh" : optimisation des règles de filtrage.
* ajout du charset (utf-8) dans intercept.php
* adaptation de phpsysinfo : (portail.php, index.php, fr.php et en.php)
* "alcasar-CA.sh" : suppression des caractères superflus lors de la génération du certificat de l'A.C.
* "service.php" : mise en conformité graphique
* mises à jour network.php (internationnalisation et suppression des erreurs php)
* alcasar-urpmi.sh et alcasar.sh : adaptation de la procédure de mises à jour pour les architectures 64b
* mises à jour des fichiers de la partie "système" du centre de gestion (internationalisation, utf8... partie à finaliser...)
* intégration de la page activité dans "système/réseau" et adaptation du menu
* adaptation du code aux évolutions php5 (fonction "split" dépréciée, fonction "new" retourne directement une valeur, variables _get et _post interdites de visibilité globale)
* fichiers modifiés : intercept.php, uam.php, net-filter.php, bl.php, bl2.php, sauvegarde.php, 15 fichiers de phpsysinfo, to be continued ...
* "alcasar.sh" : adaptation pour le module 'ldap') :
* "alcasar.sh" : adaptation à MdV-2010, corrections : log_martians, lancement des fonctions, rpm orphelins
* tri des services, amélioration des fonctions php d'ouverture de fichiers (bl + wl)
* prise en compte d'une whitelist par protocole autorisé (création du fichier /usr/local/etc/alcasar-services)
* "alcasar.sh" : suppression de l'écoute sur le port 80. Suppression du filtrage ultrasurf. Evolution de la gestion du filtrage (alcasar-nf.sh + modules php)
* "alcasar.sh conf/logrotate.d/dansguardian" - adaptation de dansguardian dans la rotation des logs et modif du script alcasar.sh
* "alcasar.sh" : suppression du filtrage des fichiers téléchargés, mise à jour système automatique, modif page d'erreur apache "401", limitation de l'écoute d'apache sur le port 443 (eth1)
* "alcasar-unistall.sh : mise à jour
* Modification du menu de centre de gestion : ajout menu systeme(services/réseau/ldap)
* Ajout des pages de configuration des Services, Réseau et LDAP.
* "alcasar.sh" : modification des msec local (perm.local) --> prise en compte de l'interface ldap --> a confirmer
* "alcasar.sh" : adaptation des délais pour anacron
* "alcasar-iptables-filter.sh" : debug de la ligne de récupération des @IP ultrasurf
* "alcasar-iptables.sh" : adaptation des règles à la nouvelle norme d'écriture (le "!" placé avant)
* "alcasar.sh" : adaptation du module "radius" pour mandriva 2009.0 & 2009.1
* "alcasar.sh" : suppression du filtrage d'URL via les expressions régulières (REGEX) pour dansguardian
* prémices de l'interface de filtrage réseau (alcasar-nf.sh + modules php)
* "alcasar.sh" : génération de mot de passe aléatoire au sein des briques Alcasar même après une mise à jour.
* mise à jour de "mondoarchive" et "mindi" dans l'archive des RPM (alcasar-1.8-rpms.tar.gz)
* "alcasar.sh" : modif de la conf dansguardian (afin de préparer l'interfaçage graphique)
* 'alcasar-uninstall.sh" : mise à jour et désinstallation complète de mysql
* "alcasar.sh" : pour Dansguardian, on désactive le contrôle dans l'URL, on bloque les URL avec @IP, on bloque le https par le port 80
* "sauvegarde.php" : suppression de l'affichage des journaux du proxy
* ajout de 3 RPMs liés au "backportage" de "mondo-mindi"
* "alcasar.sh" : ajout des cron.d/export et clean pour une prise en compte en cas d'arrêt du serveur pendant l'exécution
* "alcasar.sh" : suppression des # dans le plugin_ldap ( ne prend pas en compte le lancement multiple ...
* "alcasar-log-export.sh, alcasar-log-clean.sh, conf/logrotate.d/dansguardian" : prise en compte des logs de dansGuardian ... dans les exports de logs et le nettoyage # a voir si on garde ?
* "alcasar.sh" : prise en compte de la tabulation avant et derrière le # dans radiusd.conf
* "alcasar-mondo.sh" : suppression du paramètre -F qui crash sur la Mandriva 2009.1
* "alcasar-bl.sh" : mise à jour des liens internes liés au téléchargement de la BL Toulouse
* "phpsysinfo" : activation de la barre de charge (load-bar) dans la page d'accueil
* correction bug : affichage des exceptions (bl.php) et sauvegarde du fichier "/etc/dansguardian/exceptioniplist" en cas de mise à jour
* modif du système de comptage des usagers en ligne de la page d'accueil (chilli_query au lieu de radwho)
* amélioration de la fonction de mise à jour
* définition aléatoire des mots de passe inter-processus (alcasar.sh)
* réécriture des règles iptables pour prévenir l'impossibilité future de filtrer sur la table NAT (alcasat-iptables.sh)
* possibilité de garder l'ancien certificat serveur lors de la mise à jour
* installation de dialupadmin + conforme (uniquement les fichiers modifiés)
* réarchitecture des pages du centre et homogénéisation graphique.
* correction javascript dans la page d'interception
* possibilité de supprimer les usagers à la suppression de leur groupe
* correction faille de conf apache (suppression de la directive "method")
* gestion des profils d'administration en 3 groupes (admin, manager, backup)
* correction de la "double redirection" lors de l'interception par coova
* suppression de la fonction "OnBlur" de intercept.php
* amélioration de la conf de squid (suite au remplacement de squidGurad par Dansguardian)
* amélioration de la rubrique "activité réseau" (affichage trié et déconnexion d'un usager (même si plusieurs sessions simultanées)
* modification des menus de l'interface
* correction d'un bug et "durcissement" de la conf de coova-chilli à l'install (alcasar.sh)
* remplacement "hotspotlogin.cgi" par "intercept.php". Traduction en 5 langues. Prise en compte des réponses Radius.
* simplification des scripts de modification du mot de passe usager (+ traduction 5 langues)
* affichage du nom d'organisme sur la page d'interception
* correction de bug dans "alcasar.sh" : appel de 'htdigest' par son chemin complet, amélioration des calculs pour les réseaux de classe A et B, procédure de mise à jour (option -update)
* correction du fichier "dhcpd.conf" (ajout de l'entrée "ddns-update-style interim")
* correction et agrégation des 2 scripts "alcasar-bypass-on / off"
 
# 1.7
* intégration du module de filtrage applicatif
* traitement des vpn https "ultrasurf" (contournement du filtrage d'URL)
* mise en conformité de l'interface des sites de confiances ("uamallow" et "uamdomain")
* mise à jour de la doc
* module graphique de visualisation de l'activité du réseau de consultation (équipements et usagers)
* correction bug "sauvegarde.php"
* correction bug freeradius-web/lib/sql/drivers/mysql/functions.php (merci M.G.)
* adaptation cron de chilli à notre logique (/etc.cron.d au lieu de /var/spool/cron/root)
* suppression des mails pour les cron journaliers (awstat, chilli, etc.)
* modification radius (écriture dans sradutmp et radutmp) --> récupération de la fonction "radwho"
* relooking type Alcasar de "accounting.php" et suppression d'affichage des champs "NAS*"
* recodage UTF8 alcasar.sh, alcasar-iptables, etc.
* modif alcasar-iptables (le "/etc/init.d/iptable save" est réalisé ici) et alcasar-iptables-filter (ancien alcasar-iptables-local) en vue d'intégrer le filtrage applicatif.
* agrégat uam.php + uam2.php (suppression uamallow.php et alcasar-uamallow.sh)
* sécurisation /etc/pki
* modification et intégration du fichier de conf "radiusd.conf" + conforme
* gestion de la casse pour les noms d'usager
* suppression des méthodes d'authentif inusitées
* activation des compteurs SQL (module rlm_sqlcounter.so)
* remplacement "ssmtp" par "postfix" afin de préparer l'avenir ;-) et d'éviter les erreurs de "crond"
* création et mise en ligne de l'archive des RPMs additionnels pour les installation "faible débit"
* phpsysinfo : nom de la distribution de nouveau disponible (phpsysinfo/distro.ini <-* Mandrivalinux au lieu de Mandriva)
* adaptation de admin/uam.php ( et uam2.php) pour génération web des urls et domaines de confiance
* suppression de shorewall-common et pas uniquement shorewall
- intégration dans /etc/chilli/config de alcasar-uamallowed et alcasar-uamdomain (fichiers de sites et de domaines de confiance)
- modif de alcasar-iptables.sh pour permettre l'icmp sur INTIF et pas seulement sur TUNIF
- modif alcasar-uamallowed.sh pour intégrer un fichier alcasar-uamdomain ( domaines sans restriction)
- modif "sauvegarde.php" pour ordonner la liste des sauvegardes (base, firewall, système)
- modif "hotspotlogin" pour intégrer un traitement à la fermeture du popup de déconnexion
* modif /etc/alcasar-bypass.sh en /usr/local/bin/alcasar-iptables.bypass.sh
* modif alcasar-bypass-local.sh pour intégrer des filtres applicatifs + déplacement dans alcasar-iptables.sh
* intégration coova "+ conforme" (modif du fichier de conf par défaut)
* suppression des modifs iptables effectuées par coova (/etc/chilli/up.sh)
* ajout du contrôle des flux DNS (pour éviter les tunnels DNS)
* remplacement de la page d'interception de dansguardian
* intégration du module LDAP dans /etc/raddb et alcasar.sh
* Correction bugs dans "alcasar-log-export"
* Suppression des broadcast sur EXTIF
* Suppressions des envois de mail pour cron (générait une erreur en absence de MTA)
* correction config awstat et intégration graphique
* intégration Squid "+ conforme" (modif du fichier de conf par défaut)
* suppression du snmp_finger inutile dans "/etc/freeradius-web/admin.conf"
* correction du bug mktime() de la page "stat journalière"
* modif menu pour les pages "stats journalières" et "stat usagers"
* correction bug de la page des connexions actives ("sradutmp" dans "/etc/raddb/site-available/alcasar" et @IP réelle du NAS (et non loopback))
* intégration du plugin ldap : les scripts php ne sont pas retenus (mais conservés).
* implémentation et adaptation pour authentification seule (pas de récupération des attributs Radius dans ldap )
* ajout de la commande service dans sudoers ; pourra ètre utile pour insérer l'état des services utiles (status et restart) dans phpsysinfo
* ajout des fichiers modifiés ldap.attrmap et ldap (sera modifié par le script plus tard :-) issus de freeradius-ldap
* modification du fichier d'installation alcasar.sh pour rajouter une option -ldap indépendante de l'install/update et uninstall
* correction de code php afin de supprimer les warnings dans /var/log/http/ssl_error
* correction de quelques coquilles
* intégration de la gestion des sessions simultanées
* correction bug dans la page d'info usager - rubrique "password-check" (freeradius-web/lib/sql/password_check.php)
* intégration du travail de P.Romero (générateur de mots de passe aléatoires dans htdocs/user_new.php et htdocs/user_edit.php)
* suppression des log_martian via msec -> fichier /etc/security/msec/level.local (alcasar.sh)
* ajout des RegEx de saisie d'adresse IP (alcasar.sh)
* création du script de gestion des profils "alcasar-profil.sh", adaptation d'alcasar.sh
* correction bug sauvegarde.php : répertoire "/var/Save/log/proxy" au lieu de "/var/Save/log/squid",
* correction d'un bug dans le fichier de conf d'awstat
* ajout de la possibilité de changer le plan d'addressage à l'install, correction bugs date d'installation + install via archive RPM
* intégration page uamallowed, modification du menu, lien symbolique /etc/radius/radutmp sur /etc/radius/sradutmp (pour radwho --> à revoir), vérif mdp chiffré dans mysql --> ok.
* modif archive RPMS, iptables, squid.conf (pour ce dernier, on devrait pouvoir partir du fichier de conf de base)
* suppression des paquetage avahi, mandi, shorewall, drakxtool-curses et les orphelins créés (à la fin de l'install)
* création de l'archive rpm optionnel "alcasar-rpms.tar.gz" (nécessaire quand on a pas Internet (dans le train par exemple ;-) ))
* déplacement de /etc/chilli/defaults en /etc/chilli/defaults.old pour éviter les uamallowed insérés automatiquement par coova
* modif import-user.php, déplacement dans freeradius-web/htdocs (en import_user.php) et modif page d'appel (usager.php)
* correction des requetes SQL sur la table "usergroup" au lieu de "radusergroup" (import_user.php et portail.php). Correction du MCD.
* suppression de l'affichage du logo "coova" (/etc/chilli/config)
* suppression des log parefeu https, ssh et dhcp (les logs des daemon httpd, sshd et coova suffisent)
* suppression de la modif du fichier syslog.conf à l'install
* mise à jour de la page d'interception (hotspotlogin)
* mise à jour alcasar-uninstall, config ssh, alcasar-bypass-iptables
* affectation dynamique du role des cartes RSO (alcasar.sh)
* correction de bugs (alcasar-iptables.sh + alcasar.sh)
* généralisation de l'utilisation des variables "intif" et "extif" dans le script d'install
* prise en compte des nouvelles structure des RPM repository (alcasar-urpmi.sh)
* adaptation du script d'install en mandriva 2009
* intégration native de coova-chilli
* Suppression de l'enregistrement du mot de passe dans la table "radpostauth"
* intégration dans alcasar.sh à l'installation-update
* intégration structure ossi-bl et ossi-wl dans squidGard.conf et alcasar.sh --> reste dans script web
* intégration de coova-chilli en substitution à chillispot ; reste à intégrer dans alcasar.sh à l'installation-update
* modif import_user.php :
* remontée de import_user.php à la racine du centre de gestion ; modification dans les différentes interfaces dont les menus
* sortie sur un fichier unique ; reste à récupérer par le biais de l'interface
* modif chilli.conf : interval=0 (évite le relancement de chilli toute les heures)
 
# 1.6
* Durcissement du parefeu (fermeture de ports) et adaptation des règles à l'interface "firewalleyes"
* Simplification de la structure des fichiers de sauvegardes (/var/Save)
* Mise à jour du fichier de configuration squidGuard (intégration de tous les domaines de la BL de Toulouse)
* Séparation des RPM additionnels de l'archive du portail
* Réécriture du script de génération des certificats de l'A.C et du serveur WEB
* Automatisation de la procédure de mise à jour
* Amélioration de l'interface de gestion :
* Meilleure intégration graphique et francisation
* Prise en compte des créneaux horaires, de la durée des sessions et de la date d'expiration du mot de passe
* Suppression du menu certificat (intégration dans la page d'accueil)
* Refonte de la page de gestion des blacklists et rationalisation des scripts php associés
* Import d'usagers (à partir d'un fichier texte ou d'une base complète) et RAZ de la base
* Déconnexion des usagers par ALCASAR (radiusd + chilli) et non plus seulement par le navigateur WEB (paramètre 'coaport')
* Modification squid.conf (compatibilité toute distrib MDV).
* Simplification du module de création de l'image système (alcasar-mondo.sh).
* Correction des bugs suivants :
* Disparition des statistiques de consultation web après une mise à jour
* Deconnexion d'un usager à partir de l'interface de gestion
* possibilité de créer des groupes vides (en fait avec un usager virtuel portant le même nom que le groupe).
* Création des scripts alcasar-bl.sh (activation/désactivation/mise à jour du filtrage), alcasar-logout.sh (déconnexion des usagers) et alcasar-mysql (import usagers via txt et sql + raz de la base).
 
# 1.5
* prise en compte du nom de baptême du portail : ALCASAR
* intégration d'un script PHP permettant de personnaliser le logo
* intégration du contournement du bug 'MSIE' pour les pages gestion.
* Intégration de l'interface PHP d'informations système ( phpsysinfo) et ajout d'un module Alcasar (nbr.usagers, version d'installation, version de la blacklist, @IP publique).
* Réécriture des scripts d'install et de désinstall (alcasar-uninstall.sh)
* intégration d'un test de connectivité à Internet
* réorganisation des fonctions
* création de l'option 'uninstall' permettant de désinstaller complétement le portail (afin de pouvoir lancer des séquences d'install/désinstall pour les tests)
* permettre le choix du nom pour les comptes autorisés à administrer le portail
* Réécriture de la page de gestion et intégration des fonctionnalités nouvelles suivantes :
* mise à jour de la blacklist squidGuard (globale + OSSI)
* sauvegarde à chaud du système, sauvegarde des logs et de la base usagers
* visu des logs du parefeu
* Modification du fichier sudoers permettant le lancement des commandes via la page de gestion
* Ajout de l'option -update pour mettre à jour le portail déjà installé (option compatible avec versions >= 1.5)
* Amélioration des règles du pare-feu (moins de Logs mais plus pertinents)
* Gestion des erreurs 404 d'apache par une redirection sur la page d'accueil
* Possibilité de changer son mot de passe via la page de connexion et la page de gestion
* Correction des bugs suivants :
* la comptabilité utilisateur dans dialupadmin est de nouveau fonctionnelle
* l'export chaque semaine de la base des utilisateurs est de nouveau fonctionnel
* homogénéisation de la gestion des cron ==> tout dans /etc/cron.d/
* déplacement de la structure d'awstat pour permettre la visu complète des pages (var/www/awstats -> /var/www/html/awstats)
* Intégration d'une interface PHP de lecture des log du parefeu ( firewallEyes )
* Implémentation du certificat gnupg pour le chiffrement éventuel des logs
* Modification mineure du script de génération à chaud d'image système (alcasar-mondo.sh)
* Modification des pages de dialupadmin ( francisation, simplification, etc.)
* Intégration dans le fichier archive des rpms supplémentaires et de la blacklist (évite leur téléchargement par internet)
 
# 1.4
* Réécriture du script de mise à jour de la blacklist squidGuard
* Uniformisation du script d'install
* Correction du script de désinstallation (alcasar-uninstall.sh) et de sauvegarde de la base radius (alcasar-mysql.sh)
* Mise en place d'une page WEB d'accueil pour la gestion du portail
* Suppression des cgi-bin installés par défaut
 
# 1.3
* Création d'une structure 'OSSI' dans la blacklist SquidGuard
* Modification de la page d'interception SquidGuard.
* Anonymisation de la structure LAN dans les trames traitées par Squid (forward_for off dans squid.conf).
* Correction de la fonction 'bypass'.
* Mise en place de la possibilité de chiffrer les logs (par gnupg).
* Correction du mot de passe dans le script d'export lorsqu'il est changé à l'install.
* Correction de la structure d'archivage et prise en compte du contenu des fichiers à sauvegarder.
* Mise en place du cron de sauvegarde des configurations.
 
# 1.2
* Consolidation de la fonction de désinstallation (création systématique de fichiers '.default' lors de modification)
* Configuration des services lancés au démarrage (chkconfig).
* Françisation du CGI "hotspotlogin" (codage des accents).
* Possibilité de lancer le script sans argument (-all par défaut).
* Suppression des "Logs Martians".
 
# 1.1
* Consolidation de la variable FIC_PARAM.
* Suppression de la déclaration des DNS dans le fichier de conf de chilli (on s'appuie sur les DNS locaux définis dans "/etc/resolv.conf").
* Modification de la page d'authentification (plus générique).
* Réorganisation de la structure de l'archive d'install.
* Modification des directives de chiffrement d'apache (SSLRequireSSL).
 
# 1.0
* Version initiale que l'on trouve déjà excellente ;-)
/README.md
0,0 → 1,22
# ALCASAR TODO
 
## ALCASAR-3.6.1
# English
* New installation :
* Boot your system with the ISO file of Linux-Mageia-8 (or with "Mageiar" ISO file which is customized ISO file of Linux-Mageia (Linux Mageia + ALCASAR = Mageiar).
* Follow ALCASAR installation documentation.
* Update ALCASAR 3.5.x & 3.6.0 :
* Copy, uncompress and run the installation script. It asks you if you want to update.
* Update older versions
* On your running ALCASAR, create and retrieve the configuration file via ACC (or with the command : "alcasar-conf.sh -create"). This configuration file (alcasar-conf.tar.gz) is stored in "/var/tmp/" (or in "/tmp/").
* Install the Linux-Mageia-8 as a new installation, but without formating the "/var" partition. Just before running the ALCASAR installation script, verify that your configuration file (alcasar-conf.tar.gz) is indeed in "/var/tmp/" folder. Copy it in this folder if necessary.
 
# Français
* Nouvelle installation :
* Démarrez votre système avec l'image ISO de Linux-Mageia-8 (ou l'image ISO de "Mageiar" qui est une image ISO personnalisée de Linux-Mageia (Linux Mageia + ALCASAR = Mageiar).
* Suivez la documentation d'installation d'ALCASAR.
* Mise à jour d'une version 3.5.x et 3.6.0 :
* Copiez, décompressez et lancez le script d'installation. Il vous demandera si vous voulez mettre à jour.
* Mise à jour d'une version plus ancienne
* Sur votre ALCASAR en fonctionnement, créez et récupérez le fichier de configuration via l'ACC (ou avec la commande : "alcasar-conf.sh -create"). Ce fichier de configuration (alcasar-conf.tar.gz) est enregistré dans le répertoire "/var/tmp/' (ou "/tmp/").
* Installez Linux-Mageia-8 comme pour une nouvelle installation, mais sans formater la partition "/var/". Juste avant de lancer le script d'installation d'ALCASAR, vérifiez que votre fichier de configuration (alcasar-conf.tar.gz) et bien dans le répertoire "/var/tmp". Copiez-le dans ce répertoire le cas échéant.
/SECURITY.md
0,0 → 1,11
# Reporting Security Issues
 
The ALCASAR team takes security bugs seriously. We appreciate your efforts to responsibly disclose your findings.
 
## Reporting a Vulnerability
 
You can email info@alcasar.net, and we will respond as quickly as possible.
 
You can also post in the "security" section of [ALCASAR FORUM](https://adullact.net/forum/?group_id=450)
 
If the vulnerability is accepted, a patch will be published.
/TODO.md
0,0 → 1,4
# ALCASAR TODO
 
* See : https://alcasar.net/work
* See : Chapter14 of [exploitation documentation](https://alcasar.net/download)
/alcasar.sh
2337,7 → 2337,7
$func
if [ $DEBUG_ALCASAR == "on" ]
then
echo "*** 'debug' : end of function '$func' ***"
echo "*** 'debug' : end installing function '$func' ***"
read
fi
done
2421,7 → 2421,7
$func
if [ $DEBUG_ALCASAR == "on" ]
then
echo "*** 'debug' : end of function '$func' ***"
echo "*** 'debug' : end installing function '$func' ***"
read
fi
done
/conf/etc/alcasar-wl-categories-enabled
File deleted
/scripts/alcasar-bl.sh
209,7 → 209,7
mv $DIR_tmp/$x $DIR_DG_BL
done
fi
rm -f $BL_CATEGORIES $WL_CATEGORIES
rm -f $BL_CATEGORIES $WL_CATEGORIES $WL_CATEGORIES_ENABLED
rm -rf $DIR_DNS_BL $DIR_DNS_WL $DIR_IP_BL $DIR_IP_WL
rm -rf $DIR_DNS_BL_ENABLED $DIR_DNS_WL_ENABLED $DIR_IP_BL_ENABLED $DIR_IP_WL_ENABLED
touch $BL_CATEGORIES $WL_CATEGORIES
223,11 → 223,11
categorie_type=`grep -A1 ^NAME:[$' '$'\t']*$categorie\$ $DIR_DG_BL/global_usage | grep ^DEFAULT_TYPE | cut -d":" -f2 | tr -d " \t"`
if [ "$categorie_type" == "white" ]
then
echo "$dir_categorie" >> $WL_CATEGORIES
else
echo "$dir_categorie" >> $BL_CATEGORIES
echo "$categorie" >> $WL_CATEGORIES_ENABLED
fi
done
echo "$dir_categorie" >> $BL_CATEGORIES
echo "$dir_categorie" >> $WL_CATEGORIES
done
rm -f $FILE_tmp
# Verify that the enabled categories are effectively in the BL (need after an update of the BL)
for ENABLE_CATEGORIE in `cat $BL_CATEGORIES_ENABLED`
/scripts/alcasar-uninstall.sh
361,7 → 361,7
echo -en "\n- $func "
$func
if [ $DEBUG_ALCASAR == "on" ]; then
echo -n " *** 'debug' : end of cleaning '$func' *** "
echo -n " *** 'debug' : end removing function '$func' *** "
read a
fi
done
/web/acc/alcasar-3.6.0-presentation-en.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.0-installation-en.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.0-technique.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.0-presentation-fr.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.0-installation-fr.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.0-exploitation-en.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.0-exploitation-fr.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/admin/bl_categories_help.php
10,13 → 10,11
$wl_unbound_dir="/usr/local/share/unbound-wl/";
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
$Langue = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$Language = strtolower(substr(chop($Langue[0]),0,2));
}
if($Language == 'fr')
{
if($Language == 'fr'){
$l_title = "Catégories de la liste noire";
$l_error_open_file="Erreur d'ouverture du fichier";
$l_close="Fermer";
53,107 → 51,54
$l_error_cat = "Error category";
$l_error_list = "Error listing";
}
if(isset($_GET['cat']))
{
if(isset($_GET['cat'])){
$categorie = $_GET['cat'];
}
else
{
else {
$categorie = $l_error_cat;
}
if(isset($_GET['liste']))
{
$liste = $_GET['liste'];
$bl_categorie_domain_file = $bl_unbound_dir.$categorie.".conf";
$bl_categorie_url_file = $bl_dir.$categorie."/urls";
$bl_categorie_ip_file = $bl_iptables_dir.$categorie;
//don't calc again on reload (click on the number of domain/urls/ip)
if (isset ($_GET['nb_domains']) && isset($_GET['nb_urls']) && isset($_GET['nb_ip'])){
$nb_domains = $_GET['nb_domains'];
$nb_urls = $_GET['nb_urls'];
$nb_ip = $_GET['nb_ip'];
}
else
{
$liste = $l_error_list;
}
if($liste == "bl")
{
$bl_categorie_domain_file = $bl_unbound_dir.$categorie.".conf";
$bl_categorie_url_file = $bl_dir.$categorie."/urls";
$bl_categorie_ip_file = $bl_iptables_dir.$categorie;
//don't calc again on reload (click on the number of domain/urls/ip)
if (isset ($_GET['nb_domains']) && isset($_GET['nb_urls']) && isset($_GET['nb_ip']))
{
$nb_domains = $_GET['nb_domains'];
$nb_urls = $_GET['nb_urls'];
$nb_ip = $_GET['nb_ip'];
}
else
{
if (file_exists($bl_categorie_domain_file))
{
else {
if (file_exists($bl_categorie_domain_file)){
# two lines per domain
$nb_domains = exec("wc -l $bl_categorie_domain_file | cut -d ' ' -f1") / 2;
}
else
{
else {
$nb_domains = $l_error_open_file." ".$bl_categorie_domain_file;
}
 
if (file_exists($bl_categorie_url_file))
{
if (file_exists($bl_categorie_url_file)){
$nb_urls = exec ("wc -l $bl_categorie_url_file | cut -d ' ' -f1");
}
else
{
else {
$nb_urls = $l_error_open_file." ".$bl_categorie_url_file;
}
 
if(file_exists($bl_categorie_ip_file))
{
if(file_exists($bl_categorie_ip_file)){
$nb_ip = exec("wc -l $bl_categorie_ip_file | cut -d ' ' -f1");
}
else
{
else {
$nb_ip = $l_error_open_file." ".$bl_categorie_ip_file;
}
}
}
else
{
$wl_categorie_domain_file = $wl_unbound_dir.$categorie.".conf";
$wl_categorie_ip_file = $wl_iptables_dir.$categorie;
if (file_exists($wl_categorie_domain_file))
{
$nb_domains = exec("wc -l $wl_categorie_domain_file | cut -d ' ' -f1");
}
else
{
$nb_domains = $l_error_open_file." ".$wl_categorie_domain_file;
}
 
if (file_exists($wl_categorie_ip_file))
{
$nb_ip = exec("wc -l $wl_categorie_ip_file | cut -d ' ' -f1");
}
else
{
$nb_ip = 0;
//$nb_ip = $l_error_open_file." ".$wl_categorie_ip_file;
}
 
$nb_urls = 0; //no urls in WL
}
$global_usage = file($bl_dir."global_usage");
$langue = strtoupper($Language);
if(isset($categorie))
{
if(isset($categorie)){
$fin1 = 0; $fin2 = 0;
foreach ($global_usage as $line)
{
if(preg_match("#^NAME:.$categorie$#", $line) == 1)
{
foreach ($global_usage as $line){
if(preg_match("#^NAME:.$categorie$#", $line) == 1){
$fin1 = 1;
}
if($fin1 && preg_match("#^DESC.$langue:.#", $line) == 1)
{
if($fin1 && preg_match("#^DESC.$langue:.#", $line) == 1){
$l_description_cat = preg_replace("#^DESC.$langue:.#", "", $line);
}
if($fin1 && preg_match("#^NAME.$langue:.#", $line) == 1)
{
if($fin1 && preg_match("#^NAME.$langue:.#", $line) == 1){
$l_name_cat = preg_replace("#^NAME.$langue:.#", "", $line);
$fin2 = 1;
}
172,23 → 117,12
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1>
<tr><td valign="middle" align="left">
<?php
if(isset($_GET["filtre"]))
{
$filtre = $_GET["filtre"];
}
else
{
$filtre = $liste == "bl" ? $bl_categorie_domain_file : $wl_categorie_domain_file;
}
$filtre_domain = $liste == "bl" ? $bl_categorie_domain_file : $wl_categorie_domain_file;
$filtre_ip = $liste == "bl" ? $bl_categorie_ip_file : $wl_categorie_ip_file;
$filtre_url = $liste == "bl" ? $bl_categorie_url_file : "";
$compat_categorie=strtr($categorie,"-","_");
echo "<br><center><b>$l_name_cat</b></center>";
echo "<center><b>$l_description_cat</b></center><br>";
echo "$l_nb_domains <b><a href='?liste=$liste&cat=$categorie&filtre=$filtre_domain&titre=domain&nb_domains=$nb_domains&nb_urls=$nb_urls&nb_ip=$nb_ip'>$nb_domains</a></b><br>";
echo "$l_nb_urls <b><a href='?liste=$liste&cat=$categorie&filtre=$filtre_url&titre=url&nb_domains=$nb_domains&nb_urls=$nb_urls&nb_ip=$nb_ip'>$nb_urls</a></b><br>";
echo "$l_nb_ip <b><a href='?liste=$liste&cat=$categorie&filtre=$filtre_ip&titre=ip&nb_domains=$nb_domains&nb_urls=$nb_urls&nb_ip=$nb_ip'>$nb_ip</a></b><br>";
echo "$l_nb_domains <b><a href='?cat=$categorie&filtre=$bl_categorie_domain_file&titre=domain&nb_domains=$nb_domains&nb_urls=$nb_urls&nb_ip=$nb_ip'>$nb_domains</a></b><br>";
echo "$l_nb_urls <b><a href='?cat=$categorie&filtre=$bl_categorie_url_file&titre=url&nb_domains=$nb_domains&nb_urls=$nb_urls&nb_ip=$nb_ip'>$nb_urls</a></b><br>";
echo "$l_nb_ip <b><a href='?cat=$categorie&filtre=$bl_categorie_ip_file&titre=ip&nb_domains=$nb_domains&nb_urls=$nb_urls&nb_ip=$nb_ip'>$nb_ip</a></b><br>";
?>
</td></tr>
</TABLE>
196,12 → 130,10
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><th>
<?php
if(isset($_GET["titre"]))
{
if(isset($_GET["titre"])){
$titre = $_GET["titre"];
}
else
{
else {
$titre = "domain";
}
echo $l_example.$titre;
212,23 → 144,16
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1>
<tr><td valign="middle" align="left">
<?php
if($titre == "domain")
{
 
$filtre = $liste == "bl" ? $bl_categorie_domain_file : $wl_categorie_domain_file;
exec("head -n 15 ".escapeshellarg($filtre)." | grep 'transparent' | awk '{ print $2 }'", $resultat);
if($titre == "domain"){
exec("head -n 15 ".escapeshellarg($bl_categorie_domain_file)." | grep 'transparent' | awk '{ print $2 }'", $resultat);
}
elseif($titre == "ip")
{
$filtre = $liste == "bl" ? $bl_categorie_ip_file : $wl_categorie_ip_file;
exec("head -n 15 ".escapeshellarg($filtre)." | cut -d ' ' -f3", $resultat);
elseif($titre == "ip"){
exec("head -n 15 ".escapeshellarg($bl_categorie_ip_file)." | cut -d ' ' -f3", $resultat);
}
else
{
exec("head -n 15 ".escapeshellarg($filtre), $resultat);
else {
exec("head -n 15 ".escapeshellarg($bl_categorie_ip_file), $resultat);
}
for($i=0; $i<count($resultat); $i++)
{
for($i=0; $i<count($resultat); $i++){
echo $resultat[$i]."<br/>";
}
?>
/web/acc/admin/bl_filter.php
10,41 → 10,34
<div class="lds-spinner" id="spinner"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div>
</div>
<?
function form_filter ($form_content)
{
// réencodage iso + format unix + rc fin de ligne (ouf...)
function form_filter ($form_content){
// Re-encoding : ISO + unix format + end-of-line
$list = str_replace("\r\n", "\n", utf8_decode($form_content));
if (strlen($list) != 0){
if ($list[strlen($list)-1] != "\n") { $list[strlen($list)]="\n";} ;} ;
return $list;
}
function form_filter_ip($form_content, $color)
{
//# reconstruction des ip
 
function form_filter_ip($form_content, $color){
// IP reconstruction
$list = explode("\n", form_filter($form_content));
$new_list = "";
foreach ($list as &$value)
{
if(preg_match('/([0-9]{1,3}.){3}[0-9]{1,3}/', $value))
{
foreach ($list as &$value){
if(preg_match('/([0-9]{1,3}.){3}[0-9]{1,3}/', $value)){
$new_list = $new_list.$value."\n";
}
}
if($color == "white")
{
if($color == "white"){
return preg_replace("/(.*)\n/", "add wl_ip_allowed $1\n", $new_list);
}
else
{
else {
return preg_replace("/(.*)\n/", "add bl_ip_blocked $1\n", $new_list);
}
}
function echo_file ($filename)
{
if (file_exists($filename))
{
if (filesize($filename) != 0)
{
 
function echo_file ($filename){
if (file_exists($filename)){
if (filesize($filename) != 0){
$pointeur=fopen($filename,"r");
$tampon = fread($pointeur, filesize($filename));
fclose($pointeur);
51,17 → 44,14
echo $tampon;
}
}
else
{
else {
echo "$filename doesn't exist";
}
}
function echo_ip_file ($filename)
{
function echo_ip_file ($filename){
$filename = escapeshellarg($filename);
exec("cat $filename | cut -d ' ' -f3", $resultat);
for($i=0; $i<exec("wc -l $filename"); $i++)
{
for($i=0; $i<exec("wc -l $filename"); $i++){
echo $resultat[$i]."\n";
}
}
74,6 → 64,7
}
if($Language == 'fr'){
$l_bl="Liste noire principale";
$l_state="Sont actuellement bloqués : ";
$l_load="Chargement...";
$l_list_version="Version de la liste : ";
$l_bl_categories="Sélectionnez les catégories à filtrer";
110,9 → 101,9
$l_submit="Envoyer";
$l_nb_ip="Nombre d'IP";
$l_nb_domain_names="Nombre de noms de domaine";
$l_nbDomainNames="Noms de domaine :";
$l_nbUrl="Url :";
$l_nbIp="Ip :";
$l_nbDomainNames="noms de domaine";
$l_nbUrl="URL";
$l_nbIp="@Ip";
$l_update_cat="Blacklist principale (catégorie 'malware' uniquement)";
$l_update_cat_header="Mise à jour automatique des Blacklists";
$l_update_success="Échec de la mise à jour";
161,9 → 152,9
$l_submit="Enviar";
$l_nb_ip="Números de IP";
$l_nb_domain_names="Números de sitios";
$l_nbDomainNames="Domain names: ";
$l_nbUrl="Url :";
$l_nbIp="Ip :";
$l_nbDomainNames="sitios";
$l_nbUrl="URL";
$l_nbIp="IP@";
$l_update_cat="¿Actualizar automáticamente las categorías cada 12 horas (solo 'malware' por ahora)?";
$l_update_cat_header="Actualización automática de la lista negra";
$l_update_success="actualización fallida";
245,29 → 236,24
$updateable_ossi_bls=["ossi-bl-candc"];
 
# default values
if (is_file ($conf_file))
{
if (is_file ($conf_file)){
$tab=file($conf_file);
if ($tab)
{
foreach ($tab as $line)
{
if ($tab){
foreach ($tab as $line){
$field=explode("=", $line);
switch ($field[0]) {
switch ($field[0]){
case 'PRIVATE_IP':
$PRIVATE_IP_MASK=trim($field[1]);
$tmp = explode("/",$PRIVATE_IP_MASK);
$PRIVATE_IP=$tmp[0];
break;
 
case 'BL_SAFESEARCH':
if (strtolower(trim($field[1])) == 'on') {
if (strtolower(trim($field[1])) == 'on'){
$bl_safesearch='on';
}
break;
 
case 'BL_PUREIP':
if (strtolower(trim($field[1])) == 'on') {
if (strtolower(trim($field[1])) == 'on'){
$bl_pureip='on';
}
break;
277,8 → 263,7
}
else { echo "$l_error_open_file $conf_file";}
if (isset($_POST['choix'])){ $choix=$_POST['choix']; } else { $choix=""; }
switch ($choix)
{
switch ($choix){
case 'Download_list' :
exec ("sudo /usr/local/bin/alcasar-bl.sh --download");
break;
290,14 → 275,11
unlink ("$dir_tmp/blacklists.tar.gz"); unlink ("$dir_tmp/md5sum");
break;
case 'MAJ_cat_bl' :
if (file_exists($bl_categories_enabled))
{
if (file_exists($bl_categories_enabled)){
exec("/bin/sed -i \"/^ossi-/!d\" $bl_categories_enabled"); // keep ossi custom categories
$pointeur=fopen($bl_categories_enabled, "a+");
foreach ($_POST as $key => $value)
{
if (strstr($key,'chk-'))
{
foreach ($_POST as $key => $value){
if (strstr($key,'chk-')){
$line=str_replace('chk-','',$key)."\n";
fwrite($pointeur,$line);
}
322,8 → 304,7
case 'Specific_filtering':
$bl_pureip='off';
$bl_safesearch='off';
foreach ($_POST as $key => $value)
{
foreach ($_POST as $key => $value){
if (strstr($key,'chk-ip')) $bl_pureip="on";
if (strstr($key,'chk-safesearch')) $bl_safesearch="on";
}
330,43 → 311,32
exec ("sudo /usr/local/bin/alcasar-url_filter_bl.sh -safesearch_$bl_safesearch -pureip_$bl_pureip");
break;
case 'MAJ_ossi_file' :
foreach ($_POST as $fichier => $value)
{
if($fichier != "choix" && $fichier != "update_cat")
{
foreach ($_POST as $fichier => $value){
if($fichier != "choix" && $fichier != "update_cat"){
$action=$_POST[$fichier];
if($action == $l_remove) //delete
{
if($action == $l_remove){ //delete
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $bl_categories_enabled");
exec("/bin/sed -i ".escapeshellarg("/$fichier\$/d")." $bl_categories");
exec("rm -rf $dir_blacklist".escapeshellarg($fichier));
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
if($action == $l_disable) //disable
{
 
if($action == $l_disable){ //disable
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $bl_categories_enabled");
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
if($action == $l_enable) //enable
{
if($action == $l_enable){ //enable
file_put_contents($bl_categories_enabled, $fichier."\n", FILE_APPEND);
exec("sudo /usr/local/bin/alcasar-bl.sh --reload 2>&1", $out, $ret);
}
if($action == $l_update) //update
{
if ($fichier == ossi-bl-candc)
{
if($action == $l_update){ //update
if ($fichier == ossi-bl-candc){
exec("sudo /usr/local/bin/alcasar-bl-autoupdate.sh --update_ossi-bl-candc 2>&1", $out, $ret);
if ($ret == 0)
{
if ($ret == 0){
echo "<p>".$l_update_success."</p>";
}
else
{
else {
echo "<p>".$l_update_failed.":</p>";
foreach ($out as $line)
{
foreach ($out as $line){
echo "<p>".$line."</p>";
}
}
381,20 → 351,13
fclose($f);
$f = fopen($update_file_ossi_cat, 'w');
fclose($f);
foreach ($_POST as $fichier => $value)
{
// General BL
if ($fichier == 'update_cat' && $value == 1)
{
if (file_exists($bl_categories_enabled))
{
foreach ($_POST as $fichier => $value){ // General BL
if ($fichier == 'update_cat' && $value == 1){
if (file_exists($bl_categories_enabled)){
file_put_contents($update_file_cat, "malware rsync://ftp.ut-capitole.fr/blacklist/dest/malware\n", FILE_APPEND);
}
}
// C&C Server List
if ($fichier == 'ossi-bl-candc' && $value == 1)
{
if ($fichier == 'ossi-bl-candc' && $value == 1){ // C&C Server List
file_put_contents($update_file_ossi_cat, "alcasar-bl-autoupdate.sh --update_ossi-bl-candc\n", FILE_APPEND);
}
}
403,20 → 366,17
$bad_char = array(" ", ".");
$file_name = str_replace ($bad_char, "_",basename($_FILES['fichier_ip']['name']));
$dest_dir = $dir_blacklist."ossi-bl-".$file_name; # /etc/e2guardian/list/blacklist/ossi-bl-XXXXXXXX
if((!empty($file_name)) && (!file_exists($dest_dir)))
{
if((!empty($file_name)) && (!file_exists($dest_dir))){
exec("mkdir ".escapeshellarg($dest_dir));
$file=$_FILES['fichier_ip']['tmp_name'];
exec('/usr/bin/dos2unix '.escapeshellarg($file));
if(move_uploaded_file($_FILES['fichier_ip']['tmp_name'], $dest_dir."/domains")) // copy in the file "domains" (containing @ip & domain names (like over Toulouse categories))
{
if(move_uploaded_file($_FILES['fichier_ip']['tmp_name'], $dest_dir."/domains")){ // copy in the file "domains" (containing @ip & domain names (like over Toulouse categories))
touch ($dest_dir."/urls"); // create the URL file even if it isn't used
file_put_contents ($bl_categories, $dest_dir."\n", FILE_APPEND); // add to the categories list
file_put_contents ($bl_categories_enabled, "ossi-bl-".$file_name."\n", FILE_APPEND); //Enabled by default
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
else
{
else {
exec("rm -rf ".escapeshellarg($dest_dir));
echo $l_error_upload;
}
463,22 → 423,20
<?php
echo "<center>";
// total number of IP, DNS & URLs
$nbDomainNames = exec("wc -l /usr/local/share/unbound-bl/* | tail -n 1 | awk '{print $1}'") / 2;
$nbDomainNames = exec("wc -l $dir_bl_domain_names_enabled* | tail -n 1 | awk '{print $1}'2") / 2;
$nbUrl = exec("for file in `find /etc/e2guardian/lists/blacklists/ -name 'urls'`; do nb=$((nb+$(wc -l \$file | awk '{print $1}'))); done; echo \$nb");
$nbIp = exec("wc -l /usr/local/share/iptables-bl/* | tail -n 1 | awk '{print $1}'");
echo "<b>$l_nbDomainNames</b> $nbDomainNames, <b>$l_nbUrl</b> $nbUrl, <b>$l_nbIp</b> $nbIp<br/>";
$nbIp = exec("wc -l $dir_bl_ip_enabled* | tail -n 1 | awk '{print $1}'");
echo "$l_state $nbDomainNames <b>$l_nbDomainNames</b>, $nbUrl <b>$l_nbUrl</b>, $nbIp <b>$l_nbIp</b><br/>";
echo "$l_bl_categories</center></td></tr>";
//read & display all BL categories (checked or not)
//read & display all categories (checked or not)
$cols=1;
if (file_exists($bl_categories))
{
if (file_exists($bl_categories)){
$bl_files = file($bl_categories);
$bl_files = preg_grep("/ossi-/", $bl_files, 1); // don't display ossi custom categories
foreach ($bl_files as $fichier => $value)
{
foreach ($bl_files as $fichier => $value){
if ($cols == 1) { echo "<tr>";}
$categorie=trim(basename($value));
echo "<td><a href='bl_categories_help.php?liste=bl&cat=$categorie' target='cat_help' onclick=\"window.open('bl_categories_help.php','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes')\" title='categories help page'>$categorie</a><br>";
echo "<td><a href='bl_categories_help.php?cat=$categorie' target='cat_help' onclick=\"window.open('bl_categories_help.php','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes')\" title='categories help page'>$categorie</a><br>";
echo "<input type='checkbox' name='chk-$categorie'";
// if the line is commented, the category is disable
if (preg_match('/^#/',$value, $r)) { echo ">";}
485,7 → 443,7
else { echo " checked>"; }
echo "</td>";
$cols++;
if ($cols > 10) {
if ($cols > 10){
echo "</tr>\n";
$cols=1;
}
494,7 → 452,6
else {
echo "$l_error_open_file $bl_categories";
}
 
echo "</tr>\n";
echo "<tr><td valign='middle' align='left' colspan=10>";
echo "<center>
538,15 → 495,13
//list OSSI custom categories
$fichiersbl = array_diff(scandir($dir_blacklist), array('..','.','ossi-bl','ossi-wl'));
$fichiersbl = preg_grep("/^ossi-bl-/",$fichiersbl);
foreach ($fichiersbl as $fichier => $value)
{
echo "<tr><td><center><a href='bl_categories_help.php?liste=bl&cat=$value&filtre=domain' target='cat_help' onclick=\"window.open('bl_categories_help','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes')\" title='categories help page'>".substr($value,8)."</a></center></td><td><center>".exec("wc -l $dir_bl_ip$value | cut -d\" \" -f1")."</center></td><td><center>".exec("wc -l $dir_bl_domain_names$value.conf | cut -d\" \" -f1")."</center></td><td><center><input type='submit' name='$value'";
foreach ($fichiersbl as $fichier => $value){
echo "<tr><td><center><a href='bl_categories_help.php?cat=$value&filtre=domain' target='cat_help' onclick=\"window.open('bl_categories_help','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes')\" title='categories help page'>".substr($value,8)."</a></center></td><td><center>".exec("wc -l $dir_bl_ip$value | cut -d\" \" -f1")."</center></td><td><center>".exec("wc -l $dir_bl_domain_names$value.conf | cut -d\" \" -f1")."</center></td><td><center><input type='submit' name='$value'";
if (file_exists ($dir_bl_domain_names_enabled.$value)) echo " value='$l_disable'>"; else echo " value='$l_enable'>";
echo "</center></td><td><center><input type='submit' name='$value' value='$l_remove'></center></td>";
if (in_array($value,$updateable_ossi_bls)) echo "<td><center><input type='submit' name='$value' value='$l_update'></center></td>"; else echo "<td><center>$l_no_update_configured</center></td>";
echo "</tr>";
}
 
echo "</table>";
echo "</form><br></td>";
echo "<td width=50% colspan=5 align=center><H3>$l_add_file</H3>";
584,9 → 539,7
echo "<input type='radio' name='update_cat' value=1 ".$update_select[1]." >".$l_enable;
echo "</td>";
// Display update checkbox for each updateable ossi-bl
foreach ($updateable_ossi_bls as $value)
{
//check if autoupdate is enabled
foreach ($updateable_ossi_bls as $value){ //check if autoupdate is enabled
$update_ossi_select = ["", ""];
if ( strpos(file_get_contents($update_file_ossi_cat),$value) !== false ) $update_ossi_select[1] = "checked";
else $update_ossi_select[0] = "checked";
/web/acc/admin/wl_filter.php
10,41 → 10,34
<div class="lds-spinner" id="spinner"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div>
</div>
<?
function form_filter ($form_content)
{
// réencodage iso + format unix + rc fin de ligne (ouf...)
function form_filter ($form_content){
// Re-encoding : ISO + unix format + end-of-line
$list = str_replace("\r\n", "\n", utf8_decode($form_content));
if (strlen($list) != 0){
if ($list[strlen($list)-1] != "\n") { $list[strlen($list)]="\n";} ;} ;
return $list;
}
function form_filter_ip($form_content, $color)
{
//# reconstruction des ip
 
function form_filter_ip($form_content, $color){
// IP reconstruction
$list = explode("\n", form_filter($form_content));
$new_list = "";
foreach ($list as &$value)
{
if(preg_match('/([0-9]{1,3}.){3}[0-9]{1,3}/', $value))
{
foreach ($list as &$value){
if(preg_match('/([0-9]{1,3}.){3}[0-9]{1,3}/', $value)){
$new_list = $new_list.$value."\n";
}
}
if($color == "white")
{
if($color == "white"){
return preg_replace("/(.*)\n/", "add wl_ip_allowed $1\n", $new_list);
}
else
{
else {
return preg_replace("/(.*)\n/", "add bl_ip_blocked $1\n", $new_list);
}
}
function echo_file ($filename)
{
if (file_exists($filename))
{
if (filesize($filename) != 0)
{
 
function echo_file ($filename){
if (file_exists($filename)){
if (filesize($filename) != 0){
$pointeur=fopen($filename,"r");
$tampon = fread($pointeur, filesize($filename));
fclose($pointeur);
51,17 → 44,15
echo $tampon;
}
}
else
{
else {
echo "$filename doesn't exist";
}
}
function echo_ip_file ($filename)
{
 
function echo_ip_file ($filename){
$filename = escapeshellarg($filename);
exec("cat $filename | cut -d ' ' -f3", $resultat);
for($i=0; $i<exec("wc -l $filename"); $i++)
{
for($i=0; $i<exec("wc -l $filename"); $i++){
echo $resultat[$i]."\n";
}
}
74,6 → 65,7
}
if($Language == 'fr'){
$l_wl="Liste blanche principale";
$l_state="Sont actuellement autorisés : ";
$l_load="Chargement...";
$l_list_version="Version de la liste : ";
$l_wl_categories="Sélectionnez les catégories à autoriser";
95,14 → 87,15
$l_submit="Envoyer";
$l_nb_ip="Nombre d'IP";
$l_nb_domain_names="Nombre de noms de domaine";
$l_nbDomainNames="Noms de domaine :";
$l_nbUrl="Url :";
$l_nbIp="Ip :";
$l_nbDomainNames="noms de domaine";
$l_nbUrl="URL";
$l_nbIp="@IP";
$l_disable="Désactiver";
$l_enable="Activer";
$l_file_state="Etat";
} else if($Language == 'es') {
} else if($Language == 'es'){
$l_wl="Lista blanca principal";
$l_state="The following are currently authorized : ";
$l_load="Cargando...";
$l_list_version="Versión de la lista: ";
$l_wl_categories="Seleccione las categorías permitidas";
124,14 → 117,15
$l_submit="Enviar";
$l_nb_ip="Número de IPs";
$l_nb_domain_names="Número de sitios";
$l_nbDomainNames="Sitios:";
$l_nbUrl="Url :";
$l_nbIp="Ip :";
$l_nbDomainNames="sitios";
$l_nbUrl="URL";
$l_nbIp="IP@";
$l_disable="Desactivar";
$l_enable="Activar";
$l_file_state="Estado";
} else {
$l_wl="Main WhiteList";
$l_state="Actualmente están autorizados los siguientes : ";
$l_load="Loading...";
$l_list_version="List version : ";
$l_wl_categories="Select the allowed categories";
153,9 → 147,9
$l_submit="Submit";
$l_nb_ip="Number of IP";
$l_nb_domain_names="Number of domain names";
$l_nbDomainNames="Domain names :";
$l_nbUrl="Url :";
$l_nbIp="Ip :";
$l_nbDomainNames="domain names";
$l_nbUrl="URL";
$l_nbIp="IP@";
$l_disable="Disable";
$l_enable="Enable";
$l_file_state="State";
164,9 → 158,9
$dir_dg="/etc/e2guardian/lists/";
$dir_blacklist=$dir_dg."blacklists/";
$dir_wl_ip="/usr/local/share/iptables-wl/";
$dir_wl_ip_enabled= "/usr/local/share/iptables-wl-enabled/";
$dir_wl_domain_names= "/usr/local/share/unbound-wl/";
$dir_wl_domain_names_enabled= "/usr/local/share/unbound-wl-enabled/";
$dir_wl_ip_enabled="/usr/local/share/iptables-wl-enabled/";
$dir_wl_domain_names="/usr/local/share/unbound-wl/";
$dir_wl_domain_names_enabled="/usr/local/share/unbound-wl-enabled/";
$wl_categories=$dir_etc."alcasar-wl-categories";
$wl_categories_enabled=$dir_etc."alcasar-wl-categories-enabled";
$conf_file=$dir_etc."alcasar.conf";
173,27 → 167,22
$domainfilter_file="/etc/unbound/conf.d/whitelist/domainfilter.conf";
$bannedsite_file=$dir_dg."bannedsitelist";
$dir_tmp="/tmp/blacklists";
 
$wl_safesearch="off";
 
# default values
if (is_file ($conf_file))
{
if (is_file ($conf_file)){
$tab=file($conf_file);
if ($tab)
{
foreach ($tab as $line)
{
if ($tab){
foreach ($tab as $line){
$field=explode("=", $line);
switch ($field[0]) {
switch ($field[0]){
case 'PRIVATE_IP':
$PRIVATE_IP_MASK=trim($field[1]);
$tmp = explode("/",$PRIVATE_IP_MASK);
$PRIVATE_IP=$tmp[0];
break;
 
case 'WL_SAFESEARCH':
if (strtolower(trim($field[1])) == 'on') {
if (strtolower(trim($field[1])) == 'on'){
$wl_safesearch='on';
}
break;
203,32 → 192,17
}
else { echo "$l_error_open_file $conf_file";}
if (isset($_POST['choix'])){ $choix=$_POST['choix']; } else { $choix=""; }
switch ($choix)
{
case 'Download_list' :
exec ("sudo /usr/local/bin/alcasar-bl.sh --download");
break;
case 'Active_list' :
exec ("sudo /usr/local/bin/alcasar-bl.sh --adapt");
exec ("sudo /usr/local/bin/alcasar-bl.sh --reload");
break;
case 'Reject_list' :
unlink ("$dir_tmp/blacklists.tar.gz"); unlink ("$dir_tmp/md5sum");
break;
switch ($choix){
case 'MAJ_cat_wl' :
if (file_exists($wl_categories_enabled))
{
if (file_exists($wl_categories_enabled)){
exec("/bin/sed -i \"/^ossi-/!d\" $wl_categories_enabled"); // keep ossi custom categories
$pointeur=fopen($wl_categories_enabled, "a+");
foreach ($_POST as $key => $value)
{
if (strstr($key,'chk-'))
{
foreach ($_POST as $key => $value){
if (strstr($key,'chk-')){
$line=str_replace('chk-','',$key)."\n";
fwrite($pointeur,$line);
}
}
 
fclose($pointeur);
}
else {echo "$l_error_open_file $wl_categories_enabled";}
240,9 → 214,8
break;
case 'Specific_filtering' :
$wl_safesearch='off';
foreach ($_POST as $key => $value)
{
if (strstr($key,'chk-safesearch')) {
foreach ($_POST as $key => $value){
if (strstr($key,'chk-safesearch')){
$wl_safesearch='on';
}
}
249,25 → 222,20
exec ("sudo /usr/local/bin/alcasar-url_filter_wl.sh -safesearch_$wl_safesearch");
break;
case 'MAJ_ossi_file' :
foreach ($_POST as $fichier => $value)
{
if($fichier != "choix")
{
foreach ($_POST as $fichier => $value){
if($fichier != "choix"){
$action=$_POST[$fichier];
if($action == $l_remove) //delete
{
if($action == $l_remove){ //delete
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $wl_categories_enabled");
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $wl_categories");
exec("rm -rf ".escapeshellarg("$dir_blacklist$fichier"));
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
if($action == $l_disable) //disable
{
if($action == $l_disable){ //disable
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $wl_categories_enabled");
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
if($action == $l_enable) //enable
{
if($action == $l_enable){ //enable
file_put_contents($wl_categories_enabled, $fichier."\n", FILE_APPEND);
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
276,21 → 244,18
break;
case 'MAJ_ossi_file_upload' :
$file_name = str_replace (".", "_",basename($_FILES['fichier_ip']['name']));
if(!empty($file_name))
{
if(!empty($file_name)){
$dest_dir = $dir_blacklist."ossi-wl-".$file_name;
exec("mkdir ".escapeshellarg($dest_dir));
$file=$_FILES['fichier_ip']['tmp_name'];
exec('/usr/bin/dos2unix '.escapeshellarg($file));
if(move_uploaded_file($_FILES['fichier_ip']['tmp_name'], $dest_dir."/domains"))
{
if(move_uploaded_file($_FILES['fichier_ip']['tmp_name'], $dest_dir."/domains")){
touch ($dest_dir."/urls"); // create the URL file even if it isn't used
file_put_contents ($wl_categories, $dest_dir."\n", FILE_APPEND);
file_put_contents ($wl_categories_enabled, "ossi-wl-".$file_name."\n", FILE_APPEND); //Enabled by default
exec ("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
else
{
else {
exec("rm -rf ".escapeshellarg($dest_dir));
echo $l_error_upload;
}
309,22 → 274,20
<?php
echo "<center>";
// total number of IP, DNS & URLs
$nbDomainNames = exec("wc -l $dir_wl_domain_names* | tail -n 1 | awk '{print $1}'");
$nbDomainNames = exec("wc -l $dir_wl_domain_names_enabled* | tail -n 1 | awk '{print $1}'");
$nbUrl = "0";
$nbIp = exec("wc -l $dir_wl_ip* | tail -n 1 | awk '{print $1}'");
echo "<b>$l_nbDomainNames</b> $nbDomainNames, <b>$l_nbUrl</b> $nbUrl, <b>$l_nbIp</b> $nbIp<br/>";
$nbIp = exec("wc -l $dir_wl_ip_enabled* | tail -n 1 | awk '{print $1}'");
echo "$l_state $nbDomainNames <b>$l_nbDomainNames</b>, $nbUrl <b>$l_nbUrl</b>, $nbIp <b>$l_nbIp</b><br/>";
echo "$l_wl_categories</center></td></tr>";
//read & display all WL categories (checked or not)
//read & display all categories (checked or not)
$cols=1;
if (file_exists($wl_categories))
{
if (file_exists($wl_categories)){
$wl_files = file($wl_categories);
$wl_files = preg_grep("/ossi-/", $wl_files, 1); // don't display ossi custom categories
foreach ($wl_files as $fichier => $value)
{
foreach ($wl_files as $fichier => $value){
if ($cols == 1) { echo "<tr>";}
$categorie=trim(basename($value));
echo "<td><a href='bl_categories_help.php?liste=wl&cat=$categorie' target='cat_help' onclick=window.open('bl_categories_help.php','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes') title='categories help page'>$categorie</a><br>";
echo "<td><a href='bl_categories_help.php?cat=$categorie' target='cat_help' onclick=window.open('bl_categories_help.php','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes') title='categories help page'>$categorie</a><br>";
echo "<input type='checkbox' name='chk-$categorie'";
// if the line is commented, the category is disable
if (preg_match('/^#/',$value, $r)) { echo ">";}
331,7 → 294,7
else { echo "checked>"; }
echo "</td>";
$cols++;
if ($cols > 10) {
if ($cols > 10){
echo "</tr>";
$cols=1;
}
367,9 → 330,8
//list OSSI custom categories
$fichierswl = array_diff(scandir($dir_blacklist), array('..','.','ossi-bl','ossi-wl'));
$fichierswl = preg_grep("/^ossi-wl-/",$fichierswl);
foreach ($fichierswl as $fichier => $value)
{
echo "<tr><td><center><a href='bl_categories_help.php?liste=wl&cat=$value&filtre=domain' target='cat_help' onclick=window.open('bl_categories_help','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes') title='categories help page'>".substr($value,8)."</a></center></td><td><center>".exec("wc -l $dir_wl_ip$value | cut -d\" \" -f1")."</center></td><td><center>".exec("wc -l $dir_wl_domain_names$value.conf | cut -d\" \" -f1")."</center></td><td><center><input type='submit' name='$value'";
foreach ($fichierswl as $fichier => $value){
echo "<tr><td><center><a href='bl_categories_help.php?cat=$value&filtre=domain' target='cat_help' onclick=window.open('bl_categories_help','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes') title='categories help page'>".substr($value,8)."</a></center></td><td><center>".exec("wc -l $dir_wl_ip$value | cut -d\" \" -f1")."</center></td><td><center>".exec("wc -l $dir_wl_domain_names$value.conf | cut -d\" \" -f1")."</center></td><td><center><input type='submit' name='$value'";
if (file_exists ($dir_wl_domain_names_enabled.$value)) echo " value='$l_disable'>"; else echo " value='$l_enable'>";
echo "</center></td><td><center><input type='submit' name='$value' value='$l_remove'></center></td></tr>";
}
/web/acc/alcasar-3.6.1-exploitation-en.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.1-exploitation-fr.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.1-installation-en.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.1-installation-fr.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.1-presentation-en.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.1-presentation-fr.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.1-technique.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/phpsysinfo/CHANGELOG.md
3,6 → 3,14
 
http://phpsysinfo.sourceforge.net/
 
phpSysInfo 3.4.3
----------------
- [ADD] Linux Lite, BigLinux, Linspire, Tuxedo, Armbian, Photon, RebeccaBlackOS, QuemOS, dahliaOS, openEuler, Runtu, risiOS, Nobara, Fatdog, CachyOS, Snal, Feren, Archman, Elive, RoboLinux, ExTiX, Kaisen, LXLE, Neptune, Regata, Archcraft, Kodachi, Bodhi, Siduction, Vanilla, Q4OS, Guix, XeroLinux, OpenWRT, Gnoppix, Uruk, Laclin, Clear, Sparky and Venom Linux to detected distros
 
- [NEW] SHOW_NETWORK_BRIDGE option
- [NEW] JSONP option for enable JSONP data mode
- [NEW] plugin DiskLoad - show Disk Load information on WinNT
 
phpSysInfo 3.4.2
----------------
- [ADD] RebornOS, Parrot OS, Pop!_OS, Nitrux, Makulu, Absolute, Bluestar, Ultramarine Linux and TrueNAS to detected distros
/web/acc/phpsysinfo/COPYING
1,12 → 1,12
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
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
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
 
Preamble
Preamble
 
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
15,7 → 15,7
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
the GNU Library General Public License instead.) You can apply it to
your programs, too.
 
When we speak of free software, we are referring to freedom, not
55,8 → 55,8
 
The precise terms and conditions for copying, distribution and
modification follow.
 
GNU GENERAL PUBLIC LICENSE
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
0. This License applies to any program or other work which contains
110,7 → 110,7
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
168,7 → 168,7
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
225,7 → 225,7
 
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
255,7 → 255,7
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
 
NO WARRANTY
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
277,10 → 277,10
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
 
END OF TERMS AND CONDITIONS
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
 
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.
303,10 → 303,11
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.
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
 
 
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
335,5 → 336,5
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
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
/web/acc/phpsysinfo/README.md
5,7 → 5,7
* Copyright (c), 1999-2009, Michael Cramer ([github.com/bigmichi1](https://github.com/bigmichi1), [sf.net/users/bigmichi1](https://sf.net/users/bigmichi1))
* Copyright (c), 2007-2008, Audun Larsen ([sf.net/users/xqus](https://sf.net/users/xqus))
* Copyright (c), 2007-2015, Erkan Valentin ([github.com/rk4an](https://github.com/rk4an), [sf.net/users/jacky672](https://sf.net/users/jacky672))
* Copyright (c), 2009-2022, Mieczyslaw Nalewaj ([github.com/namiltd](https://github.com/namiltd), [sf.net/users/namiltd](https://sf.net/users/namiltd))
* Copyright (c), 2009-2023, Mieczyslaw Nalewaj ([github.com/namiltd](https://github.com/namiltd), [sf.net/users/namiltd](https://sf.net/users/namiltd))
* Copyright (c), 2010-2012, Damien Roth ([sf.net/users/iysaak](https://sf.net/users/iysaak))
 
 
45,7 → 45,7
- DrayOS (via SSH)
 
If your platform is not here try checking out the mailing list archives or
the message boards on SourceForge.
the message boards on Github.
 
INSTALLATION AND CONFIGURATION
------------------------------
126,5 → 126,5
LICENSING
---------
 
This program is released under the GNU Public License Version 2 or
This program is released under the GNU Public License Version 2 or
(at your option) any later version, see [COPYING](COPYING) for details.
/web/acc/phpsysinfo/SECURITY.md
0,0 → 1,13
# Security Policy
 
## Reporting Security Issues
 
The ALCASAR team take security bugs in ALCASAR project seriously. We appreciate your efforts to responsibly disclose your findings.
You can email info@alcasar.net and we will respond as quickly as possible.
You can also post in the ALCASAR forum in the ["Security"](https://adullact.net/forum/?group_id=450) section.
 
As your security issue is considered valid, a patch file will be post as soon as possible.
 
## Learning More About Security
 
To learn more about security in ALCASAR, please see the chapter 10 of the [exploitation documentation](https://alcasar.net/download)
/web/acc/phpsysinfo/data/ModelTranslation.txt
39,6 → 39,17
Mac13,1:Mac Studio M1 Max:Apple M1 Max
Mac13,2:Mac Studio M1 Ultra:Apple M1 Ultra
Mac14,2:MacBook Air M2:Apple M2
Mac14,3:Mac mini M2:Apple M2
Mac14,5:MacBook Pro M2 Max:Apple M2 Max
Mac14,6:MacBook Pro M2 Max:Apple M2 Max
Mac14,7:MacBook Pro M2:Apple M2
Mac14,8:MacBook Pro M2 Ultra:Apple M2 Ultra
Mac14,9:MacBook Pro M2 Pro:Apple M2 Pro
Mac14,10:MacBook Pro M2 Pro:Apple M2 Pro
Mac14,12:Mac mini M2 Pro:Apple M2 Pro
Mac14,13:Mac Studio M2 Max:Apple M2 Max
Mac14,14:Mac Studio M2 Ultra:Apple M2 Ultra
Mac14,15:MacBook Air 15" M2:Apple M2
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
/web/acc/phpsysinfo/data/cpus.ini
48,7 → 48,7
0x41,0xd09="Cortex-A73"
0x41,0xd0a="Cortex-A75"
0x41,0xd0b="Cortex-A76"
0x41,0xd0c="Neoverse N1"
0x41,0xd0c="Neoverse-N1"
0x41,0xd0d="Cortex-A77"
0x41,0xd0e="Cortex-A76AE"
0x41,0xd13="Cortex-R52"
56,7 → 56,8
0x41,0xd20="Cortex-M23"
0x41,0xd21="Cortex-M33"
0x41,0xd22="Cortex-M55"
0x41,0xd40="Neoverse V1"
0x41,0xd23="Cortex-M85"
0x41,0xd40="Neoverse-V1"
0x41,0xd41="Cortex-A78"
0x41,0xd42="Cortex-A78AE"
0x41,0xd43="Cortex-A65AE"
64,9 → 65,13
0x41,0xd46="Cortex-A510"
0x41,0xd47="Cortex-A710"
0x41,0xd48="Cortex-X2"
0x41,0xd49="Neoverse N2"
0x41,0xd4a="Neoverse E1"
0x41,0xd49="Neoverse-N2"
0x41,0xd4a="Neoverse-E1"
0x41,0xd4b="Cortex-A78C"
0x41,0xd4c="Cortex-X1C"
0x41,0xd4d="Cortex-A715"
0x41,0xd4e="Cortex-X3"
0x41,0xd4f="Neoverse-V2"
 
; Broadcom Corporation - ('B') cores.
0x42,0xf="Brahma B15"
/web/acc/phpsysinfo/data/distros.ini
3,38 → 3,61
; $Id: distros.ini 709 2012-12-05 11:20:40Z namiltd $
;
 
[Solaris SunOS]
[solaris sunos]
Image = "Solaris.png"
 
[OracleSolaris SunOS]
[oraclesolaris sunos]
Image = "Solaris.png"
 
[SmartOS SunOS]
[smartos sunos]
Image = "SmartOS.png"
 
[OpenSolaris SunOS]
[opensolaris sunos]
Image = "OpenSolaris.png"
 
[OpenIndiana SunOS]
[openindiana sunos]
Image = "OpenIndiana.png"
 
[OmniOS SunOS]
[omnios sunos]
Image = "OmniOS.png"
 
[OpenStorage SunOS]
[openstorage sunos]
Image = "NexentaStor.png"
Name = "NexentaStor"
 
[GoboLinux]
[openwrt]
Image = "OpenWRT.png"
Name = "OpenWrt"
Mode = "Detection"
Files = "/etc/openwrt_release"
Files2 = "/etc/openwrt_release"
;detected in "/etc/os-release"
 
[vmware photon os]
Image = "Photon.png"
Files = "/etc/photon-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[guix system]
Image = "Guix.png"
;detected in "/etc/os-release"
 
[gobolinux]
Image = "Gobo.png"
Name = "GoboLinux"
Files = "/etc/GoboLinuxVersion"
 
[SliTaz]
[slitaz]
Image = "SliTaz.png"
Name = "SliTaz"
Files = "/etc/slitaz-release"
 
[eisfair]
Image = "Eisfair.png"
;detected in "/etc/os-release"
 
[eisfair project]
Image = "Eisfair.png"
Files = "/etc/eisfair-system"
41,17 → 64,201
Files2 = "/etc/version"
;detected in "lsb_release -a"
 
[TinyCore]
[tinycore]
Image = "TinyCore.png"
Name = "Tiny Core Linux"
Files = "/usr/share/doc/tc/release.txt"
 
[Frugalware]
[venom linux]
Image = "Venom.png"
Name = "Venom Linux"
Files = "/etc/venom-release"
;detected in "/etc/os-release"
 
[linux plop]
Image = "Plop.png"
;detected in "/etc/os-release"
 
[frugalware]
Image = "Frugalware.png"
Files = "/etc/frugalware-release"
;detected in "/etc/os-release"
 
[MX]
[rbos]
Image = "RebeccaBlackOS.png"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[quemos]
Image = "QuemOS.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[rebeccablackos]
Image = "RebeccaBlackOS.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[q4os]
Image = "Q4OS.png"
Name = "Q4OS"
Files = "/etc/q4os_version"
;wrong in "lsb_release -a" Debian
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
 
[siduction]
Image = "Siduction.png"
Files = "/etc/siduction-version"
;wrong in "lsb_release -a" Debian
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
 
[sparkylinux]
Image = "Sparky.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[sparky]
Image = "Sparky.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[regata os]
Image = "Regata.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
 
[tuxedo]
Image = "Tuxedo.png"
Files = "/etc/tuxedo-os-version"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[ubuntu tuxedo]
Image = "Tuxedo.png"
;detected in "/etc/lsb-release"
 
[tuxedo os]
Image = "Tuxedo.png"
;detected in "/etc/os-release"
 
[ubuntu linspire]
Image = "Linspire.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu lxle]
Image = "LXLE.png"
;detected in "lsb_release -a"
;wrong in "/etc/lsb-release" Ubuntu
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu linux lite]
Image = "LinuxLite.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu bodhi]
Image = "Bodhi.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu linux kodachi]
Image = "Kodachi.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu kodachi]
Image = "Kodachi.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[robolinux]
Image = "RoboLinux.png"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu robolinux]
Image = "RoboLinux.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[feren os classic]
Image = "Feren.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu feren]
Image = "Feren.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[debian gnu/linux armbian]
Image = "Armbian.png"
Name = "Armbian"
Mode = "Detection"
Files = "/etc/armbian-release;/etc/armbian-image-release"
Files2 = "/etc/armbian-release;/etc/armbian-image-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[debian elive]
Image = "Elive.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" debian
 
[elive]
Image = "Elive.png"
Mode = "Detection"
Files = "/etc/elive-version"
Files2 = "/etc/elive-version"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" debian
 
[debian neptune]
Image = "Neptune.png"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" debian
 
[neptune]
Image = "Neptune.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" debian
 
[kaisen]
Image = "Kaisen.png"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" debian
 
[kaisen gnu/linux]
Image = "Kaisen.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" debian
 
[deepin extix]
Image = "ExTiX.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" debian
 
[mx]
Image = "MX.png"
Files = "/etc/mx-version"
;detected in "lsb_release -a"
61,64 → 268,64
;wrong in "/etc/debian_version" Debian
 
; at the end because some distros may also have the same files (like MX)
[antiX]
[antix]
Image = "antiX.png"
Files = "/etc/antix-version"
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
 
[IPFire]
[ipfire]
Image = "IPFire.png"
;detected in "/etc/system-release"
 
[QTS]
[qts]
Image = "QTS.png"
Name = "QTS"
;detected in "/etc/config/uLinux.conf"
 
[4MLinux]
[4mlinux]
Image = "4MLinux.png"
Name = "4MLinux"
Files = "/etc/4MLinux-version"
 
[Milis Linux]
[milis linux]
Image = "Milis.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;not detected in "/etc/os-release"
;detected in "/etc/os-release"
 
[Lunar Linux]
[lunar linux]
Image = "Lunar.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[CRUX]
[crux]
Image = "Crux.png"
Mode = "Execute"
Files = "/usr/bin/crux"
 
[Omarine]
[omarine]
Image = "Omarine.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[Foresight]
[foresight]
Image = "Foresight.png"
;detected in "/etc/distro-release"
 
[Trustix]
[trustix]
Image = "Trustix.png"
Files = "/etc/trustix-release;/etc/trustix-version"
 
[NixOS]
[nixos]
Image = "NixOS.png"
;detected in "/etc/os-release"
 
[Free-EOS]
[free-eos]
Image = "FreeEOS.png"
Files = "/etc/eos-release;/etc/eos-version"
 
[NuTyX]
[nutyx]
Image = "NuTyX.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
128,22 → 335,82
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[Generations Linux]
[generations linux]
Image = "Generations.png"
;detected in "/etc/os-release"
 
[Artix]
[dahliaos]
Image = "dahliaOS.png"
;detected in "/etc/os-release"
 
[laclin]
Image = "Laclin.png"
Mode = "Detection"
Files = "/etc/laclin-release"
Files2 = "/etc/laclin-release"
;detected in "/etc/os-release" but wrong name Slackware
 
[artix]
Image = "Artix.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[Artix Linux]
[artix linux]
Image = "Artix.png"
Mode = "Detection"
Files = "/etc/artix-release"
;detected in "/etc/os-release"
 
[RebornOS]
[xerolinux]
Image = "XeroLinux.png"
Mode = "Detection"
Files = "/etc/xerolinux-release"
;detected in "/etc/os-release"
 
[xerolinux-kde]
Image = "XeroLinux.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/arch-release" none
 
[cachyos linux]
Image = "CachyOS.png"
;detected in "/etc/os-release"
 
[cachyos]
Image = "CachyOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/arch-release" none
 
[archcraft]
Image = "Archcraft.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" none
 
[snal linux]
Image = "Snal.png"
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" none
 
[snal]
Image = "Snal.png"
Name = "Snal Linux"
Files = "/etc/snal-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/arch-release" none
 
[archman]
Image = "Archman.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" none
 
[rebornos]
Image = "RebornOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
150,17 → 417,17
;wrong in "/etc/os-release" Arch
;wrong in "/etc/arch-release" Arch
 
[RebornOS Linux]
[rebornos linux]
Image = "RebornOS.png"
;wrong in "/etc/os-release"
 
[BluestarLinux]
[bluestarlinux]
Image = "Bluestar.png"
;detected in "/etc/lsb-release"
;wrong in "/etc/os-release" Arch
;wrong in "/etc/arch-release" Arch
 
[EndeavourOS]
[endeavouros]
Image = "EndeavourOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
167,7 → 434,7
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" Arch
 
[ArcoLinux]
[arcolinux]
Image = "Arco.png"
Mode = "Detection"
Files = "/etc/arcolinux-release"
176,17 → 443,49
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" Arch
 
[Garuda]
[garuda]
Image = "Garuda.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/arch-release" Arch
 
[Garuda Linux]
[garuda linux]
Image = "Garuda.png"
;detected in "/etc/os-release"
 
[MaboxLinux]
[ubuntu biglinux]
Image = "BigLinux.png"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[biglinux based in ubuntu]
Image = "BigLinux.png"
;detected in "/etc/os-release"
 
[biglinux based in ubuntu 19.04]
Image = "BigLinux.png"
;detected in "/etc/lsb-release"
 
[deepin biglinux]
Image = "BigLinux.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/deepin-version" Deepin
;wrong in "/etc/os-release" Deepin
;wrong in "/etc/debian_version" Debian
 
[biglinux based in manjaro linux]
Image = "BigLinux.png"
Name = "BigLinux"
Files = "/etc/big-release"
Mode = "Detection"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" Manjaro
;wrong in "/etc/manjaro-release" Manjaro
 
[maboxlinux]
Image = "Mabox.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
194,7 → 493,7
;wrong in "/etc/manjaro-release" Manjaro
;wrong in "/etc/arch-release" Arch | Manjaro
 
[Netrunner]
[netrunner]
Image = "Netrunner.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
201,37 → 500,18
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[NetrunnerSE]
[netrunnerse]
Image = "Netrunner.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[Netrunner Rolling]
[netrunner rolling]
Image = "Netrunner.png"
;detected in "/etc/os-release"
;wrong in "/etc/manjaro-release" Manjaro
 
[ManjaroLinux]
Image = "Manjaro.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[Manjaro Linux]
Image = "Manjaro.png"
Files = "/etc/manjaro-release"
;detected in "/etc/os-release"
 
[Manjaro-ARM]
Image = "Manjaro.png"
Name = "Manjaro ARM"
Files = "/etc/manjaro-arm-version"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" Arch
 
[VoidLinux]
[voidlinux]
Image = "Void.png"
;detected in "lsb_release -a""
 
239,68 → 519,74
Image = "Void.png"
;detected in "/etc/os-release"
 
[Arch]
[arch]
Image = "Arch.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[Arch Linux]
Image = "Arch.png"
Mode = "Analyse"
Files = "/etc/arch-release"
;detected in "/etc/os-release"
 
[Arch Linux ARM]
Image = "Arch.png"
;detected in "/etc/os-release"
 
[Cobalt]
[cobalt]
Image = "Cobalt.png"
Files = "/etc/cobalt-release"
 
[LinuxFromScratch]
[linuxfromscratch]
Image = "LFS.png"
Files = "/etc/lfs-release"
 
[Rubix]
[rubix]
Image = "Rubix.png"
Files = "/etc/rubix-version"
 
[Tails]
[tails]
Image = "Tails.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Tanglu]
[tanglu]
Image = "Tanglu.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[Tanglu GNU/Linux]
[tanglu gnu/linux]
Image = "Tanglu.png"
;detected in "/etc/os-release"
 
[Kali]
[gnoppix]
Image = "Gnoppix.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[kali]
Image = "Kali.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[Kali GNU/Linux]
[kali gnu/linux]
Image = "Kali.png"
;detected in "/etc/os-release"
 
[PureOS]
[urukos]
Image = "Uruk.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[pureos]
Image = "PureOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[PureOS GNU/Linux]
[pureos gnu/linux]
Image = "PureOS.png"
;detected in "/etc/os-release"
 
[Septor]
[septor]
Image = "Septor.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
307,7 → 593,7
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[SalentOS]
[salentos]
Image = "SalentOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
314,17 → 600,17
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Pop]
[pop]
Image = "Pop.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[Pop!_OS]
[pop!_os]
Image = "Pop.png"
;detected in "/etc/os-release"
 
[Mer]
[mer]
Image = "Mer.png"
Mode = "Analyse"
Files = "/etc/mer-release;/etc/meego-release;/etc/moblin-release"
331,7 → 617,7
;detected in "lsb_release -a"
;detected in "/etc/system-release"
 
[KaOS]
[kaos]
Image = "KaOS.png"
Files = "/etc/KaOS-release"
;detected in "lsb_release -a"
346,26 → 632,26
;detected in "/etc/os-release"
;detected in "/etc/system-release"
 
[CoreOS]
[coreos]
Image = "CoreOS.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[Container Linux by CoreOS]
[container linux by coreos]
Image = "Container.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[Parrot]
[parrot]
Image = "Parrot.png"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[Parrot OS]
[parrot os]
Image = "Parrot.png"
;detected in "/etc/os-release"
 
[BOSS]
[boss]
Image = "BOSS.png"
Name = "BOSS GNU/Linux"
Files = "/etc/boss_version"
372,15 → 658,15
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[BOSS GNU/Linux]
[boss gnu/linux]
Image = "BOSS.png"
;detected in "/etc/os-release"
 
[BOSS Server Beta]
[boss server beta]
Image = "BOSS.png"
;detected in "lsb_release -a"
 
[Solus]
[solus]
Image = "Solus.png"
Files = "/etc/solus-release"
;detected in "lsb_release -a"
387,11 → 673,11
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[Solus Operating System]
[solus operating system]
Image = "Solus.png"
;detected in "/etc/os-release"
 
[Canaima]
[canaima]
Image = "Canaima.png"
Name = "Canaima GNU/Linux"
Files = "/etc/canaima_version"
398,11 → 684,18
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[Canaima GNU/Linux]
[canaima gnu/linux]
Image = "Canaima.png"
;detected in "/etc/os-release"
 
[Semplice]
[ubuntu runtu]
Image = "Runtu.png"
;detected in "/etc/lsb-release"
;wrong detected in "lsb_release -a" Ubuntu
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
 
[semplice]
Image = "Semplice.png"
Name = "Semplice"
Files = "/etc/semplice_version"
411,15 → 704,18
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[SolydXK]
[solydxk]
Image = "SolydXK.png"
Name = "SolydXK"
Mode = "Detection"
Files = "/etc/solydxk/info"
Files2 = "/etc/solydxk/info"
;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]
[handylinux]
Image = "Handy.png"
Files = "/etc/handylinux_version"
;detected in "lsb_release -a"
426,14 → 722,18
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
 
[Parsix]
[parsix gnu/linux]
Image = "Parsix.png"
;detected in "/etc/os-release" but sometimes wrong version
;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]
[linaro]
Image = "Linaro.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
440,7 → 740,7
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Endless]
[endless]
Image = "Endless.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
447,18 → 747,24
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Uos]
[uos]
Image = "UOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[uos]
Image = "UOS.png"
[deepin]
Image = "Deepin.png"
Files = "/etc/deepin-version"
Mode = "Detection"
Files2 = "/etc/deepin-version"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[LinuxDeepin]
[linuxdeepin]
Image = "Deepin.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
465,7 → 771,7
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
 
[Ultimate_Edition]
[ultimate_edition]
Image = "UltimateEdition.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
478,7 → 784,7
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[elementary OS]
[elementary os]
Image = "elementaryOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
485,30 → 791,19
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Elementary]
Image = "elementaryOS.png"
[jingos]
Image = "JingOS.png"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[JingOS]
Image = "JingOS.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Jingos]
Image = "JingOS.png"
;detected in "lsb_release -a"
 
[jingos]
Image = "JingOS.png"
;detected in "/etc/lsb-release"
 
[KDE neon]
[kde neon]
Image = "KDEneon.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[KDE]
[kde]
Image = "KDEneon.png"
;detected in "lsb_release -a"
 
516,7 → 811,7
Image = "KDEneon.png"
;detected in "/etc/lsb-release"
 
[PearLinux]
[pearlinux]
Image = "Pear.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
523,7 → 818,7
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
 
[Pear Linux]
[pear linux]
Image = "Pear.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
530,21 → 825,18
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
 
[pearOS]
[pearos]
Image = "Pear.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;detected in "/etc/os-release" (simetimes wrong Ubuntu)
;wrong in "/etc/debian_version" Debian
 
[PearOS]
[neon 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]
[solusos]
Image = "SolusOS.png"
Files = "/etc/solusos_version"
;detected in "lsb_release -a"
552,7 → 844,7
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
 
[LinuxMint]
[linuxmint]
Image = "Mint.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
559,19 → 851,15
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
 
[Linuxmint]
[linux mint]
Image = "Mint.png"
;detected in "lsb_release -a"
 
[Linux Mint]
Image = "Mint.png"
;detected in "/etc/os-release
 
[LMDE]
[lmde]
Image = "Mint.png"
;detected in "/etc/os-release"
 
[Trisquel]
[trisquel]
Image = "Trisquel.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
578,7 → 866,7
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
 
[Zorin]
[zorin]
Image = "Zorin.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
585,12 → 873,12
;wrong or almost in "/etc/os-release" Ubuntu | Zorin OS
;wrong in "/etc/debian_version" Debian
 
[Zorin OS]
[zorin os]
Image = "Zorin.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Peppermint]
[peppermint]
Image = "Peppermint.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
597,7 → 885,7
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Nitrux]
[nitrux]
Image = "Nitrux.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
604,17 → 892,27
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[MakuluLinux]
[ubuntu vanillaos]
Image = "Vanilla.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[vanillaos]
Image = "Vanilla.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[makululinux]
Image = "Makulu.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Ubuntu MakuluLinux]
[ubuntu makululinux]
Image = "Makulu.png"
;detected in "lsb_release -a"
 
[Linuxfx]
[linuxfx]
Image = "Linuxfx.png"
Name="Linuxfx"
Files = "/etc/fx.version"
622,47 → 920,63
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Ubuntu Linuxfx]
[ubuntu linuxfx]
Image = "Linuxfx.png"
;detected in "lsb_release -a"
 
[Ubuntu]
[ubuntu]
Image = "Ubuntu.png"
Test = "nolsbfirst"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Chakra]
[chakra]
Image = "Chakra.png"
Files = "/etc/chakra-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[The Chakra-Project]
[the chakra-project]
Image = "Chakra.png"
;detected in "/etc/os-release"
 
[IYCC]
[iycc]
Image = "IYCC.png"
;detected in "/etc/lsb-release"
 
[HipServ]
[openeuler]
Image = "openEuler.png"
Files = "/etc/openEuler-release"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
;detected in "/etc/system-release"
 
[risios]
Image = "risiOS.png"
;detected in "lsb_release -a"
;detected in "/etc/fedora-release"
;detected in "/etc/os-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[hipserv]
Image = "HipServ.png"
;detected in "/etc/redhat-release"
 
[NeoKylin]
[neokylin]
Image = "NeoKylin.png"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[NeoKylin Linux Desktop]
[neokylin linux desktop]
Image = "NeoKylin.png"
Files = "/etc/neokylin-release;/etc/cs2c-release"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
 
[Mageia]
[mageia]
Image = "Mageia.png"
Files = "/etc/mageia-release"
;detected in "lsb_release -a"
672,130 → 986,155
;detected in "/etc/redhat-release"
;detected in "/etc/os-release"
 
[PLD Linux]
[pld linux]
Image = "PLD.png"
Files = "/etc/pld-release"
;detected in "/etc/os-release"
 
[LFS]
[lfs]
Image = "lfs.png"
Files = "/etc/lfs-release;/etc/lfs_version"
 
[HLFS]
[hlfs]
Image = "lfs.png"
Files = "/etc/hlfs-release;/etc/hlfs_version"
 
[Synology]
[synology]
Image = "Synology.png"
Mode = "Detection"
Files = "/etc/synoinfo.conf"
Files2 = "/etc/VERSION"
 
[Alpine]
[alpine]
Image = "Alpine.png"
Name = "Alpine"
Files = "/etc/alpine-release"
 
[Puppy]
[fatdog64 linux]
Image = "Fatdog.png"
;detected in "/etc/os-release"
 
[fatdog64]
Image = "Fatdog.png"
Name = "Fatdog64 Linux"
Files = "/etc/fatdog-version"
;detected in "/etc/DISTRO_SPECS"
 
[puppy]
Image = "Puppy.png"
Name = "Puppy"
;detected in "/etc/os-release"
;detected in "/etc/DISTRO_SPECS"
 
[Lucid]
[lucid]
Image = "Puppy.png"
Name = "Lucid Puppy"
;detected in "/etc/DISTRO_SPECS"
 
[Slacko Puppy]
[slacko puppy]
Image = "Puppy.png"
;detected in "/etc/DISTRO_SPECS"
 
[Wary Puppy]
[wary puppy]
Image = "Puppy.png"
;detected in "/etc/DISTRO_SPECS"
 
[Quirky]
[quirky]
Image = "EasyOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[Easy OS]
[easyos]
Image = "EasyOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[easy os]
Image = "EasyOS.png"
;detected in "/etc/DISTRO_SPECS"
 
[Easy Beaver]
[easy beaver]
Image = "EasyOS.png"
;detected in "/etc/DISTRO_SPECS"
 
[Easy Pyro64]
[easy pyro64]
Image = "EasyOS.png"
;detected in "/etc/DISTRO_SPECS"
 
[Easy Buster64]
[easy buster64]
Image = "EasyOS.png"
;detected in "/etc/DISTRO_SPECS"
 
[Turbolinux]
[easy dunfell64]
Image = "EasyOS.png"
;detected in "/etc/DISTRO_SPECS"
 
[easyos kirkstone64]
Image = "EasyOS.png"
;detected in "/etc/DISTRO_SPECS"
 
[turbolinux]
Image = "Turbo.png"
Files = "/etc/turbolinux-release"
 
[Amazon]
[amazon]
Image = "Amazon.png"
;detected in "/etc/system-release"
 
[AmazonAMI]
[amazonami]
Image = "Amazon.png"
;detected in "lsb_release -a"
 
[Amazon Linux AMI]
[amazon linux ami]
Image = "Amazon.png"
;detected in /etc/os-release
 
[RedFlag]
[redflag]
Image = "RedFlag.png"
Files = "/etc/redflag-release"
;detected in "/etc/system-release"
 
[Red Flag inWise]
[red flag inwise]
Image = "RedFlag.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[StartOS]
[startos]
Image = "StartOS.png"
Files = "/etc/startos-release"
;detected in "lsb_release -a"
 
[OpenELEC]
[openelec]
Image = "OpenELEC.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
 
[LibreELEC]
[libreelec]
Image = "LibreELEC.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
 
[Lakka]
[lakka]
Image = "Lakka.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
 
[PisiLinux]
[pisilinux]
Image = "Pisi.png"
Files = "/etc/pisilinux-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[Pisi_Linux]
[pisi_linux]
Image = "Pisi.png"
;detected in "/etc/system-release"
 
[Springdale Linux]
[springdale linux]
Image = "Springdale.png"
;detected in "/etc/os-release"
 
[Springdale]
[springdale]
Image = "Springdale.png"
Files = "/etc/PU_IAS-release;/etc/puias-release;/etc/springdale-release"
;detected in "lsb_release -a"
802,7 → 1141,7
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[NethServer]
[nethserver]
Image = "NethServer.png"
Files = "/etc/nethserver-release"
;detected in "/etc/os-release"
810,7 → 1149,7
;wrong in "/etc/redhat-release" CentOS
;wrong in "/etc/system-release" CentOS
 
[SME]
[sme]
Image = "SMEServer.png"
Files = "/etc/e-smith-release"
;wrong in "/etc/centos-release" CentOS
817,53 → 1156,61
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[SMEServer]
[smeserver]
Image = "SMEServer.png"
;detected in "lsb_release -a"
 
[Scientific]
[koozali sme server]
Image = "SMEServer.png"
;detected in "/etc/os-release"
 
[scientific]
Image = "Scientific.png"
;detected in "lsb_release -a"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[ScientificSL]
[scientificsl]
Image = "Scientific.png"
;detected in "lsb_release -a"
 
[ScientificCERNSLC]
[scientificcernslc]
Image = "Scientific.png"
;detected in "lsb_release -a"
 
[ScientificFermi]
[scientificfermi]
Image = "Scientific.png"
;detected in "lsb_release -a"
 
[ScientificFermiLTS]
[scientificfermilts]
Image = "Scientific.png"
;detected in "lsb_release -a"
 
[ScientificSLF]
[scientificslf]
Image = "Scientific.png"
;detected in "lsb_release -a"
 
[ClearOS]
[clear linux os]
Image = "Clear.png"
;detected in "/etc/os-release"
 
[clearos]
Image = "ClearOS.png"
Files = "/etc/clearos-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[CloudLinuxServer]
[cloudlinuxserver]
Image = "Cloud.png"
;detected in "lsb_release -a"
 
[CloudLinux]
[cloudlinux]
Image = "Cloud.png"
Files = "/etc/CloudLinux-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[AlmaLinux]
[almalinux]
Image = "Alma.png"
Files = "/etc/almalinux-release"
;detected in "lsb_release -a"
872,11 → 1219,11
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[Virtuozzo Linux]
[virtuozzo linux]
Image = "Virtuozzo.png"
;detected in "/etc/os-release"
 
[Virtuozzo]
[virtuozzo]
Image = "Virtuozzo.png"
Files = "/etc/vzlinux-release"
;detected in "lsb_release -a"
883,11 → 1230,11
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[Rocky Linux]
[rocky linux]
Image = "Rocky.png"
;detected in "/etc/os-release"
 
[Rocky]
[rocky]
Image = "Rocky.png"
Files = "/etc/rocky-release"
;detected in "lsb_release -a"
894,7 → 1241,7
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[EuroLinux]
[eurolinux]
Image = "EuroLinux.png"
Files = "/etc/el-release"
;detected in "lsb_release -a"
902,41 → 1249,42
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[CentOSStream]
[centosstream]
Image = "CentOS.png"
;detected in "lsb_release -a"
 
[CentOS Stream]
[centos stream]
Image = "CentOS.png"
;detected in "/etc/os-release"
 
[CentOS Linux]
[centos linux]
Image = "CentOS.png"
;detected in "/etc/os-release"
 
; at the end because some distros may also have the same files (like SMEServer, AlmaLinux, NethServer)
[CentOS]
[centos]
Image = "CentOS.png"
Test = "nolsbfirst"
Files = "/etc/centos-release"
;detected in "lsb_release -a"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[Oracle]
[oracle]
Image = "Oracle.png"
Files = "/etc/oracle-release;/etc/enterprise-release"
;detected in "/etc/system-release"
;wrong in "/etc/redhat-release" RedHat
 
[OracleServer]
[oracleserver]
Image = "Oracle.png"
;detected in "lsb_release -a"
 
[EnterpriseEnterpriseServer]
[enterpriseenterpriseserver]
Image = "Oracle.png"
;detected in "lsb_release -a"
 
[PCLinuxOS]
[pclinuxos]
Image = "PCLinuxOS.png"
Files = "/etc/pclinuxos-release"
;detected in "lsb_release -a"
945,12 → 1293,12
;detected in "/etc/mandrake-release;/etc/mandrakelinux-release"
;detected in "/etc/redhat-release"
 
[Absolute]
[absolute]
Image = "Absolute.png"
;delected in "/etc/os-release"
;wrong in "/etc/slackware-version" Slackware
 
[Salix]
[salix]
Image = "Salix.png"
Mode = "Detection"
Files = "/etc/salix-update-notifier.conf"
958,30 → 1306,30
;wrong in "/etc/os-release" Slackware
;wrong in "/etc/slackware-version" Slackware
 
[Slax]
[slax]
Image = "Slax.png"
Files = "/etc/slax-version"
;wrong in "/etc/os-release" Slackware
;wrong in "/etc/slackware-version" Slackware
 
[SMS]
[sms]
Image = "SMS.png"
Files = "/etc/sms-version"
;detected in "/etc/os-release"
;wrong in "/etc/slackware-version" Slackware
 
[Porteus]
[porteus]
Image = "Porteus.png"
Files = "/etc/porteus-version"
;wrong in "/etc/os-release" Slackware
;wrong in "/etc/slackware-version" Slackware
 
[Vector]
[vector]
Image = "Vector.png"
Files = "/etc/vector-version"
;wrong in "/etc/slackware-version" Slackware
 
[Zenwalk]
[zenwalk]
Image = "Zenwalk.png"
Name = "Zenwalk"
Files = "/etc/zenwalk-version"
988,23 → 1336,23
;detected in "/etc/os-release"
;wrong in "/etc/slackware-version" Slackware
 
[Slackware]
[slackware]
Image = "Slackware.png"
Files = "/etc/slackware-release"
;detected in "/etc/os-release"
;detected in "/etc/slackware-version"
 
[Calculate]
[calculate]
Image = "Calculate.png"
;detected in "/etc/gentoo-release"
;wrong in "/etc/os-release" Gentoo
 
[Redcore]
[redcore]
Image = "Redcore.png"
;detected in "/etc/gentoo-release"
;detected in "/etc/os-release"
 
[Exherbo]
[exherbo]
Image = "Exherbo.png"
Name = "Exherbo Linux"
Mode = "Detection"
1011,13 → 1359,13
Files = "/etc/exherbo-release"
;detected in "/etc/os-release"
 
[Tizen]
[tizen]
Image = "Tizen.png"
Files = "/etc/tizen-release"
;detected in "/etc/system-release"
;detected in "/etc/os-release"
 
[Sabayon]
[sabayon]
Image = "Sabayon.png"
Files = "/etc/sabayon-release"
;detected in "lsb_release -a"
1026,7 → 1374,7
;detected in "/etc/os-release"
;wrong in "/etc/gentoo-release" Gentoo
 
[VortexBox]
[vortexbox]
Image = "VortexBox.png"
Name = "VortexBox"
Files = "/etc/vortexbox/vortexbox-version"
1035,7 → 1383,18
;wrong in "/etc/system-release" Fedora
;wrong in "/etc/os-release" Fedora
 
[Ultramarine]
[nobara]
Image = "Nobara.png"
Files = "/etc/nobara-release"
;detected in "lsb_release -a"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[nobara linux]
Image = "Nobara.png"
;detected in "/etc/os-release"
 
[ultramarine]
Image = "Ultramarine.png"
Files = "/etc/ultramarine-release"
;detected in "lsb_release -a"
1042,11 → 1401,11
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[Ultramarine Linux]
[ultramarine linux]
Image = "Ultramarine.png"
;detected in "/etc/os-release"
 
[ALT]
[alt]
Image = "ALT.png"
Files = "/etc/altlinux-release"
;detected in "/etc/fedora-release"
1053,21 → 1412,21
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[ALT Linux]
[alt linux]
Image = "ALT.png"
;detected in "/etc/os-release"
 
[Simply]
[simply]
Image = "ALT.png"
;detected in "/etc/fedora-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[Simply Linux]
[simply linux]
Image = "ALT.png"
;detected in "/etc/os-release"
 
[Fuduntu]
[fuduntu]
Image = "Fuduntu.png"
Files = "/etc/fuduntu-release"
;detected in "lsb_release -a"
1076,32 → 1435,32
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[gNewSense]
[gnewsense]
Image = "gNewSense.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[SteamOS]
[steamos]
Image = "SteamOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[SteamOS GNU/Linux]
[steamos gnu/linux]
Image = "SteamOS.png"
;detected in "/etc/os-release"
 
[Raspbian]
[raspbian]
Image = "Raspbian.png"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[Raspbian GNU/Linux]
[raspbian gnu/linux]
Image = "Raspbian.png"
;detected in "/etc/os-release"
 
[Devuan]
[devuan]
Image = "Devuan.png"
Name = "Devuan"
Files = "/etc/devuan_version"
1108,12 → 1467,13
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[Devuan GNU/Linux]
[devuan gnu/linux]
Image = "Devuan.png"
;detected in "/etc/os-release"
 
[Debian]
[debian]
Image = "Debian.png"
Test = "nolsbfirst"
Name = "Debian"
Files = "/etc/debian_release"
;detected in "lsb_release -a"
1120,47 → 1480,47
;detected in "/etc/lsb-release"
;detected in "/etc/debian_version"
 
[Debian GNU/Linux]
[debian gnu/linux]
Image = "Debian.png"
;detected in "/etc/os-release"
 
[openSUSE]
[opensuse]
Image = "openSUSE.png"
;detected in "/etc/os-release"
;detected in "/etc/SuSE-release"
 
[openSUSE Leap]
[opensuse leap]
Image = "openSUSE.png"
;detected in "/etc/os-release"
 
[openSUSE Tumbleweed]
[opensuse tumbleweed]
Image = "openSUSE.png"
;detected in "/etc/os-release"
 
[openSUSE project]
[opensuse project]
Image = "openSUSE.png"
;detected in "lsb_release -a"
 
[SUSE LINUX openSUSE]
[suse linux opensuse]
Image = "openSUSE.png"
;detected in "lsb_release -a"
 
[SUSE]
[suse]
Image = "SUSE.png"
;detected in "/etc/SuSE-release"
 
[SLES]
[sles]
Image = "SUSE.png"
;detected in "/etc/os-release"
 
; at the end because some distros may also have the same files (like openSUSE, SUSE)
[SUSE LINUX]
[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]
[gentoo]
Image = "Gentoo.png"
Mode = "Analyse"
Files = "/etc/gentoo-release"
1168,7 → 1528,7
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[Qubes]
[qubes]
Image = "Qubes.png"
Files = "/etc/qubes-release"
;detected in "/etc/fedora-release"
1176,7 → 1536,7
;detected in "/etc/system-release"
;detected in "/etc/os-release"
 
[Korora]
[korora]
Image = "Korora.png"
;detected in "lsb_release -a"
;detected in "/etc/fedora-release"
1185,7 → 1545,7
;detected in "/etc/os-release"
 
; at the end because some distros may also have the same files (like Fuduntu, ALT, VortexBox, Qubes, Korora)
[Fedora]
[fedora]
Image = "Fedora.png"
Mode = "Analyse"
Files = "/etc/fedora-release"
1194,11 → 1554,11
;detected in "/etc/system-release"
;detected in "/etc/os-release"
 
[FedoraCore]
[fedoracore]
Image = "Fedora.png"
;detected in "/etc/lsb-release"
 
[OpenMandriva]
[openmandriva]
Image = "OpenMandriva.png"
;detected in "/etc/rosa-release"
;detected in "/etc/mandriva-release"
1207,43 → 1567,74
;detected in "/etc/distro-release"
;detected in "/etc/system-release"
 
[OpenMandriva Lx]
[openmandriva lx]
Image = "OpenMandriva.png"
;detected in "/etc/os-release"
 
[OpenMandrivaLinux]
[openmandrivalinux]
Image = "OpenMandriva.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[ROSA MarathonLinux]
[rosa marathonlinux]
Image = "ROSA.png"
;detected in "/etc/lsb-release"
 
[RosaDesktop.Marathon]
[rosadesktop.marathon]
Image = "ROSA.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[RosaDesktop.Fresh]
[rosadesktop.fresh]
Image = "ROSA.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[ROSA Desktop Fresh]
[rosa desktop fresh]
Image = "ROSA.png"
;detected in "/etc/os-release"
 
[ROSA Marathon]
[rosa marathon]
Image = "ROSA.png"
;detected in "/etc/os-release"
 
[ROSAEnterpriseServer]
[rosaenterpriseserver]
Image = "ROSA.png"
;detected in "lsb_release -a"
 
[manjarolinux]
Image = "Manjaro.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[manjaro-arm]
Image = "Manjaro.png"
Name = "Manjaro ARM"
Files = "/etc/manjaro-arm-version"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" Arch
 
; at the end because some distros may also have the same files (like BigLinux, Mabox, Netrunner)
[manjaro linux]
Image = "Manjaro.png"
Files = "/etc/manjaro-release"
;detected in "/etc/os-release"
 
[arch linux arm]
Image = "Arch.png"
;detected in "/etc/os-release"
 
; at the end because some distros may also have the same files (like XeroLinux-KDE, CachyOS, Archcraft, Snal, Archman, RebornOS, BluestarLinux, EndeavourOS, Arco, Garuda, BigLinux, Mabox, Manjaro ARM)
[arch linux]
Image = "Arch.png"
Mode = "Analyse"
Files = "/etc/arch-release"
;detected in "/etc/os-release"
 
; at the end because some distros may also have the same files (like OpenMandriva)
[ROSA]
[rosa]
Image = "ROSA.png"
Mode = "Analyse"
Files = "/etc/rosa-release"
1253,13 → 1644,13
;detected in "/etc/mandrake-release;/etc/mandrakelinux-release"
;detected in "/etc/redhat-release"
 
[MandrivaLinux]
[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]
[mandriva]
Image = "Mandrake.png"
Mode = "Analyse"
Files = "/etc/mandriva-release"
1267,38 → 1658,38
;detected in "/etc/redhat-release"
 
; at the end because some distros may also have the same files (like Mandriva, Mageia, PCLinuxOS, ROSA, OpenMandriva)
[Mandrake]
[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, NeoKylin, Springdale, Rocky, EuroLinux, AlmaLinux, Virtuozzo, NethServer)
[RedHat]
[redhat]
Image = "RedHat.png"
Mode = "Analyse"
Files = "/etc/redhat-release;/etc/redhat_version"
;detected in "/etc/system-release"
 
[Red Hat Enterprise Linux Server]
[red hat enterprise linux server]
Image = "RedHat.png"
;detected in "/etc/os-release"
 
[Red Hat Enterprise Linux Everything]
[red hat enterprise linux everything]
Image = "RedHat.png"
;detected in "/etc/os-release"
 
[RedHatEnterpriseES]
[redhatenterprisees]
Image = "RedHat.png"
;detected in "lsb_release -a"
 
[RedHatEnterpriseAS]
[redhatenterpriseas]
Image = "RedHat.png"
;detected in "lsb_release -a"
 
[RedHatEnterpriseServer]
[redhatenterpriseserver]
Image = "RedHat.png"
;detected in "lsb_release -a"
 
[RedHatEnterpriseClient]
[redhatenterpriseclient]
Image = "RedHat.png"
;detected in "lsb_release -a"
/web/acc/phpsysinfo/data/osnames.ini
44,6 → 44,7
11="Big Sur"
12="Monterey"
13="Ventura"
14="Sonoma"
 
[win10]
10240="1507"
/web/acc/phpsysinfo/gfx/htmlrest.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/free-eos.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Deleted: svn:mime-type
-image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/iycc.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Deleted: svn:mime-type
-image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Archcraft.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Archman.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Armbian.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/BigLinux.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Bodhi.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/CachyOS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Clear.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/EasyOS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/web/acc/phpsysinfo/gfx/images/Elive.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/ExTiX.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Fatdog.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Feren.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Gnoppix.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Guix.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Kaisen.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Kodachi.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/LXLE.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Laclin.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Linspire.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/LinuxLite.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Neptune.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Nobara.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/OpenWRT.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Photon.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Plop.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Q4OS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/QuemOS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/RebeccaBlackOS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Regata.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/RoboLinux.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Runtu.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/SMEServer.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/web/acc/phpsysinfo/gfx/images/Siduction.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Sparky.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Tuxedo.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Uruk.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Vanilla.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Venom.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/XeroLinux.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/dahliaOS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/openEuler.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/risiOS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/includes/class.CommonFunctions.inc.php
844,7 → 844,8
'ACRNACRNACRN' => 'acrn', // ACRN hypervisor
'TCGTCGTCGTCG' => 'qemu', // QEMU
'QNXQVMBSQG' => 'qnx', // QNX hypervisor
'VBoxVBoxVBox' => 'oracle' // Oracle VM VirtualBox
'VBoxVBoxVBox' => 'oracle', // Oracle VM VirtualBox
'SRESRESRESRE' => 'sre' // LMHS SRE hypervisor
);
$shortvendorid = trim(preg_replace('/[\s!\.]/', '', $vendor_data));
if (($shortvendorid !== "") && isset($vidarray[$shortvendorid])) {
/web/acc/phpsysinfo/includes/class.Parser.inc.php
131,7 → 131,9
}
}
}
if (CommonFunctions::executeProgram('df', '-k '.$df_param, $df, PSI_DEBUG) && ($df!=="")) {
$df = "";
CommonFunctions::executeProgram('df', '-k '.$df_param, $df, PSI_DEBUG);
if ($df!=="") {
$df = preg_split("/\n/", $df, -1, PREG_SPLIT_NO_EMPTY);
if ($get_inodes && PSI_SHOW_INODES) {
if (CommonFunctions::executeProgram('df', '-i '.$df_param, $df2, PSI_DEBUG)) {
/web/acc/phpsysinfo/includes/mb/class.lmsensors.inc.php
69,24 → 69,24
}
}
$data = array();
if (preg_match("/^(.+):(.+).C\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)\)/", $line, $data)) {
if (preg_match("/^(.+):(.+)[^\w\r\n\t]C\s*\((.+)=(.+)[^\w\r\n\t]C,(.+)=(.+)[^\w\r\n\t]C\)(.*)\)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+).C\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)/", $line, $data)) {
} elseif (preg_match("/^(.+):(.+)[^\w\r\n\t]C\s*\((.+)=(.+)[^\w\r\n\t]C,(.+)=(.+)[^\w\r\n\t]C\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+).C\s*\((.+)=(.+).C\)(.*)/", $line, $data)) {
} elseif (preg_match("/^(.+):(.+)[^\w\r\n\t]C\s*\((.+)=(.+)[^\w\r\n\t]C\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)\)/", $line, $data)) {
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+)[^\w\r\n\t]C,(.+)=(.+)[^\w\r\n\t]C\)(.*)\)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)/", $line, $data)) {
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+)[^\w\r\n\t]C,(.+)=(.+)[^\w\r\n\t]C\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+).C\)(.*)/", $line, $data)) {
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+)[^\w\r\n\t]C\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+).C\s*\(/", $line, $data)) {
} elseif (preg_match("/^(.+):(.+)[^\w\r\n\t]C\s*\(/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+).C\s+\D+/", $line, $data)) {
} elseif (preg_match("/^(.+):(.+)[^\w\r\n\t]C\s+\D+/", $line, $data)) {
;
} else {
preg_match("/^(.+):(.+).C\r?$/", $line, $data);
preg_match("/^(.+):(.+)[^\w\r\n\t]C\r?$/", $line, $data);
}
if (count($data)>2) {
foreach ($data as $key=>$value) {
233,20 → 233,22
}
}
$data = array();
if (preg_match("/^(.+):(.+) V\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)\)/", $line, $data)) {
if (preg_match("/^(.+):(.+) (m?)V\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)\)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+) V\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)/", $line, $data)) {
} elseif (preg_match("/^(.+):(.+) (m?)V\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)\)/", $line, $data)) {
} elseif (preg_match("/^(.+):\s*(FAULT)()\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)\)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)/", $line, $data)) {
} elseif (preg_match("/^(.+):\s*(FAULT)()\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+) V\s*\(/", $line, $data)) {
} elseif (preg_match("/^(.+):\s*(.+) (m?)V\s*()()\((.+)=(.+) V\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+) V\s+\D+/", $line, $data)) {
} elseif (preg_match("/^(.+):(.+) (m?)V\s*\(/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+) (m?)V\s+\D+/", $line, $data)) {
;
} else {
preg_match("/^(.+):(.+) V\r?$/", $line, $data);
preg_match("/^(.+):(.+) (m?)V\r?$/", $line, $data);
}
 
if (count($data)>2) {
259,13 → 261,17
}
$dev = new SensorDevice();
$dev->setName($data[1].$sname);
$dev->setValue($data[2]);
if (isset($data[4])) {
$dev->setMin($data[4]);
if (isset($data[3]) && ($data[3]==='m') && is_float($data[2])) {
$dev->setValue($data[2]/1000);
} else {
$dev->setValue($data[2]);
}
if (isset($data[6])) {
$dev->setMax($data[6]);
if (isset($data[5]) && ($data[5]!=='')) {
$dev->setMin($data[5]);
}
if (isset($data[7])) {
$dev->setMax($data[7]);
}
if (preg_match("/\s(ALARM)\s*$/", $line, $evbuf) || (($evbuf[1] = $dev->getValue()) === 'FAULT')) {
$dev->setEvent($evbuf[1]);
}
/web/acc/phpsysinfo/includes/os/class.Linux.inc.php
306,9 → 306,12
if ($ip != $result) {
$this->sys->setHostname(gethostbyaddr($ip));
}
} elseif (CommonFunctions::executeProgram('hostname', '', $ret)) {
} elseif (CommonFunctions::executeProgram('hostname', '', $ret, false)) {
$this->sys->setHostname($ret);
} elseif (CommonFunctions::executeProgram('uname', '-n', $ret, false)) {
$this->sys->setHostname($ret);
}
 
}
}
 
443,6 → 446,10
}
}
}
if (CommonFunctions::rfts('/proc/device-tree/compatible', $compatible, 1, 4096, false) && ($compatible === "qemu,pseries")) {
$this->sys->setVirtualizer('qemu'); // QEMU
$novm = false;
}
}
}
}
692,6 → 699,9
// IBM/S390
$bufr = preg_replace('/\ncpu number\s*:\s*(\d+)\r?\ncpu MHz dynamic\s*:\s*(\d+)/m', "\nprocessor:$1\nclock:$2", $bufr);
 
// machine
$bufr = preg_replace('/(\nmachine\s*:\s*[^\r\n]+)/m', "$1\n", $bufr);
 
$processors = preg_split('/\s?\n\s?\n/', trim($bufr));
 
//first stage
724,6 → 734,7
case 'cpu variant':
$_vari = $arrBuff1;
break;
case 'machine':
case 'hardware':
$_hard = $arrBuff1;
break;
1344,7 → 1355,7
for ($i = 0; $i < $total; $i++) {
if (CommonFunctions::rfts($i2cdevices[$i], $buf, 1, 4096, false) && (trim($buf) != "")) {
$dev = new HWDevice();
$dev->setName(trim($buf));
$dev->setName(trim($buf, ": \n\r\t\v\x00"));
$this->sys->setI2cDevices($dev);
}
}
1387,9 → 1398,9
$nsize[$locid] = $i - $nlocate[$locid];
}
} elseif ($count > 1) {
if (isset($nlocate[2]) && isset($nsize[2])) {
if (isset($nlocate[2]) && isset($nsize[2]) && (($nvname=trim(substr($buf, $nlocate[2], $nsize[2]))) !== '')) {
$dev = new HWDevice();
$dev->setName(trim(substr($buf, $nlocate[2], $nsize[2])));
$dev->setName($nvname);
if (defined('PSI_SHOW_DEVICES_INFOS') && (PSI_SHOW_DEVICES_INFOS)) {
if (isset($nlocate[4]) && isset($nsize[4])) {
if (preg_match('/\/\s*([0-9\.]+)\s*(B|KB|MB|GB|TB|PB)$/', str_replace(',', '.', trim(substr($buf, $nlocate[4], $nsize[4]))), $tmpbuf)) {
1448,10 → 1459,17
$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)) || (defined('PSI_SHOW_NETWORK_BRIDGE') && PSI_SHOW_NETWORK_BRIDGE))
&& CommonFunctions::executeProgram('ip', 'addr show '.trim($dev_name), $bufr2, PSI_DEBUG) && (trim($bufr2)!="")) {
if (defined('PSI_SHOW_NETWORK_BRIDGE') && PSI_SHOW_NETWORK_BRIDGE && preg_match("/^\d+:\s+([^\s:@]+).+\s+master\s+(\S+)/", $bufr2, $brbufr)) {
$dev->setBridge($brbufr[2]);
}
} else {
$bufr2 = "";
}
if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) {
$macaddr = "";
if ((CommonFunctions::executeProgram('ip', 'addr show '.trim($dev_name), $bufr2, PSI_DEBUG) && ($bufr2!=""))
|| CommonFunctions::executeProgram('ifconfig', trim($dev_name).' 2>/dev/null', $bufr2, PSI_DEBUG)) {
if (($bufr2!="") || CommonFunctions::executeProgram('ifconfig', trim($dev_name).' 2>/dev/null', $bufr2, PSI_DEBUG)) {
$bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY);
foreach ($bufe2 as $buf2) {
// if (preg_match('/^'.trim($dev_name).'\s+Link\sencap:Ethernet\s+HWaddr\s(\S+)/i', $buf2, $ar_buf2)
1468,7 → 1486,8
}
} 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)) {
|| preg_match('/^\s+inet\s+([^\/\s]+).*peer\s+([^\/\s]+).*\s+scope\s((global)|(host))/i', $buf2, $ar_buf2)
/*|| preg_match('/^\s+link\/sit\s+([^\/\s]+).*peer\s+([^\/\s]+)/i', $buf2, $ar_buf2)*/) {
if ($ar_buf2[1] != $ar_buf2[2]) {
$dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1].";:".$ar_buf2[2]);
} else {
1514,7 → 1533,7
$speedinfo = "";
$dev = null;
foreach ($lines as $line) {
if (preg_match("/^\d+:\s+([^\s:]+)/", $line, $ar_buf)) {
if (preg_match("/^\d+:\s+([^\s:@]+)(.*)/", $line, $ar_buf)) {
if ($was) {
if ($macaddr != "") {
$dev->setInfo($macaddr.($dev->getInfo()?';'.$dev->getInfo():''));
1528,12 → 1547,35
$macaddr = "";
$dev = new NetDevice();
$dev->setName($ar_buf[1]);
if (CommonFunctions::executeProgram('ip', '-s link show '.$ar_buf[1], $bufr2, PSI_DEBUG) && ($bufr2!="")
if (defined('PSI_SHOW_NETWORK_BRIDGE') && PSI_SHOW_NETWORK_BRIDGE
&& isset($ar_buf[2]) && (($ar_buf[2] = trim($ar_buf[2])) !=="") && preg_match("/\s+master\s+(\S+)/", $ar_buf[2], $bufr2)) {
$dev->setBridge($bufr2[1]);
}
if (CommonFunctions::executeProgram('ip', '-s link show '.$ar_buf[1], $bufr2, false) && ($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]);
} elseif (CommonFunctions::executeProgram('ifconfig', $ar_buf[1], $bufr2, false) && ($bufr2!="")) {
if (preg_match('/\sRX bytes:(\d+)\s/im', $bufr2, $ar_buf2)) {
$dev->setRxBytes($ar_buf2[1]);
}
if (preg_match('/\sTX bytes:(\d+)\s/im', $bufr2, $ar_buf2)) {
$dev->setTxBytes($ar_buf2[1]);
}
$errors = 0;
$drops = 0;
if (preg_match('/\sRX packets:\d+\serrors:(\d+)\sdropped:(\d+)/im', $bufr2, $ar_buf2)) {
$errors +=$ar_buf2[1];
$drops +=$ar_buf2[2];
}
if (preg_match('/\sTX packets:\d+\serrors:(\d+)\sdropped:(\d+)/im', $bufr2, $ar_buf2)) {
$errors +=$ar_buf2[1];
$drops +=$ar_buf2[2];
}
$dev->setErrors($errors);
$dev->setDrops($drops);
}
$was = true;
if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) {
1563,7 → 1605,8
$macaddr = "";
}
}
} elseif (preg_match('/^\s+inet\s+([^\/\s]+).*peer\s+([^\/\s]+).*\s+scope\s((global)|(host))/i', $line, $ar_buf2)) {
} elseif (preg_match('/^\s+inet\s+([^\/\s]+).*peer\s+([^\/\s]+).*\s+scope\s((global)|(host))/i', $line, $ar_buf2)
/*|| preg_match('/^\s+link\/sit\s+([^\/\s]+).*peer\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 {
1797,6 → 1840,9
if (!$list) {
return;
}
$_ignore_lsb_release = false;
$_Distrib = "";
$_DistribIcon = "";
// 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("/\r?\n/", $distro_info, -1, PREG_SPLIT_NO_EMPTY);
1807,29 → 1853,31
$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]) && ($distro_tmp[0] !== null) && (trim($distro_tmp[0]) != "")) {
$this->sys->setDistribution(trim($distro_tmp[0]));
$_Distrib = 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']);
&& isset($list[strtolower(trim($id_buf[1]))]['Image'])) {
$_DistribIcon = $list[strtolower(trim($id_buf[1]))]['Image'];
// set ignore lsb_release for some distributions
if (isset($list[strtolower(trim($id_buf[1]))]['Test']) && ($list[strtolower(trim($id_buf[1]))]['Test'] === "nolsbfirst")) $_ignore_lsb_release = true;
}
}
} else {
if (isset($distro['Description']) && ($distro['Description'] != "n/a") && isset($distro['Distributor ID']) && $distro['Distributor ID']=="Neon") { // Neon systems
$distro_tmp = preg_split("/\s/", $distro['Description'], -1, PREG_SPLIT_NO_EMPTY);
$distro['Distributor ID'] = $distro_tmp[0];
if (isset($distro['Description'])) {
if (preg_match('/^NAME=\s*"?([^"\r\n]+)"?\s*$/', $distro['Description'], $name_tmp)) {
$distro['Description'] = trim($name_tmp[1]);
} elseif (($distro['Description']==="Rolling Release") && isset($distro['Distributor ID']) && ($distro['Distributor ID'] != "n/a")) {
$distro['Description'] = $distro['Distributor ID']." ".$distro['Description'];
}
}
if (isset($distro['Description'])
&& preg_match('/^NAME=\s*"?([^"\r\n]+)"?\s*$/', $distro['Description'], $name_tmp)) {
$distro['Description'] = trim($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']);
$_Distrib = $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)) {
1838,42 → 1886,67
$tofind = $distro['Release'];
}
if (!preg_match("/^".$tofind."[\s\.]|[\(\[]".$tofind."[\.\)\]]|\s".$tofind."$|\s".$tofind."[\s\.]/", $distro['Description'])) {
$this->sys->setDistribution($this->sys->getDistribution()." ".$distro['Release']);
$_Distrib .= " ".$distro['Release'];
}
}
} elseif (isset($distro['Distributor ID'])) {
if ($distro['Distributor ID'] != "n/a") {
$this->sys->setDistribution($distro['Distributor ID']);
$_Distrib = $distro['Distributor ID'];
if (isset($distro['Release']) && ($distro['Release'] != "n/a")) {
$this->sys->setDistribution($this->sys->getDistribution()." ".$distro['Release']);
$_Distrib .= " ".$distro['Release'];
}
if (isset($distro['Codename']) && ($distro['Codename'] != "n/a")) {
$this->sys->setDistribution($this->sys->getDistribution()." (".$distro['Codename'].")");
$_Distrib .= " (".$distro['Codename'].")";
}
} elseif (isset($distro['Description']) && ($distro['Description'] != "n/a")) {
$this->sys->setDistribution($distro['Description']);
$_Distrib = $distro['Description'];
}
}
if (isset($distro['Distributor ID'])) {
$distrib = $distro['Distributor ID'];
$distrib2 = $distrib;
$distrib3 = $distrib;
if (isset($distro['Description'])) {
$distarr = preg_split("/\s/", $distro['Description'], -1, PREG_SPLIT_NO_EMPTY);
if (isset($distarr[0])) {
if ($distrib != "n/a") {
$distrib .= ' '.$distarr[0];
$distrib2 .= ' '.$distarr[0];
} else {
$distrib = $distarr[0];
$distrib2 = $distarr[0];
}
}
if (isset($distarr[1])) {
if ($distrib != "n/a") {
$distrib3 .= ' '.$distarr[0].' '.$distarr[1];
} else {
$distrib3 = $distarr[0].' '.$distarr[1];
}
}
}
if (isset($list[$distrib]['Image'])) {
$this->sys->setDistributionIcon($list[$distrib]['Image']);
} elseif (($distro['Distributor ID'] != "n/a") && isset($list[$distro['Distributor ID']]['Image'])) {
$this->sys->setDistributionIcon($list[$distro['Distributor ID']]['Image']);
if (($distrib!==$distrib3) && isset($list[strtolower($distrib3)]['Image'])) {
$_DistribIcon = $list[strtolower($distrib3)]['Image'];
// set ignore lsb_release for some distributions
if (isset($list[strtolower($distrib3)]['Test']) && ($list[strtolower($distrib3)]['Test'] === "nolsbfirst")) $_ignore_lsb_release = true;
} elseif (($distrib!==$distrib2) && isset($list[strtolower($distrib2)]['Image'])) {
$_DistribIcon = $list[strtolower($distrib2)]['Image'];
// set ignore lsb_release for some distributions
if (isset($list[strtolower($distrib2)]['Test']) && ($list[strtolower($distrib2)]['Test'] === "nolsbfirst")) $_ignore_lsb_release = true;
} elseif (($distrib!=="n/a") && isset($list[strtolower($distrib)]['Image'])) {
$_DistribIcon = $list[strtolower($distrib)]['Image'];
// set ignore lsb_release for some distributions
if (isset($list[strtolower($distrib)]['Test']) && ($list[strtolower($distrib)]['Test'] === "nolsbfirst")) $_ignore_lsb_release = true;
}
}
}
} else {
}
 
if (!$_ignore_lsb_release) { // don't ignore lsb_release
if ($_Distrib !== "") $this->sys->setDistribution(preg_replace("/ - Version:| Build:| Release| version| build| based in Ubuntu/i", "", $_Distrib));
if ($_DistribIcon !== "") $this->sys->setDistributionIcon($_DistribIcon);
}
 
// if the distribution is still unknown
if ($this->sys->getDistribution() == "Linux") {
/* default error handler */
if (function_exists('errorHandlerPsi')) {
restore_error_handler();
1885,10 → 1958,13
// 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="?([^"\r\n]+)/m', $buf, $id_buf)) {
&& (preg_match('/^DISTRIB_ID="?([^"\r\n]+)/m', $buf, $id_buf) || preg_match('/^DISTRIB_DESCRIPTION="?([^"\r\n]+)/m', $buf, $id_buf))) {
if (preg_match('/^DISTRIB_DESCRIPTION="?([^"\r\n]+)/m', $buf, $desc_buf)
&& (trim($desc_buf[1])!=trim($id_buf[1]))) {
$this->sys->setDistribution(trim($desc_buf[1]));
if ($desc_buf[1]==="Rolling Release") {
$desc_buf[1] = $id_buf[1]." ".$desc_buf[1];
}
$this->sys->setDistribution(preg_replace("/ - Version:| Build:| Release| version| build| based in Ubuntu/i", "", trim($desc_buf[1])));
if (preg_match('/^DISTRIB_RELEASE="?([^"\r\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)) {
1900,9 → 1976,26
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1]));
}
}
$distrib = trim($id_buf[1]);
$distrib2 = $distrib;
$distrib3 = $distrib;
$distarr = preg_split("/\s/", trim($desc_buf[1]), -1, PREG_SPLIT_NO_EMPTY);
if (isset($distarr[0])) {
$distrib2 .= ' '.$distarr[0];
}
if (isset($distarr[1])) {
$distrib3 .= ' '.$distarr[0].' '.$distarr[1];
}
if (($distrib!==$distrib3) && isset($list[strtolower($distrib3)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib3)]['Image']);
} elseif (($distrib!==$distrib2) && isset($list[strtolower($distrib2)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib2)]['Image']);
} elseif (($distrib!=="n/a") && isset($list[strtolower($distrib)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib)]['Image']);
}
} else {
if (isset($list[trim($id_buf[1])]['Name'])) {
$this->sys->setDistribution(trim($list[trim($id_buf[1])]['Name']));
if (isset($list[strtolower(trim($id_buf[1]))]['Name'])) {
$this->sys->setDistribution(trim($list[strtolower(trim($id_buf[1]))]['Name']));
} else {
$this->sys->setDistribution(trim($id_buf[1]));
}
1912,10 → 2005,10
if (preg_match('/^DISTRIB_CODENAME="?([^"\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." (".trim($vers_buf[1]).")");
}
if (isset($list[strtolower(trim($id_buf[1]))]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower(trim($id_buf[1]))]['Image']);
}
}
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'])) {
1933,13 → 2026,19
} else {
if (!CommonFunctions::rfts($filename, $buf, 1, 4096, false)) {
$buf = "";
if (isset($distribution['Mode'])&&(strtolower($distribution['Mode'])=="analyse")) {
break;
}
} elseif (isset($distribution['Mode'])&&(strtolower($distribution['Mode'])=="analyse")) {
if (preg_match('/^(\S+)\s*/', preg_replace('/^Red\s+/', 'Red', $buf), $id_buf)
if (preg_match('/^(\S+)\s*/', preg_replace('/^red\s+/', 'red', strtolower($buf)), $id_buf)
&& isset($list[trim($id_buf[1])]['Image'])) {
$distro = $list[trim($id_buf[1])];
}
}
}
if (($buf !== null) && (trim($buf) !== "")) {
$buf = preg_replace("/ - Version:| Build:| Release| version| build/i", "", $buf);
}
if (isset($distro['Image'])) {
$this->sys->setDistributionIcon($distro['Image']);
}
1951,7 → 2050,7
}
} else {
if (($buf === null) || (trim($buf) == "")) {
$this->sys->setDistribution($section);
$this->sys->setDistribution(preg_replace('/linux/', 'Linux', ucwords($section)));
} else {
$this->sys->setDistribution(trim($buf));
}
1972,6 → 2071,29
$distr2.=' ('.$dat_buf[1].')';
}
$this->sys->setDistribution($this->sys->getDistribution()." ".$distr2);
} elseif (preg_match('/^elive-codename:\s*([^\r\n]+)/m', $buf, $cod_buf)
&& preg_match('/^elive-version:\s*([^\r\n]+)/m', $buf, $ver_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($cod_buf[1])." ".trim($ver_buf[1]));
} elseif (preg_match('/^VERSION=["\']?([^"\'\r\n]+)/im', $buf, $vers_buf)
|| preg_match('/^VERSION_ID=["\']?([^"\'\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1]));
} elseif (preg_match('/^DISTRIB_ID=[\'"]?([^\'"\r\n]+)/m', $buf, $id_buf)) {
if (preg_match('/^DESCRIPTION="?([^"\r\n]+)/m', $buf, $desc_buf)
&& (trim($desc_buf[1])!=trim($id_buf[1]))) {
$this->sys->setDistribution(trim($desc_buf[1]));
} else {
if (isset($list[strtolower(trim($id_buf[1]))]['Name'])) {
$this->sys->setDistribution(trim($list[strtolower(trim($id_buf[1]))]['Name']));
} else {
$this->sys->setDistribution(trim($id_buf[1]));
}
if (preg_match('/^RELEASE="?([^"\r\n]+)/m', $buf, $vers_buf) || preg_match('/^DISTRIB_RELEASE=[\'"]?([^\'"\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1]));
}
if (preg_match('/^CODENAME="?([^"\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." (".trim($vers_buf[1]).")");
}
}
} else {
$distr2=trim(substr($buf, 0, strpos($buf, "\n")));
if (($distr2 !== null) && ($distr2 != "")) {
1990,24 → 2112,105
}
// if the distribution is still unknown
if ($this->sys->getDistribution() == "Linux") {
if (CommonFunctions::fileexists($filename="/etc/DISTRO_SPECS")
if ($_ignore_lsb_release) { // if lsb_release was ignored
if ($_Distrib !== "") $this->sys->setDistribution(preg_replace("/ - Version:| Build:| Release| version| build| based in Ubuntu/i", "", $_Distrib));
if ($_DistribIcon !== "") $this->sys->setDistributionIcon($_DistribIcon);
}
}
// if the distribution is still unknown
if ($this->sys->getDistribution() == "Linux") {
if (((defined('PSI_EMU_PORT') && CommonFunctions::executeProgram('cat', '/etc/os-release', $buf, false))
|| (!defined('PSI_EMU_PORT') && CommonFunctions::fileexists($filename="/etc/os-release") && CommonFunctions::rfts($filename, $buf, 0, 4096, false)))
&& (preg_match('/^TAILS_VERSION_ID="?([^"\r\n]+)/m', $buf, $tid_buf) || preg_match('/^NAME=["\']?([^"\'\r\n]+)/m', $buf, $id_buf) || preg_match('/^DISTRIB_ID=["\']?([^"\'\r\n]+)/m', $buf, $id_buf))) {
if (preg_match('/^TAILS_VERSION_ID="?([^"\r\n]+)/m', $buf, $tid_buf)) {
if (preg_match('/^TAILS_PRODUCT_NAME="?([^"\r\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 {
$addversion = false;
$distrib = trim($id_buf[1]);
if (preg_match('/^PRETTY_NAME=["\']?([^"\'\r\n]+)/m', $buf, $desc_buf)
&& !preg_match('/\$/', $desc_buf[1]) // if is not defined by variable
&& ($distrib!==trim($desc_buf[1]))) {
if (isset($list[strtolower($distrib)]['Name']) && !preg_match("/".$list[strtolower($distrib)]['Name']."/i", trim($desc_buf[1]))) {
$this->sys->setDistribution($list[strtolower($distrib)]['Name'] ." ". preg_replace("/ - Version:| Build:| Release| version| build| based in Ubuntu/i", "", trim($desc_buf[1])));
} else {
$this->sys->setDistribution(preg_replace("/ - Version:| Build:| Release| version| build| based in Ubuntu/i", "", trim($desc_buf[1])));
}
$distrib2 = $distrib;
$distrib3 = $distrib;
$distarr = preg_split("/\s/", trim($desc_buf[1]), -1, PREG_SPLIT_NO_EMPTY);
if (isset($distarr[0])) {
$distrib2 .= ' '.$distarr[0];
}
if (isset($distarr[1])) {
$distrib3 .= ' '.$distarr[0].' '.$distarr[1];
}
if (($distrib!==$distrib3) && isset($list[strtolower($distrib3)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib3)]['Image']);
if (count($distarr) == 2) {
$addversion = true;
}
} elseif (($distrib!==$distrib2) && isset($list[strtolower($distrib2)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib2)]['Image']);
if (count($distarr) == 1) {
$addversion = true;
}
} elseif (($distrib!=="n/a") && isset($list[strtolower($distrib)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib)]['Image']);
}
} else {
if (isset($list[strtolower($distrib)]['Name'])) {
$this->sys->setDistribution(trim($list[strtolower($distrib)]['Name']));
} else {
$this->sys->setDistribution($distrib);
}
if (isset($list[strtolower($distrib)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib)]['Image']);
}
$addversion = true;
}
if ($addversion) {
if (preg_match('/^VERSION=["\']?([^"\'\r\n]+)/m', $buf, $vers_buf)
|| preg_match('/^VERSION_ID=["\']?([^"\'\r\n]+)/m', $buf, $vers_buf)
|| preg_match('/^DISTRIB_RELEASE=["\']?([^"\'\r\n]+)/m', $buf, $vers_buf)
|| preg_match('/^IMAGE_VERSION=["\']?([^"\'\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1]));
}
if (!strstr($this->sys->getDistribution(), "(") && (preg_match('/^VERSION_CODENAME="?([^"\r\n]+)/m', $buf, $vers_buf)
|| preg_match('/^DISTRIB_CODENAME="?([^"\r\n]+)/m', $buf, $vers_buf))) {
$this->sys->setDistribution($this->sys->getDistribution()." (".trim($vers_buf[1]).")");
}
}
}
} elseif (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']);
&& preg_match('/^DISTRO_NAME=["\']([^"\']+)/m', $buf, $id_buf)) {
if (isset($list[strtolower(trim($id_buf[1]))]['Name'])) {
$dist = trim($list[strtolower(trim($id_buf[1]))]['Name']);
} else {
$dist = trim($id_buf[1]);
}
if (preg_match('/^DISTRO_VERSION=([^#\n\r]+)/m', $buf, $vers_buf)) {
if (preg_match('/^DISTRO_VERSION=([^$#\n\r]+)/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']);
if (isset($list[strtolower(trim($id_buf[1]))]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower(trim($id_buf[1]))]['Image']);
} else {
if (isset($list['Puppy']['Image'])) {
$this->sys->setDistributionIcon($list['Puppy']['Image']);
if (isset($list['puppy']['Image'])) {
$this->sys->setDistributionIcon($list['puppy']['Image']);
if (!preg_match("/puppy/i", $dist = $this->sys->getDistribution())) {
$this->sys->setDistribution("Puppy ".$dist);
}
}
}
} elseif ((CommonFunctions::fileexists($filename="/etc/distro-release")
2016,82 → 2219,23
|| (CommonFunctions::fileexists($filename="/etc/system-release")
&& CommonFunctions::rfts($filename, $buf, 1, 4096, false)
&& ($buf !== null) && (trim($buf) != ""))) {
$this->sys->setDistribution(trim($buf));
if (preg_match('/^(\S+)\s*/', preg_replace('/^Red\s+/', 'Red', $buf), $id_buf)
$this->sys->setDistribution(preg_replace("/ - Version:| Build:| Release| version| build| based in Ubuntu/i", "", trim($buf)));
if (preg_match('/^(\S+)\s*/', preg_replace('/^red\s+/', 'red', strtolower($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="?([^"\r\n]+)/m', $buf, $id_buf)) {
if (preg_match('/^DESCRIPTION="?([^"\r\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="?([^"\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1]));
}
if (preg_match('/^CODENAME="?([^"\r\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="?([^"\r\n]+)/m', $buf, $tid_buf)
|| preg_match('/^NAME=["\']?([^"\'\r\n]+)/m', $buf, $id_buf))) {
if (preg_match('/^TAILS_VERSION_ID="?([^"\r\n]+)/m', $buf, $tid_buf)) {
if (preg_match('/^TAILS_PRODUCT_NAME="?([^"\r\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=["\']?([^"\'\r\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=["\']?([^"\'\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1]));
} elseif (preg_match('/^VERSION_ID=["\']?([^"\'\r\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']['Image'])) {
$this->sys->setDistributionIcon($list['debian']['Image']);
}
if (isset($list['Debian']['Name'])) {
if (isset($list['debian']['Name'])) {
if (($buf === null) || (trim($buf) == "")) {
$this->sys->setDistribution($list['Debian']['Name']);
$this->sys->setDistribution($list['debian']['Name']);
} else {
$this->sys->setDistribution($list['Debian']['Name']." ".trim($buf));
$this->sys->setDistribution($list['debian']['Name']." ".trim($buf));
}
} else {
if (($buf === null) || (trim($buf) == "")) {
2104,14 → 2248,14
if (!CommonFunctions::rfts($filename, $buf, 1, 4096, false)) {
$buf = "";
}
if (isset($list['Slackware']['Image'])) {
$this->sys->setDistributionIcon($list['Slackware']['Image']);
if (isset($list['slackware']['Image'])) {
$this->sys->setDistributionIcon($list['slackware']['Image']);
}
if (isset($list['Slackware']['Name'])) {
if (isset($list['slackware']['Name'])) {
if (($buf === null) || (trim($buf) == "")) {
$this->sys->setDistribution($list['Slackware']['Name']);
$this->sys->setDistribution($list['slackware']['Name']);
} else {
$this->sys->setDistribution($list['Slackware']['Name']." ".trim($buf));
$this->sys->setDistribution($list['slackware']['Name']." ".trim($buf));
}
} else {
if (($buf === null) || (trim($buf) == "")) {
2125,11 → 2269,11
&& 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']['Image'])) {
$this->sys->setDistributionIcon($list['qts']['Image']);
}
if (isset($list['QTS']['Name'])) {
$this->sys->setDistribution($list['QTS']['Name']." ".trim($buf));
if (isset($list['qts']['Name'])) {
$this->sys->setDistribution($list['qts']['Name']." ".trim($buf));
} else {
$this->sys->setDistribution(trim($buf));
}
/web/acc/phpsysinfo/includes/os/class.SunOS.inc.php
405,7 → 405,7
if (CommonFunctions::rfts('/etc/release', $buf, 1, 4096, false) && (trim($buf)!="")) {
$this->sys->setDistribution(trim($buf));
$list = @parse_ini_file(PSI_APP_ROOT."/data/distros.ini", true);
if ($list && preg_match('/^(\S+)\s*/', preg_replace('/^Open\s+/', 'Open', preg_replace('/^Oracle\s+/', 'Oracle', trim($buf))), $id_buf) && isset($list[$distid=(trim($id_buf[1].' SunOS'))]['Image'])) {
if ($list && preg_match('/^(\S+)\s*/', preg_replace('/^open\s+/', 'open', preg_replace('/^oracle\s+/', 'oracle', strtolower(trim($buf)))), $id_buf) && isset($list[$distid=(trim($id_buf[1].' sunos'))]['Image'])) {
$this->sys->setDistributionIcon($list[$distid]['Image']);
if (isset($list[trim($distid)]['Name'])) {
$this->sys->setDistribution(trim($list[$distid]['Name']).' '.$this->sys->getDistribution());
/web/acc/phpsysinfo/includes/plugin/class.PSI_Plugin.inc.php
86,10 → 86,11
*/
private function _getconfig()
{
if ((!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_ACCESS')) &&
(!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_FILE')) &&
(!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_SHOW_SERIAL'))) {
$this->global_error->addError("phpsysinfo.ini", "Config for plugin ".$this->_plugin_name." not exist!");
if ((strtoupper($this->_plugin_name) !== 'DISKLOAD') &&
(!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_ACCESS')) &&
(!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_FILE')) &&
(!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_SHOW_SERIAL'))) {
$this->global_error->addError("phpsysinfo.ini", "Config for plugin ".$this->_plugin_name." not exist!");
}
}
 
131,8 → 132,10
$dom->appendChild($root);
$this->xml = new SimpleXMLExtended(simplexml_import_dom($dom), $enc);
$plugname = strtoupper($this->_plugin_name);
if (((PSI_OS == 'WINNT') || (PSI_OS == 'Linux')) &&
defined('PSI_PLUGIN_'.$plugname.'_WMI_HOSTNAME') &&
if ((PSI_OS == 'Linux') && defined('PSI_PLUGIN_'.$plugname.'_SSH_HOSTNAME') &&
(!defined('PSI_SSH_HOSTNAME') || (PSI_SSH_HOSTNAME != constant('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_SSH_HOSTNAME')))) {
$this->xml->addAttribute('Hostname', constant('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_SSH_HOSTNAME'));
} elseif (((PSI_OS == 'WINNT') || (PSI_OS == 'Linux')) && defined('PSI_PLUGIN_'.$plugname.'_WMI_HOSTNAME') &&
(!defined('PSI_WMI_HOSTNAME') || (PSI_WMI_HOSTNAME != constant('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_WMI_HOSTNAME')))) {
$this->xml->addAttribute('Hostname', constant('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_WMI_HOSTNAME'));
}
/web/acc/phpsysinfo/includes/to/device/class.NetDevice.inc.php
68,6 → 68,13
private $_info = null;
 
/**
* string with bridge
*
* @var string
*/
private $_bridge = null;
 
/**
* transmitted bytes rate
*
* @var int
236,7 → 243,34
{
$this->_info = $info;
}
 
/**
* Returns $_bridge.
*
* @see NetDevice::$_bridge
*
* @return String
*/
public function getBridge()
{
return $this->_bridge;
}
 
/**
* Sets $_bridge.
*
* @param String $bridge bridge string
*
* @see NetDevice::$_bridge
*
* @return void
*/
public function setBridge($bridge)
{
$this->_bridge = $bridge;
}
 
/**
* Returns $_rxRate.
*
* @see NetDevice::$_rxRate
/web/acc/phpsysinfo/includes/to/device/class.UPSDevice.inc.php
63,7 → 63,7
/**
* temperature of the ups
*
* @var int
* @var string
*/
private $_temperatur = null;
 
91,7 → 91,7
/**
* line volt
*
* @var int
* @var float
*/
private $_lineVoltage = null;
 
105,7 → 105,7
/**
* current load of the ups in percent
*
* @var int
* @var float
*/
private $_load = null;
 
119,7 → 119,7
/**
* current battery volt
*
* @var int
* @var float
*/
private $_batteryVoltage = null;
 
126,7 → 126,7
/**
* current charge in percent of the battery
*
* @var int
* @var float
*/
private $_batterCharge = null;
 
149,7 → 149,7
*
* @see UPSDevice::$_batterCharge
*
* @return integer
* @return float
*/
public function getBatterCharge()
{
159,7 → 159,7
/**
* Sets $_batterCharge.
*
* @param int $batterCharge battery charge
* @param float $batterCharge battery charge
*
* @see UPSDevice::$_batterCharge
*
201,7 → 201,7
*
* @see UPSDevice::$_batteryVoltage
*
* @return int
* @return float
*/
public function getBatteryVoltage()
{
211,7 → 211,7
/**
* Sets $_batteryVoltage.
*
* @param int $batteryVoltage battery volt
* @param float $batteryVoltage battery volt
*
* @see UPSDevice::$_batteryVoltage
*
279,7 → 279,7
*
* @see UPSDevice::$_lineVoltage
*
* @return int
* @return float
*/
public function getLineVoltage()
{
289,7 → 289,7
/**
* Sets $_lineVoltage.
*
* @param int $lineVoltage line voltage
* @param float $lineVoltage line voltage
*
* @see UPSDevice::$_lineVoltage
*
331,7 → 331,7
*
* @see UPSDevice::$_load
*
* @return int
* @return float
*/
public function getLoad()
{
341,7 → 341,7
/**
* Sets $_load.
*
* @param int $load current load
* @param float $load current load
*
* @see UPSDevice::$_load
*
513,7 → 513,7
*
* @see UPSDevice::$_temperatur
*
* @return int
* @return string
*/
public function getTemperatur()
{
523,7 → 523,7
/**
* Sets $_temperatur.
*
* @param int $temperatur temperature
* @param string $temperatur temperature
*
* @see UPSDevice::$_temperatur
*
/web/acc/phpsysinfo/includes/xml/class.XML.inc.php
231,8 → 231,12
}
$device->addAttribute('Err', $dev->getErrors());
$device->addAttribute('Drops', $dev->getDrops());
if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS && $dev->getInfo())
if (defined('PSI_SHOW_NETWORK_BRIDGE') && PSI_SHOW_NETWORK_BRIDGE && $dev->getBridge()) {
$device->addAttribute('Bridge', $dev->getBridge());
}
if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS && $dev->getInfo()) {
$device->addAttribute('Info', $dev->getInfo());
}
}
}
}
293,6 → 297,8
$virtstring .= 'virtualbox';
} elseif ($virtkey === 'zvm') {
$virtstring .= 'z/vm';
} elseif ($virtkey === 'sre') {
$virtstring .= 'lmhs sre';
} else {
$virtstring .= $virtkey;
}
927,7 → 933,9
$plugins = array($this->_plugin);
}
foreach ($plugins as $plugin) {
if (!$this->_complete_request || !defined('PSI_PLUGIN_'.strtoupper($plugin).'_WMI_HOSTNAME') ||
if (!$this->_complete_request ||
(!defined('PSI_PLUGIN_'.strtoupper($plugin).'_SSH_HOSTNAME') && !defined('PSI_PLUGIN_'.strtoupper($plugin).'_WMI_HOSTNAME')) ||
(defined('PSI_SSH_HOSTNAME') && (PSI_SSH_HOSTNAME == constant('PSI_PLUGIN_'.strtoupper($plugin).'_SSH_HOSTNAME'))) ||
(defined('PSI_WMI_HOSTNAME') && (PSI_WMI_HOSTNAME == constant('PSI_PLUGIN_'.strtoupper($plugin).'_WMI_HOSTNAME')))) {
$object = new $plugin($this->_sysinfo->getEncoding());
$object->execute();
/web/acc/phpsysinfo/js/jQuery/README
4,7 → 4,7
 
jquery.js
---------
VERSION : 1.12.4-ff3fix-ff2fix
VERSION : v1.12.4-ff3fix-ff2fix-CVE_2015_9251fix-CVE_2019_11358fix
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.
13,7 → 13,7
 
jquery.dataTables.js
--------------------
VERSION : 1.8.2+jquery1.9fix+parseJSONfix2+bindfix+samesitefix
VERSION : 1.8.2+jquery1.9fix+parseJSONfix2+bindfix+samesitefix+noeval
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.
21,7 → 21,7
 
jquery.nyroModal.js
-------------------
VERSION : 1.6.2+jquery1.8fix+bindfix
VERSION : 1.6.2+jquery1.8fix+bindfix+ff2fix
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
50,7 → 50,7
 
jquery.ifixpng.js
-------------------
VERSION : 2.1 (23/04/2008)+jquery1.8fix
VERSION : 2.1 (23/04/2008)+jquery1.9fix
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
/web/acc/phpsysinfo/js/jQuery/README_bootstrap
3,7 → 3,7
 
jquery.js
---------
VERSION : 1.12.4-ff3fix-ff2fix
VERSION : v1.12.4-ff3fix-ff2fix-CVE_2015_9251fix-CVE_2019_11358fix
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.
/web/acc/phpsysinfo/js/jQuery/jquery.dataTables.js
1,6 → 1,6
/*
* File: jquery.dataTables.js
* Version: 1.8.2+jquery1.9fix+parseJSONfix2+bindfix+samesitefix
* Version: 1.8.2+jquery1.9fix+parseJSONfix2+bindfix+samesitefix+noeval
* Description: Paginate, search and sort HTML tables
* Author: Allan Jardine (www.sprymedia.co.uk)
* Created: 28/3/2008
6376,6 → 6376,7
if ( iLength+10 > 4096 ) /* Magic 10 for padding */
{
var aCookies =document.cookie.split(';');
var sData;
for ( var i=0, iLen=aCookies.length ; i<iLen ; i++ )
{
if ( aCookies[i].indexOf( sBaseName ) != -1 )
6382,7 → 6383,11
{
/* It's a DataTables cookie, so eval it and check the time stamp */
var aSplitCookie = aCookies[i].split('=');
try { oData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' ); }
try {
sData = decodeURIComponent(aSplitCookie[1]);
oData = (typeof JSON.parse == 'function') ?
JSON.parse( sData.replace(/'/g, '"') ) : $.parseJSON( sData.replace(/'/g, '"') ); }
//try { oData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' ); }
catch( e ) { continue; }
if ( typeof oData.iCreate != 'undefined' && oData.iCreate < iOldTime )
/web/acc/phpsysinfo/js/phpSysInfo/phpsysinfo.js
29,6 → 29,13
showCPUListExpanded, showCPUInfoExpanded, showNetworkInfosExpanded, showMemoryInfosExpanded, showNetworkActiveSpeed, showCPULoadCompact, showTotals, increaseWidth, oldnetwork = [];
 
/**
* Fix potential XSS vulnerability in jQuery
*/
jQuery.htmlPrefilter = function( html ) {
return html;
};
 
/**
* Fix PNG loading on IE6 or below
*/
function PNGload(png) {
121,7 → 128,7
} else {
$('link[rel*=style][title]').each(function getTitle(i) {
if (this.getAttribute('title') === 'PSI_Template') {
this.setAttribute('href', './templates/' + template + ".css");
this.setAttribute('href', './templates/' + template + ".css");
}
});
}
621,11 → 628,22
* @param {Number} size barclass
* @return {String} HTML string which contains the full layout of the bar
*/
function createBar(size, barclass) {
function createBar(size, barclass, sizeused) {
var percsize = 0, percsizeused = 0;
if (barclass === undefined) {
barclass = "bar";
}
return "<div class=\"" + barclass + "\" style=\"float:left; width: " + Math.max(Math.min(Math.round(size), 100), 0) + "px;\">&nbsp;</div>&nbsp;" + size + "%";
percsize = Math.max(Math.min(Math.ceil(size), 100), 0);
if (sizeused === undefined) {
percsizeused = percsize;
} else {
percsizeused = Math.max(Math.min(Math.ceil(sizeused), size), 0);
}
if (percsizeused == percsize) {
return "<div class=\"" + barclass + "\" style=\"float:left; width: " + percsizeused + "px;\">&nbsp;</div>&nbsp;" + size + "%";
} else {
return "<div class=\"" + barclass + "\" style=\"float:left; width: " + percsizeused + "px;\">&nbsp;</div><div class=\"barrest\" style=\"float:left; width: " + (percsize-percsizeused) + "px;\">&nbsp;</div>&nbsp;" + size + "%";
}
}
 
/**
663,7 → 681,7
}
 
var kernel = "", distro = "", icon = "", uptime = "", users = 0, loadavg = "", os = "";
var processes = 0, prunning = 0, psleeping = 0, pstopped = 0, pzombie = 0, pwaiting = 0, pother = 0;
var processes = 0, psarray = [0,0,0,0,0,0];
var syslang = "", codepage = "";
var lastboot = 0;
var timestamp = parseInt($("Generation", xml).attr("timestamp"), 10)*1000; //server time
702,32 → 720,32
processes = parseInt($(this).attr("Processes"), 10);
}
if ($(this).attr("ProcessesRunning") !== undefined) {
prunning = parseInt($(this).attr("ProcessesRunning"), 10);
psarray[0] = parseInt($(this).attr("ProcessesRunning"), 10);
}
if ($(this).attr("ProcessesSleeping") !== undefined) {
psleeping = parseInt($(this).attr("ProcessesSleeping"), 10);
psarray[1] = parseInt($(this).attr("ProcessesSleeping"), 10);
}
if ($(this).attr("ProcessesStopped") !== undefined) {
pstopped = parseInt($(this).attr("ProcessesStopped"), 10);
psarray[2] = parseInt($(this).attr("ProcessesStopped"), 10);
}
if ($(this).attr("ProcessesZombie") !== undefined) {
pzombie = parseInt($(this).attr("ProcessesZombie"), 10);
psarray[3] = parseInt($(this).attr("ProcessesZombie"), 10);
}
if ($(this).attr("ProcessesWaiting") !== undefined) {
pwaiting = parseInt($(this).attr("ProcessesWaiting"), 10);
psarray[4] = parseInt($(this).attr("ProcessesWaiting"), 10);
}
if ($(this).attr("ProcessesOther") !== undefined) {
pother = parseInt($(this).attr("ProcessesOther"), 10);
psarray[5] = parseInt($(this).attr("ProcessesOther"), 10);
}
 
document.title = "System information: " + hostname + " (" + ip + ")";
$("#s_hostname_title").html(hostname);
$("#s_ip_title").html(ip);
$("#s_ip_title").html(ip);
setAndStrip("#s_hostname", hostname);
setAndStrip("#s_ip", ip);
setAndStrip("#s_kernel", kernel);
setAndStrip("#s_distro", "<img src='./gfx/images/" + icon + "' alt='Icon' title='' style='width:16px;height:16px;vertical-align:middle;' onload='PNGload($(this));' />&nbsp;" + distro); //onload IE6 PNG fix
setAndStrip("#s_os", "<img src='./gfx/images/" + os + ".png' alt='OSIcon' title='' style='width:16px;height:16px;vertical-align:middle;' onload='PNGload($(this));' />&nbsp;" + os); //onload IE6 PNG fix
setAndStrip("#s_distro", "<img src='./gfx/images/" + icon + "' alt='Icon' title='" + icon + "' style='width:16px;height:16px;vertical-align:middle;' onload='PNGload($(this));' />&nbsp;" + distro); //onload IE6 PNG fix
setAndStrip("#s_os", "<img src='./gfx/images/" + os + ".png' alt='OSIcon' title='" + os + ".png' style='width:16px;height:16px;vertical-align:middle;' onload='PNGload($(this));' />&nbsp;" + os); //onload IE6 PNG fix
setAndStrip("#s_uptime", uptime);
if ((datetimeFormat !== undefined) && (datetimeFormat.toLowerCase() === "locale")) {
setAndStrip("#s_lastboot", lastboot.toLocaleString());
744,15 → 762,15
setAndStrip("#s_syslang", syslang);
setAndStrip("#s_codepage", codepage);
setAndStrip("#s_processes", processes);
if ((processes > 0) && (prunning || psleeping || pstopped || pzombie || pwaiting || pother)) {
if ((processes > 0) && (psarray[0] || psarray[1] || psarray[2] || psarray[3] || psarray[4] || psarray[5])) {
$("#s_processes").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)) {
var idlist = {0:111,1:112,2:113,3:114,4:115,5:116};
for (var proc_type in idlist) {
if (psarray[proc_type]) {
if (not_first) {
$("#s_processes").append(", ");
}
$("#s_processes").append(eval("p" + proc_type) + "&nbsp;" + genlang(typelist[proc_type]));
$("#s_processes").append(psarray[proc_type] + "&nbsp;" + genlang(idlist[proc_type]));
not_first = true;
}
}
824,7 → 842,7
tree.push(cpucoreposition);
}
if (isFinite(voltage)) {
html += "<tr><td style=\"width:68%\"><div class=\"treediv\"><span class=\"treespan\">" + genlang(52) + ":</span></div></td><td>" + round(voltage, 2) + " " + genlang(82) + "</td></tr>\n";
html += "<tr><td style=\"width:68%\"><div class=\"treediv\"><span class=\"treespan\">" + genlang(52) + ":</span></div></td><td>" + round(voltage, 2) + String.fromCharCode(160) + genlang(62) + "</td></tr>\n";
tree.push(cpucoreposition);
}
if (!isNaN(bogo)) {
904,7 → 922,7
tree.push(devcoreposition);
}
if (isFinite(voltage)) {
html += "<tr><td style=\"width:68%\"><div class=\"treediv\"><span class=\"treespan\">" + genlang(52) + ":</span></div></td><td>" + round(voltage, 2) + " " + genlang(82) + "</td></tr>\n";
html += "<tr><td style=\"width:68%\"><div class=\"treediv\"><span class=\"treespan\">" + genlang(52) + ":</span></div></td><td>" + round(voltage, 2) + String.fromCharCode(160) + genlang(62) + "</td></tr>\n";
tree.push(devcoreposition);
}
if (serial !== undefined) {
1031,8 → 1049,9
}
 
$("Network NetDevice", xml).each(function getDevice(id) {
var name = "", rx = 0, tx = 0, er = 0, dr = 0, info = "", networkindex = 0, htmlrx = '', htmltx = '', rxr = 0, txr = 0;
var name = "", rx = 0, tx = 0, er = 0, dr = 0, info = "", bridge = "", networkindex = 0, htmlrx = '', htmltx = '', rxr = 0, txr = 0;
name = $(this).attr("Name");
bridge = $(this).attr("Bridge");
rx = parseInt($(this).attr("RxBytes"), 10);
tx = parseInt($(this).attr("TxBytes"), 10);
er = parseInt($(this).attr("Err"), 10);
1074,8 → 1093,11
}
}
 
html +="<tr><td><div class=\"treediv\"><span class=\"treespan\">" + name + "</span></div></td><td class=\"right\">" + formatBytes(rx, xml) + htmlrx + "</td><td class=\"right\">" + formatBytes(tx, xml) + htmltx +"</td><td class=\"right\">" + er.toString() + "/<wbr>" + dr.toString() + "</td></tr>";
 
if ( (bridge !== undefined) && (bridge !== "") ) {
html +="<tr><td><div class=\"treediv\"><span class=\"treespan\">" + name + " (" + bridge +")</span></div></td><td class=\"right\">" + formatBytes(rx, xml) + htmlrx + "</td><td class=\"right\">" + formatBytes(tx, xml) + htmltx +"</td><td class=\"right\">" + er.toString() + "/<wbr>" + dr.toString() + "</td></tr>";
} else {
html +="<tr><td><div class=\"treediv\"><span class=\"treespan\">" + name + "</span></div></td><td class=\"right\">" + formatBytes(rx, xml) + htmlrx + "</td><td class=\"right\">" + formatBytes(tx, xml) + htmltx +"</td><td class=\"right\">" + er.toString() + "/<wbr>" + dr.toString() + "</td></tr>";
}
networkindex = tree.push(0);
 
if (showNetworkActiveSpeed) {
1262,7 → 1284,7
return;
}
 
var total_usage = 0, total_used = 0, total_free = 0, total_size = 0, threshold = 0;
var total_usage = 0, total_used = 0, total_free = 0, total_size = 0, threshold = 0, usage = 0;
 
filesystemTable.fnClearTable();
 
1297,25 → 1319,26
type = "";
}
 
usage = (size != 0) ? Math.ceil((used / size) * 100) : 0;
if (!isNaN(ignore) && (ignore > 0) && showTotals) {
if (ignore >= 3) {
if ((ignore == 3) && !isNaN(threshold) && (percent >= threshold)) {
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "barwarn") + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span><i>(" + formatBytes(used, xml) + ")</i>", "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "barwarn", usage) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span><i>(" + formatBytes(used, xml) + ")</i>", "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
} else {
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span><i>(" + formatBytes(used, xml) + ")</i>", "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "bar", usage) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span><i>(" + formatBytes(used, xml) + ")</i>", "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
}
} else {
if (!isNaN(threshold) && (percent >= threshold)) {
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "barwarn") + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "barwarn", usage) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
} else {
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "bar", usage) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
}
}
} else {
if (!isNaN(threshold) && (percent >= threshold) && (showTotals || isNaN(ignore) || (ignore < 4))) {
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "barwarn") + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span>" + formatBytes(free, xml), "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span>" + formatBytes(size, xml)]);
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "barwarn", usage) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span>" + formatBytes(free, xml), "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span>" + formatBytes(size, xml)]);
} else {
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span>" + formatBytes(free, xml), "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span>" + formatBytes(size, xml)]);
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "bar", usage) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span>" + formatBytes(free, xml), "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span>" + formatBytes(size, xml)]);
}
}
if (showTotals) {
1331,15 → 1354,16
total_free += free;
total_size += size;
}
total_usage = (total_size != 0) ? round(100 - (total_free / total_size) * 100, 2) : 0;
}
});
 
if (showTotals) {
usage = (total_size != 0) ? Math.ceil((total_used / total_size) * 100) : 0;
total_usage = (total_size != 0) ? round(100 - (total_free / total_size) * 100, 2) : 0;
if (!isNaN(threshold) && (total_usage >= threshold)) {
$("#s_fs_total").html(createBar(total_usage, "barwarn"));
$("#s_fs_total").html(createBar(total_usage, "barwarn" , usage));
} else {
$("#s_fs_total").html(createBar(total_usage));
$("#s_fs_total").html(createBar(total_usage, "bar", usage));
}
$("#s_fs_tfree").html(formatBytes(total_free, xml));
$("#s_fs_tused").html(formatBytes(total_used, xml));
1451,7 → 1475,7
if (isFinite(value))
$("#fansTable tbody").append("<tr><td>" + label + "</td><td>" + createBar(round(value,0)) + "</td><td class=\"right\">" + _min + "</td></tr>");
else
$("#fansTable tbody").append("<tr><td>" + label + "</td><td>---%</td><td class=\"right\">" + _min + "</td></tr>");
$("#fansTable tbody").append("<tr><td>" + label + "</td><td>---%</td><td class=\"right\">" + _min + "</td></tr>");
} else {
if (isFinite(min))
_min = round(min,0) + "&nbsp;" + genlang(63);
1569,7 → 1593,10
label += " <img style=\"vertical-align: middle; width:16px;\" src=\"./gfx/attention.gif\" alt=\"!\" title=\""+event+"\"/>";
unit = $(this).attr("Unit");
if (unit === "%") {
$("#otherTable tbody").append("<tr><td>" + label + "</td><td>" + createBar(round(value,0)) + "</td></tr>");
if (isFinite(value))
$("#otherTable tbody").append("<tr><td>" + label + "</td><td>" + createBar(round(value,0)) + "</td></tr>");
else
$("#otherTable tbody").append("<tr><td>" + label + "</td><td>---%</td></tr>");
} else {
$("#otherTable tbody").append("<tr><td>" + label + "</td><td class=\"right\">" + value + "</td></tr>");
}
1871,7 → 1898,7
$("#template").val(cookie_template);
if ($("#template").val() === null) {
$("#template").val(old_template);
}
}
}
switchStyle($("#template").val().toString());
$('#template').show();
/web/acc/phpsysinfo/js/phpSysInfo/phpsysinfo_bootstrap.js
2,6 → 2,13
showCPUListExpanded, showCPUInfoExpanded, showNetworkInfosExpanded, showNetworkActiveSpeed, showCPULoadCompact, oldnetwork = [], refrTimer;
 
/**
* Fix potential XSS vulnerability in jQuery
*/
jQuery.htmlPrefilter = function( html ) {
return html;
};
 
/**
* generate a cookie, if not exist, and add an entry to it<br><br>
* inspired by <a href="http://www.quirksmode.org/js/cookies.html">http://www.quirksmode.org/js/cookies.html</a>
* @param {String} name name that holds the value
231,6 → 238,7
}
},
success: function (data) {
var refrtime;
// console.log(data);
// data_dbg = data;
if ((typeof(initiate) === 'boolean') && (data.Options !== undefined) && (data.Options["@attributes"] !== undefined) && ((refrtime = data.Options["@attributes"].refresh) !== undefined) && (refrtime !== "0")) {
292,8 → 300,8
success: function (data) {
try {
for (var propertyName in data.Plugins) {
if ((data.Plugins[propertyName]["@attributes"] !== undefined) &&
((hostname = data.Plugins[propertyName]["@attributes"]["Hostname"]) !== undefined)) {
if ((data.Plugins[propertyName]["@attributes"] !== undefined) &&
((hostname = data.Plugins[propertyName]["@attributes"].Hostname) !== undefined)) {
$('span[class=hostname_' + pluginname + ']').html(hostname);
}
break;
323,13 → 331,19
});
}
 
if ((ua=useragent.match(/Version\/(\d+)\.[\d\.]+ (Mobile\/\S+ )?Safari\//)) !== null) {
if ((ua=useragent.match(/Midori\/(\d+)\.?(\d+)?/)) !== null) {
if ((ua[1]==0) && (ua.length==3) && (ua[2]<=4)) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-midori04.css');
} else if ((ua[1]==0) && (ua.length==3) && (ua[2]==5)) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-midori05.css');
}
} else if ((ua=useragent.match(/\(KHTML, like Gecko\) Version\/(\d+)\.[\d\.]+ (Mobile\/\S+ )?Safari\//)) !== null) {
if (ua[1]<=5) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-safari5.css');
} else if (ua[1]<=8) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-safari8.css');
}
} else if ((ua=useragent.match(/Firefox\/(\d+)\.[\d\.]+/)) !== null) {
} else if ((ua=useragent.match(/Firefox\/(\d+)\.[\d\.]+/)) !== null) {
if (ua[1]<=15) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-firefox15.css');
} else if (ua[1]<=20) {
339,18 → 353,16
} else if (ua[1]==28) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-firefox28.css');
}
} else if ((ua=useragent.match(/Midori\/(\d+)\.?(\d+)?/)) !== null) {
if ((ua[1]==0) && (ua.length==3) && (ua[2]<=4)) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-midori04.css');
} else if ((ua[1]==0) && (ua.length==3) && (ua[2]==5)) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-midori05.css');
}
} else if ((ua=useragent.match(/Chrome\/(\d+)\.[\d\.]+/)) !== null) {
} else if ((ua=useragent.match(/Chrome\/(\d+)\.[\d\.]+/)) !== null) {
if (ua[1]<=25) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-chrome25.css');
} else if (ua[1]<=28) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-chrome28.css');
}
} else if ((ua=useragent.match(/^Opera\/.*Version\/(\d+)\.[\d\.]+$/)) !== null) {
if (ua[1]<=11) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-opera11.css');
}
}
 
$(window).resize();
599,12 → 611,12
},
Distro: {
html: function () {
return '<table class="borderless table-hover table-nopadding" style="width:100%;"><tr><td style="padding-right:4px!important;width:32px;"><img src="gfx/images/' + this.Distroicon + '" alt="" style="width:32px;height:32px;" /></td><td style="vertical-align:middle;">' + this.Distro + '</td></tr></table>';
return '<table class="borderless table-hover table-nopadding" style="width:100%;"><tr><td style="padding-right:4px!important;width:32px;"><img src="gfx/images/' + this.Distroicon + '" alt="" title="' + this.Distroicon + '" style="width:32px;height:32px;" /></td><td style="vertical-align:middle;">' + this.Distro + '</td></tr></table>';
}
},
OS: {
html: function () {
return '<table class="borderless table-hover table-nopadding" style="width:100%;"><tr><td style="padding-right:4px!important;width:32px;"><img src="gfx/images/' + this.OS + '.png" alt="" style="width:32px;height:32px;" /></td><td style="vertical-align:middle;">' + this.OS + '</td></tr></table>';
return '<table class="borderless table-hover table-nopadding" style="width:100%;"><tr><td style="padding-right:4px!important;width:32px;"><img src="gfx/images/' + this.OS + '.png" alt="" title="' + this.OS + '.png" style="width:32px;height:32px;" /></td><td style="vertical-align:middle;">' + this.OS + '</td></tr></table>';
}
},
LoadAvg: {
620,36 → 632,37
},
Processes: {
html: function () {
var processes = "", p111 = 0, p112 = 0, p113 = 0, p114 = 0, p115 = 0, p116 = 0;
var processes = 0, psarray = [0,0,0,0,0,0];
var not_first = false;
processes = parseInt(this.Processes, 10);
if (processes > 0) {
if (this.ProcessesRunning !== undefined) {
p111 = parseInt(this.ProcessesRunning, 10);
psarray[0] = parseInt(this.ProcessesRunning, 10);
}
if (this.ProcessesSleeping !== undefined) {
p112 = parseInt(this.ProcessesSleeping, 10);
psarray[1] = parseInt(this.ProcessesSleeping, 10);
}
if (this.ProcessesStopped !== undefined) {
p113 = parseInt(this.ProcessesStopped, 10);
psarray[2] = parseInt(this.ProcessesStopped, 10);
}
if (this.ProcessesZombie !== undefined) {
p114 = parseInt(this.ProcessesZombie, 10);
psarray[3] = parseInt(this.ProcessesZombie, 10);
}
if (this.ProcessesWaiting !== undefined) {
p115 = parseInt(this.ProcessesWaiting, 10);
psarray[4] = parseInt(this.ProcessesWaiting, 10);
}
if (this.ProcessesOther !== undefined) {
p116 = parseInt(this.ProcessesOther, 10);
psarray[5] = parseInt(this.ProcessesOther, 10);
}
if (p111 || p112 || p113 || p114 || p115 || p116) {
if (psarray[0] || psarray[1] || psarray[2] || psarray[3] || psarray[4] || psarray[5]) {
processes += " (";
for (var proc_type in {111:0,112:1,113:2,114:3,115:4,116:5}) {
if (eval("p" + proc_type)) {
var idlist = {0:111,1:112,2:113,3:114,4:115,5:116};
for (var proc_type in idlist) {
if (psarray[proc_type]) {
if (not_first) {
processes += ", ";
}
processes += eval("p" + proc_type) + String.fromCharCode(160) + genlang(proc_type);
processes += psarray[proc_type] + String.fromCharCode(160) + genlang(idlist[proc_type]);
not_first = true;
}
}
728,7 → 741,7
},
Voltage: {
html: function() {
return round(this.Voltage, 2) + genlang(82); //V
return round(this.Voltage, 2) + String.fromCharCode(160) + genlang(62); //V
}
},
Bogomips: {
770,7 → 783,7
},
Voltage: {
html: function() {
return round(this.Voltage, 2) + genlang(82); //V
return round(this.Voltage, 2) + String.fromCharCode(160) + genlang(62); //V
}
},
Capacity: {
795,7 → 808,7
 
var html="";
 
if (data.Hardware["@attributes"] !== undefined) {
if (data.Hardware["@attributes"] !== undefined) {
if (data.Hardware["@attributes"].Name !== undefined) {
html+="<tr id=\"hardware-Machine\">";
html+="<th style=\"width:8%;\">"+genlang(107)+"</th>"; //Machine
862,7 → 875,7
html+="<td><span class=\"treegrid-span\">" + genlang('128') + ":</span></td>"; //Number of memories
} else {
html+="<td><span class=\"treegrid-span\">" + genlang('120') + ":</span></td>"; //Number of devices
}
}
html+="<td class=\"rightCell\"><span id=\"" + hw_type + "Count\"></span></td>";
html+="</tr>";
}
1130,8 → 1143,8
},
Percent: {
html: function () {
var used1 = (this.Total != 0) ? Math.ceil((this.Used / this.Total) * 100) : 0;
var used2 = Math.ceil(this.Percent);
var used1 = Math.max(Math.min((this.Total != 0) ? Math.ceil((this.Used / this.Total) * 100) : 0, 100), 0);
var used2 = Math.max(Math.min(Math.ceil(this.Percent), 100), 0);
var used21= used2 - used1;
if (used21 > 0) {
return '<div class="progress">' + '<div class="' +
1138,8 → 1151,8
( ( ((this.Ignore == undefined) || (this.Ignore < 4)) && ((data.Options["@attributes"].threshold !== undefined) &&
(parseInt(this.Percent, 10) >= parseInt(data.Options["@attributes"].threshold, 10))) ) ? 'progress-bar progress-bar-danger' : 'progress-bar progress-bar-info' ) +
'" style="width:' + used1 + '% ;"></div>' +
'<div class="progress-bar progress-bar-warning" style="width:' + used21 + '% ;"></div>'
+'</div><div class="percent">' + this.Percent + '% ' + ((this.Inodes !== undefined) ? '<i>(' + this.Inodes + '%)</i>' : '') + '</div>';
'<div class="progress-bar progress-bar-warning" style="width:' + used21 + '% ;"></div>' +
'</div><div class="percent">' + this.Percent + '% ' + ((this.Inodes !== undefined) ? '<i>(' + this.Inodes + '%)</i>' : '') + '</div>';
} else {
return '<div class="progress">' + '<div class="' +
( ( ((this.Ignore == undefined) || (this.Ignore < 4)) && ((data.Options["@attributes"].threshold !== undefined) &&
1161,7 → 1174,7
if (showtotals) {
if ((datas[i]["@attributes"].Ignore !== undefined) && (datas[i]["@attributes"].Ignore > 0)) {
if (datas[i]["@attributes"].Ignore == 2) {
total.Used += parseInt(datas[i]["@attributes"].Used, 10);
total.Used += parseInt(datas[i]["@attributes"].Used, 10);
} else if (datas[i]["@attributes"].Ignore == 1) {
total.Total += parseInt(datas[i]["@attributes"].Used, 10);
total.Used += parseInt(datas[i]["@attributes"].Used, 10);
1200,6 → 1213,15
}
 
var directives = {
Name: {
text: function () {
if (this.Bridge !== undefined) {
return this.Name + " (" + this.Bridge + ")";
} else {
return this.Name;
}
}
},
RxBytes: {
html: function () {
var htmladd = '';
1209,7 → 1231,7
htmladd ="<br><i>("+formatBPS(round(this.RxRate, 2))+")</i>";
} else {
htmladd ="<br><i>("+formatBytes(round(this.RxRate, 2), data.Options["@attributes"].byteFormat)+"/s)</i>";
}
}
} else if ($.inArray(this.Name, oldnetwork) >= 0) {
var diff, difftime;
if (((diff = this.RxBytes - oldnetwork[this.Name].RxBytes) > 0) && ((difftime = data.Generation["@attributes"].timestamp - oldnetwork[this.Name].timestamp) > 0)) {
1317,7 → 1339,7
var directives = {
Value: {
text: function () {
return round(this.Value,2) + String.fromCharCode(160) + "V";
return (isFinite(this.Value)?round(this.Value,2):"---") + String.fromCharCode(160) + "V";
}
},
Min: {
1409,11 → 1431,14
Value: {
html: function () {
if (this.Unit === "%") {
return '<div class="progress">' +
'<div class="progress-bar progress-bar-info" style="width:' + round(this.Value,0) + '%;"></div>' +
'</div><div class="percent">' + round(this.Value,0) + '%</div>';
if (isFinite(this.Value))
return '<div class="progress">' +
'<div class="progress-bar progress-bar-info" style="width:' + round(this.Value,0) + '%;"></div>' +
'</div><div class="percent">' + round(this.Value,0) + '%</div>';
else
return '---%';
} else {
return round(this.Value,0) + String.fromCharCode(160) + genlang(63); //RPM
return (isFinite(this.Value)?round(this.Value,0):"---") + String.fromCharCode(160) + genlang(63); //RPM
}
}
},
1462,7 → 1487,7
var directives = {
Value: {
text: function () {
return round(this.Value,2) + String.fromCharCode(160) + "W";
return (isFinite(this.Value)?round(this.Value,2):"---") + String.fromCharCode(160) + "W";
}
},
Max: {
1505,7 → 1530,7
var directives = {
Value: {
text: function () {
return round(this.Value,2) + String.fromCharCode(160) + "A";
return (isFinite(this.Value)?round(this.Value,2):"---") + String.fromCharCode(160) + "A";
}
},
Min: {
1555,10 → 1580,12
Value: {
html: function () {
if (this.Unit === "%") {
return '<div class="progress">' +
'<div class="progress-bar progress-bar-info" style="width:' + round(this.Value,0) + '%;"></div>' +
'</div><div class="percent">' + round(this.Value,0) + '%</div>';
// return round(this.Value,0) + "%";
if (isFinite(this.Value))
return '<div class="progress">' +
'<div class="progress-bar progress-bar-info" style="width:' + round(this.Value,0) + '%;"></div>' +
'</div><div class="percent">' + round(this.Value,0) + '%</div>';
else
return '---%';
} else {
return this.Value;
}
/web/acc/phpsysinfo/phpsysinfo.ini
47,6 → 47,13
;
ALLOWED=false
 
; Enable JSONP data mode (e.g. /phpsysinfo/xml.php?plugin=complete&jsonp&callback=getData)
; Disabled by default for security reasons.
; - false : JSONP data mode disabled
; - true : JSONP data mode enabled
;
;JSONP=false
 
; List of sudo commands
; Example : SUDO_COMMANDS="iptables-save" //execute "sudo iptables-save" instead "iptables-save"
; SUDO_COMMANDS=false //no sudo commands
127,6 → 134,7
; - Uprecords - show uprecords info
; - PingTest - show Ping Test info
; - StableBit - show StableBit Scanner info (WinNT)
; - DiskLoad - show Disk Load info (WinNT)
; - HyperV - show Hyper-V info (WinNT)
; - Docker - show docker stats
; - Viewer - show output of any command or file viewer.tmp contents
446,6 → 454,11
HIDE_NETWORK_MACADDR=false
 
 
; Show bridge info in the network interface name
;
SHOW_NETWORK_BRIDGE=true
 
 
; Sort network interfaces list
;
SORT_NETWORK_INTERFACES_LIST=false
740,8 → 753,8
; downloaded from http://hwraid.le-vert.net or https://github.com/eLvErDe/hwraid or https://github.com/ElCoyote27/hwraid
; - graid: command "graid list" is run (on FreeBSD only)
; - zpool: command "zpool status" is run
; - storcli: command "storcli /call show all" or "storcli /call show all" is run
; - perccli: command "perccli /call show all" or "perccli /call show all" is run
; - storcli: command "storcli64 /call show all; storcli64 /call /vall show all" or "storcli /call show all; storcli /call /vall show all" is run
; - perccli: command "perccli64 /call show all; perccli64 /call /vall show all" or "perccli /call show all; perccli /call /vall show all" is run
; - idrac: command "snmpwalk -Ona -c public -v 1 -r 0 -t 3 {device} .1.3.6.1.4.1.674.10892.5.5.1.20" is run
; - "php-snmp"- idrac: execute php snmprealwalk function (php-snmp module must be installed)
; - for others the option is inactive (uses "command" instead)
/web/acc/phpsysinfo/read_config.php
3,7 → 3,7
/**
* phpSysInfo version
*/
define('PSI_VERSION', '3.4.2');
define('PSI_VERSION', '3.4.3');
/**
* phpSysInfo configuration
*/
89,6 → 89,11
}
}
 
if (isset($_GET['jsonp']) && (!defined('PSI_JSONP') || !PSI_JSONP)) {
echo "JSONP data mode not enabled in phpsysinfo.ini.";
die();
}
 
/* default error handler */
if (function_exists('errorHandlerPsi')) {
restore_error_handler();
327,8 → 332,8
}
 
if (!defined('PSI_JSON_ISSUE')) { //if not overloaded in phpsysinfo.ini
if (!extension_loaded("xml")) {
die("phpSysInfo requires the xml extension to php in order to work properly.");
if (!extension_loaded("simplexml")) {
die("phpSysInfo requires the simplexml extension to php in order to work properly.");
}
if (simplexml_load_string("<A><B><C/></B>\n</A>") !== simplexml_load_string("<A><B><C/></B></A>")) { // json_encode issue test
define('PSI_JSON_ISSUE', true); // Problem must be solved
/web/acc/phpsysinfo/templates/aqua.css
101,9 → 101,8
width: 100px;
}
 
#vitals, #network, #memory, #filesystem, #hardware, #temperature, #voltage, #fans, #power, #current, #other, #ups {
.fullsize, .halfsize {
float: left;
width: 451px;
margin: 10px 0 0 8px;
_margin: 10px 4px 0 4px; /* ie6 */
padding: 1px;
111,12 → 110,12
background: #fff;
}
 
#pciTable, #ideTable, #scsiTable, #nvmeTable, #usbTable, #tbTable, #i2cTable {
padding: 0px 30px;
.fullsize {
width: 916px;
}
 
#memory, #filesystem {
width: 915px;
.halfsize {
width: 451px;
}
 
#filesystemTable thead tr th {
152,6 → 151,10
background: #a72971;
}
 
.barrest {
background: #29a79e;
}
 
.right {
text-align: right;
padding-right: 20px;
/web/acc/phpsysinfo/templates/html/index_bootstrap.html
3,6 → 3,7
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Content-Security-Policy" content="default-src 'unsafe-inline' 'unsafe-eval' 'self'">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
/web/acc/phpsysinfo/templates/html/index_dynamic.html
5,6 → 5,7
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Security-Policy" content="default-src 'unsafe-inline' 'unsafe-eval' 'self'" />
<meta name="Description" content="phpSysInfo is a customizable PHP script that displays information about your system nicely" />
<noscript>
<meta http-equiv="refresh" content="2; URL=index.php?disp=static" />
/web/acc/phpsysinfo/xml.php
39,7 → 39,8
$json = $output->getJsonString();
if (isset($_GET['jsonp'])) {
header('Content-Type: application/javascript');
echo(!preg_match('/[^\w\?]/', $_GET['callback'])?$_GET['callback']:'') . '('.$json.')';
echo !preg_match('/[^\w\?]/', $_GET['callback'])?$_GET['callback']:'';
echo '('.$json.')';
} else {
header('Content-Type: application/json');
echo $json;