|
@@ -82,7 +82,7 @@ class VpnGen:
|
82
|
82
|
|
83
|
83
|
def get_client_dir(self, vpn_name, client_name):
|
84
|
84
|
base_dir = self.get_base_dir(vpn_name)
|
85
|
|
- return "%sclients%s%s%s" % (base_dir, os.sep, client_name, os.sep)
|
|
85
|
+ return "%sclients%s%s-%s%s" % (base_dir, os.sep, client_name, vpn_name, os.sep)
|
86
|
86
|
|
87
|
87
|
def get_client_config_path(self, vpn_name, client_name):
|
88
|
88
|
client_dir = self.get_client_dir(vpn_name, client_name)
|
|
@@ -198,19 +198,6 @@ class VpnGen:
|
198
|
198
|
if os.path.exists(client_dir):
|
199
|
199
|
return VpnGenError.ClientAlreadyExists
|
200
|
200
|
|
201
|
|
- client_default_config_path = self.get_client_default_config_path(vpn_name)
|
202
|
|
- with open(client_default_config_path, "r") as f:
|
203
|
|
- client_default_config = f.read()
|
204
|
|
-
|
205
|
|
- variables['name'] = vpn_name
|
206
|
|
- variables['client'] = client_name
|
207
|
|
- for variable in variables:
|
208
|
|
- client_default_config = client_default_config.replace("${%s}" % variable, variables[variable])
|
209
|
|
-
|
210
|
|
- os.makedirs(client_dir)
|
211
|
|
- with open(client_conf_file, "w") as f:
|
212
|
|
- f.write(client_default_config)
|
213
|
|
-
|
214
|
201
|
curdir = os.curdir
|
215
|
202
|
easyrsadir = self.get_easy_rsa_dir(vpn_name)
|
216
|
203
|
pkitool = self.get_pkitool_path(vpn_name)
|
|
@@ -224,16 +211,7 @@ class VpnGen:
|
224
|
211
|
|
225
|
212
|
os.chdir(curdir)
|
226
|
213
|
|
227
|
|
- files_paths = self.get_all_needed_files_paths(vpn_name, client_name)
|
228
|
|
- for file_path in files_paths:
|
229
|
|
- split = os.path.splitext(file_path)
|
230
|
|
- dest = "%s%s-%s%s" % (client_dir, os.path.basename(split[0]), vpn_name, split[1])
|
231
|
|
- shutil.copy(file_path, dest)
|
232
|
|
-
|
233
|
|
- files_names = list(map(lambda file_path: os.path.basename(file_path), files_paths))
|
234
|
|
-
|
235
|
|
- call(["tar", "cfj", self.get_client_tarball_path(vpn_name, client_name),
|
236
|
|
- "-C", self.get_easy_rsa_key_dir(vpn_name)] + files_names)
|
|
214
|
+ self.build_client(vpn_name, client_name, variables)
|
237
|
215
|
|
238
|
216
|
return VpnGenError.Success
|
239
|
217
|
|
|
@@ -249,3 +227,31 @@ class VpnGen:
|
249
|
227
|
def rebuild_clients(self, vpn_name):
|
250
|
228
|
base_dir = self.get_base_dir(vpn_name)
|
251
|
229
|
return VpnGenError.Success
|
|
230
|
+
|
|
231
|
+ def build_client(self, vpn_name, client_name, variables):
|
|
232
|
+ client_dir = self.get_client_dir(vpn_name, client_name)
|
|
233
|
+ client_conf_file = self.get_client_config_path(vpn_name, client_name)
|
|
234
|
+ client_default_config_path = self.get_client_default_config_path(vpn_name)
|
|
235
|
+
|
|
236
|
+ with open(client_default_config_path, "r") as f:
|
|
237
|
+ client_default_config = f.read()
|
|
238
|
+
|
|
239
|
+ variables['name'] = vpn_name
|
|
240
|
+ variables['client'] = client_name
|
|
241
|
+ for variable in variables:
|
|
242
|
+ client_default_config = client_default_config.replace("${%s}" % variable, variables[variable])
|
|
243
|
+
|
|
244
|
+ os.makedirs(client_dir)
|
|
245
|
+ with open(client_conf_file, "w") as f:
|
|
246
|
+ f.write(client_default_config)
|
|
247
|
+
|
|
248
|
+ files_paths = self.get_all_needed_files_paths(vpn_name, client_name)
|
|
249
|
+ for file_path in files_paths:
|
|
250
|
+ split = os.path.splitext(file_path)
|
|
251
|
+ dest = "%s%s-%s%s" % (client_dir, os.path.basename(split[0]), vpn_name, split[1])
|
|
252
|
+ shutil.copy(file_path, dest)
|
|
253
|
+
|
|
254
|
+ files_names = list(map(lambda file_path: os.path.basename(file_path), files_paths))
|
|
255
|
+
|
|
256
|
+ call(["tar", "cfj", self.get_client_tarball_path(vpn_name, client_name),
|
|
257
|
+ "-C", self.get_easy_rsa_key_dir(vpn_name)] + files_names)
|