From d314cf842ede930365e712819e8b93fcdb51b587 Mon Sep 17 00:00:00 2001 From: Lucio Zambon <lucio.zambon@elettra.eu> Date: Thu, 18 Jul 2024 00:23:43 +0000 Subject: [PATCH] Update talk.php --- speech/talk.php | 78 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 59 insertions(+), 19 deletions(-) diff --git a/speech/talk.php b/speech/talk.php index 1bd2af2..716b433 100644 --- a/speech/talk.php +++ b/speech/talk.php @@ -7,38 +7,42 @@ CREATE TABLE IF NOT EXISTS speech ( host VARCHAR(50), t TIMESTAMP DEFAULT now() )"; +CREATE TABLE IF NOT EXISTS ujive ( + token VARCHAR(20) PRIMARY KEY, + msg VARCHAR(255), + host VARCHAR(50), + t TIMESTAMP DEFAULT now() + )"; */ - function speechRead($token) { + function dbRead($table, $token) { global $sql; - $query = "SELECT msg FROM speech WHERE token=$1"; + $query = "SELECT msg FROM $table WHERE token=$1"; $data = $sql->sql_secure($query, array($token)); $err = $sql->sql_error(); return (!empty($err))? $err: $data[0]['msg']; } - function speechUpsert($token, $msg) { + function dbUpsert($table, $token, $msg) { global $sql; - $query = "DELETE FROM speech WHERE EXTRACT(EPOCH FROM NOW()-t) > 36000"; + $query = "DELETE FROM $table WHERE EXTRACT(EPOCH FROM NOW()-t) > 36000"; $sql->sql_query($query); - $query = "INSERT INTO speech (token, msg, host) VALUES ($1, $2, '".($_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_X_FORWARDED_FOR'])."') ON CONFLICT (token) DO UPDATE SET msg=$3"; + $query = "INSERT INTO $table (token, msg, host) VALUES ($1, $2, '".($_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_X_FORWARDED_FOR'])."') ON CONFLICT (token) DO UPDATE SET msg=$3"; $data = $sql->sql_secure($query, array($token, $msg, $msg)); $err = $sql->sql_error(); if (!empty($err)) echo $err; } $sql = open_db(); - // if (!empty($_REQUEST['testupsert'])) {speechUpsert($_REQUEST['upsert'], $_REQUEST['msg']);exit();} - // if (!empty($_REQUEST['testsread'])) {die(speechRead($_REQUEST['sread']));} $local = isset($_REQUEST['cdn'])? false: true; // true = use only locally installed modules, false = use cdn $lang = empty($_REQUEST['lang'])? 'it': substr($_REQUEST['lang'], 0, 2); $host = isset($hs[$_SERVER['REMOTE_ADDR']])? $hs[$_SERVER['REMOTE_ADDR']]: $_SERVER['REMOTE_ADDR']; - function mylog() { - file_put_contents('./logs'.date('Y').'.txt', date('Y-m-d H:i:s').' '.$_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_X_FORWARDED_FOR'].' - '.$_SERVER['QUERY_STRING'].PHP_EOL , FILE_APPEND | LOCK_EX); + function mylog($a = '') { + file_put_contents('./logs'.date('Y').'.txt', date('Y-m-d H:i:s').' '.$_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_X_FORWARDED_FOR'].' - '.$_SERVER['QUERY_STRING'].$a.PHP_EOL , FILE_APPEND | LOCK_EX); } /*if (!empty($_REQUEST['init'])) { $t = $_REQUEST['init']-0; if ($t==0 || $t>1000000000000) die(''); file_put_contents("./token", $t); }*/ - if (!empty($_REQUEST['search']) || !empty($_REQUEST['open'])) mylog(); + if (!empty($_REQUEST['open'])) mylog(); if (!empty($_REQUEST['list'])) { /*$t = file_get_contents("./token"); if ($t != $_REQUEST['token']-0) die('[]'); @@ -102,16 +106,50 @@ CREATE TABLE IF NOT EXISTS speech ( header('Content-Type: application/json'); die(json_encode($data)); } + if (!empty($_REQUEST['ctree'])) { + dbUpsert('ujive', $_REQUEST['token'], $_REQUEST['ctree']); + /* do NOT wait for a response + for ($i=0; $i<50; $i++) { + $f = dbRead('ujive', $_REQUEST['token']); + if (!empty($f) && $f != $_REQUEST['ctree']) { + dbUpsert('ujive', $_REQUEST['token'], ''); + mylog(', R: '.$f); + die($f); + } + usleep(100000); + } + dbUpsert('ujive', $_REQUEST['token'], ''); + mylog(", R: timeout"); + die("{$_REQUEST['ctree']} not found, timeout"); + */ + die('OK'); + } + if (!empty($_REQUEST['ujive'])) { + set_time_limit(0); + while (true) { + $f = dbRead('ujive', $_REQUEST['token']); + if (!empty($f)) { + dbUpsert('ujive', $_REQUEST['token'], ''); + die($f); + } + usleep(100000); + } + } if (!empty($_REQUEST['search'])) { if (!empty($_REQUEST['speech'])) { $speech = explode('_', strtr(strtoupper($_REQUEST['speech']), [' '=>'_', '.'=>'_', '-'=>'_'])); $sr = explode('_', $_REQUEST['search']); foreach ($speech as $i=>$s) { - if ($s != $sr[$i]) { + $locale = json_decode(file_get_contents('./talk_locale.json'), true); + $sk = $locale[$lang=='it'? "it-IT": "en-US"]["search"]; + if ($s != $sr[$i] && strlen($s)>1 && !is_numeric($s) && !in_array(strtolower($s), $sk)) { + if (substr($sr[$i], -2, 1)=='0' && is_numeric(substr($sr[$i], -1, 1))) $sr[$i] = substr($sr[$i], 0, -2); $query = "INSERT INTO speechreplace (speech, replace, lang) VALUES ($1, $2, $3)"; + if (isset($_REQUEST['debug'])) echo "$query, array($s, $sr[$i], $lang)<br>\n"; $data = $sql->sql_secure($query, array($s, $sr[$i], $lang)); } } + // if (isset($_REQUEST['debug'])) die('done'); } $query = "SELECT speech, replace FROM speechreplace WHERE lang=$1"; $data = $sql->sql_secure($query, array($lang)); @@ -121,28 +159,30 @@ CREATE TABLE IF NOT EXISTS speech ( } $search = strtr($_REQUEST['search'], $replace); if (!empty($search)) { - speechUpsert($_REQUEST['token'], $search); + dbUpsert('speech', $_REQUEST['token'], $search); for ($i=0; $i<50; $i++) { - $f = speechRead($_REQUEST['token']); + $f = dbRead('speech', $_REQUEST['token']); if (!empty($f) && $f != $search) { - speechUpsert($_REQUEST['token'], ''); + dbUpsert('speech', $_REQUEST['token'], ''); + mylog(', R: '.$f); die($f); } usleep(100000); } - speechUpsert($_REQUEST['token'], ''); + dbUpsert('speech', $_REQUEST['token'], ''); + mylog(", R: timeout"); die("$search not found, timeout"); } } if (isset($_REQUEST['readresult'])) { - speechUpsert($_REQUEST['token'], substr($_REQUEST['readresult'], 0, 15)); + dbUpsert('speech', $_REQUEST['token'], substr($_REQUEST['readresult'], 0, 15)); } if (isset($_REQUEST['read'])) { set_time_limit(0); while (true) { - $f = speechRead($_REQUEST['token']); + $f = dbRead('speech', $_REQUEST['token']); if (!empty($f)) { - speechUpsert($_REQUEST['token'], ''); + dbUpsert('speech', $_REQUEST['token'], ''); die($f); } usleep(100000); @@ -246,7 +286,7 @@ CREATE TABLE IF NOT EXISTS speech ( <script src="../../lib/bootstrap4/bootstrap.bundle.min.js"></script> <script src="./talk.js"></script> </head> - <body onLoad='myload()'> + <body onLoad='myload()' style="background-color: rgb(0, 0, 0, 0);"> <div id='transcriptDiv' style='display:none;'></div> <div style="max-width: 280px; max-height: 30px; text-align: center;"> <audio id='speechText' onended='speakagain();' onerror='showLog("audio err: "+event.error)'></audio> -- GitLab