Compare commits
No commits in common. "988db718a2269df6a5779fb093586fdebc9c74cf" and "2f089535a3193334f8a01ea84ed848df2e20f9d9" have entirely different histories.
988db718a2
...
2f089535a3
@ -18,10 +18,6 @@ if a DNS implementation is given, and supports StartTLS.
|
|||||||
To begin, use [melos](https://github.com/invertase/melos) to bootstrap the project: `melos bootstrap`. Then, the example
|
To begin, use [melos](https://github.com/invertase/melos) to bootstrap the project: `melos bootstrap`. Then, the example
|
||||||
can be run with `flutter run` on Linux or Android.
|
can be run with `flutter run` on Linux or Android.
|
||||||
|
|
||||||
To run the example, make sure that Flutter is correctly set up and working. If you use
|
|
||||||
the development shell provided by the NixOS Flake, ensure that `ANDROID_HOME` and
|
|
||||||
`ANDROID_AVD_HOME` are pointing to the correct directories.
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
See `./LICENSE`.
|
See `./LICENSE`.
|
||||||
|
@ -12,4 +12,3 @@ analyzer:
|
|||||||
- "**/*.g.dart"
|
- "**/*.g.dart"
|
||||||
- "**/*.freezed.dart"
|
- "**/*.freezed.dart"
|
||||||
- "test/"
|
- "test/"
|
||||||
- "integration_test/"
|
|
||||||
|
@ -16,10 +16,10 @@ dependencies:
|
|||||||
version: 0.1.4+1
|
version: 0.1.4+1
|
||||||
moxxmpp:
|
moxxmpp:
|
||||||
hosted: https://git.polynom.me/api/packages/Moxxy/pub
|
hosted: https://git.polynom.me/api/packages/Moxxy/pub
|
||||||
version: 0.1.2+1
|
version: 0.1.1
|
||||||
moxxmpp_socket_tcp:
|
moxxmpp_socket_tcp:
|
||||||
hosted: https://git.polynom.me/api/packages/Moxxy/pub
|
hosted: https://git.polynom.me/api/packages/Moxxy/pub
|
||||||
version: 0.1.2+1
|
version: 0.1.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
@ -58,7 +58,9 @@
|
|||||||
CPATH = "${pkgs.xorg.libX11.dev}/include:${pkgs.xorg.xorgproto}/include";
|
CPATH = "${pkgs.xorg.libX11.dev}/include:${pkgs.xorg.xorgproto}/include";
|
||||||
LD_LIBRARY_PATH = with pkgs; lib.makeLibraryPath [ atk cairo epoxy gdk-pixbuf glib gtk3 harfbuzz pango ];
|
LD_LIBRARY_PATH = with pkgs; lib.makeLibraryPath [ atk cairo epoxy gdk-pixbuf glib gtk3 harfbuzz pango ];
|
||||||
|
|
||||||
|
ANDROID_HOME = (toString ./.) + "/.android/sdk";
|
||||||
JAVA_HOME = pinnedJDK;
|
JAVA_HOME = pinnedJDK;
|
||||||
|
ANDROID_AVD_HOME = (toString ./.) + "/.android/avd";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,3 @@
|
|||||||
## 0.1.2+1
|
|
||||||
|
|
||||||
- **FIX**: A certificate rejection does not crash the connection.
|
|
||||||
|
|
||||||
## 0.1.2
|
|
||||||
|
|
||||||
- **FEAT**: Remove Moxxy specific strings.
|
|
||||||
|
|
||||||
## 0.1.1
|
## 0.1.1
|
||||||
|
|
||||||
- **REFACTOR**: Move packages into packages/.
|
- **REFACTOR**: Move packages into packages/.
|
||||||
|
@ -796,15 +796,6 @@ class XmppConnection {
|
|||||||
|
|
||||||
_updateRoutingState(RoutingState.handleStanzas);
|
_updateRoutingState(RoutingState.handleStanzas);
|
||||||
await _onNegotiationsDone();
|
await _onNegotiationsDone();
|
||||||
} else if (_currentNegotiator!.state == NegotiatorState.error) {
|
|
||||||
_log.severe('Negotiator returned an error');
|
|
||||||
|
|
||||||
_updateRoutingState(RoutingState.error);
|
|
||||||
await _setConnectionState(XmppConnectionState.error);
|
|
||||||
_connectionCompleter?.complete(const XmppConnectionResult(false));
|
|
||||||
_connectionCompleter = null;
|
|
||||||
|
|
||||||
_closeSocket();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
name: moxxmpp
|
name: moxxmpp
|
||||||
description: A pure-Dart XMPP library
|
description: A pure-Dart XMPP library
|
||||||
version: 0.1.2+1
|
version: 0.1.1
|
||||||
homepage: https://codeberg.org/moxxy/moxxmpp
|
homepage: https://codeberg.org/moxxy/moxxmpp
|
||||||
publish_to: https://git.polynom.me/api/packages/Moxxy/pub
|
publish_to: https://git.polynom.me/api/packages/Moxxy/pub
|
||||||
|
|
||||||
|
@ -1,11 +1,3 @@
|
|||||||
## 0.1.2+1
|
|
||||||
|
|
||||||
- **FIX**: A certificate rejection does not crash the connection.
|
|
||||||
|
|
||||||
## 0.1.2
|
|
||||||
|
|
||||||
- **FEAT**: Make onBadCertificate available.
|
|
||||||
|
|
||||||
## 0.1.1
|
## 0.1.1
|
||||||
|
|
||||||
- **REFACTOR**: Move packages into packages/.
|
- **REFACTOR**: Move packages into packages/.
|
||||||
|
@ -1,64 +0,0 @@
|
|||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:moxxmpp/moxxmpp.dart';
|
|
||||||
import 'package:moxxmpp_socket_tcp/moxxmpp_socket_tcp.dart';
|
|
||||||
import 'package:test/test.dart';
|
|
||||||
|
|
||||||
Future<void> _runTest(String domain) async {
|
|
||||||
var gotTLSException = false;
|
|
||||||
final socket = TCPSocketWrapper(false);
|
|
||||||
final log = Logger('TestLogger');
|
|
||||||
socket.getEventStream().listen((event) {
|
|
||||||
if (event is XmppSocketTLSFailedEvent) {
|
|
||||||
log.info('Got XmppSocketTLSFailedEvent from socket');
|
|
||||||
gotTLSException = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
final connection = XmppConnection(
|
|
||||||
ExponentialBackoffReconnectionPolicy(),
|
|
||||||
socket,
|
|
||||||
);
|
|
||||||
connection.registerFeatureNegotiators([
|
|
||||||
StartTlsNegotiator(),
|
|
||||||
]);
|
|
||||||
connection.registerManagers([
|
|
||||||
DiscoManager(),
|
|
||||||
RosterManager(),
|
|
||||||
PingManager(),
|
|
||||||
MessageManager(),
|
|
||||||
PresenceManager('http://moxxmpp.example'),
|
|
||||||
]);
|
|
||||||
|
|
||||||
connection.setConnectionSettings(
|
|
||||||
ConnectionSettings(
|
|
||||||
jid: JID.fromString('testuser@$domain'),
|
|
||||||
password: 'abc123',
|
|
||||||
useDirectTLS: true,
|
|
||||||
allowPlainAuth: true,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
final result = await connection.connectAwaitable();
|
|
||||||
expect(result.success, false);
|
|
||||||
expect(gotTLSException, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
Logger.root.level = Level.ALL;
|
|
||||||
Logger.root.onRecord.listen((record) {
|
|
||||||
print('${record.level.name}: ${record.time}: ${record.message}');
|
|
||||||
});
|
|
||||||
|
|
||||||
for (final domain in [
|
|
||||||
'self-signed.badxmpp.eu',
|
|
||||||
'expired.badxmpp.eu',
|
|
||||||
'wrong-name.badxmpp.eu',
|
|
||||||
'missing-chain.badxmpp.eu',
|
|
||||||
// TODO(Unknown): Technically, this one should not fail
|
|
||||||
//'ecdsa.badxmpp.eu',
|
|
||||||
]) {
|
|
||||||
test('$domain with connectAwaitable', () async {
|
|
||||||
await _runTest(domain);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +1,4 @@
|
|||||||
library moxxmpp_socket_tcp;
|
library moxxmpp_socket_tcp;
|
||||||
|
|
||||||
export 'src/events.dart';
|
|
||||||
export 'src/record.dart';
|
export 'src/record.dart';
|
||||||
export 'src/socket.dart';
|
export 'src/socket.dart';
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
import 'package:moxxmpp/moxxmpp.dart';
|
|
||||||
|
|
||||||
/// Triggered when TLS errors occur
|
|
||||||
class XmppSocketTLSFailedEvent extends XmppSocketEvent {}
|
|
@ -4,7 +4,6 @@ import 'dart:io';
|
|||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:meta/meta.dart';
|
import 'package:meta/meta.dart';
|
||||||
import 'package:moxxmpp/moxxmpp.dart';
|
import 'package:moxxmpp/moxxmpp.dart';
|
||||||
import 'package:moxxmpp_socket_tcp/src/events.dart';
|
|
||||||
import 'package:moxxmpp_socket_tcp/src/record.dart';
|
import 'package:moxxmpp_socket_tcp/src/record.dart';
|
||||||
import 'package:moxxmpp_socket_tcp/src/rfc_2782.dart';
|
import 'package:moxxmpp_socket_tcp/src/rfc_2782.dart';
|
||||||
|
|
||||||
@ -67,7 +66,6 @@ class TCPSocketWrapper extends BaseSocketWrapper {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var failedDueToTLS = false;
|
|
||||||
results.sort(srvRecordSortComparator);
|
results.sort(srvRecordSortComparator);
|
||||||
for (final srv in results) {
|
for (final srv in results) {
|
||||||
try {
|
try {
|
||||||
@ -93,20 +91,12 @@ class TCPSocketWrapper extends BaseSocketWrapper {
|
|||||||
_secure = true;
|
_secure = true;
|
||||||
_log.finest('Success!');
|
_log.finest('Success!');
|
||||||
return true;
|
return true;
|
||||||
} on Exception catch(e) {
|
} on SocketException catch(e) {
|
||||||
_log.finest('Failure! $e');
|
_log.finest('Failure! $e');
|
||||||
_ignoreSocketClosure = false;
|
_ignoreSocketClosure = false;
|
||||||
|
|
||||||
if (e is HandshakeException) {
|
|
||||||
failedDueToTLS = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (failedDueToTLS) {
|
|
||||||
_eventStream.add(XmppSocketTLSFailedEvent());
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,7 +118,7 @@ class TCPSocketWrapper extends BaseSocketWrapper {
|
|||||||
_ignoreSocketClosure = false;
|
_ignoreSocketClosure = false;
|
||||||
_log.finest('Success!');
|
_log.finest('Success!');
|
||||||
return true;
|
return true;
|
||||||
} on Exception catch(e) {
|
} on SocketException catch(e) {
|
||||||
_log.finest('Failure! $e');
|
_log.finest('Failure! $e');
|
||||||
_ignoreSocketClosure = false;
|
_ignoreSocketClosure = false;
|
||||||
continue;
|
continue;
|
||||||
@ -152,7 +142,7 @@ class TCPSocketWrapper extends BaseSocketWrapper {
|
|||||||
);
|
);
|
||||||
_log.finest('Success!');
|
_log.finest('Success!');
|
||||||
return true;
|
return true;
|
||||||
} on Exception catch(e) {
|
} on SocketException catch(e) {
|
||||||
_log.finest('Failure! $e');
|
_log.finest('Failure! $e');
|
||||||
_ignoreSocketClosure = false;
|
_ignoreSocketClosure = false;
|
||||||
return false;
|
return false;
|
||||||
@ -193,14 +183,8 @@ class TCPSocketWrapper extends BaseSocketWrapper {
|
|||||||
_ignoreSocketClosure = false;
|
_ignoreSocketClosure = false;
|
||||||
_setupStreams();
|
_setupStreams();
|
||||||
return true;
|
return true;
|
||||||
} on Exception catch (e) {
|
} on SocketException {
|
||||||
_log.severe('Failed to secure socket: $e');
|
|
||||||
_ignoreSocketClosure = false;
|
_ignoreSocketClosure = false;
|
||||||
|
|
||||||
if (e is HandshakeException) {
|
|
||||||
_eventStream.add(XmppSocketTLSFailedEvent());
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -309,7 +293,7 @@ class TCPSocketWrapper extends BaseSocketWrapper {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
_socket!.write(data);
|
_socket!.write(data);
|
||||||
} on Exception catch (e) {
|
} on SocketException catch (e) {
|
||||||
_log.severe(e);
|
_log.severe(e);
|
||||||
_eventStream.add(XmppSocketErrorEvent(e));
|
_eventStream.add(XmppSocketErrorEvent(e));
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
name: moxxmpp_socket_tcp
|
name: moxxmpp_socket_tcp
|
||||||
description: A socket for moxxmpp using TCP that implements the RFC6120 connection algorithm and XEP-0368
|
description: A socket for moxxmpp using TCP that implements the RFC6120 connection algorithm and XEP-0368
|
||||||
version: 0.1.2+1
|
version: 0.1.1
|
||||||
homepage: https://codeberg.org/moxxy/moxxmpp
|
homepage: https://codeberg.org/moxxy/moxxmpp
|
||||||
publish_to: https://git.polynom.me/api/packages/Moxxy/pub
|
publish_to: https://git.polynom.me/api/packages/Moxxy/pub
|
||||||
|
|
||||||
@ -12,7 +12,7 @@ dependencies:
|
|||||||
meta: ^1.6.0
|
meta: ^1.6.0
|
||||||
moxxmpp:
|
moxxmpp:
|
||||||
hosted: https://git.polynom.me/api/packages/Moxxy/pub
|
hosted: https://git.polynom.me/api/packages/Moxxy/pub
|
||||||
version: ^0.1.2+1
|
version: ^0.1.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
lints: ^2.0.0
|
lints: ^2.0.0
|
||||||
|
Loading…
Reference in New Issue
Block a user