|
|
|
|
@ -2047,6 +2047,8 @@ public:
|
|
|
|
|
char p[1024]; |
|
|
|
|
FILE *f; |
|
|
|
|
bool secure = false; |
|
|
|
|
char dirname[1024]; |
|
|
|
|
dirname[0] = 0; |
|
|
|
|
|
|
|
|
|
switch(type) { |
|
|
|
|
case ZT_STATE_OBJECT_IDENTITY_PUBLIC: |
|
|
|
|
@ -2060,12 +2062,18 @@ public:
|
|
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "planet",_homePath.c_str()); |
|
|
|
|
break; |
|
|
|
|
case ZT_STATE_OBJECT_MOON: |
|
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "moons.d/%.16llx.moon",_homePath.c_str(),(unsigned long long)id[0]); |
|
|
|
|
OSUtils::ztsnprintf(dirname,sizeof(dirname),"%s" ZT_PATH_SEPARATOR_S "moons.d",_homePath.c_str()); |
|
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "%.16llx.moon",dirname,(unsigned long long)id[0]); |
|
|
|
|
break; |
|
|
|
|
case ZT_STATE_OBJECT_NETWORK_CONFIG: |
|
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "networks.d/%.16llx.conf",_homePath.c_str(),(unsigned long long)id[0]); |
|
|
|
|
OSUtils::ztsnprintf(dirname,sizeof(dirname),"%s" ZT_PATH_SEPARATOR_S "networks.d",_homePath.c_str()); |
|
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "%.16llx.conf",dirname,(unsigned long long)id[0]); |
|
|
|
|
secure = true; |
|
|
|
|
break; |
|
|
|
|
case ZT_STATE_OBJECT_PEER: |
|
|
|
|
OSUtils::ztsnprintf(dirname,sizeof(dirname),"%s" ZT_PATH_SEPARATOR_S "peers.d",_homePath.c_str()); |
|
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "%.10llx.peer",dirname,(unsigned long long)id[0]); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
@ -2084,6 +2092,10 @@ public:
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
f = fopen(p,"w"); |
|
|
|
|
if ((!f)&&(dirname[0])) { // create subdirectory if it does not exist
|
|
|
|
|
OSUtils::mkdir(dirname); |
|
|
|
|
f = fopen(p,"w"); |
|
|
|
|
} |
|
|
|
|
if (f) { |
|
|
|
|
if (fwrite(data,len,1,f) != 1) |
|
|
|
|
fprintf(stderr,"WARNING: unable to write to file: %s (I/O error)" ZT_EOL_S,p); |
|
|
|
|
@ -2108,15 +2120,18 @@ public:
|
|
|
|
|
case ZT_STATE_OBJECT_IDENTITY_SECRET: |
|
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "identity.secret",_homePath.c_str()); |
|
|
|
|
break; |
|
|
|
|
case ZT_STATE_OBJECT_NETWORK_CONFIG: |
|
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "networks.d/%.16llx.conf",_homePath.c_str(),(unsigned long long)id); |
|
|
|
|
break; |
|
|
|
|
case ZT_STATE_OBJECT_PLANET: |
|
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "planet",_homePath.c_str()); |
|
|
|
|
break; |
|
|
|
|
case ZT_STATE_OBJECT_MOON: |
|
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "moons.d/%.16llx.moon",_homePath.c_str(),(unsigned long long)id); |
|
|
|
|
break; |
|
|
|
|
case ZT_STATE_OBJECT_NETWORK_CONFIG: |
|
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "networks.d/%.16llx.conf",_homePath.c_str(),(unsigned long long)id); |
|
|
|
|
break; |
|
|
|
|
case ZT_STATE_OBJECT_PEER: |
|
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "peers.d/%.10llx.conf",_homePath.c_str(),(unsigned long long)id[0]); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|