ping_req attribute added to User class
[brisk.git] / TODO.txt
1  TODO |
2 ------+
3
4   FEATURES |
5  ----------+
6    - CERTIFICATIONS
7       DONE . Guarantes for certified-only (buttons choice managed)
8       DONE . Tables for certified-only
9       . Term Of Use
10       . Placing for certified-only
11
12    - IP CLASSES BAN
13       DONE . BAN and BLACK lists added
14       DONE . update method to SIGHUP manager
15       DONE . create constructor refactored
16
17    - PLACEMENT-NORMALIZATION
18       DONE . Normalize previous points
19       DONE . Denormalize "Info" view
20       DONE . Denormalize explained matches
21       DONE . Check placement
22       DONE . Distinguish between inherited mult and local mult
23
24    - AUTO-MAINTENANCE
25      DONE . Terms Of Service acceptance
26        DONE . print date of hard switch
27        DONE . TOS version
28        DONE . user TOS acceptance (db field)
29        DONE . show TOS ([show me later, yes, no]/[yes, no])
30        DONE . switch-off date
31        DONE . manage accept
32        DONE . manage refuse
33        DONE . show current TOS
34        DONE . disable user reason integer field and remove SUSPEND state (db, php)
35        DONE . fix tos layout
36        DONE . opt - download TOS
37        . opt - checkbox for anonimous users with message when not checked
38        . opt - button enabled when arrived to the bottom of the TOS only
39        . opt - check TOS version between config file and TOS file
40      DONE . show guarantee (/guar <login> command)
41        DONE . multi-language
42        DONE . command documentation
43        DONE . manage disagreeding users investigation
44        DONE . self guaranteed
45      . DONE New Users Guarantee Procedure
46        . DONE Change guarantee workflow
47        . DONE Db update
48
49          UserA                 UserB                      Admin
50 -------------------------------------------------------------------------
51       guarante UserB
52            |
53            v
54       Save on mail
55          table,
56       email to UserB
57     (Disabled, MAILED)
58 -------------------------------------------------------------------------
59                            Receive email
60                            to check address
61                                  |
62                                  v
63                            Click on link
64                                  |
65                                  v
66                            Check on mail
67                                table,
68                            update user status,
69                            delete mail rec
70                           (Disabled, TOBECHK)
71 -------------------------------------------------------------------------
72                                                        admin panel
73                                                        accept user
74                                                             |
75                                                             v
76                                                      send email with
77                                                      password,
78                                                      update user status
79                                                       (Normal, NONE)
80 -------------------------------------------------------------------------
81                            Receive email
82                            with password
83 -------------------------------------------------------------------------
84
85      DONE . More user info in the list
86      DONE . Manage date to display when a user was required
87      . Email-address expiration check
88      . Account expiration
89
90
91    DONE - CONTINUE FEATURE
92      DONE . replace explicit strings with multilanguage array
93      DONE . add a php downloader with filtering on allowed requests
94      DONE . save points every game
95      DONE . modify points calculation to include order and mazzo
96      DONE . exclude not standard types from statistics
97          DONE . daily reports (1 for each active tournament)
98          DONE . monthly stats (for normal match only)
99      DONE . show current match ID when created
100      DONE . add info about continue to the info page
101      DONE . add command to continue
102          DONE . check consistency of the request
103      DONE . rearrange users and game status to continue the selected match
104      DONE . investigate user reordering ??
105
106    - WEBSOCKET TRANSPORT
107      . refactoring $enc attribute management
108      DONE . reintroduced $enc = 'plain' for websocket
109      DONE . fallback for not correct WS version
110      DONE . fini of ws stream
111      DONE . reactivate compression
112      DONE . fix xynt_test01
113      DONE M2: brisk working
114      DONE . manage multiport apache config
115      DONE . manage headers correctly in sac-a-push
116      DONE . manage transport.close method where required
117      DONE . xynt_stream: manage fallback to multiple ports
118      DONE . manage fini for ws
119      POST . server: manage input data from clients
120      POST . manage ping/pong (seems not required)
121
122      DONE . client (xynt_streaming.js)
123      DONE . server (transport.phh)
124
125      DONE M1: xynt_test01.php working
126
127
128    - improved S
129      . db update (add components, maybe single string)
130      . filter in index.php
131      . filter in index_wr.php
132
133    - prefs API:
134      . prefs_assign(content): assign json content as output var
135      . prefs_apply(prefs_new): apply new content to g_prefs and system
136      . prefs_load(content): load json content and apply to g_prefs and system
137
138      . prefs_update: update preferences temporarly
139      . prefs_save: save to the server the new prefs
140
141    - preferences (listen into preferences)
142         // js var, volatile server, (db server || cookie)
143         temporary: js var, volatile server
144         permanent: js var, volatile server, (db server || cookie)
145
146      . data from db OR, if missing, from cookies
147
148      . update values
149      . database change
150      . MANAGE NOT AUTH USERS
151
152    - preferences (with "modifiable S")
153      . Mod. S: new flag into database
154      . graph infrastructure
155      . new box to edit color
156
157   MAJOR |
158  -------+
159    - BUG: some connection to the named socket fails
160    - Not simultaneous more then one stream
161
162
163   MINOR |
164  -------+
165    WIP - try to be more antivirus-friendly
166    - multiple rows between games
167    - packetize and automatize php-ancillary and apache module
168    - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
169
170
171   DONE |
172  ------+
173    DONE - temporarly server hung not reflected on user timeouts
174    DONE - timeouted users are still be able to sit down (only the first at the table is banned)
175    DONE - page still opened after the server restart
176    DONE - log_legal address fix
177    DONE - manage too fast reload in xynt-streaming
178    DONE - add xhr as transport layer and manage different streams better
179    TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
180    TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
181    DONE - save/restore database
182    DONE - into the room local step remains -1
183    DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
184    DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found" 
185           in the first tentative, the second works
186    DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the 
187           problem was a call to a static parent method instead of the overrided child method,
188           substitute self:: with the dynamically get class::)
189    DONE - garbage management
190
191    DONE/FROZEN - problem with getpeer (HOSTADDR)
192
193    DONE - slow cards distribution
194    DONE - substr to mb_substr
195    DONE - parametrizations:
196           . parametrization of $DOCUMENT_ROOT  var in brisk-spush.phh file
197           . parametrization of SITE_PREFIX(_LEN) define
198           . move the name of the named socket into the configuration file
199    DONE - manage and test cross forwarder between table and room
200    DONE - setcookie (for tables only and persist prefs)
201    DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
202    DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
203    DONE - unneeded garbage_time.expired access
204    DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
205    DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
206    DONE - 404 wrong page management (remove directories redirections (es. brisk/))
207    DONE - configuration file management
208    DONE - app level keep-alive
209    DONE - index_wr other issues
210    DONE - from room to table
211    DONE - from table to room
212    DONE - chunked
213    DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
214    DONE - partial write for normal page management
215    DONE - index_rd_ifra: last_clean issue
216    DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
217    DONE - bug: after restart index_rd.php receive from prev clients a lot of req
218    DONE - index_wr.php::chat
219    DONE - index_wr.php::exit
220    DONE - index_rd.php porting
221    DONE - generic var management from internet
222    DONE - index.php auth part
223    ABRT - index_wr.php::reload - reload is js-only function
224    ABRT - keepalive management - not interesting for our purposes
225
226  BRISK4 (mammuth)
227  ======
228
229  - STEP MANAGEMENT VERIFY
230  Slim Paragraph
231  DONE - move the garbage timeout on file
232  DONE - in index_rd load all data only when required
233  - briskin5 alignment
234    DONE . extern del garb_timeout
235    DONE . user_load parameters verify
236    DONE . Bin5::load_data and Bin5::save_data refactoring with
237           data split
238    . move many function into "Bin5 class"
239  - garbaging of .step files
240
241  DB: - initial usage
242      DONE - configurabilitĂ  file o db
243      DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
244      DONE - travasatore file to pg
245        DONE - travaso punteggi
246        DONE - memorizzazione nuovi i punteggi nel db
247        DONE - gestione classifiche in SQL
248          DONE - produrle
249          DONE - mostrarle
250
251      STEP 1.1
252        DONE - points archiver
253
254      STEP 1.2
255        DONE - partial usability if database go down.
256
257      STEP 1.5
258      - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
259
260      STEP 2
261      - modifica password   
262      - ripristino password 
263
264      STEP 3
265      - comunicazioni di aggiornamento (stato salvato sul server) 
266
267  DONE - var $G_base aggiunta per gestire include in include da path differenti
268
269  BRISK3 (trusty)
270  ======
271   DONE - donameter
272     DONE - G_donors
273     DONE (WOW!) - js object with infos
274     DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
275            to prevent fast reload)
276     DONE - cookie per non assillare e visualizz.
277     DONE - graphical donameter
278     WIP content (in conf.)
279
280   DONE - numero di tavoli auth-only nel .brisk-install
281   - isolation
282     TEST - ricalcolo delle persone in piedi quando si cambia modalitĂ 
283     DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
284     DONE - non leggere le chat di quelli non autenticati (in isolation)
285     DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati) 
286     DONE - treni non auth da nascondere 
287     DONE - verso gli altri ??: uguale a prima
288
289   finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
290   coniglio
291   only auth strictly
292   placing limits to config file
293
294 Dunque, 
295
296 - come vengono aggiornate le classifiche: ogni giorno alle 23:58
297
298 - cosa cambia tra le tre coppie di classifiche: 
299   ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese,  e quelle dell' ultimo trimestre,
300   per ognuno di questi lassi di tempo poi c'è la classifica di chi ha giocato piĂą di TOT partite o meno di TOT partite, con TOT che cambia a seconda del lasso di tempo.
301
302 - come vengono calcolate le classifiche: per ogni utente vengono presi tutti i punti fatti ai tavoli con lucchetto nel lasso di tempo preso in considerazione (ultima settimana, ultimo mese o ultimo trimestre), sommati e divisi per il numero di partite fatte in quello stesso lasso di tempo per normalizzare i valori; poi siccome la gente quando vede 0.18734 sbarella ho deciso di moltiplicare il tutto per 100.
303
304 Un esempio per chiarire:
305
306   l'utente 'pippo' che Ă¨ nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
307     -2, 1, 2, 1
308   lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 }  * 100 = 50.0
309   
310   a paritĂ  di score tra utenti va piĂą in alto chi ha giocato piĂą partite.
311
312 Se dopo quelle 4 partite 'pippo' non ne giocherĂ  piĂą, passata una settimana dall'ultima giocata 
313 sparirĂ  dalla classifica settimanale e rimarrĂ  in quelle mensili e trimestrali.
314
315
316   
317
318
319
320
321  BUG
322  ---
323  
324   DONE - paste da demauroparavia
325   DONE - recupero partita per re-login con password
326   DONE - problema "|" nei nomi (manca enhance degli script lato server)
327   - problema col treno se mouse sopra mentre stringe (verif)
328   
329  MINOR
330  -----
331
332  NORMAL
333  ------
334
335   - win test
336   WIP - /listen 
337     DONE - skin della textarea
338     DONE - set cookie 
339     DONE - init client (read from cookie) - ALWAYS BY SERVER
340     DONE - init server
341     DONE - after cookie check auth-only when no-auth case
342     DONE - aggiungi info accanto a "Chat"
343   DONE - /mesgtoadm
344   DONE - img dei comandi
345
346   DONE - form per garantire utenti (accoda in un file nel formato corretto)
347   DONE -   process request
348   DONE -   show form
349   DONE -   close butt
350   DONE -   submit form
351   DONE -   process form js side 
352   DONE -   process form
353   DONE -   documentazione in help
354
355   DONE - user status
356
357   DONE - aggiornare help
358   DONE -   overflow management
359   DONE -   for status
360   -   for password
361
362   DONE - reload home
363   - notify for long pages
364
365   - buddy list
366   - silenziastolti vari (fino al buddy import)
367   - restrict challenge per IP
368   - restricted charset for login
369   - watchdog
370
371   - db (minimal)
372     - db admin page
373     - user db admin
374     - use db 
375     - admin db
376
377     - studiare un anti-dos
378   - login modify
379  DONE  - db (fake)
380  DONE  - display auth
381     - manage preferences 
382
383  minor
384  -----
385    - auth after login
386
387 ----- done ------
388
389  BUG
390  ---
391   DONE   righe troncate
392   DONE - questione "a monte" che:
393   DONE   - lascia fuori il bottone
394   DONE   - scrive &agrave e compagnia
395   DONE - refresh act_table when unauthorized
396   DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
397
398  MINOR
399  -----
400   DONE - refactoring of the owner name (auth attr for owner name)
401   DONE   - room
402   DONE     - at chat input line 
403   DONE     - in the chat output line
404   DONE     - deauth management
405   DONE - table
406   DONE   - at chat input line
407   DONE   - in the chat output line
408   DONE   - for user area of other users
409   DONE   - deauth management
410   DONE - alart to one user
411
412
413  NORMAL
414  ------
415   DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
416   DONE   - login: se auth      -  verifica solo gli expire per quel nick
417   DONE   -        se non auth  -  verifica gli expire per IP e sessione
418   DONE   - riscrivere messaggi
419
420   DONE - login 
421   DONE   - se pass:
422   DONE     - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
423   DONE     - lo legge, ci hasha la password
424   DONE     - invia la pass al server hashata
425   DONE   - se non pass:
426   DONE     - check del login e return corretto
427   DONE     - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
428   DONE     - rename ghost if logged
429   DONE     - onunload_cb e onbeforeunload_cb !!! 
430   DONE   - da change attrs a change class (input field)
431   DONE     - colore del bg per arrivare ad essere omogeneo
432   DONE     - cambiare path e file di config
433   DONE   - login with or without pass
434   DONE   - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
435   DONE     - segnalare tavoli solo per auth
436   DONE     - rename restriction at auth table
437   DONE     - change nick (strcasecmp)
438   DONE   - refact js tables to handle flags
439   DONE - room javascript refactoring
440
441   DONE - work background
442   DONE - reserved tables
443
444
445  BRISK2 (spawn)
446  ======
447
448    
449    URGENT - tables spawn
450             DONE - link with photos
451             DONE - top banner in Etc file
452             DONE - spawn of a table
453             DONE - data to cookies (removed table_idx from xhr calls also)
454             DONE - set subst to shutdowner/shutdowned
455             DONE - return to index.php
456             DONE - game's token
457             DONE - recover of corrupted table data
458             DONE - closure of a table
459             DONE - flush of the table
460             DONE - security checks for right scope access
461             DONE - garbage collector management
462             DONE -    recursive garbage - howto ?
463             DONE - stat & subst in browser
464             DONE - laccwr setting and exit if all players are unactive for some time
465             DONE - the list of test case
466             DONE - shm dimension
467             DONE - remove unused parts
468             DONE - move images
469             DONE - optimizations
470             DONE - cambiare titolo al tavolo
471             DONE - shutdowning lock tables
472             DONE - topbanner
473             DONE - public announcements
474             DONE - 10 sec to exit from table
475
476             FAR - inheritances
477    
478    TRAIN  -  DONE - add again in reload   
479              DONE - wag_set refact
480              DONE - filtra char speciali per title
481              DONE - chatt_send refact 
482              DONE - elenco dei giocatori
483              DONE - documentazione online
484              DONE - timeout management     
485              LATER - border color a muzzo
486        
487    NORM   - testament
488    NORM   - public announcements
489    NORM   - 10 sec to exit from table
490    NORM   - moving label for tables click
491
492 ----------------- join -----------------
493    NORM   - map
494
495    NORM   - restart preload img
496    NORM   - tools dir with a main and some pages where check briscola tools.
497    NORM   - watchdog
498
499    NORM   - chat vecchie in reload (forse)
500
501  MIDDLE TODO
502  ===========
503
504    - user assistant (with button to enable disable)
505    - documentation
506
507
508  FAR TODO
509  ========
510    NORM - internationalization
511    NORM - img -> div + css
512    
513  WEB
514  ===
515
516    - link to stable/unstable
517
518 -------------------------------------------------------------------
519  DONE
520  ====
521
522    ABORTED - asta: highlight buttons (css hover) - change pointer when over
523    DONE - step proxy
524    DONE - special chars in js
525    DONE - ban temporaneo dai tavoli
526    DONE - flash player to play sound
527    DONEBUG - (aum. il timeout) - carte giocate che restano girate
528          Sembra non migliorare di molto la cosa, gestita la cache
529          correttamente, sono apposto.
530
531    DONE - one player reject a game, to less points (<= 2)
532    DONE - help page
533    DONE - test di download per la cache
534    DONE - se passano tutti tranne l'ultimo l'asta va al penultimo.
535           Corretto il codice, occorre verificare se questo
536           ingenera qualche problema.
537    DONE - raddoppiato il numero di righe nella chat
538    DONE - corretto bug del /nick
539    DONE - carosello pubblicitĂ  altout
540    DONE - smammamorti
541    DONE - unload of the stream
542    DONE - standup centrati
543    DONE - current player - in info
544    DONE - HELP butt con ABOUT, REGOLE, VERSIONE
545    DONE - welcome lines in the chats (room and table)
546    DONE - welcome lines in the chats (room and table)
547    DONE - nomi in primo piano se vai sul quadrato   
548    DONE - to pass explicit config file to INSTALL.sh
549    DONE - flag to create a config file
550    ABRT - bottoni => immagini
551    DONE - aggiungere bottone al login
552    DONE - nomi in primo piano se vai sul quadrato   
553    DONE - installer to set cookie path
554    DONE - change name
555    DONE - automatic and manual logout
556    DONE - cache problems solved via .htaccess
557    DONE - all players out of the auction
558    DONE - time to send cards
559    DONE - hide cards before sends at a new game
560    DONE - well recognization of the browser and O.S.
561    DONE - login consistency !!!!
562    DONE - functionalization of garbage
563    DONE - call garbage function into login
564    DONE - game
565    DONE - manage the reload from scratch of the table page
566    DONE - table reset
567    DONE - sendcard => card_send(idx, ....)
568    DONE - show table for game
569    DONE - points calculation
570    DONE - make-up of the chooser
571    DONE - where place the briscola on the table
572    DONE - users info
573    DONE - show current auction position
574    DONE - table with internal management of the transition between pages.
575    DONE - server side page abort management  
576    DONE - cookie problem with Ajax
577    DONE - spostare il tasto "esco"
578    DONE - to pass explicit config file to INSTALL.sh 
579    DONE - 8 tables
580    DONE - safety out management
581    DONE - info enhancement and related button (how win the last game and
582           with how much points ?)
583
584  WEB
585    DONE - homepage
586    DONE - screenshots
587
588 DOC
589    CHAPTERS
590       HTTP Streaming
591       Local serializer
592       Database on shmem
593       Page abort (reload on http streaming case)
594       Chat
595       Cookies management
596       CSS tricks
597
598 CHECK ON NEW SERVERS
599 .htaccess AllowOverwrite mode for Cache-Control directive
600
601
602
603
604 */
605