VoDA.FtpServer هي مكتبة خادم FTP بسيطة. تعمل هذه المكتبة على تبسيط التفاعل مع بروتوكول FTP وصولاً إلى مستوى الأحداث. جميع الطلبات المقدمة إلى الخادم المتعلقة بالترخيص أو العمل مع البيانات تتسبب في حدوث أحداث يجب عليك تنفيذها.
لبدء الخادم، تحتاج إلى إنشاء كائن FtpServerBuilder، وتكوينه باستخدام الوظائف، كما هو موضح في المثال أدناه. لمزيد من المعلومات حول كل وظيفة، راجع معلمات التكوين. بعد التكوين، قم باستدعاء الدالة Build()
لإنشاء خادم.
يتم تقديم مثال لخادم FTP للعمل مع نظام الملفات في مشروع الاختبار.
var server = new FtpServerBuilder ( )
. ListenerSettings ( ( config ) =>
{
config . Port = 21 ; // enter the port
config . ServerIp = System . Net . IPAddress . Any ;
} )
. Log ( ( config ) =>
{
config . Level = LogLevel . Information ; // enter log level. Default: Information
} )
. Certificate ( ( config ) =>
{
config . CertificatePath = ". \ server.crt" ;
config . CertificateKey = ". \ server.key" ;
} )
. Authorization ( ( config ) =>
{
config . UseAuthorization = true ; // enable or disable authorization
config . UsernameVerification += ( username ) => { .. . } ; // username verification
config . PasswordVerification += ( username , password ) => { .. . } ; //verification of username and password
} )
. FileSystem ( ( fs ) =>
{
fs . OnDeleteFile += ( client , path ) => { .. . } ; // delete file event
fs . OnRename += ( client , from , to ) => { .. . } ; // rename item event
fs . OnDownload += ( client , path ) => { .. . } ; // download file event
fs . OnGetList += ( client , path ) => { .. . } ; // get items in folder event
fs . OnExistFile += ( client , path ) => { .. . } ; // file check event
fs . OnExistFoulder += ( client , path ) => { .. . } ; // folder check event
fs . OnCreate += ( client , path ) => { .. . } ; // file creation event
fs . OnAppend += ( client , path ) => { .. . } ; // append file event
fs . OnDeleteFolder += ( client , path ) => { .. . } ; // remove folder event
fs . OnUpload += ( client , path ) => { .. . } ; // upload file event
fs . OnGetFileSize += ( client , path ) => { .. . } ; // get file size event
fs . OnGetFileModificationTime += ( client , path ) => { .. . } ; // returns the last modified date of the file
} )
. Build ( ) ;
// Start FTP-serer
server . StartAsync ( System . Threading . CancellationToken . None ) . Wait ( ) ;
أو يمكنك استخدام فصلك الخاص الذي يرث من فئة السياق. مثال أدناه.
في هذا المثال، ترث الفئة MyAuthorization
من VoDA.FtpServer.Contexts.AuthorizationOptionsContext
والفئة MyFileSystem
ترث من VoDA.FtpServer.Contexts.FileSystemOptionsContext
var server = new FtpServerBuilder ( )
. ListenerSettings ( ( config ) =>
{
config . Port = 21 ; // enter the port
config . ServerIp = System . Net . IPAddress . Any ;
} )
. Log ( ( config ) =>
{
config . Level = LogLevel . Information ; // enter log level. Default: Information
} )
. Certificate ( ( config ) =>
{
config . CertificatePath = ". \ server.crt" ;
config . CertificateKey = ". \ server.key" ;
} )
. Authorization < MyAuthorization > ( )
. FileSystem < MyFileSystem > ( )
. Build ( ) ;
// Start FTP-serer
server . StartAsync ( System . Threading . CancellationToken . None ) . Wait ( ) ;
انظر المثال الكامل في مشروع الاختبار.