Package com.biglybt.ui.webplugin
Class WebPlugin
- java.lang.Object
-
- com.biglybt.ui.webplugin.WebPlugin
-
- All Implemented Interfaces:
Plugin
,TrackerWebPageGenerator
- Direct Known Subclasses:
ManagerUtils.UnloadableWebPlugin
,RSSGeneratorPlugin
public class WebPlugin extends java.lang.Object implements Plugin, TrackerWebPageGenerator
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
CONFIG_ACCESS
java.lang.String
CONFIG_ACCESS_DEFAULT
static java.lang.String
CONFIG_BIND_IP
java.lang.String
CONFIG_BIND_IP_DEFAULT
static java.lang.String
CONFIG_ENABLE
boolean
CONFIG_ENABLE_DEFAULT
static java.lang.String
CONFIG_HOME_PAGE
java.lang.String
CONFIG_HOME_PAGE_DEFAULT
static java.lang.String
CONFIG_MODE
static java.lang.String
CONFIG_MODE_DEFAULT
static java.lang.String
CONFIG_MODE_FULL
private BasicPluginConfigModel
config_model
static java.lang.String
CONFIG_NO_PW_WHITELIST
static java.lang.String
CONFIG_NO_PW_WHITELIST_DEFAULT
static java.lang.String
CONFIG_PAIRING_AUTO_AUTH
static boolean
CONFIG_PAIRING_AUTO_AUTH_DEFAULT
static java.lang.String
CONFIG_PAIRING_ENABLE
static boolean
CONFIG_PAIRING_ENABLE_DEFAULT
static java.lang.String
CONFIG_PASSWORD
static byte[]
CONFIG_PASSWORD_DEFAULT
static java.lang.String
CONFIG_PASSWORD_ENABLE
static boolean
CONFIG_PASSWORD_ENABLE_DEFAULT
static java.lang.String
CONFIG_PORT
int
CONFIG_PORT_DEFAULT
static java.lang.String
CONFIG_PORT_OVERRIDE
static java.lang.String
CONFIG_PROTOCOL
static java.lang.String
CONFIG_PROTOCOL_DEFAULT
static java.lang.String
CONFIG_ROOT_DIR
java.lang.String
CONFIG_ROOT_DIR_DEFAULT
static java.lang.String
CONFIG_ROOT_RESOURCE
java.lang.String
CONFIG_ROOT_RESOURCE_DEFAULT
static java.lang.String
CONFIG_UPNP_ENABLE
boolean
CONFIG_UPNP_ENABLE_DEFAULT
static java.lang.String
CONFIG_USER
static java.lang.String
CONFIG_USER_DEFAULT
private java.io.File
file_root
private static java.lang.String
GRACE_PERIOD_MARKER
private java.lang.String
home_page
private boolean
ip_range_all
private java.util.List<IPRange>
ip_ranges
private LoggerChannel
log
private static int
LOGOUT_GRACE_MILLIS
private java.util.Map<java.lang.String,java.lang.Long>
logout_timer
private boolean
na_intf_listener_added
private static AsyncDispatcher
network_dispatcher
protected static java.lang.String
NL
private StringParameter
p_no_pw_whitelist
private PasswordParameter
p_password
private java.lang.String
p_sid
private BooleanParameter
p_upnp_enable
private StringParameter
p_user_name
private java.lang.String
pairing_access_code
private PairingManagerListener
pairing_listener
static java.lang.String
PAIRING_MIGRATED
private java.lang.String
pairing_session_code
static java.lang.String
PAIRING_SESSION_KEY
private StringParameter
param_access
private BooleanParameter
param_auto_auth
private StringParameter
param_bind
private StringParameter
param_home
private InfoParameter
param_i2p_dest
private IntParameter
param_port
private IntParameter
param_port_or
private StringListParameter
param_protocol
private StringParameter
param_rootdir
private StringParameter
param_rootres
private InfoParameter
param_tor_dest
private PluginConfig
plugin_config
private boolean
plugin_enabled
protected PluginInterface
plugin_interface
static java.lang.String
PR_ACCESS
static java.lang.String
PR_BIND_IP
static java.lang.String
PR_CONFIG_MODEL
static java.lang.String
PR_CONFIG_MODEL_PARAMS
static java.lang.String
PR_DISABLABLE
static java.lang.String
PR_ENABLE
static java.lang.String
PR_ENABLE_I2P
static java.lang.String
PR_ENABLE_KEEP_ALIVE
static java.lang.String
PR_ENABLE_PAIRING
static java.lang.String
PR_ENABLE_TOR
static java.lang.String
PR_ENABLE_UPNP
static java.lang.String
PR_HIDE_RESOURCE_CONFIG
static java.lang.String
PR_HOME_PAGE
static java.lang.String
PR_LOG
static java.lang.String
PR_NON_BLOCKING
static java.lang.String
PR_PAIRING_SID
static java.lang.String
PR_PORT
static java.lang.String
PR_ROOT_DIR
static java.lang.String
PR_ROOT_RESOURCE
static java.lang.String
PR_VIEW_MODEL
private java.util.Properties
properties
static java.lang.String
PROPERTIES_MIGRATED
private BooleanParameter
pw_enable
private java.lang.String
resource_root
private java.lang.String
root_dir
private boolean
setting_auto_auth
private static java.lang.ThreadLocal<java.lang.String>
tls
private TrackerWebContext
tracker_context
private boolean
unloaded
private UPnPMapping
upnp_mapping
private BasicPluginViewModel
view_model
protected static java.io.File[]
welcome_files
protected static java.lang.String[]
welcome_pages
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
generate(TrackerWebPageRequest request, TrackerWebPageResponse response)
private boolean
generate2(TrackerWebPageRequest request, TrackerWebPageResponse response, boolean is_tunnel)
boolean
generateSupport(TrackerWebPageRequest request, TrackerWebPageResponse response)
private java.lang.String
getArgumentFromURL(java.net.URL url, java.lang.String argument)
protected BasicPluginConfigModel
getConfigModel()
private java.lang.String
getConnectionTestURL(java.lang.String sid)
int
getPort()
java.lang.String
getProtocol()
java.net.InetAddress
getServerBindIP()
int
getServerPort()
protected BasicPluginViewModel
getViewModel()
private byte[]
handleTunnelRequest(java.net.InetAddress originator, java.lang.String endpoint_url, byte[] request_bytes)
private boolean
hasOurCookie(java.lang.String cookies)
void
initialize(PluginInterface _plugin_interface)
This method is called when the Plugin is loaded by the clientprotected void
initStage(int num)
protected boolean
isPluginEnabled()
protected void
log(java.lang.String str)
protected void
log(java.lang.String str, java.lang.Throwable e)
private void
recordAuthRequest(java.lang.String client_ip, boolean good)
private void
recordRequest(TrackerWebPageRequest request, boolean good, boolean is_tunnel)
private boolean
returnJSON(TrackerWebPageResponse response, java.lang.String str)
private boolean
returnStuff(TrackerWebPageResponse response, java.lang.String content_type, java.lang.String str)
private boolean
returnTextPlain(TrackerWebPageResponse response, java.lang.String str)
private boolean
sameAddress(java.net.InetAddress a1, java.net.InetAddress a2)
private void
setupAccess()
protected void
setupAutoAuth()
protected void
setupPairing(java.lang.String sid, boolean pairing_enabled)
private void
setupResources()
protected void
setupServer()
private void
setupSessionCode(java.lang.String key)
protected void
setupUPnP()
void
setUserAndPassword(java.lang.String user, java.lang.String password)
protected void
unloadPlugin()
void
unsetUserAndPassword()
protected void
updatePairing(PairingConnectionData cd)
protected void
updatePairing(java.lang.String sid)
protected boolean
useFile(TrackerWebPageRequest request, TrackerWebPageResponse response, java.io.File root, java.lang.String relative_url)
this method can be over-ridden to handle custom file delivery-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.biglybt.pif.Plugin
getInitialProperties
-
-
-
-
Field Detail
-
PR_ENABLE
public static final java.lang.String PR_ENABLE
- See Also:
- Constant Field Values
-
PR_DISABLABLE
public static final java.lang.String PR_DISABLABLE
- See Also:
- Constant Field Values
-
PR_PORT
public static final java.lang.String PR_PORT
- See Also:
- Constant Field Values
-
PR_BIND_IP
public static final java.lang.String PR_BIND_IP
- See Also:
- Constant Field Values
-
PR_ROOT_RESOURCE
public static final java.lang.String PR_ROOT_RESOURCE
- See Also:
- Constant Field Values
-
PR_HOME_PAGE
public static final java.lang.String PR_HOME_PAGE
- See Also:
- Constant Field Values
-
PR_ROOT_DIR
public static final java.lang.String PR_ROOT_DIR
- See Also:
- Constant Field Values
-
PR_ACCESS
public static final java.lang.String PR_ACCESS
- See Also:
- Constant Field Values
-
PR_LOG
public static final java.lang.String PR_LOG
- See Also:
- Constant Field Values
-
PR_CONFIG_MODEL_PARAMS
public static final java.lang.String PR_CONFIG_MODEL_PARAMS
- See Also:
- Constant Field Values
-
PR_CONFIG_MODEL
public static final java.lang.String PR_CONFIG_MODEL
- See Also:
- Constant Field Values
-
PR_VIEW_MODEL
public static final java.lang.String PR_VIEW_MODEL
- See Also:
- Constant Field Values
-
PR_HIDE_RESOURCE_CONFIG
public static final java.lang.String PR_HIDE_RESOURCE_CONFIG
- See Also:
- Constant Field Values
-
PR_ENABLE_KEEP_ALIVE
public static final java.lang.String PR_ENABLE_KEEP_ALIVE
- See Also:
- Constant Field Values
-
PR_PAIRING_SID
public static final java.lang.String PR_PAIRING_SID
- See Also:
- Constant Field Values
-
PR_NON_BLOCKING
public static final java.lang.String PR_NON_BLOCKING
- See Also:
- Constant Field Values
-
PR_ENABLE_PAIRING
public static final java.lang.String PR_ENABLE_PAIRING
- See Also:
- Constant Field Values
-
PR_ENABLE_I2P
public static final java.lang.String PR_ENABLE_I2P
- See Also:
- Constant Field Values
-
PR_ENABLE_TOR
public static final java.lang.String PR_ENABLE_TOR
- See Also:
- Constant Field Values
-
PR_ENABLE_UPNP
public static final java.lang.String PR_ENABLE_UPNP
- See Also:
- Constant Field Values
-
PROPERTIES_MIGRATED
public static final java.lang.String PROPERTIES_MIGRATED
- See Also:
- Constant Field Values
-
PAIRING_MIGRATED
public static final java.lang.String PAIRING_MIGRATED
- See Also:
- Constant Field Values
-
PAIRING_SESSION_KEY
public static final java.lang.String PAIRING_SESSION_KEY
- See Also:
- Constant Field Values
-
CONFIG_PASSWORD_ENABLE
public static final java.lang.String CONFIG_PASSWORD_ENABLE
- See Also:
- Constant Field Values
-
CONFIG_PASSWORD_ENABLE_DEFAULT
public static final boolean CONFIG_PASSWORD_ENABLE_DEFAULT
- See Also:
- Constant Field Values
-
CONFIG_NO_PW_WHITELIST
public static final java.lang.String CONFIG_NO_PW_WHITELIST
- See Also:
- Constant Field Values
-
CONFIG_NO_PW_WHITELIST_DEFAULT
public static final java.lang.String CONFIG_NO_PW_WHITELIST_DEFAULT
- See Also:
- Constant Field Values
-
CONFIG_PAIRING_ENABLE
public static final java.lang.String CONFIG_PAIRING_ENABLE
- See Also:
- Constant Field Values
-
CONFIG_PAIRING_ENABLE_DEFAULT
public static final boolean CONFIG_PAIRING_ENABLE_DEFAULT
- See Also:
- Constant Field Values
-
CONFIG_PORT_OVERRIDE
public static final java.lang.String CONFIG_PORT_OVERRIDE
- See Also:
- Constant Field Values
-
CONFIG_PAIRING_AUTO_AUTH
public static final java.lang.String CONFIG_PAIRING_AUTO_AUTH
- See Also:
- Constant Field Values
-
CONFIG_PAIRING_AUTO_AUTH_DEFAULT
public static final boolean CONFIG_PAIRING_AUTO_AUTH_DEFAULT
- See Also:
- Constant Field Values
-
CONFIG_ENABLE
public static final java.lang.String CONFIG_ENABLE
- See Also:
- Constant Field Values
-
CONFIG_ENABLE_DEFAULT
public boolean CONFIG_ENABLE_DEFAULT
-
CONFIG_USER
public static final java.lang.String CONFIG_USER
- See Also:
- Constant Field Values
-
CONFIG_USER_DEFAULT
public static final java.lang.String CONFIG_USER_DEFAULT
- See Also:
- Constant Field Values
-
CONFIG_PASSWORD
public static final java.lang.String CONFIG_PASSWORD
- See Also:
- Constant Field Values
-
CONFIG_PASSWORD_DEFAULT
public static final byte[] CONFIG_PASSWORD_DEFAULT
-
CONFIG_PORT
public static final java.lang.String CONFIG_PORT
- See Also:
- Constant Field Values
-
CONFIG_PORT_DEFAULT
public int CONFIG_PORT_DEFAULT
-
CONFIG_BIND_IP
public static final java.lang.String CONFIG_BIND_IP
- See Also:
- Constant Field Values
-
CONFIG_BIND_IP_DEFAULT
public java.lang.String CONFIG_BIND_IP_DEFAULT
-
CONFIG_PROTOCOL
public static final java.lang.String CONFIG_PROTOCOL
- See Also:
- Constant Field Values
-
CONFIG_PROTOCOL_DEFAULT
public static final java.lang.String CONFIG_PROTOCOL_DEFAULT
- See Also:
- Constant Field Values
-
CONFIG_UPNP_ENABLE
public static final java.lang.String CONFIG_UPNP_ENABLE
- See Also:
- Constant Field Values
-
CONFIG_UPNP_ENABLE_DEFAULT
public boolean CONFIG_UPNP_ENABLE_DEFAULT
-
CONFIG_HOME_PAGE
public static final java.lang.String CONFIG_HOME_PAGE
- See Also:
- Constant Field Values
-
CONFIG_HOME_PAGE_DEFAULT
public java.lang.String CONFIG_HOME_PAGE_DEFAULT
-
CONFIG_ROOT_DIR
public static final java.lang.String CONFIG_ROOT_DIR
- See Also:
- Constant Field Values
-
CONFIG_ROOT_DIR_DEFAULT
public java.lang.String CONFIG_ROOT_DIR_DEFAULT
-
CONFIG_ROOT_RESOURCE
public static final java.lang.String CONFIG_ROOT_RESOURCE
- See Also:
- Constant Field Values
-
CONFIG_ROOT_RESOURCE_DEFAULT
public java.lang.String CONFIG_ROOT_RESOURCE_DEFAULT
-
CONFIG_MODE
public static final java.lang.String CONFIG_MODE
- See Also:
- Constant Field Values
-
CONFIG_MODE_FULL
public static final java.lang.String CONFIG_MODE_FULL
- See Also:
- Constant Field Values
-
CONFIG_MODE_DEFAULT
public static final java.lang.String CONFIG_MODE_DEFAULT
- See Also:
- Constant Field Values
-
CONFIG_ACCESS
public static final java.lang.String CONFIG_ACCESS
- See Also:
- Constant Field Values
-
CONFIG_ACCESS_DEFAULT
public java.lang.String CONFIG_ACCESS_DEFAULT
-
NL
protected static final java.lang.String NL
- See Also:
- Constant Field Values
-
welcome_pages
protected static final java.lang.String[] welcome_pages
-
welcome_files
protected static java.io.File[] welcome_files
-
network_dispatcher
private static final AsyncDispatcher network_dispatcher
-
plugin_interface
protected PluginInterface plugin_interface
-
log
private LoggerChannel log
-
plugin_config
private PluginConfig plugin_config
-
view_model
private BasicPluginViewModel view_model
-
config_model
private BasicPluginConfigModel config_model
-
p_sid
private java.lang.String p_sid
-
param_home
private StringParameter param_home
-
param_rootdir
private StringParameter param_rootdir
-
param_rootres
private StringParameter param_rootres
-
param_port
private IntParameter param_port
-
param_protocol
private StringListParameter param_protocol
-
param_bind
private StringParameter param_bind
-
param_access
private StringParameter param_access
-
param_i2p_dest
private InfoParameter param_i2p_dest
-
param_tor_dest
private InfoParameter param_tor_dest
-
p_upnp_enable
private BooleanParameter p_upnp_enable
-
pw_enable
private BooleanParameter pw_enable
-
p_user_name
private StringParameter p_user_name
-
p_password
private PasswordParameter p_password
-
p_no_pw_whitelist
private StringParameter p_no_pw_whitelist
-
param_auto_auth
private BooleanParameter param_auto_auth
-
param_port_or
private IntParameter param_port_or
-
setting_auto_auth
private boolean setting_auto_auth
-
pairing_access_code
private java.lang.String pairing_access_code
-
pairing_session_code
private java.lang.String pairing_session_code
-
plugin_enabled
private boolean plugin_enabled
-
na_intf_listener_added
private boolean na_intf_listener_added
-
home_page
private java.lang.String home_page
-
file_root
private java.io.File file_root
-
resource_root
private java.lang.String resource_root
-
root_dir
private java.lang.String root_dir
-
ip_range_all
private boolean ip_range_all
-
ip_ranges
private java.util.List<IPRange> ip_ranges
-
tracker_context
private TrackerWebContext tracker_context
-
upnp_mapping
private UPnPMapping upnp_mapping
-
pairing_listener
private PairingManagerListener pairing_listener
-
properties
private java.util.Properties properties
-
tls
private static java.lang.ThreadLocal<java.lang.String> tls
-
LOGOUT_GRACE_MILLIS
private static final int LOGOUT_GRACE_MILLIS
- See Also:
- Constant Field Values
-
GRACE_PERIOD_MARKER
private static final java.lang.String GRACE_PERIOD_MARKER
- See Also:
- Constant Field Values
-
logout_timer
private java.util.Map<java.lang.String,java.lang.Long> logout_timer
-
unloaded
private boolean unloaded
-
-
Method Detail
-
initialize
public void initialize(PluginInterface _plugin_interface) throws PluginException
Description copied from interface:Plugin
This method is called when the Plugin is loaded by the client- Specified by:
initialize
in interfacePlugin
- Parameters:
_plugin_interface
- the interface that the plugin must use to communicate with the client- Throws:
PluginException
-
initStage
protected void initStage(int num)
-
getConnectionTestURL
private java.lang.String getConnectionTestURL(java.lang.String sid)
-
isPluginEnabled
protected boolean isPluginEnabled()
-
unloadPlugin
protected void unloadPlugin()
-
setupResources
private void setupResources()
-
setupAccess
private void setupAccess()
-
setupServer
protected void setupServer()
-
hasOurCookie
private boolean hasOurCookie(java.lang.String cookies)
-
sameAddress
private boolean sameAddress(java.net.InetAddress a1, java.net.InetAddress a2)
-
setupUPnP
protected void setupUPnP()
-
setupPairing
protected void setupPairing(java.lang.String sid, boolean pairing_enabled)
-
setupSessionCode
private void setupSessionCode(java.lang.String key)
-
setupAutoAuth
protected void setupAutoAuth()
-
updatePairing
protected void updatePairing(java.lang.String sid)
-
updatePairing
protected void updatePairing(PairingConnectionData cd)
-
getServerBindIP
public java.net.InetAddress getServerBindIP()
-
getServerPort
public int getServerPort()
-
getPort
public int getPort()
-
getProtocol
public java.lang.String getProtocol()
-
setUserAndPassword
public void setUserAndPassword(java.lang.String user, java.lang.String password)
-
unsetUserAndPassword
public void unsetUserAndPassword()
-
recordAuthRequest
private void recordAuthRequest(java.lang.String client_ip, boolean good)
-
recordRequest
private void recordRequest(TrackerWebPageRequest request, boolean good, boolean is_tunnel)
-
generateSupport
public boolean generateSupport(TrackerWebPageRequest request, TrackerWebPageResponse response) throws java.io.IOException
- Throws:
java.io.IOException
-
handleTunnelRequest
private byte[] handleTunnelRequest(java.net.InetAddress originator, java.lang.String endpoint_url, byte[] request_bytes) throws java.io.IOException
- Throws:
java.io.IOException
-
generate
public boolean generate(TrackerWebPageRequest request, TrackerWebPageResponse response) throws java.io.IOException
- Specified by:
generate
in interfaceTrackerWebPageGenerator
- Returns:
- true if the request was handled
- Throws:
java.io.IOException
-
generate2
private boolean generate2(TrackerWebPageRequest request, TrackerWebPageResponse response, boolean is_tunnel) throws java.io.IOException
- Throws:
java.io.IOException
-
useFile
protected boolean useFile(TrackerWebPageRequest request, TrackerWebPageResponse response, java.io.File root, java.lang.String relative_url) throws java.io.IOException
this method can be over-ridden to handle custom file delivery- Parameters:
request
-response
-root
-relative_url
-- Returns:
- Throws:
java.io.IOException
-
getArgumentFromURL
private java.lang.String getArgumentFromURL(java.net.URL url, java.lang.String argument)
-
returnTextPlain
private boolean returnTextPlain(TrackerWebPageResponse response, java.lang.String str)
-
returnJSON
private boolean returnJSON(TrackerWebPageResponse response, java.lang.String str) throws java.io.IOException
- Throws:
java.io.IOException
-
returnStuff
private boolean returnStuff(TrackerWebPageResponse response, java.lang.String content_type, java.lang.String str)
-
getConfigModel
protected BasicPluginConfigModel getConfigModel()
-
getViewModel
protected BasicPluginViewModel getViewModel()
-
log
protected void log(java.lang.String str)
-
log
protected void log(java.lang.String str, java.lang.Throwable e)
-
-