OSDN Git Service

add config for image rewrite funcs
authorcoltware <coltware@94a86f0a-4377-0410-8349-a3afc59ff858>
Mon, 7 Jun 2010 09:49:06 +0000 (09:49 +0000)
committerAtsushi Konno <konn@users.sourceforge.jp>
Wed, 29 Sep 2010 18:38:39 +0000 (03:38 +0900)
include/mod_chxj.h
src/mod_chxj.c

index a043e60..aeb4641 100755 (executable)
@@ -372,6 +372,10 @@ struct mod_chxj_config {
   
   apr_array_header_t    *device_keys;           /* TSV header array */
   apr_hash_t            *device_hash;           /* TSV device data hash table */
+
+  int                   image_rewrite;
+  char                  *image_rewrite_url;
+  int                   image_rewrite_mode;
 };
 
 #define IS_COOKIE_STORE_DBM(X)      ((X) == COOKIE_STORE_TYPE_DBM)
@@ -476,6 +480,14 @@ module AP_MODULE_DECLARE_DATA chxj_module;
 #define CHXJ_PROVIDER_AU       (2)
 #define CHXJ_PROVIDER_SOFTBANK (3)
 
+#define CHXJ_IMG_REWRITE_ON     (2)
+#define CHXJ_IMG_REWRITE_OFF    (1)
+#define CHXJ_IMG_REWRITE_NONE   (0)
+
+#define CHXJ_IMG_REWRITE_MODE_ALL  (3)
+#define CHXJ_IMG_REWRITE_MODE_USER (2)
+#define CHXJ_IMG_REWRITE_MODE_TAG  (1)
+#define CHXJ_IMG_REWRITE_MODE_NONE (0)
 
 #define DBG(X,args...)  chxj_log_rerror(APLOG_MARK,APLOG_DEBUG,0,(request_rec*)(X),##args)
 #define SDBG(X,Y)       chxj_log_error(APLOG_MARK,APLOG_DEBUG,0,(X),(Y))
index 1d07aaf..77ebe09 100755 (executable)
@@ -1789,6 +1789,10 @@ chxj_create_per_dir_config(apr_pool_t *p, char *arg)
   /* Default is copyleft */
   conf->image_copyright = NULL; 
 
+  conf->image_rewrite = CHXJ_IMG_REWRITE_NONE;
+  conf->image_rewrite_mode = CHXJ_IMG_REWRITE_MODE_NONE;
+  conf->image_rewrite_url = NULL;
+
   return conf;
 }
 
@@ -2092,6 +2096,27 @@ chxj_merge_per_dir_config(apr_pool_t *p, void *basev, void *addv)
     mrg->device_hash = base->device_hash;
   }
   
+  if (add->image_rewrite == CHXJ_IMG_REWRITE_NONE){
+    mrg->image_rewrite = base->image_rewrite;
+  }
+  else{
+    mrg->image_rewrite = add->image_rewrite;
+  }
+
+  if (add->image_rewrite_url) {
+    mrg->image_rewrite_url = add->image_rewrite_url;
+  }
+  else{
+    mrg->image_rewrite_url = base->image_rewrite_url;
+  }
+
+  if (add->image_rewrite_mode == CHXJ_IMG_REWRITE_MODE_NONE){
+    mrg->image_rewrite_mode = base->image_rewrite_mode;
+  }
+  else{
+    mrg->image_rewrite_mode = add->image_rewrite_mode;
+  }
+
   return mrg;
 }
 
@@ -3059,6 +3084,62 @@ cmd_add_device_data_tsv(cmd_parms *parms, void *mconfig, const char *arg)
   return NULL;
 }
 
+static const char *
+cmd_image_rewrite(cmd_parms *parms, void *mconfig, const char *arg)
+{
+  mod_chxj_config *conf;
+  if (strlen(arg) > 256){
+    return "mod_chxj: set rewrite too long.";
+  }
+  conf = (mod_chxj_config *)mconfig;
+  if (strcasecmp("ON", arg) == 0) {
+    conf->image_rewrite = CHXJ_IMG_REWRITE_ON;
+  }
+  else if(strcasecmp("OFF",arg) == 0) {
+    conf->image_rewrite = CHXJ_IMG_REWRITE_OFF;
+  }
+  else {
+    conf->image_rewrite = CHXJ_IMG_REWRITE_NONE;
+  }
+  return NULL;
+}
+
+static const char *
+cmd_image_rewrite_url(cmd_parms *parms, void *mconfig, const char *arg)
+{
+  mod_chxj_config *conf;
+  if (strlen(arg) > 256){
+    return "mod_chxj: set rewrite url too long.";
+  }
+  conf = (mod_chxj_config *)mconfig;
+  conf->image_rewrite_url = apr_pstrdup(parms->pool, arg);;
+  return NULL;
+}
+
+static const char *
+cmd_image_rewrite_mode(cmd_parms *parms, void *mconfig, const char *arg)
+{
+  mod_chxj_config *conf;
+  if (strlen(arg) > 256){
+    return "mod_chxj: set rewrite mode is too long.";
+  }
+
+  conf = (mod_chxj_config *)mconfig;
+  if (strcasecmp("all",arg) == 0) {
+    conf->image_rewrite_mode = CHXJ_IMG_REWRITE_MODE_ALL;
+  }
+  else if (strcasecmp("user",arg) == 0) {
+    conf->image_rewrite_mode = CHXJ_IMG_REWRITE_MODE_USER;
+  }
+  else if (strcasecmp("tag",arg) == 0) {
+    conf->image_rewrite_mode = CHXJ_IMG_REWRITE_MODE_USER;
+  }
+  else{
+    conf->image_rewrite_mode = CHXJ_IMG_REWRITE_MODE_NONE;
+  }
+  return NULL;
+}
+
 static const command_rec cmds[] = {
   AP_INIT_TAKE1(
     "ChxjLoadDeviceData",
@@ -3238,6 +3319,27 @@ static const command_rec cmds[] = {
     NULL,
     OR_ALL,
     "Additional devices TSV data"),
+  AP_INIT_TAKE1(
+    "ChxjImageRewrite",
+    cmd_image_rewrite,
+    NULL,
+    OR_ALL,
+    "Rewrite Image"
+   ),
+  AP_INIT_TAKE1(
+    "ChxjImageRewriteUrl",
+    cmd_image_rewrite_url,
+    NULL,
+    OR_ALL,
+    "Set rewrite Image url"
+   ),
+  AP_INIT_TAKE1(
+    "ChxjImageRewriteMode",
+    cmd_image_rewrite_mode,
+    NULL,
+    OR_ALL,
+    "Set rewrite Image rewrite url mode"
+   ),
   {NULL,{NULL},NULL,0,0,NULL},
 };