X-Git-Url: https://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Findex.php;h=6c7b5b2c0538e0e432a74c8ddc85a35f48563c8f;hb=7379a6c57be3c4ced0871d429bc1de1d6e2a91f8;hp=5815c9777d904a545843f7ea739fbf342ed8c9f1;hpb=a08ed840c96e0d2a20548591b83c4392b6515d8b;p=brisk.git diff --git a/web/index.php b/web/index.php index 5815c97..6c7b5b2 100644 --- a/web/index.php +++ b/web/index.php @@ -2,7 +2,10 @@ /* * brisk - index.php * - * Copyright (C) 2006 matteo.nastasi@milug.org + * Copyright (C) 2006-2012 Matteo Nastasi + * mailto: nastasi@alternativeoutput.it + * matteo.nastasi@milug.org + * web: http://www.alternativeoutput.it * * 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 @@ -17,128 +20,1000 @@ * not, write to the Free Software Foundation, Inc, 59 Temple Place - * Suite 330, Boston, MA 02111-1307, USA. * - * $Id$ - * */ -require_once("brisk.phh"); -if (DEBUGGING == "local" && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') { - echo "Debugging time!"; - exit; +require_once("Obj/brisk.phh"); +require_once("Obj/auth.phh"); +require_once("Obj/proxyscan.phh"); + +$mlang_room = array( 'userpasserr' => array('it' => 'Utente e/o password errati.', + 'en' => 'Wrong user and/or password.'), + 'userpassmust' => array('it' => 'Il nickname deve contenere almeno una lettera o una cifra.', + 'en' => 'The nickname have to contain at least one letter or one number.'), + 'userpassend' => array('it' => 'Spiacenti, non ci sono più posti liberi. Riprova più tardi.', + 'en' => 'We are sorry, there aren\'t free place. Try again later.'), + 'userpassuse' => array('it' => 'Il tuo nickname è già in uso.', + 'en' => 'Your nickname is already in use.'), + 'standing' => array('it' => 'Giocatori in piedi', + 'en' => 'Standing players'), + 'headline' => array('it' => 'briscola chiamata in salsa ajax', + 'en' => 'declaration briscola in ajax sauce (Beta)'), + 'welcome' => array('it' => 'Digita il tuo nickname per accedere ai tavoli della briscola', + 'en' => 'Enter your nickname to access to the tables of briscola'), + 'btn_enter' => array('it' => 'entra', + 'en' => 'enter'), + 'passwarn' => array('it' => 'Se non hai ancora una password, lascia il campo in bianco ed entra.', + 'en' => 'If you don\'t have a password, leave blank the field and enter.'), + 'browwarn' => array('it' => '(se qualcosa non funziona
prova a ricaricare la pagina con Ctrl + F5)', + 'en' => '(if something don\'t work
try to reload the current page with Ctrl + F5)'), + 'regwarn' => array('it' => '
Il nickname che stai usando è già registrato,

se il suo proprietario si autentificherà

verrai rinominato d\'ufficio come ghostN.', + 'en' => '
The nickname you are using it\'s already registered,

if its proprietary authenticates

you will named ghostN.'), + 'btn_rettabs' => array('it' => 'torna ai tavoli', + 'en' => 'back to tables'), + 'btn_exit' => array('it' => 'Esco.', + 'en' => 'Exit.'), + 'tit_tabl' => array('it' => 'Tavolo ', + 'en' => 'Table '), + 'tit_stat' => array('it' => 'imposta lo stato del tuo utente', + 'en' => 'set the status of the user'), + 'stat_desc' => array('it' => 'stato', + 'en' => 'mode' ), + 'st_norm_desc' => array('it' => 'normale', + 'en' => 'normal'), + 'st_paus_desc' => array('it' => 'pausa', + 'en' => 'pause'), + 'st_out_desc' => array('it' => 'fuori', + 'en' => 'out'), + 'st_dog_desc' => array('it' => 'cane', + 'en' => 'dog'), + 'st_food_desc' => array('it' => 'cibo', + 'en' => 'food'), + 'st_work_desc' => array('it' => 'lavoro', + 'en' => 'work'), + 'st_smok_desc' => array('it' => 'sigaretta', + 'en' => 'smoke'), + 'st_pres_desc' => array('it' => 'presente', + 'en' => 'present'), + 'st_rabb_desc' => array('it' => 'coniglio', + 'en' => 'rabbit'), + 'st_socc_desc' => array('it' => 'calcio', + 'en' => 'soccer'), + 'st_baby_desc' => array('it' => 'pupo', + 'en' => 'baby'), + 'st_mop_desc' => array('it' => 'pulizie', + 'en' => 'mop'), + 'st_babbo_desc' => array('it' => 'babbo', + 'en' => 'mop'), + 'st_renna_desc' => array('it' => 'renna', + 'en' => 'mop'), + 'st_pupaz_desc' => array('it' => 'pupazzo', + 'en' => 'mop'), + 'st_visch_desc' => array('it' => 'vischio', + 'en' => 'mop'), + + 'tit_ticker' => array('it' => 'scrivi un invito al tavolo e clicca', + 'en' => 'write an invitation at the table and click'), + 'itm_warr' => array('it' => 'garantisci', + 'en' => 'guarantee'), + 'warr_desc' => array('it' => 'garantisci per un tuo conoscente', + 'en' => 'guarantee for a friend'), + 'tit_warr' => array('it' => 'Garantisci per un tuo conoscente.', + 'en' => 'Guarantee for a friend.'), + 'itm_list' => array('it' => 'ascolta', + 'en' => 'listen'), + 'list_desc' => array('it' => 'imposta le regole di ascolto', + 'en' => 'set the listen rules'), + 'tit_listall' => array('it' => 'tutti', + 'en' => 'everybody'), + 'listall_desc' => array('it' => 'leggi tutti i messaggi di tutti gli utenti collegati', + 'en' => 'listen all messages from each user connected'), + 'tit_listaut' => array('it' => 'solo autenticati', + 'en' => 'only authorized'), + 'tit_listisol' => array('it' => 'isolamento', + 'en' => 'isolation'), + 'listaut_desc' => array('it' => 'leggi soltanto i messaggi degli utenti con password', + 'en' => 'listen messages only from authenticated users'), + 'listisol_desc'=> array('it' => 'visualizza Brisk come se fosse solo per utenti con password', + 'en' => 'show Brisk like an authenticated user only site'), + 'tit_splash' => array('it' => 'splash', + 'en' => 'splash'), + 'splash_desc' => array('it' => 'attiva la finestra di splash', + 'en' => 'show the splash window'), + 'tit_help' => array('it' => 'informazioni utili su Brisk', + 'en' => 'usefull information about Brisk'), + 'itm_help' => array('it' => 'aiuto', + 'en' => 'help'), + 'tit_hpage' => array('it' => 'homepage del progetto', + 'en' => 'project homepage (ita)'), + 'tit_what' => array('it' => 'di cosa si tratta', + 'en' => 'what is the project'), + 'itm_what' => array('it' => 'cos\'è', + 'en' => 'what is it'), + 'url_rules' => array('it' => 'http://it.wikipedia.org/wiki/Briscola#Gioco_a_5', + 'en' => 'http://it.wikipedia.org/wiki/Briscola#Gioco_a_5&EN=true'), + 'itm_rules' => array('it' => 'regole', + 'en' => 'rules'), + 'tit_rules' => array('it' => 'come si gioca', + 'en' => 'how to play'), + 'tit_shot' => array('it' => 'screenshots dell\'applicazione', + 'en' => 'screenshots of the web-application'), + 'tit_comp' => array('it' => 'compatibilità con i browser', + 'en' => 'browsers compatibility'), + 'itm_comp' => array('it' => 'compatibilità', + 'en' => 'compatibility'), + 'tit_src' => array('it' => 'sorgenti dell\'applicazione web', + 'en' => 'sources of the web-application'), + 'itm_src' => array('it' => 'sorgenti', + 'en' => 'sources'), + 'tit_ml' => array('it' => 'come iscriversi alla mailing list', + 'en' => 'how to subscribe the mailing list'), + 'itm_ml' => array('it' => 'mailing list', + 'en' => 'mailing list'), + 'tit_pro' => array('it' => 'come fare pubblicità a Brisk!', + 'en' => 'how to spread Brisk!'), + 'itm_pro' => array('it' => 'propaganda', + 'en' => 'propaganda'), + 'tit_mail' => array('it' => 'contatti', + 'en' => 'contacts'), + 'itm_mail' => array('it' => 'contatti', + 'en' => 'contacts'), + 'tit_cla' => array('it' => 'classifiche degli utenti', + 'en' => 'user\'s placings'), + 'itm_cla' => array('it' => 'classifiche', + 'en' => 'placings'), + 'tit_rmap' => array('it' => 'prossime funzionalità implementate', + 'en' => 'roadmap of next functionalities'), + 'itm_rmap' => array('it' => 'roadmap', + 'en' => 'roadmap'), + 'tit_meet' => array('it' => 'foto dei raduni di briskisti (serve Facebook)', + 'en' => 'photos of brisk meetings'), + 'itm_meet' => array('it' => 'BriskMeeting', + 'en' => 'BriskMeeting'), + 'tit_mesg' => array('it' => 'manda un messaggio o una segnalazione all\'amministratore del sito', + 'en' => 'send a message or a signalling to the administrator' ), + 'mesgtoadm_tit'=> array('it' => 'Invia un messaggio o una segnalazione all\'amministratore:', + 'en' => 'Send a message to the administrator:'), + 'mesgtoadm_sub'=> array('it' => 'soggetto:', + 'en' => 'subject:'), + 'btn_send' => array('it' => 'Invia.', + 'en' => 'Send.'), + 'btn_close' => array('it' => 'Chiudi.', + 'en' => 'Close.') + ); + + + +require_once("briskin5/Obj/briskin5.phh"); + +function poll_dom() { + GLOBAL $G_with_poll, $G_poll_title, $G_poll_entries; + + if ($G_with_poll) { + $ret = sprintf('
+ + + +'); + return ($ret); + } + else + return ''; } -log_load($sess, "LOAD: index.php"); +function carousel_top() +{ + $rn = rand(1, 3); + return (sprintf('', $rn)); +} -function main() +function index_main(&$room, $transp_type, &$header_out, $addr, $get, $post, $cookie) { - GLOBAL $sess, $name; - + GLOBAL $G_with_donors, $G_donors_cur, $G_donors_all; + GLOBAL $G_with_topbanner, $G_topbanner, $G_is_local; + GLOBAL $G_with_sidebanner, $G_sidebanner; + GLOBAL $G_with_sidebanner2, $G_sidebanner2; + GLOBAL $G_with_poll; + GLOBAL $G_lang, $G_lng, $mlang_room; + GLOBAL $BRISK_SHOWHTML, $BRISK_DEBUG, $_SERVER; + + if (($sess = gpcs_var('sess', $get, $post, $cookie)) === FALSE) + $sess = ""; + if (($name = gpcs_var('name', $get, $post, $cookie)) === FALSE) + unset($name); + if (($pass_private = gpcs_var('pass_private', $get, $post, $cookie)) === FALSE) + unset ($pass_private); + if (($table_idx = gpcs_var('table_idx', $get, $post, $cookie)) === FALSE) + unset ($table_idx); + if (($table_token = gpcs_var('table_idx', $get, $post, $cookie)) === FALSE) + unset ($table_token); + + // Use of proxies isn't allowed. + if (!$G_is_local && is_proxy($addr)) { + return FALSE; + } + + $is_login = FALSE; $body = ""; + $tables = ""; + $standup = ""; $ACTION = "login"; - $is_table = false; - $sem = lock_data(); - $bri = &load_data(); - - /* Actions */ - if (isset($sess)) { - $bri->garbage_manager(TRUE); - if (($user = &get_user(&$bri, $sess, &$idx)) != FALSE) { - if ($user->stat == "table") { - header ("Location: table.php"); - unlock_data($sem); - exit; + if (isset($BRISK_SHOWHTML) == FALSE) { + $is_table = FALSE; + log_main("lock Room"); + $curtime = time(); + + /* Actions */ + + if (validate_sess($sess)) { + log_main("pre garbage_manager UNO"); + $room->garbage_manager(TRUE); + log_main("post garbage_manager"); + if (($user = &$room->get_user($sess, &$idx)) != FALSE) { + log_main("user stat: ".$user->stat); + if ($user->stat == "table") { + $cookies = new Cookies(); + $cookies->add("table_token", $user->table_token, $curtime + 31536000); + $cookies->add("table_idx", $user->table, $curtime + 31536000); + $header_out['cookies'] = $cookies; + $header_out['Location'] = "briskin5/index.php"; + return TRUE; + } + $ACTION = "room"; + } + } - $ACTION = "table"; - } - else { - setcookie ("sess", "", time() - 3600); - } - } - else if (isset($name)) { - $bri->garbage_manager(TRUE); - /* try login */ - $name = substr($name, 0, 12); - if (($user = &add_user(&$bri, &$sess, &$idx, $name)) != FALSE) { - $ACTION = "table"; - - setcookie ("sess", "", time() + 180); - standup_update(&$bri,&$user); - - if (save_data(&$bri) == FALSE) { - echo "ERRORE SALVATAGGIO\n"; - exit; + + if ($ACTION == "login" && isset($name)) { + + log_main("pre garbage_manager DUE"); + + if (isset($pass_private) == FALSE) { + $pass_private = FALSE; + } + + $room->garbage_manager(TRUE); + /* try login */ + $ipv4addr_arr = explode(':' , $addr); + if (isset($ipv4addr_arr[3])) { + $ipv4addr = $ipv4addr_arr[3]; + } + else { + $ipv4addr = $addr; + } + if (($user = $room->add_user(&$sess, &$idx, $name, $pass_private, $ipv4addr, $cookie)) != FALSE) { + $ACTION = "room"; + if ($idx < 0) { + $idx = -$idx - 1; + $is_login = TRUE; + } + + log_legal($curtime, $ipv4addr, $user, "STAT:LOGIN", ''); + + // recovery lost game + if ($user->stat == "table") { + $cookies = new Cookies(); + $cookies->add("table_token", $user->table_token, $curtime + 31536000); + $cookies->add("table_idx", $user->table, $curtime + 31536000); + $header_out['cookies'] = $cookies; + $header_out['Location'] = "briskin5/index.php"; + return TRUE; + } + + + // setcookie ("sess", "", time() + 180); + $room->standup_update(&$user); + + } + else { + /* Login Rendering */ + /* MLANG: "Utente e/o password errati.", "Il nickname deve contenere almeno una lettera o una cifra.", "Spiacenti, non ci sono più posti liberi. Riprova più tardi.", "Il tuo nickname è già in uso." */ + /* + if ($idx == -3) + $body .= '
'.$mlang_room['userpasserr'][$G_lang].'
'; + else if ($idx == -2) + // $body .= '
Il nickname deve contenere almeno una lettera o una cifra.
'; + $body .= '
'.$mlang_room['userpassmust'][$G_lang].'
'; + else if ($idx == -1) + // $body .= '
Spiacenti, non ci sono più posti liberi. Riprova più tardi.
'; + $body .= '
'.$mlang_room['userpassend'][$G_lang].'
'; + else + // $body .= '
Il tuo nickname è già in uso.
'; + $body .= '
'.$mlang_room['userpassuse'][$G_lang].'
'; + */ + + if ($idx == -3) + $sfx = 'err'; + else if ($idx == -2) + $sfx = 'must'; + else if ($idx == -1) + $sfx = 'end'; + else + $sfx = 'use'; + + $body .= '
'.$mlang_room['userpass'.$sfx][$G_lang].'
'; + } } - } - else { - /* Login Rendering */ - if ($idx == -1) - $body .= '
Spiacenti, non ci sono più posti liberi. Riprova più tardi.
'; - else - $body .= '
Il tuo nickname è già in uso.
'; - } } - unlock_data($sem); - /* Rendering. */ - if ($ACTION == "table") { - $tables .= ''; - for ($i = 0 ; $i < TABLES_N ; $i++) { - if ($i % 4 == 0) - $tables .= ''; - $tables .= ''; - if ($i % 4 == 3) - $tables .= ''; - } - $tables .= ''; - - $tables .= '
Tavolo '.$i.'

'; - $tables .= sprintf('
', $i); - $tables .= sprintf('
', $i); - $tables .= '
'; - $tables .= '
'; - $tables .= 'Giocatori in piedi

'; - - $tables .= sprintf('
'); - $tables .= '
'; - $tables .= '
'; + if ($BRISK_SHOWHTML == "debugtable") { + $ACTION = "room"; + } + else if ($BRISK_SHOWHTML == "debuglogin") { + $ACTION = "login"; + } + + if ($ACTION == "room") { + $tables .= '
'; + $tables .= ''; + for ($ii = 0 ; $ii < TABLES_N ; $ii++) { + if ($user->flags & USER_FLAG_AUTH) + $i = $ii; + else + $i = TABLES_N - $ii - 1; + + if ($ii % 4 == 0) { + $tables .= ''; + } + if (TRUE || !($user->flags & USER_FLAG_ISOLAUTH) || $ii < TABLES_AUTH_N) { + $tables .= ''."\n"; + } + if ($ii % 4 == 3) { + $tables .= ''; + } + } + $tables .= '
'; + + $tables .= '
'.$mlang_room['tit_tabl'][$G_lang].$i.'
'; + $tables .= sprintf('
', $i); + $tables .= sprintf('
', $i); + $tables .= '
'; + $tables .= '
'; + + + $standup .= '
'; + $standup .= '
'; + /* MLANG: "Giocatori in piedi" */ + // $standup .= '
Giocatori in piedi - Come ottenere user e password -
'; + $standup .= '
'.$mlang_room['standing'][$G_lang].'
'; + + $standup .= sprintf('
'); + // MLANG Esco. + $standup .= '
'; + $standup .= '
'; + } + + $altout_sponsor_arr = array( array ( 'id' => 'btn_altout', + 'url' => 'http://www.alternativeoutput.it', + 'content' => 'img/altout80x15.png', + 'content_big' => 'img/logotxt_banner.png'), + array ( 'id' => 'btn_virtualsky', + 'url' => 'http://virtualsky.alternativeoutput.it', + 'content' => 'img/virtualsky80x15a.gif', + 'content_big' => 'img/virtualsky_big.png'), + array ( 'id' => 'btn_dynamica', + 'url' => 'http://www.dynamica.it', + 'content' => 'img/dynamica.png', + 'content_big' => 'img/dynamica_big.png') + ); + + $altout_support_arr = array( array ( 'id' => 'btn_brichi', + 'url' => 'http://www.briscolachiamata.it', + 'content' => 'img/brichi.png', + 'content_big' => 'img/brichi_big.png'), + array ( 'id' => 'btn_foroli', + 'url' => 'http://www.forumolimpia.it', + 'content' => 'img/forumolimpia.gif', + 'content_big' => 'img/forumolimpia_big.png' ), + array ( 'id'=> 'btn_niini', + 'url' => 'http://www.niinivirta.it', + 'content' => 'img/niinivirta.png', + 'content_big' => 'img/niinivirta_big.png') ); + + + + $altout_support = ""; + $altout_support_big = ""; + for ($i = 0 ; $i < 4 ; $i++) { + $ii = ($i < 3 ? $i : 0); + + $altout_support .= sprintf('
', + $i * 20, $altout_support_arr[$ii]['url'], + $altout_support_arr[$ii]['id'], $altout_support_arr[$ii]['content']); + + $altout_support_big .= sprintf('', + $altout_support_arr[$ii]['id'], $altout_support_arr[$ii]['content_big']); } + + + // seed with microseconds since last "whole" second + // srand ((double) microtime() * 1000000); + // $randval = rand(0,count($altout_sponsor_arr)-1); + $altout_sponsor = ""; + $altout_sponsor_big = ""; + for ($i = 0 ; $i < 4 ; $i++) { + $ii = ($i < 3 ? $i : 0); + + $altout_sponsor .= sprintf('
', + $i * 20, $altout_sponsor_arr[$ii]['url'], + $altout_sponsor_arr[$ii]['id'], $altout_sponsor_arr[$ii]['content']); + + $altout_sponsor_big .= sprintf('', + $altout_sponsor_arr[$ii]['id'], $altout_sponsor_arr[$ii]['content_big']); + } + + + + + + $brisk_donate = file_get_contents(FTOK_PATH."/brisk_donate.txt"); + if ($brisk_donate == FALSE) + $brisk_donate = ""; + + + /* MLANG: "briscola chiamata in salsa ajax", */ + + mt_srand(make_seed()); + if (!$G_is_local) { + $rn = rand(0, 1); + + if ($rn == 0) { + $banner_top_left = ' +'; + $banner_top_right = carousel_top(); + } + else { + $banner_top_left = carousel_top(); + $banner_top_right = ' +'; + } + } + else { // !$G_is_local + $banner_top_left = carousel_top(); + $banner_top_right = carousel_top(); + } + + $brisk_header_form = '
+ +'; + +/* MLANG: ALL THE VERTICAL MENU */ + $brisk_vertical_menu = ' + +
+ + +
+ +'. ($ACTION == "room" ? '
+ +'.($G_with_poll ? '' : '
+').' +
+'.($user->flags & USER_FLAG_AUTH ? ' +'.poll_dom() + : ' + +').' + +' : '').' + +
+
+sponsored by:
+
+
+
'.$altout_sponsor.'
+
+
+'.$altout_sponsor_big.' +
+
+supported by:
+
+
+
'.$altout_support.'
+ +
+
+
+'.$altout_support_big.' +
+ +
+
+


+%s +%s +
+
'; /* Templates. */ if ($ACTION == 'login') { + $header_out['Content-type'] = "text/html; charset=\"utf-8\""; ?> Brisk + - - - - + + + + + + + + + - - - - -
briscola chiamata in salsa ajax
-
- + + + +\n"); + printf($brisk_vertical_menu, '', ''); + + if ($G_with_sidebanner xor $G_with_sidebanner2) { + printf("

"); + } + + if ($G_with_sidebanner) { + printf("%s", $G_sidebanner); + if ($G_with_sidebanner2) { + printf("
"); + } + } + + if ($G_with_sidebanner2) { + printf("%s", $G_sidebanner2); + } + printf(""); +?> + + +



-Digita il tuo nickname per accedere ai tavoli della briscola.

-
- -
+ +

+
+ + + + + + + + +

+

+




+



+



+



+



@@ -154,75 +1029,223 @@ Digita il tuo nickname per accedere ai tavoli della briscola.

Brisk + - - - - - + + + + + + + + + + - - - - -
briscola chiamata in salsa ajax

-
- + + + +\n"); + /* printf($brisk_vertical_menu, '



', + $brisk_donate); + printf($brisk_vertical_menu, '

', + $brisk_donate);*/ + printf($brisk_vertical_menu, '
', + $brisk_donate); + + + if ($G_with_sidebanner xor $G_with_sidebanner2) { + printf("

"); + } + + if ($G_with_sidebanner) { + printf("%s", $G_sidebanner); + if ($G_with_sidebanner2) { + printf("
"); + } + } + + + if ($G_with_sidebanner2) { + printf("%s", $G_sidebanner2); + } + + printf(""); +?> + sess"; ?>"> +
+
+ +
+ -Chat -
+ +
+Chat
+
+
+
+ +
+
+
+ +
+
+
- -
+
+
+ + + + +

-
+
+ + + + + + + + +
+
+
+
+ + +

+
+ + + + + + + + + + +
+
-
+
-
-
 
-
+