我需要开发一个应用程序,将SMS发送给有兴趣获取网站更新的用户.
我正在寻找C#中的库,它可以与我的应用程序集成.该库可以是GSM调制解调器依赖或免费服务,我可以使用它.
请任何人都可以建议可以与C#应用程序集成的库或SMS网关.
我有一个nat设置,连接了数千个设备.网关的网络由eth0提供,LAN侧的设备连接到网关上的eth1.
我有iptables的以下设置:
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
eth1配置如下:
ip: 192.168.0.1
subnet: 255.255.0.0
Run Code Online (Sandbox Code Playgroud)
为客户端分配ips 192.168.0.2到192.168.255.254.
在/etc/sysctl.conf中我为ip_conntrack_tcp_timeout_established设置了以下设置
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=1200
Run Code Online (Sandbox Code Playgroud)
由于连接到此网关的客户端设备数量,我无法使用默认的5天超时.
这似乎运行良好,并已测试超过10000客户端设备的设置.
但是,我看到的问题是tcp建立的超时1200仅适用于ip范围192.168.0.2到192.168.0.255的设备.在192.168.1.x到192.168.255.x范围内具有ips的所有设备仍在使用5天默认超时.
这会在/ proc/net/ip_conntrack表中留下太多"ESTABLISHED"连接并最终填满,即使它们应该在20分钟内超时,它们显示它们将在5天内超时.
显然我错过了某个地方的设置或者错误地配置了某些东西.
有什么建议?
谢谢
我正试图通过mitmproxy在另一个docker容器中运行来路由docker容器的所有流量.为了mitmproxy工作,我必须更改原始docker容器的网关IP.
这是我想要做的一个例子,但是我想把它限制在docker容器内部.
有关我如何能够做到这一点的任何想法?另外,我想避免在特权模式下运行两个docker容器中的任何一个.
我读了很多书,但似乎找不到这个问题的答案:
是否可以例如从3个微服务中进行数据组合?=>在API网关上使用汇总数据公开端点?
还是一种方法呢?我以为这是API网关所需的基本行为?
我有一个带有 Spring Boot 的简单微服务应用程序,我尝试添加 Spring Cloud Gateway 服务,但它不起作用。所有微服务,包括 Eureka 服务器,都运行良好,但是当我尝试使用网关路由访问某些微服务时,它找不到该微服务。
ApiGateway pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.futurex.microservices</groupId>
<artifactId>APIGateway</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>APIGateway</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2020.0.3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId> …Run Code Online (Sandbox Code Playgroud) 我的 API 网关有两个阶段(开发和生产)。我希望每个分别指向 dev 和 prod lambda 别名。我尝试在 lambda 集成中使用 stageVariables,但这会引发验证错误,并且 API Gateway 无权调用 lambda。我也无法从 lambda 仪表板更改权限策略以包含 stageVariables。
首先,我向每个阶段添加了一个阶段变量 (LAMBDA_ALIAS),并具有适当的值。我尝试附加:${stageVariables.LAMBDA_ALIAS}到 lambda ARN。当我保存此内容时,更改仍然存在,但仪表板顶部出现验证错误:
1 validation error detected: Value 'arn:aws:lambda:us-east-2:xxx:function:auth:${stageVariables.LAMBDA_ALIAS}' at 'functionName' failed to satisfy constraint: Member must satisfy regular expression pattern: (arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?
Run Code Online (Sandbox Code Playgroud)
此外,我在点击 API 路由后注意到 CloudWatch 日志中出现集成错误:“在集成或 API 网关上配置的 IAM 角色没有调用集成的权限。请检查权限并重试。”
我已按照本指南创建了与完整调用 ARN 的新集成,但这也不起作用(它解析为 lambda ARN)。最后,我尝试通过 cli ( aws lambda add-permissions) 发出 JSON 语句,但返回了与上面所示相同的正则表达式错误。
这是我使用的 JSON 语句:
{
"StatementId": "xxx",
"Action": "lambda:InvokeFunction",
"FunctionName": "arn:aws:lambda:us-east-2:xxx:function:auth:${stageVariables.LAMBDA_ALIAS}",
"Principal": "apigateway.amazonaws.com", …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用方法向通过套接字连接的客户端发送消息**AWS.ApiGatewayManagementApi() postToConnection**。在本地运行良好,但在 ec2 中运行不正常。唯一的区别是 VPC。那会有问题吗?
var AWS = require('aws-sdk');
var awsGW = new AWS.ApiGatewayManagementApi({
endpoint: "https://endpoint",
accessKeyId: "accessKeyId",
secretAccessKey: "secretAccessKey",
region: "region"
});
awsGW.postToConnection({
ConnectionId: 'ConnectionId',
Data: '{"key1":"msg1","key2":"msg2"}'
}, (err, success) => {
if (err) {
console.log('Socket error', err);
} else {
}
});
Run Code Online (Sandbox Code Playgroud)
错误:
{ ForbiddenException: Forbidden
at Object.extractError (/home/ubuntu/git/backend/node_modules/aws-sdk/lib/protocol/json.js:51:27)
at Request.extractError (/home/ubuntu/git/backend/node_modules/aws-sdk/lib/protocol/rest_json.js:55:8)
at Request.callListeners (/home/ubuntu/git/backend/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/home/ubuntu/git/backend/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/home/ubuntu/git/backend/node_modules/aws-sdk/lib/request.js:683:14)
at Request.transition (/home/ubuntu/git/backend/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/home/ubuntu/git/backend/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /home/ubuntu/git/backend/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/home/ubuntu/git/backend/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/home/ubuntu/git/backend/node_modules/aws-sdk/lib/request.js:685:12)
message: …Run Code Online (Sandbox Code Playgroud) 我正在Nginx使用docker-compose版本创建一个容器3.7
我正在尝试指定ipam属性。但是当我阅读以下官方参考资料时:https :
//docs.docker.com/compose/compose-file/#network-configuration-reference
有一个注释,我知道gateway只能在 version 下指定2。
注意:其他 IPAM 配置(例如网关)目前仅适用于版本 2。
所以我尝试不指定gatewayunderipam属性。我的容器仍然可以创建和运行。
然后我去检查docker-network设置。经过我检查和观察,没有指定gateway。但我Nginx's access.log仍然显示来自172.19.100.1我认为它是gateway.
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.19.100.0/24"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想知道并澄清的是,在 version 下3.7,是否有任何方法可以指定gateway内部docker-compose文件,或者如果无法指定,默认值是什么?
另外,是否应该建议docker-compose在 version 下编写2而不是在3?
我正在尝试通过 wss://connection_url?queryparam=param 通过 WebSocket 连接传递查询字符串
但连接调用的 lambda 函数无法读取查询参数。事实上,我打印了收到的 lambda 函数的集成响应,并且其中没有显示任何查询参数。我是否需要在 API 网关中配置以允许查询字符串参数请帮助