X-Git-Url: https://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2FObj%2Fbrisk.phh;h=9c20af1f3a87874f0cac641953ab63846e08510c;hb=refs%2Fheads%2Ffdpass2-pool;hp=efb360ef12244c407ba864d18ffc202e254bc5db;hpb=ab8d1f71caed7bf1a7f02660fb12b28177811ad7;p=brisk.git
diff --git a/web/Obj/brisk.phh b/web/Obj/brisk.phh
index efb360e..9c20af1 100644
--- a/web/Obj/brisk.phh
+++ b/web/Obj/brisk.phh
@@ -28,6 +28,7 @@ define('FTOK_PATH', "/var/lib/brisk");
define('LEGAL_PATH', "/tmp/legal_brisk");
define('PROXY_PATH', "/var/lib/brisk_proxy");
define('TABLES_N', 36);
+define('TABLES_APPR_N', 12);
define('TABLES_AUTH_N', 8);
define('TABLES_CERT_N', 4);
define('PLAYERS_N', 3);
@@ -58,7 +59,7 @@ define('EXPIRE_TIME_SMAMMA', 360);
define('EXPIRE_TIME_WAG', 10);
define('WAKEUP_TIME', 12);
// BAN_TIME da allineare anche in commons.js
-define('BAN_TIME', 3600);
+define('BAN_TIME', 900);
define('GARBAGE_TIMEOUT', 5);
define('NICKSERV', "BriskServ");
@@ -152,13 +153,14 @@ $mlang_brisk = array( 'btn_backstand'=> array( 'it' => 'torna in piedi',
$G_lng = langtolng($G_lang);
$G_all_points = array( 11,10,4,3,2, 0,0,0,0,0 );
-$G_brisk_version = "5.1.3";
+$G_brisk_version = "5.6.0";
/* MLANG: ALL THE INFO STRINGS IN brisk.phh */
-$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NOVITA\': comando /info e doppio click sugli utenti registrati, nuovi utenti apprendisti, info su numero di mani e di partite.',
+$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NOVITA\': dati dai client via web-socket.',
'Se vuoi iscriverti alla Mailing List, cliccala!' ),
- 'en' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NEWS: ENcomando /info e doppio click sugli utenti registrati, nuovi utenti apprendisti.',
- 'If you want to subscribe our Mailing List, click it!' ) );
+ 'en' => array ( 'EN Brisk (Ver. '.$G_brisk_version.'), NOVITA\': puoi creare la tua rete di amicizie con /info,',
+ 'vedere cosa pensano i tuoi amici degli altri utenti e tavoli riservati per registrati e apprendisti.',
+ 'Se vuoi iscriverti alla Mailing List, cliccala!' ) );
$G_room_help = array( 'it' => '
@@ -181,7 +183,7 @@ Durante la partita, se vorrete ricaricare la pagina, usate l\'apposito bottone \
Dopo che è iniziata una partita per uscirne dovete chiedere agli altri giocatori di sbloccarla cliccando sul lucchetto. Se non si segue questa prassi, una volta usciti, non vi potrete sedere a nessun tavolo per '.floor(BAN_TIME/60).' minuti.
- Comandi della chat
-
- /nick <nuovo_nickname> - cambio di nickname
+
- /tav <frase di invito> - invito per gli altri giocatori al tavolo dove si è seduti
- /st <stato> - cambia l\'icona associata al tuo user; stato può valere: \\"normale\\", \\"fuori\\", \\"pausa\\", \\"cibo\\", \\"cane\\", \\"lavoro\\", \\"presente\\" oppure \\"sigaretta\\"
- /cont <id partita> - quando si è a un tavolo per garantiti, permette di proseguire una partita giocata in precedenza con gli stessi giocatori
@@ -634,8 +636,9 @@ class Vect {
}
define('TABLE_AUTH_TY_PUBL', 0);
-define('TABLE_AUTH_TY_AUTH', 1);
-define('TABLE_AUTH_TY_CERT', 2);
+define('TABLE_AUTH_TY_APPR', 1);
+define('TABLE_AUTH_TY_AUTH', 2);
+define('TABLE_AUTH_TY_CERT', 3);
class Table {
@@ -671,6 +674,8 @@ class Table {
$thiz->auth_type = TABLE_AUTH_TY_CERT;
else if ($idx < TABLES_AUTH_N)
$thiz->auth_type = TABLE_AUTH_TY_AUTH;
+ else if ($idx < TABLES_APPR_N)
+ $thiz->auth_type = TABLE_AUTH_TY_APPR;
else
$thiz->auth_type = TABLE_AUTH_TY_PUBL;
@@ -825,6 +830,12 @@ class Table {
else
$act = 'reserved';
break;
+ case TABLE_AUTH_TY_APPR:
+ if ($user->is_auth())
+ $act = "sitappr";
+ else
+ $act = 'reserved';
+ break;
default:
$act = 'sit';
break;
@@ -927,7 +938,7 @@ class Client_prefs {
function user_load($user)
{
- fprintf(STDERR, "QQ %s: %x\n", __FUNCTION__, $user->flags);
+ // fprintf(STDERR, "QQ %s: %x\n", __FUNCTION__, $user->flags);
$this->listen = ($user->flags & USER_FLAG_MAP_AUTH) >> 2;
if ($user->rec != FALSE) {
$this->supp_comp = $user->rec->supp_comp_get();
@@ -936,7 +947,7 @@ class Client_prefs {
$this->supp_comp = "000000000000";
}
- fprintf(STDERR, "QQ %s: LISTEN: %d\n", __FUNCTION__, $this->listen);
+ // fprintf(STDERR, "QQ %s: LISTEN: %d\n", __FUNCTION__, $this->listen);
}
function json_load($json_s)
@@ -976,11 +987,11 @@ class Client_prefs {
function store($user, $is_save)
{
// save into DB
- fprintf(STDERR, "QQ %s::%s PRE: %x\n", __CLASS__, __FUNCTION__,
- $user->flags & (~USER_FLAG_S_ALL & ~USER_FLAG_AUTH));
+ // fprintf(STDERR, "QQ %s::%s PRE: %x\n", __CLASS__, __FUNCTION__,
+ // $user->flags & (~USER_FLAG_S_ALL & ~USER_FLAG_AUTH));
$user->flags_set(($this->listen << 2), USER_FLAG_MAP_AUTH);
- fprintf(STDERR, "QQ %s::%s %x\n", __CLASS__, __FUNCTION__,
- $user->flags);
+ // fprintf(STDERR, "QQ %s::%s %x\n", __CLASS__, __FUNCTION__,
+ // $user->flags);
if ($user->is_supp_custom()) {
$user->rec->supp_comp_set($this->supp_comp);
}
@@ -1215,10 +1226,15 @@ class Brisk
function users_cleanup()
{
+ $curtime = time();
for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
$user_cur = $this->user[$i];
- if ($user_cur->the_end) {
+ if ($user_cur->the_end
+ && (($user_cur->rd_toflush == FALSE
+ && $user_cur->rd_step == $user_cur->step)
+ || $user_cur->rd_endtime_is_expired($curtime))
+ ) {
$user_cur->reset(); // users_cleanup, OK
}
}
@@ -1643,7 +1659,13 @@ class Brisk
}
}
- function info_show($user, $user_login, $dt)
+ /*
+ function info_show($user, $target, $dt)
+
+ if success return assoc. array with "ret" => 0 and other fields
+ else return an assoc. array with "ret: != 0 and "mesg" with an error description
+ */
+ function info_show($user, $target, $dt)
{
GLOBAL $G_lang, $mlang_brisk, $G_base;
@@ -1652,7 +1674,7 @@ class Brisk
$ret = 0;
do {
- if ($user_login == "") {
+ if ($target == "") {
$ret = 1;
break;
}
@@ -1660,12 +1682,12 @@ class Brisk
$ret = 2;
break;
}
- if ($user_login == $user->name) {
+ if ($target == $user->name) {
$ret = 3;
$mesg = sprintf($mlang_brisk['inf_self'][$G_lang]);
break;
}
- if (($user_item = $bdb->getitem_bylogin($user_login, $user_code)) == FALSE) {
+ if (($user_item = $bdb->getitem_bylogin($target, $user_code)) == FALSE) {
$ret = 4;
break;
}
@@ -1677,15 +1699,24 @@ class Brisk
}
$user_tos_vers = $user_item->tos_vers_get();
- if (($usersnet_item = $bdb->usersnet_bycode($user->code, $user_item->code)) == FALSE) {
- $usersnet_item = $bdb->usersnet_default($user->code, $user_item->code);
+ $partyskill = $bdb->usersnet_partyskill($user->code, $user_item->code);
+
+ $widefriend = $bdb->usersnet_widefriend($user->code, $user_item->code);
+ $widefriend['skill'] = $bdb->usersnet_wideskill($user->code, $user_item->code);
+ $narrowfriend = $bdb->usersnet_narrowfriend($user->code, $user_item->code);
+ $narrowfriend['skill'] = $bdb->usersnet_narrowskill($user->code, $user_item->code);
+
+ if (($usersnet_item = $bdb->usersnet_bycode($user->code, $user_item->code,
+ $widefriend, $narrowfriend)) == FALSE) {
+ $usersnet_item = $bdb->usersnet_default($user->code, $user_item->code,
+ $widefriend, $narrowfriend);
}
if (versions_cmp($user_tos_vers, "1.2") < 0) {
- $mesg = sprintf($mlang_brisk['tos_old'][$G_lang], xcape($user_login));
+ $mesg = sprintf($mlang_brisk['tos_old'][$G_lang], xcape($target));
}
else if ($guar_login == "") {
- $mesg = sprintf($mlang_brisk['inf_nfd'][$G_lang], xcape($user_login));
+ $mesg = sprintf($mlang_brisk['inf_nfd'][$G_lang], xcape($target));
}
} while (0);
@@ -1699,7 +1730,7 @@ class Brisk
else {
$jret = json_encode(array("ret" => 0,
"mesg" => "",
- "login" => $user_login,
+ "login" => $target,
// FIXME: state internationalization
"state" =>
($user_item->type & USER_FLAG_TY_APPR ? "Apprendista" :
@@ -1708,16 +1739,49 @@ class Brisk
"Normale" : "Stato sconosciuto"))),
"guar" => ($user_item->type & USER_FLAG_TY_APPR ?
"" : $guar_login),
+ "party" => $partyskill,
"match" => (versions_cmp($user_tos_vers, "1.4") < 0 ? "non autorizzato" : $user_item->match_cnt) ,
"game" => (versions_cmp($user_tos_vers, "1.4") < 0 ? "non autorizzato" : $user_item->game_cnt),
"friend" => usersnet_friend_getlabel($usersnet_item->friend),
"skill" => $usersnet_item->skill,
- "trust" => $usersnet_item->trust));
+ "trust" => $usersnet_item->trust,
+ "widefriend" => $usersnet_item->widefriend,
+ "narrowfriend" => $usersnet_item->narrowfriend
+ ));
}
return $jret;
}
+ function info_save($user, $json_s)
+ {
+ GLOBAL $G_lang, $mlang_brisk, $G_base;
+
+ $mesg = "";
+ $user_code = -1;
+ $ret = 0;
+ $subret = 0;
+
+ do {
+ if (($json = json_decode($json_s)) == FALSE) {
+ $ret = 1;
+ break;
+ }
+
+ if (($bdb = BriskDB::create()) == FALSE) {
+ $ret = 2;
+ break;
+ }
+
+ if (($subret = $bdb->usersnet_save($user->code, $json)) != 0) {
+ $ret = 4000 + $subret;
+ break;
+ }
+ } while(0);
+
+ return ($ret);
+ }
+
function room_outstandup($user)
{
$this->room_sitdown($user, -1);
@@ -1864,12 +1928,12 @@ class Brisk
return ($this->kickuser($user_out, $out_reas));
}
- function chatt_send($user, $mesg)
+ function chatt_send($user, $mesg, $mlang_indwr = NULL)
{
GLOBAL $G_base, $G_alarm_passwd, $mlang_brisk, $G_lang;
$only_you = FALSE;
- fprintf(STDERR, "WE ARE HERE: [%s]\n", $mesg);
+ // fprintf(STDERR, "WE ARE HERE: [%s]\n", $mesg);
// common settings
$msg = mb_substr($mesg, 6, 128, "UTF-8");
@@ -2078,10 +2142,20 @@ class Brisk
} while (0);
} // nick chat command
else if (strncmp($msg, "/info ", 6) == 0) {
- $guar_user = substr($msg, 6);
+ do {
+ if (! $user->is_auth()) {
+ if ($mlang_indwr) {
+ $to_user = nickserv_msg($dt, $mlang_indwr['info_auth'][$G_lang]);
+ }
+ else {
+ $to_user = nickserv_msg($dt, "error");
+ }
+ break;
+ }
+ $info_user = substr($msg, 6);
- error_log("here [" . $guar_user."]");
- echo $this->info_show($user, $guar_user, $dt);
+ echo $this->info_show($user, urldecode($info_user), $dt);
+ } while(0);
}
else if (strncmp($msg, "/st ", 4) == 0) {
log_main("chatt_send BEGIN");
@@ -2364,7 +2438,7 @@ class Brisk
$bdb->users_load();
if ($pass != FALSE) { // TODO: here add a method to $bdb to check if the db is available.
log_auth("XXX", "auth2");
- $authenticate = $bdb->login_verify(strtolower($name_new), $pass, $code);
+ $authenticate = $bdb->login_verify($name_new, $pass, $code);
log_auth("XXX", "authenticate: ".($authenticate != FALSE ? "TRUE" : "FALSE"));
if ($authenticate != FALSE) {
@@ -2377,6 +2451,14 @@ class Brisk
}
else {
$login_exists = $bdb->login_exists(strtolower($name_new));
+/*
+TO ENABLE USER-LOGIN ONLY
+- $login_exists = $bdb->login_exists(strtolower($name_new));
++ // $login_exists = $bdb->login_exists(strtolower($name_new));
++ // Force access with login and password
++ $idx = -3;
++ return (FALSE);
+*/
}
}
else {
@@ -2484,7 +2566,7 @@ class Brisk
$this->user[$idx]->flags |= USER_FLAG_LISTAUTH;
if (isset($cookie['CO_list'])) {
- fprintf(STDERR, "QQ: %s CO_list: [%s]\n", __FUNCTION__, $cookie['CO_list']);
+ // fprintf(STDERR, "QQ: %s CO_list: [%s]\n", __FUNCTION__, $cookie['CO_list']);
if (strcmp($cookie['CO_list'], "auth") == 0) {
$this->user[$idx]->flags &= ~USER_FLAG_MAP_AUTH;
$this->user[$idx]->flags |= USER_FLAG_LISTAUTH;
@@ -2498,11 +2580,11 @@ class Brisk
}
}
}
- else {
- fprintf(STDERR, "QQ: CO_list not set flags: %x\n", __FUNCTION__, $this->user[$idx]->flags);
- }
+ // else {
+ // fprintf(STDERR, "QQ: CO_list not set flags: %x\n", __FUNCTION__, $this->user[$idx]->flags);
+ // }
}
- fprintf(STDERR, "QQ %s: flag %x\n", __FUNCTION__, $this->user[$idx]->flags);
+ // fprintf(STDERR, "QQ %s: flag %x\n", __FUNCTION__, $this->user[$idx]->flags);
if ($ghost > -1) {
log_main("ghost: rename!");
$ghost_user = $this->user[$ghost];
@@ -2676,12 +2758,12 @@ class Brisk
{
GLOBAL $G_ban_list, $G_black_list, $G_cloud_smasher;
- printf("NEW_SOCKET (root): %d PATH [%s]\n", intval($new_socket), $path);
+ // printf("NEW_SOCKET (root): %d PATH [%s]\n", intval($new_socket), $path);
- fprintf(STDERR, "\n\n\n PRE_BLACK [%s]\n\n\n", $addr);
+ // fprintf(STDERR, "\n\n\n PRE_BLACK [%s]\n\n\n", $addr);
if ($this->black_check($addr)) {
// TODO: waiting async 5 sec before close
- fprintf(STDERR, "\n\n\n BLACK CHECK\n\n\n");
+ // fprintf(STDERR, "\n\n\n BLACK CHECK\n\n\n");
return (FALSE);
}
if ($path != "" && $path != "index.php") {
@@ -2734,9 +2816,10 @@ class Brisk
break;
case "index_rd.php":
+ case "index_rd_wss.php":
if (($transp = gpcs_var('transp', $get, $post, $cookie)) === FALSE)
$transp = "iframe";
- if ($transp == 'websocket')
+ if ($transp == 'websocket' || $transp == 'websocketsec')
$enc = 'plain';
do {
@@ -2755,7 +2838,7 @@ class Brisk
if (($prev = $user->rd_socket_get()) != NULL) {
$s_a_p->socks_unset($user->rd_socket_get());
fclose($user->rd_socket_get());
- printf("CLOSE AND OPEN AGAIN ON IFRA2\n");
+ // printf("CLOSE AND OPEN AGAIN ON IFRA2\n");
$user->rd_socket_set(NULL);
}
@@ -2777,7 +2860,7 @@ class Brisk
$s_a_p->socks_set($new_socket, $user, NULL);
$user->rd_socket_set($new_socket);
- printf(" - qui ci siamo - ");
+ // printf(" - qui ci siamo - ");
return TRUE;
} while (FALSE);
@@ -2802,7 +2885,7 @@ class Brisk
$subs = "briskin5/";
$subs_l = strlen($subs);
if (!strncmp($path, $subs, $subs_l)) {
- $ret = Bin5::request_mgr(&$s_a_p, $header, &$header_out, &$new_socket, substr($path, $subs_l) , $addr, $get, $post, $cookie);
+ $ret = Bin5::request_mgr($s_a_p, $header, $header_out, $new_socket, substr($path, $subs_l) , $addr, $get, $post, $cookie);
return ($ret);
}
break;
@@ -3366,9 +3449,9 @@ function validate_name($name)
return (FALSE);
}
-function playsound($filename)
+function playsound($name)
{
- return (sprintf('playsound("flasou", "%s");', $filename));
+ return (sprintf('g_jukebox.play("%s");', $name));
}
function secstoword($secs)
@@ -3471,5 +3554,31 @@ function carousel_top()
}
}
+function login_consistency($name)
+{
+ $old_c = '';
+ if (($len = mb_strlen($name)) > 12) {
+ return FALSE;
+ }
+ for ($i = 0 ; $i < mb_strlen($name) ; $i++) {
+ $c = mb_substr($name, $i, 1);
+ if (mb_ereg_match ("[a-zA-Z0-9]", $c)) {
+ if ($old_c != $c) {
+ $old_c = $c;
+ $old_ct = 1;
+ }
+ else {
+ $old_ct++;
+ if ($old_ct > 2) {
+ return (FALSE);
+ }
+ }
+ }
+ else {
+ return (FALSE);
+ }
+ }
+ return (TRUE);
+}
?>