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