4 Copyright (C) 2006-2009 Jonathan Zarate
11 void create_passwd(void)
18 #ifdef TCONFIG_SAMBASRV //!!TB
23 f_read("/dev/urandom", s
, 6);
24 base64_encode(s
, salt
+ 3, 6);
28 if (*p
== '+') *p
= '.';
31 if (((p
= nvram_get("http_passwd")) == NULL
) || (*p
== 0)) p
= "admin";
33 #ifdef TCONFIG_SAMBASRV //!!TB
34 if (((smbd_user
= nvram_get("smbd_user")) == NULL
) || (*smbd_user
== 0) || !strcmp(smbd_user
, "root"))
39 if ((f
= fopen("/etc/shadow", "w")) != NULL
) {
41 fprintf(f
, "root:%s:0:0:99999:7:0:0:\n"
42 "nobody:*:0:0:99999:7:0:0:\n", p
);
45 fprintf(f
, "admin:*:0:0:99999:7:0:0:\n");
47 #ifdef TCONFIG_SAMBASRV //!!TB
48 fprintf(f
, "%s:*:0:0:99999:7:0:0:\n", smbd_user
);
51 fappend(f
, "/etc/shadow.custom");
55 chmod("/etc/shadow", 0600);
57 #ifdef TCONFIG_SAMBASRV //!!TB
59 "root:x:0:0:root:/root:/bin/sh\n"
60 "%s:x:100:100:nas:/dev/null:/dev/null\n"
61 "nobody:x:65534:65534:nobody:/dev/null:/dev/null\n",
63 f_write_string("/etc/passwd", s
, 0, 0644);
65 f_write_string("/etc/passwd",
66 "root:x:0:0:root:/root:/bin/sh\n"
69 "admin:x:100:100:nas:/dev/null:/dev/null\n"
71 "nobody:x:65534:65534:nobody:/dev/null:/dev/null\n",
74 fappend_file("/etc/passwd", "/etc/passwd.custom");
76 f_write_string("/etc/gshadow",
79 #ifdef TCONFIG_SAMBASRV //!!TB
84 fappend_file("/etc/gshadow", "/etc/gshadow.custom");
86 f_write_string("/etc/group",
89 #ifdef TCONFIG_SAMBASRV //!!TB
94 fappend_file("/etc/group", "/etc/group.custom");
97 static inline int check_host_key(const char *ktype
, const char *nvname
, const char *hkfn
)
101 if (!nvram_get_file(nvname
, hkfn
, 2048)) {
102 eval("dropbearkey", "-t", (char *)ktype
, "-f", (char *)hkfn
);
103 if (nvram_set_file(nvname
, hkfn
, 2048)) {
111 void start_sshd(void)
115 mkdir("/etc/dropbear", 0700);
116 mkdir("/root/.ssh", 0700);
118 f_write_string("/root/.ssh/authorized_keys", nvram_safe_get("sshd_authkeys"), 0, 0700);
120 dirty
|= check_host_key("rsa", "sshd_hostkey", "/etc/dropbear/dropbear_rsa_host_key");
121 dirty
|= check_host_key("dss", "sshd_dsskey", "/etc/dropbear/dropbear_dss_host_key");
126 xstart("dropbear", "-a", "-p", nvram_safe_get("sshd_port"), nvram_get_int("sshd_pass") ? "" : "-s");
133 argv
[0] = "dropbear";
135 argv
[2] = nvram_safe_get("sshd_port");
138 if (nvram_get_int("sshd_remote") && nvram_invmatch("sshd_rport", nvram_safe_get("sshd_port"))) {
140 argv
[argc
++] = nvram_safe_get("sshd_rport");
143 if (!nvram_get_int("sshd_pass")) argv
[argc
++] = "-s";
145 if (nvram_get_int("sshd_forwarding")) argv
[argc
++] = "-a";
147 if (((p
= nvram_get("sshd_rwb")) != NULL
) && (*p
)) {
153 _eval(argv
, NULL
, 0, NULL
);
158 killall("dropbear", SIGTERM
);
161 void start_telnetd(void)
163 xstart("telnetd", "-p", nvram_safe_get("telnetd_port"));
166 void stop_telnetd(void)
168 killall("telnetd", SIGTERM
);