diff --git a/server/model/monitor.js b/server/model/monitor.js index f28b4fe23..ecdece997 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -792,29 +792,19 @@ class Monitor extends BeanModel { port = this.port; } - try { - const resp = await radius( - this.hostname, - this.radiusUsername, - this.radiusPassword, - this.radiusCalledStationId, - this.radiusCallingStationId, - this.radiusSecret, - port, - this.interval * 1000 * 0.8, - ); - if (resp.code) { - bean.msg = resp.code; - } - bean.status = UP; - } catch (error) { - bean.status = DOWN; - if (error.response?.code) { - bean.msg = error.response.code; - } else { - bean.msg = error.message; - } - } + const resp = await radius( + this.hostname, + this.radiusUsername, + this.radiusPassword, + this.radiusCalledStationId, + this.radiusCallingStationId, + this.radiusSecret, + port, + this.interval * 1000 * 0.4, + ); + + bean.msg = resp.code; + bean.status = UP; bean.ping = dayjs().valueOf() - startTime; } else if (this.type === "redis") { let startTime = dayjs().valueOf(); diff --git a/server/util-server.js b/server/util-server.js index 031d8b672..ece0456de 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -486,6 +486,7 @@ exports.radius = function ( host: hostname, hostPort: port, timeout: timeout, + retries: 1, dictionaries: [ file ], }); @@ -497,6 +498,12 @@ exports.radius = function ( [ attributes.CALLING_STATION_ID, callingStationId ], [ attributes.CALLED_STATION_ID, calledStationId ], ], + }).catch((error) => { + if (error.response?.code) { + throw Error(error.response.code); + } else { + throw Error(error.message); + } }); }; diff --git a/test/test-radius.dockerfile b/test/test-radius.dockerfile new file mode 100644 index 000000000..3f577edeb --- /dev/null +++ b/test/test-radius.dockerfile @@ -0,0 +1,13 @@ +# Container running a test radius server +# More instructions in https://github.com/louislam/uptime-kuma/pull/1635 + +FROM freeradius/freeradius-server:latest + +RUN mkdir -p /etc/raddb/mods-config/files/ + +RUN echo "client net {" > /etc/raddb/clients.conf +RUN echo " ipaddr = 172.17.0.0/16" >> /etc/raddb/clients.conf +RUN echo " secret = testing123" >> /etc/raddb/clients.conf +RUN echo "}" >> /etc/raddb/clients.conf + +RUN echo "bob Cleartext-Password := \"testpw\"" > /etc/raddb/mods-config/files/authorize