ITS ALIVE AGAIN:

This commit is contained in:
Christopher Cookman 2025-01-11 01:06:52 -07:00
commit 76922166c4
9 changed files with 3461 additions and 0 deletions

130
.gitignore vendored Normal file
View file

@ -0,0 +1,130 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
.cache
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

802
dev/endpoints.txt Normal file
View file

@ -0,0 +1,802 @@
Endpoint: <Endpoint/CID.....................................> <State.....> <Channels.>
I/OAuth: <AuthId/UserName...........................................................>
Aor: <Aor............................................> <MaxContact>
Contact: <Aor/ContactUri..........................> <Hash....> <Status> <RTT(ms)..>
Transport: <TransportId........> <Type> <cos> <tos> <BindAddress..................>
Identify: <Identify/Endpoint.........................................................>
Match: <criteria.........................>
Channel: <ChannelId......................................> <State.....> <Time.....>
Exten: <DialedExten...........> CLCID: <ConnectedLineCID.......>
==========================================================================================
Endpoint: 1000/1000 Not in use 0 of inf
InAuth: 1000-auth/1000
Aor: 1000 50
Contact: 1000/sip:1000@67.218.74.175:17534;x-ast-or 47a3db5b38 Avail 54.140
Contact: 1000/sip:1000@67.218.74.175:5060;x-ast-ori 8bcbb75be3 Avail 68.837
Contact: 1000/sip:1000@67.218.74.175:51513;x-ast-or 9f6c6d58db Avail 75.536
Endpoint: 1001/1001 Unavailable 0 of inf
InAuth: 1001-auth/1001
Aor: 1001 100
Endpoint: 1002/1002 Not in use 0 of inf
InAuth: 1002-auth/1002
Aor: 1002 5
Contact: 1002/sip:1002@69.71.12.69:11992;x-ast-orig 2ef4026678 Avail 61.835
Endpoint: 1003/1003 Not in use 0 of inf
InAuth: 1003-auth/1003
Aor: 1003 10
Contact: 1003/sip:1003@104.55.71.173:5062 13e5c2c448 Avail 69.475
Endpoint: 1004/1004 Not in use 0 of inf
InAuth: 1004-auth/1004
Aor: 1004 5
Contact: 1004/sip:1004@98.209.177.59:5065;x-ast-ori 4b1ec12b04 Avail 76.044
Contact: 1004/sip:1004@98.209.177.59:5066;x-ast-ori e59bc56c03 Avail 84.058
Endpoint: 1005/1005 Unavailable 0 of inf
InAuth: 1005-auth/1005
Aor: 1005 5
Endpoint: 1006/1006 Unavailable 0 of inf
InAuth: 1006-auth/1006
Aor: 1006 5
Endpoint: 1007/1007 Not in use 0 of inf
InAuth: 1007-auth/1007
Aor: 1007 5
Contact: 1007/sip:1007@167.99.119.244:59242;rinstan 07857e523a Avail 78.755
Endpoint: 1008/1008 Not in use 0 of inf
InAuth: 1008-auth/1008
Aor: 1008 5
Contact: 1008/sip:1008@96.42.155.163:1026;x-ast-ori 2e7a065230 Avail 93.602
Endpoint: 1009/1009 Not in use 0 of inf
InAuth: 1009-auth/1009
Aor: 1009 5
Contact: 1009/sip:1009@167.99.48.91:26800;rinstance e2b49e1c2f Avail 83.245
Endpoint: 1010/1010 Not in use 0 of inf
InAuth: 1010-auth/1010
Aor: 1010 5
Contact: 1010/sip:1010@102.182.171.93:5060;rinstanc 49eb463071 Avail 418.295
Endpoint: 1011/1011 Unavailable 0 of inf
InAuth: 1011-auth/1011
Aor: 1011 5
Endpoint: 1012/1012 Unavailable 0 of inf
InAuth: 1012-auth/1012
Aor: 1012 5
Endpoint: 1013/1013 Unavailable 0 of inf
InAuth: 1013-auth/1013
Aor: 1013 5
Endpoint: 1014/1014 Unavailable 0 of inf
InAuth: 1014-auth/1014
Aor: 1014 5
Endpoint: 1015/1015 Not in use 0 of inf
InAuth: 1015-auth/1015
Aor: 1015 5
Contact: 1015/sip:1015@69.141.149.28:5060;x-ast-ori 300431f712 Avail 90.213
Endpoint: 1016/1016 Not in use 0 of inf
InAuth: 1016-auth/1016
Aor: 1016 5
Contact: 1016/sip:1016@167.99.119.203:16965;transpo 670cad476e Avail 74.584
Endpoint: 1017/1017 Not in use 0 of inf
InAuth: 1017-auth/1017
Aor: 1017 5
Contact: 1017/sip:1017@174.2.17.180:52648;ob 4f490e3507 Avail 218.510
Endpoint: 1018/1018 Not in use 0 of inf
InAuth: 1018-auth/1018
Aor: 1018 1
Contact: 1018/sip:1018@50.54.126.17:61998;x-ast-ori 1fd4845097 Avail 72.223
Endpoint: 1019/1019 Not in use 0 of inf
InAuth: 1019-auth/1019
Aor: 1019 10
Contact: 1019/sip:1019@50.54.126.17:42502;x-ast-ori d5a2c2f65a Avail 77.525
Endpoint: 1020/1020 Not in use 0 of inf
InAuth: 1020-auth/1020
Aor: 1020 100
Contact: 1020/sip:1020@107.15.163.194:5065 8d992b6dc3 Avail 102.265
Contact: 1020/sip:1020@107.15.163.194:2488 e2b411b258 Avail 97.109
Endpoint: 1021/1021 Unavailable 0 of inf
InAuth: 1021-auth/1021
Aor: 1021 5
Endpoint: 1022/1022 Unavailable 0 of inf
InAuth: 1022-auth/1022
Aor: 1022 5
Endpoint: 1023/1023 Unavailable 0 of inf
InAuth: 1023-auth/1023
Aor: 1023 5
Endpoint: 1024/1024 Unavailable 0 of inf
InAuth: 1024-auth/1024
Aor: 1024 5
Endpoint: 1025/1025 Unavailable 0 of inf
InAuth: 1025-auth/1025
Aor: 1025 5
Endpoint: 1026/1026 Not in use 0 of inf
InAuth: 1026-auth/1026
Aor: 1026 5
Contact: 1026/sip:1026@66.242.81.122:31000 ec9bc01ddf Avail 76.415
Endpoint: 1027/1027 Unavailable 0 of inf
InAuth: 1027-auth/1027
Aor: 1027 5
Endpoint: 1028/1028 Unavailable 0 of inf
InAuth: 1028-auth/1028
Aor: 1028 5
Endpoint: 1029/1029 Unavailable 0 of inf
InAuth: 1029-auth/1029
Aor: 1029 5
Endpoint: 1030/1030 Unavailable 0 of inf
InAuth: 1030-auth/1030
Aor: 1030 5
Endpoint: 1031/1031 Unavailable 0 of inf
InAuth: 1031-auth/1031
Aor: 1031 5
Endpoint: 1032/1032 Not in use 0 of inf
InAuth: 1032-auth/1032
Aor: 1032 5
Contact: 1032/sip:1032@96.42.155.163:5060;x-ast-ori 721e48bc2d Avail 88.601
Endpoint: 1033/1033 Not in use 0 of inf
InAuth: 1033-auth/1033
Aor: 1033 5
Contact: 1033/sip:1033@173.52.119.43:1050;x-ast-ori fc2b3122d4 Avail 97.783
Endpoint: 1034/1034 Not in use 0 of inf
InAuth: 1034-auth/1034
Aor: 1034 5
Contact: 1034/sip:1034@162.204.50.197:5060;x-ast-or 16e2fd8da0 Avail 66.626
Contact: 1034/sip:1034@162.204.50.197:1046;x-ast-or 7a2f752f58 Avail 73.358
Endpoint: 1035/1035 Not in use 0 of inf
InAuth: 1035-auth/1035
Aor: 1035 5
Contact: 1035/sip:1035@192.226.159.87:5060 d0d9413a83 Avail 114.964
Endpoint: 1036/1036 Not in use 0 of inf
InAuth: 1036-auth/1036
Aor: 1036 30
Contact: 1036/sip:1036@159.89.179.103:46694;rinstan 3db35dd766 Avail 75.091
Contact: 1036/sip:1036@174.174.37.162:54611;line=qn 631805d8d9 Avail 58.794
Contact: 1036/sip:1036@174.174.37.162:11271;x-ast-o 90d5abdeb0 Unavail nan
Contact: 1036/sip:1036@174.174.37.162:27208;x-ast-o dc9dbc079d Avail 85.439
Endpoint: 1037/1037 Unavailable 0 of inf
InAuth: 1037-auth/1037
Aor: 1037 5
Endpoint: 1038/1038 Not in use 0 of inf
InAuth: 1038-auth/1038
Aor: 1038 30
Contact: 1038/sip:1038@174.174.37.162:59252;x-ast-o 38dbb1425a Unavail nan
Contact: 1038/sip:1038@174.174.37.162:5062;x-ast-or eedaea7b6d Avail 101.747
Contact: 1038/sip:1038@174.174.37.162:5060;x-ast-or fc2e28a480 Unavail nan
Endpoint: 1039/1039 Unavailable 0 of inf
InAuth: 1039-auth/1039
Aor: 1039 100
Endpoint: 1040/1040 Unavailable 0 of inf
InAuth: 1040-auth/1040
Aor: 1040 5
Endpoint: 1041/1041 Unavailable 0 of inf
InAuth: 1041-auth/1041
Aor: 1041 5
Endpoint: 1042/1042 Unavailable 0 of inf
InAuth: 1042-auth/1042
Aor: 1042 5
Endpoint: 1043/1043 Unavailable 0 of inf
InAuth: 1043-auth/1043
Aor: 1043 5
Endpoint: 1044/1044 Unavailable 0 of inf
InAuth: 1044-auth/1044
Aor: 1044 5
Contact: 1044/sip:1044@205.220.219.115:40654;transp f678875695 Unavail nan
Endpoint: 1045/1045 Not in use 0 of inf
InAuth: 1045-auth/1045
Aor: 1045 5
Contact: 1045/sip:s@68.180.38.252:1025;line=zzjsywm ccb27e7133 Avail 82.850
Endpoint: 1046/1046 Not in use 0 of inf
InAuth: 1046-auth/1046
Aor: 1046 5
Contact: 1046/sip:1046@75.97.204.187:51208;ob 5fd50c0c41 Avail 114.867
Contact: 1046/sip:1046@70.15.74.194:51219;ob;x-ast- 9ed0086107 Avail 115.210
Endpoint: 1047/1047 Unavailable 0 of inf
InAuth: 1047-auth/1047
Aor: 1047 5
Endpoint: 1048/1048 Not in use 0 of inf
InAuth: 1048-auth/1048
Aor: 1048 5
Contact: 1048/sip:1048@67.176.139.99:5065;x-ast-ori 816193c286 Avail 80.905
Contact: 1048/sip:1048@67.176.139.99:5060;x-ast-ori adeecaf2d3 Avail 90.551
Endpoint: 1049/1049 Unavailable 0 of inf
InAuth: 1049-auth/1049
Aor: 1049 5
Endpoint: 1050/1050 Not in use 0 of inf
InAuth: 1050-auth/1050
Aor: 1050 5
Contact: 1050/sip:1050@74.83.189.6:5060;line=iegqnz b4c7db44d2 Avail 60.513
Endpoint: 1051/1051 Unavailable 0 of inf
InAuth: 1051-auth/1051
Aor: 1051 5
Endpoint: 1052/1052 Not in use 0 of inf
InAuth: 1052-auth/1052
Aor: 1052 5
Contact: 1052/sip:1052@68.204.69.209:1024;x-ast-ori 2bb52bd59b Avail 99.738
Endpoint: 1053/1053 Unavailable 0 of inf
InAuth: 1053-auth/1053
Aor: 1053 5
Endpoint: 1054/1054 Unavailable 0 of inf
InAuth: 1054-auth/1054
Aor: 1054 5
Endpoint: 1055/1055 Unavailable 0 of inf
InAuth: 1055-auth/1055
Aor: 1055 5
Endpoint: 1056/1056 Not in use 0 of inf
InAuth: 1056-auth/1056
Aor: 1056 5
Contact: 1056/sip:1056@147.81.100.92:60009;ob;x-ast b2be1cccce Avail 106.440
Endpoint: 1057/1057 Not in use 0 of inf
InAuth: 1057-auth/1057
Aor: 1057 5
Contact: 1057/sip:s@68.204.69.209:5060;line=cgwlxwz af3a4b5b66 Avail 93.583
Endpoint: 1058/1058 Unavailable 0 of inf
InAuth: 1058-auth/1058
Aor: 1058 5
Endpoint: 1059/1059 Unavailable 0 of inf
InAuth: 1059-auth/1059
Aor: 1059 5
Endpoint: 1060/1060 Unavailable 0 of inf
InAuth: 1060-auth/1060
Aor: 1060 5
Endpoint: 1061/1061 Not in use 0 of inf
InAuth: 1061-auth/1061
Aor: 1061 5
Contact: 1061/sip:s@170.250.1.134:5060;line=nrfngfb 7ee702d6b6 Avail 72.501
Endpoint: 1062/1062 Unavailable 0 of inf
InAuth: 1062-auth/1062
Aor: 1062 5
Endpoint: 1063/1063 Unavailable 0 of inf
InAuth: 1063-auth/1063
Aor: 1063 5
Endpoint: 1064/1064 Unavailable 0 of inf
InAuth: 1064-auth/1064
Aor: 1064 5
Endpoint: 1065/1065 Unavailable 0 of inf
InAuth: 1065-auth/1065
Aor: 1065 5
Endpoint: 1066/1066 Unavailable 0 of inf
InAuth: 1066-auth/1066
Aor: 1066 5
Endpoint: 1067/1067 Unavailable 0 of inf
InAuth: 1067-auth/1067
Aor: 1067 5
Endpoint: 1068/1068 Unavailable 0 of inf
InAuth: 1068-auth/1068
Aor: 1068 5
Endpoint: 1069/1069 Unavailable 0 of inf
InAuth: 1069-auth/1069
Aor: 1069 5
Endpoint: 1070/1070 Unavailable 0 of inf
InAuth: 1070-auth/1070
Aor: 1070 5
Endpoint: 1071/1071 Unavailable 0 of inf
InAuth: 1071-auth/1071
Aor: 1071 5
Endpoint: 1072/1072 Unavailable 0 of inf
InAuth: 1072-auth/1072
Aor: 1072 5
Endpoint: 1073/1073 Unavailable 0 of inf
InAuth: 1073-auth/1073
Aor: 1073 5
Endpoint: 1074/1074 Not in use 0 of inf
InAuth: 1074-auth/1074
Aor: 1074 5
Contact: 1074/sip:1074@88.196.62.196:63650;ob;x-ast a4aeb2db9c Avail 188.574
Endpoint: 1075/1075 Unavailable 0 of inf
InAuth: 1075-auth/1075
Aor: 1075 5
Endpoint: 1076/1076 Unavailable 0 of inf
InAuth: 1076-auth/1076
Aor: 1076 5
Endpoint: 1077/1077 Unavailable 0 of inf
InAuth: 1077-auth/1077
Aor: 1077 5
Endpoint: 1078/1078 Not in use 0 of inf
InAuth: 1078-auth/1078
Aor: 1078 5
Contact: 1078/sip:1078@75.28.105.249:5060;x-ast-ori d84f874aed Avail 40.218
Endpoint: 1079/1079 Unavailable 0 of inf
InAuth: 1079-auth/1079
Aor: 1079 5
Endpoint: 1080/1080 Unavailable 0 of inf
InAuth: 1080-auth/1080
Aor: 1080 5
Endpoint: 1081/1081 Unavailable 0 of inf
InAuth: 1081-auth/1081
Aor: 1081 5
Endpoint: 1082/1082 Not in use 0 of inf
InAuth: 1082-auth/1082
Aor: 1082 5
Contact: 1082/sip:1082@24.166.195.0:5060;x-ast-orig e258e66072 Avail 81.377
Endpoint: 1083/1083 Unavailable 0 of inf
InAuth: 1083-auth/1083
Aor: 1083 5
Endpoint: 1084/1084 Unavailable 0 of inf
InAuth: 1084-auth/1084
Aor: 1084 5
Endpoint: 1085/1085 Unavailable 0 of inf
InAuth: 1085-auth/1085
Aor: 1085 5
Endpoint: 1086/1086 Unavailable 0 of inf
InAuth: 1086-auth/1086
Aor: 1086 5
Endpoint: 1087/1087 Not in use 0 of inf
InAuth: 1087-auth/1087
Aor: 1087 10
Contact: 1087/sip:s@86.24.70.253:5060;line=lbhboje adda48914e Avail 179.062
Endpoint: 1088/1088 Unavailable 0 of inf
InAuth: 1088-auth/1088
Aor: 1088 5
Endpoint: 1089/1089 Unavailable 0 of inf
InAuth: 1089-auth/1089
Aor: 1089 5
Endpoint: 1090/1090 Not in use 0 of inf
InAuth: 1090-auth/1090
Aor: 1090 5
Contact: 1090/sip:1090@107.115.111.113:4607;x-ast-o 219b279b70 Avail 131.207
Contact: 1090/sip:1090@107.115.111.113:4601;ob;x-as 62f8227779 Avail 130.322
Endpoint: 1091/1091 Unavailable 0 of inf
InAuth: 1091-auth/1091
Aor: 1091 5
Endpoint: 1092/1092 Unavailable 0 of inf
InAuth: 1092-auth/1092
Aor: 1092 5
Endpoint: 1093/1093 Unavailable 0 of inf
InAuth: 1093-auth/1093
Aor: 1093 5
Endpoint: 1094/1094 Unavailable 0 of inf
InAuth: 1094-auth/1094
Aor: 1094 5
Endpoint: 1095/1095 Unavailable 0 of inf
InAuth: 1095-auth/1095
Aor: 1095 5
Endpoint: 1096/1096 Unavailable 0 of inf
InAuth: 1096-auth/1096
Aor: 1096 5
Endpoint: 1097/1097 Unavailable 0 of inf
InAuth: 1097-auth/1097
Aor: 1097 5
Endpoint: 1098/1098 Not in use 0 of inf
InAuth: 1098-auth/1098
Aor: 1098 5
Contact: 1098/sip:s@5.161.42.254:5160;line=dihquyi 75cf07b934 Avail 89.716
Endpoint: 1099/1099 Unavailable 0 of inf
InAuth: 1099-auth/1099
Aor: 1099 5
Endpoint: 1100/1100 Not in use 0 of inf
InAuth: 1100-auth/1100
Aor: 1100 5
Contact: 1100/sip:1100@75.113.108.62:60337;ob;x-ast d1c98fe05b Avail 38.322
Endpoint: 1101/1101 Not in use 0 of inf
InAuth: 1101-auth/1101
Aor: 1101 5
Contact: 1101/sip:1101@50.20.125.155:9587;x-ast-ori 2cc02a05d1 Avail 58.004
Contact: 1101/sip:1101@50.20.125.155:9842;ob aedfe7037c Avail 109.384
Contact: 1101/sip:1101@50.20.125.155:9634;x-ast-ori b4d88aa1da Avail 62.027
Endpoint: 1102/1102 Unavailable 0 of inf
InAuth: 1102-auth/1102
Aor: 1102 5
Endpoint: 1103/1103 Unavailable 0 of inf
InAuth: 1103-auth/1103
Aor: 1103 5
Endpoint: 1104/1104 Not in use 0 of inf
InAuth: 1104-auth/1104
Aor: 1104 5
Contact: 1104/sip:1104@24.98.120.95:5061;x-ast-orig a4b5490b91 Avail 92.560
Endpoint: 1105/1105 Unavailable 0 of inf
InAuth: 1105-auth/1105
Aor: 1105 5
Endpoint: 1106/1106 Unavailable 0 of inf
InAuth: 1106-auth/1106
Aor: 1106 5
Endpoint: 1107/1107 Unavailable 0 of inf
InAuth: 1107-auth/1107
Aor: 1107 5
Endpoint: 1108/1108 Unavailable 0 of inf
InAuth: 1108-auth/1108
Aor: 1108 5
Endpoint: 1109/1109 Unavailable 0 of inf
InAuth: 1109-auth/1109
Aor: 1109 5
Endpoint: 1110/1110 Unavailable 0 of inf
InAuth: 1110-auth/1110
Aor: 1110 100
Endpoint: 1111/1111 Unavailable 0 of inf
InAuth: 1111-auth/1111
Aor: 1111 1
Endpoint: 1112/1112 Not in use 0 of inf
InAuth: 1112-auth/1112
Aor: 1112 5
Contact: 1112/sip:1112@99.144.95.24:5060 e7265f5a59 Avail 119.463
Endpoint: 1113/1113 Not in use 0 of inf
InAuth: 1113-auth/1113
Aor: 1113 5
Contact: 1113/sip:1113@97.104.44.141:5060;x-ast-ori c83a0324a6 Avail 101.516
Endpoint: 1114/1114 Not in use 0 of inf
InAuth: 1114-auth/1114
Aor: 1114 5
Contact: 1114/sip:1114@73.119.66.194:54954;ob;x-ast 3bf9743cf2 Avail 100.320
Endpoint: 1116/1116 Not in use 0 of inf
InAuth: 1116-auth/1116
Aor: 1116 5
Contact: 1116/sip:s@74.215.121.82:56113;line=jixnvs d10951afac Avail 56.861
Endpoint: 1117/1117 Unavailable 0 of inf
InAuth: 1117-auth/1117
Aor: 1117 5
Endpoint: 1118/1118 Unavailable 0 of inf
InAuth: 1118-auth/1118
Aor: 1118 5
Endpoint: 1119/1119 Not in use 0 of inf
InAuth: 1119-auth/1119
Aor: 1119 5
Contact: 1119/sip:1119@24.98.120.95:5060;x-ast-orig 9b9cbab137 Avail 93.132
Endpoint: 1120/1120 Unavailable 0 of inf
InAuth: 1120-auth/1120
Aor: 1120 5
Endpoint: 1121/1121 Unavailable 0 of inf
InAuth: 1121-auth/1121
Aor: 1121 5
Endpoint: 1122/1122 Unavailable 0 of inf
InAuth: 1122-auth/1122
Aor: 1122 5
Endpoint: 1123/1123 Unavailable 0 of inf
InAuth: 1123-auth/1123
Aor: 1123 1
Endpoint: 1124/1124 Unavailable 0 of inf
InAuth: 1124-auth/1124
Aor: 1124 5
Endpoint: 1125/1125 Unavailable 0 of inf
InAuth: 1125-auth/1125
Aor: 1125 5
Endpoint: 1127/1127 Unavailable 0 of inf
InAuth: 1127-auth/1127
Aor: 1127 5
Endpoint: 1128/1128 Unavailable 0 of inf
InAuth: 1128-auth/1128
Aor: 1128 5
Endpoint: 1129/1129 Not in use 0 of inf
InAuth: 1129-auth/1129
Aor: 1129 5
Contact: 1129/sip:1129@96.125.229.143:5060;x-ast-or 89db0e267c Avail 67.920
Endpoint: 1130/1130 Unavailable 0 of inf
InAuth: 1130-auth/1130
Aor: 1130 5
Endpoint: 1132/1132 Unavailable 0 of inf
InAuth: 1132-auth/1132
Aor: 1132 5
Endpoint: 1133/1133 Not in use 0 of inf
InAuth: 1133-auth/1133
Aor: 1133 5
Contact: 1133/sip:1133@76.154.8.27:5060 b0aff7558d Avail 55.949
Endpoint: 1134/1134 Not in use 0 of inf
InAuth: 1134-auth/1134
Aor: 1134 5
Contact: 1134/sip:1134@71.201.226.96:5060;x-ast-ori c056072137 Avail 80.952
Endpoint: 1135/1135 Not in use 0 of inf
InAuth: 1135-auth/1135
Aor: 1135 5
Contact: 1135/sip:1135@167.99.119.244:14481;transpo 9ae9307592 Avail 77.601
Contact: 1135/sip:1135@107.196.37.51:5060 a68f348001 Avail 57.220
Endpoint: 1137/1137 Unavailable 0 of inf
InAuth: 1137-auth/1137
Aor: 1137 5
Endpoint: 1138/1138 Not in use 0 of inf
InAuth: 1138-auth/1138
Aor: 1138 5
Contact: 1138/sip:s@68.22.245.48:1027 28e8e68de6 Avail 64.274
Contact: 1138/sip:1138@68.22.245.48:5060 3bdb2ce5fd Avail 266.061
Endpoint: 1139/1139 Unavailable 0 of inf
InAuth: 1139-auth/1139
Aor: 1139 5
Endpoint: 1140/1140 Unavailable 0 of inf
InAuth: 1140-auth/1140
Aor: 1140 5
Endpoint: 1141/1141 Not in use 0 of inf
InAuth: 1141-auth/1141
Aor: 1141 1
Contact: 1141/sip:s@24.12.38.35:5060;line=mdutzln 81ac522ca8 Avail 73.866
Endpoint: 1142/1142 Not in use 0 of inf
InAuth: 1142-auth/1142
Aor: 1142 30
Contact: 1142/sip:1142@174.174.37.162:54611;line=jb 4d189072d9 Avail 45.034
Contact: 1142/sip:1142@174.174.37.162:32352;x-ast-o 61d8a87c0c Avail 116.698
Endpoint: 1144/1144 Not in use 0 of inf
InAuth: 1144-auth/1144
Aor: 1144 5
Contact: 1144/sip:1144@76.144.69.207:1024 39005f7c9a Avail 38.360
Endpoint: 1146/1146 Not in use 0 of inf
InAuth: 1146-auth/1146
Aor: 1146 5
Contact: 1146/sip:1146@73.37.93.137:52572;transport d8e5f8ac4e Avail 22.777
Endpoint: 1147/1147 Unavailable 0 of inf
InAuth: 1147-auth/1147
Aor: 1147 5
Endpoint: 1148/1148 Unavailable 0 of inf
InAuth: 1148-auth/1148
Aor: 1148 5
Endpoint: 1149/1149 Unavailable 0 of inf
InAuth: 1149-auth/1149
Aor: 1149 5
Endpoint: 1150/1150 Unavailable 0 of inf
InAuth: 1150-auth/1150
Aor: 1150 5
Endpoint: 1151/1151 Unavailable 0 of inf
InAuth: 1151-auth/1151
Aor: 1151 5
Endpoint: 1152/1152 Not in use 0 of inf
InAuth: 1152-auth/1152
Aor: 1152 5
Contact: 1152/sip:1152@159.203.6.79:5060;rinstance= 7818c02ded Avail 110.914
Endpoint: 1153/1153 Not in use 0 of inf
InAuth: 1153-auth/1153
Aor: 1153 5
Contact: 1153/sip:1153@50.48.166.161:51764;rinstanc 26b90a4855 Avail 80.444
Endpoint: 1154/1154 Not in use 0 of inf
InAuth: 1154-auth/1154
Aor: 1154 5
Contact: 1154/sip:1154@76.144.69.207:1024 d7274732e6 Avail 51.932
Endpoint: 1155/1155 Unavailable 0 of inf
InAuth: 1155-auth/1155
Aor: 1155 5
Endpoint: 1156/1156 Unavailable 0 of inf
InAuth: 1156-auth/1156
Aor: 1156 5
Endpoint: 1157/1157 Unavailable 0 of inf
InAuth: 1157-auth/1157
Aor: 1157 20
Contact: 1157/sip:1157@98.227.141.119:1025;x-ast-or 0e864b674c Unavail nan
Contact: 1157/sip:1157@98.227.141.119:5060;x-ast-or a3a0de4c07 Unavail nan
Endpoint: 1158/1158 Not in use 0 of inf
InAuth: 1158-auth/1158
Aor: 1158 20
Contact: 1158/sip:1158@199.48.94.31:49765;ob 13df4030f3 Avail 159.858
Contact: 1158/sip:1158@199.48.94.31:49673;x-ast-ori 2eea426557 Avail 78.283
Contact: 1158/sip:1158@199.48.94.31:50022;x-ast-ori 8ab6f7f064 Avail 195.207
Contact: 1158/sip:1158@199.48.94.31:49782;x-ast-ori e52bad7a7d Avail 75.475
Contact: 1158/sip:1158@199.48.94.31:49811;x-ast-ori f533ab20e8 Avail 82.717
Endpoint: 2000/2000 Unavailable 0 of inf
InAuth: 2000-auth/2000
Aor: 2000 1
Endpoint: 2001/2001 Unavailable 0 of inf
InAuth: 2001-auth/2001
Aor: 2001 1
Endpoint: 2003/2003 Unavailable 0 of inf
InAuth: 2003-auth/2003
Aor: 2003 1
Endpoint: 2222/2222 Not in use 0 of inf
InAuth: 2222-auth/2222
Aor: 2222 1
Contact: 2222/sip:2222@174.175.230.11:5060;x-ast-or e24e6046de Avail 136.718
Endpoint: 2329/2329 Not in use 0 of inf
InAuth: 2329-auth/2329
Aor: 2329 1
Contact: 2329/sip:2329@104.55.71.173:5080 958e0eb091 Avail 114.184
Endpoint: 2355/2355 Not in use 0 of inf
InAuth: 2355-auth/2355
Aor: 2355 1
Contact: 2355/sip:2355-6b592b09be29069b59a3216c81c9 c99976d4b7 Avail 13.561
Endpoint: 2500/2500 Unavailable 0 of inf
InAuth: 2500-auth/2500
Aor: 2500 1
Endpoint: 6666/6666 Unavailable 0 of inf
InAuth: 6666-auth/6666
Aor: 6666 1
Endpoint: 8000/8000 Unavailable 0 of inf
InAuth: 8000-auth/8000
Aor: 8000 50
Endpoint: 8888/8888 Unavailable 0 of inf
InAuth: 8888-auth/8888
Aor: 8888 100
Endpoint: Anveo_Main Not in use 0 of inf
Aor: Anveo_Main 0
Contact: Anveo_Main/sip:sbc.anveo.com 1ae991ecf4 Avail 59.656
Transport: 0.0.0.0-udp udp 3 96 0.0.0.0:5060
Identify: Anveo_Main/Anveo_Main
Match: 169.48.232.158/32
Endpoint: BulkVS Not in use 0 of inf
OutAuth: BulkVS/611679_litenet
Aor: BulkVS 0
Contact: BulkVS/sip:611679_litenet@sip.bulkvs.com 48b38de7b3 Avail 149.116
Transport: 0.0.0.0-udp udp 3 96 0.0.0.0:5060
Identify: BulkVS/BulkVS
Match: 76.8.29.198/32
Match: 162.249.171.198/32
Match: 69.12.88.198/32
Endpoint: BulkVS_IP_Saso Not in use 0 of inf
Aor: BulkVS_IP_Saso 0
Contact: BulkVS_IP_Saso/sip:sip.bulkvs.com:5060 af0266cd3a Avail 59.571
Transport: 0.0.0.0-udp udp 3 96 0.0.0.0:5060
Identify: BulkVS_IP_Saso/BulkVS_IP_Saso
Match: 162.249.171.198/32
Match: 69.12.88.198/32
Match: 76.8.29.198/32
Endpoint: CUCM_saso Not in use 0 of inf
Aor: CUCM_saso 0
Contact: CUCM_saso/sip:99.164.136.5:5071 6fb546a4b2 Avail 67.121
Transport: 0.0.0.0-udp udp 3 96 0.0.0.0:5060
Identify: CUCM_saso/CUCM_saso
Match: 99.164.136.5/32
Endpoint: Nick_Emergency_Line Not in use 0 of inf
OutAuth: Nick_Emergency_Line/613135_nicomaEmergency
Aor: Nick_Emergency_Line 0
Contact: Nick_Emergency_Line/sip:613135_nicomaEmerg 3f31c09fea Avail 61.098
Transport: 0.0.0.0-udp udp 3 96 0.0.0.0:5060
Identify: Nick_Emergency_Line/Nick_Emergency_Line
Match: 76.8.29.198/32
Match: 162.249.171.198/32
Match: 69.12.88.198/32
Endpoint: VoipMS Not in use 0 of inf
OutAuth: VoipMS/290338_litenet
Aor: VoipMS 0
Contact: VoipMS/sip:290338_litenet@seattle3.voip.ms a22abce9bb Avail 9.105
Transport: 0.0.0.0-udp udp 3 96 0.0.0.0:5060
Identify: VoipMS/VoipMS
Match: 208.100.60.44/32
Objects found: 169

1394
dev/index.html Normal file

File diff suppressed because it is too large Load diff

366
dev/voicemail.conf Normal file
View file

@ -0,0 +1,366 @@
[general]
format=wav49|gsm|wav
serveremail=asterisk
attach=yes
skipms=3000
maxsilence=10
silencethreshold=128
maxlogins=3
emaildateformat=%A, %B %d, %Y at %r
pagerdateformat=%A, %B %d, %Y at %r
sendvoicemail=yes
charset=UTF-8
pollfreq=30
pollmailboxes=yes
envelope=yes
forcename=yes
forcegreetings=no
operator=yes
review=no
saycid=no
sayduration=yes
searchcontexts=no
tempgreetwarn=yes
usedirectory=yes
hidefromdir=no
moveheard=yes
smdienable=no
nextaftercmd=yes
emailsubject=PBX Voicemail Notification
emailbody=${VM_NAME},\n\nThere is a new voicemail in mailbox ${VM_MAILBOX}:\n\n\tFrom:\t${VM_CALLERID}\n\tLength:\t${VM_DUR} seconds\n\tDate:\t${VM_DATE}\n\nDial *98 to access your voicemail by phone.\nVisit /ucp to check your voicemail with a web browser.\n
fromstring=PBX Phone System
pagersubject=PBX Voicemail Notification
pagerbody=New ${VM_DUR} long msg in box ${VM_MAILBOX}\nfrom ${VM_CALLERID}, on ${VM_DATE}
pagerfromstring=PBX Phone System
pbxskip=no
maxgreet=60
maxmsg=100
minpassword=0
maxsecs=300
minsecs=1
imapgreetings=yes
imapclosetimeout=60
imapopentimeout=60
imapreadtimeout=60
imapwritetimeout=60
aliasescontext=pbxaliases
[zonemessages]
eastern=America/New_York|'vm-received' Q 'digits/at' IMp
central=America/Chicago|'vm-received' Q 'digits/at' IMp
central24=America/Chicago|'vm-received' q 'digits/at' H N 'hours'
military=Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p'
european=Europe/Copenhagen|'vm-received' a d b 'digits/at' HM
[5-years]
main=4569,5 Year Mailbox,,,
[default]
1234=4242,Example Mailbox,root@localhost,,
1004=123456,Niko,478578328572395535,,attach=no|saycid=no|envelope=no|delete=no
1006=123456789*0,A Superb Ostrich,780434440387166209,,attach=no|saycid=no|envelope=no|delete=no
1008=266344,nottimwakefield,429718742197600256,,attach=no|saycid=no|envelope=no|delete=no
1010=1010,Zorphix,277858914610053120,,attach=no|saycid=no|envelope=no|delete=no
1011=5273,Faux_Lemons,492026384550723604,,attach=no|saycid=no|envelope=no|delete=no
1014=1014,free mogus drip,744695842836971600,,attach=no|saycid=no|envelope=no|delete=no
1015=8363,Radio Guy Sean,813981174657449994,,attach=no|saycid=no|envelope=no|delete=no
1017=2509,pyroman,347226337338982402,,attach=no|saycid=no|envelope=no|delete=no
1021=6669,Russian spy,1007889150382456953,,attach=no|saycid=no|envelope=no|delete=no
1023=6969,TheITGuy69,461280647470776341,,attach=no|saycid=no|envelope=no|delete=no
1024=8721,Alberta_Elevating15,607623638987833377,,attach=no|saycid=no|envelope=no|delete=no
1026=2580,Josh555,220940485080907776,,attach=no|saycid=no|envelope=no|delete=no
1028=1028,sam,241272630232088588,,attach=no|saycid=no|envelope=no|delete=no
1029=1234,JMAN.WiS&S,160060830656757760,,attach=no|saycid=no|envelope=no|delete=no
1030=6669,Guy,688277665970782229,,attach=no|saycid=no|envelope=no|delete=no
1031=36,PP,354348114246631434,,attach=no|saycid=no|envelope=no|delete=no
1032=0224,NVW Phone 2,513460799038029836,,attach=no|saycid=no|envelope=no|delete=no
1037=1037,crane man,496016246337175552,,attach=no|saycid=no|envelope=no|delete=no
1046=1046,Timtom,561706627015639040,,attach=no|saycid=no|envelope=no|delete=no
1047=0805,kyro,402932468493320202,,attach=no|saycid=no|envelope=no|delete=no
6666=6666,Vanessa Faye,939287005286785114,,attach=no|saycid=no|envelope=no|delete=no
1040=1040,Rory&,84022289024159744,,attach=no|saycid=no|envelope=no|delete=no
1052=2778,The Back-roads,856665123534667806,,attach=no|saycid=no|envelope=no|delete=no
1049=7268,Georninja LVFC,271151633373593601,,attach=no|saycid=no|envelope=no|delete=no
1055=1055,Justin @ BPOManitoba,319965178693419008,,attach=no|saycid=no|envelope=no|delete=no
1054=1234,tom,975468751254331402,,attach=no|saycid=no|envelope=no|delete=no
1027=2460*,Radiantator,1224848916994850908,,attach=no|saycid=no|envelope=no|delete=no
1056=1056,Seehed,1030394088974991423,,attach=no|saycid=no|envelope=no|delete=no
1057=1057,TazTech2,1211531245981401159,,attach=no|saycid=no|envelope=no|delete=no
1050=1050,lachesis,505593342860722176,,attach=no|saycid=no|envelope=no|delete=no
1060=1060,i luv cats <3,1151960527166259391,,attach=no|saycid=no|envelope=no|delete=no
1064=1064,bathboylovin,698203396037017741,,attach=no|saycid=no|envelope=no|delete=no
1065=1065,aze the ice / Hazem Blahtimey,736409864640790588,,attach=no|saycid=no|envelope=no|delete=no
1005=5580,joshgaming,513097970669846528,,attach=no|saycid=no|envelope=no|delete=no
1035=1212,MTLGeek.cc,274198682381844480,,attach=no|saycid=no|envelope=no|delete=no
1068=1068,august but sabs,1121307534800736276,,attach=no|saycid=no|envelope=no|delete=no
1069=050509,Bryson,760325541236310029,,attach=no|saycid=no|envelope=no|delete=no
1053=1053,Keiran (╯°□°)╯︵ ┻━┻,994713883338100746,,attach=no|saycid=no|envelope=no|delete=no
1063=0716,EastCoastBraiden,965068352299098152,,attach=no|saycid=no|envelope=no|delete=no
1071=1071,stormboy4k,948260186479538246,,attach=no|saycid=no|envelope=no|delete=no
1072=1072,nicholas,888826089420496967,,attach=no|saycid=no|envelope=no|delete=no
1073=1073,Tsuki,1246294162156945428,,attach=no|saycid=no|envelope=no|delete=no
1075=1075,WSBK Radio Transmitter,1183114728155910236,,attach=no|saycid=no|envelope=no|delete=no
1076=1076,BloxerBoyRadio_StationAudioBot,1240790471685443666,,attach=no|saycid=no|envelope=no|delete=no
1051=1051,Secure Fire Labs,1244432864683102218,,attach=no|saycid=no|envelope=no|delete=no
1080=1080,s̵k̷y̵_̶d̴z̵h̵u̶g̴a̷s̸h̴v̷i̵l̵i̴,1102276543654395986,,attach=no|saycid=no|envelope=no|delete=no
1078=3022,Matt,112777208522686464,,attach=no|saycid=no|envelope=no|delete=no
1039=828001,Dale Solér-Nuss,785287233769963530,,attach=no|saycid=no|envelope=no|delete=no
1044=1044,MarleyTheBird4342,1100953137977774130,,attach=no|saycid=no|envelope=no|delete=no
1041=223199,cloudy,900512214161694730,,attach=no|saycid=no|envelope=no|delete=no
1043=1043,Jacob,1133912452661268480,,attach=no|saycid=no|envelope=no|delete=no
1081=1081,Berge,1187126833641181184,,attach=no|saycid=no|envelope=no|delete=no
1077=101,Sam55,181508042901159936,,attach=no|saycid=no|envelope=no|delete=no
1034=1006,NeedNova,467132215390896129,,attach=no|saycid=no|envelope=no|delete=no
1083=1083,Lollo,374859398960513025,,attach=no|saycid=no|envelope=no|delete=no
1012=071906,Raychell,899294125986283520,,attach=no|saycid=no|envelope=no|delete=no
1091=9977*,liam,911521924050477066,,attach=no|saycid=no|envelope=no|delete=no
1092=1092,tob,988134038747361380,,attach=no|saycid=no|envelope=no|delete=no
1094=1094,Crazy,856106366006853652,,attach=no|saycid=no|envelope=no|delete=no
1095=1095,ermaX,1148664555065585665,,attach=no|saycid=no|envelope=no|delete=no
1042=1042,fernlew8828,842074014591352843,,attach=no|saycid=no|envelope=no|delete=no
1097=1097,mxnticek (Vlastimil N.),696826147081814027,,attach=no|saycid=no|envelope=no|delete=no
1089=1212,twf brian stells fan,1059495984767455292,,attach=no|saycid=no|envelope=no|delete=no
1013=071906,Mentally Turbulent Goblin,647199010544812073,,attach=no|saycid=yes|envelope=no|delete=no
1002=1961,MoSiren,425658608877961217,,attach=no|saycid=no|envelope=no|delete=no
1066=1066,Witherzilla,780163946886725632,,attach=no|saycid=no|envelope=no|delete=no
1093=1908,Skrypter,1146575615894503454,,attach=no|saycid=no|envelope=no|delete=no
1025=1961,MoSiren 2.0,1016556527957573735,,attach=no|saycid=no|envelope=no|delete=no
1100=1234,Next,718607680284917791,,attach=no|saycid=no|envelope=no|delete=no
1088=6263,SABERA 7,1130039639529504778,,attach=no|saycid=no|envelope=no|delete=no
1087=2512,RP Game Developer,939986226751094805,,attach=no|saycid=no|envelope=no|delete=no
1101=120621,vince,714236141200474232,,attach=no|saycid=no|envelope=no|delete=no
1102=1102,tørpix,678029865286500373,,attach=no|saycid=no|envelope=no|delete=no
1103=6869,Polio,914622045663420486,,attach=no|saycid=no|envelope=no|delete=no
1067=7690,Fresho LTD,817430688847888454,,attach=no|saycid=no|envelope=no|delete=no
1105=6869,Micone,1160494622393511956,,attach=no|saycid=no|envelope=no|delete=no
1090=1090,Vital Delicious,844548586589913149,,attach=no|saycid=no|envelope=no|delete=no
1108=1108,Cooper Santiago,571456371912867907,,attach=no|saycid=no|envelope=no|delete=no
1109=1109,Yeah,591303092423622667,,attach=no|saycid=no|envelope=no|delete=no
1104=3145,Fynn The Lonely Nardo,973889343569674315,,attach=no|saycid=no|envelope=no|delete=no
1114=1212,ausitnb,1187198526296424550,,attach=no|saycid=no|envelope=no|delete=no
1116=1116,W G B,185427704416436224,,attach=no|saycid=no|envelope=no|delete=no
1117=2131,Gavin. M,1045857622429011969,,attach=no|saycid=no|envelope=no|delete=no
1118=1118,fzorb,1133639224030150656,,attach=no|saycid=no|envelope=no|delete=no
1119=6581,FrankTheTank,1267090174672638112,,attach=no|saycid=no|envelope=no|delete=no
1120=1120,itz_sebiii_,592875645739073539,,attach=no|saycid=no|envelope=no|delete=no
2222=8889,rocord,510852599617159168,,attach=no|saycid=no|envelope=no|delete=no
1000=221628,Christopher Cookman,289884287765839882,,attach=no|saycid=yes|envelope=no|delete=no
1022=1800,sacha50,1113873509777678498,,attach=no|saycid=no|envelope=no|delete=no
1121=9131,Ale (Brew) 3,456841518527938570,,attach=no|saycid=no|envelope=no|delete=no
1122=1234,ale,511717058900393985,,attach=no|saycid=no|envelope=no|delete=no
1033=4876,Matt,467135558565494785,,attach=no|saycid=no|envelope=no|delete=no
1125=69420,donald,1105805360511590470,,attach=no|saycid=no|envelope=no|delete=no
1016=5561,CaptainChris,473855613776953346,,attach=no|saycid=no|envelope=no|delete=no
1086=,Aidanlegs,345274339588833280,,attach=no|saycid=no|envelope=no|delete=no
1096=1096,Collin,1217962436095905835,,attach=no|saycid=no|envelope=no|delete=no
1127=1127,robotboy,1072190082917863524,,attach=no|saycid=no|envelope=no|delete=no
1128=1234,teleperson,1191195990997348434,,attach=no|saycid=no|envelope=no|delete=no
1124=1124,ryu,949139956738170901,,attach=no|saycid=no|envelope=no|delete=no
1130=1130,George,776146799252733952,,attach=no|saycid=no|envelope=no|delete=no
1003=1003,Ramsaso,367867185143480323,,attach=no|saycid=no|envelope=no|delete=no
1132=1132,Zer0,752165613513867294,,attach=no|saycid=no|envelope=no|delete=no
1134=1111,Theliftoperator,569524620336562186,,attach=no|saycid=no|envelope=no|delete=no
1133=123,elf !,1164376204103655508,,attach=no|saycid=no|envelope=no|delete=no
1135=3706,Ryan,557691015276789783,,attach=no|saycid=no|envelope=no|delete=no
1137=1137,wii sports,1152113535632023563,,attach=no|saycid=no|envelope=no|delete=no
1129=1129,Cody.,136263628515966976,,attach=no|saycid=no|envelope=no|delete=no
1138=1234,Hello2,785278568304214017,,attach=no|saycid=no|envelope=no|delete=no
1139=1139,Ethan:-/,1131605715258183720,,attach=no|saycid=no|envelope=no|delete=no
1140=123,elf ! (Ext: 1133),1164376204103655508,,attach=no|saycid=no|envelope=no|delete=no
1141=0390,Liam,988509449515855963,,attach=no|saycid=no|envelope=no|delete=no
1099=1279,Prime Minster Zach Findley,1285423070466539612,,attach=no|saycid=no|envelope=no|delete=no
1144=55756656,Jaryn,861278095657926666,,attach=no|saycid=no|envelope=no|delete=no
1107=2270,Stanley Wray,934139692520185938,,attach=no|saycid=no|envelope=no|delete=no
1146=1146,AlrmFire,1257896351602184366,,attach=no|saycid=no|envelope=no|delete=no
1147=1147,door,513821956559208468,,attach=no|saycid=no|envelope=no|delete=no
1148=1148,!,860039474888048660,,attach=no|saycid=no|envelope=no|delete=no
1149=,LJ,744744770886172752,,attach=no|saycid=no|envelope=no|delete=no
1151=1151,LápizDeveloper,898676045652328489,,attach=no|saycid=no|envelope=no|delete=no
1153=1153,Jake,343453949246046208,,attach=no|saycid=no|envelope=no|delete=no
1154=55756656,Jarny,928915944246476840,,attach=no|saycid=no|envelope=no|delete=no
1019=13741,Maddix's Office,603640213218131978,,attach=no|saycid=no|envelope=no|delete=no
1048=2545,FireAlarmExpert25,1069052504559591456,,attach=no|saycid=no|envelope=no|delete=no
1084=9,David H.,1153509834235314316,,attach=no|saycid=no|envelope=no|delete=no
1018=4628,Maddix's Bedroom,1180983258830360729,,attach=no|saycid=yes|envelope=yes|delete=no
1150=1150,isabella,1112691332213919785,,attach=no|saycid=no|envelope=no|delete=no
1152=1152,kai,1302461292694470690,,attach=no|saycid=no|envelope=no|delete=no
1155=1231,clickit,653970487017472001,,attach=no|saycid=no|envelope=no|delete=no
1156=1156,Wem2g,796290254372864001,,attach=no|saycid=no|envelope=no|delete=no
1112=1234,One LSU Campus,574411178042851328,,attach=no|saycid=no|envelope=no|delete=no
1038=3019,Nick's Landline Phones,1144142337774194769,,attach=no|saycid=no|envelope=no|delete=no
1036=3019,Nick,441439651266560000,,attach=no|saycid=yes|envelope=yes|delete=no
1070=1234,NextBot3,1195106123347411126,,attach=no|saycid=no|envelope=no|delete=no
1158=253525,Elliot McPike,,,attach=no|saycid=no|envelope=no|delete=no
1113=9131,Ale (Brew) 2,,,attach=no|saycid=no|envelope=no|delete=no
1062=1062,NotKFC,1244374129239654574,,attach=no|saycid=no|envelope=no|delete=no
1007=5192,TARA CARLSON,1007828856901738596,,attach=no|saycid=no|envelope=no|delete=no
1085=1085,isabella™,1259177403167801418,,attach=no|saycid=no|envelope=no|delete=no
1123=13741,Maddix's Something,,,attach=no|saycid=no|envelope=no|delete=no
1020=071906,CALL FROM CALL,701203601518886995,,attach=no|saycid=no|envelope=no|delete=no
1074=1074,raaalf,668209196239683616,,attach=no|saycid=no|envelope=no|delete=no
1001=071906,Suzannah,428290764221448196,,attach=no|saycid=no|envelope=no|delete=no
1157=1206,Thomas Jensen,1081302807686160447,,attach=no|saycid=no|envelope=no|delete=no
1079=1079,Angel,945806907900313601,,attach=no|saycid=no|envelope=no|delete=no
1009=3019,Wonderous Brain,800262611001278473,,attach=no|saycid=no|envelope=no|delete=no
1082=1234,Kaleb,1257508334940983397,,attach=no|saycid=yes|envelope=no|delete=no
1059=1234,Leeeeroy,1270582149904597097,,attach=no|saycid=no|envelope=no|delete=no
1058=1058,Alex,1085887666073120819,,attach=no|saycid=no|envelope=no|delete=no
[myaliases]
1234@devices=1234@default,,,,
[other]
1234=5678,Company2 User,root@localhost,,
[pbxaliases]
1000@device=1000@default
1001@device=1001@default
1002@device=1002@default
1003@device=1003@default
1004@device=1004@default
1005@device=1005@default
1006@device=1006@default
1007@device=1007@default
1008@device=1008@default
1009@device=1009@default
1010@device=1010@default
1011@device=1011@default
1012@device=1012@default
1013@device=1013@default
1014@device=1014@default
1015@device=1015@default
1016@device=1016@default
1017@device=1017@default
1018@device=1018@default
1019@device=1019@default
1020@device=1020@default
1021@device=1021@default
1022@device=1022@default
1023@device=1023@default
1024@device=1024@default
1025@device=1025@default
1026@device=1026@default
1027@device=1027@default
1028@device=1028@default
1029@device=1029@default
1030@device=1030@default
1031@device=1031@default
1032@device=1032@default
1033@device=1033@default
1034@device=1034@default
1035@device=1035@default
1036@device=1036@default
1037@device=1037@default
1038@device=1038@default
1039@device=1039@default
1040@device=1040@default
1041@device=1041@default
1042@device=1042@default
1043@device=1043@default
1044@device=1044@default
1046@device=1046@default
1047@device=1047@default
1048@device=1048@default
1049@device=1049@default
1050@device=1050@default
1051@device=1051@default
1052@device=1052@default
1053@device=1053@default
1054@device=1054@default
1055@device=1055@default
1056@device=1056@default
1057@device=1057@default
1059@device=1059@default
1060@device=1060@default
1062@device=1062@default
1063@device=1063@default
1064@device=1064@default
1065@device=1065@default
1066@device=1066@default
1067@device=1067@default
1068@device=1068@default
1069@device=1069@default
1070@device=1070@default
1071@device=1071@default
1072@device=1072@default
1073@device=1073@default
1074@device=1074@default
1075@device=1075@default
1076@device=1076@default
1077@device=1077@default
1078@device=1078@default
1079@device=1079@default
1080@device=1080@default
1081@device=1081@default
1082@device=1082@default
1083@device=1083@default
1084@device=1084@default
1085@device=1085@default
1086@device=1086@default
1087@device=1087@default
1088@device=1088@default
1089@device=1089@default
1090@device=1090@default
1091@device=1091@default
1092@device=1092@default
1093@device=1093@default
1094@device=1094@default
1095@device=1095@default
1096@device=1096@default
1097@device=1097@default
1099@device=1099@default
1100@device=1100@default
1101@device=1101@default
1102@device=1102@default
1103@device=1103@default
1104@device=1104@default
1105@device=1105@default
1106@device=1106@default
1107@device=1107@default
1108@device=1108@default
1109@device=1109@default
1112@device=1112@default
1113@device=1113@default
1114@device=1114@default
1116@device=1116@default
1117@device=1117@default
1118@device=1118@default
1119@device=1119@default
1120@device=1120@default
1121@device=1121@default
1122@device=1122@default
1123@device=1123@default
1124@device=1124@default
1125@device=1125@default
1127@device=1127@default
1128@device=1128@default
1129@device=1129@default
1130@device=1130@default
1132@device=1132@default
1133@device=1133@default
1134@device=1134@default
1135@device=1135@default
1137@device=1137@default
1138@device=1138@default
1139@device=1139@default
1140@device=1140@default
1141@device=1141@default
1144@device=1144@default
1146@device=1146@default
1147@device=1147@default
1148@device=1148@default
1149@device=1149@default
1150@device=1150@default
1151@device=1151@default
1152@device=1152@default
1153@device=1153@default
1154@device=1154@default
1155@device=1155@default
1156@device=1156@default
1157@device=1157@default
1158@device=1158@default
2222@device=2222@default
6666@device=6666@default
1058@device=1058@default

162
index.js Normal file
View file

@ -0,0 +1,162 @@
require("dotenv").config();
const fs = require('fs')
const { execSync } = require('child_process');
const jsondb = require("node-json-db");
// Init json db
var db = new jsondb.JsonDB(new jsondb.Config("known-hosts", true, false, '/', true));
const ejs = require("ejs")
const Discord = require("discord.js");
const { userInfo } = require("os");
const client = new Discord.Client({intents: "DirectMessages"});
function extractTextFromRawText(rawText) {
// Strip everything before the line with "[default]". and everything before two newlines, and strip [default]
const startIndex = rawText.indexOf("[default]");
const endIndex = rawText.indexOf("\n\n", startIndex);
const extractedText = rawText.slice(startIndex, endIndex).replace("[default]\n", "");
return extractedText;
}
// Split data by newlines, then make key value pairs split by = and make into object
function parseVoicemailData(data) {
const lines = data.split("\n");
const voicemailData = {};
console.log(lines)
lines.forEach((line) => {
var [key, value] = line.split("=");
if (!value) return;
value = value.split(",");
voicemailData[key] = value;
});
return voicemailData;
}
function getUsers() {
var vmData = fs.readFileSync(process.env.DEV ? "./dev/voicemail.conf" : "/etc/asterisk/voicemail.conf").toString()
voicemailData = parseVoicemailData(extractTextFromRawText(vmData));
return voicemailData;
}
function getEndpoints() {
if (!process.env.DEV) {
const currentEndpoint = execSync('asterisk -x "pjsip show endpoints"').toString();
const endpoints = currentEndpoint.split("\n");
return endpoints;
} else {
return fs.readFileSync("./dev/endpoints.txt").toString().split("\n");
}
}
function parseEndpointData(data) {
const endpointRegex = /Endpoint:\s+(\d+\/\d+)\s+([A-Za-z\s]+)\s+(\d+)/g;
const contactRegex = /Contact:\s*(\d+\/\S+)\s*;?.*\s*(\S+)\s+(\S+)\s+(\d+\.\d+)/g;
let endpointObject = {};
// Match endpoint details
const endpointMatch = endpointRegex.exec(data);
if (endpointMatch) {
endpointObject.endpoint = endpointMatch[1].split("/")[1].trim(); // e.g. 1000/1000
endpointObject.state = endpointMatch[2].trim(); // e.g. "Not in use"
endpointObject.channelCount = parseInt(endpointMatch[3], 10); // e.g. 0
}
if (!endpointObject.endpoint) return undefined;
endpointObject.contacts = [];
// Match contact details
let contactMatch;
while ((contactMatch = contactRegex.exec(data)) !== null) {
endpointObject.contacts.push({
host: contactMatch[1].split('@')[1]?.split(";")[0], // Extract host from the format "sip:1000@ip:port"
status: contactMatch[3], // "Avail"
ping: parseFloat(contactMatch[4]), // ping value
});
}
return endpointObject;
}
function parseEndpoints(endpoints) {
// Ignore first 12 lines
endpoints = endpoints.slice(12);
// Endpoints split by double newline
endpoints = endpoints.join("\n").split("\n\n");
const users = getUsers();
const parsedEndpoints = endpoints.map(endpoint => {
const parsedEndpoint = parseEndpointData(endpoint);
if (parsedEndpoint && users[parsedEndpoint.endpoint]) {
parsedEndpoint.discordId = users[parsedEndpoint.endpoint][2];
parsedEndpoint.name = users[parsedEndpoint.endpoint][1];
}
return parsedEndpoint;
}).filter(endpoint => endpoint !== undefined);
return parsedEndpoints
}
async function checkForNewEndpoints() {
const parsed = parseEndpoints(getEndpoints());
let newContacts = [];
for (const endpoint of parsed) {
const seen = await db.getObjectDefault(`/seen/${endpoint.endpoint}`, []);
const newEndpointContacts = endpoint.contacts.filter(contact => !seen.includes(contact.host.split(":")[0]));
const uniqueHosts = [...new Set(newEndpointContacts.map(contact => contact.host.split(":")[0]))];
uniqueHosts.forEach(host => {
db.push(`/seen/${endpoint.endpoint}[]`, host);
});
resp = newEndpointContacts.length > 0 ? {
endpoint,
newContacts: newEndpointContacts,
} : [];
newContacts = newContacts.concat(resp);
}
return newContacts;
};
function notifyNew() {
console.log("Checking...")
checkForNewEndpoints().then(newContacts => {
if (newContacts.length > 0) {
newContacts.forEach(async newContact => {
const { endpoint, newContacts } = newContact;
const user = await client.users.fetch(endpoint.discordId).catch(() => null);
if (user) {
const contactList = newContacts.map(contact => `${contact.host} - ${contact.status} - ${contact.ping}`).join("\n");
user.send(`New registrations for ${endpoint.endpoint} (${endpoint.name}) from unknown IPs:\n${contactList}`);
console.log(`Notified ${endpoint.endpoint} (${endpoint.name}) of new contacts`);
}
});
}
});
}
console.log(Object.fromEntries(Object.entries(getUsers()).map(([key, value]) => [key, value[1]])))
function renderStatusPage() {
ejs.renderFile("status.ejs", {endpoints: parseEndpoints(getEndpoints()), userInfo: Object.fromEntries(Object.entries(getUsers()).map(([key, value]) => [key, value[1]]))}, (err, str) => {
if (err) {
console.error(err);
} else {
fs.writeFileSync(process.env.DEV ? "./dev/index.html" : "/var/www/html/status/index.html", str);
}
});
}
client.on("ready", () => {
console.log(`Logged in as ${client.user.displayName}!`);
notifyNew();
renderStatusPage();
setInterval(notifyNew, 10*1000);
setInterval(renderStatusPage, 5*1000);
});
if (process.env.DEV) {
renderStatusPage();
} else {
client.login(process.env.DISCORD_TOKEN)
}

1
known-hosts.json Normal file
View file

@ -0,0 +1 @@
{"seen":{"1000":["67.218.74.175","174.234.1.48","67.218.74.141","174.234.8.117","174.198.132.80"],"1001":["107.15.163.194"],"1002":["69.71.12.69"],"1003":["104.55.71.173","98.194.33.60","107.92.61.136","166.172.120.231","107.92.59.248","107.107.187.119"],"1004":["98.209.177.59"],"1005":["68.203.166.207"],"1007":["69.92.141.127","167.99.119.244","185.215.181.157"],"1008":["96.42.155.163"],"1009":["174.174.37.162","174.204.192.65","174.204.193.139","167.99.48.91","174.204.197.71","174.204.198.71"],"1010":["102.182.171.93"],"1013":["107.15.163.194"],"1015":["69.141.149.28"],"1016":["167.99.119.203","73.221.94.97","174.231.133.58","73.225.34.147","174.204.65.29","169.204.230.42"],"1017":["174.2.17.180","142.59.71.108","142.59.71.78","207.195.62.68","174.2.240.64","142.59.71.94","142.59.71.21","142.165.207.8","142.59.71.51"],"1018":["166.170.21.115","166.170.23.90","166.170.23.5","166.177.56.33","166.176.248.194","50.54.126.17"],"1019":["166.170.21.115","166.170.23.90","166.170.23.5","166.177.56.33","166.176.248.194","50.54.126.17"],"1020":["107.15.163.194","69.92.141.127"],"1022":["90.116.170.86"],"1025":["69.71.12.69"],"1026":["66.242.81.122"],"1029":["66.188.241.224"],"1032":["96.42.155.163"],"1033":["173.52.119.43"],"1034":["162.204.50.197"],"1035":["192.226.159.87"],"1036":["174.174.37.162","159.89.179.103","174.204.197.71","174.204.198.71"],"1038":["174.174.37.162","174.204.192.65"],"1041":["208.104.196.192"],"1044":["205.220.219.115","172.58.12.209","209.206.74.166","172.58.167.98","172.58.13.206","172.59.184.105","172.58.13.207","172.59.185.104","172.58.12.67","172.56.17.28","172.59.189.105"],"1045":["68.180.38.252"],"1046":["70.15.74.194","75.97.204.187"],"1047":["149.50.14.166"],"1048":["98.122.163.51","167.172.227.229","64.31.2.56","67.176.139.99"],"1050":["74.83.189.6"],"1052":["68.204.76.159","68.204.69.209"],"1056":["72.234.126.250","147.81.100.92"],"1057":["68.204.76.159","68.204.69.209"],"1058":["49.144.112.190"],"1059":["64.136.231.18","86.187.164.45","148.252.132.26","174.177.133.108"],"1061":["170.250.1.134"],"1062":["84.70.224.216"],"1063":["73.211.16.131"],"1066":["65.189.51.114","71.64.152.71"],"1067":["82.11.119.5"],"1068":["181.214.150.245","97.106.197.10"],"1069":["38.40.10.224"],"1070":["82.3.111.87","75.113.108.62"],"1071":["86.14.225.17"],"1074":["88.196.62.196"],"1077":["172.4.216.137"],"1078":["75.28.105.249"],"1079":["174.173.66.189"],"1082":["166.170.21.115","24.166.195.0"],"1084":["98.122.163.51","24.180.41.136"],"1085":["90.241.144.189","84.70.224.216","23.31.255.214"],"1087":["86.24.70.253"],"1088":["79.184.34.42","79.184.17.110","79.184.31.102"],"1090":["184.56.228.20","174.226.192.145","107.115.111.113"],"1093":["37.30.58.20","37.30.38.43","37.30.32.70","37.30.32.68","37.30.60.133","37.30.44.161","37.30.56.37"],"1095":["91.217.198.56"],"1098":["5.161.42.254"],"1099":["68.103.55.51","104.218.129.162","104.218.129.172"],"1100":["75.113.108.62"],"1101":["50.20.125.155","172.56.208.195","65.246.71.79","169.241.65.97"],"1104":["24.98.120.95"],"1107":["92.239.71.178"],"1110":["98.122.163.51"],"1112":["24.245.163.16","99.144.95.24"],"1113":["97.104.44.141"],"1114":["73.119.66.194"],"1116":["74.215.121.82"],"1117":["104.166.238.179"],"1119":["24.98.120.95"],"1121":["97.104.44.141"],"1122":["97.104.44.141"],"1123":["166.170.23.90","166.170.23.5","66.203.38.68"],"1128":["24.16.249.13"],"1129":["96.125.229.143"],"1131":["86.128.138.96"],"1133":["24.9.143.10","76.154.8.27"],"1134":["71.201.226.96"],"1135":["107.196.37.51","167.99.119.244"],"1136":["108.206.50.139"],"1138":["68.22.245.48"],"1140":["76.154.8.27"],"1141":["24.12.38.35"],"1142":["174.174.37.162"],"1144":["76.144.69.207"],"1145":["162.213.117.207"],"1146":["73.37.93.137","12.75.124.19","12.75.124.177","12.75.124.65"],"1147":["70.241.112.130"],"1148":["75.38.181.26","107.175.102.147"],"1149":["70.129.59.188"],"1150":["23.31.255.214"],"1152":["104.28.218.183","104.28.250.183","73.142.82.233","159.203.6.79"],"1153":["50.48.166.161"],"1154":["76.144.69.207"],"1155":["77.70.116.5"],"1156":["149.62.206.133"],"1157":["98.227.141.119"],"1158":["199.48.94.17","199.48.94.31"],"2222":["174.175.230.11"],"2329":["104.55.71.173","166.172.121.21","107.92.61.136","166.172.120.231","98.194.33.60","107.92.59.248","107.107.187.119"],"2355":["104.55.71.173","98.194.33.60","107.92.61.136","166.172.120.231","107.92.59.248","107.107.187.119"],"8888":["67.218.74.175"]}}

487
package-lock.json generated Normal file
View file

@ -0,0 +1,487 @@
{
"name": "pbx-ips",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "pbx-ips",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"discord.js": "^14.16.3",
"dotenv": "^16.4.7",
"ejs": "^3.1.10",
"node-json-db": "^2.3.0"
}
},
"node_modules/@discordjs/builders": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.9.0.tgz",
"integrity": "sha512-0zx8DePNVvQibh5ly5kCEei5wtPBIUbSoE9n+91Rlladz4tgtFbJ36PZMxxZrTEOQ7AHMZ/b0crT/0fCy6FTKg==",
"dependencies": {
"@discordjs/formatters": "^0.5.0",
"@discordjs/util": "^1.1.1",
"@sapphire/shapeshift": "^4.0.0",
"discord-api-types": "0.37.97",
"fast-deep-equal": "^3.1.3",
"ts-mixer": "^6.0.4",
"tslib": "^2.6.3"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/discordjs/discord.js?sponsor"
}
},
"node_modules/@discordjs/builders/node_modules/discord-api-types": {
"version": "0.37.97",
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
"integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA=="
},
"node_modules/@discordjs/collection": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz",
"integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==",
"engines": {
"node": ">=16.11.0"
}
},
"node_modules/@discordjs/formatters": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.5.0.tgz",
"integrity": "sha512-98b3i+Y19RFq1Xke4NkVY46x8KjJQjldHUuEbCqMvp1F5Iq9HgnGpu91jOi/Ufazhty32eRsKnnzS8n4c+L93g==",
"dependencies": {
"discord-api-types": "0.37.97"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/discordjs/discord.js?sponsor"
}
},
"node_modules/@discordjs/formatters/node_modules/discord-api-types": {
"version": "0.37.97",
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
"integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA=="
},
"node_modules/@discordjs/rest": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.4.0.tgz",
"integrity": "sha512-Xb2irDqNcq+O8F0/k/NaDp7+t091p+acb51iA4bCKfIn+WFWd6HrNvcsSbMMxIR9NjcMZS6NReTKygqiQN+ntw==",
"dependencies": {
"@discordjs/collection": "^2.1.1",
"@discordjs/util": "^1.1.1",
"@sapphire/async-queue": "^1.5.3",
"@sapphire/snowflake": "^3.5.3",
"@vladfrangu/async_event_emitter": "^2.4.6",
"discord-api-types": "0.37.97",
"magic-bytes.js": "^1.10.0",
"tslib": "^2.6.3",
"undici": "6.19.8"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/discordjs/discord.js?sponsor"
}
},
"node_modules/@discordjs/rest/node_modules/@discordjs/collection": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz",
"integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/discordjs/discord.js?sponsor"
}
},
"node_modules/@discordjs/rest/node_modules/discord-api-types": {
"version": "0.37.97",
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
"integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA=="
},
"node_modules/@discordjs/util": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.1.tgz",
"integrity": "sha512-eddz6UnOBEB1oITPinyrB2Pttej49M9FZQY8NxgEvc3tq6ZICZ19m70RsmzRdDHk80O9NoYN/25AqJl8vPVf/g==",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/discordjs/discord.js?sponsor"
}
},
"node_modules/@discordjs/ws": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.1.1.tgz",
"integrity": "sha512-PZ+vLpxGCRtmr2RMkqh8Zp+BenUaJqlS6xhgWKEZcgC/vfHLEzpHtKkB0sl3nZWpwtcKk6YWy+pU3okL2I97FA==",
"dependencies": {
"@discordjs/collection": "^2.1.0",
"@discordjs/rest": "^2.3.0",
"@discordjs/util": "^1.1.0",
"@sapphire/async-queue": "^1.5.2",
"@types/ws": "^8.5.10",
"@vladfrangu/async_event_emitter": "^2.2.4",
"discord-api-types": "0.37.83",
"tslib": "^2.6.2",
"ws": "^8.16.0"
},
"engines": {
"node": ">=16.11.0"
},
"funding": {
"url": "https://github.com/discordjs/discord.js?sponsor"
}
},
"node_modules/@discordjs/ws/node_modules/@discordjs/collection": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz",
"integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/discordjs/discord.js?sponsor"
}
},
"node_modules/@discordjs/ws/node_modules/discord-api-types": {
"version": "0.37.83",
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.83.tgz",
"integrity": "sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA=="
},
"node_modules/@sapphire/async-queue": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.5.tgz",
"integrity": "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==",
"engines": {
"node": ">=v14.0.0",
"npm": ">=7.0.0"
}
},
"node_modules/@sapphire/shapeshift": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-4.0.0.tgz",
"integrity": "sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==",
"dependencies": {
"fast-deep-equal": "^3.1.3",
"lodash": "^4.17.21"
},
"engines": {
"node": ">=v16"
}
},
"node_modules/@sapphire/snowflake": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.3.tgz",
"integrity": "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==",
"engines": {
"node": ">=v14.0.0",
"npm": ">=7.0.0"
}
},
"node_modules/@types/node": {
"version": "22.10.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz",
"integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==",
"dependencies": {
"undici-types": "~6.20.0"
}
},
"node_modules/@types/ws": {
"version": "8.5.13",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz",
"integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@vladfrangu/async_event_emitter": {
"version": "2.4.6",
"resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.4.6.tgz",
"integrity": "sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==",
"engines": {
"node": ">=v14.0.0",
"npm": ">=7.0.0"
}
},
"node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/async": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
"integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="
},
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"node_modules/discord-api-types": {
"version": "0.37.100",
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.100.tgz",
"integrity": "sha512-a8zvUI0GYYwDtScfRd/TtaNBDTXwP5DiDVX7K5OmE+DRT57gBqKnwtOC5Ol8z0mRW8KQfETIgiB8U0YZ9NXiCA=="
},
"node_modules/discord.js": {
"version": "14.16.3",
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.16.3.tgz",
"integrity": "sha512-EPCWE9OkA9DnFFNrO7Kl1WHHDYFXu3CNVFJg63bfU7hVtjZGyhShwZtSBImINQRWxWP2tgo2XI+QhdXx28r0aA==",
"dependencies": {
"@discordjs/builders": "^1.9.0",
"@discordjs/collection": "1.5.3",
"@discordjs/formatters": "^0.5.0",
"@discordjs/rest": "^2.4.0",
"@discordjs/util": "^1.1.1",
"@discordjs/ws": "1.1.1",
"@sapphire/snowflake": "3.5.3",
"discord-api-types": "0.37.100",
"fast-deep-equal": "3.1.3",
"lodash.snakecase": "4.1.1",
"tslib": "^2.6.3",
"undici": "6.19.8"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/discordjs/discord.js?sponsor"
}
},
"node_modules/dotenv": {
"version": "16.4.7",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
"integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://dotenvx.com"
}
},
"node_modules/ejs": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
"integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
"dependencies": {
"jake": "^10.8.5"
},
"bin": {
"ejs": "bin/cli.js"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"node_modules/filelist": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
"integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
"dependencies": {
"minimatch": "^5.0.1"
}
},
"node_modules/filelist/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/filelist/node_modules/minimatch": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
}
},
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"engines": {
"node": ">=8"
}
},
"node_modules/jake": {
"version": "10.9.2",
"resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
"integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
"dependencies": {
"async": "^3.2.3",
"chalk": "^4.0.2",
"filelist": "^1.0.4",
"minimatch": "^3.1.2"
},
"bin": {
"jake": "bin/cli.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lodash.snakecase": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
"integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw=="
},
"node_modules/magic-bytes.js": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.10.0.tgz",
"integrity": "sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ=="
},
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"node_modules/node-json-db": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-json-db/-/node-json-db-2.3.0.tgz",
"integrity": "sha512-B8T+w4q6zXZ20YcfQINLSjMGgImRKzkvR0ShYYoNRdLxtMhVvbzaMBzNdEaRcCjilW/lKS+g9CwVXNoK5uTncw==",
"dependencies": {
"rwlock": "^5.0.0"
}
},
"node_modules/rwlock": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/rwlock/-/rwlock-5.0.0.tgz",
"integrity": "sha512-XgzRqLMfCcm9QfZuPav9cV3Xin5TRcIlp4X/SH3CvB+x5D2AakdlEepfJKDd8ByncvfpcxNWdRZVUl38PS6ZJg=="
},
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/ts-mixer": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz",
"integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA=="
},
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
},
"node_modules/undici": {
"version": "6.19.8",
"resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz",
"integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==",
"engines": {
"node": ">=18.17"
}
},
"node_modules/undici-types": {
"version": "6.20.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="
},
"node_modules/ws": {
"version": "8.18.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
}
}
}

18
package.json Normal file
View file

@ -0,0 +1,18 @@
{
"name": "pbx-ips",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"discord.js": "^14.16.3",
"dotenv": "^16.4.7",
"ejs": "^3.1.10",
"node-json-db": "^2.3.0"
}
}

101
status.ejs Normal file
View file

@ -0,0 +1,101 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LiteNet Extension Status</title>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.1.slim.min.js"></script>
<style>
body {
background-color: #121212;
color: #e0e0e0;
}
.table {
color: #e0e0e0;
}
.table thead {
background-color: #333333;
}
.table tbody tr {
background-color: #1e1e1e;
}
.table tbody tr:nth-child(even) {
background-color: #2a2a2a;
}
.table tbody tr:hover {
background-color: #3a3a3a;
}
</style>
</head>
<body>
<h1 class="text-center" style="font-size: 3em; font-weight: bold; padding-top: 20px;">LiteNet Extension Status</h1>
<h2 class="text-center" style="font-size: 1.5em; font-weight: bold; padding-top: 10px;">
<%= endpoints.length %> Endpoints connected to <%= Object.keys(userInfo).length %> Extensions. With an average latency of
<%= (endpoints.reduce((sum, ep) => {
const avgLatency = ep.contacts.reduce((contactSum, contact) => contactSum + contact.ping, 0) / ep.contacts.length;
return sum + (isNaN(avgLatency) ? 0 : avgLatency);
}, 0) / endpoints.filter(ep => ep.contacts.length > 0).length).toFixed(2) %>ms
</h2>
<h3 class="text-center" style="font-size: 1.2em;"><%= endpoints.filter(ep => ep.state !== 'Unavailable').length %> online / <%= endpoints.length %> total</h3>
<h3 class="text-center" style="font-size: 1.2em;"><%= endpoints.filter(ep => ep.state === 'In use').length %> In-use</h3>
<div class="container text-center mt-3">
<p><span style="color: green;">● Not in use</span> <span style="color: red;">● Unavailable</span> <span style="color: orange;">● In use</span></p>
</div>
<div class="container text-center mt-3">
<p id="timestamp">Last Updated: </p>
<p id="updatingCountdown" style="font-size: .8em">Updating in 10</p>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const serverTimestamp = <%= Date.now() %>;
const localTime = new Date(serverTimestamp).toLocaleString();
const timestampElement = document.getElementById('timestamp');
timestampElement.textContent = `Last updated: ${localTime}`;
const now = Date.now();
if (now - serverTimestamp > 60000) {
timestampElement.style.color = 'red';
}
});
let countdown = 10;
const countdownElement = document.getElementById('updatingCountdown');
const countdownInterval = setInterval(() => {
countdown--;
countdownElement.textContent = `Updating in ${countdown}`;
if (countdown === 0) {
clearInterval(countdownInterval);
location.reload();
}
}, 1000);
</script>
<div class="container mt-5">
<table class="table table-bordered">
<thead class="thead-dark">
<tr>
<th>Extension Number</th>
<th>Name</th>
<th>Status</th>
<th>Endpoints</th>
<th>Avg Latency</th>
</tr>
</thead>
<tbody>
<% endpoints.forEach(function(ep) { %>
<tr>
<td style="color: <%= ep.state === 'Not in use' ? 'green' : ep.state === 'Unavailable' ? 'red' : 'orange' %>;">● <%= ep.endpoint %></td>
<td><%= userInfo[ep.endpoint] %></td>
<td><%= ep.state %></td>
<td><%= ep.contacts.length %></td>
<td><%= isNaN(ep.contacts.reduce((sum, contact) => sum + contact.ping, 0) / ep.contacts.length) ? 'No Data' : `${(ep.contacts.reduce((sum, contact) => sum + contact.ping, 0) / ep.contacts.length).toFixed(2)}ms` %></td>
</tr>
<% }); %>
</tbody>
</table>
</div>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@5.3.3/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/5.3.3/js/bootstrap.min.js"></script>
</body>
</html>