Skip to content

Commit 7071d26

Browse files
authored
Merge pull request #14 from fealone/supports_tcp
Supports for tcp endpoint.
2 parents 3219b4e + ab9a6f5 commit 7071d26

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
lines changed

src/monitapi/monitoring/monitor.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,36 @@ async def monitor_stun(target: MonitoringTarget) -> MonitoringResult:
126126
response="")
127127

128128

129+
async def monitor_tcp(target: MonitoringTarget) -> MonitoringResult:
130+
err = Exception()
131+
for i in range(target.retry):
132+
try:
133+
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
134+
host, port = target.url.split("tcp:")[1].split(":")
135+
sock.settimeout(target.timeout)
136+
sock.connect((host, int(port)))
137+
sock.close()
138+
break
139+
except Exception as e:
140+
logger.warning(("Monitor failed. "
141+
f"Target: {target.url}"))
142+
err = e
143+
time.sleep(target.retry_wait)
144+
else:
145+
return MonitoringResult(
146+
expected_status_code=0,
147+
status_code=0,
148+
state=False,
149+
url=target.url,
150+
response=str(err))
151+
return MonitoringResult(
152+
expected_status_code=0,
153+
status_code=0,
154+
state=True,
155+
url=target.url,
156+
response="")
157+
158+
129159
async def watch(f: IO = None) -> None:
130160
if f is None:
131161
f = open("targets.yaml")
@@ -140,6 +170,8 @@ async def watch(f: IO = None) -> None:
140170
task = asyncio.ensure_future(monitor_http(target))
141171
elif target.url.startswith("stun:"):
142172
task = asyncio.ensure_future(monitor_stun(target))
173+
elif target.url.startswith("tcp:"):
174+
task = asyncio.ensure_future(monitor_tcp(target))
143175
else:
144176
logger.warning(f"Unsupported target type. target: {target.url}")
145177
monitors.append(task)

src/monitapi/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version = "0.5.0"
1+
version = "0.6.0"

website/docs/definition.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ monitor_targets:
2727
- HEAD, GET, POST, PUT, DELETE, OPTIONS, PATCH
2828
* monitoring-url
2929
- URL to monitor
30-
- Supports for [http://, https://, stun:]
30+
- Supports for [http://, https://, stun:, tcp:]
3131
* header-name, header-value
3232
- HTTP headers
3333
* expected-status-code

0 commit comments

Comments
 (0)