Project:Support desk

Jump to: navigation, search

About this board

vde   Welcome to MediaWiki.org's Support desk, where you can ask MediaWiki questions!

There are also other places where to askCommunication: IRCCommunication#Chat, mailing listsMailing lists, Wikimedia Developer Support, Q&A, mwusers (unofficial forum) etc.

Before you post

Post a new question

  1. To help us answer your questions, please always indicate which versions you are using (reported by your wiki's Special:Version page):
    • MediaWiki
    • PHP
    • Database
  2. Please include the URL of your wiki unless you absolutely can't. It's often a lot easier for us to identify the source of the problem if we can look for ourselves.
  3. To start a new thread, click "Start a new topic".

WM Api, Can't create CSRF Token... Returns Blank

1
Pai1976 (talkcontribs)

I am having a difficult time figuring out how to correctly implement this api. Any help would be super appreciated!!

I am using CURL in PHP., Getting this Result(N0 CSRF token)

Array
(
    [batchcomplete] => 
    [query] => Array
        (
            [tokens] => Array
                (
                    [csrftoken] => +\
                    [watchtoken] => +\
                    [patroltoken] => +\
                    [rollbacktoken] => +\
                    [userrightstoken] => +\
                    [logintoken] => c875cf8ce3e1f1786ab1486b1a012c395a922b2a+\
                    [createaccounttoken] => add02aeb90d07e7ec81c6d49f46ec0e85a922b2a+\
                )

        )

)
Array
(
    [error] => Array
        (
            [code] => badtoken
            [info] => Invalid CSRF token.
            [*] => See https://breakofdaymhg.com/staff/wiki/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes.
        )

)

Here is my Code:

<?

    //Define Your Endpoint here

    $endPoint = "MYWEBSITE.com/wiki/api.php";

    $botUsername = "MYAdmin";

    $botPassword = "MYBot@f4apm209rhaa1seds56tkt1uroapo123";

    $cookies = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/';

    //Force HTTPS when your endpoint also uses HTTPS

    if(substr(strtolower($endPoint),0,5) == "https"){ForceHTTPS();}

    //Helper functions

    function ForceHTTPS()

    {

        if($_SERVER["HTTPS"] != "on")

        {

            $pageURL = "Location: https://";

            if ($_SERVER["SERVER_PORT"] != "80")

            {

                $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];

            }

            else

            {

                $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];

            }

            header($pageURL);

        }       

    }

    function ShowErrors()

    {

        ini_set('display_errors', 1);

        ini_set('display_startup_errors', 1);

        error_reporting(E_ALL);       

    }

    // API Implementation

    function GetLoginToken($username, $password, $endPoint, $cookieName, $cookieFile)

    {

        $endPoint.="?action=query&meta=tokens&type=login&format=json";

        $parameters = [];

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $endPoint);

        curl_setopt($ch, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);

        //curl_setopt($ch, CURLOPT_POST, true);

        //curl_setopt($ch, CURLOPT_POSTFIELDS,  http_build_query($parameters));

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        curl_setopt($ch, CURLOPT_COOKIESESSION, true);

        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieName);

        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);

        session_write_close();

        $json = curl_exec($ch);

        curl_close($ch);

        $arr =json_decode($json, true);

        return $arr['query']['tokens']['logintoken'];

    }

    function Login($username, $password, $endPoint, $cookieName, $cookieFile, $loginToken)

    {//Requires POST Request

        $parameters = ['action'=>'login',

                       'format'=>'json',

                       'lgname'=>$username,

                       'lgpassword'=>$password,

                       'lgtoken'=>$loginToken

        ];

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $endPoint);

        curl_setopt($ch, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);

        curl_setopt($ch, CURLOPT_POST, true);

        curl_setopt($ch, CURLOPT_POSTFIELDS,  http_build_query($parameters));

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        curl_setopt($ch, CURLOPT_COOKIESESSION, true);

        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieName);

        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);

        session_write_close();

        $json = curl_exec($ch);

        curl_close($ch);

        $arr =json_decode($json, true);

        return $arr['login']['token'];       

    }

    function createUser($token, $endPoint, $cookieName, $cookieFile)

    {

        //action=createaccount&createreturnurl=http://example.com/&createtoken=29590a3037d325be70b93fb8258ed29257448cfb%2B%5C&username=Carl&mailpassword=1&email=carl%40example.com&realname=&reason=Carl%20asked%20me%20to.

        $parameters = ['action'=>'createaccount',

                       'format'=>'json',

                       'createreturnurl'=>'',

                       'username'=>'test',

                       'mailpassword'=>'1',

                       'email'=>urlencode('info@ishaktech.com'),

                       'realname'=>'paul ishak',

                       'reason'=>'autocreate',

                       'createtoken'=>urlencode($token)];

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $endPoint);

        curl_setopt($ch, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);

        curl_setopt($ch, CURLOPT_POST, true);

        curl_setopt($ch, CURLOPT_POSTFIELDS,  http_build_query($parameters));

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        curl_setopt($ch, CURLOPT_COOKIESESSION, true);

        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieName);

        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);

        session_write_close();

        $json = curl_exec($ch);

        curl_close($ch);

        $arr =json_decode($json, true);

        ?><pre><? print_r($arr);?></pre><?

        //return $arr['login']['token'];

    }

    function GetCSRFToken($endPoint, $cookieName, $cookieFile)

    {

        //?action=query&format=json&meta=tokens&type=csrf|watch|patrol|rollback|userrights|login|createaccount;

        $parameters = ['action'=>'query',

                       'format'=>'json',

                       'meta'=>'tokens',

                       'type'=>'csrf|watch|patrol|rollback|userrights|login|createaccount'];

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $endPoint);

        curl_setopt($ch, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);

        curl_setopt($ch, CURLOPT_POST, true);

        curl_setopt($ch, CURLOPT_POSTFIELDS,  http_build_query($parameters));

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        curl_setopt($ch, CURLOPT_COOKIESESSION, true);

        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieName);

        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);

        session_write_close();

        $json = curl_exec($ch);

        curl_close($ch);

        $arr =json_decode($json, true);

        ?><pre><? print_r($arr);?></pre><?

        return $arr['query']['tokens']['csrftoken'];

    }

    ShowErrors();

    $loginToken = GetLoginToken($botUsername, $botPassword, $endPoint, $cookies, $cookies);           

    $csrfToken = GetCSRFToken($endPoint, $cookies, $cookies);

    createUser($csrfToken, $endPoint, $cookies, $cookies);      

?>

Reply to "WM Api, Can't create CSRF Token... Returns Blank"

Generate LocalSettings.php from an existing MW database (without removing it)

5
Toniher (talkcontribs)

Hello, I'm checking install.php maintenance script, and I'm wondering if there is any parameter/option/additional maintenance script via command-line for generating a LocalSettings.php file from an existing DB installation.

Thanks!

星耀晨曦 (talkcontribs)

In general, the configuration is not stored in the database. So, you can't generate a LocalSettings.php from an existing DB installation. Of course, you can also develop the corresponding extension to meet your needs.

2001:16B8:10F2:3400:8CCF:3FDD:68E3:7673 (talkcontribs)

I am not sure I understand: An existing installation will already have a LocalSettings.php file. So there is no need to recreate one - you can just copy it!

What do you want to achieve?

Toniher (talkcontribs)

In my case I'm working with Docker containers and LocalSettings.php is kept in the image/container and not mounted. If rebuilt a new image / run a new container, I want to generate a new LocalSettings.php mapping a DB that I'm not creating from scratch. I would dare to say what I am asking is actually possible via web interface. I'm wondering whether could be possible via CLI...

2001:16B8:10F2:3400:A150:F8BA:2A8F:73AD (talkcontribs)

I don't know docker enough: What are the differences between all the different images/containers, which you later can create?

Are they all completely separate in a way that they could e.g. always use the same DB name for example?

And apart from the database credentials: Should they be identically configured?

(Reading what you want to achieve, I think this must be kind of a standard usecase for docker...)

Reply to "Generate LocalSettings.php from an existing MW database (without removing it)"
Chuck.Kahn (talkcontribs)

I'm reading the Extension:JsonConfig/Tabular page and can't figure out what I'm doing wrong.

I added JsonConfig to my Extension folder. My http://worldwideboxoffice.com/wiki/index.php/Special:Version page says that it is installed. But how do install the Tabular function?

I added this code block:

$wgJsonConfigModels['Tabular.JsonConfig'] = 'JsonConfig\JCTabularContent'; $wgJsonConfigs['Tabular.JsonConfig'] = array( 'namespace' => 486, // === NS_DATA, but the constant is not defined yet 'nsName' => 'Data', 'isLocal' => false, 'pattern' => '/.\.tab$/' );

and then this code block:

$wgJsonConfigs['Tabular.JsonConfig']['remote'] = 'https://commons.wikimedia.org/w/api.php';

To the end of my LocalSettings.php file, but the example.tab doesn't display as a table:

http://worldwideboxoffice.com/wiki/index.php/Data_test

Using the example data source:

http://worldwideboxoffice.com/wiki/index.php/Data:Sandbox/Name/Example.tab

Help?

Ciencia Al Poder (talkcontribs)

Placing mw.ext.data.get("Example.tab") on the page won't work. This is Lua code and should be placed in a Module (modules are provided by Extension:Scribunto).

Chuck.Kahn (talkcontribs)

Thanks. Added the Scribunto module and it shows up here:

http://worldwideboxoffice.com/wiki/index.php/Special:Version

But the test page doesn't seem to be working upon reload:

http://worldwideboxoffice.com/wiki/index.php/Data_test

Reply to "Installing Extension:JsonConfig/Tabular"
37.9.184.216 (talkcontribs)

Hey guys, I want to move a wiki from one server to another. I can start wiki in the new server, but how can i put all the pages with pictures to the new one? The function with special pages is not helping.

AhmadF.Cheema (talkcontribs)

See Manual:Moving a wiki.

Reply to "Moving a wiki"
Maybejulesishome (talkcontribs)

Hi there, I posted an edit yesterday, citing many references (newspaper / BBC sources) but it was removed by another editor. I'm not quite sure how to amend the page I am trying to. I need to put a musicians's work in timeline order - but it seems not to be allowing me. I'd love to hear any thoughts on what the problem may be.

2001:16B8:10F2:3400:8CCF:3FDD:68E3:7673 (talkcontribs)

You are speaking about en:John Grant (musician). The page history shows you the edit history. The user who reverted your changes wrote: "unsourced addition".

He obviously missed sources for what you added.

Reply to "why has my edit been removed?"
Jthester (talkcontribs)

I am struggling noting my references and creating citations.

AhmadF.Cheema (talkcontribs)

See Wikipedia:Tutorial/Citing sources and Help:Referencing for beginners.

This post was hidden by 2001:16B8:10F2:3400:8CCF:3FDD:68E3:7673 (history)
Reply to "Citations and References"

Deprecated code in /includes/MagicWord.php

5
רועי (talkcontribs)

MediaWiki V1.30.0

PHP version 7.2.2 (apache2handler)

MySQL 5.7.21

There seems to be deprecated code in /includes/MagicWord.php line 206:

while ( list( $key, $value ) = each( $m ) ) { ...

Maybe replace with:

foreach ($m as $key=>$value) {

2001:16B8:10F2:3400:8CCF:3FDD:68E3:7673 (talkcontribs)

The each() function of PHP is deprecated. Maybe you can check https://github.com/wikimedia/mediawiki to see, if this has already been fixed in the latest version!

2001:16B8:10F2:3400:A150:F8BA:2A8F:73AD (talkcontribs)

I cannot find this issue in master and also not in the 1.30 branch.

Also version 1.29 does '''not''' have an each() in that file. Are you sure you have updated your installation properly? Are you maybe still using an old version of that file?

רועי (talkcontribs)

Sorry, it's in /includes/MagicWordArray.php line 206.

I just downloaded the 1.30 again (https://releases.wikimedia.org/mediawiki/1.30/mediawiki-1.30.0.tar.gz) and confirmed it's in the source.

Also, confirmed it's fixed in the master on github.

2001:16B8:10F2:3400:F47B:A496:EC8F:C566 (talkcontribs)

MediaWiki 1.30 is not fully compatible with PHP 7.2. Note however that we a re not speaking about a broken functionality, but only about a deprecation warning.

MediaWiki 1.31, which will be created from latest master, will be compatible with PHP 7.2 in that regard.

Reply to "Deprecated code in /includes/MagicWord.php"

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) (localhost)

1
Strela9K (talkcontribs)

MediaWiki V1.30.0

PHP version 5.6.33-0+deb8u1 (apache2handler)

MySQL version 5.5.59-0+deb8u1-log

URL: https://wiki.iceh.eu/index.php/Main_Page

Hey, I have a wiki for own purposes running on a raspberry pi. It used to work without a problem, but now I'm having trouble opening my

Ansible - Configuration page https://wiki.iceh.eu/index.php/Configuration All other pages work. I tried to run php update.php just in case.

It seems like my MySQL crashes (restarts) when I try to access Configuration. I get the following error:

MediaWiki internal error.

Original exception: [e8c603824f627c5fc7fbdf09] /index.php/Configuration Wikimedia\Rdbms\DBQueryError from line 1149 of /usr/share/mediawiki-1.30.0/includes/libs/rdbms/database/Database.php: A database query error has occurred. Did you forget to run your application's database schema updater after upgrading?

Query: SELECT old_text,old_flags FROM `text` WHERE old_id = '41' LIMIT 1

Function: Revision::fetchText

Error: 2002 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) (localhost)

Backtrace:

#0 /usr/share/mediawiki-1.30.0/includes/libs/rdbms/database/Database.php(979): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)

#1 /usr/share/mediawiki-1.30.0/includes/libs/rdbms/database/Database.php(1343): Wikimedia\Rdbms\Database->query(string, string)

#2 /usr/share/mediawiki-1.30.0/includes/libs/rdbms/database/Database.php(1411): Wikimedia\Rdbms\Database->select(string, array, array, string, array, array)

#3 /usr/share/mediawiki-1.30.0/includes/Revision.php(1672): Wikimedia\Rdbms\Database->selectRow(string, array, array, string, array)

#4 /usr/share/mediawiki-1.30.0/includes/Revision.php(1637): Revision->fetchText()

#5 [internal function]: Revision->{closure}(boolean, integer, array, NULL)

#6 /usr/share/mediawiki-1.30.0/includes/libs/objectcache/WANObjectCache.php(1012): call_user_func_array(Closure, array)

#7 /usr/share/mediawiki-1.30.0/includes/libs/objectcache/WANObjectCache.php(914): WANObjectCache->doGetWithSetCallback(string, integer, Closure, array)

#8 /usr/share/mediawiki-1.30.0/includes/Revision.php(1640): WANObjectCache->getWithSetCallback(string, integer, Closure, array)

#9 /usr/share/mediawiki-1.30.0/includes/Revision.php(1084): Revision->loadText()

#10 /usr/share/mediawiki-1.30.0/includes/Revision.php(1101): Revision->getSerializedData()

#11 /usr/share/mediawiki-1.30.0/includes/Revision.php(1071): Revision->getContentInternal()

#12 /usr/share/mediawiki-1.30.0/includes/page/Article.php(362): Revision->getContent(integer, User)

#13 /usr/share/mediawiki-1.30.0/includes/page/Article.php(552): Article->fetchContentObject()

#14 /usr/share/mediawiki-1.30.0/includes/actions/ViewAction.php(68): Article->view()

#15 /usr/share/mediawiki-1.30.0/includes/MediaWiki.php(499): ViewAction->show()

#16 /usr/share/mediawiki-1.30.0/includes/MediaWiki.php(293): MediaWiki->performAction(Article, Title)

#17 /usr/share/mediawiki-1.30.0/includes/MediaWiki.php(851): MediaWiki->performRequest()

#18 /usr/share/mediawiki-1.30.0/includes/MediaWiki.php(523): MediaWiki->main()

#19 /usr/share/mediawiki-1.30.0/index.php(43): MediaWiki->run()

#20 {main}

Exception caught inside exception handler: [e8c603824f627c5fc7fbdf09] /index.php/Configuration Wikimedia\Rdbms\DBConnectionError from line 800 of /usr/share/mediawiki-1.30.0/includes/libs/rdbms/database/Database.php: Cannot access the database: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) (localhost)

Backtrace:

#0 /usr/share/mediawiki-1.30.0/includes/libs/rdbms/loadbalancer/LoadBalancer.php(1028): Wikimedia\Rdbms\Database->reportConnectionError(string)

#1 /usr/share/mediawiki-1.30.0/includes/libs/rdbms/loadbalancer/LoadBalancer.php(670): Wikimedia\Rdbms\LoadBalancer->reportConnectionError()

#2 /usr/share/mediawiki-1.30.0/includes/GlobalFunctions.php(2858): Wikimedia\Rdbms\LoadBalancer->getConnection(integer, array, boolean)

#3 /usr/share/mediawiki-1.30.0/includes/cache/localisation/LCStoreDB.php(45): wfGetDB(integer)

#4 /usr/share/mediawiki-1.30.0/includes/cache/localisation/LocalisationCache.php(392): LCStoreDB->get(string, string)

#5 /usr/share/mediawiki-1.30.0/includes/cache/localisation/LocalisationCache.php(291): LocalisationCache->loadSubitem(string, string, string)

#6 /usr/share/mediawiki-1.30.0/languages/Language.php(2587): LocalisationCache->getSubitem(string, string, string)

#7 /usr/share/mediawiki-1.30.0/includes/cache/MessageCache.php(933): Language->getMessage(string)

#8 /usr/share/mediawiki-1.30.0/includes/cache/MessageCache.php(888): MessageCache->getMessageForLang(LanguageEn, string, boolean, array)

#9 /usr/share/mediawiki-1.30.0/includes/cache/MessageCache.php(829): MessageCache->getMessageFromFallbackChain(LanguageEn, string, boolean)

#10 /usr/share/mediawiki-1.30.0/includes/Message.php(1275): MessageCache->get(string, boolean, LanguageEn)

#11 /usr/share/mediawiki-1.30.0/includes/Message.php(842): Message->fetchMessage()

#12 /usr/share/mediawiki-1.30.0/includes/Message.php(971): Message->toString(string)

#13 /usr/share/mediawiki-1.30.0/includes/exception/MWExceptionRenderer.php(131): Message->escaped()

#14 /usr/share/mediawiki-1.30.0/includes/exception/MWExceptionRenderer.php(54): MWExceptionRenderer::reportHTML(Wikimedia\Rdbms\DBQueryError)

#15 /usr/share/mediawiki-1.30.0/includes/exception/MWExceptionHandler.php(75): MWExceptionRenderer::output(Wikimedia\Rdbms\DBQueryError, integer)

#16 /usr/share/mediawiki-1.30.0/includes/exception/MWExceptionHandler.php(130): MWExceptionHandler::report(Wikimedia\Rdbms\DBQueryError)

#17 /usr/share/mediawiki-1.30.0/includes/MediaWiki.php(550): MWExceptionHandler::handleException(Wikimedia\Rdbms\DBQueryError)

#18 /usr/share/mediawiki-1.30.0/index.php(43): MediaWiki->run()

#19 {main}

Reply to "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) (localhost)"
ZakirH (talkcontribs)

I am getting the login token using a POST API calling this URL "http://localhost:81/mediawiki/api.php?action=query&meta=tokens&type=login&format=json" with the below post object

my post object is { lgname: test123, lgpassword: test@123 }.

Once I got the logintoken and session created, I am again doing a POST call to this URL"http://localhost:81/mediawiki/api.php?action=query&meta=tokens&type=csrf&format=json" with the below cookie information

bitnami_mediawiki_session: e6ggc1bi6jt2qck5rubgpddi6bq0jc9s; bitnami_mediawikiUserID:1;bitnami_mediawikiUserName: test123

Even after doing the above steps, I am still receiving anon token (+). Is there anything I am doing wrong or missing? Any assistance would be of great help.

Margarethkearney (talkcontribs)

I am having the same issue. Has anyone been able to figure out how to do this.

2604:6000:84C1:A900:4959:984E:73CD:B115 (talkcontribs)

    function requestCSRFtoken($wiki)

    {

        $parameters = array(

                            'action' => 'query',                     

                            'format'=>'json',

                            'maxlag'=>'10',

                            'smaxage'=>'0',

                            'maxage'=>'0',

                            'assert'=>'user',

                            'assertuser'=>'Admin2',

                            'requestid'=>'1',

                            'servedby'=>'true',

                            'curtimestamp'=>'true',

                            'responselanginfo'=>'1',

                            'origin'=>'*',

                            'uselang'=>'user',

                            'centralauthtoken'=>'123',

                            'meta'=>'tokens',

                            'type'=>'csrf'

                            );  

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $wiki);

        curl_setopt($ch, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);

        curl_setopt($ch, CURLOPT_POST, true);

        curl_setopt($ch, CURLOPT_POSTFIELDS,  http_build_query($parameters));

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        curl_setopt($ch, CURLOPT_COOKIESESSION, true);

        curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie-name');

        curl_setopt($ch, CURLOPT_COOKIEFILE, '/var/www/ip4.x/file/tmp');

        $answer = curl_exec($ch);

        return $answer;

    }   

    $wiki = "https://breakofdaymhg.com/staff/wiki/api.php";

    //ebsh7p6e6q

Reply to "Unable to get csrf token"

Page titles of HTML files imported via Html2Wiki

4
Bisherbas (talkcontribs)

By default, file names are the page titles. How can I extract a text from within the HTML file and make this text as the Wiki page title instead

MediaWiki v.1.30. Thanks!

Gryllida (talkcontribs)

Currently the extension does not seem to have such option.

It uses pandoc to convert html to wiki markup. Possibly the page title is simply discarded then.

https://github.com/wikimedia/mediawiki-extensions-Html2Wiki/blob/master/specials/SpecialHtml2Wiki.php#L237 suggests that mArticleTitle will be "the full value of mCollectionName (if any) plus mArticleSavePath plus the file name MINUS any extension."

I don't think the extension even bothers to parse the HTML contents. This may be possible to add to the program.

I would suggest to ask at https://www.mediawiki.org/wiki/Extension_talk:Html2Wiki instead, the extension developers and users may have this page on their watch list.

Gryllida (talkcontribs)

The project also has a phabricator page https://phabricator.wikimedia.org/project/profile/1094/ so if you add a new task there with title 'use html title for the article title' and tag it with the project name then it may be more likely to be received by the relevant people.

Bisherbas (talkcontribs)

@Gryllida Thank you!

Reply to "Page titles of HTML files imported via Html2Wiki"