From f7af07080a6afce745b0b16db2863f06a3e9bcf8 Mon Sep 17 00:00:00 2001 From: Martin Ger Date: Sat, 16 Dec 2017 10:11:42 +0100 Subject: [PATCH] added and --- SCRIPTING.md | 8 +++++--- firmware/0x00000.bin | Bin 45072 -> 45152 bytes firmware/0x10000.bin | Bin 303436 -> 303644 bytes firmware/sha1sums | 4 ++-- httpclient/httpclient.c | 4 ++-- httpclient/httpclient.h | 2 +- scripts/script.http | 1 + user/lang.c | 36 ++++++++++++++++++++++++++++++++++-- 8 files changed, 45 insertions(+), 10 deletions(-) diff --git a/SCRIPTING.md b/SCRIPTING.md index 7fb3b8e..9eea9f2 100644 --- a/SCRIPTING.md +++ b/SCRIPTING.md @@ -66,7 +66,8 @@ In general, scripts conform to the following BNF: := | | # | $[any ASCII]* | @ | gpio_in() | $adc | $this_item | $this_data | $this_serial | - $this_gpio | $this_http_code | $this_http_body | $timestamp | $weekday + $this_gpio | $timestamp | $weekday | + $this_http_code | $this_http_host | $this_http_path | $this_http_body := "[any ASCII]*" | [any ASCII]* @@ -280,7 +281,8 @@ gpio_in() Reads the current boolean input value of the given GPIO pin. This pin has to be defined as input before using the "gpio_pinmode" action. ``` -$adc | $this_item | $this_data | $this_serial | $this_gpio | $timestamp | $weekday | $this_http_body | $this_http_code +$adc | $this_item | $this_data | $this_serial | $this_gpio | $timestamp | $weekday | +$this_http_host | $this_http_path | $this_http_code | $this_http_body ``` Special variables: - $adc gives you the current value of the ADC (analog to digital input pin) @@ -288,7 +290,7 @@ Special variables: - $this_serial contains the serial input string in an "on serial" clause. - $this_gpio contains the state of the GPIO in an "on gpio_interrupt" clause. - $timestamp contains the current time of day in "hh:mm:ss" format. If no NTP sync happened the time will be reported as "99:99:99". $weekday returns the day of week as three letters ("Mon","Tue",...). -- $this_http_body and $this_http_code are only defined inside the "on http_response" clause and contain the body of an HTTP response and the HTTP return code. +- $this_http_code, $this_http_host, $this_http_path, and $this_http_body are only defined inside the "on http_response" clause and contain the HTTP return code, the URL host and path of the request, and the body of an HTTP response. ## Operators Operators are used to combine values and expressions. diff --git a/firmware/0x00000.bin b/firmware/0x00000.bin index 3bdee577ab555b52e8537771f472d88a90485725..9a79b8faea7027450d633654e0faad0748fa267b 100644 GIT binary patch delta 1787 zcmZwHZA=tL7zgl~;h>18!UgdSDBkWOMT;juV$|;Te@a?E^m4yE&pfj; zv$r#Q!H9@NM6g+~&rf_Zj|*y-5BWE-&E*D#)n#!(#F5iBJ$`jCwoD`h+bxs)1{L_F zE51m0{jwsydY})LAT&d(Upe9AMSGb%lA6nVqq*Z8_jL;~6+U-Wm>`B)s z4&xW$=4zo6K8CBQ8tJeG*RDbIV%{3?Vq7>ikrrW`BMtNDS}hg2H7br?fXRz9H7c0N z=b|K{!EHBlZDooPI?^Sy;@?r!P$xGU@ z*hq(E-d5xEQqGUcMq_2Bug;)E#=NP3hvscPXPH?6%XA{2fxg3NkFQhNnH3@@Yo|ef z#}@GX53yxUmZ^gWqFWhiaqy+-j7>s&2Fz_zm$E9j2-L}`*|`Z1Fx8K+zfM(W59Iu| z+BN#RBZYNY<~ZBVjbTpLsjb{82HazwE?MnK=MUroPrc|Eq_W4AxkT$udGM7c9#)g{ z%LNaq!_%*D;W)0UXH1Lbt?G-{yKtJnR$FEt;|VSOZ8Kv#Zexhbn{$_o&~BOiX0LE` zDfircLL^>Nr{^tm@PJHPxN@-bxMkY*Jv&@ynUN&hv}GanI9scm30-_4Us|q(*DLnU9xo2F!#4mlH+n1j+sl`i7BAfp&8w=a TR9F4v3}@9T?7`?KXL;m5_a(0C delta 1741 zcmZvceN2^A9LLW&TnO=sz(7$iME7|fV>dIjvO&w|S2;({6c80{}Nh^edMl86ZmwM=)FIuuZ@c@ zY@zU0$;#N;cpoAizz+gd>S647J}DUXcf_!SYJ)z#QNrBNdho@|jI~~{F)wT%XaRHQ z>>QN^&8t?0ajQ9Z%j-im(NQfQ4*i2~QMc{Gg$Puud-3Ci=<1f~iK9iZM&%@~h!R^K z%A?8UJVB+TNG@otIx!+g@cr^m>MhaVE;~ofOR89F5NE8y3vB_uwQBt6J$#rSc1Ep1 zK`4_~$J`PYsz*da{jPO-qT2NMM2_9SC=A8OR7Yc%~`G)~m$WRYsf$cYm53*}{PadiFJ zkhxt=&`UX=E}M*HV|^Zj5*Twk05;8?*BLT1>qDj;b`5fG!7uhG*VsxizF?a{kE8SW zl)WMI0(R^QxCz3avZL9?7o{^6fFA?{P3m%HB^NCoIoUNaE)!ktpv$9bUGbcI)sE+G z*+%$KeS&38jAHhrw$0owh6S0wQ`TmsbDunzwOjPYE7yebBoWvq550MqGnGAMmEdl5 zd}=orCr_!`+&7|mp8EFf^BAg2ZJK$C$K~PzW^4_a)gx5Stb1GpcS_eg_r;M;<;>qN zM9UAVefDA-&yZ>Jm!-6x3YnG_wEWvbW__Y%T6H)%>frqOLNq^;_ZNDE@3Gua=p538 zsan<}3u70ady11>zSQKI>iE)gHqr7}t|*-rlOJoDE#qW+>5Q}jnAlE>#WAFhQ&ag~RQ)*-6BqJbxMpvhja4_Mun z)q70MtK7gvSEBm4>bn@*VJtvCv#vtf*ByuwJr~u{4Tl64_xi?>>1QYFc4yzW?u>F55L%isT zT)5vHaA`L#uJ^xO|6tI!MRM~a`5n;S#?TzIuMtNG^n(Xr05BY>-y1aw0t>`9X_N-W zfqhT#D(qf}{O;~^}uLgr5+_Nun^guJX00Mv^ zuLA=4a{1PC;%2LIc|y_R+E>c8>kTnHJ3Hs!H(aHrrbd-EyvS3Qmo2HPUQ|}Wn7(Go clG5TuYmrrByxAGa8Eql6*ERTSjEsEtA1oiJUjP6A diff --git a/firmware/0x10000.bin b/firmware/0x10000.bin index ad9862bf364c48b78b37f6ec0e792522884a9420..2d40db27db9fca42d2c61309497e60a50797f302 100644 GIT binary patch delta 46968 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≈$KDR4wLo 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 YwD>LnYo{CF8VZ>EwYHy{$r8i?07`O9KmY&$ diff --git a/firmware/sha1sums b/firmware/sha1sums index 91ec1c0..11d5ed5 100644 --- a/firmware/sha1sums +++ b/firmware/sha1sums @@ -1,2 +1,2 @@ -d8ba3e38c5c27e69d64f23cc408bceb7adeec416 0x00000.bin -94d406c685a6f15b4f2ff42c93c9ec5297d43425 0x10000.bin +033d48114a262ca73b6b505079e92bb2870b934d 0x00000.bin +efa7d3a70c006f6d7e4cd8115dfde375275324f8 0x10000.bin diff --git a/httpclient/httpclient.c b/httpclient/httpclient.c index 0c45516..f57cc05 100644 --- a/httpclient/httpclient.c +++ b/httpclient/httpclient.c @@ -339,7 +339,7 @@ static void ICACHE_FLASH_ATTR disconnect_callback(void * arg) } if (req->user_callback != NULL) { // Callback is optional. - req->user_callback(body, http_status, req->buffer, body_size); + req->user_callback(req->hostname, req->path, body, http_status, req->buffer, body_size); } os_free(req->buffer); @@ -367,7 +367,7 @@ static void ICACHE_FLASH_ATTR dns_callback(const char * hostname, ip_addr_t * ad if (addr == NULL) { os_printf("DNS failed for %s\n", hostname); if (req->user_callback != NULL) { - req->user_callback("", -1, "", 0); + req->user_callback(req->hostname, req->path, "", -1, "", 0); } os_free(req->buffer); os_free(req->post_data); diff --git a/httpclient/httpclient.h b/httpclient/httpclient.h index 89b8e6b..3088cb5 100644 --- a/httpclient/httpclient.h +++ b/httpclient/httpclient.h @@ -22,7 +22,7 @@ * A successful request corresponds to an HTTP status code of 200 (OK). * More info at http://en.wikipedia.org/wiki/List_of_HTTP_status_codes */ -typedef void (* http_callback)(char * response_body, int http_status, char * response_headers, int body_size); +typedef void (* http_callback)(char* hostname, char* path, char * response_body, int http_status, char * response_headers, int body_size); /* * Download a web page from its URL. diff --git a/scripts/script.http b/scripts/script.http index 8e55d43..778107e 100644 --- a/scripts/script.http +++ b/scripts/script.http @@ -10,6 +10,7 @@ do on http_response do + println "called url: " | $this_http_host | $this_http_path println "return code: " | $this_http_code println $this_http_body diff --git a/user/lang.c b/user/lang.c index 3711784..d715ef5 100644 --- a/user/lang.c +++ b/user/lang.c @@ -77,8 +77,10 @@ int interpreter_gpioval; #ifdef HTTPC bool in_http_statement; int interpreter_http_status; +char *interpreter_http_path; +char *interpreter_http_hostname; -void interpreter_http_reply(char *response_body, int http_status, char *response_headers, int body_size); +void interpreter_http_reply(char *hostname, char *path, char *response_body, int http_status, char *response_headers, int body_size); #endif static os_timer_t timers[MAX_TIMERS]; @@ -1686,6 +1688,34 @@ int ICACHE_FLASH_ATTR parse_value(int next_token, char **data, int *data_len, Va *data_type = STRING_T; return next_token + 1; } + + else if (is_token(next_token, "$this_http_host")) { + static char codebuf[4]; + lang_debug("val $this_http_host\r\n"); + + if (!in_http_statement) + return syntax_error(next_token, "undefined $this_http_host"); + if (interpreter_status == HTTP_RESPONSE) { + *data = interpreter_http_hostname; + *data_len = os_strlen(interpreter_http_hostname); + *data_type = STRING_T; + } + return next_token + 1; + } + + else if (is_token(next_token, "$this_http_path")) { + static char codebuf[4]; + lang_debug("val $this_http_path\r\n"); + + if (!in_http_statement) + return syntax_error(next_token, "undefined $this_http_path"); + if (interpreter_status == HTTP_RESPONSE) { + *data = interpreter_http_path; + *data_len = os_strlen(interpreter_http_path); + *data_type = STRING_T; + } + return next_token + 1; + } #endif #ifdef NTP else if (is_token(next_token, "$timestamp")) { @@ -1902,7 +1932,7 @@ int ICACHE_FLASH_ATTR interpreter_serial_input(const char *data, int data_len) { } #ifdef HTTPC -void ICACHE_FLASH_ATTR interpreter_http_reply(char *response_body, int http_status, char *response_headers, int body_size) { +void ICACHE_FLASH_ATTR interpreter_http_reply(char *hostname, char *path, char *response_body, int http_status, char *response_headers, int body_size) { if (!script_enabled) return; @@ -1911,6 +1941,8 @@ void ICACHE_FLASH_ATTR interpreter_http_reply(char *response_body, int http_stat interpreter_status = HTTP_RESPONSE; interpreter_topic = response_headers; interpreter_http_status = http_status; + interpreter_http_hostname = hostname; + interpreter_http_path = path; interpreter_data = response_body; interpreter_data_len = body_size;