Move status handling to separate file
[tomato.git] / release / src / router / www / vpn.js
blobbb36c91b671fda3515e26354e4984f3fab1a1b23
1 // List of available ciphers
2 var vpnciphers = ['DES-CFB','DES-CBC','IDEA-CBC','IDEA-CFB','RC2-CBC','RC2-CFB','RC2-OFB','DES-EDE-CBC','DES-EDE3-CBC','DES-OFB','IDEA-OFB','DES-EDE-CFB','DES-EDE3-CFB','DES-EDE-OFB','DES-EDE3-OFB','DESX-CBC','BF-CBC','BF-CFB','BF-OFB','RC2-40-CBC','CAST5-CBC','CAST5-CFB','CAST5-OFB','RC5-CBC','RC5-CFB','RC5-OFB','RC2-64-CBC'];
4 // Handles parsing status files and displaying the information
5 function StatusUpdater(clients, routes, stats, time, cDiv, ncDiv, eDiv)
7         this.init(clients, routes, stats, time, cDiv, ncDiv, eDiv);
8         return this;
10 StatusUpdater.prototype =
12         init: function(clients, routes, stats, time, cDiv, ncDiv, eDiv)
13         {
14                 this.clientTable = clients? new TomatoGrid(clients,'sort',0,null): null;
15                 this.routeTable = routes? new TomatoGrid(routes,'sort',0,null): null;
16                 this.statTable = stats? new TomatoGrid(stats,'sort',0,null): null;
17                 this.statusTime = time? E(time): null;
18                 this.content = cDiv? E(cDiv): null;
19                 this.noContent = ncDiv? E(ncDiv): null;
20                 this.errors = eDiv? E(eDiv): null;
21         },
22         update: function(text)
23         {
24                 if(this.errors) this.errors.innerHTML = '';
25                 if(this.noContent) this.noContent.style.display = (text==''?'':'none');
26                 if(this.content) this.content.style.display = (text==''?'none':'');
28                 if(this.clientTable) this.clientTable.tb.parentNode.style.display = 'none';
29                 if(this.clientTable) this.clientTable.removeAllData();
30                 if(this.routeTable) this.routeTable.tb.parentNode.style.display = 'none';
31                 if(this.routeTable) this.routeTable.removeAllData();
32                 if(this.statTable) this.statTable.tb.parentNode.style.display = 'none';
33                 if(this.statTable) this.statTable.removeAllData();
35                 if(this.statTable) this.statTable.headerSet(['Name','Value']);
37                 var lines = text.split('\n');
38                 for (i = 0; text != '' && i < lines.length; ++i)
39                 {
40                         var done = false;
42                         var fields = lines[i].split(',');
43                         if ( fields.length == 0 ) continue;
44                         switch ( fields[0] )
45                         {
46                         case "TITLE":
47                                 break;
48                         case "TIME":
49                                 if(this.statusTime) this.statusTime.innerHTML = fields[1];
50                                 break;
51                         case "HEADER":
52                                 switch ( fields[1] )
53                                 {
54                                 case "CLIENT_LIST":
55                                         if(this.clientTable) this.clientTable.headerSet(fields.slice(2,fields.length-1));
56                                         break;
57                                 case "ROUTING_TABLE":
58                                         if(this.routeTable) this.routeTable.headerSet(fields.slice(2,fields.length-1));
59                                         break;
60                                 default:
61                                         if(this.errors) this.errors.innerHTML += 'Unknown header: '+lines[i]+'<br>';
62                                         break;
63                                 }
64                                 break;
65                         case "CLIENT_LIST":
66                                 if(this.clientTable) this.clientTable.tb.parentNode.style.display = '';
67                                 if(this.clientTable) this.clientTable.insertData(-1, fields.slice(1,fields.length-1))
68                                 break;
69                         case "ROUTING_TABLE":
70                                 if(this.routeTable) this.routeTable.tb.parentNode.style.display = '';
71                                 if(this.routeTable) this.routeTable.insertData(-1, fields.slice(1,fields.length-1))
72                                 break;
73                         case "GLOBAL_STATS":
74                                 if(this.statTable) this.statTable.tb.parentNode.style.display = '';
75                                 if(this.statTable) this.statTable.insertData(-1, fields.slice(1));
76                                 break;
77                         case "END":
78                                 done = true;
79                                 break;
80                         default:
81                                 if(this.errors) this.errors.innerHTML += 'Unknown: '+lines[i]+'<br>';
82                                 break;
83                         }
84                         if ( done ) break;
85                 }
86         }