Пример #1
0
$mtime = explode(' ', $mtime);
$mtime = $mtime[1] + $mtime[0];
$starttime = $mtime;
$start_datetime = date("Y-m-d h:i:s");
$requester_ip = "0.0.0.0";
if (isset($_SERVER['REMOTE_ADDR'])) {
    $requester_ip = $_SERVER['REMOTE_ADDR'];
}
$parameters = "";
if (isset($_SERVER['REQUEST_URI'])) {
    $parameters = $_SERVER['REQUEST_URI'];
    $pos = strpos($parameters, "?");
    if ($pos !== FALSE) {
        $parameters = substr($parameters, $pos, strlen($parameters) - $pos);
    }
} elseif (isset($_SERVER['PHP_SELF'])) {
    $parameters = $_SERVER['PHP_SELF'];
}
$ws_araccess = new AuthRegistrarAccess($crud, $ws_uris, $dataset, $action, $target_access_uri, $registered_ip, $requester_ip, $interface, $version);
$ws_araccess->ws_conneg(isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : "", isset($_SERVER['HTTP_ACCEPT_CHARSET']) ? $_SERVER['HTTP_ACCEPT_CHARSET'] : "", isset($_SERVER['HTTP_ACCEPT_ENCODING']) ? $_SERVER['HTTP_ACCEPT_ENCODING'] : "", isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : "");
$ws_araccess->process();
$ws_araccess->ws_respond($ws_araccess->ws_serialize());
$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
$endtime = $mtime;
$totaltime = $endtime - $starttime;
if ($ws_araccess->isLoggingEnabled()) {
    $logger = new Logger("auth_registrar_access", $requester_ip, "?crud=" . $crud . "&ws_uris=" . $ws_uris . "&dataset=" . $dataset . "{$action}=" . $action . "&target_access_uri=" . $target_access_uri . "&registered_ip=" . $registered_ip . "&requester_ip={$requester_ip}", isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER[''] : "HTTP_ACCEPT", $start_datetime, $totaltime, $ws_araccess->pipeline_getResponseHeaderStatus(), isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "");
}
//@}
 public function processInterface()
 {
     // Make sure there was no conneg error prior to this process call
     if ($this->ws->conneg->getStatus() == 200) {
         // Make sure this is not an ontology dataset
         $query = "select ?holdOntology\n                        from <" . $this->ws->wsf_graph . "datasets/>\n                        where\n                        {\n                          <" . $this->ws->datasetUri . "> <http://purl.org/ontology/wsf#holdOntology> ?holdOntology .\n                        }";
         $resultset = @$this->ws->db->query($this->ws->db->build_sparql_query(str_replace(array("\n", "\r", "\t"), " ", $query), array('holdOntology'), FALSE));
         if (odbc_error()) {
             $this->ws->conneg->setStatus(500);
             $this->ws->conneg->setStatusMsg("Internal Error");
             $this->ws->conneg->setStatusMsgExt($this->ws->errorMessenger->_306->name);
             $this->ws->conneg->setError($this->ws->errorMessenger->_306->id, $this->ws->errorMessenger->ws, $this->ws->errorMessenger->_306->name, $this->ws->errorMessenger->_306->description, odbc_errormsg(), $this->ws->errorMessenger->_306->level);
             return;
         } else {
             while (odbc_fetch_row($resultset)) {
                 $holdOntology = odbc_result($resultset, 1);
                 if (strtolower($holdOntology) == "true") {
                     $this->ws->conneg->setStatus(400);
                     $this->ws->conneg->setStatusMsg("Bad Request");
                     $this->ws->conneg->setStatusMsgExt($this->ws->errorMessenger->_306->name);
                     $this->ws->conneg->setError($this->ws->errorMessenger->_306->id, $this->ws->errorMessenger->ws, $this->ws->errorMessenger->_306->name, $this->ws->errorMessenger->_306->description, odbc_errormsg(), $this->ws->errorMessenger->_306->level);
                     return;
                 }
             }
         }
         unset($resultset);
         // Remove  all the possible other meta descriptions
         // of the dataset introduced by the wsf:meta property.
         $query = "  delete from <" . $this->ws->wsf_graph . "datasets/> \n                { \n                  ?meta ?p_meta ?o_meta.\n                }\n                where\n                {\n                  graph <" . $this->ws->wsf_graph . "datasets/>\n                  {\n                    <" . $this->ws->datasetUri . "> <http://purl.org/ontology/wsf#meta> ?meta.\n                    ?meta ?p_meta ?o_meta.\n                  }\n                }";
         @$this->ws->db->query($this->ws->db->build_sparql_query(str_replace(array("\n", "\r", "\t"), " ", $query), array(), FALSE));
         if (odbc_error()) {
             $this->ws->conneg->setStatus(500);
             $this->ws->conneg->setStatusMsg("Internal Error");
             $this->ws->conneg->setStatusMsgExt($this->ws->errorMessenger->_300->name);
             $this->ws->conneg->setError($this->ws->errorMessenger->_300->id, $this->ws->errorMessenger->ws, $this->ws->errorMessenger->_300->name, $this->ws->errorMessenger->_300->description, odbc_errormsg(), $this->ws->errorMessenger->_300->level);
             return;
         }
         // Remove the Graph description in the ".../datasets/"
         $query = "  delete from <" . $this->ws->wsf_graph . "datasets/> \n                { \n                  <" . $this->ws->datasetUri . "> ?p ?o.\n                }\n                where\n                {\n                  graph <" . $this->ws->wsf_graph . "datasets/>\n                  {\n                    <" . $this->ws->datasetUri . "> ?p ?o.\n                  }\n                }";
         @$this->ws->db->query($this->ws->db->build_sparql_query(str_replace(array("\n", "\r", "\t"), " ", $query), array(), FALSE));
         if (odbc_error()) {
             $this->ws->conneg->setStatus(500);
             $this->ws->conneg->setStatusMsg("Internal Error");
             $this->ws->conneg->setStatusMsgExt($this->ws->errorMessenger->_301->name);
             $this->ws->conneg->setError($this->ws->errorMessenger->_301->id, $this->ws->errorMessenger->ws, $this->ws->errorMessenger->_301->name, $this->ws->errorMessenger->_301->description, odbc_errormsg(), $this->ws->errorMessenger->_301->level);
             return;
         }
         // Removing all accesses for this graph
         $ws_ara = new AuthRegistrarAccess("", "", $this->ws->datasetUri, "delete_all", "", "", $this->ws->registered_ip);
         $ws_ara->pipeline_conneg($this->ws->conneg->getAccept(), $this->ws->conneg->getAcceptCharset(), $this->ws->conneg->getAcceptEncoding(), $this->ws->conneg->getAcceptLanguage());
         $ws_ara->process();
         if ($ws_ara->pipeline_getResponseHeaderStatus() != 200) {
             $this->ws->conneg->setStatus($ws_ara->pipeline_getResponseHeaderStatus());
             $this->ws->conneg->setStatusMsg($ws_ara->pipeline_getResponseHeaderStatusMsg());
             $this->ws->conneg->setStatusMsgExt($ws_ara->pipeline_getResponseHeaderStatusMsgExt());
             $this->ws->conneg->setError($ws_ara->pipeline_getError()->id, $ws_ara->pipeline_getError()->webservice, $ws_ara->pipeline_getError()->name, $ws_ara->pipeline_getError()->description, $ws_ara->pipeline_getError()->debugInfo, $ws_ara->pipeline_getError()->level);
             return;
         }
         // Drop the entire graph
         $query = "sparql clear graph <" . $this->ws->datasetUri . ">";
         @$this->ws->db->query($query);
         if (odbc_error()) {
             $this->ws->conneg->setStatus(500);
             $this->ws->conneg->setStatusMsg("Internal Error");
             $this->ws->conneg->setStatusMsgExt($this->ws->errorMessenger->_302->name);
             $this->ws->conneg->setError($this->ws->errorMessenger->_302->id, $this->ws->errorMessenger->ws, $this->ws->errorMessenger->_302->name, $this->ws->errorMessenger->_302->description, odbc_errormsg(), $this->ws->errorMessenger->_302->level);
             return;
         }
         // Drop the reification graph related to this dataset
         $query = "sparql clear graph <" . $this->ws->datasetUri . "reification/>";
         @$this->ws->db->query($query);
         if (odbc_error()) {
             $this->ws->conneg->setStatus(500);
             $this->ws->conneg->setStatusMsg("Internal Error");
             $this->ws->conneg->setStatusMsgExt("Error #dataset-delete-105");
             $this->ws->conneg->setError($this->ws->errorMessenger->_303->id, $this->ws->errorMessenger->ws, $this->ws->errorMessenger->_303->name, $this->ws->errorMessenger->_303->description, odbc_errormsg(), $this->ws->errorMessenger->_303->level);
             return;
         }
         // Remove all documents from the solr index for this Dataset
         $solr = new Solr($this->ws->wsf_solr_core, $this->ws->solr_host, $this->ws->solr_port, $this->ws->fields_index_folder);
         if (!$solr->flushDataset($this->ws->datasetUri)) {
             $this->ws->conneg->setStatus(500);
             $this->ws->conneg->setStatusMsg("Internal Error");
             $this->ws->conneg->setStatusMsgExt($this->ws->errorMessenger->_304->name);
             $this->ws->conneg->setError($this->ws->errorMessenger->_304->id, $this->ws->errorMessenger->ws, $this->ws->errorMessenger->_304->name, $this->ws->errorMessenger->_304->description, $solr->errorMessage . '[Debugging information: ]' . $solr->errorMessageDebug, $this->ws->errorMessenger->_304->level);
             return;
         }
         if ($this->ws->solr_auto_commit === FALSE) {
             if (!$solr->commit()) {
                 $this->ws->conneg->setStatus(500);
                 $this->ws->conneg->setStatusMsg("Internal Error");
                 $this->ws->conneg->setStatusMsgExt($this->ws->errorMessenger->_305->name);
                 $this->ws->conneg->setError($this->ws->errorMessenger->_305->id, $this->ws->errorMessenger->ws, $this->ws->errorMessenger->_305->name, $this->ws->errorMessenger->_305->description, $solr->errorMessage . '[Debugging information: ]' . $solr->errorMessageDebug, $this->ws->errorMessenger->_305->level);
                 return;
             }
         }
         /*      
               if(!$solr->optimize())
               {
                 $this->ws->conneg->setStatus(500);
                 $this->ws->conneg->setStatusMsg("Internal Error");
                 $this->ws->conneg->setStatusMsgExt("Error #dataset-delete-104");  
                 return;          
               }      
         */
     }
 }
 public function processInterface()
 {
     // Make sure there was no conneg error prior to this process call
     if ($this->ws->conneg->getStatus() == 200) {
         $query = "insert into <" . $this->ws->wsf_graph . "datasets/>\n                {\n                  <" . $this->ws->datasetUri . "> a <http://rdfs.org/ns/void#Dataset> ;\n                  " . ($this->ws->datasetTitle != "" ? "<http://purl.org/dc/terms/title> \"\"\"" . str_replace("'", "\\'", $this->ws->datasetTitle) . "\"\"\" ; " : "") . "\n                  " . ($this->ws->description != "" ? "<http://purl.org/dc/terms/description> \"\"\"" . str_replace("'", "\\'", $this->ws->description) . "\"\"\" ; " : "") . "\n                  " . ($this->ws->creator != "" ? "<http://purl.org/dc/terms/creator> <" . $this->ws->creator . "> ; " : "") . "\n                  <http://purl.org/dc/terms/created> \"" . date("Y-n-j") . "\" .\n                }";
         @$this->ws->db->query($this->ws->db->build_sparql_query(str_replace(array("\n", "\r", "\t"), " ", $query), array(), FALSE));
         if (odbc_error()) {
             $this->ws->conneg->setStatus(500);
             $this->ws->conneg->setStatusMsg("Internal Error");
             $this->ws->conneg->setStatusMsgExt($this->ws->errorMessenger->_300->name);
             $this->ws->conneg->setError($this->ws->errorMessenger->_300->id, $this->ws->errorMessenger->ws, $this->ws->errorMessenger->_300->name, $this->ws->errorMessenger->_300->description, odbc_errormsg(), $this->ws->errorMessenger->_300->level);
             return;
         }
         /* 
           If the dataset has been created, the next step is to create the permissions for this user (full crud)
           and for the public one (no crud).
         */
         /* Get the list of web services registered to this structWSF instance. */
         if (strtolower($this->ws->webservices) == "all") {
             $ws_al = new AuthLister("ws", $this->ws->datasetUri, $this->ws->requester_ip, $this->ws->wsf_local_ip);
             $ws_al->pipeline_conneg($this->ws->conneg->getAccept(), $this->ws->conneg->getAcceptCharset(), $this->ws->conneg->getAcceptEncoding(), $this->ws->conneg->getAcceptLanguage());
             $ws_al->process();
             if ($ws_al->pipeline_getResponseHeaderStatus() != 200) {
                 $this->ws->conneg->setStatus($ws_al->pipeline_getResponseHeaderStatus());
                 $this->ws->conneg->setStatusMsg($ws_al->pipeline_getResponseHeaderStatusMsg());
                 $this->ws->conneg->setStatusMsgExt($ws_al->pipeline_getResponseHeaderStatusMsgExt());
                 $this->ws->conneg->setError($ws_al->pipeline_getError()->id, $ws_al->pipeline_getError()->webservice, $ws_al->pipeline_getError()->name, $ws_al->pipeline_getError()->description, $ws_al->pipeline_getError()->debugInfo, $ws_al->pipeline_getError()->level);
                 return;
             }
             /* Get all web services */
             $webservices = "";
             $xml = new ProcessorXML();
             $xml->loadXML($ws_al->pipeline_getResultset());
             $webServiceElements = $xml->getXPath('//predicate/object[attribute::type="wsf:WebService"]');
             foreach ($webServiceElements as $element) {
                 $webservices .= $xml->getURI($element) . ";";
             }
             $webservices = substr($webservices, 0, strlen($webservices) - 1);
             unset($xml);
             unset($ws_al);
             $this->ws->webservices = $webservices;
         }
         /* Register full CRUD for the creator of the dataset, for the dataset's ID */
         $ws_ara = new AuthRegistrarAccess("True;True;True;True", $this->ws->webservices, $this->ws->datasetUri, "create", "", $this->ws->requester_ip, $this->ws->wsf_local_ip);
         $ws_ara->pipeline_conneg($this->ws->conneg->getAccept(), $this->ws->conneg->getAcceptCharset(), $this->ws->conneg->getAcceptEncoding(), $this->ws->conneg->getAcceptLanguage());
         $ws_ara->process();
         if ($ws_ara->pipeline_getResponseHeaderStatus() != 200) {
             $this->ws->conneg->setStatus($ws_ara->pipeline_getResponseHeaderStatus());
             $this->ws->conneg->setStatusMsg($ws_ara->pipeline_getResponseHeaderStatusMsg());
             $this->ws->conneg->setStatusMsgExt($ws_ara->pipeline_getResponseHeaderStatusMsgExt());
             $this->ws->conneg->setError($ws_ara->pipeline_getError()->id, $ws_ara->pipeline_getError()->webservice, $ws_ara->pipeline_getError()->name, $ws_ara->pipeline_getError()->description, $ws_ara->pipeline_getError()->debugInfo, $ws_ara->pipeline_getError()->level);
             return;
         }
         unset($ws_ara);
         /* Register no CRUD for the public user, for the dataset's ID */
         $ws_ara = new AuthRegistrarAccess($this->ws->globalPermissions, $this->ws->webservices, $this->ws->datasetUri, "create", "", "0.0.0.0", $this->ws->wsf_local_ip);
         $ws_ara->pipeline_conneg($this->ws->conneg->getAccept(), $this->ws->conneg->getAcceptCharset(), $this->ws->conneg->getAcceptEncoding(), $this->ws->conneg->getAcceptLanguage());
         $ws_ara->process();
         if ($ws_ara->pipeline_getResponseHeaderStatus() != 200) {
             $this->ws->conneg->setStatus($ws_ara->pipeline_getResponseHeaderStatus());
             $this->ws->conneg->setStatusMsg($ws_ara->pipeline_getResponseHeaderStatusMsg());
             $this->ws->conneg->setStatusMsgExt($ws_ara->pipeline_getResponseHeaderStatusMsgExt());
             $this->ws->conneg->setError($ws_ara->pipeline_getError()->id, $ws_ara->pipeline_getError()->webservice, $ws_ara->pipeline_getError()->name, $ws_ara->pipeline_getError()->description, $ws_ara->pipeline_getError()->debugInfo, $ws_ara->pipeline_getError()->level);
             return;
         }
         unset($ws_ara);
     }
 }