411 lines
12 KiB
PHP
411 lines
12 KiB
PHP
|
<?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);
|