This commit is contained in:
Karl Hudgell 2015-07-26 08:33:54 +01:00
parent 9ca7240180
commit e8ed1f3b1d
706 changed files with 90062 additions and 442 deletions

49
PicUpload.html Normal file
View File

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>KLanding Pic Uploader</title>
<!-- Google web fonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Sans+Narrow:400,700" rel='stylesheet' />
<!-- The main CSS file -->
<link href="/assets/css/style.css" rel="stylesheet" />
</head>
<body>
<form id="upload" method="post" action="upload.php" enctype="multipart/form-data">
<div id="drop">
Drop Here
<a>Browse</a>
<input type="file" name="upl" multiple />
</div>
<ul>
<!-- The file uploads will be shown here -->
</ul>
</form>
<footer>
</footer>
<!-- JavaScript Includes -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="/assets/js/jquery.knob.js"></script>
<!-- jQuery File Upload Dependencies -->
<script src="/assets/js/jquery.ui.widget.js"></script>
<script src="/assets/js/jquery.iframe-transport.js"></script>
<script src="/assets/js/jquery.fileupload.js"></script>
<!-- Our main JS file -->
<script src="/assets/js/script.js"></script>
</body>
</html>

View File

@ -1,12 +0,0 @@
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>

260
assets/css/style.css Normal file
View File

@ -0,0 +1,260 @@
/*-------------------------
Simple reset
--------------------------*/
*{
margin:0;
padding:0;
}
/*-------------------------
General Styles
--------------------------*/
html{
background-color:#ebebec;
background-image:-webkit-radial-gradient(center, #ebebec, #b4b4b4);
background-image:-moz-radial-gradient(center, #ebebec, #b4b4b4);
background-image:radial-gradient(center, #ebebec, #b4b4b4);
min-height:900px;
}
body{
font:15px/1.3 Arial, sans-serif;
color: #4f4f4f;
}
a, a:visited {
outline:none;
color:#389dc1;
}
a:hover{
text-decoration:none;
}
section, footer, header, aside{
display: block;
}
/*----------------------------
The file upload form
-----------------------------*/
#upload{
font-family:'PT Sans Narrow', sans-serif;
background-color:#373a3d;
background-image:-webkit-linear-gradient(top, #373a3d, #313437);
background-image:-moz-linear-gradient(top, #373a3d, #313437);
background-image:linear-gradient(top, #373a3d, #313437);
width:250px;
padding:30px;
border-radius:3px;
margin:200px auto 100px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
}
#drop{
background-color: #2E3134;
padding: 40px 50px;
margin-bottom: 30px;
border: 20px solid rgba(0, 0, 0, 0);
border-radius: 3px;
border-image: url('../img/border-image.png') 25 repeat;
text-align: center;
text-transform: uppercase;
font-size:16px;
font-weight:bold;
color:#7f858a;
}
#drop a{
background-color:#007a96;
padding:12px 26px;
color:#fff;
font-size:14px;
border-radius:2px;
cursor:pointer;
display:inline-block;
margin-top:12px;
line-height:1;
}
#drop a:hover{
background-color:#0986a3;
}
#drop input{
display:none;
}
#upload ul{
list-style:none;
margin:0 -30px;
border-top:1px solid #2b2e31;
border-bottom:1px solid #3d4043;
}
#upload ul li{
background-color:#333639;
background-image:-webkit-linear-gradient(top, #333639, #303335);
background-image:-moz-linear-gradient(top, #333639, #303335);
background-image:linear-gradient(top, #333639, #303335);
border-top:1px solid #3d4043;
border-bottom:1px solid #2b2e31;
padding:15px;
height: 52px;
position: relative;
}
#upload ul li input{
display: none;
}
#upload ul li p{
width: 144px;
overflow: hidden;
white-space: nowrap;
color: #EEE;
font-size: 16px;
font-weight: bold;
position: absolute;
top: 20px;
left: 100px;
}
#upload ul li i{
font-weight: normal;
font-style:normal;
color:#7f7f7f;
display:block;
}
#upload ul li canvas{
top: 15px;
left: 32px;
position: absolute;
}
#upload ul li span{
width: 15px;
height: 12px;
background: url('../img/icons.png') no-repeat;
position: absolute;
top: 34px;
right: 33px;
cursor:pointer;
}
#upload ul li.working span{
height: 16px;
background-position: 0 -12px;
}
#upload ul li.error p{
color:red;
}
/*----------------------------
The Demo Footer
-----------------------------*/
footer{
background-color: #080808;
bottom: 0;
box-shadow: 0 -1px 2px rgba(0,0,0,0.4);
height: 40px;
left: 0;
position: fixed;
width: 100%;
z-index: 100000;
}
footer h2{
font-size: 14px;
font-weight: normal;
position: absolute;
top:0;
left: 50%;
bottom:0;
margin-left: -420px;
padding:13px 20px 0;
border:1px solid #000;
border-width:0 1px;
background-color:rgba(0,0,0,0.6);
box-shadow:0 0 5px #000 inset;
line-height: 1;
margin-top: 0;
}
footer h2 a{
color: #EEEEEE !important;
text-decoration:none !important;
}
footer h2 i{
font-style:normal;
color:#888;
}
#tzine-download{
opacity:0.9;
background-color:#257691;
font-size:11px;
text-align:center;
text-transform:uppercase;
width:150px;
height:28px;
line-height:28px;
text-decoration:none !important;
display: inline-block;
border-radius: 2px;
color: #fff !Important;
font-weight: bold;
box-shadow: 0 -1px 2px #1e5e74 inset;
border-top:1px solid #26849c;
text-shadow:1px 1px 1px #1e6176;
margin-top:6px;
}
#tzine-download:hover{
opacity:1;
}
#tzine-actions{
position:absolute;
top:0;
width:500px;
right:50%;
margin-right:-420px;
text-align:right;
}
#tzine-actions iframe{
display: inline-block;
height: 21px;
width: 95px;
position: relative;
float: left;
margin-top: 11px;
}

BIN
assets/img/border-image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
assets/img/icons.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

1201
assets/js/jquery.fileupload.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,185 @@
/*
* jQuery Iframe Transport Plugin 1.6.1
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2011, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/MIT
*/
/*jslint unparam: true, nomen: true */
/*global define, window, document */
(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define(['jquery'], factory);
} else {
// Browser globals:
factory(window.jQuery);
}
}(function ($) {
'use strict';
// Helper variable to create unique names for the transport iframes:
var counter = 0;
// The iframe transport accepts three additional options:
// options.fileInput: a jQuery collection of file input fields
// options.paramName: the parameter name for the file form data,
// overrides the name property of the file input field(s),
// can be a string or an array of strings.
// options.formData: an array of objects with name and value properties,
// equivalent to the return data of .serializeArray(), e.g.:
// [{name: 'a', value: 1}, {name: 'b', value: 2}]
$.ajaxTransport('iframe', function (options) {
if (options.async) {
var form,
iframe,
addParamChar;
return {
send: function (_, completeCallback) {
form = $('<form style="display:none;"></form>');
form.attr('accept-charset', options.formAcceptCharset);
addParamChar = /\?/.test(options.url) ? '&' : '?';
// XDomainRequest only supports GET and POST:
if (options.type === 'DELETE') {
options.url = options.url + addParamChar + '_method=DELETE';
options.type = 'POST';
} else if (options.type === 'PUT') {
options.url = options.url + addParamChar + '_method=PUT';
options.type = 'POST';
} else if (options.type === 'PATCH') {
options.url = options.url + addParamChar + '_method=PATCH';
options.type = 'POST';
}
// javascript:false as initial iframe src
// prevents warning popups on HTTPS in IE6.
// IE versions below IE8 cannot set the name property of
// elements that have already been added to the DOM,
// so we set the name along with the iframe HTML markup:
iframe = $(
'<iframe src="javascript:false;" name="iframe-transport-' +
(counter += 1) + '"></iframe>'
).bind('load', function () {
var fileInputClones,
paramNames = $.isArray(options.paramName) ?
options.paramName : [options.paramName];
iframe
.unbind('load')
.bind('load', function () {
var response;
// Wrap in a try/catch block to catch exceptions thrown
// when trying to access cross-domain iframe contents:
try {
response = iframe.contents();
// Google Chrome and Firefox do not throw an
// exception when calling iframe.contents() on
// cross-domain requests, so we unify the response:
if (!response.length || !response[0].firstChild) {
throw new Error();
}
} catch (e) {
response = undefined;
}
// The complete callback returns the
// iframe content document as response object:
completeCallback(
200,
'success',
{'iframe': response}
);
// Fix for IE endless progress bar activity bug
// (happens on form submits to iframe targets):
$('<iframe src="javascript:false;"></iframe>')
.appendTo(form);
form.remove();
});
form
.prop('target', iframe.prop('name'))
.prop('action', options.url)
.prop('method', options.type);
if (options.formData) {
$.each(options.formData, function (index, field) {
$('<input type="hidden"/>')
.prop('name', field.name)
.val(field.value)
.appendTo(form);
});
}
if (options.fileInput && options.fileInput.length &&
options.type === 'POST') {
fileInputClones = options.fileInput.clone();
// Insert a clone for each file input field:
options.fileInput.after(function (index) {
return fileInputClones[index];
});
if (options.paramName) {
options.fileInput.each(function (index) {
$(this).prop(
'name',
paramNames[index] || options.paramName
);
});
}
// Appending the file input fields to the hidden form
// removes them from their original location:
form
.append(options.fileInput)
.prop('enctype', 'multipart/form-data')
// enctype must be set as encoding for IE:
.prop('encoding', 'multipart/form-data');
}
form.submit();
// Insert the file input fields at their original location
// by replacing the clones with the originals:
if (fileInputClones && fileInputClones.length) {
options.fileInput.each(function (index, input) {
var clone = $(fileInputClones[index]);
$(input).prop('name', clone.prop('name'));
clone.replaceWith(input);
});
}
});
form.append(iframe).appendTo(document.body);
},
abort: function () {
if (iframe) {
// javascript:false as iframe src aborts the request
// and prevents warning popups on HTTPS in IE6.
// concat is used to avoid the "Script URL" JSLint error:
iframe
.unbind('load')
.prop('src', 'javascript'.concat(':false;'));
}
if (form) {
form.remove();
}
}
};
}
});
// The iframe transport returns the iframe content document as response.
// The following adds converters from iframe to text, json, html, and script:
$.ajaxSetup({
converters: {
'iframe text': function (iframe) {
return iframe && $(iframe[0].body).text();
},
'iframe json': function (iframe) {
return iframe && $.parseJSON($(iframe[0].body).text());
},
'iframe html': function (iframe) {
return iframe && $(iframe[0].body).html();
},
'iframe script': function (iframe) {
return iframe && $.globalEval($(iframe[0].body).text());
}
}
});
}));

661
assets/js/jquery.knob.js Normal file
View File

@ -0,0 +1,661 @@
/*!jQuery Knob*/
/**
* Downward compatible, touchable dial
*
* Version: 1.2.0 (15/07/2012)
* Requires: jQuery v1.7+
*
* Copyright (c) 2012 Anthony Terrien
* Under MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Thanks to vor, eskimoblood, spiffistan, FabrizioC
*/
(function($) {
/**
* Kontrol library
*/
"use strict";
/**
* Definition of globals and core
*/
var k = {}, // kontrol
max = Math.max,
min = Math.min;
k.c = {};
k.c.d = $(document);
k.c.t = function (e) {
return e.originalEvent.touches.length - 1;
};
/**
* Kontrol Object
*
* Definition of an abstract UI control
*
* Each concrete component must call this one.
* <code>
* k.o.call(this);
* </code>
*/
k.o = function () {
var s = this;
this.o = null; // array of options
this.$ = null; // jQuery wrapped element
this.i = null; // mixed HTMLInputElement or array of HTMLInputElement
this.g = null; // 2D graphics context for 'pre-rendering'
this.v = null; // value ; mixed array or integer
this.cv = null; // change value ; not commited value
this.x = 0; // canvas x position
this.y = 0; // canvas y position
this.$c = null; // jQuery canvas element
this.c = null; // rendered canvas context
this.t = 0; // touches index
this.isInit = false;
this.fgColor = null; // main color
this.pColor = null; // previous color
this.dH = null; // draw hook
this.cH = null; // change hook
this.eH = null; // cancel hook
this.rH = null; // release hook
this.run = function () {
var cf = function (e, conf) {
var k;
for (k in conf) {
s.o[k] = conf[k];
}
s.init();
s._configure()
._draw();
};
if(this.$.data('kontroled')) return;
this.$.data('kontroled', true);
this.extend();
this.o = $.extend(
{
// Config
min : this.$.data('min') || 0,
max : this.$.data('max') || 100,
stopper : true,
readOnly : this.$.data('readonly'),
// UI
cursor : (this.$.data('cursor') === true && 30)
|| this.$.data('cursor')
|| 0,
thickness : this.$.data('thickness') || 0.35,
lineCap : this.$.data('linecap') || 'butt',
width : this.$.data('width') || 200,
height : this.$.data('height') || 200,
displayInput : this.$.data('displayinput') == null || this.$.data('displayinput'),
displayPrevious : this.$.data('displayprevious'),
fgColor : this.$.data('fgcolor') || '#87CEEB',
inputColor: this.$.data('inputcolor') || this.$.data('fgcolor') || '#87CEEB',
inline : false,
step : this.$.data('step') || 1,
// Hooks
draw : null, // function () {}
change : null, // function (value) {}
cancel : null, // function () {}
release : null // function (value) {}
}, this.o
);
// routing value
if(this.$.is('fieldset')) {
// fieldset = array of integer
this.v = {};
this.i = this.$.find('input')
this.i.each(function(k) {
var $this = $(this);
s.i[k] = $this;
s.v[k] = $this.val();
$this.bind(
'change'
, function () {
var val = {};
val[k] = $this.val();
s.val(val);
}
);
});
this.$.find('legend').remove();
} else {
// input = integer
this.i = this.$;
this.v = this.$.val();
(this.v == '') && (this.v = this.o.min);
this.$.bind(
'change'
, function () {
s.val(s._validate(s.$.val()));
}
);
}
(!this.o.displayInput) && this.$.hide();
this.$c = $('<canvas width="' +
this.o.width + 'px" height="' +
this.o.height + 'px"></canvas>');
this.c = this.$c[0].getContext("2d");
this.$
.wrap($('<div style="' + (this.o.inline ? 'display:inline;' : '') +
'width:' + this.o.width + 'px;height:' +
this.o.height + 'px;"></div>'))
.before(this.$c);
if (this.v instanceof Object) {
this.cv = {};
this.copy(this.v, this.cv);
} else {
this.cv = this.v;
}
this.$
.bind("configure", cf)
.parent()
.bind("configure", cf);
this._listen()
._configure()
._xy()
.init();
this.isInit = true;
this._draw();
return this;
};
this._draw = function () {
// canvas pre-rendering
var d = true,
c = document.createElement('canvas');
c.width = s.o.width;
c.height = s.o.height;
s.g = c.getContext('2d');
s.clear();
s.dH
&& (d = s.dH());
(d !== false) && s.draw();
s.c.drawImage(c, 0, 0);
c = null;
};
this._touch = function (e) {
var touchMove = function (e) {
var v = s.xy2val(
e.originalEvent.touches[s.t].pageX,
e.originalEvent.touches[s.t].pageY
);
if (v == s.cv) return;
if (
s.cH
&& (s.cH(v) === false)
) return;
s.change(s._validate(v));
s._draw();
};
// get touches index
this.t = k.c.t(e);
// First touch
touchMove(e);
// Touch events listeners
k.c.d
.bind("touchmove.k", touchMove)
.bind(
"touchend.k"
, function () {
k.c.d.unbind('touchmove.k touchend.k');
if (
s.rH
&& (s.rH(s.cv) === false)
) return;
s.val(s.cv);
}
);
return this;
};
this._mouse = function (e) {
var mouseMove = function (e) {
var v = s.xy2val(e.pageX, e.pageY);
if (v == s.cv) return;
if (
s.cH
&& (s.cH(v) === false)
) return;
s.change(s._validate(v));
s._draw();
};
// First click
mouseMove(e);
// Mouse events listeners
k.c.d
.bind("mousemove.k", mouseMove)
.bind(
// Escape key cancel current change
"keyup.k"
, function (e) {
if (e.keyCode === 27) {
k.c.d.unbind("mouseup.k mousemove.k keyup.k");
if (
s.eH
&& (s.eH() === false)
) return;
s.cancel();
}
}
)
.bind(
"mouseup.k"
, function (e) {
k.c.d.unbind('mousemove.k mouseup.k keyup.k');
if (
s.rH
&& (s.rH(s.cv) === false)
) return;
s.val(s.cv);
}
);
return this;
};
this._xy = function () {
var o = this.$c.offset();
this.x = o.left;
this.y = o.top;
return this;
};
this._listen = function () {
if (!this.o.readOnly) {
this.$c
.bind(
"mousedown"
, function (e) {
e.preventDefault();
s._xy()._mouse(e);
}
)
.bind(
"touchstart"
, function (e) {
e.preventDefault();
s._xy()._touch(e);
}
);
this.listen();
} else {
this.$.attr('readonly', 'readonly');
}
return this;
};
this._configure = function () {
// Hooks
if (this.o.draw) this.dH = this.o.draw;
if (this.o.change) this.cH = this.o.change;
if (this.o.cancel) this.eH = this.o.cancel;
if (this.o.release) this.rH = this.o.release;
if (this.o.displayPrevious) {
this.pColor = this.h2rgba(this.o.fgColor, "0.4");
this.fgColor = this.h2rgba(this.o.fgColor, "0.6");
} else {
this.fgColor = this.o.fgColor;
}
return this;
};
this._clear = function () {
this.$c[0].width = this.$c[0].width;
};
this._validate = function(v) {
return (~~ (((v < 0) ? -0.5 : 0.5) + (v/this.o.step))) * this.o.step;
};
// Abstract methods
this.listen = function () {}; // on start, one time
this.extend = function () {}; // each time configure triggered
this.init = function () {}; // each time configure triggered
this.change = function (v) {}; // on change
this.val = function (v) {}; // on release
this.xy2val = function (x, y) {}; //
this.draw = function () {}; // on change / on release
this.clear = function () { this._clear(); };
// Utils
this.h2rgba = function (h, a) {
var rgb;
h = h.substring(1,7)
rgb = [parseInt(h.substring(0,2),16)
,parseInt(h.substring(2,4),16)
,parseInt(h.substring(4,6),16)];
return "rgba(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "," + a + ")";
};
this.copy = function (f, t) {
for (var i in f) { t[i] = f[i]; }
};
};
/**
* k.Dial
*/
k.Dial = function () {
k.o.call(this);
this.startAngle = null;
this.xy = null;
this.radius = null;
this.lineWidth = null;
this.cursorExt = null;
this.w2 = null;
this.PI2 = 2*Math.PI;
this.extend = function () {
this.o = $.extend(
{
bgColor : this.$.data('bgcolor') || '#EEEEEE',
angleOffset : this.$.data('angleoffset') || 0,
angleArc : this.$.data('anglearc') || 360,
inline : true
}, this.o
);
};
this.val = function (v) {
if (null != v) {
this.cv = this.o.stopper ? max(min(v, this.o.max), this.o.min) : v;
this.v = this.cv;
this.$.val(this.v);
this._draw();
} else {
return this.v;
}
};
this.xy2val = function (x, y) {
var a, ret;
a = Math.atan2(
x - (this.x + this.w2)
, - (y - this.y - this.w2)
) - this.angleOffset;
if(this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) {
// if isset angleArc option, set to min if .5 under min
a = 0;
} else if (a < 0) {
a += this.PI2;
}
ret = ~~ (0.5 + (a * (this.o.max - this.o.min) / this.angleArc))
+ this.o.min;
this.o.stopper
&& (ret = max(min(ret, this.o.max), this.o.min));
return ret;
};
this.listen = function () {
// bind MouseWheel
var s = this,
mw = function (e) {
e.preventDefault();
var ori = e.originalEvent
,deltaX = ori.detail || ori.wheelDeltaX
,deltaY = ori.detail || ori.wheelDeltaY
,v = parseInt(s.$.val()) + (deltaX>0 || deltaY>0 ? s.o.step : deltaX<0 || deltaY<0 ? -s.o.step : 0);
if (
s.cH
&& (s.cH(v) === false)
) return;
s.val(v);
}
, kval, to, m = 1, kv = {37:-s.o.step, 38:s.o.step, 39:s.o.step, 40:-s.o.step};
this.$
.bind(
"keydown"
,function (e) {
var kc = e.keyCode;
// numpad support
if(kc >= 96 && kc <= 105) {
kc = e.keyCode = kc - 48;
}
kval = parseInt(String.fromCharCode(kc));
if (isNaN(kval)) {
(kc !== 13) // enter
&& (kc !== 8) // bs
&& (kc !== 9) // tab
&& (kc !== 189) // -
&& e.preventDefault();
// arrows
if ($.inArray(kc,[37,38,39,40]) > -1) {
e.preventDefault();
var v = parseInt(s.$.val()) + kv[kc] * m;
s.o.stopper
&& (v = max(min(v, s.o.max), s.o.min));
s.change(v);
s._draw();
// long time keydown speed-up
to = window.setTimeout(
function () { m*=2; }
,30
);
}
}
}
)
.bind(
"keyup"
,function (e) {
if (isNaN(kval)) {
if (to) {
window.clearTimeout(to);
to = null;
m = 1;
s.val(s.$.val());
}
} else {
// kval postcond
(s.$.val() > s.o.max && s.$.val(s.o.max))
|| (s.$.val() < s.o.min && s.$.val(s.o.min));
}
}
);
this.$c.bind("mousewheel DOMMouseScroll", mw);
this.$.bind("mousewheel DOMMouseScroll", mw)
};
this.init = function () {
if (
this.v < this.o.min
|| this.v > this.o.max
) this.v = this.o.min;
this.$.val(this.v);
this.w2 = this.o.width / 2;
this.cursorExt = this.o.cursor / 100;
this.xy = this.w2;
this.lineWidth = this.xy * this.o.thickness;
this.lineCap = this.o.lineCap;
this.radius = this.xy - this.lineWidth / 2;
this.o.angleOffset
&& (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset);
this.o.angleArc
&& (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc);
// deg to rad
this.angleOffset = this.o.angleOffset * Math.PI / 180;
this.angleArc = this.o.angleArc * Math.PI / 180;
// compute start and end angles
this.startAngle = 1.5 * Math.PI + this.angleOffset;
this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc;
var s = max(
String(Math.abs(this.o.max)).length
, String(Math.abs(this.o.min)).length
, 2
) + 2;
this.o.displayInput
&& this.i.css({
'width' : ((this.o.width / 2 + 4) >> 0) + 'px'
,'height' : ((this.o.width / 3) >> 0) + 'px'
,'position' : 'absolute'
,'vertical-align' : 'middle'
,'margin-top' : ((this.o.width / 3) >> 0) + 'px'
,'margin-left' : '-' + ((this.o.width * 3 / 4 + 2) >> 0) + 'px'
,'border' : 0
,'background' : 'none'
,'font' : 'bold ' + ((this.o.width / s) >> 0) + 'px Arial'
,'text-align' : 'center'
,'color' : this.o.inputColor || this.o.fgColor
,'padding' : '0px'
,'-webkit-appearance': 'none'
})
|| this.i.css({
'width' : '0px'
,'visibility' : 'hidden'
});
};
this.change = function (v) {
this.cv = v;
this.$.val(v);
};
this.angle = function (v) {
return (v - this.o.min) * this.angleArc / (this.o.max - this.o.min);
};
this.draw = function () {
var c = this.g, // context
a = this.angle(this.cv) // Angle
, sat = this.startAngle // Start angle
, eat = sat + a // End angle
, sa, ea // Previous angles
, r = 1;
c.lineWidth = this.lineWidth;
c.lineCap = this.lineCap;
this.o.cursor
&& (sat = eat - this.cursorExt)
&& (eat = eat + this.cursorExt);
c.beginPath();
c.strokeStyle = this.o.bgColor;
c.arc(this.xy, this.xy, this.radius, this.endAngle, this.startAngle, true);
c.stroke();
if (this.o.displayPrevious) {
ea = this.startAngle + this.angle(this.v);
sa = this.startAngle;
this.o.cursor
&& (sa = ea - this.cursorExt)
&& (ea = ea + this.cursorExt);
c.beginPath();
c.strokeStyle = this.pColor;
c.arc(this.xy, this.xy, this.radius, sa, ea, false);
c.stroke();
r = (this.cv == this.v);
}
c.beginPath();
c.strokeStyle = r ? this.o.fgColor : this.fgColor ;
c.arc(this.xy, this.xy, this.radius, sat, eat, false);
c.stroke();
};
this.cancel = function () {
this.val(this.v);
};
};
$.fn.dial = $.fn.knob = function (o) {
return this.each(
function () {
var d = new k.Dial();
d.o = o;
d.$ = $(this);
d.run();
}
).parent();
};
})(jQuery);

530
assets/js/jquery.ui.widget.js vendored Normal file
View File

@ -0,0 +1,530 @@
/*
* jQuery UI Widget 1.10.1+amd
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2013 jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://api.jqueryui.com/jQuery.widget/
*/
(function (factory) {
if (typeof define === "function" && define.amd) {
// Register as an anonymous AMD module:
define(["jquery"], factory);
} else {
// Browser globals:
factory(jQuery);
}
}(function( $, undefined ) {
var uuid = 0,
slice = Array.prototype.slice,
_cleanData = $.cleanData;
$.cleanData = function( elems ) {
for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
try {
$( elem ).triggerHandler( "remove" );
// http://bugs.jquery.com/ticket/8235
} catch( e ) {}
}
_cleanData( elems );
};
$.widget = function( name, base, prototype ) {
var fullName, existingConstructor, constructor, basePrototype,
// proxiedPrototype allows the provided prototype to remain unmodified
// so that it can be used as a mixin for multiple widgets (#8876)
proxiedPrototype = {},
namespace = name.split( "." )[ 0 ];
name = name.split( "." )[ 1 ];
fullName = namespace + "-" + name;
if ( !prototype ) {
prototype = base;
base = $.Widget;
}
// create selector for plugin
$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
return !!$.data( elem, fullName );
};
$[ namespace ] = $[ namespace ] || {};
existingConstructor = $[ namespace ][ name ];
constructor = $[ namespace ][ name ] = function( options, element ) {
// allow instantiation without "new" keyword
if ( !this._createWidget ) {
return new constructor( options, element );
}
// allow instantiation without initializing for simple inheritance
// must use "new" keyword (the code above always passes args)
if ( arguments.length ) {
this._createWidget( options, element );
}
};
// extend with the existing constructor to carry over any static properties
$.extend( constructor, existingConstructor, {
version: prototype.version,
// copy the object used to create the prototype in case we need to
// redefine the widget later
_proto: $.extend( {}, prototype ),
// track widgets that inherit from this widget in case this widget is
// redefined after a widget inherits from it
_childConstructors: []
});
basePrototype = new base();
// we need to make the options hash a property directly on the new instance
// otherwise we'll modify the options hash on the prototype that we're
// inheriting from
basePrototype.options = $.widget.extend( {}, basePrototype.options );
$.each( prototype, function( prop, value ) {
if ( !$.isFunction( value ) ) {
proxiedPrototype[ prop ] = value;
return;
}
proxiedPrototype[ prop ] = (function() {
var _super = function() {
return base.prototype[ prop ].apply( this, arguments );
},
_superApply = function( args ) {
return base.prototype[ prop ].apply( this, args );
};
return function() {
var __super = this._super,
__superApply = this._superApply,
returnValue;
this._super = _super;
this._superApply = _superApply;
returnValue = value.apply( this, arguments );
this._super = __super;
this._superApply = __superApply;
return returnValue;
};
})();
});
constructor.prototype = $.widget.extend( basePrototype, {
// TODO: remove support for widgetEventPrefix
// always use the name + a colon as the prefix, e.g., draggable:start
// don't prefix for widgets that aren't DOM-based
widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name
}, proxiedPrototype, {
constructor: constructor,
namespace: namespace,
widgetName: name,
widgetFullName: fullName
});
// If this widget is being redefined then we need to find all widgets that
// are inheriting from it and redefine all of them so that they inherit from
// the new version of this widget. We're essentially trying to replace one
// level in the prototype chain.
if ( existingConstructor ) {
$.each( existingConstructor._childConstructors, function( i, child ) {
var childPrototype = child.prototype;
// redefine the child widget using the same prototype that was
// originally used, but inherit from the new version of the base
$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
});
// remove the list of existing child constructors from the old constructor
// so the old child constructors can be garbage collected
delete existingConstructor._childConstructors;
} else {
base._childConstructors.push( constructor );
}
$.widget.bridge( name, constructor );
};
$.widget.extend = function( target ) {
var input = slice.call( arguments, 1 ),
inputIndex = 0,
inputLength = input.length,
key,
value;
for ( ; inputIndex < inputLength; inputIndex++ ) {
for ( key in input[ inputIndex ] ) {
value = input[ inputIndex ][ key ];
if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
// Clone objects
if ( $.isPlainObject( value ) ) {
target[ key ] = $.isPlainObject( target[ key ] ) ?
$.widget.extend( {}, target[ key ], value ) :
// Don't extend strings, arrays, etc. with objects
$.widget.extend( {}, value );
// Copy everything else by reference
} else {
target[ key ] = value;
}
}
}
}
return target;
};
$.widget.bridge = function( name, object ) {
var fullName = object.prototype.widgetFullName || name;
$.fn[ name ] = function( options ) {
var isMethodCall = typeof options === "string",
args = slice.call( arguments, 1 ),
returnValue = this;
// allow multiple hashes to be passed on init
options = !isMethodCall && args.length ?
$.widget.extend.apply( null, [ options ].concat(args) ) :
options;
if ( isMethodCall ) {
this.each(function() {
var methodValue,
instance = $.data( this, fullName );
if ( !instance ) {
return $.error( "cannot call methods on " + name + " prior to initialization; " +
"attempted to call method '" + options + "'" );
}
if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
return $.error( "no such method '" + options + "' for " + name + " widget instance" );
}
methodValue = instance[ options ].apply( instance, args );
if ( methodValue !== instance && methodValue !== undefined ) {
returnValue = methodValue && methodValue.jquery ?
returnValue.pushStack( methodValue.get() ) :
methodValue;
return false;
}
});
} else {
this.each(function() {
var instance = $.data( this, fullName );
if ( instance ) {
instance.option( options || {} )._init();
} else {
$.data( this, fullName, new object( options, this ) );
}
});
}
return returnValue;
};
};
$.Widget = function( /* options, element */ ) {};
$.Widget._childConstructors = [];
$.Widget.prototype = {
widgetName: "widget",
widgetEventPrefix: "",
defaultElement: "<div>",
options: {
disabled: false,
// callbacks
create: null
},
_createWidget: function( options, element ) {
element = $( element || this.defaultElement || this )[ 0 ];
this.element = $( element );
this.uuid = uuid++;
this.eventNamespace = "." + this.widgetName + this.uuid;
this.options = $.widget.extend( {},
this.options,
this._getCreateOptions(),
options );
this.bindings = $();
this.hoverable = $();
this.focusable = $();
if ( element !== this ) {
$.data( element, this.widgetFullName, this );
this._on( true, this.element, {
remove: function( event ) {
if ( event.target === element ) {
this.destroy();
}
}
});
this.document = $( element.style ?
// element within the document
element.ownerDocument :
// element is window or document
element.document || element );
this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
}
this._create();
this._trigger( "create", null, this._getCreateEventData() );
this._init();
},
_getCreateOptions: $.noop,
_getCreateEventData: $.noop,
_create: $.noop,
_init: $.noop,
destroy: function() {
this._destroy();
// we can probably remove the unbind calls in 2.0
// all event bindings should go through this._on()
this.element
.unbind( this.eventNamespace )
// 1.9 BC for #7810
// TODO remove dual storage
.removeData( this.widgetName )
.removeData( this.widgetFullName )
// support: jquery <1.6.3
// http://bugs.jquery.com/ticket/9413
.removeData( $.camelCase( this.widgetFullName ) );
this.widget()
.unbind( this.eventNamespace )
.removeAttr( "aria-disabled" )
.removeClass(
this.widgetFullName + "-disabled " +
"ui-state-disabled" );
// clean up events and states
this.bindings.unbind( this.eventNamespace );
this.hoverable.removeClass( "ui-state-hover" );
this.focusable.removeClass( "ui-state-focus" );
},
_destroy: $.noop,
widget: function() {
return this.element;
},
option: function( key, value ) {
var options = key,
parts,
curOption,
i;
if ( arguments.length === 0 ) {
// don't return a reference to the internal hash
return $.widget.extend( {}, this.options );
}
if ( typeof key === "string" ) {
// handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
options = {};
parts = key.split( "." );
key = parts.shift();
if ( parts.length ) {
curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
for ( i = 0; i < parts.length - 1; i++ ) {
curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
curOption = curOption[ parts[ i ] ];
}
key = parts.pop();
if ( value === undefined ) {
return curOption[ key ] === undefined ? null : curOption[ key ];
}
curOption[ key ] = value;
} else {
if ( value === undefined ) {
return this.options[ key ] === undefined ? null : this.options[ key ];
}
options[ key ] = value;
}
}
this._setOptions( options );
return this;
},
_setOptions: function( options ) {
var key;
for ( key in options ) {
this._setOption( key, options[ key ] );
}
return this;
},
_setOption: function( key, value ) {
this.options[ key ] = value;
if ( key === "disabled" ) {
this.widget()
.toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value )
.attr( "aria-disabled", value );
this.hoverable.removeClass( "ui-state-hover" );
this.focusable.removeClass( "ui-state-focus" );
}
return this;
},
enable: function() {
return this._setOption( "disabled", false );
},
disable: function() {
return this._setOption( "disabled", true );
},
_on: function( suppressDisabledCheck, element, handlers ) {
var delegateElement,
instance = this;
// no suppressDisabledCheck flag, shuffle arguments
if ( typeof suppressDisabledCheck !== "boolean" ) {
handlers = element;
element = suppressDisabledCheck;
suppressDisabledCheck = false;
}
// no element argument, shuffle and use this.element
if ( !handlers ) {
handlers = element;
element = this.element;
delegateElement = this.widget();
} else {
// accept selectors, DOM elements
element = delegateElement = $( element );
this.bindings = this.bindings.add( element );
}
$.each( handlers, function( event, handler ) {
function handlerProxy() {
// allow widgets to customize the disabled handling
// - disabled as an array instead of boolean
// - disabled class as method for disabling individual parts
if ( !suppressDisabledCheck &&
( instance.options.disabled === true ||
$( this ).hasClass( "ui-state-disabled" ) ) ) {
return;
}
return ( typeof handler === "string" ? instance[ handler ] : handler )
.apply( instance, arguments );
}
// copy the guid so direct unbinding works
if ( typeof handler !== "string" ) {
handlerProxy.guid = handler.guid =
handler.guid || handlerProxy.guid || $.guid++;
}
var match = event.match( /^(\w+)\s*(.*)$/ ),
eventName = match[1] + instance.eventNamespace,
selector = match[2];
if ( selector ) {
delegateElement.delegate( selector, eventName, handlerProxy );
} else {
element.bind( eventName, handlerProxy );
}
});
},
_off: function( element, eventName ) {
eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;
element.unbind( eventName ).undelegate( eventName );
},
_delay: function( handler, delay ) {
function handlerProxy() {
return ( typeof handler === "string" ? instance[ handler ] : handler )
.apply( instance, arguments );
}
var instance = this;
return setTimeout( handlerProxy, delay || 0 );
},
_hoverable: function( element ) {
this.hoverable = this.hoverable.add( element );
this._on( element, {
mouseenter: function( event ) {
$( event.currentTarget ).addClass( "ui-state-hover" );
},
mouseleave: function( event ) {
$( event.currentTarget ).removeClass( "ui-state-hover" );
}
});
},
_focusable: function( element ) {
this.focusable = this.focusable.add( element );
this._on( element, {
focusin: function( event ) {
$( event.currentTarget ).addClass( "ui-state-focus" );
},
focusout: function( event ) {
$( event.currentTarget ).removeClass( "ui-state-focus" );
}
});
},
_trigger: function( type, event, data ) {
var prop, orig,
callback = this.options[ type ];
data = data || {};
event = $.Event( event );
event.type = ( type === this.widgetEventPrefix ?
type :
this.widgetEventPrefix + type ).toLowerCase();
// the original event may come from any element
// so we need to reset the target on the new event
event.target = this.element[ 0 ];
// copy original event properties over to the new event
orig = event.originalEvent;
if ( orig ) {
for ( prop in orig ) {
if ( !( prop in event ) ) {
event[ prop ] = orig[ prop ];
}
}
}
this.element.trigger( event, data );
return !( $.isFunction( callback ) &&
callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
event.isDefaultPrevented() );
}
};
$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
if ( typeof options === "string" ) {
options = { effect: options };
}
var hasOptions,
effectName = !options ?
method :
options === true || typeof options === "number" ?
defaultEffect :
options.effect || defaultEffect;
options = options || {};
if ( typeof options === "number" ) {
options = { duration: options };
}
hasOptions = !$.isEmptyObject( options );
options.complete = callback;
if ( options.delay ) {
element.delay( options.delay );
}
if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
element[ method ]( options );
} else if ( effectName !== method && element[ effectName ] ) {
element[ effectName ]( options.duration, options.easing, callback );
} else {
element.queue(function( next ) {
$( this )[ method ]();
if ( callback ) {
callback.call( element[ 0 ] );
}
next();
});
}
};
});
}));

95
assets/js/script.js Normal file
View File

@ -0,0 +1,95 @@
$(function(){
var ul = $('#upload ul');
$('#drop a').click(function(){
// Simulate a click on the file input button
// to show the file browser dialog
$(this).parent().find('input').click();
});
// Initialize the jQuery File Upload plugin
$('#upload').fileupload({
// This element will accept file drag/drop uploading
dropZone: $('#drop'),
// This function is called when a file is added to the queue;
// either via the browse button, or via drag/drop:
add: function (e, data) {
var tpl = $('<li class="working"><input type="text" value="0" data-width="48" data-height="48"'+
' data-fgColor="#0788a5" data-readOnly="1" data-bgColor="#3e4043" /><p></p><span></span></li>');
// Append the file name and file size
tpl.find('p').text(data.files[0].name)
.append('<i>' + formatFileSize(data.files[0].size) + '</i>');
// Add the HTML to the UL element
data.context = tpl.appendTo(ul);
// Initialize the knob plugin
tpl.find('input').knob();
// Listen for clicks on the cancel icon
tpl.find('span').click(function(){
if(tpl.hasClass('working')){
jqXHR.abort();
}
tpl.fadeOut(function(){
tpl.remove();
});
});
// Automatically upload the file once it is added to the queue
var jqXHR = data.submit();
},
progress: function(e, data){
// Calculate the completion percentage of the upload
var progress = parseInt(data.loaded / data.total * 100, 10);
// Update the hidden input field and trigger a change
// so that the jQuery knob plugin knows to update the dial
data.context.find('input').val(progress).change();
if(progress == 100){
data.context.removeClass('working');
}
},
fail:function(e, data){
// Something has gone wrong!
data.context.addClass('error');
}
});
// Prevent the default action when a file is dropped on the window
$(document).on('drop dragover', function (e) {
e.preventDefault();
});
// Helper function that formats the file sizes
function formatFileSize(bytes) {
if (typeof bytes !== 'number') {
return '';
}
if (bytes >= 1000000000) {
return (bytes / 1000000000).toFixed(2) + ' GB';
}
if (bytes >= 1000000) {
return (bytes / 1000000).toFixed(2) + ' MB';
}
return (bytes / 1000).toFixed(2) + ' KB';
}
});

View File

@ -1,3 +1,19 @@
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js" type="text/javascript"></script>
<style>
.hiddenRow { display: none; }
</style>
<script>
function toggleNextRow(row) {
var nextRow = $(row).next();
nextRow.toggle();
}
function togglebodyServices() {
$('#servicestable tbody').toggle();
}
</script>
</head>
<?php
/*
* Script: Server Status
@ -12,7 +28,7 @@
require "configs_services.php";
# Start a variable to contain Service Status.
$serverStatus = "<table width='190' border='0' cellspacing='0' cellpadding='1'><tr BGCOLOR='#0066FF'><th style='text-align: left;'><font color='white'>Service</font></th><th style='text-align: left;'><font color='white'>Status</font></th></tr>";
$serverStatus = "<table id='servicestable' width='190' border='0' cellspacing='0' cellpadding='1'><thead><tr onclick='togglebodyServices()' BGCOLOR='#0066FF'><th style='text-align: left;'><font color='white'>Service</font></th><th style='text-align: left;'><font color='white'>Status</font></th></tr></thead>";
# Process all services montiored.
foreach( $configs['servicesKloud'] as $serviceName => $servicePort )
@ -31,7 +47,7 @@ foreach( $configs['servicesKloud'] as $serviceName => $servicePort )
}
# Set the status Row.
$serverStatus .= "<td BGCOLOR='#FFFFFF'><font color='#0066FF'>{$serviceName}</font></td><td BGCOLOR='#FFFFFF'><font color='white'>{$statusText}</font></td></tr>";
$serverStatus .= "<tbody><td BGCOLOR='#FFFFFF'><font color='#0066FF'>{$serviceName}</font></td><td BGCOLOR='#FFFFFF'><font color='white'>{$statusText}</font></td></tr>";
}
# Process all services montiored.
@ -71,7 +87,7 @@ foreach( $configs['services'] as $serviceName => $servicePort )
}
# Set the status Row.
$serverStatus .= "<td BGCOLOR='#FFFFFF'><font color='#0066FF'>{$serviceName}</font></td><td BGCOLOR='#FFFFFF'><font color='white'>{$statusText}</font></td></tr>";
$serverStatus .= "<td BGCOLOR='#FFFFFF'><font color='#0066FF'>{$serviceName}</font></td><td BGCOLOR='#FFFFFF'><font color='white'>{$statusText}</font></td></tr></tbody>";
}

View File

@ -11,7 +11,7 @@
}
</script>
</head>
<table width='275' border='0' cellspacing='0' cellpadding='1'>
<table width='275' cellspacing='0' cellpadding='1'>
<tr onclick="toggleNextRow(this)" BGCOLOR='#0066FF'>
<th style='text-align: left;'><font color='white'>Time</font></th>
</tr>

View File

@ -10,8 +10,8 @@ $pass = ""; // Password for logging on
///////////// Main Link Settings /////////////
//// SAB Settings
$sabvisible = ""; // Set to turn on or off links (0 = Off 1 = On)
$sabname = "";
$sabpicname = "";
$sabname = ""; // Set an alternate name to the default displayed
$sabpicname = ""; // Set an alternate image, you can upload with picupload.html, then just enter the name of the file you uploaded e.g. "sab.png"
$sabport = ""; // Set the ports for your services
////
//// SickBeard Settings
@ -45,7 +45,7 @@ $torrentport = ""; // uTorrent = 86 / Transmission = 9091
$ftpvisible = "1";
$ftpname = "";
$ftppicname = "";
$ftpport = "";
$ftpport = "21";
////
//// MadSonic Settings
$madsonicvisible = "1";
@ -57,13 +57,13 @@ $madsonicport = "";
$plexvisible = "1";
$plexname = "";
$plexpicname = "";
$plexport = "";
$plexport = "32400";
////
//// Squeezebox Settings
$squeezevisible = "1";
$squeezename = "";
$squeezepicname = "";
$squeezeport = "";
$squeezeport = "9000";
////
//// Jdownloader Settings
$jdownloadervisible = "1";
@ -101,20 +101,20 @@ $drive7 = "J:";
$serverstatusvisible = "1";
//
$server1visible = "1";
$server1name = ""; // Set to Server Name to track
$server1url = ""; // Set to Server URL to track (without http://)
$server1name = "Karl"; // Set to Server Name to track
$server1url = "home.k-world.me.uk"; // Set to Server URL to track (without http://)
//
$server2visible = "";
$server2name = "";
$server2url = "";
$server2visible = "2";
$server2name = "k";
$server2url = "google.com";
//
$server3visible = "";
$server3name = "";
$server3url = "";
$server3visible = "1";
$server3name = "1";
$server3url = "google.com";
//
$server4visible = "";
$server4name = "";
$server4url = "";
$server4visible = "1";
$server4name = "1";
$server4url = "google.com";
////
//// Custom Feeds

View File

@ -70,5 +70,11 @@ color: black;
padding: 0 0 0 0;
color: white;
}
#table{
border-radius:15px;
-moz-border-radius:15px;
-webkit-border-radius:15px;
}
</style>

View File

@ -1,39 +1,3 @@
<!--Force IE6 into quirks mode with this comment tag-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!--This script should appear below your LINK stylesheet tags -->
<script src="styleswitch.js" type="text/javascript">
/***********************************************
* Style Sheet Switcher v1.1- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for this script and 100s more
***********************************************/
</script>
<script type="text/javascript">
window.onload=function(){
var formref=document.getElementById("switchform")
indicateSelected(formref.switchcontrol)
}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js" type="text/javascript"></script>
<style>
.hiddenRow { display: none; }
</style>
<script>
function toggleNextRow(row) {
var nextRow = $(row).next();
nextRow.toggle();
}
</script>
</head>
<body>
<?php include '../config.php';?>
<?php
@ -66,9 +30,6 @@ require_once 'DiskStatus.class.php';
}
?>
<body>
<div id="drivebox2" style="font:10pt Arial; color:#0066FF;">
<table width='190' border='0' cellspacing='0' cellpadding='0'>
<tr onclick="toggleNextRow(this)" BGCOLOR='#FFFFFF'>
<th style='text-align: left;'><font color='#0066FF'><?php echo $drive1;?>\<?= $freeSpaceC ?> (of <?= $totalSpaceC ?>)</font></th>
</tr>
@ -79,11 +40,3 @@ require_once 'DiskStatus.class.php';
</div>
</td>
</tr>
</form>
</td>
</table>
</div>
</body>
</html>

View File

@ -1,39 +1,3 @@
<!--Force IE6 into quirks mode with this comment tag-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!--This script should appear below your LINK stylesheet tags -->
<script src="styleswitch.js" type="text/javascript">
/***********************************************
* Style Sheet Switcher v1.1- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for this script and 100s more
***********************************************/
</script>
<script type="text/javascript">
window.onload=function(){
var formref=document.getElementById("switchform")
indicateSelected(formref.switchcontrol)
}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js" type="text/javascript"></script>
<style>
.hiddenRow { display: none; }
</style>
<script>
function toggleNextRow(row) {
var nextRow = $(row).next();
nextRow.toggle();
}
</script>
</head>
<body>
<?php include '../config.php';?>
<?php
@ -66,9 +30,6 @@ require_once 'DiskStatus.class.php';
}
?>
<body>
<div id="drivebox2" style="font:10pt Arial; color:#0066FF;">
<table width='190' border='0' cellspacing='0' cellpadding='0'>
<tr onclick="toggleNextRow(this)" BGCOLOR='#FFFFFF'>
<th style='text-align: left;'><font color='#0066FF'><?php echo $drive2;?>\<?= $freeSpaceC ?> (of <?= $totalSpaceC ?>)</font></th>
</tr>
@ -80,11 +41,3 @@ require_once 'DiskStatus.class.php';
</div>
</td>
</tr>
</form>
</td>
</table>
</div>
</body>
</html>

View File

@ -1,38 +1,3 @@
<!--Force IE6 into quirks mode with this comment tag-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!--This script should appear below your LINK stylesheet tags -->
<script src="styleswitch.js" type="text/javascript">
/***********************************************
* Style Sheet Switcher v1.1- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for this script and 100s more
***********************************************/
</script>
<script type="text/javascript">
window.onload=function(){
var formref=document.getElementById("switchform")
indicateSelected(formref.switchcontrol)
}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js" type="text/javascript"></script>
<style>
.hiddenRow { display: none; }
</style>
<script>
function toggleNextRow(row) {
var nextRow = $(row).next();
nextRow.toggle();
}
</script>
</head>
<body>
<?php include '../config.php';?>
<?php
@ -65,13 +30,9 @@ require_once 'DiskStatus.class.php';
}
?>
<body>
<div id="drivebox2" style="font:10pt Arial; color:#0066FF;">
<table width='190' border='0' cellspacing='0' cellpadding='0'>
<tr onclick="toggleNextRow(this)" BGCOLOR='#FFFFFF'>
<th style='text-align: left;'><font color='#0066FF'><?php echo $drive3;?>\<?= $freeSpaceC ?> (of <?= $totalSpaceC ?>)</font></th>
</tr>
</tr>
<tr class="hiddenRow">
<td bgcolor='#FFFFFF'>
<div class="disk">
@ -79,11 +40,3 @@ require_once 'DiskStatus.class.php';
</div>
</td>
</tr>
</form>
</td>
</table>
</div>
</body>
</html>

View File

@ -1,39 +1,3 @@
<!--Force IE6 into quirks mode with this comment tag-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!--This script should appear below your LINK stylesheet tags -->
<script src="styleswitch.js" type="text/javascript">
/***********************************************
* Style Sheet Switcher v1.1- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for this script and 100s more
***********************************************/
</script>
<script type="text/javascript">
window.onload=function(){
var formref=document.getElementById("switchform")
indicateSelected(formref.switchcontrol)
}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js" type="text/javascript"></script>
<style>
.hiddenRow { display: none; }
</style>
<script>
function toggleNextRow(row) {
var nextRow = $(row).next();
nextRow.toggle();
}
</script>
</head>
<body>
<?php include '../config.php';?>
<?php
@ -66,13 +30,8 @@ require_once 'DiskStatus.class.php';
}
?>
<body>
<div id="drivebox2" style="font:10pt Arial; color:#0066FF;">
<table width='190' border='0' cellspacing='0' cellpadding='0'>
<tr onclick="toggleNextRow(this)" BGCOLOR='#FFFFFF'>
<th style='text-align: left;'><?php echo $drive4;?>\<?= $freeSpaceC ?> (of <?= $totalSpaceC ?>)</font></th>
<th style='text-align: left;'><font color='#0066FF'><?php echo $drive4;?>\<?= $freeSpaceC ?> (of <?= $totalSpaceC ?>)</font></th>
</tr>
<tr class="hiddenRow">
<td bgcolor='#FFFFFF'>
@ -81,11 +40,3 @@ require_once 'DiskStatus.class.php';
</div>
</td>
</tr>
</form>
</td>
</table>
</div>
</body>
</html>

View File

@ -1,39 +1,3 @@
<!--Force IE6 into quirks mode with this comment tag-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!--This script should appear below your LINK stylesheet tags -->
<script src="styleswitch.js" type="text/javascript">
/***********************************************
* Style Sheet Switcher v1.1- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for this script and 100s more
***********************************************/
</script>
<script type="text/javascript">
window.onload=function(){
var formref=document.getElementById("switchform")
indicateSelected(formref.switchcontrol)
}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js" type="text/javascript"></script>
<style>
.hiddenRow { display: none; }
</style>
<script>
function toggleNextRow(row) {
var nextRow = $(row).next();
nextRow.toggle();
}
</script>
</head>
<body>
<?php include '../config.php';?>
<?php
@ -66,9 +30,6 @@ require_once 'DiskStatus.class.php';
}
?>
<body>
<div id="drivebox2" style="font:10pt Arial; color:#0066FF;">
<table width='190' border='0' cellspacing='0' cellpadding='0'>
<tr onclick="toggleNextRow(this)" BGCOLOR='#FFFFFF'>
<th style='text-align: left;'><font color='#0066FF'><?php echo $drive5;?>\<?= $freeSpaceC ?> (of <?= $totalSpaceC ?>)</font></th>
</tr>
@ -79,11 +40,3 @@ require_once 'DiskStatus.class.php';
</div>
</td>
</tr>
</form>
</td>
</table>
</div>
</body>
</html>

View File

@ -1,38 +1,3 @@
<!--Force IE6 into quirks mode with this comment tag-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!--This script should appear below your LINK stylesheet tags -->
<script src="styleswitch.js" type="text/javascript">
/***********************************************
* Style Sheet Switcher v1.1- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for this script and 100s more
***********************************************/
</script>
<script type="text/javascript">
window.onload=function(){
var formref=document.getElementById("switchform")
indicateSelected(formref.switchcontrol)
}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js" type="text/javascript"></script>
<style>
.hiddenRow { display: none; }
</style>
<script>
function toggleNextRow(row) {
var nextRow = $(row).next();
nextRow.toggle();
}
</script>
</head>
<body>
<?php include '../config.php';?>
<?php
@ -65,24 +30,13 @@ require_once 'DiskStatus.class.php';
}
?>
<body>
<div id="drivebox2" style="font:10pt Arial; color:#0066FF;">
<table width='190' border='0' cellspacing='0' cellpadding='0'>
<tr onclick="toggleNextRow(this)" BGCOLOR='#FFFFFF'>
<th style='text-align: left;'><font color='#0066FF'><?php echo $drive6;?>\<?= $freeSpaceC ?> (of <?= $totalSpaceC ?>)</font></th>
</tr>
<tr class="hiddenRow">
<tr class="hiddenRow">
<td bgcolor='#FFFFFF'>
<div class="disk">
<div class="used" style="width: <?= $barWidthC ?>px"><?= $diskStatusC->usedSpace() ?>%&nbsp;</div>
</div>
</td>
</tr>
</form>
</td>
</table>
</div>
</body>
</html>

View File

@ -1,39 +1,3 @@
<!--Force IE6 into quirks mode with this comment tag-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!--This script should appear below your LINK stylesheet tags -->
<script src="styleswitch.js" type="text/javascript">
/***********************************************
* Style Sheet Switcher v1.1- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for this script and 100s more
***********************************************/
</script>
<script type="text/javascript">
window.onload=function(){
var formref=document.getElementById("switchform")
indicateSelected(formref.switchcontrol)
}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js" type="text/javascript"></script>
<style>
.hiddenRow { display: none; }
</style>
<script>
function toggleNextRow(row) {
var nextRow = $(row).next();
nextRow.toggle();
}
</script>
</head>
<body>
<?php include '../config.php';?>
<?php
@ -66,9 +30,6 @@ require_once 'DiskStatus.class.php';
}
?>
<body>
<div id="drivebox2" style="font:10pt Arial; color:#0066FF;">
<table width='190' border='0' cellspacing='0' cellpadding='0'>
<tr onclick="toggleNextRow(this)" BGCOLOR='#FFFFFF'>
<th style='text-align: left;'><font color='#0066FF'><?php echo $drive7;?>\<?= $freeSpaceC ?> (of <?= $totalSpaceC ?>)</font></th>
</tr>
@ -79,11 +40,3 @@ require_once 'DiskStatus.class.php';
</div>
</td>
</tr>
</form>
</td>
</table>
</div>
</body>
</html>

View File

@ -1,10 +1,5 @@
<table width='190' border='0' cellspacing='0' cellpadding='0'>
<tr BGCOLOR='#0066FF'>
<thead>
<tr onclick='togglebody()' BGCOLOR='#0066FF'>
<th style='text-align: left;'><font color='white'>Drive Space</font></th>
</tr>
<tr>
<td BGCOLOR='#FFFFFF'>
</form>
</td>
</table>
</thead>

BIN
jscolor/arrow.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 B

BIN
jscolor/cross.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 B

12
jscolor/demo.html Normal file
View File

@ -0,0 +1,12 @@
<html>
<head>
<title>jscolor demo</title>
</head>
<body>
<script type="text/javascript" src="jscolor.js"></script>
Click here: <input class="color" value="66ff00">
</body>
</html>

BIN
jscolor/hs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
jscolor/hv.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

1010
jscolor/jscolor.js Normal file

File diff suppressed because it is too large Load Diff

View File

@ -18,6 +18,7 @@ indicateSelected(formref.switchcontrol)
<script src="styleswitch.js" type="text/javascript">
/***********************************************
* Style Sheet Switcher v1.1- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
@ -34,8 +35,13 @@ indicateSelected(formref.switchcontrol)
var nextRow = $(row).next();
nextRow.toggle();
}
function togglebodytheme() {
$('#themetable tbody').toggle();
}
</script>
</head>
<body>
<?php include 'config.php';?>
<div id="style">
<div class="innertube">
@ -87,20 +93,27 @@ if ($customfeed3visible > "0") {
}
?>
</p>
<table width='275' border="0" cellpadding="1" cellspacing="0">
<tbody>
<tr onclick="toggleNextRow(this)">
<table id='themetable' width='275' border="0" cellpadding="1" cellspacing="0">
<thead>
<tr onclick='togglebodytheme()'>
<td bgcolor="#0066FF" style="text-align: left;"><font color="white">Theme</font></td>
<td bgcolor="#0066FF">&nbsp;</td>
<td bgcolor="#0066FF">&nbsp;</td>
<td bgcolor="#0066FF">&nbsp;</td>
</tr>
<tr class="hiddenRow">
</thead>
<tbody style= 'display:none'>
<tr>
<td bgcolor="#ffffff"><a checked="checked" href="javascript:chooseStyle('white', 60)" onclick="parent.left.location.reload(); parent.main.location.reload()">White</a></td>
<td bgcolor="#ffffff"><a href="javascript:chooseStyle('black', 60)" onclick="parent.left.location.reload(); parent.main.location.reload()">Black</a></td>
<td bgcolor="#ffffff"><a href="javascript:chooseStyle('blue', 60)" onclick="parent.left.location.reload(); parent.main.location.reload()">Blue</a></td>
<td bgcolor="#ffffff"><a href="javascript:chooseStyle('red', 60)" onclick="parent.left.location.reload(); parent.main.location.reload()">Red</a></td>
</tr>
<tr>
<td colspan="3" bgcolor="#ffffff"><script type="text/javascript" src="jscolor/jscolor.js"></script>Custom: <input class="color" onchange="document.getElementsByTagName('BODY')[0].style.backgroundColor = '#'+this.color"></td>
<td bgcolor="#ffffff"><a href="javascript:chooseStyle('red', 60)" onclick="document.getElementsByTagName('BODY')[0].style.backgroundColor = '#'+this.color">Set</a></td>
</tr>
</tbody>
</table>
</div>

View File

@ -1,20 +1,3 @@
<!--Force IE6 into quirks mode with this comment tag-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!--This script should appear below your LINK stylesheet tags -->
<script src="styleswitch.js" type="text/javascript">
/***********************************************
* Style Sheet Switcher v1.1- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for this script and 100s more
***********************************************/
</script>
<script type="text/javascript">
window.onload=function(){
var formref=document.getElementById("switchform")
@ -30,14 +13,19 @@ indicateSelected(formref.switchcontrol)
var nextRow = $(row).next();
nextRow.toggle();
}
function togglebody() {
$('#drivespace tbody').toggle();
}
</script>
</head>
<table id='drivespace' width='190' border='0' cellspacing='0' cellpadding='0'>
<?php include 'config.php';?>
<?php
if ($drivespacevisible > "0") {
require "drives/head.php";
}
?>
<tbody style= 'display:none'>
<?php
if ($drive1visible > "0") {
require "drives/drive1.php";
@ -71,4 +59,5 @@ if ($drive7visible > "0") {
require "drives/drive7.php";
}
?>
</html>
</tbody>
</table>

View File

@ -8,6 +8,10 @@
var nextRow = $(row).next();
nextRow.toggle();
}
function togglebodyServers() {
$('#serverstable tbody').toggle();
}
</script>
</head>
<?php
@ -25,10 +29,9 @@ require "ss_configs_servers.php";
# Start a variable to contain Service Status.
if ($serverstatusvisible > "0") {
$serverStatus = "<table width='190' border='0' cellspacing='0' cellpadding='1'><tr onclick='toggleNextRow(this)' BGCOLOR='#0066FF'><th style='text-align: left;'><font color='white'>Server</font></th><th style='text-align: left;'><font color='white'>Status</font></th></tr>";
$serverStatus = "<table id='serverstable' width='190' border='0' cellspacing='0' cellpadding='1'><thead><tr onclick='togglebodyServers()' BGCOLOR='#0066FF'><th style='text-align: left;'><font color='white'>Server</font></th><th style='text-align: left;'><font color='white'>Status</font></th></tr></thead>";
}
# Process all services1 montiored.
foreach( $configs['services1'] as $serviceName => $servicePort )
{
@ -46,7 +49,7 @@ foreach( $configs['services1'] as $serviceName => $servicePort )
}
# Set the status Row.
$serverStatus .= "<td BGCOLOR='#FFFFFF'>{$serviceName}</td><td BGCOLOR='#FFFFFF'>{$statusText}</td></tr>";
$serverStatus .= "<tbody><td BGCOLOR='#FFFFFF'>{$serviceName}</td><td BGCOLOR='#FFFFFF'>{$statusText}</td></tr>";
}
# Process all services1 montiored.
@ -106,12 +109,11 @@ foreach( $configs['services4'] as $serviceName => $servicePort )
}
# Set the status Row.
$serverStatus .= "<td BGCOLOR='#FFFFFF'>{$serviceName}</td><td BGCOLOR='#FFFFFF'>{$statusText}</td></tr>";
$serverStatus .= "<td BGCOLOR='#FFFFFF'>{$serviceName}</td><td BGCOLOR='#FFFFFF'>{$statusText}</td></tbody></tr>";
}
# Finish service status table.
$serverStatus .= "</table>";
# File Complete.
?>

1
sysinfo/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
phpsysinfo.ini

11
sysinfo/.htaccess Normal file
View File

@ -0,0 +1,11 @@
<files phpsysinfo.ini>
# Deny all requests from Apache 2.0-2.2
<IfModule !mod_authz_core.c>
order deny,allow
deny from all
</IfModule>
# Deny all requests from Apache 2.4+
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</files>

18
sysinfo/.travis.yml Normal file
View File

@ -0,0 +1,18 @@
language: php
php:
- 5.2
- 5.3
- 5.4
- 5.5
- 5.6
script: for i in `find . -name "*.php"`; do php -l $i; done;
branches:
only:
- "master"
- "stable"
notifications:
email: false

244
sysinfo/CHANGELOG.md Normal file
View File

@ -0,0 +1,244 @@
Changelog of phpSysInfo
=======================
http://phpsysinfo.sourceforge.net/
phpSysInfo 3.2.2
----------------
- [UPD] bootstrap 3.3.4
- [NEW] Thunderbolt (TB) devices list on Darwin
- [ADD] cleansyn template
- [ADD] PS plugin - support for Android
- [ADD] PS plugin - SHOW_KTHREADD_EXPANDED option
- [ADD] Qubes and HandyLinux to detected distros
- [FIX] PS plugin - fixed display of the processes tree
phpSysInfo 3.2.1
----------------
- [UPD] bootstrap 3.3.2
- [NEW] REFRESH parameter also for frontend "bootstrap"
- [ADD] pfSense to detected distros
- [FIX] Percentage memory usage
phpSysInfo 3.2.0
----------------
- [NEW] Frontend "bootstrap" with Bootstrap3 and Transparency (JSON)
- [ADD] Catalan Translation ca.xml
- [ADD] Mer (core of Sailfish OS) and Tizen to detected distros
- [ADD] ThermalZone sensor support for Linux and Android
- [ADD] Temperature, voltage and current sensor for Banana Pi
- [UPD] German Translation de.xml
phpSysInfo 3.1.17
----------------
- [UPD] BAT plugin - capacity unit, cycle count, FreeBSD support
- [UPD] Brazilian Portuguese Translation pt-br.xml
- [ADD] Show the number of processes on Haiku
- [ADD] ThermalZone sensor support for WinNT
- [ADD] Tanglu to detected distros
- [ADD] Android and OS X version name
- [FIX] Fixed display of treetables
phpSysInfo 3.1.16
----------------
- [ADD] Show the number of processes
- [ADD] Lunar and 4MLinux to detected distros
phpSysInfo 3.1.15
----------------
- [ADD] CoreOS and Pisi Linux to detected distros
- [ADD] pmset - UPS support on Darwin (thanks to pelletierr)
- [ADD] lspci support on Darwin
- [ADD] SHOW_CPULIST_EXPANDED option
- [ADD] lxc/docker detection on Linux
- [ADD] ability to hide all disks and all network interfaces
- [FIX] Small CSS fix
- [UPD] Memory informations on Darwin systems
- [UPD] BAT plugin - Darwin support
phpSysInfo 3.1.14
----------------
- [ADD] FreeIPMI sensor program support
- [ADD] IPMIutil sensor program support
- [ADD] PowerSoftPlus (EVER) UPS program support
- [ADD] Line frequency for the UPS info
- [ADD] SENSOR_EVENTS option - show events of sensors
- [ADD] HIDE_RAID_DEVICES option for plugins MDStatus and DMRaid - list of RAID devices to hide
- [ADD] idash template
phpSysInfo 3.1.13
----------------
- [UPD] jQuery 2.1.1 and jQuery 1.11.1
- [UPD] Romanian Translation ro.xml
- [ADD] SHOW_CPUINFO_EXPANDED option
- [ADD] Machine detection on WINNT, Linux, Android and Darwin systems
phpSysInfo 3.1.12
----------------
- [ADD] GoboLinux, UltimateEdition, BOSS, Canaima, VortexBox, KaOS and NixOS to detected distros
- [ADD] OpenHardwareMonitor sensor program support
- [ADD] Possibility to define multiple UPS_PROGRAM
- [ADD] UPS_NUT_LIST option
- [FIX] Fixed incorrect network usage on FreeBSD
- [UPD] SMART plugin - Smartctl --device option value setting method
phpSysInfo 3.1.11
----------------
- [ADD] Add Access-Control-Allow-Origin on XML (JSON) interface for Ajax Load PR#47
- [ADD] Generations Linux and SliTaz to detected distros
- [ADD] IPMI and LMSensors currents information
- [ADD] Plugin IPMIInfo - added powers and currents values
- [ADD] Partial support of QNX
- [FIX] Reduce execution time on Linux systems when showing load average PR#47
phpSysInfo 3.1.10
----------------
- [ADD] Zenwalk and Raspbian to detected distros
- [FIX] /etc/os-release Linux distro detection
phpSysInfo 3.1.9
----------------
- [NEW] New plugin DMRaid - software raid status
- [ADD] Calculate, Tails, SMEServer, Semplice, SolydXK, Parsix, RedFlag, Amazon, Korora, OpenMandriva, SteamOS, ROSA Enterprise Server and ROSA Desktop Fresh to detected distros
- [UPD] Rebuilding of the Linux distribution detection
- [UPD] jQuery 2.1.0 and jQuery 1.11.0
phpSysInfo 3.1.8
----------------
- [ADD] Add printers messages in the XML output
- [ADD] PSStatus plugin - added optional regular expression search in the process name
- [ADD] RedHatEnterpriseClient distro icon #40
- [ADD] Hebrew Translation he.xml
- [FIX] BAT plugin - fix for old and new kernel /proc/acpi and /sys/class/power_supply
- [UPD] LMSensors name for Mac hardware sensors
phpSysInfo 3.1.7
----------------
- [ADD] Ksplice support for Linux
- [ADD] Show CPU frequency max and min for Darwin (Mac OS X)
- [ADD] Show System Language and Code Page on Darwin (Mac OS X)
- [ADD] Show network interfaces infos for Minix and SunOS
- [ADD] SMS, gNewSense and Vector to detected distros
- [ADD] LMSensors power information
- [ADD] Battery installation date for the UPS info
- [UPD] Network interfaces infos and filesystems infos for FreeBSD
- [UPD] Updated support of SunOS
- [UPD] Memory informations on Darwin systems
- [UPD] BAT plugin - updated Linux support
- [UPD] Updated HWSensors - OpenBSD sensor program
phpSysInfo 3.1.6
----------------
- [ADD] Porteus, Peppermint, Manjaro, Netrunner and Salix to detected distros
- [ADD] Show CPU frequency max for WINNT
- [ADD] Show network interfaces infos for Darwin (Mac OS X)
- [UPD] SNMPPInfo plugin, ink level for some of the data
- [UPD] jQuery 2.0.3 and jQuery 1.10.2
- [UPD] Russian Translation ru.xml
- [UPD] BAT plugin - WINNT support
- [SEC] Fix JSONP
phpSysInfo 3.1.5
----------------
- [ADD] Possibility to define multiple SENSOR_PROGRAM
- [ADD] Added display of temperature and fan speed for IPMI sensor program
- [ADD] openSUSE and Eisfair to detected distros
- [ADD] Portuguese Translation pt-pt.xml
- [FIX] Fixed incorrect display of the minimum fan speed
- [FIX] Fix recovery detection of RAID arrays on debian systems #18
phpSysInfo 3.1.4
----------------
- [ADD] Option for reading the results of functions executeProgram() and rfts() from log
- [ADD] Show CPU frequency max and min for variable speed processors for Linux and Android
- [ADD] Filesystem usage warning on defined threshold FS_USAGE_THRESHOLD
- [UPD] BAT plugin - added temperature, condition and type of battery, Android support
- [UPD] jQuery 2.0.2 and jQuery 1.10.1
phpSysInfo 3.1.3
----------------
- [ADD] IPFire, Sabayon, PearOS, ClearOS, Frugalware, Fuduntu, Foresight, Tinycore, ALT Linux, ROSA Desktop Marathon and RedHatEnterpriseServer to detected distros
- [UPD] Added "username" to filtered mount credentials
- [UPD] jQuery 2.0 coexistent with jQuery 1.9.1 for old Internet Explorer browser versions (IE 6/7/8)
- [FIX] proc_open() malfunction on some PHP for Android by replacing by popen()
- [FIX] Run php-cs-fixer on php files (PSR-2 fixer)
phpSysInfo 3.1.2
----------------
- [ADD] Tempsensor and CPU frequency for Raspberry Pi (thanks to hawkeyexp)
- [ADD] Linaro to detected distros
- [ADD] Option for logging of functions executeProgram() and rfts()
- [ADD] Add support of JSONP
- [FIX] Incorrect display of chunk size for the plugin mdstatus for some results
phpSysInfo 3.1.1
----------------
- [ADD] SolusOS, Deepin and antiX to detected distros
- [ADD] Simplified Chinese translation
- [UPD] jQuery 1.9.1
phpSysInfo 3.1.0
----------------
- [NEW] Configuration moved from config.php and subdirs of "plugins" to one file phpsysinfo.ini
- [ADD] Turbolinux, Oracle Linux, CloudLinux, PCLinuxOS, StartOS, Trisquel, CRUX, Slax, Pear, Android, Zorin and elementary OS to detected distros
- [ADD] Show System Language and Code Page on Linux, Haiku and WINNT
- [ADD] Minor support of ReactOS
- [ADD] apcupsd-cgi support (thanks to duhast)
- [UPD] Plugin ipmi renamed to IPMIInfo and Update-Notifier to UpdateNotifier (to avoid name conflicts)
- [UPD] Case-insensitive for most of parameters
- [UPD] Detection of Mac OS X and Linux distribution
- [UPD] CPU detection on Mac OS X
- [FIX] Fixed UTF8 encoding for Linux
- [FIX] SMART plugin doesn't display for some results
- [FIX] Incorrect display of mountpoint on Mac OS X

339
sysinfo/COPYING Normal file
View File

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

26
sysinfo/Dockerfile Normal file
View File

@ -0,0 +1,26 @@
# phpSysInfo
# VERSION 2
FROM ubuntu:14.04
MAINTAINER phpSysInfo
# Update sources
RUN echo "deb http://archive.ubuntu.com/ubuntu trusty main universe" > /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y apache2 php5 git pciutils
RUN git clone https://github.com/phpsysinfo/phpsysinfo.git /var/www/html/phpsysinfo
#RUN cp /var/www/html/phpsysinfo/phpsysinfo.ini.new /var/www/html/phpsysinfo/phpsysinfo.ini
RUN cat /var/www/html/phpsysinfo/phpsysinfo.ini.new | sed 's/^LOAD_BAR=false/LOAD_BAR=true/' >/var/www/html/phpsysinfo/phpsysinfo.ini
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2/apache2.pid
CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]
EXPOSE 80

121
sysinfo/README.md Normal file
View File

@ -0,0 +1,121 @@
phpSysInfo
==============
* Copyright (c), 1999-2008, Uriah Welcome (precision@users.sf.net)
* Copyright (c), 1999-2009, Michael Cramer (bigmichi1@users.sf.net)
* Copyright (c), 2007-2008, Audun Larsen (xqus@users.sf.net)
* Copyright (c), 2007-2015, Erkan Valentin
* Copyright (c), 2009-2015, Mieczyslaw Nalewaj (namiltd@users.sf.net)
* Copyright (c), 2010-2012, Damien Roth (iysaak@users.sf.net)
CURRENT TESTED PLATFORMS
------------------------
- Linux 2.6.x
- FreeBSD 7.x
- OpenBSD 2.8+
- NetBSD
- DragonFly
- HP-UX
- Darwin/OSX
- Windows 2000 / Windows 2003 / Windows XP / Windows Vista / Windows 7 / Windows 8 / Windows 8.1
- Android
- > PHP 5.2 or later
- With PCRE, XML, XSL, MBString and SimpleXML extension.
####Platforms currently in progress:
- Haiku
- Minix
- SunOS
- ReactOS
- IBM AIX
- QNX
If your platform is not here try checking out the mailing list archives or
the message boards on SourceForge.
INSTALLATION AND CONFIGURATION
------------------------------
####Typical installation
Just decompress and untar the source (which you should have done by now,
if you're reading this...), into your webserver's document root.
There is a configuration file called phpsysinfo.ini.new. If this a brand new
installation, you should copy this file to phpsysinfo.ini and edit it.
- make sure your `php.ini` file's `include_path` entry contains "."
- make sure your `php.ini` has `safe_mode` set to 'off'.
phpSysInfo require php-xml extension.
Please keep in the mind that because phpSysInfo requires access to many
files in `/proc` and other system binary you **MUST DISABLE** `php's safe_mode`.
Please see the PHP documentation for information on how you
can do this.
That's it. Restart your webserver (if you changed php.ini), and voila.
####Docker container installation
- sudo docker build -t phpsysinfo github.com/phpsysinfo/phpsysinfo
- sudo docker run -i -p 8080:80 -t phpsysinfo
- go to http://localhost:8080/phpsysinfo/
KNOWN PROBLEMS
--------------
- phpSysInfo is not compatible with SELinux Systems
- small bug under FreeBSD with memory reporting
PLATFORM SPECIFIC ISSUES
------------------------
####Windows with IIS
On Windows systems we get our informations through the WMI interface.
If you run phpSysInfo on the IIS webserver, phpSysInfo will not connect
to the WMI interface for security reasons. At this point you MUST set
an authentication mechanism for the directory in the IIS admin
interface for the directory where phpSysInfo is installed. Then you
will be asked for an user and a password when opening the page. At this
point it is necassary to log in with an user that will be able to
connect to the WMI interface. If you use the wrong user and/or password
you might get an "ACCESS DENIED ERROR".
SENSOR RELATED INFORMATION
---------------------------
####MBM5
Make sure you set MBM5 Interval Logging to csv and to the data
directory of phpSysInfo. The file must be called MBM5. Also make sure
MBM5 doesn't add symbols to the values. This is a Quick MBM5 log parser,
need more csv logs to make it better.
WHAT TO DO IF IT DOESN'T WORK
-----------------------------
First make sure you've read this file completely, especially the
"INSTALLATION AND CONFIGURATION" section. If it still doesn't work then
you can:
Submit a bug on SourceForge (preferred) (http://sourceforge.net/projects/phpsysinfo/)
Ask for help in the forum (http://sourceforge.net/projects/phpsysinfo/)
***!! If you have any problems, please set `DEBUG` to true in `phpsysinfo.ini`
and include any error messages in your bug report / help request !!***
OTHER NOTES
-----------
If you have a great idea or want to help out, just drop by the project
page at SourceForge (http://sourceforge.net/projects/phpsysinfo/).
LICENSING
---------
This program and all associated files are released under the GNU Public
License, see [COPYING](COPYING) for details.

134
sysinfo/README_PLUGIN.md Normal file
View File

@ -0,0 +1,134 @@
phpSysInfo 3.1 - http://phpsysinfo.sourceforge.net/
===================================================
Document written by Michael Cramer (bigmichi1 at sourceforge.net)
!!Please read if you want to develop a plugin to understand our plugin system!!
Plugins
-------
Beginning with phpSysInfo 3.0, phpSysInfo can be extended by Plugins. So here is
a description that a developer of a plugin must take care of. Plugins can be
enabled through the `phpsysinfo.ini` in the PLUGINS variable. The name of the
plugin is essential for the function of the plugin system. Lets say you write a
plugin with the name 'hdd_stats', then this name is added to the PLUGINS
variable in `phpsysinfo.ini`. And this is also then the name which is everywhere in
the plugin system used, like creating the object, locate the needed files and
so on.
So if the name is now specified, phpSysInfo needs a special directory structure
to find the needed files. The directory structure for the example `hdd_stats`
plugin can be seen here:
```
-+ phpSysInfo root
|
+---+ plugins (directory in that plugins are installed)
| |
| +---+ hdd_stats (the real plugin directory, must have the same name like
| | | the plugin named in PLUGINS, else it won't be found)
| | |
| | +---+ js (directory in which the needed JavaScript file is located,
| | | | to generate the html output out of the xml)
| | | # hdd_stats.js (the js file must have the same name, like the
| | | plugin in PSI_PLUGINS with the extension js)
| | +---+ css (directory in which the needed style sheet information are
| | | | located, can exists, but it's up to the author)
| | | # hdd_stats.css (the css file must have the same name, like the
| | | plugin in PSI_PLUGINS with the extension css)
| | +---+ lang (directory where translations for the plugin are located)
| | | |
| | | # en.xml (at least an english translation file must exist)
| | |
| | # class.hdd_stats.inc.php (this is the core file of the plugin,
| | name must consists of 'class' +
| | name from PSI_PLUGINS + '.inc.php')
```
other files or directorys can be included in the plugin directory, but then
its up to the developer to include them in the plugin. So it might be possible
to have a 'gfx' directory in which some pics are located that are used in the
output.
If the directory structure is build up, then it's time to start programming.
Files
-----
An example implementation is the mdstat plugin, which is shipped with phpSysInfo
* en.xml - at least this file must exist to get the translation working, and the
the first entry in this file is normally the headline of the plugin.
So one translation migth exists everytime. Other translation files
are also in the same directory like the `en.xml` file.
The id's specified in the translation file SHOULD have the following
look `plugin_hdd_status_001`. First we say that this is a plugin
translation, then the name of plugin and at last a increasing number
for each translation. Please create your id's in that way, so that
other plugins don't redefine your translations. At the time of writing
this, there is no check to verify the id's, so be carfull.
* hdd_stats.css - here can all custom style sheet informations written down. The
names of the id's and classes SHOULD also begin, like the translation
id's, with `'plugin_' + pluginname`. If thats not the case it might be
possible that another plugin is overwriting your css definitions.
* class.hdd_stats.inc.php - this file MUST include a class with the plugin name
and also this class MUST extend the 'psi_plugin' class. A check that
such a class exist and also extends 'psi_plugin' will be included in
the near future. And if the check fails the plugin won't be loaded.
The psi_plugin class checks the existens of the js and the en.xml
files. Also an extra configuration of the plugin is loaded
automatically from `phpsysinfo.ini`, if present.
Through the extension of the psi_plugin class there is a need to
include at least two public function. These are the execute() function
and the xml() function. Other functions can be exist, that depends on
the plugin needs or the author of the class. The execute() function is
called to get the required information that should be later included
in the xml file. The xml() function is called when the xml output
should be generated. This function must return a simplexml object. This
object is then included in another xml at the right position or as a
standalone xml. So there is no need to do some special things, only
create a xml object for the plugin.
* hdd_stats.js - this file is called when the page is loaded. A block for the
plugin is automatically created. This one is a div container with the
id `'plugin_'+ pluginname ("plugin_hdd_stats")`. The entire output must be
placed in that container.
There is a helper function for creating the headline: buildBlock() that
can be called. This function returns a string with the html code of the
headline, this code can then be appended to the plugin block. The
generated headline can provide a reload icon for an ajax request. Only
the click action of that icon must be created. The id of this icon is
`'reload_' + pluginname + 'Table' ("reload_hdd_statsTable")`.
Everything that then is done to get the html output out of the xml is up
to the author.
To get the xml document the ajax request url is `'xml.php?plugin=' +
pluginname (xml.php?plugin=hdd_stats)`. This xml includes only the xml
from the plugin nothing more.
The last two executed commands should/must be the translation call and
the unhide of the filled div container.
The translation function that needs to be called is named
plugin_traslate() with one argument, that is the pluginname like in
`PSI_PLUGINS (plugin_translate("hdd_stats");)`.
To unhide the filled container call the .show() function of it.
`$("plugin_" + pluginname).show() ($("plugin_hdd_stat").show())`.
FAQ
---
Q: Is the plugin system ready to use?
A: It can be used, but it might change slightly in the future, if there are some
special needs.
SUGGESTION
----------
If anybody out there has some suggestions in improving the plugin system let us
know. We are looking forward to get some feedback, suggestions and patches and
more. Feel free to contact us on our website: http://phpsysinfo.sourceforge.net.
$Id: README_PLUGIN 463 2011-04-19 17:34:41Z namiltd $

18
sysinfo/composer.json Normal file
View File

@ -0,0 +1,18 @@
{
"name": "phpsysinfo/phpsysinfo",
"description": "phpSysInfo is a customizable PHP Script that parses /proc, and formats information nicely. It will display information about system facts like Uptime, CPU, Memory, PCI devices, SCSI devices, IDE devices, Network adapters, Disk usage, and more.",
"license": "GPL",
"homepage": "http://phpsysinfo.github.io/phpsysinfo/",
"require": {
"php": ">=5.2.0",
"ext-simplexml": "*",
"ext-pcre": "*",
"ext-xml": "*",
"ext-dom": "*"
},
"suggest": {
"ext-mbstring": "Required for *nix non UTF-8 systems",
"ext-com_dotnet": "Required for Windows environments",
"ext-xsl": "Required for static mode"
}
}

View File

@ -0,0 +1,143 @@
ADP2,1:Developer Transition Kit:Intel Pentium 4
iMac,1:iMac G3:PowerPC 750 (G3)
iMac1,1:iMac G3*:PowerPC 750 (G3)
iMac4,1:iMac Core Duo:Intel Core Duo T2400/T2500
iMac4,2:iMac Core Duo:Intel Core Duo T2400
iMac5,1:iMac Core 2 Duo:Intel Core 2 Duo T7200/T7400/T7600
iMac5,2:iMac Core 2 Duo:Intel Core 2 Duo T5600
iMac6,1:iMac Core 2 Duo:Intel Core 2 Duo T7400/T7600
iMac7,1:iMac Core 2 Duo/Extreme:Intel Core 2 Duo T7300/T7700/X7900
iMac8,1:iMac Core 2 Duo:Intel Core 2 Duo E8135/E8335/E8235/E8435
iMac9,1:iMac Core 2 Duo:Intel Core 2 Duo P7350/P7550/E8135/E8335/E8435
iMac10,1:iMac Core 2 Duo:Intel Core 2 Duo E7600/E8600
iMac10,2:iMac Core 2 Duo*:Intel Core 2 Duo E7500/E7600/E8600
iMac11,1:iMac Core i5/i7:Intel Core I5-750/I7-860
iMac11,2:iMac Core i3/i5:Intel Core I3-540/I3-550/I5-680
iMac11,3:iMac Core i3/i5/i7:Intel Core I3-550/I5-760/I5-680/I7-870
iMac12,1:iMac Core i3/i5/i7:Intel Core I3-2100/I5-2400S/I5-2500S/I5-2600S
iMac12,2:iMac Core i5/i7:Intel Core I5-2400/I5-2500S/I7-2600
iMac13,1:iMac Core i3/i5/i7:Intel Core I3-3225/I5-3335S/I5-3470S/I7-3770S
iMac13,2:iMac Core i5/i7:Intel Core I5-3470/I5-3470S/I7-3770
iMac14,1:iMac Core i5:Intel Core I5-4570R
iMac14,2:iMac Core i5/i7:Intel Core I5-4570/I5-4670/I7-4771
iMac14,3:iMac Core i5/i7:Intel Core I5-4570S/I7-4770S
M43ADP1,1:Development Mac Pro:Intel Xeon X5340
MacBook1,1:MacBook Core Duo:Intel Core Duo T2400/T2500
MacBook2,1:MacBook Core 2 Duo:Intel Core 2 Duo T5600/T7200/T7400
MacBook3,1:MacBook Core 2 Duo:Intel Core 2 Duo T7300/T7500
MacBook4,1:MacBook Core 2 Duo:Intel Core 2 Duo T8100/T8300
MacBook5,1:MacBook Core 2 Duo:Intel Core 2 Duo P7350/P8600
MacBook5,2:MacBook Core 2 Duo:Intel Core 2 Duo P7350/P7450
MacBook6,1:MacBook Core 2 Duo:Intel Core 2 Duo P7550
MacBook7,1:MacBook Core 2 Duo:Intel Core 2 Duo P8600
MacBookAir1,1:MacBook Air Core 2 Duo:Intel Core 2 Duo P7500/P7700
MacBookAir2,1:MacBook Air Core 2 Duo:Intel Core 2 Duo SL9300/SL9400/SL9600
MacBookAir3,1:MacBook Air Core 2 Duo:Intel Core 2 Duo SU9400/SU9600
MacBookAir3,2:MacBook Air Core 2 Duo:Intel Core 2 Duo SL9400/SL9600
MacBookAir4,1:MacBook Air Core i5/i7:Intel Core I5-2467M/I7-2677M
MacBookAir4,2:MacBook Air Core i5/i7:Intel Core I5-2467M/I5-2557M/I7-2677M
MacBookAir5,1:MacBook Air Core i5/i7:Intel Core I5-3317U/I7-3667U
MacBookAir5,2:MacBook Air Core i5/i7:Intel Core I5-3427U/I7-3667U
MacBookAir6,1:MacBook Air Core i5/i7:Intel Core I5-4250U/I5-4260U/I7-4650U
MacBookAir6,2:MacBook Air Core i5/i7:Intel Core I5-4250U/I5-4260U/I7-4650U
MacBookPro1,1:MacBook Pro Core Duo:Intel Core Duo L2400/T2400/T2500/T2600
MacBookPro1,2:MacBook Pro Core Duo:Intel Core Duo T2600
MacBookPro2,1:MacBook Pro Core 2 Duo:Intel Core 2 Duo T7600
MacBookPro2,2:MacBook Pro Core 2 Duo:Intel Core 2 Duo T7400/T7600
MacBookPro3,1:MacBook Pro Core 2 Duo:Intel Core 2 Duo T7500/T7700/T7800
MacBookPro4,1:MacBook Pro Core 2 Duo:Intel Core 2 Duo T8300/T9300/T9500
MacBookPro5,1:MacBook Pro Core 2 Duo:Intel Core 2 Duo P8600/T9400/T9550/T9600/T9800
MacBookPro5,2:MacBook Pro Core 2 Duo:Intel Core 2 Duo T9550/T9600/T9800/T9900
MacBookPro5,3:MacBook Pro Core 2 Duo:Intel Core 2 Duo P8800/T9600/T9900
MacBookPro5,4:MacBook Pro Core 2 Duo:Intel Core 2 Duo P8700
MacBookPro5,5:MacBook Pro Core 2 Duo:Intel Core 2 Duo P8400/P8700
MacBookPro6,1:MacBook Pro Core i5/i7:Intel Core I5-540M/I7-620M/I7-640M
MacBookPro6,2:MacBook Pro Core i5/i7:Intel Core I5-520M/I5-540M/I7-620M/I7-640M
MacBookPro7,1:MacBook Pro Core 2 Duo:Intel Core 2 Duo P8600/P8800
MacBookPro8,1:MacBook Pro Core i5/i7:Intel Core I5-2415M/I5-2435M/I7-2620M/I7-2640M
MacBookPro8,2:MacBook Pro Core i7:Intel Core I7-2635QM/I7-2720QM/I7-2675QM/I7-2820QM/I7-2760QM/I7-2860QM
MacBookPro8,3:MacBook Pro Core i7:Intel Core I7-2720QM/I7-2820QM/I7-2760QM/I7-2860QM
MacBookPro9,1:MacBook Pro Core i7:Intel Core I7-3615QM/I7-3720QM/I7-3820QM
MacBookPro9,2:MacBook Pro Core i5/i7:Intel Core I5-3210M/I7-3520M
MacBookPro10,1:MacBook Pro Core i7:Intel Core I7-3615QM/I7-3635QM/I7-3720QM/I7-3740QM/I7-3820QM/I7-3840QM
MacBookPro10,2:MacBook Pro Core i5/i7:Intel Core I5-3210M/I5-3230M/I7-3520M/I7-3540M
MacBookPro11,1:MacBook Pro Core i5/i7:Intel Core I5-4258U/I5-4288U/I7-4558U
MacBookPro11,2:MacBook Pro Core i7:Intel Core I7-4750HQ/I7-4850HQ/I7-4960HQ
MacBookPro11,3:MacBook Pro Core i7:Intel Core I7-4850HQ/I7-4960HQ
Macmini1,1:Mac mini Core Solo/Duo:Intel Core Duo T2300/T2400 Solo T1200
Macmini2,1:Mac mini Core 2 Duo:Intel Core 2 Duo T5600/T7200
Macmini3,1:Mac mini Core 2 Duo:Intel Core 2 Duo P7350/P8400/P7550/P8700/P8800
Macmini4,1:Mac mini Core 2 Duo:Intel Core 2 Duo P8600/P8800
Macmini5,1:Mac mini Core i5:Intel Core I5-2415M
Macmini5,2:Mac mini Core i5/i7:Intel Core I5-2520M/I7-2620M
Macmini5,3:Mac mini Core i7:Intel Core I7-2635QM
Macmini6,1:Mac mini Core i5:Intel Core I5-3210M
Macmini6,2:Mac mini Core i7:Intel Core i7 I7-3615QM/I7-3720QM
MacPro1,1:Mac Pro Quad Core:Intel Xeon 5130/5150/5160
MacPro2,1:Mac Pro Eight Core:Intel Xeon X5365
MacPro3,1:Mac Pro Quad/Eight Core:Intel Xeon E5462/E5472/X5482
MacPro4,1:Mac Pro Quad/Eight Core:Intel Xeon E5520/E5550/X5570/W3520/W3540/W3580
MacPro5,1:Mac Pro Quad/Six/Eight/Twelve Core:Intel Xeon E5620/E5645/W3530/W3565/W3680/X5650/X5670/X5675
MacPro6,1:Mac Pro Quad/Six/Eight/Twelve Core:Intel Xeon E5-1620v2/E5-1650v2/E5-1680v2/E5-2697v2
PowerBook1,1:PowerBook G3:PowerPC 750 (G3)
PowerBook2,1:iBook G3:PowerPC 750 (G3)
PowerBook2,2:iBook G3:PowerPC 750cx (G3)
PowerBook2,3:iBook G3*:PowerPC 750cx (G3)
PowerBook2,4:iBook G3*:PowerPC 750cx (G3)
PowerBook3,1:PowerBook G3:PowerPC 750 (G3)
PowerBook3,2:PowerBook G4:PowerPC 7410 (G4)
PowerBook3,3:PowerBook G4:PowerPC 7440 (G4)
PowerBook3,4:PowerBook G4:PowerPC 7451 (G4)
PowerBook3,5:PowerBook G4:PowerPC 7455 (G4)
PowerBook4,1:iBook G3:PowerPC 750cx (G3)
PowerBook4,2:iBook G3 600:PowerPC 750cx (G3)
PowerBook4,3:iBook G3:PowerPC 750fx (G3)
PowerBook5,1:PowerBook G4:PowerPC 7455 (G4)
PowerBook5,2:PowerBook G4:PowerPC 7447 (G4)
PowerBook5,3:PowerBook G4:PowerPC 7447 (G4)
PowerBook5,4:PowerBook G4:PowerPC 7447a (G4)
PowerBook5,5:PowerBook G4:PowerPC 7447a (G4)
PowerBook5,6:PowerBook G4:PowerPC 7447a (G4)
PowerBook5,7:PowerBook G4:PowerPC 7447a (G4)
PowerBook5,8:PowerBook G4:PowerPC 7447a (G4)
PowerBook5,9:PowerBook G4:PowerPC 7447a (G4)
PowerBook6,1:PowerBook G4:PowerPC 7455 (G4)
PowerBook6,2:PowerBook G4:PowerPC 7447 (G4)
PowerBook6,3:iBook G4:PowerPC 7457 (G4)
PowerBook6,4:PowerBook G4:PowerPC 7447a (G4)
PowerBook6,5:iBook G4:PowerPC 7447a (G4)
PowerBook6,7:iBook G4:PowerPC 7447a (G4)
PowerBook6,8:PowerBook G4:PowerPC 7447a (G4)
PowerMac1,1:Power Macintosh/Mac Server G3:PowerPC 750 (G3)
PowerMac1,2:Power Macintosh G4:PowerPC 7400 (G4)
PowerMac2,1:iMac G3:PowerPC 750 (G3)
PowerMac2,2:iMac G3:PowerPC 750 (G3)
PowerMac3,1:Power Macintosh/Mac Server G4:PowerPC 7400 (G4)
PowerMac3,2:Power Macintosh/Mac Server G4*:PowerPC 7400 (G4)
PowerMac3,3:Power Macintosh/Mac Server G4:PowerPC 7400 (G4)
PowerMac3,4:Power Macintosh/Mac Server G4:PowerPC 7410 (G4)
PowerMac3,5:Power Macintosh/Mac Server G4:PowerPC 7450/7455 (G4)
PowerMac3,6:Power Macintosh/Mac Server G4:PowerPC 7455 (G4)
PowerMac4,1:iMac G3:PowerPC 750/750cx (G3)
PowerMac4,2:iMac G4:PowerPC 7441/7445 (G4)
PowerMac4,4:eMac G4:PowerPC 7441/7445 (G4)
PowerMac4,5:iMac G4:PowerPC 7445 (G4)
PowerMac5,1:Power Macintosh G4 Cube:PowerPC 7400 (G4)
PowerMac6,1:iMac G4:PowerPC 7445 (G4)
PowerMac6,3:iMac G4:PowerPC 7445 (G4)
PowerMac6,4:eMac G4:PowerPC 7447a (G4)
PowerMac7,2:Power Macintosh G5:PowerPC 970 (G5)
PowerMac7,3:Power Macintosh G5:PowerPC 970fx (G5)
PowerMac8,1:iMac G5:PowerPC 970 (G5)
PowerMac8,2:iMac G5:PowerPC 970 (G5)
PowerMac9,1:Power Macintosh G5:PowerPC 970fx (G5)
PowerMac10,1:Mac mini G4:PowerPC 7447a (G4)
PowerMac10,2:Mac mini G4:PowerPC 7447a (G4)
PowerMac11,2:Power Macintosh G5 Dual/Quad Core:PowerPC 970MP (G5)
PowerMac12,1:iMac G5:PowerPC 970fx (G5)
RackMac1,1:Xserve G4:PowerPC 7455 (G4)
RackMac1,2:Xserve G4:PowerPC 7455 (G4)
RackMac3,1:Xserve G5:PowerPC 970fx (G5)
Xserve1,1:Xserve Xeon Quad Core:Intel Xeon 5130/5150/5160
Xserve2,1:Xserve Xeon Quad/Eight Core:Intel Xeon E5462/E5472
Xserve3,1:Xserve Xeon Nehalem Quad/Eight Core:Intel Xeon E5520/E5550/E5570

800
sysinfo/data/distros.ini Normal file
View File

@ -0,0 +1,800 @@
; linux-distros.ini - Defines known linux distros for phpSysInfo.
; http://phpsysinfo.sourceforge.net/
; $Id: distros.ini 709 2012-12-05 11:20:40Z namiltd $
;
[GoboLinux]
Image = "Gobo.png"
Name = "GoboLinux"
Files = "/etc/GoboLinuxVersion"
[SliTaz]
Image = "SliTaz.png"
Name = "SliTaz"
Files = "/etc/slitaz-release"
[eisfair]
Image = "Eisfair.png"
Files = "/etc/eisfair-system"
Files2 = "/etc/version"
[TinyCore]
Image = "TinyCore.png"
Name = "Tiny Core Linux"
Files = "/usr/share/doc/tc/release.txt"
[Frugalware]
Image = "Frugalware.png"
Files = "/etc/frugalware-release"
;detected in "/etc/os-release"
[antiX]
Image = "antiX.png"
Files = "/etc/antix-version"
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
[IPFire]
Image = "IPFire.png"
;detected in "/etc/system-release"
[4MLinux]
Image = "4MLinux.png"
Name = "4MLinux"
Files = "/etc/4MLinux-version"
[Lunar Linux]
Image = "Lunar.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
[CRUX]
Image = "Crux.png"
Mode = "Execute"
Files = "/usr/bin/crux"
[Foresight]
Image = "Foresight.png"
;detected in "/etc/distro-release"
[Trustix]
Image = "Trustix.png"
Files = "/etc/trustix-release;/etc/trustix-version"
[NixOS]
Image = "NixOS.png"
;detected in "/etc/os-release"
[FreeEOS]
Image = "free-eos.png"
Files = "/etc/eos-version"
[generations]
Image = "Generations.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
[Generations Linux]
Image = "Generations.png"
;detected in "/etc/os-release"
[Manjaro Linux]
Image = "Manjaro.png"
Files = "/etc/manjaro-release"
;detected in "/etc/os-release"
[ManjaroLinux]
Image = "Manjaro.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
[Arch Linux]
Image = "Arch.png"
Files = "/etc/arch-release"
;detected in "/etc/os-release"
[Arch]
Image = "Arch.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
[Cobalt]
Image = "Cobalt.png"
Files = "/etc/cobalt-release"
[LinuxFromScratch]
Image = "LFS.png"
Files = "/etc/lfs-release"
[Rubix]
Image = "Rubix.png"
Files = "/etc/rubix-version"
[Tails]
Image = "Tails.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
[Tanglu]
Image = "Tanglu.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
[Tanglu GNU/Linux]
Image = "Tanglu.png"
;detected in "/etc/os-release"
[Mer]
Image = "Mer.png"
Files = "/etc/mer-release;/etc/meego-release;/etc/moblin-release"
Mode = "Analyse"
;detected in "lsb_release -a"
;detected in "/etc/system-release"
[KaOS]
Image = "KaOS.png"
Files = "/etc/KaOS-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
[CoreOS]
Image = "CoreOS.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
[BOSS]
Image = "BOSS.png"
Name = "BOSS GNU/Linux"
Files = "/etc/boss_version"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
[BOSS GNU/Linux]
Image = "BOSS.png"
;detected in "/etc/os-release"
[BOSS Server Beta]
Image = "BOSS.png"
;detected in "lsb_release -a"
[Canaima]
Image = "Canaima.png"
Name = "Canaima GNU/Linux"
Files = "/etc/canaima_version"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
[Canaima GNU/Linux]
Image = "Canaima.png"
;detected in "/etc/os-release"
[Semplice]
Image = "Semplice.png"
Name = "Semplice"
Files = "/etc/semplice_version"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
[SolydXK]
Image = "SolydXK.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/solydxk/info"
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
[HandyLinux]
Image = "Handy.png"
Files = "/etc/handylinux_version"
;detected in "lsb_release -a"
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
[Parsix]
Image = "Parsix.png"
Files = "/etc/parsix-version"
;detected in "lsb_release -a"
;detected or wrong version in "/etc/os-release" | Parsix 4.0
;wrong in "/etc/debian_version" Debian
[Linaro]
Image = "Linaro.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
[LinuxDeepin]
Image = "Deepin.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
[Ultimate_Edition]
Image = "UltimateEdition.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
[elementary OS]
Image = "elementaryOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
[PearLinux]
Image = "Pear.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
[Pear Linux]
Image = "Pear.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
[PearOS]
Image = "Pear.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
[SolusOS]
Image = "SolusOS.png"
Files = "/etc/solusos_version"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
[LinuxMint]
Image = "Mint.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
[Trisquel]
Image = "Trisquel.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
[Zorin]
Image = "Zorin.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong or almost in "/etc/os-release" Ubuntu | Zorin OS
;wrong in "/etc/debian_version" Debian
[Zorin OS]
Image = "Zorin.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
[Netrunner]
Image = "Netrunner.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
[NetrunnerSE]
Image = "Netrunner.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
[Netrunner Rolling]
Image = "Netrunner.png"
;detected in "/etc/os-release"
;wrong in "/etc/manjaro-release" Manjaro
[Peppermint]
Image = "Peppermint.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
[Ubuntu]
Image = "Ubuntu.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
[Chakra]
Image = "Chakra.png"
Files = "/etc/chakra-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
[The Chakra-Project]
Image = "Chakra.png"
;detected in "/etc/os-release"
[IYCC]
Image = "iycc.png"
;detected in "/etc/lsb-release"
[Mageia]
Image = "Mageia.png"
Files = "/etc/mageia-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/mandriva-release"
;detected in "/etc/mandrake-release;/etc/mandrakelinux-release"
;detected in "/etc/redhat-release"
;detected in "/etc/os-release"
[PLD Linux]
Image = "PLD.png"
Files = "/etc/pld-release"
;detected in "/etc/os-release"
[LFS]
Image = "lfs.png"
Files = "/etc/lfs-release;/etc/lfs_version"
[HLFS]
Image = "lfs.png"
Files = "/etc/hlfs-release;/etc/hlfs_version"
[Synology]
Image = "Synology.png"
Mode = "Detection"
Files = "/etc/synoinfo.conf"
Files2 = "/etc/VERSION"
[Alpine]
Name = "Alpine"
Image = "Alpine.png"
Files = "/etc/alpine-release"
[Puppy]
Image = "Puppy.png"
;detected in "/etc/DISTRO_SPECS"
[Lucid]
Name = "Lucid Puppy"
Image = "Puppy.png"
;detected in "/etc/DISTRO_SPECS"
[Slacko Puppy]
Image = "Puppy.png"
;detected in "/etc/DISTRO_SPECS"
[Wary Puppy]
Image = "Puppy.png"
;detected in "/etc/DISTRO_SPECS"
[Turbolinux]
Image = "Turbo.png"
Files = "/etc/turbolinux-release"
[Amazon]
Image = "Amazon.png"
;detected in "/etc/system-release"
[AmazonAMI]
Image = "Amazon.png"
;detected in "lsb_release -a"
[RedFlag]
Image = "RedFlag.png"
Files = "/etc/redflag-release"
;detected in "/etc/system-release"
[Red Flag inWise]
Image = "RedFlag.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
[StartOS]
Image = "StartOS.png"
Files = "/etc/startos-release"
;detected in "lsb_release -a"
[PisiLinux]
Image = "Pisi.png"
Files = "/etc/pisilinux-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
[Pisi_Linux]
Image = "Pisi.png"
;detected in "/etc/system-release"
[SME]
Image = "SMEServer.png"
Files = "/etc/e-smith-release"
;wrong in "/etc/centos-release" CentOS
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
[SMEServer]
Image = "SMEServer.png"
;detected in "lsb_release -a"
[Scientific]
Image = "Scientific.png"
;detected in "lsb_release -a"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
[ScientificSL]
Image = "Scientific.png"
;detected in "lsb_release -a"
[ScientificCERNSLC]
Image = "Scientific.png"
;detected in "lsb_release -a"
[ScientificFermi]
Image = "Scientific.png"
;detected in "lsb_release -a"
[ScientificFermiLTS]
Image = "Scientific.png"
;detected in "lsb_release -a"
[ScientificSLF]
Image = "Scientific.png"
;detected in "lsb_release -a"
[ClearOS]
Image = "ClearOS.png"
Files = "/etc/clearos-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
[CloudLinuxServer]
Image = "Cloud.png"
;detected in "lsb_release -a"
[CloudLinux]
Image = "Cloud.png"
Files = "/etc/CloudLinux-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
; at the end because some distros may also have the same files (like SMEServer)
[CentOS]
Image = "CentOS.png"
Files = "/etc/centos-release"
;detected in "lsb_release -a"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
[Oracle]
Image = "Oracle.png"
Files = "/etc/oracle-release;/etc/enterprise-release"
;detected in "/etc/system-release"
;wrong in "/etc/redhat-release" RedHat
[OracleServer]
Image = "Oracle.png"
;detected in "lsb_release -a"
[EnterpriseEnterpriseServer]
Image = "Oracle.png"
;detected in "lsb_release -a"
[PCLinuxOS]
Image = "PCLinuxOS.png"
Files = "/etc/pclinuxos-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/mandriva-release"
;detected in "/etc/mandrake-release;/etc/mandrakelinux-release"
;detected in "/etc/redhat-release"
[Salix]
Image = "Salix.png"
Mode = "Detection"
Files = "/etc/salix-update-notifier.conf"
Files2 = "/etc/slackware-version"
;wrong in "/etc/os-release" Slackware
;wrong in "/etc/slackware-version" Slackware
[Slax]
Image = "Slax.png"
Files = "/etc/slax-version"
;wrong in "/etc/os-release" Slackware
;wrong in "/etc/slackware-version" Slackware
[SMS]
Image = "SMS.png"
Files = "/etc/sms-version"
;detected in "/etc/os-release"
;wrong in "/etc/slackware-version" Slackware
[Porteus]
Image = "Porteus.png"
Files = "/etc/porteus-version"
;wrong in "/etc/os-release" Slackware
;wrong in "/etc/slackware-version" Slackware
[Vector]
Image = "Vector.png"
Files = "/etc/vector-version"
;wrong in "/etc/slackware-version" Slackware
[Zenwalk]
Name = "Zenwalk"
Image = "Zenwalk.png"
Files = "/etc/zenwalk-version"
;detected in "/etc/os-release"
;wrong in "/etc/slackware-version" Slackware
[Calculate]
Image = "Calculate.png"
;detected in "/etc/gentoo-release"
;wrong in "/etc/os-release" Gentoo
[Tizen]
Image = "Tizen.png"
Files = "/etc/tizen-release"
;detected in "/etc/system-release"
;detected in "/etc/os-release"
[Sabayon]
Image = "Sabayon.png"
Files = "/etc/sabayon-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/system-release"
;detected in "/etc/os-release"
;wrong in "/etc/gentoo-release" Gentoo
[VortexBox]
Image = "VortexBox.png"
Name = "VortexBox"
Files = "/etc/vortexbox/vortexbox-version"
;wrong in "/etc/fedora-release" Fedora
;wrong in "/etc/redhat-release" Fedora
;wrong in "/etc/system-release" Fedora
;wrong in "/etc/os-release" Fedora
[ALT]
Image = "ALT.png"
Files = "/etc/altlinux-release"
;detected in "/etc/fedora-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
[Simply]
Image = "ALT.png"
;detected in "/etc/fedora-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
[Simply Linux]
Image = "ALT.png"
;detected in "/etc/os-release"
[ALT Linux]
Image = "ALT.png"
;detected in "/etc/os-release"
[Fuduntu]
Image = "Fuduntu.png"
Files = "/etc/fuduntu-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/fedora-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
[gNewSense]
Image = "gNewSense.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
[SteamOS]
Image = "SteamOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
[SteamOS GNU/Linux]
Image = "SteamOS.png"
;detected in "/etc/os-release"
[Raspbian]
Image = "Raspbian.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
[Raspbian GNU/Linux]
Image = "Raspbian.png"
;detected in "/etc/os-release"
[Debian]
Name = "Debian"
Image = "Debian.png"
Files = "/etc/debian_release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/debian_version"
[Debian GNU/Linux]
Image = "Debian.png"
;detected in "/etc/os-release"
[openSUSE]
Image = "openSUSE.png"
;detected in "/etc/os-release"
;detected in "/etc/SuSE-release"
[openSUSE project]
Image = "openSUSE.png"
;detected in "lsb_release -a"
; at the end because some distros may also have the same files (like openSUSE)
[SUSE LINUX]
Image = "SUSE.png"
Mode = "Analyse"
Files = "/etc/SuSE-release;/etc/UnitedLinux-release"
; at the end because some distros may also have the same files (like Sabayon, Calculate)
[Gentoo]
Image = "Gentoo.png"
Mode = "Analyse"
Files = "/etc/gentoo-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
; at the end because some distros may also have the same files (like Salix, Slax, SMS, Porteus, Vector, Zenwalk)
[Slackware]
Image = "Slackware.png"
Files = "/etc/slackware-release;/etc/slackware-version"
;detected in "/etc/os-release"
[Qubes]
Image = "Qubes.png"
Files = "/etc/qubes-release"
;detected in "/etc/fedora-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
;detected in "/etc/os-release"
[Korora]
Image = "Korora.png"
;detected in "lsb_release -a"
;detected in "/etc/fedora-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
;detected in "/etc/os-release"
; at the end because some distros may also have the same files (like Fuduntu, ALT, VortexBox, Qubes, Korora)
[Fedora]
Image = "Fedora.png"
Mode = "Analyse"
Files = "/etc/fedora-release"
;detected in "lsb_release -a"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
;detected in "/etc/os-release"
[FedoraCore]
Image = "Fedora.png"
;detected in "/etc/lsb-release"
[OpenMandriva]
Image = "OpenMandriva.png"
;detected in "/etc/rosa-release"
;detected in "/etc/mandriva-release"
;detected in "/etc/mandrake-release;/etc/mandrakelinux-release"
;detected in "/etc/redhat-release"
;detected in "/etc/distro-release"
;detected in "/etc/system-release"
[OpenMandriva Lx]
Image = "OpenMandriva.png"
;detected in "/etc/os-release"
[OpenMandrivaLinux]
Image = "OpenMandriva.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
[ROSA MarathonLinux]
Image = "ROSA.png"
;detected in "/etc/lsb-release"
[RosaDesktop.Marathon]
Image = "ROSA.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
[RosaDesktop.Fresh]
Image = "ROSA.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
[ROSA Desktop Fresh]
Image = "ROSA.png"
;detected in "/etc/os-release"
[ROSA Marathon]
Image = "ROSA.png"
;detected in "/etc/os-release"
[ROSAEnterpriseServer]
Image = "ROSA.png"
;detected in "lsb_release -a"
; at the end because some distros may also have the same files (like OpenMandriva)
[ROSA]
Image = "ROSA.png"
Mode = "Analyse"
Files = "/etc/rosa-release"
;detected in "lsb_release -a"
;detected in "/etc/system-release"
;detected in "/etc/mandriva-release"
;detected in "/etc/mandrake-release;/etc/mandrakelinux-release"
;detected in "/etc/redhat-release"
[MandrivaLinux]
Image = "Mandrake.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
; at the end because some distros may also have the same files (like Mageia, PCLinuxOS, ROSA, OpenMandriva)
[Mandriva]
Image = "Mandrake.png"
Mode = "Analyse"
Files = "/etc/mandriva-release"
;detected in "/etc/mandrake-release;/etc/mandrakelinux-release"
;detected in "/etc/redhat-release"
; at the end because some distros may also have the same files (like Mandriva, Mageia, PCLinuxOS, ROSA, OpenMandriva)
[Mandrake]
Image = "Mandrake.png"
Mode = "Analyse"
Files = "/etc/mandrake-release;/etc/mandrakelinux-release"
; at the end because some distros may also have the same files (like SMEServer, Fuduntu, ALT, VortexBox, Qubes, Korora, Fedora, CentOS, Oracle, Scientific, CloudLinux, Mandrake, MandrivaLinux, Mageia, PCLinuxOS, ROSA, OpenMandriva)
[RedHat]
Image = "RedHat.png"
Mode = "Analyse"
Files = "/etc/redhat-release;/etc/redhat_version"
;detected in "/etc/system-release"
[Red Hat Enterprise Linux Everything]
Image = "RedHat.png"
;detected in "/etc/os-release"
[RedHatEnterpriseES]
Image = "RedHat.png"
;detected in "lsb_release -a"
[RedHatEnterpriseAS]
Image = "RedHat.png"
;detected in "lsb_release -a"
[RedHatEnterpriseServer]
Image = "RedHat.png"
;detected in "lsb_release -a"
[RedHatEnterpriseClient]
Image = "RedHat.png"
;detected in "lsb_release -a"

1025
sysinfo/data/languages.ini Normal file

File diff suppressed because it is too large Load Diff

33
sysinfo/data/osnames.ini Normal file
View File

@ -0,0 +1,33 @@
[Android]
1.0="Apple Pie"
1.1="Banana Bread"
1.5="Cupcake"
1.6="Donut"
2.0="Eclair"
2.1="Eclair"
2.2="Froyo"
2.3="Gingerbread"
3.0="Honeycomb"
3.1="Honeycomb"
3.2="Honeycomb"
4.0="Ice Cream Sandwich"
4.1="Jelly Bean"
4.2="Jelly Bean"
4.3="Jelly Bean"
4.4="KitKat"
5.0="Lollipop"
5.1="Lollipop"
5.2="Lollipop"
[OS X]
10.0="Cheetah"
10.1="Puma"
10.2="Jaguar"
10.3="Panther"
10.4="Tiger"
10.5="Leopard"
10.6="Snow Leopard"
10.7="Lion"
10.8="Mountain Lion"
10.9="Mavericks"
10.10="Yosemite"

BIN
sysinfo/gfx/ajax-loader.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

BIN
sysinfo/gfx/ajaxLoader.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
sysinfo/gfx/attention.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
sysinfo/gfx/body.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

BIN
sysinfo/gfx/close.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 B

BIN
sysinfo/gfx/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
sysinfo/gfx/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 B

BIN
sysinfo/gfx/html.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 B

BIN
sysinfo/gfx/htmlwarn.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
sysinfo/gfx/images/AIX.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
sysinfo/gfx/images/ALT.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 972 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

BIN
sysinfo/gfx/images/Arch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
sysinfo/gfx/images/BOSS.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
sysinfo/gfx/images/Crux.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 742 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
sysinfo/gfx/images/Gobo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
sysinfo/gfx/images/HPUX.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
sysinfo/gfx/images/KaOS.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
sysinfo/gfx/images/LFS.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
sysinfo/gfx/images/Mer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Some files were not shown because too many files have changed in this diff Show More