diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5451553..0a3436b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,6 +27,7 @@ build-dev: # This job runs in the build stage, which runs first. #- docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:development-latest -t $CI_REGISTRY/hacknix/freedmr:development-latest --platform linux/arm/v7,linux/amd64,linux/i386,linux/arm64 --push . +# - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:development-latest -t $CI_REGISTRY/hacknix/freedmr:development-latest --platform linux/amd64,linux/i386 --push . - echo "Compile complete." @@ -63,7 +64,7 @@ build-debug: # This job runs in the build stage, which runs first. script: - echo "Compiling the code..." - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - docker buildx build --no-cache -f Dockerfile-ci -t gitlab.hacknix.net:5050/hacknix/freedmr:debug --platform linux/amd64 --push . + - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t gitlab.hacknix.net:5050/hacknix/freedmr:debug --platform linux/amd64 --push . only: - debug @@ -75,6 +76,7 @@ build-release: # This job runs in the build stage, which runs first. - echo "Compiling the code..." - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:latest -t gitlab.hacknix.net:5050/hacknix/freedmr:latest -t hacknix/$CI_COMMIT_TAG-with-proxy -t gitlab.hacknix.net:5050/hacknix/freedmr:$CI_COMMIT_TAG-with-proxy -t hacknix/freedmr:development-latest -t gitlab.hacknix.net:5050/hacknix/freedmr:development-latest --platform linux/arm/v7,linux/amd64,linux/i386,linux/arm64 --push . + #- docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:latest -t gitlab.hacknix.net:5050/hacknix/freedmr:latest -t hacknix/$CI_COMMIT_TAG-with-proxy -t gitlab.hacknix.net:5050/hacknix/freedmr:$CI_COMMIT_TAG-with-proxy -t hacknix/freedmr:development-latest -t gitlab.hacknix.net:5050/hacknix/freedmr:development-latest --platform linux/amd64,linux/i386 --push . diff --git a/Audio/es_ES/alfa.ambe b/Audio/es_ES/alfa.ambe index b5ac3ff..e80b78e 100644 Binary files a/Audio/es_ES/alfa.ambe and b/Audio/es_ES/alfa.ambe differ diff --git a/Audio/es_ES/bravo.ambe b/Audio/es_ES/bravo.ambe index cb4baac..9127f90 100644 Binary files a/Audio/es_ES/bravo.ambe and b/Audio/es_ES/bravo.ambe differ diff --git a/Audio/es_ES/busy.ambe b/Audio/es_ES/busy.ambe index 3760c55..40d93c5 100644 Binary files a/Audio/es_ES/busy.ambe and b/Audio/es_ES/busy.ambe differ diff --git a/Audio/es_ES/charlie.ambe b/Audio/es_ES/charlie.ambe index ffca76a..2424d5a 100644 Binary files a/Audio/es_ES/charlie.ambe and b/Audio/es_ES/charlie.ambe differ diff --git a/Audio/es_ES/delta.ambe b/Audio/es_ES/delta.ambe index c764dc0..f61a3a0 100644 Binary files a/Audio/es_ES/delta.ambe and b/Audio/es_ES/delta.ambe differ diff --git a/Audio/es_ES/echo.ambe b/Audio/es_ES/echo.ambe index bd55dac..7f0bbbd 100644 Binary files a/Audio/es_ES/echo.ambe and b/Audio/es_ES/echo.ambe differ diff --git a/Audio/es_ES/eight.ambe b/Audio/es_ES/eight.ambe index b60c20f..3b76fe2 100644 Binary files a/Audio/es_ES/eight.ambe and b/Audio/es_ES/eight.ambe differ diff --git a/Audio/es_ES/five.ambe b/Audio/es_ES/five.ambe index 86c16d4..bf8122b 100644 Binary files a/Audio/es_ES/five.ambe and b/Audio/es_ES/five.ambe differ diff --git a/Audio/es_ES/four.ambe b/Audio/es_ES/four.ambe index f3763e1..142a01f 100644 Binary files a/Audio/es_ES/four.ambe and b/Audio/es_ES/four.ambe differ diff --git a/Audio/es_ES/foxtrot.ambe b/Audio/es_ES/foxtrot.ambe index 4f65063..15a5f56 100644 Binary files a/Audio/es_ES/foxtrot.ambe and b/Audio/es_ES/foxtrot.ambe differ diff --git a/Audio/es_ES/freedmr.ambe b/Audio/es_ES/freedmr.ambe index bb9c7fe..be242e9 100644 Binary files a/Audio/es_ES/freedmr.ambe and b/Audio/es_ES/freedmr.ambe differ diff --git a/Audio/es_ES/gateway.ambe b/Audio/es_ES/gateway.ambe index 3e3bcb1..be2d915 100644 Binary files a/Audio/es_ES/gateway.ambe and b/Audio/es_ES/gateway.ambe differ diff --git a/Audio/es_ES/golf.ambe b/Audio/es_ES/golf.ambe index 2587912..42f1d3f 100644 Binary files a/Audio/es_ES/golf.ambe and b/Audio/es_ES/golf.ambe differ diff --git a/Audio/es_ES/hotel.ambe b/Audio/es_ES/hotel.ambe index 6df53e4..76a76b4 100644 Binary files a/Audio/es_ES/hotel.ambe and b/Audio/es_ES/hotel.ambe differ diff --git a/Audio/es_ES/india.ambe b/Audio/es_ES/india.ambe index c510e68..647db0a 100644 Binary files a/Audio/es_ES/india.ambe and b/Audio/es_ES/india.ambe differ diff --git a/Audio/es_ES/juliet.ambe b/Audio/es_ES/juliet.ambe index ebb4a34..3d049bd 100644 Binary files a/Audio/es_ES/juliet.ambe and b/Audio/es_ES/juliet.ambe differ diff --git a/Audio/es_ES/kilo.ambe b/Audio/es_ES/kilo.ambe index ad1cddd..bdb3beb 100644 Binary files a/Audio/es_ES/kilo.ambe and b/Audio/es_ES/kilo.ambe differ diff --git a/Audio/es_ES/lima.ambe b/Audio/es_ES/lima.ambe index 96375b4..e45aae6 100644 Binary files a/Audio/es_ES/lima.ambe and b/Audio/es_ES/lima.ambe differ diff --git a/Audio/es_ES/linked-to.ambe b/Audio/es_ES/linked-to.ambe index bfe616d..fb26360 100644 Binary files a/Audio/es_ES/linked-to.ambe and b/Audio/es_ES/linked-to.ambe differ diff --git a/Audio/es_ES/mike.ambe b/Audio/es_ES/mike.ambe index 68de699..1f764d6 100644 Binary files a/Audio/es_ES/mike.ambe and b/Audio/es_ES/mike.ambe differ diff --git a/Audio/es_ES/nine.ambe b/Audio/es_ES/nine.ambe index cb53bd9..1f13d1e 100644 Binary files a/Audio/es_ES/nine.ambe and b/Audio/es_ES/nine.ambe differ diff --git a/Audio/es_ES/not-linked.ambe b/Audio/es_ES/not-linked.ambe index 806c142..ee2bf20 100644 Binary files a/Audio/es_ES/not-linked.ambe and b/Audio/es_ES/not-linked.ambe differ diff --git a/Audio/es_ES/november.ambe b/Audio/es_ES/november.ambe index c38dae3..081771c 100644 Binary files a/Audio/es_ES/november.ambe and b/Audio/es_ES/november.ambe differ diff --git a/Audio/es_ES/one.ambe b/Audio/es_ES/one.ambe index ffbe062..64f052b 100644 Binary files a/Audio/es_ES/one.ambe and b/Audio/es_ES/one.ambe differ diff --git a/Audio/es_ES/oscar.ambe b/Audio/es_ES/oscar.ambe index fefcc1a..829afef 100644 Binary files a/Audio/es_ES/oscar.ambe and b/Audio/es_ES/oscar.ambe differ diff --git a/Audio/es_ES/papa.ambe b/Audio/es_ES/papa.ambe index 83597de..2148197 100644 Binary files a/Audio/es_ES/papa.ambe and b/Audio/es_ES/papa.ambe differ diff --git a/Audio/es_ES/quebec.ambe b/Audio/es_ES/quebec.ambe index 66b6bc3..3c27adb 100644 Binary files a/Audio/es_ES/quebec.ambe and b/Audio/es_ES/quebec.ambe differ diff --git a/Audio/es_ES/repeater.ambe b/Audio/es_ES/repeater.ambe index f27ed8f..45f7f17 100644 Binary files a/Audio/es_ES/repeater.ambe and b/Audio/es_ES/repeater.ambe differ diff --git a/Audio/es_ES/romeo.ambe b/Audio/es_ES/romeo.ambe index 0e344fe..1dc93bc 100644 Binary files a/Audio/es_ES/romeo.ambe and b/Audio/es_ES/romeo.ambe differ diff --git a/Audio/es_ES/seven.ambe b/Audio/es_ES/seven.ambe index 669248e..2b9f367 100644 Binary files a/Audio/es_ES/seven.ambe and b/Audio/es_ES/seven.ambe differ diff --git a/Audio/es_ES/sierra.ambe b/Audio/es_ES/sierra.ambe index bb0bd2b..b03f831 100644 Binary files a/Audio/es_ES/sierra.ambe and b/Audio/es_ES/sierra.ambe differ diff --git a/Audio/es_ES/six.ambe b/Audio/es_ES/six.ambe index aa5fd08..f154acf 100644 Binary files a/Audio/es_ES/six.ambe and b/Audio/es_ES/six.ambe differ diff --git a/Audio/es_ES/tango.ambe b/Audio/es_ES/tango.ambe index cdcc75d..cdedc7f 100644 Binary files a/Audio/es_ES/tango.ambe and b/Audio/es_ES/tango.ambe differ diff --git a/Audio/es_ES/this-is.ambe b/Audio/es_ES/this-is.ambe index 2498cac..829c495 100644 Binary files a/Audio/es_ES/this-is.ambe and b/Audio/es_ES/this-is.ambe differ diff --git a/Audio/es_ES/three.ambe b/Audio/es_ES/three.ambe index 2769ece..cae2dd7 100644 Binary files a/Audio/es_ES/three.ambe and b/Audio/es_ES/three.ambe differ diff --git a/Audio/es_ES/two.ambe b/Audio/es_ES/two.ambe index 89b076e..112c625 100644 Binary files a/Audio/es_ES/two.ambe and b/Audio/es_ES/two.ambe differ diff --git a/Audio/es_ES/uniform.ambe b/Audio/es_ES/uniform.ambe index b7e0771..1da7006 100644 --- a/Audio/es_ES/uniform.ambe +++ b/Audio/es_ES/uniform.ambe @@ -1,3 +1,4 @@ -@t;%ds*ނNJfuYڠOÕBPlGPjQ~縝 eP "tV.%EƅB>,5g`>FGqװtGQ GeCqQm0eDL7aa PfpTueWP\ba@M(H1eP[SBj5㰹E:e?#nHYo$Y&,\J}p:-Kb__+j Mi<DnT?*~ٺ|i -?iZZ]x_ Eڲ_Q"T|c['t[BӅn' ,S0Т m9_E * Ô{{Dd\ -WXY.nzMG4.VR_9Rli,,s8!(jyjqĿ4` nZ]7d|,֭JI.HiыuX󰲇B&yAWs?…W WRjC|w \ No newline at end of file +CEM9sGrͳD`fWcĢ$C>PCbA!GBJ5^Fuz +11hq2'ŔA(2f4P!Eƺhq#'ĄrB#SǘAESa3ecэXU&wUEfer@{CI1'ri}FduT[fB yU&,ᓋ\m{K4E^Na+`Qb+ \ y:+.ðb. <_a'89s%] xmٟ+/'д?aR +"{Fv[.R# +5)>/xSiYR  }_WLfD }DF8S0MUJM><.> (Z[\plt/nB[\`C]HoRN|=HO\1m:ىhJ!Z38~bt<"77gps2#ʣ0zڢc3>ϸ \ No newline at end of file diff --git a/Audio/es_ES/victor.ambe b/Audio/es_ES/victor.ambe index b1033be..1e40903 100644 Binary files a/Audio/es_ES/victor.ambe and b/Audio/es_ES/victor.ambe differ diff --git a/Audio/es_ES/whiskey.ambe b/Audio/es_ES/whiskey.ambe index ba72851..74b3b77 100644 Binary files a/Audio/es_ES/whiskey.ambe and b/Audio/es_ES/whiskey.ambe differ diff --git a/Audio/es_ES/x-ray.ambe b/Audio/es_ES/x-ray.ambe index c938e83..0b6e2b7 100644 --- a/Audio/es_ES/x-ray.ambe +++ b/Audio/es_ES/x-ray.ambe @@ -1,2 +1,4 @@ -b dgCKt!pU2 Ch*Ap,́eqH @}/.tg *P!K5e>RZ%ƃ$H'l˝C`DфAG7oу0]e%Gb! EeP>'(3:Ƈge!k|PkI:_n4K_N& Jf[6d08#ffAZW8?%cX` -:Lt*zwE0;8WNgH=rzY\u"^g'*xTХl9F|9@Hlyσ@gqJ3G:zc;7٬(o0rJiq†1v+A \ No newline at end of file +̒T!qWM%[ |dʿGwS^ ep|męgGqm!$@}혽.?Vf/*Ts`'/J+Q`GhP;#+C ]DcB c%pb4gJTWңE7M' | <;9Aae'%s^#X7Pq@T/:Ɔgg+-yYHoZ< ;Y9֢/lcj[=kY,29z #y +k &[5*"-XYDAE4˴ydͼ9' NA \ No newline at end of file diff --git a/Audio/es_ES/yankee.ambe b/Audio/es_ES/yankee.ambe index 2f607c0..41345cb 100644 Binary files a/Audio/es_ES/yankee.ambe and b/Audio/es_ES/yankee.ambe differ diff --git a/Audio/es_ES/zero.ambe b/Audio/es_ES/zero.ambe index 9d5a8ee..955e447 100644 Binary files a/Audio/es_ES/zero.ambe and b/Audio/es_ES/zero.ambe differ diff --git a/Audio/es_ES/zulu.ambe b/Audio/es_ES/zulu.ambe index a5160f4..951af14 100644 Binary files a/Audio/es_ES/zulu.ambe and b/Audio/es_ES/zulu.ambe differ diff --git a/Audio/es_ES_2/alfa.ambe b/Audio/es_ES_2/alfa.ambe deleted file mode 100644 index b5ac3ff..0000000 Binary files a/Audio/es_ES_2/alfa.ambe and /dev/null differ diff --git a/Audio/es_ES_2/bravo.ambe b/Audio/es_ES_2/bravo.ambe deleted file mode 100644 index cb4baac..0000000 Binary files a/Audio/es_ES_2/bravo.ambe and /dev/null differ diff --git a/Audio/es_ES_2/busy.ambe b/Audio/es_ES_2/busy.ambe deleted file mode 100644 index 3760c55..0000000 Binary files a/Audio/es_ES_2/busy.ambe and /dev/null differ diff --git a/Audio/es_ES_2/charlie.ambe b/Audio/es_ES_2/charlie.ambe deleted file mode 100644 index ffca76a..0000000 Binary files a/Audio/es_ES_2/charlie.ambe and /dev/null differ diff --git a/Audio/es_ES_2/delta.ambe b/Audio/es_ES_2/delta.ambe deleted file mode 100644 index c764dc0..0000000 Binary files a/Audio/es_ES_2/delta.ambe and /dev/null differ diff --git a/Audio/es_ES_2/echo.ambe b/Audio/es_ES_2/echo.ambe deleted file mode 100644 index bd55dac..0000000 Binary files a/Audio/es_ES_2/echo.ambe and /dev/null differ diff --git a/Audio/es_ES_2/eight.ambe b/Audio/es_ES_2/eight.ambe deleted file mode 100644 index b60c20f..0000000 --- a/Audio/es_ES_2/eight.ambe +++ /dev/null @@ -1,2 +0,0 @@ -J71-&\Po-bW8C1 黇Nv,{| !% (ulFNu,ʴbOCMӀ$V]RRgOŒFQ&0!ٍ$B-x^᫡ځn:H0 !*Ӛ5^='HCMj-W(:DkUyL6yeKṵ hʇe,2i0yŒp -mnρ{+8Ogoa jʢR'61X2*͵IePl \ No newline at end of file diff --git a/Audio/es_ES_2/five.ambe b/Audio/es_ES_2/five.ambe deleted file mode 100644 index 86c16d4..0000000 Binary files a/Audio/es_ES_2/five.ambe and /dev/null differ diff --git a/Audio/es_ES_2/four.ambe b/Audio/es_ES_2/four.ambe deleted file mode 100644 index f3763e1..0000000 --- a/Audio/es_ES_2/four.ambe +++ /dev/null @@ -1,4 +0,0 @@ -pa0l9] 膂A@/Ce=sy==#DZ7C;#v|. 7 b,S;DO-BPEG \.s@&Wd*Pdn"yFmrGQY>)V|KϕPǃu 뼕wT]ܧsνn_xsN -xI( ;2AJ -ْ -hc䅵,|U5[~'6Hudj.p<[JP *-&+.{.C }Nj/n Ux 9hM$y)~jJ"Q~*nSqSP6d p,BQ5zg)tH2([0s \ No newline at end of file diff --git a/Audio/es_ES_2/foxtrot.ambe b/Audio/es_ES_2/foxtrot.ambe deleted file mode 100644 index 4f65063..0000000 --- a/Audio/es_ES_2/foxtrot.ambe +++ /dev/null @@ -1,2 +0,0 @@ -F <\Ȁp~P?p,DŽ6W$8w .;=aTȿ~!M7;'%*S 8sH̫9%P@XE`8Ot!7 -xFd RAvHߕ dFSoqJjvB(k6zC]59wݓ#!(x"A ֋׬5/)w)lXj[`J=A?bѯ=f }</6m99tJej]ue|R'mB-Mv/CYte.uѥ 丹R-8( ӖU{i5Ʒ_3JTظA@l4/r&qka|6eT'7 \ No newline at end of file diff --git a/Audio/es_ES_2/freedmr.ambe b/Audio/es_ES_2/freedmr.ambe deleted file mode 100644 index bb9c7fe..0000000 Binary files a/Audio/es_ES_2/freedmr.ambe and /dev/null differ diff --git a/Audio/es_ES_2/gateway.ambe b/Audio/es_ES_2/gateway.ambe deleted file mode 100644 index 3e3bcb1..0000000 Binary files a/Audio/es_ES_2/gateway.ambe and /dev/null differ diff --git a/Audio/es_ES_2/golf.ambe b/Audio/es_ES_2/golf.ambe deleted file mode 100644 index 2587912..0000000 Binary files a/Audio/es_ES_2/golf.ambe and /dev/null differ diff --git a/Audio/es_ES_2/hotel.ambe b/Audio/es_ES_2/hotel.ambe deleted file mode 100644 index 6df53e4..0000000 Binary files a/Audio/es_ES_2/hotel.ambe and /dev/null differ diff --git a/Audio/es_ES_2/india.ambe b/Audio/es_ES_2/india.ambe deleted file mode 100644 index c510e68..0000000 Binary files a/Audio/es_ES_2/india.ambe and /dev/null differ diff --git a/Audio/es_ES_2/juliet.ambe b/Audio/es_ES_2/juliet.ambe deleted file mode 100644 index ebb4a34..0000000 Binary files a/Audio/es_ES_2/juliet.ambe and /dev/null differ diff --git a/Audio/es_ES_2/kilo.ambe b/Audio/es_ES_2/kilo.ambe deleted file mode 100644 index ad1cddd..0000000 Binary files a/Audio/es_ES_2/kilo.ambe and /dev/null differ diff --git a/Audio/es_ES_2/lima.ambe b/Audio/es_ES_2/lima.ambe deleted file mode 100644 index 96375b4..0000000 --- a/Audio/es_ES_2/lima.ambe +++ /dev/null @@ -1,2 +0,0 @@ -^64ktpHG9{D0 >ݬO\dvK OoɯU:ic_*u*C'icjKM@h" /!nq@F YX@ٍ̅FDؓF'KP;U-r#r 4h@!E&XS܂AY*X7Ve Yvŵz3M]ki/< *ۅܯTkj+I_e>*m ꫧm!e/˧vC"(pBYǢ>Rwcz&fECekC SG:% .Ho3J/. 0}ng ]s mh;e\}ɪ3_Nh ʔ4H-Fڰx v| q9?,@Kc:+tMc9 9[~Po&)ƾ av~BL,8o}lh nkp -F=c%% \ No newline at end of file diff --git a/Audio/es_ES_2/sierra.ambe b/Audio/es_ES_2/sierra.ambe deleted file mode 100644 index bb0bd2b..0000000 Binary files a/Audio/es_ES_2/sierra.ambe and /dev/null differ diff --git a/Audio/es_ES_2/six.ambe b/Audio/es_ES_2/six.ambe deleted file mode 100644 index aa5fd08..0000000 Binary files a/Audio/es_ES_2/six.ambe and /dev/null differ diff --git a/Audio/es_ES_2/tango.ambe b/Audio/es_ES_2/tango.ambe deleted file mode 100644 index cdcc75d..0000000 Binary files a/Audio/es_ES_2/tango.ambe and /dev/null differ diff --git a/Audio/es_ES_2/this-is.ambe b/Audio/es_ES_2/this-is.ambe deleted file mode 100644 index 2498cac..0000000 Binary files a/Audio/es_ES_2/this-is.ambe and /dev/null differ diff --git a/Audio/es_ES_2/three.ambe b/Audio/es_ES_2/three.ambe deleted file mode 100644 index 2769ece..0000000 --- a/Audio/es_ES_2/three.ambe +++ /dev/null @@ -1 +0,0 @@ -BKsޢ9я~Wx|2S_ܙ;K.;E.aiUdKݏ*52b^F]gaC<GwjNuFAsA?`'׽:FjG dh3Xk``J+ӈ=,k#NܔYAUi7Xq)wa&jSԌuuF֛P[)BTvY$K627|!Bt4|̷2D8잧2 \ No newline at end of file diff --git a/Audio/es_ES_2/two.ambe b/Audio/es_ES_2/two.ambe deleted file mode 100644 index 89b076e..0000000 Binary files a/Audio/es_ES_2/two.ambe and /dev/null differ diff --git a/Audio/es_ES_2/uniform.ambe b/Audio/es_ES_2/uniform.ambe deleted file mode 100644 index b7e0771..0000000 --- a/Audio/es_ES_2/uniform.ambe +++ /dev/null @@ -1,3 +0,0 @@ -@t;%ds*ނNJfuYڠOÕBPlGPjQ~縝 eP "tV.%EƅB>,5g`>FGqװtGQ GeCqQm0eDL7aa PfpTueWP\ba@M(H1eP[SBj5㰹E:e?#nHYo$Y&,\J}p:-Kb__+j Mi<DnT?*~ٺ|i -?iZZ]x_ Eڲ_Q"T|c['t[BӅn' ,S0Т m9_E * Ô{{Dd\ -WXY.nzMG4.VR_9Rli,,s8!(jyjqĿ4` nZ]7d|,֭JI.HiыuX󰲇B&yAWs?…W WRjC|w \ No newline at end of file diff --git a/Audio/es_ES_2/victor.ambe b/Audio/es_ES_2/victor.ambe deleted file mode 100644 index b1033be..0000000 --- a/Audio/es_ES_2/victor.ambe +++ /dev/null @@ -1,2 +0,0 @@ -.W kg*@`1ҳ'[@hh˄0ss;:d;ۙ%D7 ,}B\~zNvX !Ep!]|&CQIRBWL+ 5i*nS).(ʄ#g*:㬙cEǰ0ѿNz+4TQ3 P=b!4~[.bџl ` , H%vZX[%IhhfMd\ak@g(O*+: ؁YM-=,Q$Ŗ}5;F F]ӊlI >lGd }HZpYq؂A0m# - \ No newline at end of file diff --git a/Audio/es_ES_2/whiskey.ambe b/Audio/es_ES_2/whiskey.ambe deleted file mode 100644 index ba72851..0000000 Binary files a/Audio/es_ES_2/whiskey.ambe and /dev/null differ diff --git a/Audio/es_ES_2/x-ray.ambe b/Audio/es_ES_2/x-ray.ambe deleted file mode 100644 index c938e83..0000000 --- a/Audio/es_ES_2/x-ray.ambe +++ /dev/null @@ -1,2 +0,0 @@ -b dgCKt!pU2 Ch*Ap,́eqH @}/.tg *P!K5e>RZ%ƃ$H'l˝C`DфAG7oу0]e%Gb! EeP>'(3:Ƈge!k|PkI:_n4K_N& Jf[6d08#ffAZW8?%cX` -:Lt*zwE0;8WNgH=rzY\u"^g'*xTХl9F|9@Hlyσ@gqJ3G:zc;7٬(o0rJiq†1v+A \ No newline at end of file diff --git a/Audio/es_ES_2/yankee.ambe b/Audio/es_ES_2/yankee.ambe deleted file mode 100644 index 2f607c0..0000000 Binary files a/Audio/es_ES_2/yankee.ambe and /dev/null differ diff --git a/Audio/es_ES_2/zero.ambe b/Audio/es_ES_2/zero.ambe deleted file mode 100644 index 9d5a8ee..0000000 Binary files a/Audio/es_ES_2/zero.ambe and /dev/null differ diff --git a/Audio/es_ES_2/zulu.ambe b/Audio/es_ES_2/zulu.ambe deleted file mode 100644 index a5160f4..0000000 Binary files a/Audio/es_ES_2/zulu.ambe and /dev/null differ diff --git a/FreeDMR-MINIMAL.cfg b/FreeDMR-MINIMAL.cfg index 0f7a827..ea46f37 100755 --- a/FreeDMR-MINIMAL.cfg +++ b/FreeDMR-MINIMAL.cfg @@ -4,6 +4,7 @@ [GLOBAL] SERVER_ID: 0000 +DEBUG_BRIDGES: True [REPORTS] diff --git a/bridge.py b/bridge.py index afa31f9..86d6dc3 100755 --- a/bridge.py +++ b/bridge.py @@ -791,7 +791,11 @@ class routerHBP(HBSYSTEM): systems[_target['SYSTEM']]._report.send_bridgeEvent('GROUP VOICE,END,TX,{},{},{},{},{},{},{:.2f}'.format(_target['SYSTEM'], int_id(_stream_id), int_id(_peer_id), int_id(_rf_src), _target['TS'], int_id(_target['TGID']), call_duration).encode(encoding='utf-8', errors='ignore')) # Create a Burst B-E packet (Embedded LC) elif _dtype_vseq in [1,2,3,4]: - dmrbits = dmrbits[0:116] + _target_status[_target['TS']]['TX_EMB_LC'][_dtype_vseq] + dmrbits[148:264] + #catch weird bug, so we can work out what's going on (N2CID) + try: + dmrbits = dmrbits[0:116] + _target_status[_target['TS']]['TX_EMB_LC'][_dtype_vseq] + dmrbits[148:264] + except Exception as e: + logger.warning('(N2CID) Caught error [non-fatal] %s',e) dmrpkt = dmrbits.tobytes() _tmp_data = b''.join([_tmp_data, dmrpkt, _data[53:55]]) diff --git a/bridge_master.py b/bridge_master.py index d7cd7b9..509a10e 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -263,7 +263,7 @@ def reset_static_tg(tg,ts,_tmout,system): BRIDGES[str(tg)] = bridgetemp except KeyError: - logger.exception('(ERROR) KeyError in reset_static_tg() - bridge gone away?') + logger.exception('(%s) KeyError in reset_static_tg() - bridge gone away? TG: %s',system,tg) return def reset_default_reflector(reflector,_tmout,system): @@ -388,6 +388,53 @@ def statTrimmer(): if CONFIG['REPORTS']['REPORT']: report_server.send_clients(b'bridge updated') +#Debug and fix bridge table issues. +def bridgeDebug(): + logger.info('(BRIDGEDEBUG) Running bridge debug') + statroll = 0 + for system in CONFIG['SYSTEMS']: + bridgeroll = 0 + dialroll = 0 + activeroll = 0 + for _bridge in BRIDGES: + for enabled_system in BRIDGES[_bridge]: + if enabled_system['SYSTEM'] == system: + bridgeroll += 1 + if enabled_system['ACTIVE']: + if _bridge and _bridge[0:1] == '#': + dialroll += 1 + activeroll += 1 + else: + activeroll += 1 + + if enabled_system['TO_TYPE'] == 'STAT': + statroll += 1 + if bridgeroll: + logger.debug('(BRIDGEDEBUG) system %s has %s bridges of which %s are in an ACTIVE state', system, bridgeroll, activeroll) + + if dialroll > 1 and CONFIG['SYSTEMS'][system]['MODE'] == 'MASTER': + logger.warning('(BRIDGEDEBUG) system %s has more than one active dial bridge (%s) - fixing',system, dialroll) + times = {} + for _bridge in BRIDGES: + for enabled_system in BRIDGES[_bridge]: + if enabled_system['ACTIVE'] and _bridge and _bridge[0:1] == '#': + times[enabled_system['TIMER']] = _bridge + ordered = sorted(times.keys()) + _setbridge = times[ordered.pop()] + if CONFIG['SYSTEMS'][system]['MODE'] == 'MASTER': + logger.warning('(BRIDGEDEBUG) setting %s dial bridge to %s as this bridge has the longest timer set to run',system, _setbridge) + + for _tstamp in ordered: + for _bridge in times.values(): + for _entry in BRIDGES[_bridge]: + + if CONFIG['SYSTEMS'][system]['MODE'] == 'MASTER': + if _entry['SYSTEM'] == system: + _entry['ACTIVE'] = False + + logger.info('(BRIDGEDEBUG) The server currently has %s STATic bridges',statroll) + + def kaReporting(): logger.debug('(ROUTER) KeepAlive reporting loop started') for system in systems: @@ -882,6 +929,12 @@ def options_config(): if isinstance(_options['DEFAULT_UA_TIMER'], str) and not _options['DEFAULT_UA_TIMER'].isdigit(): logger.debug('(OPTIONS) %s - DEFAULT_REFLECTOR is not an integer, ignoring',_system) continue + + #if the UA timer is set to 0 - actually set it to (close to) maximum size of a 32 + #bit signed int - which works out at around 68 years! + #For all practical purposes, this implements an unlimited timer - aka sticky static. + if int(_options['DEFAULT_UA_TIMER']) == 0: + _options['DEFAULT_UA_TIMER'] = 35791394 _tmout = int(_options['DEFAULT_UA_TIMER']) @@ -1481,6 +1534,7 @@ class routerOBP(OPENBRIDGE): #Rate drop if self.STATUS[_stream_id]['packets'] > 18 and (self.STATUS[_stream_id]['packets'] / self.STATUS[_stream_id]['START'] > 25): logger.warning("(%s) *PacketControl* RATE DROP! Stream ID:, %s TGID: %s",self._system,int_id(_stream_id),int_id(_dst_id)) + self.proxy_BadPeer() return #Duplicate handling# @@ -2536,7 +2590,7 @@ if __name__ == '__main__': if cli_args.LOG_LEVEL: CONFIG['LOGGER']['LOG_LEVEL'] = cli_args.LOG_LEVEL logger = log.config_logging(CONFIG['LOGGER']) - logger.info('\n\nCopyright (c) 2020, 2021, 2022 Simon G7RZU simon@gb7fr.org.uk') + logger.info('\n\nCopyright (c) 2020, 2021, 2022, 2023 Simon G7RZU simon@gb7fr.org.uk') logger.info('Copyright (c) 2013, 2014, 2015, 2016, 2018, 2019\n\tThe Regents of the K0USY Group. All rights reserved.\n') logger.debug('(GLOBAL) Logging system started, anything from here on gets logged') @@ -2757,6 +2811,13 @@ if __name__ == '__main__': ka_task = task.LoopingCall(kaReporting) ka = ka_task.start(60) ka.addErrback(loopingErrHandle) + + #Debug bridges + if CONFIG['GLOBAL']['DEBUG_BRIDGES']: + debug_bridges_task = task.LoopingCall(bridgeDebug) + debug_bridges = debug_bridges_task.start(66) + debug_bridges.addErrback(loopingErrHandle) + #Subscriber map trimmer sub_trimmer_task = task.LoopingCall(SubMapTrimmer) diff --git a/config.py b/config.py index 3eed4e2..8a17948 100755 --- a/config.py +++ b/config.py @@ -147,7 +147,8 @@ def build_config(_config_file): 'ANNOUNCEMENT_LANGUAGES': config.get(section, 'ANNOUNCEMENT_LANGUAGES', fallback=''), 'SERVER_ID': config.getint(section, 'SERVER_ID', fallback=0).to_bytes(4, 'big'), 'DATA_GATEWAY': config.getboolean(section, 'DATA_GATEWAY', fallback=False), - 'VALIDATE_SERVER_IDS': config.getboolean(section, 'VALIDATE_SERVER_IDS', fallback=True) + 'VALIDATE_SERVER_IDS': config.getboolean(section, 'VALIDATE_SERVER_IDS', fallback=True), + 'DEBUG_BRIDGES' : config.getboolean(section, 'DEBUG_BRIDGES', fallback=True) }) if not CONFIG['GLOBAL']['ANNOUNCEMENT_LANGUAGES']: @@ -158,7 +159,7 @@ def build_config(_config_file): 'REPORT': config.getboolean(section, 'REPORT', fallback=True), 'REPORT_INTERVAL': config.getint(section, 'REPORT_INTERVAL', fallback=60), 'REPORT_PORT': config.getint(section, 'REPORT_PORT', fallback=4321), - 'REPORT_CLIENTS': config.get(section, 'REPORT_CLIENTS',fallback='127.0.0.1').split(',') + 'REPORT_CLIENTS': config.get(section, 'REPORT_CLIENTS',fallback='*').split(',') }) elif section == 'LOGGER': diff --git a/docker-configs/Dockerfile-ci b/docker-configs/Dockerfile-ci index 6e7320b..a7389f3 100644 --- a/docker-configs/Dockerfile-ci +++ b/docker-configs/Dockerfile-ci @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ############################################################################### -FROM python:3.10-alpine +FROM python:3.11-alpine ENTRYPOINT [ "/entrypoint" ] diff --git a/docker-configs/Dockerfile-proxy b/docker-configs/Dockerfile-proxy index 898029a..bb5378b 100644 --- a/docker-configs/Dockerfile-proxy +++ b/docker-configs/Dockerfile-proxy @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ############################################################################### -FROM python:3.10-alpine +FROM python:3.11-alpine ENTRYPOINT [ "/entrypoint" ] diff --git a/docker-configs/freedmr.cfg b/docker-configs/freedmr.cfg new file mode 100644 index 0000000..50d2194 --- /dev/null +++ b/docker-configs/freedmr.cfg @@ -0,0 +1,104 @@ +#This empty config file will use defaults for everything apart from OBP and HBP config +#This is usually a sensible choice. + +#I have moved to a config like this to encourage servers to use the accepted defaults +#unless you really know what you are doing. + +[GLOBAL] +#If you join the FreeDMR network, you need to add your ServerID Here. +SERVER_ID: 0 + +[REPORTS] + +[LOGGER] + +[ALIASES] + +[ALLSTAR] + +#This is an example OpenBridgeProtocol (OBP) or FreeBridgeProtocol (FBP) configuration +#If you joing FreeDMR, you will be given a config like this to paste in +[OBP-TEST] +MODE: OPENBRIDGE +ENABLED: False +IP: +PORT: 62044 +#The ID which you expect to see sent from the other end of the link. +NETWORK_ID: 1 +PASSPHRASE: mypass +TARGET_IP: +TARGET_PORT: 62044 +USE_ACL: True +SUB_ACL: DENY:1 +TGID_ACL: PERMIT:ALL +#Should always be true if using docker. +RELAX_CHECKS: True +#True for FBP, False for OBP +ENHANCED_OBP: True +#PROTO_VER should be 5 for FreeDMR servers using FBP +#1 for other servers using OBP +PROTO_VER: 5 + +#This defines parameters for repeater/hotspot connections +#via HomeBrewProtocol (HBP) +#I don't recommend changing most of this unless you know what you are doing +[SYSTEM] +MODE: MASTER +ENABLED: True +REPEAT: True +MAX_PEERS: 1 +EXPORT_AMBE: False +IP: 127.0.0.1 +PORT: 54000 +PASSPHRASE: +GROUP_HANGTIME: 5 +USE_ACL: True +REG_ACL: DENY:1 +SUB_ACL: DENY:1 +TGID_TS1_ACL: PERMIT:ALL +TGID_TS2_ACL: PERMIT:ALL +DEFAULT_UA_TIMER: 10 +SINGLE_MODE: True +VOICE_IDENT: True +TS1_STATIC: +TS2_STATIC: +DEFAULT_REFLECTOR: 0 +ANNOUNCEMENT_LANGUAGE: en_GB +GENERATOR: 100 +ALLOW_UNREG_ID: False +PROXY_CONTROL: True +OVERRIDE_IDENT_TG: + +#Echo (Loro / Parrot) server +[ECHO] +MODE: PEER +ENABLED: True +LOOSE: False +EXPORT_AMBE: False +IP: 127.0.0.1 +PORT: 54916 +MASTER_IP: 127.0.0.1 +MASTER_PORT: 54915 +PASSPHRASE: passw0rd +CALLSIGN: ECHO +RADIO_ID: 1000001 +RX_FREQ: 449000000 +TX_FREQ: 444000000 +TX_POWER: 25 +COLORCODE: 1 +SLOTS: 1 +LATITUDE: 00.0000 +LONGITUDE: 000.0000 +HEIGHT: 0 +LOCATION: Earth +DESCRIPTION: ECHO +URL: www.freedmr.uk +SOFTWARE_ID: 20170620 +PACKAGE_ID: MMDVM_FreeDMR +GROUP_HANGTIME: 5 +OPTIONS: +USE_ACL: True +SUB_ACL: DENY:1 +TGID_TS1_ACL: PERMIT:ALL +TGID_TS2_ACL: PERMIT:ALL +ANNOUNCEMENT_LANGUAGE: en_GB diff --git a/hblink.py b/hblink.py index dea9462..b232438 100755 --- a/hblink.py +++ b/hblink.py @@ -66,6 +66,8 @@ from urllib.request import urlopen import shutil import csv +import math + logging.TRACE = 5 logging.addLevelName(logging.TRACE, 'TRACE') @@ -502,7 +504,7 @@ class OPENBRIDGE(DatagramProtocol): self._laststrid.append(_stream_id) return - if (_int_dst_id >= 80 and _int_dst_id <= 89) or (_int_dst_id >= 800 and _int_dst_id <= 899) and int(str(int.from_bytes(_source_server,'big'))[:3]) != int(str(int.from_bytes(self._CONFIG['GLOBAL']['SERVER_ID'],'big'))[:3]): + if ((_int_dst_id >= 80 and _int_dst_id <= 89) or (_int_dst_id >= 800 and _int_dst_id <= 899)) and int(str(int.from_bytes(_source_server,'big'))[:3]) != int(str(int.from_bytes(self._CONFIG['GLOBAL']['SERVER_ID'],'big'))[:3]): if _stream_id not in self._laststrid: logger.info('(%s) CALL DROPPED WITH STREAM ID %s FROM SUBSCRIBER %s BY GLOBAL TG FILTER (local to MCC)', self._system, int_id(_stream_id), _int_dst_id) self.send_bcsq(_dst_id,_stream_id) @@ -802,6 +804,10 @@ class HBSYSTEM(DatagramProtocol): _bltime = str(_bltime) _prpacket = b''.join([PRBL,peer_id,_bltime.encode('UTF-8')]) self.transport.write(_prpacket,sockaddr) + + def proxy_BadPeer(self): + for _pi in self._peers: + self.proxy_IPBlackList(_pi,self._peers[_pi]['SOCKADDR']) def validate_id(self,_peer_id): @@ -1343,7 +1349,7 @@ def mk_aliases(_config): # Make Dictionaries #Peer IDs try: - if exists(_config['ALIASES']['PATH'] + _config['ALIASES']['PEER_FILE'] + '.bak') and (getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['PEER_FILE'] + '.bak') > getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['PEER_FILE'])): + if exists(_config['ALIASES']['PATH'] + _config['ALIASES']['PEER_FILE'] + '.bak') and not math.isclose(getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['PEER_FILE'] + '.bak'),getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['PEER_FILE']), rel_tol=1000): raise Exception('backup peer_ids file is larger than new file') try: if blake2bsum(''.join([_config['ALIASES']['PATH'], _config['ALIASES']['PEER_FILE']])) != checksums['peer_ids']: @@ -1371,7 +1377,7 @@ def mk_aliases(_config): #Subscriber IDs try: - if exists(_config['ALIASES']['PATH'] + _config['ALIASES']['SUBSCRIBER_FILE'] + '.bak') and (getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['SUBSCRIBER_FILE'] + '.bak') > getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['SUBSCRIBER_FILE'])): + if exists(_config['ALIASES']['PATH'] + _config['ALIASES']['SUBSCRIBER_FILE'] + '.bak') and not math.isclose(getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['SUBSCRIBER_FILE'] + '.bak'), getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['SUBSCRIBER_FILE']),rel_tol=1000): raise Exception('backup subscriber_ids file is larger than new file') try: if blake2bsum(''.join([_config['ALIASES']['PATH'], _config['ALIASES']['SUBSCRIBER_FILE']])) != checksums['subscriber_ids']: @@ -1402,7 +1408,7 @@ def mk_aliases(_config): #Talkgroup IDs try: - if exists(_config['ALIASES']['PATH'] + _config['ALIASES']['TGID_FILE'] + '.bak') and (getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['TGID_FILE'] + '.bak') > getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['TGID_FILE'])): + if exists(_config['ALIASES']['PATH'] + _config['ALIASES']['TGID_FILE'] + '.bak') and not math.isclose(getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['TGID_FILE'] + '.bak'), getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['TGID_FILE']),rel_tol=1000): raise Exception('backup talkgroup_ids file is larger than new file') try: if blake2bsum(''.join([_config['ALIASES']['PATH'], _config['ALIASES']['TGID_FILE']])) != checksums['talkgroup_ids']: diff --git a/hotspot_proxy_v2.py b/hotspot_proxy_v2.py index 35bb2ee..bad2ba2 100644 --- a/hotspot_proxy_v2.py +++ b/hotspot_proxy_v2.py @@ -283,6 +283,7 @@ if __name__ == '__main__': BlackList = [1234567] #e.g. {10.0.0.1: 0, 10.0.0.2: 0} IPBlackList = {} + UsePrivilegedHelper = False #******************* @@ -313,6 +314,11 @@ if __name__ == '__main__': ClientInfo = bool(os.environ['FDPROXY_CLIENTINFO']) if 'FDPROXY_LISTENPORT' in os.environ: ListenPort = int(os.environ['FDPROXY_LISTENPORT']) + if 'USE_PRIV_HELPER' in os.environ: + UsePrivilegedHelper = os.environ['USE_PRIV_HELPER'] + + if UsePrivilegedHelper: + for port in range(DestportStart,DestPortEnd+1,1): CONNTRACK[port] = False diff --git a/i8n_voice_map.py b/i8n_voice_map.py index 894de65..cd215b9 100644 --- a/i8n_voice_map.py +++ b/i8n_voice_map.py @@ -121,47 +121,7 @@ voiceMap = { }, 'es_ES': { - '1': 'one', - '2': 'two', - '3': 'three', - '4': 'four', - '5': 'five', - '6': 'six', - '7': 'seven', - '8': 'eight', - '9': 'nine', - 'A': 'alfa', - 'B': 'bravo', - 'C': 'charlie', - 'D': 'delta', - 'E': 'echo', - 'F': 'foxtrot', - 'G': 'golf', - 'H': 'hotel', - 'I': 'india', - 'J': 'juliet', - 'K': 'kilo', - 'L': 'lima', - 'M': 'mike', - 'N': 'november', - 'O': 'oscar', - 'P': 'papa', - 'Q': 'quebec', - 'R': 'romeo', - 'S': 'sierra', - 'T': 'tango', - 'U': 'uniform', - 'V': 'victor', - 'W': 'whiskey', - 'X': 'x-ray', - 'Y': 'yankee', - 'Z': 'zulu', - 'to': 'silence', - 'notlinked': 'not-linked', - 'linkedto': 'linked-to', - 'allstar-link-mode': 'alfa' - }, - 'es_ES_2': { + '0': 'zero', '1': 'one', '2': 'two', '3': 'three',