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

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

Whitelist implementation

File size: 9.6 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_lliurex_stats(){
102        return function($request,$reponse,$service){
103
104                $db = new DB;
105                $db->connect();
106                echo $db->get_historic_data('whitelist');
107                $db->disconnect();
108        };
109}
110
111function call_get_system_stats(){
112    return function($request,$response,$service){
113        $db = new DB;
114        $db->connect();
115        echo $db->get_system_data();
116        $db->disconnect();
117    };
118}
119
120function call_get_extended_stats(){
121        return function($request,$reponse,$service){
122                $app=$request->param('app');
123                $db = new DB;
124                $db->connect();
125                echo $db->get_extended_data($app);
126                $db->disconnect();
127        };
128}
129
130function call_getlist(){
131        return function($request,$reponse,$service){
132                $list = array();
133                $the_file = 'blacklist.txt';
134                if ( !is_file($the_file)) {
135                    return json_encode($list);
136                }
137                try{
138                    $content = file_get_contents('blacklist.txt');
139                    foreach (explode("\n",$content) as $item){
140                        $item = trim($item);
141                        if ( $item != '') {
142                            $list[] = $item;
143                        }
144                    }
145                }catch(Exception $e){}
146                return json_encode($list);
147        };
148}
149
150
151
152function call_show_stats(){
153
154return function($request,$reponse,$service){
155
156echo '<html>
157  <head>
158    <!--Load the AJAX API-->
159    <!--<script type="text/javascript" src="https://www.google.com/jsapi"></script>-->
160    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
161    <script type="text/javascript" src="jquery.min.js"></script>
162    <script type="text/javascript" src="graph_min.js"></script>
163
164    <script type="text/javascript">
165        google.charts.load("current", {packages: ["corechart"],"language":"es"});
166        google.charts.setOnLoadCallback(function(){doChart("")});
167    </script>
168    <link href="ui/jquery-ui.css" rel="stylesheet">
169    <link href="graph.css" rel="stylesheet">
170    <script type="text/javascript" src="ui/jquery-ui.js"></script>
171  </head>
172  <body>
173  <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>
174  <div id="accordion"></div>
175  </body>
176</html>
177';
178
179};
180}
181
182function call_show_lliurex_stats(){
183
184return function($request,$reponse,$service){
185
186echo '<html>
187  <head>
188    <!--Load the AJAX API-->
189    <!--<script type="text/javascript" src="https://www.google.com/jsapi"></script>-->
190    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
191    <script type="text/javascript" src="jquery.min.js"></script>
192    <script type="text/javascript" src="graph_min.js"></script>
193
194    <script type="text/javascript">
195        google.charts.load("current", {packages: ["corechart"],"language":"es"});
196        google.charts.setOnLoadCallback(function(){doChart("whitelist")});
197    </script>
198    <link href="ui/jquery-ui.css" rel="stylesheet">
199    <link href="graph.css" rel="stylesheet">
200    <script type="text/javascript" src="ui/jquery-ui.js"></script>
201  </head>
202  <body>
203  <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>
204  <div id="accordion"></div>
205  </body>
206</html>
207';
208
209};
210}
211
212function call_show_system_stats(){
213
214return function($request,$reponse,$service){
215
216echo '<html>
217  <head>
218    <!--Load the AJAX API-->
219    <!--<script type="text/javascript" src="https://www.google.com/jsapi"></script>-->
220    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
221    <script type="text/javascript" src="jquery.min.js"></script>
222    <script type="text/javascript" src="sysstats_min.js"></script>
223    <script type="text/javascript">
224        google.charts.load("current", {packages: ["corechart"],"language":"es"});
225        google.charts.setOnLoadCallback(initialize);
226    </script>
227    <link href="ui/jquery-ui.css" rel="stylesheet">
228    <link href="graph.css" rel="stylesheet">
229    <script type="text/javascript" src="ui/jquery-ui.js"></script>
230  </head>
231  <body>
232  <div id="chart_div"></div>
233  </body>
234</html>
235';
236
237};
238
239}
240function call_show_extended_stats(){
241
242return function($request,$reponse,$service){
243
244echo '<html>
245  <head>
246    <!--Load the AJAX API-->
247    <!--<script type="text/javascript" src="https://www.google.com/jsapi"></script>-->
248    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
249    <script type="text/javascript" src="jquery.min.js"></script>
250    <script type="text/javascript" src="graph_min.js"></script>
251
252    <script type="text/javascript">
253        google.charts.load("current", {packages: ["corechart"],"language":"es"});
254        google.charts.setOnLoadCallback(doExtendedChart);
255    </script>
256    <link href="ui/jquery-ui.css" rel="stylesheet">
257    <link href="graph.css" rel="stylesheet">
258    <script type="text/javascript" src="ui/jquery-ui.js"></script>
259    <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>
260  </head>
261  <body>
262  <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>
263  <div id="accordion"></div>
264  </body>
265</html>
266';
267
268};
269
270}
271
272function call_configure_whitelist(){
273
274return function($request,$reponse,$service){
275
276echo "<html>
277  <head>
278    <!--Load the AJAX API-->
279    <script type='text/javascript' src='jquery.min.js'></script>
280    <link href='whitelist.css' rel='stylesheet'>
281    <script type='text/javascript' src='whitelist_min.js'></script>
282    <script type='text/javascript'>$(document).ready(start)</script>
283  </head>
284  <body>
285    <div id='header'><span class='title'>Lliurex-Analytics whitelist configurator</span></div>
286    <div id='configure_whitelist'>
287        <div id='nonwhitelist'>
288            <span>Not in whitelist</span>
289            <div id='filternot' class='filter'>Filter:<textarea rows='1'></textarea></div>
290            <select name='denied' multiple>
291            </select>
292        </div>
293        <div id='btn_left'>
294            <button id='btnleft_to_left'>&lt;&lt;&lt;</button>
295            <button id='btnleft_to_center'>&gt;&gt;&gt;</button>
296        </div>
297        <div id='unknown_state_whitelist'>
298            <span>New elements</span>
299            <div id='filterunk' class='filter'>Filter:<textarea rows='1'></textarea></div>
300            <select name='nonselected' multiple>
301            </select>
302        </div>
303        <div id='btn_right'>
304            <button id='btnright_to_right'>&gt;&gt;&gt;</button>
305            <button id='btnright_to_center'>&lt;&lt;&lt;</button>
306        </div>
307        <div id='inwhitelist'>
308            <span>In whitelist</span>
309            <div id='filterin' class='filter'>Filter:<textarea rows='1'></textarea></div>
310            <select name='accepted' multiple>
311            </select>
312        </div>
313    </div>
314    <div id='send'>
315        <button id='send_btn'>Apply</button>
316    </div>
317  </body>
318</html>
319";
320
321};
322
323}
324
325
326?>
Note: See TracBrowser for help on using the repository browser.