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