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