From 053d56d01d567280172393bce63a6270323831d6 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Tue, 5 Sep 2023 09:40:01 +0200 Subject: [PATCH 01/22] Update hsqldb to 2.7.2 , ciyam at to 1.4.1 --- lib/org/ciyam/AT/1.4.1/AT-1.4.1.jar | Bin 0 -> 161850 bytes lib/org/ciyam/AT/1.4.1/AT-1.4.1.pom | 124 ++++++++++++++++++ lib/org/ciyam/AT/maven-metadata-local.xml | 5 +- pom.xml | 24 ++-- .../hsqldb/HSQLDBDatabaseUpdates.java | 20 +-- 5 files changed, 149 insertions(+), 24 deletions(-) create mode 100644 lib/org/ciyam/AT/1.4.1/AT-1.4.1.jar create mode 100644 lib/org/ciyam/AT/1.4.1/AT-1.4.1.pom diff --git a/lib/org/ciyam/AT/1.4.1/AT-1.4.1.jar b/lib/org/ciyam/AT/1.4.1/AT-1.4.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..05c548c8b59e0ca4254cb43fe5f809fe80a0c83e GIT binary patch literal 161850 zcma&O1yo#Zwk=8^I0SchcXxMphZOGak_0Q9;O_1a+}&M+yA}=!ZkP1meeUi5ywm5^ zpla*^U$H-S%_VcrwNaLX_=pY$1_J}8pN6glr?=j%32l1$r5U8Mm@})k_6>xe2vP zS$b8NVH$<0aW&?jY~ZC%v=iepGdHp$KM@(F6`-uy_x5-8!NHW@cL4Xk1F(PW;Qgfk z^?-dp`mY`Q-(`C58~v{}?*|{>pAOCzO#kzW_h0{y6(&|*0K5ON4)NdC0bKu|rGKu@ z`%nMtf%Ja#Uwg9yxSQGkhs8MmeewH-8UMbWzn=sDKfO&v{U0a%>$CfFNq!AopLKzQ zfq6oLff2vI^Uo#u>kRLIh?1k2gQ=M^z!_ji&c$eA3vh8sR5wsU6G0c4OS0Faou{S7 zkSLIr^WUNRjN%`@QlK11J9E!&TYMIGW?z?ydQV5$c@O_vA}nms;%mayWI!PU#j!mr zk;l2f-6W64-C=e0<_G%E0zqHMpID;QVZMxiWG)9Nis_ymaIC>@GoD*DS8sm^{JLC& z(2}=JB1UYpcnqY$2RcsH2E}uD<&)qd$b~%m|CX@B%eP_O2V%WKIT2sta4> zv5s}x$QxVwY_5d3Q};dvDlOwc{Q^=nrZpIBx9_!4>g0Lp9Ugr0KxhzRc{E+f3CceV zWHK#L?a%=A3nlbSYhkKZvsPs2_p_eiE23Xp^tlqMxGYTSnTC;6kyD2%dUbi0>HPC22 zTf)dAw&7wZjjO}QP_9ppX3W9~Ka|E(ae<3KU#W4OvscbjASrhblU+kad9TQ2oZ@yNLv&Ut^WPybNV4N{YzpJZa7|NQvL#8c zIkcKZQvuvFBxkS!Wu=I6=lEkM3MDDh9uU)qx{aB*$sJw8O%~~SQfQTvVlO1~yTMYh z@Us!_W0y1VAB)uT>x{YuXI28KqrO~&ZET}P^_h|p=?}(4pb(E?h?1Hyi(0^ecqRmLP97f?K^#=L6tKfi~w}$ocixTfCKirY$17*bhWlk7>&4ru4_Z{KPi# z9FC!%vvVcDDfej!NtQA%#Pm9~>5LF|oA@)z(k)%29mRFGdkb%5Lx z!2{MDG;Kf7F8)x-=r9 zmo6-swpnzhKA3m%)NOvv@`JdYIeA?3#E?9yRN2XJ`?0#sJV+J>kMPQPw zdkt;JS1kt1;#Hy$bvG_!s2tYzw%gX^W*gBE*#)t+PlBQ>{I(S|@olLMc1V z@sf7uDD2>LoMaIe8-th@35-zAWiJ#A6Rdi%xYb>)AH2kB}6Q5Vo9XT zSi*K+SzkBO)-$w2`0n~hm<7V_NABB`2(=>O2_cO~vJV3eZaM~9N(;Ap0|sj3$5K2p z`qIWO^B>BskmnCOCePw1o=pWRGIbTAy!PiB{%l=WXt3O8ks*%BDlmtoWu9E^-9H&ih@BP=X{H z??VJI{mAw+tSicsk86GiE5-@t@@TQrR0c}WG82r!r8OK}CMn_LQh#N(%Sm&vp+>r* zU$er@i|Z#e)|lz}EOzg&qT1SCl0y&0o2`O~DNpJY;W&fR-S~slnY_|h+Q>rDVPG0) zDF`tz3m<7fFeyLca%gq<2f*S)gj~ty&(O~S$5{U!2Vqc?Kk?qNg>;Fk^%@ADJg$q$LWeHY!?E$8$MMv9Yj`;RJ$thg!ZT$W zoMp{|I#ruR1#_7H%2!DUBZZE`Xw(GsyKvJ@m-qLxeZ!0;epNkWq^@JZ$7_Wtt*5J; z{9cGLPIK*MQtr^J&h)eZ6KV}^XLYZxkz_2X#}Aw!gQ1&^VSloQI<%*%Tk!1E z)9SMC40e?bYJ+M-AH3Dc88%1(H)vXjJeaB4 z6kQnox#jNsg3YBfk8qn%GxL5;MB=V^KC*WKWd0+57$AdL2LP%Lnhhplj&Tn_+hR#r zBFA&aY0mA9i=l=+iBA9^n^pa4aaZE(uO4zV;KIp?(}+!IUri?VMk++(ZRHZl*tf;2FDbbFL%AEB64fTHV(wI9oLHeTN@r&a z7NTrBqa*1h0KM;HU{B1efOXOe@dgRQ1{swgF_WONq%SUxUH11zC&WcBj@kpqK22DP`3(my`xQ!D_J4zeCHFyk14{9a`t_(8BvWwEpTZ z$l3qOuzqTrN-N6P0$6YuN6!N(CZlUeO;>$7W^%XP#*sh?1X@@;!FyMlMO6p}D<(;! zdzkjyyy z)89l+(8L#L*8239D8jtxBY#K~ClZnYMXed|Cu++!3Bqt?L;XKfrhma}MLA>8QZ8sS<=^bQMb2XRt{}qH^|tz#q*G|bDu*KOs-PuJFZgNhfHpVLc{6PtXp^quHQB{@%%jP=4qTm z1c9(?L6YRMbspi$sE;}k*>ylUqx@!<$VLa0;Emu}T(9;<5Slbf;}x-6D_^5oA(fsd zWlO&JnT^`?o&W0Vr0&Q;OX=8#nfPcD?zG{|DmZe+k=r?{Lf4C@KRWLnoReneGz>LW0#Y`CEsCosS zDP1-TkDEMlkx=eUq?Q)4V(7^#kNs}KsxX&*Py^!cElP>I*(OP8BYmyIf{iD#UiN() zLchE1rYa@TgRGi3pa??nI4%%W9*q7y=qeu@UWLQ|3OP(!Ato*<21m}REUw4oHwntE z7+$VDl_NA-*FTu?|7~$^V)@8#-vi+fza#y7{{6So&cgi9G_1a=h%SOGfY|q`f{gyC zY*4j*C9T?LVFnzuFjj!vi1wr}I{pE-JP7$kI_Rhi4r>7VPEPS+aBFtcOW zYK;fmR0nr;8}XT1(RgBdV754vzxb=foAG^SmS4p9@^f2+*m70p@_C`&%;BnmJsAX= zZYVfwfot(`B<@pg>dB0WW{W53ob>BVx)IevjbSo9YU|nY|C&nj;~bJz5A)~hT2YOt z%)wA;JX6X}oJE;I-5RYLg~UkVFuI2S;ApHRu#qi?dPbPwnW+peF>U{shg3vCe*^*| zMKAMu+)@FlOL~&F)~hfy3o?^;u0xoW9>V9P*DsUdL z4(91dOoAzdNE6Ya0)P4L{6!{FcDKMjkiLbtzYQhsL(2AKf1nZtnJ2SI2loF2e z0ZPMEl+g;~n84FUZA#gs$J4DjaWTx|^;G47bacHI(wdAOc1(VjMF`g1W`jpr@KpCW zzi*T^S#1=+?(&8XYhmIE5|lDc?S7!G{A%2M7`tuSKim+8014m-bZ@6Phfks2Ne z>mhDPjaQAN8eR?NsTv5PD2~SphVC5gK`9g5J?^g`_3~>8G^b%R_k1#jphvICX79xz zUU1~@1Dck?Xz@z-?y6a#7aax4)_M@v$jJ-cb}=);Ta^D-#eD2|21kj|5-%*)Zgi$2>Rm=y38!5+w?$&J?2{IeC}emLk0cmi-S%NvbURbH@8KecaAta|Y2oQsr}cBM zm8uLEExlRsPE|XCpJm@>cSG_GAV83pnP7-K$exLlOS=u%cdmm{Zgm_IrC4CM)~$fH z%Sq`tCf+k>C!dy5>jXW=slQgJ^2X(Wcc)y>5~zcB$6~SLf1BN;(hDxOsfhNR+}LtU zrqK8}J$zs6t=nI#jON1rL`b!|rah}FH1~Fl9i0eihg~QzwJ+P;SkhLD?1b}+yq1p2 z@+^a(D522Y^?Ci#n0gGsyf);Hh|QJHqi(?5<@KxCPpsm~&a(9Mw2foi2PYcjyyFvT zV0@v$d3ZmYQPq*)#LVZDb!ncejWK&`*#M)2QKX_^qpE2n(p~nVeOZc8QqpULT=)iR zRMmAjQHL9@tR3a1TYD$KQ6clHs@u>i>iIyy({OY|OZ(*LPlh1rW7xs86#5{u?^?1s}ys^wl zDq|L}c({@3bIx85~4#!0K@t|A-4hEjWY@(r{YU1KnVoAp>z2Q_E>b3GKYho;7%_G6U!`gWQ7P}(j1nz6?_ zsh5!8&BDVbMy}h^@Y7p!oZrq$`&mbeqv1E&FlHzmm4@LwL5F&q0kc<+B@O>HEjh4c zp6F6Y4ZGQk5vhyarvb5xSp^8l{nZ7>Aa9(IYcUj@A!pzezG%(*I%~%5nkko6F(&7& zk@{ORp3ZQA0V;gT4PLFeC&qHkzRWlf0(efaQCicMaGu?+GL#t6AQDzE%TDVPA#S>p zi;lLips~%?Z*%5Ez*KiuwBye1$c9Zp@+(U(@3zR<>NwWW{U?D8Gh$X~8b-cqCA4di zGaCpvGB^cb641Ee*p9VEI!cV;KqNRWO)Gwic6GC^?luha;I*_X;_H?=E#?RdZ4KuB z6huw=DX;FFFQ{+&5?g9oA{OojYnkQI==?iEr_>xKsmY73pNGha4=h8KoyaCqAI=P# z_vx}rKicTtu`T=$sy!<&h+m3NSz0w4G!CL)Wl6|@D;^Y)4E6LhWw9~GPU2QC;--RV z158IfT9G?=_B(uV_x?WjIHM`RT+5flACdV-pUfEJ`%T0*`|U*4W_MD0U{|byk_wHO zFv`Fpg6>d9Wx~U9L0k&dbH>~fMUuiax^nUjsXu>fy71ls*C96DT>U*>~&dSebv{^TE*8cLf!*U)b zR|=E|QD7$?z3pl?8+n-_u?q&EW4s!kF5%;*3cLkJ{&T z0B%5(y!U?w&r{|8fBHYI8wu4N3Scy=Q;NM#g<9-`o1A*0z_bWjXma~>Q-5S-+LFQ7 zyYMswl>>vZEAX`U{tu&id|HqS{2|mEkb@`X%FoQ~FGHXP<($G9GlZaWHo4$hsEyL; zAL1!aw#oGsf)b9G5RcmUXE#0^R2KCWIwY_&kg_GY@dq>nV&lr?aPwT)i~ZsOYJ_Hx zDEYB_!_iC;t1Bnzymg4-D&JfhZeBZD(h9Z&hYsTtX-*}+JOOimK&gAaT9oZ^1G?Jw zb?qfiT*Fq?nVCCaG{-EA)dc;}5{)m=5YddGE-OI?dnI`<4b?<8Qc1t?f;YF*s(xCG z4C=?66(Nf^7@5GD2X86G>X&bR5$(~jk+E2ppJd{!EJu-soLF~QrUTV1qv{Q3t$zw; zNaBHBu!%omY$IhZZ1&51NBAl=MyY$FV7YqC($BfEF)i7dFHqVsqn+0w>g|gbf_e8@ z67AFxtwIgZhVfgB>VYui%D?tG6hUxC^y?sL=N3h$WMb6f^=j#O5AmdUA|H2zOMgNA zuV&$e+Z`N6$pu4Fb+T&okz8s++&+||M}AZi*o+*HjP_RaEAbtofA9ZbcO|W^-`SG! z2QVB~U4wms8%X~x%{~S%|JS+S|xq{mB zs@`CzmSUNq4X>x`poeJdJ1Q4Q1SPYtef#QQVrb}amG2w;9{4JF+s9nnx>*jiNyVa{ z3~+@;W@^LAFq#PP`_P2bYKg8wb%oef5mi%jeboiH5c$AU8k(@az-R*CYCP3nTUQbYY6O>gQP7 z(v?9pfr(c=IITm2n_Izk($JoI7}m8A_ZESgtSP7C9-+J1;?G#JT`)< zhkBy(Z`o#q?UPHyd$!?wH&_2BKZT9+pJiP2uQFb@?mpJ)D+c+&3ZtP=`T>=lBS=^{ zDdGD^H8d~WMzJ<+_w;odf301l%O0w?;IN*4=-s+Encd974>GiEBj;-_7nv^SsSh`Y zPe@>Lo&eG?ScvcPmY!?=RKsb*fY}0#jqU{hVuY~ds>4w;V2dp%CHq=5(`TW#6G6XP zxBe_Jjz}Fo+GkP;P9M`9&*qE7>D9MvbQd!ygJ6VpibXWOiFh%T_Ja^N(MQ?Nz7sRT zW?Fmy)`}LAKr^2#n4ib|2#~>IXVjDjSP=+UYK9J~WOXu@Vn0-0h8fbZy$4bq(^T7? z%$NG(SmQSdnS8Z<)gTc1QKryu6V!z z?nT4w7ZJ(A6EIsH+jy_W=h1@0LylvoG%$yFLBL~X0cP^_t};j#HXPIP6#@XyP_2Xy za<$dJ$deqexg38&2fQrpiY&ek$NBcb`KXC9xv`yHS=MCd= z335lyTlV7qH_k}=7ylsA2nkaf3bECI(nRK*v(MtI61uAq!&szYsdU!}=f=`u`3ubF zD5WyP(&U!kc)eL46&ZGaD@dW4UlR8w&>@kLhn-szvTFRO`2Bb8 zSHIAIVD=7T=XVhQXT^l`UnNt`>fIVd7x>NyVHN}^4Yy@1F^CC(r{;iCUDZ~dE>I9c z?&1eZ@vU@PnQsuk(hD^QiGTSfH0rsTARHl_KDp*GWw60>cRRJYiw0&hO!aw71RUNo zrJIajkvRA_GV3s|Hv44|$?HmNw09qKVwvww2>;?vZEQL1RBV)Qi~fefB2FHphY@q6 zCO(aOz-`v0wQsdV)>XL8FU?G!Xu)jW{4&rzg1L_DHpU+(kl>KEYH@gZQfp(?k*ZQLX?)oP^oXpbbSfGVAUpA)Cw-D5yJW&L_qCa zUCiiknM9X$5z^SQPEM&YkT|TxA@VDSDh=?Mrs}Fcbpq1EveV=R?=XynpLPxlq zm+#lB2h#kLDGdRcfCJujt8=YhgkOHzTGrrG-1_6^iQhEKN#+lr(+*5&*O@T9 zWJpf(zLPJ|*a_Um9X8q!CJQ26s3oP>i<-4W;i$wBqBnQt(D$EBcPR5x)u^m z8cB4vee7Fr;9KWCF}@yT-T8euoBiQ&mRfkXKrQOo$vZvubljFTE%N2#6Q(5M9Gjv_ zD1IL~UtmdeA7UiXOhngLOHF&?YvzKX;&*Z1Q zqD4zJuYYr{DV)7wz21w{+dEKc|6ZVE?A-yjR;D7Rrp{(AE)t$5W{!Uhyub2pRP2Oo zpD=pxRDJ18N#*U-V+b5+14ff{h=&79^J7HzbOUbf}q? z0N4y43+G7>wvm5SDm7cYls;U!D6>p6v7w@92LBcpjFM)Gm`b7zc+2G6T{v`ljApKv z^FX}y5$J69a7|0OH$%zrMNko@hq}^MHyqhi{X)cP8Y^dYp#Segmu>FY)su#h#wYZ0 zW^S~S`AR9Cm?9>KsrD!`3{MMwjf*%H?~xQCDF2nIB?BtBY%kxq@#Wghe0{Sru^bk& z9r+X|yj!x>4praAN}M6?gWssG<8^yFnmVK4Pj3$h;Cx-SXSp_a4?Rr~KEpFiJ92?r zG6nGUyt%X`2e@RRTGp)0(uid_-z0xZ948G@mW`?7#3+4WaHialbO{xze`me_Im@vAOP5vsOJOQncem2X&C!SjH&pf!Y0Mey#}!kR zqo!$3UzovfH zwrx?xmkO+cQS@9SGi}-DTRXYzUbthiEa}8!)mEU9P`>lThHI^Add{)nJBJpmX{o&< z15qy~r+K+F>6%Dqx-jJ(R*b|DTz^A4{z8s{0x2rtkHBa0LL+8>6jHW8>_{qc z`D^EmpnWHNu}DK|4WveCH;`D;;1=*R9o7c8AXh>?tt|9BWF4Luj&XSxFQd9;CtKmP z9hy5RiiXkJ^g`{}-&qdd#BSA9*(Sn{2=e?Qz0QqVcJXe&5JV^wD8FLLkEbrxUc#(W z+QMs`rYtpFVk=?8B`>5u3aCxguoU7YrX+NkWZ!tJcet(%6CBU>i#PbDQ2~Rkf=G5} zSk7&0wRxY@y=%)5!Wd_2`#NY<+2fiTAe|Mhm&UOtUp!*W5=#HHvvg*!>r}i zk{5J)PZ59A|Nqv*s<{G8Y(yR0>`nikAA)1$lzRW<2jN^@^n~OsGTAj^Y@KFDe?aa` ze^9f3Gm#ub{&bok`qv~nRIFF9_qnc(S!9V&JLmIE5YOgWeYVjB5!hsn1#uWd5~^IP znch%zw1NL#OKsvNYN*!t^N;m%#TKxpE2E9}fioTZ?)xt>?zMJ934MGZT0^PyG$G}z zZosP36QWwjsEXKQR5a7X5Ij|l&&I-1eU|V3l7hcz!wYe?nF;lopqIYcT{^!ikxmxX z({|*0c9@;g_SoWO;^&j6l*jQ*prdz%na7mZhhyVa+)De|uoIYwmAM_1Z!`U)H_m+7 zbOc`g^#u(4sf%CBWDMcHXWSnS^|!_SEU_m7h_+I(6s|06<>O9N8a9GzAT4!HEQiGU z%DlK+CN0D)N{+J<$nSZ9|39c zqyM2hV+)8i8E9j+e@0R7Zrjh3P*+y&CzVxDK|>I{XJ7wxX1#3ZUMy)8CDeoU75G;V zJ=K|N8L9FX>}^g$DpRP?w3+e1c<8%%>U)24OYn_m&3S95K8o$rN=y^Wd3Uc4bY{v? zH*AKBBOz8KhgAg)9+sUx>ahMTgwYh7{GKe*zDa8JSWcSJ&sZXLi|_&HLgumqfwxlq zF}cjHxfCS2=oa;Z+}Sg$9%(du0%zC*4V zBbQiqGVW?SEiab!Uxh`mfrEx>H%xP=<1G8s3*UMOxM5FKloA%_k2|YvJh;dv4;rQD zWvV56$8@bZer*vgdyFC_7NePgmQHI|KIN*D=hMRfu9qhLJSIz_%5ulHeQaI99*j=i zg+J0=zHVX(zK(iiEO;>!XGRopfG`Ns7C@f)1q z2g3xfCLGLIj+7c>pl^V>N&0tH25#{wOd;u(f_%kZaOoKKP-2J2e%PTe%7|_5jOKQW6RAx1IyB zA%$Su!}v7x4%+RsU}VBoui>d&E%$Jq2iod)K|_eCnePyh>^efu>yvMwAM^b_^_65C zeC9K?KV!4%B_-?FS>r)7i#5L6Rz!^VT|Ae%fERuo`4dx02Y{Zdci&vqZkY$ zFUu|xs!lSdFPHWYsWp1+f+??K_PEea!!^Ym-3WH3Jkhy9PDzV%0DO`@kw<)rB+2Ml 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

bXX6 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

$rbbE!fST0(P@kqlpTk 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 + 4.0.0 + org.ciyam + AT + 1.4.1 + jar + + + UTF-8 + false + + 3.8.1 + 3.2.0 + 3.3.1 + 3.0.0-M4 + 3.2.0 + + 1.64 + + + + src/main/java + src/test/java + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 11 + 11 + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + ${skipTests} + + + + org.apache.maven.plugins + maven-source-plugin + ${maven-source-plugin.version} + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + + attach-javadoc + + jar + + + + + + org.apache.maven.plugins + maven-jar-plugin + ${maven-jar-plugin.version} + + + + test-jar + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + org.apache.maven.plugins + maven-source-plugin + ${maven-source-plugin.version} + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven-jar-plugin.version} + + + org.bouncycastle + bcprov-jdk15on + ${bouncycastle.version} + test + + + junit + junit + 4.13 + test + + + diff --git a/lib/org/ciyam/AT/maven-metadata-local.xml b/lib/org/ciyam/AT/maven-metadata-local.xml index 063c735d..d8f3dd34 100644 --- a/lib/org/ciyam/AT/maven-metadata-local.xml +++ b/lib/org/ciyam/AT/maven-metadata-local.xml @@ -3,7 +3,7 @@ org.ciyam AT - 1.4.0 + 1.4.1 1.3.4 1.3.5 @@ -11,7 +11,8 @@ 1.3.7 1.3.8 1.4.0 + 1.4.1 - 20221105114346 + 20230821074325 diff --git a/pom.xml b/pom.xml index fbcd40a5..0d286d8d 100644 --- a/pom.xml +++ b/pom.xml @@ -11,18 +11,18 @@ 0.15.10 1.69 ${maven.build.timestamp} - 1.4.0 - 3.6 - 1.8 - 2.6 - 1.21 - 3.12.0 + 1.4.1 + 3.9.0 + 1.10.0 + 2.13.0 + 1.23.0 + 3.13.0 1.9 1.2.2 - 28.1-jre - 2.5.1 + 32.1.2-jre + 2.7.2 1.2.1 - 70.1 + 73.2 1.1 2.29.1 9.4.29.v20200521 @@ -33,9 +33,9 @@ 3.23.8 1.1.0 1.13.1 - 4.10 - 1.45.1 - 3.19.4 + 4.12 + 1.57.2 + 3.24.2 1.17 diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBDatabaseUpdates.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBDatabaseUpdates.java index cd2b30fa..c2e9cd62 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBDatabaseUpdates.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBDatabaseUpdates.java @@ -454,40 +454,40 @@ public class HSQLDBDatabaseUpdates { case 12: // Groups - stmt.execute("CREATE TABLE Groups (group_id GroupID, owner QortalAddress NOT NULL, group_name GroupName NOT NULL, " + stmt.execute("CREATE TABLE `Groups` (group_id GroupID, owner QortalAddress NOT NULL, group_name GroupName NOT NULL, " + "created_when EpochMillis NOT NULL, updated_when EpochMillis, is_open BOOLEAN NOT NULL, " + "approval_threshold TINYINT NOT NULL, min_block_delay INTEGER NOT NULL, max_block_delay INTEGER NOT NULL, " + "reference Signature, creation_group_id GroupID, reduced_group_name GroupName NOT NULL, " + "description GenericDescription NOT NULL, PRIMARY KEY (group_id))"); // For finding groups by name - stmt.execute("CREATE INDEX GroupNameIndex on Groups (group_name)"); + stmt.execute("CREATE INDEX GroupNameIndex on `Groups` (group_name)"); // For finding groups by reduced name - stmt.execute("CREATE INDEX GroupReducedNameIndex on Groups (reduced_group_name)"); + stmt.execute("CREATE INDEX GroupReducedNameIndex on `Groups` (reduced_group_name)"); // For finding groups by owner - stmt.execute("CREATE INDEX GroupOwnerIndex ON Groups (owner)"); + stmt.execute("CREATE INDEX GroupOwnerIndex ON `Groups` (owner)"); // We need a corresponding trigger to make sure new group_id values are assigned sequentially starting from 1 - stmt.execute("CREATE TRIGGER Group_ID_Trigger BEFORE INSERT ON Groups " + stmt.execute("CREATE TRIGGER Group_ID_Trigger BEFORE INSERT ON `Groups` " + "REFERENCING NEW ROW AS new_row FOR EACH ROW WHEN (new_row.group_id IS NULL) " - + "SET new_row.group_id = (SELECT IFNULL(MAX(group_id) + 1, 1) FROM Groups)"); + + "SET new_row.group_id = (SELECT IFNULL(MAX(group_id) + 1, 1) FROM `Groups`)"); // Admins stmt.execute("CREATE TABLE GroupAdmins (group_id GroupID, admin QortalAddress, reference Signature NOT NULL, " - + "PRIMARY KEY (group_id, admin), FOREIGN KEY (group_id) REFERENCES Groups (group_id) ON DELETE CASCADE)"); + + "PRIMARY KEY (group_id, admin), FOREIGN KEY (group_id) REFERENCES `Groups` (group_id) ON DELETE CASCADE)"); // For finding groups by admin address stmt.execute("CREATE INDEX GroupAdminIndex ON GroupAdmins (admin)"); // Members stmt.execute("CREATE TABLE GroupMembers (group_id GroupID, address QortalAddress, " + "joined_when EpochMillis NOT NULL, reference Signature NOT NULL, " - + "PRIMARY KEY (group_id, address), FOREIGN KEY (group_id) REFERENCES Groups (group_id) ON DELETE CASCADE)"); + + "PRIMARY KEY (group_id, address), FOREIGN KEY (group_id) REFERENCES `Groups` (group_id) ON DELETE CASCADE)"); // For finding groups by member address stmt.execute("CREATE INDEX GroupMemberIndex ON GroupMembers (address)"); // Invites stmt.execute("CREATE TABLE GroupInvites (group_id GroupID, inviter QortalAddress, invitee QortalAddress, " + "expires_when EpochMillis, reference Signature, " - + "PRIMARY KEY (group_id, invitee), FOREIGN KEY (group_id) REFERENCES Groups (group_id) ON DELETE CASCADE)"); + + "PRIMARY KEY (group_id, invitee), FOREIGN KEY (group_id) REFERENCES `Groups` (group_id) ON DELETE CASCADE)"); // For finding invites sent by inviter stmt.execute("CREATE INDEX GroupInviteInviterIndex ON GroupInvites (inviter)"); // For finding invites by group @@ -503,7 +503,7 @@ public class HSQLDBDatabaseUpdates { // NULL expires_when means does not expire! stmt.execute("CREATE TABLE GroupBans (group_id GroupID, offender QortalAddress, admin QortalAddress NOT NULL, " + "banned_when EpochMillis NOT NULL, reason GenericDescription NOT NULL, expires_when EpochMillis, reference Signature NOT NULL, " - + "PRIMARY KEY (group_id, offender), FOREIGN KEY (group_id) REFERENCES Groups (group_id) ON DELETE CASCADE)"); + + "PRIMARY KEY (group_id, offender), FOREIGN KEY (group_id) REFERENCES `Groups` (group_id) ON DELETE CASCADE)"); // For expiry maintenance stmt.execute("CREATE INDEX GroupBanExpiryIndex ON GroupBans (expires_when)"); break; From b92c7cc86651faaec21f020e712383facc05870f Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Tue, 5 Sep 2023 11:35:53 +0200 Subject: [PATCH 02/22] Update dependencies and ntp servers --- pom.xml | 18 ++--- .../java/org/qortal/settings/Settings.java | 73 +++++++++++-------- 2 files changed, 50 insertions(+), 41 deletions(-) diff --git a/pom.xml b/pom.xml index 0d286d8d..32e9343e 100644 --- a/pom.xml +++ b/pom.xml @@ -51,14 +51,14 @@ org.codehaus.mojo versions-maven-plugin - 2.5 + 2.16.0 false maven-compiler-plugin - 3.8.0 + 3.11.0 11 @@ -232,7 +232,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.0.0 + 3.4.0 generate-sources @@ -250,7 +250,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.2.0 + 3.3.0 @@ -268,7 +268,7 @@ org.apache.maven.plugins maven-shade-plugin - 2.4.3 + 3.5.0 false @@ -318,7 +318,7 @@ io.github.zlika reproducible-build-maven-plugin - 0.11 + 0.16 package @@ -335,7 +335,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.22.2 + 3.1.2 ${skipTests} @@ -360,7 +360,7 @@ maven-dependency-plugin - [2.8,) + [3.6.0,) unpack @@ -413,7 +413,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.0.0 + 3.4.0 provided diff --git a/src/main/java/org/qortal/settings/Settings.java b/src/main/java/org/qortal/settings/Settings.java index bdff9506..f9f4eb0b 100644 --- a/src/main/java/org/qortal/settings/Settings.java +++ b/src/main/java/org/qortal/settings/Settings.java @@ -47,8 +47,8 @@ public class Settings { private static final int MAINNET_GATEWAY_PORT = 80; private static final int TESTNET_GATEWAY_PORT = 8080; - private static final int MAINNET_DEV_PROXY_PORT = 12393; - private static final int TESTNET_DEV_PROXY_PORT = 62393; + private static final int MAINNET_DEV_PROXY_PORT = 12393; + private static final int TESTNET_DEV_PROXY_PORT = 62393; private static final Logger LOGGER = LogManager.getLogger(Settings.class); private static final String SETTINGS_FILENAME = "settings.json"; @@ -110,10 +110,9 @@ public class Settings { private boolean gatewayLoggingEnabled = false; private boolean gatewayLoopbackEnabled = false; - // Developer Proxy + // Developer Proxy private Integer devProxyPort; - private boolean devProxyLoggingEnabled = false; - + private boolean devProxyLoggingEnabled = false; // Specific to this node private boolean wipeUnconfirmedOnStart = false; @@ -186,7 +185,6 @@ public class Settings { * This has a significant effect on execution time. */ private int blockPruneBatchSize = 10000; // blocks - /** Whether we should archive old data to reduce the database size */ private boolean archiveEnabled = true; /** How often to attempt archiving (ms). */ @@ -194,15 +192,12 @@ public class Settings { /** Serialization version to use when building an archive */ private int defaultArchiveVersion = 2; - /** Whether to automatically bootstrap instead of syncing from genesis */ private boolean bootstrap = true; - /** Registered names integrity check */ private boolean namesIntegrityCheckEnabled = false; - // Peer-to-peer related private boolean isTestNet = false; /** Single node testnet mode */ @@ -289,10 +284,10 @@ public class Settings { // Bootstrap sources private String[] bootstrapHosts = new String[] { - "http://bootstrap.qortal.org", - "http://bootstrap2.qortal.org", - "http://bootstrap3.qortal.org", - "http://bootstrap.qortal.online" + "http://bootstrap.qortal.org", + "http://bootstrap2.qortal.org", + "http://bootstrap3.qortal.org", + "http://bootstrap.qortal.online" }; // Auto-update sources @@ -311,17 +306,35 @@ public class Settings { "1.pool.ntp.org", "2.pool.ntp.org", "3.pool.ntp.org", - "cn.pool.ntp.org", - "0.cn.pool.ntp.org", - "1.cn.pool.ntp.org", - "2.cn.pool.ntp.org", - "3.cn.pool.ntp.org" + "asia.pool.ntp.org", + "0.asia.pool.ntp.org", + "1.asia.pool.ntp.org", + "2.asia.pool.ntp.org", + "3.asia.pool.ntp.org", + "europe.pool.ntp.org", + "0.europe.pool.ntp.org", + "1.europe.pool.ntp.org", + "2.europe.pool.ntp.org", + "3.europe.pool.ntp.org", + "north-america.pool.ntp.org", + "0.north-america.pool.ntp.org", + "1.north-america.pool.ntp.org", + "2.north-america.pool.ntp.org", + "3.north-america.pool.ntp.org", + "oceania.pool.ntp.org", + "0.oceania.pool.ntp.org", + "1.oceania.pool.ntp.org", + "2.oceania.pool.ntp.org", + "3.oceania.pool.ntp.org", + "south-america.pool.ntp.org", + "0.south-america.pool.ntp.org", + "1.south-america.pool.ntp.org", + "2.south-america.pool.ntp.org", + "3.south-america.pool.ntp.org" }; /** Additional offset added to values returned by NTP.getTime() */ private Long testNtpOffset = null; - - /* Foreign chains */ /** The number of consecutive empty addresses required before treating a wallet's transaction set as complete */ @@ -330,8 +343,6 @@ public class Settings { /** How many wallet keys to generate when using bitcoinj as the blockchain interface (e.g. when sending coins) */ private int bitcoinjLookaheadSize = 50; - - // Data storage (QDN) /** Data storage enabled/disabled*/ @@ -396,7 +407,6 @@ public class Settings { } } - // Constructors private Settings() { @@ -660,17 +670,16 @@ public class Settings { } - public int getDevProxyPort() { - if (this.devProxyPort != null) - return this.devProxyPort; + public int getDevProxyPort() { + if (this.devProxyPort != null) + return this.devProxyPort; - return this.isTestNet ? TESTNET_DEV_PROXY_PORT : MAINNET_DEV_PROXY_PORT; - } - - public boolean isDevProxyLoggingEnabled() { - return this.devProxyLoggingEnabled; - } + return this.isTestNet ? TESTNET_DEV_PROXY_PORT : MAINNET_DEV_PROXY_PORT; + } + public boolean isDevProxyLoggingEnabled() { + return this.devProxyLoggingEnabled; + } public boolean getWipeUnconfirmedOnStart() { return this.wipeUnconfirmedOnStart; From 43921e6ab869d7d04cb69efa0a6a3d051b2bb870 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Tue, 5 Sep 2023 13:44:54 +0200 Subject: [PATCH 03/22] Update jetty server --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 32e9343e..0cbb83cf 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ 73.2 1.1 2.29.1 - 9.4.29.v20200521 + 9.4.52.v20230823 2.17.1 UTF-8 1.7.12 From 6be3897fdb5444847db2750c8d2f2685007da4a9 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Tue, 5 Sep 2023 15:06:46 +0200 Subject: [PATCH 04/22] Update logging --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 0cbb83cf..5205c1b3 100644 --- a/pom.xml +++ b/pom.xml @@ -26,9 +26,9 @@ 1.1 2.29.1 9.4.52.v20230823 - 2.17.1 + 2.20.0 UTF-8 - 1.7.12 + 2.0.9 2.0.9 3.23.8 1.1.0 From 12dbff79c9fff49aba5e4dd0717b79fc7546eda2 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Tue, 5 Sep 2023 15:20:21 +0200 Subject: [PATCH 05/22] Update logging properties --- log4j2.properties | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/log4j2.properties b/log4j2.properties index 44e1b1e3..54f295c1 100644 --- a/log4j2.properties +++ b/log4j2.properties @@ -1,7 +1,7 @@ rootLogger.level = info # On Windows, uncomment next line to set dirname: # property.dirname = ${sys:user.home}\\AppData\\Local\\qortal\\ -property.filename = ${sys:log4j2.filenameTemplate:-log.txt} +# property.filename = ${sys:log4j2.filenameTemplate:-log.txt} rootLogger.appenderRef.console.ref = stdout rootLogger.appenderRef.rolling.ref = FILE @@ -59,11 +59,14 @@ appender.console.filter.threshold.level = error appender.rolling.type = RollingFile appender.rolling.name = FILE +appender.rolling.fileName = qortal.log +appender.rolling.filePattern = qortal.%d{dd-MMM}.log.gz appender.rolling.layout.type = PatternLayout appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n -appender.rolling.filePattern = ./${filename}.%i appender.rolling.policy.type = SizeBasedTriggeringPolicy -appender.rolling.policy.size = 4MB +appender.rolling.policy.size = 10MB +appender.rolling.strategy.type = DefaultRolloverStrategy +appender.rolling.strategy.max = 7 # Set the immediate flush to true (default) # appender.rolling.immediateFlush = true # Set the append to true (default), should not overwrite From c0ed4022a5256b9d47eb879c8f73ed6e7d49418a Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Tue, 5 Sep 2023 15:27:33 +0200 Subject: [PATCH 06/22] Update log4j2.properties --- WindowsInstaller/Install Files/log4j2.properties | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/WindowsInstaller/Install Files/log4j2.properties b/WindowsInstaller/Install Files/log4j2.properties index 44e1b1e3..54f295c1 100755 --- a/WindowsInstaller/Install Files/log4j2.properties +++ b/WindowsInstaller/Install Files/log4j2.properties @@ -1,7 +1,7 @@ rootLogger.level = info # On Windows, uncomment next line to set dirname: # property.dirname = ${sys:user.home}\\AppData\\Local\\qortal\\ -property.filename = ${sys:log4j2.filenameTemplate:-log.txt} +# property.filename = ${sys:log4j2.filenameTemplate:-log.txt} rootLogger.appenderRef.console.ref = stdout rootLogger.appenderRef.rolling.ref = FILE @@ -59,11 +59,14 @@ appender.console.filter.threshold.level = error appender.rolling.type = RollingFile appender.rolling.name = FILE +appender.rolling.fileName = qortal.log +appender.rolling.filePattern = qortal.%d{dd-MMM}.log.gz appender.rolling.layout.type = PatternLayout appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n -appender.rolling.filePattern = ./${filename}.%i appender.rolling.policy.type = SizeBasedTriggeringPolicy -appender.rolling.policy.size = 4MB +appender.rolling.policy.size = 10MB +appender.rolling.strategy.type = DefaultRolloverStrategy +appender.rolling.strategy.max = 7 # Set the immediate flush to true (default) # appender.rolling.immediateFlush = true # Set the append to true (default), should not overwrite From bd055780358a347601f7b76f06a512f60fa0c755 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Tue, 5 Sep 2023 18:31:32 +0200 Subject: [PATCH 07/22] Reverse need latest 1.7.x --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5205c1b3..bdc4f1c6 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ 9.4.52.v20230823 2.20.0 UTF-8 - 2.0.9 + 1.7.36 2.0.9 3.23.8 1.1.0 From 94e9f86245157310f868d3ed7368a50535cc8796 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Wed, 6 Sep 2023 09:11:41 +0200 Subject: [PATCH 08/22] Version 3.8.0 get faster the NTP offset --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bdc4f1c6..30448cab 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ 1.69 ${maven.build.timestamp} 1.4.1 - 3.9.0 + 3.8.0 1.10.0 2.13.0 1.23.0 From 1a9087984a8425d63bf7db320470a592909bce3c Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Wed, 6 Sep 2023 17:22:13 +0200 Subject: [PATCH 09/22] Swagger updates --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 30448cab..8cbb7b58 100644 --- a/pom.xml +++ b/pom.xml @@ -29,8 +29,8 @@ 2.20.0 UTF-8 1.7.36 - 2.0.9 - 3.23.8 + 2.0.10 + 3.23.11 1.1.0 1.13.1 4.12 @@ -89,7 +89,7 @@ pl.project13.maven git-commit-id-plugin - 4.0.0 + 4.9.10 get-the-git-infos From a7ca306d1b7a9d36690fa897c0251a249790b41d Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Thu, 7 Sep 2023 16:54:09 +0200 Subject: [PATCH 10/22] Update json dependency --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 8cbb7b58..85e086ae 100644 --- a/pom.xml +++ b/pom.xml @@ -32,7 +32,7 @@ 2.0.10 3.23.11 1.1.0 - 1.13.1 + 1.16.1 4.12 1.57.2 3.24.2 @@ -462,7 +462,7 @@ org.json json - 20210307 + 20230618 org.apache.commons From 9959985a13aa0c9cbdc8d7bae5fa5cd2a0b5c1bc Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Sat, 9 Sep 2023 10:56:17 +0200 Subject: [PATCH 11/22] Update grpc --- pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 85e086ae..bea65026 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 1.1.0 1.16.1 4.12 - 1.57.2 + 1.58.0 3.24.2 1.17 @@ -168,7 +168,7 @@ ^(#.*$[\n\r]*) - + @@ -367,7 +367,7 @@ - + @@ -386,7 +386,7 @@ - + From 1fbb1659a33b56c6134b239b1cd3582c356e69bf Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Wed, 13 Sep 2023 10:43:05 +0200 Subject: [PATCH 12/22] Update dependencies --- pom.xml | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index bea65026..29b7ac58 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ 3.8.0 1.10.0 2.13.0 - 1.23.0 + 1.24.0 3.13.0 1.9 1.2.2 @@ -35,7 +35,7 @@ 1.16.1 4.12 1.58.0 - 3.24.2 + 3.24.3 1.17 @@ -164,7 +164,9 @@ ${project.build.outputDirectory}/git.properties true - MULTILINE + + MULTILINE + ^(#.*$[\n\r]*) @@ -414,14 +416,16 @@ org.codehaus.mojo build-helper-maven-plugin 3.4.0 - provided + provided + com.github.bohnman package-info-maven-plugin ${package-info-maven-plugin.version} - provided + provided + @@ -638,7 +642,8 @@ jersey-hk2 ${jersey.version} - + + javax.inject javax.inject @@ -665,7 +670,8 @@ swagger-jaxrs2-servlet-initializer ${swagger-api.version} - + + io.swagger.core.v3 swagger-integration From cae3fdcb064ef06aa8db80b822300a5feed0c398 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Fri, 22 Sep 2023 11:12:50 +0200 Subject: [PATCH 13/22] Update ElectrumX Servers --- .../java/org/qortal/crosschain/Bitcoin.java | 173 +++++++++--------- .../java/org/qortal/crosschain/Digibyte.java | 24 ++- .../java/org/qortal/crosschain/Dogecoin.java | 25 +-- .../java/org/qortal/crosschain/Litecoin.java | 45 ++--- .../org/qortal/crosschain/PirateChain.java | 18 +- .../java/org/qortal/crosschain/Ravencoin.java | 31 ++-- 6 files changed, 160 insertions(+), 156 deletions(-) diff --git a/src/main/java/org/qortal/crosschain/Bitcoin.java b/src/main/java/org/qortal/crosschain/Bitcoin.java index b65bac8e..7925dd4e 100644 --- a/src/main/java/org/qortal/crosschain/Bitcoin.java +++ b/src/main/java/org/qortal/crosschain/Bitcoin.java @@ -44,89 +44,78 @@ public class Bitcoin extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - // Servers chosen on NO BASIS WHATSOEVER from various sources! - // Status verified at https://1209k.com/bitcoin-eye/ele.php?chain=btc - //CLOSED new Server("bitcoin.grey.pw", Server.ConnectionType.SSL, 50002), - //CLOSED new Server("btc.litepay.ch", Server.ConnectionType.SSL, 50002), - //CLOSED new Server("electrum.pabu.io", Server.ConnectionType.SSL, 50002), - //CLOSED new Server("electrumx.dev", Server.ConnectionType.SSL, 50002), - //CLOSED new Server("electrumx.hodlwallet.com", Server.ConnectionType.SSL, 50002), - //CLOSED new Server("gd42.org", Server.ConnectionType.SSL, 50002), - //CLOSED new Server("korea.electrum-server.com", Server.ConnectionType.SSL, 50002), - //CLOSED new Server("prospero.bitsrc.net", Server.ConnectionType.SSL, 50002), - //1.15.0 new Server("alviss.coinjoined.com", Server.ConnectionType.SSL, 50002), - //1.15.0 new Server("electrum.acinq.co", Server.ConnectionType.SSL, 50002), - //1.14.0 new Server("electrum.coinext.com.br", Server.ConnectionType.SSL, 50002), - //F1.7.0 new Server("btc.lastingcoin.net", Server.ConnectionType.SSL, 50002), - new Server("104.248.139.211", Server.ConnectionType.SSL, 50002), - new Server("128.0.190.26", Server.ConnectionType.SSL, 50002), - new Server("142.93.6.38", Server.ConnectionType.SSL, 50002), - new Server("157.245.172.236", Server.ConnectionType.SSL, 50002), - new Server("167.172.226.175", Server.ConnectionType.SSL, 50002), - new Server("167.172.42.31", Server.ConnectionType.SSL, 50002), - new Server("178.62.80.20", Server.ConnectionType.SSL, 50002), - new Server("185.64.116.15", Server.ConnectionType.SSL, 50002), - new Server("188.165.206.215", Server.ConnectionType.SSL, 50002), - new Server("188.165.211.112", Server.ConnectionType.SSL, 50002), - new Server("2azzarita.hopto.org", Server.ConnectionType.SSL, 50002), - new Server("2electrumx.hopto.me", Server.ConnectionType.SSL, 56022), - new Server("2ex.digitaleveryware.com", Server.ConnectionType.SSL, 50002), - new Server("65.39.140.37", Server.ConnectionType.SSL, 50002), - new Server("68.183.188.105", Server.ConnectionType.SSL, 50002), - new Server("71.73.14.254", Server.ConnectionType.SSL, 50002), - new Server("94.23.247.135", Server.ConnectionType.SSL, 50002), - new Server("assuredly.not.fyi", Server.ConnectionType.SSL, 50002), - new Server("ax101.blockeng.ch", Server.ConnectionType.SSL, 50002), - new Server("ax102.blockeng.ch", Server.ConnectionType.SSL, 50002), - new Server("b.1209k.com", Server.ConnectionType.SSL, 50002), - new Server("b6.1209k.com", Server.ConnectionType.SSL, 50002), - new Server("bitcoin.dermichi.com", Server.ConnectionType.SSL, 50002), - new Server("bitcoin.lu.ke", Server.ConnectionType.SSL, 50002), - new Server("bitcoin.lukechilds.co", Server.ConnectionType.SSL, 50002), - new Server("blkhub.net", Server.ConnectionType.SSL, 50002), - new Server("btc.electroncash.dk", Server.ConnectionType.SSL, 60002), - new Server("btc.ocf.sh", Server.ConnectionType.SSL, 50002), - new Server("btce.iiiiiii.biz", Server.ConnectionType.SSL, 50002), - new Server("caleb.vegas", Server.ConnectionType.SSL, 50002), - new Server("eai.coincited.net", Server.ConnectionType.SSL, 50002), - new Server("electrum.bhoovd.com", Server.ConnectionType.SSL, 50002), - new Server("electrum.bitaroo.net", Server.ConnectionType.SSL, 50002), - new Server("electrum.bitcoinlizard.net", Server.ConnectionType.SSL, 50002), - new Server("electrum.blockstream.info", Server.ConnectionType.SSL, 50002), - new Server("electrum.emzy.de", Server.ConnectionType.SSL, 50002), - new Server("electrum.exan.tech", Server.ConnectionType.SSL, 50002), - new Server("electrum.kendigisland.xyz", Server.ConnectionType.SSL, 50002), - new Server("electrum.mmitech.info", Server.ConnectionType.SSL, 50002), - new Server("electrum.petrkr.net", Server.ConnectionType.SSL, 50002), - new Server("electrum.stippy.com", Server.ConnectionType.SSL, 50002), - new Server("electrum.thomasfischbach.de", Server.ConnectionType.SSL, 50002), - new Server("electrum0.snel.it", Server.ConnectionType.SSL, 50002), - new Server("electrum1.cipig.net", Server.ConnectionType.SSL, 50002), - new Server("electrum2.cipig.net", Server.ConnectionType.SSL, 50002), - new Server("electrum3.cipig.net", Server.ConnectionType.SSL, 50002), - new Server("electrumx.alexridevski.net", Server.ConnectionType.SSL, 50002), - new Server("electrumx-core.1209k.com", Server.ConnectionType.SSL, 50002), - new Server("elx.bitske.com", Server.ConnectionType.SSL, 50002), - new Server("ex03.axalgo.com", Server.ConnectionType.SSL, 50002), - new Server("ex05.axalgo.com", Server.ConnectionType.SSL, 50002), - new Server("ex07.axalgo.com", Server.ConnectionType.SSL, 50002), - new Server("fortress.qtornado.com", Server.ConnectionType.SSL, 50002), - new Server("fulcrum.grey.pw", Server.ConnectionType.SSL, 50002), - new Server("fulcrum.sethforprivacy.com", Server.ConnectionType.SSL, 51002), - new Server("guichet.centure.cc", Server.ConnectionType.SSL, 50002), - new Server("hodlers.beer", Server.ConnectionType.SSL, 50002), - new Server("kareoke.qoppa.org", Server.ConnectionType.SSL, 50002), - new Server("kirsche.emzy.de", Server.ConnectionType.SSL, 50002), - new Server("node1.btccuracao.com", Server.ConnectionType.SSL, 50002), - new Server("osr1ex1.compumundohipermegared.one", Server.ConnectionType.SSL, 50002), - new Server("smmalis37.ddns.net", Server.ConnectionType.SSL, 50002), - new Server("ulrichard.ch", Server.ConnectionType.SSL, 50002), - new Server("vmd104012.contaboserver.net", Server.ConnectionType.SSL, 50002), - new Server("vmd104014.contaboserver.net", Server.ConnectionType.SSL, 50002), - new Server("vmd63185.contaboserver.net", Server.ConnectionType.SSL, 50002), - new Server("vmd71287.contaboserver.net", Server.ConnectionType.SSL, 50002), - new Server("vmd84592.contaboserver.net", Server.ConnectionType.SSL, 50002), - new Server("xtrum.com", Server.ConnectionType.SSL, 50002)); + // Servers chosen on NO BASIS WHATSOEVER from various sources! + // Status verified at https://1209k.com/bitcoin-eye/ele.php?chain=btc + new Server("104.248.139.211", Server.ConnectionType.SSL, 50002), + new Server("128.0.190.26", Server.ConnectionType.SSL, 50002), + new Server("142.93.6.38", Server.ConnectionType.SSL, 50002), + new Server("157.245.172.236", Server.ConnectionType.SSL, 50002), + new Server("167.172.226.175", Server.ConnectionType.SSL, 50002), + new Server("167.172.42.31", Server.ConnectionType.SSL, 50002), + new Server("178.62.80.20", Server.ConnectionType.SSL, 50002), + new Server("185.64.116.15", Server.ConnectionType.SSL, 50002), + new Server("188.165.206.215", Server.ConnectionType.SSL, 50002), + new Server("188.165.211.112", Server.ConnectionType.SSL, 50002), + new Server("2azzarita.hopto.org", Server.ConnectionType.SSL, 50002), + new Server("2electrumx.hopto.me", Server.ConnectionType.SSL, 56022), + new Server("2ex.digitaleveryware.com", Server.ConnectionType.SSL, 50002), + new Server("65.39.140.37", Server.ConnectionType.SSL, 50002), + new Server("68.183.188.105", Server.ConnectionType.SSL, 50002), + new Server("71.73.14.254", Server.ConnectionType.SSL, 50002), + new Server("94.23.247.135", Server.ConnectionType.SSL, 50002), + new Server("assuredly.not.fyi", Server.ConnectionType.SSL, 50002), + new Server("ax101.blockeng.ch", Server.ConnectionType.SSL, 50002), + new Server("ax102.blockeng.ch", Server.ConnectionType.SSL, 50002), + new Server("b.1209k.com", Server.ConnectionType.SSL, 50002), + new Server("b6.1209k.com", Server.ConnectionType.SSL, 50002), + new Server("bitcoin.dermichi.com", Server.ConnectionType.SSL, 50002), + new Server("bitcoin.lu.ke", Server.ConnectionType.SSL, 50002), + new Server("bitcoin.lukechilds.co", Server.ConnectionType.SSL, 50002), + new Server("blkhub.net", Server.ConnectionType.SSL, 50002), + new Server("btc.electroncash.dk", Server.ConnectionType.SSL, 60002), + new Server("btc.ocf.sh", Server.ConnectionType.SSL, 50002), + new Server("btce.iiiiiii.biz", Server.ConnectionType.SSL, 50002), + new Server("caleb.vegas", Server.ConnectionType.SSL, 50002), + new Server("eai.coincited.net", Server.ConnectionType.SSL, 50002), + new Server("electrum.bhoovd.com", Server.ConnectionType.SSL, 50002), + new Server("electrum.bitaroo.net", Server.ConnectionType.SSL, 50002), + new Server("electrum.bitcoinlizard.net", Server.ConnectionType.SSL, 50002), + new Server("electrum.blockstream.info", Server.ConnectionType.SSL, 50002), + new Server("electrum.emzy.de", Server.ConnectionType.SSL, 50002), + new Server("electrum.exan.tech", Server.ConnectionType.SSL, 50002), + new Server("electrum.kendigisland.xyz", Server.ConnectionType.SSL, 50002), + new Server("electrum.mmitech.info", Server.ConnectionType.SSL, 50002), + new Server("electrum.petrkr.net", Server.ConnectionType.SSL, 50002), + new Server("electrum.stippy.com", Server.ConnectionType.SSL, 50002), + new Server("electrum.thomasfischbach.de", Server.ConnectionType.SSL, 50002), + new Server("electrum0.snel.it", Server.ConnectionType.SSL, 50002), + new Server("electrum1.cipig.net", Server.ConnectionType.SSL, 50002), + new Server("electrum2.cipig.net", Server.ConnectionType.SSL, 50002), + new Server("electrum3.cipig.net", Server.ConnectionType.SSL, 50002), + new Server("electrumx.alexridevski.net", Server.ConnectionType.SSL, 50002), + new Server("electrumx-core.1209k.com", Server.ConnectionType.SSL, 50002), + new Server("elx.bitske.com", Server.ConnectionType.SSL, 50002), + new Server("ex03.axalgo.com", Server.ConnectionType.SSL, 50002), + new Server("ex05.axalgo.com", Server.ConnectionType.SSL, 50002), + new Server("ex07.axalgo.com", Server.ConnectionType.SSL, 50002), + new Server("fortress.qtornado.com", Server.ConnectionType.SSL, 50002), + new Server("fulcrum.grey.pw", Server.ConnectionType.SSL, 50002), + new Server("fulcrum.sethforprivacy.com", Server.ConnectionType.SSL, 51002), + new Server("guichet.centure.cc", Server.ConnectionType.SSL, 50002), + new Server("hodlers.beer", Server.ConnectionType.SSL, 50002), + new Server("kareoke.qoppa.org", Server.ConnectionType.SSL, 50002), + new Server("kirsche.emzy.de", Server.ConnectionType.SSL, 50002), + new Server("node1.btccuracao.com", Server.ConnectionType.SSL, 50002), + new Server("osr1ex1.compumundohipermegared.one", Server.ConnectionType.SSL, 50002), + new Server("smmalis37.ddns.net", Server.ConnectionType.SSL, 50002), + new Server("ulrichard.ch", Server.ConnectionType.SSL, 50002), + new Server("vmd104012.contaboserver.net", Server.ConnectionType.SSL, 50002), + new Server("vmd104014.contaboserver.net", Server.ConnectionType.SSL, 50002), + new Server("vmd63185.contaboserver.net", Server.ConnectionType.SSL, 50002), + new Server("vmd71287.contaboserver.net", Server.ConnectionType.SSL, 50002), + new Server("vmd84592.contaboserver.net", Server.ConnectionType.SSL, 50002), + new Server("xtrum.com", Server.ConnectionType.SSL, 50002) + ); } @Override @@ -152,12 +141,13 @@ public class Bitcoin extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - new Server("tn.not.fyi", Server.ConnectionType.SSL, 55002), - new Server("electrumx-test.1209k.com", Server.ConnectionType.SSL, 50002), - new Server("testnet.qtornado.com", Server.ConnectionType.SSL, 51002), - new Server("testnet.aranguren.org", Server.ConnectionType.TCP, 51001), - new Server("testnet.aranguren.org", Server.ConnectionType.SSL, 51002), - new Server("testnet.hsmiths.com", Server.ConnectionType.SSL, 53012)); + new Server("tn.not.fyi", Server.ConnectionType.SSL, 55002), + new Server("electrumx-test.1209k.com", Server.ConnectionType.SSL, 50002), + new Server("testnet.qtornado.com", Server.ConnectionType.SSL, 51002), + new Server("testnet.aranguren.org", Server.ConnectionType.TCP, 51001), + new Server("testnet.aranguren.org", Server.ConnectionType.SSL, 51002), + new Server("testnet.hsmiths.com", Server.ConnectionType.SSL, 53012) + ); } @Override @@ -179,8 +169,9 @@ public class Bitcoin extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - new Server("localhost", Server.ConnectionType.TCP, 50001), - new Server("localhost", Server.ConnectionType.SSL, 50002)); + new Server("localhost", Server.ConnectionType.TCP, 50001), + new Server("localhost", Server.ConnectionType.SSL, 50002) + ); } @Override diff --git a/src/main/java/org/qortal/crosschain/Digibyte.java b/src/main/java/org/qortal/crosschain/Digibyte.java index c5d96383..8e316173 100644 --- a/src/main/java/org/qortal/crosschain/Digibyte.java +++ b/src/main/java/org/qortal/crosschain/Digibyte.java @@ -43,14 +43,17 @@ public class Digibyte extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - // Servers chosen on NO BASIS WHATSOEVER from various sources! - // Status verified at https://1209k.com/bitcoin-eye/ele.php?chain=dgb - new Server("electrum.qortal.link", Server.ConnectionType.SSL, 55002), - new Server("electrum-dgb.qortal.online", ConnectionType.SSL, 50002), - new Server("electrum1-dgb.qortal.online", ConnectionType.SSL, 50002), - new Server("electrum1.cipig.net", ConnectionType.SSL, 20059), - new Server("electrum2.cipig.net", ConnectionType.SSL, 20059), - new Server("electrum3.cipig.net", ConnectionType.SSL, 20059)); + // Servers chosen on NO BASIS WHATSOEVER from various sources! + // Status verified at https://1209k.com/bitcoin-eye/ele.php?chain=dgb + new Server("electrum.qortal.link", Server.ConnectionType.SSL, 55002), + new Server("electrum1-dgb.qortal.online", Server.ConnectionType.SSL, 50002), + new Server("electrum2-dgb.qortal.online", Server.ConnectionType.SSL, 50002), + new Server("electrum3-dgb.qortal.online", Server.ConnectionType.SSL, 40002), + new Server("electrum4-dgb.qortal.online", Server.ConnectionType.SSL, 40002), + new Server("electrum1.cipig.net", Server.ConnectionType.SSL, 20059), + new Server("electrum2.cipig.net", Server.ConnectionType.SSL, 20059), + new Server("electrum3.cipig.net", Server.ConnectionType.SSL, 20059) + ); } @Override @@ -94,8 +97,9 @@ public class Digibyte extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - new Server("localhost", ConnectionType.TCP, 50001), - new Server("localhost", ConnectionType.SSL, 50002)); + new Server("localhost", Server.ConnectionType.TCP, 50001), + new Server("localhost", Server.ConnectionType.SSL, 50002) + ); } @Override diff --git a/src/main/java/org/qortal/crosschain/Dogecoin.java b/src/main/java/org/qortal/crosschain/Dogecoin.java index 99f557a5..93941c41 100644 --- a/src/main/java/org/qortal/crosschain/Dogecoin.java +++ b/src/main/java/org/qortal/crosschain/Dogecoin.java @@ -4,7 +4,6 @@ import org.bitcoinj.core.Coin; import org.bitcoinj.core.Context; import org.bitcoinj.core.NetworkParameters; import org.libdohj.params.DogecoinMainNetParams; -//import org.libdohj.params.DogecoinRegTestParams; import org.libdohj.params.DogecoinTestNet3Params; import org.qortal.crosschain.ElectrumX.Server; import org.qortal.crosschain.ElectrumX.Server.ConnectionType; @@ -44,14 +43,17 @@ public class Dogecoin extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - // Servers chosen on NO BASIS WHATSOEVER from various sources! - // Status verified at https://1209k.com/bitcoin-eye/ele.php?chain=doge - new Server("electrum.qortal.link", Server.ConnectionType.SSL, 54002), - new Server("electrum-doge.qortal.online", ConnectionType.SSL, 50002), - new Server("electrum1-doge.qortal.online", ConnectionType.SSL, 50002), - new Server("electrum1.cipig.net", ConnectionType.SSL, 20060), - new Server("electrum2.cipig.net", ConnectionType.SSL, 20060), - new Server("electrum3.cipig.net", ConnectionType.SSL, 20060)); + // Servers chosen on NO BASIS WHATSOEVER from various sources! + // Status verified at https://1209k.com/bitcoin-eye/ele.php?chain=doge + new Server("electrum.qortal.link", Server.ConnectionType.SSL, 54002), + new Server("electrum1-doge.qortal.online", Server.ConnectionType.SSL, 50002), + new Server("electrum2-doge.qortal.online", Server.ConnectionType.SSL, 50002), + new Server("electrum3-doge.qortal.online", Server.ConnectionType.SSL, 30002), + new Server("electrum4-doge.qortal.online", Server.ConnectionType.SSL, 30002), + new Server("electrum1.cipig.net", Server.ConnectionType.SSL, 20060), + new Server("electrum2.cipig.net", Server.ConnectionType.SSL, 20060), + new Server("electrum3.cipig.net", Server.ConnectionType.SSL, 20060) + ); } @Override @@ -95,8 +97,9 @@ public class Dogecoin extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - new Server("localhost", ConnectionType.TCP, 50001), - new Server("localhost", ConnectionType.SSL, 50002)); + new Server("localhost", Server.ConnectionType.TCP, 50001), + new Server("localhost", Server.ConnectionType.SSL, 50002) + ); } @Override diff --git a/src/main/java/org/qortal/crosschain/Litecoin.java b/src/main/java/org/qortal/crosschain/Litecoin.java index 1dd9037a..22825c74 100644 --- a/src/main/java/org/qortal/crosschain/Litecoin.java +++ b/src/main/java/org/qortal/crosschain/Litecoin.java @@ -43,22 +43,21 @@ public class Litecoin extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - // Servers chosen on NO BASIS WHATSOEVER from various sources! - // Status verified at https://1209k.com/bitcoin-eye/ele.php?chain=ltc - //CLOSED new Server("electrum-ltc.someguy123.net", Server.ConnectionType.SSL, 50002), - //CLOSED new Server("ltc.litepay.ch", Server.ConnectionType.SSL, 50022), - //BEHIND new Server("62.171.169.176", Server.ConnectionType.SSL, 50002), - //PHISHY new Server("electrum-ltc.bysh.me", Server.ConnectionType.SSL, 50002), - new Server("backup.electrum-ltc.org", Server.ConnectionType.SSL, 443), - new Server("electrum.qortal.link", Server.ConnectionType.SSL, 50002), - new Server("electrum.ltc.xurious.com", Server.ConnectionType.SSL, 50002), - new Server("electrum-ltc.petrkr.net", Server.ConnectionType.SSL, 60002), - new Server("electrum-ltc.qortal.online", Server.ConnectionType.SSL, 50002), - new Server("electrum1-ltc.qortal.online", Server.ConnectionType.SSL, 50002), - new Server("electrum1.cipig.net", Server.ConnectionType.SSL, 20063), - new Server("electrum2.cipig.net", Server.ConnectionType.SSL, 20063), - new Server("electrum3.cipig.net", Server.ConnectionType.SSL, 20063), - new Server("ltc.rentonrisk.com", Server.ConnectionType.SSL, 50002)); + // Servers chosen on NO BASIS WHATSOEVER from various sources! + // Status verified at https://1209k.com/bitcoin-eye/ele.php?chain=ltc + new Server("electrum.qortal.link", Server.ConnectionType.SSL, 50002), + new Server("electrum1-ltc.qortal.online", Server.ConnectionType.SSL, 50002), + new Server("electrum2-ltc.qortal.online", Server.ConnectionType.SSL, 50002), + new Server("electrum3-ltc.qortal.online", Server.ConnectionType.SSL, 20002), + new Server("electrum4-ltc.qortal.online", Server.ConnectionType.SSL, 20002), + new Server("backup.electrum-ltc.org", Server.ConnectionType.SSL, 443), + new Server("electrum.ltc.xurious.com", Server.ConnectionType.SSL, 50002), + new Server("electrum-ltc.petrkr.net", Server.ConnectionType.SSL, 60002), + new Server("electrum1.cipig.net", Server.ConnectionType.SSL, 20063), + new Server("electrum2.cipig.net", Server.ConnectionType.SSL, 20063), + new Server("electrum3.cipig.net", Server.ConnectionType.SSL, 20063), + new Server("ltc.rentonrisk.com", Server.ConnectionType.SSL, 50002) + ); } @Override @@ -81,10 +80,11 @@ public class Litecoin extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - new Server("electrum-ltc.bysh.me", Server.ConnectionType.TCP, 51001), - new Server("electrum-ltc.bysh.me", Server.ConnectionType.SSL, 51002), - new Server("electrum.ltc.xurious.com", Server.ConnectionType.TCP, 51001), - new Server("electrum.ltc.xurious.com", Server.ConnectionType.SSL, 51002)); + new Server("electrum-ltc.bysh.me", Server.ConnectionType.TCP, 51001), + new Server("electrum-ltc.bysh.me", Server.ConnectionType.SSL, 51002), + new Server("electrum.ltc.xurious.com", Server.ConnectionType.TCP, 51001), + new Server("electrum.ltc.xurious.com", Server.ConnectionType.SSL, 51002) + ); } @Override @@ -106,8 +106,9 @@ public class Litecoin extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - new Server("localhost", Server.ConnectionType.TCP, 50001), - new Server("localhost", Server.ConnectionType.SSL, 50002)); + new Server("localhost", Server.ConnectionType.TCP, 50001), + new Server("localhost", Server.ConnectionType.SSL, 50002) + ); } @Override diff --git a/src/main/java/org/qortal/crosschain/PirateChain.java b/src/main/java/org/qortal/crosschain/PirateChain.java index a1d31a4e..4881c8bb 100644 --- a/src/main/java/org/qortal/crosschain/PirateChain.java +++ b/src/main/java/org/qortal/crosschain/PirateChain.java @@ -56,11 +56,14 @@ public class PirateChain extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - // Servers chosen on NO BASIS WHATSOEVER from various sources! - new Server("wallet-arrr1.qortal.online", ConnectionType.SSL, 443), - new Server("wallet-arrr2.qortal.online", ConnectionType.SSL, 443), - new Server("wallet-arrr3.qortal.online", ConnectionType.SSL, 443), - new Server("lightd.pirate.black", ConnectionType.SSL, 443)); + // Servers chosen on NO BASIS WHATSOEVER from various sources! + new Server("wallet-arrr1.qortal.online", Server.ConnectionType.SSL, 443), + new Server("wallet-arrr2.qortal.online", Server.ConnectionType.SSL, 443), + new Server("wallet-arrr3.qortal.online", Server.ConnectionType.SSL, 443), + new Server("wallet-arrr4.qortal.online", Server.ConnectionType.SSL, 443), + new Server("wallet-arrr5.qortal.online", Server.ConnectionType.SSL, 443), + new Server("lightd.pirate.black", Server.ConnectionType.SSL, 443) + ); } @Override @@ -104,8 +107,9 @@ public class PirateChain extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - new Server("localhost", ConnectionType.TCP, 9067), - new Server("localhost", ConnectionType.SSL, 443)); + new Server("localhost", Server.ConnectionType.TCP, 9067), + new Server("localhost", Server.ConnectionType.SSL, 443) + ); } @Override diff --git a/src/main/java/org/qortal/crosschain/Ravencoin.java b/src/main/java/org/qortal/crosschain/Ravencoin.java index 6030fa50..51b65f68 100644 --- a/src/main/java/org/qortal/crosschain/Ravencoin.java +++ b/src/main/java/org/qortal/crosschain/Ravencoin.java @@ -43,19 +43,19 @@ public class Ravencoin extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - // Servers chosen on NO BASIS WHATSOEVER from various sources! - // Status verified at https://1209k.com/bitcoin-eye/ele.php?chain=rvn - //CLOSED new Server("aethyn.com", ConnectionType.SSL, 50002), - //CLOSED new Server("electrum2.rvn.rocks", ConnectionType.SSL, 50002), - //BEHIND new Server("electrum3.rvn.rocks", ConnectionType.SSL, 50002), - new Server("electrum.qortal.link", Server.ConnectionType.SSL, 56002), - new Server("electrum-rvn.qortal.online", ConnectionType.SSL, 50002), - new Server("electrum1-rvn.qortal.online", ConnectionType.SSL, 50002), - new Server("electrum1.cipig.net", ConnectionType.SSL, 20051), - new Server("electrum2.cipig.net", ConnectionType.SSL, 20051), - new Server("electrum3.cipig.net", ConnectionType.SSL, 20051), - new Server("rvn-dashboard.com", ConnectionType.SSL, 50002), - new Server("rvn4lyfe.com", ConnectionType.SSL, 50002)); + // Servers chosen on NO BASIS WHATSOEVER from various sources! + // Status verified at https://1209k.com/bitcoin-eye/ele.php?chain=rvn + new Server("electrum.qortal.link", Server.ConnectionType.SSL, 56002), + new Server("electrum1-rvn.qortal.online", Server.ConnectionType.SSL, 50002), + new Server("electrum2-rvn.qortal.online", Server.ConnectionType.SSL, 50002), + new Server("electrum3-rvn.qortal.online", Server.ConnectionType.SSL, 50002), + new Server("electrum4-rvn.qortal.online", Server.ConnectionType.SSL, 50002), + new Server("electrum1.cipig.net", Server.ConnectionType.SSL, 20051), + new Server("electrum2.cipig.net", Server.ConnectionType.SSL, 20051), + new Server("electrum3.cipig.net", Server.ConnectionType.SSL, 20051), + new Server("rvn-dashboard.com", Server.ConnectionType.SSL, 50002), + new Server("rvn4lyfe.com", Server.ConnectionType.SSL, 50002) + ); } @Override @@ -99,8 +99,9 @@ public class Ravencoin extends Bitcoiny { @Override public Collection getServers() { return Arrays.asList( - new Server("localhost", ConnectionType.TCP, 50001), - new Server("localhost", ConnectionType.SSL, 50002)); + new Server("localhost", Server.ConnectionType.TCP, 50001), + new Server("localhost", Server.ConnectionType.SSL, 50002) + ); } @Override From bf270a63ff06ec0f18ee0522f8668a9a99a14899 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Sun, 24 Sep 2023 15:19:07 +0200 Subject: [PATCH 14/22] Update bouncycastle --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 29b7ac58..621c96ae 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ true 7dc8c6f 0.15.10 - 1.69 + 1.70 ${maven.build.timestamp} 1.4.1 3.8.0 From 499e2ac3f4d9e103da015bac1d848e8f9e9d67cd Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Tue, 10 Oct 2023 23:24:57 +0200 Subject: [PATCH 15/22] hide-failed-trade --- src/main/java/org/qortal/controller/tradebot/TradeBot.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/qortal/controller/tradebot/TradeBot.java b/src/main/java/org/qortal/controller/tradebot/TradeBot.java index 147554dd..c8bc0eba 100644 --- a/src/main/java/org/qortal/controller/tradebot/TradeBot.java +++ b/src/main/java/org/qortal/controller/tradebot/TradeBot.java @@ -712,7 +712,7 @@ public class TradeBot implements Listener { } try { - List signatures = repository.getTransactionRepository().getSignaturesMatchingCriteria(null, null, null, Arrays.asList(Transaction.TransactionType.MESSAGE), null, null, crossChainTradeData.qortalCreatorTradeAddress, TransactionsResource.ConfirmationStatus.CONFIRMED, null, null, null); + List signatures = repository.getTransactionRepository().getSignaturesMatchingCriteria(null, null, null, Arrays.asList(Transaction.TransactionType.MESSAGE), null, null, crossChainTradeData.qortalCreatorTradeAddress, TransactionsResource.ConfirmationStatus.BOTH, null, null, null); if (signatures.size() < getMaxTradeOfferAttempts) { // Less than 3 (or user-specified number of) MESSAGE transactions relate to this trade, so assume it is ok validTrades.put(crossChainTradeData.qortalAtAddress, now); From 6d202b2b48e17bf5f59e95e7aab8b4f4eaeed4c9 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Thu, 12 Oct 2023 11:23:36 +0200 Subject: [PATCH 16/22] Create settings.json --- .vscode/settings.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..7b016a89 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.compile.nullAnalysis.mode": "automatic" +} \ No newline at end of file From db7b17e52e4192d33d017995a276d1b4e628227f Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Fri, 13 Oct 2023 15:57:43 +0200 Subject: [PATCH 17/22] Revert HSQLDB update --- pom.xml | 4 ++-- .../hsqldb/HSQLDBDatabaseUpdates.java | 23 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index 621c96ae..b7e27464 100644 --- a/pom.xml +++ b/pom.xml @@ -20,12 +20,12 @@ 1.9 1.2.2 32.1.2-jre - 2.7.2 + 2.5.1 1.2.1 73.2 1.1 2.29.1 - 9.4.52.v20230823 + 9.4.53.v20231009 2.20.0 UTF-8 1.7.36 diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBDatabaseUpdates.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBDatabaseUpdates.java index c2e9cd62..8763961d 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBDatabaseUpdates.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBDatabaseUpdates.java @@ -454,40 +454,40 @@ public class HSQLDBDatabaseUpdates { case 12: // Groups - stmt.execute("CREATE TABLE `Groups` (group_id GroupID, owner QortalAddress NOT NULL, group_name GroupName NOT NULL, " + stmt.execute("CREATE TABLE Groups (group_id GroupID, owner QortalAddress NOT NULL, group_name GroupName NOT NULL, " + "created_when EpochMillis NOT NULL, updated_when EpochMillis, is_open BOOLEAN NOT NULL, " + "approval_threshold TINYINT NOT NULL, min_block_delay INTEGER NOT NULL, max_block_delay INTEGER NOT NULL, " + "reference Signature, creation_group_id GroupID, reduced_group_name GroupName NOT NULL, " + "description GenericDescription NOT NULL, PRIMARY KEY (group_id))"); // For finding groups by name - stmt.execute("CREATE INDEX GroupNameIndex on `Groups` (group_name)"); + stmt.execute("CREATE INDEX GroupNameIndex on Groups (group_name)"); // For finding groups by reduced name - stmt.execute("CREATE INDEX GroupReducedNameIndex on `Groups` (reduced_group_name)"); + stmt.execute("CREATE INDEX GroupReducedNameIndex on Groups (reduced_group_name)"); // For finding groups by owner - stmt.execute("CREATE INDEX GroupOwnerIndex ON `Groups` (owner)"); + stmt.execute("CREATE INDEX GroupOwnerIndex ON Groups (owner)"); // We need a corresponding trigger to make sure new group_id values are assigned sequentially starting from 1 - stmt.execute("CREATE TRIGGER Group_ID_Trigger BEFORE INSERT ON `Groups` " + stmt.execute("CREATE TRIGGER Group_ID_Trigger BEFORE INSERT ON Groups " + "REFERENCING NEW ROW AS new_row FOR EACH ROW WHEN (new_row.group_id IS NULL) " - + "SET new_row.group_id = (SELECT IFNULL(MAX(group_id) + 1, 1) FROM `Groups`)"); + + "SET new_row.group_id = (SELECT IFNULL(MAX(group_id) + 1, 1) FROM Groups)"); // Admins stmt.execute("CREATE TABLE GroupAdmins (group_id GroupID, admin QortalAddress, reference Signature NOT NULL, " - + "PRIMARY KEY (group_id, admin), FOREIGN KEY (group_id) REFERENCES `Groups` (group_id) ON DELETE CASCADE)"); + + "PRIMARY KEY (group_id, admin), FOREIGN KEY (group_id) REFERENCES Groups (group_id) ON DELETE CASCADE)"); // For finding groups by admin address stmt.execute("CREATE INDEX GroupAdminIndex ON GroupAdmins (admin)"); // Members stmt.execute("CREATE TABLE GroupMembers (group_id GroupID, address QortalAddress, " + "joined_when EpochMillis NOT NULL, reference Signature NOT NULL, " - + "PRIMARY KEY (group_id, address), FOREIGN KEY (group_id) REFERENCES `Groups` (group_id) ON DELETE CASCADE)"); + + "PRIMARY KEY (group_id, address), FOREIGN KEY (group_id) REFERENCES Groups (group_id) ON DELETE CASCADE)"); // For finding groups by member address stmt.execute("CREATE INDEX GroupMemberIndex ON GroupMembers (address)"); // Invites stmt.execute("CREATE TABLE GroupInvites (group_id GroupID, inviter QortalAddress, invitee QortalAddress, " + "expires_when EpochMillis, reference Signature, " - + "PRIMARY KEY (group_id, invitee), FOREIGN KEY (group_id) REFERENCES `Groups` (group_id) ON DELETE CASCADE)"); + + "PRIMARY KEY (group_id, invitee), FOREIGN KEY (group_id) REFERENCES Groups (group_id) ON DELETE CASCADE)"); // For finding invites sent by inviter stmt.execute("CREATE INDEX GroupInviteInviterIndex ON GroupInvites (inviter)"); // For finding invites by group @@ -503,7 +503,7 @@ public class HSQLDBDatabaseUpdates { // NULL expires_when means does not expire! stmt.execute("CREATE TABLE GroupBans (group_id GroupID, offender QortalAddress, admin QortalAddress NOT NULL, " + "banned_when EpochMillis NOT NULL, reason GenericDescription NOT NULL, expires_when EpochMillis, reference Signature NOT NULL, " - + "PRIMARY KEY (group_id, offender), FOREIGN KEY (group_id) REFERENCES `Groups` (group_id) ON DELETE CASCADE)"); + + "PRIMARY KEY (group_id, offender), FOREIGN KEY (group_id) REFERENCES Groups (group_id) ON DELETE CASCADE)"); // For expiry maintenance stmt.execute("CREATE INDEX GroupBanExpiryIndex ON GroupBans (expires_when)"); break; @@ -1014,5 +1014,4 @@ public class HSQLDBDatabaseUpdates { LOGGER.info(() -> String.format("HSQLDB repository updated to version %d", databaseVersion + 1)); return true; } - -} +} \ No newline at end of file From 404c5d03009aaaa58d7f78f730ebd712d8981686 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Sun, 15 Oct 2023 17:12:02 +0200 Subject: [PATCH 18/22] Filter failed trade after 1 attempt --- .../qortal/controller/tradebot/TradeBot.java | 32 ++++++------------- .../data/transaction/TransactionData.java | 12 +++++-- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/qortal/controller/tradebot/TradeBot.java b/src/main/java/org/qortal/controller/tradebot/TradeBot.java index c8bc0eba..e17f642f 100644 --- a/src/main/java/org/qortal/controller/tradebot/TradeBot.java +++ b/src/main/java/org/qortal/controller/tradebot/TradeBot.java @@ -712,30 +712,16 @@ public class TradeBot implements Listener { } try { - List signatures = repository.getTransactionRepository().getSignaturesMatchingCriteria(null, null, null, Arrays.asList(Transaction.TransactionType.MESSAGE), null, null, crossChainTradeData.qortalCreatorTradeAddress, TransactionsResource.ConfirmationStatus.BOTH, null, null, null); - if (signatures.size() < getMaxTradeOfferAttempts) { - // Less than 3 (or user-specified number of) MESSAGE transactions relate to this trade, so assume it is ok - validTrades.put(crossChainTradeData.qortalAtAddress, now); - continue; - } + List transactions = repository.getTransactionRepository().getUnconfirmedTransactions(Arrays.asList(Transaction.TransactionType.MESSAGE), null, null, null, null); - List transactions = new ArrayList<>(signatures.size()); - for (byte[] signature : signatures) { - transactions.add(repository.getTransactionRepository().fromSignature(signature)); - } - transactions.sort(Transaction.getDataComparator()); - - // Get timestamp of the first MESSAGE transaction - long firstMessageTimestamp = transactions.get(0).getTimestamp(); - - // Treat as failed if first buy attempt was more than 60 mins ago (as it's still in the OFFERING state) - boolean isFailed = (now - firstMessageTimestamp > 60*60*1000L); - if (isFailed) { - failedTrades.put(crossChainTradeData.qortalAtAddress, now); - updatedCrossChainTrades.remove(crossChainTradeData); - } - else { - validTrades.put(crossChainTradeData.qortalAtAddress, now); + for (TransactionData transactionData : transactions) { + // Treat as failed if buy attempt was more than 60 mins ago (as it's still in the OFFERING state) + if (transactionData.getRecipient().equals(crossChainTradeData.qortalCreatorTradeAddress) && now - transactionData.getTimestamp() > 60*60*1000L) { + failedTrades.put(crossChainTradeData.qortalAtAddress, now); + updatedCrossChainTrades.remove(crossChainTradeData); + } else { + validTrades.put(crossChainTradeData.qortalAtAddress, now); + } } } catch (DataException e) { diff --git a/src/main/java/org/qortal/data/transaction/TransactionData.java b/src/main/java/org/qortal/data/transaction/TransactionData.java index c4a115df..21628bb9 100644 --- a/src/main/java/org/qortal/data/transaction/TransactionData.java +++ b/src/main/java/org/qortal/data/transaction/TransactionData.java @@ -75,6 +75,9 @@ public abstract class TransactionData { @Schema(description = "groupID for this transaction") protected int txGroupId; + @Schema(description = "recipient for this transaction") + protected String recipient; + // Not always present @Schema(accessMode = AccessMode.READ_ONLY, hidden = true, description = "height of block containing transaction") protected Integer blockHeight; @@ -105,7 +108,7 @@ public abstract class TransactionData { /** Constructor for use by transaction subclasses. */ protected TransactionData(TransactionType type, BaseTransactionData baseTransactionData) { this.type = type; - + this.recipient = baseTransactionData.recipient; this.timestamp = baseTransactionData.timestamp; this.txGroupId = baseTransactionData.txGroupId; this.reference = baseTransactionData.reference; @@ -136,6 +139,10 @@ public abstract class TransactionData { return this.txGroupId; } + public String getRecipient() { + return this.recipient; + } + public void setTxGroupId(int txGroupId) { this.txGroupId = txGroupId; } @@ -250,5 +257,4 @@ public abstract class TransactionData { return Arrays.equals(this.signature, otherTransactionData.signature); } - -} +} \ No newline at end of file From 2af8199d9cc4486fcb1dda2532c2c990b4b5539c Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Mon, 16 Oct 2023 17:27:14 +0200 Subject: [PATCH 19/22] Update dependencies --- pom.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index b7e27464..c8351bfe 100644 --- a/pom.xml +++ b/pom.xml @@ -14,12 +14,12 @@ 1.4.1 3.8.0 1.10.0 - 2.13.0 + 2.14.0 1.24.0 3.13.0 1.9 1.2.2 - 32.1.2-jre + 32.1.3-jre 2.5.1 1.2.1 73.2 @@ -35,7 +35,7 @@ 1.16.1 4.12 1.58.0 - 3.24.3 + 3.24.4 1.17 @@ -51,7 +51,7 @@ org.codehaus.mojo versions-maven-plugin - 2.16.0 + 2.16.1 false @@ -270,7 +270,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.0 + 3.5.1 false @@ -466,7 +466,7 @@ org.json json - 20230618 + 20231013 org.apache.commons From 2d599ec3c53f746731412af760fbf81b992e7627 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Tue, 17 Oct 2023 18:39:17 +0200 Subject: [PATCH 20/22] Summary of activity past 24 hours --- .../restricted/resource/AdminResource.java | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/qortal/api/restricted/resource/AdminResource.java b/src/main/java/org/qortal/api/restricted/resource/AdminResource.java index ecb8c6c9..178d7547 100644 --- a/src/main/java/org/qortal/api/restricted/resource/AdminResource.java +++ b/src/main/java/org/qortal/api/restricted/resource/AdminResource.java @@ -16,11 +16,6 @@ import java.net.InetSocketAddress; import java.net.UnknownHostException; import java.nio.file.Files; import java.nio.file.Paths; -import java.time.LocalDate; -import java.time.LocalTime; -import java.time.OffsetDateTime; -import java.time.ZoneOffset; -import java.util.Arrays; import java.util.List; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; @@ -38,7 +33,6 @@ import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.appender.RollingFileAppender; import org.json.JSONArray; -import org.json.JSONObject; import org.qortal.account.Account; import org.qortal.account.PrivateKeyAccount; import org.qortal.api.*; @@ -269,7 +263,7 @@ public class AdminResource { @GET @Path("/summary") @Operation( - summary = "Summary of activity since midnight, UTC", + summary = "Summary of activity past 24 hours", responses = { @ApiResponse( content = @Content(schema = @Schema(implementation = ActivitySummary.class)) @@ -282,23 +276,21 @@ public class AdminResource { Security.checkApiCallAllowed(request); ActivitySummary summary = new ActivitySummary(); - - LocalDate date = LocalDate.now(); - LocalTime time = LocalTime.of(0, 0); - ZoneOffset offset = ZoneOffset.UTC; - long start = OffsetDateTime.of(date, time, offset).toInstant().toEpochMilli(); + + long now = NTP.getTime(); + long oneday = now - 24 * 60 * 60 * 1000L; try (final Repository repository = RepositoryManager.getRepository()) { - int startHeight = repository.getBlockRepository().getHeightFromTimestamp(start); + int startHeight = repository.getBlockRepository().getHeightFromTimestamp(oneday); int endHeight = repository.getBlockRepository().getBlockchainHeight(); summary.setBlockCount(endHeight - startHeight); summary.setTransactionCountByType(repository.getTransactionRepository().getTransactionSummary(startHeight + 1, endHeight)); - summary.setAssetsIssued(repository.getAssetRepository().getRecentAssetIds(start).size()); + summary.setAssetsIssued(repository.getAssetRepository().getRecentAssetIds(oneday).size()); - summary.setNamesRegistered (repository.getNameRepository().getRecentNames(start).size()); + summary.setNamesRegistered (repository.getNameRepository().getRecentNames(oneday).size()); return summary; } catch (DataException e) { From 7103f41e36eb815410fd47ec8364a821c0b149a5 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Wed, 18 Oct 2023 13:49:53 +0200 Subject: [PATCH 21/22] Reorg pom update dependencies --- pom.xml | 76 +++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 52 insertions(+), 24 deletions(-) diff --git a/pom.xml b/pom.xml index c8351bfe..6cc84d15 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ 1.4.1 3.8.0 1.10.0 - 2.14.0 + 2.11.0 1.24.0 3.13.0 1.9 @@ -24,19 +24,39 @@ 1.2.1 73.2 1.1 - 2.29.1 + 2.3.3 + 2.40 9.4.53.v20231009 2.20.0 UTF-8 1.7.36 2.0.10 - 3.23.11 + 3.52.5 1.1.0 1.16.1 4.12 1.58.0 3.24.4 1.17 + 2.16.1 + 3.11.0 + 4.9.10 + 1.5.3 + 3.3.1 + 3.4.0 + 3.3.0 + 3.5.1 + 0.16 + 3.1.2 + 1.0.0 + 3.4.0 + 1.1.1 + 20231013 + 0.12.3 + 4.0.1 + 1.5.0-b01 + 5.3.1 + 1.3 src/main/java @@ -51,14 +71,14 @@ org.codehaus.mojo versions-maven-plugin - 2.16.1 + ${versions-maven-plugin.version} false maven-compiler-plugin - 3.11.0 + ${maven-compiler-plugin.version} 11 @@ -89,7 +109,7 @@ pl.project13.maven git-commit-id-plugin - 4.9.10 + ${git-commit-id-plugin.version} get-the-git-infos @@ -121,7 +141,7 @@ com.google.code.maven-replacer-plugin replacer - 1.5.3 + ${replacer.version} replace-swagger-ui @@ -180,7 +200,10 @@ maven-resources-plugin - 3.1.0 + ${maven-resources-plugin.version} + + ISO-8859-1 + copy-resources @@ -234,7 +257,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.4.0 + ${build-helper-maven-plugin.version} generate-sources @@ -252,7 +275,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + ${maven-jar-plugin.version} @@ -270,13 +293,12 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.1 + ${maven-shade-plugin.version} false - + org.webjars:swagger-ui junit:junit @@ -320,7 +342,7 @@ io.github.zlika reproducible-build-maven-plugin - 0.16 + ${reproducible-build-maven-plugin.version} package @@ -337,7 +359,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.1.2 + ${maven-surefire-plugin.version} ${skipTests} @@ -349,7 +371,7 @@ org.eclipse.m2e lifecycle-mapping - 1.0.0 + ${lifecycle-mapping.version} @@ -415,7 +437,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.4.0 + ${build-helper-maven-plugin.version} provided @@ -461,12 +483,12 @@ com.googlecode.json-simple json-simple - 1.1.1 + ${json-simple.version} org.json json - 20231013 + ${json.version} org.apache.commons @@ -497,7 +519,7 @@ io.druid extendedset - 0.12.3 + ${extendedset.version} @@ -568,12 +590,12 @@ javax.servlet javax.servlet-api - 4.0.1 + ${javax.servlet-api.version} javax.mail mail - 1.5.0-b01 + ${mail.version} @@ -687,12 +709,12 @@ org.junit.jupiter junit-jupiter-engine - 5.3.1 + ${junit-jupiter-engine.version} org.hamcrest hamcrest-library - 1.3 + ${hamcrest-library.version} --> @@ -741,5 +763,11 @@ simplemagic ${simplemagic.version} + + + org.glassfish.jaxb + jaxb-runtime + ${jaxb-runtime.version} + From 5cbd4490cc472390648c6f41777b073b081b8054 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Wed, 18 Oct 2023 17:29:10 +0200 Subject: [PATCH 22/22] Back to Bouncycastle 1.69 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6cc84d15..40d56990 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ true 7dc8c6f 0.15.10 - 1.70 + 1.69 ${maven.build.timestamp} 1.4.1 3.8.0