getConfig("max_duration")) die("Share period is too long!\n"); if ($i > getConfig("max_duration")) die("Ping interval is too long!\n"); if ($i < getConfig("min_interval")) die("Ping interval is too short!\n"); $expire = time() + $d; $adoptable = isset($_POST["ado"]) ? intval($_POST["ado"]) : 0; switch ($mod) { case SHARE_MODE_CREATE_GROUP: requirePOST("nic"); break; case SHARE_MODE_JOIN_GROUP: requirePOST("nic", "pin"); break; } $memcache = memConnect(); $host = new Client($memcache); $host ->setExpirationTime($expire) ->setInterval($i) ->save(); $output = array("Unsupported share mode!"); switch ($mod) { case SHARE_MODE_CREATE_ALONE: $share = new SoloShare($memcache); $share ->setAdoptable($adoptable) ->setHost($host) ->setExpirationTime($expire) ->save(); $host->addTarget($share)->save(); $output = array( "OK", $host->getSessionID(), $share->getViewLink() ); break; case SHARE_MODE_CREATE_GROUP: $nickname = $_POST["nic"]; $share = new GroupShare($memcache); $share ->addHost($nickname, $host) ->setExpirationTime($expire) ->save(); $host->addTarget($share)->save(); $output = array( "OK", $host->getSessionID(), $share->getViewLink(), $share->getGroupPIN() ); break; case SHARE_MODE_JOIN_GROUP: $nickname = $_POST["nic"]; $pin = $_POST["pin"]; $share = Share::fromGroupPIN($memcache, $pin); if (!$share->exists()) die("Invalid group PIN!\n"); $share ->addHost($nickname, $host) ->save(); $host->addTarget($share)->save(); $output = array( "OK", $host->getSessionID(), $share->getViewLink() ); break; } foreach ($output as $line) { echo $line."\n"; }