diff --git a/docker-compose.yaml b/docker-compose.yaml index 52f36b50..6db90652 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,44 +1,44 @@ services: - loki: - container_name: loki - image: grafana/loki:latest - ports: - - "3100:3100" - volumes: - - ./observability/loki/config:/etc/loki - - ./observability/loki/data:/loki - - ./observability/loki/wal:/wal - command: -config.file=/etc/loki/loki-config.yaml - networks: - - smartess_network - - promtail: - container_name: promtail - image: grafana/promtail:latest - volumes: - - ./observability/promtail/config:/etc/promtail - - ./go/cmd/server/logs:/app/logs - command: -config.file=/etc/promtail/promtail-config.yaml - networks: - - smartess_network - - grafana: - container_name: grafana - image: grafana/grafana:latest - ports: - - "4000:4000" - volumes: - - ./observability/grafana/data:/var/lib/grafana - - ./observability/grafana/init-scripts:/etc/grafana/provisioning/dashboards # For dashboards - - ./observability/grafana/init-scripts:/etc/grafana/provisioning/datasources # For data sources - - environment: - - GF_AUTH_ANONYMOUS_ENABLED=true - - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin - depends_on: - - loki - networks: - - smartess_network +# loki: +# container_name: loki +# image: grafana/loki:latest +# ports: +# - "3100:3100" +# volumes: +# - ./observability/loki/config:/etc/loki +# - ./observability/loki/data:/loki +# - ./observability/loki/wal:/wal +# command: -config.file=/etc/loki/loki-config.yaml +# networks: +# - smartess_network +# +# promtail: +# container_name: promtail +# image: grafana/promtail:latest +# volumes: +# - ./observability/promtail/config:/etc/promtail +# - ./go/cmd/server/logs:/app/logs +# command: -config.file=/etc/promtail/promtail-config.yaml +# networks: +# - smartess_network +# +# grafana: +# container_name: grafana +# image: grafana/grafana:latest +# ports: +# - "4000:4000" +# volumes: +# - ./observability/grafana/data:/var/lib/grafana +# - ./observability/grafana/init-scripts:/etc/grafana/provisioning/dashboards # For dashboards +# - ./observability/grafana/init-scripts:/etc/grafana/provisioning/datasources # For data sources +# +# environment: +# - GF_AUTH_ANONYMOUS_ENABLED=true +# - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin +# depends_on: +# - loki +# networks: +# - smartess_network server: container_name: server build: @@ -49,6 +49,8 @@ services: volumes: - ./go/cmd/server/logs:/app/logs - ./go/common/configs:/app/config + - ./go/server/static:/app/static + - ./go/cmd/hub/data:/tmp/data # Map actual directory to /tmp/data in container depends_on: rabbitmq: condition: service_healthy # Correct placement of health condition @@ -106,7 +108,7 @@ services: # - /app/frontend/.next # networks: # - smartess_network -# + # smartessweb_prod_backend: # container_name: smartessweb_prod_backend # build: diff --git a/go.work.sum b/go.work.sum index 5ea95075..8069ab0e 100644 --- a/go.work.sum +++ b/go.work.sum @@ -5,12 +5,53 @@ github.com/asticode/go-astikit v0.30.0/go.mod h1:h4ly7idim1tNhaVkdVBeXQZEE3L0xbl github.com/asticode/go-astits v1.13.0 h1:XOgkaadfZODnyZRR5Y0/DWkA9vrkLLPLeeOvDwfKZ1c= github.com/asticode/go-astits v1.13.0/go.mod h1:QSHmknZ51pf6KJdHKZHJTLlMegIrhega3LPWz3ND/iI= github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/nedpals/postgrest-go v0.1.3 h1:ZC3aPPx9rDTWQWzvnWI60lJWjAqgCCD/U6hcHp3NL0w= github.com/nedpals/postgrest-go v0.1.3/go.mod h1:RGinB2OXsnGLcZMu5avS0U+b9npyZmk+ecK74UDi/xY= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/pion/datachannel v1.5.8 h1:ph1P1NsGkazkjrvyMfhRBUAWMxugJjq2HfQifaOoSNo= +github.com/pion/datachannel v1.5.8/go.mod h1:PgmdpoaNBLX9HNzNClmdki4DYW5JtI7Yibu8QzbL3tI= +github.com/pion/dtls/v2 v2.2.7/go.mod h1:8WiMkebSHFD0T+dIU+UeBaoV7kDhOW5oDCzZ7WZ/F9s= +github.com/pion/dtls/v2 v2.2.12 h1:KP7H5/c1EiVAAKUmXyCzPiQe5+bCJrpOeKg/L05dunk= +github.com/pion/dtls/v2 v2.2.12/go.mod h1:d9SYc9fch0CqK90mRk1dC7AkzzpwJj6u2GU3u+9pqFE= +github.com/pion/ice/v2 v2.3.36 h1:SopeXiVbbcooUg2EIR8sq4b13RQ8gzrkkldOVg+bBsc= +github.com/pion/ice/v2 v2.3.36/go.mod h1:mBF7lnigdqgtB+YHkaY/Y6s6tsyRyo4u4rPGRuOjUBQ= +github.com/pion/interceptor v0.1.29 h1:39fsnlP1U8gw2JzOFWdfCU82vHvhW9o0rZnZF56wF+M= +github.com/pion/interceptor v0.1.29/go.mod h1:ri+LGNjRUc5xUNtDEPzfdkmSqISixVTBF/z/Zms/6T4= +github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= +github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms= +github.com/pion/mdns v0.0.12 h1:CiMYlY+O0azojWDmxdNr7ADGrnZ+V6Ilfner+6mSVK8= +github.com/pion/mdns v0.0.12/go.mod h1:VExJjv8to/6Wqm1FXK+Ii/Z9tsVk/F5sD/N70cnYFbk= +github.com/pion/rtcp v1.2.12/go.mod h1:sn6qjxvnwyAkkPzPULIbVqSKI5Dv54Rv7VG0kNxh9L4= +github.com/pion/rtp v1.8.3/go.mod h1:pBGHaFt/yW7bf1jjWAoUjpSNoDnw98KTMg+jWWvziqU= +github.com/pion/rtp v1.8.7 h1:qslKkG8qxvQ7hqaxkmL7Pl0XcUm+/Er7nMnu6Vq+ZxM= +github.com/pion/rtp v1.8.7/go.mod h1:pBGHaFt/yW7bf1jjWAoUjpSNoDnw98KTMg+jWWvziqU= +github.com/pion/sctp v1.8.19 h1:2CYuw+SQ5vkQ9t0HdOPccsCz1GQMDuVy5PglLgKVBW8= +github.com/pion/sctp v1.8.19/go.mod h1:P6PbDVA++OJMrVNg2AL3XtYHV4uD6dvfyOovCgMs0PE= +github.com/pion/srtp/v2 v2.0.20 h1:HNNny4s+OUmG280ETrCdgFndp4ufx3/uy85EawYEhTk= +github.com/pion/srtp/v2 v2.0.20/go.mod h1:0KJQjA99A6/a0DOVTu1PhDSw0CXF2jTkqOoMg3ODqdA= +github.com/pion/stun v0.6.1 h1:8lp6YejULeHBF8NmV8e2787BogQhduZugh5PdhDyyN4= +github.com/pion/stun v0.6.1/go.mod h1:/hO7APkX4hZKu/D0f2lHzNyvdkTGtIy3NDmLR7kSz/8= +github.com/pion/transport/v2 v2.2.1/go.mod h1:cXXWavvCnFF6McHTft3DWS9iic2Mftcz1Aq29pGcU5g= +github.com/pion/transport/v2 v2.2.3/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0= +github.com/pion/transport/v2 v2.2.4/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0= +github.com/pion/transport/v2 v2.2.10 h1:ucLBLE8nuxiHfvkFKnkDQRYWYfp8ejf4YBOPfaQpw6Q= +github.com/pion/transport/v2 v2.2.10/go.mod h1:sq1kSLWs+cHW9E+2fJP95QudkzbK7wscs8yYgQToO5E= +github.com/pion/transport/v3 v3.0.1/go.mod h1:UY7kiITrlMv7/IKgd5eTUcaahZx5oUN3l9SzK5f5xE0= +github.com/pion/transport/v3 v3.0.2 h1:r+40RJR25S9w3jbA6/5uEPTzcdn7ncyU44RWCbHkLg4= +github.com/pion/transport/v3 v3.0.2/go.mod h1:nIToODoOlb5If2jF9y2Igfx3PFYWfuXi37m0IlWa/D0= +github.com/pion/turn/v2 v2.1.3/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY= +github.com/pion/turn/v2 v2.1.6 h1:Xr2niVsiPTB0FPtt+yAWKFUkU1eotQbGgpTIld4x1Gc= +github.com/pion/turn/v2 v2.1.6/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY= +github.com/pion/webrtc/v3 v3.3.5 h1:ZsSzaMz/i9nblPdiAkZoP+E6Kmjw+jnyq3bEmU3EtRg= +github.com/pion/webrtc/v3 v3.3.5/go.mod h1:liNa+E1iwyzyXqNUwvoMRNQ10x8h8FOeJKL8RkIbamE= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= github.com/sclevine/agouti v3.0.0+incompatible h1:8IBJS6PWz3uTlMP3YBIR5f+KAldcGuOeFkFbUWfBgK4= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= @@ -18,20 +59,50 @@ github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/wlynxg/anet v0.0.3 h1:PvR53psxFXstc12jelG6f1Lv4MWqE0tI76/hHGjh9rg= +github.com/wlynxg/anet v0.0.3/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA= github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= +golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go/cmd/hub_camera_only/README.md b/go/cmd/hub_camera_only/README.md new file mode 100644 index 00000000..7d1cbf00 --- /dev/null +++ b/go/cmd/hub_camera_only/README.md @@ -0,0 +1,9 @@ +## Original Hub for the video streaming feature design and end-to-end dev + +This is the original development environment that was used to research, design, test and develop the most networking/theory/arch intensive components of the video streaming feature.\ +> First End-to-end working prototype... from RTSP raw stream to final web surveillance page. Development purposes only and not for production. + +It is faster to build and deploy in dev/test envs with docker as well as with any deps since it simulates a hub with only smart camera features. \ + +For the official production camera features as well as other features like alerts/events, logs, etc... of the full project pipeline as seen on website and interfaces, +please refer to prod docker-composes and not this one here which is used for isolated networking / dev purposes. diff --git a/go/cmd/hub_camera_only/docker-compose.yml b/go/cmd/hub_camera_only/docker-compose.yml index 72bf2f44..674fc727 100644 --- a/go/cmd/hub_camera_only/docker-compose.yml +++ b/go/cmd/hub_camera_only/docker-compose.yml @@ -68,7 +68,7 @@ services: - consumer networks: - smartess_network # Use the existing network - # Mock camera rtsp stream for testing purposes +# Mock camera rtsp stream for testing purposes mock_camera: container_name: mock_camera build: diff --git a/go/cmd/hub_camera_only/producer/main.go b/go/cmd/hub_camera_only/producer/main.go index 33b1be71..28f8549f 100644 --- a/go/cmd/hub_camera_only/producer/main.go +++ b/go/cmd/hub_camera_only/producer/main.go @@ -219,42 +219,7 @@ func streamRTSP(config *FFmpegConfig, producer *stream.Producer) error { reader := bufio.NewReaderSize(stdout, config.bufferReaderSize) //1024*1024) buf := make([]byte, config.bufferReaderSize) //512*1024) - //errorChan := make(chan error, 1) - // - //go func() { - // for { - // n, err := stdout.Read(buf) - // if err != nil { - // errorChan <- fmt.Errorf("error reading from RTSP stream: %v", err) - // return - // } - // if n == 0 { - // continue - // } - // - // videoChunk := buf[:n] - // if err := producer.Send(amqp.NewMessage(videoChunk)); err != nil { - // errorChan <- fmt.Errorf("failed to publish message: %v", err) - // return - // } - // log.Printf("Sent video chunk (%d bytes) to stream", n) - // time.Sleep(50 * time.Millisecond) - // } - //}() - // - //// Wait for either an error or the command to finish - //select { - //case err := <-errorChan: - // cmd.Process.Kill() - // cmd.Wait() - // return err - //case err := <-func() chan error { - // c := make(chan error, 1) - // go func() { c <- cmd.Wait() }() - // return c - //}(): - // return err - //} + for { n, err := reader.Read(buf) if err != nil { @@ -284,9 +249,48 @@ func streamRTSP(config *FFmpegConfig, producer *stream.Producer) error { return nil } +// errorChan := make(chan error, 1) +// +// go func() { +// for { +// n, err := stdout.Read(buf) +// if err != nil { +// errorChan <- fmt.Errorf("error reading from RTSP stream: %v", err) +// return +// } +// if n == 0 { +// continue +// } +// +// videoChunk := buf[:n] +// if err := producer.Send(amqp.NewMessage(videoChunk)); err != nil { +// errorChan <- fmt.Errorf("failed to publish message: %v", err) +// return +// } +// log.Printf("Sent video chunk (%d bytes) to stream", n) +// time.Sleep(50 * time.Millisecond) +// } +// }() +// +// // Wait for either an error or the command to finish +// select { +// case err := <-errorChan: +// +// cmd.Process.Kill() +// cmd.Wait() +// return err +// +// case err := <-func() chan error { +// c := make(chan error, 1) +// go func() { c <- cmd.Wait() }() +// return c +// }(): +// +// return err +// } func main() { - SELECTED_CAMERA_ENUM := ANT_CAMERA // MOCK_CAMERA - SELECTED_CAMERA := int(SELECTED_CAMERA_ENUM) + SELECTED_CAMERA_ENUM := MOCK_CAMERA // MOCK_CAMERA + //SELECTED_CAMERA := int(SELECTED_CAMERA_ENUM) // Read camera configuration dir := "/app/config/cameras.yaml" @@ -300,11 +304,12 @@ func main() { log.Fatalf("failed to unmarshal yaml: %v", err) } - if len(cameras["cameras"]) <= SELECTED_CAMERA { - log.Fatalf("Invalid camera selection: %d", SELECTED_CAMERA) - } + //if len(cameras["cameras"]) <= SELECTED_CAMERA { + // log.Fatalf("Invalid camera selection: %d", SELECTED_CAMERA) + //} - RTSP_STREAM_URL := cameras["cameras"][SELECTED_CAMERA]["streamURL"] + //RTSP_STREAM_URL := cameras["cameras"][SELECTED_CAMERA]["streamURL"] + RTSP_STREAM_URL := "rtsp://mock_camera:8554/live" log.Printf("RTSP Stream URL: %s", RTSP_STREAM_URL) // Validate RTSP stream before proceeding diff --git a/go/common/scripts/ffmpeg_segment_concat.sh b/go/common/scripts/ffmpeg_segment_concat.sh index 8e58a05f..d9b2b395 100644 --- a/go/common/scripts/ffmpeg_segment_concat.sh +++ b/go/common/scripts/ffmpeg_segment_concat.sh @@ -6,30 +6,30 @@ ffmpeg -f hls -i segments.m3u8 -c:v copy -c:a copy output.mp4 ffmpeg -f concat -safe 0 -i concat.txt -c:v libx264 -preset fast -r 15 -g 15 -vf "fps=15" -c:a aac -b:a 64k output2.mp4 -## Using concat.txt -## Step 1: Create concat.txt if it doesn't exist, or clear it if it does -#[ -f concat.txt ] && > concat.txt || touch concat.txt -# -## Step 2: Fill concat.txt based on segment files in segments.m3u8 -#grep -E "^segment-[0-9]{3}\.mp4$" segments.m3u8 | while read -r line; do -# echo "file '$line'" >> concat.txt -#done -# -## Step 3: Compile the playlist using concat.txt with FFmpeg -#ffmpeg -f concat -safe 0 -i concat.txt -c:v copy -c:a copy output.mp4 -##ffmpeg -f concat -safe 0 -i concat.txt -c:v copy -c:a copy -map 0:v:0? -map 0:a:0? output.mp4 - -## Verify segments exist -#ls -l segment-*.mp4 - -## Test first segment playback and codec compatibility -#ffplay segment-000.mp4 -#ffprobe segment-000.mp4 -#ffprobe -v error -show_streams segment-000.mp4 -#ffprobe segment-000.mp4 -show_packets | grep pkt_dts_time - -## Fix bad encoding by enforcing codec compatibility if copy failed -#ffmpeg -i segments.m3u8 -c:v libx264 -c:a aac -r 15 -g 30 output.mp4 - -## Fix bad timestamps -#ffmpeg -fflags +genpts -i segments.m3u8 -c:v copy -c:a copy output.mp4 \ No newline at end of file +# Using concat.txt +# Step 1: Create concat.txt if it doesn't exist, or clear it if it does +[ -f concat.txt ] && > concat.txt || touch concat.txt + +# Step 2: Fill concat.txt based on segment files in segments.m3u8 +grep -E "^segment-[0-9]{3}\.mp4$" segments.m3u8 | while read -r line; do + echo "file '$line'" >> concat.txt +done + +# Step 3: Compile the playlist using concat.txt with FFmpeg +ffmpeg -f concat -safe 0 -i concat.txt -c:v copy -c:a copy output.mp4 +#ffmpeg -f concat -safe 0 -i concat.txt -c:v copy -c:a copy -map 0:v:0? -map 0:a:0? output.mp4 + +# Verify segments exist +ls -l segment-*.mp4 + +# Test first segment playback and codec compatibility +ffplay segment-000.mp4 +ffprobe segment-000.mp4 +ffprobe -v error -show_streams segment-000.mp4 +ffprobe segment-000.mp4 -show_packets | grep pkt_dts_time + +# Fix bad encoding by enforcing codec compatibility if copy failed +ffmpeg -i segments.m3u8 -c:v libx264 -c:a aac -r 15 -g 30 output.mp4 + +# Fix bad timestamps +ffmpeg -fflags +genpts -i segments.m3u8 -c:v copy -c:a copy output.mp4 \ No newline at end of file diff --git a/go/hub/hub_daemon.go b/go/hub/hub_daemon.go index 2fd2b135..78c59dab 100644 --- a/go/hub/hub_daemon.go +++ b/go/hub/hub_daemon.go @@ -81,7 +81,7 @@ func Init(selectedHub structures.HubTypeEnum) (SmartessHub, error) { func (hub *SmartessHub) Start(selectedHub structures.HubTypeEnum) { var wg sync.WaitGroup - wg.Add(2) + wg.Add(2) //todo: Temporarily removed events go func() { defer wg.Done() hub.event_handler.Start(selectedHub) diff --git a/go/server/rabbitmq/handlers/video_controller.go b/go/server/rabbitmq/handlers/video_controller.go index b3327369..fef4a5df 100644 --- a/go/server/rabbitmq/handlers/video_controller.go +++ b/go/server/rabbitmq/handlers/video_controller.go @@ -1,72 +1,385 @@ package handlers import ( + "Smartess/go/common/logging" common_rabbitmq "Smartess/go/common/rabbitmq" "fmt" - "log" + "io" + "net/http" + "os" + "path/filepath" + "sync" + "github.com/gorilla/websocket" stream_amqp "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp" "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream" "github.com/streadway/amqp" "go.uber.org/zap" ) +var upgrader = websocket.Upgrader{ + CheckOrigin: func(r *http.Request) bool { return true }, +} + +// Client represents a connected WebSocket client +type Client struct { + conn *websocket.Conn + stream string // Which stream the client is subscribed to + writeMu sync.Mutex + isClosing bool +} + +// VideoStreamData holds information about active video streams +type VideoStreamData struct { + streamName string + consumer *stream.Consumer + activeClients map[*Client]bool + dataChan chan []byte +} + type ControllerHandler struct { - r *common_rabbitmq.RabbitMQInstance - env *stream.Environment + r *common_rabbitmq.RabbitMQInstance + env *stream.Environment + videoLogger *zap.Logger + streams map[string]*VideoStreamData + streamsMutex sync.RWMutex + clientsMutex sync.RWMutex + allClients map[*Client]bool } func NewControllerHandler(instance *common_rabbitmq.RabbitMQInstance, env *stream.Environment) *ControllerHandler { - return &ControllerHandler{r: instance, env: env} + zapLogger, err := logging.InitializeLogger("/app/logs/server_video.log") + if err != nil { + panic(fmt.Sprintf("Failed to initialize video logger: %v", err)) + } + h := &ControllerHandler{ + r: instance, + env: env, + videoLogger: zapLogger, + streams: make(map[string]*VideoStreamData), + allClients: make(map[*Client]bool), + } + return h +} + +func (h *ControllerHandler) writeDebugToFile(data []byte, prefix string) { + // Create debug directory if it doesn't exist + debugDir := "/tmp/data/debug" + if err := os.MkdirAll(debugDir, 0755); err != nil { + h.videoLogger.Error(fmt.Sprintf("Failed to create debug directory: %v", err)) + return + } + + // Save the binary data for debugging + filename := fmt.Sprintf("%s/%s_segment_%d.mp4", debugDir, prefix, len(data)) + if err := os.WriteFile(filename, data, 0644); err != nil { + h.videoLogger.Error(fmt.Sprintf("Failed to write debug file: %v", err)) + } else { + h.videoLogger.Info(fmt.Sprintf("Wrote debug file: %s (%d bytes)", filename, len(data))) + } +} + +func (h *ControllerHandler) handleWS(w http.ResponseWriter, r *http.Request) { + conn, err := upgrader.Upgrade(w, r, nil) + if err != nil { + h.videoLogger.Error(fmt.Sprintf("Failed to upgrade WebSocket: %v", err)) + return + } + + // Parse which stream to subscribe to from query parameter + streamName := r.URL.Query().Get("stream") + if streamName == "" { + // If no stream specified, use "default" to match directory structure + streamName = "default" + } + + client := &Client{ + conn: conn, + stream: streamName, + isClosing: false, + } + + // Add to global client list + h.clientsMutex.Lock() + h.allClients[client] = true + h.clientsMutex.Unlock() + + // Subscribe client to specified stream + h.streamsMutex.RLock() + stream, exists := h.streams[streamName] + h.streamsMutex.RUnlock() + + if exists { + h.videoLogger.Info(fmt.Sprintf("Client subscribed to existing stream: %s", streamName)) + stream.activeClients[client] = true + } else { + h.videoLogger.Info(fmt.Sprintf("Client requested non-active stream: %s, will serve from HLS", streamName)) + } + + h.videoLogger.Info(fmt.Sprintf("New WebSocket client connected, subscribed to stream: %s", streamName)) + + // Handle client disconnection + defer func() { + client.isClosing = true + conn.Close() + + h.clientsMutex.Lock() + delete(h.allClients, client) + h.clientsMutex.Unlock() + + h.streamsMutex.RLock() + if stream, exists := h.streams[streamName]; exists { + delete(stream.activeClients, client) + } + h.streamsMutex.RUnlock() + + h.videoLogger.Info("WebSocket client disconnected") + }() + + // Keep connection alive, handle incoming messages if needed + for { + if _, _, err := conn.ReadMessage(); err != nil { + if !websocket.IsCloseError(err, websocket.CloseGoingAway, websocket.CloseNormalClosure) { + h.videoLogger.Error(fmt.Sprintf("WebSocket read error: %v", err)) + } + break + } + } } -// TODO Using log instead of zap or custom output log... cant see logs func (h *ControllerHandler) Handle(msg amqp.Delivery, logger *zap.Logger) { streamName := string(msg.Body) - logger.Info("Received stream name", zap.String("stream_name", streamName)) + h.videoLogger.Info("Received stream name", zap.String("stream_name", streamName)) + + // Check if we're already consuming this stream + h.streamsMutex.RLock() + _, exists := h.streams[streamName] + h.streamsMutex.RUnlock() + + if exists { + h.videoLogger.Info(fmt.Sprintf("Already consuming stream: %s", streamName)) + return + } + + // Create new video stream data structure + streamData := &VideoStreamData{ + streamName: streamName, + activeClients: make(map[*Client]bool), + dataChan: make(chan []byte, 100), + } + + // Store in streams map + h.streamsMutex.Lock() + h.streams[streamName] = streamData + h.streamsMutex.Unlock() + + // Also create a short name for the stream (without the hub_id prefix) + // This is to match the camera name for HLS access + shortName := streamName + const prefix = "video_stream.hub_id." + if len(streamName) > len(prefix) && streamName[:len(prefix)] == prefix { + parts := streamName[len(prefix):] + // Find the last dot and extract the camera name + for i := len(parts) - 1; i >= 0; i-- { + if parts[i] == '.' { + shortName = parts[i+1:] + break + } + } + } + + // Create a directory for HLS segments of this stream + hlsDir := filepath.Join("/tmp/data", shortName) + if err := os.MkdirAll(hlsDir, 0755); err != nil { + h.videoLogger.Error(fmt.Sprintf("Failed to create HLS directory: %v", err)) + } + + // Start a goroutine to broadcast data to clients subscribed to this stream + go func(streamData *VideoStreamData) { + for data := range streamData.dataChan { + // Sample debugging: occasionally save a segment to disk + if len(data) > 1000 { // Only debug substantial data + h.writeDebugToFile(data, shortName) + } + + // Broadcast to all clients subscribed to this stream + h.streamsMutex.RLock() + clients := make([]*Client, 0, len(streamData.activeClients)) + for client := range streamData.activeClients { + clients = append(clients, client) + } + h.streamsMutex.RUnlock() + + h.videoLogger.Debug(fmt.Sprintf("Broadcasting %d bytes to %d clients for stream %s", + len(data), len(clients), streamData.streamName)) + + for _, client := range clients { + if client.isClosing { + continue + } + client.writeMu.Lock() + err := client.conn.WriteMessage(websocket.BinaryMessage, data) + client.writeMu.Unlock() + + if err != nil { + h.videoLogger.Error(fmt.Sprintf("Error sending to client: %v", err)) + + h.clientsMutex.Lock() + delete(h.allClients, client) + h.clientsMutex.Unlock() + + h.streamsMutex.Lock() + delete(streamData.activeClients, client) + h.streamsMutex.Unlock() + + client.conn.Close() + } + } + } + }(streamData) + + // Set up the consumer handler function + consumerHandler := func(consumerContext stream.ConsumerContext, message *stream_amqp.Message) { + if message == nil || message.Data == nil { + h.videoLogger.Warn("Received nil message or data") + return + } + + // Create a combined slice from message data chunks + var flattenedData []byte + for _, chunk := range message.Data { + flattenedData = append(flattenedData, chunk...) + } + + h.videoLogger.Debug(fmt.Sprintf("Consumed %d bytes from stream %s", + len(flattenedData), streamName)) + + // Send to the data channel for broadcasting + streamData.dataChan <- flattenedData + } + + // Create the RabbitMQ stream consumer + consumer, err := h.env.NewConsumer( + streamName, + consumerHandler, + stream.NewConsumerOptions().SetOffset(stream.OffsetSpecification{}.First()), + ) - err := h.env.DeclareStream(streamName, &stream.StreamOptions{ - MaxLengthBytes: stream.ByteCapacity{}.GB(2), // Increased buffer size - MaxSegmentSizeBytes: stream.ByteCapacity{}.MB(50), - }) if err != nil { - log.Fatalf("Failed to declare a stream: %v", err) + h.videoLogger.Error("Failed to create consumer", zap.Error(err)) + + h.streamsMutex.Lock() + delete(h.streams, streamName) + h.streamsMutex.Unlock() + + close(streamData.dataChan) + return } - log.Printf("Declared stream: %s", streamName) - // Consumer handler - messagesHandler := func(consumerContext stream.ConsumerContext, message *stream_amqp.Message) { - // TODO WEBSOCKETS + CONSUMER CLOSE (MOST LOGIC FOR IT HERE) - var logMessage string + // Store consumer in streamData for later cleanup + streamData.consumer = consumer + + h.videoLogger.Info(fmt.Sprintf("Successfully started consumer for stream: %s", streamName)) +} + +func (h *ControllerHandler) StartWebSocketServer() { + // Create debug routes + http.HandleFunc("/debug", func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "text/html") + fmt.Fprintf(w, "

Debug Info

") + + h.streamsMutex.RLock() + streamCount := len(h.streams) + var streamNames []string + for name := range h.streams { + streamNames = append(streamNames, name) + } + h.streamsMutex.RUnlock() + + h.clientsMutex.RLock() + clientCount := len(h.allClients) + h.clientsMutex.RUnlock() + + fmt.Fprintf(w, "

Active streams: %d

", streamCount) + fmt.Fprintf(w, "

Connected clients: %d

", clientCount) + + fmt.Fprintf(w, "

Stream Names

") - if message == nil { - logMessage = "Message is nil" - } else if message.Properties == nil { - logMessage = "Message Properties is nil" + fmt.Fprintf(w, "

Debug Files

") + debugDir := "/tmp/data/debug" + files, err := os.ReadDir(debugDir) + if err != nil { + fmt.Fprintf(w, "

Error reading debug directory: %v

", err) } else { - logMessage = fmt.Sprintf("MsgID: %v, UserID: %x, To: %s, Subject: %s, ReplyTo: %s", - message.Properties.MessageID, - message.Properties.UserID, - message.Properties.To, - message.Properties.Subject, - message.Properties.ReplyTo) + fmt.Fprintf(w, "") } + }) - log.Printf("[TEMP CONSUME] Stream:%s|%s", streamName, logMessage) - } - // goroutine for MQ stream consumers - go func() { - _, err := h.env.NewConsumer(streamName, messagesHandler, - stream.NewConsumerOptions().SetOffset(stream.OffsetSpecification{}.First())) + // Serve debug files + http.Handle("/debug/", http.StripPrefix("/debug/", http.FileServer(http.Dir("/tmp/data/debug")))) + + // WebSocket endpoint + http.HandleFunc("/ws", h.handleWS) + + // Serve HLS files + http.Handle("/hls/", http.StripPrefix("/hls/", http.FileServer(http.Dir("/tmp/data")))) + + // TODO OPTIONAL: Add low-latency optimized headers + //http.HandleFunc("/hls/", func(w http.ResponseWriter, r *http.Request) { + // if strings.HasSuffix(r.URL.Path, ".m3u8") { + // w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") + // w.Header().Set("Pragma", "no-cache") + // w.Header().Set("Expires", "0") + // w.Header().Set("Access-Control-Allow-Origin", "*") + // w.Header().Set("X-Accel-Buffering", "no") // Disable proxy buffering + // } else if strings.HasSuffix(r.URL.Path, ".ts") { + // w.Header().Set("Cache-Control", "max-age=600") // Cache segments for 10 minutes + // } + // + // // Serve the file + // //http.FileServer(http.Dir("/tmp/data")).ServeHTTP(w, r) + // http.StripPrefix("/hls/", http.FileServer(http.Dir("/tmp/data"))).ServeHTTP(w, r) + //}) + + // Serve static files (inc. index.html) + fs := http.FileServer(http.Dir("/app/static")) + http.Handle("/", fs) + + // Download endpoint to get the raw video segments + http.HandleFunc("/download/", func(w http.ResponseWriter, r *http.Request) { + filePath := r.URL.Path[len("/download/"):] + fullPath := filepath.Join("/tmp/data", filePath) + + // Set headers for download + w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s", + filepath.Base(fullPath))) + w.Header().Set("Content-Type", "application/octet-stream") + + // Open and serve the file + file, err := os.Open(fullPath) if err != nil { - logger.Fatal("Failed to create consumer", zap.Error(err)) + http.Error(w, fmt.Sprintf("Failed to open file: %v", err), http.StatusNotFound) return } + defer file.Close() - logger.Info("Consumer started", zap.String("stream_name", streamName)) - - select {} // keep the goroutine alive - // TODO WEBSOCKETS + CONSUMER CLOSE - }() + _, err = io.Copy(w, file) + if err != nil { + h.videoLogger.Error(fmt.Sprintf("Failed to send file: %v", err)) + } + }) + h.videoLogger.Info("Starting WebSocket, HLS, and debug server on :8080") + if err := http.ListenAndServe(":8080", nil); err != nil { + h.videoLogger.Fatal("Web server failed", zap.Error(err)) + } } diff --git a/go/server/rabbitmq/rabbitmq.go b/go/server/rabbitmq/rabbitmq.go index 52dc8b71..f2c47d26 100644 --- a/go/server/rabbitmq/rabbitmq.go +++ b/go/server/rabbitmq/rabbitmq.go @@ -17,6 +17,7 @@ type RabbitMQServer struct { instance *common_rabbitmq.RabbitMQInstance Logger *zap.Logger consumers []handlers.QueueConsumer + env *stream.Environment } func Init() (RabbitMQServer, error) { @@ -113,12 +114,16 @@ func Init() (RabbitMQServer, error) { instance: instance, Logger: logger, consumers: consumers, + env: env, }, nil } // Start starts the RabbitMQ server and begins processing messages from the queues. func (r *RabbitMQServer) Start() { + videoHandler := handlers.NewControllerHandler(r.instance, r.env) // Assuming env is stored or passed + go videoHandler.StartWebSocketServer() // Start WebSocket server once + for _, smartessQueue := range r.consumers { go func(queueConsumer handlers.QueueConsumer) { r.Logger.Info("Starting consumer", zap.String("queue", queueConsumer.RabbitmqQueue.Name)) @@ -137,7 +142,7 @@ func (r *RabbitMQServer) Start() { } for msg := range msgs { r.Logger.Info("Received message", zap.String("routing_key", msg.RoutingKey), zap.String("message_body", string(msg.Body))) - queueConsumer.MessageHandler.Handle(msg, r.Logger) + queueConsumer.MessageHandler.Handle(msg, r.Logger) //todo run in goroutine to avoid blocking? } }(smartessQueue) diff --git a/go/server/static/debug-stream.sh b/go/server/static/debug-stream.sh new file mode 100644 index 00000000..2f6967f7 --- /dev/null +++ b/go/server/static/debug-stream.sh @@ -0,0 +1,196 @@ +#!/bin/bash + +## TODO Run this script inside the server container to debug the video streaming setup +## Copy the script into the server container +#docker cp debug-stream.sh server:/app/ +# +## Enter the container +#docker exec -it server bash +# +## Run the script +#cd /app +#chmod +x debug-stream.sh +#./debug-stream.sh + +## TODO Debug logs inside server docker +## Check server logs +#docker logs server +## Examine HLS segments +#docker exec -it server ls -la /tmp/data +## Look for errors in the video server log +#docker exec -it server cat /app/logs/server_video.log + +#-------------------------------------------------------------------------- +# This script helps debug your RTSP-to-browser video streaming setup +# Save this to a file named debug-stream.sh and run with: bash debug-stream.sh + +# Colors for better readability +GREEN='\033[0;32m' +RED='\033[0;31m' +BLUE='\033[0;34m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +echo -e "${BLUE}======= Smartess Video Stream Debugging Tool =======${NC}" + +# Check if FFmpeg is installed +echo -e "${YELLOW}Checking for FFmpeg...${NC}" +if command -v ffmpeg &> /dev/null; then + echo -e "${GREEN}FFmpeg is installed.${NC}" + FFMPEG_VERSION=$(ffmpeg -version | head -n 1) + echo -e "Version: $FFMPEG_VERSION" +else + echo -e "${RED}FFmpeg is not installed. You will need FFmpeg for testing.${NC}" + echo -e "Install with: apt-get install ffmpeg (Debian/Ubuntu) or your system's package manager." + exit 1 +fi + +# Function to test accessing the HLS stream directly +test_hls_access() { + local camera=$1 + local url="http://localhost:8080/hls/$camera/segments.m3u8" + + echo -e "\n${YELLOW}Testing HLS stream access for camera: $camera${NC}" + echo -e "URL: $url" + + # Check if curl is available + if command -v curl &> /dev/null; then + HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" $url) + if [ "$HTTP_CODE" == "200" ]; then + echo -e "${GREEN}HLS playlist is accessible (HTTP 200 OK)${NC}" + + # Check playlist content + echo -e "\nPlaylist content:" + curl -s $url | head -n 10 + + # Check if there are segment files + SEGMENTS_DIR="/tmp/data/$camera" + if [ -d "$SEGMENTS_DIR" ]; then + SEGMENT_COUNT=$(ls $SEGMENTS_DIR/segment-*.ts 2>/dev/null | wc -l) + if [ "$SEGMENT_COUNT" -gt 0 ]; then + echo -e "\n${GREEN}Found $SEGMENT_COUNT segment files in $SEGMENTS_DIR${NC}" + ls -lh $SEGMENTS_DIR/segment-*.ts | head -n 5 + else + echo -e "\n${RED}No segment files found in $SEGMENTS_DIR${NC}" + fi + else + echo -e "\n${RED}Segment directory $SEGMENTS_DIR does not exist${NC}" + fi + else + echo -e "${RED}HLS playlist is not accessible (HTTP $HTTP_CODE)${NC}" + fi + else + echo -e "${RED}curl is not installed. Cannot test HLS access.${NC}" + fi +} + +# Function to test RTSP directly with FFmpeg +test_rtsp_direct() { + local rtsp_url=$1 + local output_file="/tmp/rtsp_test_$(date +%s).mp4" + + echo -e "\n${YELLOW}Testing direct RTSP access with FFmpeg${NC}" + echo -e "RTSP URL: $rtsp_url" + echo -e "Will record 5 seconds to: $output_file" + + echo -e "Running FFmpeg..." + ffmpeg -rtsp_transport tcp -i "$rtsp_url" -t 5 -c:v copy -an "$output_file" -loglevel warning + + if [ -f "$output_file" ]; then + FILE_SIZE=$(du -h "$output_file" | cut -f1) + echo -e "${GREEN}Recording successful. File size: $FILE_SIZE${NC}" + echo -e "File saved to: $output_file" + + # Show file info + echo -e "\nFile information:" + ffprobe -v quiet -print_format json -show_format -show_streams "$output_file" | grep -E 'codec_name|width|height|r_frame_rate|duration' + else + echo -e "${RED}Recording failed. No output file created.${NC}" + fi +} + +# Function to test WebSocket connection +test_websocket() { + local ws_url="ws://localhost:8080/ws" + + echo -e "\n${YELLOW}Testing WebSocket connection${NC}" + echo -e "URL: $ws_url" + + # Check if websocat is installed + if command -v websocat &> /dev/null; then + echo -e "Connecting to WebSocket for 3 seconds..." + timeout 3s websocat --binary $ws_url > /tmp/ws_test_$(date +%s).bin + + if [ $? -eq 124 ]; then # timeout exit code + echo -e "${GREEN}WebSocket connection successful (timed out after 3s as expected)${NC}" + else + echo -e "${RED}WebSocket connection failed${NC}" + fi + else + echo -e "${RED}websocat is not installed. Cannot test WebSocket.${NC}" + echo -e "Install with: cargo install websocat (requires Rust)" + fi +} + +# Function to check debug files +check_debug_files() { + local debug_dir="/tmp/data/debug" + + echo -e "\n${YELLOW}Checking debug files${NC}" + + if [ -d "$debug_dir" ]; then + FILE_COUNT=$(ls -1 $debug_dir | wc -l) + if [ "$FILE_COUNT" -gt 0 ]; then + echo -e "${GREEN}Found $FILE_COUNT files in debug directory${NC}" + echo -e "\nRecent files:" + ls -lht $debug_dir | head -n 5 + else + echo -e "${RED}No files found in debug directory${NC}" + fi + else + echo -e "${RED}Debug directory does not exist: $debug_dir${NC}" + fi +} + +# Main menu +while true; do + echo -e "\n${BLUE}========== Debug Options ==========${NC}" + echo "1) Test HLS access (specify camera name)" + echo "2) Test RTSP directly with FFmpeg" + echo "3) Test WebSocket connection" + echo "4) Check debug files" + echo "5) Exit" + + read -p "Enter choice [1-5]: " choice + + case $choice in + 1) + read -p "Enter camera name (default if empty): " camera_name + if [ -z "$camera_name" ]; then + camera_name="default" + fi + test_hls_access "$camera_name" + ;; + 2) + read -p "Enter RTSP URL: " rtsp_url + if [ -z "$rtsp_url" ]; then + echo -e "${RED}RTSP URL cannot be empty${NC}" + else + test_rtsp_direct "$rtsp_url" + fi + ;; + 3) + test_websocket + ;; + 4) + check_debug_files + ;; + 5) + echo -e "${BLUE}Exiting.${NC}" + exit 0 + ;; + *) + echo -e "${RED}Invalid choice. Please try again.${NC}" + ;; + esac +done \ No newline at end of file diff --git a/go/server/static/index.html b/go/server/static/index.html new file mode 100644 index 00000000..0db581a3 --- /dev/null +++ b/go/server/static/index.html @@ -0,0 +1,1470 @@ + + + + + + Smartess Video Surveillance + + + + + + + + + + + +
+
+
+
+

1000 De La Gauchetiere

+

Unit 101

+
+
+ arrow_back + Back +
+
+ +
+ +
+
+ + +
Initializing...
+ +
+ + + + +
+
+ replay_5 +
+
+ forward_5 +
+
+ + +
+ Disconnected +
+
+
+
+
+ + +
+
+

Data Overview

+

Click to view detailed graphs

+
+ + +
+
+

Connection Speed

+

0 kbps

+
+ +
+
+
+ + +
+
+

Latency

+

0 ms

+
+ +
+
+
+ + +
+

Select Camera

+ +
+
+
+ + + + + + +
+
+ + + + \ No newline at end of file diff --git a/smartessweb/backend/backend-logs/backend-logs.txt b/smartessweb/backend/backend-logs/backend-logs.txt index 080a92af..d4f7c43d 100644 --- a/smartessweb/backend/backend-logs/backend-logs.txt +++ b/smartessweb/backend/backend-logs/backend-logs.txt @@ -1867,1319 +1867,21 @@ 2025-04-01 19:55:23 - Server is running on port 3000 2025-04-01 20:26:56 - Server is initializing... 2025-04-01 20:26:56 - Server is running on port 3000 -2025-04-07 13:12:28 - Server is initializing... -2025-04-07 13:12:28 - Server is initializing... -2025-04-07 13:12:28 - Server is initializing... -2025-04-07 13:12:28 - Server is initializing... -2025-04-07 13:12:28 - Server is initializing... -2025-04-07 13:12:28 - Server is initializing... -2025-04-07 13:12:28 - Server is initializing... -2025-04-07 13:12:28 - Server is initializing... -2025-04-07 13:12:28 - Server is initializing... -2025-04-07 13:12:56 - Server is initializing... -2025-04-07 13:12:56 - Server is initializing... -2025-04-07 13:12:56 - Server is initializing... -2025-04-07 13:12:56 - Server is initializing... -2025-04-07 13:12:56 - Server is initializing... -2025-04-07 13:12:56 - Server is initializing... -2025-04-07 13:12:56 - Server is initializing... -2025-04-07 13:12:56 - Server is initializing... -2025-04-07 13:12:56 - Server is initializing... -2025-04-07 13:14:32 - Server is initializing... -2025-04-07 13:14:32 - Server is initializing... -2025-04-07 13:14:32 - Server is initializing... -2025-04-07 13:14:32 - Server is initializing... -2025-04-07 13:14:32 - Server is initializing... -2025-04-07 13:14:32 - Server is initializing... -2025-04-07 13:14:32 - Server is initializing... -2025-04-07 13:14:32 - Server is initializing... -2025-04-07 13:14:32 - Server is initializing... -2025-04-07 13:17:56 - Server is initializing... -2025-04-07 13:17:56 - Server is initializing... -2025-04-07 13:17:56 - Server is initializing... -2025-04-07 13:17:56 - Server is initializing... -2025-04-07 13:17:56 - Server is initializing... -2025-04-07 13:17:56 - Server is initializing... -2025-04-07 13:17:56 - Server is initializing... -2025-04-07 13:17:56 - Server is initializing... -2025-04-07 13:17:56 - Server is initializing... -2025-04-07 13:19:34 - Server is initializing... -2025-04-07 13:19:34 - Server is initializing... -2025-04-07 13:19:34 - Server is initializing... -2025-04-07 13:19:34 - Server is initializing... -2025-04-07 13:19:34 - Server is initializing... -2025-04-07 13:19:34 - Server is initializing... -2025-04-07 13:19:34 - Server is initializing... -2025-04-07 13:19:34 - Server is initializing... -2025-04-07 13:19:34 - Server is initializing... -2025-04-07 13:19:36 - User type is: member -2025-04-07 13:20:45 - Server is initializing... -2025-04-07 13:20:45 - Server is initializing... -2025-04-07 13:20:45 - Server is initializing... -2025-04-07 13:20:45 - Server is initializing... -2025-04-07 13:20:45 - Server is initializing... -2025-04-07 13:20:45 - Server is initializing... -2025-04-07 13:20:45 - Server is initializing... -2025-04-07 13:20:45 - Server is initializing... -2025-04-07 13:20:45 - Server is initializing... -2025-04-07 13:20:47 - User type is: member -2025-04-07 13:28:41 - Server is initializing... -2025-04-07 13:28:41 - Server is initializing... -2025-04-07 13:28:41 - Server is initializing... -2025-04-07 13:28:41 - Server is initializing... -2025-04-07 13:28:41 - Server is initializing... -2025-04-07 13:28:41 - Server is initializing... -2025-04-07 13:28:41 - Server is initializing... -2025-04-07 13:28:41 - Server is initializing... -2025-04-07 13:28:41 - Server is initializing... -2025-04-07 13:28:43 - User type is: member -2025-04-07 13:34:14 - Server is initializing... -2025-04-07 13:34:14 - Server is initializing... -2025-04-07 13:34:14 - Server is initializing... -2025-04-07 13:34:14 - Server is initializing... -2025-04-07 13:34:14 - Server is initializing... -2025-04-07 13:34:14 - Server is initializing... -2025-04-07 13:34:14 - Server is initializing... -2025-04-07 13:34:14 - Server is initializing... -2025-04-07 13:34:14 - Server is initializing... -2025-04-07 13:34:16 - User type is: member -2025-04-07 13:35:02 - Server is initializing... -2025-04-07 13:35:02 - Server is initializing... -2025-04-07 13:35:02 - Server is initializing... -2025-04-07 13:35:02 - Server is initializing... -2025-04-07 13:35:02 - Server is initializing... -2025-04-07 13:35:02 - Server is initializing... -2025-04-07 13:35:02 - Server is initializing... -2025-04-07 13:35:02 - Server is initializing... -2025-04-07 13:35:02 - Server is initializing... -2025-04-07 13:35:04 - User type is: member -2025-04-07 13:35:56 - Server is initializing... -2025-04-07 13:35:56 - Server is initializing... -2025-04-07 13:35:56 - Server is initializing... -2025-04-07 13:35:56 - Server is initializing... -2025-04-07 13:35:56 - Server is initializing... -2025-04-07 13:35:56 - Server is initializing... -2025-04-07 13:35:56 - Server is initializing... -2025-04-07 13:35:56 - Server is initializing... -2025-04-07 13:35:56 - Server is initializing... -2025-04-07 13:35:58 - User type is: member -2025-04-07 13:43:28 - Server is initializing... -2025-04-07 13:43:29 - User type is: member -2025-04-07 14:12:42 - Server is initializing... -2025-04-07 14:12:43 - User type is: -2025-04-07 14:12:43 - User type is: basic -2025-04-07 14:14:17 - Server is initializing... -2025-04-07 14:14:18 - User type is: basic -2025-04-07 14:15:09 - Server is initializing... -2025-04-07 14:15:10 - User type is: basic -2025-04-07 14:19:32 - Server is initializing... -2025-04-07 14:19:33 - User type is: basic -2025-04-07 14:21:15 - Server is initializing... -2025-04-07 14:21:16 - User type is: basic -2025-04-07 14:21:40 - Server is initializing... -2025-04-07 14:21:41 - User type is: basic -2025-04-07 14:21:55 - Server is initializing... -2025-04-07 14:21:56 - User type is: basic -2025-04-07 14:26:14 - Server is initializing... -2025-04-07 14:26:14 - User type is: basic -2025-04-07 14:27:00 - Server is initializing... -2025-04-07 14:27:00 - User type is: basic -2025-04-07 14:27:33 - Server is initializing... -2025-04-07 14:27:33 - User type is: basic -2025-04-07 14:28:09 - Server is initializing... -2025-04-07 14:28:10 - User type is: basic -2025-04-07 14:31:19 - Server is initializing... -2025-04-07 14:31:20 - User type is: basic -2025-04-07 14:33:50 - Server is initializing... -2025-04-07 14:33:51 - User type is: basic -2025-04-07 14:34:52 - Server is initializing... -2025-04-07 14:34:53 - User type is: basic -2025-04-07 14:35:44 - Server is initializing... -2025-04-07 14:35:44 - User type is: basic -2025-04-07 14:36:08 - Server is initializing... -2025-04-07 14:36:08 - User type is: basic -2025-04-07 14:40:20 - Server is initializing... -2025-04-07 14:40:20 - User type is: basic -2025-04-07 14:43:26 - Server is initializing... -2025-04-07 14:43:27 - User type is: basic -2025-04-07 14:44:00 - Server is initializing... -2025-04-07 14:44:01 - User type is: basic -2025-04-07 14:44:20 - Server is initializing... -2025-04-07 14:44:21 - User type is: basic -2025-04-07 14:48:02 - Server is initializing... -2025-04-07 14:48:02 - User type is: basic -2025-04-07 14:48:17 - Server is initializing... -2025-04-07 14:48:18 - User type is: basic -2025-04-07 14:50:39 - Server is initializing... -2025-04-07 14:50:40 - User type is: basic -2025-04-07 14:51:24 - Server is initializing... -2025-04-07 14:51:24 - User type is: basic -2025-04-07 14:52:13 - Server is initializing... -2025-04-07 14:52:13 - User type is: basic -2025-04-07 14:54:47 - Server is initializing... -2025-04-07 14:54:48 - User type is: basic -2025-04-07 14:58:09 - Server is initializing... -2025-04-07 14:58:10 - User type is: basic -2025-04-07 14:59:08 - Server is initializing... -2025-04-07 14:59:08 - User type is: basic -2025-04-07 15:00:48 - Server is initializing... -2025-04-07 15:00:48 - User type is: basic -2025-04-07 15:04:48 - Server is initializing... -2025-04-07 15:04:49 - User type is: basic -2025-04-07 15:05:25 - Server is initializing... -2025-04-07 15:05:26 - User type is: basic -2025-04-07 15:06:02 - Server is initializing... -2025-04-07 15:06:03 - User type is: basic -2025-04-07 15:06:37 - Server is initializing... -2025-04-07 15:06:38 - User type is: basic -2025-04-07 15:07:37 - Server is initializing... -2025-04-07 15:07:37 - User type is: basic -2025-04-07 15:10:08 - Server is initializing... -2025-04-07 15:10:08 - User type is: basic -2025-04-07 15:10:42 - Server is initializing... -2025-04-07 15:10:42 - User type is: basic -2025-04-07 15:11:05 - Server is initializing... -2025-04-07 15:11:06 - User type is: basic -2025-04-07 15:12:16 - Server is initializing... -2025-04-07 15:12:17 - User type is: basic -2025-04-07 15:12:47 - Server is initializing... -2025-04-07 15:12:48 - User type is: basic -2025-04-07 15:14:40 - Server is initializing... -2025-04-07 15:14:40 - User type is: basic -2025-04-07 15:14:56 - Server is initializing... -2025-04-07 15:14:56 - User type is: basic -2025-04-07 15:17:59 - Server is initializing... -2025-04-07 15:18:00 - User type is: basic -2025-04-07 15:18:48 - Server is initializing... -2025-04-07 15:18:49 - User type is: basic -2025-04-07 15:20:47 - Server is initializing... -2025-04-07 15:20:48 - User type is: basic -2025-04-07 15:22:32 - Server is initializing... -2025-04-07 15:22:33 - User type is: basic -2025-04-07 15:22:55 - Server is initializing... -2025-04-07 15:22:56 - User type is: basic -2025-04-07 15:25:37 - Server is initializing... -2025-04-07 15:25:37 - Server is initializing... -2025-04-07 15:25:37 - Server is initializing... -2025-04-07 15:25:37 - Server is initializing... -2025-04-07 15:25:37 - Server is initializing... -2025-04-07 15:25:37 - Server is initializing... -2025-04-07 15:25:37 - Server is initializing... -2025-04-07 15:25:37 - Server is initializing... -2025-04-07 15:25:38 - Server is initializing... -2025-04-07 15:25:39 - User type is: basic -2025-04-07 19:20:06 - Server is initializing... -2025-04-07 19:20:06 - Server is initializing... -2025-04-07 19:20:06 - Server is initializing... -2025-04-07 19:20:06 - Server is initializing... -2025-04-07 19:20:06 - Server is initializing... -2025-04-07 19:20:06 - Server is initializing... -2025-04-07 19:20:06 - Server is initializing... -2025-04-07 19:20:06 - Server is initializing... -2025-04-07 19:20:06 - Server is initializing... -2025-04-07 19:20:08 - User type is: basic -2025-04-07 19:20:13 - Server is initializing... -2025-04-07 19:20:14 - User type is: basic -2025-04-07 19:20:21 - Server is initializing... -2025-04-07 19:20:21 - Server is initializing... -2025-04-07 19:20:21 - Server is initializing... -2025-04-07 19:20:21 - Server is initializing... -2025-04-07 19:20:21 - Server is initializing... -2025-04-07 19:20:21 - Server is initializing... -2025-04-07 19:20:21 - Server is initializing... -2025-04-07 19:20:21 - Server is initializing... -2025-04-07 19:20:21 - Server is initializing... -2025-04-07 19:20:22 - User type is: basic -2025-04-07 19:24:03 - Server is initializing... -2025-04-07 19:26:42 - Server is initializing... -2025-04-07 19:30:49 - Server is initializing... -2025-04-07 19:33:21 - Server is initializing... -2025-04-07 19:35:32 - Server is initializing... -2025-04-07 19:36:46 - Server is initializing... -2025-04-07 19:37:43 - Server is initializing... -2025-04-07 19:38:09 - Server is initializing... -2025-04-07 19:39:36 - Server is initializing... -2025-04-07 19:39:35 - Server is initializing... -2025-04-07 19:39:35 - Server is initializing... -2025-04-07 19:39:36 - Server is initializing... -2025-04-07 19:39:36 - Server is initializing... -2025-04-07 19:39:36 - Server is initializing... -2025-04-07 19:39:36 - Server is initializing... -2025-04-07 19:39:36 - Server is initializing... -2025-04-07 19:39:36 - Server is initializing... -2025-04-07 19:39:36 - Server is initializing... -2025-04-07 19:39:37 - User type is: basic -2025-04-07 19:40:35 - Server is initializing... -2025-04-07 19:44:40 - Server is initializing... -2025-04-07 19:45:29 - Server is initializing... -2025-04-07 19:46:18 - Server is initializing... -2025-04-07 19:47:14 - Server is initializing... -2025-04-07 19:47:15 - TEST RESPONSE: { - "error": "Internal server error." -} -2025-04-07 19:48:07 - Server is initializing... -2025-04-07 19:48:08 - Status: 500 -2025-04-07 19:48:08 - Error response: [object Object] -2025-04-07 19:48:55 - Server is initializing... -2025-04-07 19:49:27 - Server is initializing... -2025-04-07 19:49:28 - Status: 500 -2025-04-07 19:49:28 - Error response: [object Object] -2025-04-07 19:51:51 - Server is initializing... -2025-04-07 19:51:52 - Status: 500 -2025-04-07 19:51:52 - Error response: [object Object] -2025-04-07 19:52:10 - Server is initializing... -2025-04-07 19:52:11 - Status: 500 -2025-04-07 19:52:11 - Error response: [object Object] -2025-04-07 19:52:36 - Server is initializing... -2025-04-07 19:53:30 - Server is initializing... -2025-04-07 19:53:31 - Status: 500 -2025-04-07 19:53:31 - Error response: [object Object] -2025-04-07 19:53:44 - Server is initializing... -2025-04-07 19:53:45 - Status: 500 -2025-04-07 19:53:45 - Error response: [object Object] -2025-04-07 19:55:07 - Server is initializing... -2025-04-07 19:57:49 - Server is initializing... -2025-04-07 19:58:13 - Server is initializing... -2025-04-07 19:58:14 - Status: 500 -2025-04-07 19:58:14 - Error response: [object Object] -2025-04-07 19:58:49 - Server is initializing... -2025-04-07 19:58:49 - Server is initializing... -2025-04-07 19:58:49 - Server is initializing... -2025-04-07 19:58:49 - Server is initializing... -2025-04-07 19:58:49 - Server is initializing... -2025-04-07 19:58:49 - Server is initializing... -2025-04-07 19:58:49 - Server is initializing... -2025-04-07 19:58:49 - Server is initializing... -2025-04-07 19:58:49 - Server is initializing... -2025-04-07 19:58:49 - Server is initializing... -2025-04-07 19:58:50 - User type is: basic -2025-04-07 19:58:50 - Status: 500 -2025-04-07 19:58:50 - Error response: [object Object] -2025-04-07 20:00:31 - Server is initializing... -2025-04-07 20:02:22 - Server is initializing... -2025-04-07 20:03:42 - Server is initializing... -2025-04-07 20:06:26 - Server is initializing... -2025-04-07 20:07:57 - Server is initializing... -2025-04-07 20:09:50 - Server is initializing... -2025-04-07 20:11:16 - Server is initializing... -2025-04-07 20:11:48 - Server is initializing... -2025-04-07 20:12:26 - Server is initializing... -2025-04-07 20:14:04 - Server is initializing... -2025-04-07 20:14:31 - Server is initializing... -2025-04-07 20:15:33 - Server is initializing... -2025-04-07 20:16:05 - Server is initializing... -2025-04-07 20:17:08 - Server is initializing... -2025-04-07 20:18:08 - Server is initializing... -2025-04-07 20:19:05 - Server is initializing... -2025-04-07 20:19:30 - Server is initializing... -2025-04-07 20:20:34 - Server is initializing... -2025-04-07 20:22:09 - Server is initializing... -2025-04-07 20:23:55 - Server is initializing... -2025-04-07 20:26:11 - Server is initializing... -2025-04-07 20:26:50 - Server is initializing... -2025-04-07 20:27:27 - Server is initializing... -2025-04-07 20:27:54 - Server is initializing... -2025-04-07 20:29:39 - Server is initializing... -2025-04-07 20:30:58 - Server is initializing... -2025-04-07 20:34:12 - Server is initializing... -2025-04-07 20:35:06 - Server is initializing... -2025-04-07 20:36:52 - Server is initializing... -2025-04-07 20:37:39 - Server is initializing... -2025-04-07 20:38:29 - Server is initializing... -2025-04-07 20:39:04 - Server is initializing... -2025-04-07 20:41:50 - Server is initializing... -2025-04-07 20:41:50 - Server is initializing... -2025-04-07 20:41:50 - Server is initializing... -2025-04-07 20:41:50 - Server is initializing... -2025-04-07 20:41:50 - Server is initializing... -2025-04-07 20:41:50 - Server is initializing... -2025-04-07 20:41:50 - Server is initializing... -2025-04-07 20:41:50 - Server is initializing... -2025-04-07 20:41:50 - Server is initializing... -2025-04-07 20:41:50 - Server is initializing... -2025-04-07 20:41:51 - User type is: basic -2025-04-07 20:41:51 - Status: 500 -2025-04-07 20:41:51 - Error response: [object Object] -2025-04-07 20:42:11 - Server is initializing... -2025-04-07 20:42:56 - Server is initializing... -2025-04-07 20:43:26 - Server is initializing... -2025-04-07 20:43:40 - Server is initializing... -2025-04-07 20:43:40 - Server is initializing... -2025-04-07 20:43:40 - Server is initializing... -2025-04-07 20:43:40 - Server is initializing... -2025-04-07 20:43:40 - Server is initializing... -2025-04-07 20:43:40 - Server is initializing... -2025-04-07 20:43:40 - Server is initializing... -2025-04-07 20:43:40 - Server is initializing... -2025-04-07 20:43:40 - Server is initializing... -2025-04-07 20:43:40 - Server is initializing... -2025-04-07 20:43:41 - User type is: basic -2025-04-07 20:43:41 - Status: 500 -2025-04-07 20:43:41 - Error response: [object Object] -2025-04-07 20:46:03 - Server is initializing... -2025-04-07 20:48:07 - Server is initializing... -2025-04-07 20:48:07 - Server is initializing... -2025-04-07 20:48:07 - Server is initializing... -2025-04-07 20:48:07 - Server is initializing... -2025-04-07 20:48:07 - Server is initializing... -2025-04-07 20:48:07 - Server is initializing... -2025-04-07 20:48:07 - Server is initializing... -2025-04-07 20:48:07 - Server is initializing... -2025-04-07 20:48:07 - Server is initializing... -2025-04-07 20:48:07 - Server is initializing... -2025-04-07 20:48:09 - User type is: basic -2025-04-07 20:48:09 - Status: 500 -2025-04-07 20:48:09 - Error response: [object Object] -2025-04-08 07:00:19 - Server is initializing... -2025-04-08 07:00:19 - Server is initializing... -2025-04-08 07:00:19 - Server is initializing... -2025-04-08 07:00:19 - Server is initializing... -2025-04-08 07:00:19 - Server is initializing... -2025-04-08 07:00:19 - Server is initializing... -2025-04-08 07:00:19 - Server is initializing... -2025-04-08 07:00:19 - Server is initializing... -2025-04-08 07:00:19 - Server is initializing... -2025-04-08 07:00:19 - Server is initializing... -2025-04-08 07:00:21 - User type is: basic -2025-04-08 07:00:21 - Status: 500 -2025-04-08 07:00:21 - Error response: [object Object] -2025-04-08 07:05:03 - Server is initializing... -2025-04-08 07:16:20 - Server is initializing... -2025-04-08 07:16:20 - Server is initializing... -2025-04-08 07:16:20 - Server is initializing... -2025-04-08 07:16:20 - Server is initializing... -2025-04-08 07:16:20 - Server is initializing... -2025-04-08 07:16:20 - Server is initializing... -2025-04-08 07:16:20 - Server is initializing... -2025-04-08 07:16:20 - Server is initializing... -2025-04-08 07:16:20 - Server is initializing... -2025-04-08 07:16:21 - User type is: basic -2025-04-08 07:16:22 - Status: 500 -2025-04-08 07:16:22 - Error response: [object Object] -2025-04-08 07:16:56 - Server is initializing... -2025-04-08 07:22:14 - Server is initializing... -2025-04-08 07:23:23 - Server is initializing... -2025-04-08 07:25:09 - Server is initializing... -2025-04-08 07:26:00 - Server is initializing... -2025-04-08 07:28:19 - Server is initializing... -2025-04-08 07:29:16 - Server is initializing... -2025-04-08 07:29:16 - Server is initializing... -2025-04-08 07:29:16 - Server is initializing... -2025-04-08 07:29:16 - Server is initializing... -2025-04-08 07:29:16 - Server is initializing... -2025-04-08 07:29:16 - Server is initializing... -2025-04-08 07:29:16 - Server is initializing... -2025-04-08 07:29:16 - Server is initializing... -2025-04-08 07:29:16 - Server is initializing... -2025-04-08 07:29:17 - User type is: basic -2025-04-08 07:29:17 - Status: 500 -2025-04-08 07:29:17 - Error response: [object Object] -2025-04-08 07:32:41 - Server is initializing... -2025-04-08 07:32:41 - Sending email to: john.doe@example.com... -2025-04-08 07:32:41 - Sending email to: john.doe@example.com... -2025-04-08 07:32:41 - Sending email to: john.doe@example.com... -2025-04-08 07:32:41 - Storing data for john.doe@example.com in database... -2025-04-08 07:32:41 - Storing data for john.doe@example.com in database... -2025-04-08 07:32:41 - Storing data for john.doe@example.com in database... -2025-04-08 07:32:41 - Data stored successfully -2025-04-08 07:33:38 - Server is initializing... -2025-04-08 07:33:38 - Storing data for john.doe@example.com in database... -2025-04-08 07:33:38 - Storing data for john.doe@example.com in database... -2025-04-08 07:33:38 - Storing data for john.doe@example.com in database... -2025-04-08 07:33:38 - Data stored successfully -2025-04-08 07:36:32 - Server is initializing... -2025-04-08 07:36:33 - Sending email to: john.doe@example.com... -2025-04-08 07:36:33 - Sending email to: john.doe@example.com... -2025-04-08 07:36:33 - Sending email to: john.doe@example.com... -2025-04-08 07:36:33 - Storing data for john.doe@example.com in database... -2025-04-08 07:36:33 - Storing data for john.doe@example.com in database... -2025-04-08 07:36:33 - Storing data for john.doe@example.com in database... -2025-04-08 07:36:33 - Data stored successfully -2025-04-08 07:37:32 - Server is initializing... -2025-04-08 07:37:32 - Sending email to: john.doe@example.com... -2025-04-08 07:37:32 - Email sent successfully -2025-04-08 07:37:32 - Sending email to: john.doe@example.com... -2025-04-08 07:37:32 - Failed to send email -2025-04-08 07:37:32 - Sending email to: john.doe@example.com... -2025-04-08 07:37:32 - Storing data for john.doe@example.com in database... -2025-04-08 07:37:32 - Storing data for john.doe@example.com in database... -2025-04-08 07:37:32 - Storing data for john.doe@example.com in database... -2025-04-08 07:37:32 - Data stored successfully -2025-04-08 07:37:43 - Server is initializing... -2025-04-08 07:37:43 - Sending email to: john.doe@example.com... -2025-04-08 07:37:43 - Email sent successfully -2025-04-08 07:37:44 - Sending email to: john.doe@example.com... -2025-04-08 07:37:44 - Failed to send email -2025-04-08 07:37:44 - Sending email to: john.doe@example.com... -2025-04-08 07:37:44 - Storing data for john.doe@example.com in database... -2025-04-08 07:37:44 - Storing data for john.doe@example.com in database... -2025-04-08 07:37:44 - Storing data for john.doe@example.com in database... -2025-04-08 07:37:44 - Data stored successfully -2025-04-08 07:39:05 - Server is initializing... -2025-04-08 07:39:05 - Sending email to: john.doe@example.com... -2025-04-08 07:39:05 - Email sent successfully -2025-04-08 07:39:05 - Sending email to: john.doe@example.com... -2025-04-08 07:39:05 - Failed to send email -2025-04-08 07:39:05 - Sending email to: john.doe@example.com... -2025-04-08 07:39:05 - Sending email to: john.doe+test@example.com... -2025-04-08 07:39:05 - Email sent successfully -2025-04-08 07:39:05 - Sending email to: invalid-email... -2025-04-08 07:39:05 - Email sent successfully -2025-04-08 07:39:05 - Storing data for john.doe@example.com in database... -2025-04-08 07:39:05 - Storing data for john.doe@example.com in database... -2025-04-08 07:39:05 - Storing data for john.doe@example.com in database... -2025-04-08 07:39:05 - Data stored successfully -2025-04-08 07:39:05 - Storing data for john.doe@example.com in database... -2025-04-08 07:39:05 - Storing data for john.doe@example.com in database... -2025-04-08 07:39:05 - Data stored successfully -2025-04-08 07:39:05 - Storing data for john.doe@example.com in database... -2025-04-08 07:39:05 - Data stored successfully -2025-04-08 07:39:15 - Server is initializing... -2025-04-08 07:39:15 - Sending email to: john.doe@example.com... -2025-04-08 07:39:15 - Email sent successfully -2025-04-08 07:39:15 - Sending email to: john.doe@example.com... -2025-04-08 07:39:15 - Failed to send email -2025-04-08 07:39:15 - Sending email to: john.doe@example.com... -2025-04-08 07:39:15 - Sending email to: john.doe+test@example.com... -2025-04-08 07:39:15 - Email sent successfully -2025-04-08 07:39:15 - Sending email to: invalid-email... -2025-04-08 07:39:15 - Email sent successfully -2025-04-08 07:39:15 - Storing data for john.doe@example.com in database... -2025-04-08 07:39:15 - Storing data for john.doe@example.com in database... -2025-04-08 07:39:15 - Storing data for john.doe@example.com in database... -2025-04-08 07:39:15 - Data stored successfully -2025-04-08 07:39:48 - Server is initializing... -2025-04-08 07:39:48 - Sending email to: john.doe@example.com... -2025-04-08 07:39:48 - Email sent successfully -2025-04-08 07:39:48 - Sending email to: john.doe@example.com... -2025-04-08 07:39:48 - Failed to send email -2025-04-08 07:39:48 - Sending email to: john.doe@example.com... -2025-04-08 07:39:48 - Storing data for john.doe@example.com in database... -2025-04-08 07:39:48 - Storing data for john.doe@example.com in database... -2025-04-08 07:39:48 - Storing data for john.doe@example.com in database... -2025-04-08 07:39:48 - Data stored successfully -2025-04-08 07:40:19 - Server is initializing... -2025-04-08 07:40:19 - Sending email to: john.doe@example.com... -2025-04-08 07:40:19 - Email sent successfully -2025-04-08 07:40:19 - Sending email to: john.doe@example.com... -2025-04-08 07:40:19 - Failed to send email -2025-04-08 07:40:19 - Sending email to: john.doe@example.com... -2025-04-08 07:40:19 - Storing data for john.doe@example.com in database... -2025-04-08 07:40:19 - Storing data for john.doe@example.com in database... -2025-04-08 07:40:19 - Storing data for john.doe@example.com in database... -2025-04-08 07:40:19 - Data stored successfully -2025-04-08 07:40:19 - Storing data for john.doe@example.com in database... -2025-04-08 07:40:19 - Storing data for john.doe@example.com in database... -2025-04-08 07:40:19 - Data stored successfully -2025-04-08 07:40:19 - Storing data for john.doe@example.com in database... -2025-04-08 07:40:19 - Data stored successfully -2025-04-08 07:42:15 - Server is initializing... -2025-04-08 07:42:15 - Server is initializing... -2025-04-08 07:42:15 - Server is initializing... -2025-04-08 07:42:15 - Server is initializing... -2025-04-08 07:42:15 - Server is initializing... -2025-04-08 07:42:15 - Server is initializing... -2025-04-08 07:42:15 - Server is initializing... -2025-04-08 07:42:16 - Sending email to: john.doe@example.com... -2025-04-08 07:42:16 - Email sent successfully -2025-04-08 07:42:16 - Sending email to: john.doe@example.com... -2025-04-08 07:42:16 - Failed to send email -2025-04-08 07:42:16 - Sending email to: john.doe@example.com... -2025-04-08 07:42:15 - Server is initializing... -2025-04-08 07:42:16 - Storing data for john.doe@example.com in database... -2025-04-08 07:42:15 - Server is initializing... -2025-04-08 07:42:16 - Storing data for john.doe@example.com in database... -2025-04-08 07:42:15 - Server is initializing... -2025-04-08 07:42:16 - Storing data for john.doe@example.com in database... -2025-04-08 07:42:16 - Data stored successfully -2025-04-08 07:42:16 - Storing data for john.doe@example.com in database... -2025-04-08 07:42:16 - Storing data for john.doe@example.com in database... -2025-04-08 07:42:16 - Data stored successfully -2025-04-08 07:42:16 - Storing data for john.doe@example.com in database... -2025-04-08 07:42:16 - Data stored successfully -2025-04-08 07:42:16 - User type is: basic -2025-04-08 07:42:16 - Status: 500 -2025-04-08 07:42:16 - Error response: [object Object] -2025-04-08 07:43:02 - Server is initializing... -2025-04-08 07:47:39 - Server is initializing... -2025-04-08 07:47:54 - Server is initializing... -2025-04-08 07:50:05 - Server is initializing... -2025-04-08 07:51:07 - Server is initializing... -2025-04-08 07:52:31 - Server is initializing... -2025-04-08 07:52:31 - Server is initializing... -2025-04-08 07:52:31 - Server is initializing... -2025-04-08 07:52:31 - Server is initializing... -2025-04-08 07:52:31 - Server is initializing... -2025-04-08 07:52:31 - Server is initializing... -2025-04-08 07:52:31 - Server is initializing... -2025-04-08 07:52:31 - Server is initializing... -2025-04-08 07:52:31 - Server is initializing... -2025-04-08 07:52:32 - Sending email to: john.doe@example.com... -2025-04-08 07:52:32 - Email sent successfully -2025-04-08 07:52:32 - Sending email to: john.doe@example.com... -2025-04-08 07:52:32 - Failed to send email -2025-04-08 07:52:32 - Sending email to: john.doe@example.com... -2025-04-08 07:52:31 - Server is initializing... -2025-04-08 07:52:32 - Storing data for john.doe@example.com in database... -2025-04-08 07:52:32 - Storing data for john.doe@example.com in database... -2025-04-08 07:52:32 - Storing data for john.doe@example.com in database... -2025-04-08 07:52:32 - Data stored successfully -2025-04-08 07:52:32 - Storing data for john.doe@example.com in database... -2025-04-08 07:52:32 - Storing data for john.doe@example.com in database... -2025-04-08 07:52:32 - Data stored successfully -2025-04-08 07:52:32 - Storing data for john.doe@example.com in database... -2025-04-08 07:52:32 - Data stored successfully -2025-04-08 07:52:32 - User type is: basic -2025-04-08 07:52:33 - Status: 500 -2025-04-08 07:52:33 - Error response: [object Object] -2025-04-08 07:53:27 - Server is initializing... -2025-04-08 07:54:31 - Server is initializing... -2025-04-08 07:54:55 - Server is initializing... -2025-04-08 08:01:45 - Server is initializing... -2025-04-08 08:01:58 - Server is initializing... -2025-04-08 08:02:31 - Server is initializing... -2025-04-08 08:04:40 - Server is initializing... -2025-04-08 08:07:59 - Server is initializing... -2025-04-08 08:08:39 - Server is initializing... -2025-04-08 08:09:09 - Server is initializing... -2025-04-08 08:09:14 - Server is initializing... -2025-04-08 08:09:14 - Server is initializing... -2025-04-08 08:09:14 - Server is initializing... -2025-04-08 08:09:14 - Server is initializing... -2025-04-08 08:09:14 - Server is initializing... -2025-04-08 08:09:14 - Server is initializing... -2025-04-08 08:09:14 - Server is initializing... -2025-04-08 08:09:14 - Sending email to: john.doe@example.com... -2025-04-08 08:09:14 - Email sent successfully -2025-04-08 08:09:14 - Sending email to: john.doe@example.com... -2025-04-08 08:09:14 - Failed to send email -2025-04-08 08:09:14 - Sending email to: john.doe@example.com... -2025-04-08 08:09:14 - Storing data for john.doe@example.com in database... -2025-04-08 08:09:14 - Server is initializing... -2025-04-08 08:09:14 - Storing data for john.doe@example.com in database... -2025-04-08 08:09:14 - Storing data for john.doe@example.com in database... -2025-04-08 08:09:14 - Data stored successfully -2025-04-08 08:09:14 - Storing data for john.doe@example.com in database... -2025-04-08 08:09:14 - Server is initializing... -2025-04-08 08:09:14 - Server is initializing... -2025-04-08 08:09:14 - Storing data for john.doe@example.com in database... -2025-04-08 08:09:14 - Data stored successfully -2025-04-08 08:09:14 - Storing data for john.doe@example.com in database... -2025-04-08 08:09:14 - Data stored successfully -2025-04-08 08:09:15 - User type is: basic -2025-04-08 08:09:15 - Status: 500 -2025-04-08 08:09:15 - Error response: [object Object] -2025-04-08 08:12:51 - Server is initializing... -2025-04-08 08:20:01 - Server is initializing... -2025-04-08 08:21:11 - Server is initializing... -2025-04-08 08:22:24 - Server is initializing... -2025-04-08 08:24:33 - Server is initializing... -2025-04-08 08:26:18 - Server is initializing... -2025-04-08 08:28:03 - Server is initializing... -2025-04-08 08:29:04 - Server is initializing... -2025-04-08 08:32:04 - Server is initializing... -2025-04-08 08:32:23 - Server is initializing... -2025-04-08 08:33:55 - Server is initializing... -2025-04-08 08:34:57 - Server is initializing... -2025-04-08 08:37:07 - Server is initializing... -2025-04-08 08:37:21 - Server is initializing... -2025-04-08 08:38:06 - Server is initializing... -2025-04-08 08:40:46 - Server is initializing... -2025-04-08 08:41:06 - Server is initializing... -2025-04-08 08:42:24 - Server is initializing... -2025-04-08 08:43:00 - Server is initializing... -2025-04-08 08:43:26 - Server is initializing... -2025-04-08 08:43:45 - Server is initializing... -2025-04-08 08:45:00 - Server is initializing... -2025-04-08 08:45:00 - Server is initializing... -2025-04-08 08:45:00 - Server is initializing... -2025-04-08 08:45:00 - Server is initializing... -2025-04-08 08:45:00 - Server is initializing... -2025-04-08 08:45:00 - Server is initializing... -2025-04-08 08:45:00 - Server is initializing... -2025-04-08 08:45:00 - Server is initializing... -2025-04-08 08:45:00 - Sending email to: john.doe@example.com... -2025-04-08 08:45:00 - Email sent successfully -2025-04-08 08:45:00 - Sending email to: john.doe@example.com... -2025-04-08 08:45:00 - Failed to send email -2025-04-08 08:45:00 - Sending email to: john.doe@example.com... -2025-04-08 08:45:00 - Storing data for john.doe@example.com in database... -2025-04-08 08:45:00 - Storing data for john.doe@example.com in database... -2025-04-08 08:45:00 - Storing data for john.doe@example.com in database... -2025-04-08 08:45:00 - Data stored successfully -2025-04-08 08:45:00 - Storing data for john.doe@example.com in database... -2025-04-08 08:45:00 - Storing data for john.doe@example.com in database... -2025-04-08 08:45:00 - Data stored successfully -2025-04-08 08:45:00 - Storing data for john.doe@example.com in database... -2025-04-08 08:45:00 - Data stored successfully -2025-04-08 08:45:00 - Server is initializing... -2025-04-08 08:45:00 - Server is initializing... -2025-04-08 08:45:01 - User type is: basic -2025-04-08 08:45:01 - Status: 500 -2025-04-08 08:45:01 - Error response: [object Object] -2025-04-08 08:46:38 - Server is initializing... -2025-04-08 08:46:51 - Server is initializing... -2025-04-08 08:47:20 - Server is initializing... -2025-04-08 08:47:52 - Server is initializing... -2025-04-08 08:50:05 - Server is initializing... -2025-04-08 08:51:31 - Server is initializing... -2025-04-08 08:54:45 - Server is initializing... -2025-04-08 08:54:54 - Server is initializing... -2025-04-08 08:55:17 - Server is initializing... -2025-04-08 08:55:46 - Server is initializing... -2025-04-08 08:57:19 - Server is initializing... -2025-04-08 08:58:40 - Server is initializing... -2025-04-08 08:58:41 - Response status: 200 -2025-04-08 08:58:41 - Response body: [object Object] -2025-04-08 08:59:14 - Server is initializing... -2025-04-08 09:00:02 - Server is initializing... -2025-04-08 09:00:35 - Server is initializing... -2025-04-08 09:00:50 - Server is initializing... -2025-04-08 09:01:16 - Server is initializing... -2025-04-08 09:02:54 - Server is initializing... -2025-04-08 09:03:56 - Server is initializing... -2025-04-08 09:04:36 - Server is initializing... -2025-04-08 09:05:05 - Server is initializing... -2025-04-08 09:06:33 - Server is initializing... -2025-04-08 09:11:19 - Server is initializing... -2025-04-08 09:12:41 - Server is initializing... -2025-04-08 09:13:05 - Server is initializing... -2025-04-08 09:34:38 - Server is initializing... -2025-04-08 09:34:50 - Server is initializing... -2025-04-08 09:35:22 - Server is initializing... -2025-04-08 09:35:31 - Server is initializing... -2025-04-08 09:35:43 - Server is initializing... -2025-04-08 09:36:12 - Server is initializing... -2025-04-08 09:41:52 - Server is initializing... -2025-04-08 09:45:34 - Server is initializing... -2025-04-08 09:46:05 - Server is initializing... -2025-04-08 09:46:44 - Server is initializing... -2025-04-08 09:46:44 - Server is initializing... -2025-04-08 09:46:44 - Server is initializing... -2025-04-08 09:46:44 - Server is initializing... -2025-04-08 09:46:44 - Server is initializing... -2025-04-08 09:46:44 - Server is initializing... -2025-04-08 09:46:44 - Server is initializing... -2025-04-08 09:46:44 - Sending email to: john.doe@example.com... -2025-04-08 09:46:44 - Server is initializing... -2025-04-08 09:46:44 - Email sent successfully -2025-04-08 09:46:44 - Server is initializing... -2025-04-08 09:46:44 - Sending email to: john.doe@example.com... -2025-04-08 09:46:44 - Failed to send email -2025-04-08 09:46:44 - Sending email to: john.doe@example.com... -2025-04-08 09:46:44 - Server is initializing... -2025-04-08 09:46:44 - Storing data for john.doe@example.com in database... -2025-04-08 09:46:44 - Storing data for john.doe@example.com in database... -2025-04-08 09:46:44 - Storing data for john.doe@example.com in database... -2025-04-08 09:46:44 - Data stored successfully -2025-04-08 09:46:44 - Storing data for john.doe@example.com in database... -2025-04-08 09:46:44 - Storing data for john.doe@example.com in database... -2025-04-08 09:46:44 - Data stored successfully -2025-04-08 09:46:44 - Storing data for john.doe@example.com in database... -2025-04-08 09:46:44 - Data stored successfully -2025-04-08 09:46:45 - User type is: basic -2025-04-08 09:46:45 - Status: 500 -2025-04-08 09:46:45 - Error response: [object Object] -2025-04-08 10:19:01 - Server is initializing... -2025-04-08 10:22:26 - Server is initializing... -2025-04-08 10:22:27 - Status: 500 -2025-04-08 10:22:27 - Error response: [object Object] -2025-04-08 10:23:03 - Server is initializing... -2025-04-08 10:23:13 - Server is initializing... -2025-04-08 10:23:33 - Server is initializing... -2025-04-08 10:23:48 - Server is initializing... -2025-04-08 10:23:59 - Server is initializing... -2025-04-08 10:24:13 - Server is initializing... -2025-04-08 10:24:13 - Server is initializing... -2025-04-08 10:24:13 - Server is initializing... -2025-04-08 10:24:13 - Server is initializing... -2025-04-08 10:24:13 - Server is initializing... -2025-04-08 10:24:13 - Server is initializing... -2025-04-08 10:24:13 - Server is initializing... -2025-04-08 10:24:13 - Server is initializing... -2025-04-08 10:24:13 - Server is initializing... -2025-04-08 10:24:13 - Server is initializing... -2025-04-08 10:24:14 - Sending email to: john.doe@example.com... -2025-04-08 10:24:14 - Email sent successfully -2025-04-08 10:24:14 - Sending email to: john.doe@example.com... -2025-04-08 10:24:14 - Failed to send email -2025-04-08 10:24:14 - Sending email to: john.doe@example.com... -2025-04-08 10:24:14 - Storing data for john.doe@example.com in database... -2025-04-08 10:24:14 - Storing data for john.doe@example.com in database... -2025-04-08 10:24:14 - Storing data for john.doe@example.com in database... -2025-04-08 10:24:14 - Data stored successfully -2025-04-08 10:24:14 - Storing data for john.doe@example.com in database... -2025-04-08 10:24:14 - Storing data for john.doe@example.com in database... -2025-04-08 10:24:14 - Data stored successfully -2025-04-08 10:24:14 - Storing data for john.doe@example.com in database... -2025-04-08 10:24:14 - Data stored successfully -2025-04-08 10:24:14 - User type is: basic -2025-04-08 10:24:15 - Status: 500 -2025-04-08 10:24:15 - Error response: [object Object] -2025-04-08 10:25:52 - Server is initializing... -2025-04-08 10:25:52 - Server is initializing... -2025-04-08 10:25:52 - Server is initializing... -2025-04-08 10:25:52 - Server is initializing... -2025-04-08 10:25:52 - Server is initializing... -2025-04-08 10:25:52 - Server is initializing... -2025-04-08 10:25:52 - Server is initializing... -2025-04-08 10:25:52 - Server is initializing... -2025-04-08 10:25:52 - Server is initializing... -2025-04-08 10:25:52 - Sending email to: john.doe@example.com... -2025-04-08 10:25:52 - Email sent successfully -2025-04-08 10:25:52 - Sending email to: john.doe@example.com... -2025-04-08 10:25:52 - Failed to send email -2025-04-08 10:25:52 - Sending email to: john.doe@example.com... -2025-04-08 10:25:52 - Server is initializing... -2025-04-08 10:25:52 - Storing data for john.doe@example.com in database... -2025-04-08 10:25:52 - Storing data for john.doe@example.com in database... -2025-04-08 10:25:52 - Storing data for john.doe@example.com in database... -2025-04-08 10:25:52 - Data stored successfully -2025-04-08 10:25:52 - Storing data for john.doe@example.com in database... -2025-04-08 10:25:52 - Storing data for john.doe@example.com in database... -2025-04-08 10:25:52 - Data stored successfully -2025-04-08 10:25:52 - Storing data for john.doe@example.com in database... -2025-04-08 10:25:52 - Data stored successfully -2025-04-08 10:25:53 - User type is: basic -2025-04-08 10:25:53 - Status: 500 -2025-04-08 10:25:53 - Error response: [object Object] -2025-04-08 12:01:56 - Server is initializing... -2025-04-08 12:03:12 - Server is initializing... -2025-04-08 12:06:56 - Server is initializing... -2025-04-08 12:08:48 - Server is initializing... -2025-04-08 12:09:03 - Server is initializing... -2025-04-08 12:09:03 - Server is initializing... -2025-04-08 12:09:02 - Server is initializing... -2025-04-08 12:09:03 - Server is initializing... -2025-04-08 12:09:03 - Server is initializing... -2025-04-08 12:09:03 - Server is initializing... -2025-04-08 12:09:03 - Server is initializing... -2025-04-08 12:09:03 - Server is initializing... -2025-04-08 12:09:03 - Sending email to: john.doe@example.com... -2025-04-08 12:09:03 - Email sent successfully -2025-04-08 12:09:03 - Sending email to: john.doe@example.com... -2025-04-08 12:09:03 - Failed to send email -2025-04-08 12:09:03 - Sending email to: john.doe@example.com... -2025-04-08 12:09:03 - Server is initializing... -2025-04-08 12:09:03 - Storing data for john.doe@example.com in database... -2025-04-08 12:09:03 - Server is initializing... -2025-04-08 12:09:03 - Storing data for john.doe@example.com in database... -2025-04-08 12:09:03 - Storing data for john.doe@example.com in database... -2025-04-08 12:09:03 - Data stored successfully -2025-04-08 12:09:03 - Storing data for john.doe@example.com in database... -2025-04-08 12:09:03 - Storing data for john.doe@example.com in database... -2025-04-08 12:09:03 - Data stored successfully -2025-04-08 12:09:03 - Storing data for john.doe@example.com in database... -2025-04-08 12:09:03 - Data stored successfully -2025-04-08 12:09:04 - User type is: basic -2025-04-08 12:09:04 - Status: 500 -2025-04-08 12:09:04 - Error response: [object Object] -2025-04-08 12:13:57 - Server is initializing... -2025-04-08 12:16:02 - Server is initializing... -2025-04-08 12:17:07 - Server is initializing... -2025-04-08 12:18:47 - Server is initializing... -2025-04-08 12:18:58 - Server is initializing... -2025-04-08 12:18:58 - Server is initializing... -2025-04-08 12:18:58 - Server is initializing... -2025-04-08 12:18:58 - Server is initializing... -2025-04-08 12:18:58 - Server is initializing... -2025-04-08 12:18:58 - Server is initializing... -2025-04-08 12:18:58 - Server is initializing... -2025-04-08 12:18:58 - Server is initializing... -2025-04-08 12:18:58 - Server is initializing... -2025-04-08 12:18:58 - Server is initializing... -2025-04-08 12:18:58 - Server is initializing... -2025-04-08 12:18:58 - Sending email to: john.doe@example.com... -2025-04-08 12:18:58 - Email sent successfully -2025-04-08 12:18:58 - Sending email to: john.doe@example.com... -2025-04-08 12:18:58 - Failed to send email -2025-04-08 12:18:58 - Sending email to: john.doe@example.com... -2025-04-08 12:18:58 - Storing data for john.doe@example.com in database... -2025-04-08 12:18:58 - Storing data for john.doe@example.com in database... -2025-04-08 12:18:58 - Storing data for john.doe@example.com in database... -2025-04-08 12:18:58 - Data stored successfully -2025-04-08 12:18:58 - Storing data for john.doe@example.com in database... -2025-04-08 12:18:58 - Storing data for john.doe@example.com in database... -2025-04-08 12:18:58 - Data stored successfully -2025-04-08 12:18:58 - Storing data for john.doe@example.com in database... -2025-04-08 12:18:58 - Data stored successfully -2025-04-08 12:18:59 - User type is: basic -2025-04-08 12:18:59 - Status: 500 -2025-04-08 12:18:59 - Error response: [object Object] -2025-04-08 12:19:08 - Server is initializing... -2025-04-08 12:20:08 - Server is initializing... -2025-04-08 12:20:21 - Server is initializing... -2025-04-08 12:20:57 - Server is initializing... -2025-04-08 12:20:57 - Server is initializing... -2025-04-08 12:20:57 - Server is initializing... -2025-04-08 12:20:57 - Server is initializing... -2025-04-08 12:20:57 - Server is initializing... -2025-04-08 12:20:57 - Server is initializing... -2025-04-08 12:20:57 - Server is initializing... -2025-04-08 12:20:57 - Server is initializing... -2025-04-08 12:20:57 - Server is initializing... -2025-04-08 12:20:57 - Server is initializing... -2025-04-08 12:20:57 - Server is initializing... -2025-04-08 12:20:57 - Sending email to: john.doe@example.com... -2025-04-08 12:20:57 - Email sent successfully -2025-04-08 12:20:57 - Sending email to: john.doe@example.com... -2025-04-08 12:20:57 - Failed to send email -2025-04-08 12:20:57 - Sending email to: john.doe@example.com... -2025-04-08 12:20:57 - Storing data for john.doe@example.com in database... -2025-04-08 12:20:57 - Storing data for john.doe@example.com in database... -2025-04-08 12:20:57 - Storing data for john.doe@example.com in database... -2025-04-08 12:20:57 - Data stored successfully -2025-04-08 12:20:57 - Storing data for john.doe@example.com in database... -2025-04-08 12:20:57 - Storing data for john.doe@example.com in database... -2025-04-08 12:20:57 - Data stored successfully -2025-04-08 12:20:57 - Storing data for john.doe@example.com in database... -2025-04-08 12:20:57 - Data stored successfully -2025-04-08 12:20:58 - User type is: basic -2025-04-08 12:20:58 - Status: 500 -2025-04-08 12:20:58 - Error response: [object Object] -2025-04-08 12:27:31 - Server is initializing... -2025-04-08 12:35:46 - Server is initializing... -2025-04-08 12:37:32 - Server is initializing... -2025-04-08 12:37:32 - Server is initializing... -2025-04-08 12:37:32 - Server is initializing... -2025-04-08 12:37:32 - Server is initializing... -2025-04-08 12:37:32 - Server is initializing... -2025-04-08 12:37:32 - Server is initializing... -2025-04-08 12:37:32 - Server is initializing... -2025-04-08 12:37:32 - Server is initializing... -2025-04-08 12:37:32 - Server is initializing... -2025-04-08 12:37:32 - Server is initializing... -2025-04-08 12:37:32 - Sending email to: john.doe@example.com... -2025-04-08 12:37:32 - Email sent successfully -2025-04-08 12:37:32 - Sending email to: john.doe@example.com... -2025-04-08 12:37:32 - Failed to send email -2025-04-08 12:37:32 - Sending email to: john.doe@example.com... -2025-04-08 12:37:32 - Storing data for john.doe@example.com in database... -2025-04-08 12:37:32 - Server is initializing... -2025-04-08 12:37:32 - Storing data for john.doe@example.com in database... -2025-04-08 12:37:32 - Storing data for john.doe@example.com in database... -2025-04-08 12:37:32 - Data stored successfully -2025-04-08 12:37:32 - Storing data for john.doe@example.com in database... -2025-04-08 12:37:32 - Storing data for john.doe@example.com in database... -2025-04-08 12:37:32 - Data stored successfully -2025-04-08 12:37:32 - Storing data for john.doe@example.com in database... -2025-04-08 12:37:32 - Data stored successfully -2025-04-08 12:37:33 - User type is: basic -2025-04-08 12:37:33 - Status: 500 -2025-04-08 12:37:33 - Error response: [object Object] -2025-04-08 12:47:48 - Server is initializing... -2025-04-08 12:53:49 - Server is initializing... -2025-04-08 12:53:59 - Server is initializing... -2025-04-08 12:55:04 - Server is initializing... -2025-04-08 12:59:50 - Server is initializing... -2025-04-08 13:00:28 - Server is initializing... -2025-04-08 13:00:50 - Server is initializing... -2025-04-08 13:02:37 - Server is initializing... -2025-04-08 13:03:09 - Server is initializing... -2025-04-08 13:05:00 - Server is initializing... -2025-04-08 13:05:20 - Server is initializing... -2025-04-08 13:05:30 - Server is initializing... -2025-04-08 13:05:30 - Server is initializing... -2025-04-08 13:05:30 - Server is initializing... -2025-04-08 13:05:30 - Server is initializing... -2025-04-08 13:05:30 - Server is initializing... -2025-04-08 13:05:30 - Server is initializing... -2025-04-08 13:05:30 - Server is initializing... -2025-04-08 13:05:30 - Server is initializing... -2025-04-08 13:05:30 - Sending email to: john.doe@example.com... -2025-04-08 13:05:30 - Email sent successfully -2025-04-08 13:05:30 - Sending email to: john.doe@example.com... -2025-04-08 13:05:30 - Failed to send email -2025-04-08 13:05:30 - Sending email to: john.doe@example.com... -2025-04-08 13:05:30 - Server is initializing... -2025-04-08 13:05:30 - Storing data for john.doe@example.com in database... -2025-04-08 13:05:30 - Server is initializing... -2025-04-08 13:05:30 - Server is initializing... -2025-04-08 13:05:30 - Storing data for john.doe@example.com in database... -2025-04-08 13:05:30 - Storing data for john.doe@example.com in database... -2025-04-08 13:05:30 - Data stored successfully -2025-04-08 13:05:30 - Storing data for john.doe@example.com in database... -2025-04-08 13:05:30 - Server is initializing... -2025-04-08 13:05:30 - Storing data for john.doe@example.com in database... -2025-04-08 13:05:30 - Data stored successfully -2025-04-08 13:05:30 - Storing data for john.doe@example.com in database... -2025-04-08 13:05:30 - Data stored successfully -2025-04-08 13:05:31 - User type is: basic -2025-04-08 13:05:31 - Status: 500 -2025-04-08 13:05:31 - Error response: [object Object] -2025-04-08 13:08:21 - Server is initializing... -2025-04-08 13:10:09 - Server is initializing... -2025-04-08 13:11:36 - Server is initializing... -2025-04-08 13:13:44 - Server is initializing... -2025-04-08 13:15:08 - Server is initializing... -2025-04-08 13:17:11 - Server is initializing... -2025-04-08 13:18:38 - Server is initializing... -2025-04-08 13:22:05 - Server is initializing... -2025-04-08 13:23:05 - Server is initializing... -2025-04-08 13:24:34 - Server is initializing... -2025-04-08 13:24:58 - Server is initializing... -2025-04-08 13:25:27 - Server is initializing... -2025-04-08 13:26:15 - Server is initializing... -2025-04-08 13:28:21 - Server is initializing... -2025-04-08 13:28:33 - Server is initializing... -2025-04-08 13:29:17 - Server is initializing... -2025-04-08 13:30:31 - Server is initializing... -2025-04-08 13:32:52 - Server is initializing... -2025-04-08 13:33:54 - Server is initializing... -2025-04-08 13:34:45 - Server is initializing... -2025-04-08 13:36:29 - Server is initializing... -2025-04-08 13:37:21 - Server is initializing... -2025-04-08 13:37:36 - Server is initializing... -2025-04-08 13:37:46 - Server is initializing... -2025-04-08 13:37:46 - Server is initializing... -2025-04-08 13:37:46 - Server is initializing... -2025-04-08 13:37:46 - Server is initializing... -2025-04-08 13:37:46 - Server is initializing... -2025-04-08 13:37:46 - Server is initializing... -2025-04-08 13:37:46 - Server is initializing... -2025-04-08 13:37:46 - Server is initializing... -2025-04-08 13:37:46 - Server is initializing... -2025-04-08 13:37:46 - Server is initializing... -2025-04-08 13:37:46 - Server is initializing... -2025-04-08 13:37:46 - Server is initializing... -2025-04-08 13:37:46 - Sending email to: john.doe@example.com... -2025-04-08 13:37:46 - Email sent successfully -2025-04-08 13:37:46 - Sending email to: john.doe@example.com... -2025-04-08 13:37:46 - Server is initializing... -2025-04-08 13:37:46 - Failed to send email -2025-04-08 13:37:46 - Sending email to: john.doe@example.com... -2025-04-08 13:37:46 - Storing data for john.doe@example.com in database... -2025-04-08 13:37:46 - Storing data for john.doe@example.com in database... -2025-04-08 13:37:46 - Storing data for john.doe@example.com in database... -2025-04-08 13:37:46 - Data stored successfully -2025-04-08 13:37:46 - Storing data for john.doe@example.com in database... -2025-04-08 13:37:46 - Storing data for john.doe@example.com in database... -2025-04-08 13:37:46 - Data stored successfully -2025-04-08 13:37:46 - Storing data for john.doe@example.com in database... -2025-04-08 13:37:46 - Data stored successfully -2025-04-08 13:37:47 - User type is: basic -2025-04-08 13:37:48 - Status: 500 -2025-04-08 13:37:48 - Error response: [object Object] -2025-04-08 13:51:23 - Server is initializing... -2025-04-08 13:51:23 - Server is initializing... -2025-04-08 13:51:23 - Server is initializing... -2025-04-08 13:51:23 - Server is initializing... -2025-04-08 13:51:23 - Server is initializing... -2025-04-08 13:51:23 - Server is initializing... -2025-04-08 13:51:23 - Server is initializing... -2025-04-08 13:51:23 - Sending email to: john.doe@example.com... -2025-04-08 13:51:23 - Email sent successfully -2025-04-08 13:51:23 - Sending email to: john.doe@example.com... -2025-04-08 13:51:23 - Server is initializing... -2025-04-08 13:51:23 - Failed to send email -2025-04-08 13:51:23 - Sending email to: john.doe@example.com... -2025-04-08 13:51:23 - Storing data for john.doe@example.com in database... -2025-04-08 13:51:23 - Server is initializing... -2025-04-08 13:51:23 - Storing data for john.doe@example.com in database... -2025-04-08 13:51:23 - Server is initializing... -2025-04-08 13:51:23 - Storing data for john.doe@example.com in database... -2025-04-08 13:51:23 - Data stored successfully -2025-04-08 13:51:23 - Server is initializing... -2025-04-08 13:51:23 - Storing data for john.doe@example.com in database... -2025-04-08 13:51:23 - Storing data for john.doe@example.com in database... -2025-04-08 13:51:23 - Data stored successfully -2025-04-08 13:51:23 - Storing data for john.doe@example.com in database... -2025-04-08 13:51:23 - Data stored successfully -2025-04-08 13:51:24 - User type is: basic -2025-04-08 13:51:24 - Status: 500 -2025-04-08 13:51:24 - Error response: [object Object] -2025-04-08 13:56:05 - Server is initializing... -2025-04-08 13:56:34 - Server is initializing... -2025-04-08 13:56:53 - Server is initializing... -2025-04-08 13:57:54 - Server is initializing... -2025-04-08 13:58:36 - Server is initializing... -2025-04-08 14:00:47 - Server is initializing... -2025-04-08 14:01:27 - Server is initializing... -2025-04-08 14:04:49 - Server is initializing... -2025-04-08 14:11:00 - Server is initializing... -2025-04-08 14:11:08 - Server is initializing... -2025-04-08 14:11:33 - Server is initializing... -2025-04-08 14:11:43 - Server is initializing... -2025-04-08 14:11:43 - Server is initializing... -2025-04-08 14:11:43 - Server is initializing... -2025-04-08 14:11:43 - Server is initializing... -2025-04-08 14:11:43 - Server is initializing... -2025-04-08 14:11:43 - Server is initializing... -2025-04-08 14:11:43 - Server is initializing... -2025-04-08 14:11:43 - Server is initializing... -2025-04-08 14:11:43 - Server is initializing... -2025-04-08 14:11:43 - Server is initializing... -2025-04-08 14:11:43 - Sending email to: john.doe@example.com... -2025-04-08 14:11:43 - Email sent successfully -2025-04-08 14:11:43 - Sending email to: john.doe@example.com... -2025-04-08 14:11:43 - Failed to send email -2025-04-08 14:11:43 - Sending email to: john.doe@example.com... -2025-04-08 14:11:43 - Storing data for john.doe@example.com in database... -2025-04-08 14:11:43 - Storing data for john.doe@example.com in database... -2025-04-08 14:11:43 - Storing data for john.doe@example.com in database... -2025-04-08 14:11:43 - Data stored successfully -2025-04-08 14:11:43 - Storing data for john.doe@example.com in database... -2025-04-08 14:11:43 - Storing data for john.doe@example.com in database... -2025-04-08 14:11:43 - Server is initializing... -2025-04-08 14:11:43 - Data stored successfully -2025-04-08 14:11:43 - Storing data for john.doe@example.com in database... -2025-04-08 14:11:43 - Data stored successfully -2025-04-08 14:11:44 - User type is: basic -2025-04-08 14:11:44 - Status: 500 -2025-04-08 14:11:44 - Error response: [object Object] -2025-04-08 14:12:52 - Server is initializing... -2025-04-08 14:12:52 - Server is initializing... -2025-04-08 14:12:52 - Server is initializing... -2025-04-08 14:12:52 - Server is initializing... -2025-04-08 14:12:52 - Server is initializing... -2025-04-08 14:12:52 - Server is initializing... -2025-04-08 14:12:52 - Server is initializing... -2025-04-08 14:12:52 - Server is initializing... -2025-04-08 14:12:52 - Server is initializing... -2025-04-08 14:12:52 - Sending email to: john.doe@example.com... -2025-04-08 14:12:52 - Email sent successfully -2025-04-08 14:12:52 - Server is initializing... -2025-04-08 14:12:52 - Sending email to: john.doe@example.com... -2025-04-08 14:12:52 - Failed to send email -2025-04-08 14:12:52 - Server is initializing... -2025-04-08 14:12:52 - Sending email to: john.doe@example.com... -2025-04-08 14:12:52 - Server is initializing... -2025-04-08 14:12:52 - Storing data for john.doe@example.com in database... -2025-04-08 14:12:52 - Storing data for john.doe@example.com in database... -2025-04-08 14:12:52 - Storing data for john.doe@example.com in database... -2025-04-08 14:12:52 - Data stored successfully -2025-04-08 14:12:52 - Storing data for john.doe@example.com in database... -2025-04-08 14:12:52 - Storing data for john.doe@example.com in database... -2025-04-08 14:12:52 - Data stored successfully -2025-04-08 14:12:52 - Storing data for john.doe@example.com in database... -2025-04-08 14:12:52 - Data stored successfully -2025-04-08 14:12:52 - Server is initializing... -2025-04-08 14:12:53 - User type is: basic -2025-04-08 14:12:53 - Status: 500 -2025-04-08 14:12:53 - Error response: [object Object] -2025-04-08 14:22:26 - Server is initializing... -2025-04-08 14:22:26 - Server is initializing... -2025-04-08 14:22:26 - Server is initializing... -2025-04-08 14:22:26 - Server is initializing... -2025-04-08 14:22:26 - Server is initializing... -2025-04-08 14:22:26 - Server is initializing... -2025-04-08 14:22:26 - Server is initializing... -2025-04-08 14:22:26 - Server is initializing... -2025-04-08 14:22:27 - Sending email to: john.doe@example.com... -2025-04-08 14:22:26 - Server is initializing... -2025-04-08 14:22:27 - Email sent successfully -2025-04-08 14:22:27 - Sending email to: john.doe@example.com... -2025-04-08 14:22:27 - Failed to send email -2025-04-08 14:22:27 - Sending email to: john.doe@example.com... -2025-04-08 14:22:27 - Storing data for john.doe@example.com in database... -2025-04-08 14:22:27 - Storing data for john.doe@example.com in database... -2025-04-08 14:22:27 - Storing data for john.doe@example.com in database... -2025-04-08 14:22:27 - Data stored successfully -2025-04-08 14:22:27 - Storing data for john.doe@example.com in database... -2025-04-08 14:22:27 - Storing data for john.doe@example.com in database... -2025-04-08 14:22:27 - Data stored successfully -2025-04-08 14:22:27 - Storing data for john.doe@example.com in database... -2025-04-08 14:22:27 - Data stored successfully -2025-04-08 14:22:26 - Server is initializing... -2025-04-08 14:22:26 - Server is initializing... -2025-04-08 14:22:27 - User type is: basic -2025-04-08 14:22:28 - Status: 500 -2025-04-08 14:22:28 - Error response: [object Object] -2025-04-08 14:23:03 - Server is initializing... -2025-04-08 14:30:00 - Server is initializing... -2025-04-08 14:30:33 - Server is initializing... -2025-04-08 14:31:52 - Server is initializing... -2025-04-08 14:32:32 - Server is initializing... -2025-04-08 14:34:26 - Server is initializing... -2025-04-08 14:36:28 - Server is initializing... -2025-04-08 14:39:12 - Server is initializing... -2025-04-08 14:42:03 - Server is initializing... -2025-04-08 14:42:19 - Server is initializing... -2025-04-08 14:44:45 - Server is initializing... -2025-04-08 14:57:19 - Server is initializing... -2025-04-08 14:57:32 - Server is initializing... -2025-04-08 15:00:49 - Server is initializing... -2025-04-08 15:02:42 - Server is initializing... -2025-04-08 15:04:19 - Server is initializing... -2025-04-08 15:04:39 - Server is initializing... -2025-04-08 15:04:52 - Server is initializing... -2025-04-08 15:05:22 - Server is initializing... -2025-04-08 15:05:53 - Server is initializing... -2025-04-08 15:06:08 - Server is initializing... -2025-04-08 15:06:29 - Server is initializing... -2025-04-08 15:09:25 - Server is initializing... -2025-04-08 15:10:40 - Server is initializing... -2025-04-08 15:11:27 - Server is initializing... -2025-04-08 15:11:56 - Server is initializing... -2025-04-08 17:03:13 - Server is initializing... -2025-04-08 17:04:51 - Server is initializing... -2025-04-08 17:06:41 - Server is initializing... -2025-04-08 17:07:17 - Server is initializing... -2025-04-08 17:09:00 - Server is initializing... -2025-04-08 17:10:21 - Server is initializing... -2025-04-08 17:10:41 - Server is initializing... -2025-04-08 17:10:57 - Server is initializing... -2025-04-08 17:11:32 - Server is initializing... -2025-04-08 17:12:21 - Server is initializing... -2025-04-08 17:12:49 - Server is initializing... -2025-04-08 17:14:36 - Server is initializing... -2025-04-08 17:15:34 - Server is initializing... -2025-04-08 17:15:55 - Server is initializing... -2025-04-08 17:18:20 - Server is initializing... -2025-04-08 17:19:53 - Server is initializing... -2025-04-08 17:22:29 - Server is initializing... -2025-04-08 17:24:26 - Server is initializing... -2025-04-08 17:24:50 - Server is initializing... -2025-04-08 17:25:31 - Server is initializing... -2025-04-08 17:29:10 - Server is initializing... -2025-04-08 17:29:46 - Server is initializing... -2025-04-08 17:30:06 - Server is initializing... -2025-04-08 17:30:41 - Server is initializing... -2025-04-08 17:30:50 - Server is initializing... -2025-04-08 17:32:33 - Server is initializing... -2025-04-08 17:33:22 - Server is initializing... -2025-04-08 17:33:53 - Server is initializing... -2025-04-08 17:35:54 - Server is initializing... -2025-04-08 17:35:54 - Server is initializing... -2025-04-08 17:35:54 - Server is initializing... -2025-04-08 17:35:54 - Server is initializing... -2025-04-08 17:35:54 - Server is initializing... -2025-04-08 17:35:54 - Server is initializing... -2025-04-08 17:35:54 - Server is initializing... -2025-04-08 17:35:54 - Server is initializing... -2025-04-08 17:35:54 - Server is initializing... -2025-04-08 17:35:55 - Sending email to: john.doe@example.com... -2025-04-08 17:35:55 - Email sent successfully -2025-04-08 17:35:55 - Sending email to: john.doe@example.com... -2025-04-08 17:35:55 - Failed to send email -2025-04-08 17:35:55 - Sending email to: john.doe@example.com... -2025-04-08 17:35:55 - Storing data for john.doe@example.com in database... -2025-04-08 17:35:54 - Server is initializing... -2025-04-08 17:35:54 - Server is initializing... -2025-04-08 17:35:55 - Storing data for john.doe@example.com in database... -2025-04-08 17:35:55 - Storing data for john.doe@example.com in database... -2025-04-08 17:35:55 - Data stored successfully -2025-04-08 17:35:55 - Storing data for john.doe@example.com in database... -2025-04-08 17:35:55 - Storing data for john.doe@example.com in database... -2025-04-08 17:35:55 - Data stored successfully -2025-04-08 17:35:55 - Storing data for john.doe@example.com in database... -2025-04-08 17:35:55 - Data stored successfully -2025-04-08 17:35:55 - User type is: basic -2025-04-08 17:35:56 - Status: 500 -2025-04-08 17:35:56 - Error response: [object Object] -2025-04-08 17:37:10 - Server is initializing... -2025-04-08 17:37:10 - Server is initializing... -2025-04-08 17:37:10 - Server is initializing... -2025-04-08 17:37:10 - Server is initializing... -2025-04-08 17:37:10 - Server is initializing... -2025-04-08 17:37:10 - Server is initializing... -2025-04-08 17:37:10 - Server is initializing... -2025-04-08 17:37:10 - Server is initializing... -2025-04-08 17:37:10 - Server is initializing... -2025-04-08 17:37:11 - Sending email to: john.doe@example.com... -2025-04-08 17:37:11 - Email sent successfully -2025-04-08 17:37:11 - Sending email to: john.doe@example.com... -2025-04-08 17:37:11 - Failed to send email -2025-04-08 17:37:11 - Sending email to: john.doe@example.com... -2025-04-08 17:37:10 - Server is initializing... -2025-04-08 17:37:11 - Storing data for john.doe@example.com in database... -2025-04-08 17:37:11 - Storing data for john.doe@example.com in database... -2025-04-08 17:37:11 - Storing data for john.doe@example.com in database... -2025-04-08 17:37:11 - Data stored successfully -2025-04-08 17:37:10 - Server is initializing... -2025-04-08 17:37:11 - Storing data for john.doe@example.com in database... -2025-04-08 17:37:11 - Storing data for john.doe@example.com in database... -2025-04-08 17:37:11 - Data stored successfully -2025-04-08 17:37:11 - Storing data for john.doe@example.com in database... -2025-04-08 17:37:11 - Data stored successfully -2025-04-08 17:37:11 - User type is: basic -2025-04-08 17:37:12 - Status: 500 -2025-04-08 17:37:12 - Error response: [object Object] -2025-04-08 17:38:03 - Server is initializing... -2025-04-08 17:38:03 - Server is initializing... -2025-04-08 17:38:03 - Server is initializing... -2025-04-08 17:38:03 - Server is initializing... -2025-04-08 17:38:03 - Server is initializing... -2025-04-08 17:38:03 - Server is initializing... -2025-04-08 17:38:03 - Server is initializing... -2025-04-08 17:38:03 - Server is initializing... -2025-04-08 17:38:03 - Server is initializing... -2025-04-08 17:38:03 - Server is initializing... -2025-04-08 17:38:03 - Server is initializing... -2025-04-08 17:38:04 - Sending email to: john.doe@example.com... -2025-04-08 17:38:04 - Email sent successfully -2025-04-08 17:38:04 - Sending email to: john.doe@example.com... -2025-04-08 17:38:04 - Failed to send email -2025-04-08 17:38:04 - Sending email to: john.doe@example.com... -2025-04-08 17:38:04 - Storing data for john.doe@example.com in database... -2025-04-08 17:38:04 - Storing data for john.doe@example.com in database... -2025-04-08 17:38:04 - Storing data for john.doe@example.com in database... -2025-04-08 17:38:04 - Data stored successfully -2025-04-08 17:38:03 - Server is initializing... -2025-04-08 17:38:04 - Storing data for john.doe@example.com in database... -2025-04-08 17:38:04 - Storing data for john.doe@example.com in database... -2025-04-08 17:38:04 - Data stored successfully -2025-04-08 17:38:04 - Storing data for john.doe@example.com in database... -2025-04-08 17:38:04 - Data stored successfully -2025-04-08 17:38:05 - User type is: basic -2025-04-08 17:38:05 - Status: 500 -2025-04-08 17:38:05 - Error response: [object Object] -2025-04-08 17:38:44 - Server is initializing... -2025-04-08 17:38:44 - Server is initializing... -2025-04-08 17:38:44 - Server is initializing... -2025-04-08 17:38:44 - Server is initializing... -2025-04-08 17:38:44 - Server is initializing... -2025-04-08 17:38:44 - Server is initializing... -2025-04-08 17:38:44 - Server is initializing... -2025-04-08 17:38:44 - Server is initializing... -2025-04-08 17:38:44 - Server is initializing... -2025-04-08 17:38:44 - Server is initializing... -2025-04-08 17:38:44 - Sending email to: john.doe@example.com... -2025-04-08 17:38:44 - Email sent successfully -2025-04-08 17:38:44 - Sending email to: john.doe@example.com... -2025-04-08 17:38:44 - Failed to send email -2025-04-08 17:38:44 - Sending email to: john.doe@example.com... -2025-04-08 17:38:44 - Server is initializing... -2025-04-08 17:38:44 - Storing data for john.doe@example.com in database... -2025-04-08 17:38:44 - Server is initializing... -2025-04-08 17:38:44 - Storing data for john.doe@example.com in database... -2025-04-08 17:38:44 - Storing data for john.doe@example.com in database... -2025-04-08 17:38:44 - Data stored successfully -2025-04-08 17:38:44 - Storing data for john.doe@example.com in database... -2025-04-08 17:38:44 - Storing data for john.doe@example.com in database... -2025-04-08 17:38:44 - Data stored successfully -2025-04-08 17:38:44 - Storing data for john.doe@example.com in database... -2025-04-08 17:38:44 - Data stored successfully -2025-04-08 17:38:45 - User type is: basic -2025-04-08 17:38:45 - Status: 500 -2025-04-08 17:38:45 - Error response: [object Object] -2025-04-08 17:39:25 - Server is initializing... -2025-04-08 17:39:25 - Server is initializing... -2025-04-08 17:39:25 - Server is initializing... -2025-04-08 17:39:25 - Server is initializing... -2025-04-08 17:39:25 - Server is initializing... -2025-04-08 17:39:25 - Server is initializing... -2025-04-08 17:39:25 - Server is initializing... -2025-04-08 17:39:25 - Server is initializing... -2025-04-08 17:39:25 - Server is initializing... -2025-04-08 17:39:25 - Server is initializing... -2025-04-08 17:39:25 - Server is initializing... -2025-04-08 17:39:25 - Server is initializing... -2025-04-08 17:39:25 - Sending email to: john.doe@example.com... -2025-04-08 17:39:25 - Email sent successfully -2025-04-08 17:39:25 - Sending email to: john.doe@example.com... -2025-04-08 17:39:25 - Failed to send email -2025-04-08 17:39:25 - Sending email to: john.doe@example.com... -2025-04-08 17:39:25 - Storing data for john.doe@example.com in database... -2025-04-08 17:39:25 - Storing data for john.doe@example.com in database... -2025-04-08 17:39:25 - Storing data for john.doe@example.com in database... -2025-04-08 17:39:25 - Data stored successfully -2025-04-08 17:39:25 - Storing data for john.doe@example.com in database... -2025-04-08 17:39:25 - Server is initializing... -2025-04-08 17:39:25 - Storing data for john.doe@example.com in database... -2025-04-08 17:39:25 - Data stored successfully -2025-04-08 17:39:25 - Storing data for john.doe@example.com in database... -2025-04-08 17:39:25 - Data stored successfully -2025-04-08 17:39:26 - User type is: basic -2025-04-08 17:39:26 - Status: 500 -2025-04-08 17:39:26 - Error response: [object Object] +2025-04-02 21:57:53 - Server is initializing... +2025-04-02 21:57:54 - Server is running on port 3000 +2025-04-02 21:57:55 - Server is initializing... +2025-04-02 21:57:55 - Server is running on port 3000 +2025-04-03 03:26:05 - Server is initializing... +2025-04-03 03:26:07 - Server is running on port 3000 +2025-04-03 04:13:24 - Server is initializing... +2025-04-03 04:13:25 - Server is running on port 3000 +2025-04-03 04:43:40 - Server is initializing... +2025-04-03 04:43:41 - Server is running on port 3000 +2025-04-03 05:02:22 - Server is initializing... +2025-04-03 05:02:23 - Server is running on port 3000 +2025-04-03 06:40:20 - Server is initializing... +2025-04-03 06:40:22 - Server is running on port 3000 +2025-04-03 12:52:13 - Server is initializing... +2025-04-03 12:52:14 - Server is running on port 3000 +2025-04-03 13:23:48 - Server is initializing... +2025-04-03 13:23:48 - Server is running on port 3000