aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2005-08-29 16:14:39 +0000
committerAris Adamantiadis <aris@0xbadc0de.be>2005-08-29 16:14:39 +0000
commitf0008adac6f9f5b6b2a06541bda7502139759ede (patch)
tree4c76a7f95f603709bf4c6c5483bdce8f2904a75c
parentc767514dae4bc9f8a52d74f378650f55f4f1a34f (diff)
downloadlibssh-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.c3
-rw-r--r--sftp_server/Makefile16
-rw-r--r--sftp_server/Makefile.in2
-rw-r--r--sftp_server/config.c2
-rw-r--r--sftp_server/main.c25
-rw-r--r--sftp_server/mercurius.conf (renamed from sftp_server/sftp.conf)0
-rw-r--r--sftp_server/server.h5
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;