2022-06-20 01:27:37 +08:00
|
|
|
#include "main.h"
|
|
|
|
|
|
|
|
static void cli_wifi(const char *ssid, const char *pass) {
|
|
|
|
if (wifi_init(ssid, pass)) {
|
|
|
|
mg_file_printf(&mg_fs_posix, WIFI_FILE, "{%Q:%Q,%Q:%Q}\n", "ssid", ssid,
|
|
|
|
"pass", pass);
|
|
|
|
MG_INFO(("Reboot now"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void cli_ls(void) {
|
|
|
|
DIR *dirp = opendir(FS_ROOT);
|
|
|
|
struct dirent *dp;
|
|
|
|
if (dirp == NULL) {
|
|
|
|
MG_ERROR(("Cannot open FS: %d", errno));
|
|
|
|
} else {
|
|
|
|
while ((dp = readdir(dirp)) != NULL) {
|
|
|
|
/* Do not show current and parent dirs */
|
|
|
|
if (strcmp((const char *) dp->d_name, ".") == 0 ||
|
|
|
|
strcmp((const char *) dp->d_name, "..") == 0) {
|
|
|
|
continue;
|
|
|
|
} else {
|
|
|
|
printf("%s\n", dp->d_name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
closedir(dirp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void cli_cat(const char *fname) {
|
|
|
|
char path[MG_PATH_MAX];
|
|
|
|
snprintf(path, sizeof(path), "%s/%s", FS_ROOT, fname);
|
|
|
|
FILE *fp = fopen(path, "r");
|
|
|
|
if (fp != NULL) {
|
|
|
|
int ch;
|
|
|
|
while ((ch = fgetc(fp)) != EOF) putchar(ch);
|
|
|
|
fclose(fp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void cli_rm(const char *fname) {
|
|
|
|
char path[100];
|
|
|
|
snprintf(path, sizeof(path), "%s/%s", FS_ROOT, fname);
|
|
|
|
remove(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
void cli(uint8_t input_byte) {
|
|
|
|
static struct mg_iobuf in;
|
|
|
|
|
|
|
|
if (input_byte == 0 || input_byte == 0xff) return;
|
|
|
|
if (in.len >= 128) in.len = 0;
|
|
|
|
mg_iobuf_add(&in, in.len, &input_byte, sizeof(input_byte), 32);
|
|
|
|
|
|
|
|
if (input_byte == '\n') {
|
|
|
|
const char *arrow = "---";
|
|
|
|
char buf0[10], buf1[50], buf2[250];
|
|
|
|
|
|
|
|
in.buf[in.len] = '\0';
|
|
|
|
buf0[0] = buf1[0] = buf2[0] = '\0';
|
|
|
|
sscanf((char *) in.buf, "%9s %49s %249[^\r\n]", buf0, buf1, buf2);
|
|
|
|
|
|
|
|
printf("%s CLI command: '%s'\n", arrow, buf0);
|
|
|
|
if (strcmp(buf0, "reboot") == 0) {
|
|
|
|
esp_restart();
|
|
|
|
} else if (strcmp(buf0, "ls") == 0) {
|
|
|
|
cli_ls();
|
|
|
|
} else if (strcmp(buf0, "cat") == 0) {
|
|
|
|
cli_cat(buf1);
|
|
|
|
} else if (strcmp(buf0, "rm") == 0) {
|
|
|
|
cli_rm(buf1);
|
|
|
|
} else if (strcmp(buf0, "reboot") == 0) {
|
|
|
|
esp_restart();
|
|
|
|
} else if (strcmp(buf0, "ll") == 0) {
|
2022-08-01 18:19:32 +08:00
|
|
|
mg_log_set(atoi(buf1));
|
2022-06-20 01:27:37 +08:00
|
|
|
} else if (strcmp(buf0, "wifi") == 0) {
|
|
|
|
cli_wifi(buf1, buf2);
|
|
|
|
} else {
|
|
|
|
printf("%s %s\n", arrow, "Unknown command. Usage:");
|
|
|
|
printf("%s %s\n", arrow, " set NAME VALUE");
|
|
|
|
printf("%s %s\n", arrow, " rm FILENAME");
|
|
|
|
printf("%s %s\n", arrow, " cat FILENAME");
|
|
|
|
printf("%s %s\n", arrow, " ls");
|
|
|
|
printf("%s %s\n", arrow, " reboot");
|
|
|
|
printf("%s %s\n", arrow, " wifi WIFI_NET WIFI_PASS");
|
|
|
|
}
|
|
|
|
printf("%s %s\n", arrow, "CLI output end");
|
|
|
|
in.len = 0;
|
|
|
|
}
|
|
|
|
}
|