Design:
Use the plain string for both config and hotkey parsing
and make use of KeyConverter, ModifierKeysConverter
to make it more rubust.
Find corresponding label (to display operation result) and callback (to do the real work) based on textbox name. In this case, they should be named as `<Feature-Name><Control-Name>`.
ShowLogsTextBox,
ShowLogsLabel,
ShowLogsCallback.
If this requirement doesn't meet, throw an exception at runtime.
Logic:
How to input keys:
1. put focus in the corresponding textbox
2. press the key combination you want to use
3. when you think it is ready, release all keys
4. the textbox shows your input
How to change keys:
1. put focus in the corresponding textbox
2. press BackSpace to clear content
3. re-input new one
How to deactivate:
1. clear content in the textbox
2. press OK button
Meaning of label color:
- Green: this combination is not occupied by other programs and register successfully
- Yellow: this combination is occupied by other programs and you have to change to another one
- Transparent without color: initial status
Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
- Revert bandwidthScale when throughput gets smaller
- Don't save coordinates when LogForm is minimized. Otherwise, we get negative values
- activate ConfigForm & ProxyForm & LogForm
User wants to use that server after selected it in the ConfigForm. If user deletes
the server in use, we can't find its index, then the previous logic will revert to
index 0, which is not expected behaviour.
Since we handled 'ServersListBox.SelectedIndex' in various event handlers, we can
trust it all the time.
Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
- Drop redundant code.
I should read code carefully, mbed TLS will set operation
when invoking mbedtls_cipher_setkey(), the last param
const mbedtls_operation_t operation is what we want.
- minor changes
Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
* Refine encryption
- Add AES-CTR, blowfish and camellia ciphers
aes-256-ctr
aes-192-ctr
aes-128-ctr
bf-cfb
camellia-128-cfb
camellia-192-cfb
camellia-256-cfb
- Merge the previous PolarSSL and MbedTLS
- Switch to MbedTLS's cipher layer functions
- Add workaround to set cipher operation(encrypt/decrypt)
Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
* Add function to get MbedTLS cipher context size
and drop hard-coded ctx sizes
Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
- use null conditional access in case some connections been
cancelled unexpectedly and may cause null reference exception
- Refine error message
- use conditional operator to simplify some code
Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
* Drop unused variable to suppress warning in LogForm
Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
* Fix IPv6 displaying
It is a little ugly, send a PR if you can find a better way.
Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
This exception is caused by processing Invoke Action while trafficChart is already disposed.
=====
Exception reproduce frequency: RARE. Once triggered, ShadowSocks crashes.
* Implement the line chart on Log View window for inbound/outbound traffic per second
* Implement dynamic tray icon to indicate Inbound and Outbound
* Refine linechart
* Bugfix for dynamic icon
* Refine chart presentation
* Change the data points' type for more accurate calculation
* Tweak inbound/outbound indicator image for tray icon