Change from start to offset

This commit is contained in:
Stephane Bourque
2020-12-09 23:06:58 -08:00
parent 9e6d184fe3
commit fef7703b80
4 changed files with 128 additions and 146 deletions

View File

@@ -437,48 +437,56 @@ create_ca(CaName,Password,State,_Pid)->
%% Make all the directories
CaDir = filename:join([State#inventory_state.cert_db_dir,binary_to_list(CaName)]),
ok = utils:make_dir(CaDir),
ok = file:write_file( filename:join([CaDir, "index.txt"]),<<>>),
ok = file:write_file( filename:join([CaDir, "serial.txt"]),<<$0,$1>>),
ok = utils:make_dir(filename:join([CaDir,"certs"])),
ok = utils:make_dir(filename:join([CaDir,"newcerts"])),
ok = utils:make_dir(filename:join([CaDir,"crl"])),
ok = utils:make_dir(filename:join([CaDir,"private"])),
CaClientsDir = filename:join([CaDir,"clients"]),
CaServersDir = filename:join([CaDir,"servers"]),
ok = utils:make_dir(CaClientsDir),
ok = utils:make_dir(CaServersDir),
{ ok , TemplateConf } = file:read_file( filename:join([utils:priv_dir(),"templates","ca.cnf.template"] )),
NewConf = string:replace(binary_to_list(TemplateConf),"$$DIR_ROOT$$",CaDir,all),
CaConfigFileName = filename:join([CaDir,binary_to_list(CaName)++".cnf"]),
ok = file:write_file(CaConfigFileName , list_to_binary(NewConf)),
CaTemplateFileName = filename:join([utils:priv_dir(),"templates","ssl-ca.cnf"]),
CaConfigFileName = filename:join([CaDir,"ssl-ca.cnf"]),
utils:search_replace(CaTemplateFileName,CaConfigFileName,[{"$$ROOT_DIR$$",CaDir}]),
CaKeyFileName = filename:join([CaDir,binary_to_list(CaName) ++ "_key.pem"]),
CaKeyCertFileName = filename:join([CaDir,binary_to_list(CaName) ++ "_cert.pem"]),
CaConfigFileName = filename:join([CaDir,binary_to_list(CaName)++".cnf"]),
ClientTemplateFileName = filename:join([utils:priv_dir(),"templates","ssl-client.cnf"]),
ClientConfigFileName = filename:join([CaDir,"ssl-client.cnf"]),
utils:search_replace(ClientTemplateFileName,ClientConfigFileName,[{"$$ROOT_DIR$$",CaDir}]),
Cmd0 = case Password == <<>> of
false -> io_lib:format("openssl genrsa -passout pass:~s -aes256 -out ~s 4096",[Password,CaKeyFileName]);
true -> io_lib:format("openssl genrsa -out ~s 4096",[CaKeyFileName])
end,
_CommandResult0 = os:cmd(Cmd0),
_ = file:change_mode(CaKeyFileName,8#0400),
%% io:format("> CMD0: ~s, RESULT: ~s~n~n",[Cmd0,CommandResult0]),
Cmd1 = case Password == <<>> of
false -> io_lib:format("openssl req -config ~s -batch -new -x509 -days 3000 -sha256 -extensions v3_ca -passin pass:~s -key ~s -out ~s",
[ CaConfigFileName, Password, CaKeyFileName, CaKeyCertFileName ]);
true -> io_lib:format("openssl req -config ~s -batch -new -x509 -days 3000 -sha256 -extensions v3_ca -key ~s -out ~s",
[ CaConfigFileName, CaKeyFileName, CaKeyCertFileName ])
end,
_CommandResult1 = os:cmd(Cmd1),
_ = file:change_mode(CaKeyCertFileName,8#0400),
%% io:format("> CMD1: ~s, RESULT: ~s~n~n",[Cmd1,CommandResult1]),
ServerTemplateFileName = filename:join([utils:priv_dir(),"templates","ssl-server.cnf"]),
ServerConfigFileName = filename:join([CaDir,"ssl-server.cnf"]),
utils:search_replace(ServerTemplateFileName,ServerConfigFileName,[{"$$ROOT_DIR$$",CaDir}]),
ok = file:write_file( filename:join([CaDir, "index.txt"]),<<>>),
ok = file:write_file( filename:join([CaDir, "serial.txt"]),<<$0,$1>>),
CreateCaScriptTemplate = filename:join([utils:priv_dir(),"templates","ssl-create-ca.sh"]),
CreateCaScriptFileName = filename:join([CaDir,"ssl-create-ca.sh"]),
utils:search_replace(CreateCaScriptTemplate,CreateCaScriptFileName,[{"$$ROOT_DIR$$",CaDir}]),
ok = utils:make_dir(filename:join([CaDir,"certs"])),
ok = utils:make_dir(filename:join([CaDir,"newcerts"])),
ok = utils:make_dir(filename:join([CaDir,"crl"])),
ok = utils:make_dir(filename:join([CaDir,"private"])),
CreateClientScriptTemplate = filename:join([utils:priv_dir(),"templates","ssl-create-client.sh"]),
CreateClientScriptFileName = filename:join([CaDir,"ssl-create-client.sh"]),
utils:search_replace(CreateClientScriptTemplate,CreateClientScriptFileName,[{"$$ROOT_DIR$$",CaDir}]),
CreateServerScriptTemplate = filename:join([utils:priv_dir(),"templates","ssl-create-server.sh"]),
CreateServerScriptFileName = filename:join([CaDir,"ssl-create-server.sh"]),
utils:search_replace(CreateServerScriptTemplate,CreateServerScriptFileName,[{"$$ROOT_DIR$$",CaDir}]),
_ = file:change_mode(CreateCaScriptFileName,8#0777),
_ = file:change_mode(CreateClientScriptFileName,8#0777),
_ = file:change_mode(CreateServerScriptFileName,8#0777),
_Result = os:cmd(CreateCaScriptFileName),
%% io:format("RESULT: ~p~n",[Result]),
CaKeyCertFileName = filename:join([CaDir,"cacert.pem"]),
CaKeyFileName = filename:join([CaDir,"cakey.pem"]),
{ok,CertData}=utils:pem_to_cert(CaKeyCertFileName),
{ok,KeyData}=utils:pem_to_key(CaKeyFileName),
_ = file:change_mode(CaKeyFileName,8#0400),
_ = file:change_mode(CaKeyCertFileName,8#0400),
NewCa = #ca_info{ name = CaName,
dir_name = list_to_binary(CaDir),
clients_dir_name = list_to_binary(CaClientsDir),
@@ -488,8 +496,7 @@ create_ca(CaName,Password,State,_Pid)->
config_file_name = list_to_binary(CaConfigFileName),
cert = CertData,
key = KeyData,
password = Password,
config_data = list_to_binary(NewConf)
password = Password
},
_ = add_record(NewCa),
ets:insert(?CADB_TABLE,NewCa),
@@ -502,37 +509,57 @@ import_a_ca(CaName,Attributes,State,_Pid)->
%% Make all the directories
#{ password := OPassword , keyfilename := OKeyFileNAme , certfilename := OCertFileName } = Attributes,
CaDir = filename:join([State#inventory_state.cert_db_dir,binary_to_list(CaName)]),
CaDir = filename:join([State#inventory_state.cert_db_dir,binary_to_list(CaName)]),
ok = utils:make_dir(CaDir),
ok = file:write_file( filename:join([CaDir, "index.txt"]),<<>>),
ok = file:write_file( filename:join([CaDir, "serial.txt"]),<<$0,$1>>),
ok = utils:make_dir(filename:join([CaDir,"certs"])),
ok = utils:make_dir(filename:join([CaDir,"newcerts"])),
ok = utils:make_dir(filename:join([CaDir,"crl"])),
ok = utils:make_dir(filename:join([CaDir,"private"])),
CaClientsDir = filename:join([CaDir,"clients"]),
CaServersDir = filename:join([CaDir,"servers"]),
ok = utils:make_dir(CaClientsDir),
ok = utils:make_dir(CaServersDir),
{ ok , TemplateConf } = file:read_file( filename:join([utils:priv_dir(),"templates","ca.cnf.template"] )),
NewConf = string:replace(binary_to_list(TemplateConf),"$$DIR_ROOT$$",CaDir,all),
CaConfigFileName = filename:join([CaDir,binary_to_list(CaName)++".cnf"]),
ok = file:write_file(CaConfigFileName , list_to_binary(NewConf)),
CaTemplateFileName = filename:join([utils:priv_dir(),"templates","ssl-ca.cnf"]),
CaConfigFileName = filename:join([CaDir,"ssl-ca.cnf"]),
utils:search_replace(CaTemplateFileName,CaConfigFileName,[{"$$ROOT_DIR$$",CaDir}]),
CaKeyFileName = filename:join([CaDir,binary_to_list(CaName) ++ "_key.pem"]),
CaKeyCertFileName = filename:join([CaDir,binary_to_list(CaName) ++ "_cert.pem"]),
CaConfigFileName = filename:join([CaDir,binary_to_list(CaName)++".cnf"]),
ClientTemplateFileName = filename:join([utils:priv_dir(),"templates","ssl-client.cnf"]),
ClientConfigFileName = filename:join([CaDir,"ssl-client.cnf"]),
utils:search_replace(ClientTemplateFileName,ClientConfigFileName,[{"$$ROOT_DIR$$",CaDir}]),
ServerTemplateFileName = filename:join([utils:priv_dir(),"templates","ssl-server.cnf"]),
ServerConfigFileName = filename:join([CaDir,"ssl-server.cnf"]),
utils:search_replace(ServerTemplateFileName,ServerConfigFileName,[{"$$ROOT_DIR$$",CaDir}]),
CreateCaScriptTemplate = filename:join([utils:priv_dir(),"templates","ssl-create-ca.sh"]),
CreateCaScriptFileName = filename:join([CaDir,"ssl-create-ca.sh"]),
utils:search_replace(CreateCaScriptTemplate,CreateCaScriptFileName,[{"$$ROOT_DIR$$",CaDir}]),
CreateClientScriptTemplate = filename:join([utils:priv_dir(),"templates","ssl-create-client.sh"]),
CreateClientScriptFileName = filename:join([CaDir,"ssl-create-client.sh"]),
utils:search_replace(CreateClientScriptTemplate,CreateClientScriptFileName,[{"$$ROOT_DIR$$",CaDir}]),
CreateServerScriptTemplate = filename:join([utils:priv_dir(),"templates","ssl-create-server.sh"]),
CreateServerScriptFileName = filename:join([CaDir,"ssl-create-server.sh"]),
utils:search_replace(CreateServerScriptTemplate,CreateServerScriptFileName,[{"$$ROOT_DIR$$",CaDir}]),
_ = file:change_mode(CreateCaScriptFileName,8#0777),
_ = file:change_mode(CreateClientScriptFileName,8#0777),
_ = file:change_mode(CreateServerScriptFileName,8#0777),
CaKeyFileName = filename:join([CaDir,"cakey.pem"]),
CaKeyCertFileName = filename:join([CaDir,"cacert.pem"]),
CaConfigFileName = filename:join([CaDir,"ssl-ca.cnf"]),
_R1 = file:copy( OKeyFileNAme , CaKeyFileName ),
_R2 = file:copy( OCertFileName, CaKeyCertFileName ),
%% io:format("R1=~p R2=~p O=~p N=~p~n",[R1,R2,OKeyFileNAme,CaKeyFileName]),
_ = file:change_mode(CaKeyFileName,8#0400),
_ = file:change_mode(CaKeyCertFileName,8#0400),
ok = file:write_file( filename:join([CaDir, "index.txt"]),<<>>),
ok = file:write_file( filename:join([CaDir, "serial.txt"]),<<$0,$1>>),
ok = utils:make_dir(filename:join([CaDir,"certs"])),
ok = utils:make_dir(filename:join([CaDir,"newcerts"])),
ok = utils:make_dir(filename:join([CaDir,"crl"])),
ok = utils:make_dir(filename:join([CaDir,"private"])),
{ok,CertData}=utils:pem_to_cert(CaKeyCertFileName),
{ok,KeyData}=utils:pem_to_key(CaKeyFileName),
@@ -545,8 +572,7 @@ import_a_ca(CaName,Attributes,State,_Pid)->
config_file_name = list_to_binary(CaConfigFileName),
cert = CertData,
key = KeyData,
password = list_to_binary(OPassword),
config_data = list_to_binary(NewConf)
password = list_to_binary(OPassword)
},
_ = add_record(NewCa),
ets:insert(?CADB_TABLE,NewCa),
@@ -569,59 +595,24 @@ delete_ca(CAInfo,State,_Pid)->
-spec create_server(CAInfo::ca_info(),Name::binary(),Type::service_role(),State::#inventory_state{},ParentPid::pid()) -> { ok , NewState::#inventory_state{} } | generic_error().
create_server(CAInfo,Name,Type,State,_Pid)->
BaseDir = binary_to_list(CAInfo#ca_info.servers_dir_name),
ServerKeyPem = filename:join([BaseDir,"server-" ++ binary_to_list(Name) ++ "-key.pem"]),
ServerKeyDec = filename:join([BaseDir,"server-" ++ binary_to_list(Name) ++ "-key_dec.pem"]),
ServerCertCsr = filename:join([BaseDir,"server-" ++ binary_to_list(Name) ++ "-cert.csr"]),
ServerCertPem = filename:join([BaseDir,"server-" ++ binary_to_list(Name) ++ "-cert.pem"]),
Subject = "\"/C=CA/ST=BC/L=Vancouver/O=Arilia Wireless Inc./OU=Servers/CN=" ++ binary_to_list(Name) ++ "\"",
Cmd1 = case CAInfo#ca_info.password == <<>> of
false ->
io_lib:format("openssl req -config ~s -batch -passout pass:~s -newkey rsa:2048 -sha256 -keyout ~s -out ~s -outform PEM -nodes",
[ binary_to_list(CAInfo#ca_info.config_file_name),
binary_to_list(CAInfo#ca_info.password),
ServerKeyPem,
ServerCertCsr]);
true ->
io_lib:format("openssl req -config ~s -batch -newkey rsa:2048 -sha256 -keyout ~s -out ~s -outform PEM -nodes",
[ binary_to_list(CAInfo#ca_info.config_file_name),
ServerKeyPem,
ServerCertCsr])
%% "openssl req -config ~s -batch -newkey rsa:2048 -sha256 -keyout ~s -out ~s -outform PEM -nodes"
end,
_CommandResult1 = os:cmd(Cmd1),
%% io:format("> CMD1: ~s, RESULT: ~s~n~n",[Cmd1,CommandResult1]),
Cmd2 = case CAInfo#ca_info.password == <<>> of
false -> io_lib:format("openssl ca -batch -passin pass:~s -config ~s -subj ~s -keyfile ~s -cert ~s -extensions server_cert -policy policy_loose -out ~s -infiles ~s",
[ binary_to_list(CAInfo#ca_info.password),
binary_to_list(CAInfo#ca_info.config_file_name),
Subject,
binary_to_list(CAInfo#ca_info.key_file_name),
binary_to_list(CAInfo#ca_info.cert_file_name),
ServerCertPem,
ServerCertCsr]);
true -> io_lib:format("openssl ca -batch -config ~s -subj ~s -keyfile ~s -cert ~s -extensions server_cert -policy policy_loose -out ~s -infiles ~s",
[ binary_to_list(CAInfo#ca_info.config_file_name),
Subject,
binary_to_list(CAInfo#ca_info.key_file_name),
binary_to_list(CAInfo#ca_info.cert_file_name),
ServerCertPem,
ServerCertCsr])
end,
_CommandResult2 = os:cmd(Cmd2),
%% io:format("> CMD2: ~s, RESULT: ~s~n~n",[Cmd2,CommandResult2]),
Cmd3 = case CAInfo#ca_info.password == <<>> of
false ->io_lib:format("openssl rsa -passin pass:~s -in ~s -out ~s",
[ binary_to_list(CAInfo#ca_info.password), ServerKeyPem, ServerKeyDec]);
true -> io_lib:format("openssl rsa -in ~s -out ~s",
[ ServerKeyPem, ServerKeyDec])
end,
_CommandResult3 = os:cmd(Cmd3),
%% io:format("> CMD3: ~s, RESULT: ~s~n~n",[Cmd3,CommandResult3]),
ServerKeyPem = filename:join([BaseDir,binary_to_list(Name) ++ "-key.pem"]),
ServerKeyDec = filename:join([BaseDir,binary_to_list(Name) ++ "-key_dec.pem"]),
ServerCertCsr = filename:join([BaseDir,binary_to_list(Name) ++ "-cert.csr"]),
ServerCertPem = filename:join([BaseDir,binary_to_list(Name) ++ "-cert.pem"]),
CaBase = binary_to_list(CAInfo#ca_info.dir_name),
CreateServerScriptFileName = filename:join([CaBase,"ssl-create-server.sh"]),
_Result = os:cmd(CreateServerScriptFileName),
%% io:format("RESULT: ~p~n",[Result]),
file:rename( filename:join([CaBase,"servercert.csr"]),ServerCertCsr ),
file:rename( filename:join([CaBase,"servercert.pem"]),ServerCertPem ),
file:rename( filename:join([CaBase,"serverkey.pem"]),ServerKeyPem ),
file:rename( filename:join([CaBase,"serverkey_dec.pem"]),ServerKeyDec ),
{ok,KeyPemData} = utils:pem_to_key(ServerKeyPem),
{ok,ServerCertPemData} = utils:pem_to_cert(ServerCertPem),
{ok,ServerKeyDecPemData} = utils:pem_to_key(ServerKeyDec),
{ok,ServerCertCsrPemData} = file:read_file(ServerCertCsr),
NewServerInfo = #server_info{
@@ -651,49 +642,22 @@ create_servers(CAInfo,[H|T],Type,State,Pid)->
-spec create_client( CAInfo :: ca_info(), Attributes::#{ atom() => term() }, State::#inventory_state{}) ->
{ ok , NewState::#inventory_state{} } | { error , Reason :: term()}.
create_client(CAInfo,Attributes,State)->
BaseDir = binary_to_list(CAInfo#ca_info.clients_dir_name),
#{ mac := Mac, serial := Serial, name := Name , id := HardwareId } = Attributes,
ClientKeyPem = filename:join([BaseDir,"client-" ++ binary_to_list(Name) ++ "-key.pem"]),
ClientKeyDec = filename:join([BaseDir,"client-" ++ binary_to_list(Name) ++ "-key_dec.pem"]),
ClientCertCsr = filename:join([BaseDir,"client-" ++ binary_to_list(Name) ++ "-cert.csr"]),
ClientCertPem = filename:join([BaseDir,"client-" ++ binary_to_list(Name) ++ "-cert.pem"]),
%% Subject = "\"/C=CA/ST=BC/L=Vancouver/O=Arilia Wireless Inc./OU=Clients/CN=" ++ binary_to_list(Serial) ++ "\"",
Subject = "\"/C=CA/ST=BC/L=Vancouver/O=Arilia Wireless Inc./OU=Clients/CN=" ++ binary_to_list(<<"Open_AP">>) ++ "\"",
BaseFileName = filename:join( [ binary_to_list(CAInfo#ca_info.clients_dir_name),binary_to_list(Serial)]),
ClientKeyPem = BaseFileName ++ "-key.pem",
ClientKeyDec = BaseFileName ++ "-key_dec.pem",
ClientCertCsr = BaseFileName ++ "-cert.csr",
ClientCertPem = BaseFileName ++ "-cert.pem",
Cmd1 = case CAInfo#ca_info.password == <<>> of
false -> io_lib:format("openssl req -config ~s -batch -passout pass:~s -newkey rsa:2048 -sha256 -keyout ~s -out ~s -outform PEM -nodes",
[ binary_to_list(CAInfo#ca_info.config_file_name), binary_to_list(CAInfo#ca_info.password), ClientKeyPem,ClientCertCsr]);
true -> io_lib:format("openssl req -config ~s -batch -newkey rsa:2048 -sha256 -keyout ~s -out ~s -outform PEM -nodes",
[ binary_to_list(CAInfo#ca_info.config_file_name), ClientKeyPem, ClientCertCsr])
end,
_CommandResult1 = os:cmd(Cmd1),
%% io:format("CMD1: ~s, RESULT: ~s~n~n",[Cmd1,CommandResult1]),
Cmd2 = case CAInfo#ca_info.password == <<>> of
false -> io_lib:format("openssl ca -batch -passin pass:~s -config ~s -subj ~s -keyfile ~s -cert ~s -extensions usr_cert -policy policy_loose -out ~s -infiles ~s",
[ binary_to_list(CAInfo#ca_info.password),
binary_to_list(CAInfo#ca_info.config_file_name),
Subject,
binary_to_list(CAInfo#ca_info.key_file_name),
binary_to_list(CAInfo#ca_info.cert_file_name),
ClientCertPem ,
ClientCertCsr
]);
true -> io_lib:format("openssl ca -batch -config ~s -subj ~s -keyfile ~s -cert ~s -extensions usr_cert -policy policy_loose -out ~s -infiles ~s",
[ binary_to_list(CAInfo#ca_info.config_file_name),
Subject,
binary_to_list(CAInfo#ca_info.key_file_name),
binary_to_list(CAInfo#ca_info.cert_file_name),
ClientCertPem ,
ClientCertCsr ])
end,
_CommandResult2 = os:cmd(Cmd2),
%% io:format("CMD2: ~s, RESULT: ~s~n~n",[Cmd2,CommandResult2]),
Cmd3 = case CAInfo#ca_info.password == <<>> of
false -> io_lib:format("openssl rsa -passin pass:~s -in ~s -out ~s", [ binary_to_list(CAInfo#ca_info.password), ClientKeyPem, ClientKeyDec]);
true -> io_lib:format("openssl rsa -in ~s -out ~s", [ ClientKeyPem, ClientKeyDec])
end,
_CommandResult3 = os:cmd(Cmd3),
%% io:format("CMD3: ~s, RESULT: ~s~n~n",[Cmd3,CommandResult3]),
CaBase = binary_to_list(CAInfo#ca_info.dir_name),
CreateClientScriptFileName = filename:join([CaBase,"ssl-create-client.sh"]),
_Result = os:cmd(CreateClientScriptFileName),
%% io:format("RESULT: ~p~n",[Result]),
file:rename( filename:join([CaBase,"clientcert.csr"]),ClientCertCsr ),
file:rename( filename:join([CaBase,"clientcert.pem"]),ClientCertPem ),
file:rename( filename:join([CaBase,"clientkey.pem"]),ClientKeyPem ),
file:rename( filename:join([CaBase,"clientkey_dec.pem"]),ClientKeyDec ),
{ok,ClientCertCsrData} = file:read_file(ClientCertCsr),
{ok,ClientKeyDecData} = utils:pem_to_key(ClientKeyDec),
@@ -721,12 +685,9 @@ create_client(CAInfo,Attributes,State)->
cacert = CAInfo#ca_info.cert,
csr = ClientCertCsrData
},
%% io:format(">>>SERIAL: ~p~n",[Serial]),
_R = add_record(Client),
%% io:format("RESULT>>>=~p~n",[R]),
{ ok, State }.
generate_client_batch(CAInfo,Start,HowMany,Attributes,Notification,State)->

View File

@@ -320,4 +320,7 @@ l1()->
create_simulation("sim1").
l2()->
prepare_simulation("sim1").
prepare_simulation("sim1").
m1()->
inventory:make_ca("sim1","").

View File

@@ -15,7 +15,7 @@
-export([ make_dir/1,uuid/0,get_addr/0,get_addr2/0,app_name/0,app_name/1,priv_dir/0,app_env/2,to_string_list/2,to_binary_list/2,print_nodes_info/1,
do/2,pem_to_cert/1,pem_to_key/1,safe_binary/1,uuid_b/0,pem_key_is_encrypted/1,remove_pem_key_password/3,
noop/0,noop_mfa/0,split_into/2,select/3,adjust/2,
get_avg/1, new_avg/0,compute_avg/2]).
get_avg/1, new_avg/0,compute_avg/2,search_replace/3]).
-type average() :: { CurrentValue::number(), HowManyValues::integer(), PastValues::[number()]}.
-export_type([average/0]).
@@ -265,3 +265,21 @@ compute_avg(V,Avg)->
-spec get_avg(average())->number().
get_avg({V,_,_})->
V.
safe_list(I) when is_binary(I)->
binary_to_list(I);
safe_list(I) when is_list(I)->
I.
replace_data(Data,[])->
Data;
replace_data(Data,[{From,To}|T])->
NewData = string:replace(Data,From,To,all),
replace_data(NewData,T).
-spec search_replace(Infile::binary()|string(),OutFile::binary()|string(),[{From::string(),To::string()}]) -> ok.
search_replace(InFile,OutFile,Elements)->
{ ok , InData } = file:read_file(safe_list(InFile)),
NewData = replace_data(binary_to_list(InData),Elements),
file:write_file(safe_list(OutFile),list_to_binary(NewData)).

View File

@@ -1,4 +1,4 @@
rm -rf certs_db
rm -rf priv/mnesia/*
rm -rf priv/data/*
# rm -rf priv/data/*