G-WAN - 如何 return 状态代码:200 OK 如果请求 URL = 541+ 个字符?
G-WAN - How to return Status Code: 200 OK if request URL = 541+ characters?
我正在使用 G-WAN 网络应用程序。服务器 v7.12.6.
如何 return 有效状态代码:200 OK 如果请求 URL 总共有 541+ 个字符,包括 25 个参数?
ajaxGet(URL, method) 其中 method 是 GET 或 PUT(结果相同)
请求URL:
http://myWebsite.ca:xx/?createCompany.c&legalname=mycomp&dba=mycomp%20dba&www=www.myWebsite...
createCompany.c
#pragma link "pq"
#include <stdlib.h>
#include <string.h>
#include "/usr/include/postgresql/libpq-fe.h"
#include "gwan.h"
//----------------------------------------------------------------------------
int main(int argc, char *argv[]) {
u64 start = getus();
PGconn *conn;
PGresult *res;
char DBrequestString [1000] = "";
char *legal_name = 0, *dba = 0, *www = 0; //...+ 22 more
xbuf_t *reply = get_reply(argv);
get_arg("legalname=", &legal_name, argc, argv);
get_arg("dba=", &dba, argc, argv);
get_arg("www=", &www, argc, argv);
//...+ 22 more
char requestString[1000] = "SELECT create_company('%s','%s','%s', ... + 22 more);";
sprintf(DBrequestString, requestString,legal_name, dba, www, ... + 22 more);
conn = PQconnectdb("host=x port=x dbname=x user=x password=x");
if (PQstatus(conn) != CONNECTION_OK){
fprintf(stderr, "Connection to database failed: %s",PQerrorMessage(conn));
PQfinish(conn);
xbuf_cat(reply, "{\"message\":\"Connection to database failed !\"}");//message Json format
return 200;
}
res = PQexec(conn, DBrequestString);
printf(" --> %s\n",PQgetvalue(res, 0, 0));
xbuf_cat(reply, PQgetvalue(res, 0, 0));//return one line Json format
PQclear(res);
PQfinish(conn);
printf("TEMPS D'EXECUTION: %.2Fms\n\n",(getus() - start)/1000.0);
return 200; //return OK
}
好问题 - 我现在无法访问源代码,但查看网站上的 G-WAN API 让我觉得 READ_XBUF
或 MAX_ENTITY_SIZE
可能会有帮助.
通常,READ_XBUF
将用于 G-WAN HANDLER
以增加(如果需要)连接缓冲区,而 MAX_ENTITY_SIZE
是一次性设置,可以随时更改(甚至在服务器启动之前,感谢 init.c
脚本)。
我认为只要扩大 MAX_ENTITY_SIZE
值(目的是防止大型实体 DoS 攻击)就可以完成这项工作,因为 G-WAN 很可能会自动扩大 READ_XBUF
从客户端读取时基于每个请求。
感谢您的快速回复。
我更新了脚本 createCompany.c 以提高限制(按照您的示例):
u32 *old_entity_size = (u32*)get_env(argv, MAX_ENTITY_SIZE);
u32 new_entity_size = 2 * 1024 * 1024; // 2 MiB
*old_entity_size = new_entity_size; // raise the limit to 2 MiB
难不成MAX_ENTITY_SIZE是POST请求专用的?
提高 MAX_ENTITY_SIZE 限制是否也适用于 GET/PUT 请求?
实际上,我希望 G-WAN 默认将限制保留为初始设置,这对其他 .c 脚本很有用,
但仅针对此特定脚本 createCompany.c
提高 GET/PUT 请求的限制
任何 script.c 示例如何提高 READ_XBUF 的限制?
我正在使用 G-WAN 网络应用程序。服务器 v7.12.6.
如何 return 有效状态代码:200 OK 如果请求 URL 总共有 541+ 个字符,包括 25 个参数?
ajaxGet(URL, method) 其中 method 是 GET 或 PUT(结果相同)
请求URL:
http://myWebsite.ca:xx/?createCompany.c&legalname=mycomp&dba=mycomp%20dba&www=www.myWebsite...
createCompany.c
#pragma link "pq"
#include <stdlib.h>
#include <string.h>
#include "/usr/include/postgresql/libpq-fe.h"
#include "gwan.h"
//----------------------------------------------------------------------------
int main(int argc, char *argv[]) {
u64 start = getus();
PGconn *conn;
PGresult *res;
char DBrequestString [1000] = "";
char *legal_name = 0, *dba = 0, *www = 0; //...+ 22 more
xbuf_t *reply = get_reply(argv);
get_arg("legalname=", &legal_name, argc, argv);
get_arg("dba=", &dba, argc, argv);
get_arg("www=", &www, argc, argv);
//...+ 22 more
char requestString[1000] = "SELECT create_company('%s','%s','%s', ... + 22 more);";
sprintf(DBrequestString, requestString,legal_name, dba, www, ... + 22 more);
conn = PQconnectdb("host=x port=x dbname=x user=x password=x");
if (PQstatus(conn) != CONNECTION_OK){
fprintf(stderr, "Connection to database failed: %s",PQerrorMessage(conn));
PQfinish(conn);
xbuf_cat(reply, "{\"message\":\"Connection to database failed !\"}");//message Json format
return 200;
}
res = PQexec(conn, DBrequestString);
printf(" --> %s\n",PQgetvalue(res, 0, 0));
xbuf_cat(reply, PQgetvalue(res, 0, 0));//return one line Json format
PQclear(res);
PQfinish(conn);
printf("TEMPS D'EXECUTION: %.2Fms\n\n",(getus() - start)/1000.0);
return 200; //return OK
}
好问题 - 我现在无法访问源代码,但查看网站上的 G-WAN API 让我觉得 READ_XBUF
或 MAX_ENTITY_SIZE
可能会有帮助.
通常,READ_XBUF
将用于 G-WAN HANDLER
以增加(如果需要)连接缓冲区,而 MAX_ENTITY_SIZE
是一次性设置,可以随时更改(甚至在服务器启动之前,感谢 init.c
脚本)。
我认为只要扩大 MAX_ENTITY_SIZE
值(目的是防止大型实体 DoS 攻击)就可以完成这项工作,因为 G-WAN 很可能会自动扩大 READ_XBUF
从客户端读取时基于每个请求。
感谢您的快速回复。
我更新了脚本 createCompany.c 以提高限制(按照您的示例):
u32 *old_entity_size = (u32*)get_env(argv, MAX_ENTITY_SIZE);
u32 new_entity_size = 2 * 1024 * 1024; // 2 MiB
*old_entity_size = new_entity_size; // raise the limit to 2 MiB
难不成MAX_ENTITY_SIZE是POST请求专用的?
提高 MAX_ENTITY_SIZE 限制是否也适用于 GET/PUT 请求?
实际上,我希望 G-WAN 默认将限制保留为初始设置,这对其他 .c 脚本很有用, 但仅针对此特定脚本 createCompany.c
提高 GET/PUT 请求的限制任何 script.c 示例如何提高 READ_XBUF 的限制?