List vs_data = new ArrayList();
for (int i=0;i<plugins.length;i++){
PluginInterface plugin = plugins[i];
String pid = plugin.getPluginID();
String info = plugin.getPluginconfig().getPluginStringParameter( "plugin.info" );
// filter out built-in and core ones
if ( ( info != null && info.length() > 0 ) ||
( !pid.startsWith( "<" ) &&
!pid.startsWith( "azbp" ) &&
!pid.startsWith( "azupdater" ) &&
!pid.startsWith( "azplatform" ) &&
!pids.contains( pid ))){
if ( info != null && info.length() > 0 ){
if( info.length() < 256 ){
pid += ":" + info;
}else{
Debug.out( "Plugin '" + pid + "' reported excessive info string '" + info + "'" );
}
}
pids.add( pid );
}
Map data = plugin.getPluginconfig().getPluginMapParameter( "plugin.versionserver.data", null );
if ( data != null ){
Map payload = new HashMap();
byte[] data_bytes = BEncoder.encode( data );
if ( data_bytes.length > 16*1024 ){
Debug.out( "Plugin '" + pid + "' reported excessive version server data (length=" + data_bytes.length + ")" );
payload.put( "error", "data too long: " + data_bytes.length );
}else{
payload.put( "data", data_bytes );
}
payload.put( "id", pid);
payload.put( "version", plugin.getPluginVersion());
vs_data.add( payload );
}
}
message.put( "plugins", pids );