<?php /** * Created by Klaas Tammling. (https://gist.github.com/KlaasT/449b28c63db129a7714d41b8e2074d90) * Project: anope2atheme * User: ktammling * Date: 10.10.2016 * Time: 15:55 */ $mu_hold = 0x00000001; $mu_neverop = 0x00000002; $mu_noop = 0x00000004; $mu_waitauth = 0x00000008; $mu_hidemail = 0x00000010; $mu_oldalias = 0x00000020; $mu_nomemo = 0x00000040; $mu_emailmemos = 0x00000080; $mu_cryptpass = 0x00000100; $mu_old_sasl = 0x00000200; $mu_noburstlogin = 0x00000400; $mu_enforce = 0x00000800; $mu_usepriv = 0x00001000; $mu_private = 0x00002000; $mu_quietchg = 0x00004000; $levels['VOP'] = "+AV"; $levels['HOP'] = "+AHehirtv"; $levels['AOP'] = "+AOehiortv"; $levels['SOP'] = "+AOaefhiorstv"; $levels['QOP'] = "+AFORaefhioqrstv"; $access[1] = "+A"; $access[3] = "+VA"; $access[4] = "+vHiA"; $access[5] = "+vhoOirtA"; $access[10] = "+vhoOairRftA"; $access[15] = "+vhoOairRftA"; $access[20] = "+vhoOairRftA"; $access[999] = "+vhoOairRftA"; $access[9000] = "+vhoOaqsirRftA"; $access[9999] = "+vhoOaqsirRftA"; $access[10000] = "+vhoOaqsirRftA"; $tdata = file_get_contents("anope.db"); $data = explode("\n", $tdata); unset($tdata); $userset = array(); #$aliasset = array(); $channelset = array(); $is_mu = false; $is_na = false; $is_cu = false; $is_ca = false; $mu_account = ""; $mu_pass = ""; $mu_lang = ""; $mu_email = ""; $mu_register = ""; $mu_flags = 0; $channel_flags = "+"; $mu_vhost_ident = ""; $mu_vhost_host = ""; $mu_vhost_creator = ""; $mu_vhost_time = ""; for($i = 0; $i < count($data); $i++) { $line = $data[$i]; $data2 = explode(" ", $line); if($is_mu or ($data2[0] == 'OBJECT' && $data2[1] == "NickCore")) { $is_md = false; $is_mu = true; $is_cu = false; $is_na = false; if (isset($data2[1])) { if ($data2[1] == "pass") { $passvars = explode(":", $data2[2]); $pass = $passvars[1]; $mu_pass = '$rawmd5$'.$pass; } if ($data2[1] == "display") { $mu_account = $data2[2]; } if ($data2[1] == "language") { $mu_lang = (isset($data2[2])) ? $data2[2] : "default"; } if ($data2[1] == "email") { $mu_email = (isset($data2[2])) ? $data2[2] : "admin@st-city.net"; } if ($data2[1] == "time_registered" && isset($data2[2])) { $mu_register = $data2[2]; } if($data2[1] == "HIDE_EMAIL") $mu_flags |= $mu_hidemail; if($data2[1] == "NS_PRIVATE") $mu_flags |= $mu_private; if($data2[1] == "NS_SECURE") $mu_flags |= $mu_enforce; $mu_flags = 272; } if (!empty($mu_account)) { $userset[$mu_account] = array( "mu_pass" => $mu_pass, "mu_account" => $mu_account, "mu_lang" => $mu_lang, "mu_email" => $mu_email, "mu_register" => $mu_register, "mu_flags" => $mu_flags, ); } if ($data2[0] == "END") { $mu_account = ""; $mu_pass = ""; $mu_lang = ""; $mu_email = ""; $mu_register = ""; $is_mu = false; } } if($is_na or ($data2[0] == 'OBJECT' && $data2[1] == "NickAlias")) { $is_md = false; $is_mu = false; $is_cu = false; $is_na = true; if (isset($data2[1]) && $data2[1]=="nick") { $tmplined = 'MN ' . $data2[2]; } if (isset($data2[1]) && $data2[1] == "time_registered") { $mu_register = $data2[2]; } if (isset($data2[1]) && $data2[1]=="nc") { $mu_account = $data2[2]; } if (isset($data2[1]) && $data2[1] == "vhost_ident") { $mu_vhost_ident = $data2[2]; } if (isset($data2[1]) && $data2[1] == "vhost_host") { $mu_vhost_host = $data2[2]; } if (isset($data2[1]) && $data2[1] == "vhost_creator") { $mu_vhost_creator = $data2[2]; } if (isset($data2[1]) && $data2[1] == "vhost_time") { $mu_vhost_time = $data2[2]; } if ($data2[0] == "END") { $tmplined .= " ".$mu_account." ".$mu_register." ".time(); $lastnick = $mu_account; $lastid = 'NA'; $dataNA = explode(" ", $tmplined); if (!empty($userset[$dataNA[1]])) { $userset[$dataNA[2]]['mu_register'] = $mu_register; } else { $userset[$dataNA[2]]['aliases'][$dataNA[1]] = array( "mu_register" => $mu_register, "last_seen" => time(), ); $userset[$dataNA[2]]['mu_register'] = $mu_register; } if (!empty($mu_vhost_host)) { $userset[$mu_account]['vhost_ident'] = $mu_vhost_ident; $userset[$mu_account]['vhost_host'] = $mu_vhost_host; $userset[$mu_account]['vhost_creator'] = $mu_vhost_creator; $userset[$mu_account]['vhost_time'] = $mu_vhost_time; } $mu_vhost_ident = ""; $mu_vhost_host = ""; $mu_vhost_creator = ""; $mu_vhost_time = ""; $mu_account = ""; $mu_pass = ""; $mu_lang = ""; $mu_email = ""; $mu_register = ""; $is_na = false; $tmplined = ""; } } if($is_cu or ($data2[0] == 'OBJECT' && $data2[1] == "ChannelInfo")) { $is_md = false; $is_mu = false; $is_cu = true; $is_na = false; if (isset($data2[1]) && $data2[1] == 'name') { $cu_name = $data2[2]; } if (isset($data2[1]) && $data2[1] == 'time_registered') { $cu_register = $data2[2]; } if (isset($data2[1]) && $data2[1] == 'last_used') { $cu_last_used = $data2[2]; } if (isset($data2[1]) && $data2[1] == 'founder') { $cu_founder = $data2[2]; } if (isset($data2[1]) && $data2[1] == 'last_topic') { $cu_last_topic = ""; for($i2 = 2; $i2 < count($data2); $i2++) { if (!empty($cu_last_topic)) { $cu_last_topic .= " ".$data2[$i2]; } else { $cu_last_topic .= $data2[$i2]; } } } if (isset($data2[1]) && $data2[1] == 'last_topic_setter') { $cu_last_topic_setter = $data2[2]; } if (isset($data2[1]) && $data2[1] == 'last_topic_time') { $cu_last_topic_time = $data2[2]; } if (isset($data2[1]) && $data2[1] == 'KEEPTOPIC') { if ($data2[2] == "1") { $channel_flags .= "k"; } } if (isset($data2[1]) && $data2[1] == 'CS_SECURE') { if ($data2[2] == "1") { $channel_flags .= "z"; } } if (isset($data2[1]) && $data2[1] == 'CS_PRIVATE') { if ($data2[2] == "1") { $channel_flags .= "p"; } } if (isset($data2[1]) && $data2[1] == 'CS_RESTRICT') { if ($data2[2] == "1") { $channel_flags .= "r"; } } if (!empty($cu_name)) { $channelset[$cu_name] = array( "cu_name" => $cu_name, "cu_register" => $cu_register, "cu_last_used" => $cu_last_used, "cu_founder" => $cu_founder, "cu_last_topic" => $cu_last_topic, "cu_last_topic_setter" => $cu_last_topic_setter, "cu_last_topic_time" => $cu_last_topic_time, ##"channel_flags" => $channel_flags, "channel_flags" => 600, ); } if ($data2[0] == "END") { $is_cu = false; $cu_name = ""; $cu_register = 0; $cu_last_used = 0; $cu_founder = ""; $cu_last_topic = ""; $cu_last_topic_setter = ""; $cu_last_topic_time = 0; $channel_flags = "+"; } } if($is_ca or ($data2[0] == 'OBJECT' && $data2[1] == "ChanAccess")) { $is_md = false; $is_mu = false; $is_cu = false; $is_na = false; $is_ca = true; if (isset($data2[1]) && $data2[1] == "provider") { $ca_provider = $data2[2]; } if (isset($data2[1]) && $data2[1] == "ci") { $ca_channel = $data2[2]; } if (isset($data2[1]) && $data2[1] == "mask") { $ca_mask = $data2[2]; } if (isset($data2[1]) && $data2[1] == "creator") { $ca_creator = $data2[2]; } if (isset($data2[1]) && $data2[1] == "created") { $ca_created = $data2[2]; } if (isset($data2[1]) && $data2[1] == "data") { if ($ca_provider == "access/xop") { $ca_level = $levels[$data2[2]]; } else if ($ca_provider == "access/access") { $ca_level = $access[$data2[2]]; } } if ($data2[0] == "END") { $channel_access = array( "ca_channel" => $ca_channel, "ca_mask" => $ca_mask, "ca_creator" => $ca_creator, "ca_created" => $ca_created, "ca_level" => $ca_level, ); if (!empty($userset[$ca_mask])) { $channelset[$ca_channel]['channel_access'][] = $channel_access; } $is_ca = false; $channel_access = array(); $ca_channel = ""; $ca_mask = ""; $ca_creator = ""; $ca_created = ""; $ca_level = ""; $ca_provider = ""; } } } $atheme = fopen("atheme.db", 'w'); fwrite($atheme, "DBV 7\n"); fwrite($atheme, "CF +vVoOtsriRfhHAb\n"); /* MDU Obi_Wan private:usercloak city-1464.galaxy-media.highway.hyperspace MDU Obi_Wan private:usercloak-assigner Obi_Wan MDU Obi_Wan private:usercloak-timestamp 1476550194 */ foreach ($userset as $key => $value) { fwrite($atheme, "MU ".$value['mu_account']." ".$value['mu_pass']. " ".$value['mu_email']." ".$value['mu_register']." ".time()." ".$mu_flags." ".$mu_lang."\n"); if (!empty($value['vhost_host'])) { fwrite($atheme, "MDU ".$value['mu_account']." private:usercloak ".$value['vhost_host']."\n"); } if (!empty($value['vhost_creator'])) { fwrite($atheme, "MDU ".$value['mu_account']." private:usercloak-assigner ".$value['vhost_creator']."\n"); } if (!empty($value['vhost_time'])) { fwrite($atheme, "MDU ".$value['mu_account']." private:usercloak-timestamp ".$value['vhost_time']."\n"); } if (isset($value['aliases'])) { foreach ($value['aliases'] as $key2 => $value2) { fwrite($atheme, "MN ". $value['mu_account'] ." ".$key2." ".$value2['mu_register']." ".$value2['last_seen']."\n"); } } } foreach ($channelset as $key => $value) { fwrite($atheme, "MC ".$key." ".$value['cu_register']." ".$value['cu_last_used']." ".$value['channel_flags']." 272 6 0\n"); fwrite($atheme, "CA ".$key." ".$value['cu_founder']." +AFORafhioqrstv ".$value['cu_register']." ".$value['cu_founder']."\n"); if (isset($value['channel_access'])) { foreach ($value['channel_access'] as $key2 => $value2) { fwrite($atheme, "CA ". $value2['ca_channel']." ".$value2['ca_mask']." ".$value2['ca_level']." ".$value2['ca_created']." ".$value2['ca_creator']."\n"); # die($key2); } } fwrite($atheme, "MDC ".$key." private:topic:setter ".$value['cu_last_topic_setter']."\n"); fwrite($atheme, "MDC ".$key." private:topic:text ".$value['cu_last_topic']."\n"); fwrite($atheme, "MDC ".$key." private:topic:ts ".$value['cu_last_topic_time']."\n"); } fclose($atheme);