Skip to content

Commit

Permalink
whatever i changed
Browse files Browse the repository at this point in the history
  • Loading branch information
jcrutchy committed May 17, 2016
1 parent 12290b5 commit d5a047d
Show file tree
Hide file tree
Showing 23 changed files with 266 additions and 54 deletions.
2 changes: 1 addition & 1 deletion irc_lib.php
Expand Up @@ -2552,7 +2552,6 @@ function doquit()
{
continue;
}
term_echo("handling process: ".$handles[$i]["command"]);
if (handle_process($handles[$i])==False)
{
unset($handles[$i]);
Expand Down Expand Up @@ -3222,6 +3221,7 @@ function delete_empty_elements(&$array)

function load_directory($dir,&$lines,$directive)
{
# TODO: USE scandir FUNCTION
if ((file_exists($dir)==True) and (is_dir($dir)==True))
{
term_echo("load_directory: \"$dir\" found");
Expand Down
124 changes: 94 additions & 30 deletions scripts/sneak/data_server.php
Expand Up @@ -6,9 +6,9 @@
required command line parameters: %%trailing%% %%nick%% %%dest%% %%server%% %%hostname%% %%alias%%
can run one data server per DATA_PREFIX per server
can run one data server per APP_NAME per server
data files are named: DATA_PATH.DATA_PREFIX."_data_".base64_encode($irc_server).".txt"
data files are named: DATA_PATH.APP_NAME."_data_".base64_encode($irc_server).".txt"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
required data server code (eg for sneak_server.php):
Expand All @@ -19,7 +19,7 @@
#exec:enable ~sneak-server
#startup:~join #sneak
define("DATA_PREFIX","sneak");
define("APP_NAME","sneak");
require_once("data_server.php");
optional event handler functions:
Expand Down Expand Up @@ -57,6 +57,8 @@ function server_msg_handler(&$server_data,&$server,&$clients,&$connections,$clie

require_once(__DIR__."/../lib.php");

define("MODS_PATH",__DIR__."/mods/");

$trailing=strtolower(trim($argv[1]));
$nick=$argv[2];
$dest=$argv[3];
Expand All @@ -68,7 +70,7 @@ function server_msg_handler(&$server_data,&$server,&$clients,&$connections,$clie
if ($cmd<>"INTERNAL")
{
$user="$hostname $server";
$admins_filename=DATA_PATH.DATA_PREFIX."_admins.txt";
$admins_filename=DATA_PATH.APP_NAME."_admins.txt";
if (file_exists($admins_filename)==False)
{
privmsg("server admins file \"".$admins_filename."\" not found");
Expand All @@ -95,15 +97,15 @@ function server_msg_handler(&$server_data,&$server,&$clients,&$connections,$clie
else
{
term_echo("data server: bypassing authentication for internal command");
$dest="#".DATA_PREFIX;
$dest="#".APP_NAME;
}

$parts=explode(" ",$trailing);
$action=array_shift($parts);
switch ($action)
{
case "status":
$port=get_bucket(DATA_PREFIX."_server");
$port=get_bucket(APP_NAME."_server");
if ($port==="")
{
privmsg("server not running");
Expand All @@ -114,7 +116,7 @@ function server_msg_handler(&$server_data,&$server,&$clients,&$connections,$clie
}
break;
case "start":
if (get_bucket(DATA_PREFIX."_server")<>"")
if (get_bucket(APP_NAME."_server")<>"")
{
privmsg("server already running");
}
Expand All @@ -127,11 +129,11 @@ function server_msg_handler(&$server_data,&$server,&$clients,&$connections,$clie
run_server($server,$port,$hostname,$dest);
break;
case "stop":
if (get_bucket(DATA_PREFIX."_server")=="")
if (get_bucket(APP_NAME."_server")=="")
{
privmsg("server not found");
}
set_bucket(DATA_PREFIX."_server_command","stop");
set_bucket(APP_NAME."_server_command","stop");
break;
default:
privmsg("syntax: $alias status|start|stop");
Expand All @@ -149,14 +151,14 @@ function run_server($irc_server,$listen_port,$hostname,$dest)
"app_data_updated"=>True,
"app_data"=>array(),
"server_admin"=>$hostname);
unset_bucket(DATA_PREFIX."_server_command");
unset_bucket(APP_NAME."_server_command");
$port_filename=DATA_PATH."app_server_port_$listen_port.txt";
if (file_exists($port_filename)==True)
{
privmsg("server listening on port $listen_port already running for ".trim(file_get_contents($port_filename)));
return;
}
$data_filename=DATA_PATH.DATA_PREFIX."_data_".base64_encode($irc_server).".txt";
$data_filename=DATA_PATH.APP_NAME."_data_".base64_encode($irc_server).".txt";
if (file_exists($data_filename)==True)
{
$server_data["app_data"]=json_decode(file_get_contents($data_filename),True);
Expand Down Expand Up @@ -187,12 +189,12 @@ function run_server($irc_server,$listen_port,$hostname,$dest)
server_privmsg($server_data,"*** socket_listen() failed: reason: ".socket_strerror(socket_last_error($server)));
return;
}
if (file_put_contents($port_filename,DATA_PREFIX." ".$irc_server)===False)
if (file_put_contents($port_filename,APP_NAME." ".$irc_server)===False)
{
server_privmsg($server_data,"error saving port file \"$port_filename\"");
return;
}
set_bucket(DATA_PREFIX."_server",$listen_port);
set_bucket(APP_NAME."_server",$listen_port);
$clients=array($server);
if (function_exists("server_start_handler")==True)
{
Expand All @@ -203,19 +205,19 @@ function run_server($irc_server,$listen_port,$hostname,$dest)
usleep(0.05e6);
if (bot_shutting_down()==True)
{
term_echo("*** bot shutdown detected - stopping ".DATA_PREFIX." server ***");
term_echo("*** bot shutdown detected - stopping ".APP_NAME." server ***");
break;
}
if (get_bucket(DATA_PREFIX."_server")<>$listen_port)
if (get_bucket(APP_NAME."_server")<>$listen_port)
{
server_privmsg($server_data,"server bucket not found - stopping");
break;
}
$server_command=get_bucket(DATA_PREFIX."_server_command");
$server_command=get_bucket(APP_NAME."_server_command");
switch ($server_command)
{
case "stop":
unset_bucket(DATA_PREFIX."_server_command");
unset_bucket(APP_NAME."_server_command");
break 2;
}
loop_process($server_data,$server,$clients,$connections);
Expand Down Expand Up @@ -305,8 +307,8 @@ function run_server($irc_server,$listen_port,$hostname,$dest)
{
server_privmsg($server_data,"error deleting port file \"$port_filename\"");
}
server_privmsg($server_data,"stopping app server");
unset_bucket(DATA_PREFIX."_server");
server_privmsg($server_data,"stopping ".APP_NAME." server");
unset_bucket(APP_NAME."_server");
}

#####################################################################################################
Expand Down Expand Up @@ -375,7 +377,7 @@ function on_connect(&$server_data,&$server,&$clients,&$connections,$client_index
{
server_connect_handler($server_data,$server,$clients,$connections,$client_index);
}
server_privmsg($server_data,"*** CLIENT CONNECTED: $addr");
#server_privmsg($server_data,"*** CLIENT CONNECTED: $addr");
}
else
{
Expand All @@ -399,7 +401,7 @@ function on_disconnect(&$server_data,&$server,&$clients,&$connections,$client_in
{
server_disconnect_handler($server_data,$server,$clients,$connections,$client_index);
}
server_privmsg($server_data,"*** CLIENT DISCONNECTED: $addr");
#server_privmsg($server_data,"*** CLIENT DISCONNECTED: $addr");
unset($connections[$connection_index]);
}
}
Expand Down Expand Up @@ -508,33 +510,95 @@ function log_msg(&$server_data,&$server,&$clients,&$connections,$addr,$client_in

function server_privmsg(&$server_data,$msg)
{
privmsg($msg);
global $dest;
pm($dest,$msg);
}

#####################################################################################################

function load_mod(&$server_data,&$server,&$clients,&$connections,$client_index,$unpacked,&$response,$trailing_parts,$action)
{
# TODO: MOD MACROS (SIMILAR TO EXEC MACROS) - EG: mod:action_alias right (ON SEPARATE LINE IN MULTI-LINE COMMENT OF MOD FILE)
# TODO: LOAD MODS ON STARTUP & ONLY RELOAD IF FILE MODIFIED TIME DIFFERS
$mod_filename=__DIR__."/mods/mod_".DATA_PREFIX."_".$action;
$mod_filename="mod_".APP_NAME."_".$action;
$code=read_mod($server_data,$server,$clients,$connections,$client_index,$mod_filename);
if ($code===False)
{
return False;
}
$result=@eval($code);
if ($result===False)
{
server_reply($server_data,$server,$clients,$connections,$client_index,"mod: file \"".$mod_filename."\" eval returned false");
}
return $result;
}

#####################################################################################################

function read_mod(&$server_data,&$server,&$clients,&$connections,$client_index,$filename)
{
$mod_filename=MODS_PATH.$filename;
if (file_exists($mod_filename)==False)
{
server_reply($server_data,$server,$clients,$connections,$client_index,"error: mod file \"".$mod_filename."\" not found");
server_reply($server_data,$server,$clients,$connections,$client_index,"mod: file \"".$filename."\" not found");
return False;
}
$code=file_get_contents($mod_filename);
if ($code===False)
{
server_reply($server_data,$server,$clients,$connections,$client_index,"error reading mod file \"".$mod_filename."\"");
server_reply($server_data,$server,$clients,$connections,$client_index,"mod: error reading file \"".$filename."\"");
return False;
}
$result=@eval($code);
if ($result===False)
# TODO: PROCESS MOD MACROS (SIMILAR TO EXEC MACROS) - EG: mod:include mod_sneak_down (ON SEPARATE LINE IN MULTI-LINE COMMENT OF MOD FILE)
$lines=explode(PHP_EOL,$code);
$mod_prefix="mod:";
for ($i=0;$i<count($lines);$i++)
{
server_reply($server_data,$server,$clients,$connections,$client_index,"mod file \"".$mod_filename."\" eval returned false");
$line=trim($lines[$i]);
if ($line=="")
{
continue;
}
if (($line=="<?php") or ($line=="?>"))
{
$lines[$i]="";
continue;
}
if (substr($line,0,strlen($mod_prefix))==$mod_prefix)
{
$macro=trim(substr($line,strlen($mod_prefix)));
$lines[$i]="";
if ($macro=="")
{
server_reply($server_data,$server,$clients,$connections,$client_index,"mod: macro empty");
continue;
}
server_reply($server_data,$server,$clients,$connections,$client_index,"mod: macro found => $macro");
$parts=explode(" ",$macro);
$operation=array_shift($parts);
switch ($operation)
{
case "include":
if (count($parts)<>1)
{
server_reply($server_data,$server,$clients,$connections,$client_index,"mod: invalid include macro");
continue;
}
$include_filename=array_shift($parts);
$include_code=read_mod($server_data,$server,$clients,$connections,$client_index,$include_filename);
if ($include_code===False)
{
server_reply($server_data,$server,$clients,$connections,$client_index,"mod: include macro read error");
continue;
}
break;
default:
server_reply($server_data,$server,$clients,$connections,$client_index,"mod: invalid macro operation");
break;
}
}
}
return $result;
return implode(PHP_EOL,$lines);
}

#####################################################################################################
Expand Down
23 changes: 23 additions & 0 deletions scripts/sneak/mods/lib_sneak
@@ -0,0 +1,23 @@
<?php

#####################################################################################################

function is_gm(&$server_data,$hostname)
{
if (isset($server_data["app_data"]["moderators"])==False)
{
return False;
}
if ($hostname<>"")
{
if (in_array($hostname,$server_data["app_data"]["moderators"])==True)
{
return True;
}
}
return False;
}

#####################################################################################################

?>
10 changes: 9 additions & 1 deletion scripts/sneak/mods/mod_sneak_d
@@ -1,3 +1,11 @@
<?php

#####################################################################################################

/*
mod:action_alias down
mod:include mod_sneak_down
*/

#####################################################################################################

?>
7 changes: 7 additions & 0 deletions scripts/sneak/mods/mod_sneak_die
@@ -0,0 +1,7 @@
<?php

#####################################################################################################

#####################################################################################################

?>
7 changes: 7 additions & 0 deletions scripts/sneak/mods/mod_sneak_down
@@ -0,0 +1,7 @@
<?php

#####################################################################################################

#####################################################################################################

?>
8 changes: 8 additions & 0 deletions scripts/sneak/mods/mod_sneak_gm-edit-goody
@@ -1,3 +1,7 @@
<?php

#####################################################################################################

if (is_gm($server_data,$unpacked["hostname"])==True)
{
$response["msg"][]="i farted";
Expand All @@ -6,3 +10,7 @@ else
{
$response["msg"][]="not authorized";
}

#####################################################################################################

?>
8 changes: 8 additions & 0 deletions scripts/sneak/mods/mod_sneak_gm-edit-player
@@ -1,3 +1,7 @@
<?php

#####################################################################################################

if (is_gm($server_data,$unpacked["hostname"])==True)
{
if (count($trailing_parts)<=3)
Expand Down Expand Up @@ -54,3 +58,7 @@ else
{
$response["msg"][]="not authorized";
}

#####################################################################################################

?>
8 changes: 8 additions & 0 deletions scripts/sneak/mods/mod_sneak_gm-kill
@@ -1,3 +1,7 @@
<?php

#####################################################################################################

if (is_gm($server_data,$unpacked["hostname"])==True)
{
if (count($trailing_parts)<>1)
Expand All @@ -21,3 +25,7 @@ else
{
$response["msg"][]="not authorized";
}

#####################################################################################################

?>

0 comments on commit d5a047d

Please sign in to comment.