diff --git a/swad_changelog.h b/swad_changelog.h index ffea9174..9f335ad4 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -605,7 +605,7 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate TODO: Attach pdf files in multimedia. */ -#define Log_PLATFORM_VERSION "SWAD 22.51 (2022-10-27)" +#define Log_PLATFORM_VERSION "SWAD 22.52 (2022-10-28)" #define CSS_FILE "swad22.49.4.css" #define JS_FILE "swad22.49.js" /* @@ -616,6 +616,7 @@ Que al subir un fichero por defecto est Al subir cosas para los grupos, en documentos, resltar más los grupos porque no son conscientes... Exportar listas en CSV. + Version 22.52: Oct 28, 2022 Code refactoring in plugins. (333589 lines) Version 22.51: Oct 27, 2022 New module swad_process. (333586 lines) Version 22.50.8: Oct 20, 2022 Code refactoring in files. (333498 lines) Version 22.50.7: Oct 20, 2022 Code refactoring in files. (333496 lines) diff --git a/swad_constant.h b/swad_constant.h index c1632804..e1477f5e 100644 --- a/swad_constant.h +++ b/swad_constant.h @@ -36,6 +36,12 @@ #define Cns_MAX_CHARS_WWW (256 - 1) // 255: max. number of chars of a URL #define Cns_MAX_BYTES_WWW Cns_MAX_CHARS_WWW // 255 +#define Cns_MAX_CHARS_IP (3 + 1 + 3 + 1 + 3 + 1 + 3) // 15: max. number of chars of an IP address + // Example: 255.255.255.255 + // 3+1+3+1+3+1+3 + // 123456789012345 +#define Cns_MAX_BYTES_IP Cns_MAX_CHARS_IP // 15 + #define Cns_MAX_CHARS_DATE (16 - 1) // 15 #define Cns_MAX_BYTES_DATE ((Cns_MAX_CHARS_DATE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 255 diff --git a/swad_cryptography.c b/swad_cryptography.c index b945c146..57d63e63 100644 --- a/swad_cryptography.c +++ b/swad_cryptography.c @@ -135,7 +135,7 @@ void Cry_EncryptSHA512Base64 (const char *PlainText, void Cry_CreateUniqueNameEncrypted (char *UniqueNameEncrypted) { static unsigned NumCall = 0; // When this function is called several times in the same execution of the program, each time a new name is created - char UniqueNamePlain[Par_MAX_BYTES_IP + + char UniqueNamePlain[Cns_MAX_BYTES_IP + Cns_MAX_DECIMAL_DIGITS_LONG + Cns_MAX_DECIMAL_DIGITS_LONG + Cns_MAX_DECIMAL_DIGITS_UINT + 1]; diff --git a/swad_database.c b/swad_database.c index 9673691f..c6cc8481 100644 --- a/swad_database.c +++ b/swad_database.c @@ -1199,7 +1199,7 @@ mysql> DESCRIBE exa_log; "QstInd INT NOT NULL DEFAULT -1," "CanAnswer ENUM('N','Y') NOT NULL DEFAULT 'N'," "ClickTime DATETIME NOT NULL," - "IP CHAR(15) NOT NULL," // Par_MAX_BYTES_IP + "IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP "UNIQUE INDEX(LogCod)," "UNIQUE INDEX(PrnCod,LogCod)," "INDEX(ClickTime))"); @@ -1445,7 +1445,7 @@ mysql> DESCRIBE fir_banned; 3 rows in set (0.00 sec) */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS fir_banned (" - "IP CHAR(15) NOT NULL," // Par_MAX_BYTES_IP + "IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP "BanTime DATETIME NOT NULL," "UnbanTime DATETIME NOT NULL," "INDEX(IP,UnbanTime)," @@ -1465,7 +1465,7 @@ mysql> DESCRIBE fir_log; */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS fir_log (" "ClickTime DATETIME NOT NULL," - "IP CHAR(15) NOT NULL," // Par_MAX_BYTES_IP + "IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP "INDEX(ClickTime)," "INDEX(IP))"); @@ -2072,7 +2072,7 @@ mysql> DESCRIBE log_recent; "ClickTime DATETIME NOT NULL," "TimeToGenerate INT NOT NULL," "TimeToSend INT NOT NULL," - "IP CHAR(15) NOT NULL," // Par_MAX_BYTES_IP + "IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP "UNIQUE INDEX(LogCod)," "INDEX(ActCod)," "INDEX(CtyCod)," @@ -2463,7 +2463,7 @@ mysql> DESCRIBE plg_plugins; "Logo VARCHAR(31) NOT NULL," // Plg_MAX_BYTES_PLUGIN_LOGO "AppKey VARCHAR(31) NOT NULL," // Plg_MAX_BYTES_PLUGIN_APP_KEY "URL VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW - "IP CHAR(15) NOT NULL," // Par_MAX_BYTES_IP + "IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP "UNIQUE INDEX(PlgCod))"); /***** Table prg_clipboards *****/ @@ -2880,7 +2880,7 @@ mysql> DESCRIBE set_ip_settings; 10 rows in set (0,01 sec) */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS set_ip_settings (" - "IP CHAR(15) NOT NULL," // Par_MAX_BYTES_IP + "IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP "UsrCod INT NOT NULL DEFAULT -1," "LastChange DATETIME NOT NULL," "FirstDayOfWeek TINYINT NOT NULL DEFAULT 0," diff --git a/swad_exam_log.c b/swad_exam_log.c index 24c278a7..77aa08b2 100644 --- a/swad_exam_log.c +++ b/swad_exam_log.c @@ -235,7 +235,7 @@ void ExaLog_ShowExamLog (const struct ExaPrn_Print *Print) int QstInd; bool UsrCouldAnswer; time_t ClickTimeUTC; - char IP[Par_MAX_BYTES_IP + 1]; + char IP[Cns_MAX_BYTES_IP + 1]; char *Id; size_t Length; char Anonymized[14 + 1]; // ***…*** diff --git a/swad_global.c b/swad_global.c index 40933064..2ea884fe 100644 --- a/swad_global.c +++ b/swad_global.c @@ -326,7 +326,6 @@ void Gbl_Cleanup (void) Ctr_FreeListCenters (); Cty_FreeListCountries (); Lnk_FreeListLinks (); - Plg_FreeListPlugins (); for (Role = (Rol_Role_t) 0; Role <= (Rol_Role_t) (Rol_NUM_ROLES - 1); diff --git a/swad_global.h b/swad_global.h index 28f8a3a5..7bf0285a 100644 --- a/swad_global.h +++ b/swad_global.h @@ -122,11 +122,6 @@ struct Globals char Str[Sch_MAX_BYTES_STRING_TO_FIND + 1]; bool LogSearch; } Search; - struct - { - unsigned Num; // Number of plugins - struct Plg_Plugin *Lst; // List of plugins - } Plugins; struct { bool IsWebService; // Must generate HTML output (IsWebService==false) or SOAP-XML output (IsWebService==true)? diff --git a/swad_parameter.c b/swad_parameter.c index d831b075..7aea49c0 100644 --- a/swad_parameter.c +++ b/swad_parameter.c @@ -83,7 +83,7 @@ static struct size_t LengthWithoutCRLF; size_t LengthWithCRLF; } Boundary; - char IP[Par_MAX_BYTES_IP + 1]; + char IP[Cns_MAX_BYTES_IP + 1]; } Par_Params = { .ContentReceivedByCGI = Act_CONT_NORM, diff --git a/swad_parameter.h b/swad_parameter.h index 63a64ff7..f089ef89 100644 --- a/swad_parameter.h +++ b/swad_parameter.h @@ -63,12 +63,6 @@ typedef enum Par_PARAM_MULTIPLE, } Par_ParamType_t; // Parameter is present only one time / multiple times -#define Par_MAX_CHARS_IP (3 + 1 + 3 + 1 + 3 + 1 + 3) // 15: max. number of chars of an IP address - // Example: 255.255.255.255 - // 3+1+3+1+3+1+3 - // 123456789012345 -#define Par_MAX_BYTES_IP Par_MAX_CHARS_IP // 15 - /*****************************************************************************/ /***************************** Public prototypes *****************************/ /*****************************************************************************/ diff --git a/swad_plugin.c b/swad_plugin.c index 7e0cc0db..a3c1ebe4 100644 --- a/swad_plugin.c +++ b/swad_plugin.c @@ -58,10 +58,20 @@ TODO: Check if web service is called from an authorized IP. extern struct Globals Gbl; /*****************************************************************************/ -/***************************** Private variables *****************************/ +/******************************* Private types *******************************/ /*****************************************************************************/ -static struct Plg_Plugin *Plg_EditingPlg = NULL; // Static variable to keep the plugin being edited +struct Plg_Plugins + { + unsigned Num; // Number of plugins + struct Plg_Plugin *Lst; // List of plugins + }; + +/*****************************************************************************/ +/************************* Private global variables **************************/ +/*****************************************************************************/ + +static struct Plg_Plugin *Plg_EditingPlg; // Plugin being edited /*****************************************************************************/ /***************************** Private prototypes ****************************/ @@ -69,9 +79,10 @@ static struct Plg_Plugin *Plg_EditingPlg = NULL; // Static variable to keep the static void Plg_PutIconToEditPlugins (__attribute__((unused)) void *Args); static void Plg_EditPluginsInternal (void); -static void Plg_ListPluginsForEdition (void); +static void Plg_FreeListPlugins (struct Plg_Plugins *Plugins); +static void Plg_ListPluginsForEdition (struct Plg_Plugins *Plugins); static void Plg_PutParamPlgCod (void *PlgCod); -static void Plg_GetListPlugins (void); +static void Plg_GetListPlugins (struct Plg_Plugins *Plugins); static void Plg_PutFormToCreatePlugin (void); static void Plg_PutHeadPlugins (void); @@ -91,6 +102,7 @@ void Plg_ListPlugins (void) struct Plg_Plugin *Plg; char URL[Cns_MAX_BYTES_WWW + Cns_BYTES_SESSION_ID + 1]; char *Icon; + struct Plg_Plugins Plugins; if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM) { @@ -99,7 +111,7 @@ void Plg_ListPlugins (void) } /***** Get list of plugins *****/ - Plg_GetListPlugins (); + Plg_GetListPlugins (&Plugins); /***** Begin box and table *****/ Box_BoxTableBegin (NULL,Txt_Plugins, @@ -116,10 +128,10 @@ void Plg_ListPlugins (void) /***** Write all plugins *****/ for (NumPlg = 0; - NumPlg < Gbl.Plugins.Num; + NumPlg < Plugins.Num; NumPlg++) { - Plg = &(Gbl.Plugins.Lst[NumPlg]); + Plg = &Plugins.Lst[NumPlg]; snprintf (URL,sizeof (URL),"%s%s",Plg->URL,Gbl.Session.Id); @@ -132,7 +144,7 @@ void Plg_ListPlugins (void) HTM_A_Begin ("href=\"%s\" title=\"%s\" target=\"_blank\"" " class=\"DAT_%s\"", URL,Plg->Name,The_GetSuffix ()); - if (asprintf (&Icon,"%s24x24.gif",Gbl.Plugins.Lst[NumPlg].Logo) < 0) + if (asprintf (&Icon,"%s24x24.gif",Plugins.Lst[NumPlg].Logo) < 0) Err_NotEnoughMemoryExit (); HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,Icon,Plg->Name, "class=\"ICO40x40\""); @@ -155,7 +167,7 @@ void Plg_ListPlugins (void) Box_BoxTableEnd (); /***** Free list of plugins *****/ - Plg_FreeListPlugins (); + Plg_FreeListPlugins (&Plugins); } /*****************************************************************************/ @@ -187,9 +199,10 @@ void Plg_EditPlugins (void) static void Plg_EditPluginsInternal (void) { extern const char *Txt_Plugins; + struct Plg_Plugins Plugins; /***** Get list of plugins *****/ - Plg_GetListPlugins (); + Plg_GetListPlugins (&Plugins); /***** Begin box *****/ Box_BoxBegin (NULL,Txt_Plugins, @@ -200,21 +213,21 @@ static void Plg_EditPluginsInternal (void) Plg_PutFormToCreatePlugin (); /***** List current plugins *****/ - if (Gbl.Plugins.Num) - Plg_ListPluginsForEdition (); + if (Plugins.Num) + Plg_ListPluginsForEdition (&Plugins); /***** End box *****/ Box_BoxEnd (); /***** Free list of plugins *****/ - Plg_FreeListPlugins (); + Plg_FreeListPlugins (&Plugins); } /*****************************************************************************/ /************************* Get list of current plugins ***********************/ /*****************************************************************************/ -static void Plg_GetListPlugins (void) +static void Plg_GetListPlugins (struct Plg_Plugins *Plugins) { MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -222,19 +235,19 @@ static void Plg_GetListPlugins (void) struct Plg_Plugin *Plg; /***** Get plugins from database *****/ - if ((Gbl.Plugins.Num = Plg_DB_GetListPlugins (&mysql_res))) // Plugins found... + if ((Plugins->Num = Plg_DB_GetListPlugins (&mysql_res))) // Plugins found... { /***** Create list with plugins *****/ - if ((Gbl.Plugins.Lst = calloc ((size_t) Gbl.Plugins.Num, - sizeof (*Gbl.Plugins.Lst))) == NULL) + if ((Plugins->Lst = calloc ((size_t) Plugins->Num, + sizeof (*Plugins->Lst))) == NULL) Err_NotEnoughMemoryExit (); /***** Get the plugins *****/ for (NumPlg = 0; - NumPlg < Gbl.Plugins.Num; + NumPlg < Plugins->Num; NumPlg++) { - Plg = &(Gbl.Plugins.Lst[NumPlg]); + Plg = &Plugins->Lst[NumPlg]; /* Get next plugin */ row = mysql_fetch_row (mysql_res); @@ -253,6 +266,8 @@ static void Plg_GetListPlugins (void) Str_Copy (Plg->IP ,row[6],sizeof (Plg->IP ) - 1); } } + else + Plugins->Lst = NULL; /***** Free structure that stores the query result *****/ DB_FreeMySQLResult (&mysql_res); @@ -310,22 +325,23 @@ bool Plg_GetDataOfPluginByCod (struct Plg_Plugin *Plg) /*************************** Free list of plugins ****************************/ /*****************************************************************************/ -void Plg_FreeListPlugins (void) +static void Plg_FreeListPlugins (struct Plg_Plugins *Plugins) { - if (Gbl.Plugins.Lst) - { - /***** Free memory used by the list of plugins *****/ - free (Gbl.Plugins.Lst); - Gbl.Plugins.Lst = NULL; - Gbl.Plugins.Num = 0; - } + if (Plugins->Num) + if (Plugins->Lst) + { + /***** Free memory used by the list of plugins *****/ + free (Plugins->Lst); + Plugins->Lst = NULL; + Plugins->Num = 0; + } } /*****************************************************************************/ /****************************** List all plugins *****************************/ /*****************************************************************************/ -static void Plg_ListPluginsForEdition (void) +static void Plg_ListPluginsForEdition (struct Plg_Plugins *Plugins) { unsigned NumPlg; struct Plg_Plugin *Plg; @@ -339,10 +355,10 @@ static void Plg_ListPluginsForEdition (void) /***** Write all plugins *****/ for (NumPlg = 0; - NumPlg < Gbl.Plugins.Num; + NumPlg < Plugins->Num; NumPlg++) { - Plg = &Gbl.Plugins.Lst[NumPlg]; + Plg = &Plugins->Lst[NumPlg]; /* Row begin */ HTM_TR_Begin (NULL); @@ -361,9 +377,9 @@ static void Plg_ListPluginsForEdition (void) /* Plugin logo */ // TODO: Change plugin icons to 32x32 HTM_TD_Begin ("class=\"CM\" style=\"width:45px;\""); - if (asprintf (&Icon,"%s24x24.gif",Gbl.Plugins.Lst[NumPlg].Logo) < 0) + if (asprintf (&Icon,"%s24x24.gif",Plugins->Lst[NumPlg].Logo) < 0) Err_NotEnoughMemoryExit (); - HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,Icon,Gbl.Plugins.Lst[NumPlg].Name, + HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,Icon,Plugins->Lst[NumPlg].Name, "class=\"ICO40x40\""); free (Icon); HTM_TD_End (); @@ -426,7 +442,7 @@ static void Plg_ListPluginsForEdition (void) HTM_TD_Begin ("class=\"CM\""); Frm_BeginForm (ActChgPlgIP); Plg_PutParamPlgCod (&Plg->PlgCod); - HTM_INPUT_TEXT ("IP",Par_MAX_CHARS_IP,Plg->IP,HTM_SUBMIT_ON_CHANGE, + HTM_INPUT_TEXT ("IP",Cns_MAX_CHARS_IP,Plg->IP,HTM_SUBMIT_ON_CHANGE, "size=\"10\" class=\"INPUT_%s\"", The_GetSuffix ()); Frm_EndForm (); @@ -626,7 +642,8 @@ void Plg_ChangePlgLogo (void) Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update logo *****/ - Str_Copy (Plg_EditingPlg->Logo,NewLogo,sizeof (Plg_EditingPlg->Logo) - 1); + Str_Copy (Plg_EditingPlg->Logo,NewLogo, + sizeof (Plg_EditingPlg->Logo) - 1); } /*****************************************************************************/ @@ -667,7 +684,8 @@ void Plg_ChangePlgAppKey (void) Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update app key *****/ - Str_Copy (Plg_EditingPlg->AppKey,NewAppKey,sizeof (Plg_EditingPlg->AppKey) - 1); + Str_Copy (Plg_EditingPlg->AppKey,NewAppKey, + sizeof (Plg_EditingPlg->AppKey) - 1); } /*****************************************************************************/ @@ -708,7 +726,8 @@ void Plg_ChangePlgURL (void) Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update URL *****/ - Str_Copy (Plg_EditingPlg->URL,NewURL,sizeof (Plg_EditingPlg->URL) - 1); + Str_Copy (Plg_EditingPlg->URL,NewURL, + sizeof (Plg_EditingPlg->URL) - 1); } /*****************************************************************************/ @@ -718,7 +737,7 @@ void Plg_ChangePlgURL (void) void Plg_ChangePlgIP (void) { extern const char *Txt_The_new_IP_address_is_X; - char NewIP[Par_MAX_BYTES_IP + 1]; + char NewIP[Cns_MAX_BYTES_IP + 1]; /***** Plugin constructor *****/ Plg_EditingPluginConstructor (); @@ -729,7 +748,7 @@ void Plg_ChangePlgIP (void) Err_WrongPluginExit (); /* Get the new IP for the plugin */ - Par_GetParToText ("IP",NewIP,Par_MAX_BYTES_IP); + Par_GetParToText ("IP",NewIP,Cns_MAX_BYTES_IP); /***** Get plugin data from the database *****/ Plg_GetDataOfPluginByCod (Plg_EditingPlg); @@ -851,7 +870,7 @@ static void Plg_PutFormToCreatePlugin (void) /***** Plugin IP address *****/ HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_TEXT ("IP",Par_MAX_CHARS_IP,Plg_EditingPlg->IP, + HTM_INPUT_TEXT ("IP",Cns_MAX_CHARS_IP,Plg_EditingPlg->IP, HTM_DONT_SUBMIT_ON_CHANGE, "size=\"10\" class=\"INPUT_%s\"" " required=\"required\"", @@ -910,23 +929,13 @@ void Plg_ReceiveFormNewPlg (void) Plg_EditingPluginConstructor (); /***** Get parameters from form *****/ - /* Get plugin name */ - Par_GetParToText ("Name",Plg_EditingPlg->Name,Plg_MAX_BYTES_PLUGIN_NAME); - - /* Get plugin description */ + /* Get plugin name, description, logo, application key, URL, IP address */ + Par_GetParToText ("Name" ,Plg_EditingPlg->Name ,Plg_MAX_BYTES_PLUGIN_NAME); Par_GetParToText ("Description",Plg_EditingPlg->Description,Plg_MAX_BYTES_PLUGIN_DESCRIPTION); - - /* Get plugin logo */ - Par_GetParToText ("Logo",Plg_EditingPlg->Logo,Plg_MAX_BYTES_PLUGIN_LOGO); - - /* Get plugin application key */ - Par_GetParToText ("AppKey",Plg_EditingPlg->AppKey,Plg_MAX_BYTES_PLUGIN_APP_KEY); - - /* Get plugin URL */ - Par_GetParToText ("URL",Plg_EditingPlg->URL,Cns_MAX_BYTES_WWW); - - /* Get plugin IP address */ - Par_GetParToText ("IP",Plg_EditingPlg->IP,Par_MAX_BYTES_IP); + Par_GetParToText ("Logo" ,Plg_EditingPlg->Logo ,Plg_MAX_BYTES_PLUGIN_LOGO); + Par_GetParToText ("AppKey" ,Plg_EditingPlg->AppKey ,Plg_MAX_BYTES_PLUGIN_APP_KEY); + Par_GetParToText ("URL" ,Plg_EditingPlg->URL ,Cns_MAX_BYTES_WWW); + Par_GetParToText ("IP" ,Plg_EditingPlg->IP ,Cns_MAX_BYTES_IP); if (Plg_EditingPlg->Name[0]) // If there's a plugin name { @@ -963,12 +972,8 @@ void Plg_ReceiveFormNewPlg (void) static void Plg_EditingPluginConstructor (void) { - /***** Pointer must be NULL *****/ - if (Plg_EditingPlg != NULL) - Err_WrongPluginExit (); - /***** Allocate memory for plugin *****/ - if ((Plg_EditingPlg = malloc (sizeof (*Plg_EditingPlg))) == NULL) + if ((Plg_EditingPlg = malloc (sizeof (struct Plg_Plugin))) == NULL) Err_NotEnoughMemoryExit (); /***** Reset plugin *****/ diff --git a/swad_plugin.h b/swad_plugin.h index 5b872617..041f313f 100644 --- a/swad_plugin.h +++ b/swad_plugin.h @@ -57,7 +57,7 @@ struct Plg_Plugin char Logo[Plg_MAX_BYTES_PLUGIN_LOGO + 1]; char AppKey[Plg_MAX_BYTES_PLUGIN_APP_KEY + 1]; char URL[Cns_MAX_BYTES_WWW + 1]; - char IP[Par_MAX_BYTES_IP + 1]; + char IP[Cns_MAX_BYTES_IP + 1]; }; /*****************************************************************************/ @@ -67,7 +67,6 @@ struct Plg_Plugin void Plg_ListPlugins (void); void Plg_EditPlugins (void); bool Plg_GetDataOfPluginByCod (struct Plg_Plugin *Plg); -void Plg_FreeListPlugins (void); long Plg_GetParamPlgCod (void); void Plg_RemovePlugin (void); void Plg_RenamePlugin (void); diff --git a/swad_plugin_database.c b/swad_plugin_database.c index 5ea3fe35..0fe55398 100644 --- a/swad_plugin_database.c +++ b/swad_plugin_database.c @@ -127,7 +127,7 @@ void Plg_DB_ChangeURL (long PlgCod, /*****************************************************************************/ void Plg_DB_ChangeIP (long PlgCod, - const char NewIP[Par_MAX_BYTES_IP + 1]) + const char NewIP[Cns_MAX_BYTES_IP + 1]) { DB_QueryUPDATE ("can not update the IP address of a plugin", "UPDATE plg_plugins" diff --git a/swad_plugin_database.h b/swad_plugin_database.h index ff8fb310..9be395b1 100644 --- a/swad_plugin_database.h +++ b/swad_plugin_database.h @@ -47,7 +47,7 @@ void Plg_DB_ChangeAppKey (long PlgCod, void Plg_DB_ChangeURL (long PlgCod, const char NewURL[Cns_MAX_BYTES_WWW + 1]); void Plg_DB_ChangeIP (long PlgCod, - const char NewIP[Par_MAX_BYTES_IP + 1]); + const char NewIP[Cns_MAX_BYTES_IP + 1]); unsigned Plg_DB_GetListPlugins (MYSQL_RES **mysql_res); unsigned Plg_DB_GetDataOfPluginByCod (MYSQL_RES **mysql_res,long PlgCod);