1 | /****************************************************************************************
|
---|
2 | *
|
---|
3 | * cmd_net.c
|
---|
4 | *
|
---|
5 | * Ñåòü è MAC
|
---|
6 | ****************************************************************************************/
|
---|
7 |
|
---|
8 | #include <string.h>
|
---|
9 | #include "commands.h"
|
---|
10 | #include "main.h"
|
---|
11 | #include "lwip.h"
|
---|
12 | #include "plc.h"
|
---|
13 | #include "snmp_msg.h"
|
---|
14 | #include "log_and_debug.h"
|
---|
15 |
|
---|
16 | extern char community[16], trap_community[16];
|
---|
17 | extern struct eth_addr MACAddr;
|
---|
18 | extern network_settings table_network[MAX_IP];
|
---|
19 | extern plc_data_typeDef PLC_Data[AMOUNT_BLOCK_PLC];
|
---|
20 | extern struct netif gnetif;
|
---|
21 | //extern char community[16];
|
---|
22 |
|
---|
23 | void cmd_getNet(json_tokens_data_t *tokens_data, json_response_t *json_response)
|
---|
24 | {
|
---|
25 | char mac[17] = {0};
|
---|
26 | sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X", table_network[0].netif.hwaddr[0], table_network[0].netif.hwaddr[1], table_network[0].netif.hwaddr[2], table_network[0].netif.hwaddr[3], table_network[0].netif.hwaddr[4], table_network[0].netif.hwaddr[5]);
|
---|
27 | json_write_obj_string("status", "ok");
|
---|
28 | json_write_obj_object("net");
|
---|
29 | json_write_obj_string("MAC", mac);
|
---|
30 | json_write_obj_string("ip", table_network[0].ipv4_addr);
|
---|
31 | json_write_obj_string("mask", table_network[0].ipv4_nm);
|
---|
32 | json_write_obj_string("gw", table_network[0].ipv4_gw);
|
---|
33 | json_write_end();
|
---|
34 | }
|
---|
35 |
|
---|
36 | void cmd_setNet(json_tokens_data_t *tokens_data, json_response_t *json_response)
|
---|
37 | {
|
---|
38 | if(json_get_value_object(tokens_data, "net", NULL, json_type_object, json_root)== json_success){ // ïðîâåðÿåì åñòü ëè îáúåêò
|
---|
39 | json_get_value_object(tokens_data, "ip", &table_network[0].ipv4_addr, json_type_string, json_obj);
|
---|
40 | json_get_value_object(tokens_data, "mask", &table_network[0].ipv4_nm, json_type_string, json_obj);
|
---|
41 | json_get_value_object(tokens_data, "gw", &table_network[0].ipv4_gw, json_type_string, json_obj);
|
---|
42 | LWIP_NetApply(&table_network[0]); // ïåðåâîäèì LWIP íà íîâûé àäðåñ
|
---|
43 | __logWrite("changing IP address to %s", table_network[0].ipv4_addr);
|
---|
44 | json_write_obj_string("status", "ok");
|
---|
45 | }
|
---|
46 | else {
|
---|
47 | json_write_obj_string("status", "error");
|
---|
48 | json_write_obj_string("error", "invalid parameter");
|
---|
49 | }
|
---|
50 | }
|
---|
51 |
|
---|
52 | void cmd_getSnmp(json_tokens_data_t *tokens_data, json_response_t *json_response)
|
---|
53 | {
|
---|
54 | uint8_t snmp_version = 0xFF;
|
---|
55 |
|
---|
56 | if(snmp_v1_enabled()) snmp_version = SNMP_VERSION_1; // ýòî âåðñèÿ 1
|
---|
57 | else if(snmp_v2c_enabled()) snmp_version = SNMP_VERSION_2c; // ýòî âåðñèÿ 2c
|
---|
58 | //else if(snmp_v3_enabled()) snmp_version = SNMP_VERSION_3; // ýòî âåðñèÿ 3
|
---|
59 |
|
---|
60 | json_write_obj_string("status", "ok");
|
---|
61 | json_write_obj_int("version", snmp_version);
|
---|
62 | json_write_obj_string("community", (char*)snmp_get_community());
|
---|
63 | json_write_obj_object("trap");
|
---|
64 | json_write_obj_bool("enable", snmp_get_traps_enable(0));
|
---|
65 | json_write_obj_string("community", (char*)snmp_get_community_trap());
|
---|
66 | json_write_obj_string("ip", (char*)snmp_get_ip_dst_trap(0));
|
---|
67 | json_write_end();
|
---|
68 |
|
---|
69 | }
|
---|
70 |
|
---|
71 | void cmd_setSnmp(json_tokens_data_t *tokens_data, json_response_t *json_response)
|
---|
72 | {
|
---|
73 | _Bool ok = 0;
|
---|
74 | char trap_ip[16] = {0};
|
---|
75 | uint8_t trap_en = 0, snmp_version = 0xFF;
|
---|
76 | ip_addr_t ip;
|
---|
77 |
|
---|
78 | snmp_v1_enable(DISABLE);
|
---|
79 | snmp_v2c_enable(DISABLE);
|
---|
80 | //snmp_v3_enable(DISABLE);
|
---|
81 |
|
---|
82 | if(json_get_value_object(tokens_data, "version", &snmp_version, json_type_integer, json_root)== json_success){
|
---|
83 |
|
---|
84 | if(snmp_version == SNMP_VERSION_1)snmp_v1_enable(ENABLE);
|
---|
85 | else if(snmp_version == SNMP_VERSION_2c)snmp_v2c_enable(ENABLE);
|
---|
86 | //else if(snmp_version == SNMP_VERSION_3)snmp_v3_enable(ENABLE);
|
---|
87 |
|
---|
88 | if(json_get_value_object(tokens_data, "community", &community, json_type_string, json_root)== json_success) {
|
---|
89 | if(strncmp((char*)snmp_get_community(), community, strlen(community)) != 0) snmp_set_community(community);
|
---|
90 | ok = 1;
|
---|
91 | }
|
---|
92 |
|
---|
93 | if(json_get_value_object(tokens_data, "trap", NULL, json_type_object, json_root)== json_success) {
|
---|
94 | json_get_value_object(tokens_data, "enable", &trap_en, json_type_boolean, json_obj);
|
---|
95 | json_get_value_object(tokens_data, "ip", &trap_ip, json_type_string, json_obj);
|
---|
96 | json_get_value_object(tokens_data, "community", &trap_community, json_type_string, json_obj);
|
---|
97 |
|
---|
98 | if(strncmp((char*)snmp_get_community_trap(), trap_community, strlen(trap_community)) != 0) snmp_set_community_trap(trap_community);// èçìåíèëîñü
|
---|
99 |
|
---|
100 | if(trap_en == 1){
|
---|
101 | ip4addr_aton(trap_ip, &ip);
|
---|
102 | snmp_trap_dst_ip_set(0, &ip);
|
---|
103 | snmp_trap_dst_enable(0, ENABLE);
|
---|
104 | }
|
---|
105 | else snmp_trap_dst_enable(0, DISABLE);
|
---|
106 | ok = 1;
|
---|
107 | }
|
---|
108 | }
|
---|
109 |
|
---|
110 | if(ok == 1) json_write_obj_string("status", "ok");
|
---|
111 | else {
|
---|
112 | json_write_obj_string("status", "error");
|
---|
113 | json_write_obj_string("error", "invalid parameter");
|
---|
114 | }
|
---|
115 | }
|
---|