예제 #1
0
파일: Help.php 프로젝트: phellmes/hubzilla
 function get()
 {
     nav_set_selected('help');
     if ($_REQUEST['search']) {
         $o .= '<div id="help-content" class="generic-content-wrapper">';
         $o .= '<div class="section-title-wrapper">';
         $o .= '<h2>' . t('Documentation Search') . ' - ' . htmlspecialchars($_REQUEST['search']) . '</h2>';
         $o .= '</div>';
         $o .= '<div class="section-content-wrapper">';
         $r = search_doc_files($_REQUEST['search']);
         if ($r) {
             $o .= '<ul class="help-searchlist">';
             foreach ($r as $rr) {
                 $dirname = dirname($rr['v']);
                 $fname = basename($rr['v']);
                 $fname = substr($fname, 0, strrpos($fname, '.'));
                 $path = trim(substr($dirname, 4), '/');
                 $o .= '<li><a href="help/' . ($path ? $path . '/' : '') . $fname . '" >' . ucwords(str_replace('_', ' ', notags($fname))) . '</a><br />' . '<b><i>' . 'help/' . ($path ? $path . '/' : '') . $fname . '</i></b><br />' . '...' . str_replace('$Projectname', \Zotlabs\Lib\System::get_platform_name(), $rr['text']) . '...<br /><br /></li>';
             }
             $o .= '</ul>';
             $o .= '</div>';
             $o .= '</div>';
         }
         return $o;
     }
     $content = get_help_content();
     return replace_macros(get_markup_template("help.tpl"), array('$title' => t('$Projectname Documentation'), '$content' => $content));
 }
예제 #2
0
파일: Dav.php 프로젝트: BlaBlaNet/hubzilla
 function init()
 {
     // workaround for HTTP-auth in CGI mode
     if (x($_SERVER, 'REDIRECT_REMOTE_USER')) {
         $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6));
         if (strlen($userpass)) {
             list($name, $password) = explode(':', $userpass);
             $_SERVER['PHP_AUTH_USER'] = $name;
             $_SERVER['PHP_AUTH_PW'] = $password;
         }
     }
     if (x($_SERVER, 'HTTP_AUTHORIZATION')) {
         $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6));
         if (strlen($userpass)) {
             list($name, $password) = explode(':', $userpass);
             $_SERVER['PHP_AUTH_USER'] = $name;
             $_SERVER['PHP_AUTH_PW'] = $password;
         }
     }
     if (!is_dir('store')) {
         os_mkdir('store', STORAGE_DEFAULT_PERMISSIONS, false);
     }
     if (argc() > 1) {
         profile_load(argv(1), 0);
     }
     $auth = new \Zotlabs\Storage\BasicAuth();
     $auth->setRealm(ucfirst(\Zotlabs\Lib\System::get_platform_name()) . ' ' . 'WebDAV');
     $rootDirectory = new \Zotlabs\Storage\Directory('/', $auth);
     // A SabreDAV server-object
     $server = new SDAV\Server($rootDirectory);
     $authPlugin = new \Sabre\DAV\Auth\Plugin($auth);
     $server->addPlugin($authPlugin);
     // prevent overwriting changes each other with a lock backend
     $lockBackend = new SDAV\Locks\Backend\File('store/[data]/locks');
     $lockPlugin = new SDAV\Locks\Plugin($lockBackend);
     $server->addPlugin($lockPlugin);
     // provide a directory view for the cloud in Hubzilla
     $browser = new \Zotlabs\Storage\Browser($auth);
     $auth->setBrowserPlugin($browser);
     // Experimental QuotaPlugin
     // require_once('Zotlabs/Storage/QuotaPlugin.php');
     // $server->addPlugin(new \Zotlabs\Storage\QuotaPlugin($auth));
     // All we need to do now, is to fire up the server
     $server->exec();
     killme();
 }
예제 #3
0
 function get()
 {
     require_once 'include/dir_fns.php';
     $dirmode = intval(get_config('system', 'directory_mode'));
     if ($dirmode == DIRECTORY_MODE_PRIMARY || $dirmode == DIRECTORY_MODE_STANDALONE) {
         $url = z_root() . '/dirsearch';
     }
     if (!$url) {
         $directory = find_upstream_directory($dirmode);
         $url = $directory['url'] . '/dirsearch';
     }
     $url .= '/sites';
     $o .= '<div class="generic-content-wrapper">';
     $o .= '<div class="section-title-wrapper"><h2>' . t('Public Hubs') . '</h2></div>';
     $o .= '<div class="section-content-tools-wrapper"><div class="descriptive-text">' . t('The listed hubs allow public registration for the $Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details.') . '</div>' . EOL;
     $ret = z_fetch_url($url);
     if ($ret['success']) {
         $j = json_decode($ret['body'], true);
         if ($j) {
             $o .= '<table class="table table-striped table-hover"><tr><td>' . t('Hub URL') . '</td><td>' . t('Access Type') . '</td><td>' . t('Registration Policy') . '</td><td>' . t('Stats') . '</td><td>' . t('Software') . '</td><td colspan="2">' . t('Ratings') . '</td></tr>';
             if ($j['sites']) {
                 foreach ($j['sites'] as $jj) {
                     $m = parse_url($jj['url']);
                     if (strpos($jj['project'], \Zotlabs\Lib\System::get_platform_name()) === false) {
                         continue;
                     }
                     $host = strtolower(substr($jj['url'], strpos($jj['url'], '://') + 3));
                     $rate_links = local_channel() ? '<td><a href="rate?f=&target=' . $host . '" class="btn-btn-default"><i class="fa fa-check-square-o"></i> ' . t('Rate') . '</a></td>' : '';
                     $location = '';
                     if (!empty($jj['location'])) {
                         $location = '<p title="' . t('Location') . '" style="margin: 5px 5px 0 0; text-align: right"><i class="fa fa-globe"></i> ' . $jj['location'] . '</p>';
                     } else {
                         $location = '<br />&nbsp;';
                     }
                     $urltext = str_replace(array('https://'), '', $jj['url']);
                     $o .= '<tr><td><a href="' . ($jj['sellpage'] ? $jj['sellpage'] : $jj['url'] . '/register') . '" ><i class="fa fa-link"></i> ' . $urltext . '</a>' . $location . '</td><td>' . $jj['access'] . '</td><td>' . $jj['register'] . '</td><td>' . '<a target="stats" href="https://hubchart-tarine.rhcloud.com/hub.jsp?hubFqdn=' . $m['host'] . '"><i class="fa fa-area-chart"></i></a></td><td>' . ucwords($jj['project']) . '</td><td><a href="ratings/' . $host . '" class="btn-btn-default"><i class="fa fa-eye"></i> ' . t('View') . '</a></td>' . $rate_links . '</tr>';
                 }
             }
             $o .= '</table>';
             $o .= '</div></div>';
         }
     }
     return $o;
 }
예제 #4
0
 function init()
 {
     if (argv(1) !== 'calendar' && argv(1) !== 'addressbook') {
         if (\DBA::$dba && \DBA::$dba->connected) {
             $pdovars = \DBA::$dba->pdo_get();
         } else {
             killme();
         }
         // workaround for HTTP-auth in CGI mode
         if (x($_SERVER, 'REDIRECT_REMOTE_USER')) {
             $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6));
             if (strlen($userpass)) {
                 list($name, $password) = explode(':', $userpass);
                 $_SERVER['PHP_AUTH_USER'] = $name;
                 $_SERVER['PHP_AUTH_PW'] = $password;
             }
         }
         if (x($_SERVER, 'HTTP_AUTHORIZATION')) {
             $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6));
             if (strlen($userpass)) {
                 list($name, $password) = explode(':', $userpass);
                 $_SERVER['PHP_AUTH_USER'] = $name;
                 $_SERVER['PHP_AUTH_PW'] = $password;
             }
         }
         /**
          * This server combines both CardDAV and CalDAV functionality into a single
          * server. It is assumed that the server runs at the root of a HTTP domain (be
          * that a domainname-based vhost or a specific TCP port.
          *
          * This example also assumes that you're using SQLite and the database has
          * already been setup (along with the database tables).
          *
          * You may choose to use MySQL instead, just change the PDO connection
          * statement.
          */
         /**
          * UTC or GMT is easy to work with, and usually recommended for any
          * application.
          */
         date_default_timezone_set('UTC');
         /**
          * Make sure this setting is turned on and reflect the root url for your WebDAV
          * server.
          *
          * This can be for example the root / or a complete path to your server script.
          */
         $baseUri = '/cdav/';
         /**
          * Database
          *
          */
         $pdo = new \PDO($pdovars[0], $pdovars[1], $pdovars[2]);
         $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
         // Autoloader
         require_once 'vendor/autoload.php';
         /**
          * The backends. Yes we do really need all of them.
          *
          * This allows any developer to subclass just any of them and hook into their
          * own backend systems.
          */
         $auth = new \Zotlabs\Storage\BasicAuth();
         $auth->setRealm(ucfirst(\Zotlabs\Lib\System::get_platform_name()) . 'CalDAV/CardDAV');
         //	$ob_hash = get_observer_hash();
         //	if ($ob_hash) {
         if (local_channel()) {
             logger('loggedin');
             $channel = \App::get_channel();
             $auth->setCurrentUser($channel['channel_address']);
             $auth->channel_id = $channel['channel_id'];
             $auth->channel_hash = $channel['channel_hash'];
             $auth->channel_account_id = $channel['channel_account_id'];
             if ($channel['channel_timezone']) {
                 $auth->setTimezone($channel['channel_timezone']);
             }
             $auth->observer = $channel['channel_hash'];
         }
         //		$auth->observer = $ob_hash;
         //	}
         //$authBackend      = new \Sabre\DAV\Auth\Backend\PDO($pdo);
         $principalBackend = new \Sabre\DAVACL\PrincipalBackend\PDO($pdo);
         $carddavBackend = new \Sabre\CardDAV\Backend\PDO($pdo);
         $caldavBackend = new \Sabre\CalDAV\Backend\PDO($pdo);
         /**
          * The directory tree
          *
          * Basically this is an array which contains the 'top-level' directories in the
          * WebDAV server.
          */
         $nodes = [new \Sabre\CalDAV\Principal\Collection($principalBackend), new \Sabre\CalDAV\CalendarRoot($principalBackend, $caldavBackend), new \Sabre\CardDAV\AddressBookRoot($principalBackend, $carddavBackend)];
         // The object tree needs in turn to be passed to the server class
         $server = new \Sabre\DAV\Server($nodes);
         if (isset($baseUri)) {
             $server->setBaseUri($baseUri);
         }
         // Plugins
         $server->addPlugin(new \Sabre\DAV\Auth\Plugin($auth));
         //$server->addPlugin(new \Sabre\DAV\Browser\Plugin());
         $server->addPlugin(new \Sabre\DAV\Sync\Plugin());
         $server->addPlugin(new \Sabre\DAV\Sharing\Plugin());
         $server->addPlugin(new \Sabre\DAVACL\Plugin());
         // CalDAV plugins
         $server->addPlugin(new \Sabre\CalDAV\Plugin());
         $server->addPlugin(new \Sabre\CalDAV\SharingPlugin());
         //$server->addPlugin(new \Sabre\CalDAV\Schedule\Plugin());
         $server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin());
         // CardDAV plugins
         $server->addPlugin(new \Sabre\CardDAV\Plugin());
         $server->addPlugin(new \Sabre\CardDAV\VCFExportPlugin());
         // And off we go!
         $server->exec();
         killme();
     }
 }
예제 #5
0
파일: Help.php 프로젝트: BlaBlaNet/hubzilla
 function get()
 {
     nav_set_selected('help');
     if ($_REQUEST['search']) {
         $o .= '<div id="help-content" class="generic-content-wrapper">';
         $o .= '<div class="section-title-wrapper">';
         $o .= '<h2>' . t('Documentation Search') . ' - ' . htmlspecialchars($_REQUEST['search']) . '</h2>';
         $o .= '</div>';
         $o .= '<div class="section-content-wrapper">';
         $r = search_doc_files($_REQUEST['search']);
         if ($r) {
             $o .= '<ul class="help-searchlist">';
             foreach ($r as $rr) {
                 $dirname = dirname($rr['v']);
                 $fname = basename($rr['v']);
                 $fname = substr($fname, 0, strrpos($fname, '.'));
                 $path = trim(substr($dirname, 4), '/');
                 $o .= '<li><a href="help/' . ($path ? $path . '/' : '') . $fname . '" >' . ucwords(str_replace('_', ' ', notags($fname))) . '</a><br />' . str_replace('$Projectname', \Zotlabs\Lib\System::get_platform_name(), substr($rr['text'], 0, 200)) . '...<br /><br /></li>';
             }
             $o .= '</ul>';
             $o .= '</div>';
             $o .= '</div>';
         }
         return $o;
     }
     global $lang;
     $doctype = 'markdown';
     $text = '';
     if (argc() > 1) {
         $path = '';
         for ($x = 1; $x < argc(); $x++) {
             if (strlen($path)) {
                 $path .= '/';
             }
             $path .= argv($x);
         }
         $title = basename($path);
         $text = load_doc_file('doc/' . $path . '.md');
         \App::$page['title'] = t('Help:') . ' ' . ucwords(str_replace('-', ' ', notags($title)));
         if (!$text) {
             $text = load_doc_file('doc/' . $path . '.bb');
             if ($text) {
                 $doctype = 'bbcode';
             }
             \App::$page['title'] = t('Help:') . ' ' . ucwords(str_replace('_', ' ', notags($title)));
         }
         if (!$text) {
             $text = load_doc_file('doc/' . $path . '.html');
             if ($text) {
                 $doctype = 'html';
             }
             \App::$page['title'] = t('Help:') . ' ' . ucwords(str_replace('-', ' ', notags($title)));
         }
     }
     if (!$text) {
         $text = load_doc_file('doc/Site.md');
         \App::$page['title'] = t('Help');
     }
     if (!$text) {
         $doctype = 'bbcode';
         $text = load_doc_file('doc/main.bb');
         \App::$page['title'] = t('Help');
     }
     if (!strlen($text)) {
         header($_SERVER["SERVER_PROTOCOL"] . ' 404 ' . t('Not Found'));
         $tpl = get_markup_template("404.tpl");
         return replace_macros($tpl, array('$message' => t('Page not found.')));
     }
     if ($doctype === 'html') {
         $content = $text;
     }
     if ($doctype === 'markdown') {
         require_once 'library/markdown.php';
         # escape #include tags
         $text = preg_replace('/#include/ism', '%%include', $text);
         $content = Markdown($text);
         $content = preg_replace('/%%include/ism', '#include', $content);
     }
     if ($doctype === 'bbcode') {
         require_once 'include/bbcode.php';
         $content = bbcode($text);
         // bbcode retargets external content to new windows. This content is internal.
         $content = str_replace(' target="_blank"', '', $content);
     }
     $content = preg_replace_callback("/#include (.*?)\\;/ism", 'self::preg_callback_help_include', $content);
     return replace_macros(get_markup_template("help.tpl"), array('$title' => t('$Projectname Documentation'), '$content' => translate_projectname($content)));
 }
예제 #6
0
function cdav_init(&$a)
{
    if (DBA::$dba && DBA::$dba->connected) {
        $pdovars = DBA::$dba->pdo_get();
    } else {
        killme();
    }
    // workaround for HTTP-auth in CGI mode
    if (x($_SERVER, 'REDIRECT_REMOTE_USER')) {
        $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6));
        if (strlen($userpass)) {
            list($name, $password) = explode(':', $userpass);
            $_SERVER['PHP_AUTH_USER'] = $name;
            $_SERVER['PHP_AUTH_PW'] = $password;
        }
    }
    if (x($_SERVER, 'HTTP_AUTHORIZATION')) {
        $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6));
        if (strlen($userpass)) {
            list($name, $password) = explode(':', $userpass);
            $_SERVER['PHP_AUTH_USER'] = $name;
            $_SERVER['PHP_AUTH_PW'] = $password;
        }
    }
    /**
     * This server combines both CardDAV and CalDAV functionality into a single
     * server. It is assumed that the server runs at the root of a HTTP domain (be
     * that a domainname-based vhost or a specific TCP port.
     *
     * This example also assumes that you're using SQLite and the database has
     * already been setup (along with the database tables).
     *
     * You may choose to use MySQL instead, just change the PDO connection
     * statement.
     */
    /**
     * UTC or GMT is easy to work with, and usually recommended for any
     * application.
     */
    date_default_timezone_set('UTC');
    /**
     * Make sure this setting is turned on and reflect the root url for your WebDAV
     * server.
     *
     * This can be for example the root / or a complete path to your server script.
     */
    $baseUri = '/cdav';
    /**
     * Database
     *
     */
    $pdo = new \PDO($pdovars[0], $pdovars[1], $pdovars[2]);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    /**
     * Mapping PHP errors to exceptions.
     *
     * While this is not strictly needed, it makes a lot of sense to do so. If an
     * E_NOTICE or anything appears in your code, this allows SabreDAV to intercept
     * the issue and send a proper response back to the client (HTTP/1.1 500).
     */
    function exception_error_handler($errno, $errstr, $errfile, $errline)
    {
        throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
    }
    set_error_handler("exception_error_handler");
    // Autoloader
    require_once 'vendor/autoload.php';
    /**
     * The backends. Yes we do really need all of them.
     *
     * This allows any developer to subclass just any of them and hook into their
     * own backend systems.
     */
    $auth = new \Zotlabs\Storage\BasicAuth();
    $auth->setRealm(ucfirst(\Zotlabs\Lib\System::get_platform_name()) . 'CalDAV/CardDAV');
    //$authBackend      = new \Sabre\DAV\Auth\Backend\PDO($pdo);
    $principalBackend = new \Sabre\DAVACL\PrincipalBackend\PDO($pdo);
    $carddavBackend = new \Sabre\CardDAV\Backend\PDO($pdo);
    $caldavBackend = new \Sabre\CalDAV\Backend\PDO($pdo);
    /**
     * The directory tree
     *
     * Basically this is an array which contains the 'top-level' directories in the
     * WebDAV server.
     */
    $nodes = [new \Sabre\CalDAV\Principal\Collection($principalBackend), new \Sabre\CalDAV\CalendarRoot($principalBackend, $caldavBackend), new \Sabre\CardDAV\AddressBookRoot($principalBackend, $carddavBackend)];
    // The object tree needs in turn to be passed to the server class
    $server = new \Sabre\DAV\Server($nodes);
    if (isset($baseUri)) {
        $server->setBaseUri($baseUri);
    }
    // Plugins
    $server->addPlugin(new \Sabre\DAV\Auth\Plugin($auth));
    //		$browser = new \Zotlabs\Storage\Browser($auth);
    //		$auth->setBrowserPlugin($browser);
    //		$server->addPlugin($browser);
    $server->addPlugin(new \Sabre\DAV\Browser\Plugin());
    $server->addPlugin(new \Sabre\CalDAV\Plugin());
    $server->addPlugin(new \Sabre\CardDAV\Plugin());
    $server->addPlugin(new \Sabre\DAVACL\Plugin());
    $server->addPlugin(new \Sabre\DAV\Sync\Plugin());
    // And off we go!
    $server->exec();
    killme();
}
예제 #7
0
 function get()
 {
     logger('linkinfo: ' . print_r($_REQUEST, true));
     $text = null;
     $str_tags = '';
     $br = "\n";
     if (x($_GET, 'binurl')) {
         $url = trim(hex2bin($_GET['binurl']));
     } else {
         $url = trim($_GET['url']);
     }
     $url = strip_zids($url);
     if (substr($url, 0, 1) != '/' && substr($url, 0, 4) != 'http') {
         $url = 'http://' . $url;
     }
     if ($_GET['title']) {
         $title = strip_tags(trim($_GET['title']));
     }
     if ($_GET['description']) {
         $text = strip_tags(trim($_GET['description']));
     }
     if ($_GET['tags']) {
         $arr_tags = str_getcsv($_GET['tags']);
         if (count($arr_tags)) {
             array_walk($arr_tags, 'self::arr_add_hashes');
             $str_tags = $br . implode(' ', $arr_tags) . $br;
         }
     }
     logger('linkinfo: ' . $url);
     $result = z_fetch_url($url, false, 0, array('novalidate' => true, 'nobody' => true));
     if ($result['success']) {
         $hdrs = array();
         $h = explode("\n", $result['header']);
         foreach ($h as $l) {
             list($k, $v) = array_map("trim", explode(":", trim($l), 2));
             $hdrs[$k] = $v;
         }
         if (array_key_exists('Content-Type', $hdrs)) {
             $type = $hdrs['Content-Type'];
         }
         if ($type) {
             $zrl = is_matrix_url($url);
             if (stripos($type, 'image/') !== false) {
                 if ($zrl) {
                     echo $br . '[zmg]' . $url . '[/zmg]' . $br;
                 } else {
                     echo $br . '[img]' . $url . '[/img]' . $br;
                 }
                 killme();
             }
             if (stripos($type, 'video/') !== false) {
                 if ($zrl) {
                     echo $br . '[zvideo]' . $url . '[/zvideo]' . $br;
                 } else {
                     echo $br . '[video]' . $url . '[/video]' . $br;
                 }
                 killme();
             }
             if (stripos($type, 'audio/') !== false) {
                 if ($zrl) {
                     echo $br . '[zaudio]' . $url . '[/zaudio]' . $br;
                 } else {
                     echo $br . '[audio]' . $url . '[/audio]' . $br;
                 }
                 killme();
             }
         }
     }
     $template = $br . '#^[url=%s]%s[/url]%s' . $br;
     $arr = array('url' => $url, 'text' => '');
     call_hooks('parse_link', $arr);
     if (strlen($arr['text'])) {
         echo $arr['text'];
         killme();
     }
     $x = oembed_process($url);
     if ($x) {
         echo $x;
         killme();
     }
     if ($url && $title && $text) {
         $text = $br . '[quote]' . trim($text) . '[/quote]' . $br;
         $title = str_replace(array("\r", "\n"), array('', ''), $title);
         $result = sprintf($template, $url, $title ? $title : $url, $text) . $str_tags;
         logger('linkinfo (unparsed): returns: ' . $result);
         echo $result;
         killme();
     }
     $siteinfo = self::parseurl_getsiteinfo($url);
     // If this is a Red site, use zrl rather than url so they get zids sent to them by default
     if (x($siteinfo, 'generator') && strpos($siteinfo['generator'], \Zotlabs\Lib\System::get_platform_name() . ' ') === 0) {
         $template = str_replace('url', 'zrl', $template);
     }
     if ($siteinfo["title"] == "") {
         echo sprintf($template, $url, $url, '') . $str_tags;
         killme();
     } else {
         $text = $siteinfo["text"];
         $title = $siteinfo["title"];
     }
     $image = "";
     if (sizeof($siteinfo["images"]) > 0) {
         /* Execute below code only if image is present in siteinfo */
         $total_images = 0;
         $max_images = get_config('system', 'max_bookmark_images');
         if ($max_images === false) {
             $max_images = 2;
         } else {
             $max_images = intval($max_images);
         }
         foreach ($siteinfo["images"] as $imagedata) {
             if ($url) {
                 $image .= sprintf('[url=%s]', $url);
             }
             $image .= '[img=' . $imagedata["width"] . 'x' . $imagedata["height"] . ']' . $imagedata["src"] . '[/img]';
             if ($url) {
                 $image .= '[/url]';
             }
             $image .= "\n";
             $total_images++;
             if ($max_images && $max_images >= $total_images) {
                 break;
             }
         }
     }
     if (strlen($text)) {
         $text = $br . '[quote]' . trim($text) . '[/quote]' . $br;
     }
     if ($image) {
         $text = $br . $br . $image . $text;
     }
     $title = str_replace(array("\r", "\n"), array('', ''), $title);
     $result = sprintf($template, $url, $title ? $title : $url, $text) . $str_tags;
     logger('linkinfo: returns: ' . $result, LOGGER_DEBUG);
     echo trim($result);
     killme();
 }
예제 #8
0
 function init()
 {
     header("Content-Type: text/xml");
     echo replace_macros(get_markup_template('rsd.tpl'), array('$project' => \Zotlabs\Lib\System::get_platform_name(), '$baseurl' => z_root(), '$apipath' => z_root() . '/api/'));
     killme();
 }
예제 #9
0
 function init()
 {
     // workaround for HTTP-auth in CGI mode
     if (x($_SERVER, 'REDIRECT_REMOTE_USER')) {
         $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6));
         if (strlen($userpass)) {
             list($name, $password) = explode(':', $userpass);
             $_SERVER['PHP_AUTH_USER'] = $name;
             $_SERVER['PHP_AUTH_PW'] = $password;
         }
     }
     if (x($_SERVER, 'HTTP_AUTHORIZATION')) {
         $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6));
         if (strlen($userpass)) {
             list($name, $password) = explode(':', $userpass);
             $_SERVER['PHP_AUTH_USER'] = $name;
             $_SERVER['PHP_AUTH_PW'] = $password;
         }
     }
     require_once 'include/reddav.php';
     if (!is_dir('store')) {
         os_mkdir('store', STORAGE_DEFAULT_PERMISSIONS, false);
     }
     $which = null;
     if (argc() > 1) {
         $which = argv(1);
     }
     $profile = 0;
     \App::$page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . z_root() . '/feed/' . $which . '" />' . "\r\n";
     if ($which) {
         profile_load($a, $which, $profile);
     }
     $auth = new \Zotlabs\Storage\BasicAuth();
     $auth->setRealm(ucfirst(\Zotlabs\Lib\System::get_platform_name()) . 'WebDAV');
     //		$authBackend = new \Sabre\DAV\Auth\Backend\BasicCallBack(function($userName,$password) {
     //			if(account_verify_password($userName,$password))
     //				return true;
     //			return false;
     //		});
     //		$ob_hash = get_observer_hash();
     //		if ($ob_hash) {
     //			if (local_channel()) {
     //				$channel = \App::get_channel();
     //				$auth->setCurrentUser($channel['channel_address']);
     //				$auth->channel_id = $channel['channel_id'];
     //				$auth->channel_hash = $channel['channel_hash'];
     //				$auth->channel_account_id = $channel['channel_account_id'];
     //				if($channel['channel_timezone'])
     //					$auth->setTimezone($channel['channel_timezone']);
     //			}
     //			$auth->observer = $ob_hash;
     //		}
     //		if ($_GET['davguest'])
     //			$_SESSION['davguest'] = true;
     //		$_SERVER['QUERY_STRING'] = str_replace(array('?f=', '&f='), array('', ''), $_SERVER['QUERY_STRING']);
     //		$_SERVER['QUERY_STRING'] = strip_zids($_SERVER['QUERY_STRING']);
     //		$_SERVER['QUERY_STRING'] = preg_replace('/[\?&]davguest=(.*?)([\?&]|$)/ism', '', $_SERVER['QUERY_STRING']);
     //
     //		$_SERVER['REQUEST_URI'] = str_replace(array('?f=', '&f='), array('', ''), $_SERVER['REQUEST_URI']);
     //		$_SERVER['REQUEST_URI'] = strip_zids($_SERVER['REQUEST_URI']);
     //		$_SERVER['REQUEST_URI'] = preg_replace('/[\?&]davguest=(.*?)([\?&]|$)/ism', '', $_SERVER['REQUEST_URI']);
     $rootDirectory = new \Zotlabs\Storage\Directory('/', $auth);
     // A SabreDAV server-object
     $server = new SDAV\Server($rootDirectory);
     $authPlugin = new \Sabre\DAV\Auth\Plugin($auth);
     $server->addPlugin($authPlugin);
     // prevent overwriting changes each other with a lock backend
     $lockBackend = new SDAV\Locks\Backend\File('store/[data]/locks');
     $lockPlugin = new SDAV\Locks\Plugin($lockBackend);
     $server->addPlugin($lockPlugin);
     // The next section of code allows us to bypass prompting for http-auth if a
     // FILE is being accessed anonymously and permissions allow this. This way
     // one can create hotlinks to public media files in their cloud and anonymous
     // viewers won't get asked to login.
     // If a DIRECTORY is accessed or there are permission issues accessing the
     // file and we aren't previously authenticated via zot, prompt for HTTP-auth.
     // This will be the default case for mounting a DAV directory.
     // In order to avoid prompting for passwords for viewing a DIRECTORY, add
     // the URL query parameter 'davguest=1'.
     //		$isapublic_file = false;
     //		$davguest = ((x($_SESSION, 'davguest')) ? true : false);
     //		if ((! $auth->observer) && ($_SERVER['REQUEST_METHOD'] === 'GET')) {
     //			try {
     //				$x = RedFileData('/' . \App::$cmd, $auth);
     //				if($x instanceof \Zotlabs\Storage\File)
     //					$isapublic_file = true;
     //			}
     //			catch (Exception $e) {
     //				$isapublic_file = false;
     //			}
     //		}
     //		if ((! $auth->observer) && (! $isapublic_file) && (! $davguest)) {
     //			try {
     //				$auth->Authenticate($server, t('$Projectname channel'));
     //			}
     //			catch (Exception $e) {
     //				logger('mod_cloud: auth exception' . $e->getMessage());
     //				http_status_exit($e->getHTTPCode(), $e->getMessage());
     //			}
     //		}
     //	require_once('Zotlabs/Storage/Browser.php');
     // provide a directory view for the cloud in Hubzilla
     $browser = new \Zotlabs\Storage\Browser($auth);
     $auth->setBrowserPlugin($browser);
     // Experimental QuotaPlugin
     //	require_once('Zotlabs/Storage/QuotaPlugin.php');
     //	$server->addPlugin(new \Zotlabs\Storage\QuotaPlugin($auth));
     // All we need to do now, is to fire up the server
     $server->exec();
     killme();
 }