[wikka-community] few feature idea / improvement suggestion's

morten hundevad fannoj
Wed Sep 30 19:06:52 GMT 2009


Regarding #1 i know that one is complex, but i am not going to create code
for it if you all were not interested in having it in wikka at all.. would
waste both mine and your time =), and ya i know the mediawiki functions
would not work out of the box =), but if you want I can give it a try !

I would properly create a function somewhere caled EG: GetIp, that function
would then return the ip address for logging or anything. return value saved
in a static so that the function only need to run "once".

Morten

2009/9/30 Nils Lindenberg <niehle at gmail.com>

> Hi,
>
> #2: adding the type to the login form  should do no harm. I'll open a
> ticket for it. (The login is handled by actions/usersettings.php, btw, if
> you don't want to wait till the next release)
>
> #1: is more complex, since the code used by mediawiki needs an adoption for
> wikka. If you are willing to try, the best start would be either to add the
> modified functions to the wikka core, i.e. libs/Wakka.Class.php, or, to have
> avoid problems with upgrades, to add them to a new file, placed in the libs
> directory. If you start a page on wikkawiki.org, posting the code there
> maybe other people willing to help.
>
> Greets,
> Nils
>
>
> Am 26.09.2009 um 13:44 schrieb morten hundevad:
>
>  Hi all
>>
>> I am new to wikka, but i working with integration in to joomla
>>
>> 1# right now the you can see the results here:
>> http://joomla.fanno.dk/universal-wikka/HomePage right now you see the
>> host as "Your hostname is ws38.surf-town.net" because that i am using
>> curl to integrate wikka in to joomla. my idea is to fix this by adding
>> support for using the X-Forwarded-For header allowing me to send the users
>> ip adress throw to wikka via the X-Forwarded-For header, however one might
>> want to add in the config a list of trusted hosts so that wikka will only
>> trust the X-Forwarded-For if it comes from certen ip adress (in this case it
>> self) below i post the "main functions in mediawiki that allow for the same
>> feature.
>>
>> #2 i have problem with curl login because the username in the login form
>> is missing the type="text" any change this could be added ? as it is causing
>> headacke for oure curl login class because using size="#" don't seem to
>> cause some problems on our end.
>>
>>
>> ------------------------------------------------------ code start
>> ------------------------------------------------------
>> /**
>>  * Extracts the XFF string from the request header
>>  * Checks first for "X-Forwarded-For", then "Client-ip"
>>  * Note: headers are spoofable
>>  * @return string
>>  */
>> function wfGetForwardedFor() {
>>    if( function_exists( 'apache_request_headers' ) ) {
>>        // More reliable than $_SERVER due to case and -/_ folding
>>        $set = array ();
>>        foreach ( apache_request_headers() as $tempName => $tempValue ) {
>>            $set[ strtoupper( $tempName ) ] = $tempValue;
>>        }
>>        $index = strtoupper ( 'X-Forwarded-For' );
>>        $index2 = strtoupper ( 'Client-ip' );
>>    } else {
>>        // Subject to spoofing with headers like X_Forwarded_For
>>        $set = $_SERVER;
>>        $index = 'HTTP_X_FORWARDED_FOR';
>>        $index2 = 'CLIENT-IP';
>>    }
>>
>>    #Try a couple of headers
>>    if( isset( $set[$index] ) ) {
>>        return $set[$index];
>>    } else if( isset( $set[$index2] ) ) {
>>        return $set[$index2];
>>    } else {
>>        return null;
>>    }
>> }
>>
>> /**
>>  * Work out the IP address based on various globals
>>  * For trusted proxies, use the XFF client IP (first of the chain)
>>  * @return string
>>  */
>> function wfGetIP() {
>>    global $wgIP, $wgUsePrivateIPs;
>>
>>    # Return cached result
>>    if ( !empty( $wgIP ) ) {
>>        return $wgIP;
>>    }
>>
>>    /* collect the originating ips */
>>    # Client connecting to this webserver
>>    if ( isset( $_SERVER['REMOTE_ADDR'] ) ) {
>>        $ipchain = array( IP::canonicalize( $_SERVER['REMOTE_ADDR'] ) );
>>    } else {
>>        # Running on CLI?
>>        $ipchain = array( '127.0.0.1' );
>>    }
>>    $ip = $ipchain[0];
>>
>>    # Append XFF on to $ipchain
>>    $forwardedFor = wfGetForwardedFor();
>>    if ( isset( $forwardedFor ) ) {
>>        $xff = array_map( 'trim', explode( ',', $forwardedFor ) );
>>        $xff = array_reverse( $xff );
>>        $ipchain = array_merge( $ipchain, $xff );
>>    }
>>
>>    # Step through XFF list and find the last address in the list which is
>> a trusted server
>>    # Set $ip to the IP address given by that trusted server, unless the
>> address is not sensible (e.g. private)
>>    foreach ( $ipchain as $i => $curIP ) {
>>        $curIP = IP::canonicalize( $curIP );
>>        if ( wfIsTrustedProxy( $curIP ) ) {
>>            if ( isset( $ipchain[$i + 1] ) ) {
>>                if( $wgUsePrivateIPs || IP::isPublic( $ipchain[$i + 1 ] ) )
>> {
>>                    $ip = $ipchain[$i + 1];
>>                }
>>            }
>>        } else {
>>            break;
>>        }
>>    }
>>
>>    wfDebug( "IP: $ip\n" );
>>    $wgIP = $ip;
>>    return $ip;
>> }
>>
>> /**
>>  * Checks if an IP is a trusted proxy providor
>>  * Useful to tell if X-Fowarded-For data is possibly bogus
>>  * Squid cache servers for the site and AOL are whitelisted
>>  * @param string $ip
>>  * @return bool
>>  */
>> function wfIsTrustedProxy( $ip ) {
>>    global $wgSquidServers, $wgSquidServersNoPurge;
>>
>>    if ( in_array( $ip, $wgSquidServers ) ||
>>        in_array( $ip, $wgSquidServersNoPurge )
>>    ) {
>>        $trusted = true;
>>    } else {
>>        $trusted = false;
>>    }
>>    wfRunHooks( 'IsTrustedProxy', array( &$ip, &$trusted ) );
>>    return $trusted;
>> }
>> ------------------------------------------------------ code end
>> ------------------------------------------------------
>>
>>
>> -Thanks for listening/reading along
>>
>>
>>
>> _______________________________________________
>> WikkaWiki Community mailing list
>> community at wikkawiki.org
>> http://mail.wikkawiki.org/mailman/listinfo/community_wikkawiki.org
>>
>
>
> _______________________________________________
> WikkaWiki Community mailing list
> community at wikkawiki.org
> http://mail.wikkawiki.org/mailman/listinfo/community_wikkawiki.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.wikkawiki.org/pipermail/community_wikkawiki.org/attachments/20090930/6f024882/attachment.html>



More information about the community mailing list