add single files, secure server, hello world

This commit is contained in:
2020-02-09 23:35:18 +08:00
parent 9f8a7ccc59
commit 2ddf9538ea
17 changed files with 270 additions and 0 deletions

22
helloworld.dart Executable file
View File

@@ -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(':'));
}

View File

@@ -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-----

View File

@@ -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-----

View File

@@ -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();
}
}

View File

@@ -0,0 +1,15 @@
import 'dart:io';
void main(List<String> 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);
}

2
single_file_tests/f.txt Normal file
View File

@@ -0,0 +1,2 @@
hello
world

View File

@@ -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('||'));
}

View File

@@ -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!');
}

View File

@@ -0,0 +1,28 @@
#!/usr/bin/env dart
import 'dart:io';
import 'dart:async';
main() async {
//Stream<FileSystemEntity> entityList = Directory.systemTemp.list(recursive: true, followLinks: false);
Stream<FileSystemEntity> 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}');
}
}

View File

@@ -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();
}

View File

@@ -0,0 +1,10 @@
#!/usr/bin/env dart
import 'dart:io' show Platform;
main() {
Map<String, String> envVars = Platform.environment;
envVars.forEach((k, v) => {
print('$k = $v')
});
}

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env dart
import 'dart:io';
main(List<String> 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);
}

View File

@@ -0,0 +1,7 @@
import 'dart:math';
main() {
final intRandom = new Random();
print('Int random: ${intRandom.nextInt(100)}');
}

View File

@@ -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');
}

View File

@@ -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();
}

View File

@@ -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();
}
}
}

View File

@@ -0,0 +1,11 @@
#!/usr/bin/env dart
import 'dart:io';
main() {
if (stdioType(stdout) == StdioType.terminal) {
print("Is term.");
} else {
print("Not term.");
}
}