PageRenderTime 35ms CodeModel.GetById 8ms RepoModel.GetById 1ms app.codeStats 0ms

/src/tcpanel/modules/network/distro_toroo-v3.1-cempaka.php

https://bitbucket.org/anak10thn/ign-tcpanel
PHP | 284 lines | 257 code | 13 blank | 14 comment | 5 complexity | 3ef626eafa78d9fb1c3baf8ef7f0d325 MD5 | raw file
Possible License(s): GPL-2.0
  1. <?php
  2. /*
  3. * Noprianto
  4. * Singkong 1.0 package helper script
  5. * 2008
  6. *
  7. * GPL
  8. * modify by Ibnu Yahya <ibnu.yahya@toroo.org>
  9. */
  10. $iface_info = array ();
  11. $cmd_start = "/etc/rc.d/rc.inet1 start";
  12. $cmd_stop = "/etc/rc.d/rc.inet1 stop";
  13. //get interfaces
  14. //
  15. $netcards = split("\n", shell_exec ("/usr/sbin/hwinfo --netcard --short"));
  16. for ($i=0; $i<count ($netcards); $i++)
  17. {
  18. $temp = trim ($netcards[$i]);
  19. if ($temp == "network:" || $temp == "") continue;
  20. list ($iface, $model) = split ("[ ]+", $temp, 2);
  21. $iface_info["$iface"] = $model;
  22. }
  23. //$save_config_fbody
  24. //accept 2 params: $iface_arr, $host_arr
  25. $save_config_fbody = '
  26. $_resolv = "/etc/resolv.conf";
  27. $_hosts = "/etc/hosts";
  28. $_inet = "/etc/rc.d/rc.inet1.conf";
  29. //interface config file
  30. $cf_iface = $_inet;
  31. //hosts config file
  32. $cf_hosts = $_hosts;
  33. //resolv config file
  34. $cf_resolv = $_resolv;
  35. $now = date("d-m-Y H:i:s");
  36. $fcontent_iface = "#Generated by noppanel (network module) on $now.\n\n\n";
  37. $fcontent_hosts = "#Generated by noppanel (network module) on $now.\n\n\n";
  38. $fcontent_hosts .= "127.0.0.1\t\tlocalhost\n";
  39. $fcontent_resolv = "#Generated by noppanel (network module) on $now.\n\n\n";
  40. $i = 0;
  41. foreach ($iface_arr as $k => $v)
  42. {
  43. $fcontent_iface .= "IPADDR[$i]=\"" . $v[0] . "\"\n";
  44. $fcontent_iface .= "NETMASK[$i]=\"" . $v[1] . "\"\n";
  45. if ($v[2] == true)
  46. {
  47. $fcontent_iface .= "USE_DHCP[$i]=\"yes\"\n";
  48. }
  49. else
  50. {
  51. $fcontent_iface .= "USE_DHCP[$i]=\"\"\n";
  52. }
  53. $fcontent_iface .= "DHCP_HOSTNAME[$i]=\"\"\n";
  54. $fcontent_iface .= "\n\n";
  55. $fcontent_hosts .= $v[0] . "\t\t" . $host_arr[0] . "." . $host_arr[1] . " " . $host_arr[0] . "\n";
  56. $i++;
  57. }
  58. $fcontent_iface .= "GATEWAY=\"" . $host_arr[2] . "\"\n";
  59. //search
  60. for ($i=6; $i<=8; $i++)
  61. {
  62. if (trim($host_arr[$i])!="")
  63. {
  64. $fcontent_resolv .= "search " . $host_arr[$i] . "\n";
  65. }
  66. }
  67. //ns
  68. for ($i=3; $i<=5; $i++)
  69. {
  70. if (trim($host_arr[$i])!="")
  71. {
  72. $fcontent_resolv .= "nameserver " . $host_arr[$i] . "\n";
  73. }
  74. }
  75. file_put_contents ($cf_iface, $fcontent_iface);
  76. file_put_contents ($cf_hosts, $fcontent_hosts);
  77. file_put_contents ($cf_resolv, $fcontent_resolv);
  78. ';
  79. //$load_config_fbody
  80. //accept 2 params: $nb_iface
  81. $load_config_fbody = '
  82. $_resolv = "/etc/resolv.conf";
  83. $_hosts = "/etc/hosts";
  84. $_inet = "/etc/rc.d/rc.inet1.conf";
  85. //get interface config
  86. $cf_iface = $_inet;
  87. $config_iface = split ("\n", shell_exec ("cat $cf_iface | grep -e \'^[^# ]\' | sort"));
  88. $config_temp = array();
  89. for ($i=0; $i<count ($config_iface); $i++)
  90. {
  91. $temp = trim ($config_iface[$i]);
  92. if ($temp == "") continue;
  93. list ($k, $v) = split ("=", $temp);
  94. $config_temp["$k"] = $v;
  95. }
  96. //interface config
  97. $iface_arr = array();
  98. for ($i=0; $i<count ($nb_iface); $i++)
  99. {
  100. $keys = array_keys ($config_temp);
  101. $search = "[$i]";
  102. for ($j=0; $j<count ($keys); $j++)
  103. {
  104. if (strstr ($keys[$j], $search))
  105. {
  106. //here comes the bad logic :p
  107. $iface_arr[$i] = array ($config_temp["IPADDR$search"], $config_temp["NETMASK$search"], $config_temp["USE_DHCP$search"]);
  108. break;
  109. }
  110. }
  111. }
  112. $gateway = $config_temp["GATEWAY"];
  113. //
  114. //
  115. //------------
  116. //
  117. //get host info
  118. $cf_hosts = $_hosts;
  119. $config_hosts = split ("\n", shell_exec ("cat $cf_hosts | grep -e \'^[^# ]\' | sort"));
  120. $config_temp = array();
  121. for ($i=0; $i<count ($config_hosts); $i++)
  122. {
  123. $temp = trim ($config_hosts[$i]);
  124. if ($temp == "") continue;
  125. list ($k, $v) = split ("[\t]+", $temp);
  126. if (trim($k) == "127.0.0.1") continue;
  127. $config_temp["$k"] = $v;
  128. }
  129. foreach ($config_temp as $k=>$v)
  130. {
  131. //another bad logic :)
  132. for ($i=0; $i<count ($iface_arr); $i++)
  133. {
  134. if ("\"$k\"" == $iface_arr[$i][0])
  135. {
  136. $hostinfo = split("[ ]+", $v);
  137. break;
  138. }
  139. else
  140. {
  141. $hostinfo = array();
  142. }
  143. }
  144. }
  145. $hostname = $hostinfo[1];
  146. $domain_arr = split("\.", $hostinfo[0]);
  147. for ($i=1; $i<count ($domain_arr); $i++)
  148. {
  149. $domain_arr2 [] = $domain_arr[$i];
  150. }
  151. $domain = join (".", $domain_arr2);
  152. //partial host arr
  153. $host_arr = array ($hostname, $domain, $gateway);
  154. //
  155. //
  156. //----------------
  157. //
  158. //get dns info
  159. $cf_resolv = $_resolv;
  160. $config_resolv = split ("\n", shell_exec ("cat $cf_resolv | grep -e \'^[^# ]\' | sort"));
  161. $config_temp = array();
  162. for ($i=0; $i<count ($config_resolv); $i++)
  163. {
  164. $temp = trim ($config_resolv[$i]);
  165. if ($temp == "") continue;
  166. list ($k, $v) = split ("[ ]+", $temp);
  167. $config_temp[] = array (trim($k), trim($v));
  168. }
  169. $ns_arr = array();
  170. $search_arr = array();
  171. for ($i=0; $i<count ($config_temp); $i++)
  172. {
  173. if ($config_temp[$i][0] == "nameserver")
  174. {
  175. $ns_arr [] = $config_temp[$i][1];
  176. }
  177. else
  178. if ($config_temp[$i][0] == "search")
  179. {
  180. $search_arr [] = $config_temp[$i][1];
  181. }
  182. }
  183. //add ns
  184. for ($i=0; $i<3; $i++)
  185. {
  186. if ($i < count ($ns_arr))
  187. {
  188. $host_arr [] = $ns_arr[$i];
  189. }
  190. else
  191. {
  192. $host_arr [] = "";
  193. }
  194. }
  195. //add search
  196. for ($i=0; $i<3; $i++)
  197. {
  198. if ($i < count ($search_arr))
  199. {
  200. $host_arr [] = $search_arr[$i];
  201. }
  202. else
  203. {
  204. $host_arr [] = "";
  205. }
  206. }
  207. $ret = array ($iface_arr, $host_arr);
  208. return $ret;
  209. ';
  210. ?>