概要
Qemuではフォルダ共有機能が実質存在しないので、ゲストOSからホストのファイルにアクセスするためのftpサーバーをnode.jsでサクッと構築する。
パッケージのインストール
npm install ftpd
ソース
ftpd.js
var ftpd = require('ftpd');
var fs = require('fs');
var path = require('path');
//コマンドライン引数からポートとルートになるフォルダの設定
var port = process.argv[2] || 10021;
var root = process.argv[3] || process.cwd();
//サーバーの設定
var server = new ftpd.FtpServer('127.0.0.1', {
//接続後の初期ディレクトリ
getInitialCwd: function() {
return '/';
},
//ルートとなるフォルダの設定
getRoot: function() {
return root;
},
pasvPortRangeStart: 1025,
pasvPortRangeEnd: 1050,
tlsOptions: null,
allowUnauthorizedTls: true,
});
//エラー
server.on('error', function(error) {
console.log('FTP Server error:', error);
});
//クライアントが接続してきたら認証(してるフリ)
server.on('client:connected', function(connection) {
var username = null;
connection.on('command:user', function(user, success, failure) {
if (user) {
username = user;
success();
} else {
failure();
}
});
connection.on('command:pass', function(pass, success, failure) {
if (pass) {
success(username);
} else {
failure();
}
});
});
//コンソールへの出力を最低限に
server.debugging = 0;
//指定したポートでサーバー起動
server.listen(port);
console.log('Listening on port ' + port);
起動
node ftpd.js 10020 x:\Documents
Qemuからアクセス
(特に設定をしていなければ)IPアドレス10.0.2.2
でqemuのゲストからホストのサーバーにアクセスできるようです。