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