first commit.
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:file/local.dart';
|
||||
import 'package:shelf/shelf_io.dart';
|
||||
import 'package:shelf_dav/shelf_dav.dart';
|
||||
|
||||
void main(List<String> args) async {
|
||||
var parser = ArgParser();
|
||||
parser.addOption('port', abbr: 'p', defaultsTo: '8800', help: '服务运行端口号');
|
||||
parser.addOption('dir', abbr: 'd', defaultsTo: './repo/', help: '文件存储路径');
|
||||
parser.addOption('user', abbr: 'u', help: 'DAV服务用户名', mandatory: true);
|
||||
parser.addOption('auth', abbr: 'a', help: 'DAV服务密码', mandatory: true);
|
||||
|
||||
var argResults = parser.parse(args);
|
||||
|
||||
if (args.isEmpty) {
|
||||
stdout.writeln(parser.usage);
|
||||
return;
|
||||
}
|
||||
|
||||
final fs = const LocalFileSystem();
|
||||
final rootDir = fs.directory(argResults.option('dir') ?? './repo/');
|
||||
if (!rootDir.existsSync()) {
|
||||
rootDir.createSync(recursive: true);
|
||||
}
|
||||
final config = DAVConfig(
|
||||
root: rootDir,
|
||||
prefix: '/dav',
|
||||
allowAnonymous: false,
|
||||
// 1G
|
||||
maxUploadSize: 1024 * 1024 * 1024,
|
||||
readOnly: false,
|
||||
propertyStorageType: PropertyStorageType.file,
|
||||
authenticationProvider: BasicAuthenticationProvider.plaintext(
|
||||
users: {argResults.option('user')!: argResults.option('auth')!},
|
||||
),
|
||||
);
|
||||
|
||||
final dav = ShelfDAV.withConfig(config);
|
||||
|
||||
final ip = InternetAddress.anyIPv4;
|
||||
|
||||
final port = int.parse(argResults.option('port') ?? '8800');
|
||||
final server = await serve(dav.handler, ip, port);
|
||||
print('WebDAV server listening on port ${server.port}');
|
||||
}
|
||||
Reference in New Issue
Block a user