Echo Snippet

Kick 'n'Dirty



CSS 8 DNS 1 SQL 1 ajax 1 apache 3 bash 11 convert 3 crontab 2 css 1 error 1 fail2ban 2 gogs 1 grav 1 htaccess 3 html 13 ip 8 iptables 2 js 6 mail 2 nano 2 netatmo 1 php 42 php4 1 php5 2 php7 1 plex 1 powershell 1 regex 1 rss 3 secu 1 shell 25 ssl 2 stylus 3 tls 1 windows 1 youtube 2

.

html

[CSS] FIX Footer in bottom page

#footer {
   position:absolute;
   bottom:0;
   width:100%;
   height:40px;   /* Height of the footer */
}

CSS html

<iframe width="100%" height="290" src="https://snippet.echosystem.fr?embed=5fa1747218012" type="text/html"></iframe>

Texte seul - Permalink - Snippet public posté le 03/11/2021

[HTML/JS] Copy boutton

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.tooltip {
  position: relative;
  display: inline-block;
}

.tooltip .tooltiptext {
  visibility: hidden;
  width: 140px;
  background-color: #555;
  color: #fff;
  text-align: center;
  border-radius: 6px;
  padding: 5px;
  position: absolute;
  z-index: 1;
  bottom: 150%;
  left: 50%;
  margin-left: -75px;
  opacity: 0;
  transition: opacity 0.3s;
}

.tooltip .tooltiptext::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  margin-left: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: #555 transparent transparent transparent;
}

.tooltip:hover .tooltiptext {
  visibility: visible;
  opacity: 1;
}
</style>
</head>
<body>

<p>  Copy text</p>
<input type="text" value="Hello World" id="myInput">

<div class="tooltip">
<button onclick="myFunction()" onmouseout="outFunc()">
  <span class="tooltiptext" id="myTooltip">Copy to clipboard</span>
  Copy text
  </button>
</div>

 

<script>
function myFunction() {
  var copyText = document.getElementById("myInput");
  copyText.select();
  copyText.setSelectionRange(0, 99999);
  document.execCommand("copy");
  
  var tooltip = document.getElementById("myTooltip");
  tooltip.innerHTML = "Copied: " + copyText.value;
}

function outFunc() {
  var tooltip = document.getElementById("myTooltip");
  tooltip.innerHTML = "Copy to clipboard";
}
</script>

</body>
</html>

html js

https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_copy_clipboard2

<iframe width="100%" height="1568" src="https://snippet.echosystem.fr?embed=5efb6768b98c5" type="text/html"></iframe>

Texte seul - Permalink - Snippet public posté le 02/11/2021

[CSS] Centrer image with text vertical

<div>
    <img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.svg" style="vertical-align: middle;" width="100px"/>
    <span style="vertical-align: middle;">Here is some text.</span>
</div>

CSS html

<iframe width="100%" height="254" src="https://snippet.echosystem.fr?embed=5daf451ece633" type="text/html"></iframe>

Texte seul - Permalink - Snippet public posté le 22/10/2019

[HTML] Responsive html with meta

<meta name="viewport" content="width=device-width, initial-scale=1.0">

html

<iframe width="100%" height="218" src="https://snippet.echosystem.fr?embed=5bc9d5fc7798c" type="text/html"></iframe>

Texte seul - Permalink - Snippet public posté le 07/09/2021

[JS] Rafraichir la page lorsque la souris est en dehors de la fenêtre, stopper à son retour.

in_ms=3000 // 3 secondes
in_px=800 // 800 pixels depuis le haut.

body onload="pwnOUT()" onmouseenter="pwnIN()" onmouseleave="pwnOUT()"


<script>
let pwnREFRESH,in_ms=3000,in_px=800
function pwnIN(){window.clearTimeout(pwnREFRESH)}
function pwnOUT(){window.scrollTo(0,in_px);pwnREFRESH=window.setTimeout(reload,in_ms)}
function reload(){window.location.reload(true)}
</script>

html js

https://ponyhacks.com/?gHhofw

<iframe width="100%" height="416" src="https://snippet.echosystem.fr?embed=581351dc8a013" type="text/html"></iframe>

Texte seul - Permalink - Snippet public posté le 09/11/2021

adaptive screen idevice

<meta name="viewport" content="width=device-width, user-scalable=1">

html

<iframe width="100%" height="200" src="https://snippet.echosystem.fr?embed=5719d6de83386" type="text/html"></iframe>

Texte seul - Permalink - Snippet public posté le 22/04/2016

Adaptative all screen

<link rel="stylesheet" href="css/documenter_style.css" media="all">

html

<iframe width="100%" height="200" src="https://snippet.echosystem.fr?embed=559eb8a5572ff" type="text/html"></iframe>

Texte seul - Permalink - Snippet public posté le 09/07/2015

Youtube embed

<div class="youtube-container">
   <div class="youtube-player" data-id="VIDEOID"></div>
</div>

<script>
(function() {
    var v = document.getElementsByClassName("youtube-player");
    for (var n = 0; n < v.length; n++) {
        var p = document.createElement("div");
        p.innerHTML = labnolThumb(v[n].dataset.id);
        p.onclick = labnolIframe;
        v[n].appendChild(p);
    }
})();
 
function labnolThumb(id) {
    return '<img class="youtube-thumb" src="//i.ytimg.com/vi/' + id + '/hqdefault.jpg"><div class="play-button"></div>';
}
 
function labnolIframe() {
    var iframe = document.createElement("iframe");
    iframe.setAttribute("src", "//www.youtube.com/embed/" + this.parentNode.dataset.id + "?autoplay=1&autohide=2&border=0&wmode=opaque&enablejsapi=1&controls=0&showinfo=0");
    iframe.setAttribute("frameborder", "0");
    iframe.setAttribute("id", "youtube-iframe");
    this.parentNode.replaceChild(iframe, this);
}
</script>

<style>
.youtube-container { display: block; margin: 20px auto; width: 100%; max-width: 600px; }
.youtube-player { display: block; width: 100%; /* assuming that the video has a 16:9 ratio */ padding-bottom: 56.25%; overflow: hidden; position: relative; width: 100%; height: 100%; cursor: hand; cursor: pointer; display: block; }
img.youtube-thumb { bottom: 0; display: block; left: 0; margin: auto; max-width: 100%; width: 100%; position: absolute; right: 0; top: 0; height: auto }
div.play-button { height: 72px; width: 72px; left: 50%; top: 50%; margin-left: -36px; margin-top: -36px; position: absolute; background: url("http://i.imgur.com/TxzC70f.png") no-repeat; }
#youtube-iframe { width: 100%; height: 100%; position: absolute; top: 0; left: 0; }
</style>

youtube html

<iframe width="100%" height="812" src="https://snippet.echosystem.fr?embed=5523bc9d1a35c" type="text/html"></iframe>

Texte seul - Permalink - Snippet public posté le 07/04/2015

Hides iframe until fully loaded.

<iframe style="visibility:hidden;" onload="this.style.visibility = 'visible';" src="../examples/inlineframes1.html" > </iframe>

html

<iframe width="100%" height="200" src="https://snippet.echosystem.fr?embed=54b470b5a6535" type="text/html"></iframe>

Texte seul - Permalink - Snippet public posté le 13/01/2015

VPSinfo - stat

<?php
// vpsinfo by Douglas Robbins 
// Email: drobbins [at] labradordata.ca
// Website: http://www.labradordata.ca/vpsinfo/
$version = '2.3.3 (18 October 2008)';

// This script is intended as a general information/monitoring page for a Linux
// Virtuozza or OpenVZ VPS (Virtual Private Server). It also runs fine on a
// dedicated Linux machine. 

// Acknowledgements:
//
// 'vpsstat' output is based on a perl script by the same name developed by
// ServInt technical staff.
//
// This script may utilize third party software if installed:
// * MyTop by Jeremy D. Zawodny, GNU General Public License.
//   http://jeremy.zawodny.com/mysql/mytop/
// * mysqlreport by ?
//   http://hackmysql.com/mysqlreport
// * vnstat by Teemu Toivola, GNU General Public License.
//   http://humdi.net/vnstat/

// Thanks to the ServInt VPS forum members & staff for testing and suggestions.

// Terms & Conditions:
//
// * This script is an original work and is copyright Douglas T. Robbins;
// * This script is provided to you for use free of charge;
// * You are permitted to modify the script for your own use;
// * You may redistribute the script in its original form;
// * You may not modify the script and publicly redistribute it, unless you
//   make fundamental changes to the script to the extent that it may be
//   considered a new work. In that case you should give your script a new name
//   (i.e., do not use "vpsinfo" in the script name). An acknowledgement of the
//   original vpsinfo in your release would be appreciated.

// Liability:
//
// The author assumes no liability for damage or loss that might be associated 
// with the use of this script.


// == START CONFIGURATION =====================================================

// Mysql monitoring: 0 = none; 1 = mytop; 2 = mysqlreport
$mysql_mon = 0;

// Enable or disable vnstat. 0 = disable 1 = enable:
$vnstat = 0;

// MyTop/mysqlreport needs MySQL access to read the processlist.
// You may use any MySQL database.
// If you don't use MyTop or mysqlreport just ignore this.
$my_db     = "database_name";
$my_user = "database_user";
$my_pass = "database_password";

// The account home directory for this mysql user: 
$userhome = "/home/username";

// Processes to monitor. Include any process that should normally appear in the
// COMMAND column of the 'top' output. You can match a partial name, eg. 'ftpd'
// matches 'pure-ftpd' or 'proftpd'. Possible additions include: 'cppop', 
// 'cpsrvd', 'exim', 'named'. This is a space-delimited list:
$processes = "ftpd mysqld sshd";

// Width of the left column in page display. You can adjust this if the
// leftside boxes are too wide or too narrow:
$leftcol = 590;

// Difference in hours between your local time and server time:
$timeoffset = 0;

// Auto-refresh of the main page. 
// Set to 0 to disable, or specify a number of minutes:
$refresh = 3;

// Auto-refresh of command windows.
// Set to 0 to disable, or specify a number of minutes:
$top_refresh     = 5;
$vpsstat_refresh = 5;
$netstat_refresh = 5;
$mysql_refresh   = 5;
$vnstat_refresh  = 15;

// Bandwidth alert. When the daily data transfer is greater than this, it is 
// highlighted in red. In MB:
$bw_alert = 1000;

// Enable gzip compression for page output. 0 = disabled  1 = enabled 
$gzip = 0;

// == END CONFIGURATION =======================================================


$mtime = explode (" ", microtime());
$tstart = $mtime[0] + $mtime[1];

$scriptname = $_SERVER['SCRIPT_NAME'];
$timestamp = time() + ($timeoffset * 3600);
$localtime = date("g:i a, M j", $timestamp);
$shorttime = date("g:i a", $timestamp);

// Shell commands for main windows display ------------------------------------

$netstat_com = "netstat -nt";
$vnstat_com  = "vnstat";
$top_com     = "top -n 1 -b";
$pstree_com  = "env LANG=C pstree -c";
$df_com      = "df -h --exclude-type=tmpfs";
$tmp_com     = "ls -a --ignore=sess_* /tmp";

if ($mysql_mon == 1)
    $mysql_com   = "env HOME=$userhome env TERM=xterm mytop -u $my_user -p $my_pass -d $my_db -b --nocolor";
elseif ($mysql_mon == 2) {
    $mysql_com  = "./mysqlreport --user $my_user --password $my_pass --no-mycnf 2>&1";
    $mysql_com2 = "./mysqlreport --all --tab --user $my_user --password $my_pass --no-mycnf";

}
$allps_com   = "ps -e | awk '{ print $4;}' | uniq";

// GET and POST requests to this page -----------------------------------------

// 'Sample current traffic' (vnstat):

if ($_GET["traffic"]) {
    $io = trim(`vnstat -tr | grep --after-context=3 Traffic`);
    echo "<html>\n<body bgcolor='#000000' text='#CCCCCC' style='margin:10px 0 0 4px;padding:0'>\n<pre style='font-family:vt7X13,\"Courier New\";font-size:11px;line-height:14px'>$io</pre>\n</body>\n</html>";
    exit;
}

// 'Ports List':

if ($_GET["showports"]) {
    $porttext = "Port   What Is It?
----   -----------------------
  21   FTP server
  25   Exim - SMTP
  53   Bind nameserver
  80   Apache webserver
 110   POP mail server
 143   IMAP mail server
 443   Secure Apache webserver
 465   Secure SMTP
 993   Secure IMAP
2082   cPanel 
2083   Secure cPanel (https)
2086   WHM
2087   Secure WHM (https)
2095   Webmail
2096   Secure webmail (https)
3306   MySQL
8888   Secure shell - SSHD";
    echo "<html>\n<body bgcolor='#000000' text='#CCCCCC' style='margin:10px 0 0 30px;padding:0'>\n<pre style='font-family:vt7X13,\"Courier New\";font-size:11px;line-height:14px'>$porttext</pre>\n</body>\n</html>";
    exit;
}

// Show logged-in shell users:

if ($_GET["users"]) {
    $users = trim(`w`);
    echo "<html>\n<body bgcolor='#000000' text='#CCCCCC' style='margin:10px 0 0 6px;padding:0'>\n<pre style='font-family:vt7X13,\"Courier New\";font-size:11px;line-height:14px'>Logged-in Users\n---------------\n$users</pre>\n</body>\n</html>";
    exit;
}

// Whois lookup:

if ($_POST['whois']) {
    $whois = trim($_POST['whois']);
}
elseif ($_GET['whois']) {
    $whois = trim($_GET['whois']);
}
if ($whois) {
    $whois = preg_replace("/[^a-z0-9-.]/", "", $whois);
    $lookup = `whois $whois`;
    echo "<html>\n<body bgcolor='#000000' text='#CCCCCC' style='margin:10px 0 0 30px;padding:0'>\n<pre style='font-family:vt7X13,\"Courier New\";font-size:11px;line-height:14px'>$lookup</pre>\n</body>\n</html>";
    exit;
}

// ls -al /tmp:

if ($_GET['lsal']) {
    $lsout  = "Command: ls -al /tmp\n\n";
    $lsout .= `ls -al /tmp`;
    echo "<html>\n<body bgcolor='#000000' text='#CCCCCC' style='margin:10px 0 0 6px;padding:0'>\n<pre style='font-family:vt7X13,\"Courier New\";font-size:11px;line-height:14px'>$lsout</pre>\n</body>\n</html>";
    exit;
}

// ps -aux (and mem):

if ($_GET['psaux']) {
    $psout  = "Command: ps -aux\n\n";
    $psout .= `ps -aux`;
    $psout = str_replace("<","&lt;",$psout);
    echo "<html>\n<body bgcolor='#000000' text='#CCCCCC' style='margin:10px 0 0 6px;padding:0'>\n<pre style='font-family:vt7X13,\"Courier New\";font-size:11px;line-height:14px'>$psout</pre>\n</body>\n</html>";
    exit;
}

if ($_GET['psmem']) {
    $psout  = "Command: ps -auxh --sort=size | tac\n\n";
    $psout .= "USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND\n";
    $psout .= `ps -auxh --sort=size | tac`;
    $psout = str_replace("<","&lt;",$psout);
    echo "<html>\n<body bgcolor='#000000' text='#CCCCCC' style='margin:10px 0 0 6px;padding:0'>\n<pre style='font-family:vt7X13,\"Courier New\";font-size:11px;line-height:14px'>$psout</pre>\n</body>\n</html>";
    exit;
}

// Command windows:

if ($_GET['cmd']) {
    $cmd = $_GET['cmd'];
    if ($cmd == "top") {
        $out = trim(`top -n 1 -b`);
        $meta = "<meta http-equiv=\"refresh\" content=\"".($top_refresh*60)."\">";
    }
    elseif ($cmd == "vpsstat") {
        list($out,$opages,$ppages) = vpsstat();
        $meta = "<meta http-equiv=\"refresh\" content=\"".($vpsstat_refresh*60)."\">";
    }
    elseif ($cmd == "netstat") {
        $out = netstat($netstat_com);
        $meta = "<meta http-equiv=\"refresh\" content=\"".($netstat_refresh*60)."\">";
        $buttons = "<input type='button' value='Listening' onClick=\"window.location.replace('$scriptname?cmd=netstat2');\" class='button' title='show listening ports'>\n";
        $title = "netstat -nt (TCP connections)";
    }
    elseif ($cmd == "netstat2") {
        $out = trim(`netstat -ntl`);
        $meta = "<meta http-equiv=\"refresh\" content=\"".($netstat_refresh*60)."\">";
        $buttons = "<input type='button' value='Active' onClick=\"window.location.replace('$scriptname?cmd=netstat');\" class='button' title='show active connections'>\n";
        $title = "netstat -ntl (listening TCP ports)";
    }
    elseif ($cmd == "mytop") {
        $out = trim(`$mysql_com`);
        $meta = "<meta http-equiv=\"refresh\" content=\"".($mysql_refresh*60)."\">";
    }
    elseif ($cmd == "mysqlreport") {
        $out = trim(`$mysql_com2`);
        $out = str_replace('_','-',$out);
        $meta = "<meta http-equiv=\"refresh\" content=\"".($mysql_refresh*60)."\">";
    }
    elseif ($cmd == "vnstat") {
        $out = trim(`vnstat`);
        $meta = "<meta http-equiv=\"refresh\" content=\"".($vnstat_refresh*60)."\">";
    }
    elseif ($cmd == "vnstat2") {
        $out = trim(`vnstat -d`);
        $meta = "<meta http-equiv=\"refresh\" content=\"".($vnstat_refresh*60)."\">";
        $title = "vnstat -d";
    }
    elseif ($cmd == "vnstat3") {
        $out = trim(`vnstat -m`);
        $meta = "<meta http-equiv=\"refresh\" content=\"".($vnstat_refresh*60)."\">";
        $title = "vnstat -m";
    }
    elseif ($cmd == "vnstat4") {
        $out = trim(`vnstat -tr | grep --after-context=3 Traffic`);
        $meta = "";
        $title = "vnstat -tr";
    }
    
    $reload = "$scriptname?cmd=$cmd";
    if (stristr($cmd,"vnstat")) {
        $buttons = "<input type='button' value='Sample' onClick=\"window.location.replace('$scriptname?cmd=vnstat4');\" class='button' title='sample current traffic - 5 second delay'>
<input type='button' value='Today' onClick=\"window.location.replace('$scriptname?cmd=vnstat');\" class='button' title='today & yesterday'>
<input type='button' value='Days' onClick=\"window.location.replace('$scriptname?cmd=vnstat2');\" class='button' title='daily totals'>
<input type='button' value='Months' onClick=\"window.location.replace('$scriptname?cmd=vnstat3');\" class='button' title='monthly totals'>
<input type='button' value='Close' onClick='javascript:window.close();' class='button' title='close window'>";
    }
    else {
        $buttons .= "<input type='button' value='Reload' onClick='javascript:window.location.reload();' class='button' title='reload $cmd'> <input type='button' value='Close' onClick='javascript:window.close();' class='button' title='close window'>";
    }
    if (!$title) {
        $title = $cmd;
    }
    poppage($cmd,$out,$meta,$reload,$shorttime,$buttons,$title);
    exit;
}

// Run the commands now (except vnstat & mysql) -------------------------------

$top = trim(`$top_com`);
$hostname = trim(`hostname`);
$netstat = netstat($netstat_com);
$pstree = trim(`$pstree_com`);
$df_full = trim(`$df_com`);
$tmp_full = trim(`$tmp_com`);
$allps = trim(`$allps_com`);

// Clean up / prep output -----------------------------------------------------

$netstat = preg_replace("/ {1,99}\n/", "\n", $netstat);
$tmp_full = preg_replace("/ {1,99}/", "\n", $tmp_full);

// df - Disk Usage:

$lines = explode("\n", $df_full);
for ($i=0; $i<count($lines); $i++) {
    $line = preg_replace("/ {1,99}/", "|", $lines[$i]);
    $parts = explode("|",$line);
    if ($parts[0] !== $prev) {
        $mnt = $parts[5];
        $actual = " ($parts[2])";
        if (!stristr($line,"Filesystem")) {
            $per = substr($parts[4],0,-1);
            if ($per > 90) {
                $allfs .= "<span class='warn'>$mnt $parts[4]$actual</span>,&nbsp;";
            }
            else {
                $allfs .= "$mnt $parts[4]$actual,&nbsp;";
            }
        }
    }
    $prev = $parts[0];;
}
if (substr($allfs, -7) == ",&nbsp;") {
    $allfs = substr($allfs, 0, -7);
}

// Other summary stats:

$num_mysql = substr_count($pstree,'mysqld');
$num_httpd = substr_count($pstree,'httpd');
$num_tcp = substr_count($netstat,'tcp');

//Main page buttons:

// Box buttons to command windows:
$topcmdlink = "<a href='$scriptname?cmd=top' onClick=\"window.open('$scriptname?cmd=top', 'top', 'width=600, height=480, resizable'); return false\" title='open a top window' class='open'>&nbsp;+&nbsp;</a>";
$vpscmdlink = "<a href='$scriptname?cmd=vpsstat' onClick=\"window.open('$scriptname?cmd=vpsstat', 'vpsstat', 'width=540, height=180, resizable'); return false\" title='open a vpsstat window' class='open'>&nbsp;+&nbsp;</a>";
$netcmdlink = "<a href='$scriptname?cmd=netstat' onClick=\"window.open('$scriptname?cmd=netstat', 'netstat', 'width=600, height=480, resizable'); return false\" title='open a netstat window' class='open'>&nbsp;+&nbsp;</a>";

if ($mysql_mon == 1)
    $mycmdlink  = "<a href='$scriptname?cmd=mytop' onClick=\"window.open('$scriptname?cmd=mytop', 'mytop', 'width=600, height=345, resizable'); return false\" title='open a mytop window' class='open'>&nbsp;+&nbsp;</a>";
elseif ($mysql_mon == 2)
    $mycmdlink  = "<a href='$scriptname?cmd=mysqlreport' onClick=\"window.open('$scriptname?cmd=mysqlreport', 'mysqlreport', 'width=600, height=480, resizable'); return false\" title='open a mysqlreport window' class='open'>&nbsp;+&nbsp;</a>";
    
$vncmdlink  = "<a href='$scriptname?cmd=vnstat' onClick=\"window.open('$scriptname?cmd=vnstat', 'vnstat', 'width=525, height=345, resizable'); return false\" title='open a vnstat window' class='open'>&nbsp;+&nbsp;</a>";

// Button for 'ls -al /tmp':
$lsal = "<input type='button' value='ls -al /tmp' onClick=\"window.open('$scriptname?lsal=1', 'lsal', 'width=730, height=400, scrollbars, resizable'); return false\" title='show detailed list' class='button' style='width:75px'>\n";

// Button for 'ps -aux':
$psaux = "<input type='button' value='ps -aux' onClick=\"window.open('$scriptname?psaux=1', 'psaux', 'width=730, height=480, scrollbars, resizable'); return false\" title='show process list' class='button' style='width:85px;'>\n";

// Button for 'ps -aux --sort=size | tac' :)
$psmem = "<input type='button' value='ps -aux (mem)' onClick=\"window.open('$scriptname?psmem=1', 'psmem', 'width=730, height=480, scrollbars, resizable'); return false\" title='show process list, sorted by memory usage' class='button' style='width:85px;'>\n";

// Buttons for vnstat:
$vn_sampl = "<input type='button' value='Sample' onClick=\"window.open('$scriptname?cmd=vnstat4', 'vnstat', 'width=525, height=380, resizable'); return false\" class='button' title='sample current traffic - 5 second delay'>";
$vn_days  = "<input type='button' value='Days'   onClick=\"window.open('$scriptname?cmd=vnstat2', 'vnstat', 'width=525, height=380, resizable'); return false\" class='button' title='show daily totals'>";
$vn_mons  = "<input type='button' value='Months' onClick=\"window.open('$scriptname?cmd=vnstat3', 'vnstat', 'width=525, height=380, resizable'); return false\" class='button' title='show monthly totals'>";

// Buttons for netstat:
$netstat_ntl = "<input type='button' value='Listening' onClick=\"window.open('$scriptname?cmd=netstat2', 'netstat', 'width=600, height=480, resizable'); return false\" class='button' title='show listening ports'>";
$portslink   = "<input type='button' value='Port List' onClick=\"window.open('$scriptname?showports=1', 'portlist', 'width=300, height=330'); return false\" class='button' title='show explanatory list of ports'>";

// Button for mysqlreport:
$mysqlrep_det = "<input type='button' value='Full Report' onClick=\"window.open('$scriptname?cmd=mysqlreport', 'mysqlreport', 'width=600, height=480, resizable'); return false\" class='button' title='show detailed mysqlreport'>";

// Auto-refresh meta tag:

if ($refresh) {
    if ($refresh < 1) {
        $refresh = 1;
    }
    $refresh = ($refresh * 60);
    $meta_refresh = "<meta http-equiv=\"refresh\" content=\"$refresh\">\n";
}

// Load bar indicators:

$pattern = "/^.*\b(average)\b.*$/mi";
preg_match($pattern, $top, $hits);
$loadline = $hits[0];

$load_bits = explode("average:",$loadline);
$load_parts = explode(",",$load_bits[1]);
$load1 = trim($load_parts[0]);
$loadlabel1 = $load1;
$load5 = trim($load_parts[1]);
$loadlabel5 = $load5;
$load15 = trim($load_parts[2]);
$loadlabel15 = $load15;

if ($load1 > 10) {
    $load1 = 10;
}
if ($load5 > 10) {
    $load5 = 10;
}
if ($load15 > 10) {
    $load15 = 10;
}

if ($load1 > 1) {
    $load1_width = round(($load1 - 1) * 22.22);
    $bgcolor1 = "#82826E";
    $fgcolor1 = "#CC0000";
}
else {
    $load1_width = round($load1 * 200);
    $bgcolor1 = "#222222";
    $fgcolor1 = "#82826E";
}
if ($load5 > 1) {
    $load5_width = round(($load5 - 1) * 22.22);
    $bgcolor5 = "#82826E";
    $fgcolor5 = "#CC0000";
}
else {
    $load5_width = round($load5 * 200);
    $bgcolor5 = "#222222";
    $fgcolor5 = "#82826E";
}
if ($load15 > 1) {
    $load15_width = round(($load15 - 1) * 22.22);
    $bgcolor15 = "#82826E";
    $fgcolor15 = "#CC0000";
}
else {
    $load15_width = round($load15 * 200);
    $bgcolor15 = "#222222";
    $fgcolor15 = "#82826E";
}

// If users, hyperlink 'User(s)' in top display:

if (!stristr($top,"0 users,")) {
    $top = preg_replace("/(user|users),/", "<a href='$scriptname?users=1' onClick=\"window.open('$scriptname?users=1', 'users', 'width=625, height=300, scrollbars'); return false\" title='show users'>$1</a>,", $top);
}

// Mytop/mysqlreport and vnstat ------------------------------------------------
// Run or produce a useful message if not installed.

if ($mysql_mon == 1) {
    exec("which mytop",$output,$return);
    if ($return == 1) {
     $mysql = "\n\nMytop is not installed. See the <a href='http://jeremy.zawodny.com/mysql/mytop/'>mytop website</a> for information.\n\n";
     $mycmdlink = "";
     $mysql_head = "";
    }
    elseif ($return == 0) {
        $mysql = trim(`$mysql_com`);
        $pattern = "/^.*\bQueries\b.*$/mi";
        preg_match($pattern, $mysql, $hits);
        $queryline = trim($hits[0]);
        $my_parts = explode(" ",$queryline);
    }
    $mysql_div = "<div class='subleftcmd'>$mycmdlink</div><div class='subleft'>mytop</div><div class='left'><pre>$mysql</pre></div>\n";
}
elseif ($mysql_mon == 2) {
    if (file_exists('mysqlreport') && is_executable('mysqlreport')) {
        $mysql = trim(`$mysql_com`);
        if (stristr($mysql,'uptime')) {
            // Get total queries for topbar display
            $parts = explode("_\n",$mysql);
            $parts = explode("\n",$parts[2]);
            $qline = preg_replace("/ {1,99}/", "|", $parts[0]);
            $my_parts = explode('|',$qline);
            // The 'Full report' button
            $full_report = "\n<div class='toolbar'>$mysqlrep_det</div>";
            // Change underscores to dashes for readability
            $mysql = str_replace('_','-',$mysql);
        }
        elseif (stristr($mysql,'Access denied for user')) {
            $mysql = "\n\nThe mysqlreport script was denied access to mysql. Check that the mysql username
&amp; password (in the vpsinfo configuration) are valid.\n\n";
            $mycmdlink = '';
        }
        elseif (stristr($mysql,'bad interpreter')) {
            $mysql = "\n\nThe mysqlreport script encountered a problem -- the first line does not have the
correct path for perl on your system.\n\n";
            $mycmdlink = '';
        }
        else {
            $mysql = "\n\nAn unknown error occurred with the mysqlreport script.\n\n";
            $mycmdlink = '';
        }
    }
    elseif (file_exists('mysqlreport')) {
        $mysql = "\n\nThe mysqlreport script could not be executed. Check the file ownership &amp; permissions.\n\n";
        $mycmdlink = '';
    }
    else {
        $mysql = "\n\nThe mysqlreport script was not found.\n        
You need to get it from <a href='http://hackmysql.com/mysqlreport'>http://hackmysql.com/mysqlreport</a>, store it in the same
directory as vpsinfo, and set correct ownership &amp; permissions.\n\n";
        $mycmdlink = '';
    }
    $mysql_div = "<div class='subleftcmd'>$mycmdlink</div><div class='subleft'>mysqlreport</div>
    <div class='left'><pre>$mysql</pre></div>$full_report\n";
}
    
if ($my_parts) {
    if (is_numeric($my_parts[1])) {
        $mysql_queries = round($my_parts[1]);
        $mysql_units = "";
    }
    else {
        $mysql_units = strtoupper(substr($my_parts[1],-1));
        if ($mysql_units == "M") {
            $mysql_queries = round(substr($my_parts[1],0,-1),2);
        }
        if ($mysql_units == "K") {
            $mysql_queries = round(substr($my_parts[1],0,-1));
        }
    }
    $mysql_head = "<td valign='top' nowrap><div class='head_label' style='padding-right:5px' title='number of mysql queries'>mysql queries</div><div class='head_num2' style='padding-right:5px'>$mysql_queries<span class='head_units'> $mysql_units</span></div></td>";
}

if ($vnstat) {
    exec("which vnstat",$output,$return);
    if ($return == 1) {
     $vnstat = "\n\nVnstat is not installed. See the <a href='http://humdi.net/vnstat/'>vnstat website</a> for information.\n\n";
        $vncmdlink=''; $vn_sampl=''; $vn_days=''; $vn_mons='';
        $vnstat_div = "<div class='subleft'>vnstat</div><div class='left'><pre>$vnstat</pre></div>";
    }
    elseif ($return == 0) {
        $vnstat = trim(`$vnstat_com`);
        $pattern = "/^.*\btoday\b.*$/mi";
        preg_match_all($pattern, $vnstat, $hits);
        $todayline = $hits[0][0];
        $today = explode("|",$todayline);
        $today_mb = str_replace(" MB","",$today[2]);
        $today_mb = trim($today_mb);
        if (stristr($today_mb,",")) {
            $today_mb = str_replace(",","",$today_mb);
        }
        $today_mb = round($today_mb);
        if ($today_mb > 999) {
            $bw_today = round(($today_mb / 1024),1);
            $bw_units = "GB";
        }
        else {
            $bw_today = $today_mb;
            $bw_units = "MB";
        }
        if ($today_mb > $bw_alert) {
            $bw_today = "<span class='warn'>$bw_today</span>";
        }
        $vnstat_head = "<td valign='top' nowrap><div class='head_label' title='amount of data transferred today'>transfer today</div><div class='head_num'>$bw_today<span class='head_units'> $bw_units</span></div></td>
    ";
        $vnstat_div = "<div class='subleftcmd'>$vncmdlink</div><div class='subleft'>vnstat</div><div class='leftscroll'><pre>$vnstat</pre></div>
        <div class='toolbar'>$vn_sampl $vn_days $vn_mons</div>";
    }
}
// vpsstat-like processing of user_beancounters or RAM & swap -----------------

list($vpsstat,$mem1,$mem1_units,$mem1_label,$mem1_tip,$mem2,$mem2_units,$mem2_label,$mem2_tip) = vpsstat();
if ($vpsstat) {
    $vpsstat_div = "<div class='subleftcmd'>$vpscmdlink</div><div class='subleft'>vpsstat</div><div class='left'><pre>$vpsstat</pre></div>\n";
}

// Process/daemon monitor -----------------------------------------------------

$allprocs = explode(" ", $processes);
foreach ($allprocs as $proc) {
    $proc = trim($proc);
    if (stristr($allps,$proc)) {
        $tcpstatus .= "<span class='servup' title='$proc is up'>&nbsp;$proc&nbsp;</span>&nbsp;";
    }
    else {
        $tcpstatus .= "<span class='servdown' title='$proc is down!'>&nbsp;$proc&nbsp;</span>&nbsp;";    
    }
}

// FUNCTIONS ==================================================================

function netstat($netstat_com) {
    $out = trim(`$netstat_com`);
    $out = str_replace(" Address","_Address",$out);
    $lines = explode("\n",$out);
    for ($i=0; $i<count($lines); $i++) {
        if ($i > 0) {
            $line = preg_replace("/ {1,99}/", "|", $lines[$i]);
            $line = str_replace("::ffff:","",$line);
            $parts = explode("|",$line);
            $col_0 = str_pad($parts[0], 5, " ", STR_PAD_RIGHT);
            $col_1 = str_pad($parts[1], 6, " ", STR_PAD_LEFT);
            $col_2 = str_pad($parts[2], 6, " ", STR_PAD_LEFT);
            $col_3 = str_pad($parts[3], 23, " ", STR_PAD_RIGHT);
            if (stristr($parts[4],":")) {
                $col_4_parts = explode(":",$parts[4]);
                $ip_str = $col_4_parts[0];
            }
            $col_4 = str_pad($parts[4], 23, " ", STR_PAD_RIGHT);
            if ($ip_str) {
                $link = "<a href='$scriptname?whois=$ip_str' onClick=\"window.open('$scriptname?whois=$ip_str', 'netstat', 'width=650, height=350, resizable, scrollbars'); return false\" title='whois $ip_str'>$ip_str</a>";
                $col_4 = str_replace($ip_str,$link,$col_4);
            }
            $col_5 = $parts[5];
            $cols  = $col_0." ".$col_1." ".$col_2." ".$col_3." ".$col_4." ".$col_5;
        }
        else {
            $cols = $lines[$i];
        }
        $all .= "\n" . $cols;
    }
    $all = str_replace("_Address"," Address",$all);
    return $all;
}
function poppage($cmd,$out,$meta,$reload,$shorttime,$buttons,$title) {
    echo "
    <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
    <html>
    <head>
    <title>$cmd</title>
    $meta
    <style type='text/css'>
        html, body {
            width: 100%;
            height: 100%;
            overflow: hidden;
        }
        body {
            background-color: #000000;
            color: #CCCCCC;
            margin: 0;
            padding: 0;
        }
        #scroll {
            clear: both;
            overflow: auto;
            border: none;
            margin: 0;
            padding: 0;
            overflow-Y: auto;
            overflow-X: visible;
            scrollbar-face-color: #666666;
            scrollbar-track-color: #999999;
            scrollbar-3dlight-color: #999999;
            scrollbar-highlight-color: #666666;
        }
        pre {
            font-family: vt7X13,\"Courier New\",Courier,monospace;
            font-size: 11px;
            line-height: 14px;
            padding: 5px 5px 10px 6px;
            margin: 0;
        }
        div.title {
            float: left;
            font-family: Verdana,Arial,Helvetica,sans-serif;
            background-color: #333333;
            color: #DDDDDD;
            font-size: 13px;
            font-weight: bold;
            padding: 4px 0 2px 6px;
        }
        div.commands {
            font-family: Verdana,Arial,Helvetica,sans-serif;
            background-color: #333333;
            text-align: right;
            font-size: 13px;
            padding: 4px 10px 5px 0;
            border-bottom: 1px solid #666666;
        }
        .button {
            width: 60px;
            font-size: 11px;
            border: 1px solid #999999;
            background-color: #666666;
            color: #FFFFFF;
        }
        a:link, a:visited, a:active {
            color: #BBBB00;
            text-decoration: none;
        }
    </style>
    <script language='javascript'>
    function fullHgt() {
        if (document.getElementById('scroll')) {
            var hgt = document.body.clientHeight - 27;
            document.getElementById('scroll').style.height=hgt+'px';
        }
    }
    </script>

    </head>
    <body onLoad='fullHgt()' onResize='fullHgt()'>
    <div class='title'>$title @ $shorttime</div>
    <div class='commands'>$buttons </div>
    <div id='scroll'><pre>$out</pre></div>
    
    </body>\n</html>";
}

function vpsstat() {
    $rawbeans = `/bin/beanc 2> /dev/null`;
    if (!$rawbeans) {
        if (file_exists('/proc/user_beancounters')) {
            $rawbeans = `cat /proc/user_beancounters 2> /dev/null`;
        }
        else {
            $ded=TRUE;
        }
    }
    if ($rawbeans) {
        $lines = explode("\n", $rawbeans);
        for ($i=0; $i<count($lines); $i++) {
            if (preg_match("/oomg|privv|numpr|numt|numo|numfi/",$lines[$i])) {
                $line = preg_replace("/ {1,99}/", "|", $lines[$i]);
                $line_parts = explode("|",$line);
                if (stristr($lines[$i],"oomg") || stristr($lines[$i],"privv")) {
                    $cur = round($line_parts[2] / 256, 1) . " MB";
                    $rec = round($line_parts[3] / 256, 1) . " MB";
                    $bar = round($line_parts[4] / 256) . " MB";
                    if (stristr($lines[$i],"oomg")) {
                        $lim = "n/a";
                        $mem1 = round($cur);
                        if ($mem1 > $bar) {
                            $mem1 = "<span class='warn'>$mem1</span>";
                        }
                        $mem1_label = "oomguarpages";
                        $oomg_per = round($mem1 / $bar * 100);
                        $mem1_tip = "title='oomguarpages is guaranteed memory; you are using $oomg_per% of your quota'";
                        $mem1_units = "MB";
                    }
                    else {
                        $lim = round($line_parts[5] / 256) . " MB";
                        $mem2 = round($cur);
                        $mem2_label = "privvmpages";
                        $pmg_per = round($mem2 / $lim * 100);
                        $mem2_tip = "title='privvmpages is burstable memory; you are using $pmg_per% of your limit'";
                        $mem2_units = "MB";
                    }
                }
                else {
                    $cur = $line_parts[2];
                    $rec = $line_parts[3];
                    $bar = "n/a";
                    $lim = $line_parts[5];
                }
                $beans .= str_pad($line_parts[1],12) . str_pad($cur, 12, " ", STR_PAD_LEFT) .str_pad($rec, 12, " ", STR_PAD_LEFT) . str_pad($bar, 12, " ", STR_PAD_LEFT) . str_pad($lim, 12, " ", STR_PAD_LEFT) . str_pad($line_parts[6], 12, " ", STR_PAD_LEFT) . "\n";
            }
        }
        $parts = explode("\n",$beans);
        $vpsstat  = "Resource         Current  Recent Max     Barrier       Limit    Failures\n";
        $vpsstat .= "------------  ----------  ----------  ----------  ----------  ----------\n";
        $vpsstat .= "$parts[2]\n$parts[0]\n$parts[1]\n$parts[3]\n$parts[4]\n$parts[5]";
    }
    if (!$vpsstat && $ded==FALSE) {
        $vpsstat = "\n            
It seems you're running Virtuozzo 3 or OpenVZ. In order to read the VPS stats
(beancounters) you need a small 'helper' app. To install it do the following at
a shell prompt as root:

[root@vps] wget http://www.labradordata.ca/downloads/install_beanc.sh
[root@vps] sh install_beanc.sh\n\n";
    }
    elseif ($ded==TRUE) {
        $free = `free`;
        if ($free) {
            $pattern = "/^.*\bMem\b.*$/mi";
            preg_match($pattern, $free, $hits);
            $memline = $hits[0];
            $memline = preg_replace("/ {1,99}/", "|", $memline);
            $parts = explode("|",$memline);
            $kbytes = $parts[3];
            $mbytes = round($kbytes / 1024);
            if ($mbytes > 999) {
                $mem1 = round(($mbytes / 1024),1);
                $mem1_units = "GB";
            }
            else {
                $mem1 = $mbytes;
                $mem1_units = "MB";
            }
            $mem1_label = "free RAM";
            $mem1_tip = "title='amount of free memory'";
            $pattern = "/^.*\bSwap\b.*$/mi";
            preg_match($pattern, $free, $hits);
            $memline = $hits[0];
            $memline = preg_replace("/ {1,99}/", "|", $memline);
            $parts = explode("|",$memline);
            $kbytes = $parts[2];
            $mbytes = round($kbytes / 1024);
            if ($mbytes > 999) {
                $mem2 = round(($mbytes / 1024),1);
                $mem2_units = "GB";
            }
            else {
                $mem2 = $mbytes;
                $mem2_units = "MB";
            }
            $mem2_label = "swap used";
            $mem2_tip = "title='amount of swap space currently used'";
        }
    }
    return array($vpsstat,$mem1,$mem1_units,$mem1_label,$mem1_tip,$mem2,$mem2_units,$mem2_label,$mem2_tip);
}

$mtime = explode (" ", microtime());
$tend = $mtime[0] + $mtime[1];
$totaltime = round(($tend - $tstart),4);
$pagegen = "page generated in $totaltime sec.";

// MAIN PAGE OUTPUT ===========================================================

if ($gzip) {
    ini_set('zlib.output_compression_level', 1);
    ob_start("ob_gzhandler");
}
header("Cache-Control: no-cache, must-revalidate");
header('Pragma: no-cache');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<?=$meta_refresh?>
<style type ='text/css'>
BODY {
    font-family: Verdana,Arial,Helvetica,sans-serif;
    background-color: #31311B;
    color: #CCCCCC;
    margin: 5px 5px 30px 5px;
    padding: 0;
}

/* General layout ---------------------------- */

div.space {
    font-size: 1px;
    height: 3px;
}
td.head {
    border: 1px solid #666666;
    background-color: #000000;
}
td.tdleft {
}
td.tdright {
    padding-left: 5px;
}

/* Header section ---------------------------- */

div.hostname {
    font-size: 16px;
    font-weight: bold;
    color: #DDDDDD;
    padding: 2px 0 2px 5px;
}
div.date {
    font-size: 13px;
    font-weight: bold;
    color: #DDDDDD;
    padding: 0 0 2px 5px;
}
div.head_label {
    font-family: Tahoma,"MS Sans Serif",Arial,Helvetica,sans-serif;
    font-size: 11px;
    padding-left: 13px;
    text-align: right;
    cursor: help;
}
div.head_num {
    font-size: 22px;
    padding-left: 13px;
    padding-right: 1px;
    text-align: right;
}
div.head_num2 {
    font-size: 18px;
    padding-left: 13px;
    padding-right: 1px;
    text-align: right;
}
.head_units {
    font-family: Tahoma,"MS Sans Serif",Arial,Helvetica,sans-serif;
    font-size: 10px;
    vertical-align : super;
}
div.head_sum {
    font-family: Tahoma,"MS Sans Serif",Arial,Helvetica,sans-serif;
    font-size: 11px;
    padding: 1px 5px 2px 0;
    text-align: right;
}
/* Service monitoring in the header */
div.servstatus {
    font-family: Tahoma,"MS Sans Serif",Arial,Helvetica,sans-serif;
  font-size: 11px;
    background-color: #333333;
    padding: 2px 0 2px 2px;
}
span.servup {
    background-color: #004000;
    color: #CCCCCC;
    cursor: help;
}
span.servdown {
    background-color: #CC0000;
    color: #FFFFFF;
    cursor: help;
}
div.disk {
    font-family: Tahoma,"MS Sans Serif",Arial,Helvetica,sans-serif;
    font-size: 11px;
    text-align: right;
    background-color: #333333;
    padding: 2px 5px 2px 0;
}
.warn {
    background-color: #CC0000;
}
/* Load bars */
div.load_label {
    height: 12px;
    font-family: Tahoma,"MS Sans Serif",Arial,Helvetica,sans-serif;
    font-size: 11px;
    color: #CCCCCC;
    line-height: 11px;
    text-align: right;
    cursor: help;
}
div.load_bg {
    font-size: 2px;
    height: 10px;
    width: 200px;
    cursor: help;
}
div.load_fg {
    height: 10px;
}

/* Box layouts ------------------------------- */

div.subleft,div.subright {
    font-size: 13px;
    font-weight: bold;
    background-color: #333333;
    color: #DDDDDD;
}
div.subleft {
    width: auto;
    border: 1px solid #666666;
    border-bottom: none;
    margin-top: 5px;
    padding: 0 0 3px 6px;
}
div.subright {
    width: auto;
    border: 1px solid #666666;
    border-bottom: none;
    margin-top: 5px;
    padding: 0 0 3px 6px;
}
div.left {
    clear: right;
    margin: 0;
    background-color: #000000;
    border: 1px solid #666666;
    border-top: none;
}
div.leftscroll {
    clear: right;
    height: 230px;
    overflow: auto;
    margin-right: -1px;
    background-color: #000000;
    border: 1px solid #666666;
    border-bottom: 1px solid #444444;
    border-top: none;
    /* IE-specific hacks */
    overflow-Y: auto;
    overflow-X: visible;
    scrollbar-face-color: #666666;
    scrollbar-track-color: #999999;
    scrollbar-3dlight-color: #999999;
    scrollbar-highlight-color: #666666;
}
div.right,div.toolbar,div.toolbar_left {
    width: auto;
    background-color: #000000;
    border: 1px solid #666666;
    border-top: none;
}
div.toolbar {
    border-top: none;
    padding: 3px 5px 4px 0;
    text-align: right;
}
div.toolbar_left {
    border-top: none;
    padding: 3px 0 4px 5px;
    text-align: left;
}
    
/* Box buttons to command windows */

div.subleftcmd {
    text-align: right;
    font-size: 10px;
    line-height: 14px;
    float: right;
    margin-top: 5px;
    margin-right: 0px;
    padding-bottom: 1px;
    border: 1px solid #777777;
    border-top: none;
    border-right: none;
    background-color: #666666;
}
/* Box button links: "+" */

a:link.open, a:visited.open,a:active.open {
    color: #EEEEEE;
}

/* Whois lookup */

.whois_title {
    font-size: 13px;
    font-weight: bold;
    color: #BBBBBB;
}
form.whois {
    margin: 0;
    padding: 0;
}
input.whois_input {
    width: 150px;
    font-family: vt7X13,"Courier New",Courier,monospace;
    font-size: 11px;
    line-height: 13px;
    border: 1px solid #999999;
    background-color: #CCCCCC;
}
input.button {
    width: 65px;
    font-family: Tahoma,"MS Sans Serif",Arial,Helvetica,sans-serif;
    font-size: 11px;
    border: 1px solid #999999;
    background-color: #666666;
    color: #FFFFFF;
    cursor: pointer;
}

/* Content formatting ------------------------ */

pre {
    font-family: vt7X13,"Courier New",Courier,monospace;
    font-size: 11px;
    line-height: 14px;
    padding: 5px 5px 10px 6px;
    margin: 0;
}
a:link, a:visited, a:active {
    color: #BBBB00;
    text-decoration: none;
}
div.note {
    font-size: 11px;
    font-style: italic;
    padding: 5px 0 0 5px;
}
div.sig {
    font-size: 11px;
    color: #999999;
    padding: 25px 0 0 0;
    text-align: center;
}
</style>
<title><?=$hostname?> : vpsinfo</title>
</head>

<body>

<table width='100%' cellspacing=0 cellpadding=0 border=0>

<tr>
<td class='head'>

<table width='100%' cellspacing=0 cellpadding=0 border=0>
<tr>
<td><div class='servstatus'><?=$tcpstatus?></div></td>
<td align='right'><div class='disk'>Disk Usage: <?=$allfs?></div></td>
</tr>
</table>

<table width='100%' cellspacing=0 cellpadding=0 border=0>
<tr>
<td valign='top' nowrap><div class='hostname'><?=$hostname?></div><div class='date'><?=$localtime?></div></td>
<td><div style='padding-left:20px'>
    <table cellspacing=0 cellpadding=0 border=0>
    <tr>
    <td nowrap><div class='load_label' title='load average during last 1 minute'><?=$loadlabel1?>&nbsp;</div></td>
    <td>
    <div class='load_bg' style='background-color: <?=$bgcolor1?>' title='load average during last 1 minute'>
    <div class='load_fg' style='width: <?=$load1_width?>px; background-color: <?=$fgcolor1?>'>&nbsp;</div>
    </div>
    </td>
    </tr>
    <tr>
    <td nowrap><div class='load_label' title='load average during last 5 minutes'><?=$loadlabel5?>&nbsp;</div></td>
    <td>
    <div class='load_bg' style='background-color: <?=$bgcolor5?>' title='load average during last 5 minutes'>
    <div class='load_fg' style='width: <?=$load5_width?>px; background-color: <?=$fgcolor5?>'>&nbsp;</div>
    </div>
    </td>
    </tr>
    <tr>
    <td nowrap><div class='load_label' title='load average during last 15 minutes'><?=$loadlabel15?>&nbsp;</div></td>
    <td>
    <div class='load_bg' style='background-color: <?=$bgcolor15?>' title='load average during last 15 minutes'>
    <div class='load_fg' style='width: <?=$load15_width?>px; background-color: <?=$fgcolor15?>'>&nbsp;</div>
    </div>
    </td>
    </tr>
    </table>
</div></td>
<td valign='top' nowrap><div class='head_label' <?=$mem1_tip?>><?=$mem1_label?></div><div class='head_num'><?=$mem1?><span class='head_units'> <?=$mem1_units?></span></div></td>
<td valign='top' nowrap><div class='head_label' <?=$mem2_tip?>><?=$mem2_label?></div><div class='head_num'><?=$mem2?><span class='head_units'> <?=$mem2_units?></span></div></td>
<?=$vnstat_head?>
<td valign='top' nowrap><div class='head_label' title='number of current TCP connections'>tcp conn</div><div class='head_num2'><?=$num_tcp?></div></td>
<td valign='top' nowrap><div class='head_label' title='number of apache processes and threads'>apache thds</div><div class='head_num2'><?=$num_httpd?></div></td>
<td valign='top' nowrap><div class='head_label' title='number of mysql processes and threads'>mysql thds</div><div class='head_num2'><?=$num_mysql?></div></td>
<?=$mysql_head?>
<td width='25%'><div class='space'>&nbsp;</div></td>
</tr>
</table>

</td>
</tr>
</table>

<table width='100%' cellspacing=0 cellpadding=0 border=0 style='margin-top: -3px'>
<tr>
<td><div class='space' style='width:<?=$leftcol?>px'>&nbsp;</div></td>
<td width='50%'><div class='space'></td>
</tr>
<tr>
<td valign='top' class='tdleft'><div class='subleftcmd'><?=$topcmdlink?></div><div class='subleft'> top</div><div class='leftscroll'><pre><?=$top?></pre></div>
<div class='toolbar'><?=$psaux?> <?=$psmem?></div>

<?=$vpsstat_div?>
<div class='subleftcmd'><?=$netcmdlink?></div><div class='subleft'><?=$netstat_com?></div><div class='leftscroll'><pre><?=$netstat?></pre></div>
<div class='toolbar_left'><table width='100%' cellspacing=0 cellpadding=0 border=0><tr><td><form method='post' action='<?=$scriptname?>' class='whois' name='whois_form'><span class='whois_title'>Whois: </span><input type='text' name='whois' class='whois_input' title='enter an IP address or domain'> <input type='submit' value='Lookup' class='button' title='do the lookup' onClick="javascript: if (whois_form.whois.value=='') { alert('Please enter an IP address or domain');return false; }"> <input type='reset' name='clear' value='Clear' class='button' title='clear the entry'></form></td><td align='right' style='padding-right:5px'><?=$netstat_ntl?> <?=$portslink?></td></tr></table></div>
<?=$vnstat_div?>
<?=$mysql_div?></td>
<td valign='top' class='tdright'><div class='subright'>pstree</div><div class='right'><pre><?=$pstree?></pre></div>
<div class='subright'>ls -a /tmp</div><div class='right' style='border-bottom:1px solid #444444'><div class='note'>Ignoring PHP session files (sess_*)</div><pre><?=$tmp_full?></pre></div>
<div class='toolbar_left'><?=$lsal?></div></td>
</tr>

</table>

<div class='sig'><a href='http://www.labradordata.ca/vpsinfo/'>vpsinfo</a> <?=$version?> by Douglas Robbins<br><?=$pagegen?><br>comments &amp; suggestions always welcome: <a href='http://www.labradordata.ca/home/email=4'>email</a></div>

</body>
</html>

html

<iframe width="100%" height="20972" src="https://snippet.echosystem.fr?embed=52f14ec7b0ddf" type="text/html"></iframe>

Texte seul - Permalink - Snippet public posté le 04/02/2014

Specify Referring Page

<SCRIPT LANGUAGE="JavaScript">
var allowedreferrer = "http://www.yoursite.com/referringpagename.htm"; 
if (document.referrer.indexOf(allowedreferrer) == -1) {
alert("You can only access this page from " + allowedreferrer);
window.location=allowedreferrer;
}
</script>

html

<iframe width="100%" height="308" src="https://snippet.echosystem.fr?embed=52ef6e19897d4" type="text/html"></iframe>

Texte seul - Permalink - Snippet public posté le 03/02/2014

[HTML] ADD to Favorites

<a href="javascript:window.external.AddFavorite('http://www.yoursite.com', 'Your Site Name')">Add to Favorites</a>

html php

<iframe width="100%" height="200" src="https://snippet.echosystem.fr?embed=52ef6da259291" type="text/html"></iframe>

Texte seul - Permalink - Snippet public posté le 07/09/2021

[JS] Calendar

Calendar
This is a plain and simple monthly calendar. It's formatted with styles sheets so the appearance can easily be changed. In the head of your document, add the following style sheet and JavaScript code:

<style type="text/css">
span.label {color:black;width:30;height:16;text-align:center;margin-top:0;background:#ffF;font:bold 13px Arial}
span.c1 {cursor:hand;color:black;width:30;height:16;text-align:center;margin-top:0;background:#ffF;font:bold 13px Arial}
span.c2 {cursor:hand;color:red;width:30;height:16;text-align:center;margin-top:0;background:#ffF;font:bold 13px Arial}
span.c3 {cursor:hand;color:#b0b0b0;width:30;height:16;text-align:center;margin-top:0;background:#ffF;font:bold 12px Arial}
</style>
<script type="text/javascript">
function maxDays(mm, yyyy){
var mDay;
    if((mm == 3) || (mm == 5) || (mm == 8) || (mm == 10)){
        mDay = 30;
      }
      else{
          mDay = 31
          if(mm == 1){
               if (yyyy/4 - parseInt(yyyy/4) != 0){
                   mDay = 28
               }
               else{
                   mDay = 29
              }
        }
  }
return mDay;
}
function changeBg(id){
    if (eval(id).style.backgroundColor != "yellow"){
        eval(id).style.backgroundColor = "yellow"
    }
    else{
        eval(id).style.backgroundColor = "#ffffff"
    }
}
function writeCalendar(){
var now = new Date
var dd = now.getDate()
var mm = now.getMonth()
var dow = now.getDay()
var yyyy = now.getFullYear()
var arrM = new Array("January","February","March","April","May","June","July","August","September","October","November","December")
var arrY = new Array()
    for (ii=0;ii<=4;ii++){
        arrY[ii] = yyyy - 2 + ii
    }
var arrD = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat")

var text = ""
text = "<form name=calForm>"
text += "<table border=1>"
text += "<tr><td>"
text += "<table width=100%><tr>"
text += "<td align=left>"
text += "<select name=selMonth onChange='changeCal()'>"
    for (ii=0;ii<=11;ii++){
        if (ii==mm){
            text += "<option value= " + ii + " Selected>" + arrM[ii] + "</option>"
        }
        else{
            text += "<option value= " + ii + ">" + arrM[ii] + "</option>"
        }
    }
text += "</select>"
text += "</td>"
text += "<td align=right>"
text += "<select name=selYear onChange='changeCal()'>"
    for (ii=0;ii<=4;ii++){
        if (ii==2){
            text += "<option value= " + arrY[ii] + " Selected>" + arrY[ii] + "</option>"
        }
        else{
            text += "<option value= " + arrY[ii] + ">" + arrY[ii] + "</option>"
        }
    }
text += "</select>"
text += "</td>"
text += "</tr></table>"
text += "</td></tr>"
text += "<tr><td>"
text += "<table border=1>"
text += "<tr>"
    for (ii=0;ii<=6;ii++){
        text += "<td align=center><span class=label>" + arrD[ii] + "</span></td>"
    }
text += "</tr>"
aa = 0
    for (kk=0;kk<=5;kk++){
        text += "<tr>"
        for (ii=0;ii<=6;ii++){
            text += "<td align=center><span id=sp" + aa + " onClick='changeBg(this.id)'>1</span></td>"
            aa += 1
        }
        text += "</tr>"
    }
text += "</table>"
text += "</td></tr>"
text += "</table>"
text += "</form>"
document.write(text)
changeCal()
}
function changeCal(){
var now = new Date
var dd = now.getDate()
var mm = now.getMonth()
var dow = now.getDay()
var yyyy = now.getFullYear()
var currM = parseInt(document.calForm.selMonth.value)
var prevM
    if (currM!=0){
        prevM = currM - 1
    }
    else{
        prevM = 11
    }
var currY = parseInt(document.calForm.selYear.value)
var mmyyyy = new Date()
mmyyyy.setFullYear(currY)
mmyyyy.setMonth(currM)
mmyyyy.setDate(1)
var day1 = mmyyyy.getDay()
    if (day1 == 0){
        day1 = 7
    }
var arrN = new Array(41)
var aa
    for (ii=0;ii<day1;ii++){
        arrN[ii] = maxDays((prevM),currY) - day1 + ii + 1
    }
    aa = 1
    for (ii=day1;ii<=day1+maxDays(currM,currY)-1;ii++){
        arrN[ii] = aa
        aa += 1
    }
    aa = 1
    for (ii=day1+maxDays(currM,currY);ii<=41;ii++){
        arrN[ii] = aa
        aa += 1
    }
    for (ii=0;ii<=41;ii++){
        eval("sp"+ii).style.backgroundColor = "#FFFFFF"
    }
var dCount = 0
    for (ii=0;ii<=41;ii++){
        if (((ii<7)&&(arrN[ii]>20))||((ii>27)&&(arrN[ii]<20))){
            eval("sp"+ii).innerHTML = arrN[ii]
            eval("sp"+ii).className = "c3"
        }
        else{
            eval("sp"+ii).innerHTML = arrN[ii]
            if ((dCount==0)||(dCount==6)){
                eval("sp"+ii).className = "c2"
            }
            else{
                eval("sp"+ii).className = "c1"
            }
            if ((arrN[ii]==dd)&&(mm==currM)&&(yyyy==currY)){
                eval("sp"+ii).style.backgroundColor="#90EE90"
            }
        }
    dCount += 1
        if (dCount>6){
            dCount=0
        }
    }
}
</script>

Then, in the body of your document, add the following where you want the calendar to show up:

<script type="text/javascript">writeCalendar()</script>

html ip js

<iframe width="100%" height="3314" src="https://snippet.echosystem.fr?embed=52ef6d41f205f" type="text/html"></iframe>

Texte seul - Permalink - Snippet public posté le 02/11/2021

Flux RSS de cette page


Echo Snippet 1.84 par Bronco - Page générée en 0.005 s