588 if(!in) { |
588 if(!in) { |
589 fprintf(stderr, "cannot open input file\n"); |
589 fprintf(stderr, "cannot open input file\n"); |
590 return -1; |
590 return -1; |
591 } |
591 } |
592 |
592 |
593 DavResource *res = dav_resource_new(sn, path); |
593 DavResource *res = dav_query(sn, "get - from %s", path); |
594 if(!res) { |
594 if(!res) { |
595 fprintf(stderr, "error\n"); |
595 if(sn->error = DAV_NOT_FOUND) { |
596 return -1; |
596 res = dav_resource_new(sn, path); |
|
597 } else { |
|
598 fprintf(stderr, "error\n"); |
|
599 return -1; |
|
600 } |
|
601 } else if(res->iscollection) { |
|
602 // TODO: free res |
|
603 char *newpath = util_concat_path(path, file); |
|
604 free(path); |
|
605 path = newpath; |
|
606 res = dav_resource_new(sn, path); |
597 } |
607 } |
598 |
608 |
599 AESEncrypter *enc = NULL; |
609 AESEncrypter *enc = NULL; |
600 char *keyname = cmd_getoption(a, "key"); |
610 char *keyname = cmd_getoption(a, "key"); |
601 char *kn = NULL; |
611 char *kn = NULL; |
602 char *plain = cmd_getoption(a, "plain"); |
612 char *plain = cmd_getoption(a, "plain"); |
603 if(!plain && (keyname || repo)) { |
613 if(!plain && (keyname || repo)) { |
604 kn = keyname ? keyname : repo->default_key; |
614 kn = keyname ? keyname : repo->default_key; |
605 Key *key = get_key(kn); |
615 if(kn) { |
606 if(!key) { |
616 Key *key = get_key(kn); |
607 fprintf(stderr, "Key %s not found!\nAbort.\n", kn); |
617 if(!key) { |
608 // TODO: free |
618 fprintf(stderr, "Key %s not found!\nAbort.\n", kn); |
609 return -1; |
619 // TODO: free |
610 } |
620 return -1; |
611 if(keyname || repo->encrypt) { |
621 } |
612 enc = aes_encrypter_new(key, in, (dav_read_func)fread); |
622 if(keyname || repo->encrypt) { |
|
623 enc = aes_encrypter_new(key, in, (dav_read_func)fread); |
|
624 } |
613 } |
625 } |
614 } |
626 } |
615 if(enc) { |
627 if(enc) { |
616 dav_set_content(res, enc, (dav_read_func)aes_read); |
628 dav_set_content(res, enc, (dav_read_func)aes_read); |
617 dav_set_property_ns(res, "http://www.uap-core.de/", "crypto-key", kn); |
629 dav_set_property_ns(res, "http://www.uap-core.de/", "crypto-key", kn); |