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