Benutzer-Werkzeuge

Webseiten-Werkzeuge


cloud4education

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
cloud4education [2012/11/04 11:55]
admin angelegt
cloud4education [2012/11/04 18:07] (aktuell)
admin
Zeile 3: Zeile 3:
 ===== Version 4.5.1 ===== ===== Version 4.5.1 =====
  
 +  wget http://​apps.owncloud.com/​CONTENT/​content-files/​151948-rescan_fs.zip => apps/
 +
 +<code php apps/​rescan_fs/​appinfo/​app.php>​
 +OCP\App::​addNavigationEntry( array( "​id"​ => "​rescan_fs",​ "​order"​ => 100, "​href"​ => OCP\Util::​linkTo( "​rescan_fs",​ "​index.php"​ ), "​icon"​ => OCP\Util::​imagePath( "​rescan_fs",​ "​loader.gif"​ ), "​name"​ => "​Ordner neu einlesen"​ ));
 +</​code>​
 +
 +<code php apps/​rescan_fs/​templates/​index.php>​
 +<!--[if IE 8]><​style>​input[type="​checkbox"​]{padding:​0;​}table td{position:​static !important;​}</​style><​![endif]-->​
 +<div id="​scanning-message">​
 +        <h3>
 +                <?php echo $l->​t('​Ordner werden durchsucht, bitte warten.'​);?>​ <span id='​scan-count'></​span>​
 +        </h3>
 +        <p>
 +                <?php echo $l->​t('​Durchsuche Ordner...'​);?>​ <span id='​scan-current'></​span>​
 +        </p>
 +</​div>​
 +<div id="​scanning-message-end">​
 +        <h3>
 +                <?php echo $l->​t('​Scan abgeschlossen'​);?>​ <span id='​scan-complete'></​span>​
 +        </h3>
 +</​div>​
 +</​code>​
 +
 +<code php lib/​user.php>​
 +        public static function login( $uid, $password ) {
 +                $run = true;
 +                OC_Hook::​emit( "​OC_User",​ "​pre_login",​ array( "​run"​ => &$run, "​uid"​ => $uid ));
 +
 +                if( $run ) {
 +                        $uid = self::​checkPassword( $uid, $password );
 +                        $enabled = self::​isEnabled($uid);​
 +                        if($uid && $enabled) {
 +                                session_regenerate_id(true);​
 +                                self::​setUserId($uid);​
 +                                OC_Hook::​emit( "​OC_User",​ "​post_login",​ array( "​uid"​ => $uid, '​password'​=>​$password ));
 +                                $_SESSION['​user_password'​]= $password;
 +                                return true;
 +                        }
 +                }
 +                return false;
 +        }
 +</​code>​
 +
 +<code php lib/​util.php>​
 +/*** server4education ***/
 +
 +        /**
 +        * Check if home folder is mounted, mount if not
 +        */
 +        public static function checkHomeMounted(){
 +                // Check if home folder is mounted
 +                if (!OC_Filesystem::​is_dir('/​Home'​)) {
 +                        OC_Filesystem::​mkdir('/​Home'​);​
 +                        exec("​sudo /​usr/​local/​bin/​mounthome "​.OC_User::​getUser()."​ "​.$_SESSION['​user_password'​]);​
 +                }
 +
 +                foreach(self::​getS4eShares() as $share) {
 +                        if (!OC_Filesystem::​is_dir('/'​.$share)) {
 +                                OC_Filesystem::​mkdir('/'​.$share);​
 +                                exec("​sudo /​usr/​local/​bin/​mountshare "​.OC_User::​getUser()."​ "​.$_SESSION['​user_password'​]."​ "​.$share);​
 +                        }
 +                }
 +                exec("​logger \""​.OC_User::​getUser()."​ - cloud4education "​.`date +%s`."​\""​);​
 +                $_SESSION['​user_password'​] = "";​
 +        }
 +
 +/*** server4education ***/
 +
 +</​code>​
 +
 +<code php apps/​files/​index.php>​
 +// Check if we are a user
 +OCP\User::​checkLoggedIn();​
 +OC_Util::​checkHomeMounted();​
 +</​code>​
 +
 +  *Branding
 +    * core/​img/​logo.svg
 +    * core/​img/​logo.png
 +    * core/​img/​favicon.svg
 +    * core/​img/​favicon.png
 +    * core/​img/​favicon-touch.svg
 +    * core/​img/​favicon-touch.png
 +
 +<code php core/​templates/​layout.guest.php>​
 +<​title>​cloud4education</​title>​
 +...
 +<img src="<?​php echo image_path('',​ '​logo.png'​);​ ?>" alt="​cloud4education"​ style="​width:​ 22em" />
 +...
 +<​footer><​p class="​info"><​a href="​http://​www.cloud4education.at/">​cloud4education</​a>​ &ndash; <?php echo $l->t( 'eine freie Cloud-L&​ouml;​sung f&​uuml;​r Schulen'​ ); ?></​p></​footer>​
 +</​code>​
 +
 +<code php core/​templates/​layout.user.php>​
 +<​title><?​php echo isset($_['​application'​]) && !empty($_['​application'​])?​$_['​application'​].'​ | ':''​ ?>​cloud4education <?php echo OC_User::​getUser()?'​ ('​.OC_User::​getUser().'​) ':''​ ?></​title>​
 +</​code>​
 ===== Version 4.0.1 ===== ===== Version 4.0.1 =====
  
 +<code php files/​index.php>​
 +// Check if we are a user
 +OC_Util::​checkLoggedIn();​
 +OC_Util::​checkHomeMounted();​
 +</​code>​
 +
 +<code php lib/​user.php>​
 +        // server4education shares
 +        private static function getS4eShares() {
 +                $shares = array();
 +                $fp = @fopen("/​srv/​www/​htdocs/"​.OC::​$WEBROOT."/​config/​s4eshares.config",​ "​r"​);​
 +                while($line = fgets($fp, 1024)) {
 +                        $line = trim($line);​
 +                        if($line != ""​)
 +                                $shares[] = $line;
 +                }
 +                fclose($fp);​
 +                return $shares;
 +        }
 +
 +
 +
 +        /**
 +         * @brief Kick the user
 +         * @returns true
 +         *
 +         * Logout, destroys session
 +         */
 +        public static function logout(){
 +                OC_Hook::​emit( "​OC_User",​ "​logout",​ array());
 +                exec("​sudo umount /​srv/​www/​htdocs/"​.OC::​$WEBROOT."/​data/"​.OC_User::​getUser()."/​files/​Home"​);​
 +                foreach(self::​getS4eShares() as $share) {
 +                        exec("​sudo umount /​srv/​www/​htdocs/"​.OC::​$WEBROOT."/​data/"​.OC_User::​getUser()."/​files/"​.$share);​
 +                }
 +// BÖSE? ​               OC_Helper::​rmdirr("/​srv/​www/​htdocs/"​.OC::​$WEBROOT."/​data/"​.OC_User::​getUser());​
 +                OC_Helper::​rmdirr("/​srv/​www/​htdocs/"​.OC::​$WEBROOT."/​data/"​.OC_User::​getUser());​
 +                $_SESSION['​user_id'​] = false;
 +                OC_User::​unsetMagicInCookie();​
 +                return true;
 +        }
 +</​code>​
 +
 +<code php lib/​util.php>​
 +        // server4education shares
 +        private static function getS4eShares() {
 +                $shares = array();
 +                $fp = @fopen("/​srv/​www/​htdocs/"​.OC::​$WEBROOT."/​config/​s4eshares.config",​ "​r"​);​
 +                while($line = fgets($fp, 1024)) {
 +                        $line = trim($line);​
 +                        if($line != ""​)
 +                                $shares[] = $line;
 +                }
 +                fclose($fp);​
 +                return $shares;
 +        }
 +
 +
 +
 +
 +        /**
 +        * Check if the user is logged in, redirects to home if not
 +        */
 +        public static function checkLoggedIn(){
 +                // Check if we are a user
 +                if( !OC_User::​isLoggedIn()){
 +                        header( '​Location:​ '​.OC_Helper::​linkTo( '',​ '​index.php'​ , true));
 +                        exit();
 +                }
 +        }
 +
 +/*** server4education ***/
 +
 +        /**
 +        * Check if home folder is mounted, mount if not
 +        */
 +        public static function checkHomeMounted(){
 +                // Check if home folder is mounted
 +                if (!OC_Filesystem::​is_dir('/​Home'​)) {
 +                        OC_Filesystem::​mkdir('/​Home'​);​ }
 +                        exec("​sudo /​usr/​local/​bin/​mounthome "​.OC_User::​getUser()."​ "​.$_SESSION['​user_password'​]);​
 +#​exec("​sudo mount | grep \"on /​srv/​www/​htdocs/​owncloud/​data/"​.OC_User::​getUser()."/​files/​Home type\";​ if [ $? -eq 1 ] ; then sudo mount //​localhost/"​.OC_User::​getUser()."​ /​srv/​www/​htdocs/"​.OC::​$WEBROOT."/​data/"​.OC_User::​getUser()."/​files/​Home -o user="​.OC_User::​getUser().",​pass="​.$_SESSION['​user_password'​].",​uid=wwwrun,​gid=www;​ fi");
 +
 +                foreach(self::​getS4eShares() as $share) {
 +                        if (!OC_Filesystem::​is_dir('/'​.$share)) {
 +                                OC_Filesystem::​mkdir('/'​.$share);​
 +                        }
 +                        exec("​sudo /​usr/​local/​bin/​mountshare "​.OC_User::​getUser()."​ "​.$_SESSION['​user_password'​]."​ "​.$share);​
 +#                        exec("​mount | grep \"on /​srv/​www/​htdocs/"​.OC::​$WEBROOT."/​data/"​.OC_User::​getUser()."/​files/"​.$share."​ type\" > /dev/null; if [ $? -eq 1 ] ; then sudo mount //​localhost/"​.$share."​ /​srv/​www/​htdocs/"​.OC::​$WEBROOT."/​data/"​.OC_User::​getUser()."/​files/"​.$share."​ -o user="​.OC_User::​getUser().",​pass="​.$_SESSION['​user_password'​].",​uid=wwwrun,​gid=www;​ fi");
 +                }
 +                exec("​logger \""​.OC_User::​getUser()."​ - cloud4education "​.`date +%s`."​\""​);​
 +        }
 +
 +/*** server4education ***/
 +
 +</​code>​
 +
 +<code ini config/​s4eshares.config>​
 +gemeinsam
 +material
 +abgabe
 +</​code>​
 +
 +<code bash /​usr/​local/​bin/​cloud4education>​
 +#!/bin/bash
 +
 +for username in $(mount | grep owncloud | grep Home | cut -d"/"​ -f4 | cut -d" " -f1); do
 + ​START=$(grep "​logger:​ $username"​ /​var/​log/​messages | tail -1 | awk '​{print $9}')
 + ​DUR=$(echo "( ( $(date +%s) - $START ) / 60 )" | bc)
 + if [ $DUR -gt 15 ]; then
 +  umount /​srv/​www/​htdocs/​owncloud/​data/​$username/​files/​Home
 +  for SHARE in `cat /​srv/​www/​htdocs/​owncloud/​config/​s4eshares.config`;​ do
 +    umount /​srv/​www/​htdocs/​owncloud/​data/​$username/​files/​$SHARE
 +  done
 +  rm /​srv/​www/​htdocs/​owncloud/​data/​$username
 + fi
 +done
 +
 +</​code>​
 +
 +<code bash /​usr/​local/​bin/​mounthome>​
 +#!/bin/bash
 +
 +mount | grep "on /​srv/​www/​htdocs/​owncloud/​data/​$1/​files/​Home type" > /dev/null
 +if [ $? -eq 1 ] ; then
 +        sudo mount "//​localhost/​$1"​ /​srv/​www/​htdocs/​owncloud/​data/​$1/​files/​Home -o user="​$1",​pass="​$2",​uid=wwwrun,​gid=www
 +fi
 +</​code>​
 +
 +
 +<code bash /​usr/​local/​bin/​mountshare>​
 +#!/bin/bash
 +
 +mount | grep "on /​srv/​www/​htdocs/​owncloud/​data/​$1/​files/​$3 type" > /dev/null
 +if [ $? -eq 1 ] ; then
 +        sudo mount "//​localhost/​$3"​ "/​srv/​www/​htdocs/​owncloud/​data/​$1/​files/​$3"​ -o user="​$1",​pass="​$2",​uid=wwwrun,​gid=www
 +fi
 +</​code>​
 +
 +<code bash crontab>
 +# Umount lost cloud4education connections
 +*/15 * * * *  /​usr/​local/​bin/​cloud4education > /dev/null 2>&1
 +</​code>​
 +
 +  *Branding:
 +    * core/​img/​owncloud-logo-medium-white.png
 +    * core/​img/​logo.svg
 +    * core/​img/​logo.png
 +    * core/​img/​logo-wide.svg
 +    * core/​img/​logo-wide.png
 +
 +<code php core/​templates/​layout.user.php>​
 +<​title>​cloud4education</​title>​
 +</​code>​
 +
 +<code php core/​templates/​layout.guest.php>​
 +<​title>​cloud4education</​title>​
 +...
 +<​footer><​p class="​info"><​a href="​http://​www.cloud4education.at/">​cloud4education</​a>​ &ndash; <?php echo $l->t( 'eine freie Cloud-L&​ouml;​sung f&​uuml;​r Schulen'​ ); ?></​p></​footer>​
 +</​code>​
 +
 +<code css core/​templates/​css/​styles.css>​
 +#body-login p.info { width:26em; text-align: center; margin:2em auto; color:#777; text-shadow:#​fff 0 1px 0; }
 +</​code>​
 +
 +<code ini /​etc/​sudoers>​
 +wwwrun ALL = NOPASSWD: /​usr/​local/​bin/​mounthome
 +wwwrun ALL = NOPASSWD: /​usr/​local/​bin/​mountshare
 +wwwrun ALL = NOPASSWD: /bin/umount
 +wwwrun ALL = NOPASSWD: /bin/mount
 +wwwrun ALL = NOPASSWD: /​sbin/​mount.cifs
 +</​code>​
  
 +  *Passwort und EMail Dialog abschalten:
 +    *settings/​templates/​personal.php
cloud4education.1352026536.txt.gz · Zuletzt geändert: 2012/11/04 11:55 (Externe Bearbeitung)