diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2005-08-29 16:14:39 +0000 |
---|---|---|
committer | Aris Adamantiadis <aris@0xbadc0de.be> | 2005-08-29 16:14:39 +0000 |
commit | f0008adac6f9f5b6b2a06541bda7502139759ede (patch) | |
tree | 4c76a7f95f603709bf4c6c5483bdce8f2904a75c | |
parent | c767514dae4bc9f8a52d74f378650f55f4f1a34f (diff) | |
download | libssh-f0008adac6f9f5b6b2a06541bda7502139759ede.tar.gz libssh-f0008adac6f9f5b6b2a06541bda7502139759ede.tar.xz libssh-f0008adac6f9f5b6b2a06541bda7502139759ede.zip |
changed config file name, take rsa,dsa and port into account
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@28 7dcaeef0-15fb-0310-b436-a5af3365683c
-rw-r--r-- | libssh/options.c | 3 | ||||
-rw-r--r-- | sftp_server/Makefile | 16 | ||||
-rw-r--r-- | sftp_server/Makefile.in | 2 | ||||
-rw-r--r-- | sftp_server/config.c | 2 | ||||
-rw-r--r-- | sftp_server/main.c | 25 | ||||
-rw-r--r-- | sftp_server/mercurius.conf (renamed from sftp_server/sftp.conf) | 0 | ||||
-rw-r--r-- | sftp_server/server.h | 5 |
7 files changed, 39 insertions, 14 deletions
diff --git a/libssh/options.c b/libssh/options.c index 3695a83e..813e3ad3 100644 --- a/libssh/options.c +++ b/libssh/options.c @@ -45,6 +45,7 @@ SSH_OPTIONS *ssh_options_new(){ void ssh_options_set_port(SSH_OPTIONS *opt, unsigned int port){ opt->port=port&0xffff; + opt->bindport=port&0xffff; } SSH_OPTIONS *ssh_options_copy(SSH_OPTIONS *opt){ SSH_OPTIONS *ret=ssh_options_new(); @@ -391,7 +392,7 @@ int ssh_options_getopt(SSH_OPTIONS *options, int *argcptr, char **argv){ if(cont && localaddr) ssh_options_set_bind(options,localaddr,0); ssh_options_set_port(options,port); - options->bindport=port; + //options->bindport=port; ssh_options_allow_ssh1(options,ssh1); ssh_options_allow_ssh2(options,ssh2); diff --git a/sftp_server/Makefile b/sftp_server/Makefile index c2b77a05..e3cfecbe 100644 --- a/sftp_server/Makefile +++ b/sftp_server/Makefile @@ -24,17 +24,21 @@ LIBSSH_LDFLAGS = -shared all: sftp_server -main.o: server.h -list.o: server.h -config.o: server.h -libconfig/libconfig.a: libconfig/config.h +main.o: server.h libconfig/libconfig.h +list.o: server.h libconfig/libconfig.h +protocol.o: server.h libconfig/libconfig.h +userauth.o: server.h libconfig/libconfig.h +config.o: server.h libconfig/libconfig.h + +libconfig/libconfig.a: libconfig/libconfig.h make -C libconfig/ ../libssh/libssh.a: make -C ../libssh/ libssh.a -libconfig/config.h: +libconfig/libconfig.h: cd libconfig ; ./configure ; cd .. + make -C libconfig/ sftp_server: $(OBJECTS) - + make -C ../libssh libssh.a $(CC) -o sftp_server $(OBJECTS) $(LIBS) $(LDFLAGS) install: all $(top_srcdir)/mkinstalldirs $(incldir) diff --git a/sftp_server/Makefile.in b/sftp_server/Makefile.in index ab7806d3..47061d00 100644 --- a/sftp_server/Makefile.in +++ b/sftp_server/Makefile.in @@ -38,7 +38,7 @@ libconfig/libconfig.h: cd libconfig ; ./configure ; cd .. make -C libconfig/ sftp_server: $(OBJECTS) - + make -C ../libssh libssh.a $(CC) -o sftp_server $(OBJECTS) $(LIBS) $(LDFLAGS) install: all $(top_srcdir)/mkinstalldirs $(incldir) diff --git a/sftp_server/config.c b/sftp_server/config.c index f79e7390..8fa5c9a2 100644 --- a/sftp_server/config.c +++ b/sftp_server/config.c @@ -292,7 +292,7 @@ int parse_config(char *file){ printf("lc_process_file=%d,%s\n",r,lc_geterrstr()); lc_cleanup(); //list_config(); - return 0; + return r<0; } list *find_groups(char *user){ diff --git a/sftp_server/main.c b/sftp_server/main.c index 91a5d7a4..163ab758 100644 --- a/sftp_server/main.c +++ b/sftp_server/main.c @@ -69,17 +69,34 @@ CHANNEL *recv_channel(SSH_SESSION *session){ return NULL; return chan; } - + int main(int argc, char **argv){ SSH_OPTIONS *options=ssh_options_new(); SSH_SESSION *session; SSH_BIND *ssh_bind; CHANNEL *chan=NULL; SFTP_SESSION *sftp=NULL; + int ret; ssh_options_getopt(options,&argc,argv); - parse_config("sftp.conf"); - ssh_options_set_dsa_server_key(options,"/etc/ssh/ssh_host_dsa_key"); - ssh_options_set_rsa_server_key(options,"/etc/ssh/ssh_host_rsa_key"); + if(argc>1) + ret=parse_config(argv[1]); + else + ret=parse_config("mercurius.conf"); + if(ret != 0){ + printf("Error parsing configuration file\n"); + return 1; + } + if(!rsa && !dsa){ + printf("There must be at least one RSA or DSA host key\n"); + return 1; + } + if(dsa) + ssh_options_set_dsa_server_key(options,dsa); + if(rsa) + ssh_options_set_rsa_server_key(options,rsa); + printf("port : %d\n",port); + if(port!=0) + ssh_options_set_port(options,port); ssh_bind=ssh_bind_new(); ssh_bind_set_options(ssh_bind,options); if(ssh_bind_listen(ssh_bind)<0){ diff --git a/sftp_server/sftp.conf b/sftp_server/mercurius.conf index 842c91c9..842c91c9 100644 --- a/sftp_server/sftp.conf +++ b/sftp_server/mercurius.conf diff --git a/sftp_server/server.h b/sftp_server/server.h index 460acbf3..f4f30a27 100644 --- a/sftp_server/server.h +++ b/sftp_server/server.h @@ -24,7 +24,10 @@ typedef struct list_struct { list *list_add(list *ptr, const char *key, void *data); void *list_find(list *ptr, const char *key); void list_set(list *ptr, const char *key, void *data); - +/* config.c */ +extern int port; +extern char *dsa; +extern char *rsa; struct group { list *users; char *chroot; |