@@ -2788,6 +2788,7 @@ public void tagTypeAdded(TagManager manager, TagType tag_type){
2788
2788
private static final int FT_COUNT = 61 ;
2789
2789
private static final int FT_TRACKER_PEERS = 62 ;
2790
2790
private static final int FT_TRACKER_SEEDS = 63 ;
2791
+ private static final int FT_PLUGIN_OPTION = 64 ;
2791
2792
2792
2793
static {
2793
2794
fn_map .put ( "hastag" , FT_HAS_TAG );
@@ -2867,6 +2868,8 @@ public void tagTypeAdded(TagManager manager, TagType tag_type){
2867
2868
2868
2869
fn_map .put ( "trackerpeers" , FT_TRACKER_PEERS );
2869
2870
fn_map .put ( "trackerseeds" , FT_TRACKER_SEEDS );
2871
+
2872
+ fn_map .put ( "pluginoption" , FT_PLUGIN_OPTION );
2870
2873
}
2871
2874
2872
2875
private static final int DEP_STATIC = 0 ;
@@ -3582,6 +3585,12 @@ public void tagTypeAdded(TagManager manager, TagType tag_type){
3582
3585
3583
3586
break ;
3584
3587
}
3588
+ case FT_PLUGIN_OPTION :{
3589
+
3590
+ params_ok = num_params == 2 && getStringLiteral ( params , 0 ) && getStringLiteral ( params , 1 );
3591
+
3592
+ break ;
3593
+ }
3585
3594
default :{
3586
3595
3587
3596
throw ( new RuntimeException ( "Unsupported function '" + fn_type + "'" ));
@@ -4622,15 +4631,15 @@ public void tagTypeAdded(TagManager manager, TagType tag_type){
4622
4631
return ( -1 );
4623
4632
}
4624
4633
4625
- String tracker = getStringParam ( params , 0 , debug ).toLowerCase ();
4634
+ String tracker = getStringParam ( params , 0 , debug ).toLowerCase ( Locale . US );
4626
4635
4627
4636
String target = null ;
4628
4637
4629
4638
String app_name = Constants .APP_NAME ;
4630
4639
4631
- if ( tracker .equals ( app_name .toLowerCase () + "dht" )){
4640
+ if ( tracker .equals ( app_name .toLowerCase ( Locale . US ) + "dht" ) || tracker . equals ( "dht" )){
4632
4641
4633
- target = app_name ;
4642
+ target = "dht" ;
4634
4643
4635
4644
}else if ( tracker .equals ( "mldht" )){
4636
4645
@@ -4653,7 +4662,7 @@ public void tagTypeAdded(TagManager manager, TagType tag_type){
4653
4662
4654
4663
int type = tps .getType ();
4655
4664
4656
- if ( type == TrackerPeerSource .TP_DHT && target == app_name ){
4665
+ if ( type == TrackerPeerSource .TP_DHT && target . equals ( "dht" ) ){
4657
4666
4658
4667
if ( fn_type == FT_TRACKER_PEERS ){
4659
4668
@@ -4688,6 +4697,49 @@ public void tagTypeAdded(TagManager manager, TagType tag_type){
4688
4697
4689
4698
return ( -1 );
4690
4699
}
4700
+ case FT_PLUGIN_OPTION :{
4701
+
4702
+ String plugin_id = getStringParam ( params , 0 , debug ).toLowerCase ();
4703
+
4704
+ if ( plugin_id .equalsIgnoreCase ( "dht" )){
4705
+
4706
+ plugin_id = "azbpdhdtracker" ;
4707
+
4708
+ }else if ( plugin_id .equalsIgnoreCase ( "I2P" )){
4709
+
4710
+ plugin_id = "azneti2phelper" ;
4711
+ }
4712
+
4713
+ String attr = getStringParam ( params , 1 , debug ).toLowerCase ();
4714
+
4715
+ if ( !attr .equals ( DownloadManagerState .AT_PO_ENABLE_ANNOUNCE )){
4716
+
4717
+ setError ( "Unsupported plugin option attribute type: " + attr );
4718
+
4719
+ return ( null );
4720
+ }
4721
+
4722
+ boolean value = true ; // default
4723
+
4724
+ Map all_opts = dm .getDownloadState ().getMapAttribute ( DownloadManagerState .AT_PLUGIN_OPTIONS );
4725
+
4726
+ if ( all_opts != null ){
4727
+
4728
+ Map opts = (Map )all_opts .get ( plugin_id .toLowerCase ( Locale .US ));
4729
+
4730
+ if ( opts != null ){
4731
+
4732
+ Number e = (Number )opts .get ( DownloadManagerState .AT_PO_ENABLE_ANNOUNCE );
4733
+
4734
+ if ( e != null ){
4735
+
4736
+ value = e .intValue () != 0 ;
4737
+ }
4738
+ }
4739
+ }
4740
+
4741
+ return ( value );
4742
+ }
4691
4743
}
4692
4744
4693
4745
return ( false );
0 commit comments