Skip to content

Commit e789483

Browse files
committed
Added code to provider
1 parent 3468c03 commit e789483

File tree

2 files changed

+74
-12
lines changed

2 files changed

+74
-12
lines changed

lib/smart_proxy_realm_ad/provider.rb

+73-12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
require 'proxy/kerberos'
2-
require 'radcli'
2+
#require 'radcli'
33

44
module Proxy::AdRealm
55
class Provider
@@ -19,45 +19,106 @@ def check_realm realm
1919
raise Exception.new "Unknown realm #{realm}" unless realm.casecmp(@realm).zero?
2020
end
2121

22-
def find hostname
22+
def find hostfqdn
2323
true
2424
end
2525

26-
def create realm, hostname, params
27-
logger.info "Proxy::AdRealm: create... #{realm}, #{hostname}, #{params}"
26+
def create realm, hostfqdn, params
27+
logger.info "Proxy::AdRealm: create... #{realm}, #{hostfqdn}, #{params}"
28+
check_realm realm
29+
kinit_racdli_connect
30+
31+
password = generate_password
32+
result = { :randompassword => password }
33+
34+
begin
35+
if params[:rebuild] == "true"
36+
do_host_rebuild hostfqdn, password
37+
else
38+
do_host_create hostfqdn, password
39+
end
40+
rescue
41+
raise
42+
end
43+
44+
JSON.pretty_generate(result)
2845
end
2946

30-
def delete realm, hostname
31-
logger.info "Proxy::AdRealm: delete... #{realm}, #{hostname}"
47+
def delete realm, hostfqdn
48+
logger.info "Proxy::AdRealm: delete... #{realm}, #{hostfqdn}"
49+
kinit_radcli_connect()
50+
check_realm realm
51+
begin
52+
radcli_delete hostfqdn
53+
rescue Adcli::AdEnroll::Exception =>
54+
raise
55+
end
3256
end
3357

3458
private
3559

36-
def hostfqdn_hostname host_fqdn
60+
def hostfqdn_to_hostname host_fqdn
61+
begin
62+
host_fqdn_split = host_fqdn.split('.')
63+
host_fqdn_split[0]
64+
rescue
65+
logger.debug "hostfqdn_to_hostname error"
66+
raise
67+
end
3768
end
3869

39-
def do_host_create hostname, password
70+
def do_host_create hostfqdn, password
71+
hostname = hostfqdn_to_hostname hostfqdn
72+
radcli_join hostfqdn, hostname, password
4073
end
4174

42-
def do_host_rebuild hostname, password
75+
def do_host_rebuild hostfqdn, password
76+
hostname = hostfqdn_to_hostname hostfqdn
77+
racli_password hostname, password
78+
4379
end
4480

4581
def kinit_racdli_connect
82+
init_krb5_ccache @keytab_path, @principal
83+
@adconn = radcli_connect()
4684
end
4785

4886
def radcli_connect
87+
# Connect to active directory
88+
conn = Adcli::AdConn.new(@domain)
89+
conn.set_domain_realm(@realm)
90+
conn.set_domain_controller(@domain_controller)
91+
conn.set_login_ccache_name("")
92+
conn.connect()
93+
return conn
4994
end
5095

51-
def radcli_join
96+
def radcli_join hostfqdn, hostname, password
97+
# Join computer
98+
enroll = Adcli::AdEnroll.new(@adconn)
99+
enroll.set_computer_name(hostname)
100+
enroll.set_host_fqdn(hostfqdn)
101+
enroll.set_computer_password(password)
102+
enroll.join()
52103
end
53104

54105
def generate_password
106+
return "randompassword"
55107
end
56108

57-
def racli_password
109+
def racli_password hostname, password
110+
# Reset a computer's password
111+
enroll = Adcli::AdEnroll.new(@adconn)
112+
enroll.set_computer_name(hostname)
113+
enroll.set_computer_password(password)
114+
enroll.password()
58115
end
59116

60-
def radcli_delete
117+
def radcli_delete hostname
118+
# Delete a computer's account
119+
enroll = Adcli::AdEnroll.new(@adconn)
120+
enroll.set_computer_name(hostname)
121+
enroll.delete()
61122
end
62123

63124
end

radcli

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit fcd693ff6861c6745029bf38b63d826634768092

0 commit comments

Comments
 (0)