powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Не показывает информацию одного протокола
3 сообщений из 3, страница 1 из 1
Не показывает информацию одного протокола
    #39854551
skyboyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть семь протоколов в JSON файле.

Когда запускаю проект, у меня показывает все семь протоколов.

В 1,2,3,4,6,7 информацию можно посмотреть. Но когда на 5 протоколе информацию он не показывает, хотя в JSON файле информацие есть о 5 протоколе.

Сначала была проблема, не было информации о роутере в 5 протоколе, но я написал чтобы допустим если нет информации о роутере в 5 протоколе то он автоматически ставит значение - 0.

Не знаете почему в остальных протоках есть информация на сайте, а вот на пятом протоколе ее нет.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
@Controller
public class LookingGlassController {

    private final static String BGP_URL = "http://80.241.0.85/api/protocols/bgp";
    private final static String BGP_DETAILS_URL = "http://80.241.0.85/api/protocol/";
    private final static String TABLE_URL = "http://80.241.0.85/api/routes/table/";
    private final static String ROUT_URL = "http://80.241.0.85/api/route/";

    /**
     *
     * @param lang
     * @return
     */
    @RequestMapping("/{lang:ru|kk|en}/lookingglass/bgp")
    public ModelAndView bgp(@PathVariable String lang) {

        List<BGPData> bgpDateList = new ArrayList<>();
        try {
            JSONObject json = new JSONObject(IOUtils.toString(new URL(BGP_URL), Charset.forName("UTF-8")));

            JSONObject protocols = json.getJSONObject("protocols");
            Map<String, Object> prots = protocols.toMap();
            for (String prot_name : prots.keySet()) {
                JSONObject prot = protocols.getJSONObject(prot_name);
                String protocol = prot.getString("protocol");
                String neighborAddress = prot.getString("neighbor_address");
                String description = prot.getString("description");
                Integer asn = prot.getInt("neighbor_as");
                String tableName = prot.getString("table");
                String status = prot.getString("bgp_state");

                Integer routeImport = 0;
                Integer routeExport = 0;
                if (prot.has("routes")) {
                    JSONObject routesJs = prot.getJSONObject("routes");
                    routeImport = routesJs.has("imported") ? routesJs.getInt("imported") : 0;
                    routeExport = routesJs.has("exported") ? routesJs.getInt("exported") : 0;
                }
                Integer importLimit = prot.getInt("import_limit");

                String tableLink = "/" + lang + "/lookingglass/table/" + tableName;

                String protocolDetailLink = "/" + lang + "/lookingglass/bgpdetails/" + protocol;

                BGPData bgpData = new BGPData();
                bgpData.setProtocol(protocol);
                bgpData.setProtocolDetailLink(protocolDetailLink);
                bgpData.setNaighbord(neighborAddress);
                bgpData.setDescription(description);
                bgpData.setAsn(asn);
                bgpData.setTableName(tableName);
                bgpData.setStatus(status);
                bgpData.setRouteImport(routeImport);
                bgpData.setRouteExport(routeExport);
                bgpData.setImportLimit(importLimit);
                bgpData.setTableLink(tableLink);
                bgpDateList.add(bgpData);
            }

        } catch (IOException | JSONException ex) {
                    
        }

        Map<String, Object> outMap = new HashMap();
        outMap.put("lang", lang);
        outMap.put("bgpDataList", bgpDateList);
        outMap.put("lgSearchData", new LgSearchData());

        return new ModelAndView("/site/lookingglass/bgp", outMap);
    }


    /**
     *
     * @param lang
     * @param protocol
     * @return
     */
    @RequestMapping("/{lang:ru|kk|en}/lookingglass/bgpdetails/{protocol}")
    public ModelAndView bgp_details(@PathVariable String lang, @PathVariable String protocol) {

        BGPDetailData bgpDetalisData = new BGPDetailData();

        try {
            JSONObject json = new JSONObject(IOUtils.toString(new URL(BGP_DETAILS_URL + protocol), Charset.forName("UTF-8")));

            JSONObject protocolJs = json.getJSONObject("protocol");

            String bird_protocol = protocolJs.getString("bird_protocol");
            String state = protocolJs.getString("state");
            String state_changed = protocolJs.getString("state_changed");
            String connection = protocolJs.getString("connection");

            String description = protocolJs.getString("description");
            Integer preference = protocolJs.getInt("preference");
            String input_filter = protocolJs.getString("input_filter");
            String output_filter = protocolJs.getString("output_filter");
            Integer import_limit = protocolJs.getInt("import_limit");
            String limit_action = protocolJs.getString("limit_action");

            Integer routes_imported = 0;
            Integer routes_exported = 0;
            Integer routes_preferred = 0;
            if (protocolJs.has("routes")) {
                JSONObject routesJs = protocolJs.getJSONObject("routes");
                routes_imported = routesJs.has("imported") ? routesJs.getInt("imported") : 0;
                routes_exported = routesJs.has("exported") ? routesJs.getInt("exported") : 0;
                routes_preferred = routesJs.has("preferred") ? routesJs.getInt("preferred") : 0;
            }

            JSONObject jsO = protocolJs.getJSONObject("route_changes").getJSONObject("import_updates");
            String route_change_import_updates = getRouteChange(jsO);
            jsO = protocolJs.getJSONObject("route_changes").getJSONObject("import_withdraws");
            String route_change_import_withdraws = getRouteChange(jsO);
            jsO = protocolJs.getJSONObject("route_changes").getJSONObject("export_updates");
            String route_change_export_updates = getRouteChange(jsO);
            jsO = protocolJs.getJSONObject("route_changes").getJSONObject("export_withdraws");
            String route_change_export_withdraws = getRouteChange(jsO);

            String bgp_state = protocolJs.getString("bgp_state");
            String neighbor_address = protocolJs.getString("neighbor_address");
            Integer neighbor_as = protocolJs.getInt("neighbor_as");
            String neighbor_id = "";
            try {
                neighbor_id = protocolJs.getString("neighbor_id");
            } catch (JSONException ex) {
            }

            String neighbor_capabilities = "";
            try {
                JSONArray ar = protocolJs.getJSONArray("neighbor_capabilities");
                for (Object aspo : ar) {
                    neighbor_capabilities += (String) aspo + " ";
                }
            } catch (JSONException ex) {
                neighbor_capabilities = "n/a";
            }

            String session = "";
            try {
                JSONArray ar = protocolJs.getJSONArray("bgp_session");
                for (Object aspo : ar) {
                    session += (String) aspo + " ";
                }
            } catch (JSONException ex) {
                session = "n/a";
            }

            String source_address = "";
            try {
                source_address = protocolJs.getString("source_address");
            } catch (JSONException ex) {
                session = "n/a";
            }
            Integer hold_timer = null;
            try {
                hold_timer = protocolJs.getInt("hold_timer");
            } catch (JSONException ex) {
                session = "n/a";
            }
            Integer route_limit_at = null;
            try {
                route_limit_at = protocolJs.getInt("route_limit_at");
            } catch (JSONException ex) {
                session = "n/a";
            }
            Integer keepalive = null;
            try {
                keepalive = protocolJs.getInt("keepalive");
            } catch (JSONException ex) {
                session = "n/a";
            }

            bgpDetalisData.setProtocol(protocol);
            bgpDetalisData.setBird_protocol(bird_protocol);
            bgpDetalisData.setState(state);
            bgpDetalisData.setState_changed(state_changed);
            bgpDetalisData.setConnection(connection);

            bgpDetalisData.setDescription(description);
            bgpDetalisData.setPreference(preference);
            bgpDetalisData.setInput_filter(input_filter);
            bgpDetalisData.setOutput_filter(output_filter);
            bgpDetalisData.setImport_limit(import_limit);
            bgpDetalisData.setLimit_action(limit_action);

            bgpDetalisData.setRoutes_imported(routes_imported);
            bgpDetalisData.setRoutes_exported(routes_exported);
            bgpDetalisData.setRoutes_preferred(routes_preferred);

            bgpDetalisData.setRoute_change_import_updates(route_change_import_updates);
            bgpDetalisData.setRoute_change_import_withdraws(route_change_import_withdraws);
            bgpDetalisData.setRoute_change_export_updates(route_change_export_updates);
            bgpDetalisData.setRoute_change_export_withdraws(route_change_export_withdraws);

            bgpDetalisData.setBgp_state(bgp_state);
            bgpDetalisData.setNeighbor_address(neighbor_address);
            bgpDetalisData.setNeighbor_as(neighbor_as);
            bgpDetalisData.setNeighbor_id(neighbor_id);

            bgpDetalisData.setNeighbor_capabilities(neighbor_capabilities);
            bgpDetalisData.setBgp_session(session);

            bgpDetalisData.setSource_address(source_address);
            bgpDetalisData.setHold_timer(hold_timer);
            bgpDetalisData.setRoute_limit_at(route_limit_at);
            bgpDetalisData.setKeepalive(keepalive);

        } catch (IOException | JSONException ex) {
        }

        Map<String, Object> outMap = new HashMap();
        outMap.put("lang", lang);
        outMap.put("bgpDetails", bgpDetalisData);

        return new ModelAndView("/site/lookingglass/bgp_details", outMap);
    }

    /**
     *
     * @param jsO
     * @return
     */
    private String getRouteChange(JSONObject jsO) {

        String out = "";

        try {
            Integer received = jsO.getInt("received");
            out += "recived: " + received + ", ";
        } catch (JSONException ex) {
        }

        try {
            Integer rejected = jsO.getInt("rejected");
            out += "rejected: " + rejected + ", ";
        } catch (JSONException ex) {
        }

        try {
            Integer filtered = jsO.getInt("filtered");
            out += "filtered: " + filtered + ", ";
        } catch (JSONException ex) {
        }

        try {
            Integer ignored = jsO.getInt("ignored");
            out += "ignored: " + ignored + ", ";
        } catch (JSONException ex) {
        }

        try {
            Integer accepted = jsO.getInt("accepted");
            out += "accepted: " + accepted + ", ";
        } catch (JSONException ex) {
        }

        return out.substring(0, out.length() - 2);
    }

    /**
     *
     * @param lang
     * @param name
     * @return
     */
    @RequestMapping("/{lang:ru|kk|en}/lookingglass/table/{name}")
    public ModelAndView table(@PathVariable String lang, @PathVariable String name) {

        List<TableData> tableDateList = new ArrayList<>();
        try {
            JSONObject json = new JSONObject(IOUtils.toString(new URL(TABLE_URL + name), Charset.forName("UTF-8")));

            JSONArray routes = json.getJSONArray("routes");
            routes.forEach(action -> {
                JSONObject rout = (JSONObject) action;

                String network = rout.getString("network");
                String gateway = rout.getString("gateway");
                Integer metric = rout.getInt("metric");
                Boolean primary = rout.getBoolean("primary");
                Integer communities = 0;

                String aspath = "";

                JSONArray ar = rout.getJSONObject("bgp").getJSONArray("as_path");
                for (Object aspo : ar) {
                    aspath += (String) aspo + " ";
                }

                try {
                    JSONArray ar1 = rout.getJSONObject("bgp").getJSONArray("communities");
                    communities = ar1.length();
                } catch (JSONException ex) {
                }

                String networkLink = "/" + lang + "/lookingglass/route/" + network;
                TableData tableData = new TableData();
                tableData.setNetwork(network);
                tableData.setNetworkLink(networkLink);
                tableData.setGateway(gateway);
                tableData.setMetric(metric);
                tableData.setCommunities(communities);
                tableData.setAspath(aspath);
                tableData.setPrimary(primary);

                tableDateList.add(tableData);
            });

        } catch (IOException ex) {
            name = "UNKNOWN";
        } catch (JSONException ex) {
        }

        Map<String, Object> outMap = new HashMap();
        outMap.put("tableDataList", tableDateList);
        outMap.put("tableName", name);

        return new ModelAndView("/site/lookingglass/table", outMap);
    }

    /**
     *
     * @param lang
     * @param ip
     * @param mask
     * @return
     */
    @RequestMapping("/{lang:ru|kk|en}/lookingglass/route/{ip}/{mask}")
    public ModelAndView rout(@PathVariable String lang, @PathVariable String ip, @PathVariable String mask) {

        String net;
        List<TableData> tableDateList = new ArrayList<>();
        try {

            net = ip + "/" + mask;

            String url = ROUT_URL + URLEncoder.encode(net, "UTF-8");

            JSONObject json = new JSONObject(IOUtils.toString(new URL(url), Charset.forName("UTF-8")));

            JSONArray routes = json.getJSONArray("routes");
            routes.forEach(action -> {
                JSONObject rout = (JSONObject) action;

                String network = rout.getString("network");
                String gateway = rout.getString("gateway");
                Integer metric = rout.getInt("metric");
                Boolean primary = rout.getBoolean("primary");
                String inter_face = rout.getString("interface");
                String age = rout.getString("age");
                String from_protocol = rout.getString("from_protocol");

                String origin = rout.getJSONObject("bgp").getString("origin");
                Integer med = null;
                try {
                    med = rout.getJSONObject("bgp").getInt("med");
                } catch (JSONException ex) {
                }
                String localPref = rout.getJSONObject("bgp").getString("local_pref");
                String aspath = "";
                JSONArray ar = rout.getJSONObject("bgp").getJSONArray("as_path");
                for (Object aspo : ar) {
                    aspath += (String) aspo + " ";
                }

                String type = "";
                JSONArray ar1 = rout.getJSONArray("type");
                for (Object t : ar1) {
                    type += (String) t + " ";
                }

                String communitiesList = "";
                try {
                    JSONArray ar2 = rout.getJSONObject("bgp").getJSONArray("communities");
                    for (Object o : ar2) {
                        JSONArray ar3 = (JSONArray) o;
                        communitiesList += "(";
                        int index = 0;
                        for (Object o1 : ar3) {
                            if (index > 0) {
                                communitiesList += ", ";
                            }
                            communitiesList += (Integer) o1;
                            index++;
                        }
                        communitiesList += ") ";
                    }
                } catch (JSONException ex) {
                }
                if (communitiesList.isEmpty()) {
                    communitiesList = null;
                }

                TableData tableData = new TableData();
                tableData.setNetwork(network);
                tableData.setGateway(gateway);
                tableData.setMetric(metric);
                tableData.setAspath(aspath);
                tableData.setInter_face(inter_face);
                tableData.setAge(age);
                tableData.setFromProtocol(from_protocol);
                tableData.setType(type);
                tableData.setOrigin(origin);
                tableData.setLocalPref(localPref);
                tableData.setCommunitiesList(communitiesList);
                tableData.setMed(med);
                tableData.setPrimary(primary);

                tableDateList.add(tableData);
            });

        } catch (IOException | JSONException ex) {
            net = "UNKNOWN";
        }

        Map<String, Object> outMap = new HashMap();
        outMap.put("tableDataList", tableDateList);
        outMap.put("net", net);

        return new ModelAndView("/site/lookingglass/route", outMap);
    }

    /**
     *
     * @param lang
     * @param lgSearchData
     * @param result
     * @param model
     * @return
     */
    @RequestMapping("/{lang:ru|kk|en}/lookingglass/search")
    public ModelAndView search(@PathVariable String lang,
                               @Valid @ModelAttribute("lgSearchData") LgSearchData lgSearchData,
                               BindingResult result,
                               ModelMap model) {

        String ip = lgSearchData.getIp();

        if (ip == null || ip.isEmpty()) {
            return new ModelAndView("redirect:/" + lang + "/lookingglass/bgp");
        }

        try {

            JSONObject json = new JSONObject(IOUtils.toString(new URL(ROUT_URL + URLEncoder.encode(ip, "UTF-8")), Charset.forName("UTF-8")));

            JSONArray routes = json.getJSONArray("routes");
            JSONObject rout = routes.getJSONObject(0);
            if (rout != null) {
                String network = rout.getString("network");
                return new ModelAndView("redirect:/" + lang + "/lookingglass/route/" + network);
            }
        } catch (IOException | JSONException ex) {

        }

        return new ModelAndView("/site/lookingglass/bgp");
    }
}
...
Рейтинг: 0 / 0
Не показывает информацию одного протокола
    #39854607
skyboyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyboyy,

Как можно исправить эту ошибку -
Код: java
1.
org.json.JSONException: JSONObject["route_changes"] not found.
...
Рейтинг: 0 / 0
Не показывает информацию одного протокола
    #39855376
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyboyyskyboyy,

Как можно исправить эту ошибку -
Код: java
1.
org.json.JSONException: JSONObject["route_changes"] not found.


У вас в объекте нет поля "route_changes", поэтому он и ругается.
И это не ошибка, а исключение, его нужно обрабатывать,
дебажьте оттуда где у вас получается JSONObject создается, предполагаю, что где-то здесь нужно начать, хотя в код особо не вникал.
Код: java
1.
JSONObject json = new JSONObject(IOUtils.toString(new URL(BGP_DETAILS_URL + protocol), Charset.forName("UTF-8")));


Смотрите в дебагере поля, которые вызываете ниже и явно у кого-то этого поля не будет.
Если зайти сюда http://80.241.0.85/api/protocols/bgp
то видно, что у протокола pb_0008_as39824 нет поля route_changes, у остальных оно есть. В общем, дебаг в руки и вперед!))
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Не показывает информацию одного протокола
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]