$G_lng = langtolng($G_lang);
$G_all_points = array( 11,10,4,3,2, 0,0,0,0,0 );
-$G_brisk_version = "4.6.0";
+$G_brisk_version = "4.8.0";
/* MLANG: ALL THE INFO STRINGS IN brisk.phh */
-$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), <b>NOVITA\'</b>: aggiunti script di avvio automatico, gestione dei segnali e logging dell\' ultima connessione.',
+$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), <b>NOVITA\'</b>: prova il nuovo azioni->preferenze.',
'Se vuoi iscriverti alla <a target="_blank" href="mailto:ml-briscola+subscribe@milug.org">Mailing List</a>, cliccala!' ),
- 'en' => array ( 'Brisk (Ver. '.$G_brisk_version.'), <b>NEWS</b>: usage of reader/writer locking instead of generic exclusive locking.',
+ 'en' => array ( 'Brisk (Ver. '.$G_brisk_version.'), <b>NEWS</b>: server-side infrastructure to manage user preferences added and S customization added.',
'If you want to subscribe our <a target="_blank" href="ml-briscola+subscribe@milug.org">Mailing List</a>, click it!' ) );
$G_room_help = array( 'it' => '
}
}
-
-
- // $ret .= table_act_content(($user->subst == 'standup'), $this->table[$i]->player_n, $i, $user->table,
- // ($this->table[$i]->auth_only == FALSE ? TRUE : $user->flags & USER_FLAG_AUTH));
-
// function act_content($isstanding, $sitted, $table, $cur_table, $allowed)
function act_content($user)
{
class Client_prefs {
var $listen;
+ var $supp_comp;
+
+ function Client_prefs()
+ {
+ }
+
+ static function from_user($user)
+ {
+ $thiz = new Client_prefs();
+ $thiz->user_load($user);
+
+ return ($thiz);
+ }
+
+ static function from_json($json)
+ {
+ $thiz = new Client_prefs();
+ if ($thiz->json_load($json) == FALSE) {
+ unset($thiz);
+ return (FALSE);
+ }
+
+ return ($thiz);
+ }
+
+ function user_load($user)
+ {
+ 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;
+ }
+ else {
+ $this->supp_comp = "000000000000";
+ }
+
+ fprintf(STDERR, "QQ %s: LISTEN: %d\n", __FUNCTION__, $this->listen);
+ }
+
+ function json_load($json_s)
+ {
+ $ret = FALSE;
+
+ do {
+ if (gettype($json_s) == "string") {
+ if (($json = json_decode($json_s)) == FALSE)
+ break;
+ }
+ else {
+ $json = $json_s;
+ }
+ if ($this->listen < 0 || $this->listen > 2)
+ break;
+ $this->listen = $json->listen;
+
+ if (mb_strlen($json->supp_comp, "ASCII") != 12)
+ break;
+
+ for ($i = 0, $idx = 0 ; $i < 12 ; $i++) {
+ if (($json->supp_comp[$i] >= '0' && $json->supp_comp[$i] <= '9') ||
+ ($json->supp_comp[$i] >= 'a' && $json->supp_comp[$i] <= 'f'))
+ continue;
+ break;
+ }
+ if ($i < 12)
+ break;
+ $this->supp_comp = $json->supp_comp;
+ $ret = TRUE;
+ } while (FALSE);
+
+ return ($ret);
+ }
- function Client_prefs($listen)
+ function store($user, $is_save)
{
- $this->listen = $listen;
+ // save into DB
+ fprintf(STDERR, "QQ %s::%s PRE: %x\n", __CLASS__, __FUNCTION__,
+ $user->flags & (~USER_FLAG_AUTH));
+ $user->flags_set(($this->listen << 2), USER_FLAG_MAP_AUTH);
+ fprintf(STDERR, "QQ %s::%s %x\n", __CLASS__, __FUNCTION__,
+ $user->flags);
+ if ($user->is_supp_custom()) {
+ $user->rec->supp_comp = $this->supp_comp;
+ }
+ if ($is_save)
+ $user->store_set();
}
}
+class ModerationItem
+{
+ var $table;
+ var $date;
+ var $content;
+
+ function ModerationItem($where, $date, $content)
+ {
+ $this->where = $where;
+ $this->time = $time;
+ $this->content = $content;
+ }
+}
+
+class Moderation
+{
+ var $row;
+
+ function Moderation()
+ {
+ $this->item = Array();
+ }
+
+ function get_all()
+ {
+ return json_encode($this->item);
+ }
+}
class Room
{
if ($user_cur->sess == "")
continue;
-
+
if ($user_cur->lacc + EXPIRE_TIME_RD < ($curtime - $delta)) {
// Auto logout dell'utente
log_rd2("AUTO LOGOUT.".($user_cur->lacc + EXPIRE_TIME_RD)." curtime - delta ".($curtime - $delta));
$ret = sprintf('gst.st = %d; ', $user_step);
- // for test: $prefs = new Client_prefs(USER_FLAG_LISTAUTH >> 2);
- $prefs = new Client_prefs(($user->flags & USER_FLAG_MAP_AUTH) >> 2);
+ $prefs = Client_prefs::from_user($user);
$ret .= sprintf('prefs_load(\'%s\', false, false);', json_encode($prefs));
if(false) {
for ($i = 0 ; $i < TABLES_N ; $i++) {
$ret .= $this->table_content($user, $i);
- // $ret .= table_act_content(($user->subst == 'standup'), $this->table[$i]->player_n, $i, $user->table,
- // ($this->table[$i]->auth_only == FALSE ? TRUE : $user->flags & USER_FLAG_AUTH));
$ret .= $this->table[$i]->act_content($user);
if ($this->table[$i]->wag_own != -1)
$ret .= sprintf('tra.add(%d, "%s: %s"); ', $i, $this->user[$this->table[$i]->wag_own]->name, $this->table[$i]->wag_com);
$user_cur = $this->user[$i];
if ($user_cur->sess == '' || $user_cur->stat != 'room')
continue;
-
+
// log_main("VALORI: name: ".$user_cur->name."from_table: ".$from_table." tab: ".$user_cur->table." taix: ".$table_idx." ucur: ".$user_cur." us: ".$user);
$ret = "gst.st = ".($user_cur->step+1)."; ".($remove_wagon ? sprintf("tra.rem(%d);",$table_idx) : "");
// clean the action buttons in other tables
for ($e = 0 ; $e < TABLES_N ; $e++) {
if ($this->table[$e]->player_n < PLAYERS_N) {
- // $ret .= table_act_content(TRUE, 0, $e, $user->table,
- // ($this->table[$e]->auth_only == FALSE ? TRUE : $user->flags & USER_FLAG_AUTH));
$ret .= $this->table[$e]->act_content($user);
}
}
}
else {
- // $ret .= table_act_content(($user_cur->subst == 'standup'), $table->player_n, $table_idx, $user_cur->table,
- // ($table->auth_only == FALSE ? TRUE : $user_cur->flags & USER_FLAG_AUTH));
$ret .= $table->act_content($user_cur);
}
}
$ret .= $this->table_content($user_cur, $table_idx);
$ret .= $this->standup_content($user_cur);
- // $ret .= table_act_content(FALSE, 0, $table_idx, $user_cur->table,
- // ($table->auth_only == FALSE ? TRUE : $user_cur->flags & USER_FLAG_AUTH));
$ret .= $table->act_content($user_cur);
log_main("JOIN_WAKEUP wup_idx ".$wup_idx." wup_n ".$user_wup_n);
log_main("JOIN_WAKEUP more");
- // $ret .= table_act_content(($user_cur->subst == 'standup'), $table->player_n, $table_idx, $user_cur->table,
- // ($table->auth_only == FALSE ? TRUE : $user_cur->flags & USER_FLAG_AUTH));
$ret .= $table->act_content($user_cur);
log_main("JOIN_WAKEUP end more");
$user_cur = $this->user[$i];
if ($user_cur->sess == '' || $user_cur->stat != 'room')
continue;
-
+
$ret = "gst.st = ".($user_cur->step+1)."; ";
if ($table_idx > -1)
$ret .= $this->table_content($user_cur, $table_idx);
}
else if ($table_idx > -1) {
if ($table->player_n == PLAYERS_N) {
- // $ret .= table_act_content(($user_cur->subst == 'standup'), PLAYERS_N, $table_idx, $user_cur->table,
- /// ($table->auth_only == FALSE ? TRUE : $user_cur->flags & USER_FLAG_AUTH));
$ret .= $table->act_content($user_cur);
}
}
/* MLANG: "Alarm <b>%s</b> inviato a <b>%s</b>." */
$prestr = sprintf($mlang_brisk['alarret'][$G_lang], xcape(substr($msg, strlen($alarm_check))),
($target == "" ? $mlang_brisk['tit_all'][$G_lang] : xcape($target)) );
- $to_user = sprintf('chatt_sub("%s", [2, "%s"],%s);',
- $dt, NICKSERV, $prestr);
+ $to_user = sprintf('chatt_sub("%s", [2, 0, "%s"],%s);', $dt, NICKSERV, $prestr);
$msg = sprintf("<br><b>%s<br><br>%s</b><br><br>",
$dt.NICKSERV, xcape(substr($msg, strlen($alarm_check))));
$flags_old = 0;
if ($user->stat == 'room' && $user->subst == 'sitdown' &&
$user->table >= TABLES_AUTH_N) {
- $to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_brisk['listmust'][$G_lang]);
+ $to_user = sprintf('chatt_sub("%s", [2, 0, "%s"],"%s");', $dt, NICKSERV, $mlang_brisk['listmust'][$G_lang]);
}
else {
}
else {
/* MLANG: "<b>Per autenticare qualcuno devi a tua volta essere autenticato.</b>", "Il nickname deve contenere almeno una lettera dell\'alfabeto o una cifra.", "Nickname <b>%s</b> già in uso." */
- $to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_brisk['authmust'][$G_lang]);
+ $to_user = sprintf('chatt_sub("%s", [2, 0, "%s"],"%s");', $dt, NICKSERV, $mlang_brisk['authmust'][$G_lang]);
}
}
else if (strncmp($msg, "/mesgtoadm", 8) == 0) {
}
else {
/* MLANG: "<b>Per inviare un messaggio devi essere autenticato.</b>" */
- $to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_brisk['mesgmust'][$G_lang]);
+ $to_user = sprintf('chatt_sub("%s", [2, 0, "%s"],"%s");', $dt, NICKSERV, $mlang_brisk['mesgmust'][$G_lang]);
}
}
else if (strncmp($msg, "/nick ", 6) == 0) {
do {
if (($name_new = validate_name(substr($msg, 6))) == FALSE) {
- $to_user = sprintf('chatt_sub("%s", [2,"%s"],"%s");', $dt, NICKSERV, $mlang_brisk['nickmust'][$G_lang]);
+ $to_user = sprintf('chatt_sub("%s", [2, 0, "%s"],"%s");', $dt, NICKSERV, $mlang_brisk['nickmust'][$G_lang]);
break;
}
}
if ($i < MAX_PLAYERS) {
$prestr = sprintf($mlang_brisk['nickdupl'][$G_lang], xcape($name_new));
- $to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $prestr);
+ $to_user = sprintf('chatt_sub("%s", [2, 0, "%s"],"%s");', $dt, NICKSERV, $prestr);
break;
}
}
}
else {
- $to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_brisk['authchan'][$G_lang]);
+ $to_user = sprintf('chatt_sub("%s", [2, 0, "%s"],"%s");', $dt, NICKSERV, $mlang_brisk['authchan'][$G_lang]);
break;
}
}
/* MLANG: "Il nickname <b>\'%s\'</b> è già registrato, <b>se il suo proprietario si autentificherà verrai rinominato d\'ufficio come ghost<i>N</i>.</b>" */
if ($bdb->login_exists($name_new)) {
$prestr = sprintf($mlang_brisk['nickjust'][$G_lang], xcape($name_new));
- $to_user .= sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $prestr);
+ $to_user .= sprintf('chatt_sub("%s", [2, 0, "%s"],"%s");', $dt, NICKSERV, $prestr);
}
}
}
}
else {
/* MLANG: "Questo stato non esiste." */
- $to_user = sprintf('chatt_sub("%s", [2,"%s"],"%s");', $dt, NICKSERV, $mlang_brisk['statunkn'][$G_lang]);
+ $to_user = sprintf('chatt_sub("%s", [2, 0, "%s"],"%s");', $dt, NICKSERV, $mlang_brisk['statunkn'][$G_lang]);
break;
}
log_main("chatt_send start set");
- if (($user->flags & USER_FLAG_S_ALL) != $st) {
- $update_room = TRUE;
- $user->flags = ($user->flags & ~USER_FLAG_S_ALL) | $st;
+ if ($user->flags_vlt_set($st, USER_FLAG_S_ALL)) {
+ $update_room = TRUE;
}
} while (0);
} // nick chat command
}
if ($only_you) {
- $to_user = sprintf('chatt_sub("%s", [%d, "%s"],"%s");', $dt, $user->flags, xcape($user->name), xcape("== chat ban =="));
+ $to_user = sprintf('chatt_sub("%s", [%d, %d, "%s"],"%s");', $dt, $user->flags, $user->flags_vlt, xcape($user->name), xcape("== chat ban =="));
}
else {
- $to_user = sprintf('chatt_sub("%s", [%d, "%s"],"%s");', $dt, $user->flags, xcape($user->name), xcape($msg));
+ $to_user = sprintf('chatt_sub("%s", [%d, %d, "%s"],"%s");', $dt, $user->flags, $user->flags_vlt, xcape($user->name), xcape($msg));
// temporary silentiation for troll (will became array check)
// if (strcasecmp($user->name,'JackRokka') != 0 && $user->sess != '47ea653f602e8')
$to_room = $to_user;
}
if ($to_room != FALSE) {
- for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
- $user_cur = $this->user[$i];
- if ($target != "" && $user_cur->name != $target)
- continue;
- if ($user_cur->sess == '' || $user_cur->stat == 'table' || $user->idx_get() == $i)
- continue;
-
- if ($is_normchat == TRUE) {
- // use MAP_AUTH to check if auth or isolation
- if ($user_cur->flags & USER_FLAG_MAP_AUTH) {
- if (($user->flags & USER_FLAG_AUTH) == 0) {
- continue;
+ for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
+ $user_cur = $this->user[$i];
+ if ($target != "" && $user_cur->name != $target)
+ continue;
+ if ($user_cur->sess == '' || $user_cur->stat == 'table' || $user->idx_get() == $i)
+ continue;
+
+ if ($is_normchat == TRUE) {
+ // use MAP_AUTH to check if auth or isolation
+ if ($user_cur->flags & USER_FLAG_MAP_AUTH) {
+ if (($user->flags & USER_FLAG_AUTH) == 0) {
+ continue;
+ }
+ }
}
- }
- }
- /*
- else if ($is_ticker) {
- if (($user_cur->flags & USER_FLAG_MAP_AUTH) == USER_FLAG_ISOLAUTH) {
- if ($user->table >= TABLES_AUTH_N)
+ /*
+ else if ($is_ticker) {
+ if (($user_cur->flags & USER_FLAG_MAP_AUTH) == USER_FLAG_ISOLAUTH) {
+ if ($user->table >= TABLES_AUTH_N)
continue;
- }
+ }
+ }
+ */
+ $user_cur->comm[$user_cur->step % COMM_N] = "gst.st = ".($user_cur->step+1)."; ";
+ $user_cur->comm[$user_cur->step % COMM_N] .= $to_room;
+
+ if ($user_cur->flags_vlt_get(USER_FLAG_MODER)) {
+ $user_cur->comm[$user_cur->step % COMM_N] .= sprintf('$$(moder_win, "mainbody").innerHTML += "%s<br>";' ,
+ xcape($to_room) );
+ }
+ $user_cur->step_inc();
}
- */
- $user_cur->comm[$user_cur->step % COMM_N] = "gst.st = ".($user_cur->step+1)."; ";
- $user_cur->comm[$user_cur->step % COMM_N] .= $to_room;
- $user_cur->step_inc();
- }
}
if ($to_tabl) {
$this->user[$idx]->bantime = 0;
$this->user[$idx]->ip = $ip;
+ $this->user[$idx]->rec = $authenticate;
+ fprintf(STDERR, "MOP: [%s]\n", $authenticate->supp_comp);
$this->user[$idx]->flags = $user_type;
$this->user[$idx]->flags |= ($authenticate != FALSE ? USER_FLAG_AUTH : 0x00);
$this->user[$idx]->flags |= ( ($pass != FALSE && $bdb == FALSE) ? USER_FLAG_DBFAILED : 0x00);
log_auth("XXX", sprintf("FLAGS: [%x]", $this->user[$idx]->flags));
-
if ($authenticate != FALSE) {
- $this->user[$idx]->code = $authenticate->code_get();
- $this->user[$idx]->flags |= USER_FLAG_LISTAUTH;
-
- if (isset($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;
- }
- if (strcmp($cookie['CO_list'], "isolation") == 0) {
- $this->user[$idx]->flags &= ~USER_FLAG_MAP_AUTH;
- $this->user[$idx]->flags |= USER_FLAG_ISOLAUTH;
+ $this->user[$idx]->code = $authenticate->code_get();
+ if (0 == 1) {
+ // all this part is included in the db server
+ $this->user[$idx]->flags |= USER_FLAG_LISTAUTH;
+
+ if (isset($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;
+ }
+ if (strcmp($cookie['CO_list'], "isolation") == 0) {
+ $this->user[$idx]->flags &= ~USER_FLAG_MAP_AUTH;
+ $this->user[$idx]->flags |= USER_FLAG_ISOLAUTH;
+ }
+ else {
+ $this->user[$idx]->flags &= ~USER_FLAG_MAP_AUTH;
+ }
+ }
}
else {
- $this->user[$idx]->flags &= ~USER_FLAG_MAP_AUTH;
+ 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);
if ($ghost > -1) {
log_main("ghost: rename!");
$ghost_user = $this->user[$ghost];
$content = ' j_stand_cont( [ ';
+ $user_cur_id = $user->idx_get();
for ($i = 0 , $ct = 0 ; $i < MAX_PLAYERS ; $i++) {
- if ($this->user[$i]->sess == "" || $this->user[$i]->stat != "room" || $this->user[$i]->name == "")
- continue;
-
- $flags = $this->user[$i]->flags;
-
- if ($this->user[$i]->subst == "standup") {
- if ($user->idx_get() == $i) {
- $flags |= 1;
- }
-
- $content .= sprintf('%s[ %d, "%s" ]',($ct > 0 ? ', ' : ''), $flags, xcape($this->user[$i]->name));
- $ct++;
- }
+ if ($this->user[$i]->sess == "" || $this->user[$i]->stat != "room" || $this->user[$i]->name == "")
+ continue;
+
+ $flags = $this->user[$i]->flags;
+ $flags_vlt = $this->user[$i]->flags_vlt;
+
+ // sql record exists AND last donate > 2013-01-01
+ if ($this->user[$i]->is_supp_custom()) {
+ $supp_comp_s = sprintf(', "%s"', $this->user[$i]->rec->supp_comp);
+ }
+ else {
+ $supp_comp_s = '';
+ }
+
+ if ($this->user[$i]->subst == "standup") {
+ if ($user_cur_id == $i) {
+ $flags |= 1;
+ }
+ $content .= sprintf('%s[ %d, %d, "%s"%s ]',($ct > 0 ? ', ' : ''),
+ $flags, $flags_vlt,
+ xcape($this->user[$i]->name), $supp_comp_s);
+ $ct++;
+ }
}
$content .= ' ]);';
if ($user->stat != 'room')
return;
+ $user_cur_id = $user->idx_get();
$content = "[ ";
for ($i = 0 ; $i < $table->player_n ; $i++) {
$user_cur = $this->user[$table->player[$i]];
$flags = $user_cur->flags;
-
- if ($user->idx_get() == $table->player[$i])
+ $flags_vlt = $user_cur->flags_vlt;
+
+ if ($user_cur_id == $table->player[$i])
$flags |= 1;
log_main($user_cur->name. sprintf(" IN TABLE [%d]", $table_idx));
-
- $content .= sprintf('%s[ %d, "%s" ]',($i == 0 ? '' : ', '), $flags, xcape($user_cur->name));
+ if ($user_cur->is_supp_custom())
+ $supp_comp_s = sprintf(', "%s"', $user_cur->rec->supp_comp);
+ else
+ $supp_comp_s = '';
+
+ $content .= sprintf('%s[ %d, %d, "%s"%s ]',($i == 0 ? '' : ', '),
+ $flags, $flags_vlt,
+ xcape($user_cur->name), $supp_comp_s);
}
$content .= ' ]';
function request_mgr(&$s_a_p, $header, &$header_out, &$new_socket, $path, $addr, $get, $post, $cookie)
{
+ GLOBAL $G_black_list;
+
printf("NEW_SOCKET (root): %d PATH [%s]\n", intval($new_socket), $path);
$enc = get_encoding($header);
$content = ob_get_contents();
ob_end_clean();
- fprintf(STDERR, "\n\nCONTENT [%s]\n\n", $content);
+ // fprintf(STDERR, "\n\nCONTENT [%s]\n\n", $content);
$s_a_p->pendpage_try_addflush($new_socket, 20, $enc, $header_out, $content);
return TRUE;
if (!(BRISK_DEBUG & DBG_ENGI))
return (FALSE);
fprintf(STDERR, "TEST.PHP running\n");
- $content = "<html><body>OK</body></html>";
+ if (isset($post['data'])) {
+ $content = $post['data'];
+ }
+ else {
+ $content = "NO DATA AVAILABLE";
+ }
+ $header_out['Content-Type'] = 'text/plain';
$s_a_p->pendpage_try_addflush($new_socket, 20, $enc, $header_out, $content);
return TRUE;
break;
$dt = date("H:i ", $curtime);
for ($i = 0 ; $i < count($root_wellarr[$G_lang]) ; $i++)
- $ret .= sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, str_replace('"', '\"', $root_wellarr[$G_lang][$i]));
+ $ret .= sprintf('chatt_sub("%s", [2, 0, "%s"],"%s");', $dt, NICKSERV, str_replace('"', '\"', $root_wellarr[$G_lang][$i]));
return ($ret);
}