Package com.biglybt.plugin.net.buddy
Class BuddyPluginNetwork
- java.lang.Object
-
- com.biglybt.plugin.net.buddy.BuddyPluginNetwork
-
public class BuddyPluginNetwork extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
BuddyPluginNetwork.DDBDetails
protected static interface
BuddyPluginNetwork.operationListener
private static class
BuddyPluginNetwork.PublishDetails
-
Field Summary
-
Constructor Summary
Constructors Modifier Constructor Description protected
BuddyPluginNetwork(PluginInterface _plugin_interface, BuddyPlugin _plugin, java.lang.String _target_network)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description BuddyPluginBuddy
addBuddy(java.lang.String key, int subsystem)
protected BuddyPluginBuddy
addBuddy(java.lang.String key, int subsystem, boolean authorised, boolean for_peek)
protected void
addRequestListener(BuddyPluginBuddyRequestListener listener)
protected void
checkAvailable()
protected void
checkBuddiesAndRepublish()
protected void
checkMaxMessageSize(int size)
void
checkMessagePending(int tick_count)
protected void
checkPersistentDispatch()
protected void
checkUnauthBloom()
protected void
closedown()
protected java.lang.String
decodeString(byte[] bytes)
protected BuddyPlugin.CryptoResult
decrypt(BuddyPluginBuddy buddy, byte[] content, java.lang.String forName)
BuddyPlugin.CryptoResult
decrypt(java.lang.String public_key, byte[] content)
protected void
deleteConfig()
protected BuddyPlugin.CryptoResult
encrypt(BuddyPluginBuddy buddy, byte[] payload)
BuddyPlugin.CryptoResult
encrypt(java.lang.String pk, byte[] payload, java.lang.String forWho)
protected void
fireAdded(BuddyPluginBuddy buddy)
protected void
fireDetailsChanged(BuddyPluginBuddy buddy)
protected void
fireRemoved(BuddyPluginBuddy buddy)
protected void
fireYGM(BuddyPluginBuddy[] from_buddies)
protected java.util.List<BuddyPluginBuddy>
getAllBuddies()
BuddyPluginAZ2
getAZ2Handler()
java.util.List<BuddyPluginBuddy>
getBuddies()
Returns authorised buddies onlyprotected java.io.File
getBuddyConfigDir()
BuddyPluginBuddy
getBuddyFromPublicKey(java.lang.String key)
protected int
getCurrentStatusSeq(BuddyPluginNetwork.DDBDetails details)
protected BuddyPluginNetwork.DDBDetails
getDDBDetails(java.lang.String net)
java.lang.String[]
getDDBNetworks()
protected MagnetPlugin
getMagnetPlugin()
protected GenericMessageRegistration
getMessageRegistration()
int
getOnlineStatus()
boolean
getPeersAreLANLocal()
protected BuddyPlugin
getPlugin()
PluginInterface
getPluginInterface()
protected java.util.List<java.lang.String>
getProfileInfo()
java.lang.String
getPublicKey()
protected SESecurityManager
getSecurityManager()
protected GenericMessageConnection
getSTSConnection(GenericMessageConnection connection, java.lang.String reason, SEPublicKeyLocator locator)
java.lang.String
getTargetNetwork()
protected java.io.InputStream
handleUPRSS(AZPluginConnection connection, BuddyPluginBuddy buddy, java.lang.String tag_or_category)
protected java.io.InputStream
handleUPTorrent(AZPluginConnection connection, BuddyPluginBuddy buddy, java.lang.String tag_or_category, byte[] hash)
boolean
isPublicNetwork()
protected void
loadConfig()
protected void
log(BuddyPluginBuddy buddy, java.lang.String str)
protected void
log(BuddyPluginBuddy buddy, java.lang.String str, java.lang.Throwable e)
protected void
logMessage(BuddyPluginBuddy buddy, java.lang.String str)
protected void
logMessage(BuddyPluginBuddy buddy, java.lang.String str, java.lang.Throwable e)
BuddyPluginBuddy
peekBuddy(java.lang.String key)
protected void
persistentDispatchInit()
protected void
persistentDispatchPending(BuddyPluginBuddy buddy)
protected java.util.Map
processInternalRequest(BuddyPluginBuddy from_buddy, java.util.Map request)
protected java.util.Map
readConfig()
protected java.util.Map
readConfigFile(java.io.File name)
protected void
reconnect()
protected void
registerMessageHandler()
protected void
removeBuddy(BuddyPluginBuddy buddy)
protected void
removeRequestListener(BuddyPluginBuddyRequestListener listener)
protected java.util.Map
requestReceived(BuddyPluginBuddy from_buddy, int subsystem, java.util.Map content)
protected void
rethrow(java.lang.String reason, java.lang.Throwable e)
protected void
saveConfig()
protected void
saveConfig(boolean force)
protected void
setClassicEnabledInternal(boolean enabled)
protected void
setConfigDirty()
protected void
setMessagePending(BuddyPluginBuddy buddy, BuddyPluginNetwork.operationListener _listener)
byte[]
sign(byte[] payload)
protected byte[]
signAndInsert(java.util.Map plain_stuff, java.lang.String reason)
protected boolean
startup(java.lang.String initial_nick, int initial_status, boolean initial_enabled)
protected boolean
stringsEqual(java.lang.String s1, java.lang.String s2)
protected boolean
tooManyUnauthConnections(java.lang.String originator)
protected void
updateBuddys()
protected void
updateBuddyStatus(BuddyPluginBuddy buddy)
protected void
updateIP()
protected void
updateListenPorts()
protected void
updateNickName(java.lang.String new_nick)
protected void
updateOnlineStatus(int new_status)
protected boolean
verify(byte[] pk, byte[] payload, byte[] signature)
protected boolean
verify(BuddyPluginBuddy buddy, byte[] payload, byte[] signature)
boolean
verify(java.lang.String pk, byte[] payload, byte[] signature)
protected java.util.Map
verifyAndExtract(byte[] signed_stuff, byte[] public_key)
boolean
verifyPublicKey(java.lang.String key)
protected void
writeConfig(java.util.Map map)
protected boolean
writeConfigFile(java.io.File name, java.util.Map data)
-
-
-
Field Detail
-
VERSION_INITIAL
public static final int VERSION_INITIAL
- See Also:
- Constant Field Values
-
VERSION_CHAT
public static final int VERSION_CHAT
- See Also:
- Constant Field Values
-
VERSION_CURRENT
public static final int VERSION_CURRENT
- See Also:
- Constant Field Values
-
MT_V3_CHAT
public static final int MT_V3_CHAT
- See Also:
- Constant Field Values
-
MAX_MESSAGE_SIZE
public static final int MAX_MESSAGE_SIZE
- See Also:
- Constant Field Values
-
SUBSYSTEM_INTERNAL
public static final int SUBSYSTEM_INTERNAL
- See Also:
- Constant Field Values
-
SUBSYSTEM_AZ2
public static final int SUBSYSTEM_AZ2
- See Also:
- Constant Field Values
-
SUBSYSTEM_AZ3
public static final int SUBSYSTEM_AZ3
- See Also:
- Constant Field Values
-
SUBSYSTEM_MSG_TYPE_BASE
protected static final int SUBSYSTEM_MSG_TYPE_BASE
- See Also:
- Constant Field Values
-
RT_INTERNAL_REQUEST_PING
protected static final int RT_INTERNAL_REQUEST_PING
- See Also:
- Constant Field Values
-
RT_INTERNAL_REPLY_PING
protected static final int RT_INTERNAL_REPLY_PING
- See Also:
- Constant Field Values
-
RT_INTERNAL_REQUEST_CLOSE
protected static final int RT_INTERNAL_REQUEST_CLOSE
- See Also:
- Constant Field Values
-
RT_INTERNAL_REPLY_CLOSE
protected static final int RT_INTERNAL_REPLY_CLOSE
- See Also:
- Constant Field Values
-
RT_INTERNAL_FRAGMENT
protected static final int RT_INTERNAL_FRAGMENT
- See Also:
- Constant Field Values
-
TRACE
protected static final boolean TRACE
- See Also:
- Constant Field Values
-
MAX_UNAUTH_BUDDIES
private static final int MAX_UNAUTH_BUDDIES
- See Also:
- Constant Field Values
-
BUDDY_STATUS_CHECK_PERIOD_MIN
private static final int BUDDY_STATUS_CHECK_PERIOD_MIN
- See Also:
- Constant Field Values
-
BUDDY_STATUS_CHECK_PERIOD_INC
private static final int BUDDY_STATUS_CHECK_PERIOD_INC
- See Also:
- Constant Field Values
-
TIMER_PERIOD
private static final int TIMER_PERIOD
- See Also:
- Constant Field Values
-
STATUS_REPUBLISH_PERIOD
protected static final int STATUS_REPUBLISH_PERIOD
- See Also:
- Constant Field Values
-
STATUS_REPUBLISH_PERIOD_WHEN_DIVERSIFIED
private static final int STATUS_REPUBLISH_PERIOD_WHEN_DIVERSIFIED
- See Also:
- Constant Field Values
-
STATUS_REPUBLISH_TICKS
private static final int STATUS_REPUBLISH_TICKS
- See Also:
- Constant Field Values
-
CHECK_YGM_PERIOD
private static final int CHECK_YGM_PERIOD
- See Also:
- Constant Field Values
-
CHECK_YGM_TICKS
private static final int CHECK_YGM_TICKS
- See Also:
- Constant Field Values
-
YGM_BLOOM_LIFE_PERIOD
private static final int YGM_BLOOM_LIFE_PERIOD
- See Also:
- Constant Field Values
-
YGM_BLOOM_LIFE_TICKS
private static final int YGM_BLOOM_LIFE_TICKS
- See Also:
- Constant Field Values
-
SAVE_CONFIG_PERIOD
private static final int SAVE_CONFIG_PERIOD
- See Also:
- Constant Field Values
-
SAVE_CONFIG_TICKS
private static final int SAVE_CONFIG_TICKS
- See Also:
- Constant Field Values
-
PERSISTENT_MSG_RETRY_PERIOD
public static final int PERSISTENT_MSG_RETRY_PERIOD
- See Also:
- Constant Field Values
-
PERSISTENT_MSG_CHECK_PERIOD
private static final int PERSISTENT_MSG_CHECK_PERIOD
- See Also:
- Constant Field Values
-
PERSISTENT_MSG_CHECK_TICKS
private static final int PERSISTENT_MSG_CHECK_TICKS
- See Also:
- Constant Field Values
-
UNAUTH_BLOOM_RECREATE
private static final int UNAUTH_BLOOM_RECREATE
- See Also:
- Constant Field Values
-
UNAUTH_BLOOM_CHUNK
private static final int UNAUTH_BLOOM_CHUNK
- See Also:
- Constant Field Values
-
BLOOM_CHECK_PERIOD
private static final int BLOOM_CHECK_PERIOD
- See Also:
- Constant Field Values
-
BLOOM_CHECK_TICKS
private static final int BLOOM_CHECK_TICKS
- See Also:
- Constant Field Values
-
STREAM_CRYPTO
public static final int STREAM_CRYPTO
- See Also:
- Constant Field Values
-
BLOCK_CRYPTO
public static final int BLOCK_CRYPTO
- See Also:
- Constant Field Values
-
plugin_interface
private final PluginInterface plugin_interface
-
plugin
private final BuddyPlugin plugin
-
target_network
private final java.lang.String target_network
-
config_file_name
private final java.lang.String config_file_name
-
ready_to_publish
private boolean ready_to_publish
-
ddb_details
private CopyOnWriteList<BuddyPluginNetwork.DDBDetails> ddb_details
-
unauth_bloom
private BloomFilter unauth_bloom
-
unauth_bloom_create_time
private long unauth_bloom_create_time
-
ygm_unauth_bloom
private BloomFilter ygm_unauth_bloom
-
request_listeners
private CopyOnWriteList<BuddyPluginBuddyRequestListener> request_listeners
-
buddies
private java.util.List<BuddyPluginBuddy> buddies
-
connected_at_close
private java.util.List<BuddyPluginBuddy> connected_at_close
-
buddies_map
private java.util.Map<java.lang.String,BuddyPluginBuddy> buddies_map
-
sec_man
private SESecurityManager sec_man
-
ecc_handler
private CryptoHandler ecc_handler
-
msg_registration
private GenericMessageRegistration msg_registration
-
config_dirty
private boolean config_dirty
-
random
private java.util.Random random
-
az2_handler
private BuddyPluginAZ2 az2_handler
-
pd_preinit
private java.util.Set<BuddyPluginBuddy> pd_preinit
-
pd_queue
private java.util.List<BuddyPluginBuddy> pd_queue
-
pd_queue_sem
private AESemaphore pd_queue_sem
-
pd_thread
private AEThread2 pd_thread
-
-
Constructor Detail
-
BuddyPluginNetwork
protected BuddyPluginNetwork(PluginInterface _plugin_interface, BuddyPlugin _plugin, java.lang.String _target_network)
-
-
Method Detail
-
getPlugin
protected BuddyPlugin getPlugin()
-
getTargetNetwork
public java.lang.String getTargetNetwork()
-
isPublicNetwork
public boolean isPublicNetwork()
-
getDDBNetworks
public java.lang.String[] getDDBNetworks()
-
checkAvailable
protected void checkAvailable() throws BuddyPluginException
- Throws:
BuddyPluginException
-
getPeersAreLANLocal
public boolean getPeersAreLANLocal()
-
startup
protected boolean startup(java.lang.String initial_nick, int initial_status, boolean initial_enabled)
-
reconnect
protected void reconnect()
-
setClassicEnabledInternal
protected void setClassicEnabledInternal(boolean enabled)
-
getOnlineStatus
public int getOnlineStatus()
-
getProfileInfo
protected java.util.List<java.lang.String> getProfileInfo()
-
fireAdded
protected void fireAdded(BuddyPluginBuddy buddy)
-
fireRemoved
protected void fireRemoved(BuddyPluginBuddy buddy)
-
fireDetailsChanged
protected void fireDetailsChanged(BuddyPluginBuddy buddy)
-
registerMessageHandler
protected void registerMessageHandler()
-
getSTSConnection
protected GenericMessageConnection getSTSConnection(GenericMessageConnection connection, java.lang.String reason, SEPublicKeyLocator locator) throws java.lang.Exception
- Throws:
java.lang.Exception
-
tooManyUnauthConnections
protected boolean tooManyUnauthConnections(java.lang.String originator)
-
checkUnauthBloom
protected void checkUnauthBloom()
-
checkMaxMessageSize
protected void checkMaxMessageSize(int size) throws BuddyPluginException
- Throws:
BuddyPluginException
-
checkPersistentDispatch
protected void checkPersistentDispatch()
-
persistentDispatchInit
protected void persistentDispatchInit()
-
persistentDispatchPending
protected void persistentDispatchPending(BuddyPluginBuddy buddy)
-
processInternalRequest
protected java.util.Map processInternalRequest(BuddyPluginBuddy from_buddy, java.util.Map request) throws BuddyPluginException
- Throws:
BuddyPluginException
-
updateListenPorts
protected void updateListenPorts()
-
updateIP
protected void updateIP()
-
updateNickName
protected void updateNickName(java.lang.String new_nick)
-
updateOnlineStatus
protected void updateOnlineStatus(int new_status)
-
stringsEqual
protected boolean stringsEqual(java.lang.String s1, java.lang.String s2)
-
getDDBDetails
protected BuddyPluginNetwork.DDBDetails getDDBDetails(java.lang.String net)
-
getCurrentStatusSeq
protected int getCurrentStatusSeq(BuddyPluginNetwork.DDBDetails details)
-
closedown
protected void closedown()
-
setConfigDirty
protected void setConfigDirty()
-
loadConfig
protected void loadConfig()
-
decodeString
protected java.lang.String decodeString(byte[] bytes)
-
saveConfig
protected void saveConfig()
-
saveConfig
protected void saveConfig(boolean force)
-
addBuddy
public BuddyPluginBuddy addBuddy(java.lang.String key, int subsystem)
-
addBuddy
protected BuddyPluginBuddy addBuddy(java.lang.String key, int subsystem, boolean authorised, boolean for_peek)
-
peekBuddy
public BuddyPluginBuddy peekBuddy(java.lang.String key)
-
removeBuddy
protected void removeBuddy(BuddyPluginBuddy buddy)
-
readConfig
protected java.util.Map readConfig()
-
writeConfig
protected void writeConfig(java.util.Map map)
-
deleteConfig
protected void deleteConfig()
-
readConfigFile
protected java.util.Map readConfigFile(java.io.File name)
-
writeConfigFile
protected boolean writeConfigFile(java.io.File name, java.util.Map data)
-
getBuddyConfigDir
protected java.io.File getBuddyConfigDir()
-
getAZ2Handler
public BuddyPluginAZ2 getAZ2Handler()
-
getPublicKey
public java.lang.String getPublicKey()
-
verifyPublicKey
public boolean verifyPublicKey(java.lang.String key)
-
checkBuddiesAndRepublish
protected void checkBuddiesAndRepublish()
-
updateBuddys
protected void updateBuddys()
-
updateBuddyStatus
protected void updateBuddyStatus(BuddyPluginBuddy buddy)
-
verifyAndExtract
protected java.util.Map verifyAndExtract(byte[] signed_stuff, byte[] public_key) throws BuddyPluginException
- Throws:
BuddyPluginException
-
signAndInsert
protected byte[] signAndInsert(java.util.Map plain_stuff, java.lang.String reason) throws BuddyPluginException
- Throws:
BuddyPluginException
-
verify
public boolean verify(java.lang.String pk, byte[] payload, byte[] signature) throws BuddyPluginException
- Throws:
BuddyPluginException
-
verify
protected boolean verify(BuddyPluginBuddy buddy, byte[] payload, byte[] signature) throws BuddyPluginException
- Throws:
BuddyPluginException
-
verify
protected boolean verify(byte[] pk, byte[] payload, byte[] signature) throws BuddyPluginException
- Throws:
BuddyPluginException
-
sign
public byte[] sign(byte[] payload) throws BuddyPluginException
- Throws:
BuddyPluginException
-
encrypt
protected BuddyPlugin.CryptoResult encrypt(BuddyPluginBuddy buddy, byte[] payload) throws BuddyPluginException
- Throws:
BuddyPluginException
-
encrypt
public BuddyPlugin.CryptoResult encrypt(java.lang.String pk, byte[] payload, java.lang.String forWho) throws BuddyPluginException
- Throws:
BuddyPluginException
-
decrypt
protected BuddyPlugin.CryptoResult decrypt(BuddyPluginBuddy buddy, byte[] content, java.lang.String forName) throws BuddyPluginException
- Throws:
BuddyPluginException
-
decrypt
public BuddyPlugin.CryptoResult decrypt(java.lang.String public_key, byte[] content) throws BuddyPluginException
- Throws:
BuddyPluginException
-
setMessagePending
protected void setMessagePending(BuddyPluginBuddy buddy, BuddyPluginNetwork.operationListener _listener) throws BuddyPluginException
- Throws:
BuddyPluginException
-
checkMessagePending
public void checkMessagePending(int tick_count)
-
getBuddyFromPublicKey
public BuddyPluginBuddy getBuddyFromPublicKey(java.lang.String key)
-
getPluginInterface
public PluginInterface getPluginInterface()
-
getSecurityManager
protected SESecurityManager getSecurityManager()
-
getMessageRegistration
protected GenericMessageRegistration getMessageRegistration()
-
getBuddies
public java.util.List<BuddyPluginBuddy> getBuddies()
Returns authorised buddies only
-
getAllBuddies
protected java.util.List<BuddyPluginBuddy> getAllBuddies()
-
requestReceived
protected java.util.Map requestReceived(BuddyPluginBuddy from_buddy, int subsystem, java.util.Map content) throws BuddyPluginException
- Throws:
BuddyPluginException
-
fireYGM
protected void fireYGM(BuddyPluginBuddy[] from_buddies)
-
rethrow
protected void rethrow(java.lang.String reason, java.lang.Throwable e) throws BuddyPluginException
- Throws:
BuddyPluginException
-
handleUPRSS
protected java.io.InputStream handleUPRSS(AZPluginConnection connection, BuddyPluginBuddy buddy, java.lang.String tag_or_category) throws IPCException
- Throws:
IPCException
-
handleUPTorrent
protected java.io.InputStream handleUPTorrent(AZPluginConnection connection, BuddyPluginBuddy buddy, java.lang.String tag_or_category, byte[] hash) throws IPCException
- Throws:
IPCException
-
getMagnetPlugin
protected MagnetPlugin getMagnetPlugin()
-
addRequestListener
protected void addRequestListener(BuddyPluginBuddyRequestListener listener)
-
removeRequestListener
protected void removeRequestListener(BuddyPluginBuddyRequestListener listener)
-
logMessage
protected void logMessage(BuddyPluginBuddy buddy, java.lang.String str)
-
logMessage
protected void logMessage(BuddyPluginBuddy buddy, java.lang.String str, java.lang.Throwable e)
-
log
protected void log(BuddyPluginBuddy buddy, java.lang.String str)
-
log
protected void log(BuddyPluginBuddy buddy, java.lang.String str, java.lang.Throwable e)
-
-