diff --git a/helloworld.dart b/helloworld.dart new file mode 100755 index 0000000..a585f3c --- /dev/null +++ b/helloworld.dart @@ -0,0 +1,22 @@ +#!/usr/local/bin/dart + +void main() { + + var sb = new StringBuffer(); + sb..write('Hello ') + ..write('world ') + ..write('!'); + + print(sb.toString()); + + for (int i = 0; i < 5; i++) { + print('Hello: ${i}'); + } + + var arr = []; + for (int i = 0; i < 10; i++) { + arr.add(i); + } + print(arr); + print(arr.join(':')); +} diff --git a/secure_server/server_chain.pem b/secure_server/server_chain.pem new file mode 100644 index 0000000..9517b57 --- /dev/null +++ b/secure_server/server_chain.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDBzCCAe+gAwIBAgIJAMW304qDczz2MA0GCSqGSIb3DQEBBQUAMBoxGDAWBgNV +BAMMD3d3dy5leGFtcGxlLmNvbTAeFw0xOTA1MTIwODQxMjVaFw0yOTA1MDkwODQx +MjVaMBoxGDAWBgNVBAMMD3d3dy5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAMsbaCLtmdbZDusV9djp7Ko8X0M5FSFTmRrRrZZxUOv0 +u/HCh83KVAZKtmFGXOQGEFvllk4sfWTkfFyPkPGlw+VYeRwpav06vjpz9oD1LNip +tFQ3dr3LGa0d6L05Ws9PEqKEgfAy8kSUpA2g4xOEGsIrlNh+zlnVaCjaKzJh8Wz9 +9n7zeEhNT5JEx6qYqXm0F/WWi/upF5X868mRsRq/o7l1NdFMrVweUpw4hVj35wxm +s98Noc9i9mgdT2eL1m4qPJYtN3fmfF8ZEFly+y3cvVY9CEZbNuOeokHLE+bbO/h3 +HTlhwpbyjWAVBGPyB9TW6efAZqKtdu1sJKh4HVSnLxcCAwEAAaNQME4wHQYDVR0O +BBYEFFYoeM4weSwEaocb6ozTPW+BTTAwMB8GA1UdIwQYMBaAFFYoeM4weSwEaocb +6ozTPW+BTTAwMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBABsEHnFD +Oy3DERfgt1ZT+UDvNCESZ5l9BYVWkVJ4lq1MOiAOGhRAIW4UXCCmGdmZ50FbZaIl +uNfE/LuuSVxhn1sD1KsTch4ASHfrl4eNMv28Bbfz1OtSEjNaTB24856KpPHcDz33 +jBdkvi9XgRvfxH5Tw9NWH7WfxqugRKF/e9pgZN3OKJu0JvDwHAuATgQSG8spfDOj +nktw+C6ZRMuk91rvS9oBG69gNyhbwmHXEeucLdOzGIV/JboBnxZwLWYrwkun5uCA +0rb+aw4c2KuNPGB2CMWS8vgLyA00mf0xI3AKzojUzLE5/BNav/U5JVzXVXf6ecRb +Gy1rLE4R2BPIdg0= +-----END CERTIFICATE----- diff --git a/secure_server/server_key.pem b/secure_server/server_key.pem new file mode 100644 index 0000000..0dfc048 --- /dev/null +++ b/secure_server/server_key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAyxtoIu2Z1tkO6xX12OnsqjxfQzkVIVOZGtGtlnFQ6/S78cKH +zcpUBkq2YUZc5AYQW+WWTix9ZOR8XI+Q8aXD5Vh5HClq/Tq+OnP2gPUs2Km0VDd2 +vcsZrR3ovTlaz08SooSB8DLyRJSkDaDjE4QawiuU2H7OWdVoKNorMmHxbP32fvN4 +SE1PkkTHqpipebQX9ZaL+6kXlfzryZGxGr+juXU10UytXB5SnDiFWPfnDGaz3w2h +z2L2aB1PZ4vWbio8li03d+Z8XxkQWXL7Ldy9Vj0IRls2456iQcsT5ts7+HcdOWHC +lvKNYBUEY/IH1Nbp58Bmoq127WwkqHgdVKcvFwIDAQABAoIBAHmphBqQCvvYb4hA +UlDJ5vseSM4CrnaVFfwrp3ibjiaZJc+ugBy0Wtqd/FuOg2wPedMiVoOjQMWj3B6x +3NfzPMHv2jQVV0Iy4uoutnUO5/ssxJlB0/3iYBID/XsDlTLjIb159D/GtLqB8zc6 +rWruUf0HkBSS+NZ07/ywmvmGE9D9yiPONMB60NQmlqoWS+FwLrRaOgUqBO/XtWIk +Jweq4rgEQsskcAiOY5iGGT785ZVdnImbUiPmSInRx9XFH/IZdORM3X/iuh3U/WnO +ugAtzhnYMdk04OTbwmb4xRs8eG4xhOaz3cvQqagfIMT3kRG+mE3DfqfwfNvLSFI4 +rGTu3/kCgYEA7vZzIJElulVYUA7OEB0skaRhGfp92e6Oy6PhAwTC0B4MOvMTg4fH +9iMScQc+wVYeQawiCsEfqqFHBUk2MAO+nvqp0Y+S1ea79Mhs34nPQ3m5mxA3jIHX +TdVz1CGywbx/SP7902/i5brb+0uWyqCy1PgFJndSQ+pxqWdQd7jIIF0CgYEA2ZaE +/r5CSp+ZRZf2uKN1lYi3knHT47+D2JKBN9bjw2wZcxHFdTUMqjmpOIYjnt94HBKq +7Z2iOKLy/29XHoHjJeTnVfBb+/i5lQzJl9fHjfzlOC+Aqajp0ynCSv4zgcMHDHis +2aeM7eEe60r/T3r5xA8edDEtveWWN+T8Oad1JgMCgYADAwQscufg01aLm8QpG9UF ++OZoZ2nSp1kRY/1gBl1WNiq9S3cBf2KbzZFb71VxJl63QS4kqI53nhTBEk0micWL +R2mAhKi7HW9dBHGq15fPJ+eY9rlcgf5usrQFBm+0VWXdS6lzUsOvVY2UOz2pTCE0 +4fNeqr5UsM3B7tVqzN9o2QKBgQDL/t1zg+bc1aK6Z42tb7q21jXdO5C/bndrHXe+ +ZV6mgfueMWQhzfmwwlyPnNtagQK3txy/p9FGLieKKdXQyU+v4Fqu7KkgpAFB53o9 +PNVfnmE8+vQynCWUjwsUihy6JKHAJIdRjE+JWk1FpcuVtaLjGJWhs9XBurTKdImw +d/pSBwKBgQDnbnyg3iW3xl1MJLltS2kcZ4h8/Vyo1OazhWtkVxjBdmTVxG7Gi9S1 +PB2uT9h/Irv8DGW97bHDsq4Rc8ZI/7MKOEYAb138nxByl6yg4IvMMMKthf2zBA1t +6HIpWreTfr2v05FAkFDCbu1iSj0Ohi+38sk2HLspEyAICKwEks8Tbg== +-----END RSA PRIVATE KEY----- diff --git a/secure_server/simple_secure_server.dart b/secure_server/simple_secure_server.dart new file mode 100644 index 0000000..9938c5e --- /dev/null +++ b/secure_server/simple_secure_server.dart @@ -0,0 +1,23 @@ +import 'dart:io'; + +String certificateChain = 'server_chain.pem'; +String serverKey = 'server_key.pem'; + +Future main() async { + var serverContext = SecurityContext(); + serverContext.useCertificateChain(certificateChain); + serverContext.usePrivateKey(serverKey, password: 'dartdart'); + + var server = await HttpServer.bindSecure( + '0.0.0.0', + 8443, + serverContext, + ); + print('Listening on localhost:${server.port}'); + await for (HttpRequest request in server) { + print('Got request for ${request.uri.path}'); + request.response + ..write('Hello, world!') + ..close(); + } +} diff --git a/single_file_tests/args.dart b/single_file_tests/args.dart new file mode 100644 index 0000000..2d58c68 --- /dev/null +++ b/single_file_tests/args.dart @@ -0,0 +1,15 @@ +import 'dart:io'; + +void main(List args) { + print(args); + + var env = Platform.environment; + + + print(Platform.script); + print(Platform.numberOfProcessors); + print(Platform.operatingSystem); + print(Platform.isMacOS); + print(Platform.isLinux); + print(Platform.isWindows); +} diff --git a/single_file_tests/f.txt b/single_file_tests/f.txt new file mode 100644 index 0000000..94954ab --- /dev/null +++ b/single_file_tests/f.txt @@ -0,0 +1,2 @@ +hello +world diff --git a/single_file_tests/file.dart b/single_file_tests/file.dart new file mode 100644 index 0000000..507bc33 --- /dev/null +++ b/single_file_tests/file.dart @@ -0,0 +1,11 @@ +import 'dart:io'; + +main() async { + var f = new File('f.txt'); + var contents = await f.readAsString(); + var lines = await f.readAsLines(); + + print('Contents:' + contents); + print('Lines:' + lines.join('||')); +} + diff --git a/single_file_tests/file_append.dart b/single_file_tests/file_append.dart new file mode 100644 index 0000000..9e16e14 --- /dev/null +++ b/single_file_tests/file_append.dart @@ -0,0 +1,15 @@ +#!/usr/bin/env dart + +import 'dart:io'; + +// https://juejin.im/post/5d7f4c35f265da03c50341df +void main() async{ + File file = new File('test.txt'); + IOSink isk = file.openWrite(mode: FileMode.append); + + isk.write('Line 1'); + isk.writeln(', also line 1'); + isk.writeln('Line 2'); + await isk.close(); + print('Done!'); +} \ No newline at end of file diff --git a/single_file_tests/find_in_dir.dart b/single_file_tests/find_in_dir.dart new file mode 100644 index 0000000..b05a03f --- /dev/null +++ b/single_file_tests/find_in_dir.dart @@ -0,0 +1,28 @@ +#!/usr/bin/env dart + +import 'dart:io'; +import 'dart:async'; + +main() async { + //Stream entityList = Directory.systemTemp.list(recursive: true, followLinks: false); + Stream entityList = Directory.current.list(recursive: true, followLinks: false); + + await for (FileSystemEntity entity in entityList) { + FileSystemEntityType type = await FileSystemEntity.type(entity.path); + String label; + switch (type) { + case FileSystemEntityType.directory: + label = 'D'; + break; + case FileSystemEntityType.file: + label = 'F'; + break; + case FileSystemEntityType.link: + label = 'L'; + break; + default: + label = 'UNKNOWN'; + } + print('$label: ${entity.path}'); + } +} \ No newline at end of file diff --git a/single_file_tests/http_client.dart b/single_file_tests/http_client.dart new file mode 100644 index 0000000..56202f9 --- /dev/null +++ b/single_file_tests/http_client.dart @@ -0,0 +1,15 @@ +import 'dart:io'; +import 'dart:convert'; + +main() async { + var url = Uri.parse('https://hatter.ink/ip/ip.jsonp'); + var httpClient = new HttpClient(); + var request = await httpClient.getUrl(url); + print('have request'); + var response = await request.close(); + print('have response'); + var data = await response.transform(utf8.decoder).toList(); + var body = data.join(''); + print(body); + httpClient.close(); +} diff --git a/single_file_tests/print_env.dart b/single_file_tests/print_env.dart new file mode 100644 index 0000000..f0dbf6c --- /dev/null +++ b/single_file_tests/print_env.dart @@ -0,0 +1,10 @@ +#!/usr/bin/env dart + +import 'dart:io' show Platform; + +main() { + Map envVars = Platform.environment; + envVars.forEach((k, v) => { + print('$k = $v') + }); +} diff --git a/single_file_tests/print_file.dart b/single_file_tests/print_file.dart new file mode 100644 index 0000000..6d3526f --- /dev/null +++ b/single_file_tests/print_file.dart @@ -0,0 +1,13 @@ +#!/usr/bin/env dart + +import 'dart:io'; + +main(List args) async { + print("[INFO] Arguments: $args"); + if (args.length == 0) { + print("No file assigned."); + return; + } + final contents = await new File(args[0]).readAsString(); + print(contents); +} diff --git a/single_file_tests/random.dart b/single_file_tests/random.dart new file mode 100644 index 0000000..3e567a4 --- /dev/null +++ b/single_file_tests/random.dart @@ -0,0 +1,7 @@ +import 'dart:math'; + +main() { + final intRandom = new Random(); + print('Int random: ${intRandom.nextInt(100)}'); +} + diff --git a/single_file_tests/run_process.dart b/single_file_tests/run_process.dart new file mode 100644 index 0000000..4a5db5a --- /dev/null +++ b/single_file_tests/run_process.dart @@ -0,0 +1,14 @@ +#!/usr/bin/env dart + +import 'dart:io'; + +main() async { + // run + var results = await Process.run('ls', ['-l']); + print(results.stdout); + + // start + var process = await Process.start('ls', ['-l']); + var exitCode = await process.exitCode; + print('exit code: $exitCode'); +} \ No newline at end of file diff --git a/single_file_tests/showmyip.dart b/single_file_tests/showmyip.dart new file mode 100644 index 0000000..f685123 --- /dev/null +++ b/single_file_tests/showmyip.dart @@ -0,0 +1,16 @@ +#!/usr/bin/env dart + +import 'dart:io'; +import 'dart:convert'; + +main() async { + final url = Uri.parse('https://hatter.ink/ip/ip.jsonp'); + final httpClient = new HttpClient(); + httpClient.connectionTimeout = const Duration(seconds: 6); + final request = await httpClient.getUrl(url); + final response = await request.close(); + final data = await response.transform(utf8.decoder).toList(); + final body = data.join(''); + print(body); + httpClient.close(); +} diff --git a/single_file_tests/simple_server.dart b/single_file_tests/simple_server.dart new file mode 100644 index 0000000..ef4460a --- /dev/null +++ b/single_file_tests/simple_server.dart @@ -0,0 +1,22 @@ +import 'dart:io'; + +main() async { + dartHandler(HttpRequest request) { + request.response.headers.contentType = + new ContentType('text', 'plain'); + request.response.write('Dart is optionally typed'); + request.response.close(); + } + + print('Listen at :8888'); + var requests = await HttpServer.bind('0.0.0.0', 8888); + await for (var request in requests) { + print('Got request for ${request.uri.path}'); + if (request.uri.path == '/languages/dart') { + dartHandler(request); + } else { + request.response.write('Not found'); + request.response.close(); + } + } +} diff --git a/single_file_tests/term.dart b/single_file_tests/term.dart new file mode 100644 index 0000000..5a61de8 --- /dev/null +++ b/single_file_tests/term.dart @@ -0,0 +1,11 @@ +#!/usr/bin/env dart + +import 'dart:io'; + +main() { + if (stdioType(stdout) == StdioType.terminal) { + print("Is term."); + } else { + print("Not term."); + } +} \ No newline at end of file