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
);
54 chmod("/etc/shadow", 0600);
56 #ifdef TCONFIG_SAMBASRV //!!TB
58 "root:x:0:0:root:/root:/bin/sh\n"
59 "%s:x:100:100:nas:/dev/null:/dev/null\n"
60 "nobody:x:65534:65534:nobody:/dev/null:/dev/null\n",
62 f_write_string("/etc/passwd", s
, 0, 0644);
64 f_write_string("/etc/passwd",
65 "root:x:0:0:root:/root:/bin/sh\n"
68 "admin:x:100:100:nas:/dev/null:/dev/null\n"
70 "nobody:x:65534:65534:nobody:/dev/null:/dev/null\n",
74 f_write_string("/etc/gshadow",
77 #ifdef TCONFIG_SAMBASRV //!!TB
82 f_write_string("/etc/group",
85 #ifdef TCONFIG_SAMBASRV //!!TB
92 static inline int check_host_key(const char *ktype
, const char *nvname
, const char *hkfn
)
96 if (!nvram_get_file(nvname
, hkfn
, 2048)) {
97 eval("dropbearkey", "-t", (char *)ktype
, "-f", (char *)hkfn
);
98 if (nvram_set_file(nvname
, hkfn
, 2048)) {
106 void start_sshd(void)
108 mkdir("/etc/dropbear", 0700);
109 mkdir("/root/.ssh", 0700);
111 f_write_string("/root/.ssh/authorized_keys", nvram_safe_get("sshd_authkeys"), 0, 0700);
113 if (check_host_key("rsa", "sshd_hostkey", "/etc/dropbear/dropbear_rsa_host_key") ||
114 check_host_key("dss", "sshd_dsskey", "/etc/dropbear/dropbear_dss_host_key"))
118 xstart("dropbear", "-a", "-p", nvram_safe_get("sshd_port"), nvram_get_int("sshd_pass") ? "" : "-s");
125 argv
[0] = "dropbear";
127 argv
[2] = nvram_safe_get("sshd_port");
130 if (!nvram_get_int("sshd_pass")) argv
[argc
++] = "-s";
132 if (nvram_get_int("sshd_forwarding")) argv
[argc
++] = "-a";
134 if (((p
= nvram_get("sshd_rwb")) != NULL
) && (*p
)) {
140 _eval(argv
, NULL
, 0, NULL
);
145 killall("dropbear", SIGTERM
);
148 void start_telnetd(void)
150 xstart("telnetd", "-p", nvram_safe_get("telnetd_port"));
153 void stop_telnetd(void)
155 killall("telnetd", SIGTERM
);