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