Mon, 08 Apr 2024 11:23:45 +0200
Upgraded MIGRATION document.
<?php /***************************************************************************** * Copyright (C) 2014-2015 * * Michiel Broek <mbroek at mbse dot eu> * * This file is part of ThermFerm * * This 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, or (at your option) any * later version. * * ThermFerm 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 ThermFerm; see the file COPYING. If not, write to the Free * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *****************************************************************************/ $my_style = 'ui-redmond'; function open_socket() { $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if (!($sock === false)) { if (socket_connect($sock, "localhost", 6554)) { socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 15, 'usec' => 0)); } else { socket_close($sock); } } return $sock; } /* * @param string $command to send to the server. * Return: string with the complete reply from the * server. This can be a multiline reply. */ function send_cmd($command) { $sock = open_socket(); if ($sock == false) { return ""; } socket_write($sock, $command . "\r\n", 4096); $answer = ""; while (1) { $line = socket_read($sock, 4096); if ($line === '') break; $answer .= $line; } socket_close($sock); return $answer; } /* * @param string array of $commands to send to the server. * Return: string with the complete reply from the * server. This can be a multiline reply. */ function send_array($command) { $sock = open_socket(); if ($sock == false) { return ""; } foreach($command as $cmd) { socket_write($sock, $cmd . "\r\n", 4096); } $answer = ""; while (1) { $line = socket_read($sock, 4096); if ($line === '') break; $answer .= $line; } socket_close($sock); return $answer; } /* * @param string $command to send to the server. * Return: 0 = Ok. * 1 = Server responden with an error. */ function send_cmd_check($command) { $answer = send_cmd($command); if (strlen($answer) && (($answer[0] == '1') || ($answer[0] == '2'))) return 0; return 1; } /* * @param array $command to send to the server. * Return: 0 = Ok. * 1 = Server responden with an error. */ function send_array_check($command) { $answer = send_array($command); if (strlen($answer) && (($answer[0] == '1') || ($answer[0] == '2'))) return 0; return 1; } function startsWith($haystack, $needle) { return !strncmp($haystack, $needle, strlen($needle)); } function build_header($heading) { global $my_style; $answer = send_cmd('GLOBAL GET'); $arr = explode("\r\n", $answer); $version = "?"; if (startsWith($arr[0], "213")) { $j = 1; while (1) { if (strcmp($arr[$j], ".") == 0) break; $f = explode(",", $arr[$j]); if ($f[0] == "RELEASE") $version = $f[1]; $j++; } } $outstr = '<!DOCTYPE html>'.PHP_EOL; $outstr .= '<html>'.PHP_EOL; $outstr .= ' <head>'.PHP_EOL; $outstr .= ' <meta http-equiv="content-type" content="text/html; charset=utf-8" />'.PHP_EOL; $outstr .= ' <title>'.$heading.'</title>'.PHP_EOL; $outstr .= ' <link type="text/css" href="css/style.css" rel="stylesheet" media="all" />'.PHP_EOL; $outstr .= ' <link type="text/css" href="jqwidgets/styles/jqx.base.css" rel="stylesheet" />'.PHP_EOL; $outstr .= ' <link type="text/css" href="jqwidgets/styles/jqx.'.$my_style.'.css" rel="stylesheet" />'.PHP_EOL; $outstr .= ' <script type="text/javascript" src="js/jquery-2.1.1.min.js"></script>'.PHP_EOL; $outstr .= ' <script type="text/javascript" src="jqwidgets/jqxcore.js"></script>'.PHP_EOL; $outstr .= ' <script type="text/javascript" src="jqwidgets/jqxwindow.js"></script>'.PHP_EOL; $outstr .= ' <script type="text/javascript" src="jqwidgets/jqxbuttons.js"></script>'.PHP_EOL; $outstr .= ' </head>'.PHP_EOL; $outstr .= ' <body class="default">'.PHP_EOL; $outstr .= ' <div id="jqxWidget">'.PHP_EOL; $outstr .= ' <div id="header">'.PHP_EOL; $outstr .= ' <div id="title">'.PHP_EOL; $outstr .= ' ThermFerm '.$version.PHP_EOL; $outstr .= ' </div>'.PHP_EOL; $outstr .= ' <form action="maintenance.php" style="margin:30px; float:right">'.PHP_EOL; $outstr .= ' <input type="submit" id="maintenance" value="Maintenance panel" />'.PHP_EOL; $outstr .= ' </form>'.PHP_EOL; $outstr .= ' </div> <!-- header -->'.PHP_EOL; $outstr .= ' <div id="content">'.PHP_EOL; return $outstr; } function build_footer() { $outstr = ' </div> <!-- content -->'.PHP_EOL; $outstr .= ' </div> <!-- jqxWidget -->'.PHP_EOL; $outstr .= ' </body>'.PHP_EOL; $outstr .= '</html>'.PHP_EOL; return $outstr; } /* * Goto URL. Works also after headers have been sent. */ function load($url) { echo' <script> if (top.location != self.location) { top.location = "'.$url.'" } {location.href="'.$url.'";} </script>'; }