source: lliurex-analytics-server/trunk/fuentes/lliurex-analytics-server/usr/lib/analytics-server/analytics/functions.php @ 6868

Last change on this file since 6868 was 6868, checked in by mabarracus, 20 months ago

Whitelist configurator implementation

File size: 8.1 KB
Line 
1<?php 
2function call_bd(){
3        return function($request,$response,$service){
4                $data=json_decode($request->stats,true);
5               
6                $db = new DB;
7                $db->connect();
8                try{
9                        if (isset($data['vers'])){
10                            $version=trim($data['vers']);
11                        }else{
12                            return 'NOK';
13                        }
14                        if (isset($data['sab'])){
15                            $sabor=trim($data['sab']);
16                        }else{
17                            return 'NOK';
18                        }
19                        if (isset($data['uid'])){
20                            $uid=trim($data['uid']);
21                        }else{
22                            return 'NOK';
23                        }
24                        if ($version == '' or $sabor == '' or $uid == ''){
25                            return 'NOK';
26                        }
27                        if (isset($data['specs'])){
28                            $specs=$data['specs'];
29                        }else{
30                            $specs=false;
31                        }
32                        if (isset($data['date'])){
33                            $db->send_data($uid,$version,$sabor,json_decode($data['stats'],true),$specs,$data['date']);
34                        }else{
35                            $db->send_data($uid,$version,$sabor,json_decode($data['stats'],true),$specs);
36                        }
37                }catch (Exception $e){
38                        //error_log($e);
39                        $db->disconnect();
40                        return 'NOK';
41                }
42                $db->disconnect();
43                return 'OK';
44        };
45}
46function modify_whitelist(){
47    return function($request,$response,$service){
48        $data=$request->status;
49        if ($data){
50            $data = json_decode($data,true);
51        }
52        $sql = 'insert into `PackagesWhitelist` (`name`,`status`) values ';
53        $str = '';
54        foreach ($data['out'] as $item){
55            $str .= "('$item',0),";
56        }
57        foreach ($data['into'] as $item){
58            $str .= "('$item',1),";
59        }
60        foreach ($data['unk'] as $item){
61            $str .= "('$item',NULL),";
62        }
63        $l=strlen($str);
64        if ($l < 1)
65            return;
66        $str[$l-1]=' ';
67        $sql .= $str;
68        $sql .= 'on duplicate key update status=VALUES(status);';
69        $db = new DB;
70        $db->connect();
71        try{
72            $db->dbconn->query($sql);
73        }catch(Exception $e){
74            return 'NOK';
75        }
76        $db->disconnect();
77        return 'OK';
78    };
79}
80
81function get_whitelist_data(){
82        return function($request,$response,$service){
83                $db = new DB;
84                $db->connect();
85                $res=$db->get_whitelist_form();
86                $db->disconnect();
87                return json_encode($res);
88        };
89}
90
91function call_get_stats(){
92        return function($request,$reponse,$service){
93
94                $db = new DB;
95                $db->connect();
96                echo $db->get_historic_data();
97                $db->disconnect();
98        };
99}
100
101function call_get_system_stats(){
102    return function($request,$response,$service){
103        $db = new DB;
104        $db->connect();
105        echo $db->get_system_data();
106        $db->disconnect();
107    };
108}
109
110function call_get_extended_stats(){
111        return function($request,$reponse,$service){
112                $app=$request->param('app');
113                $db = new DB;
114                $db->connect();
115                echo $db->get_extended_data($app);
116                $db->disconnect();
117        };
118}
119
120function call_getlist(){
121        return function($request,$reponse,$service){
122                $list = array();
123                $the_file = 'blacklist.txt';
124                if ( !is_file($the_file)) {
125                    return json_encode($list);
126                }
127                try{
128                    $content = file_get_contents('blacklist.txt');
129                    foreach (explode("\n",$content) as $item){
130                        $item = trim($item);
131                        if ( $item != '') {
132                            $list[] = $item;
133                        }
134                    }
135                }catch(Exception $e){}
136                return json_encode($list);
137        };
138}
139
140
141
142function call_show_stats(){
143
144return function($request,$reponse,$service){
145
146echo '<html>
147  <head>
148    <!--Load the AJAX API-->
149    <!--<script type="text/javascript" src="https://www.google.com/jsapi"></script>-->
150    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
151    <script type="text/javascript" src="jquery.min.js"></script>
152    <script type="text/javascript" src="graph_min.js"></script>
153
154    <script type="text/javascript">
155        google.charts.load("current", {packages: ["corechart"],"language":"es"});
156        google.charts.setOnLoadCallback(doChart);
157    </script>
158    <link href="ui/jquery-ui.css" rel="stylesheet">
159    <link href="graph.css" rel="stylesheet">
160    <script type="text/javascript" src="ui/jquery-ui.js"></script>
161  </head>
162  <body>
163  <div id="header"><span class="title">Lliurex-Analytics <a class="go_to_other" href="ShowExtendedStats">[Extended stats]</a></span><div id="stats_box"></div></div>
164  <div id="accordion"></div>
165  </body>
166</html>
167';
168
169};
170
171}
172
173function call_show_system_stats(){
174
175return function($request,$reponse,$service){
176
177echo '<html>
178  <head>
179    <!--Load the AJAX API-->
180    <!--<script type="text/javascript" src="https://www.google.com/jsapi"></script>-->
181    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
182    <script type="text/javascript" src="jquery.min.js"></script>
183    <script type="text/javascript" src="sysstats_min.js"></script>
184    <script type="text/javascript">
185        google.charts.load("current", {packages: ["corechart"],"language":"es"});
186        google.charts.setOnLoadCallback(initialize);
187    </script>
188    <link href="ui/jquery-ui.css" rel="stylesheet">
189    <link href="graph.css" rel="stylesheet">
190    <script type="text/javascript" src="ui/jquery-ui.js"></script>
191  </head>
192  <body>
193  <div id="chart_div"></div>
194  </body>
195</html>
196';
197
198};
199
200}
201function call_show_extended_stats(){
202
203return function($request,$reponse,$service){
204
205echo '<html>
206  <head>
207    <!--Load the AJAX API-->
208    <!--<script type="text/javascript" src="https://www.google.com/jsapi"></script>-->
209    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
210    <script type="text/javascript" src="jquery.min.js"></script>
211    <script type="text/javascript" src="graph_min.js"></script>
212
213    <script type="text/javascript">
214        google.charts.load("current", {packages: ["corechart"],"language":"es"});
215        google.charts.setOnLoadCallback(doExtendedChart);
216    </script>
217    <link href="ui/jquery-ui.css" rel="stylesheet">
218    <link href="graph.css" rel="stylesheet">
219    <script type="text/javascript" src="ui/jquery-ui.js"></script>
220    <script type="text/javascript">$(document).ready(function(){function send_query(){window.location.href=window.location.pathname+"?app="+$("#query_box>input").val()};$("#query_box>input").on("keyup",function(e){if (e.keyCode == 13){send_query()}});$("#query_box>button").click(send_query)});</script>
221  </head>
222  <body>
223  <div id="header"><div id="query_box"><span>Search by app:</span><input type="search" name="app_search"></input><button>Search</button></div><span class="title">Lliurex-Analytics <a class="go_to_other" href="ShowStats">[Simple stats]</a></span><div id="stats_box"></div></div>
224  <div id="accordion"></div>
225  </body>
226</html>
227';
228
229};
230
231}
232
233function call_configure_whitelist(){
234
235return function($request,$reponse,$service){
236
237echo "<html>
238  <head>
239    <!--Load the AJAX API-->
240    <script type='text/javascript' src='jquery.min.js'></script>
241    <link href='whitelist.css' rel='stylesheet'>
242    <script type='text/javascript' src='whitelist.js'></script>
243    <script type='text/javascript'>$(document).ready(start)</script>
244  </head>
245  <body>
246    <div id='header'><span class='title'>Lliurex-Analytics whitelist configurator</span></div>
247    <div id='configure_whitelist'>
248        <div id='nonwhitelist'>
249            <span>Not in whitelist</span>
250            <select name='denied' multiple>
251            </select>
252        </div>
253        <div id='btn_left'>
254            <button id='btnleft_to_left'>&lt;&lt;&lt;</button>
255            <button id='btnleft_to_center'>&gt;&gt;&gt;</button>
256        </div>
257        <div id='unknown_state_whitelist'>
258            <span>New elements</span>
259            <select name='nonselected' multiple>
260            </select>
261        </div>
262        <div id='btn_right'>
263            <button id='btnright_to_right'>&gt;&gt;&gt;</button>
264            <button id='btnright_to_center'>&lt;&lt;&lt;</button>
265        </div>
266        <div id='inwhitelist'>
267            <span>In whitelist</span>
268            <select name='accepted' multiple>
269            </select>
270        </div>
271    </div>
272    <div id='send'>
273        <button id='send_btn'>Apply</button>
274    </div>
275  </body>
276</html>
277";
278
279};
280
281}
282
283
284?>
Note: See TracBrowser for help on using the repository browser.