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