Re: FtpServer: configure programmatic
Hi, Le 20/03/2018 à 21:47, Markus Rathgeb a écrit : > Hi, > > has this been the wrong mailing list? Nope. > I know there exist also "users" and "ftpserver-users", but isn't it more or > less a developer question and so should be sent to the "dev" list? That's correct. The thing is that we lack developpers to support ftp-server atm, so that's the reason you haven't got any answer so far. That being said, it's a open source project, and would you sned us a patch with your proposed changes, I can apply them to the code and cut a release. It's even possible for you to become a committer on this project if you like to. > > Best regards, > Markus > > > 2018-03-05 15:48 GMT+01:00 Markus Rathgeb: > >> Hello, >> >> I would like to use the FtpServer configure the allowed remotes and >> users programmatic. >> >> Utility classes: >> * AddressPlusPort: simple object that holds an inet address and a port >> (wildcard for address and port is allowed) >> * ConnectionInfo: an AddressPlusPort for the local endpoint and an >> AddressPlusPort for the remote endpoint >> >> I created a "SessionFilter" implementation that holds the information >> about the allowed connections (a collection of "ConnectionInfo"). >> The accept methods checks if there is a match. >> >> I created an "User" implementation that also stores an "InetAddress" >> reference. The "InetAddress" reference is the expected remote peer >> that uses that user to login. >> >> I created an "UserManager" implementation that authenticate method >> checks if the remote address matches to the address that is stored in >> the user object. >> >> At least all seems to be working. >> >> But there is a problem to use this implementation in OSGi. >> >> The public interface of the "UsernamePasswordAuthentication" interface >> (that resides in a exported package) provides the method "public >> UserMetadata getUserMetadata()". >> >> The UserMetadata class itself that contains e.g. the remote address. >> But the returned class UserMetadata resides in a non-exported package >> (org.apache.ftpserver.usermanager.impl.UserMetadata). AFAIK the >> exported (OSGi) API should not use / provide private stuff. >> >> Would it be possible to create an "UserMetadata" interface that is >> defined in an exported package and there is e.g. a non exported >> UserMetadataImpl class that is used internally in your code? >> >> Another problem I run into are the authorities used by the user. >> If I create an user I would like to add instances of >> "WritePermission", "ConcurrentLoginPermission" and >> "TransferRatePermission". >> The classes itself resides in a non-exported package, so I cannot >> create instances or use that classes in my OSGi code. >> >> If you would like to have a look at my code it is available here: >> https://github.com/maggu2810/ftpserver-programmatic/ >> >> --- >> >> The service that is provided as an OSGi component provides that interface: >> https://github.com/maggu2810/ftpserver-programmatic/blob/ >> f46b3e8/src/main/java/de/maggu2810/playground/ftpserver/programmatic/ >> FtpServerService.java >> >> The consumer can use the functions "add" and "remove" to grant or remove >> access. >> The access is defined by an "AccessInfo" (the interface itself is >> public the specific implementation is private). >> >> A specific "AccessInfo" could be created using the >> "AccessInfoFactory": >> https://github.com/maggu2810/ftpserver-programmatic/blob/ >> master/src/main/java/de/maggu2810/playground/ftpserver/programmatic/ >> AccessInfoFactory.java >> >> Arguments explained >> * local host: used in the session filter to check if the remote >> connection is established using this local host. The server is bound >> to all interfaces and would like to be able to check if the incoming >> connection from IP_x uses "local host" to access ourselves (wildcard >> (any address) is supported) >> * local port: should fit to the FTP server address or -1 if not limited >> * remote host: the remote address used for the session filter and also >> to limit the given username to exactly this remote address (wildcard - >> (any address) is supported). (currently we "know" that username is >> unique for every peer) >> * remote port: if the remote port should be a special one or -1 if not >> limited >> * username: the username (a user implementation object will be created >> and added to the user manager implementation) >> * password: the password for the user >> * homeDir: the home directory for the user to limit the FS access >> >> --- >> >> Currently I work around the non exported packages (impl) by embedding >> the FTP server code into my bundle. >> But how can this done by using the FtpServer bundle itself? >> How to create the Authorities? >> How to access USerMetadata? >> >> Best regards, >> Markus >> > -- Emmanuel Lecharny Symas.com directory.apache.org
Re: FtpServer: configure programmatic
Hi, has this been the wrong mailing list? I know there exist also "users" and "ftpserver-users", but isn't it more or less a developer question and so should be sent to the "dev" list? Best regards, Markus 2018-03-05 15:48 GMT+01:00 Markus Rathgeb: > Hello, > > I would like to use the FtpServer configure the allowed remotes and > users programmatic. > > Utility classes: > * AddressPlusPort: simple object that holds an inet address and a port > (wildcard for address and port is allowed) > * ConnectionInfo: an AddressPlusPort for the local endpoint and an > AddressPlusPort for the remote endpoint > > I created a "SessionFilter" implementation that holds the information > about the allowed connections (a collection of "ConnectionInfo"). > The accept methods checks if there is a match. > > I created an "User" implementation that also stores an "InetAddress" > reference. The "InetAddress" reference is the expected remote peer > that uses that user to login. > > I created an "UserManager" implementation that authenticate method > checks if the remote address matches to the address that is stored in > the user object. > > At least all seems to be working. > > But there is a problem to use this implementation in OSGi. > > The public interface of the "UsernamePasswordAuthentication" interface > (that resides in a exported package) provides the method "public > UserMetadata getUserMetadata()". > > The UserMetadata class itself that contains e.g. the remote address. > But the returned class UserMetadata resides in a non-exported package > (org.apache.ftpserver.usermanager.impl.UserMetadata). AFAIK the > exported (OSGi) API should not use / provide private stuff. > > Would it be possible to create an "UserMetadata" interface that is > defined in an exported package and there is e.g. a non exported > UserMetadataImpl class that is used internally in your code? > > Another problem I run into are the authorities used by the user. > If I create an user I would like to add instances of > "WritePermission", "ConcurrentLoginPermission" and > "TransferRatePermission". > The classes itself resides in a non-exported package, so I cannot > create instances or use that classes in my OSGi code. > > If you would like to have a look at my code it is available here: > https://github.com/maggu2810/ftpserver-programmatic/ > > --- > > The service that is provided as an OSGi component provides that interface: > https://github.com/maggu2810/ftpserver-programmatic/blob/ > f46b3e8/src/main/java/de/maggu2810/playground/ftpserver/programmatic/ > FtpServerService.java > > The consumer can use the functions "add" and "remove" to grant or remove > access. > The access is defined by an "AccessInfo" (the interface itself is > public the specific implementation is private). > > A specific "AccessInfo" could be created using the > "AccessInfoFactory": > https://github.com/maggu2810/ftpserver-programmatic/blob/ > master/src/main/java/de/maggu2810/playground/ftpserver/programmatic/ > AccessInfoFactory.java > > Arguments explained > * local host: used in the session filter to check if the remote > connection is established using this local host. The server is bound > to all interfaces and would like to be able to check if the incoming > connection from IP_x uses "local host" to access ourselves (wildcard > (any address) is supported) > * local port: should fit to the FTP server address or -1 if not limited > * remote host: the remote address used for the session filter and also > to limit the given username to exactly this remote address (wildcard - > (any address) is supported). (currently we "know" that username is > unique for every peer) > * remote port: if the remote port should be a special one or -1 if not > limited > * username: the username (a user implementation object will be created > and added to the user manager implementation) > * password: the password for the user > * homeDir: the home directory for the user to limit the FS access > > --- > > Currently I work around the non exported packages (impl) by embedding > the FTP server code into my bundle. > But how can this done by using the FtpServer bundle itself? > How to create the Authorities? > How to access USerMetadata? > > Best regards, > Markus >
Re: [Vote] was : [New chairman]
Sorry, this was supposed to be sent on priv...@mina.apache.org... Le 20/03/2018 à 19:12, Lyor Goldstein a écrit : > +1 > > I fully agree that " Guillaume is a very nice and talended > person " and thank him for volunteering... > >>> Vote Guillaume Nodet as the new MINA chairman : > >>> [ ] +1 Great, I'm all in for Guillaume to be the new chairman >>> [ ] +/-0 No opinion >>> [ ] -1 I think somebody else should be chairman (please nominate someone > !) > -- Emmanuel Lecharny Symas.com directory.apache.org
Re: [Vote] was : [New chairman]
+1 I fully agree that " Guillaume is a very nice and talended person " and thank him for volunteering... >> Vote Guillaume Nodet as the new MINA chairman : >> [ ] +1 Great, I'm all in for Guillaume to be the new chairman >> [ ] +/-0 No opinion >> [ ] -1 I think somebody else should be chairman (please nominate someone !)