-
Notifications
You must be signed in to change notification settings - Fork 0
/
netctl.js
82 lines (69 loc) · 2.63 KB
/
netctl.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
var _ = require("underscore")._
var async = require("async")
var fs = require("fs")
var systemctl = require("systemctl")
var exec = require("child_process").exec
// Better template format
_.templateSettings = {
interpolate: /\{\{(.+?)\}\}/g,
evaluate : /\{\[([\s\S]+?)\]\}/g
}
// Helper function to write a given template to a file based on a given context
function write_template_to_file(template_path, file_name, context, callback) {
async.waterfall([
function read_template_file(next_step) {
fs.readFile(template_path, {encoding: "utf8"}, next_step)
},
function update_file(file_txt, next_step) {
var template = _.template(file_txt)
fs.writeFile(file_name, template(context), next_step)
}
], callback)
}
module.exports = {
enable_auto: _enable_auto,
disable_auto: _disable_auto,
start_auto: _start_auto,
stop_auto: _stop_auto,
restart_auto: _restart_auto,
is_auto_enabled: _is_auto_enabled,
save_wifi_profile: _save_wifi_profile,
delete_wifi_profile: _delete_wifi_profile,
is_wifi_profile_saved: _is_wifi_profile_saved
}
function _enable_auto(interface_name, callback) {
systemctl.enable("netctl-auto@" + interface_name, callback)
}
function _disable_auto(interface_name, callback) {
systemctl.disable("netctl-auto@" + interface_name, callback)
}
function _stop_auto(interface_name, callback) {
systemctl.stop("netctl-auto@" + interface_name, callback)
}
function _start_auto(interface_name, callback) {
systemctl.start("netctl-auto@" + interface_name, callback)
}
function _is_auto_enabled(interface_name, callback) {
systemctl.is_enabled('netctl-auto@' + interface_name, callback)
}
function _restart_auto(interface_name, callback) {
systemctl.restart("netctl-auto@" + interface_name, callback)
}
function _save_wifi_profile(wifi_interface, connection_info, callback) {
async.waterfall([
function read_template_file(next_step) {
fs.readFile("./templates/netctl/wifi.template", {encoding: "utf8"}, next_step)
},
function update_file(file_txt, next_step) {
var template = _.template(file_txt)
fs.writeFile("/etc/netctl/" + wifi_interface + '-' + connection_info.wifi_ssid, template(connection_info), next_step)
}
], callback)
}
function _delete_wifi_profile(wifi_interface, wifi_ssid, callback) {
fs.unlink('/etc/netctl/' + wifi_interface + '-' + wifi_ssid, callback)
}
function _is_wifi_profile_saved(wifi_interface, wifi_ssid, callback) {
var exists = fs.existsSync('/etc/netctl/' + wifi_interface + '-' + wifi_ssid)
callback(null, exists)
}