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